@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.
Files changed (64) hide show
  1. package/dist/elements/AddNewRelation/index.d.ts.map +1 -1
  2. package/dist/elements/AddNewRelation/index.js +1 -1
  3. package/dist/elements/AddNewRelation/index.js.map +1 -1
  4. package/dist/elements/AddNewRelation/index.scss +14 -4
  5. package/dist/elements/AppHeader/index.js +41 -80
  6. package/dist/elements/AppHeader/index.js.map +1 -1
  7. package/dist/elements/Autosave/index.js +148 -231
  8. package/dist/elements/Autosave/index.js.map +1 -1
  9. package/dist/elements/Button/index.js +86 -218
  10. package/dist/elements/Button/index.js.map +1 -1
  11. package/dist/elements/Collapsible/index.js +44 -62
  12. package/dist/elements/Collapsible/index.js.map +1 -1
  13. package/dist/elements/Collapsible/index.scss +15 -28
  14. package/dist/elements/CopyToClipboard/index.js +20 -54
  15. package/dist/elements/CopyToClipboard/index.js.map +1 -1
  16. package/dist/elements/Dropzone/index.js +59 -119
  17. package/dist/elements/Dropzone/index.js.map +1 -1
  18. package/dist/elements/EditMany/index.js +124 -230
  19. package/dist/elements/EditMany/index.js.map +1 -1
  20. package/dist/elements/EditUpload/index.js +133 -206
  21. package/dist/elements/EditUpload/index.js.map +1 -1
  22. package/dist/elements/ListControls/index.js +82 -188
  23. package/dist/elements/ListControls/index.js.map +1 -1
  24. package/dist/elements/Nav/context.js +47 -83
  25. package/dist/elements/Nav/context.js.map +1 -1
  26. package/dist/elements/SaveButton/index.js +30 -81
  27. package/dist/elements/SaveButton/index.js.map +1 -1
  28. package/dist/elements/SaveDraftButton/index.js +54 -116
  29. package/dist/elements/SaveDraftButton/index.js.map +1 -1
  30. package/dist/elements/SearchFilter/index.js +21 -77
  31. package/dist/elements/SearchFilter/index.js.map +1 -1
  32. package/dist/elements/Upload/index.js +130 -280
  33. package/dist/elements/Upload/index.js.map +1 -1
  34. package/dist/exports/client/{CodeEditor-C4FLUUO7.js → CodeEditor-MTP455NO.js} +2 -2
  35. package/dist/exports/client/chunk-NJHSEGFB.js +14 -0
  36. package/dist/exports/client/{chunk-UGBVRIVY.js.map → chunk-NJHSEGFB.js.map} +2 -2
  37. package/dist/exports/client/index.d.ts +1 -1
  38. package/dist/exports/client/index.d.ts.map +1 -1
  39. package/dist/exports/client/index.js +19 -19
  40. package/dist/exports/client/index.js.map +3 -3
  41. package/dist/fields/Relationship/index.js +318 -504
  42. package/dist/fields/Relationship/index.js.map +1 -1
  43. package/dist/fields/Upload/HasMany/index.d.ts.map +1 -1
  44. package/dist/fields/Upload/HasMany/index.js +192 -422
  45. package/dist/fields/Upload/HasMany/index.js.map +1 -1
  46. package/dist/fields/Upload/HasMany/index.scss +19 -1
  47. package/dist/forms/Submit/index.js +12 -28
  48. package/dist/forms/Submit/index.js.map +1 -1
  49. package/dist/hooks/useDelay.js +15 -48
  50. package/dist/hooks/useDelay.js.map +1 -1
  51. package/dist/hooks/useDelayedRender.js +32 -71
  52. package/dist/hooks/useDelayedRender.js.map +1 -1
  53. package/dist/hooks/useIntersect.js +14 -20
  54. package/dist/hooks/useIntersect.js.map +1 -1
  55. package/dist/providers/Preferences/index.js +1 -3
  56. package/dist/providers/Preferences/index.js.map +1 -1
  57. package/dist/providers/Selection/index.js +102 -190
  58. package/dist/providers/Selection/index.js.map +1 -1
  59. package/dist/scss/app.scss +6 -6
  60. package/dist/scss/type.scss +4 -4
  61. package/dist/styles.css +1 -1
  62. package/package.json +8 -8
  63. package/dist/exports/client/chunk-UGBVRIVY.js +0 -14
  64. /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: t0,
