@nestledjs/data-browser 0.1.12 → 0.1.13
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 +2 -0
- package/lib/components/RelationFieldWrapper.d.ts +9 -0
- package/lib/components/RelationFieldWrapper.js +63 -0
- package/lib/components/filters/DateRangeFilter.d.ts +1 -1
- package/lib/components/filters/DateRangeFilter.js +9 -9
- package/lib/components/filters/NumberRangeFilter.js +21 -21
- package/lib/components/filters/RelationComponents.d.ts +4 -4
- package/lib/components/filters/RelationComponents.js +16 -16
- package/lib/components/filters/RelationFilterField.js +16 -10
- package/lib/components/index.d.ts +1 -0
- package/lib/components/shared/AdminBreadcrumbs.js +3 -3
- package/lib/components/shared/AdminErrorStates.js +1 -1
- package/lib/components/shared/AdminStatusDisplay.js +1 -1
- package/lib/context/AdminDataContext.d.ts +1 -1
- package/lib/context/AdminDataContext.js +6 -5
- package/lib/hooks/useRelationData.d.ts +1 -1
- package/lib/hooks/useRelationData.js +3 -2
- package/lib/layouts/AdminDataLayout.js +53 -56
- package/lib/pages/AdminDataCreatePage.js +4 -4
- package/lib/pages/AdminDataEditPage.js +4 -4
- package/lib/pages/AdminDataIndexPage.js +14 -13
- package/lib/pages/AdminDataListPage.js +133 -99
- package/lib/utils/graphql-utils.d.ts +1 -1
- package/lib/utils/graphql-utils.js +119 -24
- package/lib/utils/string-utils.js +3 -3
- package/package.json +2 -2
|
@@ -1,21 +1,22 @@
|
|
|
1
|
+
import React, { useCallback, useEffect, useMemo } from "react";
|
|
1
2
|
import { useQuery } from "@apollo/client/react";
|
|
2
3
|
import { DataTable, ErrorBoundary } from "@nestledjs/shared-components";
|
|
3
4
|
import { getPluralName } from "@nestledjs/helpers";
|
|
4
5
|
import { AdminLocalStorage } from "../utils/secure-storage.js";
|
|
5
6
|
import { kebabCase, formatFieldName } from "../utils/string-utils.js";
|
|
6
|
-
import {
|
|
7
|
-
import { useParams, Link } from "react-router";
|
|
7
|
+
import { useParams, useSearchParams, Link } from "react-router";
|
|
8
8
|
import { DateRangeFilter } from "../components/filters/DateRangeFilter.js";
|
|
9
9
|
import { NumberRangeFilter } from "../components/filters/NumberRangeFilter.js";
|
|
10
10
|
import { RelationFilterField } from "../components/filters/RelationFilterField.js";
|
|
11
11
|
import { useAdminList } from "../hooks/useAdminList.js";
|
|
12
12
|
import { getAdminDocuments } from "../utils/graphql-utils.js";
|
|
13
13
|
import { useAdminDataContext } from "../context/AdminDataContext.js";
|
|
14
|
-
var _jsxFileName = "/Users/justinhandley/IdeaProjects/nestled_template/libs/
|
|
14
|
+
var _jsxFileName = "/Users/justinhandley/IdeaProjects/nestled_template/libs/data-browser/src/lib/pages/AdminDataListPage.tsx";
|
|
15
15
|
function AdminDataListPage({
|
|
16
16
|
modelName: propModelName
|
|
17
17
|
} = {}) {
|
|
18
18
|
const params = useParams();
|
|
19
|
+
const [searchParams] = useSearchParams();
|
|
19
20
|
const {
|
|
20
21
|
sdk,
|
|
21
22
|
databaseModels,
|
|
@@ -106,6 +107,39 @@ function AdminDataListPage({
|
|
|
106
107
|
return modelUrlName.toLowerCase() === pluralParam.toLowerCase();
|
|
107
108
|
});
|
|
108
109
|
}, [propModelName, pluralParam, databaseModels]);
|
|
110
|
+
const urlFilters = useMemo(() => {
|
|
111
|
+
if (!model) return {};
|
|
112
|
+
const filters2 = {};
|
|
113
|
+
for (const [key, value] of searchParams.entries()) {
|
|
114
|
+
if (key !== "page" && key !== "search" && key !== "sort") {
|
|
115
|
+
const relationField = model.fields.find((f) => {
|
|
116
|
+
var _a;
|
|
117
|
+
return f.relationName && !f.isList && ((_a = f.relationFromFields) == null ? void 0 : _a[0]) === key;
|
|
118
|
+
});
|
|
119
|
+
if (relationField) {
|
|
120
|
+
filters2[relationField.name] = {
|
|
121
|
+
id: value
|
|
122
|
+
};
|
|
123
|
+
} else {
|
|
124
|
+
filters2[key] = value;
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
return filters2;
|
|
129
|
+
}, [searchParams, model]);
|
|
130
|
+
useEffect(() => {
|
|
131
|
+
if (Object.keys(urlFilters).length > 0) {
|
|
132
|
+
dispatch({
|
|
133
|
+
type: "SET_FILTERS",
|
|
134
|
+
payload: urlFilters
|
|
135
|
+
});
|
|
136
|
+
if (!showFilters) {
|
|
137
|
+
dispatch({
|
|
138
|
+
type: "TOGGLE_FILTERS"
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
}, [urlFilters, showFilters]);
|
|
109
143
|
const documents = useMemo(() => {
|
|
110
144
|
if (!model) return {
|
|
111
145
|
query: void 0,
|
|
@@ -327,129 +361,129 @@ function AdminDataListPage({
|
|
|
327
361
|
if (!model) {
|
|
328
362
|
return /* @__PURE__ */ React.createElement("div", { className: "min-h-screen bg-gray-50 flex flex-col justify-center py-12 sm:px-6 lg:px-8", __self: this, __source: {
|
|
329
363
|
fileName: _jsxFileName,
|
|
330
|
-
lineNumber:
|
|
364
|
+
lineNumber: 451,
|
|
331
365
|
columnNumber: 7
|
|
332
366
|
} }, /* @__PURE__ */ React.createElement("div", { className: "mt-8 sm:mx-auto sm:w-full sm:max-w-md", __self: this, __source: {
|
|
333
367
|
fileName: _jsxFileName,
|
|
334
|
-
lineNumber:
|
|
368
|
+
lineNumber: 452,
|
|
335
369
|
columnNumber: 9
|
|
336
370
|
} }, /* @__PURE__ */ React.createElement("div", { className: "bg-white py-8 px-4 shadow sm:rounded-lg sm:px-10", __self: this, __source: {
|
|
337
371
|
fileName: _jsxFileName,
|
|
338
|
-
lineNumber:
|
|
372
|
+
lineNumber: 453,
|
|
339
373
|
columnNumber: 11
|
|
340
374
|
} }, /* @__PURE__ */ React.createElement("div", { className: "text-center", __self: this, __source: {
|
|
341
375
|
fileName: _jsxFileName,
|
|
342
|
-
lineNumber:
|
|
376
|
+
lineNumber: 454,
|
|
343
377
|
columnNumber: 13
|
|
344
378
|
} }, /* @__PURE__ */ React.createElement("svg", { className: "mx-auto h-12 w-12 text-red-400", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", __self: this, __source: {
|
|
345
379
|
fileName: _jsxFileName,
|
|
346
|
-
lineNumber:
|
|
380
|
+
lineNumber: 455,
|
|
347
381
|
columnNumber: 15
|
|
348
382
|
} }, /* @__PURE__ */ React.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M12 8v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z", __self: this, __source: {
|
|
349
383
|
fileName: _jsxFileName,
|
|
350
|
-
lineNumber:
|
|
384
|
+
lineNumber: 461,
|
|
351
385
|
columnNumber: 17
|
|
352
386
|
} })), /* @__PURE__ */ React.createElement("h2", { className: "mt-4 text-lg font-medium text-gray-900", __self: this, __source: {
|
|
353
387
|
fileName: _jsxFileName,
|
|
354
|
-
lineNumber:
|
|
388
|
+
lineNumber: 468,
|
|
355
389
|
columnNumber: 15
|
|
356
390
|
} }, "Invalid Data Type"), /* @__PURE__ */ React.createElement("p", { className: "mt-2 text-sm text-gray-600", __self: this, __source: {
|
|
357
391
|
fileName: _jsxFileName,
|
|
358
|
-
lineNumber:
|
|
392
|
+
lineNumber: 469,
|
|
359
393
|
columnNumber: 15
|
|
360
394
|
} }, 'The data type "', pluralParam, '" is not recognized.'), /* @__PURE__ */ React.createElement("div", { className: "mt-6", __self: this, __source: {
|
|
361
395
|
fileName: _jsxFileName,
|
|
362
|
-
lineNumber:
|
|
396
|
+
lineNumber: 472,
|
|
363
397
|
columnNumber: 15
|
|
364
398
|
} }, /* @__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: {
|
|
365
399
|
fileName: _jsxFileName,
|
|
366
|
-
lineNumber:
|
|
400
|
+
lineNumber: 473,
|
|
367
401
|
columnNumber: 17
|
|
368
402
|
} }, "Return to Data Browser"))))));
|
|
369
403
|
}
|
|
370
404
|
if (!query) {
|
|
371
405
|
return /* @__PURE__ */ React.createElement("div", { className: "min-h-screen bg-gray-50 flex flex-col justify-center py-12 sm:px-6 lg:px-8", __self: this, __source: {
|
|
372
406
|
fileName: _jsxFileName,
|
|
373
|
-
lineNumber:
|
|
407
|
+
lineNumber: 489,
|
|
374
408
|
columnNumber: 7
|
|
375
409
|
} }, /* @__PURE__ */ React.createElement("div", { className: "mt-8 sm:mx-auto sm:w-full sm:max-w-md", __self: this, __source: {
|
|
376
410
|
fileName: _jsxFileName,
|
|
377
|
-
lineNumber:
|
|
411
|
+
lineNumber: 490,
|
|
378
412
|
columnNumber: 9
|
|
379
413
|
} }, /* @__PURE__ */ React.createElement("div", { className: "bg-white py-8 px-4 shadow sm:rounded-lg sm:px-10", __self: this, __source: {
|
|
380
414
|
fileName: _jsxFileName,
|
|
381
|
-
lineNumber:
|
|
415
|
+
lineNumber: 491,
|
|
382
416
|
columnNumber: 11
|
|
383
417
|
} }, /* @__PURE__ */ React.createElement("div", { className: "text-center", __self: this, __source: {
|
|
384
418
|
fileName: _jsxFileName,
|
|
385
|
-
lineNumber:
|
|
419
|
+
lineNumber: 492,
|
|
386
420
|
columnNumber: 13
|
|
387
421
|
} }, /* @__PURE__ */ React.createElement("svg", { className: "mx-auto h-12 w-12 text-yellow-400", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", __self: this, __source: {
|
|
388
422
|
fileName: _jsxFileName,
|
|
389
|
-
lineNumber:
|
|
423
|
+
lineNumber: 493,
|
|
390
424
|
columnNumber: 15
|
|
391
425
|
} }, /* @__PURE__ */ React.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-2.5L13.732 4c-.77-.833-1.728-.833-2.498 0L5.316 15c-.77.833.192 2.5 1.732 2.5z", __self: this, __source: {
|
|
392
426
|
fileName: _jsxFileName,
|
|
393
|
-
lineNumber:
|
|
427
|
+
lineNumber: 499,
|
|
394
428
|
columnNumber: 17
|
|
395
429
|
} })), /* @__PURE__ */ React.createElement("h2", { className: "mt-4 text-lg font-medium text-gray-900", __self: this, __source: {
|
|
396
430
|
fileName: _jsxFileName,
|
|
397
|
-
lineNumber:
|
|
431
|
+
lineNumber: 506,
|
|
398
432
|
columnNumber: 15
|
|
399
433
|
} }, "GraphQL Schema Not Available"), /* @__PURE__ */ React.createElement("p", { className: "mt-2 text-sm text-gray-600", __self: this, __source: {
|
|
400
434
|
fileName: _jsxFileName,
|
|
401
|
-
lineNumber:
|
|
435
|
+
lineNumber: 509,
|
|
402
436
|
columnNumber: 15
|
|
403
437
|
} }, 'No GraphQL query found for "', model.name, '". The admin schema may need to be regenerated.'), /* @__PURE__ */ React.createElement("div", { className: "mt-6 space-y-3", __self: this, __source: {
|
|
404
438
|
fileName: _jsxFileName,
|
|
405
|
-
lineNumber:
|
|
439
|
+
lineNumber: 513,
|
|
406
440
|
columnNumber: 15
|
|
407
441
|
} }, /* @__PURE__ */ React.createElement("button", { onClick: () => window.location.reload(), 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: {
|
|
408
442
|
fileName: _jsxFileName,
|
|
409
|
-
lineNumber:
|
|
443
|
+
lineNumber: 514,
|
|
410
444
|
columnNumber: 17
|
|
411
445
|
} }, "Reload Page"), /* @__PURE__ */ React.createElement(Link, { to: basePath, 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: {
|
|
412
446
|
fileName: _jsxFileName,
|
|
413
|
-
lineNumber:
|
|
447
|
+
lineNumber: 520,
|
|
414
448
|
columnNumber: 17
|
|
415
449
|
} }, "Return to Data Browser"))))));
|
|
416
450
|
}
|
|
417
451
|
const createLink = `${basePath}/${kebabCase(model.name)}/create`;
|
|
418
452
|
const columnSelector = /* @__PURE__ */ React.createElement("div", { className: "relative", "data-dropdown": "column-selector", __self: this, __source: {
|
|
419
453
|
fileName: _jsxFileName,
|
|
420
|
-
lineNumber:
|
|
454
|
+
lineNumber: 539,
|
|
421
455
|
columnNumber: 5
|
|
422
456
|
} }, /* @__PURE__ */ React.createElement("button", { onClick: () => setShowColumnSelector(!showColumnSelector), className: "inline-flex items-center px-3 py-2 border border-gray-300 text-sm font-medium rounded-md 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: {
|
|
423
457
|
fileName: _jsxFileName,
|
|
424
|
-
lineNumber:
|
|
458
|
+
lineNumber: 540,
|
|
425
459
|
columnNumber: 7
|
|
426
460
|
} }, "Columns", /* @__PURE__ */ React.createElement("svg", { className: "-mr-0.5 ml-2 h-4 w-4", xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 20 20", fill: "currentColor", __self: this, __source: {
|
|
427
461
|
fileName: _jsxFileName,
|
|
428
|
-
lineNumber:
|
|
462
|
+
lineNumber: 545,
|
|
429
463
|
columnNumber: 9
|
|
430
464
|
} }, /* @__PURE__ */ React.createElement("path", { fillRule: "evenodd", d: "M5.293 7.293a1 1 0 011.414 0L10 10.586l3.293-3.293a1 1 0 111.414 1.414l-4 4a1 1 0 01-1.414 0l-4-4a1 1 0 010-1.414z", clipRule: "evenodd", __self: this, __source: {
|
|
431
465
|
fileName: _jsxFileName,
|
|
432
|
-
lineNumber:
|
|
466
|
+
lineNumber: 551,
|
|
433
467
|
columnNumber: 11
|
|
434
468
|
} }))), showColumnSelector && /* @__PURE__ */ React.createElement("div", { className: "absolute right-0 mt-2 w-80 bg-white rounded-md shadow-lg z-50 border border-gray-200", __self: this, __source: {
|
|
435
469
|
fileName: _jsxFileName,
|
|
436
|
-
lineNumber:
|
|
470
|
+
lineNumber: 560,
|
|
437
471
|
columnNumber: 9
|
|
438
472
|
} }, /* @__PURE__ */ React.createElement("div", { className: "p-4", __self: this, __source: {
|
|
439
473
|
fileName: _jsxFileName,
|
|
440
|
-
lineNumber:
|
|
474
|
+
lineNumber: 561,
|
|
441
475
|
columnNumber: 11
|
|
442
476
|
} }, /* @__PURE__ */ React.createElement("h3", { className: "text-sm font-medium text-gray-900 mb-3", __self: this, __source: {
|
|
443
477
|
fileName: _jsxFileName,
|
|
444
|
-
lineNumber:
|
|
478
|
+
lineNumber: 562,
|
|
445
479
|
columnNumber: 13
|
|
446
480
|
} }, "Visible Columns"), /* @__PURE__ */ React.createElement("div", { className: "space-y-2 max-h-64 overflow-y-auto", __self: this, __source: {
|
|
447
481
|
fileName: _jsxFileName,
|
|
448
|
-
lineNumber:
|
|
482
|
+
lineNumber: 563,
|
|
449
483
|
columnNumber: 13
|
|
450
484
|
} }, fieldNames.map((field) => /* @__PURE__ */ React.createElement("label", { key: field, className: "flex items-start gap-2 cursor-pointer", __self: this, __source: {
|
|
451
485
|
fileName: _jsxFileName,
|
|
452
|
-
lineNumber:
|
|
486
|
+
lineNumber: 565,
|
|
453
487
|
columnNumber: 17
|
|
454
488
|
} }, /* @__PURE__ */ React.createElement("input", { type: "checkbox", checked: visibleColumns.includes(field), onChange: (e) => {
|
|
455
489
|
const newColumns = e.target.checked ? [...visibleColumns, field] : visibleColumns.filter((col) => col !== field);
|
|
@@ -457,22 +491,22 @@ function AdminDataListPage({
|
|
|
457
491
|
AdminLocalStorage.setColumnVisibility(model.name, newColumns);
|
|
458
492
|
}, className: "h-4 w-4 mt-0.5 flex-shrink-0 text-green-web focus:ring-green-web border-gray-300 rounded", __self: this, __source: {
|
|
459
493
|
fileName: _jsxFileName,
|
|
460
|
-
lineNumber:
|
|
494
|
+
lineNumber: 566,
|
|
461
495
|
columnNumber: 19
|
|
462
496
|
} }), /* @__PURE__ */ React.createElement("span", { className: "text-sm text-gray-700 leading-5", __self: this, __source: {
|
|
463
497
|
fileName: _jsxFileName,
|
|
464
|
-
lineNumber:
|
|
498
|
+
lineNumber: 578,
|
|
465
499
|
columnNumber: 19
|
|
466
500
|
} }, formatFieldName(field))))), /* @__PURE__ */ React.createElement("div", { className: "mt-3 pt-3 border-t border-gray-200 flex justify-between", __self: this, __source: {
|
|
467
501
|
fileName: _jsxFileName,
|
|
468
|
-
lineNumber:
|
|
502
|
+
lineNumber: 582,
|
|
469
503
|
columnNumber: 13
|
|
470
504
|
} }, /* @__PURE__ */ React.createElement("button", { onClick: () => {
|
|
471
505
|
setVisibleColumns(fieldNames);
|
|
472
506
|
AdminLocalStorage.setColumnVisibility(model.name, fieldNames);
|
|
473
507
|
}, className: "text-xs text-green-web hover:text-green-web-800", __self: this, __source: {
|
|
474
508
|
fileName: _jsxFileName,
|
|
475
|
-
lineNumber:
|
|
509
|
+
lineNumber: 583,
|
|
476
510
|
columnNumber: 15
|
|
477
511
|
} }, "Select All"), /* @__PURE__ */ React.createElement("button", { onClick: () => {
|
|
478
512
|
const defaults = fieldNames.slice(0, 8);
|
|
@@ -480,44 +514,44 @@ function AdminDataListPage({
|
|
|
480
514
|
AdminLocalStorage.setColumnVisibility(model.name, defaults);
|
|
481
515
|
}, className: "text-xs text-gray-600 hover:text-gray-800", __self: this, __source: {
|
|
482
516
|
fileName: _jsxFileName,
|
|
483
|
-
lineNumber:
|
|
517
|
+
lineNumber: 592,
|
|
484
518
|
columnNumber: 15
|
|
485
519
|
} }, "Reset to Defaults")))));
|
|
486
520
|
const searchFieldSelector = /* @__PURE__ */ React.createElement("div", { className: "relative", "data-dropdown": "search-field-selector", __self: this, __source: {
|
|
487
521
|
fileName: _jsxFileName,
|
|
488
|
-
lineNumber:
|
|
522
|
+
lineNumber: 611,
|
|
489
523
|
columnNumber: 5
|
|
490
524
|
} }, /* @__PURE__ */ React.createElement("button", { onClick: () => setShowSearchFieldSelector(!showSearchFieldSelector), className: "h-full px-3 border-l border-gray-300 text-gray-400 hover:text-gray-600 focus:outline-none focus:text-gray-600", "aria-label": "Configure search fields", __self: this, __source: {
|
|
491
525
|
fileName: _jsxFileName,
|
|
492
|
-
lineNumber:
|
|
526
|
+
lineNumber: 612,
|
|
493
527
|
columnNumber: 7
|
|
494
528
|
} }, /* @__PURE__ */ React.createElement("svg", { className: "h-4 w-4", xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 20 20", fill: "currentColor", __self: this, __source: {
|
|
495
529
|
fileName: _jsxFileName,
|
|
496
|
-
lineNumber:
|
|
530
|
+
lineNumber: 617,
|
|
497
531
|
columnNumber: 9
|
|
498
532
|
} }, /* @__PURE__ */ React.createElement("path", { fillRule: "evenodd", d: "M3 3a1 1 0 000 2v8a2 2 0 002 2h2.586l-1.293 1.293a1 1 0 101.414 1.414L10 15.414l2.293 2.293a1 1 0 001.414-1.414L12.414 15H15a2 2 0 002-2V5a1 1 0 100-2H3zm11.707 4.707a1 1 0 00-1.414-1.414L10 9.586 8.707 8.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z", clipRule: "evenodd", __self: this, __source: {
|
|
499
533
|
fileName: _jsxFileName,
|
|
500
|
-
lineNumber:
|
|
534
|
+
lineNumber: 623,
|
|
501
535
|
columnNumber: 11
|
|
502
536
|
} }))), showSearchFieldSelector && /* @__PURE__ */ React.createElement("div", { className: "absolute right-0 mt-2 w-72 bg-white rounded-md shadow-lg z-50 border border-gray-200", __self: this, __source: {
|
|
503
537
|
fileName: _jsxFileName,
|
|
504
|
-
lineNumber:
|
|
538
|
+
lineNumber: 632,
|
|
505
539
|
columnNumber: 9
|
|
506
540
|
} }, /* @__PURE__ */ React.createElement("div", { className: "p-4", __self: this, __source: {
|
|
507
541
|
fileName: _jsxFileName,
|
|
508
|
-
lineNumber:
|
|
542
|
+
lineNumber: 633,
|
|
509
543
|
columnNumber: 11
|
|
510
544
|
} }, /* @__PURE__ */ React.createElement("h3", { className: "text-sm font-medium text-gray-900 mb-3", __self: this, __source: {
|
|
511
545
|
fileName: _jsxFileName,
|
|
512
|
-
lineNumber:
|
|
546
|
+
lineNumber: 634,
|
|
513
547
|
columnNumber: 13
|
|
514
548
|
} }, "Search Fields"), searchableFieldNames.length > 0 ? /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement("div", { className: "space-y-2 max-h-48 overflow-y-auto", __self: this, __source: {
|
|
515
549
|
fileName: _jsxFileName,
|
|
516
|
-
lineNumber:
|
|
550
|
+
lineNumber: 637,
|
|
517
551
|
columnNumber: 17
|
|
518
552
|
} }, searchableFieldNames.map((field) => /* @__PURE__ */ React.createElement("label", { key: field, className: "flex items-start gap-2 cursor-pointer", __self: this, __source: {
|
|
519
553
|
fileName: _jsxFileName,
|
|
520
|
-
lineNumber:
|
|
554
|
+
lineNumber: 639,
|
|
521
555
|
columnNumber: 21
|
|
522
556
|
} }, /* @__PURE__ */ React.createElement("input", { type: "checkbox", checked: searchFields.includes(field), onChange: (e) => {
|
|
523
557
|
const newFields = e.target.checked ? [...searchFields, field] : searchFields.filter((f) => f !== field);
|
|
@@ -525,22 +559,22 @@ function AdminDataListPage({
|
|
|
525
559
|
AdminLocalStorage.setSearchFields(model.name, newFields);
|
|
526
560
|
}, className: "h-4 w-4 mt-0.5 flex-shrink-0 text-green-web focus:ring-green-web border-gray-300 rounded", __self: this, __source: {
|
|
527
561
|
fileName: _jsxFileName,
|
|
528
|
-
lineNumber:
|
|
562
|
+
lineNumber: 640,
|
|
529
563
|
columnNumber: 23
|
|
530
564
|
} }), /* @__PURE__ */ React.createElement("span", { className: "text-sm text-gray-700 leading-5", __self: this, __source: {
|
|
531
565
|
fileName: _jsxFileName,
|
|
532
|
-
lineNumber:
|
|
566
|
+
lineNumber: 652,
|
|
533
567
|
columnNumber: 23
|
|
534
568
|
} }, formatFieldName(field))))), /* @__PURE__ */ React.createElement("div", { className: "mt-3 pt-3 border-t border-gray-200 flex justify-between", __self: this, __source: {
|
|
535
569
|
fileName: _jsxFileName,
|
|
536
|
-
lineNumber:
|
|
570
|
+
lineNumber: 658,
|
|
537
571
|
columnNumber: 17
|
|
538
572
|
} }, /* @__PURE__ */ React.createElement("button", { onClick: () => {
|
|
539
573
|
setSearchFields(searchableFieldNames);
|
|
540
574
|
AdminLocalStorage.setSearchFields(model.name, searchableFieldNames);
|
|
541
575
|
}, className: "text-xs text-green-web hover:text-green-web-800 mr-3", __self: this, __source: {
|
|
542
576
|
fileName: _jsxFileName,
|
|
543
|
-
lineNumber:
|
|
577
|
+
lineNumber: 659,
|
|
544
578
|
columnNumber: 19
|
|
545
579
|
} }, "Select All"), /* @__PURE__ */ React.createElement("button", { onClick: () => {
|
|
546
580
|
const defaults = getDefaultSearchFields(searchableFieldNames);
|
|
@@ -548,28 +582,28 @@ function AdminDataListPage({
|
|
|
548
582
|
AdminLocalStorage.setSearchFields(model.name, defaults);
|
|
549
583
|
}, className: "text-xs text-gray-600 hover:text-gray-800", __self: this, __source: {
|
|
550
584
|
fileName: _jsxFileName,
|
|
551
|
-
lineNumber:
|
|
585
|
+
lineNumber: 668,
|
|
552
586
|
columnNumber: 19
|
|
553
587
|
} }, "Reset to Defaults"))) : /* @__PURE__ */ React.createElement("div", { className: "text-sm text-gray-500", __self: this, __source: {
|
|
554
588
|
fileName: _jsxFileName,
|
|
555
|
-
lineNumber:
|
|
589
|
+
lineNumber: 681,
|
|
556
590
|
columnNumber: 15
|
|
557
591
|
} }, "No searchable text fields available"))));
|
|
558
592
|
const filterPanel = showFilters && /* @__PURE__ */ React.createElement("div", { className: "mb-4 bg-gray-50 border border-gray-200 rounded-lg p-4", __self: this, __source: {
|
|
559
593
|
fileName: _jsxFileName,
|
|
560
|
-
lineNumber:
|
|
594
|
+
lineNumber: 691,
|
|
561
595
|
columnNumber: 5
|
|
562
596
|
} }, /* @__PURE__ */ React.createElement("div", { className: "flex items-center justify-between mb-3", __self: this, __source: {
|
|
563
597
|
fileName: _jsxFileName,
|
|
564
|
-
lineNumber:
|
|
598
|
+
lineNumber: 692,
|
|
565
599
|
columnNumber: 7
|
|
566
600
|
} }, /* @__PURE__ */ React.createElement("h3", { className: "text-sm font-medium text-gray-900", __self: this, __source: {
|
|
567
601
|
fileName: _jsxFileName,
|
|
568
|
-
lineNumber:
|
|
602
|
+
lineNumber: 693,
|
|
569
603
|
columnNumber: 9
|
|
570
604
|
} }, "Filters"), /* @__PURE__ */ React.createElement("div", { className: "flex items-center space-x-2", __self: this, __source: {
|
|
571
605
|
fileName: _jsxFileName,
|
|
572
|
-
lineNumber:
|
|
606
|
+
lineNumber: 694,
|
|
573
607
|
columnNumber: 9
|
|
574
608
|
} }, /* @__PURE__ */ React.createElement("button", { onClick: () => {
|
|
575
609
|
setFilters({});
|
|
@@ -578,23 +612,23 @@ function AdminDataListPage({
|
|
|
578
612
|
});
|
|
579
613
|
}, className: "text-xs text-gray-600 hover:text-gray-800", __self: this, __source: {
|
|
580
614
|
fileName: _jsxFileName,
|
|
581
|
-
lineNumber:
|
|
615
|
+
lineNumber: 695,
|
|
582
616
|
columnNumber: 11
|
|
583
617
|
} }, "Clear All"), /* @__PURE__ */ React.createElement("button", { onClick: () => setShowFilters(false), className: "text-gray-400 hover:text-gray-600", __self: this, __source: {
|
|
584
618
|
fileName: _jsxFileName,
|
|
585
|
-
lineNumber:
|
|
619
|
+
lineNumber: 704,
|
|
586
620
|
columnNumber: 11
|
|
587
621
|
} }, /* @__PURE__ */ React.createElement("svg", { className: "h-5 w-5", xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 20 20", fill: "currentColor", __self: this, __source: {
|
|
588
622
|
fileName: _jsxFileName,
|
|
589
|
-
lineNumber:
|
|
623
|
+
lineNumber: 708,
|
|
590
624
|
columnNumber: 13
|
|
591
625
|
} }, /* @__PURE__ */ React.createElement("path", { fillRule: "evenodd", d: "M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z", clipRule: "evenodd", __self: this, __source: {
|
|
592
626
|
fileName: _jsxFileName,
|
|
593
|
-
lineNumber:
|
|
627
|
+
lineNumber: 714,
|
|
594
628
|
columnNumber: 15
|
|
595
629
|
} }))))), /* @__PURE__ */ React.createElement("div", { className: "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4", __self: this, __source: {
|
|
596
630
|
fileName: _jsxFileName,
|
|
597
|
-
lineNumber:
|
|
631
|
+
lineNumber: 724,
|
|
598
632
|
columnNumber: 7
|
|
599
633
|
} }, filterableFieldNames.map((fieldName) => {
|
|
600
634
|
const field = model.fields.find((f) => f.name === fieldName);
|
|
@@ -617,21 +651,21 @@ function AdminDataListPage({
|
|
|
617
651
|
if (field.relationName && !field.isList) {
|
|
618
652
|
return /* @__PURE__ */ React.createElement(RelationFilterField, { key: fieldName, fieldName, relatedModelName: field.type, currentValue, onChange: handleChange, __self: this, __source: {
|
|
619
653
|
fileName: _jsxFileName,
|
|
620
|
-
lineNumber:
|
|
654
|
+
lineNumber: 744,
|
|
621
655
|
columnNumber: 15
|
|
622
656
|
} });
|
|
623
657
|
}
|
|
624
658
|
if (field.type.toLowerCase() === "datetime" || field.type.toLowerCase() === "date") {
|
|
625
659
|
return /* @__PURE__ */ React.createElement(DateRangeFilter, { key: fieldName, fieldName, currentValue, onChange: handleChange, __self: this, __source: {
|
|
626
660
|
fileName: _jsxFileName,
|
|
627
|
-
lineNumber:
|
|
661
|
+
lineNumber: 757,
|
|
628
662
|
columnNumber: 15
|
|
629
663
|
} });
|
|
630
664
|
}
|
|
631
665
|
if (["int", "bigint", "float", "decimal"].includes(field.type.toLowerCase())) {
|
|
632
666
|
return /* @__PURE__ */ React.createElement(NumberRangeFilter, { key: fieldName, fieldName, fieldType: field.type.toLowerCase(), currentValue, onChange: handleChange, __self: this, __source: {
|
|
633
667
|
fileName: _jsxFileName,
|
|
634
|
-
lineNumber:
|
|
668
|
+
lineNumber: 769,
|
|
635
669
|
columnNumber: 15
|
|
636
670
|
} });
|
|
637
671
|
}
|
|
@@ -640,23 +674,23 @@ function AdminDataListPage({
|
|
|
640
674
|
if (enumValues) {
|
|
641
675
|
return /* @__PURE__ */ React.createElement("div", { key: fieldName, className: "space-y-1", __self: this, __source: {
|
|
642
676
|
fileName: _jsxFileName,
|
|
643
|
-
lineNumber:
|
|
677
|
+
lineNumber: 784,
|
|
644
678
|
columnNumber: 17
|
|
645
679
|
} }, /* @__PURE__ */ React.createElement("label", { className: "block text-sm font-medium text-gray-700", __self: this, __source: {
|
|
646
680
|
fileName: _jsxFileName,
|
|
647
|
-
lineNumber:
|
|
681
|
+
lineNumber: 785,
|
|
648
682
|
columnNumber: 19
|
|
649
683
|
} }, formatFieldName(fieldName)), /* @__PURE__ */ React.createElement("select", { value: typeof currentValue === "string" ? currentValue : "", onChange: (e) => handleChange(e.target.value || void 0), className: "w-full px-3 py-2 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-green-web focus:border-green-web text-sm", __self: this, __source: {
|
|
650
684
|
fileName: _jsxFileName,
|
|
651
|
-
lineNumber:
|
|
685
|
+
lineNumber: 788,
|
|
652
686
|
columnNumber: 19
|
|
653
687
|
} }, /* @__PURE__ */ React.createElement("option", { value: "", __self: this, __source: {
|
|
654
688
|
fileName: _jsxFileName,
|
|
655
|
-
lineNumber:
|
|
689
|
+
lineNumber: 793,
|
|
656
690
|
columnNumber: 21
|
|
657
691
|
} }, "All"), enumValues.map((val) => /* @__PURE__ */ React.createElement("option", { key: val, value: val, __self: this, __source: {
|
|
658
692
|
fileName: _jsxFileName,
|
|
659
|
-
lineNumber:
|
|
693
|
+
lineNumber: 795,
|
|
660
694
|
columnNumber: 23
|
|
661
695
|
} }, val))));
|
|
662
696
|
}
|
|
@@ -664,121 +698,121 @@ function AdminDataListPage({
|
|
|
664
698
|
if (field.type.toLowerCase() === "boolean") {
|
|
665
699
|
return /* @__PURE__ */ React.createElement("div", { key: fieldName, className: "space-y-1", __self: this, __source: {
|
|
666
700
|
fileName: _jsxFileName,
|
|
667
|
-
lineNumber:
|
|
701
|
+
lineNumber: 808,
|
|
668
702
|
columnNumber: 15
|
|
669
703
|
} }, /* @__PURE__ */ React.createElement("label", { className: "block text-sm font-medium text-gray-700", __self: this, __source: {
|
|
670
704
|
fileName: _jsxFileName,
|
|
671
|
-
lineNumber:
|
|
705
|
+
lineNumber: 809,
|
|
672
706
|
columnNumber: 17
|
|
673
707
|
} }, formatFieldName(fieldName)), /* @__PURE__ */ React.createElement("select", { value: currentValue === void 0 || currentValue === null ? "" : currentValue.toString(), onChange: (e) => {
|
|
674
708
|
const value = e.target.value;
|
|
675
709
|
handleChange(value === "" ? void 0 : value === "true");
|
|
676
710
|
}, className: "w-full px-3 py-2 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-green-web focus:border-green-web text-sm", __self: this, __source: {
|
|
677
711
|
fileName: _jsxFileName,
|
|
678
|
-
lineNumber:
|
|
712
|
+
lineNumber: 812,
|
|
679
713
|
columnNumber: 17
|
|
680
714
|
} }, /* @__PURE__ */ React.createElement("option", { value: "", __self: this, __source: {
|
|
681
715
|
fileName: _jsxFileName,
|
|
682
|
-
lineNumber:
|
|
716
|
+
lineNumber: 820,
|
|
683
717
|
columnNumber: 19
|
|
684
718
|
} }, "All"), /* @__PURE__ */ React.createElement("option", { value: "true", __self: this, __source: {
|
|
685
719
|
fileName: _jsxFileName,
|
|
686
|
-
lineNumber:
|
|
720
|
+
lineNumber: 821,
|
|
687
721
|
columnNumber: 19
|
|
688
722
|
} }, "Yes"), /* @__PURE__ */ React.createElement("option", { value: "false", __self: this, __source: {
|
|
689
723
|
fileName: _jsxFileName,
|
|
690
|
-
lineNumber:
|
|
724
|
+
lineNumber: 822,
|
|
691
725
|
columnNumber: 19
|
|
692
726
|
} }, "No")));
|
|
693
727
|
}
|
|
694
728
|
return /* @__PURE__ */ React.createElement("div", { key: fieldName, className: "space-y-1", __self: this, __source: {
|
|
695
729
|
fileName: _jsxFileName,
|
|
696
|
-
lineNumber:
|
|
730
|
+
lineNumber: 830,
|
|
697
731
|
columnNumber: 13
|
|
698
732
|
} }, /* @__PURE__ */ React.createElement("label", { className: "block text-sm font-medium text-gray-700", __self: this, __source: {
|
|
699
733
|
fileName: _jsxFileName,
|
|
700
|
-
lineNumber:
|
|
734
|
+
lineNumber: 831,
|
|
701
735
|
columnNumber: 15
|
|
702
736
|
} }, formatFieldName(fieldName)), /* @__PURE__ */ React.createElement("input", { type: "text", value: typeof currentValue === "string" ? currentValue : "", onChange: (e) => handleChange(e.target.value || void 0), placeholder: `Filter by ${formatFieldName(fieldName).toLowerCase()}...`, className: "w-full px-3 py-2 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-green-web focus:border-green-web text-sm", __self: this, __source: {
|
|
703
737
|
fileName: _jsxFileName,
|
|
704
|
-
lineNumber:
|
|
738
|
+
lineNumber: 834,
|
|
705
739
|
columnNumber: 15
|
|
706
740
|
} }));
|
|
707
741
|
})));
|
|
708
742
|
const searchFilter = /* @__PURE__ */ React.createElement("div", { className: "mb-4 flex items-center justify-between", __self: this, __source: {
|
|
709
743
|
fileName: _jsxFileName,
|
|
710
|
-
lineNumber:
|
|
744
|
+
lineNumber: 849,
|
|
711
745
|
columnNumber: 5
|
|
712
746
|
} }, /* @__PURE__ */ React.createElement("div", { className: "flex-1 max-w-lg", __self: this, __source: {
|
|
713
747
|
fileName: _jsxFileName,
|
|
714
|
-
lineNumber:
|
|
748
|
+
lineNumber: 850,
|
|
715
749
|
columnNumber: 7
|
|
716
750
|
} }, /* @__PURE__ */ React.createElement("label", { htmlFor: "search", className: "sr-only", __self: this, __source: {
|
|
717
751
|
fileName: _jsxFileName,
|
|
718
|
-
lineNumber:
|
|
752
|
+
lineNumber: 851,
|
|
719
753
|
columnNumber: 9
|
|
720
754
|
} }, "Search"), /* @__PURE__ */ React.createElement("div", { className: "relative", __self: this, __source: {
|
|
721
755
|
fileName: _jsxFileName,
|
|
722
|
-
lineNumber:
|
|
756
|
+
lineNumber: 854,
|
|
723
757
|
columnNumber: 9
|
|
724
758
|
} }, /* @__PURE__ */ React.createElement("div", { className: "absolute inset-y-0 left-0 pl-3 flex items-center pointer-events-none", __self: this, __source: {
|
|
725
759
|
fileName: _jsxFileName,
|
|
726
|
-
lineNumber:
|
|
760
|
+
lineNumber: 855,
|
|
727
761
|
columnNumber: 11
|
|
728
762
|
} }, loading && search !== debouncedSearch ? /* @__PURE__ */ React.createElement("svg", { className: "animate-spin h-5 w-5 text-gray-400", xmlns: "http://www.w3.org/2000/svg", fill: "none", viewBox: "0 0 24 24", __self: this, __source: {
|
|
729
763
|
fileName: _jsxFileName,
|
|
730
|
-
lineNumber:
|
|
764
|
+
lineNumber: 857,
|
|
731
765
|
columnNumber: 15
|
|
732
766
|
} }, /* @__PURE__ */ React.createElement("circle", { className: "opacity-25", cx: "12", cy: "12", r: "10", stroke: "currentColor", strokeWidth: "4", __self: this, __source: {
|
|
733
767
|
fileName: _jsxFileName,
|
|
734
|
-
lineNumber:
|
|
768
|
+
lineNumber: 863,
|
|
735
769
|
columnNumber: 17
|
|
736
770
|
} }), /* @__PURE__ */ React.createElement("path", { className: "opacity-75", fill: "currentColor", d: "M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z", __self: this, __source: {
|
|
737
771
|
fileName: _jsxFileName,
|
|
738
|
-
lineNumber:
|
|
772
|
+
lineNumber: 871,
|
|
739
773
|
columnNumber: 17
|
|
740
774
|
} })) : /* @__PURE__ */ React.createElement("svg", { className: "h-5 w-5 text-gray-400", xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 20 20", fill: "currentColor", "aria-hidden": "true", __self: this, __source: {
|
|
741
775
|
fileName: _jsxFileName,
|
|
742
|
-
lineNumber:
|
|
776
|
+
lineNumber: 878,
|
|
743
777
|
columnNumber: 15
|
|
744
778
|
} }, /* @__PURE__ */ React.createElement("path", { fillRule: "evenodd", d: "M8 4a4 4 0 100 8 4 4 0 000-8zM2 8a6 6 0 1110.89 3.476l4.817 4.817a1 1 0 01-1.414 1.414l-4.816-4.816A6 6 0 012 8z", clipRule: "evenodd", __self: this, __source: {
|
|
745
779
|
fileName: _jsxFileName,
|
|
746
|
-
lineNumber:
|
|
780
|
+
lineNumber: 885,
|
|
747
781
|
columnNumber: 17
|
|
748
782
|
} }))), /* @__PURE__ */ React.createElement("input", { id: "search", name: "search", className: "block w-full pl-10 pr-12 py-2 border border-gray-300 rounded-md leading-5 bg-white placeholder-gray-500 focus:outline-none focus:placeholder-gray-400 focus:ring-1 focus:ring-green-web focus:border-green-web sm:text-sm", placeholder: `Search ${searchFields.length > 0 ? searchFields.map((field) => field.replace(/([a-z])([A-Z])/g, "$1 $2").replace(/^./, (str) => str.toUpperCase())).join(", ") : getPluralName(model.name).toLowerCase()}...`, type: "search", value: state.search || "", onChange: (e) => dispatch({
|
|
749
783
|
type: "SET_SEARCH",
|
|
750
784
|
payload: e.target.value
|
|
751
785
|
}), __self: this, __source: {
|
|
752
786
|
fileName: _jsxFileName,
|
|
753
|
-
lineNumber:
|
|
787
|
+
lineNumber: 893,
|
|
754
788
|
columnNumber: 11
|
|
755
789
|
} }), searchableFieldNames.length > 0 && /* @__PURE__ */ React.createElement("div", { className: "absolute inset-y-0 right-0 flex items-center", __self: this, __source: {
|
|
756
790
|
fileName: _jsxFileName,
|
|
757
|
-
lineNumber:
|
|
791
|
+
lineNumber: 903,
|
|
758
792
|
columnNumber: 13
|
|
759
793
|
} }, searchFieldSelector))), /* @__PURE__ */ React.createElement("div", { className: "ml-4 flex space-x-2", __self: this, __source: {
|
|
760
794
|
fileName: _jsxFileName,
|
|
761
|
-
lineNumber:
|
|
795
|
+
lineNumber: 909,
|
|
762
796
|
columnNumber: 7
|
|
763
797
|
} }, /* @__PURE__ */ React.createElement("button", { onClick: () => setShowFilters(!showFilters), className: `inline-flex items-center px-3 py-2 border text-sm font-medium rounded-md focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-green-web ${showFilters || Object.keys(filters).length > 0 ? "border-green-web text-green-web bg-green-50 hover:bg-green-100" : "border-gray-300 text-gray-700 bg-white hover:bg-gray-50"}`, __self: this, __source: {
|
|
764
798
|
fileName: _jsxFileName,
|
|
765
|
-
lineNumber:
|
|
799
|
+
lineNumber: 910,
|
|
766
800
|
columnNumber: 9
|
|
767
801
|
} }, /* @__PURE__ */ React.createElement("svg", { className: "w-4 h-4 mr-2", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", __self: this, __source: {
|
|
768
802
|
fileName: _jsxFileName,
|
|
769
|
-
lineNumber:
|
|
803
|
+
lineNumber: 918,
|
|
770
804
|
columnNumber: 11
|
|
771
805
|
} }, /* @__PURE__ */ React.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M3 4a1 1 0 011-1h16a1 1 0 011 1v2.586a1 1 0 01-.293.707l-6.414 6.414a1 1 0 00-.293.707V17l-4 4v-6.586a1 1 0 00-.293-.707L3.293 7.293A1 1 0 013 6.586V4z", __self: this, __source: {
|
|
772
806
|
fileName: _jsxFileName,
|
|
773
|
-
lineNumber:
|
|
807
|
+
lineNumber: 919,
|
|
774
808
|
columnNumber: 13
|
|
775
809
|
} })), "Filters", Object.keys(filters).length > 0 && /* @__PURE__ */ React.createElement("span", { className: "ml-1 inline-flex items-center justify-center px-2 py-1 text-xs font-bold leading-none text-white bg-green-web rounded-full", __self: this, __source: {
|
|
776
810
|
fileName: _jsxFileName,
|
|
777
|
-
lineNumber:
|
|
811
|
+
lineNumber: 928,
|
|
778
812
|
columnNumber: 13
|
|
779
813
|
} }, Object.keys(filters).length)), columnSelector, /* @__PURE__ */ React.createElement(Link, { to: createLink, className: "inline-flex items-center px-4 py-2 border border-transparent text-sm font-medium rounded-md shadow-sm text-white bg-green-600 hover:bg-green-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-green-600", __self: this, __source: {
|
|
780
814
|
fileName: _jsxFileName,
|
|
781
|
-
lineNumber:
|
|
815
|
+
lineNumber: 934,
|
|
782
816
|
columnNumber: 9
|
|
783
817
|
} }, "Create New")));
|
|
784
818
|
return /* @__PURE__ */ React.createElement(React.Fragment, null, filterPanel, searchFilter, /* @__PURE__ */ React.createElement(DataTable, { data: items, path: createLink.replace("/create", ""), fields: visibleColumns.length > 0 ? visibleColumns : fieldNames, pagination, setSkip: (skip2) => dispatch({
|
|
@@ -786,7 +820,7 @@ function AdminDataListPage({
|
|
|
786
820
|
payload: skip2
|
|
787
821
|
}), sort: state.sort, setSort: setSortSafely, __self: this, __source: {
|
|
788
822
|
fileName: _jsxFileName,
|
|
789
|
-
lineNumber:
|
|
823
|
+
lineNumber: 948,
|
|
790
824
|
columnNumber: 7
|
|
791
825
|
} }));
|
|
792
826
|
}
|
|
@@ -795,7 +829,7 @@ function AdminDataErrorBoundary({
|
|
|
795
829
|
}) {
|
|
796
830
|
return /* @__PURE__ */ React.createElement(ErrorBoundary, { error, __self: this, __source: {
|
|
797
831
|
fileName: _jsxFileName,
|
|
798
|
-
lineNumber:
|
|
832
|
+
lineNumber: 962,
|
|
799
833
|
columnNumber: 10
|
|
800
834
|
} });
|
|
801
835
|
}
|
|
@@ -17,7 +17,7 @@ export declare function getMutationName(model: DatabaseModel, operation: 'create
|
|
|
17
17
|
/**
|
|
18
18
|
* Build form fields for a model and operation
|
|
19
19
|
*/
|
|
20
|
-
export declare function buildFormFields(sdk: any, model: DatabaseModel, operation: 'create' | 'update', currentItem?: any, isSubmitting?: boolean): FormField[];
|
|
20
|
+
export declare function buildFormFields(sdk: any, model: DatabaseModel, operation: 'create' | 'update', currentItem?: any, isSubmitting?: boolean, basePath?: string): FormField[];
|
|
21
21
|
/**
|
|
22
22
|
* Clean form input data for GraphQL mutations
|
|
23
23
|
* Removes Apollo metadata and system fields
|