@payloadcms/ui 4.0.0-internal.8ba6b5b → 4.0.0-internal.9726517

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 (446) hide show
  1. package/dist/css/z-index.css +9 -0
  2. package/dist/elements/APIKeyInput/index.css +4 -4
  3. package/dist/elements/AnimateHeight/usePatchAnimateHeight.d.ts.map +1 -1
  4. package/dist/elements/AppHeader/index.css +2 -15
  5. package/dist/elements/AppHeader/index.d.ts.map +1 -1
  6. package/dist/elements/AppHeader/index.js +5 -9
  7. package/dist/elements/AppHeader/index.js.map +1 -1
  8. package/dist/elements/ArrayAction/index.d.ts +2 -0
  9. package/dist/elements/ArrayAction/index.d.ts.map +1 -1
  10. package/dist/elements/ArrayAction/index.js +65 -24
  11. package/dist/elements/ArrayAction/index.js.map +1 -1
  12. package/dist/elements/BulkUpload/FormsManager/createFormData.d.ts +2 -2
  13. package/dist/elements/BulkUpload/FormsManager/createFormData.d.ts.map +1 -1
  14. package/dist/elements/BulkUpload/FormsManager/createFormData.js +4 -15
  15. package/dist/elements/BulkUpload/FormsManager/createFormData.js.map +1 -1
  16. package/dist/elements/BulkUpload/FormsManager/index.d.ts.map +1 -1
  17. package/dist/elements/BulkUpload/FormsManager/index.js +1 -1
  18. package/dist/elements/BulkUpload/FormsManager/index.js.map +1 -1
  19. package/dist/elements/Button/index.d.ts.map +1 -1
  20. package/dist/elements/ClipboardAction/ClipboardActionLabel.d.ts.map +1 -1
  21. package/dist/elements/ClipboardAction/clipboardUtilities.d.ts +8 -1
  22. package/dist/elements/ClipboardAction/clipboardUtilities.d.ts.map +1 -1
  23. package/dist/elements/ClipboardAction/clipboardUtilities.js +40 -8
  24. package/dist/elements/ClipboardAction/clipboardUtilities.js.map +1 -1
  25. package/dist/elements/ClipboardAction/clipboardUtilities.spec.js +120 -0
  26. package/dist/elements/ClipboardAction/clipboardUtilities.spec.js.map +1 -0
  27. package/dist/elements/ClipboardAction/index.d.ts.map +1 -1
  28. package/dist/elements/ClipboardAction/index.js +17 -1
  29. package/dist/elements/ClipboardAction/index.js.map +1 -1
  30. package/dist/elements/ClipboardAction/isClipboardDataValid.spec.js +144 -0
  31. package/dist/elements/ClipboardAction/isClipboardDataValid.spec.js.map +1 -0
  32. package/dist/elements/ClipboardAction/types.d.ts +3 -0
  33. package/dist/elements/ClipboardAction/types.d.ts.map +1 -1
  34. package/dist/elements/ClipboardAction/types.js.map +1 -1
  35. package/dist/elements/ClipboardAction/useCanPasteClipboard.d.ts +10 -0
  36. package/dist/elements/ClipboardAction/useCanPasteClipboard.d.ts.map +1 -0
  37. package/dist/elements/ClipboardAction/useCanPasteClipboard.js +21 -0
  38. package/dist/elements/ClipboardAction/useCanPasteClipboard.js.map +1 -0
  39. package/dist/elements/CodeEditor/CodeEditor.d.ts.map +1 -1
  40. package/dist/elements/CodeEditor/index.css +5 -0
  41. package/dist/elements/ColumnSelection/Popup.d.ts.map +1 -1
  42. package/dist/elements/ColumnSelection/Popup.js +5 -1
  43. package/dist/elements/ColumnSelection/Popup.js.map +1 -1
  44. package/dist/elements/ColumnSelection/matchesColumnSearch.d.ts +10 -0
  45. package/dist/elements/ColumnSelection/matchesColumnSearch.d.ts.map +1 -0
  46. package/dist/elements/ColumnSelection/matchesColumnSearch.js +21 -0
  47. package/dist/elements/ColumnSelection/matchesColumnSearch.js.map +1 -0
  48. package/dist/elements/ColumnSelection/matchesColumnSearch.spec.js +87 -0
  49. package/dist/elements/ColumnSelection/matchesColumnSearch.spec.js.map +1 -0
  50. package/dist/elements/DatePicker/DatePicker.d.ts.map +1 -1
  51. package/dist/elements/DatePicker/getFormattedLocale.d.ts.map +1 -1
  52. package/dist/elements/Dialog/DialogTitle/index.d.ts.map +1 -1
  53. package/dist/elements/DocumentControls/index.css +0 -2
  54. package/dist/elements/DocumentControls/index.d.ts +2 -2
  55. package/dist/elements/DocumentControls/index.d.ts.map +1 -1
  56. package/dist/elements/DocumentControls/index.js.map +1 -1
  57. package/dist/elements/DocumentDrawer/DrawerHeader/index.d.ts +2 -2
  58. package/dist/elements/DocumentDrawer/DrawerHeader/index.d.ts.map +1 -1
  59. package/dist/elements/DocumentDrawer/DrawerHeader/index.js.map +1 -1
  60. package/dist/elements/DocumentHeader/Tabs/tabs/index.d.ts.map +1 -1
  61. package/dist/elements/DocumentLocked/index.d.ts +2 -2
  62. package/dist/elements/DocumentLocked/index.d.ts.map +1 -1
  63. package/dist/elements/DocumentLocked/index.js.map +1 -1
  64. package/dist/elements/DraggableSortable/useDraggableSortable/index.d.ts.map +1 -1
  65. package/dist/elements/Drawer/index.d.ts.map +1 -1
  66. package/dist/elements/Drawer/index.js +1 -0
  67. package/dist/elements/Drawer/index.js.map +1 -1
  68. package/dist/elements/Drawer/useDrawerSlug.d.ts.map +1 -1
  69. package/dist/elements/DrawerActionHeader/index.d.ts.map +1 -1
  70. package/dist/elements/FieldSelect/reduceFieldOptions.d.ts.map +1 -1
  71. package/dist/elements/FileManager/index.d.ts +1 -1
  72. package/dist/elements/FileManager/index.d.ts.map +1 -1
  73. package/dist/elements/FileManager/index.js.map +1 -1
  74. package/dist/elements/HTMLDiff/diff/index.d.ts.map +1 -1
  75. package/dist/elements/HTMLDiff/index.d.ts.map +1 -1
  76. package/dist/elements/Hierarchy/ColumnBrowser/index.d.ts.map +1 -1
  77. package/dist/elements/Hierarchy/Modal/index.d.ts.map +1 -1
  78. package/dist/elements/Hierarchy/Modal/useHierarchyModal.d.ts.map +1 -1
  79. package/dist/elements/Hierarchy/Search/useHierarchySearch.d.ts.map +1 -1
  80. package/dist/elements/Hierarchy/Tree/TreeFocusContext.d.ts +1 -1
  81. package/dist/elements/Hierarchy/Tree/TreeFocusContext.d.ts.map +1 -1
  82. package/dist/elements/Hierarchy/Tree/TreeNode/index.d.ts.map +1 -1
  83. package/dist/elements/Hierarchy/Tree/useChildren.d.ts.map +1 -1
  84. package/dist/elements/LeaveWithoutSaving/index.d.ts.map +1 -1
  85. package/dist/elements/LeaveWithoutSaving/usePreventLeave.d.ts.map +1 -1
  86. package/dist/elements/ListDrawer/index.d.ts.map +1 -1
  87. package/dist/elements/LoadingOverlay/reducer.d.ts.map +1 -1
  88. package/dist/elements/Locked/index.css +7 -4
  89. package/dist/elements/Locked/index.d.ts +2 -2
  90. package/dist/elements/Locked/index.d.ts.map +1 -1
  91. package/dist/elements/Locked/index.js +66 -53
  92. package/dist/elements/Locked/index.js.map +1 -1
  93. package/dist/elements/Nav/index.css +0 -5
  94. package/dist/elements/Pagination/index.css +5 -0
  95. package/dist/elements/Pagination/index.d.ts.map +1 -1
  96. package/dist/elements/Pagination/index.js +21 -21
  97. package/dist/elements/Pagination/index.js.map +1 -1
  98. package/dist/elements/PublishButton/ScheduleDrawer/buildUpcomingColumns.d.ts.map +1 -1
  99. package/dist/elements/PublishButton/ScheduleDrawer/buildUpcomingScheduleWhere.d.ts.map +1 -1
  100. package/dist/elements/ReactSelect/DefaultMenuPortal.d.ts +7 -0
  101. package/dist/elements/ReactSelect/DefaultMenuPortal.d.ts.map +1 -0
  102. package/dist/elements/ReactSelect/DefaultMenuPortal.js +120 -0
  103. package/dist/elements/ReactSelect/DefaultMenuPortal.js.map +1 -0
  104. package/dist/elements/ReactSelect/getCaptureMenuScroll.d.ts.map +1 -1
  105. package/dist/elements/ReactSelect/getMenuListStyles.d.ts +1 -1
  106. package/dist/elements/ReactSelect/getMenuListStyles.d.ts.map +1 -1
  107. package/dist/elements/ReactSelect/getMenuListStyles.js +13 -5
  108. package/dist/elements/ReactSelect/getMenuListStyles.js.map +1 -1
  109. package/dist/elements/ReactSelect/getMenuStyles.d.ts +10 -0
  110. package/dist/elements/ReactSelect/getMenuStyles.d.ts.map +1 -0
  111. package/dist/elements/ReactSelect/getMenuStyles.js +21 -0
  112. package/dist/elements/ReactSelect/getMenuStyles.js.map +1 -0
  113. package/dist/elements/ReactSelect/index.css +8 -1
  114. package/dist/elements/ReactSelect/index.d.ts.map +1 -1
  115. package/dist/elements/ReactSelect/index.js +24 -101
  116. package/dist/elements/ReactSelect/index.js.map +1 -1
  117. package/dist/elements/ReactSelect/types.d.ts +1 -2
  118. package/dist/elements/ReactSelect/types.d.ts.map +1 -1
  119. package/dist/elements/ReactSelect/types.js.map +1 -1
  120. package/dist/elements/RelationshipTable/AddNewButton.d.ts +2 -2
  121. package/dist/elements/RelationshipTable/AddNewButton.d.ts.map +1 -1
  122. package/dist/elements/RelationshipTable/index.css +0 -2
  123. package/dist/elements/Search/ListSearchFilter/index.d.ts.map +1 -1
  124. package/dist/elements/Search/ListSearchFilter/index.js +1 -0
  125. package/dist/elements/Search/ListSearchFilter/index.js.map +1 -1
  126. package/dist/elements/Search/SearchInput/index.d.ts +2 -0
  127. package/dist/elements/Search/SearchInput/index.d.ts.map +1 -1
  128. package/dist/elements/Search/SearchInput/index.js +21 -18
  129. package/dist/elements/Search/SearchInput/index.js.map +1 -1
  130. package/dist/elements/SelectAll/index.css +3 -1
  131. package/dist/elements/SelectRow/index.d.ts +2 -2
  132. package/dist/elements/SelectRow/index.d.ts.map +1 -1
  133. package/dist/elements/SelectRow/index.js.map +1 -1
  134. package/dist/elements/Table/DefaultCell/fields/index.d.ts +1 -1
  135. package/dist/elements/Table/DefaultCell/fields/index.d.ts.map +1 -1
  136. package/dist/elements/Table/OrderableRow.d.ts.map +1 -1
  137. package/dist/elements/Table/OrderableRowDragPreview.d.ts.map +1 -1
  138. package/dist/elements/Table/index.css +19 -0
  139. package/dist/elements/Tabs/index.d.ts.map +1 -1
  140. package/dist/elements/Thumbnail/createThumbnail.d.ts.map +1 -1
  141. package/dist/elements/Thumbnail/index.d.ts +1 -1
  142. package/dist/elements/Thumbnail/index.d.ts.map +1 -1
  143. package/dist/elements/Thumbnail/index.js.map +1 -1
  144. package/dist/elements/TimezonePicker/index.d.ts.map +1 -1
  145. package/dist/elements/TimezonePicker/index.js +5 -1
  146. package/dist/elements/TimezonePicker/index.js.map +1 -1
  147. package/dist/elements/Upload/index.d.ts.map +1 -1
  148. package/dist/elements/UserMenu/SubMenuHeader/index.d.ts.map +1 -1
  149. package/dist/elements/UserMenu/SubMenuHeader/index.js +8 -9
  150. package/dist/elements/UserMenu/SubMenuHeader/index.js.map +1 -1
  151. package/dist/elements/UserMenu/index.css +26 -1
  152. package/dist/elements/WhereBuilder/Condition/Relationship/optionsReducer.d.ts.map +1 -1
  153. package/dist/elements/WhereBuilder/Condition/Select/formatOptions.d.ts.map +1 -1
  154. package/dist/elements/WhereBuilder/Condition/validOperators.d.ts.map +1 -1
  155. package/dist/elements/WhereBuilder/field-types.d.ts.map +1 -1
  156. package/dist/exports/client/index.d.ts +0 -1
  157. package/dist/exports/client/index.d.ts.map +1 -1
  158. package/dist/exports/client/index.js +1 -1
  159. package/dist/exports/client/index.js.map +3 -3
  160. package/dist/exports/layouts.d.ts +1 -0
  161. package/dist/exports/layouts.d.ts.map +1 -1
  162. package/dist/exports/layouts.js +1 -0
  163. package/dist/exports/layouts.js.map +1 -1
  164. package/dist/exports/shared/index.d.ts +1 -0
  165. package/dist/exports/shared/index.d.ts.map +1 -1
  166. package/dist/exports/shared/index.js +2 -2
  167. package/dist/exports/shared/index.js.map +4 -4
  168. package/dist/fields/Array/ArrayRow.d.ts.map +1 -1
  169. package/dist/fields/Array/ArrayRow.js +97 -160
  170. package/dist/fields/Array/ArrayRow.js.map +1 -1
  171. package/dist/fields/Array/index.d.ts +1 -1
  172. package/dist/fields/Array/index.d.ts.map +1 -1
  173. package/dist/fields/Array/index.js +7 -4
  174. package/dist/fields/Array/index.js.map +1 -1
  175. package/dist/fields/Blocks/BlockRow.d.ts.map +1 -1
  176. package/dist/fields/Blocks/BlockRow.js +134 -195
  177. package/dist/fields/Blocks/BlockRow.js.map +1 -1
  178. package/dist/fields/Blocks/RowActions.d.ts +2 -0
  179. package/dist/fields/Blocks/RowActions.d.ts.map +1 -1
  180. package/dist/fields/Blocks/RowActions.js +23 -20
  181. package/dist/fields/Blocks/RowActions.js.map +1 -1
  182. package/dist/fields/Blocks/index.d.ts +1 -1
  183. package/dist/fields/Blocks/index.d.ts.map +1 -1
  184. package/dist/fields/Blocks/index.js +6 -3
  185. package/dist/fields/Blocks/index.js.map +1 -1
  186. package/dist/fields/Checkbox/index.d.ts +1 -1
  187. package/dist/fields/Code/index.css +1 -1
  188. package/dist/fields/Code/index.d.ts +2 -2
  189. package/dist/fields/Collapsible/index.d.ts +1 -1
  190. package/dist/fields/DateTime/index.d.ts +1 -1
  191. package/dist/fields/Email/index.d.ts +1 -1
  192. package/dist/fields/Group/index.d.ts +2 -2
  193. package/dist/fields/JSON/index.d.ts +1 -1
  194. package/dist/fields/Join/index.d.ts +1 -1
  195. package/dist/fields/Number/index.d.ts +1 -1
  196. package/dist/fields/Password/types.d.ts +3 -3
  197. package/dist/fields/Password/types.d.ts.map +1 -1
  198. package/dist/fields/Password/types.js.map +1 -1
  199. package/dist/fields/Point/index.d.ts +1 -1
  200. package/dist/fields/Relationship/findOptionsByValue.d.ts.map +1 -1
  201. package/dist/fields/Relationship/index.d.ts +1 -1
  202. package/dist/fields/Relationship/optionsReducer.d.ts.map +1 -1
  203. package/dist/fields/Row/index.d.ts +1 -1
  204. package/dist/fields/Select/index.d.ts +1 -1
  205. package/dist/fields/Select/index.d.ts.map +1 -1
  206. package/dist/fields/Tabs/index.d.ts +1 -1
  207. package/dist/fields/Text/index.d.ts +1 -1
  208. package/dist/fields/Text/types.d.ts +2 -2
  209. package/dist/fields/Text/types.d.ts.map +1 -1
  210. package/dist/fields/Text/types.js.map +1 -1
  211. package/dist/fields/Textarea/index.d.ts +1 -1
  212. package/dist/fields/mergeFieldStyles.d.ts +1 -1
  213. package/dist/fields/mergeFieldStyles.d.ts.map +1 -1
  214. package/dist/forms/Form/context.d.ts.map +1 -1
  215. package/dist/forms/Form/createNestedClientFieldPath.d.ts.map +1 -1
  216. package/dist/forms/Form/errorMessages.d.ts.map +1 -1
  217. package/dist/forms/Form/index.d.ts.map +1 -1
  218. package/dist/forms/Form/index.js +3 -14
  219. package/dist/forms/Form/index.js.map +1 -1
  220. package/dist/forms/Form/mergeServerFormState.d.ts.map +1 -1
  221. package/dist/forms/Form/reduceToSerializableFields.d.ts.map +1 -1
  222. package/dist/forms/Form/rowHelpers.d.ts.map +1 -1
  223. package/dist/forms/Form/rows.d.ts.map +1 -1
  224. package/dist/forms/RenderFields/RenderField.d.ts +1 -1
  225. package/dist/forms/RenderFields/index.css +16 -2
  226. package/dist/forms/WatchChildErrors/buildPathSegments.d.ts.map +1 -1
  227. package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.d.ts.map +1 -1
  228. package/dist/forms/fieldSchemasToFormState/calculateDefaultValues/index.d.ts.map +1 -1
  229. package/dist/forms/fieldSchemasToFormState/calculateDefaultValues/iterateFields.d.ts.map +1 -1
  230. package/dist/forms/fieldSchemasToFormState/calculateDefaultValues/promise.d.ts.map +1 -1
  231. package/dist/forms/fieldSchemasToFormState/index.d.ts.map +1 -1
  232. package/dist/forms/fieldSchemasToFormState/iterateFields.d.ts.map +1 -1
  233. package/dist/forms/useField/index.d.ts.map +1 -1
  234. package/dist/forms/withCondition/index.d.ts +1 -1
  235. package/dist/forms/withCondition/index.d.ts.map +1 -1
  236. package/dist/hooks/useDebouncedCallback.d.ts.map +1 -1
  237. package/dist/hooks/useDelay.d.ts.map +1 -1
  238. package/dist/hooks/useElementHeightVariable.d.ts.map +1 -1
  239. package/dist/hooks/useHotkey.d.ts.map +1 -1
  240. package/dist/hooks/useIntersect.d.ts.map +1 -1
  241. package/dist/hooks/usePopupWindow.d.ts +1 -1
  242. package/dist/hooks/usePopupWindow.d.ts.map +1 -1
  243. package/dist/hooks/useRelatedCollections.d.ts.map +1 -1
  244. package/dist/hooks/useResize.d.ts.map +1 -1
  245. package/dist/hooks/useUseAsTitle.d.ts.map +1 -1
  246. package/dist/layouts/Root/index.d.ts.map +1 -1
  247. package/dist/layouts/Root/index.js +7 -3
  248. package/dist/layouts/Root/index.js.map +1 -1
  249. package/dist/layouts/Root/index.spec.js +20 -0
  250. package/dist/layouts/Root/index.spec.js.map +1 -0
  251. package/dist/layouts/Root/viewport.d.ts +5 -0
  252. package/dist/layouts/Root/viewport.d.ts.map +1 -0
  253. package/dist/layouts/Root/viewport.js +17 -0
  254. package/dist/layouts/Root/viewport.js.map +1 -0
  255. package/dist/providers/Auth/index.d.ts +6 -6
  256. package/dist/providers/Auth/index.d.ts.map +1 -1
  257. package/dist/providers/Auth/index.js.map +1 -1
  258. package/dist/providers/ClientFunction/index.d.ts.map +1 -1
  259. package/dist/providers/DocumentInfo/index.js.map +1 -1
  260. package/dist/providers/DocumentInfo/types.d.ts +5 -5
  261. package/dist/providers/DocumentInfo/types.d.ts.map +1 -1
  262. package/dist/providers/DocumentInfo/types.js.map +1 -1
  263. package/dist/providers/DocumentInfo/useGetDocPermissions.d.ts.map +1 -1
  264. package/dist/providers/ListQuery/index.d.ts.map +1 -1
  265. package/dist/providers/ListQuery/index.js +8 -1
  266. package/dist/providers/ListQuery/index.js.map +1 -1
  267. package/dist/providers/ListQuery/mergeQuery.d.ts.map +1 -1
  268. package/dist/providers/ListQuery/sanitizeQuery.d.ts.map +1 -1
  269. package/dist/providers/LivePreview/sizeReducer.d.ts +1 -1
  270. package/dist/providers/LivePreview/sizeReducer.d.ts.map +1 -1
  271. package/dist/providers/TableColumns/buildColumnState/filterFields.d.ts.map +1 -1
  272. package/dist/providers/TableColumns/buildColumnState/filterFieldsWithPermissions.d.ts.map +1 -1
  273. package/dist/providers/TableColumns/buildColumnState/findValueFromPath.d.ts.map +1 -1
  274. package/dist/providers/TableColumns/buildColumnState/index.d.ts.map +1 -1
  275. package/dist/providers/TableColumns/buildColumnState/index.js +1 -1
  276. package/dist/providers/TableColumns/buildColumnState/index.js.map +1 -1
  277. package/dist/providers/TableColumns/buildColumnState/index.spec.js +40 -0
  278. package/dist/providers/TableColumns/buildColumnState/index.spec.js.map +1 -0
  279. package/dist/providers/TableColumns/getInitialColumns.d.ts +1 -1
  280. package/dist/providers/TableColumns/getInitialColumns.d.ts.map +1 -1
  281. package/dist/providers/Theme/index.d.ts +2 -2
  282. package/dist/providers/Theme/index.d.ts.map +1 -1
  283. package/dist/providers/Theme/index.js +2 -1
  284. package/dist/providers/Theme/index.js.map +1 -1
  285. package/dist/providers/Theme/shared.d.ts +3 -0
  286. package/dist/providers/Theme/shared.d.ts.map +1 -0
  287. package/dist/providers/Theme/shared.js +2 -0
  288. package/dist/providers/Theme/shared.js.map +1 -0
  289. package/dist/providers/UploadEdits/index.d.ts.map +1 -1
  290. package/dist/providers/UploadHandlers/index.d.ts +2 -7
  291. package/dist/providers/UploadHandlers/index.d.ts.map +1 -1
  292. package/dist/providers/UploadHandlers/index.js +102 -42
  293. package/dist/providers/UploadHandlers/index.js.map +1 -1
  294. package/dist/styles.css +11 -1
  295. package/dist/utilities/api.d.ts.map +1 -1
  296. package/dist/utilities/buildClientFieldSchemaMap/index.d.ts.map +1 -1
  297. package/dist/utilities/buildClientFieldSchemaMap/traverseFields.d.ts.map +1 -1
  298. package/dist/utilities/buildFieldSchemaMap/index.d.ts.map +1 -1
  299. package/dist/utilities/buildFieldSchemaMap/traverseFields.d.ts.map +1 -1
  300. package/dist/utilities/buildFormState.d.ts +2 -2
  301. package/dist/utilities/buildFormState.d.ts.map +1 -1
  302. package/dist/utilities/buildFormState.js.map +1 -1
  303. package/dist/utilities/checkDependencies.d.ts.map +1 -1
  304. package/dist/utilities/combineFieldLabel.d.ts.map +1 -1
  305. package/dist/utilities/copyDataFromLocale.d.ts.map +1 -1
  306. package/dist/utilities/filterOutUploadFields.d.ts.map +1 -1
  307. package/dist/utilities/findLocaleFromCode.d.ts.map +1 -1
  308. package/dist/utilities/formatAbsoluteURL.d.ts.map +1 -1
  309. package/dist/utilities/formatDocTitle/formatDateTitle.d.ts.map +1 -1
  310. package/dist/utilities/formatDocTitle/formatRelationshipTitle.d.ts.map +1 -1
  311. package/dist/utilities/formatDocTitle/index.d.ts +1 -1
  312. package/dist/utilities/formatDocTitle/index.d.ts.map +1 -1
  313. package/dist/utilities/formatDocTitle/index.js +1 -1
  314. package/dist/utilities/formatDocTitle/index.js.map +1 -1
  315. package/dist/utilities/formatFields.d.ts.map +1 -1
  316. package/dist/utilities/formatMetadata.d.ts.map +1 -1
  317. package/dist/utilities/generateFieldID.d.ts.map +1 -1
  318. package/dist/utilities/getColumns.d.ts.map +1 -1
  319. package/dist/utilities/getDisplayedFieldValue.d.ts.map +1 -1
  320. package/dist/utilities/getDocPreferences.d.ts.map +1 -1
  321. package/dist/utilities/getDocumentData.d.ts.map +1 -1
  322. package/dist/utilities/getDocumentPermissions.d.ts.map +1 -1
  323. package/dist/utilities/getGlobalData.d.ts +2 -2
  324. package/dist/utilities/getGlobalData.d.ts.map +1 -1
  325. package/dist/utilities/getGlobalData.js.map +1 -1
  326. package/dist/utilities/getHasScheduledPublish.d.ts.map +1 -1
  327. package/dist/utilities/getIsLocked.d.ts.map +1 -1
  328. package/dist/utilities/getLanguageDir.d.ts +12 -0
  329. package/dist/utilities/getLanguageDir.d.ts.map +1 -0
  330. package/dist/utilities/getLanguageDir.js +12 -0
  331. package/dist/utilities/getLanguageDir.js.map +1 -0
  332. package/dist/utilities/getOffsetTop.d.ts.map +1 -1
  333. package/dist/utilities/getRequestHighContrast.d.ts.map +1 -1
  334. package/dist/utilities/getRequestLanguage.d.ts.map +1 -1
  335. package/dist/utilities/getRequestTheme.d.ts +1 -1
  336. package/dist/utilities/getRequestTheme.d.ts.map +1 -1
  337. package/dist/utilities/getRequestTheme.js +1 -1
  338. package/dist/utilities/getRequestTheme.js.map +1 -1
  339. package/dist/utilities/getRouteWithoutAdmin.d.ts.map +1 -1
  340. package/dist/utilities/getSupportedMonacoLocale.d.ts.map +1 -1
  341. package/dist/utilities/getVersions.d.ts.map +1 -1
  342. package/dist/utilities/handleAuthRedirect.d.ts.map +1 -1
  343. package/dist/utilities/handleBackToDashboard.d.ts.map +1 -1
  344. package/dist/utilities/handleFormStateLocking.d.ts.map +1 -1
  345. package/dist/utilities/handleGoBack.d.ts.map +1 -1
  346. package/dist/utilities/handleLivePreview.d.ts.map +1 -1
  347. package/dist/utilities/handlePreview.d.ts.map +1 -1
  348. package/dist/utilities/handleServerFunctions.d.ts.map +1 -1
  349. package/dist/utilities/handleStaleDataCheck.d.ts.map +1 -1
  350. package/dist/utilities/handleTakeOver.d.ts +5 -5
  351. package/dist/utilities/handleTakeOver.d.ts.map +1 -1
  352. package/dist/utilities/handleTakeOver.js.map +1 -1
  353. package/dist/utilities/hasOptionLabelJSXElement.d.ts.map +1 -1
  354. package/dist/utilities/hasSavePermission.d.ts.map +1 -1
  355. package/dist/utilities/initReq.d.ts.map +1 -1
  356. package/dist/utilities/isClientUserObject.d.ts +2 -2
  357. package/dist/utilities/isClientUserObject.d.ts.map +1 -1
  358. package/dist/utilities/isClientUserObject.js.map +1 -1
  359. package/dist/utilities/isCustomAdminView.d.ts.map +1 -1
  360. package/dist/utilities/isEditing.d.ts.map +1 -1
  361. package/dist/utilities/isPathMatchingRoute.d.ts.map +1 -1
  362. package/dist/utilities/isPublicAdminRoute.d.ts.map +1 -1
  363. package/dist/utilities/isURLAllowed.d.ts.map +1 -1
  364. package/dist/utilities/recentlyViewed.d.ts.map +1 -1
  365. package/dist/utilities/reduceFieldsToOptions.d.ts.map +1 -1
  366. package/dist/utilities/reduceFieldsToValuesWithValidation.d.ts.map +1 -1
  367. package/dist/utilities/renderTable.d.ts +2 -2
  368. package/dist/utilities/renderTable.d.ts.map +1 -1
  369. package/dist/utilities/resolveFilterOptions.d.ts +1 -1
  370. package/dist/utilities/resolveFilterOptions.d.ts.map +1 -1
  371. package/dist/utilities/sanitizeFilterOptionsQuery.d.ts.map +1 -1
  372. package/dist/utilities/scrollToID.d.ts.map +1 -1
  373. package/dist/utilities/selectiveCache.d.ts.map +1 -1
  374. package/dist/utilities/setsAreEqual.d.ts.map +1 -1
  375. package/dist/utilities/traverseForLocalizedFields.d.ts.map +1 -1
  376. package/dist/utilities/upsertPreferences.d.ts.map +1 -1
  377. package/dist/views/CollectionTrash/generateCollectionTrashMetadata.d.ts.map +1 -1
  378. package/dist/views/Dashboard/Default/index.d.ts +2 -2
  379. package/dist/views/Dashboard/Default/index.d.ts.map +1 -1
  380. package/dist/views/Dashboard/Default/index.js.map +1 -1
  381. package/dist/views/Document/getCustomDocumentViewByKey.d.ts +1 -1
  382. package/dist/views/Document/getCustomDocumentViewByKey.d.ts.map +1 -1
  383. package/dist/views/Document/getCustomViewByRoute.d.ts +1 -1
  384. package/dist/views/Document/getCustomViewByRoute.d.ts.map +1 -1
  385. package/dist/views/Document/getDocumentView.d.ts.map +1 -1
  386. package/dist/views/Document/getMetaBySegment.d.ts.map +1 -1
  387. package/dist/views/Document/index.d.ts +1 -1
  388. package/dist/views/Document/index.d.ts.map +1 -1
  389. package/dist/views/Document/recordRecentlyViewed.d.ts.map +1 -1
  390. package/dist/views/Edit/index.d.ts.map +1 -1
  391. package/dist/views/Edit/index.js.map +1 -1
  392. package/dist/views/HierarchyList/HierarchyTable/SlotTable.d.ts +2 -2
  393. package/dist/views/HierarchyList/HierarchyTable/SlotTable.d.ts.map +1 -1
  394. package/dist/views/HierarchyList/HierarchyTable/SlotTable.js.map +1 -1
  395. package/dist/views/HierarchyList/HierarchyTable/types.d.ts +2 -2
  396. package/dist/views/HierarchyList/HierarchyTable/types.d.ts.map +1 -1
  397. package/dist/views/HierarchyList/HierarchyTable/types.js.map +1 -1
  398. package/dist/views/HierarchyList/TypeFilter/index.d.ts.map +1 -1
  399. package/dist/views/HierarchyList/TypeFilter/index.js +3 -0
  400. package/dist/views/HierarchyList/TypeFilter/index.js.map +1 -1
  401. package/dist/views/HierarchyList/index.d.ts.map +1 -1
  402. package/dist/views/HierarchyList/index.js +2 -6
  403. package/dist/views/HierarchyList/index.js.map +1 -1
  404. package/dist/views/List/createSerializableValue.d.ts.map +1 -1
  405. package/dist/views/List/extractRelationshipDisplayValue.d.ts.map +1 -1
  406. package/dist/views/List/extractValueOrRelationshipID.d.ts.map +1 -1
  407. package/dist/views/List/generateListViewMetadata.d.ts.map +1 -1
  408. package/dist/views/List/handleGroupBy.d.ts.map +1 -1
  409. package/dist/views/List/handleHierarchy.d.ts +1 -1
  410. package/dist/views/List/handleHierarchy.d.ts.map +1 -1
  411. package/dist/views/List/index.d.ts.map +1 -1
  412. package/dist/views/List/renderListViewSlots.d.ts.map +1 -1
  413. package/dist/views/List/resolveAllFilterOptions.d.ts.map +1 -1
  414. package/dist/views/List/transformColumnsToSelect.d.ts.map +1 -1
  415. package/dist/views/NotFound/page.d.ts.map +1 -1
  416. package/dist/views/Root/generateCustomViewMetadata.d.ts.map +1 -1
  417. package/dist/views/Root/generatePageMetadata.d.ts.map +1 -1
  418. package/dist/views/Root/getCustomCollectionViewByRoute.d.ts +1 -1
  419. package/dist/views/Root/getCustomCollectionViewByRoute.d.ts.map +1 -1
  420. package/dist/views/Root/getCustomGlobalViewByRoute.d.ts +1 -1
  421. package/dist/views/Root/getCustomGlobalViewByRoute.d.ts.map +1 -1
  422. package/dist/views/Root/getCustomViewByKey.d.ts.map +1 -1
  423. package/dist/views/Root/getCustomViewByRoute.d.ts.map +1 -1
  424. package/dist/views/Root/getRouteData.d.ts.map +1 -1
  425. package/dist/views/Root/index.d.ts.map +1 -1
  426. package/dist/views/Unauthorized/index.d.ts.map +1 -1
  427. package/dist/views/Version/RenderFieldsToDiff/RenderVersionFieldsToDiff.d.ts.map +1 -1
  428. package/dist/views/Version/RenderFieldsToDiff/buildVersionFields.d.ts.map +1 -1
  429. package/dist/views/Version/RenderFieldsToDiff/fields/Relationship/generateLabelFromValue.d.ts.map +1 -1
  430. package/dist/views/Version/RenderFieldsToDiff/index.d.ts.map +1 -1
  431. package/dist/views/Version/SelectComparison/VersionDrawer/index.d.ts.map +1 -1
  432. package/dist/views/Versions/buildColumns.d.ts +1 -1
  433. package/dist/views/Versions/buildColumns.d.ts.map +1 -1
  434. package/dist/views/Versions/fetchVersions.d.ts +4 -4
  435. package/dist/views/Versions/fetchVersions.d.ts.map +1 -1
  436. package/dist/widgets/CollectionCards/getCollectionCardsData.d.ts +2 -2
  437. package/dist/widgets/CollectionCards/getCollectionCardsData.d.ts.map +1 -1
  438. package/dist/widgets/CollectionCards/getCollectionCardsData.js.map +1 -1
  439. package/dist/widgets/CollectionCards/index.client.js.map +1 -1
  440. package/dist/widgets/WidgetCard/index.css +1 -1
  441. package/package.json +5 -4
  442. package/dist/elements/Nav/NavToggler/index.css +0 -12
  443. package/dist/elements/Nav/NavToggler/index.d.ts +0 -9
  444. package/dist/elements/Nav/NavToggler/index.d.ts.map +0 -1
  445. package/dist/elements/Nav/NavToggler/index.js +0 -91
  446. package/dist/elements/Nav/NavToggler/index.js.map +0 -1
