@nestledjs/data-browser 0.1.17 → 0.1.18

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.
@@ -1,4 +1,5 @@
1
- import React, { useCallback, useEffect, useMemo } from "react";
1
+ import { jsxDEV, Fragment } from "react/jsx-dev-runtime";
2
+ import { useCallback, useEffect, useMemo } from "react";
2
3
  import { useQuery } from "@apollo/client/react";
3
4
  import { DataTable, ErrorBoundary } from "@nestledjs/shared-components";
4
5
  import { getPluralName } from "../utils/get-plural-names.js";
@@ -11,17 +12,10 @@ import { RelationFilterField } from "../components/filters/RelationFilterField.j
11
12
  import { useAdminList } from "../hooks/useAdminList.js";
12
13
  import { getAdminDocuments } from "../utils/graphql-utils.js";
13
14
  import { useAdminDataContext } from "../context/AdminDataContext.js";
14
- var _jsxFileName = "/Users/justinhandley/IdeaProjects/nestled_template/libs/data-browser/src/lib/pages/AdminDataListPage.tsx";
15
- function AdminDataListPage({
16
- modelName: propModelName
17
- } = {}) {
15
+ function AdminDataListPage({ modelName: propModelName } = {}) {
18
16
  const params = useParams();
19
17
  const [searchParams] = useSearchParams();
20
- const {
21
- sdk,
22
- databaseModels,
23
- basePath = "/admin/data"
24
- } = useAdminDataContext();
18
+ const { sdk, databaseModels, basePath = "/admin/data" } = useAdminDataContext();
25
19
  const getEnumValues = useCallback((enumType) => {
26
20
  try {
27
21
  const enumObject = sdk[enumType];
@@ -38,10 +32,7 @@ function AdminDataListPage({
38
32
  return null;
39
33
  }
40
34
  }, [sdk]);
41
- const {
42
- state,
43
- dispatch
44
- } = useAdminList();
35
+ const { state, dispatch } = useAdminList();
45
36
  const {
46
37
  search,
47
38
  debouncedSearch,
@@ -55,43 +46,43 @@ function AdminDataListPage({
55
46
  showFilters,
56
47
  showSearchFieldSelector
57
48
  } = state;
58
- useCallback((skip2) => dispatch({
59
- type: "SET_SKIP",
60
- payload: skip2
61
- }), [dispatch]);
62
- const setFilters = useCallback((filters2) => dispatch({
63
- type: "SET_FILTERS",
64
- payload: filters2
65
- }), [dispatch]);
66
- const setShowFilters = useCallback((show) => {
67
- if (show !== showFilters) dispatch({
68
- type: "TOGGLE_FILTERS"
69
- });
70
- }, [showFilters, dispatch]);
71
- const setVisibleColumns = useCallback((columns) => dispatch({
72
- type: "SET_VISIBLE_COLUMNS",
73
- payload: columns
74
- }), [dispatch]);
75
- const setShowColumnSelector = useCallback((show) => {
76
- if (show !== showColumnSelector) dispatch({
77
- type: "TOGGLE_COLUMN_SELECTOR"
78
- });
79
- }, [showColumnSelector, dispatch]);
80
- const setSearchFields = useCallback((fields) => dispatch({
81
- type: "SET_SEARCH_FIELDS",
82
- payload: fields
83
- }), [dispatch]);
84
- const setShowSearchFieldSelector = useCallback((show) => {
85
- if (show !== showSearchFieldSelector) dispatch({
86
- type: "TOGGLE_SEARCH_FIELD_SELECTOR"
87
- });
88
- }, [showSearchFieldSelector, dispatch]);
49
+ useCallback(
50
+ (skip2) => dispatch({ type: "SET_SKIP", payload: skip2 }),
51
+ [dispatch]
52
+ );
53
+ const setFilters = useCallback(
54
+ (filters2) => dispatch({ type: "SET_FILTERS", payload: filters2 }),
55
+ [dispatch]
56
+ );
57
+ const setShowFilters = useCallback(
58
+ (show) => {
59
+ if (show !== showFilters) dispatch({ type: "TOGGLE_FILTERS" });
60
+ },
61
+ [showFilters, dispatch]
62
+ );
63
+ const setVisibleColumns = useCallback(
64
+ (columns) => dispatch({ type: "SET_VISIBLE_COLUMNS", payload: columns }),
65
+ [dispatch]
66
+ );
67
+ const setShowColumnSelector = useCallback(
68
+ (show) => {
69
+ if (show !== showColumnSelector) dispatch({ type: "TOGGLE_COLUMN_SELECTOR" });
70
+ },
71
+ [showColumnSelector, dispatch]
72
+ );
73
+ const setSearchFields = useCallback(
74
+ (fields) => dispatch({ type: "SET_SEARCH_FIELDS", payload: fields }),
75
+ [dispatch]
76
+ );
77
+ const setShowSearchFieldSelector = useCallback(
78
+ (show) => {
79
+ if (show !== showSearchFieldSelector) dispatch({ type: "TOGGLE_SEARCH_FIELD_SELECTOR" });
80
+ },
81
+ [showSearchFieldSelector, dispatch]
82
+ );
89
83
  useEffect(() => {
90
84
  const timer = setTimeout(() => {
91
- dispatch({
92
- type: "SET_DEBOUNCED_SEARCH",
93
- payload: state.search
94
- });
85
+ dispatch({ type: "SET_DEBOUNCED_SEARCH", payload: state.search });
95
86
  }, 500);
96
87
  return () => clearTimeout(timer);
97
88
  }, [state.search]);
@@ -111,14 +102,14 @@ function AdminDataListPage({
111
102
  const filters2 = {};
112
103
  for (const [key, value] of searchParams.entries()) {
113
104
  if (key !== "page" && key !== "search" && key !== "sort") {
114
- const relationField = model.fields.find((f) => {
115
- var _a;
116
- return f.relationName && !f.isList && ((_a = f.relationFromFields) == null ? void 0 : _a[0]) === key;
117
- });
105
+ const relationField = model.fields.find(
106
+ (f) => {
107
+ var _a;
108
+ return f.relationName && !f.isList && ((_a = f.relationFromFields) == null ? void 0 : _a[0]) === key;
109
+ }
110
+ );
118
111
  if (relationField) {
119
- filters2[relationField.name] = {
120
- id: value
121
- };
112
+ filters2[relationField.name] = { id: value };
122
113
  } else {
123
114
  const scalarField = model.fields.find((f) => f.name === key && !f.relationName);
124
115
  if (scalarField) {
@@ -131,18 +122,17 @@ function AdminDataListPage({
131
122
  }, [searchParams, model]);
132
123
  const hasUrlFilters = Object.keys(urlFilters).length > 0;
133
124
  const documents = useMemo(() => {
134
- if (!model) return {
135
- query: void 0,
136
- listQuery: void 0,
137
- update: void 0,
138
- delete: void 0,
139
- create: void 0
140
- };
125
+ if (!model)
126
+ return {
127
+ query: void 0,
128
+ listQuery: void 0,
129
+ update: void 0,
130
+ delete: void 0,
131
+ create: void 0
132
+ };
141
133
  return getAdminDocuments(sdk, model);
142
134
  }, [sdk, model]);
143
- const {
144
- listQuery: query
145
- } = documents;
135
+ const { listQuery: query } = documents;
146
136
  const dataPath = useMemo(() => {
147
137
  return (model == null ? void 0 : model.pluralModelPropertyName) || pluralParam.replace(/-([a-z])/g, (_, letter) => letter.toUpperCase());
148
138
  }, [model, pluralParam]);
@@ -186,70 +176,58 @@ function AdminDataListPage({
186
176
  setVisibleColumns(filteredCols);
187
177
  const storedSort = AdminLocalStorage.getSortPreference(model.name);
188
178
  const sortFieldValid = storedSort && (storedSort.orderBy === "id" || fieldNames.includes(storedSort.orderBy));
189
- const nextSort = sortFieldValid ? storedSort : {
190
- orderBy: "id",
191
- orderDirection: "desc"
192
- };
193
- dispatch({
194
- type: "SET_SORT",
195
- payload: nextSort
196
- });
179
+ const nextSort = sortFieldValid ? storedSort : { orderBy: "id", orderDirection: "desc" };
180
+ dispatch({ type: "SET_SORT", payload: nextSort });
197
181
  const storedSearch = AdminLocalStorage.getSearchFields(model.name);
198
182
  const defaults = getDefaultSearchFields(searchableFieldNames);
199
183
  const filteredSearch = (storedSearch || defaults).filter((f) => searchableFieldNames.includes(f));
200
184
  setSearchFields(filteredSearch);
201
- dispatch({
202
- type: "SET_SEARCH",
203
- payload: ""
204
- });
205
- dispatch({
206
- type: "SET_DEBOUNCED_SEARCH",
207
- payload: ""
208
- });
209
- dispatch({
210
- type: "RESET_FILTERS"
211
- });
212
- dispatch({
213
- type: "RESET_PAGINATION"
214
- });
185
+ dispatch({ type: "SET_SEARCH", payload: "" });
186
+ dispatch({ type: "SET_DEBOUNCED_SEARCH", payload: "" });
187
+ dispatch({ type: "RESET_FILTERS" });
188
+ dispatch({ type: "RESET_PAGINATION" });
215
189
  if (hasUrlFilters) {
216
- dispatch({
217
- type: "SET_FILTERS",
218
- payload: urlFilters
219
- });
220
- dispatch({
221
- type: "SET_SHOW_FILTERS",
222
- payload: true
223
- });
190
+ dispatch({ type: "SET_FILTERS", payload: urlFilters });
191
+ dispatch({ type: "SET_SHOW_FILTERS", payload: true });
224
192
  }
225
193
  }, [model == null ? void 0 : model.name, fieldNames, searchableFieldNames, getDefaultSearchFields, setVisibleColumns, setSearchFields, dispatch, urlFilters]);
226
- const setSortSafely = useCallback((newSort) => {
227
- const resolvedSort = typeof newSort === "function" ? newSort(sort) : newSort;
228
- if (resolvedSort.orderBy !== sort.orderBy || resolvedSort.orderDirection !== sort.orderDirection) {
229
- dispatch({
230
- type: "SET_SORT",
231
- payload: resolvedSort
232
- });
233
- if (model) {
234
- AdminLocalStorage.setSortPreference(model.name, resolvedSort);
194
+ const setSortSafely = useCallback(
195
+ (newSort) => {
196
+ const resolvedSort = typeof newSort === "function" ? newSort(sort) : newSort;
197
+ if (resolvedSort.orderBy !== sort.orderBy || resolvedSort.orderDirection !== sort.orderDirection) {
198
+ dispatch({ type: "SET_SORT", payload: resolvedSort });
199
+ if (model) {
200
+ AdminLocalStorage.setSortPreference(model.name, resolvedSort);
201
+ }
235
202
  }
236
- }
237
- }, [sort.orderBy, sort.orderDirection, model, dispatch]);
238
- const handleClickOutside = useCallback((event) => {
239
- const target = event.target;
240
- if (showColumnSelector) {
241
- const columnSelector2 = document.querySelector('[data-dropdown="column-selector"]');
242
- if (columnSelector2 && !columnSelector2.contains(target)) {
243
- setShowColumnSelector(false);
203
+ },
204
+ [sort.orderBy, sort.orderDirection, model, dispatch]
205
+ );
206
+ const handleClickOutside = useCallback(
207
+ (event) => {
208
+ const target = event.target;
209
+ if (showColumnSelector) {
210
+ const columnSelector2 = document.querySelector('[data-dropdown="column-selector"]');
211
+ if (columnSelector2 && !columnSelector2.contains(target)) {
212
+ setShowColumnSelector(false);
213
+ }
244
214
  }
245
- }
246
- if (showSearchFieldSelector) {
247
- const searchFieldSelector2 = document.querySelector('[data-dropdown="search-field-selector"]');
248
- if (searchFieldSelector2 && !searchFieldSelector2.contains(target)) {
249
- setShowSearchFieldSelector(false);
215
+ if (showSearchFieldSelector) {
216
+ const searchFieldSelector2 = document.querySelector(
217
+ '[data-dropdown="search-field-selector"]'
218
+ );
219
+ if (searchFieldSelector2 && !searchFieldSelector2.contains(target)) {
220
+ setShowSearchFieldSelector(false);
221
+ }
250
222
  }
251
- }
252
- }, [showColumnSelector, showSearchFieldSelector, setShowColumnSelector, setShowSearchFieldSelector]);
223
+ },
224
+ [
225
+ showColumnSelector,
226
+ showSearchFieldSelector,
227
+ setShowColumnSelector,
228
+ setShowSearchFieldSelector
229
+ ]
230
+ );
253
231
  useEffect(() => {
254
232
  if (showColumnSelector || showSearchFieldSelector) {
255
233
  document.addEventListener("mousedown", handleClickOutside);
@@ -267,13 +245,7 @@ function AdminDataListPage({
267
245
  filters: Object.keys(filters).length > 0 ? filters : void 0
268
246
  }
269
247
  };
270
- const {
271
- data,
272
- loading,
273
- error,
274
- networkStatus,
275
- refetch
276
- } = useQuery(query ?? sdk.__AdminUsersDocument, {
248
+ const { data, loading, error, networkStatus, refetch } = useQuery(query ?? sdk.__AdminUsersDocument, {
277
249
  variables,
278
250
  skip: !model || !query,
279
251
  errorPolicy: "all",
@@ -286,11 +258,7 @@ function AdminDataListPage({
286
258
  // 30 second timeout
287
259
  }
288
260
  });
289
- const {
290
- validatedItems,
291
- validatedPagination,
292
- dataError
293
- } = useMemo(() => {
261
+ const { validatedItems, validatedPagination, dataError } = useMemo(() => {
294
262
  var _a, _b;
295
263
  if (error) {
296
264
  const apolloError = error;
@@ -350,479 +318,1042 @@ function AdminDataListPage({
350
318
  const items = validatedItems;
351
319
  const pagination = validatedPagination;
352
320
  if (!model) {
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: {
354
- fileName: _jsxFileName,
355
- lineNumber: 448,
356
- columnNumber: 7
357
- } }, /* @__PURE__ */ React.createElement("div", { className: "mt-8 sm:mx-auto sm:w-full sm:max-w-md", __self: this, __source: {
358
- fileName: _jsxFileName,
359
- lineNumber: 449,
360
- columnNumber: 9
361
- } }, /* @__PURE__ */ React.createElement("div", { className: "bg-white py-8 px-4 shadow sm:rounded-lg sm:px-10", __self: this, __source: {
362
- fileName: _jsxFileName,
363
- lineNumber: 450,
364
- columnNumber: 11
365
- } }, /* @__PURE__ */ React.createElement("div", { className: "text-center", __self: this, __source: {
366
- fileName: _jsxFileName,
321
+ return /* @__PURE__ */ jsxDEV("div", { className: "min-h-screen bg-gray-50 flex flex-col justify-center py-12 sm:px-6 lg:px-8", children: /* @__PURE__ */ jsxDEV("div", { className: "mt-8 sm:mx-auto sm:w-full sm:max-w-md", children: /* @__PURE__ */ jsxDEV("div", { className: "bg-white py-8 px-4 shadow sm:rounded-lg sm:px-10", children: /* @__PURE__ */ jsxDEV("div", { className: "text-center", children: [
322
+ /* @__PURE__ */ jsxDEV(
323
+ "svg",
324
+ {
325
+ className: "mx-auto h-12 w-12 text-red-400",
326
+ fill: "none",
327
+ stroke: "currentColor",
328
+ viewBox: "0 0 24 24",
329
+ children: /* @__PURE__ */ jsxDEV(
330
+ "path",
331
+ {
332
+ strokeLinecap: "round",
333
+ strokeLinejoin: "round",
334
+ strokeWidth: 2,
335
+ d: "M12 8v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"
336
+ },
337
+ void 0,
338
+ false,
339
+ {
340
+ fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/data-browser/src/lib/pages/AdminDataListPage.tsx",
341
+ lineNumber: 458,
342
+ columnNumber: 17
343
+ },
344
+ this
345
+ )
346
+ },
347
+ void 0,
348
+ false,
349
+ {
350
+ fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/data-browser/src/lib/pages/AdminDataListPage.tsx",
351
+ lineNumber: 452,
352
+ columnNumber: 15
353
+ },
354
+ this
355
+ ),
356
+ /* @__PURE__ */ jsxDEV("h2", { className: "mt-4 text-lg font-medium text-gray-900", children: "Invalid Data Type" }, void 0, false, {
357
+ fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/data-browser/src/lib/pages/AdminDataListPage.tsx",
358
+ lineNumber: 465,
359
+ columnNumber: 15
360
+ }, this),
361
+ /* @__PURE__ */ jsxDEV("p", { className: "mt-2 text-sm text-gray-600", children: [
362
+ 'The data type "',
363
+ pluralParam,
364
+ '" is not recognized.'
365
+ ] }, void 0, true, {
366
+ fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/data-browser/src/lib/pages/AdminDataListPage.tsx",
367
+ lineNumber: 466,
368
+ columnNumber: 15
369
+ }, this),
370
+ /* @__PURE__ */ jsxDEV("div", { className: "mt-6", children: /* @__PURE__ */ jsxDEV(
371
+ Link,
372
+ {
373
+ to: basePath,
374
+ 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",
375
+ children: "Return to Data Browser"
376
+ },
377
+ void 0,
378
+ false,
379
+ {
380
+ fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/data-browser/src/lib/pages/AdminDataListPage.tsx",
381
+ lineNumber: 470,
382
+ columnNumber: 17
383
+ },
384
+ this
385
+ ) }, void 0, false, {
386
+ fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/data-browser/src/lib/pages/AdminDataListPage.tsx",
387
+ lineNumber: 469,
388
+ columnNumber: 15
389
+ }, this)
390
+ ] }, void 0, true, {
391
+ fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/data-browser/src/lib/pages/AdminDataListPage.tsx",
367
392
  lineNumber: 451,
368
393
  columnNumber: 13
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: {
370
- fileName: _jsxFileName,
371
- lineNumber: 452,
372
- columnNumber: 15
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: {
374
- fileName: _jsxFileName,
375
- lineNumber: 458,
376
- columnNumber: 17
377
- } })), /* @__PURE__ */ React.createElement("h2", { className: "mt-4 text-lg font-medium text-gray-900", __self: this, __source: {
378
- fileName: _jsxFileName,
379
- lineNumber: 465,
380
- columnNumber: 15
381
- } }, "Invalid Data Type"), /* @__PURE__ */ React.createElement("p", { className: "mt-2 text-sm text-gray-600", __self: this, __source: {
382
- fileName: _jsxFileName,
383
- lineNumber: 466,
384
- columnNumber: 15
385
- } }, 'The data type "', pluralParam, '" is not recognized.'), /* @__PURE__ */ React.createElement("div", { className: "mt-6", __self: this, __source: {
386
- fileName: _jsxFileName,
387
- lineNumber: 469,
388
- columnNumber: 15
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: {
390
- fileName: _jsxFileName,
391
- lineNumber: 470,
392
- columnNumber: 17
393
- } }, "Return to Data Browser"))))));
394
+ }, this) }, void 0, false, {
395
+ fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/data-browser/src/lib/pages/AdminDataListPage.tsx",
396
+ lineNumber: 450,
397
+ columnNumber: 11
398
+ }, this) }, void 0, false, {
399
+ fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/data-browser/src/lib/pages/AdminDataListPage.tsx",
400
+ lineNumber: 449,
401
+ columnNumber: 9
402
+ }, this) }, void 0, false, {
403
+ fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/data-browser/src/lib/pages/AdminDataListPage.tsx",
404
+ lineNumber: 448,
405
+ columnNumber: 7
406
+ }, this);
394
407
  }
395
408
  if (!query) {
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: {
397
- fileName: _jsxFileName,
398
- lineNumber: 486,
399
- columnNumber: 7
400
- } }, /* @__PURE__ */ React.createElement("div", { className: "mt-8 sm:mx-auto sm:w-full sm:max-w-md", __self: this, __source: {
401
- fileName: _jsxFileName,
402
- lineNumber: 487,
403
- columnNumber: 9
404
- } }, /* @__PURE__ */ React.createElement("div", { className: "bg-white py-8 px-4 shadow sm:rounded-lg sm:px-10", __self: this, __source: {
405
- fileName: _jsxFileName,
406
- lineNumber: 488,
407
- columnNumber: 11
408
- } }, /* @__PURE__ */ React.createElement("div", { className: "text-center", __self: this, __source: {
409
- fileName: _jsxFileName,
409
+ return /* @__PURE__ */ jsxDEV("div", { className: "min-h-screen bg-gray-50 flex flex-col justify-center py-12 sm:px-6 lg:px-8", children: /* @__PURE__ */ jsxDEV("div", { className: "mt-8 sm:mx-auto sm:w-full sm:max-w-md", children: /* @__PURE__ */ jsxDEV("div", { className: "bg-white py-8 px-4 shadow sm:rounded-lg sm:px-10", children: /* @__PURE__ */ jsxDEV("div", { className: "text-center", children: [
410
+ /* @__PURE__ */ jsxDEV(
411
+ "svg",
412
+ {
413
+ className: "mx-auto h-12 w-12 text-yellow-400",
414
+ fill: "none",
415
+ stroke: "currentColor",
416
+ viewBox: "0 0 24 24",
417
+ children: /* @__PURE__ */ jsxDEV(
418
+ "path",
419
+ {
420
+ strokeLinecap: "round",
421
+ strokeLinejoin: "round",
422
+ strokeWidth: 2,
423
+ 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"
424
+ },
425
+ void 0,
426
+ false,
427
+ {
428
+ fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/data-browser/src/lib/pages/AdminDataListPage.tsx",
429
+ lineNumber: 496,
430
+ columnNumber: 17
431
+ },
432
+ this
433
+ )
434
+ },
435
+ void 0,
436
+ false,
437
+ {
438
+ fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/data-browser/src/lib/pages/AdminDataListPage.tsx",
439
+ lineNumber: 490,
440
+ columnNumber: 15
441
+ },
442
+ this
443
+ ),
444
+ /* @__PURE__ */ jsxDEV("h2", { className: "mt-4 text-lg font-medium text-gray-900", children: "GraphQL Schema Not Available" }, void 0, false, {
445
+ fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/data-browser/src/lib/pages/AdminDataListPage.tsx",
446
+ lineNumber: 503,
447
+ columnNumber: 15
448
+ }, this),
449
+ /* @__PURE__ */ jsxDEV("p", { className: "mt-2 text-sm text-gray-600", children: [
450
+ 'No GraphQL query found for "',
451
+ model.name,
452
+ '". The admin schema may need to be regenerated.'
453
+ ] }, void 0, true, {
454
+ fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/data-browser/src/lib/pages/AdminDataListPage.tsx",
455
+ lineNumber: 506,
456
+ columnNumber: 15
457
+ }, this),
458
+ /* @__PURE__ */ jsxDEV("div", { className: "mt-6 space-y-3", children: [
459
+ /* @__PURE__ */ jsxDEV(
460
+ "button",
461
+ {
462
+ onClick: () => window.location.reload(),
463
+ 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",
464
+ children: "Reload Page"
465
+ },
466
+ void 0,
467
+ false,
468
+ {
469
+ fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/data-browser/src/lib/pages/AdminDataListPage.tsx",
470
+ lineNumber: 511,
471
+ columnNumber: 17
472
+ },
473
+ this
474
+ ),
475
+ /* @__PURE__ */ jsxDEV(
476
+ Link,
477
+ {
478
+ to: basePath,
479
+ 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",
480
+ children: "Return to Data Browser"
481
+ },
482
+ void 0,
483
+ false,
484
+ {
485
+ fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/data-browser/src/lib/pages/AdminDataListPage.tsx",
486
+ lineNumber: 517,
487
+ columnNumber: 17
488
+ },
489
+ this
490
+ )
491
+ ] }, void 0, true, {
492
+ fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/data-browser/src/lib/pages/AdminDataListPage.tsx",
493
+ lineNumber: 510,
494
+ columnNumber: 15
495
+ }, this)
496
+ ] }, void 0, true, {
497
+ fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/data-browser/src/lib/pages/AdminDataListPage.tsx",
410
498
  lineNumber: 489,
411
499
  columnNumber: 13
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: {
413
- fileName: _jsxFileName,
414
- lineNumber: 490,
415
- columnNumber: 15
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: {
417
- fileName: _jsxFileName,
418
- lineNumber: 496,
419
- columnNumber: 17
420
- } })), /* @__PURE__ */ React.createElement("h2", { className: "mt-4 text-lg font-medium text-gray-900", __self: this, __source: {
421
- fileName: _jsxFileName,
422
- lineNumber: 503,
423
- columnNumber: 15
424
- } }, "GraphQL Schema Not Available"), /* @__PURE__ */ React.createElement("p", { className: "mt-2 text-sm text-gray-600", __self: this, __source: {
425
- fileName: _jsxFileName,
426
- lineNumber: 506,
427
- columnNumber: 15
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: {
429
- fileName: _jsxFileName,
430
- lineNumber: 510,
431
- columnNumber: 15
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: {
433
- fileName: _jsxFileName,
434
- lineNumber: 511,
435
- columnNumber: 17
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: {
437
- fileName: _jsxFileName,
438
- lineNumber: 517,
439
- columnNumber: 17
440
- } }, "Return to Data Browser"))))));
500
+ }, this) }, void 0, false, {
501
+ fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/data-browser/src/lib/pages/AdminDataListPage.tsx",
502
+ lineNumber: 488,
503
+ columnNumber: 11
504
+ }, this) }, void 0, false, {
505
+ fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/data-browser/src/lib/pages/AdminDataListPage.tsx",
506
+ lineNumber: 487,
507
+ columnNumber: 9
508
+ }, this) }, void 0, false, {
509
+ fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/data-browser/src/lib/pages/AdminDataListPage.tsx",
510
+ lineNumber: 486,
511
+ columnNumber: 7
512
+ }, this);
441
513
  }
442
514
  const createLink = `${basePath}/${kebabCase(model.name)}/create`;
443
- const columnSelector = /* @__PURE__ */ React.createElement("div", { className: "relative", "data-dropdown": "column-selector", __self: this, __source: {
444
- fileName: _jsxFileName,
515
+ const columnSelector = /* @__PURE__ */ jsxDEV("div", { className: "relative", "data-dropdown": "column-selector", children: [
516
+ /* @__PURE__ */ jsxDEV(
517
+ "button",
518
+ {
519
+ onClick: () => setShowColumnSelector(!showColumnSelector),
520
+ 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",
521
+ children: [
522
+ "Columns",
523
+ /* @__PURE__ */ jsxDEV(
524
+ "svg",
525
+ {
526
+ className: "-mr-0.5 ml-2 h-4 w-4",
527
+ xmlns: "http://www.w3.org/2000/svg",
528
+ viewBox: "0 0 20 20",
529
+ fill: "currentColor",
530
+ children: /* @__PURE__ */ jsxDEV(
531
+ "path",
532
+ {
533
+ fillRule: "evenodd",
534
+ 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",
535
+ clipRule: "evenodd"
536
+ },
537
+ void 0,
538
+ false,
539
+ {
540
+ fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/data-browser/src/lib/pages/AdminDataListPage.tsx",
541
+ lineNumber: 548,
542
+ columnNumber: 11
543
+ },
544
+ this
545
+ )
546
+ },
547
+ void 0,
548
+ false,
549
+ {
550
+ fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/data-browser/src/lib/pages/AdminDataListPage.tsx",
551
+ lineNumber: 542,
552
+ columnNumber: 9
553
+ },
554
+ this
555
+ )
556
+ ]
557
+ },
558
+ void 0,
559
+ true,
560
+ {
561
+ fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/data-browser/src/lib/pages/AdminDataListPage.tsx",
562
+ lineNumber: 537,
563
+ columnNumber: 7
564
+ },
565
+ this
566
+ ),
567
+ showColumnSelector && /* @__PURE__ */ jsxDEV("div", { className: "absolute right-0 mt-2 w-80 bg-white rounded-md shadow-lg z-50 border border-gray-200", children: /* @__PURE__ */ jsxDEV("div", { className: "p-4", children: [
568
+ /* @__PURE__ */ jsxDEV("h3", { className: "text-sm font-medium text-gray-900 mb-3", children: "Visible Columns" }, void 0, false, {
569
+ fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/data-browser/src/lib/pages/AdminDataListPage.tsx",
570
+ lineNumber: 559,
571
+ columnNumber: 13
572
+ }, this),
573
+ /* @__PURE__ */ jsxDEV("div", { className: "space-y-2 max-h-64 overflow-y-auto", children: fieldNames.map((field) => /* @__PURE__ */ jsxDEV("label", { className: "flex items-start gap-2 cursor-pointer", children: [
574
+ /* @__PURE__ */ jsxDEV(
575
+ "input",
576
+ {
577
+ type: "checkbox",
578
+ checked: visibleColumns.includes(field),
579
+ onChange: (e) => {
580
+ const newColumns = e.target.checked ? [...visibleColumns, field] : visibleColumns.filter((col) => col !== field);
581
+ setVisibleColumns(newColumns);
582
+ AdminLocalStorage.setColumnVisibility(model.name, newColumns);
583
+ },
584
+ className: "h-4 w-4 mt-0.5 flex-shrink-0 text-green-web focus:ring-green-web border-gray-300 rounded"
585
+ },
586
+ void 0,
587
+ false,
588
+ {
589
+ fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/data-browser/src/lib/pages/AdminDataListPage.tsx",
590
+ lineNumber: 563,
591
+ columnNumber: 19
592
+ },
593
+ this
594
+ ),
595
+ /* @__PURE__ */ jsxDEV("span", { className: "text-sm text-gray-700 leading-5", children: formatFieldName(field) }, void 0, false, {
596
+ fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/data-browser/src/lib/pages/AdminDataListPage.tsx",
597
+ lineNumber: 575,
598
+ columnNumber: 19
599
+ }, this)
600
+ ] }, field, true, {
601
+ fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/data-browser/src/lib/pages/AdminDataListPage.tsx",
602
+ lineNumber: 562,
603
+ columnNumber: 17
604
+ }, this)) }, void 0, false, {
605
+ fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/data-browser/src/lib/pages/AdminDataListPage.tsx",
606
+ lineNumber: 560,
607
+ columnNumber: 13
608
+ }, this),
609
+ /* @__PURE__ */ jsxDEV("div", { className: "mt-3 pt-3 border-t border-gray-200 flex justify-between", children: [
610
+ /* @__PURE__ */ jsxDEV(
611
+ "button",
612
+ {
613
+ onClick: () => {
614
+ setVisibleColumns(fieldNames);
615
+ AdminLocalStorage.setColumnVisibility(model.name, fieldNames);
616
+ },
617
+ className: "text-xs text-green-web hover:text-green-web-800",
618
+ children: "Select All"
619
+ },
620
+ void 0,
621
+ false,
622
+ {
623
+ fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/data-browser/src/lib/pages/AdminDataListPage.tsx",
624
+ lineNumber: 580,
625
+ columnNumber: 15
626
+ },
627
+ this
628
+ ),
629
+ /* @__PURE__ */ jsxDEV(
630
+ "button",
631
+ {
632
+ onClick: () => {
633
+ const defaults = fieldNames.slice(0, 8);
634
+ setVisibleColumns(defaults);
635
+ AdminLocalStorage.setColumnVisibility(model.name, defaults);
636
+ },
637
+ className: "text-xs text-gray-600 hover:text-gray-800",
638
+ children: "Reset to Defaults"
639
+ },
640
+ void 0,
641
+ false,
642
+ {
643
+ fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/data-browser/src/lib/pages/AdminDataListPage.tsx",
644
+ lineNumber: 589,
645
+ columnNumber: 15
646
+ },
647
+ this
648
+ )
649
+ ] }, void 0, true, {
650
+ fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/data-browser/src/lib/pages/AdminDataListPage.tsx",
651
+ lineNumber: 579,
652
+ columnNumber: 13
653
+ }, this)
654
+ ] }, void 0, true, {
655
+ fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/data-browser/src/lib/pages/AdminDataListPage.tsx",
656
+ lineNumber: 558,
657
+ columnNumber: 11
658
+ }, this) }, void 0, false, {
659
+ fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/data-browser/src/lib/pages/AdminDataListPage.tsx",
660
+ lineNumber: 557,
661
+ columnNumber: 9
662
+ }, this)
663
+ ] }, void 0, true, {
664
+ fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/data-browser/src/lib/pages/AdminDataListPage.tsx",
445
665
  lineNumber: 536,
446
666
  columnNumber: 5
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: {
448
- fileName: _jsxFileName,
449
- lineNumber: 537,
450
- columnNumber: 7
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: {
452
- fileName: _jsxFileName,
453
- lineNumber: 542,
454
- columnNumber: 9
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: {
456
- fileName: _jsxFileName,
457
- lineNumber: 548,
458
- columnNumber: 11
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: {
460
- fileName: _jsxFileName,
461
- lineNumber: 557,
462
- columnNumber: 9
463
- } }, /* @__PURE__ */ React.createElement("div", { className: "p-4", __self: this, __source: {
464
- fileName: _jsxFileName,
465
- lineNumber: 558,
466
- columnNumber: 11
467
- } }, /* @__PURE__ */ React.createElement("h3", { className: "text-sm font-medium text-gray-900 mb-3", __self: this, __source: {
468
- fileName: _jsxFileName,
469
- lineNumber: 559,
470
- columnNumber: 13
471
- } }, "Visible Columns"), /* @__PURE__ */ React.createElement("div", { className: "space-y-2 max-h-64 overflow-y-auto", __self: this, __source: {
472
- fileName: _jsxFileName,
473
- lineNumber: 560,
474
- columnNumber: 13
475
- } }, fieldNames.map((field) => /* @__PURE__ */ React.createElement("label", { key: field, className: "flex items-start gap-2 cursor-pointer", __self: this, __source: {
476
- fileName: _jsxFileName,
477
- lineNumber: 562,
478
- columnNumber: 17
479
- } }, /* @__PURE__ */ React.createElement("input", { type: "checkbox", checked: visibleColumns.includes(field), onChange: (e) => {
480
- const newColumns = e.target.checked ? [...visibleColumns, field] : visibleColumns.filter((col) => col !== field);
481
- setVisibleColumns(newColumns);
482
- AdminLocalStorage.setColumnVisibility(model.name, newColumns);
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: {
484
- fileName: _jsxFileName,
485
- lineNumber: 563,
486
- columnNumber: 19
487
- } }), /* @__PURE__ */ React.createElement("span", { className: "text-sm text-gray-700 leading-5", __self: this, __source: {
488
- fileName: _jsxFileName,
489
- lineNumber: 575,
490
- columnNumber: 19
491
- } }, formatFieldName(field))))), /* @__PURE__ */ React.createElement("div", { className: "mt-3 pt-3 border-t border-gray-200 flex justify-between", __self: this, __source: {
492
- fileName: _jsxFileName,
493
- lineNumber: 579,
494
- columnNumber: 13
495
- } }, /* @__PURE__ */ React.createElement("button", { onClick: () => {
496
- setVisibleColumns(fieldNames);
497
- AdminLocalStorage.setColumnVisibility(model.name, fieldNames);
498
- }, className: "text-xs text-green-web hover:text-green-web-800", __self: this, __source: {
499
- fileName: _jsxFileName,
500
- lineNumber: 580,
501
- columnNumber: 15
502
- } }, "Select All"), /* @__PURE__ */ React.createElement("button", { onClick: () => {
503
- const defaults = fieldNames.slice(0, 8);
504
- setVisibleColumns(defaults);
505
- AdminLocalStorage.setColumnVisibility(model.name, defaults);
506
- }, className: "text-xs text-gray-600 hover:text-gray-800", __self: this, __source: {
507
- fileName: _jsxFileName,
508
- lineNumber: 589,
509
- columnNumber: 15
510
- } }, "Reset to Defaults")))));
511
- const searchFieldSelector = /* @__PURE__ */ React.createElement("div", { className: "relative", "data-dropdown": "search-field-selector", __self: this, __source: {
512
- fileName: _jsxFileName,
667
+ }, this);
668
+ const searchFieldSelector = /* @__PURE__ */ jsxDEV("div", { className: "relative", "data-dropdown": "search-field-selector", children: [
669
+ /* @__PURE__ */ jsxDEV(
670
+ "button",
671
+ {
672
+ onClick: () => setShowSearchFieldSelector(!showSearchFieldSelector),
673
+ className: "h-full px-3 border-l border-gray-300 text-gray-400 hover:text-gray-600 focus:outline-none focus:text-gray-600",
674
+ "aria-label": "Configure search fields",
675
+ children: /* @__PURE__ */ jsxDEV(
676
+ "svg",
677
+ {
678
+ className: "h-4 w-4",
679
+ xmlns: "http://www.w3.org/2000/svg",
680
+ viewBox: "0 0 20 20",
681
+ fill: "currentColor",
682
+ children: /* @__PURE__ */ jsxDEV(
683
+ "path",
684
+ {
685
+ fillRule: "evenodd",
686
+ 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",
687
+ clipRule: "evenodd"
688
+ },
689
+ void 0,
690
+ false,
691
+ {
692
+ fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/data-browser/src/lib/pages/AdminDataListPage.tsx",
693
+ lineNumber: 620,
694
+ columnNumber: 11
695
+ },
696
+ this
697
+ )
698
+ },
699
+ void 0,
700
+ false,
701
+ {
702
+ fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/data-browser/src/lib/pages/AdminDataListPage.tsx",
703
+ lineNumber: 614,
704
+ columnNumber: 9
705
+ },
706
+ this
707
+ )
708
+ },
709
+ void 0,
710
+ false,
711
+ {
712
+ fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/data-browser/src/lib/pages/AdminDataListPage.tsx",
713
+ lineNumber: 609,
714
+ columnNumber: 7
715
+ },
716
+ this
717
+ ),
718
+ showSearchFieldSelector && /* @__PURE__ */ jsxDEV("div", { className: "absolute right-0 mt-2 w-72 bg-white rounded-md shadow-lg z-50 border border-gray-200", children: /* @__PURE__ */ jsxDEV("div", { className: "p-4", children: [
719
+ /* @__PURE__ */ jsxDEV("h3", { className: "text-sm font-medium text-gray-900 mb-3", children: "Search Fields" }, void 0, false, {
720
+ fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/data-browser/src/lib/pages/AdminDataListPage.tsx",
721
+ lineNumber: 631,
722
+ columnNumber: 13
723
+ }, this),
724
+ searchableFieldNames.length > 0 ? /* @__PURE__ */ jsxDEV(Fragment, { children: [
725
+ /* @__PURE__ */ jsxDEV("div", { className: "space-y-2 max-h-48 overflow-y-auto", children: searchableFieldNames.map((field) => /* @__PURE__ */ jsxDEV("label", { className: "flex items-start gap-2 cursor-pointer", children: [
726
+ /* @__PURE__ */ jsxDEV(
727
+ "input",
728
+ {
729
+ type: "checkbox",
730
+ checked: searchFields.includes(field),
731
+ onChange: (e) => {
732
+ const newFields = e.target.checked ? [...searchFields, field] : searchFields.filter((f) => f !== field);
733
+ setSearchFields(newFields);
734
+ AdminLocalStorage.setSearchFields(model.name, newFields);
735
+ },
736
+ className: "h-4 w-4 mt-0.5 flex-shrink-0 text-green-web focus:ring-green-web border-gray-300 rounded"
737
+ },
738
+ void 0,
739
+ false,
740
+ {
741
+ fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/data-browser/src/lib/pages/AdminDataListPage.tsx",
742
+ lineNumber: 637,
743
+ columnNumber: 23
744
+ },
745
+ this
746
+ ),
747
+ /* @__PURE__ */ jsxDEV("span", { className: "text-sm text-gray-700 leading-5", children: formatFieldName(field) }, void 0, false, {
748
+ fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/data-browser/src/lib/pages/AdminDataListPage.tsx",
749
+ lineNumber: 649,
750
+ columnNumber: 23
751
+ }, this)
752
+ ] }, field, true, {
753
+ fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/data-browser/src/lib/pages/AdminDataListPage.tsx",
754
+ lineNumber: 636,
755
+ columnNumber: 21
756
+ }, this)) }, void 0, false, {
757
+ fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/data-browser/src/lib/pages/AdminDataListPage.tsx",
758
+ lineNumber: 634,
759
+ columnNumber: 17
760
+ }, this),
761
+ /* @__PURE__ */ jsxDEV("div", { className: "mt-3 pt-3 border-t border-gray-200 flex justify-between", children: [
762
+ /* @__PURE__ */ jsxDEV(
763
+ "button",
764
+ {
765
+ onClick: () => {
766
+ setSearchFields(searchableFieldNames);
767
+ AdminLocalStorage.setSearchFields(model.name, searchableFieldNames);
768
+ },
769
+ className: "text-xs text-green-web hover:text-green-web-800 mr-3",
770
+ children: "Select All"
771
+ },
772
+ void 0,
773
+ false,
774
+ {
775
+ fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/data-browser/src/lib/pages/AdminDataListPage.tsx",
776
+ lineNumber: 656,
777
+ columnNumber: 19
778
+ },
779
+ this
780
+ ),
781
+ /* @__PURE__ */ jsxDEV(
782
+ "button",
783
+ {
784
+ onClick: () => {
785
+ const defaults = getDefaultSearchFields(searchableFieldNames);
786
+ setSearchFields(defaults);
787
+ AdminLocalStorage.setSearchFields(model.name, defaults);
788
+ },
789
+ className: "text-xs text-gray-600 hover:text-gray-800",
790
+ children: "Reset to Defaults"
791
+ },
792
+ void 0,
793
+ false,
794
+ {
795
+ fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/data-browser/src/lib/pages/AdminDataListPage.tsx",
796
+ lineNumber: 665,
797
+ columnNumber: 19
798
+ },
799
+ this
800
+ )
801
+ ] }, void 0, true, {
802
+ fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/data-browser/src/lib/pages/AdminDataListPage.tsx",
803
+ lineNumber: 655,
804
+ columnNumber: 17
805
+ }, this)
806
+ ] }, void 0, true, {
807
+ fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/data-browser/src/lib/pages/AdminDataListPage.tsx",
808
+ lineNumber: 633,
809
+ columnNumber: 15
810
+ }, this) : /* @__PURE__ */ jsxDEV("div", { className: "text-sm text-gray-500", children: "No searchable text fields available" }, void 0, false, {
811
+ fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/data-browser/src/lib/pages/AdminDataListPage.tsx",
812
+ lineNumber: 678,
813
+ columnNumber: 15
814
+ }, this)
815
+ ] }, void 0, true, {
816
+ fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/data-browser/src/lib/pages/AdminDataListPage.tsx",
817
+ lineNumber: 630,
818
+ columnNumber: 11
819
+ }, this) }, void 0, false, {
820
+ fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/data-browser/src/lib/pages/AdminDataListPage.tsx",
821
+ lineNumber: 629,
822
+ columnNumber: 9
823
+ }, this)
824
+ ] }, void 0, true, {
825
+ fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/data-browser/src/lib/pages/AdminDataListPage.tsx",
513
826
  lineNumber: 608,
514
827
  columnNumber: 5
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: {
516
- fileName: _jsxFileName,
517
- lineNumber: 609,
518
- columnNumber: 7
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: {
520
- fileName: _jsxFileName,
521
- lineNumber: 614,
522
- columnNumber: 9
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: {
524
- fileName: _jsxFileName,
525
- lineNumber: 620,
526
- columnNumber: 11
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: {
528
- fileName: _jsxFileName,
529
- lineNumber: 629,
530
- columnNumber: 9
531
- } }, /* @__PURE__ */ React.createElement("div", { className: "p-4", __self: this, __source: {
532
- fileName: _jsxFileName,
533
- lineNumber: 630,
534
- columnNumber: 11
535
- } }, /* @__PURE__ */ React.createElement("h3", { className: "text-sm font-medium text-gray-900 mb-3", __self: this, __source: {
536
- fileName: _jsxFileName,
537
- lineNumber: 631,
538
- columnNumber: 13
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: {
540
- fileName: _jsxFileName,
541
- lineNumber: 634,
542
- columnNumber: 17
543
- } }, searchableFieldNames.map((field) => /* @__PURE__ */ React.createElement("label", { key: field, className: "flex items-start gap-2 cursor-pointer", __self: this, __source: {
544
- fileName: _jsxFileName,
545
- lineNumber: 636,
546
- columnNumber: 21
547
- } }, /* @__PURE__ */ React.createElement("input", { type: "checkbox", checked: searchFields.includes(field), onChange: (e) => {
548
- const newFields = e.target.checked ? [...searchFields, field] : searchFields.filter((f) => f !== field);
549
- setSearchFields(newFields);
550
- AdminLocalStorage.setSearchFields(model.name, newFields);
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: {
552
- fileName: _jsxFileName,
553
- lineNumber: 637,
554
- columnNumber: 23
555
- } }), /* @__PURE__ */ React.createElement("span", { className: "text-sm text-gray-700 leading-5", __self: this, __source: {
556
- fileName: _jsxFileName,
557
- lineNumber: 649,
558
- columnNumber: 23
559
- } }, formatFieldName(field))))), /* @__PURE__ */ React.createElement("div", { className: "mt-3 pt-3 border-t border-gray-200 flex justify-between", __self: this, __source: {
560
- fileName: _jsxFileName,
561
- lineNumber: 655,
562
- columnNumber: 17
563
- } }, /* @__PURE__ */ React.createElement("button", { onClick: () => {
564
- setSearchFields(searchableFieldNames);
565
- AdminLocalStorage.setSearchFields(model.name, searchableFieldNames);
566
- }, className: "text-xs text-green-web hover:text-green-web-800 mr-3", __self: this, __source: {
567
- fileName: _jsxFileName,
568
- lineNumber: 656,
569
- columnNumber: 19
570
- } }, "Select All"), /* @__PURE__ */ React.createElement("button", { onClick: () => {
571
- const defaults = getDefaultSearchFields(searchableFieldNames);
572
- setSearchFields(defaults);
573
- AdminLocalStorage.setSearchFields(model.name, defaults);
574
- }, className: "text-xs text-gray-600 hover:text-gray-800", __self: this, __source: {
575
- fileName: _jsxFileName,
576
- lineNumber: 665,
577
- columnNumber: 19
578
- } }, "Reset to Defaults"))) : /* @__PURE__ */ React.createElement("div", { className: "text-sm text-gray-500", __self: this, __source: {
579
- fileName: _jsxFileName,
580
- lineNumber: 678,
581
- columnNumber: 15
582
- } }, "No searchable text fields available"))));
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: {
584
- fileName: _jsxFileName,
585
- lineNumber: 688,
586
- columnNumber: 5
587
- } }, /* @__PURE__ */ React.createElement("div", { className: "flex items-center justify-between mb-3", __self: this, __source: {
588
- fileName: _jsxFileName,
589
- lineNumber: 689,
590
- columnNumber: 7
591
- } }, /* @__PURE__ */ React.createElement("h3", { className: "text-sm font-medium text-gray-900", __self: this, __source: {
592
- fileName: _jsxFileName,
593
- lineNumber: 690,
594
- columnNumber: 9
595
- } }, "Filters"), /* @__PURE__ */ React.createElement("div", { className: "flex items-center space-x-2", __self: this, __source: {
596
- fileName: _jsxFileName,
597
- lineNumber: 691,
598
- columnNumber: 9
599
- } }, /* @__PURE__ */ React.createElement("button", { onClick: () => {
600
- setFilters({});
601
- dispatch({
602
- type: "RESET_PAGINATION"
603
- });
604
- }, className: "text-xs text-gray-600 hover:text-gray-800", __self: this, __source: {
605
- fileName: _jsxFileName,
606
- lineNumber: 692,
607
- columnNumber: 11
608
- } }, "Clear All"), /* @__PURE__ */ React.createElement("button", { onClick: () => setShowFilters(false), className: "text-gray-400 hover:text-gray-600", __self: this, __source: {
609
- fileName: _jsxFileName,
610
- lineNumber: 701,
611
- columnNumber: 11
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: {
613
- fileName: _jsxFileName,
614
- lineNumber: 705,
615
- columnNumber: 13
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: {
617
- fileName: _jsxFileName,
618
- lineNumber: 711,
619
- columnNumber: 15
620
- } }))))), /* @__PURE__ */ React.createElement("div", { className: "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4", __self: this, __source: {
621
- fileName: _jsxFileName,
622
- lineNumber: 721,
623
- columnNumber: 7
624
- } }, filterableFieldNames.map((fieldName) => {
625
- const field = model.fields.find((f) => f.name === fieldName);
626
- if (!field) return null;
627
- const currentValue = filters[fieldName];
628
- const handleChange = (value) => {
629
- const newFilters = {
630
- ...filters
828
+ }, this);
829
+ const filterPanel = showFilters && /* @__PURE__ */ jsxDEV("div", { className: "mb-4 bg-gray-50 border border-gray-200 rounded-lg p-4", children: [
830
+ /* @__PURE__ */ jsxDEV("div", { className: "flex items-center justify-between mb-3", children: [
831
+ /* @__PURE__ */ jsxDEV("h3", { className: "text-sm font-medium text-gray-900", children: "Filters" }, void 0, false, {
832
+ fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/data-browser/src/lib/pages/AdminDataListPage.tsx",
833
+ lineNumber: 690,
834
+ columnNumber: 9
835
+ }, this),
836
+ /* @__PURE__ */ jsxDEV("div", { className: "flex items-center space-x-2", children: [
837
+ /* @__PURE__ */ jsxDEV(
838
+ "button",
839
+ {
840
+ onClick: () => {
841
+ setFilters({});
842
+ dispatch({ type: "RESET_PAGINATION" });
843
+ },
844
+ className: "text-xs text-gray-600 hover:text-gray-800",
845
+ children: "Clear All"
846
+ },
847
+ void 0,
848
+ false,
849
+ {
850
+ fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/data-browser/src/lib/pages/AdminDataListPage.tsx",
851
+ lineNumber: 692,
852
+ columnNumber: 11
853
+ },
854
+ this
855
+ ),
856
+ /* @__PURE__ */ jsxDEV(
857
+ "button",
858
+ {
859
+ onClick: () => setShowFilters(false),
860
+ className: "text-gray-400 hover:text-gray-600",
861
+ children: /* @__PURE__ */ jsxDEV(
862
+ "svg",
863
+ {
864
+ className: "h-5 w-5",
865
+ xmlns: "http://www.w3.org/2000/svg",
866
+ viewBox: "0 0 20 20",
867
+ fill: "currentColor",
868
+ children: /* @__PURE__ */ jsxDEV(
869
+ "path",
870
+ {
871
+ fillRule: "evenodd",
872
+ 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",
873
+ clipRule: "evenodd"
874
+ },
875
+ void 0,
876
+ false,
877
+ {
878
+ fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/data-browser/src/lib/pages/AdminDataListPage.tsx",
879
+ lineNumber: 711,
880
+ columnNumber: 15
881
+ },
882
+ this
883
+ )
884
+ },
885
+ void 0,
886
+ false,
887
+ {
888
+ fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/data-browser/src/lib/pages/AdminDataListPage.tsx",
889
+ lineNumber: 705,
890
+ columnNumber: 13
891
+ },
892
+ this
893
+ )
894
+ },
895
+ void 0,
896
+ false,
897
+ {
898
+ fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/data-browser/src/lib/pages/AdminDataListPage.tsx",
899
+ lineNumber: 701,
900
+ columnNumber: 11
901
+ },
902
+ this
903
+ )
904
+ ] }, void 0, true, {
905
+ fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/data-browser/src/lib/pages/AdminDataListPage.tsx",
906
+ lineNumber: 691,
907
+ columnNumber: 9
908
+ }, this)
909
+ ] }, void 0, true, {
910
+ fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/data-browser/src/lib/pages/AdminDataListPage.tsx",
911
+ lineNumber: 689,
912
+ columnNumber: 7
913
+ }, this),
914
+ /* @__PURE__ */ jsxDEV("div", { className: "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4", children: filterableFieldNames.map((fieldName) => {
915
+ const field = model.fields.find((f) => f.name === fieldName);
916
+ if (!field) return null;
917
+ const currentValue = filters[fieldName];
918
+ const handleChange = (value) => {
919
+ const newFilters = { ...filters };
920
+ if (value === void 0 || value === null || value === "") {
921
+ delete newFilters[fieldName];
922
+ } else {
923
+ newFilters[fieldName] = value;
924
+ }
925
+ setFilters(newFilters);
926
+ dispatch({ type: "RESET_PAGINATION" });
631
927
  };
632
- if (value === void 0 || value === null || value === "") {
633
- delete newFilters[fieldName];
634
- } else {
635
- newFilters[fieldName] = value;
928
+ if (field.relationName && !field.isList) {
929
+ return /* @__PURE__ */ jsxDEV(
930
+ RelationFilterField,
931
+ {
932
+ fieldName,
933
+ relatedModelName: field.type,
934
+ currentValue,
935
+ onChange: handleChange
936
+ },
937
+ fieldName,
938
+ false,
939
+ {
940
+ fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/data-browser/src/lib/pages/AdminDataListPage.tsx",
941
+ lineNumber: 741,
942
+ columnNumber: 15
943
+ },
944
+ this
945
+ );
636
946
  }
637
- setFilters(newFilters);
638
- dispatch({
639
- type: "RESET_PAGINATION"
640
- });
641
- };
642
- if (field.relationName && !field.isList) {
643
- return /* @__PURE__ */ React.createElement(RelationFilterField, { key: fieldName, fieldName, relatedModelName: field.type, currentValue, onChange: handleChange, __self: this, __source: {
644
- fileName: _jsxFileName,
645
- lineNumber: 741,
646
- columnNumber: 15
647
- } });
648
- }
649
- if (field.type.toLowerCase() === "datetime" || field.type.toLowerCase() === "date") {
650
- return /* @__PURE__ */ React.createElement(DateRangeFilter, { key: fieldName, fieldName, currentValue, onChange: handleChange, __self: this, __source: {
651
- fileName: _jsxFileName,
652
- lineNumber: 754,
653
- columnNumber: 15
654
- } });
655
- }
656
- if (["int", "bigint", "float", "decimal"].includes(field.type.toLowerCase())) {
657
- return /* @__PURE__ */ React.createElement(NumberRangeFilter, { key: fieldName, fieldName, fieldType: field.type.toLowerCase(), currentValue, onChange: handleChange, __self: this, __source: {
658
- fileName: _jsxFileName,
659
- lineNumber: 766,
660
- columnNumber: 15
661
- } });
662
- }
663
- if (field.kind === "enum") {
664
- const enumValues = getEnumValues(field.type);
665
- if (enumValues) {
666
- return /* @__PURE__ */ React.createElement("div", { key: fieldName, className: "space-y-1", __self: this, __source: {
667
- fileName: _jsxFileName,
668
- lineNumber: 781,
669
- columnNumber: 17
670
- } }, /* @__PURE__ */ React.createElement("label", { className: "block text-sm font-medium text-gray-700", __self: this, __source: {
671
- fileName: _jsxFileName,
672
- lineNumber: 782,
673
- columnNumber: 19
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: {
675
- fileName: _jsxFileName,
676
- lineNumber: 785,
677
- columnNumber: 19
678
- } }, /* @__PURE__ */ React.createElement("option", { value: "", __self: this, __source: {
679
- fileName: _jsxFileName,
680
- lineNumber: 790,
681
- columnNumber: 21
682
- } }, "All"), enumValues.map((val) => /* @__PURE__ */ React.createElement("option", { key: val, value: val, __self: this, __source: {
683
- fileName: _jsxFileName,
684
- lineNumber: 792,
685
- columnNumber: 23
686
- } }, val))));
947
+ if (field.type.toLowerCase() === "datetime" || field.type.toLowerCase() === "date") {
948
+ return /* @__PURE__ */ jsxDEV(
949
+ DateRangeFilter,
950
+ {
951
+ fieldName,
952
+ currentValue,
953
+ onChange: handleChange
954
+ },
955
+ fieldName,
956
+ false,
957
+ {
958
+ fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/data-browser/src/lib/pages/AdminDataListPage.tsx",
959
+ lineNumber: 754,
960
+ columnNumber: 15
961
+ },
962
+ this
963
+ );
687
964
  }
688
- }
689
- if (field.type.toLowerCase() === "boolean") {
690
- return /* @__PURE__ */ React.createElement("div", { key: fieldName, className: "space-y-1", __self: this, __source: {
691
- fileName: _jsxFileName,
692
- lineNumber: 805,
693
- columnNumber: 15
694
- } }, /* @__PURE__ */ React.createElement("label", { className: "block text-sm font-medium text-gray-700", __self: this, __source: {
695
- fileName: _jsxFileName,
696
- lineNumber: 806,
697
- columnNumber: 17
698
- } }, formatFieldName(fieldName)), /* @__PURE__ */ React.createElement("select", { value: currentValue === void 0 || currentValue === null ? "" : currentValue.toString(), onChange: (e) => {
699
- const value = e.target.value;
700
- handleChange(value === "" ? void 0 : value === "true");
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: {
702
- fileName: _jsxFileName,
703
- lineNumber: 809,
704
- columnNumber: 17
705
- } }, /* @__PURE__ */ React.createElement("option", { value: "", __self: this, __source: {
706
- fileName: _jsxFileName,
707
- lineNumber: 817,
708
- columnNumber: 19
709
- } }, "All"), /* @__PURE__ */ React.createElement("option", { value: "true", __self: this, __source: {
710
- fileName: _jsxFileName,
711
- lineNumber: 818,
712
- columnNumber: 19
713
- } }, "Yes"), /* @__PURE__ */ React.createElement("option", { value: "false", __self: this, __source: {
714
- fileName: _jsxFileName,
715
- lineNumber: 819,
716
- columnNumber: 19
717
- } }, "No")));
718
- }
719
- return /* @__PURE__ */ React.createElement("div", { key: fieldName, className: "space-y-1", __self: this, __source: {
720
- fileName: _jsxFileName,
721
- lineNumber: 827,
722
- columnNumber: 13
723
- } }, /* @__PURE__ */ React.createElement("label", { className: "block text-sm font-medium text-gray-700", __self: this, __source: {
724
- fileName: _jsxFileName,
725
- lineNumber: 828,
726
- columnNumber: 15
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: {
728
- fileName: _jsxFileName,
729
- lineNumber: 831,
730
- columnNumber: 15
731
- } }));
732
- })));
733
- const searchFilter = /* @__PURE__ */ React.createElement("div", { className: "mb-4 flex items-center justify-between", __self: this, __source: {
734
- fileName: _jsxFileName,
965
+ if (["int", "bigint", "float", "decimal"].includes(field.type.toLowerCase())) {
966
+ return /* @__PURE__ */ jsxDEV(
967
+ NumberRangeFilter,
968
+ {
969
+ fieldName,
970
+ fieldType: field.type.toLowerCase(),
971
+ currentValue,
972
+ onChange: handleChange
973
+ },
974
+ fieldName,
975
+ false,
976
+ {
977
+ fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/data-browser/src/lib/pages/AdminDataListPage.tsx",
978
+ lineNumber: 766,
979
+ columnNumber: 15
980
+ },
981
+ this
982
+ );
983
+ }
984
+ if (field.kind === "enum") {
985
+ const enumValues = getEnumValues(field.type);
986
+ if (enumValues) {
987
+ return /* @__PURE__ */ jsxDEV("div", { className: "space-y-1", children: [
988
+ /* @__PURE__ */ jsxDEV("label", { className: "block text-sm font-medium text-gray-700", children: formatFieldName(fieldName) }, void 0, false, {
989
+ fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/data-browser/src/lib/pages/AdminDataListPage.tsx",
990
+ lineNumber: 782,
991
+ columnNumber: 19
992
+ }, this),
993
+ /* @__PURE__ */ jsxDEV(
994
+ "select",
995
+ {
996
+ value: typeof currentValue === "string" ? currentValue : "",
997
+ onChange: (e) => handleChange(e.target.value || void 0),
998
+ 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",
999
+ children: [
1000
+ /* @__PURE__ */ jsxDEV("option", { value: "", children: "All" }, void 0, false, {
1001
+ fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/data-browser/src/lib/pages/AdminDataListPage.tsx",
1002
+ lineNumber: 790,
1003
+ columnNumber: 21
1004
+ }, this),
1005
+ enumValues.map((val) => /* @__PURE__ */ jsxDEV("option", { value: val, children: val }, val, false, {
1006
+ fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/data-browser/src/lib/pages/AdminDataListPage.tsx",
1007
+ lineNumber: 792,
1008
+ columnNumber: 23
1009
+ }, this))
1010
+ ]
1011
+ },
1012
+ void 0,
1013
+ true,
1014
+ {
1015
+ fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/data-browser/src/lib/pages/AdminDataListPage.tsx",
1016
+ lineNumber: 785,
1017
+ columnNumber: 19
1018
+ },
1019
+ this
1020
+ )
1021
+ ] }, fieldName, true, {
1022
+ fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/data-browser/src/lib/pages/AdminDataListPage.tsx",
1023
+ lineNumber: 781,
1024
+ columnNumber: 17
1025
+ }, this);
1026
+ }
1027
+ }
1028
+ if (field.type.toLowerCase() === "boolean") {
1029
+ return /* @__PURE__ */ jsxDEV("div", { className: "space-y-1", children: [
1030
+ /* @__PURE__ */ jsxDEV("label", { className: "block text-sm font-medium text-gray-700", children: formatFieldName(fieldName) }, void 0, false, {
1031
+ fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/data-browser/src/lib/pages/AdminDataListPage.tsx",
1032
+ lineNumber: 806,
1033
+ columnNumber: 17
1034
+ }, this),
1035
+ /* @__PURE__ */ jsxDEV(
1036
+ "select",
1037
+ {
1038
+ value: currentValue === void 0 || currentValue === null ? "" : currentValue.toString(),
1039
+ onChange: (e) => {
1040
+ const value = e.target.value;
1041
+ handleChange(value === "" ? void 0 : value === "true");
1042
+ },
1043
+ 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",
1044
+ children: [
1045
+ /* @__PURE__ */ jsxDEV("option", { value: "", children: "All" }, void 0, false, {
1046
+ fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/data-browser/src/lib/pages/AdminDataListPage.tsx",
1047
+ lineNumber: 817,
1048
+ columnNumber: 19
1049
+ }, this),
1050
+ /* @__PURE__ */ jsxDEV("option", { value: "true", children: "Yes" }, void 0, false, {
1051
+ fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/data-browser/src/lib/pages/AdminDataListPage.tsx",
1052
+ lineNumber: 818,
1053
+ columnNumber: 19
1054
+ }, this),
1055
+ /* @__PURE__ */ jsxDEV("option", { value: "false", children: "No" }, void 0, false, {
1056
+ fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/data-browser/src/lib/pages/AdminDataListPage.tsx",
1057
+ lineNumber: 819,
1058
+ columnNumber: 19
1059
+ }, this)
1060
+ ]
1061
+ },
1062
+ void 0,
1063
+ true,
1064
+ {
1065
+ fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/data-browser/src/lib/pages/AdminDataListPage.tsx",
1066
+ lineNumber: 809,
1067
+ columnNumber: 17
1068
+ },
1069
+ this
1070
+ )
1071
+ ] }, fieldName, true, {
1072
+ fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/data-browser/src/lib/pages/AdminDataListPage.tsx",
1073
+ lineNumber: 805,
1074
+ columnNumber: 15
1075
+ }, this);
1076
+ }
1077
+ return /* @__PURE__ */ jsxDEV("div", { className: "space-y-1", children: [
1078
+ /* @__PURE__ */ jsxDEV("label", { className: "block text-sm font-medium text-gray-700", children: formatFieldName(fieldName) }, void 0, false, {
1079
+ fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/data-browser/src/lib/pages/AdminDataListPage.tsx",
1080
+ lineNumber: 828,
1081
+ columnNumber: 15
1082
+ }, this),
1083
+ /* @__PURE__ */ jsxDEV(
1084
+ "input",
1085
+ {
1086
+ type: "text",
1087
+ value: typeof currentValue === "string" ? currentValue : "",
1088
+ onChange: (e) => handleChange(e.target.value || void 0),
1089
+ placeholder: `Filter by ${formatFieldName(fieldName).toLowerCase()}...`,
1090
+ 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"
1091
+ },
1092
+ void 0,
1093
+ false,
1094
+ {
1095
+ fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/data-browser/src/lib/pages/AdminDataListPage.tsx",
1096
+ lineNumber: 831,
1097
+ columnNumber: 15
1098
+ },
1099
+ this
1100
+ )
1101
+ ] }, fieldName, true, {
1102
+ fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/data-browser/src/lib/pages/AdminDataListPage.tsx",
1103
+ lineNumber: 827,
1104
+ columnNumber: 13
1105
+ }, this);
1106
+ }) }, void 0, false, {
1107
+ fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/data-browser/src/lib/pages/AdminDataListPage.tsx",
1108
+ lineNumber: 721,
1109
+ columnNumber: 7
1110
+ }, this)
1111
+ ] }, void 0, true, {
1112
+ fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/data-browser/src/lib/pages/AdminDataListPage.tsx",
1113
+ lineNumber: 688,
1114
+ columnNumber: 5
1115
+ }, this);
1116
+ const searchFilter = /* @__PURE__ */ jsxDEV("div", { className: "mb-4 flex items-center justify-between", children: [
1117
+ /* @__PURE__ */ jsxDEV("div", { className: "flex-1 max-w-lg", children: [
1118
+ /* @__PURE__ */ jsxDEV("label", { htmlFor: "search", className: "sr-only", children: "Search" }, void 0, false, {
1119
+ fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/data-browser/src/lib/pages/AdminDataListPage.tsx",
1120
+ lineNumber: 848,
1121
+ columnNumber: 9
1122
+ }, this),
1123
+ /* @__PURE__ */ jsxDEV("div", { className: "relative", children: [
1124
+ /* @__PURE__ */ jsxDEV("div", { className: "absolute inset-y-0 left-0 pl-3 flex items-center pointer-events-none", children: loading && search !== debouncedSearch ? /* @__PURE__ */ jsxDEV(
1125
+ "svg",
1126
+ {
1127
+ className: "animate-spin h-5 w-5 text-gray-400",
1128
+ xmlns: "http://www.w3.org/2000/svg",
1129
+ fill: "none",
1130
+ viewBox: "0 0 24 24",
1131
+ children: [
1132
+ /* @__PURE__ */ jsxDEV(
1133
+ "circle",
1134
+ {
1135
+ className: "opacity-25",
1136
+ cx: "12",
1137
+ cy: "12",
1138
+ r: "10",
1139
+ stroke: "currentColor",
1140
+ strokeWidth: "4"
1141
+ },
1142
+ void 0,
1143
+ false,
1144
+ {
1145
+ fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/data-browser/src/lib/pages/AdminDataListPage.tsx",
1146
+ lineNumber: 860,
1147
+ columnNumber: 17
1148
+ },
1149
+ this
1150
+ ),
1151
+ /* @__PURE__ */ jsxDEV(
1152
+ "path",
1153
+ {
1154
+ className: "opacity-75",
1155
+ fill: "currentColor",
1156
+ 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"
1157
+ },
1158
+ void 0,
1159
+ false,
1160
+ {
1161
+ fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/data-browser/src/lib/pages/AdminDataListPage.tsx",
1162
+ lineNumber: 868,
1163
+ columnNumber: 17
1164
+ },
1165
+ this
1166
+ )
1167
+ ]
1168
+ },
1169
+ void 0,
1170
+ true,
1171
+ {
1172
+ fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/data-browser/src/lib/pages/AdminDataListPage.tsx",
1173
+ lineNumber: 854,
1174
+ columnNumber: 15
1175
+ },
1176
+ this
1177
+ ) : /* @__PURE__ */ jsxDEV(
1178
+ "svg",
1179
+ {
1180
+ className: "h-5 w-5 text-gray-400",
1181
+ xmlns: "http://www.w3.org/2000/svg",
1182
+ viewBox: "0 0 20 20",
1183
+ fill: "currentColor",
1184
+ "aria-hidden": "true",
1185
+ children: /* @__PURE__ */ jsxDEV(
1186
+ "path",
1187
+ {
1188
+ fillRule: "evenodd",
1189
+ 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",
1190
+ clipRule: "evenodd"
1191
+ },
1192
+ void 0,
1193
+ false,
1194
+ {
1195
+ fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/data-browser/src/lib/pages/AdminDataListPage.tsx",
1196
+ lineNumber: 882,
1197
+ columnNumber: 17
1198
+ },
1199
+ this
1200
+ )
1201
+ },
1202
+ void 0,
1203
+ false,
1204
+ {
1205
+ fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/data-browser/src/lib/pages/AdminDataListPage.tsx",
1206
+ lineNumber: 875,
1207
+ columnNumber: 15
1208
+ },
1209
+ this
1210
+ ) }, void 0, false, {
1211
+ fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/data-browser/src/lib/pages/AdminDataListPage.tsx",
1212
+ lineNumber: 852,
1213
+ columnNumber: 11
1214
+ }, this),
1215
+ /* @__PURE__ */ jsxDEV(
1216
+ "input",
1217
+ {
1218
+ id: "search",
1219
+ name: "search",
1220
+ 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",
1221
+ 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()}...`,
1222
+ type: "search",
1223
+ value: state.search || "",
1224
+ onChange: (e) => dispatch({ type: "SET_SEARCH", payload: e.target.value })
1225
+ },
1226
+ void 0,
1227
+ false,
1228
+ {
1229
+ fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/data-browser/src/lib/pages/AdminDataListPage.tsx",
1230
+ lineNumber: 890,
1231
+ columnNumber: 11
1232
+ },
1233
+ this
1234
+ ),
1235
+ searchableFieldNames.length > 0 && /* @__PURE__ */ jsxDEV("div", { className: "absolute inset-y-0 right-0 flex items-center", children: searchFieldSelector }, void 0, false, {
1236
+ fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/data-browser/src/lib/pages/AdminDataListPage.tsx",
1237
+ lineNumber: 900,
1238
+ columnNumber: 13
1239
+ }, this)
1240
+ ] }, void 0, true, {
1241
+ fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/data-browser/src/lib/pages/AdminDataListPage.tsx",
1242
+ lineNumber: 851,
1243
+ columnNumber: 9
1244
+ }, this)
1245
+ ] }, void 0, true, {
1246
+ fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/data-browser/src/lib/pages/AdminDataListPage.tsx",
1247
+ lineNumber: 847,
1248
+ columnNumber: 7
1249
+ }, this),
1250
+ /* @__PURE__ */ jsxDEV("div", { className: "ml-4 flex space-x-2", children: [
1251
+ /* @__PURE__ */ jsxDEV(
1252
+ "button",
1253
+ {
1254
+ onClick: () => setShowFilters(!showFilters),
1255
+ 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"}`,
1256
+ children: [
1257
+ /* @__PURE__ */ jsxDEV("svg", { className: "w-4 h-4 mr-2", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: /* @__PURE__ */ jsxDEV(
1258
+ "path",
1259
+ {
1260
+ strokeLinecap: "round",
1261
+ strokeLinejoin: "round",
1262
+ strokeWidth: 2,
1263
+ 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"
1264
+ },
1265
+ void 0,
1266
+ false,
1267
+ {
1268
+ fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/data-browser/src/lib/pages/AdminDataListPage.tsx",
1269
+ lineNumber: 916,
1270
+ columnNumber: 13
1271
+ },
1272
+ this
1273
+ ) }, void 0, false, {
1274
+ fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/data-browser/src/lib/pages/AdminDataListPage.tsx",
1275
+ lineNumber: 915,
1276
+ columnNumber: 11
1277
+ }, this),
1278
+ "Filters",
1279
+ Object.keys(filters).length > 0 && /* @__PURE__ */ jsxDEV("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", children: Object.keys(filters).length }, void 0, false, {
1280
+ fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/data-browser/src/lib/pages/AdminDataListPage.tsx",
1281
+ lineNumber: 925,
1282
+ columnNumber: 13
1283
+ }, this)
1284
+ ]
1285
+ },
1286
+ void 0,
1287
+ true,
1288
+ {
1289
+ fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/data-browser/src/lib/pages/AdminDataListPage.tsx",
1290
+ lineNumber: 907,
1291
+ columnNumber: 9
1292
+ },
1293
+ this
1294
+ ),
1295
+ columnSelector,
1296
+ /* @__PURE__ */ jsxDEV(
1297
+ Link,
1298
+ {
1299
+ to: createLink,
1300
+ 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",
1301
+ children: "Create New"
1302
+ },
1303
+ void 0,
1304
+ false,
1305
+ {
1306
+ fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/data-browser/src/lib/pages/AdminDataListPage.tsx",
1307
+ lineNumber: 931,
1308
+ columnNumber: 9
1309
+ },
1310
+ this
1311
+ )
1312
+ ] }, void 0, true, {
1313
+ fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/data-browser/src/lib/pages/AdminDataListPage.tsx",
1314
+ lineNumber: 906,
1315
+ columnNumber: 7
1316
+ }, this)
1317
+ ] }, void 0, true, {
1318
+ fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/data-browser/src/lib/pages/AdminDataListPage.tsx",
735
1319
  lineNumber: 846,
736
1320
  columnNumber: 5
737
- } }, /* @__PURE__ */ React.createElement("div", { className: "flex-1 max-w-lg", __self: this, __source: {
738
- fileName: _jsxFileName,
739
- lineNumber: 847,
740
- columnNumber: 7
741
- } }, /* @__PURE__ */ React.createElement("label", { htmlFor: "search", className: "sr-only", __self: this, __source: {
742
- fileName: _jsxFileName,
743
- lineNumber: 848,
744
- columnNumber: 9
745
- } }, "Search"), /* @__PURE__ */ React.createElement("div", { className: "relative", __self: this, __source: {
746
- fileName: _jsxFileName,
747
- lineNumber: 851,
748
- columnNumber: 9
749
- } }, /* @__PURE__ */ React.createElement("div", { className: "absolute inset-y-0 left-0 pl-3 flex items-center pointer-events-none", __self: this, __source: {
750
- fileName: _jsxFileName,
751
- lineNumber: 852,
752
- columnNumber: 11
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: {
754
- fileName: _jsxFileName,
755
- lineNumber: 854,
756
- columnNumber: 15
757
- } }, /* @__PURE__ */ React.createElement("circle", { className: "opacity-25", cx: "12", cy: "12", r: "10", stroke: "currentColor", strokeWidth: "4", __self: this, __source: {
758
- fileName: _jsxFileName,
759
- lineNumber: 860,
760
- columnNumber: 17
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: {
762
- fileName: _jsxFileName,
763
- lineNumber: 868,
764
- columnNumber: 17
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: {
766
- fileName: _jsxFileName,
767
- lineNumber: 875,
768
- columnNumber: 15
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: {
770
- fileName: _jsxFileName,
771
- lineNumber: 882,
772
- columnNumber: 17
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({
774
- type: "SET_SEARCH",
775
- payload: e.target.value
776
- }), __self: this, __source: {
777
- fileName: _jsxFileName,
778
- lineNumber: 890,
779
- columnNumber: 11
780
- } }), searchableFieldNames.length > 0 && /* @__PURE__ */ React.createElement("div", { className: "absolute inset-y-0 right-0 flex items-center", __self: this, __source: {
781
- fileName: _jsxFileName,
782
- lineNumber: 900,
783
- columnNumber: 13
784
- } }, searchFieldSelector))), /* @__PURE__ */ React.createElement("div", { className: "ml-4 flex space-x-2", __self: this, __source: {
785
- fileName: _jsxFileName,
786
- lineNumber: 906,
787
- columnNumber: 7
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: {
789
- fileName: _jsxFileName,
790
- lineNumber: 907,
791
- columnNumber: 9
792
- } }, /* @__PURE__ */ React.createElement("svg", { className: "w-4 h-4 mr-2", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", __self: this, __source: {
793
- fileName: _jsxFileName,
794
- lineNumber: 915,
795
- columnNumber: 11
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: {
797
- fileName: _jsxFileName,
798
- lineNumber: 916,
799
- columnNumber: 13
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: {
801
- fileName: _jsxFileName,
802
- lineNumber: 925,
803
- columnNumber: 13
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: {
805
- fileName: _jsxFileName,
806
- lineNumber: 931,
807
- columnNumber: 9
808
- } }, "Create New")));
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({
810
- type: "SET_SKIP",
811
- payload: skip2
812
- }), sort: state.sort, setSort: setSortSafely, __self: this, __source: {
813
- fileName: _jsxFileName,
814
- lineNumber: 945,
815
- columnNumber: 7
816
- } }));
1321
+ }, this);
1322
+ return /* @__PURE__ */ jsxDEV(Fragment, { children: [
1323
+ filterPanel,
1324
+ searchFilter,
1325
+ /* @__PURE__ */ jsxDEV(
1326
+ DataTable,
1327
+ {
1328
+ data: items,
1329
+ path: createLink.replace("/create", ""),
1330
+ fields: visibleColumns.length > 0 ? visibleColumns : fieldNames,
1331
+ pagination,
1332
+ setSkip: (skip2) => dispatch({ type: "SET_SKIP", payload: skip2 }),
1333
+ sort: state.sort,
1334
+ setSort: setSortSafely
1335
+ },
1336
+ void 0,
1337
+ false,
1338
+ {
1339
+ fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/data-browser/src/lib/pages/AdminDataListPage.tsx",
1340
+ lineNumber: 945,
1341
+ columnNumber: 7
1342
+ },
1343
+ this
1344
+ )
1345
+ ] }, void 0, true, {
1346
+ fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/data-browser/src/lib/pages/AdminDataListPage.tsx",
1347
+ lineNumber: 942,
1348
+ columnNumber: 5
1349
+ }, this);
817
1350
  }
818
- function AdminDataErrorBoundary({
819
- error
820
- }) {
821
- return /* @__PURE__ */ React.createElement(ErrorBoundary, { error, __self: this, __source: {
822
- fileName: _jsxFileName,
1351
+ function AdminDataErrorBoundary({ error }) {
1352
+ return /* @__PURE__ */ jsxDEV(ErrorBoundary, { error }, void 0, false, {
1353
+ fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/data-browser/src/lib/pages/AdminDataListPage.tsx",
823
1354
  lineNumber: 959,
824
1355
  columnNumber: 10
825
- } });
1356
+ }, this);
826
1357
  }
827
1358
  export {
828
1359
  AdminDataErrorBoundary,