39
- enableSort: t1,
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: t2
58
+ breakpoints: {
59
+ s: smallBreak
60
+ }
63
61
  } = useWindowInfo();
64
- const {
65
- s: smallBreak
66
- } = t2;
67
- const [search, setSearch] = useState(typeof searchParams?.search === "string" ? searchParams?.search : "");
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 ? "where" : undefined);
94
- let t5;
95
- if ($[6] !== searchParams) {
96
- t5 = () => {
97
- if (hasWhereParam.current && !searchParams?.where) {
98
- setVisibleDrawer(undefined);
99
- hasWhereParam.current = false;
100
- } else {
101
- if (searchParams?.where) {
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 = "label" in field && field.label ? field.label : "name" in field ? field.name : null;
82
+ const label = 'label' in field && field.label ? field.label : 'name' in field ? field.name : null;
136
83
  if (i === 0) {
137
- return `${t("general:searchBy", {
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("general:or")} ${getTranslation(label, i18n)}`;
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("general:searchBy", {
94
+ searchLabelTranslated.current = t('general:searchBy', {
148
95
  label: getTranslation(searchLabel, i18n)
149
96
  });
150
97
  }
151
- }, t8);
152
- let t9;
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: "name" in titleField ? titleField?.name : null,
243
- handleChange: t9,
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
- }), t10, _jsx(Pill, {
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 === "where",
268
- className: `${baseClass}__toggle-where ${visibleDrawer === "where" ? `${baseClass}__buttons-active` : ""}`,
269
- icon: _jsx(ChevronIcon, {}),
270
- onClick: t11,
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("general:filters")
273
- }), t12]
152
+ children: t('general:sort')
153
+ })]
274
154
  })
275
155
  })]
276
- }), t13, _jsx(AnimateHeight, {
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 === "where" ? "auto" : 0,
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
- }), t14]
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 = t0 => {
29
- const $ = _c(13);
27
+ export const NavProvider = ({
28
+ children,
29
+ initialIsOpen
30
+ }) => {
30
31
  const {
31
- children,
32
- initialIsOpen
33
- } = t0;
34
- const {
35
- breakpoints: t1
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
- let t2;
50
- let t3;
51
- if ($[0] !== largeBreak || $[1] !== getPreference) {
52
- t2 = () => {
53
- if (largeBreak === false) {
54
- const setNavFromPreferences = async () => {
55
- const preferredState = await getNavPreference(getPreference);
56
- setNavOpen(preferredState);
57
- };
58
- setNavFromPreferences();
59
- }
60
- };
61
- t3 = [largeBreak, getPreference, setNavOpen];
62
- $[0] = largeBreak;
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
- }, t4);
89
- let t5;
90
- let t6;
91
- if ($[7] !== largeBreak || $[8] !== midBreak || $[9] !== smallBreak) {
92
- t5 = () => {
93
- if (largeBreak === true || midBreak === true || smallBreak === true) {
94
- setNavOpen(false);
95
- }
96
- setHydrated(true);
97
- setTimeout(() => {
98
- setShouldAnimate(true);
99
- }, 100);
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
- t6 = [largeBreak, midBreak, smallBreak];
102
- $[7] = largeBreak;
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":["c","_c","useWindowInfo","clearAllBodyScrollLocks","disableBodyScroll","enableBodyScroll","React","useEffect","useRef","usePreferences","NavContext","createContext","hydrated","navOpen","navRef","setNavOpen","shouldAnimate","useNav","useContext","getNavPreference","getPreference","navPrefs","preferredState","open","NavProvider","t0","$","children","initialIsOpen","breakpoints","t1","l","largeBreak","m","midBreak","s","smallBreak","useState","setShouldAnimate","setHydrated","t2","t3","setNavFromPreferences","t4","current","t5","t6","setTimeout","t7","Symbol","for","_temp2","_jsx","Provider","value","_temp"],"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":"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","ignoreList":[]}
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":[]}