@nestledjs/data-browser 0.1.13 → 0.1.16
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/README.md +0 -2
- package/index.d.ts +1 -0
- package/index.js +2 -0
- package/lib/hooks/useAdminList.js +2 -0
- package/lib/hooks/useRelationData.js +0 -3
- package/lib/layouts/AdminDataLayout.js +1 -1
- package/lib/pages/AdminDataCreatePage.js +41 -44
- package/lib/pages/AdminDataEditPage.js +101 -121
- package/lib/pages/AdminDataIndexPage.js +1 -1
- package/lib/pages/AdminDataListPage.js +115 -124
- package/lib/types/index.d.ts +3 -0
- package/lib/utils/get-plural-names.d.ts +21 -0
- package/lib/utils/get-plural-names.js +41 -0
- package/lib/utils/graphql-utils.d.ts +1 -1
- package/lib/utils/graphql-utils.js +18 -20
- package/lib/utils/secure-storage.js +0 -13
- package/package.json +2 -3
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React, { useCallback, useEffect, useMemo } from "react";
|
|
2
2
|
import { useQuery } from "@apollo/client/react";
|
|
3
3
|
import { DataTable, ErrorBoundary } from "@nestledjs/shared-components";
|
|
4
|
-
import { getPluralName } from "
|
|
4
|
+
import { getPluralName } from "../utils/get-plural-names.js";
|
|
5
5
|
import { AdminLocalStorage } from "../utils/secure-storage.js";
|
|
6
6
|
import { kebabCase, formatFieldName } from "../utils/string-utils.js";
|
|
7
7
|
import { useParams, useSearchParams, Link } from "react-router";
|
|
@@ -35,7 +35,6 @@ function AdminDataListPage({
|
|
|
35
35
|
}
|
|
36
36
|
return values;
|
|
37
37
|
} catch (error2) {
|
|
38
|
-
console.warn(`Failed to get enum values for type ${enumType}:`, error2);
|
|
39
38
|
return null;
|
|
40
39
|
}
|
|
41
40
|
}, [sdk]);
|
|
@@ -121,25 +120,16 @@ function AdminDataListPage({
|
|
|
121
120
|
id: value
|
|
122
121
|
};
|
|
123
122
|
} else {
|
|
124
|
-
|
|
123
|
+
const scalarField = model.fields.find((f) => f.name === key && !f.relationName);
|
|
124
|
+
if (scalarField) {
|
|
125
|
+
filters2[key] = value;
|
|
126
|
+
}
|
|
125
127
|
}
|
|
126
128
|
}
|
|
127
129
|
}
|
|
128
130
|
return filters2;
|
|
129
131
|
}, [searchParams, model]);
|
|
130
|
-
|
|
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]);
|
|
132
|
+
const hasUrlFilters = Object.keys(urlFilters).length > 0;
|
|
143
133
|
const documents = useMemo(() => {
|
|
144
134
|
if (!model) return {
|
|
145
135
|
query: void 0,
|
|
@@ -222,7 +212,17 @@ function AdminDataListPage({
|
|
|
222
212
|
dispatch({
|
|
223
213
|
type: "RESET_PAGINATION"
|
|
224
214
|
});
|
|
225
|
-
|
|
215
|
+
if (hasUrlFilters) {
|
|
216
|
+
dispatch({
|
|
217
|
+
type: "SET_FILTERS",
|
|
218
|
+
payload: urlFilters
|
|
219
|
+
});
|
|
220
|
+
dispatch({
|
|
221
|
+
type: "SET_SHOW_FILTERS",
|
|
222
|
+
payload: true
|
|
223
|
+
});
|
|
224
|
+
}
|
|
225
|
+
}, [model == null ? void 0 : model.name, fieldNames, searchableFieldNames, getDefaultSearchFields, setVisibleColumns, setSearchFields, dispatch, urlFilters]);
|
|
226
226
|
const setSortSafely = useCallback((newSort) => {
|
|
227
227
|
const resolvedSort = typeof newSort === "function" ? newSort(sort) : newSort;
|
|
228
228
|
if (resolvedSort.orderBy !== sort.orderBy || resolvedSort.orderDirection !== sort.orderDirection) {
|
|
@@ -293,14 +293,9 @@ function AdminDataListPage({
|
|
|
293
293
|
} = useMemo(() => {
|
|
294
294
|
var _a, _b;
|
|
295
295
|
if (error) {
|
|
296
|
-
console.warn("[AdminList] GraphQL error:", error.message);
|
|
297
296
|
const apolloError = error;
|
|
298
|
-
if (apolloError.networkError)
|
|
299
|
-
|
|
300
|
-
}
|
|
301
|
-
if (((_a = apolloError.graphQLErrors) == null ? void 0 : _a.length) > 0) {
|
|
302
|
-
console.error("[AdminList] GraphQL errors:", apolloError.graphQLErrors);
|
|
303
|
-
}
|
|
297
|
+
if (apolloError.networkError) ;
|
|
298
|
+
if (((_a = apolloError.graphQLErrors) == null ? void 0 : _a.length) > 0) ;
|
|
304
299
|
}
|
|
305
300
|
if (!data) {
|
|
306
301
|
return {
|
|
@@ -324,7 +319,6 @@ function AdminDataListPage({
|
|
|
324
319
|
}
|
|
325
320
|
}
|
|
326
321
|
if (!Array.isArray(processedItems)) {
|
|
327
|
-
console.warn("[AdminList] Expected array but got:", typeof processedItems);
|
|
328
322
|
return {
|
|
329
323
|
validatedItems: [],
|
|
330
324
|
validatedPagination: processedPagination,
|
|
@@ -333,11 +327,9 @@ function AdminDataListPage({
|
|
|
333
327
|
}
|
|
334
328
|
const filteredItems = processedItems.filter((item, index) => {
|
|
335
329
|
if (!item || typeof item !== "object") {
|
|
336
|
-
console.warn(`[AdminList] Invalid item at index ${index}:`, item);
|
|
337
330
|
return false;
|
|
338
331
|
}
|
|
339
332
|
if (!item.id) {
|
|
340
|
-
console.warn(`[AdminList] Item missing ID at index ${index}:`, item);
|
|
341
333
|
return false;
|
|
342
334
|
}
|
|
343
335
|
return true;
|
|
@@ -348,7 +340,6 @@ function AdminDataListPage({
|
|
|
348
340
|
dataError: null
|
|
349
341
|
};
|
|
350
342
|
} catch (err) {
|
|
351
|
-
console.error("[AdminList] Error processing data:", err);
|
|
352
343
|
return {
|
|
353
344
|
validatedItems: [],
|
|
354
345
|
validatedPagination: void 0,
|
|
@@ -361,129 +352,129 @@ function AdminDataListPage({
|
|
|
361
352
|
if (!model) {
|
|
362
353
|
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: {
|
|
363
354
|
fileName: _jsxFileName,
|
|
364
|
-
lineNumber:
|
|
355
|
+
lineNumber: 448,
|
|
365
356
|
columnNumber: 7
|
|
366
357
|
} }, /* @__PURE__ */ React.createElement("div", { className: "mt-8 sm:mx-auto sm:w-full sm:max-w-md", __self: this, __source: {
|
|
367
358
|
fileName: _jsxFileName,
|
|
368
|
-
lineNumber:
|
|
359
|
+
lineNumber: 449,
|
|
369
360
|
columnNumber: 9
|
|
370
361
|
} }, /* @__PURE__ */ React.createElement("div", { className: "bg-white py-8 px-4 shadow sm:rounded-lg sm:px-10", __self: this, __source: {
|
|
371
362
|
fileName: _jsxFileName,
|
|
372
|
-
lineNumber:
|
|
363
|
+
lineNumber: 450,
|
|
373
364
|
columnNumber: 11
|
|
374
365
|
} }, /* @__PURE__ */ React.createElement("div", { className: "text-center", __self: this, __source: {
|
|
375
366
|
fileName: _jsxFileName,
|
|
376
|
-
lineNumber:
|
|
367
|
+
lineNumber: 451,
|
|
377
368
|
columnNumber: 13
|
|
378
369
|
} }, /* @__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: {
|
|
379
370
|
fileName: _jsxFileName,
|
|
380
|
-
lineNumber:
|
|
371
|
+
lineNumber: 452,
|
|
381
372
|
columnNumber: 15
|
|
382
373
|
} }, /* @__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: {
|
|
383
374
|
fileName: _jsxFileName,
|
|
384
|
-
lineNumber:
|
|
375
|
+
lineNumber: 458,
|
|
385
376
|
columnNumber: 17
|
|
386
377
|
} })), /* @__PURE__ */ React.createElement("h2", { className: "mt-4 text-lg font-medium text-gray-900", __self: this, __source: {
|
|
387
378
|
fileName: _jsxFileName,
|
|
388
|
-
lineNumber:
|
|
379
|
+
lineNumber: 465,
|
|
389
380
|
columnNumber: 15
|
|
390
381
|
} }, "Invalid Data Type"), /* @__PURE__ */ React.createElement("p", { className: "mt-2 text-sm text-gray-600", __self: this, __source: {
|
|
391
382
|
fileName: _jsxFileName,
|
|
392
|
-
lineNumber:
|
|
383
|
+
lineNumber: 466,
|
|
393
384
|
columnNumber: 15
|
|
394
385
|
} }, 'The data type "', pluralParam, '" is not recognized.'), /* @__PURE__ */ React.createElement("div", { className: "mt-6", __self: this, __source: {
|
|
395
386
|
fileName: _jsxFileName,
|
|
396
|
-
lineNumber:
|
|
387
|
+
lineNumber: 469,
|
|
397
388
|
columnNumber: 15
|
|
398
389
|
} }, /* @__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: {
|
|
399
390
|
fileName: _jsxFileName,
|
|
400
|
-
lineNumber:
|
|
391
|
+
lineNumber: 470,
|
|
401
392
|
columnNumber: 17
|
|
402
393
|
} }, "Return to Data Browser"))))));
|
|
403
394
|
}
|
|
404
395
|
if (!query) {
|
|
405
396
|
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: {
|
|
406
397
|
fileName: _jsxFileName,
|
|
407
|
-
lineNumber:
|
|
398
|
+
lineNumber: 486,
|
|
408
399
|
columnNumber: 7
|
|
409
400
|
} }, /* @__PURE__ */ React.createElement("div", { className: "mt-8 sm:mx-auto sm:w-full sm:max-w-md", __self: this, __source: {
|
|
410
401
|
fileName: _jsxFileName,
|
|
411
|
-
lineNumber:
|
|
402
|
+
lineNumber: 487,
|
|
412
403
|
columnNumber: 9
|
|
413
404
|
} }, /* @__PURE__ */ React.createElement("div", { className: "bg-white py-8 px-4 shadow sm:rounded-lg sm:px-10", __self: this, __source: {
|
|
414
405
|
fileName: _jsxFileName,
|
|
415
|
-
lineNumber:
|
|
406
|
+
lineNumber: 488,
|
|
416
407
|
columnNumber: 11
|
|
417
408
|
} }, /* @__PURE__ */ React.createElement("div", { className: "text-center", __self: this, __source: {
|
|
418
409
|
fileName: _jsxFileName,
|
|
419
|
-
lineNumber:
|
|
410
|
+
lineNumber: 489,
|
|
420
411
|
columnNumber: 13
|
|
421
412
|
} }, /* @__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: {
|
|
422
413
|
fileName: _jsxFileName,
|
|
423
|
-
lineNumber:
|
|
414
|
+
lineNumber: 490,
|
|
424
415
|
columnNumber: 15
|
|
425
416
|
} }, /* @__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: {
|
|
426
417
|
fileName: _jsxFileName,
|
|
427
|
-
lineNumber:
|
|
418
|
+
lineNumber: 496,
|
|
428
419
|
columnNumber: 17
|
|
429
420
|
} })), /* @__PURE__ */ React.createElement("h2", { className: "mt-4 text-lg font-medium text-gray-900", __self: this, __source: {
|
|
430
421
|
fileName: _jsxFileName,
|
|
431
|
-
lineNumber:
|
|
422
|
+
lineNumber: 503,
|
|
432
423
|
columnNumber: 15
|
|
433
424
|
} }, "GraphQL Schema Not Available"), /* @__PURE__ */ React.createElement("p", { className: "mt-2 text-sm text-gray-600", __self: this, __source: {
|
|
434
425
|
fileName: _jsxFileName,
|
|
435
|
-
lineNumber:
|
|
426
|
+
lineNumber: 506,
|
|
436
427
|
columnNumber: 15
|
|
437
428
|
} }, '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: {
|
|
438
429
|
fileName: _jsxFileName,
|
|
439
|
-
lineNumber:
|
|
430
|
+
lineNumber: 510,
|
|
440
431
|
columnNumber: 15
|
|
441
432
|
} }, /* @__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: {
|
|
442
433
|
fileName: _jsxFileName,
|
|
443
|
-
lineNumber:
|
|
434
|
+
lineNumber: 511,
|
|
444
435
|
columnNumber: 17
|
|
445
436
|
} }, "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: {
|
|
446
437
|
fileName: _jsxFileName,
|
|
447
|
-
lineNumber:
|
|
438
|
+
lineNumber: 517,
|
|
448
439
|
columnNumber: 17
|
|
449
440
|
} }, "Return to Data Browser"))))));
|
|
450
441
|
}
|
|
451
442
|
const createLink = `${basePath}/${kebabCase(model.name)}/create`;
|
|
452
443
|
const columnSelector = /* @__PURE__ */ React.createElement("div", { className: "relative", "data-dropdown": "column-selector", __self: this, __source: {
|
|
453
444
|
fileName: _jsxFileName,
|
|
454
|
-
lineNumber:
|
|
445
|
+
lineNumber: 536,
|
|
455
446
|
columnNumber: 5
|
|
456
447
|
} }, /* @__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: {
|
|
457
448
|
fileName: _jsxFileName,
|
|
458
|
-
lineNumber:
|
|
449
|
+
lineNumber: 537,
|
|
459
450
|
columnNumber: 7
|
|
460
451
|
} }, "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: {
|
|
461
452
|
fileName: _jsxFileName,
|
|
462
|
-
lineNumber:
|
|
453
|
+
lineNumber: 542,
|
|
463
454
|
columnNumber: 9
|
|
464
455
|
} }, /* @__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: {
|
|
465
456
|
fileName: _jsxFileName,
|
|
466
|
-
lineNumber:
|
|
457
|
+
lineNumber: 548,
|
|
467
458
|
columnNumber: 11
|
|
468
459
|
} }))), 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: {
|
|
469
460
|
fileName: _jsxFileName,
|
|
470
|
-
lineNumber:
|
|
461
|
+
lineNumber: 557,
|
|
471
462
|
columnNumber: 9
|
|
472
463
|
} }, /* @__PURE__ */ React.createElement("div", { className: "p-4", __self: this, __source: {
|
|
473
464
|
fileName: _jsxFileName,
|
|
474
|
-
lineNumber:
|
|
465
|
+
lineNumber: 558,
|
|
475
466
|
columnNumber: 11
|
|
476
467
|
} }, /* @__PURE__ */ React.createElement("h3", { className: "text-sm font-medium text-gray-900 mb-3", __self: this, __source: {
|
|
477
468
|
fileName: _jsxFileName,
|
|
478
|
-
lineNumber:
|
|
469
|
+
lineNumber: 559,
|
|
479
470
|
columnNumber: 13
|
|
480
471
|
} }, "Visible Columns"), /* @__PURE__ */ React.createElement("div", { className: "space-y-2 max-h-64 overflow-y-auto", __self: this, __source: {
|
|
481
472
|
fileName: _jsxFileName,
|
|
482
|
-
lineNumber:
|
|
473
|
+
lineNumber: 560,
|
|
483
474
|
columnNumber: 13
|
|
484
475
|
} }, fieldNames.map((field) => /* @__PURE__ */ React.createElement("label", { key: field, className: "flex items-start gap-2 cursor-pointer", __self: this, __source: {
|
|
485
476
|
fileName: _jsxFileName,
|
|
486
|
-
lineNumber:
|
|
477
|
+
lineNumber: 562,
|
|
487
478
|
columnNumber: 17
|
|
488
479
|
} }, /* @__PURE__ */ React.createElement("input", { type: "checkbox", checked: visibleColumns.includes(field), onChange: (e) => {
|
|
489
480
|
const newColumns = e.target.checked ? [...visibleColumns, field] : visibleColumns.filter((col) => col !== field);
|
|
@@ -491,22 +482,22 @@ function AdminDataListPage({
|
|
|
491
482
|
AdminLocalStorage.setColumnVisibility(model.name, newColumns);
|
|
492
483
|
}, 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: {
|
|
493
484
|
fileName: _jsxFileName,
|
|
494
|
-
lineNumber:
|
|
485
|
+
lineNumber: 563,
|
|
495
486
|
columnNumber: 19
|
|
496
487
|
} }), /* @__PURE__ */ React.createElement("span", { className: "text-sm text-gray-700 leading-5", __self: this, __source: {
|
|
497
488
|
fileName: _jsxFileName,
|
|
498
|
-
lineNumber:
|
|
489
|
+
lineNumber: 575,
|
|
499
490
|
columnNumber: 19
|
|
500
491
|
} }, formatFieldName(field))))), /* @__PURE__ */ React.createElement("div", { className: "mt-3 pt-3 border-t border-gray-200 flex justify-between", __self: this, __source: {
|
|
501
492
|
fileName: _jsxFileName,
|
|
502
|
-
lineNumber:
|
|
493
|
+
lineNumber: 579,
|
|
503
494
|
columnNumber: 13
|
|
504
495
|
} }, /* @__PURE__ */ React.createElement("button", { onClick: () => {
|
|
505
496
|
setVisibleColumns(fieldNames);
|
|
506
497
|
AdminLocalStorage.setColumnVisibility(model.name, fieldNames);
|
|
507
498
|
}, className: "text-xs text-green-web hover:text-green-web-800", __self: this, __source: {
|
|
508
499
|
fileName: _jsxFileName,
|
|
509
|
-
lineNumber:
|
|
500
|
+
lineNumber: 580,
|
|
510
501
|
columnNumber: 15
|
|
511
502
|
} }, "Select All"), /* @__PURE__ */ React.createElement("button", { onClick: () => {
|
|
512
503
|
const defaults = fieldNames.slice(0, 8);
|
|
@@ -514,44 +505,44 @@ function AdminDataListPage({
|
|
|
514
505
|
AdminLocalStorage.setColumnVisibility(model.name, defaults);
|
|
515
506
|
}, className: "text-xs text-gray-600 hover:text-gray-800", __self: this, __source: {
|
|
516
507
|
fileName: _jsxFileName,
|
|
517
|
-
lineNumber:
|
|
508
|
+
lineNumber: 589,
|
|
518
509
|
columnNumber: 15
|
|
519
510
|
} }, "Reset to Defaults")))));
|
|
520
511
|
const searchFieldSelector = /* @__PURE__ */ React.createElement("div", { className: "relative", "data-dropdown": "search-field-selector", __self: this, __source: {
|
|
521
512
|
fileName: _jsxFileName,
|
|
522
|
-
lineNumber:
|
|
513
|
+
lineNumber: 608,
|
|
523
514
|
columnNumber: 5
|
|
524
515
|
} }, /* @__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: {
|
|
525
516
|
fileName: _jsxFileName,
|
|
526
|
-
lineNumber:
|
|
517
|
+
lineNumber: 609,
|
|
527
518
|
columnNumber: 7
|
|
528
519
|
} }, /* @__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: {
|
|
529
520
|
fileName: _jsxFileName,
|
|
530
|
-
lineNumber:
|
|
521
|
+
lineNumber: 614,
|
|
531
522
|
columnNumber: 9
|
|
532
523
|
} }, /* @__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: {
|
|
533
524
|
fileName: _jsxFileName,
|
|
534
|
-
lineNumber:
|
|
525
|
+
lineNumber: 620,
|
|
535
526
|
columnNumber: 11
|
|
536
527
|
} }))), 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: {
|
|
537
528
|
fileName: _jsxFileName,
|
|
538
|
-
lineNumber:
|
|
529
|
+
lineNumber: 629,
|
|
539
530
|
columnNumber: 9
|
|
540
531
|
} }, /* @__PURE__ */ React.createElement("div", { className: "p-4", __self: this, __source: {
|
|
541
532
|
fileName: _jsxFileName,
|
|
542
|
-
lineNumber:
|
|
533
|
+
lineNumber: 630,
|
|
543
534
|
columnNumber: 11
|
|
544
535
|
} }, /* @__PURE__ */ React.createElement("h3", { className: "text-sm font-medium text-gray-900 mb-3", __self: this, __source: {
|
|
545
536
|
fileName: _jsxFileName,
|
|
546
|
-
lineNumber:
|
|
537
|
+
lineNumber: 631,
|
|
547
538
|
columnNumber: 13
|
|
548
539
|
} }, "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: {
|
|
549
540
|
fileName: _jsxFileName,
|
|
550
|
-
lineNumber:
|
|
541
|
+
lineNumber: 634,
|
|
551
542
|
columnNumber: 17
|
|
552
543
|
} }, searchableFieldNames.map((field) => /* @__PURE__ */ React.createElement("label", { key: field, className: "flex items-start gap-2 cursor-pointer", __self: this, __source: {
|
|
553
544
|
fileName: _jsxFileName,
|
|
554
|
-
lineNumber:
|
|
545
|
+
lineNumber: 636,
|
|
555
546
|
columnNumber: 21
|
|
556
547
|
} }, /* @__PURE__ */ React.createElement("input", { type: "checkbox", checked: searchFields.includes(field), onChange: (e) => {
|
|
557
548
|
const newFields = e.target.checked ? [...searchFields, field] : searchFields.filter((f) => f !== field);
|
|
@@ -559,22 +550,22 @@ function AdminDataListPage({
|
|
|
559
550
|
AdminLocalStorage.setSearchFields(model.name, newFields);
|
|
560
551
|
}, 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: {
|
|
561
552
|
fileName: _jsxFileName,
|
|
562
|
-
lineNumber:
|
|
553
|
+
lineNumber: 637,
|
|
563
554
|
columnNumber: 23
|
|
564
555
|
} }), /* @__PURE__ */ React.createElement("span", { className: "text-sm text-gray-700 leading-5", __self: this, __source: {
|
|
565
556
|
fileName: _jsxFileName,
|
|
566
|
-
lineNumber:
|
|
557
|
+
lineNumber: 649,
|
|
567
558
|
columnNumber: 23
|
|
568
559
|
} }, formatFieldName(field))))), /* @__PURE__ */ React.createElement("div", { className: "mt-3 pt-3 border-t border-gray-200 flex justify-between", __self: this, __source: {
|
|
569
560
|
fileName: _jsxFileName,
|
|
570
|
-
lineNumber:
|
|
561
|
+
lineNumber: 655,
|
|
571
562
|
columnNumber: 17
|
|
572
563
|
} }, /* @__PURE__ */ React.createElement("button", { onClick: () => {
|
|
573
564
|
setSearchFields(searchableFieldNames);
|
|
574
565
|
AdminLocalStorage.setSearchFields(model.name, searchableFieldNames);
|
|
575
566
|
}, className: "text-xs text-green-web hover:text-green-web-800 mr-3", __self: this, __source: {
|
|
576
567
|
fileName: _jsxFileName,
|
|
577
|
-
lineNumber:
|
|
568
|
+
lineNumber: 656,
|
|
578
569
|
columnNumber: 19
|
|
579
570
|
} }, "Select All"), /* @__PURE__ */ React.createElement("button", { onClick: () => {
|
|
580
571
|
const defaults = getDefaultSearchFields(searchableFieldNames);
|
|
@@ -582,28 +573,28 @@ function AdminDataListPage({
|
|
|
582
573
|
AdminLocalStorage.setSearchFields(model.name, defaults);
|
|
583
574
|
}, className: "text-xs text-gray-600 hover:text-gray-800", __self: this, __source: {
|
|
584
575
|
fileName: _jsxFileName,
|
|
585
|
-
lineNumber:
|
|
576
|
+
lineNumber: 665,
|
|
586
577
|
columnNumber: 19
|
|
587
578
|
} }, "Reset to Defaults"))) : /* @__PURE__ */ React.createElement("div", { className: "text-sm text-gray-500", __self: this, __source: {
|
|
588
579
|
fileName: _jsxFileName,
|
|
589
|
-
lineNumber:
|
|
580
|
+
lineNumber: 678,
|
|
590
581
|
columnNumber: 15
|
|
591
582
|
} }, "No searchable text fields available"))));
|
|
592
583
|
const filterPanel = showFilters && /* @__PURE__ */ React.createElement("div", { className: "mb-4 bg-gray-50 border border-gray-200 rounded-lg p-4", __self: this, __source: {
|
|
593
584
|
fileName: _jsxFileName,
|
|
594
|
-
lineNumber:
|
|
585
|
+
lineNumber: 688,
|
|
595
586
|
columnNumber: 5
|
|
596
587
|
} }, /* @__PURE__ */ React.createElement("div", { className: "flex items-center justify-between mb-3", __self: this, __source: {
|
|
597
588
|
fileName: _jsxFileName,
|
|
598
|
-
lineNumber:
|
|
589
|
+
lineNumber: 689,
|
|
599
590
|
columnNumber: 7
|
|
600
591
|
} }, /* @__PURE__ */ React.createElement("h3", { className: "text-sm font-medium text-gray-900", __self: this, __source: {
|
|
601
592
|
fileName: _jsxFileName,
|
|
602
|
-
lineNumber:
|
|
593
|
+
lineNumber: 690,
|
|
603
594
|
columnNumber: 9
|
|
604
595
|
} }, "Filters"), /* @__PURE__ */ React.createElement("div", { className: "flex items-center space-x-2", __self: this, __source: {
|
|
605
596
|
fileName: _jsxFileName,
|
|
606
|
-
lineNumber:
|
|
597
|
+
lineNumber: 691,
|
|
607
598
|
columnNumber: 9
|
|
608
599
|
} }, /* @__PURE__ */ React.createElement("button", { onClick: () => {
|
|
609
600
|
setFilters({});
|
|
@@ -612,23 +603,23 @@ function AdminDataListPage({
|
|
|
612
603
|
});
|
|
613
604
|
}, className: "text-xs text-gray-600 hover:text-gray-800", __self: this, __source: {
|
|
614
605
|
fileName: _jsxFileName,
|
|
615
|
-
lineNumber:
|
|
606
|
+
lineNumber: 692,
|
|
616
607
|
columnNumber: 11
|
|
617
608
|
} }, "Clear All"), /* @__PURE__ */ React.createElement("button", { onClick: () => setShowFilters(false), className: "text-gray-400 hover:text-gray-600", __self: this, __source: {
|
|
618
609
|
fileName: _jsxFileName,
|
|
619
|
-
lineNumber:
|
|
610
|
+
lineNumber: 701,
|
|
620
611
|
columnNumber: 11
|
|
621
612
|
} }, /* @__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: {
|
|
622
613
|
fileName: _jsxFileName,
|
|
623
|
-
lineNumber:
|
|
614
|
+
lineNumber: 705,
|
|
624
615
|
columnNumber: 13
|
|
625
616
|
} }, /* @__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: {
|
|
626
617
|
fileName: _jsxFileName,
|
|
627
|
-
lineNumber:
|
|
618
|
+
lineNumber: 711,
|
|
628
619
|
columnNumber: 15
|
|
629
620
|
} }))))), /* @__PURE__ */ React.createElement("div", { className: "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4", __self: this, __source: {
|
|
630
621
|
fileName: _jsxFileName,
|
|
631
|
-
lineNumber:
|
|
622
|
+
lineNumber: 721,
|
|
632
623
|
columnNumber: 7
|
|
633
624
|
} }, filterableFieldNames.map((fieldName) => {
|
|
634
625
|
const field = model.fields.find((f) => f.name === fieldName);
|
|
@@ -651,21 +642,21 @@ function AdminDataListPage({
|
|
|
651
642
|
if (field.relationName && !field.isList) {
|
|
652
643
|
return /* @__PURE__ */ React.createElement(RelationFilterField, { key: fieldName, fieldName, relatedModelName: field.type, currentValue, onChange: handleChange, __self: this, __source: {
|
|
653
644
|
fileName: _jsxFileName,
|
|
654
|
-
lineNumber:
|
|
645
|
+
lineNumber: 741,
|
|
655
646
|
columnNumber: 15
|
|
656
647
|
} });
|
|
657
648
|
}
|
|
658
649
|
if (field.type.toLowerCase() === "datetime" || field.type.toLowerCase() === "date") {
|
|
659
650
|
return /* @__PURE__ */ React.createElement(DateRangeFilter, { key: fieldName, fieldName, currentValue, onChange: handleChange, __self: this, __source: {
|
|
660
651
|
fileName: _jsxFileName,
|
|
661
|
-
lineNumber:
|
|
652
|
+
lineNumber: 754,
|
|
662
653
|
columnNumber: 15
|
|
663
654
|
} });
|
|
664
655
|
}
|
|
665
656
|
if (["int", "bigint", "float", "decimal"].includes(field.type.toLowerCase())) {
|
|
666
657
|
return /* @__PURE__ */ React.createElement(NumberRangeFilter, { key: fieldName, fieldName, fieldType: field.type.toLowerCase(), currentValue, onChange: handleChange, __self: this, __source: {
|
|
667
658
|
fileName: _jsxFileName,
|
|
668
|
-
lineNumber:
|
|
659
|
+
lineNumber: 766,
|
|
669
660
|
columnNumber: 15
|
|
670
661
|
} });
|
|
671
662
|
}
|
|
@@ -674,23 +665,23 @@ function AdminDataListPage({
|
|
|
674
665
|
if (enumValues) {
|
|
675
666
|
return /* @__PURE__ */ React.createElement("div", { key: fieldName, className: "space-y-1", __self: this, __source: {
|
|
676
667
|
fileName: _jsxFileName,
|
|
677
|
-
lineNumber:
|
|
668
|
+
lineNumber: 781,
|
|
678
669
|
columnNumber: 17
|
|
679
670
|
} }, /* @__PURE__ */ React.createElement("label", { className: "block text-sm font-medium text-gray-700", __self: this, __source: {
|
|
680
671
|
fileName: _jsxFileName,
|
|
681
|
-
lineNumber:
|
|
672
|
+
lineNumber: 782,
|
|
682
673
|
columnNumber: 19
|
|
683
674
|
} }, 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: {
|
|
684
675
|
fileName: _jsxFileName,
|
|
685
|
-
lineNumber:
|
|
676
|
+
lineNumber: 785,
|
|
686
677
|
columnNumber: 19
|
|
687
678
|
} }, /* @__PURE__ */ React.createElement("option", { value: "", __self: this, __source: {
|
|
688
679
|
fileName: _jsxFileName,
|
|
689
|
-
lineNumber:
|
|
680
|
+
lineNumber: 790,
|
|
690
681
|
columnNumber: 21
|
|
691
682
|
} }, "All"), enumValues.map((val) => /* @__PURE__ */ React.createElement("option", { key: val, value: val, __self: this, __source: {
|
|
692
683
|
fileName: _jsxFileName,
|
|
693
|
-
lineNumber:
|
|
684
|
+
lineNumber: 792,
|
|
694
685
|
columnNumber: 23
|
|
695
686
|
} }, val))));
|
|
696
687
|
}
|
|
@@ -698,121 +689,121 @@ function AdminDataListPage({
|
|
|
698
689
|
if (field.type.toLowerCase() === "boolean") {
|
|
699
690
|
return /* @__PURE__ */ React.createElement("div", { key: fieldName, className: "space-y-1", __self: this, __source: {
|
|
700
691
|
fileName: _jsxFileName,
|
|
701
|
-
lineNumber:
|
|
692
|
+
lineNumber: 805,
|
|
702
693
|
columnNumber: 15
|
|
703
694
|
} }, /* @__PURE__ */ React.createElement("label", { className: "block text-sm font-medium text-gray-700", __self: this, __source: {
|
|
704
695
|
fileName: _jsxFileName,
|
|
705
|
-
lineNumber:
|
|
696
|
+
lineNumber: 806,
|
|
706
697
|
columnNumber: 17
|
|
707
698
|
} }, formatFieldName(fieldName)), /* @__PURE__ */ React.createElement("select", { value: currentValue === void 0 || currentValue === null ? "" : currentValue.toString(), onChange: (e) => {
|
|
708
699
|
const value = e.target.value;
|
|
709
700
|
handleChange(value === "" ? void 0 : value === "true");
|
|
710
701
|
}, 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: {
|
|
711
702
|
fileName: _jsxFileName,
|
|
712
|
-
lineNumber:
|
|
703
|
+
lineNumber: 809,
|
|
713
704
|
columnNumber: 17
|
|
714
705
|
} }, /* @__PURE__ */ React.createElement("option", { value: "", __self: this, __source: {
|
|
715
706
|
fileName: _jsxFileName,
|
|
716
|
-
lineNumber:
|
|
707
|
+
lineNumber: 817,
|
|
717
708
|
columnNumber: 19
|
|
718
709
|
} }, "All"), /* @__PURE__ */ React.createElement("option", { value: "true", __self: this, __source: {
|
|
719
710
|
fileName: _jsxFileName,
|
|
720
|
-
lineNumber:
|
|
711
|
+
lineNumber: 818,
|
|
721
712
|
columnNumber: 19
|
|
722
713
|
} }, "Yes"), /* @__PURE__ */ React.createElement("option", { value: "false", __self: this, __source: {
|
|
723
714
|
fileName: _jsxFileName,
|
|
724
|
-
lineNumber:
|
|
715
|
+
lineNumber: 819,
|
|
725
716
|
columnNumber: 19
|
|
726
717
|
} }, "No")));
|
|
727
718
|
}
|
|
728
719
|
return /* @__PURE__ */ React.createElement("div", { key: fieldName, className: "space-y-1", __self: this, __source: {
|
|
729
720
|
fileName: _jsxFileName,
|
|
730
|
-
lineNumber:
|
|
721
|
+
lineNumber: 827,
|
|
731
722
|
columnNumber: 13
|
|
732
723
|
} }, /* @__PURE__ */ React.createElement("label", { className: "block text-sm font-medium text-gray-700", __self: this, __source: {
|
|
733
724
|
fileName: _jsxFileName,
|
|
734
|
-
lineNumber:
|
|
725
|
+
lineNumber: 828,
|
|
735
726
|
columnNumber: 15
|
|
736
727
|
} }, 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: {
|
|
737
728
|
fileName: _jsxFileName,
|
|
738
|
-
lineNumber:
|
|
729
|
+
lineNumber: 831,
|
|
739
730
|
columnNumber: 15
|
|
740
731
|
} }));
|
|
741
732
|
})));
|
|
742
733
|
const searchFilter = /* @__PURE__ */ React.createElement("div", { className: "mb-4 flex items-center justify-between", __self: this, __source: {
|
|
743
734
|
fileName: _jsxFileName,
|
|
744
|
-
lineNumber:
|
|
735
|
+
lineNumber: 846,
|
|
745
736
|
columnNumber: 5
|
|
746
737
|
} }, /* @__PURE__ */ React.createElement("div", { className: "flex-1 max-w-lg", __self: this, __source: {
|
|
747
738
|
fileName: _jsxFileName,
|
|
748
|
-
lineNumber:
|
|
739
|
+
lineNumber: 847,
|
|
749
740
|
columnNumber: 7
|
|
750
741
|
} }, /* @__PURE__ */ React.createElement("label", { htmlFor: "search", className: "sr-only", __self: this, __source: {
|
|
751
742
|
fileName: _jsxFileName,
|
|
752
|
-
lineNumber:
|
|
743
|
+
lineNumber: 848,
|
|
753
744
|
columnNumber: 9
|
|
754
745
|
} }, "Search"), /* @__PURE__ */ React.createElement("div", { className: "relative", __self: this, __source: {
|
|
755
746
|
fileName: _jsxFileName,
|
|
756
|
-
lineNumber:
|
|
747
|
+
lineNumber: 851,
|
|
757
748
|
columnNumber: 9
|
|
758
749
|
} }, /* @__PURE__ */ React.createElement("div", { className: "absolute inset-y-0 left-0 pl-3 flex items-center pointer-events-none", __self: this, __source: {
|
|
759
750
|
fileName: _jsxFileName,
|
|
760
|
-
lineNumber:
|
|
751
|
+
lineNumber: 852,
|
|
761
752
|
columnNumber: 11
|
|
762
753
|
} }, 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: {
|
|
763
754
|
fileName: _jsxFileName,
|
|
764
|
-
lineNumber:
|
|
755
|
+
lineNumber: 854,
|
|
765
756
|
columnNumber: 15
|
|
766
757
|
} }, /* @__PURE__ */ React.createElement("circle", { className: "opacity-25", cx: "12", cy: "12", r: "10", stroke: "currentColor", strokeWidth: "4", __self: this, __source: {
|
|
767
758
|
fileName: _jsxFileName,
|
|
768
|
-
lineNumber:
|
|
759
|
+
lineNumber: 860,
|
|
769
760
|
columnNumber: 17
|
|
770
761
|
} }), /* @__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: {
|
|
771
762
|
fileName: _jsxFileName,
|
|
772
|
-
lineNumber:
|
|
763
|
+
lineNumber: 868,
|
|
773
764
|
columnNumber: 17
|
|
774
765
|
} })) : /* @__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: {
|
|
775
766
|
fileName: _jsxFileName,
|
|
776
|
-
lineNumber:
|
|
767
|
+
lineNumber: 875,
|
|
777
768
|
columnNumber: 15
|
|
778
769
|
} }, /* @__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: {
|
|
779
770
|
fileName: _jsxFileName,
|
|
780
|
-
lineNumber:
|
|
771
|
+
lineNumber: 882,
|
|
781
772
|
columnNumber: 17
|
|
782
773
|
} }))), /* @__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({
|
|
783
774
|
type: "SET_SEARCH",
|
|
784
775
|
payload: e.target.value
|
|
785
776
|
}), __self: this, __source: {
|
|
786
777
|
fileName: _jsxFileName,
|
|
787
|
-
lineNumber:
|
|
778
|
+
lineNumber: 890,
|
|
788
779
|
columnNumber: 11
|
|
789
780
|
} }), searchableFieldNames.length > 0 && /* @__PURE__ */ React.createElement("div", { className: "absolute inset-y-0 right-0 flex items-center", __self: this, __source: {
|
|
790
781
|
fileName: _jsxFileName,
|
|
791
|
-
lineNumber:
|
|
782
|
+
lineNumber: 900,
|
|
792
783
|
columnNumber: 13
|
|
793
784
|
} }, searchFieldSelector))), /* @__PURE__ */ React.createElement("div", { className: "ml-4 flex space-x-2", __self: this, __source: {
|
|
794
785
|
fileName: _jsxFileName,
|
|
795
|
-
lineNumber:
|
|
786
|
+
lineNumber: 906,
|
|
796
787
|
columnNumber: 7
|
|
797
788
|
} }, /* @__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: {
|
|
798
789
|
fileName: _jsxFileName,
|
|
799
|
-
lineNumber:
|
|
790
|
+
lineNumber: 907,
|
|
800
791
|
columnNumber: 9
|
|
801
792
|
} }, /* @__PURE__ */ React.createElement("svg", { className: "w-4 h-4 mr-2", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", __self: this, __source: {
|
|
802
793
|
fileName: _jsxFileName,
|
|
803
|
-
lineNumber:
|
|
794
|
+
lineNumber: 915,
|
|
804
795
|
columnNumber: 11
|
|
805
796
|
} }, /* @__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: {
|
|
806
797
|
fileName: _jsxFileName,
|
|
807
|
-
lineNumber:
|
|
798
|
+
lineNumber: 916,
|
|
808
799
|
columnNumber: 13
|
|
809
800
|
} })), "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: {
|
|
810
801
|
fileName: _jsxFileName,
|
|
811
|
-
lineNumber:
|
|
802
|
+
lineNumber: 925,
|
|
812
803
|
columnNumber: 13
|
|
813
804
|
} }, 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: {
|
|
814
805
|
fileName: _jsxFileName,
|
|
815
|
-
lineNumber:
|
|
806
|
+
lineNumber: 931,
|
|
816
807
|
columnNumber: 9
|
|
817
808
|
} }, "Create New")));
|
|
818
809
|
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({
|
|
@@ -820,7 +811,7 @@ function AdminDataListPage({
|
|
|
820
811
|
payload: skip2
|
|
821
812
|
}), sort: state.sort, setSort: setSortSafely, __self: this, __source: {
|
|
822
813
|
fileName: _jsxFileName,
|
|
823
|
-
lineNumber:
|
|
814
|
+
lineNumber: 945,
|
|
824
815
|
columnNumber: 7
|
|
825
816
|
} }));
|
|
826
817
|
}
|
|
@@ -829,7 +820,7 @@ function AdminDataErrorBoundary({
|
|
|
829
820
|
}) {
|
|
830
821
|
return /* @__PURE__ */ React.createElement(ErrorBoundary, { error, __self: this, __source: {
|
|
831
822
|
fileName: _jsxFileName,
|
|
832
|
-
lineNumber:
|
|
823
|
+
lineNumber: 959,
|
|
833
824
|
columnNumber: 10
|
|
834
825
|
} });
|
|
835
826
|
}
|