dn-react-router-toolkit 0.5.2 → 0.5.4
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/crud/crud_form.js +50 -18
- package/dist/crud/crud_form.mjs +51 -19
- package/dist/crud/crud_form_provider.d.mts +10 -6
- package/dist/crud/crud_form_provider.d.ts +10 -6
- package/dist/crud/crud_form_provider.js +50 -52
- package/dist/crud/crud_form_provider.mjs +50 -52
- package/dist/crud/crud_loader.d.mts +8 -4
- package/dist/crud/crud_loader.d.ts +8 -4
- package/dist/crud/crud_loader.js +28 -14
- package/dist/crud/crud_loader.mjs +28 -14
- package/dist/crud/crud_page.d.mts +0 -1
- package/dist/crud/crud_page.d.ts +0 -1
- package/dist/crud/crud_page.js +100 -70
- package/dist/crud/crud_page.mjs +101 -71
- package/dist/crud/generate_pages.d.mts +0 -1
- package/dist/crud/generate_pages.d.ts +0 -1
- package/dist/crud/index.d.mts +1 -1
- package/dist/crud/index.d.ts +1 -1
- package/dist/crud/index.js +134 -90
- package/dist/crud/index.mjs +129 -85
- package/dist/table/index.js +4 -12
- package/dist/table/index.mjs +4 -12
- package/dist/table/item_loader.d.mts +3 -2
- package/dist/table/item_loader.d.ts +3 -2
- package/dist/table/item_loader.js +4 -12
- package/dist/table/item_loader.mjs +4 -12
- package/package.json +75 -75
package/dist/crud/index.js
CHANGED
|
@@ -69,58 +69,56 @@ function CrudFormProvider({
|
|
|
69
69
|
"Content-Type": "application/json"
|
|
70
70
|
},
|
|
71
71
|
body: JSON.stringify(
|
|
72
|
-
Object.entries(store.state).reduce(
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
{}
|
|
123
|
-
)
|
|
72
|
+
Object.entries(store.state).reduce(function reducer(acc, [key, value]) {
|
|
73
|
+
const converter = (value2) => {
|
|
74
|
+
if (value2 === void 0) {
|
|
75
|
+
return void 0;
|
|
76
|
+
}
|
|
77
|
+
if (value2 === null) {
|
|
78
|
+
return {
|
|
79
|
+
type: "null",
|
|
80
|
+
value: null
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
if (typeof value2 === "string") {
|
|
84
|
+
return {
|
|
85
|
+
type: "string",
|
|
86
|
+
value: value2
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
if (typeof value2 === "number") {
|
|
90
|
+
return {
|
|
91
|
+
type: "number",
|
|
92
|
+
value: value2
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
if (typeof value2 === "boolean") {
|
|
96
|
+
return {
|
|
97
|
+
type: "boolean",
|
|
98
|
+
value: value2
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
if (value2 instanceof Date) {
|
|
102
|
+
return {
|
|
103
|
+
type: "date",
|
|
104
|
+
value: value2.toISOString()
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
if (Array.isArray(value2)) {
|
|
108
|
+
return value2.map((v) => converter(v));
|
|
109
|
+
}
|
|
110
|
+
if (typeof value2 === "object") {
|
|
111
|
+
return Object.entries(value2).reduce(
|
|
112
|
+
reducer,
|
|
113
|
+
{}
|
|
114
|
+
);
|
|
115
|
+
}
|
|
116
|
+
};
|
|
117
|
+
return {
|
|
118
|
+
...acc,
|
|
119
|
+
[key]: converter(value)
|
|
120
|
+
};
|
|
121
|
+
}, {})
|
|
124
122
|
)
|
|
125
123
|
});
|
|
126
124
|
if (!res.ok) {
|
|
@@ -163,33 +161,65 @@ function CrudFormProvider({
|
|
|
163
161
|
// src/crud/crud_form.tsx
|
|
164
162
|
var import_store2 = require("dn-react-toolkit/store");
|
|
165
163
|
var import_react3 = __toESM(require("react"));
|
|
164
|
+
var import_utils = require("dn-react-toolkit/utils");
|
|
166
165
|
function CrudForm({ AdminLayout }) {
|
|
167
166
|
const form = useFormContext();
|
|
168
167
|
return /* @__PURE__ */ import_react3.default.createElement(
|
|
169
168
|
AdminLayout,
|
|
170
169
|
{
|
|
171
170
|
title: `${form.name} ${form.item ? "\uC218\uC815" : "\uCD94\uAC00"}`,
|
|
172
|
-
actions: /* @__PURE__ */ import_react3.default.createElement(
|
|
173
|
-
"button",
|
|
174
|
-
{
|
|
175
|
-
type: "button",
|
|
176
|
-
className: "button-primary",
|
|
177
|
-
onClick: form.submit
|
|
178
|
-
},
|
|
179
|
-
"\uC800\uC7A5\uD558\uAE30"
|
|
180
|
-
),
|
|
171
|
+
actions: /* @__PURE__ */ import_react3.default.createElement("button", { type: "button", className: "button-primary", onClick: form.submit }, "\uC800\uC7A5\uD558\uAE30"),
|
|
181
172
|
className: "max-w-3xl mx-auto"
|
|
182
173
|
},
|
|
183
|
-
Object.keys(form.columns).length > 0 && /* @__PURE__ */ import_react3.default.createElement(import_react3.default.Fragment, null, Object.entries(
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
property: key
|
|
189
|
-
|
|
174
|
+
Object.keys(form.columns).length > 0 && /* @__PURE__ */ import_react3.default.createElement(import_react3.default.Fragment, null, Object.entries(
|
|
175
|
+
form.columns
|
|
176
|
+
).map(([key, value]) => {
|
|
177
|
+
const createComponent = () => {
|
|
178
|
+
if (value.component) {
|
|
179
|
+
return /* @__PURE__ */ import_react3.default.createElement(value.component, { store: form.store, property: key });
|
|
180
|
+
}
|
|
181
|
+
if (value.type === "checkbox") {
|
|
182
|
+
return /* @__PURE__ */ import_react3.default.createElement(import_store2.SyncSwitch, { store: form.store, property: key });
|
|
183
|
+
}
|
|
184
|
+
if (value.type === "datetime") {
|
|
185
|
+
return /* @__PURE__ */ import_react3.default.createElement(
|
|
186
|
+
import_store2.SyncInput,
|
|
187
|
+
{
|
|
188
|
+
store: form.store,
|
|
189
|
+
property: key,
|
|
190
|
+
className: "input-form",
|
|
191
|
+
type: "datetime-local",
|
|
192
|
+
serializer: (value2) => {
|
|
193
|
+
if (value2 instanceof Date) {
|
|
194
|
+
return (0, import_utils.moment)(value2).toISOString(true).slice(0, 16);
|
|
195
|
+
}
|
|
196
|
+
return String(value2);
|
|
197
|
+
},
|
|
198
|
+
deserializer: (value2) => {
|
|
199
|
+
if (!value2) {
|
|
200
|
+
return void 0;
|
|
201
|
+
}
|
|
202
|
+
return (0, import_utils.moment)(value2).toDate();
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
);
|
|
190
206
|
}
|
|
191
|
-
|
|
192
|
-
|
|
207
|
+
if (value.options) {
|
|
208
|
+
const Component = value.options;
|
|
209
|
+
return /* @__PURE__ */ import_react3.default.createElement(import_store2.SyncSelect, { store: form.store, property: key }, /* @__PURE__ */ import_react3.default.createElement(Component, null));
|
|
210
|
+
}
|
|
211
|
+
return /* @__PURE__ */ import_react3.default.createElement(
|
|
212
|
+
import_store2.SyncInput,
|
|
213
|
+
{
|
|
214
|
+
store: form.store,
|
|
215
|
+
property: key,
|
|
216
|
+
type: value.type,
|
|
217
|
+
className: "input-form"
|
|
218
|
+
}
|
|
219
|
+
);
|
|
220
|
+
};
|
|
221
|
+
return /* @__PURE__ */ import_react3.default.createElement("label", { key }, value.label, createComponent());
|
|
222
|
+
})),
|
|
193
223
|
form.item && /* @__PURE__ */ import_react3.default.createElement(
|
|
194
224
|
"button",
|
|
195
225
|
{
|
|
@@ -248,24 +278,16 @@ function tableLoader({
|
|
|
248
278
|
|
|
249
279
|
// src/table/item_loader.tsx
|
|
250
280
|
var tableItemloader = ({
|
|
251
|
-
loader,
|
|
252
281
|
repository
|
|
253
282
|
}) => {
|
|
254
|
-
return async (
|
|
255
|
-
const
|
|
256
|
-
const result = await loader({ params });
|
|
257
|
-
if (result instanceof Response) {
|
|
258
|
-
return result.json();
|
|
259
|
-
}
|
|
260
|
-
return result;
|
|
261
|
-
})() : {};
|
|
283
|
+
return async (args) => {
|
|
284
|
+
const { params } = args;
|
|
262
285
|
if (params["itemId"] === "new") {
|
|
263
|
-
return { item: void 0
|
|
286
|
+
return { item: void 0 };
|
|
264
287
|
}
|
|
265
288
|
const item = params["itemId"] ? await repository.find(params["itemId"]) : void 0;
|
|
266
289
|
return {
|
|
267
|
-
item
|
|
268
|
-
...body
|
|
290
|
+
item
|
|
269
291
|
};
|
|
270
292
|
};
|
|
271
293
|
};
|
|
@@ -451,13 +473,35 @@ function crudHandler({
|
|
|
451
473
|
}
|
|
452
474
|
}
|
|
453
475
|
if (pattern === prefix2) {
|
|
454
|
-
|
|
476
|
+
const body = await tableLoader({
|
|
455
477
|
...loaderOptions,
|
|
456
478
|
repository
|
|
457
479
|
})(args);
|
|
480
|
+
if (loaderOptions.loader) {
|
|
481
|
+
const result = await loaderOptions.loader(args);
|
|
482
|
+
if (typeof result === "object") {
|
|
483
|
+
return {
|
|
484
|
+
...result,
|
|
485
|
+
...body
|
|
486
|
+
};
|
|
487
|
+
}
|
|
488
|
+
}
|
|
489
|
+
return body;
|
|
458
490
|
}
|
|
459
491
|
if (pattern.startsWith(prefix2)) {
|
|
460
|
-
|
|
492
|
+
const body = await tableItemloader({ ...itemLoaderOptions, repository })(
|
|
493
|
+
args
|
|
494
|
+
);
|
|
495
|
+
if (itemLoaderOptions.loader) {
|
|
496
|
+
const result = await itemLoaderOptions.loader(args);
|
|
497
|
+
if (typeof result === "object") {
|
|
498
|
+
return {
|
|
499
|
+
...result,
|
|
500
|
+
...body
|
|
501
|
+
};
|
|
502
|
+
}
|
|
503
|
+
}
|
|
504
|
+
return body;
|
|
461
505
|
}
|
|
462
506
|
};
|
|
463
507
|
}
|
|
@@ -618,7 +662,7 @@ function GoSearch(props) {
|
|
|
618
662
|
}
|
|
619
663
|
|
|
620
664
|
// src/table/buttons.tsx
|
|
621
|
-
var
|
|
665
|
+
var import_utils2 = require("dn-react-toolkit/utils");
|
|
622
666
|
var import_react_router4 = require("react-router");
|
|
623
667
|
var import_react6 = __toESM(require("react"));
|
|
624
668
|
function TablePageButtons({
|
|
@@ -663,7 +707,7 @@ function TablePageButtons({
|
|
|
663
707
|
);
|
|
664
708
|
return `${pathname}?${searchParams.toString()}`;
|
|
665
709
|
})(),
|
|
666
|
-
className: (0,
|
|
710
|
+
className: (0, import_utils2.cn)(
|
|
667
711
|
"w-6 block text-center transition-colors",
|
|
668
712
|
currentPage === startButton + index2 + 1 ? "font-bold text-primary" : "hover:text-primary"
|
|
669
713
|
)
|
|
@@ -687,7 +731,7 @@ function TablePageButtons({
|
|
|
687
731
|
}
|
|
688
732
|
|
|
689
733
|
// src/table/table.tsx
|
|
690
|
-
var
|
|
734
|
+
var import_utils3 = require("dn-react-toolkit/utils");
|
|
691
735
|
var import_react_router5 = require("react-router");
|
|
692
736
|
var import_react7 = __toESM(require("react"));
|
|
693
737
|
function Table({
|
|
@@ -707,7 +751,7 @@ function Table({
|
|
|
707
751
|
return /* @__PURE__ */ import_react7.default.createElement(
|
|
708
752
|
"table",
|
|
709
753
|
{
|
|
710
|
-
className: (0,
|
|
754
|
+
className: (0, import_utils3.cn)(
|
|
711
755
|
className,
|
|
712
756
|
"text-[15px] border-separate border-spacing-0"
|
|
713
757
|
)
|
|
@@ -726,7 +770,7 @@ function Table({
|
|
|
726
770
|
return /* @__PURE__ */ import_react7.default.createElement(
|
|
727
771
|
"button",
|
|
728
772
|
{
|
|
729
|
-
className: (0,
|
|
773
|
+
className: (0, import_utils3.cn)(
|
|
730
774
|
orderBy === key ? "text-neutral-900 font-medium" : "text-neutral-500",
|
|
731
775
|
"px-4 h-14 flex items-center w-full"
|
|
732
776
|
),
|
|
@@ -751,7 +795,7 @@ function Table({
|
|
|
751
795
|
"th",
|
|
752
796
|
{
|
|
753
797
|
key,
|
|
754
|
-
className: (0,
|
|
798
|
+
className: (0, import_utils3.cn)("border-y font-normal")
|
|
755
799
|
},
|
|
756
800
|
/* @__PURE__ */ import_react7.default.createElement(Head, null)
|
|
757
801
|
);
|
package/dist/crud/index.mjs
CHANGED
|
@@ -27,58 +27,56 @@ function CrudFormProvider({
|
|
|
27
27
|
"Content-Type": "application/json"
|
|
28
28
|
},
|
|
29
29
|
body: JSON.stringify(
|
|
30
|
-
Object.entries(store.state).reduce(
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
{}
|
|
81
|
-
)
|
|
30
|
+
Object.entries(store.state).reduce(function reducer(acc, [key, value]) {
|
|
31
|
+
const converter = (value2) => {
|
|
32
|
+
if (value2 === void 0) {
|
|
33
|
+
return void 0;
|
|
34
|
+
}
|
|
35
|
+
if (value2 === null) {
|
|
36
|
+
return {
|
|
37
|
+
type: "null",
|
|
38
|
+
value: null
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
if (typeof value2 === "string") {
|
|
42
|
+
return {
|
|
43
|
+
type: "string",
|
|
44
|
+
value: value2
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
if (typeof value2 === "number") {
|
|
48
|
+
return {
|
|
49
|
+
type: "number",
|
|
50
|
+
value: value2
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
if (typeof value2 === "boolean") {
|
|
54
|
+
return {
|
|
55
|
+
type: "boolean",
|
|
56
|
+
value: value2
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
if (value2 instanceof Date) {
|
|
60
|
+
return {
|
|
61
|
+
type: "date",
|
|
62
|
+
value: value2.toISOString()
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
if (Array.isArray(value2)) {
|
|
66
|
+
return value2.map((v) => converter(v));
|
|
67
|
+
}
|
|
68
|
+
if (typeof value2 === "object") {
|
|
69
|
+
return Object.entries(value2).reduce(
|
|
70
|
+
reducer,
|
|
71
|
+
{}
|
|
72
|
+
);
|
|
73
|
+
}
|
|
74
|
+
};
|
|
75
|
+
return {
|
|
76
|
+
...acc,
|
|
77
|
+
[key]: converter(value)
|
|
78
|
+
};
|
|
79
|
+
}, {})
|
|
82
80
|
)
|
|
83
81
|
});
|
|
84
82
|
if (!res.ok) {
|
|
@@ -119,35 +117,67 @@ function CrudFormProvider({
|
|
|
119
117
|
}
|
|
120
118
|
|
|
121
119
|
// src/crud/crud_form.tsx
|
|
122
|
-
import { SyncInput } from "dn-react-toolkit/store";
|
|
120
|
+
import { SyncInput, SyncSelect, SyncSwitch } from "dn-react-toolkit/store";
|
|
123
121
|
import React2 from "react";
|
|
122
|
+
import { moment } from "dn-react-toolkit/utils";
|
|
124
123
|
function CrudForm({ AdminLayout }) {
|
|
125
124
|
const form = useFormContext();
|
|
126
125
|
return /* @__PURE__ */ React2.createElement(
|
|
127
126
|
AdminLayout,
|
|
128
127
|
{
|
|
129
128
|
title: `${form.name} ${form.item ? "\uC218\uC815" : "\uCD94\uAC00"}`,
|
|
130
|
-
actions: /* @__PURE__ */ React2.createElement(
|
|
131
|
-
"button",
|
|
132
|
-
{
|
|
133
|
-
type: "button",
|
|
134
|
-
className: "button-primary",
|
|
135
|
-
onClick: form.submit
|
|
136
|
-
},
|
|
137
|
-
"\uC800\uC7A5\uD558\uAE30"
|
|
138
|
-
),
|
|
129
|
+
actions: /* @__PURE__ */ React2.createElement("button", { type: "button", className: "button-primary", onClick: form.submit }, "\uC800\uC7A5\uD558\uAE30"),
|
|
139
130
|
className: "max-w-3xl mx-auto"
|
|
140
131
|
},
|
|
141
|
-
Object.keys(form.columns).length > 0 && /* @__PURE__ */ React2.createElement(React2.Fragment, null, Object.entries(
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
property: key
|
|
147
|
-
|
|
132
|
+
Object.keys(form.columns).length > 0 && /* @__PURE__ */ React2.createElement(React2.Fragment, null, Object.entries(
|
|
133
|
+
form.columns
|
|
134
|
+
).map(([key, value]) => {
|
|
135
|
+
const createComponent = () => {
|
|
136
|
+
if (value.component) {
|
|
137
|
+
return /* @__PURE__ */ React2.createElement(value.component, { store: form.store, property: key });
|
|
138
|
+
}
|
|
139
|
+
if (value.type === "checkbox") {
|
|
140
|
+
return /* @__PURE__ */ React2.createElement(SyncSwitch, { store: form.store, property: key });
|
|
141
|
+
}
|
|
142
|
+
if (value.type === "datetime") {
|
|
143
|
+
return /* @__PURE__ */ React2.createElement(
|
|
144
|
+
SyncInput,
|
|
145
|
+
{
|
|
146
|
+
store: form.store,
|
|
147
|
+
property: key,
|
|
148
|
+
className: "input-form",
|
|
149
|
+
type: "datetime-local",
|
|
150
|
+
serializer: (value2) => {
|
|
151
|
+
if (value2 instanceof Date) {
|
|
152
|
+
return moment(value2).toISOString(true).slice(0, 16);
|
|
153
|
+
}
|
|
154
|
+
return String(value2);
|
|
155
|
+
},
|
|
156
|
+
deserializer: (value2) => {
|
|
157
|
+
if (!value2) {
|
|
158
|
+
return void 0;
|
|
159
|
+
}
|
|
160
|
+
return moment(value2).toDate();
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
);
|
|
148
164
|
}
|
|
149
|
-
|
|
150
|
-
|
|
165
|
+
if (value.options) {
|
|
166
|
+
const Component = value.options;
|
|
167
|
+
return /* @__PURE__ */ React2.createElement(SyncSelect, { store: form.store, property: key }, /* @__PURE__ */ React2.createElement(Component, null));
|
|
168
|
+
}
|
|
169
|
+
return /* @__PURE__ */ React2.createElement(
|
|
170
|
+
SyncInput,
|
|
171
|
+
{
|
|
172
|
+
store: form.store,
|
|
173
|
+
property: key,
|
|
174
|
+
type: value.type,
|
|
175
|
+
className: "input-form"
|
|
176
|
+
}
|
|
177
|
+
);
|
|
178
|
+
};
|
|
179
|
+
return /* @__PURE__ */ React2.createElement("label", { key }, value.label, createComponent());
|
|
180
|
+
})),
|
|
151
181
|
form.item && /* @__PURE__ */ React2.createElement(
|
|
152
182
|
"button",
|
|
153
183
|
{
|
|
@@ -209,24 +239,16 @@ function tableLoader({
|
|
|
209
239
|
|
|
210
240
|
// src/table/item_loader.tsx
|
|
211
241
|
var tableItemloader = ({
|
|
212
|
-
loader,
|
|
213
242
|
repository
|
|
214
243
|
}) => {
|
|
215
|
-
return async (
|
|
216
|
-
const
|
|
217
|
-
const result = await loader({ params });
|
|
218
|
-
if (result instanceof Response) {
|
|
219
|
-
return result.json();
|
|
220
|
-
}
|
|
221
|
-
return result;
|
|
222
|
-
})() : {};
|
|
244
|
+
return async (args) => {
|
|
245
|
+
const { params } = args;
|
|
223
246
|
if (params["itemId"] === "new") {
|
|
224
|
-
return { item: void 0
|
|
247
|
+
return { item: void 0 };
|
|
225
248
|
}
|
|
226
249
|
const item = params["itemId"] ? await repository.find(params["itemId"]) : void 0;
|
|
227
250
|
return {
|
|
228
|
-
item
|
|
229
|
-
...body
|
|
251
|
+
item
|
|
230
252
|
};
|
|
231
253
|
};
|
|
232
254
|
};
|
|
@@ -421,13 +443,35 @@ function crudHandler({
|
|
|
421
443
|
}
|
|
422
444
|
}
|
|
423
445
|
if (pattern === prefix2) {
|
|
424
|
-
|
|
446
|
+
const body = await tableLoader({
|
|
425
447
|
...loaderOptions,
|
|
426
448
|
repository
|
|
427
449
|
})(args);
|
|
450
|
+
if (loaderOptions.loader) {
|
|
451
|
+
const result = await loaderOptions.loader(args);
|
|
452
|
+
if (typeof result === "object") {
|
|
453
|
+
return {
|
|
454
|
+
...result,
|
|
455
|
+
...body
|
|
456
|
+
};
|
|
457
|
+
}
|
|
458
|
+
}
|
|
459
|
+
return body;
|
|
428
460
|
}
|
|
429
461
|
if (pattern.startsWith(prefix2)) {
|
|
430
|
-
|
|
462
|
+
const body = await tableItemloader({ ...itemLoaderOptions, repository })(
|
|
463
|
+
args
|
|
464
|
+
);
|
|
465
|
+
if (itemLoaderOptions.loader) {
|
|
466
|
+
const result = await itemLoaderOptions.loader(args);
|
|
467
|
+
if (typeof result === "object") {
|
|
468
|
+
return {
|
|
469
|
+
...result,
|
|
470
|
+
...body
|
|
471
|
+
};
|
|
472
|
+
}
|
|
473
|
+
}
|
|
474
|
+
return body;
|
|
431
475
|
}
|
|
432
476
|
};
|
|
433
477
|
}
|
package/dist/table/index.js
CHANGED
|
@@ -158,24 +158,16 @@ function TablePageButtons({
|
|
|
158
158
|
|
|
159
159
|
// src/table/item_loader.tsx
|
|
160
160
|
var tableItemloader = ({
|
|
161
|
-
loader,
|
|
162
161
|
repository
|
|
163
162
|
}) => {
|
|
164
|
-
return async (
|
|
165
|
-
const
|
|
166
|
-
const result = await loader({ params });
|
|
167
|
-
if (result instanceof Response) {
|
|
168
|
-
return result.json();
|
|
169
|
-
}
|
|
170
|
-
return result;
|
|
171
|
-
})() : {};
|
|
163
|
+
return async (args) => {
|
|
164
|
+
const { params } = args;
|
|
172
165
|
if (params["itemId"] === "new") {
|
|
173
|
-
return { item: void 0
|
|
166
|
+
return { item: void 0 };
|
|
174
167
|
}
|
|
175
168
|
const item = params["itemId"] ? await repository.find(params["itemId"]) : void 0;
|
|
176
169
|
return {
|
|
177
|
-
item
|
|
178
|
-
...body
|
|
170
|
+
item
|
|
179
171
|
};
|
|
180
172
|
};
|
|
181
173
|
};
|
package/dist/table/index.mjs
CHANGED
|
@@ -123,24 +123,16 @@ function TablePageButtons({
|
|
|
123
123
|
|
|
124
124
|
// src/table/item_loader.tsx
|
|
125
125
|
var tableItemloader = ({
|
|
126
|
-
loader,
|
|
127
126
|
repository
|
|
128
127
|
}) => {
|
|
129
|
-
return async (
|
|
130
|
-
const
|
|
131
|
-
const result = await loader({ params });
|
|
132
|
-
if (result instanceof Response) {
|
|
133
|
-
return result.json();
|
|
134
|
-
}
|
|
135
|
-
return result;
|
|
136
|
-
})() : {};
|
|
128
|
+
return async (args) => {
|
|
129
|
+
const { params } = args;
|
|
137
130
|
if (params["itemId"] === "new") {
|
|
138
|
-
return { item: void 0
|
|
131
|
+
return { item: void 0 };
|
|
139
132
|
}
|
|
140
133
|
const item = params["itemId"] ? await repository.find(params["itemId"]) : void 0;
|
|
141
134
|
return {
|
|
142
|
-
item
|
|
143
|
-
...body
|
|
135
|
+
item
|
|
144
136
|
};
|
|
145
137
|
};
|
|
146
138
|
};
|
|
@@ -4,9 +4,10 @@ import { LoaderFunctionArgs } from 'react-router';
|
|
|
4
4
|
import 'drizzle-orm/pg-core';
|
|
5
5
|
|
|
6
6
|
type TableItemLoaderOptions<T extends Table, TSelect> = {
|
|
7
|
-
loader?: (args: LoaderFunctionArgs) => Promise<any>;
|
|
8
7
|
repository: TableRepository<T, TSelect>;
|
|
9
8
|
};
|
|
10
|
-
declare const tableItemloader: <T extends Table, TSelect>({
|
|
9
|
+
declare const tableItemloader: <T extends Table, TSelect>({ repository, }: TableItemLoaderOptions<T, TSelect>) => (args: LoaderFunctionArgs) => Promise<{
|
|
10
|
+
item: Awaited<TSelect> | undefined;
|
|
11
|
+
}>;
|
|
11
12
|
|
|
12
13
|
export { type TableItemLoaderOptions, tableItemloader };
|
|
@@ -4,9 +4,10 @@ import { LoaderFunctionArgs } from 'react-router';
|
|
|
4
4
|
import 'drizzle-orm/pg-core';
|
|
5
5
|
|
|
6
6
|
type TableItemLoaderOptions<T extends Table, TSelect> = {
|
|
7
|
-
loader?: (args: LoaderFunctionArgs) => Promise<any>;
|
|
8
7
|
repository: TableRepository<T, TSelect>;
|
|
9
8
|
};
|
|
10
|
-
declare const tableItemloader: <T extends Table, TSelect>({
|
|
9
|
+
declare const tableItemloader: <T extends Table, TSelect>({ repository, }: TableItemLoaderOptions<T, TSelect>) => (args: LoaderFunctionArgs) => Promise<{
|
|
10
|
+
item: Awaited<TSelect> | undefined;
|
|
11
|
+
}>;
|
|
11
12
|
|
|
12
13
|
export { type TableItemLoaderOptions, tableItemloader };
|