@payloadcms/ui 3.0.0-beta.90 → 3.0.0-beta.91
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/elements/AddNewRelation/index.d.ts.map +1 -1
- package/dist/elements/AddNewRelation/index.js +1 -1
- package/dist/elements/AddNewRelation/index.js.map +1 -1
- package/dist/elements/AddNewRelation/index.scss +14 -4
- package/dist/elements/AppHeader/index.js +41 -80
- package/dist/elements/AppHeader/index.js.map +1 -1
- package/dist/elements/Autosave/index.js +148 -231
- package/dist/elements/Autosave/index.js.map +1 -1
- package/dist/elements/Button/index.js +86 -218
- package/dist/elements/Button/index.js.map +1 -1
- package/dist/elements/Collapsible/index.js +44 -62
- package/dist/elements/Collapsible/index.js.map +1 -1
- package/dist/elements/Collapsible/index.scss +15 -28
- package/dist/elements/CopyToClipboard/index.js +20 -54
- package/dist/elements/CopyToClipboard/index.js.map +1 -1
- package/dist/elements/Dropzone/index.js +59 -119
- package/dist/elements/Dropzone/index.js.map +1 -1
- package/dist/elements/EditMany/index.js +124 -230
- package/dist/elements/EditMany/index.js.map +1 -1
- package/dist/elements/EditUpload/index.js +133 -206
- package/dist/elements/EditUpload/index.js.map +1 -1
- package/dist/elements/ListControls/index.js +82 -188
- package/dist/elements/ListControls/index.js.map +1 -1
- package/dist/elements/Nav/context.js +47 -83
- package/dist/elements/Nav/context.js.map +1 -1
- package/dist/elements/SaveButton/index.js +30 -81
- package/dist/elements/SaveButton/index.js.map +1 -1
- package/dist/elements/SaveDraftButton/index.js +54 -116
- package/dist/elements/SaveDraftButton/index.js.map +1 -1
- package/dist/elements/SearchFilter/index.js +21 -77
- package/dist/elements/SearchFilter/index.js.map +1 -1
- package/dist/elements/Upload/index.js +130 -280
- package/dist/elements/Upload/index.js.map +1 -1
- package/dist/exports/client/{CodeEditor-C4FLUUO7.js → CodeEditor-MTP455NO.js} +2 -2
- package/dist/exports/client/chunk-NJHSEGFB.js +14 -0
- package/dist/exports/client/{chunk-UGBVRIVY.js.map → chunk-NJHSEGFB.js.map} +2 -2
- package/dist/exports/client/index.d.ts +1 -1
- package/dist/exports/client/index.d.ts.map +1 -1
- package/dist/exports/client/index.js +19 -19
- package/dist/exports/client/index.js.map +3 -3
- package/dist/fields/Relationship/index.js +318 -504
- package/dist/fields/Relationship/index.js.map +1 -1
- package/dist/fields/Upload/HasMany/index.d.ts.map +1 -1
- package/dist/fields/Upload/HasMany/index.js +192 -422
- package/dist/fields/Upload/HasMany/index.js.map +1 -1
- package/dist/fields/Upload/HasMany/index.scss +19 -1
- package/dist/forms/Submit/index.js +12 -28
- package/dist/forms/Submit/index.js.map +1 -1
- package/dist/hooks/useDelay.js +15 -48
- package/dist/hooks/useDelay.js.map +1 -1
- package/dist/hooks/useDelayedRender.js +32 -71
- package/dist/hooks/useDelayedRender.js.map +1 -1
- package/dist/hooks/useIntersect.js +14 -20
- package/dist/hooks/useIntersect.js.map +1 -1
- package/dist/providers/Preferences/index.js +1 -3
- package/dist/providers/Preferences/index.js.map +1 -1
- package/dist/providers/Selection/index.js +102 -190
- package/dist/providers/Selection/index.js.map +1 -1
- package/dist/scss/app.scss +6 -6
- package/dist/scss/type.scss +4 -4
- package/dist/styles.css +1 -1
- package/package.json +8 -8
- package/dist/exports/client/chunk-UGBVRIVY.js +0 -14
- /package/dist/exports/client/{CodeEditor-C4FLUUO7.js.map → CodeEditor-MTP455NO.js.map} +0 -0
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
|
|
3
|
-
import { c as _c } from "react/compiler-runtime";
|
|
4
3
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
5
4
|
import { useWindowInfo } from '@faceless-ui/window-info';
|
|
6
5
|
import { getTranslation } from '@payloadcms/translations';
|
|
@@ -32,15 +31,12 @@ const baseClass = 'list-controls';
|
|
|
32
31
|
* the collection's documents.
|
|
33
32
|
*/
|
|
34
33
|
export const ListControls = props => {
|
|
35
|
-
const $ = _c(34);
|
|
36
34
|
const {
|
|
37
35
|
collectionConfig,
|
|
38
|
-
enableColumns
|
|
39
|
-
enableSort
|
|
36
|
+
enableColumns = true,
|
|
37
|
+
enableSort = false,
|
|
40
38
|
fields
|
|
41
39
|
} = props;
|
|
42
|
-
const enableColumns = t0 === undefined ? true : t0;
|
|
43
|
-
const enableSort = t1 === undefined ? false : t1;
|
|
44
40
|
const {
|
|
45
41
|
handleSearchChange
|
|
46
42
|
} = useListQuery();
|
|
@@ -59,230 +55,128 @@ export const ListControls = props => {
|
|
|
59
55
|
t
|
|
60
56
|
} = useTranslation();
|
|
61
57
|
const {
|
|
62
|
-
breakpoints:
|
|
58
|
+
breakpoints: {
|
|
59
|
+
s: smallBreak
|
|
60
|
+
}
|
|
63
61
|
} = useWindowInfo();
|
|
64
|
-
const
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
const
|
|
68
|
-
let t3;
|
|
69
|
-
if ($[0] !== titleField || $[1] !== i18n) {
|
|
70
|
-
t3 = (titleField && getTranslation("label" in titleField && typeof titleField.label === "string" ? titleField.label : "name" in titleField ? titleField.name : null, i18n)) ?? "ID";
|
|
71
|
-
$[0] = titleField;
|
|
72
|
-
$[1] = i18n;
|
|
73
|
-
$[2] = t3;
|
|
74
|
-
} else {
|
|
75
|
-
t3 = $[2];
|
|
76
|
-
}
|
|
77
|
-
const searchLabel = t3;
|
|
78
|
-
let t4;
|
|
79
|
-
if ($[3] !== collectionConfig.admin.listSearchableFields || $[4] !== fields) {
|
|
80
|
-
t4 = getTextFieldsToBeSearched(collectionConfig.admin.listSearchableFields, fields);
|
|
81
|
-
$[3] = collectionConfig.admin.listSearchableFields;
|
|
82
|
-
$[4] = fields;
|
|
83
|
-
$[5] = t4;
|
|
84
|
-
} else {
|
|
85
|
-
t4 = $[5];
|
|
86
|
-
}
|
|
87
|
-
const listSearchableFields = t4;
|
|
88
|
-
const searchLabelTranslated = useRef(t("general:searchBy", {
|
|
62
|
+
const [search, setSearch] = useState(typeof searchParams?.search === 'string' ? searchParams?.search : '');
|
|
63
|
+
const searchLabel = (titleField && getTranslation('label' in titleField && typeof titleField.label === 'string' ? titleField.label : 'name' in titleField ? titleField.name : null, i18n)) ?? 'ID';
|
|
64
|
+
const listSearchableFields = getTextFieldsToBeSearched(collectionConfig.admin.listSearchableFields, fields);
|
|
65
|
+
const searchLabelTranslated = useRef(t('general:searchBy', {
|
|
89
66
|
label: getTranslation(searchLabel, i18n)
|
|
90
67
|
}));
|
|
91
68
|
const hasWhereParam = useRef(Boolean(searchParams?.where));
|
|
92
69
|
const shouldInitializeWhereOpened = validateWhereQuery(searchParams?.where);
|
|
93
|
-
const [visibleDrawer, setVisibleDrawer] = useState(shouldInitializeWhereOpened ?
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
hasWhereParam.current = true;
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
};
|
|
106
|
-
$[6] = searchParams;
|
|
107
|
-
$[7] = t5;
|
|
108
|
-
} else {
|
|
109
|
-
t5 = $[7];
|
|
110
|
-
}
|
|
111
|
-
const t6 = searchParams?.where;
|
|
112
|
-
let t7;
|
|
113
|
-
if ($[8] !== t6) {
|
|
114
|
-
t7 = [setVisibleDrawer, t6];
|
|
115
|
-
$[8] = t6;
|
|
116
|
-
$[9] = t7;
|
|
117
|
-
} else {
|
|
118
|
-
t7 = $[9];
|
|
119
|
-
}
|
|
120
|
-
useEffect(t5, t7);
|
|
121
|
-
let t8;
|
|
122
|
-
if ($[10] !== t || $[11] !== listSearchableFields || $[12] !== i18n || $[13] !== searchLabel) {
|
|
123
|
-
t8 = [t, listSearchableFields, i18n, searchLabel];
|
|
124
|
-
$[10] = t;
|
|
125
|
-
$[11] = listSearchableFields;
|
|
126
|
-
$[12] = i18n;
|
|
127
|
-
$[13] = searchLabel;
|
|
128
|
-
$[14] = t8;
|
|
129
|
-
} else {
|
|
130
|
-
t8 = $[14];
|
|
131
|
-
}
|
|
70
|
+
const [visibleDrawer, setVisibleDrawer] = useState(shouldInitializeWhereOpened ? 'where' : undefined);
|
|
71
|
+
useEffect(() => {
|
|
72
|
+
if (hasWhereParam.current && !searchParams?.where) {
|
|
73
|
+
setVisibleDrawer(undefined);
|
|
74
|
+
hasWhereParam.current = false;
|
|
75
|
+
} else if (searchParams?.where) {
|
|
76
|
+
hasWhereParam.current = true;
|
|
77
|
+
}
|
|
78
|
+
}, [setVisibleDrawer, searchParams?.where]);
|
|
132
79
|
useEffect(() => {
|
|
133
80
|
if (listSearchableFields?.length > 0) {
|
|
134
81
|
searchLabelTranslated.current = listSearchableFields.reduce((placeholderText, field, i) => {
|
|
135
|
-
const label =
|
|
82
|
+
const label = 'label' in field && field.label ? field.label : 'name' in field ? field.name : null;
|
|
136
83
|
if (i === 0) {
|
|
137
|
-
return `${t(
|
|
84
|
+
return `${t('general:searchBy', {
|
|
138
85
|
label: getTranslation(label, i18n)
|
|
139
86
|
})}`;
|
|
140
87
|
}
|
|
141
88
|
if (i === listSearchableFields.length - 1) {
|
|
142
|
-
return `${placeholderText} ${t(
|
|
89
|
+
return `${placeholderText} ${t('general:or')} ${getTranslation(label, i18n)}`;
|
|
143
90
|
}
|
|
144
91
|
return `${placeholderText}, ${getTranslation(label, i18n)}`;
|
|
145
|
-
},
|
|
92
|
+
}, '');
|
|
146
93
|
} else {
|
|
147
|
-
searchLabelTranslated.current = t(
|
|
94
|
+
searchLabelTranslated.current = t('general:searchBy', {
|
|
148
95
|
label: getTranslation(searchLabel, i18n)
|
|
149
96
|
});
|
|
150
97
|
}
|
|
151
|
-
},
|
|
152
|
-
|
|
153
|
-
if ($[15] !== handleSearchChange) {
|
|
154
|
-
t9 = search_0 => void handleSearchChange(search_0);
|
|
155
|
-
$[15] = handleSearchChange;
|
|
156
|
-
$[16] = t9;
|
|
157
|
-
} else {
|
|
158
|
-
t9 = $[16];
|
|
159
|
-
}
|
|
160
|
-
let t10;
|
|
161
|
-
if ($[17] !== enableColumns || $[18] !== visibleDrawer || $[19] !== t) {
|
|
162
|
-
t10 = enableColumns && _jsx(Pill, {
|
|
163
|
-
"aria-controls": `${baseClass}-columns`,
|
|
164
|
-
"aria-expanded": visibleDrawer === "columns",
|
|
165
|
-
className: `${baseClass}__toggle-columns ${visibleDrawer === "columns" ? `${baseClass}__buttons-active` : ""}`,
|
|
166
|
-
icon: _jsx(ChevronIcon, {}),
|
|
167
|
-
onClick: () => setVisibleDrawer(visibleDrawer !== "columns" ? "columns" : undefined),
|
|
168
|
-
pillStyle: "light",
|
|
169
|
-
children: t("general:columns")
|
|
170
|
-
});
|
|
171
|
-
$[17] = enableColumns;
|
|
172
|
-
$[18] = visibleDrawer;
|
|
173
|
-
$[19] = t;
|
|
174
|
-
$[20] = t10;
|
|
175
|
-
} else {
|
|
176
|
-
t10 = $[20];
|
|
177
|
-
}
|
|
178
|
-
let t11;
|
|
179
|
-
if ($[21] !== visibleDrawer) {
|
|
180
|
-
t11 = () => setVisibleDrawer(visibleDrawer !== "where" ? "where" : undefined);
|
|
181
|
-
$[21] = visibleDrawer;
|
|
182
|
-
$[22] = t11;
|
|
183
|
-
} else {
|
|
184
|
-
t11 = $[22];
|
|
185
|
-
}
|
|
186
|
-
let t12;
|
|
187
|
-
if ($[23] !== enableSort || $[24] !== visibleDrawer || $[25] !== t) {
|
|
188
|
-
t12 = enableSort && _jsx(Pill, {
|
|
189
|
-
"aria-controls": `${baseClass}-sort`,
|
|
190
|
-
"aria-expanded": visibleDrawer === "sort",
|
|
191
|
-
className: `${baseClass}__toggle-sort`,
|
|
192
|
-
icon: _jsx(ChevronIcon, {}),
|
|
193
|
-
onClick: () => setVisibleDrawer(visibleDrawer !== "sort" ? "sort" : undefined),
|
|
194
|
-
pillStyle: "light",
|
|
195
|
-
children: t("general:sort")
|
|
196
|
-
});
|
|
197
|
-
$[23] = enableSort;
|
|
198
|
-
$[24] = visibleDrawer;
|
|
199
|
-
$[25] = t;
|
|
200
|
-
$[26] = t12;
|
|
201
|
-
} else {
|
|
202
|
-
t12 = $[26];
|
|
203
|
-
}
|
|
204
|
-
let t13;
|
|
205
|
-
if ($[27] !== enableColumns || $[28] !== visibleDrawer || $[29] !== collectionConfig) {
|
|
206
|
-
t13 = enableColumns && _jsx(AnimateHeight, {
|
|
207
|
-
className: `${baseClass}__columns`,
|
|
208
|
-
height: visibleDrawer === "columns" ? "auto" : 0,
|
|
209
|
-
id: `${baseClass}-columns`,
|
|
210
|
-
children: _jsx(ColumnSelector, {
|
|
211
|
-
collectionSlug: collectionConfig.slug
|
|
212
|
-
})
|
|
213
|
-
});
|
|
214
|
-
$[27] = enableColumns;
|
|
215
|
-
$[28] = visibleDrawer;
|
|
216
|
-
$[29] = collectionConfig;
|
|
217
|
-
$[30] = t13;
|
|
218
|
-
} else {
|
|
219
|
-
t13 = $[30];
|
|
220
|
-
}
|
|
221
|
-
let t14;
|
|
222
|
-
if ($[31] !== enableSort || $[32] !== visibleDrawer) {
|
|
223
|
-
t14 = enableSort && _jsx(AnimateHeight, {
|
|
224
|
-
className: `${baseClass}__sort`,
|
|
225
|
-
height: visibleDrawer === "sort" ? "auto" : 0,
|
|
226
|
-
id: `${baseClass}-sort`,
|
|
227
|
-
children: _jsx("p", {
|
|
228
|
-
children: "Sort Complex"
|
|
229
|
-
})
|
|
230
|
-
});
|
|
231
|
-
$[31] = enableSort;
|
|
232
|
-
$[32] = visibleDrawer;
|
|
233
|
-
$[33] = t14;
|
|
234
|
-
} else {
|
|
235
|
-
t14 = $[33];
|
|
236
|
-
}
|
|
237
|
-
return _jsxs("div", {
|
|
98
|
+
}, [t, listSearchableFields, i18n, searchLabel]);
|
|
99
|
+
return /*#__PURE__*/_jsxs("div", {
|
|
238
100
|
className: baseClass,
|
|
239
|
-
children: [_jsxs("div", {
|
|
101
|
+
children: [/*#__PURE__*/_jsxs("div", {
|
|
240
102
|
className: `${baseClass}__wrap`,
|
|
241
|
-
children: [_jsx(SearchIcon, {}), _jsx(SearchFilter, {
|
|
242
|
-
fieldName:
|
|
243
|
-
handleChange:
|
|
103
|
+
children: [/*#__PURE__*/_jsx(SearchIcon, {}), /*#__PURE__*/_jsx(SearchFilter, {
|
|
104
|
+
fieldName: 'name' in titleField ? titleField?.name : null,
|
|
105
|
+
handleChange: search_0 => {
|
|
106
|
+
return void handleSearchChange(search_0);
|
|
107
|
+
},
|
|
244
108
|
initialParams: searchParams,
|
|
245
109
|
label: searchLabelTranslated.current,
|
|
246
110
|
setValue: setSearch,
|
|
247
111
|
value: search
|
|
248
|
-
}, collectionSlug), _jsx("div", {
|
|
112
|
+
}, collectionSlug), /*#__PURE__*/_jsx("div", {
|
|
249
113
|
className: `${baseClass}__buttons`,
|
|
250
|
-
children: _jsxs("div", {
|
|
114
|
+
children: /*#__PURE__*/_jsxs("div", {
|
|
251
115
|
className: `${baseClass}__buttons-wrap`,
|
|
252
|
-
children: [!smallBreak && _jsxs(React.Fragment, {
|
|
253
|
-
children: [beforeActions && beforeActions, !disableBulkEdit && _jsxs(Fragment, {
|
|
254
|
-
children: [_jsx(EditMany, {
|
|
116
|
+
children: [!smallBreak && /*#__PURE__*/_jsxs(React.Fragment, {
|
|
117
|
+
children: [beforeActions && beforeActions, !disableBulkEdit && /*#__PURE__*/_jsxs(Fragment, {
|
|
118
|
+
children: [/*#__PURE__*/_jsx(EditMany, {
|
|
255
119
|
collection: collectionConfig,
|
|
256
|
-
fields
|
|
257
|
-
}), _jsx(PublishMany, {
|
|
120
|
+
fields: fields
|
|
121
|
+
}), /*#__PURE__*/_jsx(PublishMany, {
|
|
258
122
|
collection: collectionConfig
|
|
259
|
-
}), _jsx(UnpublishMany, {
|
|
123
|
+
}), /*#__PURE__*/_jsx(UnpublishMany, {
|
|
260
124
|
collection: collectionConfig
|
|
261
125
|
})]
|
|
262
|
-
}), !disableBulkDelete && _jsx(DeleteMany, {
|
|
126
|
+
}), !disableBulkDelete && /*#__PURE__*/_jsx(DeleteMany, {
|
|
263
127
|
collection: collectionConfig
|
|
264
128
|
})]
|
|
265
|
-
}),
|
|
129
|
+
}), enableColumns && /*#__PURE__*/_jsx(Pill, {
|
|
130
|
+
"aria-controls": `${baseClass}-columns`,
|
|
131
|
+
"aria-expanded": visibleDrawer === 'columns',
|
|
132
|
+
className: `${baseClass}__toggle-columns ${visibleDrawer === 'columns' ? `${baseClass}__buttons-active` : ''}`,
|
|
133
|
+
icon: /*#__PURE__*/_jsx(ChevronIcon, {}),
|
|
134
|
+
onClick: () => setVisibleDrawer(visibleDrawer !== 'columns' ? 'columns' : undefined),
|
|
135
|
+
pillStyle: "light",
|
|
136
|
+
children: t('general:columns')
|
|
137
|
+
}), /*#__PURE__*/_jsx(Pill, {
|
|
266
138
|
"aria-controls": `${baseClass}-where`,
|
|
267
|
-
"aria-expanded": visibleDrawer ===
|
|
268
|
-
className: `${baseClass}__toggle-where ${visibleDrawer ===
|
|
269
|
-
icon: _jsx(ChevronIcon, {}),
|
|
270
|
-
onClick:
|
|
139
|
+
"aria-expanded": visibleDrawer === 'where',
|
|
140
|
+
className: `${baseClass}__toggle-where ${visibleDrawer === 'where' ? `${baseClass}__buttons-active` : ''}`,
|
|
141
|
+
icon: /*#__PURE__*/_jsx(ChevronIcon, {}),
|
|
142
|
+
onClick: () => setVisibleDrawer(visibleDrawer !== 'where' ? 'where' : undefined),
|
|
143
|
+
pillStyle: "light",
|
|
144
|
+
children: t('general:filters')
|
|
145
|
+
}), enableSort && /*#__PURE__*/_jsx(Pill, {
|
|
146
|
+
"aria-controls": `${baseClass}-sort`,
|
|
147
|
+
"aria-expanded": visibleDrawer === 'sort',
|
|
148
|
+
className: `${baseClass}__toggle-sort`,
|
|
149
|
+
icon: /*#__PURE__*/_jsx(ChevronIcon, {}),
|
|
150
|
+
onClick: () => setVisibleDrawer(visibleDrawer !== 'sort' ? 'sort' : undefined),
|
|
271
151
|
pillStyle: "light",
|
|
272
|
-
children: t(
|
|
273
|
-
})
|
|
152
|
+
children: t('general:sort')
|
|
153
|
+
})]
|
|
274
154
|
})
|
|
275
155
|
})]
|
|
276
|
-
}),
|
|
156
|
+
}), enableColumns && /*#__PURE__*/_jsx(AnimateHeight, {
|
|
157
|
+
className: `${baseClass}__columns`,
|
|
158
|
+
height: visibleDrawer === 'columns' ? 'auto' : 0,
|
|
159
|
+
id: `${baseClass}-columns`,
|
|
160
|
+
children: /*#__PURE__*/_jsx(ColumnSelector, {
|
|
161
|
+
collectionSlug: collectionConfig.slug
|
|
162
|
+
})
|
|
163
|
+
}), /*#__PURE__*/_jsx(AnimateHeight, {
|
|
277
164
|
className: `${baseClass}__where`,
|
|
278
|
-
height: visibleDrawer ===
|
|
165
|
+
height: visibleDrawer === 'where' ? 'auto' : 0,
|
|
279
166
|
id: `${baseClass}-where`,
|
|
280
|
-
children: _jsx(WhereBuilder, {
|
|
167
|
+
children: /*#__PURE__*/_jsx(WhereBuilder, {
|
|
281
168
|
collectionPluralLabel: collectionConfig?.labels?.plural,
|
|
282
169
|
collectionSlug: collectionConfig.slug,
|
|
283
|
-
fields
|
|
170
|
+
fields: fields
|
|
284
171
|
}, String(hasWhereParam.current && !searchParams?.where))
|
|
285
|
-
}),
|
|
172
|
+
}), enableSort && /*#__PURE__*/_jsx(AnimateHeight, {
|
|
173
|
+
className: `${baseClass}__sort`,
|
|
174
|
+
height: visibleDrawer === 'sort' ? 'auto' : 0,
|
|
175
|
+
id: `${baseClass}-sort`,
|
|
176
|
+
children: /*#__PURE__*/_jsx("p", {
|
|
177
|
+
children: "Sort Complex"
|
|
178
|
+
})
|
|
179
|
+
})]
|
|
286
180
|
});
|
|
287
181
|
};
|
|
288
182
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["c","_c","useWindowInfo","getTranslation","React","Fragment","useEffect","useRef","useState","AnimateHeightImport","AnimateHeight","default","useUseTitleField","ChevronIcon","SearchIcon","useListInfo","useListQuery","useSearchParams","useTranslation","ColumnSelector","DeleteMany","EditMany","Pill","PublishMany","SearchFilter","UnpublishMany","WhereBuilder","validateWhereQuery","getTextFieldsToBeSearched","baseClass","ListControls","props","$","collectionConfig","enableColumns","t0","enableSort","t1","fields","undefined","handleSearchChange","beforeActions","collectionSlug","disableBulkDelete","disableBulkEdit","searchParams","titleField","i18n","t","breakpoints","t2","s","smallBreak","search","setSearch","t3","label","name","searchLabel","t4","admin","listSearchableFields","searchLabelTranslated","hasWhereParam","Boolean","where","shouldInitializeWhereOpened","visibleDrawer","setVisibleDrawer","t5","current","t6","t7","t8","length","reduce","placeholderText","field","i","t9","search_0","t10","_jsx","className","icon","onClick","pillStyle","children","t11","t12","t13","height","id","slug","t14","_jsxs","fieldName","handleChange","initialParams","setValue","value","collection","collectionPluralLabel","labels","plural","String"],"sources":["../../../src/elements/ListControls/index.tsx"],"sourcesContent":["'use client'\nimport type { ClientCollectionConfig, ClientField, Where } from 'payload'\n\nimport { useWindowInfo } from '@faceless-ui/window-info'\nimport { getTranslation } from '@payloadcms/translations'\nimport React, { Fragment, useEffect, useRef, useState } from 'react'\nimport AnimateHeightImport from 'react-animate-height'\n\nconst AnimateHeight = (AnimateHeightImport.default ||\n AnimateHeightImport) as typeof AnimateHeightImport.default\n\nimport { useUseTitleField } from '../../hooks/useUseAsTitle.js'\nimport { ChevronIcon } from '../../icons/Chevron/index.js'\nimport { SearchIcon } from '../../icons/Search/index.js'\nimport { useListInfo } from '../../providers/ListInfo/index.js'\nimport { useListQuery } from '../../providers/ListQuery/index.js'\nimport { useSearchParams } from '../../providers/SearchParams/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { ColumnSelector } from '../ColumnSelector/index.js'\nimport { DeleteMany } from '../DeleteMany/index.js'\nimport { EditMany } from '../EditMany/index.js'\nimport { Pill } from '../Pill/index.js'\nimport { PublishMany } from '../PublishMany/index.js'\nimport { SearchFilter } from '../SearchFilter/index.js'\nimport { UnpublishMany } from '../UnpublishMany/index.js'\nimport { WhereBuilder } from '../WhereBuilder/index.js'\nimport validateWhereQuery from '../WhereBuilder/validateWhereQuery.js'\nimport { getTextFieldsToBeSearched } from './getTextFieldsToBeSearched.js'\nimport './index.scss'\n\nconst baseClass = 'list-controls'\n\nexport type ListControlsProps = {\n readonly collectionConfig: ClientCollectionConfig\n readonly enableColumns?: boolean\n readonly enableSort?: boolean\n readonly fields: ClientField[]\n readonly handleSearchChange?: (search: string) => void\n readonly handleSortChange?: (sort: string) => void\n readonly handleWhereChange?: (where: Where) => void\n}\n\n/**\n * The ListControls component is used to render the controls (search, filter, where)\n * for a collection's list view. You can find those directly above the table which lists\n * the collection's documents.\n */\nexport const ListControls: React.FC<ListControlsProps> = (props) => {\n const { collectionConfig, enableColumns = true, enableSort = false, fields } = props\n\n const { handleSearchChange } = useListQuery()\n const { beforeActions, collectionSlug, disableBulkDelete, disableBulkEdit } = useListInfo()\n const { searchParams } = useSearchParams()\n const titleField = useUseTitleField(collectionConfig, fields)\n const { i18n, t } = useTranslation()\n const {\n breakpoints: { s: smallBreak },\n } = useWindowInfo()\n const [search, setSearch] = useState(\n typeof searchParams?.search === 'string' ? searchParams?.search : '',\n )\n\n const searchLabel =\n (titleField &&\n getTranslation(\n 'label' in titleField && typeof titleField.label === 'string'\n ? titleField.label\n : 'name' in titleField\n ? titleField.name\n : null,\n i18n,\n )) ??\n 'ID'\n\n const listSearchableFields = getTextFieldsToBeSearched(\n collectionConfig.admin.listSearchableFields,\n fields,\n )\n\n const searchLabelTranslated = useRef(\n t('general:searchBy', { label: getTranslation(searchLabel, i18n) }),\n )\n\n const hasWhereParam = useRef(Boolean(searchParams?.where))\n\n const shouldInitializeWhereOpened = validateWhereQuery(searchParams?.where)\n const [visibleDrawer, setVisibleDrawer] = useState<'columns' | 'sort' | 'where'>(\n shouldInitializeWhereOpened ? 'where' : undefined,\n )\n\n useEffect(() => {\n if (hasWhereParam.current && !searchParams?.where) {\n setVisibleDrawer(undefined)\n hasWhereParam.current = false\n } else if (searchParams?.where) {\n hasWhereParam.current = true\n }\n }, [setVisibleDrawer, searchParams?.where])\n\n useEffect(() => {\n if (listSearchableFields?.length > 0) {\n searchLabelTranslated.current = listSearchableFields.reduce(\n (placeholderText: string, field, i: number) => {\n const label =\n 'label' in field && field.label ? field.label : 'name' in field ? field.name : null\n\n if (i === 0) {\n return `${t('general:searchBy', {\n label: getTranslation(label, i18n),\n })}`\n }\n\n if (i === listSearchableFields.length - 1) {\n return `${placeholderText} ${t('general:or')} ${getTranslation(label, i18n)}`\n }\n\n return `${placeholderText}, ${getTranslation(label, i18n)}`\n },\n '',\n )\n } else {\n searchLabelTranslated.current = t('general:searchBy', {\n label: getTranslation(searchLabel, i18n),\n })\n }\n }, [t, listSearchableFields, i18n, searchLabel])\n\n return (\n <div className={baseClass}>\n <div className={`${baseClass}__wrap`}>\n <SearchIcon />\n <SearchFilter\n fieldName={'name' in titleField ? titleField?.name : null}\n handleChange={(search) => {\n return void handleSearchChange(search)\n }}\n initialParams={searchParams}\n key={collectionSlug}\n label={searchLabelTranslated.current}\n setValue={setSearch}\n value={search}\n />\n <div className={`${baseClass}__buttons`}>\n <div className={`${baseClass}__buttons-wrap`}>\n {!smallBreak && (\n <React.Fragment>\n {beforeActions && beforeActions}\n {!disableBulkEdit && (\n <Fragment>\n <EditMany collection={collectionConfig} fields={fields} />\n <PublishMany collection={collectionConfig} />\n <UnpublishMany collection={collectionConfig} />\n </Fragment>\n )}\n {!disableBulkDelete && <DeleteMany collection={collectionConfig} />}\n </React.Fragment>\n )}\n {enableColumns && (\n <Pill\n aria-controls={`${baseClass}-columns`}\n aria-expanded={visibleDrawer === 'columns'}\n className={`${baseClass}__toggle-columns ${\n visibleDrawer === 'columns' ? `${baseClass}__buttons-active` : ''\n }`}\n icon={<ChevronIcon />}\n onClick={() =>\n setVisibleDrawer(visibleDrawer !== 'columns' ? 'columns' : undefined)\n }\n pillStyle=\"light\"\n >\n {t('general:columns')}\n </Pill>\n )}\n <Pill\n aria-controls={`${baseClass}-where`}\n aria-expanded={visibleDrawer === 'where'}\n className={`${baseClass}__toggle-where ${\n visibleDrawer === 'where' ? `${baseClass}__buttons-active` : ''\n }`}\n icon={<ChevronIcon />}\n onClick={() => setVisibleDrawer(visibleDrawer !== 'where' ? 'where' : undefined)}\n pillStyle=\"light\"\n >\n {t('general:filters')}\n </Pill>\n {enableSort && (\n <Pill\n aria-controls={`${baseClass}-sort`}\n aria-expanded={visibleDrawer === 'sort'}\n className={`${baseClass}__toggle-sort`}\n icon={<ChevronIcon />}\n onClick={() => setVisibleDrawer(visibleDrawer !== 'sort' ? 'sort' : undefined)}\n pillStyle=\"light\"\n >\n {t('general:sort')}\n </Pill>\n )}\n </div>\n </div>\n </div>\n {enableColumns && (\n <AnimateHeight\n className={`${baseClass}__columns`}\n height={visibleDrawer === 'columns' ? 'auto' : 0}\n id={`${baseClass}-columns`}\n >\n <ColumnSelector collectionSlug={collectionConfig.slug} />\n </AnimateHeight>\n )}\n <AnimateHeight\n className={`${baseClass}__where`}\n height={visibleDrawer === 'where' ? 'auto' : 0}\n id={`${baseClass}-where`}\n >\n <WhereBuilder\n collectionPluralLabel={collectionConfig?.labels?.plural}\n collectionSlug={collectionConfig.slug}\n fields={fields}\n key={String(hasWhereParam.current && !searchParams?.where)}\n />\n </AnimateHeight>\n {enableSort && (\n <AnimateHeight\n className={`${baseClass}__sort`}\n height={visibleDrawer === 'sort' ? 'auto' : 0}\n id={`${baseClass}-sort`}\n >\n <p>Sort Complex</p>\n {/* <SortComplex\n collection={collection}\n handleChange={handleSortChange}\n modifySearchQuery={modifySearchQuery}\n /> */}\n </AnimateHeight>\n )}\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"index.js","names":["useWindowInfo","getTranslation","React","Fragment","useEffect","useRef","useState","AnimateHeightImport","AnimateHeight","default","useUseTitleField","ChevronIcon","SearchIcon","useListInfo","useListQuery","useSearchParams","useTranslation","ColumnSelector","DeleteMany","EditMany","Pill","PublishMany","SearchFilter","UnpublishMany","WhereBuilder","validateWhereQuery","getTextFieldsToBeSearched","baseClass","ListControls","props","collectionConfig","enableColumns","enableSort","fields","handleSearchChange","beforeActions","collectionSlug","disableBulkDelete","disableBulkEdit","searchParams","titleField","i18n","t","breakpoints","s","smallBreak","search","setSearch","searchLabel","label","name","listSearchableFields","admin","searchLabelTranslated","hasWhereParam","Boolean","where","shouldInitializeWhereOpened","visibleDrawer","setVisibleDrawer","undefined","current","length","reduce","placeholderText","field","i","_jsxs","className","_jsx","fieldName","handleChange","initialParams","setValue","value","collection","icon","onClick","pillStyle","height","id","slug","collectionPluralLabel","labels","plural","String"],"sources":["../../../src/elements/ListControls/index.tsx"],"sourcesContent":["'use client'\nimport type { ClientCollectionConfig, ClientField, Where } from 'payload'\n\nimport { useWindowInfo } from '@faceless-ui/window-info'\nimport { getTranslation } from '@payloadcms/translations'\nimport React, { Fragment, useEffect, useRef, useState } from 'react'\nimport AnimateHeightImport from 'react-animate-height'\n\nconst AnimateHeight = (AnimateHeightImport.default ||\n AnimateHeightImport) as typeof AnimateHeightImport.default\n\nimport { useUseTitleField } from '../../hooks/useUseAsTitle.js'\nimport { ChevronIcon } from '../../icons/Chevron/index.js'\nimport { SearchIcon } from '../../icons/Search/index.js'\nimport { useListInfo } from '../../providers/ListInfo/index.js'\nimport { useListQuery } from '../../providers/ListQuery/index.js'\nimport { useSearchParams } from '../../providers/SearchParams/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { ColumnSelector } from '../ColumnSelector/index.js'\nimport { DeleteMany } from '../DeleteMany/index.js'\nimport { EditMany } from '../EditMany/index.js'\nimport { Pill } from '../Pill/index.js'\nimport { PublishMany } from '../PublishMany/index.js'\nimport { SearchFilter } from '../SearchFilter/index.js'\nimport { UnpublishMany } from '../UnpublishMany/index.js'\nimport { WhereBuilder } from '../WhereBuilder/index.js'\nimport validateWhereQuery from '../WhereBuilder/validateWhereQuery.js'\nimport { getTextFieldsToBeSearched } from './getTextFieldsToBeSearched.js'\nimport './index.scss'\n\nconst baseClass = 'list-controls'\n\nexport type ListControlsProps = {\n readonly collectionConfig: ClientCollectionConfig\n readonly enableColumns?: boolean\n readonly enableSort?: boolean\n readonly fields: ClientField[]\n readonly handleSearchChange?: (search: string) => void\n readonly handleSortChange?: (sort: string) => void\n readonly handleWhereChange?: (where: Where) => void\n}\n\n/**\n * The ListControls component is used to render the controls (search, filter, where)\n * for a collection's list view. You can find those directly above the table which lists\n * the collection's documents.\n */\nexport const ListControls: React.FC<ListControlsProps> = (props) => {\n const { collectionConfig, enableColumns = true, enableSort = false, fields } = props\n\n const { handleSearchChange } = useListQuery()\n const { beforeActions, collectionSlug, disableBulkDelete, disableBulkEdit } = useListInfo()\n const { searchParams } = useSearchParams()\n const titleField = useUseTitleField(collectionConfig, fields)\n const { i18n, t } = useTranslation()\n const {\n breakpoints: { s: smallBreak },\n } = useWindowInfo()\n const [search, setSearch] = useState(\n typeof searchParams?.search === 'string' ? searchParams?.search : '',\n )\n\n const searchLabel =\n (titleField &&\n getTranslation(\n 'label' in titleField && typeof titleField.label === 'string'\n ? titleField.label\n : 'name' in titleField\n ? titleField.name\n : null,\n i18n,\n )) ??\n 'ID'\n\n const listSearchableFields = getTextFieldsToBeSearched(\n collectionConfig.admin.listSearchableFields,\n fields,\n )\n\n const searchLabelTranslated = useRef(\n t('general:searchBy', { label: getTranslation(searchLabel, i18n) }),\n )\n\n const hasWhereParam = useRef(Boolean(searchParams?.where))\n\n const shouldInitializeWhereOpened = validateWhereQuery(searchParams?.where)\n const [visibleDrawer, setVisibleDrawer] = useState<'columns' | 'sort' | 'where'>(\n shouldInitializeWhereOpened ? 'where' : undefined,\n )\n\n useEffect(() => {\n if (hasWhereParam.current && !searchParams?.where) {\n setVisibleDrawer(undefined)\n hasWhereParam.current = false\n } else if (searchParams?.where) {\n hasWhereParam.current = true\n }\n }, [setVisibleDrawer, searchParams?.where])\n\n useEffect(() => {\n if (listSearchableFields?.length > 0) {\n searchLabelTranslated.current = listSearchableFields.reduce(\n (placeholderText: string, field, i: number) => {\n const label =\n 'label' in field && field.label ? field.label : 'name' in field ? field.name : null\n\n if (i === 0) {\n return `${t('general:searchBy', {\n label: getTranslation(label, i18n),\n })}`\n }\n\n if (i === listSearchableFields.length - 1) {\n return `${placeholderText} ${t('general:or')} ${getTranslation(label, i18n)}`\n }\n\n return `${placeholderText}, ${getTranslation(label, i18n)}`\n },\n '',\n )\n } else {\n searchLabelTranslated.current = t('general:searchBy', {\n label: getTranslation(searchLabel, i18n),\n })\n }\n }, [t, listSearchableFields, i18n, searchLabel])\n\n return (\n <div className={baseClass}>\n <div className={`${baseClass}__wrap`}>\n <SearchIcon />\n <SearchFilter\n fieldName={'name' in titleField ? titleField?.name : null}\n handleChange={(search) => {\n return void handleSearchChange(search)\n }}\n initialParams={searchParams}\n key={collectionSlug}\n label={searchLabelTranslated.current}\n setValue={setSearch}\n value={search}\n />\n <div className={`${baseClass}__buttons`}>\n <div className={`${baseClass}__buttons-wrap`}>\n {!smallBreak && (\n <React.Fragment>\n {beforeActions && beforeActions}\n {!disableBulkEdit && (\n <Fragment>\n <EditMany collection={collectionConfig} fields={fields} />\n <PublishMany collection={collectionConfig} />\n <UnpublishMany collection={collectionConfig} />\n </Fragment>\n )}\n {!disableBulkDelete && <DeleteMany collection={collectionConfig} />}\n </React.Fragment>\n )}\n {enableColumns && (\n <Pill\n aria-controls={`${baseClass}-columns`}\n aria-expanded={visibleDrawer === 'columns'}\n className={`${baseClass}__toggle-columns ${\n visibleDrawer === 'columns' ? `${baseClass}__buttons-active` : ''\n }`}\n icon={<ChevronIcon />}\n onClick={() =>\n setVisibleDrawer(visibleDrawer !== 'columns' ? 'columns' : undefined)\n }\n pillStyle=\"light\"\n >\n {t('general:columns')}\n </Pill>\n )}\n <Pill\n aria-controls={`${baseClass}-where`}\n aria-expanded={visibleDrawer === 'where'}\n className={`${baseClass}__toggle-where ${\n visibleDrawer === 'where' ? `${baseClass}__buttons-active` : ''\n }`}\n icon={<ChevronIcon />}\n onClick={() => setVisibleDrawer(visibleDrawer !== 'where' ? 'where' : undefined)}\n pillStyle=\"light\"\n >\n {t('general:filters')}\n </Pill>\n {enableSort && (\n <Pill\n aria-controls={`${baseClass}-sort`}\n aria-expanded={visibleDrawer === 'sort'}\n className={`${baseClass}__toggle-sort`}\n icon={<ChevronIcon />}\n onClick={() => setVisibleDrawer(visibleDrawer !== 'sort' ? 'sort' : undefined)}\n pillStyle=\"light\"\n >\n {t('general:sort')}\n </Pill>\n )}\n </div>\n </div>\n </div>\n {enableColumns && (\n <AnimateHeight\n className={`${baseClass}__columns`}\n height={visibleDrawer === 'columns' ? 'auto' : 0}\n id={`${baseClass}-columns`}\n >\n <ColumnSelector collectionSlug={collectionConfig.slug} />\n </AnimateHeight>\n )}\n <AnimateHeight\n className={`${baseClass}__where`}\n height={visibleDrawer === 'where' ? 'auto' : 0}\n id={`${baseClass}-where`}\n >\n <WhereBuilder\n collectionPluralLabel={collectionConfig?.labels?.plural}\n collectionSlug={collectionConfig.slug}\n fields={fields}\n key={String(hasWhereParam.current && !searchParams?.where)}\n />\n </AnimateHeight>\n {enableSort && (\n <AnimateHeight\n className={`${baseClass}__sort`}\n height={visibleDrawer === 'sort' ? 'auto' : 0}\n id={`${baseClass}-sort`}\n >\n <p>Sort Complex</p>\n {/* <SortComplex\n collection={collection}\n handleChange={handleSortChange}\n modifySearchQuery={modifySearchQuery}\n /> */}\n </AnimateHeight>\n )}\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
|
|
3
|
-
import { c as _c } from "react/compiler-runtime";
|
|
4
3
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
5
4
|
import { useWindowInfo } from '@faceless-ui/window-info';
|
|
6
5
|
import { clearAllBodyScrollLocks, disableBodyScroll, enableBodyScroll } from 'body-scroll-lock';
|
|
@@ -25,58 +24,42 @@ const getNavPreference = async getPreference => {
|
|
|
25
24
|
return true;
|
|
26
25
|
}
|
|
27
26
|
};
|
|
28
|
-
export const NavProvider =
|
|
29
|
-
|
|
27
|
+
export const NavProvider = ({
|
|
28
|
+
children,
|
|
29
|
+
initialIsOpen
|
|
30
|
+
}) => {
|
|
30
31
|
const {
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
32
|
+
breakpoints: {
|
|
33
|
+
l: largeBreak,
|
|
34
|
+
m: midBreak,
|
|
35
|
+
s: smallBreak
|
|
36
|
+
}
|
|
36
37
|
} = useWindowInfo();
|
|
37
|
-
const {
|
|
38
|
-
l: largeBreak,
|
|
39
|
-
m: midBreak,
|
|
40
|
-
s: smallBreak
|
|
41
|
-
} = t1;
|
|
42
38
|
const {
|
|
43
39
|
getPreference
|
|
44
40
|
} = usePreferences();
|
|
45
41
|
const navRef = useRef(null);
|
|
42
|
+
// initialize the nav to be closed
|
|
43
|
+
// this is because getting the preference is async
|
|
44
|
+
// so instead of closing it after the preference is loaded
|
|
45
|
+
// we will open it after the preference is loaded
|
|
46
46
|
const [navOpen, setNavOpen] = React.useState(initialIsOpen);
|
|
47
47
|
const [shouldAnimate, setShouldAnimate] = React.useState(false);
|
|
48
48
|
const [hydrated, setHydrated] = React.useState(false);
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
$[1] = getPreference;
|
|
64
|
-
$[2] = t2;
|
|
65
|
-
$[3] = t3;
|
|
66
|
-
} else {
|
|
67
|
-
t2 = $[2];
|
|
68
|
-
t3 = $[3];
|
|
69
|
-
}
|
|
70
|
-
useEffect(t2, t3);
|
|
71
|
-
let t4;
|
|
72
|
-
if ($[4] !== navOpen || $[5] !== midBreak) {
|
|
73
|
-
t4 = [navOpen, midBreak];
|
|
74
|
-
$[4] = navOpen;
|
|
75
|
-
$[5] = midBreak;
|
|
76
|
-
$[6] = t4;
|
|
77
|
-
} else {
|
|
78
|
-
t4 = $[6];
|
|
79
|
-
}
|
|
49
|
+
// on load check the user's preference and set "initial" state
|
|
50
|
+
useEffect(() => {
|
|
51
|
+
if (largeBreak === false) {
|
|
52
|
+
const setNavFromPreferences = async () => {
|
|
53
|
+
const preferredState = await getNavPreference(getPreference);
|
|
54
|
+
setNavOpen(preferredState);
|
|
55
|
+
};
|
|
56
|
+
void setNavFromPreferences();
|
|
57
|
+
}
|
|
58
|
+
}, [largeBreak, getPreference, setNavOpen]);
|
|
59
|
+
// TODO: on smaller screens where the nav is a modal
|
|
60
|
+
// close the nav when the user navigates away
|
|
61
|
+
// on open and close, lock the body scroll
|
|
62
|
+
// do not do this on desktop, the sidebar is not a modal
|
|
80
63
|
useEffect(() => {
|
|
81
64
|
if (navRef.current) {
|
|
82
65
|
if (navOpen && midBreak) {
|
|
@@ -85,39 +68,26 @@ export const NavProvider = t0 => {
|
|
|
85
68
|
enableBodyScroll(navRef.current);
|
|
86
69
|
}
|
|
87
70
|
}
|
|
88
|
-
},
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
71
|
+
}, [navOpen, midBreak]);
|
|
72
|
+
// on smaller screens where the nav is a modal
|
|
73
|
+
// close the nav when the user resizes down to mobile
|
|
74
|
+
// the sidebar is a modal on mobile
|
|
75
|
+
useEffect(() => {
|
|
76
|
+
if (largeBreak === true || midBreak === true || smallBreak === true) {
|
|
77
|
+
setNavOpen(false);
|
|
78
|
+
}
|
|
79
|
+
setHydrated(true);
|
|
80
|
+
setTimeout(() => {
|
|
81
|
+
setShouldAnimate(true);
|
|
82
|
+
}, 100);
|
|
83
|
+
}, [largeBreak, midBreak, smallBreak]);
|
|
84
|
+
// when the component unmounts, clear all body scroll locks
|
|
85
|
+
useEffect(() => {
|
|
86
|
+
return () => {
|
|
87
|
+
clearAllBodyScrollLocks();
|
|
100
88
|
};
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
$[8] = midBreak;
|
|
104
|
-
$[9] = smallBreak;
|
|
105
|
-
$[10] = t5;
|
|
106
|
-
$[11] = t6;
|
|
107
|
-
} else {
|
|
108
|
-
t5 = $[10];
|
|
109
|
-
t6 = $[11];
|
|
110
|
-
}
|
|
111
|
-
useEffect(t5, t6);
|
|
112
|
-
let t7;
|
|
113
|
-
if ($[12] === Symbol.for("react.memo_cache_sentinel")) {
|
|
114
|
-
t7 = [];
|
|
115
|
-
$[12] = t7;
|
|
116
|
-
} else {
|
|
117
|
-
t7 = $[12];
|
|
118
|
-
}
|
|
119
|
-
useEffect(_temp2, t7);
|
|
120
|
-
return _jsx(NavContext.Provider, {
|
|
89
|
+
}, []);
|
|
90
|
+
return /*#__PURE__*/_jsx(NavContext.Provider, {
|
|
121
91
|
value: {
|
|
122
92
|
hydrated,
|
|
123
93
|
navOpen,
|
|
@@ -125,13 +95,7 @@ export const NavProvider = t0 => {
|
|
|
125
95
|
setNavOpen,
|
|
126
96
|
shouldAnimate
|
|
127
97
|
},
|
|
128
|
-
children
|
|
98
|
+
children: children
|
|
129
99
|
});
|
|
130
100
|
};
|
|
131
|
-
function _temp() {
|
|
132
|
-
clearAllBodyScrollLocks();
|
|
133
|
-
}
|
|
134
|
-
function _temp2() {
|
|
135
|
-
return _temp;
|
|
136
|
-
}
|
|
137
101
|
//# sourceMappingURL=context.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.js","names":["
|
|
1
|
+
{"version":3,"file":"context.js","names":["useWindowInfo","clearAllBodyScrollLocks","disableBodyScroll","enableBodyScroll","React","useEffect","useRef","usePreferences","NavContext","createContext","hydrated","navOpen","navRef","setNavOpen","shouldAnimate","useNav","useContext","getNavPreference","getPreference","navPrefs","preferredState","open","NavProvider","children","initialIsOpen","breakpoints","l","largeBreak","m","midBreak","s","smallBreak","useState","setShouldAnimate","setHydrated","setNavFromPreferences","current","setTimeout","_jsx","Provider","value"],"sources":["../../../src/elements/Nav/context.tsx"],"sourcesContent":["'use client'\nimport { useWindowInfo } from '@faceless-ui/window-info'\nimport { clearAllBodyScrollLocks, disableBodyScroll, enableBodyScroll } from 'body-scroll-lock'\nimport React, { useEffect, useRef } from 'react'\n\nimport { usePreferences } from '../../providers/Preferences/index.js'\n\ntype NavContextType = {\n hydrated: boolean\n navOpen: boolean\n navRef: React.RefObject<HTMLDivElement | null>\n setNavOpen: (value: boolean) => void\n shouldAnimate: boolean\n}\n\nexport const NavContext = React.createContext<NavContextType>({\n hydrated: false,\n navOpen: true,\n navRef: null,\n setNavOpen: () => {},\n shouldAnimate: false,\n})\n\nexport const useNav = () => React.useContext(NavContext)\n\nconst getNavPreference = async (getPreference): Promise<boolean> => {\n const navPrefs = await getPreference('nav')\n const preferredState = navPrefs?.open\n if (typeof preferredState === 'boolean') {\n return preferredState\n } else {\n return true\n }\n}\n\nexport const NavProvider: React.FC<{\n children: React.ReactNode\n initialIsOpen?: boolean\n}> = ({ children, initialIsOpen }) => {\n const {\n breakpoints: { l: largeBreak, m: midBreak, s: smallBreak },\n } = useWindowInfo()\n\n const { getPreference } = usePreferences()\n const navRef = useRef(null)\n\n // initialize the nav to be closed\n // this is because getting the preference is async\n // so instead of closing it after the preference is loaded\n // we will open it after the preference is loaded\n const [navOpen, setNavOpen] = React.useState(initialIsOpen)\n\n const [shouldAnimate, setShouldAnimate] = React.useState(false)\n const [hydrated, setHydrated] = React.useState(false)\n\n // on load check the user's preference and set \"initial\" state\n useEffect(() => {\n if (largeBreak === false) {\n const setNavFromPreferences = async () => {\n const preferredState = await getNavPreference(getPreference)\n setNavOpen(preferredState)\n }\n\n void setNavFromPreferences()\n }\n }, [largeBreak, getPreference, setNavOpen])\n\n // TODO: on smaller screens where the nav is a modal\n // close the nav when the user navigates away\n\n // on open and close, lock the body scroll\n // do not do this on desktop, the sidebar is not a modal\n useEffect(() => {\n if (navRef.current) {\n if (navOpen && midBreak) {\n disableBodyScroll(navRef.current)\n } else {\n enableBodyScroll(navRef.current)\n }\n }\n }, [navOpen, midBreak])\n\n // on smaller screens where the nav is a modal\n // close the nav when the user resizes down to mobile\n // the sidebar is a modal on mobile\n useEffect(() => {\n if (largeBreak === true || midBreak === true || smallBreak === true) {\n setNavOpen(false)\n }\n setHydrated(true)\n\n setTimeout(() => {\n setShouldAnimate(true)\n }, 100)\n }, [largeBreak, midBreak, smallBreak])\n\n // when the component unmounts, clear all body scroll locks\n useEffect(() => {\n return () => {\n clearAllBodyScrollLocks()\n }\n }, [])\n\n return (\n <NavContext.Provider value={{ hydrated, navOpen, navRef, setNavOpen, shouldAnimate }}>\n {children}\n </NavContext.Provider>\n )\n}\n"],"mappings":"AAAA;;;AACA,SAASA,aAAa,QAAQ;AAC9B,SAASC,uBAAuB,EAAEC,iBAAiB,EAAEC,gBAAgB,QAAQ;AAC7E,OAAOC,KAAA,IAASC,SAAS,EAAEC,MAAM,QAAQ;AAEzC,SAASC,cAAc,QAAQ;AAU/B,OAAO,MAAMC,UAAA,gBAAaJ,KAAA,CAAMK,aAAa,CAAiB;EAC5DC,QAAA,EAAU;EACVC,OAAA,EAAS;EACTC,MAAA,EAAQ;EACRC,UAAA,EAAYA,CAAA,MAAO;EACnBC,aAAA,EAAe;AACjB;AAEA,OAAO,MAAMC,MAAA,GAASA,CAAA;EAAA,OAAMX,KAAA,CAAAY,UAAA,CAAAR,UAAiB;AAAA;AAE7C,MAAMS,gBAAA,GAAmB,MAAOC,aAAA;EAC9B,MAAMC,QAAA,GAAW,MAAMD,aAAA,CAAc;EACrC,MAAME,cAAA,GAAiBD,QAAA,EAAUE,IAAA;EACjC,IAAI,OAAOD,cAAA,KAAmB,WAAW;IACvC,OAAOA,cAAA;EACT,OAAO;IACL,OAAO;EACT;AACF;AAEA,OAAO,MAAME,WAAA,GAGRA,CAAC;EAAEC,QAAQ;EAAEC;AAAa,CAAE;EAC/B,MAAM;IACJC,WAAA,EAAa;MAAEC,CAAA,EAAGC,UAAU;MAAEC,CAAA,EAAGC,QAAQ;MAAEC,CAAA,EAAGC;IAAU;EAAE,CAC3D,GAAG/B,aAAA;EAEJ,MAAM;IAAEkB;EAAa,CAAE,GAAGX,cAAA;EAC1B,MAAMK,MAAA,GAASN,MAAA,CAAO;EAEtB;EACA;EACA;EACA;EACA,MAAM,CAACK,OAAA,EAASE,UAAA,CAAW,GAAGT,KAAA,CAAM4B,QAAQ,CAACR,aAAA;EAE7C,MAAM,CAACV,aAAA,EAAemB,gBAAA,CAAiB,GAAG7B,KAAA,CAAM4B,QAAQ,CAAC;EACzD,MAAM,CAACtB,QAAA,EAAUwB,WAAA,CAAY,GAAG9B,KAAA,CAAM4B,QAAQ,CAAC;EAE/C;EACA3B,SAAA,CAAU;IACR,IAAIsB,UAAA,KAAe,OAAO;MACxB,MAAMQ,qBAAA,GAAwB,MAAAA,CAAA;QAC5B,MAAMf,cAAA,GAAiB,MAAMH,gBAAA,CAAiBC,aAAA;QAC9CL,UAAA,CAAWO,cAAA;MACb;MAEA,KAAKe,qBAAA;IACP;EACF,GAAG,CAACR,UAAA,EAAYT,aAAA,EAAeL,UAAA,CAAW;EAE1C;EACA;EAEA;EACA;EACAR,SAAA,CAAU;IACR,IAAIO,MAAA,CAAOwB,OAAO,EAAE;MAClB,IAAIzB,OAAA,IAAWkB,QAAA,EAAU;QACvB3B,iBAAA,CAAkBU,MAAA,CAAOwB,OAAO;MAClC,OAAO;QACLjC,gBAAA,CAAiBS,MAAA,CAAOwB,OAAO;MACjC;IACF;EACF,GAAG,CAACzB,OAAA,EAASkB,QAAA,CAAS;EAEtB;EACA;EACA;EACAxB,SAAA,CAAU;IACR,IAAIsB,UAAA,KAAe,QAAQE,QAAA,KAAa,QAAQE,UAAA,KAAe,MAAM;MACnElB,UAAA,CAAW;IACb;IACAqB,WAAA,CAAY;IAEZG,UAAA,CAAW;MACTJ,gBAAA,CAAiB;IACnB,GAAG;EACL,GAAG,CAACN,UAAA,EAAYE,QAAA,EAAUE,UAAA,CAAW;EAErC;EACA1B,SAAA,CAAU;IACR,OAAO;MACLJ,uBAAA;IACF;EACF,GAAG,EAAE;EAEL,oBACEqC,IAAA,CAAC9B,UAAA,CAAW+B,QAAQ;IAACC,KAAA,EAAO;MAAE9B,QAAA;MAAUC,OAAA;MAASC,MAAA;MAAQC,UAAA;MAAYC;IAAc;cAChFS;;AAGP","ignoreList":[]}
|