@dashadmin/dash-auto-admin 1.3.17 → 1.3.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/DashAutoAdminComponentRegistry.js +1 -0
- package/dist/DashAutoAdminForm.js +1 -0
- package/dist/DashAutoAdminResizableDrawer.js +1 -0
- package/dist/DashAutoAdminSaveButton.js +1 -0
- package/dist/DashAutoAdminSaveButton.tsx.bkup +84 -0
- package/dist/DashAutoCreate.js +1 -0
- package/dist/DashAutoDrawer.js +1 -0
- package/dist/DashAutoEdit.js +1 -0
- package/dist/DashAutoFiltersGenerator.js +1 -0
- package/dist/DashAutoFormGroups.js +1 -0
- package/dist/DashAutoFormLayout.js +1 -0
- package/dist/DashAutoFormLayout.tsx.review +113 -0
- package/dist/DashAutoFormMuiTabs.js +1 -0
- package/dist/DashAutoFormTabs.js +1 -0
- package/dist/DashAutoFormTabs.review +170 -0
- package/dist/DashAutoFormTabs.tsx.formcontext.wip +234 -0
- package/dist/DashAutoGroup.js +1 -0
- package/dist/DashAutoLayout.js +1 -0
- package/dist/DashAutoList.js +1 -0
- package/dist/DashAutoPostFilterForm.js +1 -0
- package/dist/DashAutoReferenceTab.js +1 -0
- package/dist/DashAutoResource.js +1 -0
- package/dist/DashAutoResourceLayout.js +1 -0
- package/dist/DashAutoShow.js +1 -0
- package/dist/DashAutoTabbedForm.js +1 -0
- package/dist/DashAutoTabbedForm.review.js +1 -0
- package/dist/DashAutoTabs.js +1 -0
- package/dist/DashFilterWrapper.js +1 -0
- package/dist/DashRedirect.js +1 -0
- package/dist/TabbedLayout.js +1 -0
- package/dist/common/DashAutoTitle.js +1 -0
- package/dist/common/components/FabButton.js +1 -0
- package/dist/common/components/TranslatedLabel.js +1 -0
- package/dist/common/settings/Settings.js +1 -0
- package/dist/common/settings/SettingsBarIcons.js +1 -0
- package/dist/context/DashAutoAdminFormContext.js +1 -0
- package/dist/hooks/useAutoAdminLoadingStateMediator.js +1 -0
- package/dist/hooks/useAutoAdminTranslate.js +1 -0
- package/dist/hooks/useHash.js +1 -0
- package/dist/hooks/useLogger.js +1 -0
- package/dist/hooks/useRoutePathPattern.js +1 -0
- package/dist/hooks/useVirtualHash.js +1 -0
- package/dist/interfaces/ICustomResourceSubComponent.js +0 -0
- package/dist/interfaces/IDashApplicationLayoutMainAction.js +0 -0
- package/dist/interfaces/IDashApplicationLayoutMenuItem.js +0 -0
- package/dist/interfaces/IDashAutoAdminAttribute.js +0 -0
- package/dist/interfaces/IDashAutoAdminCustomFieldComponent.js +0 -0
- package/dist/interfaces/IDashAutoAdminFormOptions.js +0 -0
- package/dist/interfaces/IDashAutoAdminListActions.js +0 -0
- package/dist/interfaces/IDashAutoAdminReference.js +0 -0
- package/dist/interfaces/IDashAutoAdminResourceConfig.js +0 -0
- package/dist/interfaces/IDashAutoForm.js +0 -0
- package/dist/interfaces/IDashAutoGridButton.js +0 -0
- package/dist/interfaces/IDashAutoShow.js +0 -0
- package/dist/interfaces/IGroupExtraData.js +0 -0
- package/dist/interfaces/IRecord.js +0 -0
- package/dist/interfaces/IReferenceFilter.js +0 -0
- package/dist/interfaces/IResourceComponent.js +0 -0
- package/dist/interfaces/IToolbarButton.js +0 -0
- package/dist/list/DashAutoListActions.js +1 -0
- package/dist/list/DashAutoListDatagridWrapper.js +1 -0
- package/dist/list/DashAutoListDefaultActionsWrapper.js +1 -0
- package/dist/list/DashAutoListFilterFormWithButton.js +1 -0
- package/dist/list/DashAutoListTopToolbar.js +1 -0
- package/dist/mui/AttributeToField.js +1 -0
- package/dist/mui/AttributeToField.tsx.review +644 -0
- package/dist/mui/AttributeToInput.js +1 -0
- package/dist/mui/AttributeToInput.tsx.review +684 -0
- package/dist/mui/AutoAdminResizableDrawer.js +1 -0
- package/dist/mui/AutoDataGrid.js +1 -0
- package/dist/mui/AutoReferenceFormTab.js +1 -0
- package/dist/mui/AutoReferenceTab.js +1 -0
- package/dist/mui/AutoTabs.js +1 -0
- package/dist/mui/components/ExtendedPagination.js +1 -0
- package/dist/mui/components/ListStringField.js +1 -0
- package/dist/providers/DashAuthProvider.js +1 -0
- package/dist/providers/DashDataProvider.js +1 -0
- package/dist/providers/index.js +1 -0
- package/dist/react-admin.d.ts +5 -0
- package/dist/toolbar/buttons/BottomToolbarButtons.js +1 -0
- package/dist/toolbar/buttons/DashResourceButton.js +1 -0
- package/dist/toolbar/buttons/ListButtons.js +1 -0
- package/dist/toolbar/buttons/ToolbarButtons.js +1 -0
- package/dist/types/ActionCallback.d.ts +2 -0
- package/dist/utils/SimpleLogger.js +1 -0
- package/dist/utils/enumToChoices.js +1 -0
- package/dist/utils/evalActionPermission.js +1 -0
- package/dist/utils/groupByTabs.js +1 -0
- package/dist/utils/hashedGroupByTabs.js +1 -0
- package/dist/utils/invertMap.js +1 -0
- package/dist/utils/isClassComponent.js +1 -0
- package/dist/utils/isComponent.js +1 -0
- package/dist/utils/isEnum.js +1 -0
- package/dist/utils/isFC.js +1 -0
- package/dist/utils/replaceParams.js +1 -0
- package/dist/utils/validate.js +1 -0
- package/dist/wrappers/UserAction.js +1 -0
- package/dist/wrappers/index.js +1 -0
- package/package.json +14 -3
|
@@ -0,0 +1,234 @@
|
|
|
1
|
+
import { FormTab } from 'react-admin';
|
|
2
|
+
import IDashAutoAdminAttribute from './interfaces/IDashAutoAdminAttribute';
|
|
3
|
+
import IDashAutoAdminFormOptions from './interfaces/IDashAutoAdminFormOptions';
|
|
4
|
+
import groupByTabs from './utils/groupByTabs';
|
|
5
|
+
import AttributeToInput from './mui/AttributeToInput';
|
|
6
|
+
import IDashAutoAdminResourceConfig from './interfaces/IDashAutoAdminResourceConfig';
|
|
7
|
+
import { useDispatch, useSelector } from 'react-redux';
|
|
8
|
+
import { IDASHAppState } from 'dash-admin-state';
|
|
9
|
+
import { CLEAR_FORM_DATA, SET_FORM_DATA } from 'dash-admin-state/src/redux/actions/ActionTypes';
|
|
10
|
+
import { useEffect } from 'react';
|
|
11
|
+
import { useFormContext } from 'react-hook-form';
|
|
12
|
+
import { FormDataConsumer } from 'react-admin';
|
|
13
|
+
|
|
14
|
+
interface IAutoFormTabs {
|
|
15
|
+
schema: IDashAutoAdminAttribute[];
|
|
16
|
+
resource: IDashAutoAdminResourceConfig;
|
|
17
|
+
options?: IDashAutoAdminFormOptions;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* The `DashAutoFormTabs` component is responsible for rendering the form tabs in the Dash Auto Admin interface.
|
|
22
|
+
* It takes in a `schema` of `IDashAutoAdminAttribute` objects, a `resource` of `IDashAutoAdminResourceConfig`, and optional `options` of `IDashAutoAdminFormOptions`.
|
|
23
|
+
* The component handles different form modes ('create', 'edit', 'view') and renders the appropriate form tabs based on the provided schema and options.
|
|
24
|
+
* It also features a form data state management using Redux and handles changes to form inputs for Tabbed Forms.
|
|
25
|
+
*/
|
|
26
|
+
|
|
27
|
+
const DashAutoFormTabs = ({
|
|
28
|
+
schema,
|
|
29
|
+
resource,
|
|
30
|
+
options,
|
|
31
|
+
..._props
|
|
32
|
+
}: IAutoFormTabs) => {
|
|
33
|
+
|
|
34
|
+
const isDrawer = options.isDrawer === true ? true : false;
|
|
35
|
+
const dispatch = useDispatch();
|
|
36
|
+
//const { setValue, getValues } = useFormContext();
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
const formData = useSelector(
|
|
40
|
+
(
|
|
41
|
+
state: IDASHAppState<any, any, IDashAutoAdminResourceConfig>,
|
|
42
|
+
) => {
|
|
43
|
+
|
|
44
|
+
return state.formData || {};
|
|
45
|
+
},
|
|
46
|
+
);
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
const handleChange = (event) => {
|
|
50
|
+
|
|
51
|
+
const { name, value, type } = event.target;
|
|
52
|
+
|
|
53
|
+
// Handle different input types
|
|
54
|
+
let payloadValue;
|
|
55
|
+
switch (type) {
|
|
56
|
+
case 'checkbox':
|
|
57
|
+
// For checkboxes, the value is a boolean
|
|
58
|
+
payloadValue = event.target.checked; // Use checked for checkbox inputs
|
|
59
|
+
break;
|
|
60
|
+
case 'select':
|
|
61
|
+
// For select inputs, you might need to handle differently if you have multiple selections
|
|
62
|
+
payloadValue = value; // For single select
|
|
63
|
+
break;
|
|
64
|
+
case 'text':
|
|
65
|
+
case 'number':
|
|
66
|
+
case 'email':
|
|
67
|
+
// For text, number, and email inputs
|
|
68
|
+
payloadValue = value;
|
|
69
|
+
break;
|
|
70
|
+
// Add cases for other input types as needed
|
|
71
|
+
default:
|
|
72
|
+
payloadValue = value; // Fallback for other input types
|
|
73
|
+
break;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
dispatch({ type: SET_FORM_DATA, payload: { [name]: payloadValue } });
|
|
77
|
+
};
|
|
78
|
+
/*
|
|
79
|
+
useEffect(() => {
|
|
80
|
+
dispatch({ type: CLEAR_FORM_DATA });
|
|
81
|
+
},[])
|
|
82
|
+
*/
|
|
83
|
+
/*useEffect(() => {
|
|
84
|
+
// Populate form fields with existing data from Redux
|
|
85
|
+
Object.keys(formData).forEach(key => {
|
|
86
|
+
setValue(key, formData[key]);
|
|
87
|
+
});
|
|
88
|
+
}, [formData, setValue]);*/
|
|
89
|
+
|
|
90
|
+
/*useEffect(() => {
|
|
91
|
+
|
|
92
|
+
dispatch({ type: CLEAR_FORM_DATA });
|
|
93
|
+
},[])*/
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
/*
|
|
98
|
+
useEffect(() => {
|
|
99
|
+
// Populate form fields with existing data from Redux
|
|
100
|
+
Object.keys(formData).forEach(key => {
|
|
101
|
+
setTimeout(() => {
|
|
102
|
+
const input = document.querySelector(`input[name="${key}"]`);
|
|
103
|
+
|
|
104
|
+
if (input) {
|
|
105
|
+
console.log(key, formData[key]);
|
|
106
|
+
input.value = formData[key];
|
|
107
|
+
}
|
|
108
|
+
}, 50);
|
|
109
|
+
});
|
|
110
|
+
}, [formData]);
|
|
111
|
+
*/
|
|
112
|
+
|
|
113
|
+
/*useEffect(() => {
|
|
114
|
+
console.log(formData)
|
|
115
|
+
}, [formData]);*/
|
|
116
|
+
|
|
117
|
+
options = {...options, handleChange};
|
|
118
|
+
|
|
119
|
+
switch (options.mode) {
|
|
120
|
+
case 'create':
|
|
121
|
+
return groupByTabs(schema).map((groupOfAttributes, idx) => {
|
|
122
|
+
|
|
123
|
+
let grouppedAttributes = groupOfAttributes.filter(
|
|
124
|
+
(attribute) => attribute?.inCreate !== false,
|
|
125
|
+
);
|
|
126
|
+
|
|
127
|
+
if (isDrawer) {
|
|
128
|
+
grouppedAttributes = grouppedAttributes.filter(
|
|
129
|
+
(attribute) => attribute?.inDrawer !== false,
|
|
130
|
+
);
|
|
131
|
+
}
|
|
132
|
+
return (
|
|
133
|
+
grouppedAttributes.length && (
|
|
134
|
+
<FormTab
|
|
135
|
+
key={`tab-${groupOfAttributes[0].tab || idx}`}
|
|
136
|
+
value={idx}
|
|
137
|
+
/*icon={IconResolver(groupOfAttributes[0].tab)}*/ label={
|
|
138
|
+
groupOfAttributes[0].tab || options?.label || ''
|
|
139
|
+
}
|
|
140
|
+
>
|
|
141
|
+
|
|
142
|
+
<FormDataConsumer>
|
|
143
|
+
{({ formData }) =>
|
|
144
|
+
grouppedAttributes.map((attribute, i) => (
|
|
145
|
+
<div key={`input-${i}`}>
|
|
146
|
+
{AttributeToInput('create', resource, attribute, i, options)}
|
|
147
|
+
</div>
|
|
148
|
+
))
|
|
149
|
+
}
|
|
150
|
+
</FormDataConsumer>
|
|
151
|
+
|
|
152
|
+
|
|
153
|
+
</FormTab>
|
|
154
|
+
)
|
|
155
|
+
);
|
|
156
|
+
});
|
|
157
|
+
|
|
158
|
+
case 'edit':
|
|
159
|
+
return groupByTabs(schema).map((groupOfAttributes, idx) => {
|
|
160
|
+
let grouppedAttributes = groupOfAttributes.filter(
|
|
161
|
+
(attribute) => attribute?.inEdit !== false,
|
|
162
|
+
);
|
|
163
|
+
if (isDrawer) {
|
|
164
|
+
grouppedAttributes = grouppedAttributes.filter(
|
|
165
|
+
(attribute) => attribute?.inDrawer !== false,
|
|
166
|
+
);
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
return (
|
|
170
|
+
grouppedAttributes.length && (
|
|
171
|
+
<FormTab
|
|
172
|
+
key={`tab-${groupOfAttributes[0].tab || idx}`}
|
|
173
|
+
value={idx}
|
|
174
|
+
/*icon={IconResolver(groupOfAttributes[0].tab)}*/ label={
|
|
175
|
+
groupOfAttributes[0].tab || options?.label || ''
|
|
176
|
+
}
|
|
177
|
+
>
|
|
178
|
+
|
|
179
|
+
<FormDataConsumer>
|
|
180
|
+
{({ formData }) =>
|
|
181
|
+
grouppedAttributes.map((attribute, i) => (
|
|
182
|
+
<div key={`input-${i}`}>
|
|
183
|
+
{AttributeToInput('edit', resource, attribute, i, options)}
|
|
184
|
+
</div>
|
|
185
|
+
))
|
|
186
|
+
}
|
|
187
|
+
</FormDataConsumer>
|
|
188
|
+
|
|
189
|
+
</FormTab>
|
|
190
|
+
)
|
|
191
|
+
);
|
|
192
|
+
});
|
|
193
|
+
|
|
194
|
+
case 'view':
|
|
195
|
+
return groupByTabs(schema).map((groupOfAttributes, idx) => {
|
|
196
|
+
let grouppedAttributes = groupOfAttributes.filter(
|
|
197
|
+
(attribute) => attribute?.inShow !== false,
|
|
198
|
+
);
|
|
199
|
+
if (isDrawer) {
|
|
200
|
+
grouppedAttributes = grouppedAttributes.filter(
|
|
201
|
+
(attribute) => attribute?.inDrawer !== false,
|
|
202
|
+
);
|
|
203
|
+
}
|
|
204
|
+
//console.log("groupOfAttributes, view",groupOfAttributes);
|
|
205
|
+
return (
|
|
206
|
+
grouppedAttributes.length && (
|
|
207
|
+
<FormTab
|
|
208
|
+
key={`tab-${groupOfAttributes[0].tab || idx}`}
|
|
209
|
+
value={idx}
|
|
210
|
+
/*key={idx} icon={IconResolver(groupOfAttributes[0].tab)}*/ label={
|
|
211
|
+
groupOfAttributes[0].tab || options?.label || ''
|
|
212
|
+
}
|
|
213
|
+
>
|
|
214
|
+
|
|
215
|
+
<FormDataConsumer>
|
|
216
|
+
{({ formData }) =>
|
|
217
|
+
grouppedAttributes.map((attribute, i) => (
|
|
218
|
+
<div key={`input-${i}`}>
|
|
219
|
+
{AttributeToInput('view', resource, attribute, i, options)}
|
|
220
|
+
</div>
|
|
221
|
+
))
|
|
222
|
+
}
|
|
223
|
+
</FormDataConsumer>
|
|
224
|
+
|
|
225
|
+
|
|
226
|
+
|
|
227
|
+
</FormTab>
|
|
228
|
+
)
|
|
229
|
+
);
|
|
230
|
+
});
|
|
231
|
+
}
|
|
232
|
+
};
|
|
233
|
+
|
|
234
|
+
export default DashAutoFormTabs;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{Fragment as h,jsx as e,jsxs as d}from"react/jsx-runtime";import{SimpleShowLayout as l}from"react-admin";import{AttributeToField as s}from"./mui/AttributeToField";import f from"./utils/groupByTabs";import{AutoAdminSettings as p}from".";const u=(i,m)=>e(l,{children:f(i.schema).map((t,n)=>{const r=t[0].tab||p.defaultTabName;return t.filter(o=>o?.inShow!==!1).length?d("fieldset",{children:[e("legend",{children:r}),t.filter(o=>o?.inShow!==!1).map((o,a)=>s("view",i,o,a,m))]},"fieldset-group-"+n):e(h,{})})});var F=u;export{F as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as A}from"react/jsx-runtime";import{SimpleShowLayout as s}from"react-admin";import m from"./DashAutoTabs";import{AttributeToField as p}from"./mui/AttributeToField";import h from"./utils/hashedGroupByTabs";const d=(o,f)=>{const i=(e,n,u)=>{const r=h(o.schema);return(r[e]?r[e]:[]).filter(t=>t?.inShow!==!1).map((t,a)=>p(u||"view",o,t,a,n))};return!o.showLayout||typeof o.showLayout!="function"?(console.error("showLayout must be present and be a function in the resource definition when using formGroupMode layout, fallback to tabs"),m(o)):A(s,{children:o.showLayout(i)})};var R=d;export{R as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{Fragment as W,jsx as o}from"react/jsx-runtime";import y from"./DashAutoFiltersGenerator";import{useUnselectAll as E}from"react-admin";import{List as G}from"react-admin";import{useEffect as i,useState as I}from"react";import w from"./mui/components/ExtendedPagination";import f from"./list/DashAutoListDefaultActionsWrapper";import x from"./list/DashAutoListDatagridWrapper";import B from"./list/DashAutoListActions";const O=({resourceConfig:t,autoFilters:n,listProps:d,ListActionsWrapper:l})=>(console.log("\u{1F3AC} DashAutoList DEBUG - Rendering actions (fieldProps standardized):",{resourceModel:t.model,autoFiltersCount:n.length,hasCustomToolbarElements:!!t.customToolbarElements,timestamp:new Date().toISOString()}),o(l,{autoFilters:n,resourceConfig:t,children:o(B,{filters:n,resourceConfig:t,autoFilters:n,listProps:d})})),R=({resourceConfig:t,customToolbarElements:n,beforeSubmit:d,onSubmit:l,onError:P,Pagination:p,children:k,dataGridProps:D,locale:m,...c})=>{const{exporter:A}=t;i(()=>{console.log("\u{1F4CB} DashAutoList DEBUG - Component initialized (fieldProps standardized):",{resourceModel:t.model,hasReferenceFilters:!!(t.referenceFilters&&t.referenceFilters.length>0),referenceFiltersCount:t.referenceFilters?.length||0,referenceFilters:t.referenceFilters?.map(e=>({id:e.id,source:e.source,label:e.label,hasReferenceComponent:!!e.referenceComponent,fieldProps:e.fieldProps}))||[],timestamp:new Date().toISOString()})},[t]),n&&(t.customToolbarElements=n),console.log("\u{1F527} DashAutoList DEBUG - About to generate filters (fieldProps only):",{resourceModel:t.model,referenceFilters:t.referenceFilters,timestamp:new Date().toISOString()});const s=y(t,m);console.log("\u2705 DashAutoList DEBUG - Filters generated (fieldProps standardized):",{resourceModel:t.model,filtersCount:s.length,filters:s.map((e,a)=>({index:a,key:e.key,type:e.type?.name||"unknown",props:e.props})),timestamp:new Date().toISOString()});const h=E(t.listProps?.storeKey||t.model),L={...t.dataGridProps,...D},[,b]=I(!1);i(()=>{const e=a=>{t.model===a.data.resource&&b(a.data.value)};return window.addEventListener("dash-global-loader",e),()=>{window.removeEventListener("dash-global-loader",e)}},[t.model]);const S=t.listActionsWrapper||f;i(()=>{t.resetSelectedIdsOnLoad&&h()},[t.resetSelectedIdsOnLoad,h]);const u=(t.toolbar===!1?!1:s&&s.length>0||t.create||t.exporter||t.customToolbarElements)?o(O,{resourceConfig:t,autoFilters:s,listProps:c,ListActionsWrapper:S}):null,r={sort:{field:"id",order:"ASC"},storeKey:t?.model,resource:t?.model,...c,...t.listProps||{},actions:u,pagination:p?o(p,{...t.paginationProps}):o(w,{...t.paginationProps}),...A&&{exporter:A},...t.bulkActionButtons&&{bulkActionButtons:t.bulkActionButtons}};console.log("\u{1F680} DashAutoList DEBUG - Final list props (fieldProps standardized):",{resourceModel:t.model,finalListProps:{...r,actions:u?"rendered":"null"},timestamp:new Date().toISOString()});const F=t.contextComponent?t.contextComponent:({children:e})=>e;return r?t.listComponent?t.listComponent(t,l,P):o(G,{component:"div",...r,children:o(F,{mode:"list",resourceConfig:t,children:t.dataGridComponent?o(t.dataGridComponent,{resourceConfig:t,dataGridProps:L}):o(x,{resourceConfig:t,dataGridProps:L,locale:m})})}):o(W,{})};var $=R;export{$ as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as n}from"react/jsx-runtime";import{useForm as u,FormProvider as f}from"react-hook-form";import{ListContext as c}from"react-admin";import{useContext as a}from"react";const d=()=>a(c)??null,F=o=>{const t=d(),i=t?.filterValues??{},l=t?.displayedFilters??[],e=t?.setFilters,r=u({defaultValues:i}),m=s=>{Object.keys(s).length>0&&e&&e(s,l)};return n(f,{...r,children:n("form",{onSubmit:r.handleSubmit(m),children:o})})};var b=F;export{b as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{AutoReferenceTab as o}from"./mui/AutoReferenceTab";const r=e=>o(e);var u=r;export{r as DashAutoReferenceTab,u as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as t}from"react/jsx-runtime";import{Resource as c}from"react-admin";import p from"./DashAutoCreate";import l from"./DashAutoEdit";import u from"./DashAutoShow";import R from"./DashAutoList";import m from"./utils/isFC";const n=({resourceConfig:o,show:r,list:s,edit:f,create:i})=>{const e={};if(typeof s!="boolean"&&m(s)){const a=s;e.list=()=>t(a,{resourceConfig:o})}else s!==!1&&(e.list=()=>t(R,{resourceConfig:o}));if(!o.drawer){if(typeof r!="boolean"&&m(r)){const a=r;e.show=()=>t(a,{resourceConfig:o})}else r!==!1&&(e.show=()=>t(u,{resourceConfig:o}));if(typeof f!="boolean"&&m(f)){const a=f;e.edit=()=>t(a,{resourceConfig:o})}else f!==!1&&(e.edit=()=>t(l,{resourceConfig:o}));if(typeof i!="boolean"&&m(i)){const a=i;e.create=()=>t(a,{resourceConfig:o})}else i!==!1&&(e.create=()=>t(p,{resourceConfig:o}))}return t(c,{options:{label:o.label,...o.group&&{group:o.group}},name:o.model,...e,icon:o.icon,group:o.group})};var L=n;export{L as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as s,jsxs as u}from"react/jsx-runtime";import{memo as t}from"react";const i=e=>{const{resourceConfig:o,ResourceMenu:r,children:a}=e;return s("div",{className:"dash-app-module",children:u("div",{className:"dash-module-horizontal-box",style:{maxWidth:"100%"},children:[s(r,{resourceConfig:o}),s("div",{className:"dash-module-box-content",children:a})]})})};var m=t(i,(e,o)=>e===o);export{m as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{Fragment as B,jsx as e,jsxs as w}from"react/jsx-runtime";import{DashAutoReferenceTab as s,DashAutoTabs as i}from".";import h from"./common/DashAutoTitle";import v from"./DashAutoLayout";import x from"./DashAutoGroup";import{TopToolbar as c,Show as T}from"react-admin";import{ToolbarCreateButton as A,ToolbarDeleteButton as f,ToolbarEditButton as y,ToolbarExportButton as S,ToolbarListButton as E}from"./toolbar/buttons/ToolbarButtons";import{useMemo as R}from"react";import b from"react";const k=({resourceConfig:t,id:n,isDrawer:d=!1,locale:u,...a})=>{const l=R(()=>t.contextComponent||(({children:o})=>e(B,{children:o})),[t.contextComponent]),m=(()=>{const r=[];return d||(r.push(e(E,{resourceConfig:t})),r.push(e(y,{resourceConfig:t})),r.push(e(A,{resourceConfig:t})),r.push(e(f,{resourceConfig:t})),r.push(e(S,{resourceConfig:t}))),r})();return t.showComponent&&typeof t.showComponent=="function"?e(T,{component:"div",...n&&{id:n},title:e(h,{resourceConfig:t}),...a,...m.length&&{actions:e(c,{sx:{mb:2},children:m.map((o,p)=>b.cloneElement(o,{key:p}))})},children:w(l,{mode:"view",resourceConfig:t,children:[t.showComponent(t),t.references&&t.references.map(o=>s(o))]})}):t.formGroupMode==="tabs"?e(T,{component:"div",...n&&{id:n},title:e(h,{resourceConfig:t}),...a,...m.length&&{actions:e(c,{sx:{mb:2},children:m.map((o,p)=>b.cloneElement(o,{key:p}))})},children:w(l,{mode:"view",resourceConfig:t,children:[i(t,{mode:"view",locale:u}),t.references&&t.references.map(o=>s(o))]})}):t.formGroupMode==="groups"?e(T,{component:"div",...n&&{id:n},title:e(h,{resourceConfig:t}),...a,...m.length&&{actions:e(c,{sx:{mb:2},children:m.map((o,p)=>b.cloneElement(o,{key:p}))})},children:w(l,{mode:"view",resourceConfig:t,children:[x(t,{mode:"view",locale:u}),t.references&&t.references.map(o=>s(o))]})}):t.formGroupMode==="layout"?e(T,{component:"div",...n&&{id:n},title:e(h,{resourceConfig:t}),...a,...m.length&&{actions:e(c,{sx:{mb:2},children:m.map((o,p)=>b.cloneElement(o,{key:p}))})},children:w(l,{mode:"view",resourceConfig:t,children:[v(t,{mode:"view",locale:u}),t.references&&t.references.map(o=>s(o))]})}):e(T,{component:"div",...n&&{id:n},title:e(h,{resourceConfig:t}),...a,...m.length&&{actions:e(c,{sx:{mb:2},children:m.map((o,p)=>b.cloneElement(o,{key:p}))})},children:w(l,{mode:"view",resourceConfig:t,children:[i(t,{mode:"view",locale:u}),t.references&&t.references.map(o=>s(o))]})})};var O=k;export{O as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{Fragment as N,jsx as a}from"react/jsx-runtime";import{useCallback as k,useMemo as v}from"react";import{useResourceContext as W,useRecordContext as B,TabbedForm as I,SimpleForm as y}from"react-admin";import{DashAutoFormGroups as C,groupByTabs as w,validate as b}from".";import{DashAutoFormTabs as L}from".";import{DashAutoFormLayout as U}from".";import{useDataProvider as q}from"react-admin";import{DashAutoAdminFormProvider as A}from"./context/DashAutoAdminFormContext";import{useSelector as O}from"react-redux";import{Loading as z}from"react-admin";const H=({resourceConfig:t,onSubmit:n,beforeSubmit:s,onError:d,toolbar:u,mode:e,isDrawer:D=!1,locale:i})=>{const c=W(),h=B(),M=!0,F=q();let f=e==="create"&&t?.formGroupModes?.create?t.formGroupModes.create:e==="edit"&&t?.formGroupModes?.edit?t.formGroupModes.edit:t?.formGroupMode?t.formGroupMode:"tabs";const P=()=>w(t.schema).filter(r=>r.filter(G=>e==="create"?G?.inCreate!==!1:e==="edit"?G?.inEdit!==!1:!0).length>0).length,R=v(()=>P(),[t.schema,e,i]);f==="tabs"&&R<=1&&(f="layout");const x=O(o=>o.formData||{}),T=k(async o=>{if(M&&console.log("onCreateSave called with values:",o),!c)throw new Error("Resource is required");try{s&&(o=s(o));const{data:r}=await F.create(c,{data:o});n&&n(r)}catch(r){d&&d(r)}},[c,s,F,n,d]),S=k(async o=>{M&&console.log("onUpdateSave called with values:",o);try{s&&(o=s(o));const{data:r}=await F.update(c+"/"+h.id,{id:h?.id,data:o,previousData:h});n&&n(r)}catch(r){d&&d(r)}},[c,h,s,F,n,d]);let m=T;switch(e){case"edit":m=S;break;case"create":m=T;break}const p=v(()=>t.contextComponent||(({children:o})=>a(N,{children:o})),[t.contextComponent,i]),l=v(()=>({onSave:m,mode:e,locale:i}),[m,e,i]);if(!x)return a(z,{});if(e==="create"&&typeof t?.createComponent=="function")return a(y,{toolbar:u||null,onSubmit:m,validate:b(t.schema),reValidateMode:"onBlur",className:"auto-admin-grouped-form",children:a(A,{value:l,children:a(p,{mode:e,resourceConfig:t,children:t.createComponent(t)})})},"create-form");if(e==="edit"&&typeof t?.editComponent=="function")return a(y,{warnWhenUnsavedChanges:!0,toolbar:u||null,onSubmit:m,validate:b(t.schema),reValidateMode:"onBlur",className:"auto-admin-grouped-form",children:a(A,{value:l,children:a(p,{mode:e,resourceConfig:t,children:t.editComponent(t)})})},"edit-form");const V=v(()=>({children:r})=>a(A,{value:l,children:a(p,{mode:e,resourceConfig:t,children:r})}),[l,p,e,t,i]);if(f==="tabs"&&w(t.schema).length>1)return a(N,{children:a(I,{toolbar:u||null,onSubmit:m,validate:b(t.schema),className:"tabbed-form-custom dash-auto-admin-tabbed-form",resetOptions:{keepDirtyValues:!0},syncWithLocation:t.syncTabsWithLocation||!1,defaultValues:e==="create"?x:{...h,...x},component:V,children:L({schema:t.schema,resourceConfig:t,options:{mode:e,isDrawer:D,locale:i}})},"tabbed-form")});if(f==="groups")return a(y,{toolbar:u||null,onSubmit:m,validate:b(t.schema),reValidateMode:"onBlur",className:"auto-admin-grouped-form",children:a(A,{value:l,children:a(p,{mode:e,resourceConfig:t,children:C({schema:t.schema,resourceConfig:t,options:{mode:e,isDrawer:D}})})})},"groups-form");if(f==="layout")return a(y,{toolbar:u||null,onSubmit:m,validate:b(t.schema),reValidateMode:"onBlur",className:"auto-admin-grouped-form",children:a(A,{value:l,children:a(p,{mode:e,resourceConfig:t,children:U({schema:t.schema,resourceConfig:t,options:{mode:e,isDrawer:D}})})})},"layout-form")};var dt=H;export{dt as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{Fragment as U,jsx as m}from"react/jsx-runtime";import{useCallback as F,useEffect as v}from"react";import{useResourceContext as k,useRecordContext as w,TabbedForm as T,SimpleForm as f}from"react-admin";import{DashAutoFormGroups as G,groupByTabs as S,validate as c}from".";import{DashAutoFormTabs as I}from".";import{DashAutoFormLayout as x}from".";import{useDataProvider as R}from"react-admin";import{useSelector as V}from"react-redux";import{Loading as B}from"react-admin";import{useFormContext as N}from"react-hook-form";const L=({resourceConfig:a,onSubmit:d,beforeSubmit:s,onError:i,toolbar:l,mode:e,isDrawer:h=!1})=>{const n=k(),y=w(),A=!0;v(()=>{console.log("Dash Auto Tabbed rerendered")},[]);const W=N(),u=R();let p=e==="create"&&a?.formGroupModes?.create?a.formGroupModes.create:e==="edit"&&a?.formGroupModes?.edit?a.formGroupModes.edit:a?.formGroupMode?a.formGroupMode:"tabs";p==="tabs"&&S(a.schema).length===1&&(p="layout");const b=V(t=>t.formData||{}),D=F(async t=>{if(A&&console.log("onCreateSave called with values:",t),!n)throw new Error("Resource is required");try{s&&(t=s(t));const{data:r}=await u.create(n,{data:t});d&&d(r)}catch(r){i&&i(r)}},[n,s,u,d,i]),M=F(async t=>{A&&console.log("onUpdateSave called with values:",t);try{s&&(t=s(t));const{data:r}=await u.update(n+"/"+y.id,{data:t});d&&d(r)}catch(r){i&&i(r)}},[n,y,s,u,d,i]);let o=D;switch(e){case"edit":o=M;break;case"create":o=D;break}if(!b)return m(B,{});if(e==="create"&&typeof a?.createComponent=="function")return m(f,{toolbar:l||null,onSubmit:o,validate:c(a.schema),reValidateMode:"onBlur",className:"auto-admin-grouped-form",children:a.createComponent(a)},"create-form");if(e==="edit"&&typeof a?.editComponent=="function")return m(f,{warnWhenUnsavedChanges:!0,toolbar:l||null,onSubmit:o,validate:c(a.schema),reValidateMode:"onBlur",className:"auto-admin-grouped-form",children:a.editComponent(a)},"edit-form");if(p==="tabs"&&S(a.schema).length>1)return m(U,{children:m(T,{toolbar:l||null,onSubmit:o,validate:c(a.schema),className:"tabbed-form-custom dash-auto-admin-tabbed-form",resetOptions:{keepDirtyValues:!0},syncWithLocation:a.syncTabsWithLocation||!1,defaultValues:e==="create"?b:{...y,...b},children:I({schema:a.schema,resourceConfig:a,options:{mode:e,isDrawer:h}})},"tabbed-form")});if(p==="groups")return m(f,{toolbar:l||null,onSubmit:o,validate:c(a.schema),reValidateMode:"onBlur",className:"auto-admin-grouped-form",children:G({schema:a.schema,resourceConfig:a,options:{mode:e,isDrawer:h}})},"groups-form");if(p==="layout")return m(f,{toolbar:l||null,onSubmit:o,validate:c(a.schema),reValidateMode:"onBlur",className:"auto-admin-grouped-form",children:x({schema:a.schema,resourceConfig:a,options:{mode:e,isDrawer:h}})},"layout-form")};var ta=L;export{ta as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as u}from"react/jsx-runtime";import{TabbedShowLayout as a}from"react-admin";import{AutoTabs as m}from"./mui/AutoTabs";const s=(o,t)=>u(a,{children:m(o,o.schema,t)});var h=s;export{h as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import l from"react";import{useInput as i}from"react-admin";const c=({children:e,source:r,label:a,alwaysOn:m,...s})=>{const{field:{onChange:o,onBlur:n,value:p},fieldState:{error:t,invalid:h},formState:{isSubmitted:u}}=i({source:r,...s});return l.cloneElement(e,{value:p,onChange:o,onBlur:n,error:t?.message,helperText:t?.message,source:r,label:a,...e.props})};var W=c;export{W as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as R}from"react/jsx-runtime";import{DASHAdminSystemConstants as m}from"@dashadmin/dash-constants";import{useEffect as c}from"react";import{useRedirect as n,Loading as h}from"react-admin";import{useParams as p}from"react-router";const f=m.system.URL_PREFIX,l=({method:t,resourceConfig:r,stateHashPattern:a=f,drawerMethod:i="edit",...u})=>{const s=p(),d=n(),o=r?.idParamName||"id";return c(()=>{let e=a.replace(`:${o}`,s[o]);e=e.replace(":method",i),d(t,r.model,t==="edit"?s.id:null,null,{hash:e})},[]),R(h,{})};var _=l;export{_ as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsxs as i}from"react/jsx-runtime";import{TabbedShowLayout as r}from"react-admin";import a from"./DashAutoReferenceTab";import m from"./DashAutoTabs";const u=({resourceConfig:e,schema:A,references:o,...b})=>i(r,{children:[m(e),o&&o.map(t=>a(t))]});var D=u;export{D as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as l}from"react/jsx-runtime";import{useTranslate as s}from"react-admin";const n=({resourceConfig:t,record:a,...r})=>{const e=s(),o=e(t.label,{_:t.label});return l("span",{children:a?`${e("dash.action.edit")} "${a[t.schema[0].attribute]}"`:o})};var c=n;export{c as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as t}from"react/jsx-runtime";import{cloneElement as s}from"react";import r from"@mui/icons-material/Settings";import{Fab as c,Tooltip as m}from"@mui/material";const p=o=>{const{icon:e,onClick:n,tooltip:i,children:b,...l}=o,a=e?s(o.icon,{sx:{fontSize:16},fontSize:"small"}):t(r,{sx:{fontSize:16},fontSize:"small"});return t(m,{title:i,children:t(c,{size:"small","aria-label":"settings",color:"primary",onClick:n,style:{position:"absolute"},className:"toolbar-settings-button",...l,children:a})})};var C=p;export{p as FabButton,C as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as l}from"react/jsx-runtime";import{useTranslate as i}from"react-admin";import{isTranslationKey as c}from"../../hooks/useAutoAdminTranslate";const m=({label:t,fallback:e="",className:a,component:n="span",componentProps:s={}})=>{const d=i();if(!t)return e?l(n,{className:a,...s,children:e}):null;let r=t;if(c(t)){const o=d(t,{_:t});o===t&&e?r=e:r=o}return l(n,{className:a,...s,children:r})},b=t=>e=>{const a=i();let n=e.label;return e.label&&c(e.label)&&(n=a(e.label,{_:e.label})),l(t,{...e,label:n})};var P=m;export{m as TranslatedLabel,P as default,b as withTranslatedLabel};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{Fragment as o,jsx as e,jsxs as l}from"react/jsx-runtime";import{Dialog as B,DialogContent as h,Drawer as w,Fade as T,Popover as k,Tooltip as p}from"@mui/material";import f,{memo as D}from"react";import{GearBadge as u,AlertBadge as C,ErrorBadge as S}from"./SettingsBarIcons";const M=({type:a,className:s,children:d,warning:t,error:i,gearIcon:v,...r})=>{t||(t={active:!1,message:""}),i||(i={active:!1,message:""});const[n,c]=f.useState(null),g=!!n,m=N=>{c(N.currentTarget)},E=()=>{c(null)};return l("div",{...s&&{className:s},children:[l("div",{className:"settings-widget-actions",children:[i.active&&e("div",{className:"settings-widget-action",children:e(S,{onClick:()=>{},children:e(o,{})})}),t.active&&e(p,{title:t.message,children:e("div",{className:"settings-widget-action",children:e(C,{onClick:()=>{},children:e(o,{})})})}),e("div",{className:"settings-widget-action",children:e(u,{icon:v,onClick:m,children:e(o,{})})})]}),e(k,{anchorOrigin:{vertical:"bottom",horizontal:"right"},transformOrigin:{vertical:"top",horizontal:"left"},id:"fade-menu",anchorEl:n,open:g,onClose:E,TransitionComponent:T,children:e("div",{style:{padding:8},children:d})})]})},y=({type:a,className:s,children:d,warning:t,error:i,...v})=>{t||(t={active:!1,message:""}),i||(i={active:!1,message:""});const[r,n]=f.useState(!1),c=m=>{n(!0)},g=()=>{n(!1)};return l("div",{children:[l("div",{className:"settings-widget-actions",children:[i.active&&e("div",{className:"settings-widget-action",children:e(S,{onClick:()=>{},children:e(o,{})})}),t.active&&e(p,{title:t.message,children:e("div",{className:"settings-widget-action",children:e(C,{onClick:()=>{},children:e(o,{})})})}),e("div",{className:"settings-widget-action",children:e(u,{onClick:c,children:e(o,{})})})]}),e(B,{open:r,onClose:g,children:e(h,{children:d})})]})},A=({type:a,className:s,children:d,warning:t,error:i,...v})=>{t||(t={active:!1,message:""}),i||(i={active:!1,message:""});const[r,n]=f.useState(!1),c=m=>{n(!0)},g=()=>{n(!1)};return l("div",{children:[l("div",{className:"settings-widget-actions",children:[i.active&&e("div",{className:"settings-widget-action",children:e(S,{onClick:()=>{},children:e(o,{})})}),t.active&&e(p,{title:t.message,children:e("div",{className:"settings-widget-action",children:e(C,{onClick:()=>{},children:e(o,{})})})}),e("div",{className:"settings-widget-action",children:e(u,{onClick:c,children:e(o,{})})})]}),e(w,{open:r,onClose:g,anchor:"right",PaperProps:{sx:{width:"20%"}},children:d})]})},F=(a,s)=>a.data===s.data,I=({type:a="dialog",...s})=>{switch(a){case"tooltip":return e(M,{type:a,...s});case"drawer":return e(A,{type:a,...s});default:return e(y,{type:a,...s})}},R=D(I,F);var O=R;export{O as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as t}from"react/jsx-runtime";import a from"@mui/material/Badge";import i from"@emotion/styled";import{Settings as l,Error as r,Warning as d}from"@mui/icons-material";import{cloneElement as c}from"react";import{Fab as g}from"@mui/material";const o=i(a)(({theme:e})=>({"& .MuiBadge-badge":{padding:0}})),y=e=>{const n=e.icon?c(e.icon,{sx:{fontSize:16},fontSize:"small"}):t(l,{sx:{fontSize:16},fontSize:"small"});return t(g,{size:"small","aria-label":"settings",color:"primary",onClick:e.onClick,style:{position:"absolute"},className:"toolbar-settings-button",children:n})},k=e=>t(o,{onClick:e.onClick,badgeContent:t(d,{sx:{fontSize:16,color:"orange"},fontSize:"small"}),color:"default",children:e.children}),u=e=>t(o,{onClick:e.onClick,badgeContent:t(r,{sx:{fontSize:16,color:"red"},fontSize:"small"}),color:"default",children:e.children});export{k as AlertBadge,u as ErrorBadge,y as GearBadge};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{createContext as o,useContext as e}from"react";const t=o({mode:"create"}),a=t.Provider,d=()=>e(t);var i=t;export{a as DashAutoAdminFormProvider,i as default,d as useDashAutoAdminForm};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import i,{useEffect as r,useState as o}from"react";const d=a=>{const e=o(!1),t=o(null);return r(()=>{t[0]&&(a&&t[0]?.origin&&t[0].origin===a&&e[1](t[0].data)||e[1](t[0]?.data))},[t[0]]),i.useEffect(()=>(window.addEventListener("auto-admin-loading-state",n=>t[1](n)),()=>{window.removeEventListener("auto-admin-loading-state",n=>t[1](n))}),[]),e};var u=d;export{u as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{useTranslate as g}from"react-admin";import{useCallback as u,useMemo as d}from"react";const e=t=>!t||typeof t!="string"?!1:/^[a-z][a-z0-9_.]*[a-z0-9]$/i.test(t)&&t.includes("."),c=()=>{const t=g(),o=u((n,s)=>{if(!n)return s||"";if(e(n)){const f=t(n,{_:n});return f===n&&s?s:f}return n},[t]),r=u(n=>n?e(n)?t(n,{_:n}):n:"",[t]),i=u((n,s)=>t(n,s),[t]),a=u(n=>e(n)?t(n,{_:n})!==n:!1,[t]);return d(()=>({translate:t,translateLabel:o,translateIfKey:r,translateWithParams:i,hasTranslation:a,isTranslationKey:e}),[t,o,r,i,a])},_=(t,o,r)=>{if(!t)return r||"";if(e(t)){const i=o(t,{_:t});return i===t&&r?r:i}return t};var x=c;export{x as default,e as isTranslationKey,_ as translateLabelSync,c as useAutoAdminTranslate};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import a from"react";const o=()=>{const[e,s]=a.useState(()=>window.location.hash),t=a.useCallback(()=>{s(window.location.hash)},[]);a.useEffect(()=>(window.addEventListener("hashchange",t),()=>{window.removeEventListener("hashchange",t)}),[]);const h=a.useCallback(n=>{n!==e&&(window.location.hash=n)},[e]);return[e,h]};var i=o;export{i as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{SimpleLogger as e}from"../utils/SimpleLogger";const l=n=>{const o=new e(n,!0);return{info:(...r)=>{o.log(r)},log:(...r)=>{o.log(r)},error:(...r)=>{o.error(r)},warn:(...r)=>{o.warn(r)}}};export{l as useLogger};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{useLocation as c,useParams as l}from"react-router";const g=()=>{const o=l();let e=c().pathname;return Object.keys(o).filter(t=>t!=="*").forEach(t=>{const n=o[t],r=new RegExp(`/${n}/`,"g"),a=new RegExp(`/${n}$`,"g");e=e.replaceAll(r,`/:${t}/`),e=e.replaceAll(a,`/:${t}`)}),e};export{g as useRoutePathPattern};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import a from"react";const h=()=>{const[e,n]=a.useState(()=>window.location.hash),s=a.useCallback(t=>{n(t.data)},[]);a.useEffect(()=>(window.addEventListener("virtualhash",s),()=>{window.removeEventListener("virtualhash",s)}),[]);const r=a.useCallback(t=>{history.replaceState(null,"",t),window.dispatchEvent(new MessageEvent("virtualhash",{data:t}))},[e]);return{hash:e,setVirtualHash:t=>{r(t)}}};var o=h;export{o as default};
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as c}from"react/jsx-runtime";import L from"./DashAutoListTopToolbar";import{useState as m,useEffect as A}from"react";const a=(n,s)=>process.env["VITE_"+n]||s||null,C=a("FILTERS_COLLAPSE_COUNT"),S=a("FILTERS_COLLAPSE_SIZE"),E=n=>{const{filters:s,resourceConfig:e,autoFilters:u,listProps:f}=n,t=`filters.collapsed.${e.model.replace(/\//g,"_")}`,[r,p]=m(()=>{const o=localStorage.getItem(t);return o!==null?JSON.parse(o):!1});A(()=>{localStorage.setItem(t,JSON.stringify(r)),console.log("\u{1F4BE} Persisting filter state:",{storeKey:t,expanded:r})},[r,t]);const d=o=>{console.log("\u{1F504} Setting expanded:",{storeKey:t,value:o}),p(o)},g=e.referenceFilters&&e.referenceFilters.length?e.referenceFilters.length:0;let l=!!(s||e.create||e.exporter||e.customToolbarElements);if(e?.toolbar===!1&&(l=!1),!l)return null;const i=c(L,{resourceConfig:e,autoFilters:u,filters:s,countFilters:g,expanded:r,setExpanded:d,filterCountToCollapse:C,collapsedSize:S});return e.customListActions?c(e.customListActions,{resourceConfig:e,listProps:f,children:i}):i};var y=E;export{y as default,a as getEnv};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as i,jsxs as F}from"react/jsx-runtime";import{useLocation as u}from"react-router";import{useUnselectAll as d,ListContext as f}from"react-admin";import p from"../hooks/useAutoAdminLoadingStateMediator";import{useContext as A,useEffect as g,useState as h}from"react";import L from"../mui/AutoDataGrid";import{CircularProgress as D}from"@mui/material";const C=()=>A(f)??null,x=({resourceConfig:t,dataGridProps:r,locale:n})=>{const e=C()?.setFilters,o=u(),[a,l]=h(o.pathname),[s]=p("getList"),c=d(t.listProps?.storeKey||t.model),m=()=>{c(),e&&e({},[])};return g(()=>{a!==o.pathname&&(t?.resetFiltersOnLocationChange===!0&&(console.info("Resetting Filters on Location change"),m()),l(o.pathname))},[o,a]),F("div",{className:s?"loading-overlay":"default-overlay",children:[s&&i(D,{className:"datagrid-olverlay-loading"}),i(L,{resourceConfig:t,...r,locale:n})]})};var O=x;export{O as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as s}from"react/jsx-runtime";const r=({resourceConfig:t,autoFilters:o,children:e})=>!(o&&o.length||t.create||t.exporter||t.customToolbarElements)?e:s("div",{className:"top-toolbar-default",children:e});var h=r;export{h as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{jsx as i,jsxs as C}from"react/jsx-runtime";import*as r from"react";import{useForm as p,FormProvider as y}from"react-hook-form";import{Box as x,Button as v}from"@mui/material";import{FilterFormBase as h,ListContext as B}from"react-admin";const S=()=>r.useContext(B)??null,k=r.forwardRef((s,u)=>{const{filters:m,resourceConfig:c}=s,n=S(),d=n?.displayedFilters??[],f=n?.filterValues??{},l=n?.setFilters,t=p({defaultValues:f}),o=e=>{Object.keys(e).length>0&&l&&l(e,d)};r.useEffect(()=>{const e=a=>{a.key==="Enter"&&(a.preventDefault(),t.handleSubmit(o)())};return document.addEventListener("keydown",e),()=>{document.removeEventListener("keydown",e)}},[]);const{reset:b}=t,F=t.handleSubmit(o);return r.useImperativeHandle(u,()=>({submit(){F()},reset(){b()}})),i(y,{...t,children:C(x,{mb:1,children:[i(h,{onSubmit:o,filters:m}),c?.filterButtonPosition==="filters-container"&&i(v,{className:"toolbar-filters-filter-button",onClick:()=>t.handleSubmit(o)(),variant:"contained",color:"primary",type:"button",children:"Filtrar"})]})})});var T=k;export{T as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{Fragment as s,jsx as e,jsxs as f}from"react/jsx-runtime";import p from"../common/components/FabButton";import{SavedQueriesList as y,useRefresh as A,useUnselectAll as S,ListContext as R}from"react-admin";import{FilterForm as v}from"react-admin";import{useContext as I}from"react";import{Box as B,Button as z,Collapse as w,Fab as D}from"@mui/material";import E from"@mui/icons-material/FilterAltOff";import H from"./DashAutoListFilterFormWithButton";import c from"react";import N from"@mui/icons-material/KeyboardArrowUp";import L from"@mui/icons-material/KeyboardArrowDown";import W from"@mui/icons-material/Search";import{ToolbarCreateButton as k,ToolbarExportButton as K}from"../toolbar/buttons/ToolbarButtons";import{Refresh as P}from"@mui/icons-material";const J=()=>I(R)??null,d=c.forwardRef((n,o)=>{const a=()=>{console.error("handleSubmit at ToolbarFilters not implemented")},i=()=>{console.error("reset at ToolbarFilters not implemented")};c.useImperativeHandle(o,()=>({submit(){a()},reset(){i()}}));const{resourceConfig:r,filters:l}=n;return r.hideDefaultFilters!==!0?e(v,{filters:l}):e(s,{})});d.displayName="ToolbarFilters";const Q=n=>{const{resourceConfig:o,autoFilters:a,filters:i,countFilters:r,expanded:l,setExpanded:b,filterCountToCollapse:U=5,collapsedSize:F="60px",fabButtonSize:t="20px"}=n,u=J()?.setFilters,C=S(o.listProps?.storeKey||o.model),h=o.FilterFormComponent?o.FilterFormComponent:o.filterWithSubmit===!0?H:d,m=c.useRef(null),x=A(),T=()=>{C(),u&&u({},[]),m.current?.reset()},g=()=>{x()};return f("div",{children:[f("div",{style:{display:"flex",justifyContent:"flex-start",flexWrap:"wrap"},className:"toolbar-actions",children:[e(k,{mode:"create",resourceConfig:o}),e(K,{mode:"create",resourceConfig:o}),typeof o.customToolbarElements=="function"?o.customToolbarElements(i):o.customToolbarElements,typeof o.customToolbarActions=="function"?o.customToolbarActions(i):o.customToolbarActions,!!o.showSavedQueries&&e(y,{})]}),r?e("div",{children:e(w,{className:"toolbar-collapse",orientation:"vertical",collapsedSize:F,in:l,timeout:"auto",children:e("div",{className:"toolbar-filters",children:e(h,{ref:m,resourceConfig:o,filters:i})})})}):e(s,{}),r&&o?.filterWithSubmit===!0&&o?.filterButtonPosition!=="filters-container"?e("div",{style:{display:"flex",justifyContent:"flex-end",flexWrap:"wrap"},className:"toolbar-buttons",children:e(z,{endIcon:e(W,{}),variant:"contained",onClick:()=>{m.current?.submit()},children:"Filtrar"})}):e(s,{}),f(B,{className:"toolbar-right-buttons",sx:{gap:.5,padding:.5},children:[e(p,{onClick:g,size:"small","aria-label":"refresh",color:"primary",icon:e(P,{sx:{fontSize:"1rem"}}),tooltip:"Refrescar",style:{width:t,height:t,minHeight:t}}),r&&a?e(p,{onClick:T,size:"small","aria-label":"refresh",color:"primary",icon:e(E,{sx:{fontSize:"1rem"}}),tooltip:"Borrar filtros",style:{width:t,height:t,minHeight:t}}):e(s,{}),r?e(D,{size:"small","aria-label":"collapse",color:"primary",onClick:()=>b(!l),style:{width:t,height:t,minHeight:t},className:"toolbar-collapse-button",children:l?e(L,{sx:{fontSize:"1rem"}}):e(N,{sx:{fontSize:"1rem"}})}):e(s,{})]})]})};var ue=Q;export{ue as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{Fragment as F,jsx as a,jsxs as R}from"react/jsx-runtime";import{createElement as m}from"react";import{InputLabel as L}from"@mui/material";import{ImageInput as S,FileInput as $,DateTimeInput as v,ArrayField as E,BooleanField as g,ChipField as I,Datagrid as M,DateField as U,NumberField as q,ImageField as z,ReferenceArrayField as W,ReferenceField as G,SingleFieldList as B,TextField as D,FileField as H,FunctionField as h}from"react-admin";import{UserAction as J}from"../wrappers";import K from"./components/ListStringField";import Q from"../utils/isEnum";import _ from"../utils/replaceParams";import{useParams as V}from"react-router";import{useComponentRegistry as X}from"../DashAutoAdminComponentRegistry";const Y=(o,s,e,l,i,Z,t)=>{const{components:T}=X(),C=V(),r=e.sortable===!0,N=b=>{const c=T[b];return c?{custom:!0,type:"component",component:c}:{custom:!0,type:"component",component:()=>R(F,{children:["No component for ",b]})}},A=s?.fieldWrapper&&typeof s.fieldWrapper=="function"?s.fieldWrapper:({_record:b,_method:c,_attribute:y,_resourceConfig:f,children:d})=>d;if(t=i?.record?i.record:t,i&&i.useReadOnlyInputAsTextField===!0&&e.readOnly)return a(A,{label:e.label,sortable:r,source:e.listAttribute?e.listAttribute:e.attribute,...t&&{record:t},method:o,attribute:e,resourceConfig:s,children:m(D,{...t&&{record:t},sortable:r,...r&&{sortBy:e.listAttribute||e.attribute},key:l,label:e.label,source:e.listAttribute?e.listAttribute:e.attribute,...e.fieldProps,editable:!1,InputProps:{readOnly:!0},disabled:!0})},l);if(i&&i.readOnlyComponent&&e.readOnly)return m(A,{...t&&{record:t},method:o,attribute:e,key:l,label:e.label,sortable:r,source:e.listAttribute?e.listAttribute:e.attribute,resourceConfig:s},a(i.readOnlyComponent,{...t&&{record:t},sortable:r,...r&&{sortBy:e.listAttribute||e.attribute},input:e,label:e.label,source:e.listAttribute?e.listAttribute:e.attribute,...e.fieldProps,editable:!1,InputProps:{readOnly:!0}},l));if(typeof e.type=="string"&&!e.type.includes(".")&&!Array.isArray(e.type))switch(e.type){case"string":case"text":case"String":e.type=String;break;case"number":case"Number":case"integer":e.type=Number;break;case"boolean":case"Boolean":e.type=Boolean;break;case"date":case"Date":e.type=Date;break;default:e.custom=!0,typeof e?.component=="string"&&(e={...e,...N(e.component)});break}if(e.custom&&e.component||e.type==="component"&&e.component)return a(h,{label:e.label,sortable:r,...r&&{sortBy:e.listAttribute||e.attribute},render:b=>m(A,{...b&&{record:b},method:o,attribute:e,key:l,label:e.label,sortable:r,source:e.listAttribute?e.listAttribute:e.attribute,resourceConfig:s},a(J,{...b&&{record:b},method:o,attribute:e,resourceConfig:s,options:i},`custom_component_${l}`))},`function_field_${l}`);if(Array.isArray(e.type)&&e.type.length>0){const b=e.type[0];if(e.label||(e.label=e.attribute),Q(b))return m(A,{...t&&{record:t},method:o,attribute:e,key:l,label:e.label,sortable:r,source:e.listAttribute?e.listAttribute:e.attribute,resourceConfig:s},a(K,{label:e.label,source:e.listAttribute?e.listAttribute:e.attribute,map:b},l));if(typeof b=="string"){const c={...C,...(location.hash.match(/\d+/g)||[]).map(Number).reduce((P,u,k)=>(P[k]=u,P),{})},y=_(c,b),[f,d]=y.split(".");return m(A,{...t&&{record:t},method:o,attribute:e,key:l,label:e.label,sortable:r,source:e.listAttribute?e.listAttribute:e.attribute,resourceConfig:s},a(F,{children:a(W,{sortable:r,...r&&{sortBy:e.listAttribute||e.attribute},label:e.label,source:e.listAttribute?e.listAttribute:e.attribute,reference:f,...e.componentProps,children:a(B,{...e.fieldProps,children:a(I,{source:d})})},l)}))}else{const c=e.type;return m(A,{...t&&{record:t},method:o,attribute:e,key:l,label:e.label,sortable:r,source:e.listAttribute?e.listAttribute:e.attribute,resourceConfig:s,...e.componentProps},a(F,{children:a(E,{sortable:r,...r&&{sortBy:e.listAttribute||e.attribute},label:e.label,source:e.listAttribute?e.listAttribute:e.attribute,...e.fieldProps,children:a(M,{children:c.map((y,f)=>Y(o,s,y,f,i))})},l)}))}}if(typeof e.type=="string"){const b={...C,...(location.hash.match(/\d+/g)||[]).map(Number).reduce((u,k,w)=>(u[w]=k,u),{})},c=_(b,e.type),[y,f]=c.split(".");if(e&&e.multiple===!1){const u={...t&&{record:t},method:o,attribute:e,label:e.label,sortable:r,source:e.listAttribute?e.listAttribute:e.attribute,resourceConfig:s},k={...t&&{record:t},sortable:r,...r&&{sortBy:e.listAttribute||e.attribute},label:e.label,link:"show",source:e.listAttribute?e.listAttribute:e.attribute,reference:y,...e.componentProps};return a(A,{...u,children:a(G,{...k})})}const d={...t&&{record:t},method:o,attribute:e,label:e.label,sortable:r,source:e.listAttribute?e.listAttribute:e.attribute,resourceConfig:s},P={...t&&{record:t},sortable:r,...r&&{sortBy:e.listAttribute||e.attribute},label:e.label,source:e.listAttribute?e.listAttribute:e.attribute,reference:y};return a(A,{...d,children:a(W,{...P,children:a(B,{...e.fieldProps,children:a(I,{source:f})})})})}switch(e.type){case Number:return m(h,{label:e.label,sortable:r,...r&&{sortBy:e.listAttribute||e.attribute},key:`function_field_${l}`,render:b=>m(A,{...b&&{record:b},method:o,attribute:e,key:l,label:e.label,sortable:r,source:e.listAttribute?e.listAttribute:e.attribute,resourceConfig:s},a(q,{label:e.label,...t&&{record:t},sortable:e.sortable===!0,source:e.listAttribute?e.listAttribute:e.attribute,...e.fieldProps},`number_field_${l}`))});case Boolean:return t?R(F,{children:[e?.showLabel!==!1&&m(A,{...t&&{record:t},method:o,attribute:e,key:l,label:e.label,sortable:r,source:e.listAttribute?e.listAttribute:e.attribute,resourceConfig:s},a(L,{htmlFor:e.listAttribute?e.listAttribute:e.attribute,children:e.label})),m(A,{...t&&{record:t},method:o,attribute:e,key:l,label:e.label,sortable:r,source:e.listAttribute?e.listAttribute:e.attribute,resourceConfig:s},m(g,{sortable:r,...r&&{sortBy:e.listAttribute||e.attribute},record:t,key:l,id:e.listAttribute?e.listAttribute:e.attribute,label:e.label,source:e.listAttribute?e.listAttribute:e.attribute,...e.fieldProps}))]}):a(h,{label:e.label,sortable:r,...r&&{sortBy:e.listAttribute||e.attribute},render:b=>a(F,{children:m(A,{...b&&{record:b},method:o,attribute:e,key:l,label:e.label,sortable:r,source:e.listAttribute?e.listAttribute:e.attribute,resourceConfig:s},a(g,{record:t,id:e.listAttribute?e.listAttribute:e.attribute,label:e.label,source:e.listAttribute?e.listAttribute:e.attribute,...e.fieldProps},l))})});case v:case Date:return m(A,{...t&&{record:t},method:o,attribute:e,label:e.label,sortable:r,source:e.listAttribute?e.listAttribute:e.attribute,key:l,resourceConfig:s},m(U,{...t&&{record:t},key:l,sortable:r,...r&&{sortBy:e.listAttribute||e.attribute},label:e.label,showTime:e.fieldProps&&e.fieldProps.showTime||!1,source:e.listAttribute?e.listAttribute:e.attribute,...e.fieldProps}));case S:return m(A,{...t&&{record:t},method:o,attribute:e,key:l,label:e.label,sortable:r,source:e.listAttribute?e.listAttribute:e.attribute,resourceConfig:s},m(z,{...t&&{record:t},sortable:r,...r&&{sortBy:e.listAttribute||e.attribute},key:l,source:e.attribute,label:e.label}));case $:return m(A,{...t&&{record:t},method:o,attribute:e,key:l,label:e.label,sortable:r,source:e.listAttribute?e.listAttribute:e.attribute,resourceConfig:s},m(H,{...t&&{record:t},sortable:r,...r&&{sortBy:e.listAttribute||e.attribute},key:l,source:e.listAttribute??e.attribute,title:e.listAttribute,download:!0}))}const O={...t&&{record:t},sortable:r,...r&&{sortBy:e.listAttribute||e.attribute},label:e.label,source:e.listAttribute?e.listAttribute:e.attribute,...e.fieldProps,...e.slotProps?{slotProps:e.slotProps}:{}};return a(A,{label:e.label,sortable:r,source:e.listAttribute?e.listAttribute:e.attribute,...t&&{record:t},method:o,attribute:e,resourceConfig:s,children:a(D,{...O})})};export{Y as AttributeToField};
|