@@ -1,6 +1,5 @@
1
1
  'use client';
2
2
 
3
- import { c as _c } from "react/compiler-runtime";
4
3
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
5
4
  import { getTranslation } from '@payloadcms/translations';
6
5
  import React from 'react';
@@ -16,214 +15,154 @@ import { useTranslation } from '../../providers/Translation/index.js';
16
15
  import { RowActions } from './RowActions.js';
17
16
  import { SectionTitle } from './SectionTitle/index.js';
18
17
  const baseClass = 'blocks-field';
19
- export const BlockRow = t0 => {
20
- const $ = _c(45);
21
- const {
22
- addRow,
23
- attributes,
24
- block,
25
- blocks,
26
- copyRow,
27
- duplicateRow,
28
- errorCount,
29
- fields,
30
- hasMaxRows,
31
- isDragging,
32
- isLoading: isLoadingFromProps,
33
- isSortable,
34
- Label,
35
- labels,
36
- listeners,
37
- moveRow,
38
- parentPath,
39
- pasteRow,
40
- path,
41
- permissions,
42
- readOnly,
43
- removeRow,
44
- row,
45
- rowCount,
46
- rowIndex,
47
- schemaPath,
48
- setCollapse,
49
- setNodeRef,
50
- transform,
51
- transition
52
- } = t0;
18
+ export const BlockRow = ({
19
+ addRow,
20
+ attributes,
21
+ block,
22
+ blocks,
23
+ copyRow,
24
+ duplicateRow,
25
+ errorCount,
26
+ fields,
27
+ hasMaxRows,
28
+ isDragging,
29
+ isLoading: isLoadingFromProps,
30
+ isSortable,
31
+ Label,
32
+ labels,
33
+ listeners,
34
+ moveRow,
35
+ parentPath,
36
+ pasteRow,
37
+ path,
38
+ permissions,
39
+ readOnly,
40
+ removeRow,
41
+ row,
42
+ rowCount,
43
+ rowIndex,
44
+ schemaPath,
45
+ setCollapse,
46
+ setNodeRef,
47
+ transform,
48
+ transition
49
+ }) => {
53
50
  const isLoading = useThrottledValue(isLoadingFromProps, 500);
54
51
  const {
55
52
  i18n
56
53
  } = useTranslation();
57
54
  const hasSubmitted = useFormSubmitted();
55
+ const pasteData = React.useMemo(() => ({
56
+ path,
57
+ schemaBlocks: blocks
58
+ }), [path, blocks]);
58
59
  const fieldHasErrors = hasSubmitted && errorCount > 0;
59
60
  const showBlockName = !block.admin?.disableBlockName;
60
- const t1 = fieldHasErrors ? `${baseClass}__row--has-errors` : `${baseClass}__row--no-errors`;
61
- const t2 = isDragging && `${baseClass}__row--is-dragging`;
62
- let t3;
63
- if ($[0] !== t1 || $[1] !== t2) {
64
- t3 = [`${baseClass}__row`, t1, t2].filter(Boolean);
65
- $[0] = t1;
66
- $[1] = t2;
67
- $[2] = t3;
61
+ const classNames = [`${baseClass}__row`, fieldHasErrors ? `${baseClass}__row--has-errors` : `${baseClass}__row--no-errors`, isDragging && `${baseClass}__row--is-dragging`].filter(Boolean).join(' ');
62
+ let blockPermissions = true;
63
+ if (permissions === true) {
64
+ blockPermissions = true;
68
65
  } else {
69
- t3 = $[2];
70
- }
71
- const classNames = t3.join(" ");
72
- let t4;
73
- if ($[3] !== Label || $[4] !== addRow || $[5] !== attributes || $[6] !== block.fields || $[7] !== block.labels || $[8] !== block.slug || $[9] !== blocks || $[10] !== classNames || $[11] !== copyRow || $[12] !== duplicateRow || $[13] !== errorCount || $[14] !== fieldHasErrors || $[15] !== fields || $[16] !== hasMaxRows || $[17] !== i18n || $[18] !== isDragging || $[19] !== isLoading || $[20] !== isSortable || $[21] !== labels || $[22] !== listeners || $[23] !== moveRow || $[24] !== parentPath || $[25] !== pasteRow || $[26] !== path || $[27] !== permissions || $[28] !== readOnly || $[29] !== removeRow || $[30] !== row.blockType || $[31] !== row.collapsed || $[32] !== row.id || $[33] !== rowCount || $[34] !== rowIndex || $[35] !== schemaPath || $[36] !== setCollapse || $[37] !== setNodeRef || $[38] !== showBlockName || $[39] !== transform || $[40] !== transition) {
74
- let blockPermissions;
75
- if (permissions === true) {
66
+ const permissionsBlockSpecific = permissions?.blocks?.[block.slug] || permissions?.blocks;
67
+ if (permissionsBlockSpecific === true) {
76
68
  blockPermissions = true;
69
+ } else if (permissionsBlockSpecific?.fields) {
70
+ blockPermissions = permissionsBlockSpecific.fields;
77
71
  } else {
78
- const permissionsBlockSpecific = permissions?.blocks?.[block.slug] || permissions?.blocks;
79
- if (permissionsBlockSpecific === true) {
80
- blockPermissions = true;
81
- } else {
82
- if (permissionsBlockSpecific?.fields) {
83
- blockPermissions = permissionsBlockSpecific.fields;
72
+ // Check if we should fall back to read-only mode based on permission structure
73
+ // This handles cases where field-level access control exists but block permissions were sanitized
74
+ if (typeof permissions === 'object' && permissions && !permissionsBlockSpecific) {
75
+ // If permissions object exists but has no block-specific permissions,
76
+ // check if it has any restrictive characteristics
77
+ const hasReadPermission = permissions.read === true;
78
+ const missingCreateOrUpdate = !permissions.create || !permissions.update;
79
+ const hasRestrictiveStructure = hasReadPermission && (missingCreateOrUpdate || typeof permissions === 'object' && Object.keys(permissions).length === 1 && permissions.read);
80
+ if (hasRestrictiveStructure) {
81
+ blockPermissions = {
82
+ read: true
83
+ };
84
84
  } else {
85
- if (typeof permissions === "object" && permissions && !permissionsBlockSpecific) {
86
- const hasReadPermission = permissions.read === true;
87
- const missingCreateOrUpdate = !permissions.create || !permissions.update;
88
- const hasRestrictiveStructure = hasReadPermission && (missingCreateOrUpdate || typeof permissions === "object" && Object.keys(permissions).length === 1 && permissions.read);
89
- if (hasRestrictiveStructure) {
90
- blockPermissions = {
91
- read: true
92
- };
93
- } else {
94
- blockPermissions = permissionsBlockSpecific?.fields;
95
- }
96
- } else {
97
- blockPermissions = permissionsBlockSpecific?.fields;
98
- }
85
+ blockPermissions = permissionsBlockSpecific?.fields;
99
86
  }
87
+ } else {
88
+ blockPermissions = permissionsBlockSpecific?.fields;
100
89
  }
101
90
  }
102
- let t5;
103
- if ($[42] !== row.id || $[43] !== setCollapse) {
104
- t5 = collapsed => setCollapse(row.id, collapsed);
105
- $[42] = row.id;
106
- $[43] = setCollapse;
107
- $[44] = t5;
108
- } else {
109
- t5 = $[44];
110
- }
111
- t4 = _jsx("div", {
112
- id: `${parentPath?.split(".").join("-")}-row-${rowIndex}`,
113
- ref: setNodeRef,
114
- style: {
115
- transform,
116
- transition,
117
- zIndex: isDragging ? 1 : undefined
118
- },
119
- children: _jsx(Collapsible, {
120
- actions: !readOnly ? _jsx(RowActions, {
121
- addRow,
122
- blocks,
123
- blockType: row.blockType,
124
- copyRow,
125
- duplicateRow,
126
- fields: block.fields,
127
- hasMaxRows,
128
- isSortable,
129
- labels,
130
- moveRow,
131
- pasteRow,
132
- removeRow,
133
- rowCount,
134
- rowIndex
135
- }) : undefined,
136
- className: classNames,
137
- collapsibleStyle: fieldHasErrors ? "error" : "default",
138
- dragHandleProps: isSortable && !readOnly ? {
139
- id: row.id,
140
- attributes,
141
- listeners
142
- } : undefined,
143
- header: isLoading ? _jsx(ShimmerEffect, {
144
- height: "1rem",
145
- width: "8rem"
146
- }) : _jsxs("div", {
147
- className: `${baseClass}__block-header`,
148
- children: [_jsx(RowLabel, {
149
- CustomComponent: Label,
150
- label: _jsxs(_Fragment, {
151
- children: [_jsx("span", {
152
- className: `${baseClass}__block-number`,
153
- children: String(rowIndex + 1).padStart(2, "0")
154
- }), _jsx(Pill, {
155
- className: `${baseClass}__block-pill ${baseClass}__block-pill-${row.blockType}`,
156
- pillStyle: "white",
157
- size: "small",
158
- children: getTranslation(block.labels.singular, i18n)
159
- }), showBlockName && _jsx(SectionTitle, {
160
- path: `${path}.blockName`,
161
- readOnly
162
- })]
163
- }),
164
- path,
165
- rowNumber: rowIndex
166
- }), fieldHasErrors && _jsx(ErrorPill, {
167
- count: errorCount,
168
- i18n,
169
- withMessage: true
170
- })]
171
- }),
172
- isCollapsed: row.collapsed,
173
- onToggle: t5,
174
- children: isLoading ? _jsx(ShimmerEffect, {}) : _jsx(RenderFields, {
175
- className: `${baseClass}__fields`,
176
- fields,
177
- parentIndexPath: "",
178
- parentPath: path,
179
- parentSchemaPath: schemaPath,
180
- permissions: blockPermissions,
181
- readOnly
182
- })
183
- }, row.id)
184
- }, `${parentPath}-row-${row.id}`);
185
- $[3] = Label;
186
- $[4] = addRow;
187
- $[5] = attributes;
188
- $[6] = block.fields;
189
- $[7] = block.labels;
190
- $[8] = block.slug;
191
- $[9] = blocks;
192
- $[10] = classNames;
193
- $[11] = copyRow;
194
- $[12] = duplicateRow;
195
- $[13] = errorCount;
196
- $[14] = fieldHasErrors;
197
- $[15] = fields;
198
- $[16] = hasMaxRows;
199
- $[17] = i18n;
200
- $[18] = isDragging;
201
- $[19] = isLoading;
202
- $[20] = isSortable;
203
- $[21] = labels;
204
- $[22] = listeners;
205
- $[23] = moveRow;
206
- $[24] = parentPath;
207
- $[25] = pasteRow;
208
- $[26] = path;
209
- $[27] = permissions;
210
- $[28] = readOnly;
211
- $[29] = removeRow;
212
- $[30] = row.blockType;
213
- $[31] = row.collapsed;
214
- $[32] = row.id;
215
- $[33] = rowCount;
216
- $[34] = rowIndex;
217
- $[35] = schemaPath;
218
- $[36] = setCollapse;
219
- $[37] = setNodeRef;
220
- $[38] = showBlockName;
221
- $[39] = transform;
222
- $[40] = transition;
223
- $[41] = t4;
224
- } else {
225
- t4 = $[41];
226
91
  }
227
- return t4;
92
+ return /*#__PURE__*/_jsx("div", {
93
+ id: `${parentPath?.split('.').join('-')}-row-${rowIndex}`,
94
+ ref: setNodeRef,
95
+ style: {
96
+ transform,
97
+ transition,
98
+ zIndex: isDragging ? 1 : undefined
99
+ },
100
+ children: /*#__PURE__*/_jsx(Collapsible, {
101
+ actions: !readOnly ? /*#__PURE__*/_jsx(RowActions, {
102
+ addRow: addRow,
103
+ blocks: blocks,
104
+ blockType: row.blockType,
105
+ copyRow: copyRow,
106
+ duplicateRow: duplicateRow,
107
+ fields: block.fields,
108
+ hasMaxRows: hasMaxRows,
109
+ isSortable: isSortable,
110
+ labels: labels,
111
+ moveRow: moveRow,
112
+ pasteData: pasteData,
113
+ pasteRow: pasteRow,
114
+ removeRow: removeRow,
115
+ rowCount: rowCount,
116
+ rowIndex: rowIndex
117
+ }) : undefined,
118
+ className: classNames,
119
+ collapsibleStyle: fieldHasErrors ? 'error' : 'default',
120
+ dragHandleProps: isSortable && !readOnly ? {
121
+ id: row.id,
122
+ attributes,
123
+ listeners
124
+ } : undefined,
125
+ header: isLoading ? /*#__PURE__*/_jsx(ShimmerEffect, {
126
+ height: "1rem",
127
+ width: "8rem"
128
+ }) : /*#__PURE__*/_jsxs("div", {
129
+ className: `${baseClass}__block-header`,
130
+ children: [/*#__PURE__*/_jsx(RowLabel, {
131
+ CustomComponent: Label,
132
+ label: /*#__PURE__*/_jsxs(_Fragment, {
133
+ children: [/*#__PURE__*/_jsx("span", {
134
+ className: `${baseClass}__block-number`,
135
+ children: String(rowIndex + 1).padStart(2, '0')
136
+ }), /*#__PURE__*/_jsx(Pill, {
137
+ className: `${baseClass}__block-pill ${baseClass}__block-pill-${row.blockType}`,
138
+ pillStyle: "white",
139
+ size: "small",
140
+ children: getTranslation(block.labels.singular, i18n)
141
+ }), showBlockName && /*#__PURE__*/_jsx(SectionTitle, {
142
+ path: `${path}.blockName`,
143
+ readOnly: readOnly
144
+ })]
145
+ }),
146
+ path: path,
147
+ rowNumber: rowIndex
148
+ }), fieldHasErrors && /*#__PURE__*/_jsx(ErrorPill, {
149
+ count: errorCount,
150
+ i18n: i18n,
151
+ withMessage: true
152
+ })]
153
+ }),
154
+ isCollapsed: row.collapsed,
155
+ onToggle: collapsed => setCollapse(row.id, collapsed),
156
+ children: isLoading ? /*#__PURE__*/_jsx(ShimmerEffect, {}) : /*#__PURE__*/_jsx(RenderFields, {
157
+ className: `${baseClass}__fields`,
158
+ fields: fields,
159
+ parentIndexPath: "",
160
+ parentPath: path,
161
+ parentSchemaPath: schemaPath,
162
+ permissions: blockPermissions,
163
+ readOnly: readOnly
164
+ })
165
+ }, row.id)
166
+ }, `${parentPath}-row-${row.id}`);
228
167
  };
229
168
  //# sourceMappingURL=BlockRow.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"BlockRow.js","names":["c","_c","getTranslation","React","Collapsible","ErrorPill","Pill","ShimmerEffect","useFormSubmitted","RenderFields","RowLabel","useThrottledValue","useTranslation","RowActions","SectionTitle","baseClass","BlockRow","t0","$","addRow","attributes","block","blocks","copyRow","duplicateRow","errorCount","fields","hasMaxRows","isDragging","isLoading","isLoadingFromProps","isSortable","Label","labels","listeners","moveRow","parentPath","pasteRow","path","permissions","readOnly","removeRow","row","rowCount","rowIndex","schemaPath","setCollapse","setNodeRef","transform","transition","i18n","hasSubmitted","fieldHasErrors","showBlockName","admin","disableBlockName","t1","t2","t3","filter","Boolean","classNames","join","t4","slug","blockType","collapsed","id","blockPermissions","permissionsBlockSpecific","hasReadPermission","read","missingCreateOrUpdate","create","update","hasRestrictiveStructure","Object","keys","length","t5","_jsx","split","ref","style","zIndex","undefined","children","actions","className","collapsibleStyle","dragHandleProps","header","height","width","_jsxs","CustomComponent","label","_Fragment","String","padStart","pillStyle","size","singular","count","withMessage","onToggle","parentIndexPath","parentSchemaPath"],"sources":["../../../src/fields/Blocks/BlockRow.tsx"],"sourcesContent":["'use client'\nimport type { ClientBlock, ClientField, Labels, Row, SanitizedFieldPermissions } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport React from 'react'\n\nimport type { UseDraggableSortableReturn } from '../../elements/DraggableSortable/useDraggableSortable/types.js'\nimport type { RenderFieldsProps } from '../../forms/RenderFields/types.js'\n\nimport { Collapsible } from '../../elements/Collapsible/index.js'\nimport { ErrorPill } from '../../elements/ErrorPill/index.js'\nimport { Pill } from '../../elements/Pill/index.js'\nimport { ShimmerEffect } from '../../elements/ShimmerEffect/index.js'\nimport { useFormSubmitted } from '../../forms/Form/context.js'\nimport { RenderFields } from '../../forms/RenderFields/index.js'\nimport { RowLabel } from '../../forms/RowLabel/index.js'\nimport { useThrottledValue } from '../../hooks/useThrottledValue.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { RowActions } from './RowActions.js'\nimport { SectionTitle } from './SectionTitle/index.js'\n\nconst baseClass = 'blocks-field'\n\ntype BlocksFieldProps = {\n addRow: (rowIndex: number, blockType: string) => Promise<void> | void\n block: ClientBlock\n blocks: (ClientBlock | string)[] | ClientBlock[]\n copyRow: (rowIndex: number) => void\n duplicateRow: (rowIndex: number) => void\n errorCount: number\n fields: ClientField[]\n hasMaxRows?: boolean\n isLoading?: boolean\n isSortable?: boolean\n Label?: React.ReactNode\n labels: Labels\n moveRow: (fromIndex: number, toIndex: number) => void\n parentPath: string\n pasteRow: (rowIndex: number) => void\n path: string\n permissions: SanitizedFieldPermissions\n readOnly: boolean\n removeRow: (rowIndex: number) => void\n row: Row\n rowCount: number\n rowIndex: number\n schemaPath: string\n setCollapse: (id: string, collapsed: boolean) => void\n} & UseDraggableSortableReturn\n\nexport const BlockRow: React.FC<BlocksFieldProps> = ({\n addRow,\n attributes,\n block,\n blocks,\n copyRow,\n duplicateRow,\n errorCount,\n fields,\n hasMaxRows,\n isDragging,\n isLoading: isLoadingFromProps,\n isSortable,\n Label,\n labels,\n listeners,\n moveRow,\n parentPath,\n pasteRow,\n path,\n permissions,\n readOnly,\n removeRow,\n row,\n rowCount,\n rowIndex,\n schemaPath,\n setCollapse,\n setNodeRef,\n transform,\n transition,\n}) => {\n const isLoading = useThrottledValue(isLoadingFromProps, 500)\n\n const { i18n } = useTranslation()\n const hasSubmitted = useFormSubmitted()\n\n const fieldHasErrors = hasSubmitted && errorCount > 0\n\n const showBlockName = !block.admin?.disableBlockName\n\n const classNames = [\n `${baseClass}__row`,\n fieldHasErrors ? `${baseClass}__row--has-errors` : `${baseClass}__row--no-errors`,\n isDragging && `${baseClass}__row--is-dragging`,\n ]\n .filter(Boolean)\n .join(' ')\n\n let blockPermissions: RenderFieldsProps['permissions'] = true\n\n if (permissions === true) {\n blockPermissions = true\n } else {\n const permissionsBlockSpecific = permissions?.blocks?.[block.slug] || permissions?.blocks\n if (permissionsBlockSpecific === true) {\n blockPermissions = true\n } else if (permissionsBlockSpecific?.fields) {\n blockPermissions = permissionsBlockSpecific.fields\n } else {\n // Check if we should fall back to read-only mode based on permission structure\n // This handles cases where field-level access control exists but block permissions were sanitized\n if (typeof permissions === 'object' && permissions && !permissionsBlockSpecific) {\n // If permissions object exists but has no block-specific permissions,\n // check if it has any restrictive characteristics\n const hasReadPermission = permissions.read === true\n const missingCreateOrUpdate = !permissions.create || !permissions.update\n const hasRestrictiveStructure =\n hasReadPermission &&\n (missingCreateOrUpdate ||\n (typeof permissions === 'object' &&\n Object.keys(permissions).length === 1 &&\n permissions.read))\n\n if (hasRestrictiveStructure) {\n blockPermissions = { read: true }\n } else {\n blockPermissions = permissionsBlockSpecific?.fields\n }\n } else {\n blockPermissions = permissionsBlockSpecific?.fields\n }\n }\n }\n\n return (\n <div\n id={`${parentPath?.split('.').join('-')}-row-${rowIndex}`}\n key={`${parentPath}-row-${row.id}`}\n ref={setNodeRef}\n style={{\n transform,\n transition,\n zIndex: isDragging ? 1 : undefined,\n }}\n >\n <Collapsible\n actions={\n !readOnly ? (\n <RowActions\n addRow={addRow}\n blocks={blocks}\n blockType={row.blockType}\n copyRow={copyRow}\n duplicateRow={duplicateRow}\n fields={block.fields}\n hasMaxRows={hasMaxRows}\n isSortable={isSortable}\n labels={labels}\n moveRow={moveRow}\n pasteRow={pasteRow}\n removeRow={removeRow}\n rowCount={rowCount}\n rowIndex={rowIndex}\n />\n ) : undefined\n }\n className={classNames}\n collapsibleStyle={fieldHasErrors ? 'error' : 'default'}\n dragHandleProps={\n isSortable && !readOnly\n ? {\n id: row.id,\n attributes,\n listeners,\n }\n : undefined\n }\n header={\n isLoading ? (\n <ShimmerEffect height=\"1rem\" width=\"8rem\" />\n ) : (\n <div className={`${baseClass}__block-header`}>\n <RowLabel\n CustomComponent={Label}\n label={\n <>\n <span className={`${baseClass}__block-number`}>\n {String(rowIndex + 1).padStart(2, '0')}\n </span>\n <Pill\n className={`${baseClass}__block-pill ${baseClass}__block-pill-${row.blockType}`}\n pillStyle=\"white\"\n size=\"small\"\n >\n {getTranslation(block.labels.singular, i18n)}\n </Pill>\n {showBlockName && (\n <SectionTitle path={`${path}.blockName`} readOnly={readOnly} />\n )}\n </>\n }\n path={path}\n rowNumber={rowIndex}\n />\n {fieldHasErrors && <ErrorPill count={errorCount} i18n={i18n} withMessage />}\n </div>\n )\n }\n isCollapsed={row.collapsed}\n key={row.id}\n onToggle={(collapsed) => setCollapse(row.id, collapsed)}\n >\n {isLoading ? (\n <ShimmerEffect />\n ) : (\n <RenderFields\n className={`${baseClass}__fields`}\n fields={fields}\n parentIndexPath=\"\"\n parentPath={path}\n parentSchemaPath={schemaPath}\n permissions={blockPermissions}\n readOnly={readOnly}\n />\n )}\n </Collapsible>\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"BlockRow.js","names":["getTranslation","React","Collapsible","ErrorPill","Pill","ShimmerEffect","useFormSubmitted","RenderFields","RowLabel","useThrottledValue","useTranslation","RowActions","SectionTitle","baseClass","BlockRow","addRow","attributes","block","blocks","copyRow","duplicateRow","errorCount","fields","hasMaxRows","isDragging","isLoading","isLoadingFromProps","isSortable","Label","labels","listeners","moveRow","parentPath","pasteRow","path","permissions","readOnly","removeRow","row","rowCount","rowIndex","schemaPath","setCollapse","setNodeRef","transform","transition","i18n","hasSubmitted","pasteData","useMemo","schemaBlocks","fieldHasErrors","showBlockName","admin","disableBlockName","classNames","filter","Boolean","join","blockPermissions","permissionsBlockSpecific","slug","hasReadPermission","read","missingCreateOrUpdate","create","update","hasRestrictiveStructure","Object","keys","length","_jsx","id","split","ref","style","zIndex","undefined","actions","blockType","className","collapsibleStyle","dragHandleProps","header","height","width","_jsxs","CustomComponent","label","_Fragment","String","padStart","pillStyle","size","singular","rowNumber","count","withMessage","isCollapsed","collapsed","onToggle","parentIndexPath","parentSchemaPath"],"sources":["../../../src/fields/Blocks/BlockRow.tsx"],"sourcesContent":["'use client'\nimport type { ClientBlock, ClientField, Labels, Row, SanitizedFieldPermissions } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport React from 'react'\n\nimport type { UseDraggableSortableReturn } from '../../elements/DraggableSortable/useDraggableSortable/types.js'\nimport type { RenderFieldsProps } from '../../forms/RenderFields/types.js'\n\nimport { Collapsible } from '../../elements/Collapsible/index.js'\nimport { ErrorPill } from '../../elements/ErrorPill/index.js'\nimport { Pill } from '../../elements/Pill/index.js'\nimport { ShimmerEffect } from '../../elements/ShimmerEffect/index.js'\nimport { useFormSubmitted } from '../../forms/Form/context.js'\nimport { RenderFields } from '../../forms/RenderFields/index.js'\nimport { RowLabel } from '../../forms/RowLabel/index.js'\nimport { useThrottledValue } from '../../hooks/useThrottledValue.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { RowActions } from './RowActions.js'\nimport { SectionTitle } from './SectionTitle/index.js'\n\nconst baseClass = 'blocks-field'\n\ntype BlocksFieldProps = {\n addRow: (rowIndex: number, blockType: string) => Promise<void> | void\n block: ClientBlock\n blocks: (ClientBlock | string)[] | ClientBlock[]\n copyRow: (rowIndex: number) => void\n duplicateRow: (rowIndex: number) => void\n errorCount: number\n fields: ClientField[]\n hasMaxRows?: boolean\n isLoading?: boolean\n isSortable?: boolean\n Label?: React.ReactNode\n labels: Labels\n moveRow: (fromIndex: number, toIndex: number) => void\n parentPath: string\n pasteRow: (rowIndex: number) => void\n path: string\n permissions: SanitizedFieldPermissions\n readOnly: boolean\n removeRow: (rowIndex: number) => void\n row: Row\n rowCount: number\n rowIndex: number\n schemaPath: string\n setCollapse: (id: string, collapsed: boolean) => void\n} & UseDraggableSortableReturn\n\nexport const BlockRow: React.FC<BlocksFieldProps> = ({\n addRow,\n attributes,\n block,\n blocks,\n copyRow,\n duplicateRow,\n errorCount,\n fields,\n hasMaxRows,\n isDragging,\n isLoading: isLoadingFromProps,\n isSortable,\n Label,\n labels,\n listeners,\n moveRow,\n parentPath,\n pasteRow,\n path,\n permissions,\n readOnly,\n removeRow,\n row,\n rowCount,\n rowIndex,\n schemaPath,\n setCollapse,\n setNodeRef,\n transform,\n transition,\n}) => {\n const isLoading = useThrottledValue(isLoadingFromProps, 500)\n\n const { i18n } = useTranslation()\n const hasSubmitted = useFormSubmitted()\n\n const pasteData = React.useMemo(\n () => ({ path, schemaBlocks: blocks as ClientBlock[] }),\n [path, blocks],\n )\n\n const fieldHasErrors = hasSubmitted && errorCount > 0\n\n const showBlockName = !block.admin?.disableBlockName\n\n const classNames = [\n `${baseClass}__row`,\n fieldHasErrors ? `${baseClass}__row--has-errors` : `${baseClass}__row--no-errors`,\n isDragging && `${baseClass}__row--is-dragging`,\n ]\n .filter(Boolean)\n .join(' ')\n\n let blockPermissions: RenderFieldsProps['permissions'] = true\n\n if (permissions === true) {\n blockPermissions = true\n } else {\n const permissionsBlockSpecific = permissions?.blocks?.[block.slug] || permissions?.blocks\n if (permissionsBlockSpecific === true) {\n blockPermissions = true\n } else if (permissionsBlockSpecific?.fields) {\n blockPermissions = permissionsBlockSpecific.fields\n } else {\n // Check if we should fall back to read-only mode based on permission structure\n // This handles cases where field-level access control exists but block permissions were sanitized\n if (typeof permissions === 'object' && permissions && !permissionsBlockSpecific) {\n // If permissions object exists but has no block-specific permissions,\n // check if it has any restrictive characteristics\n const hasReadPermission = permissions.read === true\n const missingCreateOrUpdate = !permissions.create || !permissions.update\n const hasRestrictiveStructure =\n hasReadPermission &&\n (missingCreateOrUpdate ||\n (typeof permissions === 'object' &&\n Object.keys(permissions).length === 1 &&\n permissions.read))\n\n if (hasRestrictiveStructure) {\n blockPermissions = { read: true }\n } else {\n blockPermissions = permissionsBlockSpecific?.fields\n }\n } else {\n blockPermissions = permissionsBlockSpecific?.fields\n }\n }\n }\n\n return (\n <div\n id={`${parentPath?.split('.').join('-')}-row-${rowIndex}`}\n key={`${parentPath}-row-${row.id}`}\n ref={setNodeRef}\n style={{\n transform,\n transition,\n zIndex: isDragging ? 1 : undefined,\n }}\n >\n <Collapsible\n actions={\n !readOnly ? (\n <RowActions\n addRow={addRow}\n blocks={blocks}\n blockType={row.blockType}\n copyRow={copyRow}\n duplicateRow={duplicateRow}\n fields={block.fields}\n hasMaxRows={hasMaxRows}\n isSortable={isSortable}\n labels={labels}\n moveRow={moveRow}\n pasteData={pasteData}\n pasteRow={pasteRow}\n removeRow={removeRow}\n rowCount={rowCount}\n rowIndex={rowIndex}\n />\n ) : undefined\n }\n className={classNames}\n collapsibleStyle={fieldHasErrors ? 'error' : 'default'}\n dragHandleProps={\n isSortable && !readOnly\n ? {\n id: row.id,\n attributes,\n listeners,\n }\n : undefined\n }\n header={\n isLoading ? (\n <ShimmerEffect height=\"1rem\" width=\"8rem\" />\n ) : (\n <div className={`${baseClass}__block-header`}>\n <RowLabel\n CustomComponent={Label}\n label={\n <>\n <span className={`${baseClass}__block-number`}>\n {String(rowIndex + 1).padStart(2, '0')}\n </span>\n <Pill\n className={`${baseClass}__block-pill ${baseClass}__block-pill-${row.blockType}`}\n pillStyle=\"white\"\n size=\"small\"\n >\n {getTranslation(block.labels.singular, i18n)}\n </Pill>\n {showBlockName && (\n <SectionTitle path={`${path}.blockName`} readOnly={readOnly} />\n )}\n </>\n }\n path={path}\n rowNumber={rowIndex}\n />\n {fieldHasErrors && <ErrorPill count={errorCount} i18n={i18n} withMessage />}\n </div>\n )\n }\n isCollapsed={row.collapsed}\n key={row.id}\n onToggle={(collapsed) => setCollapse(row.id, collapsed)}\n >\n {isLoading ? (\n <ShimmerEffect />\n ) : (\n <RenderFields\n className={`${baseClass}__fields`}\n fields={fields}\n parentIndexPath=\"\"\n parentPath={path}\n parentSchemaPath={schemaPath}\n permissions={blockPermissions}\n readOnly={readOnly}\n />\n )}\n </Collapsible>\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,5 +1,6 @@
1
1
  import type { ClientBlock, ClientField, Labels } from 'payload';
2
2
  import React from 'react';
3
+ import type { ClipboardPasteEligibilityArgs } from '../../elements/ClipboardAction/types.js';
3
4
  export declare const RowActions: React.FC<{
4
5
  readonly addRow: (rowIndex: number, blockType: string) => Promise<void> | void;
5
6
  readonly blocks: (ClientBlock | string)[];
@@ -11,6 +12,7 @@ export declare const RowActions: React.FC<{
11
12
  readonly isSortable?: boolean;
12
13
  readonly labels: Labels;
13
14
  readonly moveRow: (fromIndex: number, toIndex: number) => void;
15
+ readonly pasteData: ClipboardPasteEligibilityArgs;
14
16
  readonly pasteRow: (rowIndex: number) => void;
15
17
  readonly removeRow: (rowIndex: number) => void;
16
18
  readonly rowCount: number;
@@ -1 +1 @@
1
- {"version":3,"file":"RowActions.d.ts","sourceRoot":"","sources":["../../../src/fields/Blocks/RowActions.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AAG/D,OAAO,KAAK,MAAM,OAAO,CAAA;AAMzB,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC;IAChC,QAAQ,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;IAC9E,QAAQ,CAAC,MAAM,EAAE,CAAC,WAAW,GAAG,MAAM,CAAC,EAAE,CAAA;IACzC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAA;IAC5C,QAAQ,CAAC,YAAY,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,IAAI,CAAA;IACpE,QAAQ,CAAC,MAAM,EAAE,WAAW,EAAE,CAAA;IAC9B,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAA;IAC7B,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAA;IAC7B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,OAAO,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;IAC9D,QAAQ,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAA;IAC7C,QAAQ,CAAC,SAAS,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAA;IAC9C,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;CAC1B,CAqDA,CAAA"}
1
+ {"version":3,"file":"RowActions.d.ts","sourceRoot":"","sources":["../../../src/fields/Blocks/RowActions.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AAG/D,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,yCAAyC,CAAA;AAM5F,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC;IAChC,QAAQ,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;IAC9E,QAAQ,CAAC,MAAM,EAAE,CAAC,WAAW,GAAG,MAAM,CAAC,EAAE,CAAA;IACzC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAA;IAC5C,QAAQ,CAAC,YAAY,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,IAAI,CAAA;IACpE,QAAQ,CAAC,MAAM,EAAE,WAAW,EAAE,CAAA;IAC9B,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAA;IAC7B,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAA;IAC7B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,OAAO,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;IAC9D,QAAQ,CAAC,SAAS,EAAE,6BAA6B,CAAA;IACjD,QAAQ,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAA;IAC7C,QAAQ,CAAC,SAAS,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAA;IAC9C,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;CAC1B,CAuDA,CAAA"}
@@ -8,7 +8,7 @@ import { ArrayAction } from '../../elements/ArrayAction/index.js';
8
8
  import { useDrawerSlug } from '../../elements/Drawer/useDrawerSlug.js';
9
9
  import { BlocksDrawer } from './BlocksDrawer/index.js';
10
10
  export const RowActions = props => {
11
- const $ = _c(28);
11
+ const $ = _c(29);
12
12
  const {
13
13
  addRow,
14
14
  blocks,
@@ -19,6 +19,7 @@ export const RowActions = props => {
19
19
  isSortable,
20
20
  labels,
21
21
  moveRow,
22
+ pasteData,
22
23
  pasteRow,
23
24
  removeRow,
24
25
  rowCount,
@@ -47,28 +48,28 @@ export const RowActions = props => {
47
48
  t0 = $[4];
48
49
  }
49
50
  let t1;
50
- if ($[5] !== blockType || $[6] !== blocks || $[7] !== copyRow || $[8] !== drawerSlug || $[9] !== duplicateRow || $[10] !== hasMaxRows || $[11] !== isSortable || $[12] !== labels || $[13] !== moveRow || $[14] !== openModal || $[15] !== pasteRow || $[16] !== removeRow || $[17] !== rowCount || $[18] !== rowIndex || $[19] !== t0) {
51
+ if ($[5] !== blockType || $[6] !== blocks || $[7] !== copyRow || $[8] !== drawerSlug || $[9] !== duplicateRow || $[10] !== hasMaxRows || $[11] !== isSortable || $[12] !== labels || $[13] !== moveRow || $[14] !== openModal || $[15] !== pasteData || $[16] !== pasteRow || $[17] !== removeRow || $[18] !== rowCount || $[19] !== rowIndex || $[20] !== t0) {
51
52
  let t2;
52
- if ($[21] !== drawerSlug || $[22] !== openModal) {
53
+ if ($[22] !== drawerSlug || $[23] !== openModal) {
53
54
  t2 = index => {
54
55
  setIndexToAdd(index);
55
56
  openModal(drawerSlug);
56
57
  };
57
- $[21] = drawerSlug;
58
- $[22] = openModal;
59
- $[23] = t2;
58
+ $[22] = drawerSlug;
59
+ $[23] = openModal;
60
+ $[24] = t2;
60
61
  } else {
61
- t2 = $[23];
62
+ t2 = $[24];
62
63
  }
63
64
  let t3;
64
- if ($[24] !== blockType || $[25] !== duplicateRow || $[26] !== rowIndex) {
65
+ if ($[25] !== blockType || $[26] !== duplicateRow || $[27] !== rowIndex) {
65
66
  t3 = () => duplicateRow(rowIndex, blockType);
66
- $[24] = blockType;
67
- $[25] = duplicateRow;
68
- $[26] = rowIndex;
69
- $[27] = t3;
67
+ $[25] = blockType;
68
+ $[26] = duplicateRow;
69
+ $[27] = rowIndex;
70
+ $[28] = t3;
70
71
  } else {
71
- t3 = $[27];
72
+ t3 = $[28];
72
73
  }
73
74
  t1 = _jsxs(React.Fragment, {
74
75
  children: [_jsx(BlocksDrawer, {
@@ -85,6 +86,7 @@ export const RowActions = props => {
85
86
  index: rowIndex,
86
87
  isSortable,
87
88
  moveRow,
89
+ pasteData,
88
90
  pasteRow,
89
91
  removeRow,
90
92
  rowCount
@@ -100,14 +102,15 @@ export const RowActions = props => {
100
102
  $[12] = labels;
101
103
  $[13] = moveRow;
102
104
  $[14] = openModal;
103
- $[15] = pasteRow;
104
- $[16] = removeRow;
105
- $[17] = rowCount;
106
- $[18] = rowIndex;
107
- $[19] = t0;
108
- $[20] = t1;
105
+ $[15] = pasteData;
106
+ $[16] = pasteRow;
107
+ $[17] = removeRow;
108
+ $[18] = rowCount;
109
+ $[19] = rowIndex;
110
+ $[20] = t0;
111
+ $[21] = t1;
109
112
  } else {
110
- t1 = $[20];
113
+ t1 = $[21];
111
114
  }
112
115
  return t1;
113
116
  };
@@ -1 +1 @@
1
- {"version":3,"file":"RowActions.js","names":["c","_c","useModal","React","ArrayAction","useDrawerSlug","BlocksDrawer","RowActions","props","$","addRow","blocks","blockType","copyRow","duplicateRow","hasMaxRows","isSortable","labels","moveRow","pasteRow","removeRow","rowCount","rowIndex","closeModal","openModal","drawerSlug","indexToAdd","setIndexToAdd","useState","t0","_","rowBlockType","t1","t2","index","t3","_jsxs","Fragment","children","_jsx","addRowIndex"],"sources":["../../../src/fields/Blocks/RowActions.tsx"],"sourcesContent":["'use client'\nimport type { ClientBlock, ClientField, Labels } from 'payload'\n\nimport { useModal } from '@faceless-ui/modal'\nimport React from 'react'\n\nimport { ArrayAction } from '../../elements/ArrayAction/index.js'\nimport { useDrawerSlug } from '../../elements/Drawer/useDrawerSlug.js'\nimport { BlocksDrawer } from './BlocksDrawer/index.js'\n\nexport const RowActions: React.FC<{\n readonly addRow: (rowIndex: number, blockType: string) => Promise<void> | void\n readonly blocks: (ClientBlock | string)[]\n readonly blockType: string\n readonly copyRow: (rowIndex: number) => void\n readonly duplicateRow: (rowIndex: number, blockType: string) => void\n readonly fields: ClientField[]\n readonly hasMaxRows?: boolean\n readonly isSortable?: boolean\n readonly labels: Labels\n readonly moveRow: (fromIndex: number, toIndex: number) => void\n readonly pasteRow: (rowIndex: number) => void\n readonly removeRow: (rowIndex: number) => void\n readonly rowCount: number\n readonly rowIndex: number\n}> = (props) => {\n const {\n addRow,\n blocks,\n blockType,\n copyRow,\n duplicateRow,\n hasMaxRows,\n isSortable,\n labels,\n moveRow,\n pasteRow,\n removeRow,\n rowCount,\n rowIndex,\n } = props\n\n const { closeModal, openModal } = useModal()\n const drawerSlug = useDrawerSlug('blocks-drawer')\n\n const [indexToAdd, setIndexToAdd] = React.useState<null | number>(null)\n\n return (\n <React.Fragment>\n <BlocksDrawer\n addRow={(_, rowBlockType) => {\n if (typeof addRow === 'function') {\n void addRow(indexToAdd, rowBlockType)\n }\n closeModal(drawerSlug)\n }}\n addRowIndex={rowIndex}\n blocks={blocks}\n drawerSlug={drawerSlug}\n labels={labels}\n />\n <ArrayAction\n addRow={(index) => {\n setIndexToAdd(index)\n openModal(drawerSlug)\n }}\n copyRow={copyRow}\n duplicateRow={() => duplicateRow(rowIndex, blockType)}\n hasMaxRows={hasMaxRows}\n index={rowIndex}\n isSortable={isSortable}\n moveRow={moveRow}\n pasteRow={pasteRow}\n removeRow={removeRow}\n rowCount={rowCount}\n />\n </React.Fragment>\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"RowActions.js","names":["c","_c","useModal","React","ArrayAction","useDrawerSlug","BlocksDrawer","RowActions","props","$","addRow","blocks","blockType","copyRow","duplicateRow","hasMaxRows","isSortable","labels","moveRow","pasteData","pasteRow","removeRow","rowCount","rowIndex","closeModal","openModal","drawerSlug","indexToAdd","setIndexToAdd","useState","t0","_","rowBlockType","t1","t2","index","t3","_jsxs","Fragment","children","_jsx","addRowIndex"],"sources":["../../../src/fields/Blocks/RowActions.tsx"],"sourcesContent":["'use client'\nimport type { ClientBlock, ClientField, Labels } from 'payload'\n\nimport { useModal } from '@faceless-ui/modal'\nimport React from 'react'\n\nimport type { ClipboardPasteEligibilityArgs } from '../../elements/ClipboardAction/types.js'\n\nimport { ArrayAction } from '../../elements/ArrayAction/index.js'\nimport { useDrawerSlug } from '../../elements/Drawer/useDrawerSlug.js'\nimport { BlocksDrawer } from './BlocksDrawer/index.js'\n\nexport const RowActions: React.FC<{\n readonly addRow: (rowIndex: number, blockType: string) => Promise<void> | void\n readonly blocks: (ClientBlock | string)[]\n readonly blockType: string\n readonly copyRow: (rowIndex: number) => void\n readonly duplicateRow: (rowIndex: number, blockType: string) => void\n readonly fields: ClientField[]\n readonly hasMaxRows?: boolean\n readonly isSortable?: boolean\n readonly labels: Labels\n readonly moveRow: (fromIndex: number, toIndex: number) => void\n readonly pasteData: ClipboardPasteEligibilityArgs\n readonly pasteRow: (rowIndex: number) => void\n readonly removeRow: (rowIndex: number) => void\n readonly rowCount: number\n readonly rowIndex: number\n}> = (props) => {\n const {\n addRow,\n blocks,\n blockType,\n copyRow,\n duplicateRow,\n hasMaxRows,\n isSortable,\n labels,\n moveRow,\n pasteData,\n pasteRow,\n removeRow,\n rowCount,\n rowIndex,\n } = props\n\n const { closeModal, openModal } = useModal()\n const drawerSlug = useDrawerSlug('blocks-drawer')\n\n const [indexToAdd, setIndexToAdd] = React.useState<null | number>(null)\n\n return (\n <React.Fragment>\n <BlocksDrawer\n addRow={(_, rowBlockType) => {\n if (typeof addRow === 'function') {\n void addRow(indexToAdd, rowBlockType)\n }\n closeModal(drawerSlug)\n }}\n addRowIndex={rowIndex}\n blocks={blocks}\n drawerSlug={drawerSlug}\n labels={labels}\n />\n <ArrayAction\n addRow={(index) => {\n setIndexToAdd(index)\n openModal(drawerSlug)\n }}\n copyRow={copyRow}\n duplicateRow={() => duplicateRow(rowIndex, blockType)}\n hasMaxRows={hasMaxRows}\n index={rowIndex}\n isSortable={isSortable}\n moveRow={moveRow}\n pasteData={pasteData}\n pasteRow={pasteRow}\n removeRow={removeRow}\n rowCount={rowCount}\n />\n </React.Fragment>\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -4,5 +4,5 @@ export declare const BlocksField: React.FC<{
4
4
  readonly validate?: import("payload").BlocksFieldValidation;
5
5
  } & import("payload").FieldPaths & {
6
6
  readonly field: Omit<import("payload").BlocksFieldClient, "type"> & Partial<Pick<import("payload").BlocksFieldClient, "type">>;
7
- } & Omit<import("payload").ClientComponentProps, "field" | "customComponents">>;
7
+ } & Omit<import("payload").ClientComponentProps, "customComponents" | "field">>;
8
8
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/fields/Blocks/index.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAyC,MAAM,OAAO,CAAA;AAgC7D,OAAO,aAAa,CAAA;AA0gBpB,eAAO,MAAM,WAAW;;;;+EAAsC,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/fields/Blocks/index.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAyC,MAAM,OAAO,CAAA;AAgC7D,OAAO,aAAa,CAAA;AA6gBpB,eAAO,MAAM,WAAW;;;;+EAAsC,CAAA"}
@@ -298,8 +298,11 @@ const BlocksFieldComponent = props => {
298
298
  const hasMaxRows = maxRows && rows.length >= maxRows;
299
299
  const fieldErrorCount = errorPaths.length;
300
300
  const fieldHasErrors = submitted && fieldErrorCount + (valid ? 0 : 1) > 0;
301
+ const displayedErrorCount = fieldErrorCount > 0 ? fieldErrorCount : fieldHasErrors ? 1 : 0;
301
302
  const showMinRows = rows.length < minRows || required && rows.length === 0;
302
303
  const showRequired = readOnly && rows.length === 0;
304
+ const shouldShowSummaryBanner = !valid && (showRequired || showMinRows);
305
+ const shouldShowFieldError = showError && !shouldShowSummaryBanner;
303
306
  const styles = useMemo(() => mergeFieldStyles(field), [field]);
304
307
  const renderDragOverlay = useCallback(activeId => {
305
308
  const activeIndex = rows.findIndex(row => row.id === activeId);
@@ -342,7 +345,7 @@ const BlocksFieldComponent = props => {
342
345
  className: [fieldBaseClass, baseClass, className, fieldHasErrors ? `${baseClass}--has-error` : `${baseClass}--has-no-error`].filter(Boolean).join(' '),
343
346
  id: `field-${path?.replace(/\./g, '__')}`,
344
347
  style: styles,
345
- children: [showError && /*#__PURE__*/_jsx(RenderCustomComponent, {
348
+ children: [shouldShowFieldError && /*#__PURE__*/_jsx(RenderCustomComponent, {
346
349
  CustomComponent: Error,
347
350
  Fallback: /*#__PURE__*/_jsx(FieldError, {
348
351
  path: path,
@@ -366,8 +369,8 @@ const BlocksFieldComponent = props => {
366
369
  required: required
367
370
  })
368
371
  })
369
- }), fieldHasErrors && fieldErrorCount > 0 && /*#__PURE__*/_jsx(ErrorPill, {
370
- count: fieldErrorCount,
372
+ }), displayedErrorCount > 0 && /*#__PURE__*/_jsx(ErrorPill, {
373
+ count: displayedErrorCount,
371
374
  i18n: i18n,
372
375
  withMessage: true
373
376
  })]