@payloadcms/ui 3.55.0-internal.f8c92b5 → 3.55.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 (254) hide show
  1. package/dist/elements/AppHeader/index.scss +1 -0
  2. package/dist/elements/Autosave/index.js +2 -2
  3. package/dist/elements/Autosave/index.js.map +1 -1
  4. package/dist/elements/BulkUpload/EditForm/index.js +4 -18
  5. package/dist/elements/BulkUpload/EditForm/index.js.map +1 -1
  6. package/dist/elements/ClipboardAction/index.js +173 -74
  7. package/dist/elements/ClipboardAction/index.js.map +1 -1
  8. package/dist/elements/CodeEditor/CodeEditor.js +155 -67
  9. package/dist/elements/CodeEditor/CodeEditor.js.map +1 -1
  10. package/dist/elements/Collapsible/index.js +15 -7
  11. package/dist/elements/Collapsible/index.js.map +1 -1
  12. package/dist/elements/ConfirmationModal/index.js +44 -8
  13. package/dist/elements/ConfirmationModal/index.js.map +1 -1
  14. package/dist/elements/CopyLocaleData/index.js +97 -89
  15. package/dist/elements/CopyLocaleData/index.js.map +1 -1
  16. package/dist/elements/CopyToClipboard/index.js +22 -2
  17. package/dist/elements/CopyToClipboard/index.js.map +1 -1
  18. package/dist/elements/DefaultListViewTabs/index.d.ts +12 -0
  19. package/dist/elements/DefaultListViewTabs/index.d.ts.map +1 -0
  20. package/dist/elements/DefaultListViewTabs/index.js +161 -0
  21. package/dist/elements/DefaultListViewTabs/index.js.map +1 -0
  22. package/dist/elements/{ListHeaderTabs → DefaultListViewTabs}/index.scss +1 -1
  23. package/dist/elements/DeleteMany/index.js +83 -47
  24. package/dist/elements/DeleteMany/index.js.map +1 -1
  25. package/dist/elements/DocumentControls/index.js +55 -27
  26. package/dist/elements/DocumentControls/index.js.map +1 -1
  27. package/dist/elements/DocumentDrawer/DrawerHeader/index.js +10 -2
  28. package/dist/elements/DocumentDrawer/DrawerHeader/index.js.map +1 -1
  29. package/dist/elements/DocumentDrawer/Provider.d.ts +2 -1
  30. package/dist/elements/DocumentDrawer/Provider.d.ts.map +1 -1
  31. package/dist/elements/DocumentDrawer/Provider.js.map +1 -1
  32. package/dist/elements/DocumentDrawer/index.js +99 -47
  33. package/dist/elements/DocumentDrawer/index.js.map +1 -1
  34. package/dist/elements/DocumentFields/index.scss +1 -1
  35. package/dist/elements/Drawer/index.js +57 -23
  36. package/dist/elements/Drawer/index.js.map +1 -1
  37. package/dist/elements/DrawerActionHeader/index.js +21 -3
  38. package/dist/elements/DrawerActionHeader/index.js.map +1 -1
  39. package/dist/elements/FieldSelect/reduceFieldOptions.js +1 -1
  40. package/dist/elements/FieldSelect/reduceFieldOptions.js.map +1 -1
  41. package/dist/elements/FolderView/Drawers/MoveToFolder/index.js +225 -149
  42. package/dist/elements/FolderView/Drawers/MoveToFolder/index.js.map +1 -1
  43. package/dist/elements/FolderView/FolderFileCard/index.js +27 -19
  44. package/dist/elements/FolderView/FolderFileCard/index.js.map +1 -1
  45. package/dist/elements/FolderView/MoveDocToFolder/index.js +23 -12
  46. package/dist/elements/FolderView/MoveDocToFolder/index.js.map +1 -1
  47. package/dist/elements/FullscreenModal/index.js +20 -10
  48. package/dist/elements/FullscreenModal/index.js.map +1 -1
  49. package/dist/elements/ListControls/index.d.ts.map +1 -1
  50. package/dist/elements/ListControls/index.js +69 -78
  51. package/dist/elements/ListControls/index.js.map +1 -1
  52. package/dist/elements/ListControls/index.scss +2 -82
  53. package/dist/elements/ListDrawer/index.js +24 -18
  54. package/dist/elements/ListDrawer/index.js.map +1 -1
  55. package/dist/elements/ListHeader/TitleActions/ListCreateNewDocInFolderButton.js +32 -19
  56. package/dist/elements/ListHeader/TitleActions/ListCreateNewDocInFolderButton.js.map +1 -1
  57. package/dist/elements/ListSelection/index.js +27 -11
  58. package/dist/elements/ListSelection/index.js.map +1 -1
  59. package/dist/elements/LivePreview/Window/index.d.ts.map +1 -1
  60. package/dist/elements/LivePreview/Window/index.js +152 -71
  61. package/dist/elements/LivePreview/Window/index.js.map +1 -1
  62. package/dist/elements/Loading/index.js +11 -2
  63. package/dist/elements/Loading/index.js.map +1 -1
  64. package/dist/elements/LoadingOverlay/index.js +102 -46
  65. package/dist/elements/LoadingOverlay/index.js.map +1 -1
  66. package/dist/elements/Localizer/LocalizerLabel/index.js +36 -23
  67. package/dist/elements/Localizer/LocalizerLabel/index.js.map +1 -1
  68. package/dist/elements/PublishButton/index.d.ts.map +1 -1
  69. package/dist/elements/PublishButton/index.js +22 -11
  70. package/dist/elements/PublishButton/index.js.map +1 -1
  71. package/dist/elements/QueryPresets/QueryPresetToggler/index.js +139 -41
  72. package/dist/elements/QueryPresets/QueryPresetToggler/index.js.map +1 -1
  73. package/dist/elements/RenderIfInViewport/index.d.ts +2 -2
  74. package/dist/elements/RenderIfInViewport/index.d.ts.map +1 -1
  75. package/dist/elements/RenderIfInViewport/index.js.map +1 -1
  76. package/dist/elements/SearchBar/index.d.ts +2 -3
  77. package/dist/elements/SearchBar/index.d.ts.map +1 -1
  78. package/dist/elements/SearchBar/index.js +2 -3
  79. package/dist/elements/SearchBar/index.js.map +1 -1
  80. package/dist/elements/SearchBar/index.scss +56 -7
  81. package/dist/elements/SearchFilter/index.d.ts +2 -33
  82. package/dist/elements/SearchFilter/index.d.ts.map +1 -1
  83. package/dist/elements/SearchFilter/index.js +7 -5
  84. package/dist/elements/SearchFilter/index.js.map +1 -1
  85. package/dist/elements/SearchFilter/types.d.ts +33 -0
  86. package/dist/elements/SearchFilter/types.d.ts.map +1 -0
  87. package/dist/elements/SearchFilter/types.js +2 -0
  88. package/dist/elements/SearchFilter/types.js.map +1 -0
  89. package/dist/elements/SelectRow/index.js +40 -39
  90. package/dist/elements/SelectRow/index.js.map +1 -1
  91. package/dist/elements/ShimmerEffect/index.js +12 -20
  92. package/dist/elements/ShimmerEffect/index.js.map +1 -1
  93. package/dist/elements/SortColumn/index.js +30 -21
  94. package/dist/elements/SortColumn/index.js.map +1 -1
  95. package/dist/elements/Status/index.d.ts.map +1 -1
  96. package/dist/elements/Status/index.js +19 -9
  97. package/dist/elements/Status/index.js.map +1 -1
  98. package/dist/elements/Table/DefaultCell/fields/Date/index.js +37 -9
  99. package/dist/elements/Table/DefaultCell/fields/Date/index.js.map +1 -1
  100. package/dist/elements/Table/DefaultCell/fields/Relationship/index.js +37 -35
  101. package/dist/elements/Table/DefaultCell/fields/Relationship/index.js.map +1 -1
  102. package/dist/elements/Table/DefaultCell/fields/Select/index.js +27 -12
  103. package/dist/elements/Table/DefaultCell/fields/Select/index.js.map +1 -1
  104. package/dist/elements/Thumbnail/index.js +75 -35
  105. package/dist/elements/Thumbnail/index.js.map +1 -1
  106. package/dist/elements/ThumbnailCard/index.js +26 -17
  107. package/dist/elements/ThumbnailCard/index.js.map +1 -1
  108. package/dist/elements/Tooltip/index.js +127 -51
  109. package/dist/elements/Tooltip/index.js.map +1 -1
  110. package/dist/elements/Upload/index.js +10 -2
  111. package/dist/elements/Upload/index.js.map +1 -1
  112. package/dist/elements/WhereBuilder/Condition/Select/index.js +44 -31
  113. package/dist/elements/WhereBuilder/Condition/Select/index.js.map +1 -1
  114. package/dist/exports/client/{CodeEditor-O6BWJHD2.js → CodeEditor-URFJPG6I.js} +2 -2
  115. package/dist/exports/client/{DatePicker-F432AIH3.js → DatePicker-NMDEHPWL.js} +2 -2
  116. package/dist/exports/client/{chunk-AZDI6MW4.js → chunk-7RGKTZG2.js} +1 -1
  117. package/dist/exports/client/{chunk-AZDI6MW4.js.map → chunk-7RGKTZG2.js.map} +1 -1
  118. package/dist/exports/client/chunk-KPQQ5IUL.js +26 -0
  119. package/dist/exports/client/{chunk-FXAFULZQ.js.map → chunk-KPQQ5IUL.js.map} +4 -4
  120. package/dist/exports/client/index.d.ts +2 -3
  121. package/dist/exports/client/index.d.ts.map +1 -1
  122. package/dist/exports/client/index.js +24 -24
  123. package/dist/exports/client/index.js.map +4 -4
  124. package/dist/exports/rsc/index.d.ts +1 -0
  125. package/dist/exports/rsc/index.d.ts.map +1 -1
  126. package/dist/exports/rsc/index.js +1 -0
  127. package/dist/exports/rsc/index.js.map +1 -1
  128. package/dist/fields/Array/ArrayRow.d.ts +3 -2
  129. package/dist/fields/Array/ArrayRow.d.ts.map +1 -1
  130. package/dist/fields/Array/ArrayRow.js +23 -13
  131. package/dist/fields/Array/ArrayRow.js.map +1 -1
  132. package/dist/fields/Array/index.js +477 -273
  133. package/dist/fields/Array/index.js.map +1 -1
  134. package/dist/fields/Blocks/index.d.ts.map +1 -1
  135. package/dist/fields/Blocks/index.js.map +1 -1
  136. package/dist/fields/Checkbox/Input.js +19 -2
  137. package/dist/fields/Checkbox/Input.js.map +1 -1
  138. package/dist/fields/FieldError/index.js +29 -30
  139. package/dist/fields/FieldError/index.js.map +1 -1
  140. package/dist/fields/FieldLabel/index.js +64 -12
  141. package/dist/fields/FieldLabel/index.js.map +1 -1
  142. package/dist/fields/Join/index.js +1 -1
  143. package/dist/fields/Join/index.js.map +1 -1
  144. package/dist/fields/Relationship/select-components/MultiValueLabel/index.js +103 -45
  145. package/dist/fields/Relationship/select-components/MultiValueLabel/index.js.map +1 -1
  146. package/dist/fields/Relationship/select-components/SingleValue/index.js +44 -29
  147. package/dist/fields/Relationship/select-components/SingleValue/index.js.map +1 -1
  148. package/dist/fields/Row/index.d.ts +3 -1
  149. package/dist/fields/Row/index.d.ts.map +1 -1
  150. package/dist/fields/Select/Input.js +31 -18
  151. package/dist/fields/Select/Input.js.map +1 -1
  152. package/dist/fields/Tabs/Tab/index.js +11 -2
  153. package/dist/fields/Tabs/Tab/index.js.map +1 -1
  154. package/dist/fields/Tabs/index.d.ts +1 -2
  155. package/dist/fields/Tabs/index.d.ts.map +1 -1
  156. package/dist/fields/Tabs/index.js +225 -185
  157. package/dist/fields/Tabs/index.js.map +1 -1
  158. package/dist/fields/Upload/RelationshipContent/index.js +127 -79
  159. package/dist/fields/Upload/RelationshipContent/index.js.map +1 -1
  160. package/dist/forms/Form/fieldReducer.d.ts.map +1 -1
  161. package/dist/forms/Form/fieldReducer.js +15 -13
  162. package/dist/forms/Form/fieldReducer.js.map +1 -1
  163. package/dist/forms/Form/types.d.ts +6 -3
  164. package/dist/forms/Form/types.d.ts.map +1 -1
  165. package/dist/forms/Form/types.js.map +1 -1
  166. package/dist/forms/RenderFields/RenderField.js +237 -245
  167. package/dist/forms/RenderFields/RenderField.js.map +1 -1
  168. package/dist/forms/RenderFields/index.d.ts.map +1 -1
  169. package/dist/forms/RenderFields/index.js +1 -1
  170. package/dist/forms/RenderFields/index.js.map +1 -1
  171. package/dist/forms/RenderFields/types.d.ts +10 -2
  172. package/dist/forms/RenderFields/types.d.ts.map +1 -1
  173. package/dist/forms/RenderFields/types.js.map +1 -1
  174. package/dist/forms/RowLabel/Context/index.d.ts.map +1 -1
  175. package/dist/forms/RowLabel/Context/index.js +17 -31
  176. package/dist/forms/RowLabel/Context/index.js.map +1 -1
  177. package/dist/forms/useField/index.d.ts +0 -5
  178. package/dist/forms/useField/index.d.ts.map +1 -1
  179. package/dist/forms/useField/index.js +45 -74
  180. package/dist/forms/useField/index.js.map +1 -1
  181. package/dist/hooks/useIntersect.js +53 -35
  182. package/dist/hooks/useIntersect.js.map +1 -1
  183. package/dist/hooks/usePayloadAPI.js +44 -36
  184. package/dist/hooks/usePayloadAPI.js.map +1 -1
  185. package/dist/providers/Auth/index.d.ts +2 -1
  186. package/dist/providers/Auth/index.d.ts.map +1 -1
  187. package/dist/providers/Auth/index.js +74 -83
  188. package/dist/providers/Auth/index.js.map +1 -1
  189. package/dist/providers/Config/index.d.ts.map +1 -1
  190. package/dist/providers/Config/index.js +6 -3
  191. package/dist/providers/Config/index.js.map +1 -1
  192. package/dist/providers/LivePreview/context.d.ts +0 -2
  193. package/dist/providers/LivePreview/context.d.ts.map +1 -1
  194. package/dist/providers/LivePreview/context.js +0 -1
  195. package/dist/providers/LivePreview/context.js.map +1 -1
  196. package/dist/providers/LivePreview/index.d.ts.map +1 -1
  197. package/dist/providers/LivePreview/index.js +0 -12
  198. package/dist/providers/LivePreview/index.js.map +1 -1
  199. package/dist/providers/ServerFunctions/index.d.ts +1 -1
  200. package/dist/providers/ServerFunctions/index.d.ts.map +1 -1
  201. package/dist/providers/ServerFunctions/index.js.map +1 -1
  202. package/dist/styles.css +1 -1
  203. package/dist/utilities/buildFormState.d.ts.map +1 -1
  204. package/dist/utilities/buildFormState.js +7 -1
  205. package/dist/utilities/buildFormState.js.map +1 -1
  206. package/dist/utilities/buildTableState.d.ts.map +1 -1
  207. package/dist/utilities/buildTableState.js +12 -4
  208. package/dist/utilities/buildTableState.js.map +1 -1
  209. package/dist/utilities/getClientConfig.d.ts +2 -7
  210. package/dist/utilities/getClientConfig.d.ts.map +1 -1
  211. package/dist/utilities/getClientConfig.js +19 -8
  212. package/dist/utilities/getClientConfig.js.map +1 -1
  213. package/dist/utilities/getColumns.d.ts +10 -0
  214. package/dist/utilities/getColumns.d.ts.map +1 -0
  215. package/dist/utilities/getColumns.js +36 -0
  216. package/dist/utilities/getColumns.js.map +1 -0
  217. package/dist/utilities/reduceFieldsToOptions.d.ts.map +1 -1
  218. package/dist/utilities/reduceFieldsToOptions.js +16 -1
  219. package/dist/utilities/reduceFieldsToOptions.js.map +1 -1
  220. package/dist/utilities/renderTable.d.ts +3 -3
  221. package/dist/utilities/renderTable.d.ts.map +1 -1
  222. package/dist/utilities/renderTable.js +2 -11
  223. package/dist/utilities/renderTable.js.map +1 -1
  224. package/dist/utilities/traverseForLocalizedFields.d.ts +3 -0
  225. package/dist/utilities/traverseForLocalizedFields.d.ts.map +1 -0
  226. package/dist/utilities/traverseForLocalizedFields.js +40 -0
  227. package/dist/utilities/traverseForLocalizedFields.js.map +1 -0
  228. package/dist/views/BrowseByFolder/index.js +56 -38
  229. package/dist/views/BrowseByFolder/index.js.map +1 -1
  230. package/dist/views/CollectionFolder/index.d.ts.map +1 -1
  231. package/dist/views/CollectionFolder/index.js +45 -28
  232. package/dist/views/CollectionFolder/index.js.map +1 -1
  233. package/dist/views/Edit/Auth/index.d.ts.map +1 -1
  234. package/dist/views/Edit/Auth/index.js +106 -94
  235. package/dist/views/Edit/Auth/index.js.map +1 -1
  236. package/dist/views/List/ListHeader/index.d.ts.map +1 -1
  237. package/dist/views/List/ListHeader/index.js +5 -13
  238. package/dist/views/List/ListHeader/index.js.map +1 -1
  239. package/package.json +7 -7
  240. package/dist/elements/ListHeaderTabs/ByFolderPill.d.ts +0 -10
  241. package/dist/elements/ListHeaderTabs/ByFolderPill.d.ts.map +0 -1
  242. package/dist/elements/ListHeaderTabs/ByFolderPill.js +0 -70
  243. package/dist/elements/ListHeaderTabs/ByFolderPill.js.map +0 -1
  244. package/dist/elements/ListHeaderTabs/DefaultListPill.d.ts +0 -9
  245. package/dist/elements/ListHeaderTabs/DefaultListPill.d.ts.map +0 -1
  246. package/dist/elements/ListHeaderTabs/DefaultListPill.js +0 -75
  247. package/dist/elements/ListHeaderTabs/DefaultListPill.js.map +0 -1
  248. package/dist/elements/ListHeaderTabs/TrashPill.d.ts +0 -6
  249. package/dist/elements/ListHeaderTabs/TrashPill.d.ts.map +0 -1
  250. package/dist/elements/ListHeaderTabs/TrashPill.js +0 -53
  251. package/dist/elements/ListHeaderTabs/TrashPill.js.map +0 -1
  252. package/dist/exports/client/chunk-FXAFULZQ.js +0 -26
  253. /package/dist/exports/client/{CodeEditor-O6BWJHD2.js.map → CodeEditor-URFJPG6I.js.map} +0 -0
  254. /package/dist/exports/client/{DatePicker-F432AIH3.js.map → DatePicker-NMDEHPWL.js.map} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"buildFormState.d.ts","sourceRoot":"","sources":["../../src/utilities/buildFormState.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,kBAAkB,EAClB,YAAY,EACZ,UAAU,EACV,WAAW,EACX,SAAS,EACT,cAAc,EACf,MAAM,SAAS,CAAA;AAYhB,MAAM,MAAM,WAAW,GAAG;IACxB,QAAQ,EAAE,OAAO,CAAA;IACjB,YAAY,EAAE,MAAM,CAAA;IACpB,IAAI,EAAE,UAAU,GAAG,MAAM,GAAG,MAAM,CAAA;CACnC,CAAA;AAED,KAAK,2BAA2B,GAAG;IACjC,YAAY,CAAC,EAAE,YAAY,CAAA;IAC3B,MAAM,CAAC,EAAE,KAAK,CAAA;IACd,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,WAAW,CAAC,EAAE,WAAW,CAAA;IACzB,KAAK,EAAE,SAAS,CAAA;CACjB,CAAA;AAED,KAAK,yBAAyB,GAAG;IAC/B,WAAW,CAAC,EAAE,KAAK,CAAA;IACnB,KAAK,CAAC,EAAE,KAAK,CAAA;CACd,GAAG,CACA;IACE,OAAO,EAAE,MAAM,CAAA;CAChB,GACD,WAAW,CACd,CAAA;AAED,MAAM,MAAM,oBAAoB,GAAG,yBAAyB,GAAG,2BAA2B,CAAA;AAE1F,eAAO,MAAM,qBAAqB,EAAE,cAAc,CAChD,kBAAkB,EAClB,OAAO,CAAC,oBAAoB,CAAC,CAsD9B,CAAA;AAED,eAAO,MAAM,cAAc,SACnB,kBAAkB,KACvB,OAAO,CAAC,2BAA2B,CAoJrC,CAAA"}
