@payloadcms/ui 3.69.0-internal.2883df2 → 3.69.0

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 (216) hide show
  1. package/dist/elements/AddNewRelation/index.js +1 -1
  2. package/dist/elements/AddNewRelation/index.js.map +1 -1
  3. package/dist/elements/AppHeader/index.d.ts.map +1 -1
  4. package/dist/elements/AppHeader/index.js +2 -1
  5. package/dist/elements/AppHeader/index.js.map +1 -1
  6. package/dist/elements/AppHeader/index.scss +0 -1
  7. package/dist/elements/Autosave/index.d.ts.map +1 -1
  8. package/dist/elements/Autosave/index.js +20 -5
  9. package/dist/elements/Autosave/index.js.map +1 -1
  10. package/dist/elements/BulkUpload/FormsManager/index.d.ts.map +1 -1
  11. package/dist/elements/BulkUpload/FormsManager/index.js +10 -6
  12. package/dist/elements/BulkUpload/FormsManager/index.js.map +1 -1
  13. package/dist/elements/CopyLocaleData/index.d.ts.map +1 -1
  14. package/dist/elements/CopyLocaleData/index.js +36 -39
  15. package/dist/elements/CopyLocaleData/index.js.map +1 -1
  16. package/dist/elements/DefaultListViewTabs/index.d.ts.map +1 -1
  17. package/dist/elements/DefaultListViewTabs/index.js +1 -2
  18. package/dist/elements/DefaultListViewTabs/index.js.map +1 -1
  19. package/dist/elements/DeleteDocument/index.d.ts.map +1 -1
  20. package/dist/elements/DeleteDocument/index.js +8 -5
  21. package/dist/elements/DeleteDocument/index.js.map +1 -1
  22. package/dist/elements/DeleteMany/index.d.ts.map +1 -1
  23. package/dist/elements/DeleteMany/index.js +19 -16
  24. package/dist/elements/DeleteMany/index.js.map +1 -1
  25. package/dist/elements/DocumentControls/index.d.ts.map +1 -1
  26. package/dist/elements/DocumentControls/index.js.map +1 -1
  27. package/dist/elements/DuplicateDocument/index.d.ts.map +1 -1
  28. package/dist/elements/DuplicateDocument/index.js +6 -3
  29. package/dist/elements/DuplicateDocument/index.js.map +1 -1
  30. package/dist/elements/EditMany/DrawerContent.d.ts.map +1 -1
  31. package/dist/elements/EditMany/DrawerContent.js +14 -6
  32. package/dist/elements/EditMany/DrawerContent.js.map +1 -1
  33. package/dist/elements/FolderView/Cell/index.client.d.ts.map +1 -1
  34. package/dist/elements/FolderView/Cell/index.client.js +9 -2
  35. package/dist/elements/FolderView/Cell/index.client.js.map +1 -1
  36. package/dist/elements/FolderView/CurrentFolderActions/index.d.ts.map +1 -1
  37. package/dist/elements/FolderView/CurrentFolderActions/index.js +7 -4
  38. package/dist/elements/FolderView/CurrentFolderActions/index.js.map +1 -1
  39. package/dist/elements/FolderView/MoveDocToFolder/index.d.ts +1 -1
  40. package/dist/elements/FolderView/MoveDocToFolder/index.d.ts.map +1 -1
  41. package/dist/elements/FolderView/MoveDocToFolder/index.js +5 -1
  42. package/dist/elements/FolderView/MoveDocToFolder/index.js.map +1 -1
  43. package/dist/elements/ItemsDrawer/ItemSearch/index.d.ts +8 -0
  44. package/dist/elements/ItemsDrawer/ItemSearch/index.d.ts.map +1 -0
  45. package/dist/elements/ItemsDrawer/ItemSearch/index.js +56 -0
  46. package/dist/elements/ItemsDrawer/ItemSearch/index.js.map +1 -0
  47. package/dist/elements/ItemsDrawer/ItemSearch/index.scss +38 -0
  48. package/dist/elements/ItemsDrawer/index.d.ts +15 -0
  49. package/dist/elements/ItemsDrawer/index.d.ts.map +1 -0
  50. package/dist/elements/ItemsDrawer/index.js +195 -0
  51. package/dist/elements/ItemsDrawer/index.js.map +1 -0
  52. package/dist/elements/ItemsDrawer/index.scss +102 -0
  53. package/dist/elements/Link/index.d.ts.map +1 -1
  54. package/dist/elements/Link/index.js +5 -3
  55. package/dist/elements/Link/index.js.map +1 -1
  56. package/dist/elements/ListControls/index.d.ts.map +1 -1
  57. package/dist/elements/ListControls/index.js +6 -4
  58. package/dist/elements/ListControls/index.js.map +1 -1
  59. package/dist/elements/ListHeader/TitleActions/ListEmptyTrashButton.d.ts.map +1 -1
  60. package/dist/elements/ListHeader/TitleActions/ListEmptyTrashButton.js +9 -2
  61. package/dist/elements/ListHeader/TitleActions/ListEmptyTrashButton.js.map +1 -1
  62. package/dist/elements/PermanentlyDeleteButton/index.d.ts.map +1 -1
  63. package/dist/elements/PermanentlyDeleteButton/index.js +21 -15
  64. package/dist/elements/PermanentlyDeleteButton/index.js.map +1 -1
  65. package/dist/elements/Popup/PopupButtonList/index.scss +1 -0
  66. package/dist/elements/Popup/PopupTrigger/index.d.ts +1 -1
  67. package/dist/elements/Popup/PopupTrigger/index.d.ts.map +1 -1
  68. package/dist/elements/Popup/PopupTrigger/index.js +24 -92
  69. package/dist/elements/Popup/PopupTrigger/index.js.map +1 -1
  70. package/dist/elements/Popup/index.d.ts +32 -1
  71. package/dist/elements/Popup/index.d.ts.map +1 -1
  72. package/dist/elements/Popup/index.js +249 -122
  73. package/dist/elements/Popup/index.js.map +1 -1
  74. package/dist/elements/Popup/index.scss +49 -231
  75. package/dist/elements/PublishButton/ScheduleDrawer/index.d.ts.map +1 -1
  76. package/dist/elements/PublishButton/ScheduleDrawer/index.js +6 -2
  77. package/dist/elements/PublishButton/ScheduleDrawer/index.js.map +1 -1
  78. package/dist/elements/PublishButton/index.d.ts.map +1 -1
  79. package/dist/elements/PublishButton/index.js +17 -5
  80. package/dist/elements/PublishButton/index.js.map +1 -1
  81. package/dist/elements/PublishMany/DrawerContent.d.ts.map +1 -1
  82. package/dist/elements/PublishMany/DrawerContent.js +8 -5
  83. package/dist/elements/PublishMany/DrawerContent.js.map +1 -1
  84. package/dist/elements/QueryPresets/QueryPresetBar/index.d.ts.map +1 -1
  85. package/dist/elements/QueryPresets/QueryPresetBar/index.js +11 -4
  86. package/dist/elements/QueryPresets/QueryPresetBar/index.js.map +1 -1
  87. package/dist/elements/RestoreButton/index.d.ts.map +1 -1
  88. package/dist/elements/RestoreButton/index.js +21 -15
  89. package/dist/elements/RestoreButton/index.js.map +1 -1
  90. package/dist/elements/RestoreMany/index.d.ts.map +1 -1
  91. package/dist/elements/RestoreMany/index.js +17 -14
  92. package/dist/elements/RestoreMany/index.js.map +1 -1
  93. package/dist/elements/SaveDraftButton/index.d.ts.map +1 -1
  94. package/dist/elements/SaveDraftButton/index.js +11 -5
  95. package/dist/elements/SaveDraftButton/index.js.map +1 -1
  96. package/dist/elements/Status/index.d.ts.map +1 -1
  97. package/dist/elements/Status/index.js +11 -5
  98. package/dist/elements/Status/index.js.map +1 -1
  99. package/dist/elements/StepNav/context.d.ts.map +1 -1
  100. package/dist/elements/StepNav/context.js +9 -1
  101. package/dist/elements/StepNav/context.js.map +1 -1
  102. package/dist/elements/StepNav/index.scss +0 -1
  103. package/dist/elements/Table/DefaultCell/fields/Relationship/index.d.ts.map +1 -1
  104. package/dist/elements/Table/DefaultCell/fields/Relationship/index.js +39 -41
  105. package/dist/elements/Table/DefaultCell/fields/Relationship/index.js.map +1 -1
  106. package/dist/elements/Table/OrderableTable.d.ts.map +1 -1
  107. package/dist/elements/Table/OrderableTable.js +5 -1
  108. package/dist/elements/Table/OrderableTable.js.map +1 -1
  109. package/dist/elements/Table/RelationshipProvider/index.d.ts.map +1 -1
  110. package/dist/elements/Table/RelationshipProvider/index.js +25 -24
  111. package/dist/elements/Table/RelationshipProvider/index.js.map +1 -1
  112. package/dist/elements/UnpublishMany/DrawerContent.d.ts.map +1 -1
  113. package/dist/elements/UnpublishMany/DrawerContent.js +8 -5
  114. package/dist/elements/UnpublishMany/DrawerContent.js.map +1 -1
  115. package/dist/elements/Upload/index.d.ts.map +1 -1
  116. package/dist/elements/Upload/index.js +7 -5
  117. package/dist/elements/Upload/index.js.map +1 -1
  118. package/dist/elements/WhereBuilder/Condition/Relationship/index.d.ts.map +1 -1
  119. package/dist/elements/WhereBuilder/Condition/Relationship/index.js +14 -8
  120. package/dist/elements/WhereBuilder/Condition/Relationship/index.js.map +1 -1
  121. package/dist/exports/client/index.d.ts +1 -0
  122. package/dist/exports/client/index.d.ts.map +1 -1
  123. package/dist/exports/client/index.js +24 -24
  124. package/dist/exports/client/index.js.map +4 -4
  125. package/dist/exports/rsc/index.d.ts +1 -0
  126. package/dist/exports/rsc/index.d.ts.map +1 -1
  127. package/dist/exports/rsc/index.js +1 -0
  128. package/dist/exports/rsc/index.js.map +1 -1
  129. package/dist/exports/shared/index.d.ts +3 -0
  130. package/dist/exports/shared/index.d.ts.map +1 -1
  131. package/dist/exports/shared/index.js +2 -2
  132. package/dist/exports/shared/index.js.map +4 -4
  133. package/dist/fields/Relationship/Input.d.ts.map +1 -1
  134. package/dist/fields/Relationship/Input.js +12 -5
  135. package/dist/fields/Relationship/Input.js.map +1 -1
  136. package/dist/fields/Upload/Input.d.ts.map +1 -1
  137. package/dist/fields/Upload/Input.js +7 -3
  138. package/dist/fields/Upload/Input.js.map +1 -1
  139. package/dist/forms/fieldSchemasToFormState/fieldSchemasToFormState.spec.js +8 -1
  140. package/dist/forms/fieldSchemasToFormState/fieldSchemasToFormState.spec.js.map +1 -1
  141. package/dist/forms/fieldSchemasToFormState/serverFunctions/renderFieldServerFn.d.ts.map +1 -1
  142. package/dist/forms/fieldSchemasToFormState/serverFunctions/renderFieldServerFn.js +2 -2
  143. package/dist/forms/fieldSchemasToFormState/serverFunctions/renderFieldServerFn.js.map +1 -1
  144. package/dist/providers/Auth/index.d.ts.map +1 -1
  145. package/dist/providers/Auth/index.js +31 -13
  146. package/dist/providers/Auth/index.js.map +1 -1
  147. package/dist/providers/DocumentInfo/index.d.ts +1 -1
  148. package/dist/providers/DocumentInfo/index.d.ts.map +1 -1
  149. package/dist/providers/DocumentInfo/index.js +16 -15
  150. package/dist/providers/DocumentInfo/index.js.map +1 -1
  151. package/dist/providers/DocumentInfo/useGetDocPermissions.d.ts +1 -2
  152. package/dist/providers/DocumentInfo/useGetDocPermissions.d.ts.map +1 -1
  153. package/dist/providers/DocumentInfo/useGetDocPermissions.js +16 -6
  154. package/dist/providers/DocumentInfo/useGetDocPermissions.js.map +1 -1
  155. package/dist/providers/Folders/index.d.ts.map +1 -1
  156. package/dist/providers/Folders/index.js +12 -8
  157. package/dist/providers/Folders/index.js.map +1 -1
  158. package/dist/providers/Locale/index.d.ts.map +1 -1
  159. package/dist/providers/Locale/index.js +45 -34
  160. package/dist/providers/Locale/index.js.map +1 -1
  161. package/dist/providers/Preferences/index.d.ts.map +1 -1
  162. package/dist/providers/Preferences/index.js +16 -7
  163. package/dist/providers/Preferences/index.js.map +1 -1
  164. package/dist/providers/RouteTransition/index.d.ts.map +1 -1
  165. package/dist/providers/RouteTransition/index.js +6 -1
  166. package/dist/providers/RouteTransition/index.js.map +1 -1
  167. package/dist/scss/app.scss +14 -1
  168. package/dist/styles.css +1 -1
  169. package/dist/utilities/buildFormState.js +2 -2
  170. package/dist/utilities/buildFormState.js.map +1 -1
  171. package/dist/utilities/getGlobalData.d.ts +11 -0
  172. package/dist/utilities/getGlobalData.d.ts.map +1 -0
  173. package/dist/utilities/getGlobalData.js +49 -0
  174. package/dist/utilities/getGlobalData.js.map +1 -0
  175. package/dist/utilities/getNavGroups.d.ts +5 -0
  176. package/dist/utilities/getNavGroups.d.ts.map +1 -0
  177. package/dist/utilities/getNavGroups.js +22 -0
  178. package/dist/utilities/getNavGroups.js.map +1 -0
  179. package/dist/utilities/getVisibleEntities.d.ts +5 -0
  180. package/dist/utilities/getVisibleEntities.d.ts.map +1 -0
  181. package/dist/utilities/getVisibleEntities.js +31 -0
  182. package/dist/utilities/getVisibleEntities.js.map +1 -0
  183. package/dist/utilities/groupNavItems.d.ts +3 -0
  184. package/dist/utilities/groupNavItems.d.ts.map +1 -1
  185. package/dist/utilities/groupNavItems.js +3 -0
  186. package/dist/utilities/groupNavItems.js.map +1 -1
  187. package/dist/utilities/handleBackToDashboard.d.ts +2 -1
  188. package/dist/utilities/handleBackToDashboard.d.ts.map +1 -1
  189. package/dist/utilities/handleBackToDashboard.js +4 -2
  190. package/dist/utilities/handleBackToDashboard.js.map +1 -1
  191. package/dist/utilities/handleGoBack.d.ts +2 -1
  192. package/dist/utilities/handleGoBack.d.ts.map +1 -1
  193. package/dist/utilities/handleGoBack.js +2 -1
  194. package/dist/utilities/handleGoBack.js.map +1 -1
  195. package/dist/utilities/normalizeRelationshipValue.spec.js +1 -1
  196. package/dist/utilities/normalizeRelationshipValue.spec.js.map +1 -1
  197. package/dist/views/CollectionFolder/index.js +1 -1
  198. package/dist/views/CollectionFolder/index.js.map +1 -1
  199. package/dist/views/Edit/Auth/index.d.ts.map +1 -1
  200. package/dist/views/Edit/Auth/index.js +22 -21
  201. package/dist/views/Edit/Auth/index.js.map +1 -1
  202. package/dist/views/Edit/SetDocumentStepNav/index.d.ts.map +1 -1
  203. package/dist/views/Edit/SetDocumentStepNav/index.js +26 -6
  204. package/dist/views/Edit/SetDocumentStepNav/index.js.map +1 -1
  205. package/dist/views/Edit/index.d.ts.map +1 -1
  206. package/dist/views/Edit/index.js +7 -4
  207. package/dist/views/Edit/index.js.map +1 -1
  208. package/dist/views/List/index.d.ts.map +1 -1
  209. package/dist/views/List/index.js +3 -2
  210. package/dist/views/List/index.js.map +1 -1
  211. package/dist/widgets/CollectionCards/index.d.ts +5 -0
  212. package/dist/widgets/CollectionCards/index.d.ts.map +1 -0
  213. package/dist/widgets/CollectionCards/index.js +135 -0
  214. package/dist/widgets/CollectionCards/index.js.map +1 -0
  215. package/dist/widgets/CollectionCards/index.scss +70 -0
  216. package/package.json +5 -5
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/Preferences/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAA6D,MAAM,OAAO,CAAA;AAEjF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAA;AAQ5D,KAAK,kBAAkB,GAAG;IACxB,aAAa,EAAE,CAAC,CAAC,GAAG,WAAW,EAAE,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,CAAA;IAC3D;;;;OAIG;IACH,aAAa,EAAE,CAAC,CAAC,GAAG,WAAW,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CAC1F,CAAA;AAYD,eAAO,MAAM,mBAAmB,EAAE,KAAK,CAAC,EAAE,CAAC;IAAE,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,CAkIxE,CAAA;AAED,eAAO,MAAM,cAAc,QAAO,kBAAkC,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/Preferences/index.tsx"],"names":[],"mappings":"AAGA,OAAO,KAA6D,MAAM,OAAO,CAAA;AAEjF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAA;AAQ5D,KAAK,kBAAkB,GAAG;IACxB,aAAa,EAAE,CAAC,CAAC,GAAG,WAAW,EAAE,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,CAAA;IAC3D;;;;OAIG;IACH,aAAa,EAAE,CAAC,CAAC,GAAG,WAAW,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CAC1F,CAAA;AAYD,eAAO,MAAM,mBAAmB,EAAE,KAAK,CAAC,EAAE,CAAC;IAAE,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,CA6IxE,CAAA;AAED,eAAO,MAAM,cAAc,QAAO,kBAAkC,CAAA"}
@@ -2,6 +2,7 @@
2
2
 
