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