1
+ {"version":3,"file":"buildFormState.d.ts","sourceRoot":"","sources":["../../src/utilities/buildFormState.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,kBAAkB,EAClB,YAAY,EACZ,UAAU,EACV,WAAW,EACX,SAAS,EACT,cAAc,EACf,MAAM,SAAS,CAAA;AAYhB,MAAM,MAAM,WAAW,GAAG;IACxB,QAAQ,EAAE,OAAO,CAAA;IACjB,YAAY,EAAE,MAAM,CAAA;IACpB,IAAI,EAAE,UAAU,GAAG,MAAM,GAAG,MAAM,CAAA;CACnC,CAAA;AAED,KAAK,2BAA2B,GAAG;IACjC,YAAY,CAAC,EAAE,YAAY,CAAA;IAC3B,MAAM,CAAC,EAAE,KAAK,CAAA;IACd,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,WAAW,CAAC,EAAE,WAAW,CAAA;IACzB,KAAK,EAAE,SAAS,CAAA;CACjB,CAAA;AAED,KAAK,yBAAyB,GAAG;IAC/B,WAAW,CAAC,EAAE,KAAK,CAAA;IACnB,KAAK,CAAC,EAAE,KAAK,CAAA;CACd,GAAG,CACA;IACE,OAAO,EAAE,MAAM,CAAA;CAChB,GACD,WAAW,CACd,CAAA;AAED,MAAM,MAAM,oBAAoB,GAAG,yBAAyB,GAAG,2BAA2B,CAAA;AAE1F,eAAO,MAAM,qBAAqB,EAAE,cAAc,CAChD,kBAAkB,EAClB,OAAO,CAAC,oBAAoB,CAAC,CAsD9B,CAAA;AAED,eAAO,MAAM,cAAc,SACnB,kBAAkB,KACvB,OAAO,CAAC,2BAA2B,CA0JrC,CAAA"}
@@ -103,7 +103,8 @@ export const buildFormState = async args => {
103
103
  config: getClientConfig({
104
104
  config,
105
105
  i18n,
106
- importMap: req.payload.importMap
106
+ importMap: req.payload.importMap,
107
+ user: req.user
107
108
  }),
108
109
  globalSlug,
109
110
  i18n,
@@ -139,6 +140,11 @@ export const buildFormState = async args => {
139
140
  * so we can safely map over them within `fieldSchemasToFormState`
140
141
  */
141
142
  const fields = Array.isArray(fieldOrEntityConfig) ? fieldOrEntityConfig : 'fields' in fieldOrEntityConfig ? fieldOrEntityConfig.fields : [fieldOrEntityConfig];
143
+ // Ensure data.id is present during form state requests, where the data
144
+ // is passed from the client as an argument, without the ID
145
+ if (!data.id && id) {
146
+ data.id = id;
147
+ }
142
148
  const formStateResult = await fieldSchemasToFormState({
143
149
  id,
144
150
  clientFieldSchemaMap: clientSchemaMap,
@@ -1 +1 @@
1
- {"version":3,"file":"buildFormState.js","names":["formatErrors","getSelectMode","reduceFieldsToValues","fieldSchemasToFormState","renderField","getClientConfig","getClientSchemaMap","getSchemaMap","handleFormStateLocking","buildFormStateHandler","args","req","incomingUserSlug","user","collection","adminUserSlug","payload","config","admin","adminAccessFunction","collections","access","canAccessAdmin","Error","hasUsers","find","depth","limit","pagination","docs","length","res","buildFormState","err","logger","error","msg","message","id","idFromArgs","collectionSlug","data","incomingData","docPermissions","docPreferences","documentFormState","formState","globalSlug","initialBlockData","initialBlockFormState","mockRSCs","operation","readOnly","renderAllFields","i18n","returnLockStatus","schemaPath","select","skipValidation","updateLastEdited","selectMode","undefined","schemaMap","clientSchemaMap","importMap","fieldOrEntityConfig","get","fields","type","documentData","blockData","Array","isArray","formStateResult","clientFieldSchemaMap","fieldSchemaMap","permissions","preferences","previousFormState","renderFieldFn","upload","file","lockedStateResult","lockedState","state"],"sources":["../../src/utilities/buildFormState.ts"],"sourcesContent":["import type {\n BuildFormStateArgs,\n ClientConfig,\n ClientUser,\n ErrorResult,\n FormState,\n ServerFunction,\n} from 'payload'\n\nimport { formatErrors } from 'payload'\nimport { getSelectMode, reduceFieldsToValues } from 'payload/shared'\n\nimport { fieldSchemasToFormState } from '../forms/fieldSchemasToFormState/index.js'\nimport { renderField } from '../forms/fieldSchemasToFormState/renderField.js'\nimport { getClientConfig } from './getClientConfig.js'\nimport { getClientSchemaMap } from './getClientSchemaMap.js'\nimport { getSchemaMap } from './getSchemaMap.js'\nimport { handleFormStateLocking } from './handleFormStateLocking.js'\n\nexport type LockedState = {\n isLocked: boolean\n lastEditedAt: string\n user: ClientUser | number | string\n}\n\ntype BuildFormStateSuccessResult = {\n clientConfig?: ClientConfig\n errors?: never\n indexPath?: string\n lockedState?: LockedState\n state: FormState\n}\n\ntype BuildFormStateErrorResult = {\n lockedState?: never\n state?: never\n} & (\n | {\n message: string\n }\n | ErrorResult\n)\n\nexport type BuildFormStateResult = BuildFormStateErrorResult | BuildFormStateSuccessResult\n\nexport const buildFormStateHandler: ServerFunction<\n BuildFormStateArgs,\n Promise<BuildFormStateResult>\n> = async (args) => {\n const { req } = args\n\n const incomingUserSlug = req.user?.collection\n const adminUserSlug = req.payload.config.admin.user\n\n try {\n // If we have a user slug, test it against the functions\n if (incomingUserSlug) {\n const adminAccessFunction = req.payload.collections[incomingUserSlug].config.access?.admin\n\n // Run the admin access function from the config if it exists\n if (adminAccessFunction) {\n const canAccessAdmin = await adminAccessFunction({ req })\n\n if (!canAccessAdmin) {\n throw new Error('Unauthorized')\n }\n // Match the user collection to the global admin config\n } else if (adminUserSlug !== incomingUserSlug) {\n throw new Error('Unauthorized')\n }\n } else {\n const hasUsers = await req.payload.find({\n collection: adminUserSlug,\n depth: 0,\n limit: 1,\n pagination: false,\n })\n\n // If there are users, we should not allow access because of /create-first-user\n if (hasUsers.docs.length) {\n throw new Error('Unauthorized')\n }\n }\n\n const res = await buildFormState(args)\n return res\n } catch (err) {\n req.payload.logger.error({ err, msg: `There was an error building form state` })\n\n if (err.message === 'Could not find field schema for given path') {\n return {\n message: err.message,\n }\n }\n\n if (err.message === 'Unauthorized') {\n throw new Error('Unauthorized')\n }\n\n return formatErrors(err)\n }\n}\n\nexport const buildFormState = async (\n args: BuildFormStateArgs,\n): Promise<BuildFormStateSuccessResult> => {\n const {\n id: idFromArgs,\n collectionSlug,\n data: incomingData,\n docPermissions,\n docPreferences,\n documentFormState,\n formState,\n globalSlug,\n initialBlockData,\n initialBlockFormState,\n mockRSCs,\n operation,\n readOnly,\n renderAllFields,\n req,\n req: {\n i18n,\n payload,\n payload: { config },\n },\n returnLockStatus,\n schemaPath = collectionSlug || globalSlug,\n select,\n skipValidation,\n updateLastEdited,\n } = args\n\n const selectMode = select ? getSelectMode(select) : undefined\n\n if (!collectionSlug && !globalSlug) {\n throw new Error('Either collectionSlug or globalSlug must be provided')\n }\n\n const schemaMap = getSchemaMap({\n collectionSlug,\n config,\n globalSlug,\n i18n,\n })\n\n const clientSchemaMap = getClientSchemaMap({\n collectionSlug,\n config: getClientConfig({ config, i18n, importMap: req.payload.importMap }),\n globalSlug,\n i18n,\n payload,\n schemaMap,\n })\n\n const id = collectionSlug ? idFromArgs : undefined\n const fieldOrEntityConfig = schemaMap.get(schemaPath)\n\n if (!fieldOrEntityConfig) {\n throw new Error(`Could not find \"${schemaPath}\" in the fieldSchemaMap`)\n }\n\n if (\n (!('fields' in fieldOrEntityConfig) ||\n !fieldOrEntityConfig.fields ||\n !fieldOrEntityConfig.fields.length) &&\n 'type' in fieldOrEntityConfig &&\n fieldOrEntityConfig.type !== 'blocks'\n ) {\n throw new Error(\n `The field found in fieldSchemaMap for \"${schemaPath}\" does not contain any subfields.`,\n )\n }\n\n // If there is form state but no data, deduce data from that form state, e.g. on initial load\n // Otherwise, use the incoming data as the source of truth, e.g. on subsequent saves\n const data = incomingData || reduceFieldsToValues(formState, true)\n\n let documentData = undefined\n\n if (documentFormState) {\n documentData = reduceFieldsToValues(documentFormState, true)\n }\n\n let blockData = initialBlockData\n\n if (initialBlockFormState) {\n blockData = reduceFieldsToValues(initialBlockFormState, true)\n }\n\n /**\n * When building state for sub schemas we need to adjust:\n * - `fields`\n * - `parentSchemaPath`\n * - `parentPath`\n *\n * Type assertion is fine because we wrap sub schemas in an array\n * so we can safely map over them within `fieldSchemasToFormState`\n */\n const fields = Array.isArray(fieldOrEntityConfig)\n ? fieldOrEntityConfig\n : 'fields' in fieldOrEntityConfig\n ? fieldOrEntityConfig.fields\n : [fieldOrEntityConfig]\n\n const formStateResult = await fieldSchemasToFormState({\n id,\n clientFieldSchemaMap: clientSchemaMap,\n collectionSlug,\n data,\n documentData,\n fields,\n fieldSchemaMap: schemaMap,\n initialBlockData: blockData,\n mockRSCs,\n operation,\n permissions: docPermissions?.fields || {},\n preferences: docPreferences || { fields: {} },\n previousFormState: formState,\n readOnly,\n renderAllFields,\n renderFieldFn: renderField,\n req,\n schemaPath,\n select,\n selectMode,\n skipValidation,\n })\n\n // Maintain form state of auth / upload fields\n if (collectionSlug && formState) {\n if (payload.collections[collectionSlug]?.config?.upload && formState.file) {\n formStateResult.file = formState.file\n }\n }\n\n let lockedStateResult\n\n if (returnLockStatus) {\n lockedStateResult = await handleFormStateLocking({\n id,\n collectionSlug,\n globalSlug,\n req,\n updateLastEdited,\n })\n }\n\n return {\n lockedState: lockedStateResult,\n state: formStateResult,\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"buildFormState.js","names":["formatErrors","getSelectMode","reduceFieldsToValues","fieldSchemasToFormState","renderField","getClientConfig","getClientSchemaMap","getSchemaMap","handleFormStateLocking","buildFormStateHandler","args","req","incomingUserSlug","user","collection","adminUserSlug","payload","config","admin","adminAccessFunction","collections","access","canAccessAdmin","Error","hasUsers","find","depth","limit","pagination","docs","length","res","buildFormState","err","logger","error","msg","message","id","idFromArgs","collectionSlug","data","incomingData","docPermissions","docPreferences","documentFormState","formState","globalSlug","initialBlockData","initialBlockFormState","mockRSCs","operation","readOnly","renderAllFields","i18n","returnLockStatus","schemaPath","select","skipValidation","updateLastEdited","selectMode","undefined","schemaMap","clientSchemaMap","importMap","fieldOrEntityConfig","get","fields","type","documentData","blockData","Array","isArray","formStateResult","clientFieldSchemaMap","fieldSchemaMap","permissions","preferences","previousFormState","renderFieldFn","upload","file","lockedStateResult","lockedState","state"],"sources":["../../src/utilities/buildFormState.ts"],"sourcesContent":["import type {\n BuildFormStateArgs,\n ClientConfig,\n ClientUser,\n ErrorResult,\n FormState,\n ServerFunction,\n} from 'payload'\n\nimport { formatErrors } from 'payload'\nimport { getSelectMode, reduceFieldsToValues } from 'payload/shared'\n\nimport { fieldSchemasToFormState } from '../forms/fieldSchemasToFormState/index.js'\nimport { renderField } from '../forms/fieldSchemasToFormState/renderField.js'\nimport { getClientConfig } from './getClientConfig.js'\nimport { getClientSchemaMap } from './getClientSchemaMap.js'\nimport { getSchemaMap } from './getSchemaMap.js'\nimport { handleFormStateLocking } from './handleFormStateLocking.js'\n\nexport type LockedState = {\n isLocked: boolean\n lastEditedAt: string\n user: ClientUser | number | string\n}\n\ntype BuildFormStateSuccessResult = {\n clientConfig?: ClientConfig\n errors?: never\n indexPath?: string\n lockedState?: LockedState\n state: FormState\n}\n\ntype BuildFormStateErrorResult = {\n lockedState?: never\n state?: never\n} & (\n | {\n message: string\n }\n | ErrorResult\n)\n\nexport type BuildFormStateResult = BuildFormStateErrorResult | BuildFormStateSuccessResult\n\nexport const buildFormStateHandler: ServerFunction<\n BuildFormStateArgs,\n Promise<BuildFormStateResult>\n> = async (args) => {\n const { req } = args\n\n const incomingUserSlug = req.user?.collection\n const adminUserSlug = req.payload.config.admin.user\n\n try {\n // If we have a user slug, test it against the functions\n if (incomingUserSlug) {\n const adminAccessFunction = req.payload.collections[incomingUserSlug].config.access?.admin\n\n // Run the admin access function from the config if it exists\n if (adminAccessFunction) {\n const canAccessAdmin = await adminAccessFunction({ req })\n\n if (!canAccessAdmin) {\n throw new Error('Unauthorized')\n }\n // Match the user collection to the global admin config\n } else if (adminUserSlug !== incomingUserSlug) {\n throw new Error('Unauthorized')\n }\n } else {\n const hasUsers = await req.payload.find({\n collection: adminUserSlug,\n depth: 0,\n limit: 1,\n pagination: false,\n })\n\n // If there are users, we should not allow access because of /create-first-user\n if (hasUsers.docs.length) {\n throw new Error('Unauthorized')\n }\n }\n\n const res = await buildFormState(args)\n return res\n } catch (err) {\n req.payload.logger.error({ err, msg: `There was an error building form state` })\n\n if (err.message === 'Could not find field schema for given path') {\n return {\n message: err.message,\n }\n }\n\n if (err.message === 'Unauthorized') {\n throw new Error('Unauthorized')\n }\n\n return formatErrors(err)\n }\n}\n\nexport const buildFormState = async (\n args: BuildFormStateArgs,\n): Promise<BuildFormStateSuccessResult> => {\n const {\n id: idFromArgs,\n collectionSlug,\n data: incomingData,\n docPermissions,\n docPreferences,\n documentFormState,\n formState,\n globalSlug,\n initialBlockData,\n initialBlockFormState,\n mockRSCs,\n operation,\n readOnly,\n renderAllFields,\n req,\n req: {\n i18n,\n payload,\n payload: { config },\n },\n returnLockStatus,\n schemaPath = collectionSlug || globalSlug,\n select,\n skipValidation,\n updateLastEdited,\n } = args\n\n const selectMode = select ? getSelectMode(select) : undefined\n\n if (!collectionSlug && !globalSlug) {\n throw new Error('Either collectionSlug or globalSlug must be provided')\n }\n\n const schemaMap = getSchemaMap({\n collectionSlug,\n config,\n globalSlug,\n i18n,\n })\n\n const clientSchemaMap = getClientSchemaMap({\n collectionSlug,\n config: getClientConfig({ config, i18n, importMap: req.payload.importMap, user: req.user }),\n globalSlug,\n i18n,\n payload,\n schemaMap,\n })\n\n const id = collectionSlug ? idFromArgs : undefined\n const fieldOrEntityConfig = schemaMap.get(schemaPath)\n\n if (!fieldOrEntityConfig) {\n throw new Error(`Could not find \"${schemaPath}\" in the fieldSchemaMap`)\n }\n\n if (\n (!('fields' in fieldOrEntityConfig) ||\n !fieldOrEntityConfig.fields ||\n !fieldOrEntityConfig.fields.length) &&\n 'type' in fieldOrEntityConfig &&\n fieldOrEntityConfig.type !== 'blocks'\n ) {\n throw new Error(\n `The field found in fieldSchemaMap for \"${schemaPath}\" does not contain any subfields.`,\n )\n }\n\n // If there is form state but no data, deduce data from that form state, e.g. on initial load\n // Otherwise, use the incoming data as the source of truth, e.g. on subsequent saves\n const data = incomingData || reduceFieldsToValues(formState, true)\n\n let documentData = undefined\n\n if (documentFormState) {\n documentData = reduceFieldsToValues(documentFormState, true)\n }\n\n let blockData = initialBlockData\n\n if (initialBlockFormState) {\n blockData = reduceFieldsToValues(initialBlockFormState, true)\n }\n\n /**\n * When building state for sub schemas we need to adjust:\n * - `fields`\n * - `parentSchemaPath`\n * - `parentPath`\n *\n * Type assertion is fine because we wrap sub schemas in an array\n * so we can safely map over them within `fieldSchemasToFormState`\n */\n const fields = Array.isArray(fieldOrEntityConfig)\n ? fieldOrEntityConfig\n : 'fields' in fieldOrEntityConfig\n ? fieldOrEntityConfig.fields\n : [fieldOrEntityConfig]\n\n // Ensure data.id is present during form state requests, where the data\n // is passed from the client as an argument, without the ID\n if (!data.id && id) {\n data.id = id\n }\n\n const formStateResult = await fieldSchemasToFormState({\n id,\n clientFieldSchemaMap: clientSchemaMap,\n collectionSlug,\n data,\n documentData,\n fields,\n fieldSchemaMap: schemaMap,\n initialBlockData: blockData,\n mockRSCs,\n operation,\n permissions: docPermissions?.fields || {},\n preferences: docPreferences || { fields: {} },\n previousFormState: formState,\n readOnly,\n renderAllFields,\n renderFieldFn: renderField,\n req,\n schemaPath,\n select,\n selectMode,\n skipValidation,\n })\n\n // Maintain form state of auth / upload fields\n if (collectionSlug && formState) {\n if (payload.collections[collectionSlug]?.config?.upload && formState.file) {\n formStateResult.file = formState.file\n }\n }\n\n let lockedStateResult\n\n if (returnLockStatus) {\n lockedStateResult = await handleFormStateLocking({\n id,\n collectionSlug,\n globalSlug,\n req,\n updateLastEdited,\n })\n }\n\n return {\n lockedState: lockedStateResult,\n state: formStateResult,\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"buildTableState.d.ts","sourceRoot":"","sources":["../../src/utilities/buildTableState.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,mBAAmB,EAEnB,YAAY,EACZ,qBAAqB,EACrB,MAAM,EACN,WAAW,EACX,aAAa,EAEb,cAAc,EAEf,MAAM,SAAS,CAAA;AAShB,KAAK,4BAA4B,GAAG;IAClC,YAAY,CAAC,EAAE,YAAY,CAAA;IAC3B,IAAI,EAAE,aAAa,CAAA;IACnB,MAAM,CAAC,EAAE,KAAK,CAAA;IACd,WAAW,EAAE,qBAAqB,CAAA;IAClC,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,CAAA;IAC7C,KAAK,EAAE,MAAM,EAAE,CAAA;IACf,KAAK,EAAE,KAAK,CAAC,SAAS,CAAA;CACvB,CAAA;AAED,KAAK,0BAA0B,GAAG;IAChC,IAAI,CAAC,EAAE,GAAG,CAAA;IACV,eAAe,CAAC,EAAE,KAAK,CAAA;IACvB,KAAK,CAAC,EAAE,KAAK,CAAA;IACb,KAAK,CAAC,EAAE,KAAK,CAAA;CACd,GAAG,CACA;IACE,OAAO,EAAE,MAAM,CAAA;CAChB,GACD,WAAW,CACd,CAAA;AAED,MAAM,MAAM,qBAAqB,GAAG,0BAA0B,GAAG,4BAA4B,CAAA;AAE7F,eAAO,MAAM,sBAAsB,EAAE,cAAc,CACjD,mBAAmB,EACnB,OAAO,CAAC,qBAAqB,CAAC,CAsB/B,CAAA"}
1
+ {"version":3,"file":"buildTableState.d.ts","sourceRoot":"","sources":["../../src/utilities/buildTableState.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,mBAAmB,EAEnB,YAAY,EACZ,qBAAqB,EACrB,MAAM,EACN,WAAW,EACX,aAAa,EAEb,cAAc,EAEf,MAAM,SAAS,CAAA;AAUhB,KAAK,4BAA4B,GAAG;IAClC,YAAY,CAAC,EAAE,YAAY,CAAA;IAC3B,IAAI,EAAE,aAAa,CAAA;IACnB,MAAM,CAAC,EAAE,KAAK,CAAA;IACd,WAAW,EAAE,qBAAqB,CAAA;IAClC,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,CAAA;IAC7C,KAAK,EAAE,MAAM,EAAE,CAAA;IACf,KAAK,EAAE,KAAK,CAAC,SAAS,CAAA;CACvB,CAAA;AAED,KAAK,0BAA0B,GAAG;IAChC,IAAI,CAAC,EAAE,GAAG,CAAA;IACV,eAAe,CAAC,EAAE,KAAK,CAAA;IACvB,KAAK,CAAC,EAAE,KAAK,CAAA;IACb,KAAK,CAAC,EAAE,KAAK,CAAA;CACd,GAAG,CACA;IACE,OAAO,EAAE,MAAM,CAAA;CAChB,GACD,WAAW,CACd,CAAA;AAED,MAAM,MAAM,qBAAqB,GAAG,0BAA0B,GAAG,4BAA4B,CAAA;AAE7F,eAAO,MAAM,sBAAsB,EAAE,cAAc,CACjD,mBAAmB,EACnB,OAAO,CAAC,qBAAqB,CAAC,CAsB/B,CAAA"}
@@ -1,6 +1,7 @@
1
1
  import { APIError, formatErrors } from 'payload';
2
2
  import { isNumber } from 'payload/shared';
3
3
  import { getClientConfig } from './getClientConfig.js';
4
+ import { getColumns } from './getColumns.js';
4
5
  import { renderFilters, renderTable } from './renderTable.js';
5
6
  import { upsertPreferences } from './upsertPreferences.js';
6
7
  export const buildTableStateHandler = async args => {
@@ -29,7 +30,7 @@ export const buildTableStateHandler = async args => {
29
30
  const buildTableState = async args => {
30
31
  const {
31
32
  collectionSlug,
32
- columns,
33
+ columns: columnsFromArgs,
33
34
  data: dataFromArgs,
34
35
  enableRowSelections,
35
36
  orderableFieldName,
@@ -79,7 +80,8 @@ const buildTableState = async args => {
79
80
  const clientConfig = getClientConfig({
80
81
  config,
81
82
  i18n,
82
- importMap: payload.importMap
83
+ importMap: payload.importMap,
84
+ user
83
85
  });
84
86
  let collectionConfig;
85
87
  let clientCollectionConfig;
@@ -93,7 +95,7 @@ const buildTableState = async args => {
93
95
  key: Array.isArray(collectionSlug) ? `${parent.collectionSlug}-${parent.joinPath}` : `collection-${collectionSlug}`,
94
96
  req,
95
97
  value: {
96
- columns,
98
+ columns: columnsFromArgs,
97
99
  limit: isNumber(query?.limit) ? Number(query.limit) : undefined,
98
100
  sort: query?.sort
99
101
  }
@@ -165,7 +167,13 @@ const buildTableState = async args => {
165
167
  clientConfig,
166
168
  collectionConfig,
167
169
  collections: Array.isArray(collectionSlug) ? collectionSlug : undefined,
168
- columns,
170
+ columns: getColumns({
171
+ clientConfig,
172
+ collectionConfig: clientCollectionConfig,
173
+ collectionSlug,
174
+ columns: columnsFromArgs,
175
+ i18n: req.i18n
176
+ }),
169
177
  data,
170
178
  enableRowSelections,
171
179
  i18n: req.i18n,
@@ -1 +1 @@
1
- {"version":3,"file":"buildTableState.js","names":["APIError","formatErrors","isNumber","getClientConfig","renderFilters","renderTable","upsertPreferences","buildTableStateHandler","args","req","res","buildTableState","err","payload","logger","error","msg","message","collectionSlug","columns","data","dataFromArgs","enableRowSelections","orderableFieldName","parent","query","renderRowTypes","i18n","config","user","tableAppearance","incomingUserSlug","collection","adminUserSlug","admin","adminAccessFunction","collections","access","canAccessAdmin","Error","hasUsers","find","depth","limit","pagination","docs","length","clientConfig","importMap","collectionConfig","clientCollectionConfig","Array","isArray","slug","collectionPreferences","key","joinPath","value","Number","undefined","sort","select","currentSelectRef","segments","split","i","joinQuery","where","isNaN","page","parentDoc","findByID","id","joins","overrideAccess","draft","locale","columnState","Table","useAsTitle","renderedFilters","fields","preferences","state"],"sources":["../../src/utilities/buildTableState.ts"],"sourcesContent":["import type {\n BuildTableStateArgs,\n ClientCollectionConfig,\n ClientConfig,\n CollectionPreferences,\n Column,\n ErrorResult,\n PaginatedDocs,\n SanitizedCollectionConfig,\n ServerFunction,\n Where,\n} from 'payload'\n\nimport { APIError, formatErrors } from 'payload'\nimport { isNumber } from 'payload/shared'\n\nimport { getClientConfig } from './getClientConfig.js'\nimport { renderFilters, renderTable } from './renderTable.js'\nimport { upsertPreferences } from './upsertPreferences.js'\n\ntype BuildTableStateSuccessResult = {\n clientConfig?: ClientConfig\n data: PaginatedDocs\n errors?: never\n preferences: CollectionPreferences\n renderedFilters: Map<string, React.ReactNode>\n state: Column[]\n Table: React.ReactNode\n}\n\ntype BuildTableStateErrorResult = {\n data?: any\n renderedFilters?: never\n state?: never\n Table?: never\n} & (\n | {\n message: string\n }\n | ErrorResult\n)\n\nexport type BuildTableStateResult = BuildTableStateErrorResult | BuildTableStateSuccessResult\n\nexport const buildTableStateHandler: ServerFunction<\n BuildTableStateArgs,\n Promise<BuildTableStateResult>\n> = async (args) => {\n const { req } = args\n\n try {\n const res = await buildTableState(args)\n return res\n } catch (err) {\n req.payload.logger.error({ err, msg: `There was an error building form state` })\n\n if (err.message === 'Could not find field schema for given path') {\n return {\n message: err.message,\n }\n }\n\n if (err.message === 'Unauthorized') {\n return null\n }\n\n return formatErrors(err)\n }\n}\n\nconst buildTableState = async (\n args: BuildTableStateArgs,\n): Promise<BuildTableStateSuccessResult> => {\n const {\n collectionSlug,\n columns,\n data: dataFromArgs,\n enableRowSelections,\n orderableFieldName,\n parent,\n query,\n renderRowTypes,\n req,\n req: {\n i18n,\n payload,\n payload: { config },\n user,\n },\n tableAppearance,\n } = args\n\n const incomingUserSlug = user?.collection\n\n const adminUserSlug = config.admin.user\n\n // If we have a user slug, test it against the functions\n if (incomingUserSlug) {\n const adminAccessFunction = payload.collections[incomingUserSlug].config.access?.admin\n\n // Run the admin access function from the config if it exists\n if (adminAccessFunction) {\n const canAccessAdmin = await adminAccessFunction({ req })\n\n if (!canAccessAdmin) {\n throw new Error('Unauthorized')\n }\n\n // Match the user collection to the global admin config\n } else if (adminUserSlug !== incomingUserSlug) {\n throw new Error('Unauthorized')\n }\n } else {\n const hasUsers = await payload.find({\n collection: adminUserSlug,\n depth: 0,\n limit: 1,\n pagination: false,\n })\n\n // If there are users, we should not allow access because of /create-first-user\n if (hasUsers.docs.length) {\n throw new Error('Unauthorized')\n }\n }\n\n const clientConfig = getClientConfig({\n config,\n i18n,\n importMap: payload.importMap,\n })\n\n let collectionConfig: SanitizedCollectionConfig\n let clientCollectionConfig: ClientCollectionConfig\n\n if (!Array.isArray(collectionSlug)) {\n if (req.payload.collections[collectionSlug]) {\n collectionConfig = req.payload.collections[collectionSlug].config\n clientCollectionConfig = clientConfig.collections.find(\n (collection) => collection.slug === collectionSlug,\n )\n }\n }\n\n const collectionPreferences = await upsertPreferences<CollectionPreferences>({\n key: Array.isArray(collectionSlug)\n ? `${parent.collectionSlug}-${parent.joinPath}`\n : `collection-${collectionSlug}`,\n req,\n value: {\n columns,\n limit: isNumber(query?.limit) ? Number(query.limit) : undefined,\n sort: query?.sort as string,\n },\n })\n\n let data: PaginatedDocs = dataFromArgs\n\n // lookup docs, if desired, i.e. within `join` field which initialize with `depth: 0`\n\n if (!data?.docs || query) {\n if (Array.isArray(collectionSlug)) {\n if (!parent) {\n throw new APIError('Unexpected array of collectionSlug, parent must be provided')\n }\n\n const select = {}\n let currentSelectRef = select\n\n const segments = parent.joinPath.split('.')\n\n for (let i = 0; i < segments.length; i++) {\n currentSelectRef[segments[i]] = i === segments.length - 1 ? true : {}\n currentSelectRef = currentSelectRef[segments[i]]\n }\n\n const joinQuery: { limit?: number; page?: number; sort?: string; where?: Where } = {\n sort: query?.sort as string,\n where: query?.where,\n }\n\n if (query) {\n if (!Number.isNaN(Number(query.limit))) {\n joinQuery.limit = Number(query.limit)\n }\n\n if (!Number.isNaN(Number(query.page))) {\n joinQuery.limit = Number(query.limit)\n }\n }\n\n let parentDoc = await payload.findByID({\n id: parent.id,\n collection: parent.collectionSlug,\n depth: 1,\n joins: {\n [parent.joinPath]: joinQuery,\n },\n overrideAccess: false,\n select,\n user: req.user,\n })\n\n for (let i = 0; i < segments.length; i++) {\n if (i === segments.length - 1) {\n data = parentDoc[segments[i]]\n } else {\n parentDoc = parentDoc[segments[i]]\n }\n }\n } else {\n data = await payload.find({\n collection: collectionSlug,\n depth: 0,\n draft: true,\n limit: query?.limit,\n locale: req.locale,\n overrideAccess: false,\n page: query?.page,\n sort: query?.sort,\n user: req.user,\n where: query?.where,\n })\n }\n }\n\n const { columnState, Table } = renderTable({\n clientCollectionConfig,\n clientConfig,\n collectionConfig,\n collections: Array.isArray(collectionSlug) ? collectionSlug : undefined,\n columns,\n data,\n enableRowSelections,\n i18n: req.i18n,\n orderableFieldName,\n payload,\n query,\n renderRowTypes,\n tableAppearance,\n useAsTitle: Array.isArray(collectionSlug)\n ? payload.collections[collectionSlug[0]]?.config?.admin?.useAsTitle\n : collectionConfig?.admin?.useAsTitle,\n })\n\n let renderedFilters\n\n if (collectionConfig) {\n renderedFilters = renderFilters(collectionConfig.fields, req.payload.importMap)\n }\n\n return {\n data,\n preferences: collectionPreferences,\n renderedFilters,\n state: columnState,\n Table,\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"buildTableState.js","names":["APIError","formatErrors","isNumber","getClientConfig","getColumns","renderFilters","renderTable","upsertPreferences","buildTableStateHandler","args","req","res","buildTableState","err","payload","logger","error","msg","message","collectionSlug","columns","columnsFromArgs","data","dataFromArgs","enableRowSelections","orderableFieldName","parent","query","renderRowTypes","i18n","config","user","tableAppearance","incomingUserSlug","collection","adminUserSlug","admin","adminAccessFunction","collections","access","canAccessAdmin","Error","hasUsers","find","depth","limit","pagination","docs","length","clientConfig","importMap","collectionConfig","clientCollectionConfig","Array","isArray","slug","collectionPreferences","key","joinPath","value","Number","undefined","sort","select","currentSelectRef","segments","split","i","joinQuery","where","isNaN","page","parentDoc","findByID","id","joins","overrideAccess","draft","locale","columnState","Table","useAsTitle","renderedFilters","fields","preferences","state"],"sources":["../../src/utilities/buildTableState.ts"],"sourcesContent":["import type {\n BuildTableStateArgs,\n ClientCollectionConfig,\n ClientConfig,\n CollectionPreferences,\n Column,\n ErrorResult,\n PaginatedDocs,\n SanitizedCollectionConfig,\n ServerFunction,\n Where,\n} from 'payload'\n\nimport { APIError, formatErrors } from 'payload'\nimport { isNumber } from 'payload/shared'\n\nimport { getClientConfig } from './getClientConfig.js'\nimport { getColumns } from './getColumns.js'\nimport { renderFilters, renderTable } from './renderTable.js'\nimport { upsertPreferences } from './upsertPreferences.js'\n\ntype BuildTableStateSuccessResult = {\n clientConfig?: ClientConfig\n data: PaginatedDocs\n errors?: never\n preferences: CollectionPreferences\n renderedFilters: Map<string, React.ReactNode>\n state: Column[]\n Table: React.ReactNode\n}\n\ntype BuildTableStateErrorResult = {\n data?: any\n renderedFilters?: never\n state?: never\n Table?: never\n} & (\n | {\n message: string\n }\n | ErrorResult\n)\n\nexport type BuildTableStateResult = BuildTableStateErrorResult | BuildTableStateSuccessResult\n\nexport const buildTableStateHandler: ServerFunction<\n BuildTableStateArgs,\n Promise<BuildTableStateResult>\n> = async (args) => {\n const { req } = args\n\n try {\n const res = await buildTableState(args)\n return res\n } catch (err) {\n req.payload.logger.error({ err, msg: `There was an error building form state` })\n\n if (err.message === 'Could not find field schema for given path') {\n return {\n message: err.message,\n }\n }\n\n if (err.message === 'Unauthorized') {\n return null\n }\n\n return formatErrors(err)\n }\n}\n\nconst buildTableState = async (\n args: BuildTableStateArgs,\n): Promise<BuildTableStateSuccessResult> => {\n const {\n collectionSlug,\n columns: columnsFromArgs,\n data: dataFromArgs,\n enableRowSelections,\n orderableFieldName,\n parent,\n query,\n renderRowTypes,\n req,\n req: {\n i18n,\n payload,\n payload: { config },\n user,\n },\n tableAppearance,\n } = args\n\n const incomingUserSlug = user?.collection\n\n const adminUserSlug = config.admin.user\n\n // If we have a user slug, test it against the functions\n if (incomingUserSlug) {\n const adminAccessFunction = payload.collections[incomingUserSlug].config.access?.admin\n\n // Run the admin access function from the config if it exists\n if (adminAccessFunction) {\n const canAccessAdmin = await adminAccessFunction({ req })\n\n if (!canAccessAdmin) {\n throw new Error('Unauthorized')\n }\n\n // Match the user collection to the global admin config\n } else if (adminUserSlug !== incomingUserSlug) {\n throw new Error('Unauthorized')\n }\n } else {\n const hasUsers = await payload.find({\n collection: adminUserSlug,\n depth: 0,\n limit: 1,\n pagination: false,\n })\n\n // If there are users, we should not allow access because of /create-first-user\n if (hasUsers.docs.length) {\n throw new Error('Unauthorized')\n }\n }\n\n const clientConfig = getClientConfig({\n config,\n i18n,\n importMap: payload.importMap,\n user,\n })\n\n let collectionConfig: SanitizedCollectionConfig\n let clientCollectionConfig: ClientCollectionConfig\n\n if (!Array.isArray(collectionSlug)) {\n if (req.payload.collections[collectionSlug]) {\n collectionConfig = req.payload.collections[collectionSlug].config\n clientCollectionConfig = clientConfig.collections.find(\n (collection) => collection.slug === collectionSlug,\n )\n }\n }\n\n const collectionPreferences = await upsertPreferences<CollectionPreferences>({\n key: Array.isArray(collectionSlug)\n ? `${parent.collectionSlug}-${parent.joinPath}`\n : `collection-${collectionSlug}`,\n req,\n value: {\n columns: columnsFromArgs,\n limit: isNumber(query?.limit) ? Number(query.limit) : undefined,\n sort: query?.sort as string,\n },\n })\n\n let data: PaginatedDocs = dataFromArgs\n\n // lookup docs, if desired, i.e. within `join` field which initialize with `depth: 0`\n\n if (!data?.docs || query) {\n if (Array.isArray(collectionSlug)) {\n if (!parent) {\n throw new APIError('Unexpected array of collectionSlug, parent must be provided')\n }\n\n const select = {}\n let currentSelectRef = select\n\n const segments = parent.joinPath.split('.')\n\n for (let i = 0; i < segments.length; i++) {\n currentSelectRef[segments[i]] = i === segments.length - 1 ? true : {}\n currentSelectRef = currentSelectRef[segments[i]]\n }\n\n const joinQuery: { limit?: number; page?: number; sort?: string; where?: Where } = {\n sort: query?.sort as string,\n where: query?.where,\n }\n\n if (query) {\n if (!Number.isNaN(Number(query.limit))) {\n joinQuery.limit = Number(query.limit)\n }\n\n if (!Number.isNaN(Number(query.page))) {\n joinQuery.limit = Number(query.limit)\n }\n }\n\n let parentDoc = await payload.findByID({\n id: parent.id,\n collection: parent.collectionSlug,\n depth: 1,\n joins: {\n [parent.joinPath]: joinQuery,\n },\n overrideAccess: false,\n select,\n user: req.user,\n })\n\n for (let i = 0; i < segments.length; i++) {\n if (i === segments.length - 1) {\n data = parentDoc[segments[i]]\n } else {\n parentDoc = parentDoc[segments[i]]\n }\n }\n } else {\n data = await payload.find({\n collection: collectionSlug,\n depth: 0,\n draft: true,\n limit: query?.limit,\n locale: req.locale,\n overrideAccess: false,\n page: query?.page,\n sort: query?.sort,\n user: req.user,\n where: query?.where,\n })\n }\n }\n\n const { columnState, Table } = renderTable({\n clientCollectionConfig,\n clientConfig,\n collectionConfig,\n collections: Array.isArray(collectionSlug) ? collectionSlug : undefined,\n columns: getColumns({\n clientConfig,\n collectionConfig: clientCollectionConfig,\n collectionSlug,\n columns: columnsFromArgs,\n i18n: req.i18n,\n }),\n data,\n enableRowSelections,\n i18n: req.i18n,\n orderableFieldName,\n payload,\n query,\n renderRowTypes,\n tableAppearance,\n useAsTitle: Array.isArray(collectionSlug)\n ? payload.collections[collectionSlug[0]]?.config?.admin?.useAsTitle\n : collectionConfig?.admin?.useAsTitle,\n })\n\n let renderedFilters\n\n if (collectionConfig) {\n renderedFilters = renderFilters(collectionConfig.fields, req.payload.importMap)\n }\n\n return {\n data,\n preferences: collectionPreferences,\n renderedFilters,\n state: columnState,\n Table,\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,8 +1,3 @@
1
- import type { I18nClient } from '@payloadcms/translations';
2
- import type { ClientConfig, ImportMap, SanitizedConfig } from 'payload';
3
- export declare const getClientConfig: (args: {
4
- config: SanitizedConfig;
5
- i18n: I18nClient;
6
- importMap: ImportMap;
7
- }) => ClientConfig;
1
+ import type { ClientConfig, CreateClientConfigArgs } from 'payload';
2
+ export declare const getClientConfig: ({ config, i18n, importMap, user }: CreateClientConfigArgs) => ClientConfig;
8
3
  //# sourceMappingURL=getClientConfig.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"getClientConfig.d.ts","sourceRoot":"","sources":["../../src/utilities/getClientConfig.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAsB,MAAM,0BAA0B,CAAA;AAC9E,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAiBvE,eAAO,MAAM,eAAe,SACnB;IAAE,MAAM,EAAE,eAAe,CAAC;IAAC,IAAI,EAAE,UAAU,CAAC;IAAC,SAAS,EAAE,SAAS,CAAA;CAAE,KAAG,YAoB9E,CAAA"}
1
+ {"version":3,"file":"getClientConfig.d.ts","sourceRoot":"","sources":["../../src/utilities/getClientConfig.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAA;AAanE,eAAO,MAAM,eAAe,sCACU,sBAAsB,KAAG,YAgC9D,CAAA"}
@@ -1,27 +1,38 @@
1
- import { createClientConfig } from 'payload';
1
+ import { createClientConfig, createUnauthenticatedClientConfig } from 'payload';
2
2
  import { cache } from 'react';
3
3
  let cachedClientConfigs = global._payload_clientConfigs;
4
4
  if (!cachedClientConfigs) {
5
5
  cachedClientConfigs = global._payload_clientConfigs = {};
6
6
  }
7
- export const getClientConfig = cache(args => {
8
- const {
9
- config,
10
- i18n,
11
- importMap
12
- } = args;
7
+ export const getClientConfig = cache(({
8
+ config,
9
+ i18n,
10
+ importMap,
11
+ user
12
+ }) => {
13
13
  const currentLanguage = i18n.language;
14
14
  if (cachedClientConfigs[currentLanguage] && !global._payload_doNotCacheClientConfig) {
15
+ if (!user) {
16
+ return createUnauthenticatedClientConfig({
17
+ clientConfig: cachedClientConfigs[currentLanguage]
18
+ });
19
+ }
15
20
  return cachedClientConfigs[currentLanguage];
16
21
  }
17
22
  const cachedClientConfig = createClientConfig({
18
23
  config,
19
24
  i18n,
20
- importMap
25
+ importMap,
26
+ user
21
27
  });
22
28
  cachedClientConfigs[currentLanguage] = cachedClientConfig;
23
29
  global._payload_clientConfigs = cachedClientConfigs;
24
30
  global._payload_doNotCacheClientConfig = false;
31
+ if (!user) {
32
+ return createUnauthenticatedClientConfig({
33
+ clientConfig: cachedClientConfig
34
+ });
35
+ }
25
36
  return cachedClientConfig;
26
37
  });
27
38
  //# sourceMappingURL=getClientConfig.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"getClientConfig.js","names":["createClientConfig","cache","cachedClientConfigs","global","_payload_clientConfigs","getClientConfig","args","config","i18n","importMap","currentLanguage","language","_payload_doNotCacheClientConfig","cachedClientConfig"],"sources":["../../src/utilities/getClientConfig.ts"],"sourcesContent":["import type { I18nClient, SupportedLanguages } from '@payloadcms/translations'\nimport type { ClientConfig, ImportMap, SanitizedConfig } from 'payload'\n\nimport { createClientConfig } from 'payload'\nimport { cache } from 'react'\n\nlet cachedClientConfigs = global._payload_clientConfigs as Record<\n keyof SupportedLanguages,\n ClientConfig\n>\n\nif (!cachedClientConfigs) {\n cachedClientConfigs = global._payload_clientConfigs = {} as Record<\n keyof SupportedLanguages,\n ClientConfig\n >\n}\n\nexport const getClientConfig = cache(\n (args: { config: SanitizedConfig; i18n: I18nClient; importMap: ImportMap }): ClientConfig => {\n const { config, i18n, importMap } = args\n const currentLanguage = i18n.language\n\n if (cachedClientConfigs[currentLanguage] && !global._payload_doNotCacheClientConfig) {\n return cachedClientConfigs[currentLanguage]\n }\n\n const cachedClientConfig = createClientConfig({\n config,\n i18n,\n importMap,\n })\n\n cachedClientConfigs[currentLanguage] = cachedClientConfig\n global._payload_clientConfigs = cachedClientConfigs\n global._payload_doNotCacheClientConfig = false\n\n return cachedClientConfig\n },\n)\n"],"mappings":"AAGA,SAASA,kBAAkB,QAAQ;AACnC,SAASC,KAAK,QAAQ;AAEtB,IAAIC,mBAAA,GAAsBC,MAAA,CAAOC,sBAAsB;AAKvD,IAAI,CAACF,mBAAA,EAAqB;EACxBA,mBAAA,GAAsBC,MAAA,CAAOC,sBAAsB,GAAG,CAAC;AAIzD;AAEA,OAAO,MAAMC,eAAA,GAAkBJ,KAAA,CAC5BK,IAAA;EACC,MAAM;IAAEC,MAAM;IAAEC,IAAI;IAAEC;EAAS,CAAE,GAAGH,IAAA;EACpC,MAAMI,eAAA,GAAkBF,IAAA,CAAKG,QAAQ;EAErC,IAAIT,mBAAmB,CAACQ,eAAA,CAAgB,IAAI,CAACP,MAAA,CAAOS,+BAA+B,EAAE;IACnF,OAAOV,mBAAmB,CAACQ,eAAA,CAAgB;EAC7C;EAEA,MAAMG,kBAAA,GAAqBb,kBAAA,CAAmB;IAC5CO,MAAA;IACAC,IAAA;IACAC;EACF;EAEAP,mBAAmB,CAACQ,eAAA,CAAgB,GAAGG,kBAAA;EACvCV,MAAA,CAAOC,sBAAsB,GAAGF,mBAAA;EAChCC,MAAA,CAAOS,+BAA+B,GAAG;EAEzC,OAAOC,kBAAA;AACT","ignoreList":[]}
1
+ {"version":3,"file":"getClientConfig.js","names":["createClientConfig","createUnauthenticatedClientConfig","cache","cachedClientConfigs","global","_payload_clientConfigs","getClientConfig","config","i18n","importMap","user","currentLanguage","language","_payload_doNotCacheClientConfig","clientConfig","cachedClientConfig"],"sources":["../../src/utilities/getClientConfig.ts"],"sourcesContent":["import type { SupportedLanguages } from '@payloadcms/translations'\nimport type { ClientConfig, CreateClientConfigArgs } from 'payload'\n\nimport { createClientConfig, createUnauthenticatedClientConfig } from 'payload'\nimport { cache } from 'react'\n\ntype CachedClientConfigs = Record<keyof SupportedLanguages, ClientConfig>\n\nlet cachedClientConfigs = global._payload_clientConfigs as CachedClientConfigs\n\nif (!cachedClientConfigs) {\n cachedClientConfigs = global._payload_clientConfigs = {} as CachedClientConfigs\n}\n\nexport const getClientConfig = cache(\n ({ config, i18n, importMap, user }: CreateClientConfigArgs): ClientConfig => {\n const currentLanguage = i18n.language\n\n if (cachedClientConfigs[currentLanguage] && !global._payload_doNotCacheClientConfig) {\n if (!user) {\n return createUnauthenticatedClientConfig({\n clientConfig: cachedClientConfigs[currentLanguage],\n }) as unknown as ClientConfig\n }\n\n return cachedClientConfigs[currentLanguage]\n }\n\n const cachedClientConfig = createClientConfig({\n config,\n i18n,\n importMap,\n user,\n })\n\n cachedClientConfigs[currentLanguage] = cachedClientConfig\n global._payload_clientConfigs = cachedClientConfigs\n global._payload_doNotCacheClientConfig = false\n\n if (!user) {\n return createUnauthenticatedClientConfig({\n clientConfig: cachedClientConfig,\n }) as unknown as ClientConfig\n }\n\n return cachedClientConfig\n },\n)\n"],"mappings":"AAGA,SAASA,kBAAkB,EAAEC,iCAAiC,QAAQ;AACtE,SAASC,KAAK,QAAQ;AAItB,IAAIC,mBAAA,GAAsBC,MAAA,CAAOC,sBAAsB;AAEvD,IAAI,CAACF,mBAAA,EAAqB;EACxBA,mBAAA,GAAsBC,MAAA,CAAOC,sBAAsB,GAAG,CAAC;AACzD;AAEA,OAAO,MAAMC,eAAA,GAAkBJ,KAAA,CAC7B,CAAC;EAAEK,MAAM;EAAEC,IAAI;EAAEC,SAAS;EAAEC;AAAI,CAA0B;EACxD,MAAMC,eAAA,GAAkBH,IAAA,CAAKI,QAAQ;EAErC,IAAIT,mBAAmB,CAACQ,eAAA,CAAgB,IAAI,CAACP,MAAA,CAAOS,+BAA+B,EAAE;IACnF,IAAI,CAACH,IAAA,EAAM;MACT,OAAOT,iCAAA,CAAkC;QACvCa,YAAA,EAAcX,mBAAmB,CAACQ,eAAA;MACpC;IACF;IAEA,OAAOR,mBAAmB,CAACQ,eAAA,CAAgB;EAC7C;EAEA,MAAMI,kBAAA,GAAqBf,kBAAA,CAAmB;IAC5CO,MAAA;IACAC,IAAA;IACAC,SAAA;IACAC;EACF;EAEAP,mBAAmB,CAACQ,eAAA,CAAgB,GAAGI,kBAAA;EACvCX,MAAA,CAAOC,sBAAsB,GAAGF,mBAAA;EAChCC,MAAA,CAAOS,+BAA+B,GAAG;EAEzC,IAAI,CAACH,IAAA,EAAM;IACT,OAAOT,iCAAA,CAAkC;MACvCa,YAAA,EAAcC;IAChB;EACF;EAEA,OAAOA,kBAAA;AACT","ignoreList":[]}
@@ -0,0 +1,10 @@
1
+ import type { I18nClient } from '@payloadcms/translations';
2
+ import type { ClientCollectionConfig, ClientConfig, ColumnPreference } from 'payload';
3
+ export declare const getColumns: ({ clientConfig, collectionConfig, collectionSlug, columns, i18n, }: {
4
+ clientConfig: ClientConfig;
5
+ collectionConfig?: ClientCollectionConfig;
6
+ collectionSlug: string | string[];
7
+ columns: ColumnPreference[];
8
+ i18n: I18nClient;
9
+ }) => ColumnPreference[];
10
+ //# sourceMappingURL=getColumns.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getColumns.d.ts","sourceRoot":"","sources":["../../src/utilities/getColumns.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAC1D,OAAO,KAAK,EAAE,sBAAsB,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAQrF,eAAO,MAAM,UAAU,uEAMpB;IACD,YAAY,EAAE,YAAY,CAAA;IAC1B,gBAAgB,CAAC,EAAE,sBAAsB,CAAA;IACzC,cAAc,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;IACjC,OAAO,EAAE,gBAAgB,EAAE,CAAA;IAC3B,IAAI,EAAE,UAAU,CAAA;CACjB,uBAwCA,CAAA"}
@@ -0,0 +1,36 @@
1
+ import { flattenTopLevelFields } from 'payload';
2
+ import { fieldAffectsData } from 'payload/shared';
3
+ import { filterFields } from '../providers/TableColumns/buildColumnState/filterFields.js';
4
+ import { getInitialColumns } from '../providers/TableColumns/getInitialColumns.js';
5
+ export const getColumns = ({
6
+ clientConfig,
7
+ collectionConfig,
8
+ collectionSlug,
9
+ columns,
10
+ i18n
11
+ }) => {
12
+ const isPolymorphic = Array.isArray(collectionSlug);
13
+ const fields = !isPolymorphic ? collectionConfig?.fields ?? [] : [];
14
+ if (isPolymorphic) {
15
+ for (const collection of collectionSlug) {
16
+ const clientCollectionConfig = clientConfig.collections.find(each => each.slug === collection);
17
+ for (const field of filterFields(clientCollectionConfig.fields)) {
18
+ if (fieldAffectsData(field)) {
19
+ if (fields.some(each => fieldAffectsData(each) && each.name === field.name)) {
20
+ continue;
21
+ }
22
+ }
23
+ fields.push(field);
24
+ }
25
+ }
26
+ }
27
+ return columns ? columns?.filter(column => flattenTopLevelFields(fields, {
28
+ i18n,
29
+ keepPresentationalFields: true,
30
+ moveSubFieldsToTop: true
31
+ })?.some(field => {
32
+ const accessor = 'accessor' in field ? field.accessor : 'name' in field ? field.name : undefined;
33
+ return accessor === column.accessor;
34
+ })) : getInitialColumns(isPolymorphic ? fields : filterFields(fields), collectionConfig.admin?.useAsTitle, isPolymorphic ? [] : collectionConfig?.admin?.defaultColumns);
35
+ };
36
+ //# sourceMappingURL=getColumns.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getColumns.js","names":["flattenTopLevelFields","fieldAffectsData","filterFields","getInitialColumns","getColumns","clientConfig","collectionConfig","collectionSlug","columns","i18n","isPolymorphic","Array","isArray","fields","collection","clientCollectionConfig","collections","find","each","slug","field","some","name","push","filter","column","keepPresentationalFields","moveSubFieldsToTop","accessor","undefined","admin","useAsTitle","defaultColumns"],"sources":["../../src/utilities/getColumns.ts"],"sourcesContent":["import type { I18nClient } from '@payloadcms/translations'\nimport type { ClientCollectionConfig, ClientConfig, ColumnPreference } from 'payload'\n\nimport { flattenTopLevelFields } from 'payload'\nimport { fieldAffectsData } from 'payload/shared'\n\nimport { filterFields } from '../providers/TableColumns/buildColumnState/filterFields.js'\nimport { getInitialColumns } from '../providers/TableColumns/getInitialColumns.js'\n\nexport const getColumns = ({\n clientConfig,\n collectionConfig,\n collectionSlug,\n columns,\n i18n,\n}: {\n clientConfig: ClientConfig\n collectionConfig?: ClientCollectionConfig\n collectionSlug: string | string[]\n columns: ColumnPreference[]\n i18n: I18nClient\n}) => {\n const isPolymorphic = Array.isArray(collectionSlug)\n\n const fields = !isPolymorphic ? (collectionConfig?.fields ?? []) : []\n\n if (isPolymorphic) {\n for (const collection of collectionSlug) {\n const clientCollectionConfig = clientConfig.collections.find(\n (each) => each.slug === collection,\n )\n\n for (const field of filterFields(clientCollectionConfig.fields)) {\n if (fieldAffectsData(field)) {\n if (fields.some((each) => fieldAffectsData(each) && each.name === field.name)) {\n continue\n }\n }\n\n fields.push(field)\n }\n }\n }\n\n return columns\n ? columns?.filter((column) =>\n flattenTopLevelFields(fields, {\n i18n,\n keepPresentationalFields: true,\n moveSubFieldsToTop: true,\n })?.some((field) => {\n const accessor =\n 'accessor' in field ? field.accessor : 'name' in field ? field.name : undefined\n return accessor === column.accessor\n }),\n )\n : getInitialColumns(\n isPolymorphic ? fields : filterFields(fields),\n collectionConfig.admin?.useAsTitle,\n isPolymorphic ? [] : collectionConfig?.admin?.defaultColumns,\n )\n}\n"],"mappings":"AAGA,SAASA,qBAAqB,QAAQ;AACtC,SAASC,gBAAgB,QAAQ;AAEjC,SAASC,YAAY,QAAQ;AAC7B,SAASC,iBAAiB,QAAQ;AAElC,OAAO,MAAMC,UAAA,GAAaA,CAAC;EACzBC,YAAY;EACZC,gBAAgB;EAChBC,cAAc;EACdC,OAAO;EACPC;AAAI,CAOL;EACC,MAAMC,aAAA,GAAgBC,KAAA,CAAMC,OAAO,CAACL,cAAA;EAEpC,MAAMM,MAAA,GAAS,CAACH,aAAA,GAAiBJ,gBAAA,EAAkBO,MAAA,IAAU,EAAE,GAAI,EAAE;EAErE,IAAIH,aAAA,EAAe;IACjB,KAAK,MAAMI,UAAA,IAAcP,cAAA,EAAgB;MACvC,MAAMQ,sBAAA,GAAyBV,YAAA,CAAaW,WAAW,CAACC,IAAI,CACzDC,IAAA,IAASA,IAAA,CAAKC,IAAI,KAAKL,UAAA;MAG1B,KAAK,MAAMM,KAAA,IAASlB,YAAA,CAAaa,sBAAA,CAAuBF,MAAM,GAAG;QAC/D,IAAIZ,gBAAA,CAAiBmB,KAAA,GAAQ;UAC3B,IAAIP,MAAA,CAAOQ,IAAI,CAAEH,IAAA,IAASjB,gBAAA,CAAiBiB,IAAA,KAASA,IAAA,CAAKI,IAAI,KAAKF,KAAA,CAAME,IAAI,GAAG;YAC7E;UACF;QACF;QAEAT,MAAA,CAAOU,IAAI,CAACH,KAAA;MACd;IACF;EACF;EAEA,OAAOZ,OAAA,GACHA,OAAA,EAASgB,MAAA,CAAQC,MAAA,IACfzB,qBAAA,CAAsBa,MAAA,EAAQ;IAC5BJ,IAAA;IACAiB,wBAAA,EAA0B;IAC1BC,kBAAA,EAAoB;EACtB,IAAIN,IAAA,CAAMD,KAAA;IACR,MAAMQ,QAAA,GACJ,cAAcR,KAAA,GAAQA,KAAA,CAAMQ,QAAQ,GAAG,UAAUR,KAAA,GAAQA,KAAA,CAAME,IAAI,GAAGO,SAAA;IACxE,OAAOD,QAAA,KAAaH,MAAA,CAAOG,QAAQ;EACrC,MAEFzB,iBAAA,CACEO,aAAA,GAAgBG,MAAA,GAASX,YAAA,CAAaW,MAAA,GACtCP,gBAAA,CAAiBwB,KAAK,EAAEC,UAAA,EACxBrB,aAAA,GAAgB,EAAE,GAAGJ,gBAAA,EAAkBwB,KAAA,EAAOE,cAAA;AAEtD","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"reduceFieldsToOptions.d.ts","sourceRoot":"","sources":["../../src/utilities/reduceFieldsToOptions.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAyB,UAAU,EAAE,MAAM,0BAA0B,CAAA;AACjF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAK1C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAA;AAMrE,KAAK,sBAAsB,GAAG;IAC5B,MAAM,EAAE,WAAW,EAAE,CAAA;IACrB,IAAI,EAAE,UAAU,CAAA;IAChB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,qBAAqB,+CAK/B,sBAAsB,KAAG,YAAY,EAuLvC,CAAA"}
1
+ {"version":3,"file":"reduceFieldsToOptions.d.ts","sourceRoot":"","sources":["../../src/utilities/reduceFieldsToOptions.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAyB,UAAU,EAAE,MAAM,0BAA0B,CAAA;AACjF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAK1C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAA;AAMrE,KAAK,sBAAsB,GAAG;IAC5B,MAAM,EAAE,WAAW,EAAE,CAAA;IACrB,IAAI,EAAE,UAAU,CAAA;IAChB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,qBAAqB,+CAK/B,sBAAsB,KAAG,YAAY,EA2MvC,CAAA"}
@@ -17,7 +17,22 @@ export const reduceFieldsToOptions = ({
17
17
  }) => {
18
18
  return fields.reduce((reduced, field) => {
19
19
  // Do not filter out `field.admin.disableListFilter` fields here, as these should still render as disabled if they appear in the URL query
20
- if (fieldIsHiddenOrDisabled(field) && !fieldIsID(field)) {
20
+ // Filter out `virtual: true` fields since they are regular virtuals and not backed by a DB field
21
+ if (fieldIsHiddenOrDisabled(field) && !fieldIsID(field) || 'virtual' in field && field.virtual === true) {
22
+ return reduced;
23
+ }
24
+ // Handle virtual:string fields (virtual relationships, e.g. "post.title")
25
+ if ('virtual' in field && typeof field.virtual === 'string') {
26
+ const baseLabel = 'label' in field && field.label || 'name' in field && field.name || '';
27
+ const localizedLabel = getTranslation(baseLabel, i18n);
28
+ reduced.push({
29
+ label: localizedLabel,
30
+ plainTextLabel: localizedLabel,
31
+ value: field.virtual,
32
+ ...fieldTypes[field.type],
33
+ field,
34
+ operators: fieldTypes[field.type].operators
35
+ });
21
36
  return reduced;
22
37
  }
23
38
  if (field.type === 'tabs' && 'tabs' in field) {
@@ -1 +1 @@
1
- {"version":3,"file":"reduceFieldsToOptions.js","names":["getTranslation","fieldAffectsData","fieldIsHiddenOrDisabled","fieldIsID","tabHasName","fieldTypes","arrayOperators","createNestedClientFieldPath","combineFieldLabel","reduceFieldsToOptions","fields","i18n","labelPrefix","pathPrefix","reduce","reduced","field","type","tabs","forEach","tab","label","localizedTabLabel","labelWithPrefix","tabPathPrefix","name","push","translatedLabel","pathWithPrefix","operatorKeys","Set","fieldOperators","hasMany","operators","acc","operator","has","value","add","operatorKey","t","localizedLabel","formattedLabel","prefix","fieldPath","formattedField","plainTextLabel"],"sources":["../../src/utilities/reduceFieldsToOptions.tsx"],"sourcesContent":["'use client'\nimport type { ClientTranslationKeys, I18nClient } from '@payloadcms/translations'\nimport type { ClientField } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport { fieldAffectsData, fieldIsHiddenOrDisabled, fieldIsID, tabHasName } from 'payload/shared'\n\nimport type { ReducedField } from '../elements/WhereBuilder/types.js'\n\nimport fieldTypes, { arrayOperators } from '../elements/WhereBuilder/field-types.js'\nimport { createNestedClientFieldPath } from '../forms/Form/createNestedClientFieldPath.js'\nimport { combineFieldLabel } from './combineFieldLabel.js'\n\ntype ReduceFieldOptionsArgs = {\n fields: ClientField[]\n i18n: I18nClient\n labelPrefix?: string\n pathPrefix?: string\n}\n\n/**\n * Reduces a field map to a flat array of fields with labels and values.\n * Used in the WhereBuilder component to render the fields in the dropdown.\n */\nexport const reduceFieldsToOptions = ({\n fields,\n i18n,\n labelPrefix,\n pathPrefix,\n}: ReduceFieldOptionsArgs): ReducedField[] => {\n return fields.reduce((reduced, field) => {\n // Do not filter out `field.admin.disableListFilter` fields here, as these should still render as disabled if they appear in the URL query\n if (fieldIsHiddenOrDisabled(field) && !fieldIsID(field)) {\n return reduced\n }\n\n if (field.type === 'tabs' && 'tabs' in field) {\n const tabs = field.tabs\n\n tabs.forEach((tab) => {\n if (typeof tab.label !== 'boolean') {\n const localizedTabLabel = getTranslation(tab.label, i18n)\n\n const labelWithPrefix = labelPrefix\n ? labelPrefix + ' > ' + localizedTabLabel\n : localizedTabLabel\n\n // Make sure we handle nested tabs\n const tabPathPrefix =\n tabHasName(tab) && tab.name\n ? pathPrefix\n ? pathPrefix + '.' + tab.name\n : tab.name\n : pathPrefix\n\n if (typeof localizedTabLabel === 'string') {\n reduced.push(\n ...reduceFieldsToOptions({\n fields: tab.fields,\n i18n,\n labelPrefix: labelWithPrefix,\n pathPrefix: tabPathPrefix,\n }),\n )\n }\n }\n })\n return reduced\n }\n\n // Rows cant have labels, so we need to handle them differently\n if (field.type === 'row' && 'fields' in field) {\n reduced.push(\n ...reduceFieldsToOptions({\n fields: field.fields,\n i18n,\n labelPrefix,\n pathPrefix,\n }),\n )\n return reduced\n }\n\n if (field.type === 'collapsible' && 'fields' in field) {\n const localizedTabLabel = getTranslation(field.label || '', i18n)\n\n const labelWithPrefix = labelPrefix\n ? labelPrefix + ' > ' + localizedTabLabel\n : localizedTabLabel\n\n reduced.push(\n ...reduceFieldsToOptions({\n fields: field.fields,\n i18n,\n labelPrefix: labelWithPrefix,\n pathPrefix,\n }),\n )\n return reduced\n }\n\n if (field.type === 'group' && 'fields' in field) {\n const translatedLabel = getTranslation(field.label || '', i18n)\n\n const labelWithPrefix = labelPrefix\n ? translatedLabel\n ? labelPrefix + ' > ' + translatedLabel\n : labelPrefix\n : translatedLabel\n\n if (fieldAffectsData(field)) {\n // Make sure we handle deeply nested groups\n const pathWithPrefix = field.name\n ? pathPrefix\n ? pathPrefix + '.' + field.name\n : field.name\n : pathPrefix\n\n reduced.push(\n ...reduceFieldsToOptions({\n fields: field.fields,\n i18n,\n labelPrefix: labelWithPrefix,\n pathPrefix: pathWithPrefix,\n }),\n )\n } else {\n reduced.push(\n ...reduceFieldsToOptions({\n fields: field.fields,\n i18n,\n labelPrefix: labelWithPrefix,\n pathPrefix,\n }),\n )\n }\n\n return reduced\n }\n\n if (field.type === 'array' && 'fields' in field) {\n const translatedLabel = getTranslation(field.label || '', i18n)\n\n const labelWithPrefix = labelPrefix\n ? translatedLabel\n ? labelPrefix + ' > ' + translatedLabel\n : labelPrefix\n : translatedLabel\n\n // Make sure we handle deeply nested groups\n const pathWithPrefix = field.name\n ? pathPrefix\n ? pathPrefix + '.' + field.name\n : field.name\n : pathPrefix\n\n reduced.push(\n ...reduceFieldsToOptions({\n fields: field.fields,\n i18n,\n labelPrefix: labelWithPrefix,\n pathPrefix: pathWithPrefix,\n }),\n )\n\n return reduced\n }\n\n if (typeof fieldTypes[field.type] === 'object') {\n const operatorKeys = new Set()\n\n const fieldOperators =\n 'hasMany' in field && field.hasMany ? arrayOperators : fieldTypes[field.type].operators\n\n const operators = fieldOperators.reduce((acc, operator) => {\n if (!operatorKeys.has(operator.value)) {\n operatorKeys.add(operator.value)\n const operatorKey = `operators:${operator.label}` as ClientTranslationKeys\n acc.push({\n ...operator,\n label: i18n.t(operatorKey),\n })\n }\n\n return acc\n }, [])\n\n const localizedLabel = getTranslation(field.label || '', i18n)\n\n const formattedLabel = labelPrefix\n ? combineFieldLabel({\n field,\n prefix: labelPrefix,\n })\n : localizedLabel\n\n const fieldPath = pathPrefix ? createNestedClientFieldPath(pathPrefix, field) : field.name\n\n const formattedField: ReducedField = {\n label: formattedLabel,\n plainTextLabel: `${labelPrefix ? labelPrefix + ' > ' : ''}${localizedLabel}`,\n value: fieldPath,\n ...fieldTypes[field.type],\n field,\n operators,\n }\n\n reduced.push(formattedField)\n return reduced\n }\n return reduced\n }, [])\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"reduceFieldsToOptions.js","names":["getTranslation","fieldAffectsData","fieldIsHiddenOrDisabled","fieldIsID","tabHasName","fieldTypes","arrayOperators","createNestedClientFieldPath","combineFieldLabel","reduceFieldsToOptions","fields","i18n","labelPrefix","pathPrefix","reduce","reduced","field","virtual","baseLabel","label","name","localizedLabel","push","plainTextLabel","value","type","operators","tabs","forEach","tab","localizedTabLabel","labelWithPrefix","tabPathPrefix","translatedLabel","pathWithPrefix","operatorKeys","Set","fieldOperators","hasMany","acc","operator","has","add","operatorKey","t","formattedLabel","prefix","fieldPath","formattedField"],"sources":["../../src/utilities/reduceFieldsToOptions.tsx"],"sourcesContent":["'use client'\nimport type { ClientTranslationKeys, I18nClient } from '@payloadcms/translations'\nimport type { ClientField } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport { fieldAffectsData, fieldIsHiddenOrDisabled, fieldIsID, tabHasName } from 'payload/shared'\n\nimport type { ReducedField } from '../elements/WhereBuilder/types.js'\n\nimport fieldTypes, { arrayOperators } from '../elements/WhereBuilder/field-types.js'\nimport { createNestedClientFieldPath } from '../forms/Form/createNestedClientFieldPath.js'\nimport { combineFieldLabel } from './combineFieldLabel.js'\n\ntype ReduceFieldOptionsArgs = {\n fields: ClientField[]\n i18n: I18nClient\n labelPrefix?: string\n pathPrefix?: string\n}\n\n/**\n * Reduces a field map to a flat array of fields with labels and values.\n * Used in the WhereBuilder component to render the fields in the dropdown.\n */\nexport const reduceFieldsToOptions = ({\n fields,\n i18n,\n labelPrefix,\n pathPrefix,\n}: ReduceFieldOptionsArgs): ReducedField[] => {\n return fields.reduce((reduced, field) => {\n // Do not filter out `field.admin.disableListFilter` fields here, as these should still render as disabled if they appear in the URL query\n // Filter out `virtual: true` fields since they are regular virtuals and not backed by a DB field\n if (\n (fieldIsHiddenOrDisabled(field) && !fieldIsID(field)) ||\n ('virtual' in field && field.virtual === true)\n ) {\n return reduced\n }\n\n // Handle virtual:string fields (virtual relationships, e.g. \"post.title\")\n if ('virtual' in field && typeof field.virtual === 'string') {\n const baseLabel = ('label' in field && field.label) || ('name' in field && field.name) || ''\n const localizedLabel = getTranslation(baseLabel, i18n)\n\n reduced.push({\n label: localizedLabel,\n plainTextLabel: localizedLabel,\n value: field.virtual, // e.g. \"post.title\"\n ...fieldTypes[field.type],\n field,\n operators: fieldTypes[field.type].operators,\n })\n return reduced\n }\n\n if (field.type === 'tabs' && 'tabs' in field) {\n const tabs = field.tabs\n\n tabs.forEach((tab) => {\n if (typeof tab.label !== 'boolean') {\n const localizedTabLabel = getTranslation(tab.label, i18n)\n\n const labelWithPrefix = labelPrefix\n ? labelPrefix + ' > ' + localizedTabLabel\n : localizedTabLabel\n\n // Make sure we handle nested tabs\n const tabPathPrefix =\n tabHasName(tab) && tab.name\n ? pathPrefix\n ? pathPrefix + '.' + tab.name\n : tab.name\n : pathPrefix\n\n if (typeof localizedTabLabel === 'string') {\n reduced.push(\n ...reduceFieldsToOptions({\n fields: tab.fields,\n i18n,\n labelPrefix: labelWithPrefix,\n pathPrefix: tabPathPrefix,\n }),\n )\n }\n }\n })\n return reduced\n }\n\n // Rows cant have labels, so we need to handle them differently\n if (field.type === 'row' && 'fields' in field) {\n reduced.push(\n ...reduceFieldsToOptions({\n fields: field.fields,\n i18n,\n labelPrefix,\n pathPrefix,\n }),\n )\n return reduced\n }\n\n if (field.type === 'collapsible' && 'fields' in field) {\n const localizedTabLabel = getTranslation(field.label || '', i18n)\n\n const labelWithPrefix = labelPrefix\n ? labelPrefix + ' > ' + localizedTabLabel\n : localizedTabLabel\n\n reduced.push(\n ...reduceFieldsToOptions({\n fields: field.fields,\n i18n,\n labelPrefix: labelWithPrefix,\n pathPrefix,\n }),\n )\n return reduced\n }\n\n if (field.type === 'group' && 'fields' in field) {\n const translatedLabel = getTranslation(field.label || '', i18n)\n\n const labelWithPrefix = labelPrefix\n ? translatedLabel\n ? labelPrefix + ' > ' + translatedLabel\n : labelPrefix\n : translatedLabel\n\n if (fieldAffectsData(field)) {\n // Make sure we handle deeply nested groups\n const pathWithPrefix = field.name\n ? pathPrefix\n ? pathPrefix + '.' + field.name\n : field.name\n : pathPrefix\n\n reduced.push(\n ...reduceFieldsToOptions({\n fields: field.fields,\n i18n,\n labelPrefix: labelWithPrefix,\n pathPrefix: pathWithPrefix,\n }),\n )\n } else {\n reduced.push(\n ...reduceFieldsToOptions({\n fields: field.fields,\n i18n,\n labelPrefix: labelWithPrefix,\n pathPrefix,\n }),\n )\n }\n\n return reduced\n }\n\n if (field.type === 'array' && 'fields' in field) {\n const translatedLabel = getTranslation(field.label || '', i18n)\n\n const labelWithPrefix = labelPrefix\n ? translatedLabel\n ? labelPrefix + ' > ' + translatedLabel\n : labelPrefix\n : translatedLabel\n\n // Make sure we handle deeply nested groups\n const pathWithPrefix = field.name\n ? pathPrefix\n ? pathPrefix + '.' + field.name\n : field.name\n : pathPrefix\n\n reduced.push(\n ...reduceFieldsToOptions({\n fields: field.fields,\n i18n,\n labelPrefix: labelWithPrefix,\n pathPrefix: pathWithPrefix,\n }),\n )\n\n return reduced\n }\n\n if (typeof fieldTypes[field.type] === 'object') {\n const operatorKeys = new Set()\n\n const fieldOperators =\n 'hasMany' in field && field.hasMany ? arrayOperators : fieldTypes[field.type].operators\n\n const operators = fieldOperators.reduce((acc, operator) => {\n if (!operatorKeys.has(operator.value)) {\n operatorKeys.add(operator.value)\n const operatorKey = `operators:${operator.label}` as ClientTranslationKeys\n acc.push({\n ...operator,\n label: i18n.t(operatorKey),\n })\n }\n\n return acc\n }, [])\n\n const localizedLabel = getTranslation(field.label || '', i18n)\n\n const formattedLabel = labelPrefix\n ? combineFieldLabel({\n field,\n prefix: labelPrefix,\n })\n : localizedLabel\n\n const fieldPath = pathPrefix ? createNestedClientFieldPath(pathPrefix, field) : field.name\n\n const formattedField: ReducedField = {\n label: formattedLabel,\n plainTextLabel: `${labelPrefix ? labelPrefix + ' > ' : ''}${localizedLabel}`,\n value: fieldPath,\n ...fieldTypes[field.type],\n field,\n operators,\n }\n\n reduced.push(formattedField)\n return reduced\n }\n return reduced\n }, [])\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,13 +1,13 @@
1
- import type { ClientCollectionConfig, ClientConfig, CollectionConfig, CollectionPreferences, Column, Field, ImportMap, ListQuery, PaginatedDocs, Payload, SanitizedCollectionConfig, ViewTypes } from 'payload';
1
+ import type { ClientCollectionConfig, ClientConfig, CollectionConfig, Column, ColumnPreference, Field, ImportMap, ListQuery, PaginatedDocs, Payload, SanitizedCollectionConfig, ViewTypes } from 'payload';
2
2
  import { type I18nClient } from '@payloadcms/translations';
3
3
  import React from 'react';
4
4
  export declare const renderFilters: (fields: Field[], importMap: ImportMap) => Map<string, React.ReactNode>;
5
- export declare const renderTable: ({ clientCollectionConfig, clientConfig, collectionConfig, collections, columns: columnsFromArgs, customCellProps, data, enableRowSelections, groupByFieldPath, groupByValue, heading, i18n, key, orderableFieldName, payload, query, renderRowTypes, tableAppearance, useAsTitle, viewType, }: {
5
+ export declare const renderTable: ({ clientCollectionConfig, clientConfig, collectionConfig, collections, columns, customCellProps, data, enableRowSelections, groupByFieldPath, groupByValue, heading, i18n, key, orderableFieldName, payload, query, renderRowTypes, tableAppearance, useAsTitle, viewType, }: {
6
6
  clientCollectionConfig?: ClientCollectionConfig;
7
7
  clientConfig?: ClientConfig;
8
8
  collectionConfig?: SanitizedCollectionConfig;
9
9
  collections?: string[];
10
- columns?: CollectionPreferences["columns"];
10
+ columns: ColumnPreference[];
11
11
  customCellProps?: Record<string, unknown>;
12
12
  data?: PaginatedDocs | undefined;
13
13
  drawerSlug?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"renderTable.d.ts","sourceRoot":"","sources":["../../src/utilities/renderTable.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,sBAAsB,EACtB,YAAY,EAEZ,gBAAgB,EAChB,qBAAqB,EACrB,MAAM,EAEN,KAAK,EACL,SAAS,EACT,SAAS,EACT,aAAa,EACb,OAAO,EACP,yBAAyB,EACzB,SAAS,EACV,MAAM,SAAS,CAAA;AAEhB,OAAO,EAAkB,KAAK,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAE1E,OAAO,KAAK,MAAM,OAAO,CAAA;AAsBzB,eAAO,MAAM,aAAa,WAChB,KAAK,EAAE,aACJ,SAAS,KACnB,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,SAAS,CAoB3B,CAAA;AAEH,eAAO,MAAM,WAAW,kSAqBrB;IACD,sBAAsB,CAAC,EAAE,sBAAsB,CAAA;IAC/C,YAAY,CAAC,EAAE,YAAY,CAAA;IAC3B,gBAAgB,CAAC,EAAE,yBAAyB,CAAA;IAC5C,WAAW,CAAC,EAAE,MAAM,EAAE,CAAA;IACtB,OAAO,CAAC,EAAE,qBAAqB,CAAC,SAAS,CAAC,CAAA;IAC1C,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACzC,IAAI,CAAC,EAAE,aAAa,GAAG,SAAS,CAAA;IAChC,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,mBAAmB,EAAE,OAAO,CAAA;IAC5B,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,UAAU,CAAA;IAChB,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,kBAAkB,EAAE,MAAM,CAAA;IAC1B,OAAO,EAAE,OAAO,CAAA;IAChB,KAAK,CAAC,EAAE,SAAS,CAAA;IACjB,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,eAAe,CAAC,EAAE,WAAW,GAAG,SAAS,CAAA;IACzC,UAAU,EAAE,gBAAgB,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC,CAAA;IACnD,QAAQ,CAAC,EAAE,SAAS,CAAA;CACrB,KAAG;IACF,WAAW,EAAE,MAAM,EAAE,CAAA;IACrB,KAAK,EAAE,KAAK,CAAC,SAAS,CAAA;CAmNvB,CAAA"}
1
+ {"version":3,"file":"renderTable.d.ts","sourceRoot":"","sources":["../../src/utilities/renderTable.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,sBAAsB,EACtB,YAAY,EAEZ,gBAAgB,EAChB,MAAM,EACN,gBAAgB,EAChB,KAAK,EACL,SAAS,EACT,SAAS,EACT,aAAa,EACb,OAAO,EACP,yBAAyB,EACzB,SAAS,EACV,MAAM,SAAS,CAAA;AAEhB,OAAO,EAAkB,KAAK,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAE1E,OAAO,KAAK,MAAM,OAAO,CAAA;AAqBzB,eAAO,MAAM,aAAa,WAChB,KAAK,EAAE,aACJ,SAAS,KACnB,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,SAAS,CAoB3B,CAAA;AAEH,eAAO,MAAM,WAAW,iRAqBrB;IACD,sBAAsB,CAAC,EAAE,sBAAsB,CAAA;IAC/C,YAAY,CAAC,EAAE,YAAY,CAAA;IAC3B,gBAAgB,CAAC,EAAE,yBAAyB,CAAA;IAC5C,WAAW,CAAC,EAAE,MAAM,EAAE,CAAA;IACtB,OAAO,EAAE,gBAAgB,EAAE,CAAA;IAC3B,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACzC,IAAI,CAAC,EAAE,aAAa,GAAG,SAAS,CAAA;IAChC,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,mBAAmB,EAAE,OAAO,CAAA;IAC5B,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,UAAU,CAAA;IAChB,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,kBAAkB,EAAE,MAAM,CAAA;IAC1B,OAAO,EAAE,OAAO,CAAA;IAChB,KAAK,CAAC,EAAE,SAAS,CAAA;IACjB,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,eAAe,CAAC,EAAE,WAAW,GAAG,SAAS,CAAA;IACzC,UAAU,EAAE,gBAAgB,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC,CAAA;IACnD,QAAQ,CAAC,EAAE,SAAS,CAAA;CACrB,KAAG;IACF,WAAW,EAAE,MAAM,EAAE,CAAA;IACrB,KAAK,EAAE,KAAK,CAAC,SAAS,CAAA;CAoMvB,CAAA"}
@@ -1,12 +1,11 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { getTranslation } from '@payloadcms/translations';
3
- import { fieldAffectsData, fieldIsHiddenOrDisabled, flattenTopLevelFields } from 'payload/shared';
3
+ import { fieldAffectsData, fieldIsHiddenOrDisabled } from 'payload/shared';
4
4
  import React from 'react';
5
5
  import { RenderServerComponent } from '../elements/RenderServerComponent/index.js';
6
6
  import { GroupByHeader, GroupByPageControls, OrderableTable, Pill, SelectAll, SelectionProvider, SelectRow, SortHeader, SortRow, Table } from '../exports/client/index.js';
7
7
  import { filterFields } from '../providers/TableColumns/buildColumnState/filterFields.js';
8
8
  import { buildColumnState } from '../providers/TableColumns/buildColumnState/index.js';
9
- import { getInitialColumns } from '../providers/TableColumns/getInitialColumns.js';
10
9
  export const renderFilters = (fields, importMap) => fields.reduce((acc, field) => {
11
10
  if (fieldIsHiddenOrDisabled(field)) {
12
11
  return acc;
@@ -24,7 +23,7 @@ export const renderTable = ({
24
23
  clientConfig,
25
24
  collectionConfig,
26
25
  collections,
27
- columns: columnsFromArgs,
26
+ columns,
28
27
  customCellProps,
29
28
  data,
30
29
  enableRowSelections,
@@ -71,14 +70,6 @@ export const renderTable = ({
71
70
  }
72
71
  }
73
72
  }
74
- const columns = columnsFromArgs ? columnsFromArgs?.filter(column => flattenTopLevelFields(clientFields, {
75
- i18n,
76
- keepPresentationalFields: true,
77
- moveSubFieldsToTop: true
78
- })?.some(field => {
79
- const accessor = 'accessor' in field ? field.accessor : 'name' in field ? field.name : undefined;
80
- return accessor === column.accessor;
81
- })) : getInitialColumns(isPolymorphic ? clientFields : filterFields(clientFields), useAsTitle, isPolymorphic ? [] : clientCollectionConfig?.admin?.defaultColumns);
82
73
  const sharedArgs = {
83
74
  clientFields,
84
75
  columns,