3
3
  import { jsx as _jsx } from "react/jsx-runtime";
4
4
  import { dequal } from 'dequal/lite'; // lite: no need for Map and Set support
5
+ import { formatAdminURL } from 'payload/shared';
5
6
  import React, { createContext, use, useCallback, useEffect, useRef } from 'react';
6
7
  import { useTranslation } from '../../providers/Translation/index.js';
7
8
  import { requests } from '../../utilities/api.js';
@@ -36,8 +37,7 @@ export const PreferencesProvider = ({
36
37
  const {
37
38
  routes: {
38
39
  api
39
- },
40
- serverURL
40
+ }
41
41
  } = config;
42
42
  useEffect(() => {
43
43
  if (!user) {
@@ -52,7 +52,10 @@ export const PreferencesProvider = ({
52
52
  }
53
53
  const promise = new Promise(resolve => {
54
54
  void (async () => {
55
- const request = await requests.get(`${serverURL}${api}/payload-preferences/${key}`, {
55
+ const request = await requests.get(formatAdminURL({
56
+ apiRoute: api,
57
+ path: `/payload-preferences/${key}`
58
+ }), {
56
59
  credentials: 'include',
57
60
  headers: {
58
61
  'Accept-Language': i18n.language
@@ -69,11 +72,14 @@ export const PreferencesProvider = ({
69
72
  });
70
73
  prefs[key] = promise;
71
74
  return promise;
72
- }, [i18n.language, api, preferencesRef, serverURL]);
75
+ }, [i18n.language, api, preferencesRef]);
73
76
  const setPreference = useCallback(async (key_0, value_0, merge = false) => {
74
77
  if (merge === false) {
75
78
  preferencesRef.current[key_0] = value_0;
76
- await requests.post(`${serverURL}${api}/payload-preferences/${key_0}`, requestOptions(value_0, i18n.language));
79
+ await requests.post(formatAdminURL({
80
+ apiRoute: api,
81
+ path: `/payload-preferences/${key_0}`
82
+ }), requestOptions(value_0, i18n.language));
77
83
  return;
78
84
  }
79
85
  let newValue = value_0;
@@ -105,7 +111,10 @@ export const PreferencesProvider = ({
105
111
  }
106
112
  // preference set in context here to prevent other updatePreference at the same time
107
113
  preferencesRef.current[key_0] = pendingUpdate.current[key_0];
108
- await requests.post(`${serverURL}${api}/payload-preferences/${key_0}`, requestOptions(preferencesRef.current[key_0], i18n.language));
114
+ await requests.post(formatAdminURL({
115
+ apiRoute: api,
116
+ path: `/payload-preferences/${key_0}`
117
+ }), requestOptions(preferencesRef.current[key_0], i18n.language));
109
118
  // reset any changes for this key after sending the request
110
119
  delete pendingUpdate.current[key_0];
111
120
  };
@@ -113,7 +122,7 @@ export const PreferencesProvider = ({
113
122
  setTimeout(() => {
114
123
  void updatePreference();
115
124
  });
116
- }, [api, getPreference, i18n.language, pendingUpdate, serverURL]);
125
+ }, [api, getPreference, i18n.language, pendingUpdate]);
117
126
  contextRef.current.getPreference = getPreference;
118
127
  contextRef.current.setPreference = setPreference;
119
128
  return /*#__PURE__*/_jsx(Context, {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["dequal","React","createContext","use","useCallback","useEffect","useRef","useTranslation","requests","deepMergeSimple","useAuth","useConfig","Context","requestOptions","value","language","body","JSON","stringify","headers","PreferencesProvider","children","contextRef","preferencesRef","pendingUpdate","config","user","i18n","routes","api","serverURL","current","getPreference","key","prefs","promise","Promise","resolve","request","get","credentials","status","preference","json","setPreference","merge","post","newValue","currentPreference","updatePreference","setTimeout","_jsx","usePreferences"],"sources":["../../../src/providers/Preferences/index.tsx"],"sourcesContent":["'use client'\nimport { dequal } from 'dequal/lite' // lite: no need for Map and Set support\nimport React, { createContext, use, useCallback, useEffect, useRef } from 'react'\n\nimport type { Preferences } from '../../forms/Form/types.js'\n\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { requests } from '../../utilities/api.js'\nimport { deepMergeSimple } from '../../utilities/deepMerge.js'\nimport { useAuth } from '../Auth/index.js'\nimport { useConfig } from '../Config/index.js'\n\ntype PreferencesContext = {\n getPreference: <T = Preferences>(key: string) => Promise<T>\n /**\n * @param key - a string identifier for the property being set\n * @param value - preference data to store\n * @param merge - when true will combine the existing preference object batch the change into one request for objects, default = false\n */\n setPreference: <T = Preferences>(key: string, value: T, merge?: boolean) => Promise<void>\n}\n\nconst Context = createContext({} as PreferencesContext)\n\nconst requestOptions = (value, language) => ({\n body: JSON.stringify({ value }),\n headers: {\n 'Accept-Language': language,\n 'Content-Type': 'application/json',\n },\n})\n\nexport const PreferencesProvider: React.FC<{ children?: React.ReactNode }> = ({ children }) => {\n const contextRef = useRef({} as PreferencesContext)\n const preferencesRef = useRef({})\n const pendingUpdate = useRef({})\n const { config } = useConfig()\n const { user } = useAuth()\n const { i18n } = useTranslation()\n\n const {\n routes: { api },\n serverURL,\n } = config\n\n useEffect(() => {\n if (!user) {\n // clear preferences between users\n preferencesRef.current = {}\n }\n }, [user])\n\n const getPreference = useCallback(\n async <T = unknown,>(key: string): Promise<T> => {\n const prefs = preferencesRef.current\n\n if (typeof prefs[key] !== 'undefined') {\n return prefs[key]\n }\n\n const promise = new Promise((resolve: (value: T) => void) => {\n void (async () => {\n const request = await requests.get(`${serverURL}${api}/payload-preferences/${key}`, {\n credentials: 'include',\n headers: {\n 'Accept-Language': i18n.language,\n },\n })\n\n let value = null\n\n if (request.status === 200) {\n const preference = await request.json()\n value = preference.value\n }\n\n preferencesRef.current[key] = value\n\n resolve(value)\n })()\n })\n\n prefs[key] = promise\n\n return promise\n },\n [i18n.language, api, preferencesRef, serverURL],\n )\n\n const setPreference = useCallback(\n async (key: string, value: unknown, merge = false): Promise<void> => {\n if (merge === false) {\n preferencesRef.current[key] = value\n\n await requests.post(\n `${serverURL}${api}/payload-preferences/${key}`,\n requestOptions(value, i18n.language),\n )\n\n return\n }\n\n let newValue = value\n const currentPreference = await getPreference(key)\n\n // handle value objects where multiple values can be set under one key\n if (\n typeof value === 'object' &&\n typeof currentPreference === 'object' &&\n typeof newValue === 'object'\n ) {\n // merge the value with any existing preference for the key\n if (currentPreference) {\n newValue = deepMergeSimple(currentPreference, newValue)\n }\n\n if (dequal(newValue, currentPreference)) {\n return\n }\n\n // add the requested changes to a pendingUpdate batch for the key\n pendingUpdate.current[key] = {\n ...pendingUpdate.current[key],\n ...(newValue as Record<string, unknown>),\n }\n } else {\n if (newValue === currentPreference) {\n return\n }\n\n pendingUpdate.current[key] = newValue\n }\n\n const updatePreference = async () => {\n // compare the value stored in context before sending to eliminate duplicate requests\n if (dequal(pendingUpdate.current[key], preferencesRef.current[key])) {\n return\n }\n\n // preference set in context here to prevent other updatePreference at the same time\n preferencesRef.current[key] = pendingUpdate.current[key]\n\n await requests.post(\n `${serverURL}${api}/payload-preferences/${key}`,\n requestOptions(preferencesRef.current[key], i18n.language),\n )\n\n // reset any changes for this key after sending the request\n delete pendingUpdate.current[key]\n }\n\n // use timeout to allow multiple changes of different values using the same key in one request\n setTimeout(() => {\n void updatePreference()\n })\n },\n [api, getPreference, i18n.language, pendingUpdate, serverURL],\n )\n\n contextRef.current.getPreference = getPreference\n contextRef.current.setPreference = setPreference\n return <Context value={contextRef.current}>{children}</Context>\n}\n\nexport const usePreferences = (): PreferencesContext => use(Context)\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["dequal","formatAdminURL","React","createContext","use","useCallback","useEffect","useRef","useTranslation","requests","deepMergeSimple","useAuth","useConfig","Context","requestOptions","value","language","body","JSON","stringify","headers","PreferencesProvider","children","contextRef","preferencesRef","pendingUpdate","config","user","i18n","routes","api","current","getPreference","key","prefs","promise","Promise","resolve","request","get","apiRoute","path","credentials","status","preference","json","setPreference","merge","post","newValue","currentPreference","updatePreference","setTimeout","_jsx","usePreferences"],"sources":["../../../src/providers/Preferences/index.tsx"],"sourcesContent":["'use client'\nimport { dequal } from 'dequal/lite' // lite: no need for Map and Set support\nimport { formatAdminURL } from 'payload/shared'\nimport React, { createContext, use, useCallback, useEffect, useRef } from 'react'\n\nimport type { Preferences } from '../../forms/Form/types.js'\n\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { requests } from '../../utilities/api.js'\nimport { deepMergeSimple } from '../../utilities/deepMerge.js'\nimport { useAuth } from '../Auth/index.js'\nimport { useConfig } from '../Config/index.js'\n\ntype PreferencesContext = {\n getPreference: <T = Preferences>(key: string) => Promise<T>\n /**\n * @param key - a string identifier for the property being set\n * @param value - preference data to store\n * @param merge - when true will combine the existing preference object batch the change into one request for objects, default = false\n */\n setPreference: <T = Preferences>(key: string, value: T, merge?: boolean) => Promise<void>\n}\n\nconst Context = createContext({} as PreferencesContext)\n\nconst requestOptions = (value, language) => ({\n body: JSON.stringify({ value }),\n headers: {\n 'Accept-Language': language,\n 'Content-Type': 'application/json',\n },\n})\n\nexport const PreferencesProvider: React.FC<{ children?: React.ReactNode }> = ({ children }) => {\n const contextRef = useRef({} as PreferencesContext)\n const preferencesRef = useRef({})\n const pendingUpdate = useRef({})\n const { config } = useConfig()\n const { user } = useAuth()\n const { i18n } = useTranslation()\n\n const {\n routes: { api },\n } = config\n\n useEffect(() => {\n if (!user) {\n // clear preferences between users\n preferencesRef.current = {}\n }\n }, [user])\n\n const getPreference = useCallback(\n async <T = unknown,>(key: string): Promise<T> => {\n const prefs = preferencesRef.current\n\n if (typeof prefs[key] !== 'undefined') {\n return prefs[key]\n }\n\n const promise = new Promise((resolve: (value: T) => void) => {\n void (async () => {\n const request = await requests.get(\n formatAdminURL({\n apiRoute: api,\n path: `/payload-preferences/${key}`,\n }),\n {\n credentials: 'include',\n headers: {\n 'Accept-Language': i18n.language,\n },\n },\n )\n\n let value = null\n\n if (request.status === 200) {\n const preference = await request.json()\n value = preference.value\n }\n\n preferencesRef.current[key] = value\n\n resolve(value)\n })()\n })\n\n prefs[key] = promise\n\n return promise\n },\n [i18n.language, api, preferencesRef],\n )\n\n const setPreference = useCallback(\n async (key: string, value: unknown, merge = false): Promise<void> => {\n if (merge === false) {\n preferencesRef.current[key] = value\n\n await requests.post(\n formatAdminURL({\n apiRoute: api,\n path: `/payload-preferences/${key}`,\n }),\n requestOptions(value, i18n.language),\n )\n\n return\n }\n\n let newValue = value\n const currentPreference = await getPreference(key)\n\n // handle value objects where multiple values can be set under one key\n if (\n typeof value === 'object' &&\n typeof currentPreference === 'object' &&\n typeof newValue === 'object'\n ) {\n // merge the value with any existing preference for the key\n if (currentPreference) {\n newValue = deepMergeSimple(currentPreference, newValue)\n }\n\n if (dequal(newValue, currentPreference)) {\n return\n }\n\n // add the requested changes to a pendingUpdate batch for the key\n pendingUpdate.current[key] = {\n ...pendingUpdate.current[key],\n ...(newValue as Record<string, unknown>),\n }\n } else {\n if (newValue === currentPreference) {\n return\n }\n\n pendingUpdate.current[key] = newValue\n }\n\n const updatePreference = async () => {\n // compare the value stored in context before sending to eliminate duplicate requests\n if (dequal(pendingUpdate.current[key], preferencesRef.current[key])) {\n return\n }\n\n // preference set in context here to prevent other updatePreference at the same time\n preferencesRef.current[key] = pendingUpdate.current[key]\n\n await requests.post(\n formatAdminURL({\n apiRoute: api,\n path: `/payload-preferences/${key}`,\n }),\n requestOptions(preferencesRef.current[key], i18n.language),\n )\n\n // reset any changes for this key after sending the request\n delete pendingUpdate.current[key]\n }\n\n // use timeout to allow multiple changes of different values using the same key in one request\n setTimeout(() => {\n void updatePreference()\n })\n },\n [api, getPreference, i18n.language, pendingUpdate],\n )\n\n contextRef.current.getPreference = getPreference\n contextRef.current.setPreference = setPreference\n return <Context value={contextRef.current}>{children}</Context>\n}\n\nexport const usePreferences = (): PreferencesContext => use(Context)\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/RouteTransition/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAyE,MAAM,OAAO,CAAA;AAE7F;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,uBAAuB,EAAE,KAAK,CAAC,EAAE,CAAC,oBAAoB,CA6DlE,CAAA;AAED,KAAK,oBAAoB,GAAG;IAC1B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAC1B,CAAA;AAED,KAAK,oBAAoB,GAAG,CAAC,QAAQ,CAAC,EAAE,MAAM,IAAI,KAAK,IAAI,CAAA;AAE3D,KAAK,2BAA2B,GAAG;IACjC,eAAe,EAAE,OAAO,CAAA;IACxB,oBAAoB,EAAE,oBAAoB,CAAA;IAC1C,kBAAkB,EAAE,MAAM,CAAA;CAC3B,CAAA;AAQD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,kBAAkB,mCAA0C,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/RouteTransition/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAyE,MAAM,OAAO,CAAA;AAE7F;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,uBAAuB,EAAE,KAAK,CAAC,EAAE,CAAC,oBAAoB,CA6DlE,CAAA;AAED,KAAK,oBAAoB,GAAG;IAC1B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAC1B,CAAA;AAED,KAAK,oBAAoB,GAAG,CAAC,QAAQ,CAAC,EAAE,MAAM,IAAI,KAAK,IAAI,CAAA;AAE3D,KAAK,2BAA2B,GAAG;IACjC,eAAe,EAAE,OAAO,CAAA;IACxB,oBAAoB,EAAE,oBAAoB,CAAA;IAC1C,kBAAkB,EAAE,MAAM,CAAA;CAC3B,CAAA;AAaD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,kBAAkB,mCAA0C,CAAA"}
@@ -103,7 +103,12 @@ export const RouteTransitionProvider = t0 => {
103
103
  };
104
104
  const RouteTransitionContext = /*#__PURE__*/React.createContext({
105
105
  isTransitioning: false,
106
- startRouteTransition: () => undefined,
106
+ // Default implementation: just call the callback directly (no transition animation)
107
+ startRouteTransition: callback => {
108
+ if (typeof callback === 'function') {
109
+ callback();
110
+ }
111
+ },
107
112
  transitionProgress: 0
108
113
  });
109
114
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["c","_c","React","startTransition","useCallback","useEffect","useOptimistic","useRef","RouteTransitionProvider","t0","$","children","isTransitioning","setIsTransitioning","transitionProgress","setTransitionProgress","useState","transitionProgressRef","timerID","t1","Symbol","for","current","setInterval","newProgress","Math","random","pow","log","initiateProgress","t2","t3","clearInterval","t4","callback","startRouteTransition","t5","_jsx","RouteTransitionContext","value","createContext","undefined","useRouteTransition","use"],"sources":["../../../src/providers/RouteTransition/index.tsx"],"sourcesContent":["'use client'\nimport React, { startTransition, useCallback, useEffect, useOptimistic, useRef } from 'react'\n\n/**\n * Route transitions are useful in showing immediate visual feedback to the user when navigating between pages. This is especially useful on slow networks when navigating to data heavy or process intensive pages.\n * To use route transitions, place the `RouteTransitionProvider` at the root of your application, outside of the `ProgressBar` component.\n * To trigger a route transition, use the `Link` component from `@payloadcms/ui`,\n * or wrap a callback function with the `startRouteTransition` method.\n * To gain access to the `RouteTransitionContext`, call the `useRouteTransition` hook in your component.\n * @returns A context provider with methods and state for transitioning between routes, including `isTransitioning`, `startRouteTransition`, and `transitionProgress`.\n * @example\n * import { RouteTransitionProvider, ProgressBar, Link } from '@payloadcms/ui'\n * const App = () => (\n * <RouteTransitionProvider>\n * <ProgressBar />\n * <Link href=\"/somewhere\">Go Somewhere</Link>\n * </RouteTransitionProvider>\n * )\n */\nexport const RouteTransitionProvider: React.FC<RouteTransitionProps> = ({ children }) => {\n const [isTransitioning, setIsTransitioning] = useOptimistic(false)\n const [transitionProgress, setTransitionProgress] = React.useState<number>(0)\n\n const transitionProgressRef = useRef(transitionProgress)\n\n const timerID = useRef(null)\n\n const initiateProgress = useCallback(() => {\n timerID.current = setInterval(() => {\n // randomly update progress using an exponential curve\n // cap the progress to ensure it never fully reaches completion\n // accelerate quickly then decelerate slowly\n const maxProgress = 0.93\n const jumpFactor = 0.2 // lower to reduce jumps in progress\n const growthFactor = 0.75 // adjust to control acceleration\n const slowdownFactor = 0.75 // adjust to control deceleration\n\n const newProgress =\n transitionProgressRef.current +\n (maxProgress - transitionProgressRef.current) *\n Math.random() *\n jumpFactor *\n Math.pow(Math.log(1 + (1 - transitionProgressRef.current) * growthFactor), slowdownFactor)\n\n setTransitionProgress(newProgress)\n transitionProgressRef.current = newProgress\n }, 250) // every n ms, update progress\n }, [])\n\n useEffect(() => {\n setTransitionProgress(0)\n transitionProgressRef.current = 0\n\n if (isTransitioning) {\n initiateProgress()\n } else {\n if (timerID.current) {\n clearInterval(timerID.current)\n }\n }\n }, [isTransitioning, initiateProgress])\n\n const startRouteTransition: StartRouteTransition = useCallback(\n (callback?: () => void) => {\n startTransition(() => {\n setIsTransitioning(true)\n\n if (typeof callback === 'function') {\n callback()\n }\n })\n },\n [setIsTransitioning],\n )\n\n return (\n <RouteTransitionContext value={{ isTransitioning, startRouteTransition, transitionProgress }}>\n {children}\n </RouteTransitionContext>\n )\n}\n\ntype RouteTransitionProps = {\n children: React.ReactNode\n}\n\ntype StartRouteTransition = (callback?: () => void) => void\n\ntype RouteTransitionContextValue = {\n isTransitioning: boolean\n startRouteTransition: StartRouteTransition\n transitionProgress: number\n}\n\nconst RouteTransitionContext = React.createContext<RouteTransitionContextValue>({\n isTransitioning: false,\n startRouteTransition: () => undefined,\n transitionProgress: 0,\n})\n\n/**\n * Use this hook to access the `RouteTransitionContext` provided by the `RouteTransitionProvider`.\n * To start a transition, fire the `startRouteTransition` method with a provided callback to run while the transition takes place.\n * @returns The `RouteTransitionContext` needed for transitioning between routes, including `isTransitioning`, `startRouteTransition`, and `transitionProgress`.\n * @example\n * 'use client'\n * import React, { useCallback } from 'react'\n * import { useTransition } from '@payloadcms/ui'\n * import { useRouter } from 'next/navigation'\n *\n * const MyComponent: React.FC = () => {\n * const router = useRouter()\n * const { startRouteTransition } = useRouteTransition()\n *\n * const redirectSomewhere = useCallback(() => {\n * startRouteTransition(() => router.push('/somewhere'))\n * }, [startRouteTransition, router])\n *\n * // ...\n * }\n */\nexport const useRouteTransition = () => React.use(RouteTransitionContext)\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["c","_c","React","startTransition","useCallback","useEffect","useOptimistic","useRef","RouteTransitionProvider","t0","$","children","isTransitioning","setIsTransitioning","transitionProgress","setTransitionProgress","useState","transitionProgressRef","timerID","t1","Symbol","for","current","setInterval","newProgress","Math","random","pow","log","initiateProgress","t2","t3","clearInterval","t4","callback","startRouteTransition","t5","_jsx","RouteTransitionContext","value","createContext","useRouteTransition","use"],"sources":["../../../src/providers/RouteTransition/index.tsx"],"sourcesContent":["'use client'\nimport React, { startTransition, useCallback, useEffect, useOptimistic, useRef } from 'react'\n\n/**\n * Route transitions are useful in showing immediate visual feedback to the user when navigating between pages. This is especially useful on slow networks when navigating to data heavy or process intensive pages.\n * To use route transitions, place the `RouteTransitionProvider` at the root of your application, outside of the `ProgressBar` component.\n * To trigger a route transition, use the `Link` component from `@payloadcms/ui`,\n * or wrap a callback function with the `startRouteTransition` method.\n * To gain access to the `RouteTransitionContext`, call the `useRouteTransition` hook in your component.\n * @returns A context provider with methods and state for transitioning between routes, including `isTransitioning`, `startRouteTransition`, and `transitionProgress`.\n * @example\n * import { RouteTransitionProvider, ProgressBar, Link } from '@payloadcms/ui'\n * const App = () => (\n * <RouteTransitionProvider>\n * <ProgressBar />\n * <Link href=\"/somewhere\">Go Somewhere</Link>\n * </RouteTransitionProvider>\n * )\n */\nexport const RouteTransitionProvider: React.FC<RouteTransitionProps> = ({ children }) => {\n const [isTransitioning, setIsTransitioning] = useOptimistic(false)\n const [transitionProgress, setTransitionProgress] = React.useState<number>(0)\n\n const transitionProgressRef = useRef(transitionProgress)\n\n const timerID = useRef(null)\n\n const initiateProgress = useCallback(() => {\n timerID.current = setInterval(() => {\n // randomly update progress using an exponential curve\n // cap the progress to ensure it never fully reaches completion\n // accelerate quickly then decelerate slowly\n const maxProgress = 0.93\n const jumpFactor = 0.2 // lower to reduce jumps in progress\n const growthFactor = 0.75 // adjust to control acceleration\n const slowdownFactor = 0.75 // adjust to control deceleration\n\n const newProgress =\n transitionProgressRef.current +\n (maxProgress - transitionProgressRef.current) *\n Math.random() *\n jumpFactor *\n Math.pow(Math.log(1 + (1 - transitionProgressRef.current) * growthFactor), slowdownFactor)\n\n setTransitionProgress(newProgress)\n transitionProgressRef.current = newProgress\n }, 250) // every n ms, update progress\n }, [])\n\n useEffect(() => {\n setTransitionProgress(0)\n transitionProgressRef.current = 0\n\n if (isTransitioning) {\n initiateProgress()\n } else {\n if (timerID.current) {\n clearInterval(timerID.current)\n }\n }\n }, [isTransitioning, initiateProgress])\n\n const startRouteTransition: StartRouteTransition = useCallback(\n (callback?: () => void) => {\n startTransition(() => {\n setIsTransitioning(true)\n\n if (typeof callback === 'function') {\n callback()\n }\n })\n },\n [setIsTransitioning],\n )\n\n return (\n <RouteTransitionContext value={{ isTransitioning, startRouteTransition, transitionProgress }}>\n {children}\n </RouteTransitionContext>\n )\n}\n\ntype RouteTransitionProps = {\n children: React.ReactNode\n}\n\ntype StartRouteTransition = (callback?: () => void) => void\n\ntype RouteTransitionContextValue = {\n isTransitioning: boolean\n startRouteTransition: StartRouteTransition\n transitionProgress: number\n}\n\nconst RouteTransitionContext = React.createContext<RouteTransitionContextValue>({\n isTransitioning: false,\n // Default implementation: just call the callback directly (no transition animation)\n startRouteTransition: (callback) => {\n if (typeof callback === 'function') {\n callback()\n }\n },\n transitionProgress: 0,\n})\n\n/**\n * Use this hook to access the `RouteTransitionContext` provided by the `RouteTransitionProvider`.\n * To start a transition, fire the `startRouteTransition` method with a provided callback to run while the transition takes place.\n * @returns The `RouteTransitionContext` needed for transitioning between routes, including `isTransitioning`, `startRouteTransition`, and `transitionProgress`.\n * @example\n * 'use client'\n * import React, { useCallback } from 'react'\n * import { useTransition } from '@payloadcms/ui'\n * import { useRouter } from 'next/navigation'\n *\n * const MyComponent: React.FC = () => {\n * const router = useRouter()\n * const { startRouteTransition } = useRouteTransition()\n *\n * const redirectSomewhere = useCallback(() => {\n * startRouteTransition(() => router.push('/somewhere'))\n * }, [startRouteTransition, router])\n *\n * // ...\n * }\n */\nexport const useRouteTransition = () => React.use(RouteTransitionContext)\n"],"mappings":"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","ignoreList":[]}
@@ -31,7 +31,8 @@
31
31
  --style-radius-m: #{$style-radius-m};
32
32
  --style-radius-l: #{$style-radius-l};
33
33
 
34
- --z-popup: 10;
34
+ // --z-popup needs to be higher than --z-modal to ensure the popup is displayed when modal is open
35
+ --z-popup: 60;
35
36
  --z-nav: 20;
36
37
  --z-modal: 30;
37
38
  --z-status: 40;
@@ -189,6 +190,18 @@
189
190
  color: currentColor;
190
191
  }
191
192
 
193
+ .sr-only {
194
+ position: absolute;
195
+ width: 1px;
196
+ height: 1px;
197
+ padding: 0;
198
+ margin: -1px;
199
+ overflow: hidden;
200
+ clip: rect(0, 0, 0, 0);
201
+ white-space: nowrap;
202
+ border-width: 0;
203
+ }
204
+
192
205
  .payload__modal-item {
193
206
  min-height: 100%;
194
207
  background: transparent;