@nestledjs/data-browser 0.1.6 → 0.1.8

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,265 +1,147 @@
1
- import { jsxDEV as e } from "react/jsx-dev-runtime";
2
- import { getItemDisplayName as a } from "../../utils/string-utils.js";
3
- function f({
4
- currentItem: t,
5
- relatedModelName: s,
6
- isOpen: n,
7
- onClick: l
1
+ import { getItemDisplayName } from "../../utils/string-utils.js";
2
+ var _jsxFileName = "/Users/justinhandley/IdeaProjects/nestled_template/libs/admin-data/src/lib/components/filters/RelationComponents.tsx";
3
+ function RelationDropdownButton({
4
+ currentItem,
5
+ relatedModelName,
6
+ isOpen,
7
+ onClick
8
8
  }) {
9
- return /* @__PURE__ */ e(
10
- "button",
11
- {
12
- type: "button",
13
- onClick: l,
14
- 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 text-left bg-white flex items-center justify-between",
15
- children: [
16
- /* @__PURE__ */ e("span", { className: t ? "text-gray-900" : "text-gray-500", children: t ? a(t) : `Select ${s.toLowerCase()}...` }, void 0, !1, {
17
- fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/admin-data/src/lib/components/filters/RelationComponents.tsx",
18
- lineNumber: 21,
19
- columnNumber: 11
20
- }, this),
21
- /* @__PURE__ */ e(
22
- "svg",
23
- {
24
- className: `w-4 h-4 text-gray-400 transition-transform ${n ? "rotate-180" : ""}`,
25
- fill: "none",
26
- stroke: "currentColor",
27
- viewBox: "0 0 24 24",
28
- children: /* @__PURE__ */ e("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M19 9l-7 7-7-7" }, void 0, !1, {
29
- fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/admin-data/src/lib/components/filters/RelationComponents.tsx",
30
- lineNumber: 30,
31
- columnNumber: 13
32
- }, this)
33
- },
34
- void 0,
35
- !1,
36
- {
37
- fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/admin-data/src/lib/components/filters/RelationComponents.tsx",
38
- lineNumber: 24,
39
- columnNumber: 7
40
- },
41
- this
42
- )
43
- ]
44
- },
45
- void 0,
46
- !0,
47
- {
48
- fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/admin-data/src/lib/components/filters/RelationComponents.tsx",
49
- lineNumber: 16,
50
- columnNumber: 9
51
- },
52
- this
53
- );
9
+ return /* @__PURE__ */ React.createElement("button", { type: "button", onClick, 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 text-left bg-white flex items-center justify-between", __self: this, __source: {
10
+ fileName: _jsxFileName,
11
+ lineNumber: 16,
12
+ columnNumber: 9
13
+ } }, /* @__PURE__ */ React.createElement("span", { className: currentItem ? "text-gray-900" : "text-gray-500", __self: this, __source: {
14
+ fileName: _jsxFileName,
15
+ lineNumber: 21,
16
+ columnNumber: 11
17
+ } }, currentItem ? getItemDisplayName(currentItem) : `Select ${relatedModelName.toLowerCase()}...`), /* @__PURE__ */ React.createElement("svg", { className: `w-4 h-4 text-gray-400 transition-transform ${isOpen ? "rotate-180" : ""}`, fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", __self: this, __source: {
18
+ fileName: _jsxFileName,
19
+ lineNumber: 24,
20
+ columnNumber: 7
21
+ } }, /* @__PURE__ */ React.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M19 9l-7 7-7-7", __self: this, __source: {
22
+ fileName: _jsxFileName,
23
+ lineNumber: 30,
24
+ columnNumber: 13
25
+ } })));
54
26
  }
