@nestledjs/data-browser 0.1.6 → 0.1.8
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/index.js +62 -62
- package/lib/components/filters/DateRangeFilter.js +79 -98
- package/lib/components/filters/NumberRangeFilter.js +92 -108
- package/lib/components/filters/RelationComponents.js +129 -247
- package/lib/components/filters/RelationFilterField.js +77 -107
- package/lib/components/shared/AdminBreadcrumbs.js +51 -92
- package/lib/components/shared/AdminErrorStates.js +153 -200
- package/lib/components/shared/AdminStatusDisplay.js +202 -192
- package/lib/context/AdminDataContext.js +25 -21
- package/lib/hooks/useAdminList.js +22 -22
- package/lib/hooks/useClickOutside.js +12 -9
- package/lib/hooks/useDebounce.js +11 -10
- package/lib/hooks/useRelationData.js +70 -47
- package/lib/layouts/AdminDataLayout.js +250 -300
- package/lib/pages/AdminDataCreatePage.js +322 -433
- package/lib/pages/AdminDataEditPage.js +664 -803
- package/lib/pages/AdminDataIndexPage.js +58 -86
- package/lib/pages/AdminDataListPage.js +751 -1164
- package/lib/types/index.js +5 -5
- package/lib/utils/graphql-utils.js +266 -177
- package/lib/utils/secure-storage.js +165 -96
- package/lib/utils/string-utils.js +31 -19
- package/package.json +2 -2
|
@@ -1,903 +1,764 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
|
|
13
|
-
function
|
|
14
|
-
|
|
1
|
+
import { gql } from "@apollo/client";
|
|
2
|
+
import { useQuery, useMutation } from "@apollo/client/react";
|
|
3
|
+
import { loadDevMessages, loadErrorMessages } from "@apollo/client/dev";
|
|
4
|
+
import { ExclamationCircleIcon, CheckCircleIcon } from "@heroicons/react/24/outline";
|
|
5
|
+
import { TrashIcon } from "@heroicons/react/24/solid";
|
|
6
|
+
import { useAdminDataContext } from "../context/AdminDataContext.js";
|
|
7
|
+
import { ErrorBoundary } from "@nestledjs/shared-components";
|
|
8
|
+
import { Form } from "@nestledjs/forms";
|
|
9
|
+
import { useState, useMemo, useEffect } from "react";
|
|
10
|
+
import { useParams, Link, useNavigate } from "react-router";
|
|
11
|
+
import { getAdminDocuments, buildFormFields, cleanFormInput } from "../utils/graphql-utils.js";
|
|
12
|
+
var _jsxFileName = "/Users/justinhandley/IdeaProjects/nestled_template/libs/admin-data/src/lib/pages/AdminDataEditPage.tsx";
|
|
13
|
+
function toLowerCamelCase(name) {
|
|
14
|
+
if (!name) return "";
|
|
15
|
+
return name.charAt(0).toLowerCase() + name.slice(1);
|
|
15
16
|
}
|
|
16
|
-
function
|
|
17
|
-
return `${
|
|
17
|
+
function getModelIdVariableName(modelName) {
|
|
18
|
+
return `${toLowerCamelCase(modelName)}Id`;
|
|
18
19
|
}
|
|
19
|
-
function
|
|
20
|
-
return
|
|
20
|
+
function getModelResponseFieldName(modelName) {
|
|
21
|
+
return toLowerCamelCase(modelName);
|
|
21
22
|
}
|
|
22
|
-
function
|
|
23
|
-
return
|
|
23
|
+
function toReadableText(text) {
|
|
24
|
+
return text.replace(/([a-z])([A-Z])/g, "$1 $2").replace(/^./, (str) => str.toUpperCase());
|
|
24
25
|
}
|
|
25
|
-
process.env.NODE_ENV !== "production"
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
26
|
+
if (process.env.NODE_ENV !== "production") {
|
|
27
|
+
loadDevMessages();
|
|
28
|
+
loadErrorMessages();
|
|
29
|
+
}
|
|
30
|
+
const sanitizeInput = (input) => {
|
|
31
|
+
if (!input || typeof input !== "string") return "";
|
|
32
|
+
return input.replace(/[<>"'%;()&+]/g, "").replace(/javascript:/gi, "").replace(/on\w+\s*=/gi, "").trim().substring(0, 100);
|
|
33
|
+
};
|
|
34
|
+
const toKebabCase = (str) => {
|
|
35
|
+
return str.replace(/([a-z])([A-Z])/g, "$1-$2").toLowerCase();
|
|
36
|
+
};
|
|
37
|
+
const validateId = (id) => {
|
|
38
|
+
if (!id) return null;
|
|
39
|
+
const sanitized = sanitizeInput(id);
|
|
40
|
+
if (!sanitized) return null;
|
|
41
|
+
if (!/^[a-zA-Z0-9_-]+$/.test(sanitized)) {
|
|
42
|
+
console.warn(`[Security] Invalid ID format attempted: ${id}`);
|
|
43
|
+
return null;
|
|
44
|
+
}
|
|
45
|
+
return sanitized;
|
|
30
46
|
};
|
|
31
|
-
function
|
|
32
|
-
const {
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
47
|
+
function AdminDataEditPage() {
|
|
48
|
+
const {
|
|
49
|
+
dataType,
|
|
50
|
+
id
|
|
51
|
+
} = useParams();
|
|
52
|
+
const {
|
|
53
|
+
databaseModels,
|
|
54
|
+
basePath = "/admin/data",
|
|
55
|
+
formTheme
|
|
56
|
+
} = useAdminDataContext();
|
|
57
|
+
const findModelByName = (name) => {
|
|
58
|
+
return databaseModels.find((model2) => model2.name === name);
|
|
59
|
+
};
|
|
60
|
+
const validateDataType = (dataType2) => {
|
|
61
|
+
if (!dataType2) return null;
|
|
62
|
+
const sanitized = sanitizeInput(dataType2);
|
|
63
|
+
if (!sanitized) return null;
|
|
64
|
+
const properCaseDataType = sanitized.split("-").map((word) => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase()).join("");
|
|
65
|
+
const model2 = databaseModels.find((m) => m.name === properCaseDataType);
|
|
66
|
+
if (!model2) {
|
|
67
|
+
console.warn(`[Security] Invalid dataType attempted: ${dataType2}`);
|
|
68
|
+
return null;
|
|
69
|
+
}
|
|
70
|
+
return properCaseDataType;
|
|
71
|
+
};
|
|
72
|
+
const validatedDataType = validateDataType(dataType);
|
|
73
|
+
const validatedId = validateId(id);
|
|
74
|
+
const shouldShowUnauthorized = !validatedDataType || !validatedId;
|
|
75
|
+
const model = validatedDataType ? findModelByName(validatedDataType) : null;
|
|
76
|
+
const shouldShowModelNotFound = validatedDataType && validatedId && !model;
|
|
77
|
+
if (shouldShowUnauthorized) {
|
|
78
|
+
return /* @__PURE__ */ React.createElement("div", { className: "flex flex-col justify-center py-12", __self: this, __source: {
|
|
79
|
+
fileName: _jsxFileName,
|
|
80
|
+
lineNumber: 118,
|
|
81
|
+
columnNumber: 7
|
|
82
|
+
} }, /* @__PURE__ */ React.createElement("div", { className: "mt-8 mx-auto w-full max-w-md", __self: this, __source: {
|
|
83
|
+
fileName: _jsxFileName,
|
|
84
|
+
lineNumber: 119,
|
|
85
|
+
columnNumber: 9
|
|
86
|
+
} }, /* @__PURE__ */ React.createElement("div", { className: "bg-white dark:bg-gray-800 py-8 px-4 shadow sm:rounded-lg sm:px-10", __self: this, __source: {
|
|
87
|
+
fileName: _jsxFileName,
|
|
88
|
+
lineNumber: 120,
|
|
89
|
+
columnNumber: 11
|
|
90
|
+
} }, /* @__PURE__ */ React.createElement("div", { className: "text-center", __self: this, __source: {
|
|
91
|
+
fileName: _jsxFileName,
|
|
92
|
+
lineNumber: 121,
|
|
93
|
+
columnNumber: 13
|
|
94
|
+
} }, /* @__PURE__ */ React.createElement(ExclamationCircleIcon, { className: "mx-auto h-12 w-12 text-red-400", __self: this, __source: {
|
|
95
|
+
fileName: _jsxFileName,
|
|
42
96
|
lineNumber: 122,
|
|
43
97
|
columnNumber: 15
|
|
44
|
-
}, this
|
|
45
|
-
|
|
46
|
-
fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/admin-data/src/lib/pages/AdminDataEditPage.tsx",
|
|
98
|
+
} }), /* @__PURE__ */ React.createElement("h2", { className: "mt-4 text-lg font-medium text-gray-900 dark:text-gray-100", __self: this, __source: {
|
|
99
|
+
fileName: _jsxFileName,
|
|
47
100
|
lineNumber: 123,
|
|
48
101
|
columnNumber: 15
|
|
49
|
-
},
|
|
50
|
-
|
|
51
|
-
fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/admin-data/src/lib/pages/AdminDataEditPage.tsx",
|
|
102
|
+
} }, "Unauthorized"), /* @__PURE__ */ React.createElement("p", { className: "mt-2 text-sm text-gray-600 dark:text-gray-400", __self: this, __source: {
|
|
103
|
+
fileName: _jsxFileName,
|
|
52
104
|
lineNumber: 124,
|
|
53
105
|
columnNumber: 15
|
|
54
|
-
},
|
|
55
|
-
|
|
56
|
-
x,
|
|
57
|
-
{
|
|
58
|
-
to: j,
|
|
59
|
-
className: "w-full flex justify-center py-2 px-4 border border-transparent rounded-md shadow-sm text-sm font-medium text-white bg-green-web hover:bg-green-web-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-green-web",
|
|
60
|
-
children: "Return to Data Browser"
|
|
61
|
-
},
|
|
62
|
-
void 0,
|
|
63
|
-
!1,
|
|
64
|
-
{
|
|
65
|
-
fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/admin-data/src/lib/pages/AdminDataEditPage.tsx",
|
|
66
|
-
lineNumber: 128,
|
|
67
|
-
columnNumber: 17
|
|
68
|
-
},
|
|
69
|
-
this
|
|
70
|
-
) }, void 0, !1, {
|
|
71
|
-
fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/admin-data/src/lib/pages/AdminDataEditPage.tsx",
|
|
106
|
+
} }, "Invalid data type, ID, or insufficient permissions."), /* @__PURE__ */ React.createElement("div", { className: "mt-6", __self: this, __source: {
|
|
107
|
+
fileName: _jsxFileName,
|
|
72
108
|
lineNumber: 127,
|
|
73
109
|
columnNumber: 15
|
|
74
|
-
}, this
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
110
|
+
} }, /* @__PURE__ */ React.createElement(Link, { to: basePath, className: "w-full flex justify-center py-2 px-4 border border-transparent rounded-md shadow-sm text-sm font-medium text-white bg-green-web hover:bg-green-web-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-green-web", __self: this, __source: {
|
|
111
|
+
fileName: _jsxFileName,
|
|
112
|
+
lineNumber: 128,
|
|
113
|
+
columnNumber: 17
|
|
114
|
+
} }, "Return to Data Browser"))))));
|
|
115
|
+
}
|
|
116
|
+
if (shouldShowModelNotFound) {
|
|
117
|
+
return /* @__PURE__ */ React.createElement("div", { className: "flex flex-col justify-center py-12", __self: this, __source: {
|
|
118
|
+
fileName: _jsxFileName,
|
|
119
|
+
lineNumber: 144,
|
|
120
|
+
columnNumber: 7
|
|
121
|
+
} }, /* @__PURE__ */ React.createElement("div", { className: "mt-8 mx-auto w-full max-w-md", __self: this, __source: {
|
|
122
|
+
fileName: _jsxFileName,
|
|
123
|
+
lineNumber: 145,
|
|
124
|
+
columnNumber: 9
|
|
125
|
+
} }, /* @__PURE__ */ React.createElement("div", { className: "bg-white dark:bg-gray-800 py-8 px-4 shadow sm:rounded-lg sm:px-10", __self: this, __source: {
|
|
126
|
+
fileName: _jsxFileName,
|
|
127
|
+
lineNumber: 146,
|
|
128
|
+
columnNumber: 11
|
|
129
|
+
} }, /* @__PURE__ */ React.createElement("div", { className: "text-center", __self: this, __source: {
|
|
130
|
+
fileName: _jsxFileName,
|
|
131
|
+
lineNumber: 147,
|
|
132
|
+
columnNumber: 13
|
|
133
|
+
} }, /* @__PURE__ */ React.createElement(ExclamationCircleIcon, { className: "mx-auto h-12 w-12 text-yellow-400", __self: this, __source: {
|
|
134
|
+
fileName: _jsxFileName,
|
|
94
135
|
lineNumber: 148,
|
|
95
136
|
columnNumber: 15
|
|
96
|
-
}, this
|
|
97
|
-
|
|
98
|
-
fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/admin-data/src/lib/pages/AdminDataEditPage.tsx",
|
|
137
|
+
} }), /* @__PURE__ */ React.createElement("h2", { className: "mt-4 text-lg font-medium text-gray-900 dark:text-gray-100", __self: this, __source: {
|
|
138
|
+
fileName: _jsxFileName,
|
|
99
139
|
lineNumber: 149,
|
|
100
140
|
columnNumber: 15
|
|
101
|
-
},
|
|
102
|
-
|
|
103
|
-
'The data model for "',
|
|
104
|
-
m,
|
|
105
|
-
'" could not be found.'
|
|
106
|
-
] }, void 0, !0, {
|
|
107
|
-
fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/admin-data/src/lib/pages/AdminDataEditPage.tsx",
|
|
141
|
+
} }, "Model Not Found"), /* @__PURE__ */ React.createElement("p", { className: "mt-2 text-sm text-gray-600 dark:text-gray-400", __self: this, __source: {
|
|
142
|
+
fileName: _jsxFileName,
|
|
108
143
|
lineNumber: 150,
|
|
109
144
|
columnNumber: 15
|
|
110
|
-
},
|
|
111
|
-
|
|
112
|
-
x,
|
|
113
|
-
{
|
|
114
|
-
to: j,
|
|
115
|
-
className: "w-full flex justify-center py-2 px-4 border border-transparent rounded-md shadow-sm text-sm font-medium text-white bg-green-web hover:bg-green-web-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-green-web",
|
|
116
|
-
children: "Return to Data Browser"
|
|
117
|
-
},
|
|
118
|
-
void 0,
|
|
119
|
-
!1,
|
|
120
|
-
{
|
|
121
|
-
fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/admin-data/src/lib/pages/AdminDataEditPage.tsx",
|
|
122
|
-
lineNumber: 154,
|
|
123
|
-
columnNumber: 17
|
|
124
|
-
},
|
|
125
|
-
this
|
|
126
|
-
) }, void 0, !1, {
|
|
127
|
-
fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/admin-data/src/lib/pages/AdminDataEditPage.tsx",
|
|
145
|
+
} }, 'The data model for "', validatedDataType, '" could not be found.'), /* @__PURE__ */ React.createElement("div", { className: "mt-6", __self: this, __source: {
|
|
146
|
+
fileName: _jsxFileName,
|
|
128
147
|
lineNumber: 153,
|
|
129
148
|
columnNumber: 15
|
|
130
|
-
}, this
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
}
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
columnNumber: 11
|
|
139
|
-
}, this) }, void 0, !1, {
|
|
140
|
-
fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/admin-data/src/lib/pages/AdminDataEditPage.tsx",
|
|
141
|
-
lineNumber: 145,
|
|
142
|
-
columnNumber: 9
|
|
143
|
-
}, this) }, void 0, !1, {
|
|
144
|
-
fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/admin-data/src/lib/pages/AdminDataEditPage.tsx",
|
|
145
|
-
lineNumber: 144,
|
|
146
|
-
columnNumber: 7
|
|
147
|
-
}, this) : /* @__PURE__ */ e(de, { model: D, id: r, basePath: j, formTheme: U }, void 0, !1, {
|
|
148
|
-
fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/admin-data/src/lib/pages/AdminDataEditPage.tsx",
|
|
149
|
+
} }, /* @__PURE__ */ React.createElement(Link, { to: basePath, className: "w-full flex justify-center py-2 px-4 border border-transparent rounded-md shadow-sm text-sm font-medium text-white bg-green-web hover:bg-green-web-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-green-web", __self: this, __source: {
|
|
150
|
+
fileName: _jsxFileName,
|
|
151
|
+
lineNumber: 154,
|
|
152
|
+
columnNumber: 17
|
|
153
|
+
} }, "Return to Data Browser"))))));
|
|
154
|
+
}
|
|
155
|
+
return /* @__PURE__ */ React.createElement(AdminDataEditPageContent, { model, id: validatedId, basePath, formTheme, __self: this, __source: {
|
|
156
|
+
fileName: _jsxFileName,
|
|
149
157
|
lineNumber: 169,
|
|
150
158
|
columnNumber: 10
|
|
151
|
-
}
|
|
159
|
+
} });
|
|
152
160
|
}
|
|
153
|
-
function
|
|
154
|
-
|
|
161
|
+
function AdminDataEditPageContent({
|
|
162
|
+
model,
|
|
163
|
+
id,
|
|
164
|
+
basePath,
|
|
165
|
+
formTheme
|
|
166
|
+
}) {
|
|
167
|
+
const navigate = useNavigate();
|
|
168
|
+
const {
|
|
169
|
+
sdk
|
|
170
|
+
} = useAdminDataContext();
|
|
171
|
+
const [submissionState, setSubmissionState] = useState({
|
|
172
|
+
status: "idle"
|
|
173
|
+
});
|
|
174
|
+
const [deleteState, setDeleteState] = useState({
|
|
175
|
+
status: "idle"
|
|
176
|
+
});
|
|
177
|
+
const [showDeleteConfirm, setShowDeleteConfirm] = useState(false);
|
|
178
|
+
const documents = useMemo(() => {
|
|
155
179
|
try {
|
|
156
|
-
return
|
|
157
|
-
} catch (
|
|
158
|
-
|
|
180
|
+
return getAdminDocuments(sdk, model);
|
|
181
|
+
} catch (error2) {
|
|
182
|
+
console.error("[AdminDataEditPage] Error getting documents:", error2);
|
|
183
|
+
return null;
|
|
159
184
|
}
|
|
160
|
-
}, [
|
|
161
|
-
|
|
162
|
-
|
|
185
|
+
}, [sdk, model]);
|
|
186
|
+
const QUERY = useMemo(() => {
|
|
187
|
+
var _a, _b;
|
|
188
|
+
if (!(documents == null ? void 0 : documents.query)) return null;
|
|
163
189
|
try {
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
190
|
+
if (((_a = documents.query) == null ? void 0 : _a.definitions) && ((_b = documents.query) == null ? void 0 : _b.loc)) {
|
|
191
|
+
return documents.query;
|
|
192
|
+
}
|
|
193
|
+
return gql(documents.query);
|
|
194
|
+
} catch (error2) {
|
|
195
|
+
console.error("[AdminDataEditPage] Error parsing QUERY:", error2);
|
|
196
|
+
return null;
|
|
167
197
|
}
|
|
168
|
-
}, [
|
|
169
|
-
|
|
170
|
-
|
|
198
|
+
}, [documents]);
|
|
199
|
+
const UPDATE_MUTATION = useMemo(() => {
|
|
200
|
+
var _a, _b;
|
|
201
|
+
if (!(documents == null ? void 0 : documents.update)) return null;
|
|
171
202
|
try {
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
203
|
+
if (((_a = documents.update) == null ? void 0 : _a.definitions) && ((_b = documents.update) == null ? void 0 : _b.loc)) {
|
|
204
|
+
return documents.update;
|
|
205
|
+
}
|
|
206
|
+
return gql(documents.update);
|
|
207
|
+
} catch (error2) {
|
|
208
|
+
console.error("[AdminDataEditPage] Error parsing UPDATE mutation:", error2);
|
|
209
|
+
return null;
|
|
175
210
|
}
|
|
176
|
-
}, [
|
|
177
|
-
|
|
178
|
-
|
|
211
|
+
}, [documents]);
|
|
212
|
+
const DELETE_MUTATION = useMemo(() => {
|
|
213
|
+
var _a, _b;
|
|
214
|
+
if (!(documents == null ? void 0 : documents.delete)) return null;
|
|
179
215
|
try {
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
216
|
+
if (((_a = documents.delete) == null ? void 0 : _a.definitions) && ((_b = documents.delete) == null ? void 0 : _b.loc)) {
|
|
217
|
+
return documents.delete;
|
|
218
|
+
}
|
|
219
|
+
return gql(documents.delete);
|
|
220
|
+
} catch (error2) {
|
|
221
|
+
console.error("[AdminDataEditPage] Error parsing DELETE mutation:", error2);
|
|
222
|
+
return null;
|
|
183
223
|
}
|
|
184
|
-
}, [
|
|
185
|
-
|
|
224
|
+
}, [documents]);
|
|
225
|
+
const idVariableName = getModelIdVariableName(model.name);
|
|
226
|
+
const responseFieldName = getModelResponseFieldName(model.name);
|
|
227
|
+
const {
|
|
228
|
+
data,
|
|
229
|
+
loading,
|
|
230
|
+
error,
|
|
231
|
+
refetch
|
|
232
|
+
} = useQuery(QUERY || gql`
|
|
186
233
|
query PlaceholderQuery {
|
|
187
234
|
__typename
|
|
188
235
|
}
|
|
189
|
-
`,
|
|
190
|
-
{
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
)
|
|
196
|
-
|
|
236
|
+
`, {
|
|
237
|
+
variables: {
|
|
238
|
+
[idVariableName]: id
|
|
239
|
+
},
|
|
240
|
+
errorPolicy: "all",
|
|
241
|
+
skip: !QUERY || !id
|
|
242
|
+
});
|
|
243
|
+
const [updateMutation] = useMutation(UPDATE_MUTATION || gql`
|
|
197
244
|
mutation PlaceholderUpdate {
|
|
198
245
|
__typename
|
|
199
246
|
}
|
|
200
|
-
`
|
|
201
|
-
|
|
202
|
-
_ || y`
|
|
247
|
+
`);
|
|
248
|
+
const [deleteMutation] = useMutation(DELETE_MUTATION || gql`
|
|
203
249
|
mutation PlaceholderDelete {
|
|
204
250
|
__typename
|
|
205
251
|
}
|
|
206
|
-
`
|
|
207
|
-
)
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
252
|
+
`);
|
|
253
|
+
useEffect(() => {
|
|
254
|
+
if (submissionState.status === "error") {
|
|
255
|
+
const timer = setTimeout(() => {
|
|
256
|
+
setSubmissionState({
|
|
257
|
+
status: "idle"
|
|
258
|
+
});
|
|
212
259
|
}, 5e3);
|
|
213
|
-
return () => clearTimeout(
|
|
260
|
+
return () => clearTimeout(timer);
|
|
214
261
|
}
|
|
215
|
-
}, [
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
262
|
+
}, [submissionState.status]);
|
|
263
|
+
useEffect(() => {
|
|
264
|
+
if (deleteState.status === "error") {
|
|
265
|
+
const timer = setTimeout(() => {
|
|
266
|
+
setDeleteState({
|
|
267
|
+
status: "idle"
|
|
268
|
+
});
|
|
219
269
|
}, 5e3);
|
|
220
|
-
return () => clearTimeout(
|
|
270
|
+
return () => clearTimeout(timer);
|
|
221
271
|
}
|
|
222
|
-
}, [
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
lineNumber: 309,
|
|
227
|
-
columnNumber: 15
|
|
228
|
-
}, this),
|
|
229
|
-
/* @__PURE__ */ e("h2", { className: "mt-4 text-lg font-medium text-gray-900 dark:text-gray-100", children: "GraphQL Schema Error" }, void 0, !1, {
|
|
230
|
-
fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/admin-data/src/lib/pages/AdminDataEditPage.tsx",
|
|
231
|
-
lineNumber: 310,
|
|
232
|
-
columnNumber: 15
|
|
233
|
-
}, this),
|
|
234
|
-
/* @__PURE__ */ e("p", { className: "mt-2 text-sm text-gray-600 dark:text-gray-400", children: "Unable to load GraphQL documents for this model. Please ensure the API server is running and the GraphQL schema is up to date." }, void 0, !1, {
|
|
235
|
-
fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/admin-data/src/lib/pages/AdminDataEditPage.tsx",
|
|
236
|
-
lineNumber: 311,
|
|
237
|
-
columnNumber: 15
|
|
238
|
-
}, this),
|
|
239
|
-
/* @__PURE__ */ e("div", { className: "mt-6", children: /* @__PURE__ */ e(
|
|
240
|
-
x,
|
|
241
|
-
{
|
|
242
|
-
to: c,
|
|
243
|
-
className: "w-full flex justify-center py-2 px-4 border border-transparent rounded-md shadow-sm text-sm font-medium text-white bg-green-web hover:bg-green-web-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-green-web",
|
|
244
|
-
children: "Return to Data Browser"
|
|
245
|
-
},
|
|
246
|
-
void 0,
|
|
247
|
-
!1,
|
|
248
|
-
{
|
|
249
|
-
fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/admin-data/src/lib/pages/AdminDataEditPage.tsx",
|
|
250
|
-
lineNumber: 316,
|
|
251
|
-
columnNumber: 17
|
|
252
|
-
},
|
|
253
|
-
this
|
|
254
|
-
) }, void 0, !1, {
|
|
255
|
-
fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/admin-data/src/lib/pages/AdminDataEditPage.tsx",
|
|
256
|
-
lineNumber: 315,
|
|
257
|
-
columnNumber: 15
|
|
258
|
-
}, this)
|
|
259
|
-
] }, void 0, !0, {
|
|
260
|
-
fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/admin-data/src/lib/pages/AdminDataEditPage.tsx",
|
|
261
|
-
lineNumber: 308,
|
|
262
|
-
columnNumber: 13
|
|
263
|
-
}, this) }, void 0, !1, {
|
|
264
|
-
fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/admin-data/src/lib/pages/AdminDataEditPage.tsx",
|
|
265
|
-
lineNumber: 307,
|
|
266
|
-
columnNumber: 11
|
|
267
|
-
}, this) }, void 0, !1, {
|
|
268
|
-
fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/admin-data/src/lib/pages/AdminDataEditPage.tsx",
|
|
269
|
-
lineNumber: 306,
|
|
270
|
-
columnNumber: 9
|
|
271
|
-
}, this) }, void 0, !1, {
|
|
272
|
-
fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/admin-data/src/lib/pages/AdminDataEditPage.tsx",
|
|
272
|
+
}, [deleteState.status]);
|
|
273
|
+
if (!documents || !QUERY || !UPDATE_MUTATION || !DELETE_MUTATION) {
|
|
274
|
+
return /* @__PURE__ */ React.createElement("div", { className: "flex flex-col justify-center py-12", __self: this, __source: {
|
|
275
|
+
fileName: _jsxFileName,
|
|
273
276
|
lineNumber: 305,
|
|
274
277
|
columnNumber: 7
|
|
275
|
-
}, this
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
/* @__PURE__ */ e(p, { className: "mx-auto h-12 w-12 text-red-400" }, void 0, !1, {
|
|
279
|
-
fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/admin-data/src/lib/pages/AdminDataEditPage.tsx",
|
|
280
|
-
lineNumber: 337,
|
|
281
|
-
columnNumber: 15
|
|
282
|
-
}, this),
|
|
283
|
-
/* @__PURE__ */ e("h2", { className: "mt-4 text-lg font-medium text-gray-900 dark:text-gray-100", children: "Error Loading Data" }, void 0, !1, {
|
|
284
|
-
fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/admin-data/src/lib/pages/AdminDataEditPage.tsx",
|
|
285
|
-
lineNumber: 338,
|
|
286
|
-
columnNumber: 15
|
|
287
|
-
}, this),
|
|
288
|
-
/* @__PURE__ */ e("p", { className: "mt-2 text-sm text-gray-600 dark:text-gray-400", children: L.message }, void 0, !1, {
|
|
289
|
-
fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/admin-data/src/lib/pages/AdminDataEditPage.tsx",
|
|
290
|
-
lineNumber: 339,
|
|
291
|
-
columnNumber: 15
|
|
292
|
-
}, this),
|
|
293
|
-
/* @__PURE__ */ e("div", { className: "mt-6 space-y-3", children: [
|
|
294
|
-
/* @__PURE__ */ e(
|
|
295
|
-
"button",
|
|
296
|
-
{
|
|
297
|
-
onClick: () => $(),
|
|
298
|
-
className: "w-full flex justify-center py-2 px-4 border border-transparent rounded-md shadow-sm text-sm font-medium text-white bg-green-web hover:bg-green-web-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-green-web",
|
|
299
|
-
children: "Try Again"
|
|
300
|
-
},
|
|
301
|
-
void 0,
|
|
302
|
-
!1,
|
|
303
|
-
{
|
|
304
|
-
fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/admin-data/src/lib/pages/AdminDataEditPage.tsx",
|
|
305
|
-
lineNumber: 341,
|
|
306
|
-
columnNumber: 17
|
|
307
|
-
},
|
|
308
|
-
this
|
|
309
|
-
),
|
|
310
|
-
/* @__PURE__ */ e(
|
|
311
|
-
x,
|
|
312
|
-
{
|
|
313
|
-
to: `${c}/${I(s.pluralName)}`,
|
|
314
|
-
className: "w-full flex justify-center py-2 px-4 border border-gray-300 rounded-md shadow-sm text-sm font-medium text-gray-700 bg-white hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-green-web",
|
|
315
|
-
children: "Back to List"
|
|
316
|
-
},
|
|
317
|
-
void 0,
|
|
318
|
-
!1,
|
|
319
|
-
{
|
|
320
|
-
fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/admin-data/src/lib/pages/AdminDataEditPage.tsx",
|
|
321
|
-
lineNumber: 347,
|
|
322
|
-
columnNumber: 17
|
|
323
|
-
},
|
|
324
|
-
this
|
|
325
|
-
)
|
|
326
|
-
] }, void 0, !0, {
|
|
327
|
-
fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/admin-data/src/lib/pages/AdminDataEditPage.tsx",
|
|
328
|
-
lineNumber: 340,
|
|
329
|
-
columnNumber: 15
|
|
330
|
-
}, this)
|
|
331
|
-
] }, void 0, !0, {
|
|
332
|
-
fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/admin-data/src/lib/pages/AdminDataEditPage.tsx",
|
|
333
|
-
lineNumber: 336,
|
|
334
|
-
columnNumber: 13
|
|
335
|
-
}, this) }, void 0, !1, {
|
|
336
|
-
fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/admin-data/src/lib/pages/AdminDataEditPage.tsx",
|
|
337
|
-
lineNumber: 335,
|
|
338
|
-
columnNumber: 11
|
|
339
|
-
}, this) }, void 0, !1, {
|
|
340
|
-
fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/admin-data/src/lib/pages/AdminDataEditPage.tsx",
|
|
341
|
-
lineNumber: 334,
|
|
278
|
+
} }, /* @__PURE__ */ React.createElement("div", { className: "mt-8 mx-auto w-full max-w-2xl", __self: this, __source: {
|
|
279
|
+
fileName: _jsxFileName,
|
|
280
|
+
lineNumber: 306,
|
|
342
281
|
columnNumber: 9
|
|
343
|
-
},
|
|
344
|
-
fileName:
|
|
282
|
+
} }, /* @__PURE__ */ React.createElement("div", { className: "bg-white dark:bg-gray-800 py-8 px-4 shadow sm:rounded-lg sm:px-10", __self: this, __source: {
|
|
283
|
+
fileName: _jsxFileName,
|
|
284
|
+
lineNumber: 307,
|
|
285
|
+
columnNumber: 11
|
|
286
|
+
} }, /* @__PURE__ */ React.createElement("div", { className: "text-center", __self: this, __source: {
|
|
287
|
+
fileName: _jsxFileName,
|
|
288
|
+
lineNumber: 308,
|
|
289
|
+
columnNumber: 13
|
|
290
|
+
} }, /* @__PURE__ */ React.createElement(ExclamationCircleIcon, { className: "mx-auto h-12 w-12 text-red-400", __self: this, __source: {
|
|
291
|
+
fileName: _jsxFileName,
|
|
292
|
+
lineNumber: 309,
|
|
293
|
+
columnNumber: 15
|
|
294
|
+
} }), /* @__PURE__ */ React.createElement("h2", { className: "mt-4 text-lg font-medium text-gray-900 dark:text-gray-100", __self: this, __source: {
|
|
295
|
+
fileName: _jsxFileName,
|
|
296
|
+
lineNumber: 310,
|
|
297
|
+
columnNumber: 15
|
|
298
|
+
} }, "GraphQL Schema Error"), /* @__PURE__ */ React.createElement("p", { className: "mt-2 text-sm text-gray-600 dark:text-gray-400", __self: this, __source: {
|
|
299
|
+
fileName: _jsxFileName,
|
|
300
|
+
lineNumber: 311,
|
|
301
|
+
columnNumber: 15
|
|
302
|
+
} }, "Unable to load GraphQL documents for this model. Please ensure the API server is running and the GraphQL schema is up to date."), /* @__PURE__ */ React.createElement("div", { className: "mt-6", __self: this, __source: {
|
|
303
|
+
fileName: _jsxFileName,
|
|
304
|
+
lineNumber: 315,
|
|
305
|
+
columnNumber: 15
|
|
306
|
+
} }, /* @__PURE__ */ React.createElement(Link, { to: basePath, className: "w-full flex justify-center py-2 px-4 border border-transparent rounded-md shadow-sm text-sm font-medium text-white bg-green-web hover:bg-green-web-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-green-web", __self: this, __source: {
|
|
307
|
+
fileName: _jsxFileName,
|
|
308
|
+
lineNumber: 316,
|
|
309
|
+
columnNumber: 17
|
|
310
|
+
} }, "Return to Data Browser"))))));
|
|
311
|
+
}
|
|
312
|
+
if (error) {
|
|
313
|
+
return /* @__PURE__ */ React.createElement("div", { className: "flex flex-col justify-center py-12", __self: this, __source: {
|
|
314
|
+
fileName: _jsxFileName,
|
|
345
315
|
lineNumber: 333,
|
|
346
316
|
columnNumber: 7
|
|
347
|
-
}, this
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
/* @__PURE__ */ e("div", { className: "mx-auto h-12 w-12 border-4 border-green-web border-t-transparent rounded-full animate-spin" }, void 0, !1, {
|
|
351
|
-
fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/admin-data/src/lib/pages/AdminDataEditPage.tsx",
|
|
352
|
-
lineNumber: 368,
|
|
353
|
-
columnNumber: 15
|
|
354
|
-
}, this),
|
|
355
|
-
/* @__PURE__ */ e("h2", { className: "mt-4 text-lg font-medium text-gray-900 dark:text-gray-100", children: "Loading..." }, void 0, !1, {
|
|
356
|
-
fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/admin-data/src/lib/pages/AdminDataEditPage.tsx",
|
|
357
|
-
lineNumber: 369,
|
|
358
|
-
columnNumber: 15
|
|
359
|
-
}, this),
|
|
360
|
-
/* @__PURE__ */ e("p", { className: "mt-2 text-sm text-gray-600 dark:text-gray-400", children: [
|
|
361
|
-
"Loading ",
|
|
362
|
-
u(s.name),
|
|
363
|
-
" data..."
|
|
364
|
-
] }, void 0, !0, {
|
|
365
|
-
fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/admin-data/src/lib/pages/AdminDataEditPage.tsx",
|
|
366
|
-
lineNumber: 370,
|
|
367
|
-
columnNumber: 15
|
|
368
|
-
}, this)
|
|
369
|
-
] }, void 0, !0, {
|
|
370
|
-
fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/admin-data/src/lib/pages/AdminDataEditPage.tsx",
|
|
371
|
-
lineNumber: 367,
|
|
372
|
-
columnNumber: 13
|
|
373
|
-
}, this) }, void 0, !1, {
|
|
374
|
-
fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/admin-data/src/lib/pages/AdminDataEditPage.tsx",
|
|
375
|
-
lineNumber: 366,
|
|
376
|
-
columnNumber: 11
|
|
377
|
-
}, this) }, void 0, !1, {
|
|
378
|
-
fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/admin-data/src/lib/pages/AdminDataEditPage.tsx",
|
|
379
|
-
lineNumber: 365,
|
|
317
|
+
} }, /* @__PURE__ */ React.createElement("div", { className: "mt-8 mx-auto w-full max-w-md", __self: this, __source: {
|
|
318
|
+
fileName: _jsxFileName,
|
|
319
|
+
lineNumber: 334,
|
|
380
320
|
columnNumber: 9
|
|
381
|
-
},
|
|
382
|
-
fileName:
|
|
321
|
+
} }, /* @__PURE__ */ React.createElement("div", { className: "bg-white dark:bg-gray-800 py-8 px-4 shadow sm:rounded-lg sm:px-10", __self: this, __source: {
|
|
322
|
+
fileName: _jsxFileName,
|
|
323
|
+
lineNumber: 335,
|
|
324
|
+
columnNumber: 11
|
|
325
|
+
} }, /* @__PURE__ */ React.createElement("div", { className: "text-center", __self: this, __source: {
|
|
326
|
+
fileName: _jsxFileName,
|
|
327
|
+
lineNumber: 336,
|
|
328
|
+
columnNumber: 13
|
|
329
|
+
} }, /* @__PURE__ */ React.createElement(ExclamationCircleIcon, { className: "mx-auto h-12 w-12 text-red-400", __self: this, __source: {
|
|
330
|
+
fileName: _jsxFileName,
|
|
331
|
+
lineNumber: 337,
|
|
332
|
+
columnNumber: 15
|
|
333
|
+
} }), /* @__PURE__ */ React.createElement("h2", { className: "mt-4 text-lg font-medium text-gray-900 dark:text-gray-100", __self: this, __source: {
|
|
334
|
+
fileName: _jsxFileName,
|
|
335
|
+
lineNumber: 338,
|
|
336
|
+
columnNumber: 15
|
|
337
|
+
} }, "Error Loading Data"), /* @__PURE__ */ React.createElement("p", { className: "mt-2 text-sm text-gray-600 dark:text-gray-400", __self: this, __source: {
|
|
338
|
+
fileName: _jsxFileName,
|
|
339
|
+
lineNumber: 339,
|
|
340
|
+
columnNumber: 15
|
|
341
|
+
} }, error.message), /* @__PURE__ */ React.createElement("div", { className: "mt-6 space-y-3", __self: this, __source: {
|
|
342
|
+
fileName: _jsxFileName,
|
|
343
|
+
lineNumber: 340,
|
|
344
|
+
columnNumber: 15
|
|
345
|
+
} }, /* @__PURE__ */ React.createElement("button", { onClick: () => refetch(), className: "w-full flex justify-center py-2 px-4 border border-transparent rounded-md shadow-sm text-sm font-medium text-white bg-green-web hover:bg-green-web-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-green-web", __self: this, __source: {
|
|
346
|
+
fileName: _jsxFileName,
|
|
347
|
+
lineNumber: 341,
|
|
348
|
+
columnNumber: 17
|
|
349
|
+
} }, "Try Again"), /* @__PURE__ */ React.createElement(Link, { to: `${basePath}/${toKebabCase(model.pluralName)}`, className: "w-full flex justify-center py-2 px-4 border border-gray-300 rounded-md shadow-sm text-sm font-medium text-gray-700 bg-white hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-green-web", __self: this, __source: {
|
|
350
|
+
fileName: _jsxFileName,
|
|
351
|
+
lineNumber: 347,
|
|
352
|
+
columnNumber: 17
|
|
353
|
+
} }, "Back to List"))))));
|
|
354
|
+
}
|
|
355
|
+
if (loading) {
|
|
356
|
+
return /* @__PURE__ */ React.createElement("div", { className: "flex flex-col justify-center py-12", __self: this, __source: {
|
|
357
|
+
fileName: _jsxFileName,
|
|
383
358
|
lineNumber: 364,
|
|
384
359
|
columnNumber: 7
|
|
385
|
-
}, this
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
return /* @__PURE__ */ e("div", { className: "flex flex-col justify-center py-12", children: /* @__PURE__ */ e("div", { className: "mt-8 mx-auto w-full max-w-md", children: /* @__PURE__ */ e("div", { className: "bg-white dark:bg-gray-800 py-8 px-4 shadow sm:rounded-lg sm:px-10", children: /* @__PURE__ */ e("div", { className: "text-center", children: [
|
|
389
|
-
/* @__PURE__ */ e(p, { className: "mx-auto h-12 w-12 text-yellow-400" }, void 0, !1, {
|
|
390
|
-
fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/admin-data/src/lib/pages/AdminDataEditPage.tsx",
|
|
391
|
-
lineNumber: 389,
|
|
392
|
-
columnNumber: 15
|
|
393
|
-
}, this),
|
|
394
|
-
/* @__PURE__ */ e("h2", { className: "mt-4 text-lg font-medium text-gray-900 dark:text-gray-100", children: "Not Found" }, void 0, !1, {
|
|
395
|
-
fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/admin-data/src/lib/pages/AdminDataEditPage.tsx",
|
|
396
|
-
lineNumber: 390,
|
|
397
|
-
columnNumber: 15
|
|
398
|
-
}, this),
|
|
399
|
-
/* @__PURE__ */ e("p", { className: "mt-2 text-sm text-gray-600 dark:text-gray-400", children: [
|
|
400
|
-
"The ",
|
|
401
|
-
u(s.name),
|
|
402
|
-
" you're looking for doesn't exist or has been deleted."
|
|
403
|
-
] }, void 0, !0, {
|
|
404
|
-
fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/admin-data/src/lib/pages/AdminDataEditPage.tsx",
|
|
405
|
-
lineNumber: 391,
|
|
406
|
-
columnNumber: 15
|
|
407
|
-
}, this),
|
|
408
|
-
/* @__PURE__ */ e("div", { className: "mt-6", children: /* @__PURE__ */ e(
|
|
409
|
-
x,
|
|
410
|
-
{
|
|
411
|
-
to: `${c}/${I(s.pluralName)}`,
|
|
412
|
-
className: "w-full flex justify-center py-2 px-4 border border-transparent rounded-md shadow-sm text-sm font-medium text-white bg-green-web hover:bg-green-web-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-green-web",
|
|
413
|
-
children: "Back to List"
|
|
414
|
-
},
|
|
415
|
-
void 0,
|
|
416
|
-
!1,
|
|
417
|
-
{
|
|
418
|
-
fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/admin-data/src/lib/pages/AdminDataEditPage.tsx",
|
|
419
|
-
lineNumber: 396,
|
|
420
|
-
columnNumber: 17
|
|
421
|
-
},
|
|
422
|
-
this
|
|
423
|
-
) }, void 0, !1, {
|
|
424
|
-
fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/admin-data/src/lib/pages/AdminDataEditPage.tsx",
|
|
425
|
-
lineNumber: 395,
|
|
426
|
-
columnNumber: 15
|
|
427
|
-
}, this)
|
|
428
|
-
] }, void 0, !0, {
|
|
429
|
-
fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/admin-data/src/lib/pages/AdminDataEditPage.tsx",
|
|
430
|
-
lineNumber: 388,
|
|
431
|
-
columnNumber: 13
|
|
432
|
-
}, this) }, void 0, !1, {
|
|
433
|
-
fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/admin-data/src/lib/pages/AdminDataEditPage.tsx",
|
|
434
|
-
lineNumber: 387,
|
|
435
|
-
columnNumber: 11
|
|
436
|
-
}, this) }, void 0, !1, {
|
|
437
|
-
fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/admin-data/src/lib/pages/AdminDataEditPage.tsx",
|
|
438
|
-
lineNumber: 386,
|
|
360
|
+
} }, /* @__PURE__ */ React.createElement("div", { className: "mt-8 mx-auto w-full max-w-md", __self: this, __source: {
|
|
361
|
+
fileName: _jsxFileName,
|
|
362
|
+
lineNumber: 365,
|
|
439
363
|
columnNumber: 9
|
|
440
|
-
},
|
|
441
|
-
fileName:
|
|
364
|
+
} }, /* @__PURE__ */ React.createElement("div", { className: "bg-white dark:bg-gray-800 py-8 px-4 shadow sm:rounded-lg sm:px-10", __self: this, __source: {
|
|
365
|
+
fileName: _jsxFileName,
|
|
366
|
+
lineNumber: 366,
|
|
367
|
+
columnNumber: 11
|
|
368
|
+
} }, /* @__PURE__ */ React.createElement("div", { className: "text-center", __self: this, __source: {
|
|
369
|
+
fileName: _jsxFileName,
|
|
370
|
+
lineNumber: 367,
|
|
371
|
+
columnNumber: 13
|
|
372
|
+
} }, /* @__PURE__ */ React.createElement("div", { className: "mx-auto h-12 w-12 border-4 border-green-web border-t-transparent rounded-full animate-spin", __self: this, __source: {
|
|
373
|
+
fileName: _jsxFileName,
|
|
374
|
+
lineNumber: 368,
|
|
375
|
+
columnNumber: 15
|
|
376
|
+
} }), /* @__PURE__ */ React.createElement("h2", { className: "mt-4 text-lg font-medium text-gray-900 dark:text-gray-100", __self: this, __source: {
|
|
377
|
+
fileName: _jsxFileName,
|
|
378
|
+
lineNumber: 369,
|
|
379
|
+
columnNumber: 15
|
|
380
|
+
} }, "Loading..."), /* @__PURE__ */ React.createElement("p", { className: "mt-2 text-sm text-gray-600 dark:text-gray-400", __self: this, __source: {
|
|
381
|
+
fileName: _jsxFileName,
|
|
382
|
+
lineNumber: 370,
|
|
383
|
+
columnNumber: 15
|
|
384
|
+
} }, "Loading ", toReadableText(model.name), " data...")))));
|
|
385
|
+
}
|
|
386
|
+
const item = data == null ? void 0 : data[responseFieldName];
|
|
387
|
+
if (!item) {
|
|
388
|
+
return /* @__PURE__ */ React.createElement("div", { className: "flex flex-col justify-center py-12", __self: this, __source: {
|
|
389
|
+
fileName: _jsxFileName,
|
|
442
390
|
lineNumber: 385,
|
|
443
391
|
columnNumber: 7
|
|
444
|
-
}, this
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
392
|
+
} }, /* @__PURE__ */ React.createElement("div", { className: "mt-8 mx-auto w-full max-w-md", __self: this, __source: {
|
|
393
|
+
fileName: _jsxFileName,
|
|
394
|
+
lineNumber: 386,
|
|
395
|
+
columnNumber: 9
|
|
396
|
+
} }, /* @__PURE__ */ React.createElement("div", { className: "bg-white dark:bg-gray-800 py-8 px-4 shadow sm:rounded-lg sm:px-10", __self: this, __source: {
|
|
397
|
+
fileName: _jsxFileName,
|
|
398
|
+
lineNumber: 387,
|
|
399
|
+
columnNumber: 11
|
|
400
|
+
} }, /* @__PURE__ */ React.createElement("div", { className: "text-center", __self: this, __source: {
|
|
401
|
+
fileName: _jsxFileName,
|
|
402
|
+
lineNumber: 388,
|
|
403
|
+
columnNumber: 13
|
|
404
|
+
} }, /* @__PURE__ */ React.createElement(ExclamationCircleIcon, { className: "mx-auto h-12 w-12 text-yellow-400", __self: this, __source: {
|
|
405
|
+
fileName: _jsxFileName,
|
|
406
|
+
lineNumber: 389,
|
|
407
|
+
columnNumber: 15
|
|
408
|
+
} }), /* @__PURE__ */ React.createElement("h2", { className: "mt-4 text-lg font-medium text-gray-900 dark:text-gray-100", __self: this, __source: {
|
|
409
|
+
fileName: _jsxFileName,
|
|
410
|
+
lineNumber: 390,
|
|
411
|
+
columnNumber: 15
|
|
412
|
+
} }, "Not Found"), /* @__PURE__ */ React.createElement("p", { className: "mt-2 text-sm text-gray-600 dark:text-gray-400", __self: this, __source: {
|
|
413
|
+
fileName: _jsxFileName,
|
|
414
|
+
lineNumber: 391,
|
|
415
|
+
columnNumber: 15
|
|
416
|
+
} }, "The ", toReadableText(model.name), " you're looking for doesn't exist or has been deleted."), /* @__PURE__ */ React.createElement("div", { className: "mt-6", __self: this, __source: {
|
|
417
|
+
fileName: _jsxFileName,
|
|
418
|
+
lineNumber: 395,
|
|
419
|
+
columnNumber: 15
|
|
420
|
+
} }, /* @__PURE__ */ React.createElement(Link, { to: `${basePath}/${toKebabCase(model.pluralName)}`, className: "w-full flex justify-center py-2 px-4 border border-transparent rounded-md shadow-sm text-sm font-medium text-white bg-green-web hover:bg-green-web-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-green-web", __self: this, __source: {
|
|
421
|
+
fileName: _jsxFileName,
|
|
422
|
+
lineNumber: 396,
|
|
423
|
+
columnNumber: 17
|
|
424
|
+
} }, "Back to List"))))));
|
|
425
|
+
}
|
|
426
|
+
const formFields = buildFormFields(sdk, model, "update");
|
|
427
|
+
const initialValues = {};
|
|
428
|
+
if (item) {
|
|
429
|
+
const editableFields = model.fields.filter((field) => {
|
|
430
|
+
if (field.isId && false) ;
|
|
431
|
+
if (field.isReadOnly || field.isGenerated) return false;
|
|
432
|
+
if (field.isUpdatedAt || field.name === "createdAt") return false;
|
|
433
|
+
if (field.relationName && field.isList) return false;
|
|
434
|
+
return true;
|
|
435
|
+
});
|
|
436
|
+
editableFields.forEach((field) => {
|
|
437
|
+
var _a;
|
|
438
|
+
let value = item[field.name];
|
|
439
|
+
if (field.relationName && !field.isList) {
|
|
440
|
+
const relationFieldName = ((_a = field.relationFromFields) == null ? void 0 : _a[0]) || field.name;
|
|
441
|
+
value = item[relationFieldName];
|
|
442
|
+
if (value && typeof value === "object") {
|
|
443
|
+
value = value.id || "";
|
|
444
|
+
}
|
|
445
|
+
initialValues[relationFieldName] = value || "";
|
|
453
446
|
} else {
|
|
454
|
-
if (
|
|
455
|
-
if (
|
|
447
|
+
if (field.type.toLowerCase() === "datetime" || field.type.toLowerCase() === "date") {
|
|
448
|
+
if (value !== null && value !== void 0 && value !== "") {
|
|
456
449
|
try {
|
|
457
|
-
const
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
450
|
+
const dateValue = value instanceof Date ? value : new Date(value);
|
|
451
|
+
if (field.type.toLowerCase() === "date") {
|
|
452
|
+
value = dateValue.toISOString().split("T")[0];
|
|
453
|
+
} else {
|
|
454
|
+
const isoString = dateValue.toISOString();
|
|
455
|
+
value = isoString.substring(0, 16);
|
|
456
|
+
}
|
|
457
|
+
} catch (e) {
|
|
458
|
+
console.warn(`Failed to convert date value for field ${field.name}:`, e);
|
|
459
|
+
value = "";
|
|
461
460
|
}
|
|
462
|
-
else
|
|
463
|
-
|
|
464
|
-
|
|
461
|
+
} else {
|
|
462
|
+
value = "";
|
|
463
|
+
}
|
|
464
|
+
}
|
|
465
|
+
if (value === null && field.type.toLowerCase() !== "boolean") {
|
|
466
|
+
value = "";
|
|
467
|
+
}
|
|
468
|
+
if (field.type.toLowerCase() === "boolean") {
|
|
469
|
+
value = Boolean(value);
|
|
470
|
+
}
|
|
471
|
+
if (value !== null && typeof value === "object") {
|
|
472
|
+
console.warn(`Field ${field.name} has object value, converting to string:`, value);
|
|
473
|
+
if (typeof value === "object" && "id" in value) {
|
|
474
|
+
value = value.id;
|
|
475
|
+
} else {
|
|
476
|
+
value = "";
|
|
477
|
+
}
|
|
478
|
+
}
|
|
479
|
+
initialValues[field.name] = value;
|
|
465
480
|
}
|
|
466
481
|
});
|
|
467
|
-
for (const [
|
|
468
|
-
if (
|
|
469
|
-
console.warn(`[AdminDataEditPage] Found undefined value for field ${
|
|
482
|
+
for (const [key, value] of Object.entries(initialValues)) {
|
|
483
|
+
if (value === void 0) {
|
|
484
|
+
console.warn(`[AdminDataEditPage] Found undefined value for field ${key}, converting to empty string`);
|
|
485
|
+
initialValues[key] = "";
|
|
486
|
+
continue;
|
|
487
|
+
}
|
|
488
|
+
if (value === null) {
|
|
470
489
|
continue;
|
|
471
490
|
}
|
|
472
|
-
if (
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
491
|
+
if (typeof value !== "object") {
|
|
492
|
+
continue;
|
|
493
|
+
}
|
|
494
|
+
console.warn(`[AdminDataEditPage] Found non-primitive value for field ${key}, converting:`, value);
|
|
495
|
+
if ("id" in value && typeof value.id === "string") {
|
|
496
|
+
initialValues[key] = value.id;
|
|
497
|
+
} else if (value instanceof Date) {
|
|
498
|
+
const field = model.fields.find((f) => f.name === key);
|
|
499
|
+
initialValues[key] = (field == null ? void 0 : field.type.toLowerCase()) === "date" ? value.toISOString().split("T")[0] : value.toISOString();
|
|
500
|
+
} else {
|
|
501
|
+
initialValues[key] = "";
|
|
502
|
+
}
|
|
480
503
|
}
|
|
481
|
-
console.log("[AdminDataEditPage] Final initialValues:",
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
504
|
+
console.log("[AdminDataEditPage] Final initialValues:", initialValues);
|
|
505
|
+
console.log("[AdminDataEditPage] Value types:", Object.entries(initialValues).map(([key, val]) => ({
|
|
506
|
+
key,
|
|
507
|
+
type: typeof val,
|
|
508
|
+
isDate: val instanceof Date,
|
|
509
|
+
value: val
|
|
486
510
|
})));
|
|
487
511
|
}
|
|
488
|
-
const
|
|
512
|
+
const handleSubmit = async (formData) => {
|
|
489
513
|
try {
|
|
490
|
-
|
|
491
|
-
|
|
514
|
+
setSubmissionState({
|
|
515
|
+
status: "loading"
|
|
516
|
+
});
|
|
517
|
+
const cleanedInput = cleanFormInput(formData, model);
|
|
518
|
+
const result = await updateMutation({
|
|
492
519
|
variables: {
|
|
493
|
-
input:
|
|
494
|
-
[
|
|
520
|
+
input: cleanedInput,
|
|
521
|
+
[idVariableName]: id
|
|
495
522
|
}
|
|
496
523
|
});
|
|
497
|
-
if (
|
|
498
|
-
console.error("GraphQL errors:",
|
|
524
|
+
if (result.errors) {
|
|
525
|
+
console.error("GraphQL errors:", result.errors);
|
|
526
|
+
setSubmissionState({
|
|
499
527
|
status: "error",
|
|
500
|
-
message:
|
|
528
|
+
message: result.errors.map((err) => err.message).join(", ")
|
|
501
529
|
});
|
|
502
530
|
return;
|
|
503
531
|
}
|
|
504
|
-
|
|
532
|
+
setSubmissionState({
|
|
505
533
|
status: "success",
|
|
506
|
-
message: `${
|
|
507
|
-
})
|
|
508
|
-
|
|
509
|
-
|
|
534
|
+
message: `${toReadableText(model.name)} updated successfully!`
|
|
535
|
+
});
|
|
536
|
+
await refetch();
|
|
537
|
+
} catch (error2) {
|
|
538
|
+
console.error("Error updating record:", error2);
|
|
539
|
+
setSubmissionState({
|
|
510
540
|
status: "error",
|
|
511
|
-
message:
|
|
541
|
+
message: error2 instanceof Error ? error2.message : "An unexpected error occurred"
|
|
512
542
|
});
|
|
513
543
|
}
|
|
514
|
-
}
|
|
544
|
+
};
|
|
545
|
+
const handleDelete = async () => {
|
|
515
546
|
try {
|
|
516
|
-
|
|
517
|
-
|
|
547
|
+
setDeleteState({
|
|
548
|
+
status: "loading"
|
|
549
|
+
});
|
|
550
|
+
const result = await deleteMutation({
|
|
518
551
|
variables: {
|
|
519
|
-
[
|
|
552
|
+
[idVariableName]: id
|
|
520
553
|
}
|
|
521
554
|
});
|
|
522
|
-
if (
|
|
523
|
-
console.error("GraphQL errors:",
|
|
555
|
+
if (result.errors) {
|
|
556
|
+
console.error("GraphQL errors:", result.errors);
|
|
557
|
+
setDeleteState({
|
|
524
558
|
status: "error",
|
|
525
|
-
message:
|
|
559
|
+
message: result.errors.map((err) => err.message).join(", ")
|
|
526
560
|
});
|
|
527
561
|
return;
|
|
528
562
|
}
|
|
529
|
-
|
|
563
|
+
setDeleteState({
|
|
530
564
|
status: "success",
|
|
531
|
-
message: `${
|
|
532
|
-
})
|
|
533
|
-
|
|
565
|
+
message: `${toReadableText(model.name)} deleted successfully!`
|
|
566
|
+
});
|
|
567
|
+
setTimeout(() => {
|
|
568
|
+
navigate(`${basePath}/${toKebabCase(model.pluralName)}`);
|
|
534
569
|
}, 1500);
|
|
535
|
-
} catch (
|
|
536
|
-
console.error("Error deleting record:",
|
|
570
|
+
} catch (error2) {
|
|
571
|
+
console.error("Error deleting record:", error2);
|
|
572
|
+
setDeleteState({
|
|
537
573
|
status: "error",
|
|
538
|
-
message:
|
|
574
|
+
message: error2 instanceof Error ? error2.message : "An unexpected error occurred"
|
|
539
575
|
});
|
|
540
576
|
}
|
|
541
577
|
};
|
|
542
|
-
return /* @__PURE__ */
|
|
543
|
-
|
|
544
|
-
/* @__PURE__ */ e("nav", { className: "flex mb-6", "aria-label": "Breadcrumb", children: /* @__PURE__ */ e("ol", { className: "flex items-center space-x-4", children: [
|
|
545
|
-
/* @__PURE__ */ e("li", { children: /* @__PURE__ */ e(x, { to: c, className: "text-gray-400 dark:text-gray-500 hover:text-gray-500 dark:hover:text-gray-400", children: "Data Browser" }, void 0, !1, {
|
|
546
|
-
fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/admin-data/src/lib/pages/AdminDataEditPage.tsx",
|
|
547
|
-
lineNumber: 620,
|
|
548
|
-
columnNumber: 17
|
|
549
|
-
}, this) }, void 0, !1, {
|
|
550
|
-
fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/admin-data/src/lib/pages/AdminDataEditPage.tsx",
|
|
551
|
-
lineNumber: 619,
|
|
552
|
-
columnNumber: 15
|
|
553
|
-
}, this),
|
|
554
|
-
/* @__PURE__ */ e("li", { children: /* @__PURE__ */ e("div", { className: "flex items-center", children: [
|
|
555
|
-
/* @__PURE__ */ e(
|
|
556
|
-
"svg",
|
|
557
|
-
{
|
|
558
|
-
className: "flex-shrink-0 h-5 w-5 text-gray-300 dark:text-gray-600",
|
|
559
|
-
fill: "currentColor",
|
|
560
|
-
viewBox: "0 0 20 20",
|
|
561
|
-
children: /* @__PURE__ */ e(
|
|
562
|
-
"path",
|
|
563
|
-
{
|
|
564
|
-
fillRule: "evenodd",
|
|
565
|
-
d: "M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 111.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z",
|
|
566
|
-
clipRule: "evenodd"
|
|
567
|
-
},
|
|
568
|
-
void 0,
|
|
569
|
-
!1,
|
|
570
|
-
{
|
|
571
|
-
fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/admin-data/src/lib/pages/AdminDataEditPage.tsx",
|
|
572
|
-
lineNumber: 631,
|
|
573
|
-
columnNumber: 21
|
|
574
|
-
},
|
|
575
|
-
this
|
|
576
|
-
)
|
|
577
|
-
},
|
|
578
|
-
void 0,
|
|
579
|
-
!1,
|
|
580
|
-
{
|
|
581
|
-
fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/admin-data/src/lib/pages/AdminDataEditPage.tsx",
|
|
582
|
-
lineNumber: 626,
|
|
583
|
-
columnNumber: 19
|
|
584
|
-
},
|
|
585
|
-
this
|
|
586
|
-
),
|
|
587
|
-
/* @__PURE__ */ e(
|
|
588
|
-
x,
|
|
589
|
-
{
|
|
590
|
-
to: `${c}/${I(s.pluralName)}`,
|
|
591
|
-
className: "ml-4 text-gray-400 dark:text-gray-500 hover:text-gray-500 dark:hover:text-gray-400",
|
|
592
|
-
children: u(s.pluralName)
|
|
593
|
-
},
|
|
594
|
-
void 0,
|
|
595
|
-
!1,
|
|
596
|
-
{
|
|
597
|
-
fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/admin-data/src/lib/pages/AdminDataEditPage.tsx",
|
|
598
|
-
lineNumber: 637,
|
|
599
|
-
columnNumber: 19
|
|
600
|
-
},
|
|
601
|
-
this
|
|
602
|
-
)
|
|
603
|
-
] }, void 0, !0, {
|
|
604
|
-
fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/admin-data/src/lib/pages/AdminDataEditPage.tsx",
|
|
605
|
-
lineNumber: 625,
|
|
606
|
-
columnNumber: 17
|
|
607
|
-
}, this) }, void 0, !1, {
|
|
608
|
-
fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/admin-data/src/lib/pages/AdminDataEditPage.tsx",
|
|
609
|
-
lineNumber: 624,
|
|
610
|
-
columnNumber: 15
|
|
611
|
-
}, this),
|
|
612
|
-
/* @__PURE__ */ e("li", { children: /* @__PURE__ */ e("div", { className: "flex items-center", children: [
|
|
613
|
-
/* @__PURE__ */ e(
|
|
614
|
-
"svg",
|
|
615
|
-
{
|
|
616
|
-
className: "flex-shrink-0 h-5 w-5 text-gray-300 dark:text-gray-600",
|
|
617
|
-
fill: "currentColor",
|
|
618
|
-
viewBox: "0 0 20 20",
|
|
619
|
-
children: /* @__PURE__ */ e(
|
|
620
|
-
"path",
|
|
621
|
-
{
|
|
622
|
-
fillRule: "evenodd",
|
|
623
|
-
d: "M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 111.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z",
|
|
624
|
-
clipRule: "evenodd"
|
|
625
|
-
},
|
|
626
|
-
void 0,
|
|
627
|
-
!1,
|
|
628
|
-
{
|
|
629
|
-
fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/admin-data/src/lib/pages/AdminDataEditPage.tsx",
|
|
630
|
-
lineNumber: 652,
|
|
631
|
-
columnNumber: 21
|
|
632
|
-
},
|
|
633
|
-
this
|
|
634
|
-
)
|
|
635
|
-
},
|
|
636
|
-
void 0,
|
|
637
|
-
!1,
|
|
638
|
-
{
|
|
639
|
-
fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/admin-data/src/lib/pages/AdminDataEditPage.tsx",
|
|
640
|
-
lineNumber: 647,
|
|
641
|
-
columnNumber: 19
|
|
642
|
-
},
|
|
643
|
-
this
|
|
644
|
-
),
|
|
645
|
-
/* @__PURE__ */ e("span", { className: "ml-4 text-gray-500 dark:text-gray-400", children: "Edit" }, void 0, !1, {
|
|
646
|
-
fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/admin-data/src/lib/pages/AdminDataEditPage.tsx",
|
|
647
|
-
lineNumber: 658,
|
|
648
|
-
columnNumber: 19
|
|
649
|
-
}, this)
|
|
650
|
-
] }, void 0, !0, {
|
|
651
|
-
fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/admin-data/src/lib/pages/AdminDataEditPage.tsx",
|
|
652
|
-
lineNumber: 646,
|
|
653
|
-
columnNumber: 17
|
|
654
|
-
}, this) }, void 0, !1, {
|
|
655
|
-
fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/admin-data/src/lib/pages/AdminDataEditPage.tsx",
|
|
656
|
-
lineNumber: 645,
|
|
657
|
-
columnNumber: 15
|
|
658
|
-
}, this)
|
|
659
|
-
] }, void 0, !0, {
|
|
660
|
-
fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/admin-data/src/lib/pages/AdminDataEditPage.tsx",
|
|
661
|
-
lineNumber: 618,
|
|
662
|
-
columnNumber: 13
|
|
663
|
-
}, this) }, void 0, !1, {
|
|
664
|
-
fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/admin-data/src/lib/pages/AdminDataEditPage.tsx",
|
|
665
|
-
lineNumber: 617,
|
|
666
|
-
columnNumber: 11
|
|
667
|
-
}, this),
|
|
668
|
-
/* @__PURE__ */ e("div", { className: "flex items-center justify-between", children: [
|
|
669
|
-
/* @__PURE__ */ e("h1", { className: "text-3xl font-bold text-gray-900 dark:text-gray-100", children: [
|
|
670
|
-
"Edit ",
|
|
671
|
-
u(s.name)
|
|
672
|
-
] }, void 0, !0, {
|
|
673
|
-
fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/admin-data/src/lib/pages/AdminDataEditPage.tsx",
|
|
674
|
-
lineNumber: 664,
|
|
675
|
-
columnNumber: 13
|
|
676
|
-
}, this),
|
|
677
|
-
/* @__PURE__ */ e(
|
|
678
|
-
"button",
|
|
679
|
-
{
|
|
680
|
-
onClick: () => E(!0),
|
|
681
|
-
disabled: r.status === "loading",
|
|
682
|
-
className: "inline-flex items-center px-3 py-2 border border-red-300 shadow-sm text-sm leading-4 font-medium rounded-md text-red-700 bg-white hover:bg-red-50 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-red-500 disabled:opacity-50 disabled:cursor-not-allowed",
|
|
683
|
-
children: [
|
|
684
|
-
/* @__PURE__ */ e(J, { className: "h-4 w-4 mr-2" }, void 0, !1, {
|
|
685
|
-
fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/admin-data/src/lib/pages/AdminDataEditPage.tsx",
|
|
686
|
-
lineNumber: 670,
|
|
687
|
-
columnNumber: 15
|
|
688
|
-
}, this),
|
|
689
|
-
"Delete"
|
|
690
|
-
]
|
|
691
|
-
},
|
|
692
|
-
void 0,
|
|
693
|
-
!0,
|
|
694
|
-
{
|
|
695
|
-
fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/admin-data/src/lib/pages/AdminDataEditPage.tsx",
|
|
696
|
-
lineNumber: 665,
|
|
697
|
-
columnNumber: 13
|
|
698
|
-
},
|
|
699
|
-
this
|
|
700
|
-
)
|
|
701
|
-
] }, void 0, !0, {
|
|
702
|
-
fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/admin-data/src/lib/pages/AdminDataEditPage.tsx",
|
|
703
|
-
lineNumber: 663,
|
|
704
|
-
columnNumber: 11
|
|
705
|
-
}, this)
|
|
706
|
-
] }, void 0, !0, {
|
|
707
|
-
fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/admin-data/src/lib/pages/AdminDataEditPage.tsx",
|
|
708
|
-
lineNumber: 616,
|
|
709
|
-
columnNumber: 7
|
|
710
|
-
}, this),
|
|
711
|
-
D && /* @__PURE__ */ e("div", { className: "fixed inset-0 bg-gray-600 dark:bg-gray-900 bg-opacity-50 dark:bg-opacity-75 overflow-y-auto h-full w-full z-50 flex items-center justify-center", children: /* @__PURE__ */ e("div", { className: "bg-white dark:bg-gray-800 p-6 rounded-lg shadow-xl max-w-md w-full mx-4", children: [
|
|
712
|
-
/* @__PURE__ */ e("div", { className: "flex items-center", children: [
|
|
713
|
-
/* @__PURE__ */ e("div", { className: "flex-shrink-0", children: /* @__PURE__ */ e(p, { className: "h-6 w-6 text-red-600" }, void 0, !1, {
|
|
714
|
-
fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/admin-data/src/lib/pages/AdminDataEditPage.tsx",
|
|
715
|
-
lineNumber: 682,
|
|
716
|
-
columnNumber: 19
|
|
717
|
-
}, this) }, void 0, !1, {
|
|
718
|
-
fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/admin-data/src/lib/pages/AdminDataEditPage.tsx",
|
|
719
|
-
lineNumber: 681,
|
|
720
|
-
columnNumber: 17
|
|
721
|
-
}, this),
|
|
722
|
-
/* @__PURE__ */ e("div", { className: "ml-3", children: [
|
|
723
|
-
/* @__PURE__ */ e("h3", { className: "text-lg font-medium text-gray-900 dark:text-gray-100", children: [
|
|
724
|
-
"Delete ",
|
|
725
|
-
u(s.name)
|
|
726
|
-
] }, void 0, !0, {
|
|
727
|
-
fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/admin-data/src/lib/pages/AdminDataEditPage.tsx",
|
|
728
|
-
lineNumber: 685,
|
|
729
|
-
columnNumber: 19
|
|
730
|
-
}, this),
|
|
731
|
-
/* @__PURE__ */ e("div", { className: "mt-2", children: /* @__PURE__ */ e("p", { className: "text-sm text-gray-500 dark:text-gray-400", children: [
|
|
732
|
-
"Are you sure you want to delete this",
|
|
733
|
-
" ",
|
|
734
|
-
u(s.name).toLowerCase(),
|
|
735
|
-
"? This action cannot be undone."
|
|
736
|
-
] }, void 0, !0, {
|
|
737
|
-
fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/admin-data/src/lib/pages/AdminDataEditPage.tsx",
|
|
738
|
-
lineNumber: 689,
|
|
739
|
-
columnNumber: 21
|
|
740
|
-
}, this) }, void 0, !1, {
|
|
741
|
-
fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/admin-data/src/lib/pages/AdminDataEditPage.tsx",
|
|
742
|
-
lineNumber: 688,
|
|
743
|
-
columnNumber: 19
|
|
744
|
-
}, this)
|
|
745
|
-
] }, void 0, !0, {
|
|
746
|
-
fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/admin-data/src/lib/pages/AdminDataEditPage.tsx",
|
|
747
|
-
lineNumber: 684,
|
|
748
|
-
columnNumber: 17
|
|
749
|
-
}, this)
|
|
750
|
-
] }, void 0, !0, {
|
|
751
|
-
fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/admin-data/src/lib/pages/AdminDataEditPage.tsx",
|
|
752
|
-
lineNumber: 680,
|
|
753
|
-
columnNumber: 15
|
|
754
|
-
}, this),
|
|
755
|
-
/* @__PURE__ */ e("div", { className: "mt-5 sm:mt-4 sm:flex sm:flex-row-reverse", children: [
|
|
756
|
-
/* @__PURE__ */ e(
|
|
757
|
-
"button",
|
|
758
|
-
{
|
|
759
|
-
onClick: G,
|
|
760
|
-
disabled: r.status === "loading",
|
|
761
|
-
className: "w-full inline-flex justify-center rounded-md border border-transparent shadow-sm px-4 py-2 bg-red-600 text-base font-medium text-white hover:bg-red-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-red-500 sm:ml-3 sm:w-auto sm:text-sm disabled:opacity-50 disabled:cursor-not-allowed",
|
|
762
|
-
children: r.status === "loading" ? "Deleting..." : "Delete"
|
|
763
|
-
},
|
|
764
|
-
void 0,
|
|
765
|
-
!1,
|
|
766
|
-
{
|
|
767
|
-
fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/admin-data/src/lib/pages/AdminDataEditPage.tsx",
|
|
768
|
-
lineNumber: 697,
|
|
769
|
-
columnNumber: 17
|
|
770
|
-
},
|
|
771
|
-
this
|
|
772
|
-
),
|
|
773
|
-
/* @__PURE__ */ e(
|
|
774
|
-
"button",
|
|
775
|
-
{
|
|
776
|
-
onClick: () => E(!1),
|
|
777
|
-
disabled: r.status === "loading",
|
|
778
|
-
className: "mt-3 w-full inline-flex justify-center rounded-md border border-gray-300 shadow-sm px-4 py-2 bg-white text-base font-medium text-gray-700 hover:text-gray-500 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-green-web sm:mt-0 sm:w-auto sm:text-sm disabled:opacity-50 disabled:cursor-not-allowed",
|
|
779
|
-
children: "Cancel"
|
|
780
|
-
},
|
|
781
|
-
void 0,
|
|
782
|
-
!1,
|
|
783
|
-
{
|
|
784
|
-
fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/admin-data/src/lib/pages/AdminDataEditPage.tsx",
|
|
785
|
-
lineNumber: 704,
|
|
786
|
-
columnNumber: 17
|
|
787
|
-
},
|
|
788
|
-
this
|
|
789
|
-
)
|
|
790
|
-
] }, void 0, !0, {
|
|
791
|
-
fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/admin-data/src/lib/pages/AdminDataEditPage.tsx",
|
|
792
|
-
lineNumber: 696,
|
|
793
|
-
columnNumber: 15
|
|
794
|
-
}, this)
|
|
795
|
-
] }, void 0, !0, {
|
|
796
|
-
fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/admin-data/src/lib/pages/AdminDataEditPage.tsx",
|
|
797
|
-
lineNumber: 679,
|
|
798
|
-
columnNumber: 13
|
|
799
|
-
}, this) }, void 0, !1, {
|
|
800
|
-
fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/admin-data/src/lib/pages/AdminDataEditPage.tsx",
|
|
801
|
-
lineNumber: 678,
|
|
802
|
-
columnNumber: 11
|
|
803
|
-
}, this),
|
|
804
|
-
(n.status !== "idle" || r.status !== "idle") && /* @__PURE__ */ e(
|
|
805
|
-
"div",
|
|
806
|
-
{
|
|
807
|
-
className: `mb-6 rounded-md p-4 ${n.status === "success" || r.status === "success" ? "bg-green-50 border border-green-200" : n.status === "error" || r.status === "error" ? "bg-red-50 border border-red-200" : "bg-blue-50 border border-blue-200"}`,
|
|
808
|
-
children: /* @__PURE__ */ e("div", { className: "flex", children: [
|
|
809
|
-
/* @__PURE__ */ e("div", { className: "flex-shrink-0", children: n.status === "success" || r.status === "success" ? /* @__PURE__ */ e(H, { className: "h-5 w-5 text-green-400" }, void 0, !1, {
|
|
810
|
-
fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/admin-data/src/lib/pages/AdminDataEditPage.tsx",
|
|
811
|
-
lineNumber: 730,
|
|
812
|
-
columnNumber: 19
|
|
813
|
-
}, this) : n.status === "error" || r.status === "error" ? /* @__PURE__ */ e(p, { className: "h-5 w-5 text-red-400" }, void 0, !1, {
|
|
814
|
-
fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/admin-data/src/lib/pages/AdminDataEditPage.tsx",
|
|
815
|
-
lineNumber: 732,
|
|
816
|
-
columnNumber: 19
|
|
817
|
-
}, this) : /* @__PURE__ */ e("div", { className: "h-5 w-5 border-2 border-blue-400 border-t-transparent rounded-full animate-spin" }, void 0, !1, {
|
|
818
|
-
fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/admin-data/src/lib/pages/AdminDataEditPage.tsx",
|
|
819
|
-
lineNumber: 734,
|
|
820
|
-
columnNumber: 19
|
|
821
|
-
}, this) }, void 0, !1, {
|
|
822
|
-
fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/admin-data/src/lib/pages/AdminDataEditPage.tsx",
|
|
823
|
-
lineNumber: 728,
|
|
824
|
-
columnNumber: 15
|
|
825
|
-
}, this),
|
|
826
|
-
/* @__PURE__ */ e("div", { className: "ml-3", children: /* @__PURE__ */ e(
|
|
827
|
-
"p",
|
|
828
|
-
{
|
|
829
|
-
className: `text-sm font-medium ${n.status === "success" || r.status === "success" ? "text-green-800" : n.status === "error" || r.status === "error" ? "text-red-800" : "text-blue-800"}`,
|
|
830
|
-
children: n.status === "loading" ? `Updating ${u(s.name)}...` : r.status === "loading" ? `Deleting ${u(s.name)}...` : n.message || r.message
|
|
831
|
-
},
|
|
832
|
-
void 0,
|
|
833
|
-
!1,
|
|
834
|
-
{
|
|
835
|
-
fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/admin-data/src/lib/pages/AdminDataEditPage.tsx",
|
|
836
|
-
lineNumber: 738,
|
|
837
|
-
columnNumber: 17
|
|
838
|
-
},
|
|
839
|
-
this
|
|
840
|
-
) }, void 0, !1, {
|
|
841
|
-
fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/admin-data/src/lib/pages/AdminDataEditPage.tsx",
|
|
842
|
-
lineNumber: 737,
|
|
843
|
-
columnNumber: 15
|
|
844
|
-
}, this)
|
|
845
|
-
] }, void 0, !0, {
|
|
846
|
-
fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/admin-data/src/lib/pages/AdminDataEditPage.tsx",
|
|
847
|
-
lineNumber: 727,
|
|
848
|
-
columnNumber: 13
|
|
849
|
-
}, this)
|
|
850
|
-
},
|
|
851
|
-
void 0,
|
|
852
|
-
!1,
|
|
853
|
-
{
|
|
854
|
-
fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/admin-data/src/lib/pages/AdminDataEditPage.tsx",
|
|
855
|
-
lineNumber: 718,
|
|
856
|
-
columnNumber: 11
|
|
857
|
-
},
|
|
858
|
-
this
|
|
859
|
-
),
|
|
860
|
-
/* @__PURE__ */ e("div", { className: "bg-white dark:bg-gray-800 shadow-sm rounded-lg", children: /* @__PURE__ */ e("div", { className: "px-6 py-8", children: /* @__PURE__ */ e(
|
|
861
|
-
X,
|
|
862
|
-
{
|
|
863
|
-
id: `edit-${s.name.toLowerCase()}-form`,
|
|
864
|
-
fields: V,
|
|
865
|
-
submit: q,
|
|
866
|
-
disabled: n.status === "loading" || r.status === "loading",
|
|
867
|
-
defaultValues: o,
|
|
868
|
-
theme: j
|
|
869
|
-
},
|
|
870
|
-
void 0,
|
|
871
|
-
!1,
|
|
872
|
-
{
|
|
873
|
-
fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/admin-data/src/lib/pages/AdminDataEditPage.tsx",
|
|
874
|
-
lineNumber: 761,
|
|
875
|
-
columnNumber: 13
|
|
876
|
-
},
|
|
877
|
-
this
|
|
878
|
-
) }, void 0, !1, {
|
|
879
|
-
fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/admin-data/src/lib/pages/AdminDataEditPage.tsx",
|
|
880
|
-
lineNumber: 760,
|
|
881
|
-
columnNumber: 11
|
|
882
|
-
}, this) }, void 0, !1, {
|
|
883
|
-
fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/admin-data/src/lib/pages/AdminDataEditPage.tsx",
|
|
884
|
-
lineNumber: 759,
|
|
885
|
-
columnNumber: 9
|
|
886
|
-
}, this)
|
|
887
|
-
] }, void 0, !0, {
|
|
888
|
-
fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/admin-data/src/lib/pages/AdminDataEditPage.tsx",
|
|
578
|
+
return /* @__PURE__ */ React.createElement("div", { className: "space-y-6", __self: this, __source: {
|
|
579
|
+
fileName: _jsxFileName,
|
|
889
580
|
lineNumber: 614,
|
|
890
581
|
columnNumber: 5
|
|
891
|
-
}, this
|
|
582
|
+
} }, /* @__PURE__ */ React.createElement("div", { className: "mb-8", __self: this, __source: {
|
|
583
|
+
fileName: _jsxFileName,
|
|
584
|
+
lineNumber: 616,
|
|
585
|
+
columnNumber: 7
|
|
586
|
+
} }, /* @__PURE__ */ React.createElement("nav", { className: "flex mb-6", "aria-label": "Breadcrumb", __self: this, __source: {
|
|
587
|
+
fileName: _jsxFileName,
|
|
588
|
+
lineNumber: 617,
|
|
589
|
+
columnNumber: 11
|
|
590
|
+
} }, /* @__PURE__ */ React.createElement("ol", { className: "flex items-center space-x-4", __self: this, __source: {
|
|
591
|
+
fileName: _jsxFileName,
|
|
592
|
+
lineNumber: 618,
|
|
593
|
+
columnNumber: 13
|
|
594
|
+
} }, /* @__PURE__ */ React.createElement("li", { __self: this, __source: {
|
|
595
|
+
fileName: _jsxFileName,
|
|
596
|
+
lineNumber: 619,
|
|
597
|
+
columnNumber: 15
|
|
598
|
+
} }, /* @__PURE__ */ React.createElement(Link, { to: basePath, className: "text-gray-400 dark:text-gray-500 hover:text-gray-500 dark:hover:text-gray-400", __self: this, __source: {
|
|
599
|
+
fileName: _jsxFileName,
|
|
600
|
+
lineNumber: 620,
|
|
601
|
+
columnNumber: 17
|
|
602
|
+
} }, "Data Browser")), /* @__PURE__ */ React.createElement("li", { __self: this, __source: {
|
|
603
|
+
fileName: _jsxFileName,
|
|
604
|
+
lineNumber: 624,
|
|
605
|
+
columnNumber: 15
|
|
606
|
+
} }, /* @__PURE__ */ React.createElement("div", { className: "flex items-center", __self: this, __source: {
|
|
607
|
+
fileName: _jsxFileName,
|
|
608
|
+
lineNumber: 625,
|
|
609
|
+
columnNumber: 17
|
|
610
|
+
} }, /* @__PURE__ */ React.createElement("svg", { className: "flex-shrink-0 h-5 w-5 text-gray-300 dark:text-gray-600", fill: "currentColor", viewBox: "0 0 20 20", __self: this, __source: {
|
|
611
|
+
fileName: _jsxFileName,
|
|
612
|
+
lineNumber: 626,
|
|
613
|
+
columnNumber: 19
|
|
614
|
+
} }, /* @__PURE__ */ React.createElement("path", { fillRule: "evenodd", d: "M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 111.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z", clipRule: "evenodd", __self: this, __source: {
|
|
615
|
+
fileName: _jsxFileName,
|
|
616
|
+
lineNumber: 631,
|
|
617
|
+
columnNumber: 21
|
|
618
|
+
} })), /* @__PURE__ */ React.createElement(Link, { to: `${basePath}/${toKebabCase(model.pluralName)}`, className: "ml-4 text-gray-400 dark:text-gray-500 hover:text-gray-500 dark:hover:text-gray-400", __self: this, __source: {
|
|
619
|
+
fileName: _jsxFileName,
|
|
620
|
+
lineNumber: 637,
|
|
621
|
+
columnNumber: 19
|
|
622
|
+
} }, toReadableText(model.pluralName)))), /* @__PURE__ */ React.createElement("li", { __self: this, __source: {
|
|
623
|
+
fileName: _jsxFileName,
|
|
624
|
+
lineNumber: 645,
|
|
625
|
+
columnNumber: 15
|
|
626
|
+
} }, /* @__PURE__ */ React.createElement("div", { className: "flex items-center", __self: this, __source: {
|
|
627
|
+
fileName: _jsxFileName,
|
|
628
|
+
lineNumber: 646,
|
|
629
|
+
columnNumber: 17
|
|
630
|
+
} }, /* @__PURE__ */ React.createElement("svg", { className: "flex-shrink-0 h-5 w-5 text-gray-300 dark:text-gray-600", fill: "currentColor", viewBox: "0 0 20 20", __self: this, __source: {
|
|
631
|
+
fileName: _jsxFileName,
|
|
632
|
+
lineNumber: 647,
|
|
633
|
+
columnNumber: 19
|
|
634
|
+
} }, /* @__PURE__ */ React.createElement("path", { fillRule: "evenodd", d: "M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 111.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z", clipRule: "evenodd", __self: this, __source: {
|
|
635
|
+
fileName: _jsxFileName,
|
|
636
|
+
lineNumber: 652,
|
|
637
|
+
columnNumber: 21
|
|
638
|
+
} })), /* @__PURE__ */ React.createElement("span", { className: "ml-4 text-gray-500 dark:text-gray-400", __self: this, __source: {
|
|
639
|
+
fileName: _jsxFileName,
|
|
640
|
+
lineNumber: 658,
|
|
641
|
+
columnNumber: 19
|
|
642
|
+
} }, "Edit"))))), /* @__PURE__ */ React.createElement("div", { className: "flex items-center justify-between", __self: this, __source: {
|
|
643
|
+
fileName: _jsxFileName,
|
|
644
|
+
lineNumber: 663,
|
|
645
|
+
columnNumber: 11
|
|
646
|
+
} }, /* @__PURE__ */ React.createElement("h1", { className: "text-3xl font-bold text-gray-900 dark:text-gray-100", __self: this, __source: {
|
|
647
|
+
fileName: _jsxFileName,
|
|
648
|
+
lineNumber: 664,
|
|
649
|
+
columnNumber: 13
|
|
650
|
+
} }, "Edit ", toReadableText(model.name)), /* @__PURE__ */ React.createElement("button", { onClick: () => setShowDeleteConfirm(true), disabled: deleteState.status === "loading", className: "inline-flex items-center px-3 py-2 border border-red-300 shadow-sm text-sm leading-4 font-medium rounded-md text-red-700 bg-white hover:bg-red-50 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-red-500 disabled:opacity-50 disabled:cursor-not-allowed", __self: this, __source: {
|
|
651
|
+
fileName: _jsxFileName,
|
|
652
|
+
lineNumber: 665,
|
|
653
|
+
columnNumber: 13
|
|
654
|
+
} }, /* @__PURE__ */ React.createElement(TrashIcon, { className: "h-4 w-4 mr-2", __self: this, __source: {
|
|
655
|
+
fileName: _jsxFileName,
|
|
656
|
+
lineNumber: 670,
|
|
657
|
+
columnNumber: 15
|
|
658
|
+
} }), "Delete"))), showDeleteConfirm && /* @__PURE__ */ React.createElement("div", { className: "fixed inset-0 bg-gray-600 dark:bg-gray-900 bg-opacity-50 dark:bg-opacity-75 overflow-y-auto h-full w-full z-50 flex items-center justify-center", __self: this, __source: {
|
|
659
|
+
fileName: _jsxFileName,
|
|
660
|
+
lineNumber: 678,
|
|
661
|
+
columnNumber: 11
|
|
662
|
+
} }, /* @__PURE__ */ React.createElement("div", { className: "bg-white dark:bg-gray-800 p-6 rounded-lg shadow-xl max-w-md w-full mx-4", __self: this, __source: {
|
|
663
|
+
fileName: _jsxFileName,
|
|
664
|
+
lineNumber: 679,
|
|
665
|
+
columnNumber: 13
|
|
666
|
+
} }, /* @__PURE__ */ React.createElement("div", { className: "flex items-center", __self: this, __source: {
|
|
667
|
+
fileName: _jsxFileName,
|
|
668
|
+
lineNumber: 680,
|
|
669
|
+
columnNumber: 15
|
|
670
|
+
} }, /* @__PURE__ */ React.createElement("div", { className: "flex-shrink-0", __self: this, __source: {
|
|
671
|
+
fileName: _jsxFileName,
|
|
672
|
+
lineNumber: 681,
|
|
673
|
+
columnNumber: 17
|
|
674
|
+
} }, /* @__PURE__ */ React.createElement(ExclamationCircleIcon, { className: "h-6 w-6 text-red-600", __self: this, __source: {
|
|
675
|
+
fileName: _jsxFileName,
|
|
676
|
+
lineNumber: 682,
|
|
677
|
+
columnNumber: 19
|
|
678
|
+
} })), /* @__PURE__ */ React.createElement("div", { className: "ml-3", __self: this, __source: {
|
|
679
|
+
fileName: _jsxFileName,
|
|
680
|
+
lineNumber: 684,
|
|
681
|
+
columnNumber: 17
|
|
682
|
+
} }, /* @__PURE__ */ React.createElement("h3", { className: "text-lg font-medium text-gray-900 dark:text-gray-100", __self: this, __source: {
|
|
683
|
+
fileName: _jsxFileName,
|
|
684
|
+
lineNumber: 685,
|
|
685
|
+
columnNumber: 19
|
|
686
|
+
} }, "Delete ", toReadableText(model.name)), /* @__PURE__ */ React.createElement("div", { className: "mt-2", __self: this, __source: {
|
|
687
|
+
fileName: _jsxFileName,
|
|
688
|
+
lineNumber: 688,
|
|
689
|
+
columnNumber: 19
|
|
690
|
+
} }, /* @__PURE__ */ React.createElement("p", { className: "text-sm text-gray-500 dark:text-gray-400", __self: this, __source: {
|
|
691
|
+
fileName: _jsxFileName,
|
|
692
|
+
lineNumber: 689,
|
|
693
|
+
columnNumber: 21
|
|
694
|
+
} }, "Are you sure you want to delete this", " ", toReadableText(model.name).toLowerCase(), "? This action cannot be undone.")))), /* @__PURE__ */ React.createElement("div", { className: "mt-5 sm:mt-4 sm:flex sm:flex-row-reverse", __self: this, __source: {
|
|
695
|
+
fileName: _jsxFileName,
|
|
696
|
+
lineNumber: 696,
|
|
697
|
+
columnNumber: 15
|
|
698
|
+
} }, /* @__PURE__ */ React.createElement("button", { onClick: handleDelete, disabled: deleteState.status === "loading", className: "w-full inline-flex justify-center rounded-md border border-transparent shadow-sm px-4 py-2 bg-red-600 text-base font-medium text-white hover:bg-red-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-red-500 sm:ml-3 sm:w-auto sm:text-sm disabled:opacity-50 disabled:cursor-not-allowed", __self: this, __source: {
|
|
699
|
+
fileName: _jsxFileName,
|
|
700
|
+
lineNumber: 697,
|
|
701
|
+
columnNumber: 17
|
|
702
|
+
} }, deleteState.status === "loading" ? "Deleting..." : "Delete"), /* @__PURE__ */ React.createElement("button", { onClick: () => setShowDeleteConfirm(false), disabled: deleteState.status === "loading", className: "mt-3 w-full inline-flex justify-center rounded-md border border-gray-300 shadow-sm px-4 py-2 bg-white text-base font-medium text-gray-700 hover:text-gray-500 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-green-web sm:mt-0 sm:w-auto sm:text-sm disabled:opacity-50 disabled:cursor-not-allowed", __self: this, __source: {
|
|
703
|
+
fileName: _jsxFileName,
|
|
704
|
+
lineNumber: 704,
|
|
705
|
+
columnNumber: 17
|
|
706
|
+
} }, "Cancel")))), (submissionState.status !== "idle" || deleteState.status !== "idle") && /* @__PURE__ */ React.createElement("div", { className: `mb-6 rounded-md p-4 ${submissionState.status === "success" || deleteState.status === "success" ? "bg-green-50 border border-green-200" : submissionState.status === "error" || deleteState.status === "error" ? "bg-red-50 border border-red-200" : "bg-blue-50 border border-blue-200"}`, __self: this, __source: {
|
|
707
|
+
fileName: _jsxFileName,
|
|
708
|
+
lineNumber: 718,
|
|
709
|
+
columnNumber: 11
|
|
710
|
+
} }, /* @__PURE__ */ React.createElement("div", { className: "flex", __self: this, __source: {
|
|
711
|
+
fileName: _jsxFileName,
|
|
712
|
+
lineNumber: 727,
|
|
713
|
+
columnNumber: 13
|
|
714
|
+
} }, /* @__PURE__ */ React.createElement("div", { className: "flex-shrink-0", __self: this, __source: {
|
|
715
|
+
fileName: _jsxFileName,
|
|
716
|
+
lineNumber: 728,
|
|
717
|
+
columnNumber: 15
|
|
718
|
+
} }, submissionState.status === "success" || deleteState.status === "success" ? /* @__PURE__ */ React.createElement(CheckCircleIcon, { className: "h-5 w-5 text-green-400", __self: this, __source: {
|
|
719
|
+
fileName: _jsxFileName,
|
|
720
|
+
lineNumber: 730,
|
|
721
|
+
columnNumber: 19
|
|
722
|
+
} }) : submissionState.status === "error" || deleteState.status === "error" ? /* @__PURE__ */ React.createElement(ExclamationCircleIcon, { className: "h-5 w-5 text-red-400", __self: this, __source: {
|
|
723
|
+
fileName: _jsxFileName,
|
|
724
|
+
lineNumber: 732,
|
|
725
|
+
columnNumber: 19
|
|
726
|
+
} }) : /* @__PURE__ */ React.createElement("div", { className: "h-5 w-5 border-2 border-blue-400 border-t-transparent rounded-full animate-spin", __self: this, __source: {
|
|
727
|
+
fileName: _jsxFileName,
|
|
728
|
+
lineNumber: 734,
|
|
729
|
+
columnNumber: 19
|
|
730
|
+
} })), /* @__PURE__ */ React.createElement("div", { className: "ml-3", __self: this, __source: {
|
|
731
|
+
fileName: _jsxFileName,
|
|
732
|
+
lineNumber: 737,
|
|
733
|
+
columnNumber: 15
|
|
734
|
+
} }, /* @__PURE__ */ React.createElement("p", { className: `text-sm font-medium ${submissionState.status === "success" || deleteState.status === "success" ? "text-green-800" : submissionState.status === "error" || deleteState.status === "error" ? "text-red-800" : "text-blue-800"}`, __self: this, __source: {
|
|
735
|
+
fileName: _jsxFileName,
|
|
736
|
+
lineNumber: 738,
|
|
737
|
+
columnNumber: 17
|
|
738
|
+
} }, submissionState.status === "loading" ? `Updating ${toReadableText(model.name)}...` : deleteState.status === "loading" ? `Deleting ${toReadableText(model.name)}...` : submissionState.message || deleteState.message)))), /* @__PURE__ */ React.createElement("div", { className: "bg-white dark:bg-gray-800 shadow-sm rounded-lg", __self: this, __source: {
|
|
739
|
+
fileName: _jsxFileName,
|
|
740
|
+
lineNumber: 759,
|
|
741
|
+
columnNumber: 9
|
|
742
|
+
} }, /* @__PURE__ */ React.createElement("div", { className: "px-6 py-8", __self: this, __source: {
|
|
743
|
+
fileName: _jsxFileName,
|
|
744
|
+
lineNumber: 760,
|
|
745
|
+
columnNumber: 11
|
|
746
|
+
} }, /* @__PURE__ */ React.createElement(Form, { id: `edit-${model.name.toLowerCase()}-form`, fields: formFields, submit: handleSubmit, disabled: submissionState.status === "loading" || deleteState.status === "loading", defaultValues: initialValues, theme: formTheme, __self: this, __source: {
|
|
747
|
+
fileName: _jsxFileName,
|
|
748
|
+
lineNumber: 761,
|
|
749
|
+
columnNumber: 13
|
|
750
|
+
} }))));
|
|
892
751
|
}
|
|
893
|
-
function
|
|
894
|
-
|
|
895
|
-
|
|
752
|
+
function AdminDataEditErrorBoundary({
|
|
753
|
+
error
|
|
754
|
+
}) {
|
|
755
|
+
return /* @__PURE__ */ React.createElement(ErrorBoundary, { error, __self: this, __source: {
|
|
756
|
+
fileName: _jsxFileName,
|
|
896
757
|
lineNumber: 776,
|
|
897
758
|
columnNumber: 10
|
|
898
|
-
}
|
|
759
|
+
} });
|
|
899
760
|
}
|
|
900
761
|
export {
|
|
901
|
-
|
|
902
|
-
|
|
762
|
+
AdminDataEditErrorBoundary,
|
|
763
|
+
AdminDataEditPage
|
|
903
764
|
};
|