55
- function d({
56
- searchTerm: t,
57
- onSearchChange: s,
58
- relatedModelName: n
27
+ function RelationSearchInput({
28
+ searchTerm,
29
+ onSearchChange,
30
+ relatedModelName
59
31
  }) {
60
- return /* @__PURE__ */ e("div", { className: "p-2", children: /* @__PURE__ */ e(
61
- "input",
62
- {
63
- type: "text",
64
- placeholder: `Search ${n.toLowerCase()}...`,
65
- value: t,
66
- onChange: (l) => s(l.target.value),
67
- className: "w-full px-2 py-1 text-sm border border-gray-300 rounded focus:outline-none focus:ring-1 focus:ring-green-web",
68
- autoFocus: !0
69
- },
70
- void 0,
71
- !1,
72
- {
73
- fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/admin-data/src/lib/components/filters/RelationComponents.tsx",
74
- lineNumber: 48,
75
- columnNumber: 15
76
- },
77
- this
78
- ) }, void 0, !1, {
79
- fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/admin-data/src/lib/components/filters/RelationComponents.tsx",
32
+ return /* @__PURE__ */ React.createElement("div", { className: "p-2", __self: this, __source: {
33
+ fileName: _jsxFileName,
80
34
  lineNumber: 47,
81
35
  columnNumber: 13
82
- }, this);
36
+ } }, /* @__PURE__ */ React.createElement("input", { type: "text", placeholder: `Search ${relatedModelName.toLowerCase()}...`, value: searchTerm, onChange: (e) => onSearchChange(e.target.value), className: "w-full px-2 py-1 text-sm border border-gray-300 rounded focus:outline-none focus:ring-1 focus:ring-green-web", autoFocus: true, __self: this, __source: {
37
+ fileName: _jsxFileName,
38
+ lineNumber: 48,
39
+ columnNumber: 15
40
+ } }));
83
41
  }
84
- function c({
85
- item: t,
86
- onSelect: s
42
+ function RelationItem({
43
+ item,
44
+ onSelect
87
45
  }) {
88
- return /* @__PURE__ */ e(
89
- "button",
90
- {
91
- type: "button",
92
- onClick: () => s(t),
93
- className: "w-full px-3 py-2 text-left text-sm hover:bg-gray-100 focus:bg-gray-100 transition-colors",
94
- children: a(t)
95
- },
96
- void 0,
97
- !1,
98
- {
99
- fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/admin-data/src/lib/components/filters/RelationComponents.tsx",
100
- lineNumber: 69,
101
- columnNumber: 5
102
- },
103
- this
104
- );
46
+ return /* @__PURE__ */ React.createElement("button", { type: "button", onClick: () => onSelect(item), className: "w-full px-3 py-2 text-left text-sm hover:bg-gray-100 focus:bg-gray-100 transition-colors", __self: this, __source: {
47
+ fileName: _jsxFileName,
48
+ lineNumber: 69,
49
+ columnNumber: 5
50
+ } }, getItemDisplayName(item));
105
51
  }
106
- function u({
107
- items: t,
108
- loading: s,
109
- error: n,
110
- onSelect: l,
111
- onClear: o
52
+ function RelationItemList({
53
+ items,
54
+ loading,
55
+ error,
56
+ onSelect,
57
+ onClear
112
58
  }) {
113
- return /* @__PURE__ */ e("div", { className: "max-h-48 overflow-y-auto", children: [
114
- /* @__PURE__ */ e(
115
- "button",
116
- {
117
- type: "button",
118
- onClick: o,
119
- className: "w-full px-3 py-2 text-left text-sm hover:bg-gray-100 text-gray-500 border-b border-gray-200",
120
- children: "Clear selection"
121
- },
122
- void 0,
123
- !1,
124
- {
125
- fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/admin-data/src/lib/components/filters/RelationComponents.tsx",
126
- lineNumber: 95,
127
- columnNumber: 15
128
- },
129
- this
130
- ),
131
- n ? /* @__PURE__ */ e("div", { className: "px-3 py-2 text-sm text-red-600", children: [
132
- /* @__PURE__ */ e("div", { className: "flex items-center", children: [
133
- /* @__PURE__ */ e("svg", { className: "w-4 h-4 mr-2", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: /* @__PURE__ */ e("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M12 8v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z" }, void 0, !1, {
134
- fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/admin-data/src/lib/components/filters/RelationComponents.tsx",
135
- lineNumber: 107,
136
- columnNumber: 15
137
- }, this) }, void 0, !1, {
138
- fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/admin-data/src/lib/components/filters/RelationComponents.tsx",
139
- lineNumber: 106,
140
- columnNumber: 13
141
- }, this),
142
- "Failed to load options"
143
- ] }, void 0, !0, {
144
- fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/admin-data/src/lib/components/filters/RelationComponents.tsx",
145
- lineNumber: 105,
146
- columnNumber: 11
147
- }, this),
148
- /* @__PURE__ */ e("div", { className: "text-xs text-gray-500 mt-1", children: n.networkError ? "Network error" : "Please try again" }, void 0, !1, {
149
- fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/admin-data/src/lib/components/filters/RelationComponents.tsx",
150
- lineNumber: 111,
151
- columnNumber: 11
152
- }, this)
153
- ] }, void 0, !0, {
154
- fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/admin-data/src/lib/components/filters/RelationComponents.tsx",
155
- lineNumber: 104,
156
- columnNumber: 9
157
- }, this) : s ? /* @__PURE__ */ e("div", { className: "px-3 py-2 text-sm text-gray-500", children: /* @__PURE__ */ e("div", { className: "flex items-center", children: [
158
- /* @__PURE__ */ e("svg", { className: "animate-spin -ml-1 mr-2 h-4 w-4 text-gray-500", xmlns: "http://www.w3.org/2000/svg", fill: "none", viewBox: "0 0 24 24", children: [
159
- /* @__PURE__ */ e("circle", { className: "opacity-25", cx: "12", cy: "12", r: "10", stroke: "currentColor", strokeWidth: "4" }, void 0, !1, {
160
- fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/admin-data/src/lib/components/filters/RelationComponents.tsx",
161
- lineNumber: 119,
162
- columnNumber: 15
163
- }, this),
164
- /* @__PURE__ */ e("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" }, void 0, !1, {
165
- fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/admin-data/src/lib/components/filters/RelationComponents.tsx",
166
- lineNumber: 120,
167
- columnNumber: 15
168
- }, this)
169
- ] }, void 0, !0, {
170
- fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/admin-data/src/lib/components/filters/RelationComponents.tsx",
171
- lineNumber: 118,
172
- columnNumber: 13
173
- }, this),
174
- "Loading..."
175
- ] }, void 0, !0, {
176
- fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/admin-data/src/lib/components/filters/RelationComponents.tsx",
177
- lineNumber: 117,
178
- columnNumber: 11
179
- }, this) }, void 0, !1, {
180
- fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/admin-data/src/lib/components/filters/RelationComponents.tsx",
181
- lineNumber: 116,
182
- columnNumber: 9
183
- }, this) : t.length === 0 ? /* @__PURE__ */ e("div", { className: "px-3 py-2 text-sm text-gray-500", children: "No items found" }, void 0, !1, {
184
- fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/admin-data/src/lib/components/filters/RelationComponents.tsx",
185
- lineNumber: 126,
186
- columnNumber: 17
187
- }, this) : t.map((i) => /* @__PURE__ */ e(
188
- c,
189
- {
190
- item: i,
191
- onSelect: l
192
- },
193
- i.id,
194
- !1,
195
- {
196
- fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/admin-data/src/lib/components/filters/RelationComponents.tsx",
197
- lineNumber: 129,
198
- columnNumber: 11
199
- },
200
- this
201
- ))
202
- ] }, void 0, !0, {
203
- fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/admin-data/src/lib/components/filters/RelationComponents.tsx",
59
+ return /* @__PURE__ */ React.createElement("div", { className: "max-h-48 overflow-y-auto", __self: this, __source: {
60
+ fileName: _jsxFileName,
204
61
  lineNumber: 94,
205
62
  columnNumber: 13
206
- }, this);
63
+ } }, /* @__PURE__ */ React.createElement("button", { type: "button", onClick: onClear, className: "w-full px-3 py-2 text-left text-sm hover:bg-gray-100 text-gray-500 border-b border-gray-200", __self: this, __source: {
64
+ fileName: _jsxFileName,
65
+ lineNumber: 95,
66
+ columnNumber: 15
67
+ } }, "Clear selection"), error ? /* @__PURE__ */ React.createElement("div", { className: "px-3 py-2 text-sm text-red-600", __self: this, __source: {
68
+ fileName: _jsxFileName,
69
+ lineNumber: 104,
70
+ columnNumber: 9
71
+ } }, /* @__PURE__ */ React.createElement("div", { className: "flex items-center", __self: this, __source: {
72
+ fileName: _jsxFileName,
73
+ lineNumber: 105,
74
+ columnNumber: 11
75
+ } }, /* @__PURE__ */ React.createElement("svg", { className: "w-4 h-4 mr-2", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", __self: this, __source: {
76
+ fileName: _jsxFileName,
77
+ lineNumber: 106,
78
+ columnNumber: 13
79
+ } }, /* @__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: {
80
+ fileName: _jsxFileName,
81
+ lineNumber: 107,
82
+ columnNumber: 15
83
+ } })), "Failed to load options"), /* @__PURE__ */ React.createElement("div", { className: "text-xs text-gray-500 mt-1", __self: this, __source: {
84
+ fileName: _jsxFileName,
85
+ lineNumber: 111,
86
+ columnNumber: 11
87
+ } }, error.networkError ? "Network error" : "Please try again")) : loading ? /* @__PURE__ */ React.createElement("div", { className: "px-3 py-2 text-sm text-gray-500", __self: this, __source: {
88
+ fileName: _jsxFileName,
89
+ lineNumber: 116,
90
+ columnNumber: 9
91
+ } }, /* @__PURE__ */ React.createElement("div", { className: "flex items-center", __self: this, __source: {
92
+ fileName: _jsxFileName,
93
+ lineNumber: 117,
94
+ columnNumber: 11
95
+ } }, /* @__PURE__ */ React.createElement("svg", { className: "animate-spin -ml-1 mr-2 h-4 w-4 text-gray-500", xmlns: "http://www.w3.org/2000/svg", fill: "none", viewBox: "0 0 24 24", __self: this, __source: {
96
+ fileName: _jsxFileName,
97
+ lineNumber: 118,
98
+ columnNumber: 13
99
+ } }, /* @__PURE__ */ React.createElement("circle", { className: "opacity-25", cx: "12", cy: "12", r: "10", stroke: "currentColor", strokeWidth: "4", __self: this, __source: {
100
+ fileName: _jsxFileName,
101
+ lineNumber: 119,
102
+ columnNumber: 15
103
+ } }), /* @__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: {
104
+ fileName: _jsxFileName,
105
+ lineNumber: 120,
106
+ columnNumber: 15
107
+ } })), "Loading...")) : items.length === 0 ? /* @__PURE__ */ React.createElement("div", { className: "px-3 py-2 text-sm text-gray-500", __self: this, __source: {
108
+ fileName: _jsxFileName,
109
+ lineNumber: 126,
110
+ columnNumber: 17
111
+ } }, "No items found") : items.map((item) => /* @__PURE__ */ React.createElement(RelationItem, { key: item.id, item, onSelect, __self: this, __source: {
112
+ fileName: _jsxFileName,
113
+ lineNumber: 129,
114
+ columnNumber: 11
115
+ } })));
207
116
  }
208
- function N({
209
- searchTerm: t,
210
- onSearchChange: s,
211
- relatedModelName: n,
212
- items: l,
213
- loading: o,
214
- error: i,
215
- onSelect: r,
216
- onClear: m
117
+ function RelationDropdownContent({
118
+ searchTerm,
119
+ onSearchChange,
120
+ relatedModelName,
121
+ items,
122
+ loading,
123
+ error,
124
+ onSelect,
125
+ onClear
217
126
  }) {
218
- return /* @__PURE__ */ e("div", { className: "absolute z-10 w-full mt-1 bg-white border border-gray-300 rounded-md shadow-lg", children: [
219
- /* @__PURE__ */ e(
220
- d,
221
- {
222
- searchTerm: t,
223
- onSearchChange: s,
224
- relatedModelName: n
225
- },
226
- void 0,
227
- !1,
228
- {
229
- fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/admin-data/src/lib/components/filters/RelationComponents.tsx",
230
- lineNumber: 162,
231
- columnNumber: 7
232
- },
233
- this
234
- ),
235
- /* @__PURE__ */ e(
236
- u,
237
- {
238
- items: l,
239
- loading: o,
240
- error: i,
241
- onSelect: r,
242
- onClear: m
243
- },
244
- void 0,
245
- !1,
246
- {
247
- fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/admin-data/src/lib/components/filters/RelationComponents.tsx",
248
- lineNumber: 167,
249
- columnNumber: 7
250
- },
251
- this
252
- )
253
- ] }, void 0, !0, {
254
- fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/admin-data/src/lib/components/filters/RelationComponents.tsx",
127
+ return /* @__PURE__ */ React.createElement("div", { className: "absolute z-10 w-full mt-1 bg-white border border-gray-300 rounded-md shadow-lg", __self: this, __source: {
128
+ fileName: _jsxFileName,
255
129
  lineNumber: 161,
256
130
  columnNumber: 5
257
- }, this);
131
+ } }, /* @__PURE__ */ React.createElement(RelationSearchInput, { searchTerm, onSearchChange, relatedModelName, __self: this, __source: {
132
+ fileName: _jsxFileName,
133
+ lineNumber: 162,
134
+ columnNumber: 7
135
+ } }), /* @__PURE__ */ React.createElement(RelationItemList, { items, loading, error, onSelect, onClear, __self: this, __source: {
136
+ fileName: _jsxFileName,
137
+ lineNumber: 167,
138
+ columnNumber: 7
139
+ } }));
258
140
  }
259
141
  export {
260
- f as RelationDropdownButton,
261
- N as RelationDropdownContent,
262
- c as RelationItem,
263
- u as RelationItemList,
264
- d as RelationSearchInput
142
+ RelationDropdownButton,
143
+ RelationDropdownContent,
144
+ RelationItem,
145
+ RelationItemList,
146
+ RelationSearchInput
265
147
  };
@@ -1,116 +1,86 @@
1
- import { jsxDEV as t } from "react/jsx-dev-runtime";
2
- import { useState as b, useRef as R, useCallback as a, useMemo as I } from "react";
3
- import { useClickOutside as g } from "../../hooks/useClickOutside.js";
4
- import { useRelationData as D } from "../../hooks/useRelationData.js";
5
- import { formatFieldName as p } from "../../utils/string-utils.js";
6
- import { RelationDropdownButton as P, RelationDropdownContent as U } from "./RelationComponents.js";
7
- function E({
8
- fieldName: m,
9
- relatedModelName: r,
10
- currentValue: e,
11
- onChange: l
1
+ import { useState, useRef, useCallback, useMemo } from "react";
2
+ import { useClickOutside } from "../../hooks/useClickOutside.js";
3
+ import { useRelationData } from "../../hooks/useRelationData.js";
4
+ import { formatFieldName } from "../../utils/string-utils.js";
5
+ import { RelationDropdownButton, RelationDropdownContent } from "./RelationComponents.js";
6
+ var _jsxFileName = "/Users/justinhandley/IdeaProjects/nestled_template/libs/admin-data/src/lib/components/filters/RelationFilterField.tsx";
7
+ function RelationFilterField({
8
+ fieldName,
9
+ relatedModelName,
10
+ currentValue,
11
+ onChange
12
12
  }) {
13
- const [c, n] = b(""), [i, o] = b(!1), f = R(null), u = a(() => {
14
- o(!1);
13
+ const [searchTerm, setSearchTerm] = useState("");
14
+ const [isOpen, setIsOpen] = useState(false);
15
+ const dropdownRef = useRef(null);
16
+ const handleCloseDropdown = useCallback(() => {
17
+ setIsOpen(false);
15
18
  }, []);
16
- g(f, u, i);
17
- const { relatedItems: d, loading: h, error: N, hasDocument: F } = D(r, c, i), j = I(
18
- () => e != null && e.id ? d.find((s) => s.id === e.id) : null,
19
- [e == null ? void 0 : e.id, d]
20
- ), v = a((s) => {
21
- l({ id: s.id }), o(!1), n("");
22
- }, [l]), x = a(() => {
23
- l(void 0), o(!1), n("");
24
- }, [l]), y = a(() => {
25
- o(!i), i || n("");
26
- }, [i]);
27
- return F ? /* @__PURE__ */ t("div", { className: "space-y-1", ref: f, children: [
28
- /* @__PURE__ */ t("label", { className: "block text-sm font-medium text-gray-700", children: p(m) }, void 0, !1, {
29
- fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/admin-data/src/lib/components/filters/RelationFilterField.tsx",
30
- lineNumber: 80,
19
+ useClickOutside(dropdownRef, handleCloseDropdown, isOpen);
20
+ const {
21
+ relatedItems,
22
+ loading,
23
+ error: relationError,
24
+ hasDocument
25
+ } = useRelationData(relatedModelName, searchTerm, isOpen);
26
+ const currentItem = useMemo(() => (currentValue == null ? void 0 : currentValue.id) ? relatedItems.find((item) => item.id === currentValue.id) : null, [currentValue == null ? void 0 : currentValue.id, relatedItems]);
27
+ const handleSelect = useCallback((item) => {
28
+ onChange({
29
+ id: item.id
30
+ });
31
+ setIsOpen(false);
32
+ setSearchTerm("");
33
+ }, [onChange]);
34
+ const handleClear = useCallback(() => {
35
+ onChange(void 0);
36
+ setIsOpen(false);
37
+ setSearchTerm("");
38
+ }, [onChange]);
39
+ const handleToggleOpen = useCallback(() => {
40
+ setIsOpen(!isOpen);
41
+ if (!isOpen) {
42
+ setSearchTerm("");
43
+ }
44
+ }, [isOpen]);
45
+ if (!hasDocument) {
46
+ return /* @__PURE__ */ React.createElement("div", { className: "space-y-1", __self: this, __source: {
47
+ fileName: _jsxFileName,
48
+ lineNumber: 63,
31
49
  columnNumber: 7
32
- }, this),
33
- /* @__PURE__ */ t("div", { className: "relative", children: [
34
- /* @__PURE__ */ t(
35
- P,
36
- {
37
- currentItem: j,
38
- relatedModelName: r,
39
- isOpen: i,
40
- onClick: y
41
- },
42
- void 0,
43
- !1,
44
- {
45
- fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/admin-data/src/lib/components/filters/RelationFilterField.tsx",
46
- lineNumber: 84,
47
- columnNumber: 9
48
- },
49
- this
50
- ),
51
- i && /* @__PURE__ */ t(
52
- U,
53
- {
54
- searchTerm: c,
55
- onSearchChange: n,
56
- relatedModelName: r,
57
- items: d,
58
- loading: h,
59
- error: N,
60
- onSelect: v,
61
- onClear: x
62
- },
63
- void 0,
64
- !1,
65
- {
66
- fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/admin-data/src/lib/components/filters/RelationFilterField.tsx",
67
- lineNumber: 92,
68
- columnNumber: 11
69
- },
70
- this
71
- )
72
- ] }, void 0, !0, {
73
- fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/admin-data/src/lib/components/filters/RelationFilterField.tsx",
74
- lineNumber: 83,
75
- columnNumber: 7
76
- }, this)
77
- ] }, void 0, !0, {
78
- fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/admin-data/src/lib/components/filters/RelationFilterField.tsx",
79
- lineNumber: 79,
80
- columnNumber: 5
81
- }, this) : /* @__PURE__ */ t("div", { className: "space-y-1", children: [
82
- /* @__PURE__ */ t("label", { className: "block text-sm font-medium text-gray-700", children: [
83
- p(m),
84
- " ID"
85
- ] }, void 0, !0, {
86
- fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/admin-data/src/lib/components/filters/RelationFilterField.tsx",
50
+ } }, /* @__PURE__ */ React.createElement("label", { className: "block text-sm font-medium text-gray-700", __self: this, __source: {
51
+ fileName: _jsxFileName,
87
52
  lineNumber: 64,
88
53
  columnNumber: 9
89
- }, this),
90
- /* @__PURE__ */ t(
91
- "input",
92
- {
93
- type: "text",
94
- value: (e == null ? void 0 : e.id) || "",
95
- onChange: (s) => l(s.target.value ? { id: s.target.value } : void 0),
96
- placeholder: "Enter ID...",
97
- 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"
98
- },
99
- void 0,
100
- !1,
101
- {
102
- fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/admin-data/src/lib/components/filters/RelationFilterField.tsx",
103
- lineNumber: 67,
104
- columnNumber: 9
105
- },
106
- this
107
- )
108
- ] }, void 0, !0, {
109
- fileName: "/Users/justinhandley/IdeaProjects/nestled_template/libs/admin-data/src/lib/components/filters/RelationFilterField.tsx",
110
- lineNumber: 63,
54
+ } }, formatFieldName(fieldName), " ID"), /* @__PURE__ */ React.createElement("input", { type: "text", value: (currentValue == null ? void 0 : currentValue.id) || "", onChange: (e) => onChange(e.target.value ? {
55
+ id: e.target.value
56
+ } : void 0), placeholder: "Enter ID...", 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: {
57
+ fileName: _jsxFileName,
58
+ lineNumber: 67,
59
+ columnNumber: 9
60
+ } }));
61
+ }
62
+ return /* @__PURE__ */ React.createElement("div", { className: "space-y-1", ref: dropdownRef, __self: this, __source: {
63
+ fileName: _jsxFileName,
64
+ lineNumber: 79,
65
+ columnNumber: 5
66
+ } }, /* @__PURE__ */ React.createElement("label", { className: "block text-sm font-medium text-gray-700", __self: this, __source: {
67
+ fileName: _jsxFileName,
68
+ lineNumber: 80,
69
+ columnNumber: 7
70
+ } }, formatFieldName(fieldName)), /* @__PURE__ */ React.createElement("div", { className: "relative", __self: this, __source: {
71
+ fileName: _jsxFileName,
72
+ lineNumber: 83,
111
73
  columnNumber: 7
112
- }, this);
74
+ } }, /* @__PURE__ */ React.createElement(RelationDropdownButton, { currentItem, relatedModelName, isOpen, onClick: handleToggleOpen, __self: this, __source: {
75
+ fileName: _jsxFileName,
76
+ lineNumber: 84,
77
+ columnNumber: 9
78
+ } }), isOpen && /* @__PURE__ */ React.createElement(RelationDropdownContent, { searchTerm, onSearchChange: setSearchTerm, relatedModelName, items: relatedItems, loading, error: relationError, onSelect: handleSelect, onClear: handleClear, __self: this, __source: {
79
+ fileName: _jsxFileName,
80
+ lineNumber: 92,
81
+ columnNumber: 11
82
+ } })));
113
83
  }
114
84
  export {
115
- E as RelationFilterField
85
+ RelationFilterField
116
86
  };