@payloadcms/ui 4.0.0-internal.4c792ad → 4.0.0-internal.4e1f822

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 (1339) hide show
  1. package/LICENSE.md +1 -1
  2. package/dist/css/app.css +121 -0
  3. package/dist/css/colors.css +3 -0
  4. package/dist/css/forms.css +6 -9
  5. package/dist/css/spacing.css +11 -3
  6. package/dist/css/theme.css +2 -1
  7. package/dist/css/utilities.css +3 -2
  8. package/dist/css/z-index.css +10 -0
  9. package/dist/elements/APIKeyInput/index.css +4 -4
  10. package/dist/elements/AddNewRelation/index.css +27 -28
  11. package/dist/elements/AnimateHeight/usePatchAnimateHeight.d.ts.map +1 -1
  12. package/dist/elements/AppHeader/index.css +3 -18
  13. package/dist/elements/AppHeader/index.d.ts +2 -1
  14. package/dist/elements/AppHeader/index.d.ts.map +1 -1
  15. package/dist/elements/AppHeader/index.js +18 -9
  16. package/dist/elements/AppHeader/index.js.map +1 -1
  17. package/dist/elements/ArrayAction/index.d.ts +3 -0
  18. package/dist/elements/ArrayAction/index.d.ts.map +1 -1
  19. package/dist/elements/ArrayAction/index.js +83 -29
  20. package/dist/elements/ArrayAction/index.js.map +1 -1
  21. package/dist/elements/Autosave/index.d.ts.map +1 -1
  22. package/dist/elements/Autosave/index.js +2 -3
  23. package/dist/elements/Autosave/index.js.map +1 -1
  24. package/dist/elements/BulkUpload/ActionsBar/index.css +4 -8
  25. package/dist/elements/BulkUpload/ActionsBar/index.d.ts +1 -5
  26. package/dist/elements/BulkUpload/ActionsBar/index.d.ts.map +1 -1
  27. package/dist/elements/BulkUpload/ActionsBar/index.js +15 -22
  28. package/dist/elements/BulkUpload/ActionsBar/index.js.map +1 -1
  29. package/dist/elements/BulkUpload/AddFilesView/index.css +24 -12
  30. package/dist/elements/BulkUpload/AddFilesView/index.d.ts +2 -2
  31. package/dist/elements/BulkUpload/AddFilesView/index.d.ts.map +1 -1
  32. package/dist/elements/BulkUpload/AddFilesView/index.js +73 -48
  33. package/dist/elements/BulkUpload/AddFilesView/index.js.map +1 -1
  34. package/dist/elements/BulkUpload/AddingFilesView/index.css +158 -6
  35. package/dist/elements/BulkUpload/AddingFilesView/index.d.ts +5 -1
  36. package/dist/elements/BulkUpload/AddingFilesView/index.d.ts.map +1 -1
  37. package/dist/elements/BulkUpload/AddingFilesView/index.js +134 -65
  38. package/dist/elements/BulkUpload/AddingFilesView/index.js.map +1 -1
  39. package/dist/elements/BulkUpload/DiscardWithoutSaving/index.js +4 -4
  40. package/dist/elements/BulkUpload/DiscardWithoutSaving/index.js.map +1 -1
  41. package/dist/elements/BulkUpload/EditForm/index.d.ts +1 -1
  42. package/dist/elements/BulkUpload/EditForm/index.d.ts.map +1 -1
  43. package/dist/elements/BulkUpload/EditForm/index.js +16 -17
  44. package/dist/elements/BulkUpload/EditForm/index.js.map +1 -1
  45. package/dist/elements/BulkUpload/EditForm/types.d.ts +2 -3
  46. package/dist/elements/BulkUpload/EditForm/types.d.ts.map +1 -1
  47. package/dist/elements/BulkUpload/EditForm/types.js.map +1 -1
  48. package/dist/elements/BulkUpload/EditMany/DrawerContent.d.ts.map +1 -1
  49. package/dist/elements/BulkUpload/EditMany/DrawerContent.js +80 -66
  50. package/dist/elements/BulkUpload/EditMany/DrawerContent.js.map +1 -1
  51. package/dist/elements/BulkUpload/EditMany/index.d.ts.map +1 -1
  52. package/dist/elements/BulkUpload/EditMany/index.js +28 -10
  53. package/dist/elements/BulkUpload/EditMany/index.js.map +1 -1
  54. package/dist/elements/BulkUpload/FileSidebar/index.css +66 -142
  55. package/dist/elements/BulkUpload/FileSidebar/index.d.ts.map +1 -1
  56. package/dist/elements/BulkUpload/FileSidebar/index.js +42 -175
  57. package/dist/elements/BulkUpload/FileSidebar/index.js.map +1 -1
  58. package/dist/elements/BulkUpload/FormsManager/createFormData.d.ts +2 -2
  59. package/dist/elements/BulkUpload/FormsManager/createFormData.d.ts.map +1 -1
  60. package/dist/elements/BulkUpload/FormsManager/createFormData.js +4 -15
  61. package/dist/elements/BulkUpload/FormsManager/createFormData.js.map +1 -1
  62. package/dist/elements/BulkUpload/FormsManager/index.js +4 -5
  63. package/dist/elements/BulkUpload/FormsManager/index.js.map +1 -1
  64. package/dist/elements/BulkUpload/index.css +48 -0
  65. package/dist/elements/BulkUpload/index.d.ts +6 -5
  66. package/dist/elements/BulkUpload/index.d.ts.map +1 -1
  67. package/dist/elements/BulkUpload/index.js +42 -41
  68. package/dist/elements/BulkUpload/index.js.map +1 -1
  69. package/dist/elements/Button/index.css +2 -2
  70. package/dist/elements/Button/index.d.ts.map +1 -1
  71. package/dist/elements/Button/index.js +7 -0
  72. package/dist/elements/Button/index.js.map +1 -1
  73. package/dist/elements/ClipboardAction/ClipboardActionLabel.d.ts.map +1 -1
  74. package/dist/elements/ClipboardAction/clipboardUtilities.d.ts +8 -1
  75. package/dist/elements/ClipboardAction/clipboardUtilities.d.ts.map +1 -1
  76. package/dist/elements/ClipboardAction/clipboardUtilities.js +40 -8
  77. package/dist/elements/ClipboardAction/clipboardUtilities.js.map +1 -1
  78. package/dist/elements/ClipboardAction/clipboardUtilities.spec.js +120 -0
  79. package/dist/elements/ClipboardAction/clipboardUtilities.spec.js.map +1 -0
  80. package/dist/elements/ClipboardAction/index.d.ts.map +1 -1
  81. package/dist/elements/ClipboardAction/index.js +18 -1
  82. package/dist/elements/ClipboardAction/index.js.map +1 -1
  83. package/dist/elements/ClipboardAction/isClipboardDataValid.spec.js +144 -0
  84. package/dist/elements/ClipboardAction/isClipboardDataValid.spec.js.map +1 -0
  85. package/dist/elements/ClipboardAction/mergeFormStateFromClipboard.d.ts +10 -0
  86. package/dist/elements/ClipboardAction/mergeFormStateFromClipboard.d.ts.map +1 -1
  87. package/dist/elements/ClipboardAction/mergeFormStateFromClipboard.js +65 -3
  88. package/dist/elements/ClipboardAction/mergeFormStateFromClipboard.js.map +1 -1
  89. package/dist/elements/ClipboardAction/mergeFormStateFromClipboard.spec.js +345 -1
  90. package/dist/elements/ClipboardAction/mergeFormStateFromClipboard.spec.js.map +1 -1
  91. package/dist/elements/ClipboardAction/types.d.ts +3 -0
  92. package/dist/elements/ClipboardAction/types.d.ts.map +1 -1
  93. package/dist/elements/ClipboardAction/types.js.map +1 -1
  94. package/dist/elements/ClipboardAction/useCanPasteClipboard.d.ts +10 -0
  95. package/dist/elements/ClipboardAction/useCanPasteClipboard.d.ts.map +1 -0
  96. package/dist/elements/ClipboardAction/useCanPasteClipboard.js +21 -0
  97. package/dist/elements/ClipboardAction/useCanPasteClipboard.js.map +1 -0
  98. package/dist/elements/CodeEditor/CodeEditor.d.ts.map +1 -1
  99. package/dist/elements/CodeEditor/index.css +5 -5
  100. package/dist/elements/Collapsible/index.d.ts.map +1 -1
  101. package/dist/elements/Collapsible/index.js +2 -0
  102. package/dist/elements/Collapsible/index.js.map +1 -1
  103. package/dist/elements/ColumnSelection/Popup.d.ts.map +1 -1
  104. package/dist/elements/ColumnSelection/Popup.js +6 -6
  105. package/dist/elements/ColumnSelection/Popup.js.map +1 -1
  106. package/dist/elements/ColumnSelection/matchesColumnSearch.d.ts +10 -0
  107. package/dist/elements/ColumnSelection/matchesColumnSearch.d.ts.map +1 -0
  108. package/dist/elements/ColumnSelection/matchesColumnSearch.js +21 -0
  109. package/dist/elements/ColumnSelection/matchesColumnSearch.js.map +1 -0
  110. package/dist/elements/ColumnSelection/matchesColumnSearch.spec.js +87 -0
  111. package/dist/elements/ColumnSelection/matchesColumnSearch.spec.js.map +1 -0
  112. package/dist/elements/CommandPalette/index.css +0 -7
  113. package/dist/elements/CopyLocaleData/index.d.ts.map +1 -1
  114. package/dist/elements/CopyLocaleData/index.js +9 -10
  115. package/dist/elements/CopyLocaleData/index.js.map +1 -1
  116. package/dist/elements/CopyToClipboard/index.d.ts +1 -0
  117. package/dist/elements/CopyToClipboard/index.d.ts.map +1 -1
  118. package/dist/elements/CopyToClipboard/index.js +10 -8
  119. package/dist/elements/CopyToClipboard/index.js.map +1 -1
  120. package/dist/elements/CreateDocumentButton/index.d.ts.map +1 -1
  121. package/dist/elements/CreateDocumentButton/index.js +4 -2
  122. package/dist/elements/CreateDocumentButton/index.js.map +1 -1
  123. package/dist/elements/DatePicker/DatePicker.d.ts.map +1 -1
  124. package/dist/elements/DatePicker/DatePicker.js +1 -0
  125. package/dist/elements/DatePicker/DatePicker.js.map +1 -1
  126. package/dist/elements/DatePicker/getFormattedLocale.d.ts.map +1 -1
  127. package/dist/elements/DatePicker/index.css +10 -10
  128. package/dist/elements/DatePicker/index.js +1 -1
  129. package/dist/elements/DatePicker/index.js.map +1 -1
  130. package/dist/elements/DeleteDocument/index.d.ts.map +1 -1
  131. package/dist/elements/DeleteDocument/index.js +16 -1
  132. package/dist/elements/DeleteDocument/index.js.map +1 -1
  133. package/dist/elements/DeleteMany/index.d.ts.map +1 -1
  134. package/dist/elements/DeleteMany/index.js +2 -3
  135. package/dist/elements/DeleteMany/index.js.map +1 -1
  136. package/dist/elements/Dialog/DialogHeader/index.d.ts +4 -0
  137. package/dist/elements/Dialog/DialogHeader/index.d.ts.map +1 -1
  138. package/dist/elements/Dialog/DialogHeader/index.js +45 -30
  139. package/dist/elements/Dialog/DialogHeader/index.js.map +1 -1
  140. package/dist/elements/Dialog/DialogModal/index.d.ts +5 -0
  141. package/dist/elements/Dialog/DialogModal/index.d.ts.map +1 -1
  142. package/dist/elements/Dialog/DialogModal/index.js +58 -31
  143. package/dist/elements/Dialog/DialogModal/index.js.map +1 -1
  144. package/dist/elements/Dialog/DialogTitle/index.css +9 -0
  145. package/dist/elements/Dialog/DialogTitle/index.d.ts +5 -0
  146. package/dist/elements/Dialog/DialogTitle/index.d.ts.map +1 -0
  147. package/dist/elements/Dialog/DialogTitle/index.js +10 -0
  148. package/dist/elements/Dialog/DialogTitle/index.js.map +1 -0
  149. package/dist/elements/Dialog/index.css +7 -1
  150. package/dist/elements/DocumentControls/index.css +1 -3
  151. package/dist/elements/DocumentControls/index.d.ts +2 -2
  152. package/dist/elements/DocumentControls/index.d.ts.map +1 -1
  153. package/dist/elements/DocumentControls/index.js +11 -1
  154. package/dist/elements/DocumentControls/index.js.map +1 -1
  155. package/dist/elements/DocumentDrawer/DrawerHeader/index.d.ts +2 -2
  156. package/dist/elements/DocumentDrawer/DrawerHeader/index.d.ts.map +1 -1
  157. package/dist/elements/DocumentDrawer/DrawerHeader/index.js.map +1 -1
  158. package/dist/elements/DocumentFields/index.css +14 -2
  159. package/dist/elements/DocumentFields/index.d.ts +5 -0
  160. package/dist/elements/DocumentFields/index.d.ts.map +1 -1
  161. package/dist/elements/DocumentFields/index.js +9 -1
  162. package/dist/elements/DocumentFields/index.js.map +1 -1
  163. package/dist/elements/DocumentHeader/DocumentHeaderRoot/index.d.ts +12 -0
  164. package/dist/elements/DocumentHeader/DocumentHeaderRoot/index.d.ts.map +1 -0
  165. package/dist/elements/DocumentHeader/DocumentHeaderRoot/index.js +28 -0
  166. package/dist/elements/DocumentHeader/DocumentHeaderRoot/index.js.map +1 -0
  167. package/dist/elements/DocumentHeader/Tabs/tabs/index.d.ts.map +1 -1
  168. package/dist/elements/DocumentHeader/index.js +2 -3
  169. package/dist/elements/DocumentHeader/index.js.map +1 -1
  170. package/dist/elements/DocumentLocked/index.d.ts +2 -2
  171. package/dist/elements/DocumentLocked/index.d.ts.map +1 -1
  172. package/dist/elements/DocumentLocked/index.js.map +1 -1
  173. package/dist/elements/DraggableSortable/DragOverlayPreview/index.css +1 -1
  174. package/dist/elements/DraggableSortable/useDraggableSortable/index.d.ts.map +1 -1
  175. package/dist/elements/Drawer/index.css +10 -4
  176. package/dist/elements/Drawer/index.d.ts.map +1 -1
  177. package/dist/elements/Drawer/index.js +1 -0
  178. package/dist/elements/Drawer/index.js.map +1 -1
  179. package/dist/elements/Drawer/useDrawerSlug.d.ts.map +1 -1
  180. package/dist/elements/DrawerActionHeader/index.css +1 -1
  181. package/dist/elements/DrawerActionHeader/index.d.ts.map +1 -1
  182. package/dist/elements/{BulkUpload/Header → DrawerHeader}/index.css +7 -1
  183. package/dist/elements/DrawerHeader/index.d.ts +10 -0
  184. package/dist/elements/DrawerHeader/index.d.ts.map +1 -0
  185. package/dist/elements/{BulkUpload/Header → DrawerHeader}/index.js +16 -11
  186. package/dist/elements/DrawerHeader/index.js.map +1 -0
  187. package/dist/elements/Dropzone/index.css +13 -15
  188. package/dist/elements/DuplicateDocument/SelectLocalesDrawer/index.js +4 -3
  189. package/dist/elements/DuplicateDocument/SelectLocalesDrawer/index.js.map +1 -1
  190. package/dist/elements/DuplicateDocument/index.d.ts.map +1 -1
  191. package/dist/elements/DuplicateDocument/index.js +2 -3
  192. package/dist/elements/DuplicateDocument/index.js.map +1 -1
  193. package/dist/elements/EditMany/DrawerContent.d.ts.map +1 -1
  194. package/dist/elements/EditMany/DrawerContent.js +4 -5
  195. package/dist/elements/EditMany/DrawerContent.js.map +1 -1
  196. package/dist/elements/EditUpload/index.css +97 -158
  197. package/dist/elements/EditUpload/index.d.ts +2 -1
  198. package/dist/elements/EditUpload/index.d.ts.map +1 -1
  199. package/dist/elements/EditUpload/index.js +209 -231
  200. package/dist/elements/EditUpload/index.js.map +1 -1
  201. package/dist/elements/EditUpload/{library.scss → library.css} +108 -46
  202. package/dist/elements/FieldSelect/reduceFieldOptions.d.ts.map +1 -1
  203. package/dist/elements/FieldSelect/reduceFieldOptions.js +3 -1
  204. package/dist/elements/FieldSelect/reduceFieldOptions.js.map +1 -1
  205. package/dist/elements/FieldSelect/reduceFieldOptions.spec.js +143 -0
  206. package/dist/elements/FieldSelect/reduceFieldOptions.spec.js.map +1 -0
  207. package/dist/elements/FileDetails/DraggableFileDetails/index.d.ts +1 -1
  208. package/dist/elements/FileDetails/DraggableFileDetails/index.d.ts.map +1 -1
  209. package/dist/elements/FileDetails/DraggableFileDetails/index.js.map +1 -1
  210. package/dist/elements/FileDetails/FileMeta/index.css +27 -0
  211. package/dist/elements/FileDetails/FileMeta/index.d.ts +1 -1
  212. package/dist/elements/FileDetails/FileMeta/index.d.ts.map +1 -1
  213. package/dist/elements/FileDetails/FileMeta/index.js +1 -1
  214. package/dist/elements/FileDetails/FileMeta/index.js.map +1 -1
  215. package/dist/elements/FileDetails/StaticFileDetails/index.css +139 -0
  216. package/dist/elements/FileDetails/StaticFileDetails/index.d.ts +2 -2
  217. package/dist/elements/FileDetails/StaticFileDetails/index.d.ts.map +1 -1
  218. package/dist/elements/FileDetails/StaticFileDetails/index.js +1 -1
  219. package/dist/elements/FileDetails/StaticFileDetails/index.js.map +1 -1
  220. package/dist/elements/FileDetails/index.d.ts +1 -1
  221. package/dist/elements/FileDetails/index.d.ts.map +1 -1
  222. package/dist/elements/FileDetails/index.js.map +1 -1
  223. package/dist/elements/FileManager/FilePreview/AudioPreview/index.css +8 -0
  224. package/dist/elements/FileManager/FilePreview/AudioPreview/index.d.ts +10 -0
  225. package/dist/elements/FileManager/FilePreview/AudioPreview/index.d.ts.map +1 -0
  226. package/dist/elements/FileManager/FilePreview/AudioPreview/index.js +24 -0
  227. package/dist/elements/FileManager/FilePreview/AudioPreview/index.js.map +1 -0
  228. package/dist/elements/FileManager/FilePreview/PdfPreview/index.css +9 -0
  229. package/dist/elements/FileManager/FilePreview/PdfPreview/index.d.ts +12 -0
  230. package/dist/elements/FileManager/FilePreview/PdfPreview/index.d.ts.map +1 -0
  231. package/dist/elements/FileManager/FilePreview/PdfPreview/index.js +27 -0
  232. package/dist/elements/FileManager/FilePreview/PdfPreview/index.js.map +1 -0
  233. package/dist/elements/FileManager/FilePreview/VideoPreview/index.css +8 -0
  234. package/dist/elements/FileManager/FilePreview/VideoPreview/index.d.ts +10 -0
  235. package/dist/elements/FileManager/FilePreview/VideoPreview/index.d.ts.map +1 -0
  236. package/dist/elements/FileManager/FilePreview/VideoPreview/index.js +24 -0
  237. package/dist/elements/FileManager/FilePreview/VideoPreview/index.js.map +1 -0
  238. package/dist/elements/FileManager/FilePreview/index.css +83 -0
  239. package/dist/elements/FileManager/FilePreview/index.d.ts +13 -0
  240. package/dist/elements/FileManager/FilePreview/index.d.ts.map +1 -0
  241. package/dist/elements/FileManager/FilePreview/index.js +140 -0
  242. package/dist/elements/FileManager/FilePreview/index.js.map +1 -0
  243. package/dist/elements/FileManager/FileToolbar/index.css +91 -0
  244. package/dist/elements/FileManager/FileToolbar/index.d.ts +14 -0
  245. package/dist/elements/FileManager/FileToolbar/index.d.ts.map +1 -0
  246. package/dist/elements/FileManager/FileToolbar/index.js +109 -0
  247. package/dist/elements/FileManager/FileToolbar/index.js.map +1 -0
  248. package/dist/elements/FileManager/index.css +137 -0
  249. package/dist/elements/FileManager/index.d.ts +19 -0
  250. package/dist/elements/FileManager/index.d.ts.map +1 -0
  251. package/dist/elements/FileManager/index.js +527 -0
  252. package/dist/elements/FileManager/index.js.map +1 -0
  253. package/dist/elements/GroupBy/Popup.d.ts.map +1 -1
  254. package/dist/elements/GroupBy/Popup.js +0 -1
  255. package/dist/elements/GroupBy/Popup.js.map +1 -1
  256. package/dist/elements/HTMLDiff/diff/index.d.ts.map +1 -1
  257. package/dist/elements/HTMLDiff/index.d.ts.map +1 -1
  258. package/dist/elements/Hierarchy/ColumnBrowser/Column/index.css +5 -3
  259. package/dist/elements/Hierarchy/ColumnBrowser/ColumnItem/index.css +1 -1
  260. package/dist/elements/Hierarchy/ColumnBrowser/index.d.ts.map +1 -1
  261. package/dist/elements/Hierarchy/ColumnBrowser/types.d.ts +1 -1
  262. package/dist/elements/Hierarchy/ColumnBrowser/types.d.ts.map +1 -1
  263. package/dist/elements/Hierarchy/ColumnBrowser/types.js.map +1 -1
  264. package/dist/elements/Hierarchy/DocHeaderButton/index.js +12 -12
  265. package/dist/elements/Hierarchy/DocHeaderButton/index.js.map +1 -1
  266. package/dist/elements/Hierarchy/Field/index.client.js +14 -14
  267. package/dist/elements/Hierarchy/Field/index.client.js.map +1 -1
  268. package/dist/elements/Hierarchy/Modal/fetchAncestorPath.d.ts.map +1 -0
  269. package/dist/elements/Hierarchy/Modal/fetchAncestorPath.js.map +1 -0
  270. package/dist/elements/Hierarchy/Modal/index.css +88 -0
  271. package/dist/elements/Hierarchy/Modal/index.d.ts +20 -0
  272. package/dist/elements/Hierarchy/Modal/index.d.ts.map +1 -0
  273. package/dist/elements/Hierarchy/{Drawer → Modal}/index.js +105 -81
  274. package/dist/elements/Hierarchy/Modal/index.js.map +1 -0
  275. package/dist/elements/Hierarchy/{Drawer → Modal}/types.d.ts +22 -18
  276. package/dist/elements/Hierarchy/Modal/types.d.ts.map +1 -0
  277. package/dist/elements/Hierarchy/Modal/types.js.map +1 -0
  278. package/dist/elements/Hierarchy/Modal/useHierarchyModal.d.ts +30 -0
  279. package/dist/elements/Hierarchy/Modal/useHierarchyModal.d.ts.map +1 -0
  280. package/dist/elements/Hierarchy/{Drawer/useHierarchyDrawer.js → Modal/useHierarchyModal.js} +51 -50
  281. package/dist/elements/Hierarchy/Modal/useHierarchyModal.js.map +1 -0
  282. package/dist/elements/Hierarchy/MoveMany/index.d.ts +2 -2
  283. package/dist/elements/Hierarchy/MoveMany/index.d.ts.map +1 -1
  284. package/dist/elements/Hierarchy/MoveMany/index.js +11 -12
  285. package/dist/elements/Hierarchy/MoveMany/index.js.map +1 -1
  286. package/dist/elements/Hierarchy/Search/useHierarchySearch.d.ts.map +1 -1
  287. package/dist/elements/Hierarchy/Search/useHierarchySearch.js +2 -3
  288. package/dist/elements/Hierarchy/Search/useHierarchySearch.js.map +1 -1
  289. package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.d.ts.map +1 -1
  290. package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.js +109 -89
  291. package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.js.map +1 -1
  292. package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.server.d.ts.map +1 -1
  293. package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.server.js +2 -0
  294. package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.server.js.map +1 -1
  295. package/dist/elements/Hierarchy/Tree/TreeFocusContext.d.ts +1 -1
  296. package/dist/elements/Hierarchy/Tree/TreeFocusContext.d.ts.map +1 -1
  297. package/dist/elements/Hierarchy/Tree/TreeNode/index.css +38 -14
  298. package/dist/elements/Hierarchy/Tree/TreeNode/index.d.ts.map +1 -1
  299. package/dist/elements/Hierarchy/Tree/TreeNode/index.js +37 -31
  300. package/dist/elements/Hierarchy/Tree/TreeNode/index.js.map +1 -1
  301. package/dist/elements/Hierarchy/Tree/index.css +1 -1
  302. package/dist/elements/Hierarchy/Tree/index.d.ts.map +1 -1
  303. package/dist/elements/Hierarchy/Tree/index.js +18 -5
  304. package/dist/elements/Hierarchy/Tree/index.js.map +1 -1
  305. package/dist/elements/Hierarchy/Tree/useChildren.d.ts.map +1 -1
  306. package/dist/elements/IDLabel/index.css +6 -0
  307. package/dist/elements/IDLabel/index.d.ts +1 -1
  308. package/dist/elements/IDLabel/index.d.ts.map +1 -1
  309. package/dist/elements/IDLabel/index.js +16 -21
  310. package/dist/elements/IDLabel/index.js.map +1 -1
  311. package/dist/elements/InputStepper/index.css +0 -1
  312. package/dist/elements/LeaveWithoutSaving/index.d.ts.map +1 -1
  313. package/dist/elements/LeaveWithoutSaving/usePreventLeave.d.ts.map +1 -1
  314. package/dist/elements/ListControls/index.d.ts.map +1 -1
  315. package/dist/elements/ListControls/index.js +1 -2
  316. package/dist/elements/ListControls/index.js.map +1 -1
  317. package/dist/elements/ListDrawer/DrawerContent.js +1 -1
  318. package/dist/elements/ListDrawer/DrawerContent.js.map +1 -1
  319. package/dist/elements/ListDrawer/Provider.d.ts +1 -1
  320. package/dist/elements/ListDrawer/Provider.d.ts.map +1 -1
  321. package/dist/elements/ListDrawer/Provider.js.map +1 -1
  322. package/dist/elements/ListDrawer/index.d.ts.map +1 -1
  323. package/dist/elements/ListHeader/DrawerRelationshipSelect/index.d.ts.map +1 -1
  324. package/dist/elements/ListHeader/DrawerRelationshipSelect/index.js +2 -0
  325. package/dist/elements/ListHeader/DrawerRelationshipSelect/index.js.map +1 -1
  326. package/dist/elements/ListHeader/TitleActions/ListBulkUploadButton.d.ts +1 -7
  327. package/dist/elements/ListHeader/TitleActions/ListBulkUploadButton.d.ts.map +1 -1
  328. package/dist/elements/ListHeader/TitleActions/ListBulkUploadButton.js +28 -34
  329. package/dist/elements/ListHeader/TitleActions/ListBulkUploadButton.js.map +1 -1
  330. package/dist/elements/ListHeader/TitleActions/ListEmptyTrashButton.d.ts.map +1 -1
  331. package/dist/elements/ListHeader/TitleActions/ListEmptyTrashButton.js +2 -3
  332. package/dist/elements/ListHeader/TitleActions/ListEmptyTrashButton.js.map +1 -1
  333. package/dist/elements/LivePreview/Toolbar/Controls/index.js +2 -2
  334. package/dist/elements/LivePreview/Toolbar/Controls/index.js.map +1 -1
  335. package/dist/elements/LivePreview/Toolbar/SizeInput/index.css +5 -44
  336. package/dist/elements/LivePreview/Toolbar/SizeInput/index.d.ts.map +1 -1
  337. package/dist/elements/LivePreview/Toolbar/SizeInput/index.js +26 -43
  338. package/dist/elements/LivePreview/Toolbar/SizeInput/index.js.map +1 -1
  339. package/dist/elements/LivePreview/Window/index.css +6 -0
  340. package/dist/elements/LivePreview/Window/index.js +1 -1
  341. package/dist/elements/LivePreview/Window/index.js.map +1 -1
  342. package/dist/elements/LoadingOverlay/reducer.d.ts.map +1 -1
  343. package/dist/elements/Localizer/index.js +1 -1
  344. package/dist/elements/Localizer/index.js.map +1 -1
  345. package/dist/elements/Locked/index.css +0 -5
  346. package/dist/elements/Locked/index.d.ts +2 -2
  347. package/dist/elements/Locked/index.d.ts.map +1 -1
  348. package/dist/elements/Locked/index.js +38 -19
  349. package/dist/elements/Locked/index.js.map +1 -1
  350. package/dist/elements/MiniCarousel/index.css +96 -0
  351. package/dist/elements/MiniCarousel/index.d.ts +15 -0
  352. package/dist/elements/MiniCarousel/index.d.ts.map +1 -0
  353. package/dist/elements/MiniCarousel/index.js +84 -0
  354. package/dist/elements/MiniCarousel/index.js.map +1 -0
  355. package/dist/elements/Nav/SettingsMenuButton/index.css +5 -0
  356. package/dist/elements/Nav/SettingsMenuButton/index.d.ts +1 -1
  357. package/dist/elements/Nav/SettingsMenuButton/index.d.ts.map +1 -1
  358. package/dist/elements/Nav/SettingsMenuButton/index.js +1 -1
  359. package/dist/elements/Nav/SettingsMenuButton/index.js.map +1 -1
  360. package/dist/elements/Nav/SidebarTabs/index.client.d.ts.map +1 -1
  361. package/dist/elements/Nav/SidebarTabs/index.client.js +12 -5
  362. package/dist/elements/Nav/SidebarTabs/index.client.js.map +1 -1
  363. package/dist/elements/Nav/SidebarTabs/index.css +0 -5
  364. package/dist/elements/Nav/SidebarTabs/renderTabServerFn.d.ts +1 -0
  365. package/dist/elements/Nav/SidebarTabs/renderTabServerFn.d.ts.map +1 -1
  366. package/dist/elements/Nav/SidebarTabs/renderTabServerFn.js +2 -1
  367. package/dist/elements/Nav/SidebarTabs/renderTabServerFn.js.map +1 -1
  368. package/dist/elements/Nav/index.css +2 -7
  369. package/dist/elements/NavGroup/index.css +1 -2
  370. package/dist/elements/Pagination/index.css +5 -0
  371. package/dist/elements/Pagination/index.d.ts.map +1 -1
  372. package/dist/elements/Pagination/index.js +21 -21
  373. package/dist/elements/Pagination/index.js.map +1 -1
  374. package/dist/elements/Popup/PopupButtonList/index.css +1 -1
  375. package/dist/elements/Popup/PopupTrigger/index.d.ts +1 -0
  376. package/dist/elements/Popup/PopupTrigger/index.d.ts.map +1 -1
  377. package/dist/elements/Popup/PopupTrigger/index.js +3 -0
  378. package/dist/elements/Popup/PopupTrigger/index.js.map +1 -1
  379. package/dist/elements/Popup/index.d.ts +7 -1
  380. package/dist/elements/Popup/index.d.ts.map +1 -1
  381. package/dist/elements/Popup/index.js +4 -2
  382. package/dist/elements/Popup/index.js.map +1 -1
  383. package/dist/elements/PreviewButton/index.d.ts +1 -2
  384. package/dist/elements/PreviewButton/index.d.ts.map +1 -1
  385. package/dist/elements/PreviewButton/index.js +11 -5
  386. package/dist/elements/PreviewButton/index.js.map +1 -1
  387. package/dist/elements/PreviewSizes/index.css +148 -0
  388. package/dist/elements/PreviewSizes/index.d.ts +2 -2
  389. package/dist/elements/PreviewSizes/index.d.ts.map +1 -1
  390. package/dist/elements/PreviewSizes/index.js +1 -1
  391. package/dist/elements/PreviewSizes/index.js.map +1 -1
  392. package/dist/elements/PublishButton/ScheduleDrawer/buildUpcomingColumns.d.ts.map +1 -1
  393. package/dist/elements/PublishButton/ScheduleDrawer/buildUpcomingScheduleWhere.d.ts.map +1 -1
  394. package/dist/elements/PublishButton/ScheduleDrawer/index.d.ts.map +1 -1
  395. package/dist/elements/PublishButton/ScheduleDrawer/index.js +9 -31
  396. package/dist/elements/PublishButton/ScheduleDrawer/index.js.map +1 -1
  397. package/dist/elements/PublishButton/ScheduleDrawer/types.d.ts +1 -1
  398. package/dist/elements/PublishButton/ScheduleDrawer/types.d.ts.map +1 -1
  399. package/dist/elements/PublishButton/ScheduleDrawer/types.js.map +1 -1
  400. package/dist/elements/PublishButton/index.d.ts.map +1 -1
  401. package/dist/elements/PublishButton/index.js +5 -6
  402. package/dist/elements/PublishButton/index.js.map +1 -1
  403. package/dist/elements/PublishMany/DrawerContent.d.ts.map +1 -1
  404. package/dist/elements/PublishMany/DrawerContent.js +2 -3
  405. package/dist/elements/PublishMany/DrawerContent.js.map +1 -1
  406. package/dist/elements/QueryPresets/QueryPresetBar/index.js +1 -3
  407. package/dist/elements/QueryPresets/QueryPresetBar/index.js.map +1 -1
  408. package/dist/elements/ReactSelect/ClearIndicator/index.css +0 -1
  409. package/dist/elements/ReactSelect/DefaultMenuPortal.d.ts +7 -0
  410. package/dist/elements/ReactSelect/DefaultMenuPortal.d.ts.map +1 -0
  411. package/dist/elements/ReactSelect/DefaultMenuPortal.js +120 -0
  412. package/dist/elements/ReactSelect/DefaultMenuPortal.js.map +1 -0
  413. package/dist/elements/ReactSelect/DropdownIndicator/index.css +1 -1
  414. package/dist/elements/ReactSelect/DropdownIndicator/index.d.ts.map +1 -1
  415. package/dist/elements/ReactSelect/DropdownIndicator/index.js +19 -12
  416. package/dist/elements/ReactSelect/DropdownIndicator/index.js.map +1 -1
  417. package/dist/elements/ReactSelect/MultiValue/index.css +0 -1
  418. package/dist/elements/ReactSelect/MultiValueLabel/index.css +2 -2
  419. package/dist/elements/ReactSelect/getCaptureMenuScroll.d.ts.map +1 -1
  420. package/dist/elements/ReactSelect/getMenuListStyles.d.ts +1 -1
  421. package/dist/elements/ReactSelect/getMenuListStyles.d.ts.map +1 -1
  422. package/dist/elements/ReactSelect/getMenuListStyles.js +13 -5
  423. package/dist/elements/ReactSelect/getMenuListStyles.js.map +1 -1
  424. package/dist/elements/ReactSelect/getMenuStyles.d.ts +10 -0
  425. package/dist/elements/ReactSelect/getMenuStyles.d.ts.map +1 -0
  426. package/dist/elements/ReactSelect/getMenuStyles.js +21 -0
  427. package/dist/elements/ReactSelect/getMenuStyles.js.map +1 -0
  428. package/dist/elements/ReactSelect/index.css +10 -6
  429. package/dist/elements/ReactSelect/index.d.ts.map +1 -1
  430. package/dist/elements/ReactSelect/index.js +25 -102
  431. package/dist/elements/ReactSelect/index.js.map +1 -1
  432. package/dist/elements/ReactSelect/types.d.ts +2 -2
  433. package/dist/elements/ReactSelect/types.d.ts.map +1 -1
  434. package/dist/elements/ReactSelect/types.js.map +1 -1
  435. package/dist/elements/RelationshipTable/AddNewButton.d.ts +2 -2
  436. package/dist/elements/RelationshipTable/AddNewButton.d.ts.map +1 -1
  437. package/dist/elements/RelationshipTable/AddNewButton.js +1 -2
  438. package/dist/elements/RelationshipTable/AddNewButton.js.map +1 -1
  439. package/dist/elements/RelationshipTable/Pagination.d.ts +0 -1
  440. package/dist/elements/RelationshipTable/Pagination.d.ts.map +1 -1
  441. package/dist/elements/RelationshipTable/Pagination.js +27 -77
  442. package/dist/elements/RelationshipTable/Pagination.js.map +1 -1
  443. package/dist/elements/RelationshipTable/index.css +1 -4
  444. package/dist/elements/RelationshipTable/index.d.ts +1 -0
  445. package/dist/elements/RelationshipTable/index.d.ts.map +1 -1
  446. package/dist/elements/RelationshipTable/index.js +41 -5
  447. package/dist/elements/RelationshipTable/index.js.map +1 -1
  448. package/dist/elements/RenderTitle/index.css +4 -0
  449. package/dist/elements/RenderTitle/index.d.ts.map +1 -1
  450. package/dist/elements/RenderTitle/index.js +18 -13
  451. package/dist/elements/RenderTitle/index.js.map +1 -1
  452. package/dist/elements/RestoreMany/index.d.ts.map +1 -1
  453. package/dist/elements/RestoreMany/index.js +2 -3
  454. package/dist/elements/RestoreMany/index.js.map +1 -1
  455. package/dist/elements/SaveDraftButton/index.d.ts.map +1 -1
  456. package/dist/elements/SaveDraftButton/index.js +2 -3
  457. package/dist/elements/SaveDraftButton/index.js.map +1 -1
  458. package/dist/elements/Search/ListSearchFilter/index.d.ts.map +1 -1
  459. package/dist/elements/Search/ListSearchFilter/index.js +1 -0
  460. package/dist/elements/Search/ListSearchFilter/index.js.map +1 -1
  461. package/dist/elements/Search/SearchInput/index.d.ts +2 -0
  462. package/dist/elements/Search/SearchInput/index.d.ts.map +1 -1
  463. package/dist/elements/Search/SearchInput/index.js +22 -19
  464. package/dist/elements/Search/SearchInput/index.js.map +1 -1
  465. package/dist/elements/SelectAll/index.css +3 -1
  466. package/dist/elements/SelectRow/index.d.ts +5 -4
  467. package/dist/elements/SelectRow/index.d.ts.map +1 -1
  468. package/dist/elements/SelectRow/index.js +10 -7
  469. package/dist/elements/SelectRow/index.js.map +1 -1
  470. package/dist/elements/SidebarRow/index.css +0 -2
  471. package/dist/elements/SidebarToggle/index.css +0 -17
  472. package/dist/elements/SortColumn/index.d.ts.map +1 -1
  473. package/dist/elements/SortColumn/index.js +42 -38
  474. package/dist/elements/SortColumn/index.js.map +1 -1
  475. package/dist/elements/SortHeader/index.d.ts.map +1 -1
  476. package/dist/elements/SortHeader/index.js +29 -26
  477. package/dist/elements/SortHeader/index.js.map +1 -1
  478. package/dist/elements/Status/index.d.ts.map +1 -1
  479. package/dist/elements/Status/index.js +2 -3
  480. package/dist/elements/Status/index.js.map +1 -1
  481. package/dist/elements/StepNav/index.css +64 -14
  482. package/dist/elements/StepNav/index.d.ts.map +1 -1
  483. package/dist/elements/StepNav/index.js +143 -69
  484. package/dist/elements/StepNav/index.js.map +1 -1
  485. package/dist/elements/Table/DefaultCell/fields/Hierarchy/index.d.ts.map +1 -1
  486. package/dist/elements/Table/DefaultCell/fields/Hierarchy/index.js +32 -13
  487. package/dist/elements/Table/DefaultCell/fields/Hierarchy/index.js.map +1 -1
  488. package/dist/elements/Table/DefaultCell/fields/index.d.ts +1 -1
  489. package/dist/elements/Table/DefaultCell/fields/index.d.ts.map +1 -1
  490. package/dist/elements/Table/DefaultCell/index.d.ts.map +1 -1
  491. package/dist/elements/Table/DefaultCell/index.js +3 -11
  492. package/dist/elements/Table/DefaultCell/index.js.map +1 -1
  493. package/dist/elements/Table/OrderableRow.d.ts +3 -1
  494. package/dist/elements/Table/OrderableRow.d.ts.map +1 -1
  495. package/dist/elements/Table/OrderableRow.js +17 -1
  496. package/dist/elements/Table/OrderableRow.js.map +1 -1
  497. package/dist/elements/Table/OrderableRowDragPreview.d.ts.map +1 -1
  498. package/dist/elements/Table/OrderableTable.d.ts.map +1 -1
  499. package/dist/elements/Table/OrderableTable.js +20 -4
  500. package/dist/elements/Table/OrderableTable.js.map +1 -1
  501. package/dist/elements/Table/RelationshipProvider/index.d.ts.map +1 -1
  502. package/dist/elements/Table/RelationshipProvider/index.js +2 -3
  503. package/dist/elements/Table/RelationshipProvider/index.js.map +1 -1
  504. package/dist/elements/Table/index.css +26 -2
  505. package/dist/elements/TableSection/index.css +0 -1
  506. package/dist/elements/Tabs/index.d.ts.map +1 -1
  507. package/dist/elements/Thumbnail/createThumbnail.d.ts.map +1 -1
  508. package/dist/elements/Thumbnail/index.css +41 -0
  509. package/dist/elements/Thumbnail/index.d.ts +4 -4
  510. package/dist/elements/Thumbnail/index.d.ts.map +1 -1
  511. package/dist/elements/Thumbnail/index.js +1 -1
  512. package/dist/elements/Thumbnail/index.js.map +1 -1
  513. package/dist/elements/TimezonePicker/index.css +1 -1
  514. package/dist/elements/TimezonePicker/index.d.ts.map +1 -1
  515. package/dist/elements/TimezonePicker/index.js +5 -1
  516. package/dist/elements/TimezonePicker/index.js.map +1 -1
  517. package/dist/elements/Tooltip/index.css +15 -34
  518. package/dist/elements/Tooltip/index.d.ts +11 -3
  519. package/dist/elements/Tooltip/index.d.ts.map +1 -1
  520. package/dist/elements/Tooltip/index.js +151 -85
  521. package/dist/elements/Tooltip/index.js.map +1 -1
  522. package/dist/elements/UnpublishButton/index.d.ts.map +1 -1
  523. package/dist/elements/UnpublishButton/index.js +3 -4
  524. package/dist/elements/UnpublishButton/index.js.map +1 -1
  525. package/dist/elements/UnpublishMany/DrawerContent.d.ts.map +1 -1
  526. package/dist/elements/UnpublishMany/DrawerContent.js +2 -3
  527. package/dist/elements/UnpublishMany/DrawerContent.js.map +1 -1
  528. package/dist/elements/Upload/UploadFromURLModal/index.d.ts +11 -0
  529. package/dist/elements/Upload/UploadFromURLModal/index.d.ts.map +1 -0
  530. package/dist/elements/Upload/UploadFromURLModal/index.js +88 -0
  531. package/dist/elements/Upload/UploadFromURLModal/index.js.map +1 -0
  532. package/dist/elements/Upload/index.css +160 -69
  533. package/dist/elements/Upload/index.d.ts +3 -8
  534. package/dist/elements/Upload/index.d.ts.map +1 -1
  535. package/dist/elements/Upload/index.js +92 -175
  536. package/dist/elements/Upload/index.js.map +1 -1
  537. package/dist/elements/Upload/usePasteFromClipboard.d.ts +14 -0
  538. package/dist/elements/Upload/usePasteFromClipboard.d.ts.map +1 -0
  539. package/dist/elements/Upload/usePasteFromClipboard.js +93 -0
  540. package/dist/elements/Upload/usePasteFromClipboard.js.map +1 -0
  541. package/dist/elements/Upload/useUploadFromUrl.d.ts +20 -0
  542. package/dist/elements/Upload/useUploadFromUrl.d.ts.map +1 -0
  543. package/dist/elements/Upload/useUploadFromUrl.js +201 -0
  544. package/dist/elements/Upload/useUploadFromUrl.js.map +1 -0
  545. package/dist/elements/UploadDropzoneContent/index.css +31 -0
  546. package/dist/elements/UploadDropzoneContent/index.d.ts +17 -0
  547. package/dist/elements/UploadDropzoneContent/index.d.ts.map +1 -0
  548. package/dist/elements/UploadDropzoneContent/index.js +62 -0
  549. package/dist/elements/UploadDropzoneContent/index.js.map +1 -0
  550. package/dist/elements/UserMenu/SubMenuHeader/index.d.ts.map +1 -1
  551. package/dist/elements/UserMenu/SubMenuHeader/index.js +8 -9
  552. package/dist/elements/UserMenu/SubMenuHeader/index.js.map +1 -1
  553. package/dist/elements/UserMenu/index.css +26 -1
  554. package/dist/elements/UserMenu/index.d.ts +1 -0
  555. package/dist/elements/UserMenu/index.d.ts.map +1 -1
  556. package/dist/elements/UserMenu/index.js +2 -1
  557. package/dist/elements/UserMenu/index.js.map +1 -1
  558. package/dist/elements/WhereBuilder/Condition/Relationship/index.js +1 -1
  559. package/dist/elements/WhereBuilder/Condition/Relationship/index.js.map +1 -1
  560. package/dist/elements/WhereBuilder/Condition/Relationship/optionsReducer.d.ts.map +1 -1
  561. package/dist/elements/WhereBuilder/Condition/Select/formatOptions.d.ts.map +1 -1
  562. package/dist/elements/WhereBuilder/Condition/validOperators.d.ts.map +1 -1
  563. package/dist/elements/WhereBuilder/conditionValue.d.ts +32 -0
  564. package/dist/elements/WhereBuilder/conditionValue.d.ts.map +1 -0
  565. package/dist/elements/WhereBuilder/conditionValue.js +32 -0
  566. package/dist/elements/WhereBuilder/conditionValue.js.map +1 -0
  567. package/dist/elements/WhereBuilder/conditionValue.spec.js +65 -0
  568. package/dist/elements/WhereBuilder/conditionValue.spec.js.map +1 -0
  569. package/dist/elements/WhereBuilder/field-types.d.ts.map +1 -1
  570. package/dist/elements/WhereBuilder/index.d.ts.map +1 -1
  571. package/dist/elements/WhereBuilder/index.js +15 -4
  572. package/dist/elements/WhereBuilder/index.js.map +1 -1
  573. package/dist/exports/client/index.d.ts +13 -6
  574. package/dist/exports/client/index.d.ts.map +1 -1
  575. package/dist/exports/client/index.js +1 -2
  576. package/dist/exports/client/index.js.map +4 -4
  577. package/dist/exports/layouts.d.ts +1 -0
  578. package/dist/exports/layouts.d.ts.map +1 -1
  579. package/dist/exports/layouts.js +1 -0
  580. package/dist/exports/layouts.js.map +1 -1
  581. package/dist/exports/rsc/index.d.ts +3 -0
  582. package/dist/exports/rsc/index.d.ts.map +1 -1
  583. package/dist/exports/rsc/index.js +3 -0
  584. package/dist/exports/rsc/index.js.map +1 -1
  585. package/dist/exports/shared/index.d.ts +1 -0
  586. package/dist/exports/shared/index.d.ts.map +1 -1
  587. package/dist/exports/shared/index.js +2 -2
  588. package/dist/exports/shared/index.js.map +4 -4
  589. package/dist/fields/Array/ArrayRow.d.ts +1 -0
  590. package/dist/fields/Array/ArrayRow.d.ts.map +1 -1
  591. package/dist/fields/Array/ArrayRow.js +99 -160
  592. package/dist/fields/Array/ArrayRow.js.map +1 -1
  593. package/dist/fields/Array/index.d.ts +1 -1
  594. package/dist/fields/Array/index.d.ts.map +1 -1
  595. package/dist/fields/Array/index.js +47 -17
  596. package/dist/fields/Array/index.js.map +1 -1
  597. package/dist/fields/Blocks/BlockRow.d.ts +1 -0
  598. package/dist/fields/Blocks/BlockRow.d.ts.map +1 -1
  599. package/dist/fields/Blocks/BlockRow.js +136 -195
  600. package/dist/fields/Blocks/BlockRow.js.map +1 -1
  601. package/dist/fields/Blocks/BlockSelector/BlockSearch/index.css +1 -1
  602. package/dist/fields/Blocks/BlockSelector/index.css +2 -5
  603. package/dist/fields/Blocks/RowActions.d.ts +3 -0
  604. package/dist/fields/Blocks/RowActions.d.ts.map +1 -1
  605. package/dist/fields/Blocks/RowActions.js +26 -20
  606. package/dist/fields/Blocks/RowActions.js.map +1 -1
  607. package/dist/fields/Blocks/SectionTitle/index.d.ts.map +1 -1
  608. package/dist/fields/Blocks/SectionTitle/index.js +1 -0
  609. package/dist/fields/Blocks/SectionTitle/index.js.map +1 -1
  610. package/dist/fields/Blocks/index.d.ts +1 -1
  611. package/dist/fields/Blocks/index.d.ts.map +1 -1
  612. package/dist/fields/Blocks/index.js +46 -16
  613. package/dist/fields/Blocks/index.js.map +1 -1
  614. package/dist/fields/Checkbox/Input.d.ts +2 -0
  615. package/dist/fields/Checkbox/Input.d.ts.map +1 -1
  616. package/dist/fields/Checkbox/Input.js +32 -26
  617. package/dist/fields/Checkbox/Input.js.map +1 -1
  618. package/dist/fields/Checkbox/index.css +39 -75
  619. package/dist/fields/Checkbox/index.d.ts +1 -1
  620. package/dist/fields/Code/index.css +1 -1
  621. package/dist/fields/Code/index.d.ts +2 -2
  622. package/dist/fields/Collapsible/index.d.ts +1 -1
  623. package/dist/fields/ConfirmPassword/index.d.ts +4 -0
  624. package/dist/fields/ConfirmPassword/index.d.ts.map +1 -1
  625. package/dist/fields/ConfirmPassword/index.js +37 -33
  626. package/dist/fields/ConfirmPassword/index.js.map +1 -1
  627. package/dist/fields/DateTime/index.d.ts +1 -1
  628. package/dist/fields/Email/index.d.ts +1 -1
  629. package/dist/fields/FieldError/index.css +0 -9
  630. package/dist/fields/FieldError/index.d.ts.map +1 -1
  631. package/dist/fields/FieldError/index.js +19 -9
  632. package/dist/fields/FieldError/index.js.map +1 -1
  633. package/dist/fields/FieldLabel/index.d.ts.map +1 -1
  634. package/dist/fields/FieldLabel/index.js +4 -5
  635. package/dist/fields/FieldLabel/index.js.map +1 -1
  636. package/dist/fields/Group/index.css +4 -10
  637. package/dist/fields/Group/index.d.ts +2 -2
  638. package/dist/fields/JSON/index.d.ts +1 -1
  639. package/dist/fields/Join/index.css +9 -0
  640. package/dist/fields/Join/index.d.ts +1 -1
  641. package/dist/fields/Join/index.d.ts.map +1 -1
  642. package/dist/fields/Join/index.js +13 -9
  643. package/dist/fields/Join/index.js.map +1 -1
  644. package/dist/fields/Number/Input.d.ts.map +1 -1
  645. package/dist/fields/Number/Input.js +62 -46
  646. package/dist/fields/Number/Input.js.map +1 -1
  647. package/dist/fields/Number/index.css +19 -0
  648. package/dist/fields/Number/index.d.ts +1 -1
  649. package/dist/fields/Number/types.d.ts +10 -0
  650. package/dist/fields/Number/types.d.ts.map +1 -1
  651. package/dist/fields/Number/types.js.map +1 -1
  652. package/dist/fields/Password/input.d.ts.map +1 -1
  653. package/dist/fields/Password/input.js +33 -29
  654. package/dist/fields/Password/input.js.map +1 -1
  655. package/dist/fields/Password/types.d.ts +7 -3
  656. package/dist/fields/Password/types.d.ts.map +1 -1
  657. package/dist/fields/Password/types.js.map +1 -1
  658. package/dist/fields/Point/index.d.ts +1 -1
  659. package/dist/fields/RadioGroup/index.css +0 -7
  660. package/dist/fields/Relationship/Input.d.ts.map +1 -1
  661. package/dist/fields/Relationship/Input.js +38 -17
  662. package/dist/fields/Relationship/Input.js.map +1 -1
  663. package/dist/fields/Relationship/findOptionsByValue.d.ts.map +1 -1
  664. package/dist/fields/Relationship/index.d.ts +1 -1
  665. package/dist/fields/Relationship/optionsReducer.d.ts.map +1 -1
  666. package/dist/fields/Relationship/select-components/MultiValueLabel/index.css +2 -2
  667. package/dist/fields/Relationship/types.d.ts +4 -0
  668. package/dist/fields/Relationship/types.d.ts.map +1 -1
  669. package/dist/fields/Relationship/types.js.map +1 -1
  670. package/dist/fields/Row/index.d.ts +1 -1
  671. package/dist/fields/Select/Input.d.ts +4 -0
  672. package/dist/fields/Select/Input.d.ts.map +1 -1
  673. package/dist/fields/Select/Input.js +45 -40
  674. package/dist/fields/Select/Input.js.map +1 -1
  675. package/dist/fields/Select/index.d.ts +1 -1
  676. package/dist/fields/Select/index.d.ts.map +1 -1
  677. package/dist/fields/Slug/index.css +0 -1
  678. package/dist/fields/Slug/index.d.ts +7 -5
  679. package/dist/fields/Slug/index.d.ts.map +1 -1
  680. package/dist/fields/Slug/index.js +78 -113
  681. package/dist/fields/Slug/index.js.map +1 -1
  682. package/dist/fields/Tabs/index.d.ts +1 -1
  683. package/dist/fields/Text/Input.d.ts.map +1 -1
  684. package/dist/fields/Text/Input.js +44 -37
  685. package/dist/fields/Text/Input.js.map +1 -1
  686. package/dist/fields/Text/index.d.ts +1 -1
  687. package/dist/fields/Text/types.d.ts +11 -2
  688. package/dist/fields/Text/types.d.ts.map +1 -1
  689. package/dist/fields/Text/types.js.map +1 -1
  690. package/dist/fields/Textarea/Input.d.ts.map +1 -1
  691. package/dist/fields/Textarea/Input.js +27 -23
  692. package/dist/fields/Textarea/Input.js.map +1 -1
  693. package/dist/fields/Textarea/index.css +1 -1
  694. package/dist/fields/Textarea/index.d.ts +1 -1
  695. package/dist/fields/Textarea/types.d.ts +4 -0
  696. package/dist/fields/Textarea/types.d.ts.map +1 -1
  697. package/dist/fields/Textarea/types.js.map +1 -1
  698. package/dist/fields/Upload/Input.d.ts.map +1 -1
  699. package/dist/fields/Upload/Input.js +58 -30
  700. package/dist/fields/Upload/Input.js.map +1 -1
  701. package/dist/fields/Upload/Input.spec.js +242 -0
  702. package/dist/fields/Upload/Input.spec.js.map +1 -0
  703. package/dist/fields/Upload/index.css +19 -4
  704. package/dist/fields/Upload/index.js +1 -1
  705. package/dist/fields/Upload/index.js.map +1 -1
  706. package/dist/fields/index.d.ts.map +1 -1
  707. package/dist/fields/index.js +2 -0
  708. package/dist/fields/index.js.map +1 -1
  709. package/dist/fields/mergeFieldStyles.d.ts +1 -1
  710. package/dist/fields/mergeFieldStyles.d.ts.map +1 -1
  711. package/dist/fields/shared/index.d.ts +1 -1
  712. package/dist/fields/shared/index.d.ts.map +1 -1
  713. package/dist/fields/shared/index.js.map +1 -1
  714. package/dist/forms/Form/context.d.ts.map +1 -1
  715. package/dist/forms/Form/createNestedClientFieldPath.d.ts.map +1 -1
  716. package/dist/forms/Form/errorMessages.d.ts.map +1 -1
  717. package/dist/forms/Form/fieldReducer.d.ts.map +1 -1
  718. package/dist/forms/Form/fieldReducer.js +3 -1
  719. package/dist/forms/Form/fieldReducer.js.map +1 -1
  720. package/dist/forms/Form/index.d.ts.map +1 -1
  721. package/dist/forms/Form/index.js +14 -18
  722. package/dist/forms/Form/index.js.map +1 -1
  723. package/dist/forms/Form/mergeServerFormState.d.ts.map +1 -1
  724. package/dist/forms/Form/reduceToSerializableFields.d.ts.map +1 -1
  725. package/dist/forms/Form/rowHelpers.d.ts.map +1 -1
  726. package/dist/forms/Form/rows.d.ts.map +1 -1
  727. package/dist/forms/Form/types.d.ts +3 -3
  728. package/dist/forms/Form/types.d.ts.map +1 -1
  729. package/dist/forms/Form/types.js.map +1 -1
  730. package/dist/forms/NullifyField/index.d.ts.map +1 -1
  731. package/dist/forms/NullifyField/index.js +2 -3
  732. package/dist/forms/NullifyField/index.js.map +1 -1
  733. package/dist/forms/RenderFields/RenderField.d.ts +1 -1
  734. package/dist/forms/RenderFields/RenderField.d.ts.map +1 -1
  735. package/dist/forms/RenderFields/RenderField.js +10 -0
  736. package/dist/forms/RenderFields/RenderField.js.map +1 -1
  737. package/dist/forms/RenderFields/index.css +17 -3
  738. package/dist/forms/WatchChildErrors/buildPathSegments.d.ts.map +1 -1
  739. package/dist/forms/WatchChildErrors/index.d.ts.map +1 -1
  740. package/dist/forms/WatchChildErrors/index.js +2 -2
  741. package/dist/forms/WatchChildErrors/index.js.map +1 -1
  742. package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.d.ts +1 -0
  743. package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.d.ts.map +1 -1
  744. package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.js +23 -6
  745. package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.js.map +1 -1
  746. package/dist/forms/fieldSchemasToFormState/calculateDefaultValues/index.d.ts +2 -2
  747. package/dist/forms/fieldSchemasToFormState/calculateDefaultValues/index.d.ts.map +1 -1
  748. package/dist/forms/fieldSchemasToFormState/calculateDefaultValues/index.js.map +1 -1
  749. package/dist/forms/fieldSchemasToFormState/calculateDefaultValues/iterateFields.d.ts +2 -2
  750. package/dist/forms/fieldSchemasToFormState/calculateDefaultValues/iterateFields.d.ts.map +1 -1
  751. package/dist/forms/fieldSchemasToFormState/calculateDefaultValues/iterateFields.js.map +1 -1
  752. package/dist/forms/fieldSchemasToFormState/calculateDefaultValues/promise.d.ts +2 -2
  753. package/dist/forms/fieldSchemasToFormState/calculateDefaultValues/promise.d.ts.map +1 -1
  754. package/dist/forms/fieldSchemasToFormState/calculateDefaultValues/promise.js.map +1 -1
  755. package/dist/forms/fieldSchemasToFormState/index.d.ts +2 -1
  756. package/dist/forms/fieldSchemasToFormState/index.d.ts.map +1 -1
  757. package/dist/forms/fieldSchemasToFormState/index.js +2 -0
  758. package/dist/forms/fieldSchemasToFormState/index.js.map +1 -1
  759. package/dist/forms/fieldSchemasToFormState/iterateFields.d.ts +2 -1
  760. package/dist/forms/fieldSchemasToFormState/iterateFields.d.ts.map +1 -1
  761. package/dist/forms/fieldSchemasToFormState/iterateFields.js +2 -0
  762. package/dist/forms/fieldSchemasToFormState/iterateFields.js.map +1 -1
  763. package/dist/forms/fieldSchemasToFormState/renderField.d.ts.map +1 -1
  764. package/dist/forms/fieldSchemasToFormState/renderField.js +1 -3
  765. package/dist/forms/fieldSchemasToFormState/renderField.js.map +1 -1
  766. package/dist/forms/useField/index.d.ts.map +1 -1
  767. package/dist/forms/withCondition/index.d.ts +1 -1
  768. package/dist/forms/withCondition/index.d.ts.map +1 -1
  769. package/dist/graphics/Icon/index.js +1 -1
  770. package/dist/graphics/Icon/index.js.map +1 -1
  771. package/dist/hooks/useDebouncedCallback.d.ts.map +1 -1
  772. package/dist/hooks/useDelay.d.ts.map +1 -1
  773. package/dist/hooks/useElementHeightVariable.d.ts +15 -0
  774. package/dist/hooks/useElementHeightVariable.d.ts.map +1 -0
  775. package/dist/hooks/useElementHeightVariable.js +53 -0
  776. package/dist/hooks/useElementHeightVariable.js.map +1 -0
  777. package/dist/hooks/useHotkey.d.ts.map +1 -1
  778. package/dist/hooks/useIntersect.d.ts.map +1 -1
  779. package/dist/hooks/usePayloadAPI.d.ts.map +1 -1
  780. package/dist/hooks/usePayloadAPI.js +2 -3
  781. package/dist/hooks/usePayloadAPI.js.map +1 -1
  782. package/dist/hooks/usePopupWindow.d.ts +1 -1
  783. package/dist/hooks/usePopupWindow.d.ts.map +1 -1
  784. package/dist/hooks/useRelatedCollections.d.ts.map +1 -1
  785. package/dist/hooks/useResize.d.ts.map +1 -1
  786. package/dist/hooks/useUseAsTitle.d.ts.map +1 -1
  787. package/dist/icons/Crop/index.css +5 -0
  788. package/dist/icons/Crop/index.d.ts +7 -0
  789. package/dist/icons/Crop/index.d.ts.map +1 -0
  790. package/dist/icons/Crop/index.js +24 -0
  791. package/dist/icons/Crop/index.js.map +1 -0
  792. package/dist/icons/Download/index.css +5 -0
  793. package/dist/icons/{ExternalLink → Download}/index.d.ts +1 -1
  794. package/dist/icons/Download/index.d.ts.map +1 -0
  795. package/dist/icons/Download/index.js +27 -0
  796. package/dist/icons/Download/index.js.map +1 -0
  797. package/dist/icons/Edit/index.d.ts +0 -1
  798. package/dist/icons/Edit/index.d.ts.map +1 -1
  799. package/dist/icons/Edit/index.js +4 -4
  800. package/dist/icons/Edit/index.js.map +1 -1
  801. package/dist/icons/{ExternalLink → NewTab}/index.css +1 -1
  802. package/dist/icons/NewTab/index.d.ts +7 -0
  803. package/dist/icons/NewTab/index.d.ts.map +1 -0
  804. package/dist/icons/NewTab/index.js +25 -0
  805. package/dist/icons/NewTab/index.js.map +1 -0
  806. package/dist/icons/Replace/index.css +5 -0
  807. package/dist/icons/Replace/index.d.ts +6 -0
  808. package/dist/icons/Replace/index.d.ts.map +1 -0
  809. package/dist/icons/Replace/index.js +20 -0
  810. package/dist/icons/Replace/index.js.map +1 -0
  811. package/dist/icons/Reset/index.css +5 -0
  812. package/dist/icons/Reset/index.d.ts +7 -0
  813. package/dist/icons/Reset/index.d.ts.map +1 -0
  814. package/dist/icons/Reset/index.js +25 -0
  815. package/dist/icons/Reset/index.js.map +1 -0
  816. package/dist/icons/Swap/index.js +1 -1
  817. package/dist/icons/Swap/index.js.map +1 -1
  818. package/dist/layouts/Root/index.d.ts +1 -1
  819. package/dist/layouts/Root/index.d.ts.map +1 -1
  820. package/dist/layouts/Root/index.js +15 -5
  821. package/dist/layouts/Root/index.js.map +1 -1
  822. package/dist/layouts/Root/index.spec.js +20 -0
  823. package/dist/layouts/Root/index.spec.js.map +1 -0
  824. package/dist/layouts/Root/viewport.d.ts +5 -0
  825. package/dist/layouts/Root/viewport.d.ts.map +1 -0
  826. package/dist/layouts/Root/viewport.js +17 -0
  827. package/dist/layouts/Root/viewport.js.map +1 -0
  828. package/dist/providers/Actions/index.d.ts +1 -0
  829. package/dist/providers/Actions/index.d.ts.map +1 -1
  830. package/dist/providers/Actions/index.js +43 -11
  831. package/dist/providers/Actions/index.js.map +1 -1
  832. package/dist/providers/Auth/AuthSessionDebug/index.css +48 -0
  833. package/dist/providers/Auth/AuthSessionDebug/index.d.ts +13 -0
  834. package/dist/providers/Auth/AuthSessionDebug/index.d.ts.map +1 -0
  835. package/dist/providers/Auth/AuthSessionDebug/index.js +93 -0
  836. package/dist/providers/Auth/AuthSessionDebug/index.js.map +1 -0
  837. package/dist/providers/Auth/AuthSessionDebug/utilities.d.ts +21 -0
  838. package/dist/providers/Auth/AuthSessionDebug/utilities.d.ts.map +1 -0
  839. package/dist/providers/Auth/AuthSessionDebug/utilities.js +53 -0
  840. package/dist/providers/Auth/AuthSessionDebug/utilities.js.map +1 -0
  841. package/dist/providers/Auth/authSessionRequests.d.ts +27 -0
  842. package/dist/providers/Auth/authSessionRequests.d.ts.map +1 -0
  843. package/dist/providers/Auth/authSessionRequests.js +119 -0
  844. package/dist/providers/Auth/authSessionRequests.js.map +1 -0
  845. package/dist/providers/Auth/authSessionRequests.spec.js +121 -0
  846. package/dist/providers/Auth/authSessionRequests.spec.js.map +1 -0
  847. package/dist/providers/Auth/index.d.ts +5 -61
  848. package/dist/providers/Auth/index.d.ts.map +1 -1
  849. package/dist/providers/Auth/index.js +284 -141
  850. package/dist/providers/Auth/index.js.map +1 -1
  851. package/dist/providers/Auth/sessionActivity.d.ts +23 -0
  852. package/dist/providers/Auth/sessionActivity.d.ts.map +1 -0
  853. package/dist/providers/Auth/sessionActivity.js +49 -0
  854. package/dist/providers/Auth/sessionActivity.js.map +1 -0
  855. package/dist/providers/Auth/sessionActivity.spec.js +44 -0
  856. package/dist/providers/Auth/sessionActivity.spec.js.map +1 -0
  857. package/dist/providers/Auth/sessionTiming.d.ts +11 -0
  858. package/dist/providers/Auth/sessionTiming.d.ts.map +1 -0
  859. package/dist/providers/Auth/sessionTiming.js +18 -0
  860. package/dist/providers/Auth/sessionTiming.js.map +1 -0
  861. package/dist/providers/Auth/tabSessionSync/index.d.ts +17 -0
  862. package/dist/providers/Auth/tabSessionSync/index.d.ts.map +1 -0
  863. package/dist/providers/Auth/tabSessionSync/index.js +263 -0
  864. package/dist/providers/Auth/tabSessionSync/index.js.map +1 -0
  865. package/dist/providers/Auth/tabSessionSync/index.spec.js +463 -0
  866. package/dist/providers/Auth/tabSessionSync/index.spec.js.map +1 -0
  867. package/dist/providers/Auth/tabSessionSync/types.d.ts +107 -0
  868. package/dist/providers/Auth/tabSessionSync/types.d.ts.map +1 -0
  869. package/dist/providers/Auth/tabSessionSync/types.js +6 -0
  870. package/dist/providers/Auth/tabSessionSync/types.js.map +1 -0
  871. package/dist/providers/Auth/tabSessionSync/useTabSessionSync.d.ts +11 -0
  872. package/dist/providers/Auth/tabSessionSync/useTabSessionSync.d.ts.map +1 -0
  873. package/dist/providers/Auth/tabSessionSync/useTabSessionSync.js +90 -0
  874. package/dist/providers/Auth/tabSessionSync/useTabSessionSync.js.map +1 -0
  875. package/dist/providers/Auth/tabSessionSync/utilities.d.ts +26 -0
  876. package/dist/providers/Auth/tabSessionSync/utilities.d.ts.map +1 -0
  877. package/dist/providers/Auth/tabSessionSync/utilities.js +159 -0
  878. package/dist/providers/Auth/tabSessionSync/utilities.js.map +1 -0
  879. package/dist/providers/Auth/types.d.ts +65 -0
  880. package/dist/providers/Auth/types.d.ts.map +1 -0
  881. package/dist/providers/Auth/types.js +2 -0
  882. package/dist/providers/Auth/types.js.map +1 -0
  883. package/dist/providers/Auth/useAuthSessionTimers.d.ts +26 -0
  884. package/dist/providers/Auth/useAuthSessionTimers.d.ts.map +1 -0
  885. package/dist/providers/Auth/useAuthSessionTimers.js +203 -0
  886. package/dist/providers/Auth/useAuthSessionTimers.js.map +1 -0
  887. package/dist/providers/Auth/useAuthSessionTimers.spec.js +311 -0
  888. package/dist/providers/Auth/useAuthSessionTimers.spec.js.map +1 -0
  889. package/dist/providers/ClientFunction/index.d.ts.map +1 -1
  890. package/dist/providers/DocumentInfo/index.d.ts.map +1 -1
  891. package/dist/providers/DocumentInfo/index.js +2 -3
  892. package/dist/providers/DocumentInfo/index.js.map +1 -1
  893. package/dist/providers/DocumentInfo/types.d.ts +6 -6
  894. package/dist/providers/DocumentInfo/types.d.ts.map +1 -1
  895. package/dist/providers/DocumentInfo/types.js.map +1 -1
  896. package/dist/providers/DocumentInfo/useGetDocPermissions.d.ts.map +1 -1
  897. package/dist/providers/DocumentTitle/index.d.ts +1 -0
  898. package/dist/providers/DocumentTitle/index.d.ts.map +1 -1
  899. package/dist/providers/DocumentTitle/index.js +2 -0
  900. package/dist/providers/DocumentTitle/index.js.map +1 -1
  901. package/dist/providers/Embed/index.d.ts +24 -0
  902. package/dist/providers/Embed/index.d.ts.map +1 -0
  903. package/dist/providers/Embed/index.js +105 -0
  904. package/dist/providers/Embed/index.js.map +1 -0
  905. package/dist/providers/FormErrorHandler/index.d.ts +24 -0
  906. package/dist/providers/FormErrorHandler/index.d.ts.map +1 -0
  907. package/dist/providers/FormErrorHandler/index.js +6 -0
  908. package/dist/providers/FormErrorHandler/index.js.map +1 -0
  909. package/dist/providers/ListQuery/index.d.ts.map +1 -1
  910. package/dist/providers/ListQuery/index.js +8 -1
  911. package/dist/providers/ListQuery/index.js.map +1 -1
  912. package/dist/providers/ListQuery/mergeQuery.d.ts.map +1 -1
  913. package/dist/providers/ListQuery/sanitizeQuery.d.ts.map +1 -1
  914. package/dist/providers/LivePreview/sizeReducer.d.ts +1 -1
  915. package/dist/providers/LivePreview/sizeReducer.d.ts.map +1 -1
  916. package/dist/providers/Locale/index.d.ts +1 -5
  917. package/dist/providers/Locale/index.d.ts.map +1 -1
  918. package/dist/providers/Locale/index.js +64 -137
  919. package/dist/providers/Locale/index.js.map +1 -1
  920. package/dist/providers/Root/index.d.ts +3 -2
  921. package/dist/providers/Root/index.d.ts.map +1 -1
  922. package/dist/providers/Root/index.js +37 -31
  923. package/dist/providers/Root/index.js.map +1 -1
  924. package/dist/providers/RouteTransition/ProgressBar/index.js +4 -1
  925. package/dist/providers/RouteTransition/ProgressBar/index.js.map +1 -1
  926. package/dist/providers/RouteTransition/ProgressBar/index.spec.js +44 -0
  927. package/dist/providers/RouteTransition/ProgressBar/index.spec.js.map +1 -0
  928. package/dist/providers/RouteTransition/index.d.ts +2 -0
  929. package/dist/providers/RouteTransition/index.d.ts.map +1 -1
  930. package/dist/providers/RouteTransition/index.js +42 -14
  931. package/dist/providers/RouteTransition/index.js.map +1 -1
  932. package/dist/providers/Selection/index.d.ts.map +1 -1
  933. package/dist/providers/Selection/index.js +2 -3
  934. package/dist/providers/Selection/index.js.map +1 -1
  935. package/dist/providers/ServerFunctions/index.d.ts +5 -1
  936. package/dist/providers/ServerFunctions/index.d.ts.map +1 -1
  937. package/dist/providers/ServerFunctions/index.js +15 -0
  938. package/dist/providers/ServerFunctions/index.js.map +1 -1
  939. package/dist/providers/SidebarTabs/index.d.ts +3 -2
  940. package/dist/providers/SidebarTabs/index.d.ts.map +1 -1
  941. package/dist/providers/SidebarTabs/index.js.map +1 -1
  942. package/dist/providers/TableColumns/buildColumnState/filterFields.d.ts.map +1 -1
  943. package/dist/providers/TableColumns/buildColumnState/filterFieldsWithPermissions.d.ts.map +1 -1
  944. package/dist/providers/TableColumns/buildColumnState/findValueFromPath.d.ts.map +1 -1
  945. package/dist/providers/TableColumns/buildColumnState/index.d.ts.map +1 -1
  946. package/dist/providers/TableColumns/buildColumnState/index.js +1 -1
  947. package/dist/providers/TableColumns/buildColumnState/index.js.map +1 -1
  948. package/dist/providers/TableColumns/buildColumnState/index.spec.js +40 -0
  949. package/dist/providers/TableColumns/buildColumnState/index.spec.js.map +1 -0
  950. package/dist/providers/TableColumns/getInitialColumns.d.ts +1 -1
  951. package/dist/providers/TableColumns/getInitialColumns.d.ts.map +1 -1
  952. package/dist/providers/Theme/index.d.ts +5 -2
  953. package/dist/providers/Theme/index.d.ts.map +1 -1
  954. package/dist/providers/Theme/index.js +109 -96
  955. package/dist/providers/Theme/index.js.map +1 -1
  956. package/dist/providers/Theme/shared.d.ts +3 -0
  957. package/dist/providers/Theme/shared.d.ts.map +1 -0
  958. package/dist/providers/Theme/shared.js +2 -0
  959. package/dist/providers/Theme/shared.js.map +1 -0
  960. package/dist/providers/UploadEdits/index.d.ts.map +1 -1
  961. package/dist/providers/UploadHandlers/index.d.ts +2 -7
  962. package/dist/providers/UploadHandlers/index.d.ts.map +1 -1
  963. package/dist/providers/UploadHandlers/index.js +102 -42
  964. package/dist/providers/UploadHandlers/index.js.map +1 -1
  965. package/dist/styles.css +37 -16
  966. package/dist/templates/Default/index.d.ts +1 -0
  967. package/dist/templates/Default/index.d.ts.map +1 -1
  968. package/dist/templates/Default/index.js +9 -1
  969. package/dist/templates/Default/index.js.map +1 -1
  970. package/dist/utilities/api.d.ts.map +1 -1
  971. package/dist/utilities/buildClientFieldSchemaMap/index.d.ts.map +1 -1
  972. package/dist/utilities/buildClientFieldSchemaMap/traverseFields.d.ts.map +1 -1
  973. package/dist/utilities/buildFieldSchemaMap/index.d.ts.map +1 -1
  974. package/dist/utilities/buildFieldSchemaMap/traverseFields.d.ts.map +1 -1
  975. package/dist/utilities/buildFormState.d.ts +2 -2
  976. package/dist/utilities/buildFormState.d.ts.map +1 -1
  977. package/dist/utilities/buildFormState.js +1 -0
  978. package/dist/utilities/buildFormState.js.map +1 -1
  979. package/dist/utilities/checkDependencies.d.ts.map +1 -1
  980. package/dist/utilities/combineFieldLabel.d.ts.map +1 -1
  981. package/dist/utilities/combineFieldLabel.js +5 -1
  982. package/dist/utilities/combineFieldLabel.js.map +1 -1
  983. package/dist/utilities/copyDataFromLocale.d.ts.map +1 -1
  984. package/dist/utilities/copyDataFromLocale.js +1 -0
  985. package/dist/utilities/copyDataFromLocale.js.map +1 -1
  986. package/dist/utilities/filterOutUploadFields.d.ts.map +1 -1
  987. package/dist/utilities/findLocaleFromCode.d.ts.map +1 -1
  988. package/dist/utilities/formatAbsoluteURL.d.ts.map +1 -1
  989. package/dist/utilities/formatDocTitle/formatDateTitle.d.ts.map +1 -1
  990. package/dist/utilities/formatDocTitle/formatRelationshipTitle.d.ts.map +1 -1
  991. package/dist/utilities/formatDocTitle/index.d.ts +1 -1
  992. package/dist/utilities/formatDocTitle/index.d.ts.map +1 -1
  993. package/dist/utilities/formatDocTitle/index.js +1 -1
  994. package/dist/utilities/formatDocTitle/index.js.map +1 -1
  995. package/dist/utilities/formatFields.d.ts.map +1 -1
  996. package/dist/utilities/formatMetadata.d.ts.map +1 -1
  997. package/dist/utilities/formatMetadata.js +0 -5
  998. package/dist/utilities/formatMetadata.js.map +1 -1
  999. package/dist/utilities/formatRelativeDate.d.ts +15 -0
  1000. package/dist/utilities/formatRelativeDate.d.ts.map +1 -0
  1001. package/dist/utilities/formatRelativeDate.js +62 -0
  1002. package/dist/utilities/formatRelativeDate.js.map +1 -0
  1003. package/dist/utilities/generateFieldID.d.ts +1 -1
  1004. package/dist/utilities/generateFieldID.d.ts.map +1 -1
  1005. package/dist/utilities/generateFieldID.js +2 -2
  1006. package/dist/utilities/generateFieldID.js.map +1 -1
  1007. package/dist/utilities/getColumns.d.ts.map +1 -1
  1008. package/dist/utilities/getDisplayedFieldValue.d.ts.map +1 -1
  1009. package/dist/utilities/getDocPreferences.d.ts +2 -2
  1010. package/dist/utilities/getDocPreferences.d.ts.map +1 -1
  1011. package/dist/utilities/getDocPreferences.js.map +1 -1
  1012. package/dist/utilities/getDocumentData.d.ts +2 -2
  1013. package/dist/utilities/getDocumentData.d.ts.map +1 -1
  1014. package/dist/utilities/getDocumentData.js.map +1 -1
  1015. package/dist/utilities/getDocumentPermissions.d.ts.map +1 -1
  1016. package/dist/utilities/getFilesFromClipboard.d.ts +10 -0
  1017. package/dist/utilities/getFilesFromClipboard.d.ts.map +1 -0
  1018. package/dist/utilities/getFilesFromClipboard.js +49 -0
  1019. package/dist/utilities/getFilesFromClipboard.js.map +1 -0
  1020. package/dist/utilities/getGlobalData.d.ts +2 -2
  1021. package/dist/utilities/getGlobalData.d.ts.map +1 -1
  1022. package/dist/utilities/getGlobalData.js.map +1 -1
  1023. package/dist/utilities/getHasScheduledPublish.d.ts +2 -3
  1024. package/dist/utilities/getHasScheduledPublish.d.ts.map +1 -1
  1025. package/dist/utilities/getHasScheduledPublish.js +2 -5
  1026. package/dist/utilities/getHasScheduledPublish.js.map +1 -1
  1027. package/dist/utilities/getIsLocked.d.ts +2 -2
  1028. package/dist/utilities/getIsLocked.d.ts.map +1 -1
  1029. package/dist/utilities/getIsLocked.js.map +1 -1
  1030. package/dist/utilities/getLanguageDir.d.ts +12 -0
  1031. package/dist/utilities/getLanguageDir.d.ts.map +1 -0
  1032. package/dist/utilities/getLanguageDir.js +12 -0
  1033. package/dist/utilities/getLanguageDir.js.map +1 -0
  1034. package/dist/utilities/getOffsetTop.d.ts.map +1 -1
  1035. package/dist/utilities/getRequestEmbed.d.ts +14 -0
  1036. package/dist/utilities/getRequestEmbed.d.ts.map +1 -0
  1037. package/dist/utilities/getRequestEmbed.js +10 -0
  1038. package/dist/utilities/getRequestEmbed.js.map +1 -0
  1039. package/dist/utilities/getRequestHighContrast.d.ts.map +1 -1
  1040. package/dist/utilities/getRequestLanguage.d.ts.map +1 -1
  1041. package/dist/utilities/getRequestTheme.d.ts +1 -1
  1042. package/dist/utilities/getRequestTheme.d.ts.map +1 -1
  1043. package/dist/utilities/getRequestTheme.js +1 -1
  1044. package/dist/utilities/getRequestTheme.js.map +1 -1
  1045. package/dist/utilities/getRouteWithoutAdmin.d.ts.map +1 -1
  1046. package/dist/utilities/getSupportedMonacoLocale.d.ts.map +1 -1
  1047. package/dist/utilities/getVersions.d.ts +2 -2
  1048. package/dist/utilities/getVersions.d.ts.map +1 -1
  1049. package/dist/utilities/getVersions.js +2 -5
  1050. package/dist/utilities/getVersions.js.map +1 -1
  1051. package/dist/utilities/handleAuthRedirect.d.ts +2 -2
  1052. package/dist/utilities/handleAuthRedirect.d.ts.map +1 -1
  1053. package/dist/utilities/handleAuthRedirect.js.map +1 -1
  1054. package/dist/utilities/handleBackToDashboard.d.ts.map +1 -1
  1055. package/dist/utilities/handleFormStateLocking.d.ts +2 -2
  1056. package/dist/utilities/handleFormStateLocking.d.ts.map +1 -1
  1057. package/dist/utilities/handleFormStateLocking.js.map +1 -1
  1058. package/dist/utilities/handleGoBack.d.ts.map +1 -1
  1059. package/dist/utilities/handleLivePreview.d.ts +1 -0
  1060. package/dist/utilities/handleLivePreview.d.ts.map +1 -1
  1061. package/dist/utilities/handlePreview.d.ts.map +1 -1
  1062. package/dist/utilities/handleServerFunctions.d.ts +32 -8
  1063. package/dist/utilities/handleServerFunctions.d.ts.map +1 -1
  1064. package/dist/utilities/handleServerFunctions.js +17 -37
  1065. package/dist/utilities/handleServerFunctions.js.map +1 -1
  1066. package/dist/utilities/handleStaleDataCheck.d.ts.map +1 -1
  1067. package/dist/utilities/handleTakeOver.d.ts +5 -5
  1068. package/dist/utilities/handleTakeOver.d.ts.map +1 -1
  1069. package/dist/utilities/handleTakeOver.js.map +1 -1
  1070. package/dist/utilities/hasOptionLabelJSXElement.d.ts.map +1 -1
  1071. package/dist/utilities/hasSavePermission.d.ts.map +1 -1
  1072. package/dist/utilities/initReq.d.ts.map +1 -1
  1073. package/dist/utilities/isClientUserObject.d.ts +2 -2
  1074. package/dist/utilities/isClientUserObject.d.ts.map +1 -1
  1075. package/dist/utilities/isClientUserObject.js.map +1 -1
  1076. package/dist/utilities/isCustomAdminView.d.ts.map +1 -1
  1077. package/dist/utilities/isEditing.d.ts.map +1 -1
  1078. package/dist/utilities/isPathMatchingRoute.d.ts.map +1 -1
  1079. package/dist/utilities/isPublicAdminRoute.d.ts.map +1 -1
  1080. package/dist/utilities/isURLAllowed.d.ts.map +1 -1
  1081. package/dist/utilities/isURLAllowed.js +9 -3
  1082. package/dist/utilities/isURLAllowed.js.map +1 -1
  1083. package/dist/utilities/recentlyViewed.d.ts +16 -0
  1084. package/dist/utilities/recentlyViewed.d.ts.map +1 -0
  1085. package/dist/utilities/recentlyViewed.js +21 -0
  1086. package/dist/utilities/recentlyViewed.js.map +1 -0
  1087. package/dist/utilities/recentlyViewed.spec.js +92 -0
  1088. package/dist/utilities/recentlyViewed.spec.js.map +1 -0
  1089. package/dist/utilities/reduceFieldsToOptions.d.ts.map +1 -1
  1090. package/dist/utilities/reduceFieldsToValuesWithValidation.d.ts.map +1 -1
  1091. package/dist/utilities/renderTable.d.ts +2 -2
  1092. package/dist/utilities/renderTable.d.ts.map +1 -1
  1093. package/dist/utilities/renderTable.js +18 -2
  1094. package/dist/utilities/renderTable.js.map +1 -1
  1095. package/dist/utilities/resolveFilterOptions.d.ts +1 -1
  1096. package/dist/utilities/resolveFilterOptions.d.ts.map +1 -1
  1097. package/dist/utilities/sanitizeFilterOptionsQuery.d.ts.map +1 -1
  1098. package/dist/utilities/schedulePublishHandler.d.ts +8 -1
  1099. package/dist/utilities/schedulePublishHandler.d.ts.map +1 -1
  1100. package/dist/utilities/schedulePublishHandler.js +68 -4
  1101. package/dist/utilities/schedulePublishHandler.js.map +1 -1
  1102. package/dist/utilities/scrollToID.d.ts.map +1 -1
  1103. package/dist/utilities/selectiveCache.d.ts.map +1 -1
  1104. package/dist/utilities/serverFunctionRegistry.d.ts +12 -7
  1105. package/dist/utilities/serverFunctionRegistry.d.ts.map +1 -1
  1106. package/dist/utilities/serverFunctionRegistry.js +27 -8
  1107. package/dist/utilities/serverFunctionRegistry.js.map +1 -1
  1108. package/dist/utilities/setsAreEqual.d.ts.map +1 -1
  1109. package/dist/utilities/slugify.d.ts +1 -1
  1110. package/dist/utilities/slugify.d.ts.map +1 -1
  1111. package/dist/utilities/slugify.js +53 -7
  1112. package/dist/utilities/slugify.js.map +1 -1
  1113. package/dist/utilities/traverseForLocalizedFields.d.ts.map +1 -1
  1114. package/dist/utilities/upsertPreferences.d.ts.map +1 -1
  1115. package/dist/views/API/index.client.d.ts.map +1 -1
  1116. package/dist/views/API/index.client.js +4 -5
  1117. package/dist/views/API/index.client.js.map +1 -1
  1118. package/dist/views/Account/ResetPreferences/index.d.ts +2 -2
  1119. package/dist/views/Account/ResetPreferences/index.d.ts.map +1 -1
  1120. package/dist/views/Account/ResetPreferences/index.js.map +1 -1
  1121. package/dist/views/Account/Settings/index.d.ts +2 -2
  1122. package/dist/views/Account/Settings/index.d.ts.map +1 -1
  1123. package/dist/views/Account/Settings/index.js.map +1 -1
  1124. package/dist/views/CollectionTrash/generateCollectionTrashMetadata.d.ts.map +1 -1
  1125. package/dist/views/Dashboard/Default/ModularDashboard/DashboardStepNav.d.ts.map +1 -1
  1126. package/dist/views/Dashboard/Default/ModularDashboard/DashboardStepNav.js +3 -2
  1127. package/dist/views/Dashboard/Default/ModularDashboard/DashboardStepNav.js.map +1 -1
  1128. package/dist/views/Dashboard/Default/ModularDashboard/WidgetConfigDrawer.d.ts.map +1 -1
  1129. package/dist/views/Dashboard/Default/ModularDashboard/WidgetConfigDrawer.js +27 -23
  1130. package/dist/views/Dashboard/Default/ModularDashboard/WidgetConfigDrawer.js.map +1 -1
  1131. package/dist/views/Dashboard/Default/ModularDashboard/WidgetEditControl.d.ts.map +1 -1
  1132. package/dist/views/Dashboard/Default/ModularDashboard/WidgetEditControl.js +7 -7
  1133. package/dist/views/Dashboard/Default/ModularDashboard/WidgetEditControl.js.map +1 -1
  1134. package/dist/views/Dashboard/Default/ModularDashboard/index.client.d.ts.map +1 -1
  1135. package/dist/views/Dashboard/Default/ModularDashboard/index.client.js +104 -66
  1136. package/dist/views/Dashboard/Default/ModularDashboard/index.client.js.map +1 -1
  1137. package/dist/views/Dashboard/Default/ModularDashboard/index.css +31 -144
  1138. package/dist/views/Dashboard/Default/ModularDashboard/renderWidget/RenderWidget.js +5 -5
  1139. package/dist/views/Dashboard/Default/ModularDashboard/renderWidget/RenderWidget.js.map +1 -1
  1140. package/dist/views/Dashboard/Default/ModularDashboard/renderWidget/renderWidgetServerFn.js +10 -10
  1141. package/dist/views/Dashboard/Default/ModularDashboard/renderWidget/renderWidgetServerFn.js.map +1 -1
  1142. package/dist/views/Dashboard/Default/ModularDashboard/utils/getItemsFromPreferences.d.ts +2 -2
  1143. package/dist/views/Dashboard/Default/ModularDashboard/utils/getItemsFromPreferences.d.ts.map +1 -1
  1144. package/dist/views/Dashboard/Default/ModularDashboard/utils/getItemsFromPreferences.js.map +1 -1
  1145. package/dist/views/Dashboard/Default/index.d.ts +2 -2
  1146. package/dist/views/Dashboard/Default/index.d.ts.map +1 -1
  1147. package/dist/views/Dashboard/Default/index.js.map +1 -1
  1148. package/dist/views/Document/getCustomDocumentViewByKey.d.ts +1 -1
  1149. package/dist/views/Document/getCustomDocumentViewByKey.d.ts.map +1 -1
  1150. package/dist/views/Document/getCustomViewByRoute.d.ts +1 -1
  1151. package/dist/views/Document/getCustomViewByRoute.d.ts.map +1 -1
  1152. package/dist/views/Document/getDocumentView.d.ts.map +1 -1
  1153. package/dist/views/Document/getMetaBySegment.d.ts.map +1 -1
  1154. package/dist/views/Document/index.d.ts +1 -1
  1155. package/dist/views/Document/index.d.ts.map +1 -1
  1156. package/dist/views/Document/index.js +19 -3
  1157. package/dist/views/Document/index.js.map +1 -1
  1158. package/dist/views/Document/recordRecentlyViewed.d.ts +12 -0
  1159. package/dist/views/Document/recordRecentlyViewed.d.ts.map +1 -0
  1160. package/dist/views/Document/recordRecentlyViewed.js +40 -0
  1161. package/dist/views/Document/recordRecentlyViewed.js.map +1 -0
  1162. package/dist/views/Document/renderDocumentSlots.d.ts +1 -0
  1163. package/dist/views/Document/renderDocumentSlots.d.ts.map +1 -1
  1164. package/dist/views/Document/renderDocumentSlots.js +47 -1
  1165. package/dist/views/Document/renderDocumentSlots.js.map +1 -1
  1166. package/dist/views/Edit/SetDocumentTitle/index.d.ts.map +1 -1
  1167. package/dist/views/Edit/SetDocumentTitle/index.js +4 -1
  1168. package/dist/views/Edit/SetDocumentTitle/index.js.map +1 -1
  1169. package/dist/views/Edit/index.css +151 -6
  1170. package/dist/views/Edit/index.d.ts +1 -1
  1171. package/dist/views/Edit/index.d.ts.map +1 -1
  1172. package/dist/views/Edit/index.js +37 -33
  1173. package/dist/views/Edit/index.js.map +1 -1
  1174. package/dist/views/HierarchyList/HierarchyTable/SlotTable.css +2 -2
  1175. package/dist/views/HierarchyList/HierarchyTable/SlotTable.d.ts +2 -2
  1176. package/dist/views/HierarchyList/HierarchyTable/SlotTable.d.ts.map +1 -1
  1177. package/dist/views/HierarchyList/HierarchyTable/SlotTable.js.map +1 -1
  1178. package/dist/views/HierarchyList/HierarchyTable/types.d.ts +2 -2
  1179. package/dist/views/HierarchyList/HierarchyTable/types.d.ts.map +1 -1
  1180. package/dist/views/HierarchyList/HierarchyTable/types.js.map +1 -1
  1181. package/dist/views/HierarchyList/TypeFilter/index.d.ts.map +1 -1
  1182. package/dist/views/HierarchyList/TypeFilter/index.js +3 -0
  1183. package/dist/views/HierarchyList/TypeFilter/index.js.map +1 -1
  1184. package/dist/views/HierarchyList/index.css +1 -1
  1185. package/dist/views/HierarchyList/index.d.ts.map +1 -1
  1186. package/dist/views/HierarchyList/index.js +2 -6
  1187. package/dist/views/HierarchyList/index.js.map +1 -1
  1188. package/dist/views/List/ListHeader/index.css +5 -0
  1189. package/dist/views/List/ListHeader/index.d.ts +1 -10
  1190. package/dist/views/List/ListHeader/index.d.ts.map +1 -1
  1191. package/dist/views/List/ListHeader/index.js +1 -3
  1192. package/dist/views/List/ListHeader/index.js.map +1 -1
  1193. package/dist/views/List/createSerializableValue.d.ts.map +1 -1
  1194. package/dist/views/List/extractRelationshipDisplayValue.d.ts.map +1 -1
  1195. package/dist/views/List/extractValueOrRelationshipID.d.ts.map +1 -1
  1196. package/dist/views/List/generateListViewMetadata.d.ts.map +1 -1
  1197. package/dist/views/List/handleGroupBy.d.ts.map +1 -1
  1198. package/dist/views/List/handleHierarchy.d.ts +1 -1
  1199. package/dist/views/List/handleHierarchy.d.ts.map +1 -1
  1200. package/dist/views/List/index.client.d.ts.map +1 -1
  1201. package/dist/views/List/index.client.js +0 -14
  1202. package/dist/views/List/index.client.js.map +1 -1
  1203. package/dist/views/List/index.css +6 -1
  1204. package/dist/views/List/index.d.ts.map +1 -1
  1205. package/dist/views/List/index.js +5 -7
  1206. package/dist/views/List/index.js.map +1 -1
  1207. package/dist/views/List/renderListViewSlots.d.ts.map +1 -1
  1208. package/dist/views/List/resolveAllFilterOptions.d.ts.map +1 -1
  1209. package/dist/views/List/transformColumnsToSelect.d.ts.map +1 -1
  1210. package/dist/views/Logout/LogoutClient.js +28 -32
  1211. package/dist/views/Logout/LogoutClient.js.map +1 -1
  1212. package/dist/views/Logout/index.d.ts.map +1 -1
  1213. package/dist/views/Logout/index.js +11 -0
  1214. package/dist/views/Logout/index.js.map +1 -1
  1215. package/dist/views/NotFound/page.d.ts.map +1 -1
  1216. package/dist/views/Root/generateCustomViewMetadata.d.ts.map +1 -1
  1217. package/dist/views/Root/generatePageMetadata.d.ts.map +1 -1
  1218. package/dist/views/Root/getCustomCollectionViewByRoute.d.ts +1 -1
  1219. package/dist/views/Root/getCustomCollectionViewByRoute.d.ts.map +1 -1
  1220. package/dist/views/Root/getCustomCollectionViewByRoute.js.map +1 -1
  1221. package/dist/views/Root/getCustomGlobalViewByRoute.d.ts +1 -1
  1222. package/dist/views/Root/getCustomGlobalViewByRoute.d.ts.map +1 -1
  1223. package/dist/views/Root/getCustomGlobalViewByRoute.js.map +1 -1
  1224. package/dist/views/Root/getCustomViewByKey.d.ts.map +1 -1
  1225. package/dist/views/Root/getCustomViewByKey.js.map +1 -1
  1226. package/dist/views/Root/getCustomViewByRoute.d.ts.map +1 -1
  1227. package/dist/views/Root/getRouteData.d.ts.map +1 -1
  1228. package/dist/views/Root/index.d.ts +12 -1
  1229. package/dist/views/Root/index.d.ts.map +1 -1
  1230. package/dist/views/Root/index.js +11 -3
  1231. package/dist/views/Root/index.js.map +1 -1
  1232. package/dist/views/Unauthorized/index.d.ts.map +1 -1
  1233. package/dist/views/Version/Default/SetStepNav.d.ts.map +1 -1
  1234. package/dist/views/Version/Default/SetStepNav.js +10 -13
  1235. package/dist/views/Version/Default/SetStepNav.js.map +1 -1
  1236. package/dist/views/Version/Default/index.d.ts.map +1 -1
  1237. package/dist/views/Version/Default/index.js +12 -13
  1238. package/dist/views/Version/Default/index.js.map +1 -1
  1239. package/dist/views/Version/RenderFieldsToDiff/RenderVersionFieldsToDiff.d.ts.map +1 -1
  1240. package/dist/views/Version/RenderFieldsToDiff/buildVersionFields.d.ts.map +1 -1
  1241. package/dist/views/Version/RenderFieldsToDiff/fields/Relationship/generateLabelFromValue.d.ts.map +1 -1
  1242. package/dist/views/Version/RenderFieldsToDiff/fields/index.d.ts.map +1 -1
  1243. package/dist/views/Version/RenderFieldsToDiff/fields/index.js +1 -0
  1244. package/dist/views/Version/RenderFieldsToDiff/fields/index.js.map +1 -1
  1245. package/dist/views/Version/RenderFieldsToDiff/index.d.ts.map +1 -1
  1246. package/dist/views/Version/RenderFieldsToDiff/utilities/countChangedFields.d.ts.map +1 -1
  1247. package/dist/views/Version/RenderFieldsToDiff/utilities/countChangedFields.js +1 -0
  1248. package/dist/views/Version/RenderFieldsToDiff/utilities/countChangedFields.js.map +1 -1
  1249. package/dist/views/Version/SelectComparison/VersionDrawer/index.d.ts.map +1 -1
  1250. package/dist/views/Version/SelectComparison/index.d.ts.map +1 -1
  1251. package/dist/views/Version/SelectComparison/index.js +1 -0
  1252. package/dist/views/Version/SelectComparison/index.js.map +1 -1
  1253. package/dist/views/Version/generateVersionViewMetadata.js.map +1 -1
  1254. package/dist/views/Versions/VersionPillLabel/VersionPillLabel.d.ts.map +1 -1
  1255. package/dist/views/Versions/VersionPillLabel/VersionPillLabel.js +2 -3
  1256. package/dist/views/Versions/VersionPillLabel/VersionPillLabel.js.map +1 -1
  1257. package/dist/views/Versions/buildColumns.d.ts +1 -1
  1258. package/dist/views/Versions/buildColumns.d.ts.map +1 -1
  1259. package/dist/views/Versions/fetchVersions.d.ts +8 -8
  1260. package/dist/views/Versions/fetchVersions.d.ts.map +1 -1
  1261. package/dist/views/Versions/fetchVersions.js.map +1 -1
  1262. package/dist/views/Versions/generateVersionsViewMetadata.js.map +1 -1
  1263. package/dist/views/Versions/types.d.ts +2 -2
  1264. package/dist/views/Versions/types.d.ts.map +1 -1
  1265. package/dist/views/Versions/types.js.map +1 -1
  1266. package/dist/widgets/CollectionCards/getCollectionCardsData.d.ts +2 -2
  1267. package/dist/widgets/CollectionCards/getCollectionCardsData.d.ts.map +1 -1
  1268. package/dist/widgets/CollectionCards/getCollectionCardsData.js.map +1 -1
  1269. package/dist/widgets/CollectionCards/index.client.js.map +1 -1
  1270. package/dist/widgets/CollectionQuery/SortField/index.d.ts +3 -0
  1271. package/dist/widgets/CollectionQuery/SortField/index.d.ts.map +1 -0
  1272. package/dist/widgets/CollectionQuery/SortField/index.js +118 -0
  1273. package/dist/widgets/CollectionQuery/SortField/index.js.map +1 -0
  1274. package/dist/widgets/CollectionQuery/getCollectionFieldPaths.d.ts +18 -0
  1275. package/dist/widgets/CollectionQuery/getCollectionFieldPaths.d.ts.map +1 -0
  1276. package/dist/widgets/CollectionQuery/getCollectionFieldPaths.js +91 -0
  1277. package/dist/widgets/CollectionQuery/getCollectionFieldPaths.js.map +1 -0
  1278. package/dist/widgets/CollectionQuery/getCollectionFieldPaths.spec.js +100 -0
  1279. package/dist/widgets/CollectionQuery/getCollectionFieldPaths.spec.js.map +1 -0
  1280. package/dist/widgets/CollectionQuery/index.css +64 -0
  1281. package/dist/widgets/CollectionQuery/index.d.ts +16 -0
  1282. package/dist/widgets/CollectionQuery/index.d.ts.map +1 -0
  1283. package/dist/widgets/CollectionQuery/index.js +328 -0
  1284. package/dist/widgets/CollectionQuery/index.js.map +1 -0
  1285. package/dist/widgets/RecentlyViewed/CollectionsField/index.css +14 -0
  1286. package/dist/widgets/RecentlyViewed/CollectionsField/index.d.ts +10 -0
  1287. package/dist/widgets/RecentlyViewed/CollectionsField/index.d.ts.map +1 -0
  1288. package/dist/widgets/RecentlyViewed/CollectionsField/index.js +76 -0
  1289. package/dist/widgets/RecentlyViewed/CollectionsField/index.js.map +1 -0
  1290. package/dist/widgets/RecentlyViewed/index.d.ts +10 -0
  1291. package/dist/widgets/RecentlyViewed/index.d.ts.map +1 -0
  1292. package/dist/widgets/RecentlyViewed/index.js +148 -0
  1293. package/dist/widgets/RecentlyViewed/index.js.map +1 -0
  1294. package/dist/widgets/WidgetCard/index.css +155 -0
  1295. package/dist/widgets/WidgetCard/index.d.ts +19 -0
  1296. package/dist/widgets/WidgetCard/index.d.ts.map +1 -0
  1297. package/dist/widgets/WidgetCard/index.js +49 -0
  1298. package/dist/widgets/WidgetCard/index.js.map +1 -0
  1299. package/package.json +8 -515
  1300. package/dist/elements/BulkUpload/Header/index.d.ts +0 -9
  1301. package/dist/elements/BulkUpload/Header/index.d.ts.map +0 -1
  1302. package/dist/elements/BulkUpload/Header/index.js.map +0 -1
  1303. package/dist/elements/FileDetails/FileMeta/index.scss +0 -31
  1304. package/dist/elements/FileDetails/StaticFileDetails/index.scss +0 -134
  1305. package/dist/elements/Hierarchy/Drawer/fetchAncestorPath.d.ts.map +0 -1
  1306. package/dist/elements/Hierarchy/Drawer/fetchAncestorPath.js.map +0 -1
  1307. package/dist/elements/Hierarchy/Drawer/index.css +0 -90
  1308. package/dist/elements/Hierarchy/Drawer/index.d.ts +0 -20
  1309. package/dist/elements/Hierarchy/Drawer/index.d.ts.map +0 -1
  1310. package/dist/elements/Hierarchy/Drawer/index.js.map +0 -1
  1311. package/dist/elements/Hierarchy/Drawer/types.d.ts.map +0 -1
  1312. package/dist/elements/Hierarchy/Drawer/types.js.map +0 -1
  1313. package/dist/elements/Hierarchy/Drawer/useHierarchyDrawer.d.ts +0 -30
  1314. package/dist/elements/Hierarchy/Drawer/useHierarchyDrawer.d.ts.map +0 -1
  1315. package/dist/elements/Hierarchy/Drawer/useHierarchyDrawer.js.map +0 -1
  1316. package/dist/elements/Nav/NavToggler/index.css +0 -12
  1317. package/dist/elements/Nav/NavToggler/index.d.ts +0 -9
  1318. package/dist/elements/Nav/NavToggler/index.d.ts.map +0 -1
  1319. package/dist/elements/Nav/NavToggler/index.js +0 -91
  1320. package/dist/elements/Nav/NavToggler/index.js.map +0 -1
  1321. package/dist/elements/Nav/SettingsMenuButton/index.scss +0 -11
  1322. package/dist/elements/PreviewSizes/index.scss +0 -147
  1323. package/dist/elements/RelationshipTable/Pagination.css +0 -39
  1324. package/dist/elements/Thumbnail/index.scss +0 -53
  1325. package/dist/icons/ExternalLink/index.d.ts.map +0 -1
  1326. package/dist/icons/ExternalLink/index.js +0 -26
  1327. package/dist/icons/ExternalLink/index.js.map +0 -1
  1328. package/dist/scss/app.scss +0 -182
  1329. package/dist/scss/colors.scss +0 -191
  1330. package/dist/scss/custom.css +0 -1
  1331. package/dist/scss/queries.scss +0 -27
  1332. package/dist/scss/styles.scss +0 -9
  1333. package/dist/scss/svg.scss +0 -10
  1334. package/dist/scss/toastify.scss +0 -61
  1335. package/dist/scss/vars.scss +0 -192
  1336. package/dist/scss/z-index.scss +0 -9
  1337. /package/dist/elements/Hierarchy/{Drawer → Modal}/fetchAncestorPath.d.ts +0 -0
  1338. /package/dist/elements/Hierarchy/{Drawer → Modal}/fetchAncestorPath.js +0 -0
  1339. /package/dist/elements/Hierarchy/{Drawer → Modal}/types.js +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["c","_c","useWindowInfo","formatAdminURL","React","useEffect","useState","Account","LogOutIcon","useAuth","useConfig","useTranslation","MenuSeparator","Popup","PopupList","RenderCustomComponent","LanguageMenu","LanguageMenuContent","SettingsMenu","SettingsMenuContent","SubMenuHeader","ThemeMenu","ThemeMenuContent","baseClass","UserMenu","t0","$","CustomAvatar","settingsItemGroups","t1","undefined","user","languageOptions","t","config","t2","getEntityConfig","admin","t3","routes","t4","t5","theme","adminTheme","userSlug","account","accountRoute","logout","logoutRoute","adminRoute","breakpoints","t6","s","smallBreak","isMobile","Boolean","activeMobileSubmenu","setActiveMobileSubmenu","t7","t8","userCollectionConfig","collectionSlug","useAsTitle","titleValue","titleString","identifier","username","email","hasMultipleLanguages","Array","isArray","length","showThemeMenu","hasSettingsItems","some","_temp","showPreferencesGroup","logoutHref","path","accountHref","t9","Symbol","for","t10","t11","active","ariaProps","_jsx","className","filter","join","type","children","CustomComponent","Fallback","caret","horizontalAlign","onToggleClose","renderButton","verticalAlign","_jsxs","_Fragment","onBack","title","groups","href","ButtonGroup","onMobileOpen","MenuItem","Button","icon","group","items"],"sources":["../../../src/elements/UserMenu/index.tsx"],"sourcesContent":["'use client'\nimport { useWindowInfo } from '@faceless-ui/window-info'\nimport { formatAdminURL } from 'payload/shared'\nimport React, { useEffect, useState } from 'react'\n\nimport type { UserMenuSettingsGroup } from './SettingsMenu/index.js'\n\nimport { Account } from '../../graphics/Account/index.js'\nimport { LogOutIcon } from '../../icons/LogOut/index.js'\nimport { useAuth } from '../../providers/Auth/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { MenuSeparator } from '../MenuSeparator/index.js'\nimport { Popup, PopupList } from '../Popup/index.js'\nimport { RenderCustomComponent } from '../RenderCustomComponent/index.js'\nimport { LanguageMenu, LanguageMenuContent } from './LanguageMenu/index.js'\nimport { SettingsMenu, SettingsMenuContent } from './SettingsMenu/index.js'\nimport { SubMenuHeader } from './SubMenuHeader/index.js'\nimport { ThemeMenu, ThemeMenuContent } from './ThemeMenu/index.js'\nimport './index.css'\n\nconst baseClass = 'user-menu'\n\ntype UserMenuProps = {\n CustomAvatar?: React.ReactNode\n settingsItemGroups?: UserMenuSettingsGroup[]\n}\n\nexport const UserMenu: React.FC<UserMenuProps> = ({ CustomAvatar, settingsItemGroups = [] }) => {\n const { user } = useAuth()\n const { languageOptions, t } = useTranslation()\n const {\n config: {\n admin: {\n routes: { account: accountRoute, logout: logoutRoute },\n theme: adminTheme,\n user: userSlug,\n },\n routes: { admin: adminRoute },\n },\n getEntityConfig,\n } = useConfig()\n const {\n breakpoints: { s: smallBreak },\n } = useWindowInfo()\n\n const isMobile = Boolean(smallBreak)\n\n const [activeMobileSubmenu, setActiveMobileSubmenu] = useState<\n 'language' | 'settings' | 'theme' | null\n >(null)\n\n useEffect(() => {\n if (!isMobile) {\n setActiveMobileSubmenu(null)\n }\n }, [isMobile])\n\n const userCollectionConfig = getEntityConfig({ collectionSlug: userSlug })\n const useAsTitle = userCollectionConfig?.admin?.useAsTitle ?? 'email'\n const titleValue =\n useAsTitle !== 'email' && user ? (user as Record<string, unknown>)[useAsTitle] : undefined\n const titleString = typeof titleValue === 'string' ? titleValue : undefined\n\n const identifier = user?.username ?? user?.email ?? ''\n const hasMultipleLanguages = Array.isArray(languageOptions) && languageOptions.length > 1\n const showThemeMenu = adminTheme === 'all'\n const hasSettingsItems = settingsItemGroups.some((group) => group.items.length > 0)\n const showPreferencesGroup = showThemeMenu || hasMultipleLanguages\n\n const logoutHref = formatAdminURL({ adminRoute, path: logoutRoute })\n const accountHref = formatAdminURL({ adminRoute, path: accountRoute })\n\n return (\n <Popup\n caret={false}\n className={baseClass}\n horizontalAlign=\"right\"\n onToggleClose={() => setActiveMobileSubmenu(null)}\n renderButton={({ active, ...ariaProps }) => (\n <button\n {...ariaProps}\n aria-label={t('authentication:account')}\n className={[`${baseClass}__trigger`, active && `${baseClass}__trigger--active`]\n .filter(Boolean)\n .join(' ')}\n type=\"button\"\n >\n <RenderCustomComponent CustomComponent={CustomAvatar} Fallback={<Account />} />\n </button>\n )}\n size=\"large\"\n theme=\"dark\"\n verticalAlign=\"bottom\"\n >\n {isMobile && activeMobileSubmenu ? (\n // Mobile submenu panel\n <>\n {activeMobileSubmenu === 'theme' && (\n <>\n <SubMenuHeader\n onBack={() => setActiveMobileSubmenu(null)}\n title={t('general:theme')}\n />\n <ThemeMenuContent />\n </>\n )}\n {activeMobileSubmenu === 'language' && (\n <>\n <SubMenuHeader\n onBack={() => setActiveMobileSubmenu(null)}\n title={t('general:language')}\n />\n <LanguageMenuContent />\n </>\n )}\n {activeMobileSubmenu === 'settings' && (\n <>\n <SubMenuHeader\n onBack={() => setActiveMobileSubmenu(null)}\n title={t('general:settings')}\n />\n <SettingsMenuContent groups={settingsItemGroups} />\n </>\n )}\n </>\n ) : (\n // Normal menu content (desktop always; mobile when no active submenu)\n <>\n {/* Profile header */}\n <a className={`${baseClass}__profile`} href={accountHref}>\n <div className={`${baseClass}__avatar`}>\n <RenderCustomComponent CustomComponent={CustomAvatar} Fallback={<Account />} />\n </div>\n <div>\n {titleString && <p className={`${baseClass}__name`}>{titleString}</p>}\n {identifier && <p className={`${baseClass}__identifier`}>{identifier}</p>}\n </div>\n </a>\n\n {/* Preferences group: Theme + Language */}\n {showPreferencesGroup && (\n <PopupList.ButtonGroup>\n {showThemeMenu && (\n <ThemeMenu\n onMobileOpen={isMobile ? () => setActiveMobileSubmenu('theme') : undefined}\n />\n )}\n {hasMultipleLanguages && (\n <LanguageMenu\n onMobileOpen={isMobile ? () => setActiveMobileSubmenu('language') : undefined}\n />\n )}\n </PopupList.ButtonGroup>\n )}\n\n <MenuSeparator />\n\n {/* Settings group */}\n {hasSettingsItems && (\n <>\n <PopupList.ButtonGroup>\n <SettingsMenu\n groups={settingsItemGroups}\n onMobileOpen={isMobile ? () => setActiveMobileSubmenu('settings') : undefined}\n />\n </PopupList.ButtonGroup>\n <MenuSeparator />\n </>\n )}\n\n {/* Account actions */}\n <PopupList.MenuItem>\n <PopupList.Button href={logoutHref} icon={<LogOutIcon />}>\n {t('authentication:logOut')}\n </PopupList.Button>\n </PopupList.MenuItem>\n </>\n )}\n </Popup>\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["c","_c","useWindowInfo","formatAdminURL","React","useEffect","useState","Account","LogOutIcon","useAuth","useConfig","useTranslation","MenuSeparator","Popup","PopupList","RenderCustomComponent","LanguageMenu","LanguageMenuContent","SettingsMenu","SettingsMenuContent","SubMenuHeader","ThemeMenu","ThemeMenuContent","baseClass","UserMenu","t0","$","CustomAvatar","CustomLogoutButton","settingsItemGroups","t1","undefined","user","languageOptions","t","config","t2","getEntityConfig","admin","t3","routes","t4","t5","theme","adminTheme","userSlug","account","accountRoute","logout","logoutRoute","adminRoute","breakpoints","t6","s","smallBreak","isMobile","Boolean","activeMobileSubmenu","setActiveMobileSubmenu","t7","t8","userCollectionConfig","collectionSlug","useAsTitle","titleValue","titleString","identifier","username","email","hasMultipleLanguages","Array","isArray","length","showThemeMenu","hasSettingsItems","some","_temp","showPreferencesGroup","logoutHref","path","accountHref","t9","Symbol","for","t10","t11","active","ariaProps","_jsx","className","filter","join","type","children","CustomComponent","Fallback","caret","horizontalAlign","onToggleClose","renderButton","verticalAlign","_jsxs","_Fragment","onBack","title","groups","href","ButtonGroup","onMobileOpen","MenuItem","Button","icon","group","items"],"sources":["../../../src/elements/UserMenu/index.tsx"],"sourcesContent":["'use client'\nimport { useWindowInfo } from '@faceless-ui/window-info'\nimport { formatAdminURL } from 'payload/shared'\nimport React, { useEffect, useState } from 'react'\n\nimport type { UserMenuSettingsGroup } from './SettingsMenu/index.js'\n\nimport { Account } from '../../graphics/Account/index.js'\nimport { LogOutIcon } from '../../icons/LogOut/index.js'\nimport { useAuth } from '../../providers/Auth/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { MenuSeparator } from '../MenuSeparator/index.js'\nimport { Popup, PopupList } from '../Popup/index.js'\nimport { RenderCustomComponent } from '../RenderCustomComponent/index.js'\nimport { LanguageMenu, LanguageMenuContent } from './LanguageMenu/index.js'\nimport { SettingsMenu, SettingsMenuContent } from './SettingsMenu/index.js'\nimport { SubMenuHeader } from './SubMenuHeader/index.js'\nimport { ThemeMenu, ThemeMenuContent } from './ThemeMenu/index.js'\nimport './index.css'\n\nconst baseClass = 'user-menu'\n\ntype UserMenuProps = {\n CustomAvatar?: React.ReactNode\n CustomLogoutButton?: React.ReactNode\n settingsItemGroups?: UserMenuSettingsGroup[]\n}\n\nexport const UserMenu: React.FC<UserMenuProps> = ({\n CustomAvatar,\n CustomLogoutButton,\n settingsItemGroups = [],\n}) => {\n const { user } = useAuth()\n const { languageOptions, t } = useTranslation()\n const {\n config: {\n admin: {\n routes: { account: accountRoute, logout: logoutRoute },\n theme: adminTheme,\n user: userSlug,\n },\n routes: { admin: adminRoute },\n },\n getEntityConfig,\n } = useConfig()\n const {\n breakpoints: { s: smallBreak },\n } = useWindowInfo()\n\n const isMobile = Boolean(smallBreak)\n\n const [activeMobileSubmenu, setActiveMobileSubmenu] = useState<\n 'language' | 'settings' | 'theme' | null\n >(null)\n\n useEffect(() => {\n if (!isMobile) {\n setActiveMobileSubmenu(null)\n }\n }, [isMobile])\n\n const userCollectionConfig = getEntityConfig({ collectionSlug: userSlug })\n const useAsTitle = userCollectionConfig?.admin?.useAsTitle ?? 'email'\n const titleValue =\n useAsTitle !== 'email' && user ? (user as Record<string, unknown>)[useAsTitle] : undefined\n const titleString = typeof titleValue === 'string' ? titleValue : undefined\n\n const identifier = user?.username ?? user?.email ?? ''\n const hasMultipleLanguages = Array.isArray(languageOptions) && languageOptions.length > 1\n const showThemeMenu = adminTheme === 'all'\n const hasSettingsItems = settingsItemGroups.some((group) => group.items.length > 0)\n const showPreferencesGroup = showThemeMenu || hasMultipleLanguages\n\n const logoutHref = formatAdminURL({ adminRoute, path: logoutRoute })\n const accountHref = formatAdminURL({ adminRoute, path: accountRoute })\n\n return (\n <Popup\n caret={false}\n className={baseClass}\n horizontalAlign=\"right\"\n onToggleClose={() => setActiveMobileSubmenu(null)}\n renderButton={({ active, ...ariaProps }) => (\n <button\n {...ariaProps}\n aria-label={t('authentication:account')}\n className={[`${baseClass}__trigger`, active && `${baseClass}__trigger--active`]\n .filter(Boolean)\n .join(' ')}\n type=\"button\"\n >\n <RenderCustomComponent CustomComponent={CustomAvatar} Fallback={<Account />} />\n </button>\n )}\n size=\"large\"\n theme=\"dark\"\n verticalAlign=\"bottom\"\n >\n {isMobile && activeMobileSubmenu ? (\n // Mobile submenu panel\n <>\n {activeMobileSubmenu === 'theme' && (\n <>\n <SubMenuHeader\n onBack={() => setActiveMobileSubmenu(null)}\n title={t('general:theme')}\n />\n <ThemeMenuContent />\n </>\n )}\n {activeMobileSubmenu === 'language' && (\n <>\n <SubMenuHeader\n onBack={() => setActiveMobileSubmenu(null)}\n title={t('general:language')}\n />\n <LanguageMenuContent />\n </>\n )}\n {activeMobileSubmenu === 'settings' && (\n <>\n <SubMenuHeader\n onBack={() => setActiveMobileSubmenu(null)}\n title={t('general:settings')}\n />\n <SettingsMenuContent groups={settingsItemGroups} />\n </>\n )}\n </>\n ) : (\n // Normal menu content (desktop always; mobile when no active submenu)\n <>\n {/* Profile header */}\n <a className={`${baseClass}__profile`} href={accountHref}>\n <div className={`${baseClass}__avatar`}>\n <RenderCustomComponent CustomComponent={CustomAvatar} Fallback={<Account />} />\n </div>\n <div>\n {titleString && <p className={`${baseClass}__name`}>{titleString}</p>}\n {identifier && <p className={`${baseClass}__identifier`}>{identifier}</p>}\n </div>\n </a>\n\n {/* Preferences group: Theme + Language */}\n {showPreferencesGroup && (\n <PopupList.ButtonGroup>\n {showThemeMenu && (\n <ThemeMenu\n onMobileOpen={isMobile ? () => setActiveMobileSubmenu('theme') : undefined}\n />\n )}\n {hasMultipleLanguages && (\n <LanguageMenu\n onMobileOpen={isMobile ? () => setActiveMobileSubmenu('language') : undefined}\n />\n )}\n </PopupList.ButtonGroup>\n )}\n\n <MenuSeparator />\n\n {/* Settings group */}\n {hasSettingsItems && (\n <>\n <PopupList.ButtonGroup>\n <SettingsMenu\n groups={settingsItemGroups}\n onMobileOpen={isMobile ? () => setActiveMobileSubmenu('settings') : undefined}\n />\n </PopupList.ButtonGroup>\n <MenuSeparator />\n </>\n )}\n\n {/* Account actions */}\n <PopupList.MenuItem>\n {CustomLogoutButton ?? (\n <PopupList.Button href={logoutHref} icon={<LogOutIcon />}>\n {t('authentication:logOut')}\n </PopupList.Button>\n )}\n </PopupList.MenuItem>\n </>\n )}\n </Popup>\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -83,7 +83,7 @@ export const RelationshipFilter = props => {
83
83
  const query = {
84
84
  depth: 0,
85
85
  limit: maxResultsPerRequest,
86
- locale: locale.code,
86
+ locale: locale?.code,
87
87
  page: loadedRelationship.nextPage,
88
88
  select: {
89
89
  [fieldToSearch]: true
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["formatAdminURL","qs","React","useCallback","useEffect","useReducer","useState","useDebounce","useEffectEvent","useConfig","useLocale","useTranslation","ReactSelect","optionsReducer","baseClass","maxResultsPerRequest","RelationshipFilter","props","disabled","field","admin","hasMany","relationTo","filterOptions","onChange","operator","value","placeholder","undefined","isSortable","isMultiValue","includes","config","routes","api","getEntityConfig","hasMultipleRelations","Array","isArray","options","dispatchOptions","search","setSearch","debouncedSearch","errorLoading","setErrorLoading","hasLoadedFirstOptions","setHasLoadedFirstOptions","i18n","t","locale","relationSlugs","loadedRelationships","useRef","Map","map","relation","hasLoadedAll","nextPage","addOptions","data","collection","collectionSlug","type","loadOptions","abortController","relationSlug","loadedRelationship","current","get","fieldToSearch","useAsTitle","where","and","query","depth","limit","code","page","select","push","like","response","fetch","apiRoute","path","stringify","addQueryPrefix","credentials","headers","language","signal","ok","json","docs","length","set","e","aborted","console","error","handleScrollToBottom","relationshipToLoad","entries","next","AbortController","findOptionsByValue","val","matchedOption","forEach","opt","some","subOpt","find","valueWithRelation","handleInputChange","input","required","addOptionByID","id","relations","abortControllers","controller","abort","_err","matchedOptions","option","i","classes","filter","Boolean","join","valueToRender","_jsx","className","isMulti","selected","onInputChange","onMenuScrollToBottom"],"sources":["../../../../../src/elements/WhereBuilder/Condition/Relationship/index.tsx"],"sourcesContent":["'use client'\nimport type { PaginatedDocs, Where } from 'payload'\n\nimport { formatAdminURL } from 'payload/shared'\nimport * as qs from 'qs-esm'\nimport React, { useCallback, useEffect, useReducer, useState } from 'react'\n\nimport type { Option } from '../../../ReactSelect/types.js'\nimport type { RelationshipFilterProps as Props, ValueWithRelation } from './types.js'\n\nimport { useDebounce } from '../../../../hooks/useDebounce.js'\nimport { useEffectEvent } from '../../../../hooks/useEffectEvent.js'\nimport { useConfig } from '../../../../providers/Config/index.js'\nimport { useLocale } from '../../../../providers/Locale/index.js'\nimport { useTranslation } from '../../../../providers/Translation/index.js'\nimport { ReactSelect } from '../../../ReactSelect/index.js'\nimport './index.css'\nimport optionsReducer from './optionsReducer.js'\n\nconst baseClass = 'condition-value-relationship'\n\nconst maxResultsPerRequest = 10\n\nexport const RelationshipFilter: React.FC<Props> = (props) => {\n const {\n disabled,\n field: { admin = {}, hasMany, relationTo },\n filterOptions,\n onChange,\n operator,\n value,\n } = props\n\n const placeholder = 'placeholder' in admin ? admin?.placeholder : undefined\n const isSortable = admin?.isSortable\n\n const isMultiValue = hasMany || ['in', 'not_in'].includes(operator)\n\n const {\n config: {\n routes: { api },\n },\n getEntityConfig,\n } = useConfig()\n\n const hasMultipleRelations = Array.isArray(relationTo)\n const [options, dispatchOptions] = useReducer(optionsReducer, [])\n const [search, setSearch] = useState('')\n const debouncedSearch = useDebounce(search, 300)\n const [errorLoading, setErrorLoading] = useState('')\n const [hasLoadedFirstOptions, setHasLoadedFirstOptions] = useState(false)\n const { i18n, t } = useTranslation()\n const locale = useLocale()\n\n const relationSlugs = hasMultipleRelations ? relationTo : [relationTo]\n\n const loadedRelationships = React.useRef<\n Map<\n string,\n {\n hasLoadedAll: boolean\n nextPage: number\n }\n >\n >(\n new Map(\n relationSlugs.map((relation) => [\n relation,\n {\n hasLoadedAll: false,\n nextPage: 1,\n },\n ]),\n ),\n )\n\n const addOptions = useCallback(\n (data, relation) => {\n const collection = getEntityConfig({ collectionSlug: relation })\n dispatchOptions({ type: 'ADD', collection, data, hasMultipleRelations, i18n, relation })\n },\n [hasMultipleRelations, i18n, getEntityConfig],\n )\n\n const loadOptions = useEffectEvent(\n async ({\n abortController,\n relationSlug,\n }: {\n abortController: AbortController\n relationSlug: string\n }) => {\n const loadedRelationship = loadedRelationships.current.get(relationSlug)\n\n if (relationSlug && !loadedRelationship.hasLoadedAll) {\n const collection = getEntityConfig({\n collectionSlug: relationSlug,\n })\n\n const fieldToSearch = collection?.admin?.useAsTitle || 'id'\n\n const where: Where = {\n and: [],\n }\n\n const query = {\n depth: 0,\n limit: maxResultsPerRequest,\n locale: locale.code,\n page: loadedRelationship.nextPage,\n select: {\n [fieldToSearch]: true,\n },\n where,\n }\n\n if (filterOptions && filterOptions?.[relationSlug]) {\n query.where.and.push(filterOptions[relationSlug])\n }\n\n if (debouncedSearch) {\n query.where.and.push({\n [fieldToSearch]: {\n like: debouncedSearch,\n },\n })\n }\n\n try {\n const response = await fetch(\n formatAdminURL({\n apiRoute: api,\n path: `/${relationSlug}${qs.stringify(query, { addQueryPrefix: true })}`,\n }),\n {\n credentials: 'include',\n headers: {\n 'Accept-Language': i18n.language,\n },\n signal: abortController.signal,\n },\n )\n\n if (response.ok) {\n const data: PaginatedDocs = await response.json()\n if (data.docs.length > 0) {\n addOptions(data, relationSlug)\n\n if (data.nextPage) {\n loadedRelationships.current.set(relationSlug, {\n hasLoadedAll: false,\n nextPage: data.nextPage,\n })\n } else {\n loadedRelationships.current.set(relationSlug, {\n hasLoadedAll: true,\n nextPage: null,\n })\n }\n }\n } else {\n setErrorLoading(t('error:unspecific'))\n }\n } catch (e) {\n if (!abortController.signal.aborted) {\n console.error(e) // eslint-disable-line no-console\n }\n }\n }\n\n setHasLoadedFirstOptions(true)\n },\n )\n\n const handleScrollToBottom = React.useCallback(() => {\n const relationshipToLoad = loadedRelationships.current.entries().next().value\n\n if (relationshipToLoad[0] && !relationshipToLoad[1].hasLoadedAll) {\n const abortController = new AbortController()\n\n void loadOptions({\n abortController,\n relationSlug: relationshipToLoad[0],\n })\n }\n }, [])\n\n const findOptionsByValue = useCallback((): Option | Option[] => {\n if (value) {\n if (isMultiValue) {\n if (Array.isArray(value)) {\n return value.map((val) => {\n if (hasMultipleRelations) {\n let matchedOption: Option\n\n options.forEach((opt) => {\n if (opt.options) {\n opt.options.some((subOpt) => {\n if (subOpt?.value == val.value) {\n matchedOption = subOpt\n return true\n }\n\n return false\n })\n }\n })\n\n return matchedOption\n }\n\n return options.find((opt) => opt.value == val)\n })\n }\n\n return undefined\n }\n\n if (hasMultipleRelations) {\n let matchedOption: Option\n\n const valueWithRelation = value as ValueWithRelation\n\n options.forEach((opt) => {\n if (opt?.options) {\n opt.options.some((subOpt) => {\n if (subOpt?.value == valueWithRelation.value) {\n matchedOption = subOpt\n return true\n }\n return false\n })\n }\n })\n\n return matchedOption\n }\n\n return options.find((opt) => opt.value == value)\n }\n\n return undefined\n }, [isMultiValue, hasMultipleRelations, value, options])\n\n const handleInputChange = useCallback(\n (input: string) => {\n if (input !== search) {\n dispatchOptions({ type: 'CLEAR', i18n, required: false })\n\n const relationSlugs = Array.isArray(relationTo) ? relationTo : [relationTo]\n\n loadedRelationships.current = new Map(\n relationSlugs.map((relation) => [\n relation,\n {\n hasLoadedAll: false,\n nextPage: 1,\n },\n ]),\n )\n\n setSearch(input)\n }\n },\n [i18n, relationTo, search],\n )\n\n const addOptionByID = useCallback(\n async (id, relation) => {\n if (!errorLoading && id !== 'null' && id && relation) {\n const response = await fetch(\n formatAdminURL({ apiRoute: api, path: `/${relation}/${id}?depth=0` }),\n {\n credentials: 'include',\n headers: {\n 'Accept-Language': i18n.language,\n },\n },\n )\n\n if (response.ok) {\n const data = await response.json()\n addOptions({ docs: [data] }, relation)\n } else {\n // eslint-disable-next-line no-console\n console.error(t('error:loadingDocument', { id }))\n }\n }\n },\n [i18n, addOptions, api, errorLoading, t],\n )\n\n /**\n * When `relationTo` changes externally, reset the options and reload them from scratch\n * The `loadOptions` dependency is a useEffectEvent which has no dependencies of its own\n * This means we can safely depend on it without it triggering this effect to run\n * This is useful because this effect should _only_ run when `relationTo` changes\n */\n useEffect(() => {\n const relations = Array.isArray(relationTo) ? relationTo : [relationTo]\n\n loadedRelationships.current = new Map(\n relations.map((relation) => [\n relation,\n {\n hasLoadedAll: false,\n nextPage: 1,\n },\n ]),\n )\n\n dispatchOptions({ type: 'CLEAR', i18n, required: false })\n setHasLoadedFirstOptions(false)\n\n const abortControllers: AbortController[] = []\n\n relations.forEach((relation) => {\n const abortController = new AbortController()\n\n void loadOptions({\n abortController,\n relationSlug: relation,\n })\n\n abortControllers.push(abortController)\n })\n\n return () => {\n abortControllers.forEach((controller) => {\n if (controller.signal) {\n try {\n controller.abort()\n } catch (_err) {\n // swallow error\n }\n }\n })\n }\n }, [i18n, relationTo, debouncedSearch, filterOptions])\n\n /**\n * Load any other options that might exist in the value that were not loaded already\n */\n useEffect(() => {\n if (value && hasLoadedFirstOptions) {\n if (isMultiValue) {\n const matchedOptions = findOptionsByValue()\n\n ;((matchedOptions as Option[]) || []).forEach((option, i) => {\n if (!option) {\n if (hasMultipleRelations) {\n void addOptionByID(value[i].value, value[i].relationTo)\n } else {\n void addOptionByID(value[i], relationTo)\n }\n }\n })\n } else {\n const matchedOption = findOptionsByValue()\n\n if (!matchedOption) {\n if (hasMultipleRelations) {\n const valueWithRelation = value as ValueWithRelation\n void addOptionByID(valueWithRelation.value, valueWithRelation.relationTo)\n } else {\n void addOptionByID(value, relationTo)\n }\n }\n }\n }\n }, [\n addOptionByID,\n findOptionsByValue,\n isMultiValue,\n hasMultipleRelations,\n relationTo,\n value,\n hasLoadedFirstOptions,\n ])\n\n const classes = ['field-type', baseClass, errorLoading && 'error-loading']\n .filter(Boolean)\n .join(' ')\n\n const valueToRender = (findOptionsByValue() || value) as Option\n\n return (\n <div className={classes}>\n {errorLoading ? (\n <div className={`${baseClass}__error-loading`}>{errorLoading}</div>\n ) : (\n <ReactSelect\n disabled={disabled}\n isMulti={isMultiValue}\n isSortable={isSortable}\n onChange={(selected) => {\n if (!selected) {\n onChange(null)\n return\n }\n\n if (isMultiValue && Array.isArray(selected)) {\n onChange(\n selected\n ? selected.map((option) => {\n if (hasMultipleRelations) {\n return {\n relationTo: option?.relationTo,\n value: option?.value,\n }\n }\n\n return option?.value\n })\n : null,\n )\n } else if (hasMultipleRelations && !Array.isArray(selected)) {\n onChange({\n relationTo: selected?.relationTo,\n value: selected?.value,\n })\n } else if (!Array.isArray(selected)) {\n onChange(selected?.value)\n }\n }}\n onInputChange={handleInputChange}\n onMenuScrollToBottom={handleScrollToBottom}\n options={options}\n placeholder={placeholder}\n value={valueToRender}\n />\n )}\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["formatAdminURL","qs","React","useCallback","useEffect","useReducer","useState","useDebounce","useEffectEvent","useConfig","useLocale","useTranslation","ReactSelect","optionsReducer","baseClass","maxResultsPerRequest","RelationshipFilter","props","disabled","field","admin","hasMany","relationTo","filterOptions","onChange","operator","value","placeholder","undefined","isSortable","isMultiValue","includes","config","routes","api","getEntityConfig","hasMultipleRelations","Array","isArray","options","dispatchOptions","search","setSearch","debouncedSearch","errorLoading","setErrorLoading","hasLoadedFirstOptions","setHasLoadedFirstOptions","i18n","t","locale","relationSlugs","loadedRelationships","useRef","Map","map","relation","hasLoadedAll","nextPage","addOptions","data","collection","collectionSlug","type","loadOptions","abortController","relationSlug","loadedRelationship","current","get","fieldToSearch","useAsTitle","where","and","query","depth","limit","code","page","select","push","like","response","fetch","apiRoute","path","stringify","addQueryPrefix","credentials","headers","language","signal","ok","json","docs","length","set","e","aborted","console","error","handleScrollToBottom","relationshipToLoad","entries","next","AbortController","findOptionsByValue","val","matchedOption","forEach","opt","some","subOpt","find","valueWithRelation","handleInputChange","input","required","addOptionByID","id","relations","abortControllers","controller","abort","_err","matchedOptions","option","i","classes","filter","Boolean","join","valueToRender","_jsx","className","isMulti","selected","onInputChange","onMenuScrollToBottom"],"sources":["../../../../../src/elements/WhereBuilder/Condition/Relationship/index.tsx"],"sourcesContent":["'use client'\nimport type { PaginatedDocs, Where } from 'payload'\n\nimport { formatAdminURL } from 'payload/shared'\nimport * as qs from 'qs-esm'\nimport React, { useCallback, useEffect, useReducer, useState } from 'react'\n\nimport type { Option } from '../../../ReactSelect/types.js'\nimport type { RelationshipFilterProps as Props, ValueWithRelation } from './types.js'\n\nimport { useDebounce } from '../../../../hooks/useDebounce.js'\nimport { useEffectEvent } from '../../../../hooks/useEffectEvent.js'\nimport { useConfig } from '../../../../providers/Config/index.js'\nimport { useLocale } from '../../../../providers/Locale/index.js'\nimport { useTranslation } from '../../../../providers/Translation/index.js'\nimport { ReactSelect } from '../../../ReactSelect/index.js'\nimport './index.css'\nimport optionsReducer from './optionsReducer.js'\n\nconst baseClass = 'condition-value-relationship'\n\nconst maxResultsPerRequest = 10\n\nexport const RelationshipFilter: React.FC<Props> = (props) => {\n const {\n disabled,\n field: { admin = {}, hasMany, relationTo },\n filterOptions,\n onChange,\n operator,\n value,\n } = props\n\n const placeholder = 'placeholder' in admin ? admin?.placeholder : undefined\n const isSortable = admin?.isSortable\n\n const isMultiValue = hasMany || ['in', 'not_in'].includes(operator)\n\n const {\n config: {\n routes: { api },\n },\n getEntityConfig,\n } = useConfig()\n\n const hasMultipleRelations = Array.isArray(relationTo)\n const [options, dispatchOptions] = useReducer(optionsReducer, [])\n const [search, setSearch] = useState('')\n const debouncedSearch = useDebounce(search, 300)\n const [errorLoading, setErrorLoading] = useState('')\n const [hasLoadedFirstOptions, setHasLoadedFirstOptions] = useState(false)\n const { i18n, t } = useTranslation()\n const locale = useLocale()\n\n const relationSlugs = hasMultipleRelations ? relationTo : [relationTo]\n\n const loadedRelationships = React.useRef<\n Map<\n string,\n {\n hasLoadedAll: boolean\n nextPage: number\n }\n >\n >(\n new Map(\n relationSlugs.map((relation) => [\n relation,\n {\n hasLoadedAll: false,\n nextPage: 1,\n },\n ]),\n ),\n )\n\n const addOptions = useCallback(\n (data, relation) => {\n const collection = getEntityConfig({ collectionSlug: relation })\n dispatchOptions({ type: 'ADD', collection, data, hasMultipleRelations, i18n, relation })\n },\n [hasMultipleRelations, i18n, getEntityConfig],\n )\n\n const loadOptions = useEffectEvent(\n async ({\n abortController,\n relationSlug,\n }: {\n abortController: AbortController\n relationSlug: string\n }) => {\n const loadedRelationship = loadedRelationships.current.get(relationSlug)\n\n if (relationSlug && !loadedRelationship.hasLoadedAll) {\n const collection = getEntityConfig({\n collectionSlug: relationSlug,\n })\n\n const fieldToSearch = collection?.admin?.useAsTitle || 'id'\n\n const where: Where = {\n and: [],\n }\n\n const query = {\n depth: 0,\n limit: maxResultsPerRequest,\n locale: locale?.code,\n page: loadedRelationship.nextPage,\n select: {\n [fieldToSearch]: true,\n },\n where,\n }\n\n if (filterOptions && filterOptions?.[relationSlug]) {\n query.where.and.push(filterOptions[relationSlug])\n }\n\n if (debouncedSearch) {\n query.where.and.push({\n [fieldToSearch]: {\n like: debouncedSearch,\n },\n })\n }\n\n try {\n const response = await fetch(\n formatAdminURL({\n apiRoute: api,\n path: `/${relationSlug}${qs.stringify(query, { addQueryPrefix: true })}`,\n }),\n {\n credentials: 'include',\n headers: {\n 'Accept-Language': i18n.language,\n },\n signal: abortController.signal,\n },\n )\n\n if (response.ok) {\n const data: PaginatedDocs = await response.json()\n if (data.docs.length > 0) {\n addOptions(data, relationSlug)\n\n if (data.nextPage) {\n loadedRelationships.current.set(relationSlug, {\n hasLoadedAll: false,\n nextPage: data.nextPage,\n })\n } else {\n loadedRelationships.current.set(relationSlug, {\n hasLoadedAll: true,\n nextPage: null,\n })\n }\n }\n } else {\n setErrorLoading(t('error:unspecific'))\n }\n } catch (e) {\n if (!abortController.signal.aborted) {\n console.error(e) // eslint-disable-line no-console\n }\n }\n }\n\n setHasLoadedFirstOptions(true)\n },\n )\n\n const handleScrollToBottom = React.useCallback(() => {\n const relationshipToLoad = loadedRelationships.current.entries().next().value\n\n if (relationshipToLoad[0] && !relationshipToLoad[1].hasLoadedAll) {\n const abortController = new AbortController()\n\n void loadOptions({\n abortController,\n relationSlug: relationshipToLoad[0],\n })\n }\n }, [])\n\n const findOptionsByValue = useCallback((): Option | Option[] => {\n if (value) {\n if (isMultiValue) {\n if (Array.isArray(value)) {\n return value.map((val) => {\n if (hasMultipleRelations) {\n let matchedOption: Option\n\n options.forEach((opt) => {\n if (opt.options) {\n opt.options.some((subOpt) => {\n if (subOpt?.value == val.value) {\n matchedOption = subOpt\n return true\n }\n\n return false\n })\n }\n })\n\n return matchedOption\n }\n\n return options.find((opt) => opt.value == val)\n })\n }\n\n return undefined\n }\n\n if (hasMultipleRelations) {\n let matchedOption: Option\n\n const valueWithRelation = value as ValueWithRelation\n\n options.forEach((opt) => {\n if (opt?.options) {\n opt.options.some((subOpt) => {\n if (subOpt?.value == valueWithRelation.value) {\n matchedOption = subOpt\n return true\n }\n return false\n })\n }\n })\n\n return matchedOption\n }\n\n return options.find((opt) => opt.value == value)\n }\n\n return undefined\n }, [isMultiValue, hasMultipleRelations, value, options])\n\n const handleInputChange = useCallback(\n (input: string) => {\n if (input !== search) {\n dispatchOptions({ type: 'CLEAR', i18n, required: false })\n\n const relationSlugs = Array.isArray(relationTo) ? relationTo : [relationTo]\n\n loadedRelationships.current = new Map(\n relationSlugs.map((relation) => [\n relation,\n {\n hasLoadedAll: false,\n nextPage: 1,\n },\n ]),\n )\n\n setSearch(input)\n }\n },\n [i18n, relationTo, search],\n )\n\n const addOptionByID = useCallback(\n async (id, relation) => {\n if (!errorLoading && id !== 'null' && id && relation) {\n const response = await fetch(\n formatAdminURL({ apiRoute: api, path: `/${relation}/${id}?depth=0` }),\n {\n credentials: 'include',\n headers: {\n 'Accept-Language': i18n.language,\n },\n },\n )\n\n if (response.ok) {\n const data = await response.json()\n addOptions({ docs: [data] }, relation)\n } else {\n // eslint-disable-next-line no-console\n console.error(t('error:loadingDocument', { id }))\n }\n }\n },\n [i18n, addOptions, api, errorLoading, t],\n )\n\n /**\n * When `relationTo` changes externally, reset the options and reload them from scratch\n * The `loadOptions` dependency is a useEffectEvent which has no dependencies of its own\n * This means we can safely depend on it without it triggering this effect to run\n * This is useful because this effect should _only_ run when `relationTo` changes\n */\n useEffect(() => {\n const relations = Array.isArray(relationTo) ? relationTo : [relationTo]\n\n loadedRelationships.current = new Map(\n relations.map((relation) => [\n relation,\n {\n hasLoadedAll: false,\n nextPage: 1,\n },\n ]),\n )\n\n dispatchOptions({ type: 'CLEAR', i18n, required: false })\n setHasLoadedFirstOptions(false)\n\n const abortControllers: AbortController[] = []\n\n relations.forEach((relation) => {\n const abortController = new AbortController()\n\n void loadOptions({\n abortController,\n relationSlug: relation,\n })\n\n abortControllers.push(abortController)\n })\n\n return () => {\n abortControllers.forEach((controller) => {\n if (controller.signal) {\n try {\n controller.abort()\n } catch (_err) {\n // swallow error\n }\n }\n })\n }\n }, [i18n, relationTo, debouncedSearch, filterOptions])\n\n /**\n * Load any other options that might exist in the value that were not loaded already\n */\n useEffect(() => {\n if (value && hasLoadedFirstOptions) {\n if (isMultiValue) {\n const matchedOptions = findOptionsByValue()\n\n ;((matchedOptions as Option[]) || []).forEach((option, i) => {\n if (!option) {\n if (hasMultipleRelations) {\n void addOptionByID(value[i].value, value[i].relationTo)\n } else {\n void addOptionByID(value[i], relationTo)\n }\n }\n })\n } else {\n const matchedOption = findOptionsByValue()\n\n if (!matchedOption) {\n if (hasMultipleRelations) {\n const valueWithRelation = value as ValueWithRelation\n void addOptionByID(valueWithRelation.value, valueWithRelation.relationTo)\n } else {\n void addOptionByID(value, relationTo)\n }\n }\n }\n }\n }, [\n addOptionByID,\n findOptionsByValue,\n isMultiValue,\n hasMultipleRelations,\n relationTo,\n value,\n hasLoadedFirstOptions,\n ])\n\n const classes = ['field-type', baseClass, errorLoading && 'error-loading']\n .filter(Boolean)\n .join(' ')\n\n const valueToRender = (findOptionsByValue() || value) as Option\n\n return (\n <div className={classes}>\n {errorLoading ? (\n <div className={`${baseClass}__error-loading`}>{errorLoading}</div>\n ) : (\n <ReactSelect\n disabled={disabled}\n isMulti={isMultiValue}\n isSortable={isSortable}\n onChange={(selected) => {\n if (!selected) {\n onChange(null)\n return\n }\n\n if (isMultiValue && Array.isArray(selected)) {\n onChange(\n selected\n ? selected.map((option) => {\n if (hasMultipleRelations) {\n return {\n relationTo: option?.relationTo,\n value: option?.value,\n }\n }\n\n return option?.value\n })\n : null,\n )\n } else if (hasMultipleRelations && !Array.isArray(selected)) {\n onChange({\n relationTo: selected?.relationTo,\n value: selected?.value,\n })\n } else if (!Array.isArray(selected)) {\n onChange(selected?.value)\n }\n }}\n onInputChange={handleInputChange}\n onMenuScrollToBottom={handleScrollToBottom}\n options={options}\n placeholder={placeholder}\n value={valueToRender}\n />\n )}\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"optionsReducer.d.ts","sourceRoot":"","sources":["../../../../../src/elements/WhereBuilder/Condition/Relationship/optionsReducer.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAWhD,QAAA,MAAM,cAAc,GAAI,OAAO,MAAM,EAAE,EAAE,QAAQ,MAAM,KAAG,MAAM,EAuE/D,CAAA;AAED,eAAe,cAAc,CAAA"}
1
+ {"version":3,"file":"optionsReducer.d.ts","sourceRoot":"","sources":["../../../../../src/elements/WhereBuilder/Condition/Relationship/optionsReducer.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAWhD,QAAA,MAAM,cAAc,UAAW,MAAM,EAAE,UAAU,MAAM,KAAG,MAAM,EAuE/D,CAAA;eAEc,cAAc"}
@@ -1 +1 @@
1
- {"version":3,"file":"formatOptions.d.ts","sourceRoot":"","sources":["../../../../../src/elements/WhereBuilder/Condition/Select/formatOptions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAEnD;;GAEG;AACH,eAAO,MAAM,aAAa,GAAI,SAAS,MAAM,EAAE,KAAG,YAAY,EAU1D,CAAA"}
1
+ {"version":3,"file":"formatOptions.d.ts","sourceRoot":"","sources":["../../../../../src/elements/WhereBuilder/Condition/Select/formatOptions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAEnD;;GAEG;AACH,eAAO,MAAM,aAAa,YAAa,MAAM,EAAE,KAAG,YAAY,EAU1D,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"validOperators.d.ts","sourceRoot":"","sources":["../../../../src/elements/WhereBuilder/Condition/validOperators.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,qBAAqB,GAAI,cAAS;;;;;;;;;;;;;;;;;CAiC9C,CAAA"}
1
+ {"version":3,"file":"validOperators.d.ts","sourceRoot":"","sources":["../../../../src/elements/WhereBuilder/Condition/validOperators.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;CAiCjC,CAAA"}
@@ -0,0 +1,32 @@
1
+ import type { UpdateCondition } from './types.js';
2
+ type UpdateType = Parameters<UpdateCondition>[0]['type'];
3
+ /**
4
+ * A row that holds no value yet. Empty arrives as `''` from the URL, `null` from a cleared
5
+ * select, or `undefined` from a row that was added but never filled in.
6
+ */
7
+ export declare const isEmptyConditionValue: ({ value }: {
8
+ value: unknown;
9
+ }) => boolean;
10
+ /**
11
+ * The value a row renders with. Only a missing value becomes `undefined`. `0` and `false` are
12
+ * real filter values, so they must survive.
13
+ */
14
+ export declare const getDisplayedConditionValue: <T>({ value }: {
15
+ value: T;
16
+ }) => T | undefined;
17
+ /**
18
+ * Whether an edit leaves the row unchanged, and so must not be committed.
19
+ *
20
+ * An empty row renders blank and reports `undefined` back up as soon as it mounts. Committing
21
+ * that stores `{ [operator]: undefined }`, which `qs.stringify` drops when the query is written
22
+ * to the URL — so the row is gone on the next parse.
23
+ *
24
+ * Field and operator edits change the row even while it holds no value, so they always commit.
25
+ */
26
+ export declare const isNoOpConditionValueUpdate: ({ type, incomingValue, storedValue, }: {
27
+ incomingValue: unknown;
28
+ storedValue: unknown;
29
+ type: UpdateType;
30
+ }) => boolean;
31
+ export {};
32
+ //# sourceMappingURL=conditionValue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conditionValue.d.ts","sourceRoot":"","sources":["../../../src/elements/WhereBuilder/conditionValue.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAEjD,KAAK,UAAU,GAAG,UAAU,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAA;AAExD;;;GAGG;AACH,eAAO,MAAM,qBAAqB,cAAe;IAAE,KAAK,EAAE,OAAO,CAAA;CAAE,KAAG,OACf,CAAA;AAEvD;;;GAGG;AACH,eAAO,MAAM,0BAA0B,GAAI,CAAC,aAAa;IAAE,KAAK,EAAE,CAAC,CAAA;CAAE,KAAG,CAAC,GAAG,SACxD,CAAA;AAEpB;;;;;;;;GAQG;AACH,eAAO,MAAM,0BAA0B,0CAIpC;IACD,aAAa,EAAE,OAAO,CAAA;IACtB,WAAW,EAAE,OAAO,CAAA;IACpB,IAAI,EAAE,UAAU,CAAA;CACjB,KAAG,OAG6C,CAAA"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * A row that holds no value yet. Empty arrives as `''` from the URL, `null` from a cleared
3
+ * select, or `undefined` from a row that was added but never filled in.
4
+ */export const isEmptyConditionValue = ({
5
+ value
6
+ }) => value === undefined || value === null || value === '';
7
+ /**
8
+ * The value a row renders with. Only a missing value becomes `undefined`. `0` and `false` are
9
+ * real filter values, so they must survive.
10
+ */
11
+ export const getDisplayedConditionValue = ({
12
+ value
13
+ }) => value ?? undefined;
14
+ /**
15
+ * Whether an edit leaves the row unchanged, and so must not be committed.
16
+ *
17
+ * An empty row renders blank and reports `undefined` back up as soon as it mounts. Committing
18
+ * that stores `{ [operator]: undefined }`, which `qs.stringify` drops when the query is written
19
+ * to the URL — so the row is gone on the next parse.
20
+ *
21
+ * Field and operator edits change the row even while it holds no value, so they always commit.
22
+ */
23
+ export const isNoOpConditionValueUpdate = ({
24
+ type,
25
+ incomingValue,
26
+ storedValue
27
+ }) => type === 'value' && isEmptyConditionValue({
28
+ value: storedValue
29
+ }) && isEmptyConditionValue({
30
+ value: incomingValue
31
+ });
32
+ //# sourceMappingURL=conditionValue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conditionValue.js","names":["isEmptyConditionValue","value","undefined","getDisplayedConditionValue","isNoOpConditionValueUpdate","type","incomingValue","storedValue"],"sources":["../../../src/elements/WhereBuilder/conditionValue.ts"],"sourcesContent":["import type { UpdateCondition } from './types.js'\n\ntype UpdateType = Parameters<UpdateCondition>[0]['type']\n\n/**\n * A row that holds no value yet. Empty arrives as `''` from the URL, `null` from a cleared\n * select, or `undefined` from a row that was added but never filled in.\n */\nexport const isEmptyConditionValue = ({ value }: { value: unknown }): boolean =>\n value === undefined || value === null || value === ''\n\n/**\n * The value a row renders with. Only a missing value becomes `undefined`. `0` and `false` are\n * real filter values, so they must survive.\n */\nexport const getDisplayedConditionValue = <T>({ value }: { value: T }): T | undefined =>\n value ?? undefined\n\n/**\n * Whether an edit leaves the row unchanged, and so must not be committed.\n *\n * An empty row renders blank and reports `undefined` back up as soon as it mounts. Committing\n * that stores `{ [operator]: undefined }`, which `qs.stringify` drops when the query is written\n * to the URL — so the row is gone on the next parse.\n *\n * Field and operator edits change the row even while it holds no value, so they always commit.\n */\nexport const isNoOpConditionValueUpdate = ({\n type,\n incomingValue,\n storedValue,\n}: {\n incomingValue: unknown\n storedValue: unknown\n type: UpdateType\n}): boolean =>\n type === 'value' &&\n isEmptyConditionValue({ value: storedValue }) &&\n isEmptyConditionValue({ value: incomingValue })\n"],"mappings":"AAIA;;;GAIA,OAAO,MAAMA,qBAAA,GAAwBA,CAAC;EAAEC;AAAK,CAAsB,KACjEA,KAAA,KAAUC,SAAA,IAAaD,KAAA,KAAU,QAAQA,KAAA,KAAU;AAErD;;;;AAIA,OAAO,MAAME,0BAAA,GAA6BA,CAAI;EAAEF;AAAK,CAAgB,KACnEA,KAAA,IAASC,SAAA;AAEX;;;;;;;;;AASA,OAAO,MAAME,0BAAA,GAA6BA,CAAC;EACzCC,IAAI;EACJC,aAAa;EACbC;AAAW,CAKZ,KACCF,IAAA,KAAS,WACTL,qBAAA,CAAsB;EAAEC,KAAA,EAAOM;AAAY,MAC3CP,qBAAA,CAAsB;EAAEC,KAAA,EAAOK;AAAc","ignoreList":[]}
@@ -0,0 +1,65 @@
1
+ import { describe, expect, it } from 'vitest';
2
+ import { getDisplayedConditionValue, isEmptyConditionValue, isNoOpConditionValueUpdate } from './conditionValue.js';
3
+ describe('isEmptyConditionValue', () => {
4
+ it.each([['undefined', undefined], ['null', null], ['an empty string', '']])('should treat %s as empty', (_label, value) => {
5
+ expect(isEmptyConditionValue({
6
+ value
7
+ })).toBe(true);
8
+ });
9
+ it.each([['a string', 'option1'], ['zero', 0], ['false', false]])('should treat %s as a real value', (_label, value) => {
10
+ expect(isEmptyConditionValue({
11
+ value
12
+ })).toBe(false);
13
+ });
14
+ });
15
+ describe('getDisplayedConditionValue', () => {
16
+ it.each([['undefined', undefined], ['null', null]])('should display %s as no value', (_label, value) => {
17
+ expect(getDisplayedConditionValue({
18
+ value
19
+ })).toBeUndefined();
20
+ });
21
+ it.each([['zero', 0], ['false', false], ['an empty string', ''], ['a string', 'option1']])('should display %s as itself', (_label, value) => {
22
+ expect(getDisplayedConditionValue({
23
+ value
24
+ })).toBe(value);
25
+ });
26
+ });
27
+ describe('isNoOpConditionValueUpdate', () => {
28
+ it('should skip the empty value a row reports back for a stored empty string', () => {
29
+ // The row this covers comes from a URL such as `?where[or][0][and][0][field][equals]=`.
30
+ expect(isNoOpConditionValueUpdate({
31
+ incomingValue: undefined,
32
+ storedValue: '',
33
+ type: 'value'
34
+ })).toBe(true);
35
+ });
36
+ it.each([['undefined', 'an empty string', undefined, ''], ['null', 'undefined', null, undefined], ['undefined', 'undefined', undefined, undefined]])('should skip a %s value stored as %s', (_incomingLabel, _storedLabel, incomingValue, storedValue) => {
37
+ expect(isNoOpConditionValueUpdate({
38
+ incomingValue,
39
+ storedValue,
40
+ type: 'value'
41
+ })).toBe(true);
42
+ });
43
+ it('should commit a value typed into an empty row', () => {
44
+ expect(isNoOpConditionValueUpdate({
45
+ incomingValue: 'option1',
46
+ storedValue: '',
47
+ type: 'value'
48
+ })).toBe(false);
49
+ });
50
+ it('should commit a row the user cleared', () => {
51
+ expect(isNoOpConditionValueUpdate({
52
+ incomingValue: undefined,
53
+ storedValue: 'option1',
54
+ type: 'value'
55
+ })).toBe(false);
56
+ });
57
+ it.each([['field'], ['operator']])('should commit a %s edit on a row that holds no value', type => {
58
+ expect(isNoOpConditionValueUpdate({
59
+ incomingValue: undefined,
60
+ storedValue: '',
61
+ type
62
+ })).toBe(false);
63
+ });
64
+ });
65
+ //# sourceMappingURL=conditionValue.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conditionValue.spec.js","names":["describe","expect","it","getDisplayedConditionValue","isEmptyConditionValue","isNoOpConditionValueUpdate","each","undefined","_label","value","toBe","toBeUndefined","incomingValue","storedValue","type","_incomingLabel","_storedLabel"],"sources":["../../../src/elements/WhereBuilder/conditionValue.spec.ts"],"sourcesContent":["import { describe, expect, it } from 'vitest'\n\nimport {\n getDisplayedConditionValue,\n isEmptyConditionValue,\n isNoOpConditionValueUpdate,\n} from './conditionValue.js'\n\ndescribe('isEmptyConditionValue', () => {\n it.each([\n ['undefined', undefined],\n ['null', null],\n ['an empty string', ''],\n ])('should treat %s as empty', (_label, value) => {\n expect(isEmptyConditionValue({ value })).toBe(true)\n })\n\n it.each([\n ['a string', 'option1'],\n ['zero', 0],\n ['false', false],\n ])('should treat %s as a real value', (_label, value) => {\n expect(isEmptyConditionValue({ value })).toBe(false)\n })\n})\n\ndescribe('getDisplayedConditionValue', () => {\n it.each([\n ['undefined', undefined],\n ['null', null],\n ])('should display %s as no value', (_label, value) => {\n expect(getDisplayedConditionValue({ value })).toBeUndefined()\n })\n\n it.each([\n ['zero', 0],\n ['false', false],\n ['an empty string', ''],\n ['a string', 'option1'],\n ])('should display %s as itself', (_label, value) => {\n expect(getDisplayedConditionValue({ value })).toBe(value)\n })\n})\n\ndescribe('isNoOpConditionValueUpdate', () => {\n it('should skip the empty value a row reports back for a stored empty string', () => {\n // The row this covers comes from a URL such as `?where[or][0][and][0][field][equals]=`.\n expect(\n isNoOpConditionValueUpdate({ incomingValue: undefined, storedValue: '', type: 'value' }),\n ).toBe(true)\n })\n\n it.each([\n ['undefined', 'an empty string', undefined, ''],\n ['null', 'undefined', null, undefined],\n ['undefined', 'undefined', undefined, undefined],\n ])(\n 'should skip a %s value stored as %s',\n (_incomingLabel, _storedLabel, incomingValue, storedValue) => {\n expect(isNoOpConditionValueUpdate({ incomingValue, storedValue, type: 'value' })).toBe(true)\n },\n )\n\n it('should commit a value typed into an empty row', () => {\n expect(\n isNoOpConditionValueUpdate({ incomingValue: 'option1', storedValue: '', type: 'value' }),\n ).toBe(false)\n })\n\n it('should commit a row the user cleared', () => {\n expect(\n isNoOpConditionValueUpdate({\n incomingValue: undefined,\n storedValue: 'option1',\n type: 'value',\n }),\n ).toBe(false)\n })\n\n it.each([['field'], ['operator']] as const)(\n 'should commit a %s edit on a row that holds no value',\n (type) => {\n expect(isNoOpConditionValueUpdate({ incomingValue: undefined, storedValue: '', type })).toBe(\n false,\n )\n },\n )\n})\n"],"mappings":"AAAA,SAASA,QAAQ,EAAEC,MAAM,EAAEC,EAAE,QAAQ;AAErC,SACEC,0BAA0B,EAC1BC,qBAAqB,EACrBC,0BAA0B,QACrB;AAEPL,QAAA,CAAS,yBAAyB;EAChCE,EAAA,CAAGI,IAAI,CAAC,CACN,CAAC,aAAaC,SAAA,CAAU,EACxB,CAAC,QAAQ,KAAK,EACd,CAAC,mBAAmB,GAAG,CACxB,EAAE,4BAA4B,CAACC,MAAA,EAAQC,KAAA;IACtCR,MAAA,CAAOG,qBAAA,CAAsB;MAAEK;IAAM,IAAIC,IAAI,CAAC;EAChD;EAEAR,EAAA,CAAGI,IAAI,CAAC,CACN,CAAC,YAAY,UAAU,EACvB,CAAC,QAAQ,EAAE,EACX,CAAC,SAAS,MAAM,CACjB,EAAE,mCAAmC,CAACE,MAAA,EAAQC,KAAA;IAC7CR,MAAA,CAAOG,qBAAA,CAAsB;MAAEK;IAAM,IAAIC,IAAI,CAAC;EAChD;AACF;AAEAV,QAAA,CAAS,8BAA8B;EACrCE,EAAA,CAAGI,IAAI,CAAC,CACN,CAAC,aAAaC,SAAA,CAAU,EACxB,CAAC,QAAQ,KAAK,CACf,EAAE,iCAAiC,CAACC,MAAA,EAAQC,KAAA;IAC3CR,MAAA,CAAOE,0BAAA,CAA2B;MAAEM;IAAM,IAAIE,aAAa;EAC7D;EAEAT,EAAA,CAAGI,IAAI,CAAC,CACN,CAAC,QAAQ,EAAE,EACX,CAAC,SAAS,MAAM,EAChB,CAAC,mBAAmB,GAAG,EACvB,CAAC,YAAY,UAAU,CACxB,EAAE,+BAA+B,CAACE,MAAA,EAAQC,KAAA;IACzCR,MAAA,CAAOE,0BAAA,CAA2B;MAAEM;IAAM,IAAIC,IAAI,CAACD,KAAA;EACrD;AACF;AAEAT,QAAA,CAAS,8BAA8B;EACrCE,EAAA,CAAG,4EAA4E;IAC7E;IACAD,MAAA,CACEI,0BAAA,CAA2B;MAAEO,aAAA,EAAeL,SAAA;MAAWM,WAAA,EAAa;MAAIC,IAAA,EAAM;IAAQ,IACtFJ,IAAI,CAAC;EACT;EAEAR,EAAA,CAAGI,IAAI,CAAC,CACN,CAAC,aAAa,mBAAmBC,SAAA,EAAW,GAAG,EAC/C,CAAC,QAAQ,aAAa,MAAMA,SAAA,CAAU,EACtC,CAAC,aAAa,aAAaA,SAAA,EAAWA,SAAA,CAAU,CACjD,EACC,uCACA,CAACQ,cAAA,EAAgBC,YAAA,EAAcJ,aAAA,EAAeC,WAAA;IAC5CZ,MAAA,CAAOI,0BAAA,CAA2B;MAAEO,aAAA;MAAeC,WAAA;MAAaC,IAAA,EAAM;IAAQ,IAAIJ,IAAI,CAAC;EACzF;EAGFR,EAAA,CAAG,iDAAiD;IAClDD,MAAA,CACEI,0BAAA,CAA2B;MAAEO,aAAA,EAAe;MAAWC,WAAA,EAAa;MAAIC,IAAA,EAAM;IAAQ,IACtFJ,IAAI,CAAC;EACT;EAEAR,EAAA,CAAG,wCAAwC;IACzCD,MAAA,CACEI,0BAAA,CAA2B;MACzBO,aAAA,EAAeL,SAAA;MACfM,WAAA,EAAa;MACbC,IAAA,EAAM;IACR,IACAJ,IAAI,CAAC;EACT;EAEAR,EAAA,CAAGI,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,WAAW,CAAC,EAC/B,wDACCQ,IAAA;IACCb,MAAA,CAAOI,0BAAA,CAA2B;MAAEO,aAAA,EAAeL,SAAA;MAAWM,WAAA,EAAa;MAAIC;IAAK,IAAIJ,IAAI,CAC1F;EAEJ;AAEJ","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"field-types.d.ts","sourceRoot":"","sources":["../../../src/elements/WhereBuilder/field-types.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAa1C,eAAO,MAAM,cAAc;;;GAS1B,CAAA;AA8DD,eAAO,MAAM,mBAAmB,EAAE;IAChC,CAAC,GAAG,EAAE,MAAM,GAAG;QACb,SAAS,EAAE,MAAM,CAAA;QACjB,SAAS,EAAE;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,EAAE,CAAA;KAC9C,CAAA;CA0DF,CAAA;AAED,eAAO,MAAM,sBAAsB,GAAI,sBAGpC;IACD,KAAK,EAAE,WAAW,CAAA;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB,KAAG;IACF,aAAa,EAAE,MAAM,CAAA;IACrB,cAAc,EAAE;QACd,KAAK,EAAE,MAAM,CAAA;QACb,KAAK,EAAE,MAAM,CAAA;KACd,EAAE,CAAA;CAqBJ,CAAA"}
1
+ {"version":3,"file":"field-types.d.ts","sourceRoot":"","sources":["../../../src/elements/WhereBuilder/field-types.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAa1C,eAAO,MAAM,cAAc;;;GAS1B,CAAA;AA8DD,eAAO,MAAM,mBAAmB,EAAE;IAChC,CAAC,GAAG,EAAE,MAAM,GAAG;QACb,SAAS,EAAE,MAAM,CAAA;QACjB,SAAS,EAAE;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,EAAE,CAAA;KAC9C,CAAA;CA0DF,CAAA;AAED,eAAO,MAAM,sBAAsB,yBAGhC;IACD,KAAK,EAAE,WAAW,CAAA;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB,KAAG;IACF,aAAa,EAAE,MAAM,CAAA;IACrB,cAAc,EAAE;QACd,KAAK,EAAE,MAAM,CAAA;QACb,KAAK,EAAE,MAAM,CAAA;KACd,EAAE,CAAA;CAqBJ,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/WhereBuilder/index.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAkB,MAAM,OAAO,CAAA;AAEtC,OAAO,KAAK,EAKV,iBAAiB,EAClB,MAAM,YAAY,CAAA;AAQnB,OAAO,aAAa,CAAA;AAKpB,OAAO,EAAE,iBAAiB,EAAE,CAAA;AAE5B;;;;;GAKG;AACH,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CAsRpD,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/WhereBuilder/index.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAkB,MAAM,OAAO,CAAA;AAEtC,OAAO,KAAK,EAKV,iBAAiB,EAClB,MAAM,YAAY,CAAA;AAanB,OAAO,aAAa,CAAA;AAKpB,OAAO,EAAE,iBAAiB,EAAE,CAAA;AAE5B;;;;;GAKG;AACH,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CA6RpD,CAAA"}
@@ -10,6 +10,7 @@ import { useTranslation } from '../../providers/Translation/index.js';
10
10
  import { reduceFieldsToOptions } from '../../utilities/reduceFieldsToOptions.js';
11
11
  import { Button } from '../Button/index.js';
12
12
  import { Condition } from './Condition/index.js';
13
+ import { getDisplayedConditionValue, isEmptyConditionValue, isNoOpConditionValueUpdate } from './conditionValue.js';
13
14
  import './index.css';
14
15
  import { fieldTypeConditions, getValidFieldOperators } from './field-types.js';
15
16
  const baseClass = 'where-builder';
@@ -92,9 +93,10 @@ export const WhereBuilder = props => {
92
93
  }) => {
93
94
  // Virtual first row: conditions not yet committed, build from scratch
94
95
  if (conditions.length === 0) {
95
- // Ignore empty value edits so a cleared row doesn't re-commit itself. Field and
96
- // operator picks carry empty values too, but must fall through to build the row.
97
- if (type === 'value' && (value_0 === undefined || value_0 === null || value_0 === '')) {
96
+ // Field and operator picks carry empty values too, but must fall through to build the row.
97
+ if (type === 'value' && isEmptyConditionValue({
98
+ value: value_0
99
+ })) {
98
100
  return;
99
101
  }
100
102
  const {
@@ -127,6 +129,13 @@ export const WhereBuilder = props => {
127
129
  if (typeof existingValue !== 'undefined' && existingValue === value_0) {
128
130
  return;
129
131
  }
132
+ if (isNoOpConditionValueUpdate({
133
+ type,
134
+ incomingValue: value_0,
135
+ storedValue: existingValue
136
+ })) {
137
+ return;
138
+ }
130
139
  const newRowCondition = {
131
140
  [String(field_0.fieldPath)]: {
132
141
  [validOperator_0]: value_0
@@ -250,7 +259,9 @@ export const WhereBuilder = props => {
250
259
  const condition = displayConditions[orIndex_3].and[andIndex_3];
251
260
  const fieldPath = Object.keys(condition)[0];
252
261
  const operator = Object.keys(condition?.[fieldPath] || {})?.[0] || undefined;
253
- const value_1 = condition?.[fieldPath]?.[operator] || undefined;
262
+ const value_1 = getDisplayedConditionValue({
263
+ value: condition?.[fieldPath]?.[operator]
264
+ });
254
265
  const isFirstCondition = orIndex_3 === 0 && andIndex_3 === 0;
255
266
  const join_0 = andIndex_3 === 0 ? 'or' : 'and';
256
267
  return /*#__PURE__*/_jsx(Condition, {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["dequal","isFieldDisabled","transformWhereQuery","validateWhereQuery","React","useMemo","CirclePlusIcon","useAuth","useTranslation","reduceFieldsToOptions","Button","Condition","fieldTypeConditions","getValidFieldOperators","baseClass","WhereBuilder","props","collectionSlug","fields","onChange","handleWhereChange","onEmptyRemove","renderedFilters","undefined","resolvedFilterOptions","value","i18n","t","permissions","fieldPermissions","collections","reducedFields","firstField","find","f","field","conditions","or","transformedWhere","addCondition","useCallback","andIndex","orIndex","relation","newConditions","structuredClone","defaultOperator","type","operators","and","splice","String","fieldPath","push","updateCondition","operator","incomingOperator","length","validOperator","existingCondition","existingValue","newRowCondition","removeCondition","updateJoin","join","flattened","forEach","orGroup","oIdx","cond","aIdx","isTarget","currentJoin","itemJoin","index","addFirstFilter","makeRow","displayConditions","disableRemoveButton","_jsx","className","_jsxs","map","compoundOrKey","Array","isArray","_","condition","Object","keys","isFirstCondition","filterOptions","get","RenderedFilter","buttonStyle","icon","size","iconPosition","onClick"],"sources":["../../../src/elements/WhereBuilder/index.tsx"],"sourcesContent":["'use client'\nimport type { Operator } from 'payload'\n\nimport { dequal } from 'dequal/lite'\nimport { isFieldDisabled, transformWhereQuery, validateWhereQuery } from 'payload/shared'\nimport React, { useMemo } from 'react'\n\nimport type {\n AddCondition,\n RemoveCondition,\n UpdateCondition,\n UpdateJoin,\n WhereBuilderProps,\n} from './types.js'\n\nimport { CirclePlusIcon } from '../../icons/CirclePlus/index.js'\nimport { useAuth } from '../../providers/Auth/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { reduceFieldsToOptions } from '../../utilities/reduceFieldsToOptions.js'\nimport { Button } from '../Button/index.js'\nimport { Condition } from './Condition/index.js'\nimport './index.css'\nimport { fieldTypeConditions, getValidFieldOperators } from './field-types.js'\n\nconst baseClass = 'where-builder'\n\nexport { WhereBuilderProps }\n\n/**\n * Presentational filter builder. It renders the conditions described by `value` and\n * reports edits through `onChange`. It is unaware of where its value is stored — the\n * list view wires it to list query state via {@link ListWhereBuilder}, and the Query\n * Presets drawer wires it to form state.\n */\nexport const WhereBuilder: React.FC<WhereBuilderProps> = (props) => {\n const {\n collectionSlug,\n fields,\n onChange: handleWhereChange,\n onEmptyRemove,\n renderedFilters = undefined,\n resolvedFilterOptions = undefined,\n value,\n } = props\n const { i18n, t } = useTranslation()\n const { permissions } = useAuth()\n\n const fieldPermissions = permissions?.collections?.[collectionSlug]?.fields\n\n const reducedFields = useMemo(\n () =>\n reduceFieldsToOptions({\n fieldPermissions,\n fields: fields ?? [],\n i18n,\n }),\n [fieldPermissions, fields, i18n],\n )\n\n const firstField = useMemo(\n () => reducedFields.find((f) => !isFieldDisabled(f.field, 'filter')),\n [reducedFields],\n )\n\n const conditions = useMemo(() => {\n if (value) {\n if (validateWhereQuery(value)) {\n return value.or ?? []\n }\n\n const transformedWhere = transformWhereQuery(value)\n if (validateWhereQuery(transformedWhere)) {\n return transformedWhere.or ?? []\n }\n }\n\n return []\n }, [value])\n\n const addCondition: AddCondition = React.useCallback(\n ({ andIndex, field, orIndex, relation }) => {\n const newConditions = structuredClone(conditions)\n\n const defaultOperator = fieldTypeConditions[field.field.type].operators[0].value\n\n if (relation === 'and') {\n newConditions[orIndex].and.splice(andIndex, 0, {\n [String(field.fieldPath)]: {\n [defaultOperator]: undefined,\n },\n })\n } else {\n newConditions.push({\n and: [\n {\n [String(field.fieldPath)]: {\n [defaultOperator]: undefined,\n },\n },\n ],\n })\n }\n\n void handleWhereChange({ or: newConditions })\n },\n [conditions, handleWhereChange],\n )\n\n const updateCondition: UpdateCondition = React.useCallback(\n ({ type, andIndex, field, operator: incomingOperator, orIndex, value }) => {\n // Virtual first row: conditions not yet committed, build from scratch\n if (conditions.length === 0) {\n // Ignore empty value edits so a cleared row doesn't re-commit itself. Field and\n // operator picks carry empty values too, but must fall through to build the row.\n if (type === 'value' && (value === undefined || value === null || value === '')) {\n return\n }\n\n const { validOperator } = getValidFieldOperators({\n field: field.field,\n operator: incomingOperator,\n })\n void handleWhereChange({\n or: [{ and: [{ [String(field.fieldPath)]: { [validOperator]: value } }] }],\n })\n return\n }\n\n const existingCondition = conditions[orIndex].and[andIndex]\n\n if (typeof existingCondition === 'object' && field?.fieldPath) {\n const { validOperator } = getValidFieldOperators({\n field: field.field,\n operator: incomingOperator,\n })\n\n // Skip if nothing changed\n const existingValue = existingCondition[String(field.fieldPath)]?.[validOperator]\n if (typeof existingValue !== 'undefined' && existingValue === value) {\n return\n }\n\n const newRowCondition = {\n [String(field.fieldPath)]: { [validOperator]: value },\n }\n\n if (dequal(existingCondition, newRowCondition)) {\n return\n }\n\n const newConditions = structuredClone(conditions)\n newConditions[orIndex].and[andIndex] = newRowCondition\n\n void handleWhereChange({ or: newConditions })\n }\n },\n [conditions, handleWhereChange],\n )\n\n const removeCondition: RemoveCondition = React.useCallback(\n ({ andIndex, orIndex }) => {\n // Virtual first row: removing it just closes the panel\n if (conditions.length === 0) {\n onEmptyRemove?.()\n return\n }\n\n const newConditions = structuredClone(conditions)\n newConditions[orIndex].and.splice(andIndex, 1)\n\n if (newConditions[orIndex].and.length === 0) {\n newConditions.splice(orIndex, 1)\n }\n\n void handleWhereChange({ or: newConditions })\n\n // Removing the last remaining condition closes the filters panel.\n if (newConditions.length === 0) {\n onEmptyRemove?.()\n }\n },\n [conditions, handleWhereChange, onEmptyRemove],\n )\n\n const updateJoin: UpdateJoin = React.useCallback(\n ({ andIndex, join, orIndex }) => {\n // Flatten the nested or/and structure into a single ordered list, tracking\n // the join relation that connects each condition to the previous one.\n const flattened: { cond: (typeof conditions)[number]['and'][number]; join: 'and' | 'or' }[] =\n []\n\n conditions.forEach((orGroup, oIdx) => {\n orGroup.and.forEach((cond, aIdx) => {\n const isTarget = oIdx === orIndex && aIdx === andIndex\n const currentJoin = flattened.length === 0 ? null : aIdx === 0 ? 'or' : 'and'\n\n flattened.push({ cond, join: isTarget ? join : currentJoin })\n })\n })\n\n // Rebuild the or/and structure from the flattened list using the join relations.\n const newConditions: typeof conditions = []\n\n flattened.forEach(({ cond, join: itemJoin }, index) => {\n if (index === 0 || itemJoin === 'or') {\n newConditions.push({ and: [cond] })\n } else {\n newConditions[newConditions.length - 1].and.push(cond)\n }\n })\n\n void handleWhereChange({ or: newConditions })\n },\n [conditions, handleWhereChange],\n )\n\n const addFirstFilter = React.useCallback(() => {\n if (!firstField) {\n return\n }\n\n // With no committed conditions, only the virtual placeholder row is shown. Commit it\n // and append a new row so a second row appears on the first click.\n if (conditions.length === 0) {\n const defaultOperator = firstField.operators[0].value\n const makeRow = () => ({\n and: [{ [String(firstField.fieldPath)]: { [defaultOperator]: undefined } }],\n })\n\n void handleWhereChange({ or: [makeRow(), makeRow()] })\n return\n }\n\n void addCondition({\n andIndex: 0,\n field: firstField,\n orIndex: conditions.length,\n relation: 'or',\n })\n }, [addCondition, conditions.length, firstField, handleWhereChange])\n\n // When conditions is empty, show a virtual first row so the panel never opens blank.\n const displayConditions =\n conditions.length === 0 && firstField\n ? ([\n { and: [{ [firstField.fieldPath]: { [firstField.operators[0].value]: undefined } }] },\n ] as typeof conditions)\n : conditions\n\n // Disable the remove button only when there are no committed conditions and this host\n // doesn't provide an empty-state removal handler.\n const disableRemoveButton = conditions.length === 0 && !onEmptyRemove\n\n return (\n <div className={baseClass}>\n <div className={`${baseClass}__or-filters`}>\n {displayConditions.map((or, orIndex) => {\n const compoundOrKey = `${orIndex}_${Array.isArray(or?.and) ? or.and.length : ''}`\n\n return (\n <div className={`${baseClass}__and-filters`} key={compoundOrKey}>\n {Array.isArray(or?.and) &&\n or.and.map((_, andIndex) => {\n const condition = displayConditions[orIndex].and[andIndex]\n const fieldPath = Object.keys(condition)[0]\n\n const operator =\n (Object.keys(condition?.[fieldPath] || {})?.[0] as Operator) || undefined\n\n const value = condition?.[fieldPath]?.[operator] || undefined\n\n const isFirstCondition = orIndex === 0 && andIndex === 0\n const join: 'and' | 'or' = andIndex === 0 ? 'or' : 'and'\n\n return (\n <Condition\n addCondition={addCondition}\n andIndex={andIndex}\n disableRemoveButton={disableRemoveButton}\n fieldPath={fieldPath}\n filterOptions={resolvedFilterOptions?.get(fieldPath)}\n isFirstCondition={isFirstCondition}\n join={join}\n key={andIndex}\n operator={operator}\n orIndex={orIndex}\n reducedFields={reducedFields}\n removeCondition={removeCondition}\n RenderedFilter={renderedFilters?.get(fieldPath)}\n updateCondition={updateCondition}\n updateJoin={updateJoin}\n value={value}\n />\n )\n })}\n </div>\n )\n })}\n <div className={`${baseClass}__add-or-row`}>\n <Button\n buttonStyle=\"ghost\"\n className={`${baseClass}__add-or`}\n icon={<CirclePlusIcon size={24} />}\n iconPosition=\"left\"\n onClick={addFirstFilter}\n >\n {t('general:addFilter')}\n </Button>\n </div>\n </div>\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["dequal","isFieldDisabled","transformWhereQuery","validateWhereQuery","React","useMemo","CirclePlusIcon","useAuth","useTranslation","reduceFieldsToOptions","Button","Condition","getDisplayedConditionValue","isEmptyConditionValue","isNoOpConditionValueUpdate","fieldTypeConditions","getValidFieldOperators","baseClass","WhereBuilder","props","collectionSlug","fields","onChange","handleWhereChange","onEmptyRemove","renderedFilters","undefined","resolvedFilterOptions","value","i18n","t","permissions","fieldPermissions","collections","reducedFields","firstField","find","f","field","conditions","or","transformedWhere","addCondition","useCallback","andIndex","orIndex","relation","newConditions","structuredClone","defaultOperator","type","operators","and","splice","String","fieldPath","push","updateCondition","operator","incomingOperator","length","validOperator","existingCondition","existingValue","incomingValue","storedValue","newRowCondition","removeCondition","updateJoin","join","flattened","forEach","orGroup","oIdx","cond","aIdx","isTarget","currentJoin","itemJoin","index","addFirstFilter","makeRow","displayConditions","disableRemoveButton","_jsx","className","_jsxs","map","compoundOrKey","Array","isArray","_","condition","Object","keys","isFirstCondition","filterOptions","get","RenderedFilter","buttonStyle","icon","size","iconPosition","onClick"],"sources":["../../../src/elements/WhereBuilder/index.tsx"],"sourcesContent":["'use client'\nimport type { Operator } from 'payload'\n\nimport { dequal } from 'dequal/lite'\nimport { isFieldDisabled, transformWhereQuery, validateWhereQuery } from 'payload/shared'\nimport React, { useMemo } from 'react'\n\nimport type {\n AddCondition,\n RemoveCondition,\n UpdateCondition,\n UpdateJoin,\n WhereBuilderProps,\n} from './types.js'\n\nimport { CirclePlusIcon } from '../../icons/CirclePlus/index.js'\nimport { useAuth } from '../../providers/Auth/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { reduceFieldsToOptions } from '../../utilities/reduceFieldsToOptions.js'\nimport { Button } from '../Button/index.js'\nimport { Condition } from './Condition/index.js'\nimport {\n getDisplayedConditionValue,\n isEmptyConditionValue,\n isNoOpConditionValueUpdate,\n} from './conditionValue.js'\nimport './index.css'\nimport { fieldTypeConditions, getValidFieldOperators } from './field-types.js'\n\nconst baseClass = 'where-builder'\n\nexport { WhereBuilderProps }\n\n/**\n * Presentational filter builder. It renders the conditions described by `value` and\n * reports edits through `onChange`. It is unaware of where its value is stored — the\n * list view wires it to list query state via {@link ListWhereBuilder}, and the Query\n * Presets drawer wires it to form state.\n */\nexport const WhereBuilder: React.FC<WhereBuilderProps> = (props) => {\n const {\n collectionSlug,\n fields,\n onChange: handleWhereChange,\n onEmptyRemove,\n renderedFilters = undefined,\n resolvedFilterOptions = undefined,\n value,\n } = props\n const { i18n, t } = useTranslation()\n const { permissions } = useAuth()\n\n const fieldPermissions = permissions?.collections?.[collectionSlug]?.fields\n\n const reducedFields = useMemo(\n () =>\n reduceFieldsToOptions({\n fieldPermissions,\n fields: fields ?? [],\n i18n,\n }),\n [fieldPermissions, fields, i18n],\n )\n\n const firstField = useMemo(\n () => reducedFields.find((f) => !isFieldDisabled(f.field, 'filter')),\n [reducedFields],\n )\n\n const conditions = useMemo(() => {\n if (value) {\n if (validateWhereQuery(value)) {\n return value.or ?? []\n }\n\n const transformedWhere = transformWhereQuery(value)\n if (validateWhereQuery(transformedWhere)) {\n return transformedWhere.or ?? []\n }\n }\n\n return []\n }, [value])\n\n const addCondition: AddCondition = React.useCallback(\n ({ andIndex, field, orIndex, relation }) => {\n const newConditions = structuredClone(conditions)\n\n const defaultOperator = fieldTypeConditions[field.field.type].operators[0].value\n\n if (relation === 'and') {\n newConditions[orIndex].and.splice(andIndex, 0, {\n [String(field.fieldPath)]: {\n [defaultOperator]: undefined,\n },\n })\n } else {\n newConditions.push({\n and: [\n {\n [String(field.fieldPath)]: {\n [defaultOperator]: undefined,\n },\n },\n ],\n })\n }\n\n void handleWhereChange({ or: newConditions })\n },\n [conditions, handleWhereChange],\n )\n\n const updateCondition: UpdateCondition = React.useCallback(\n ({ type, andIndex, field, operator: incomingOperator, orIndex, value }) => {\n // Virtual first row: conditions not yet committed, build from scratch\n if (conditions.length === 0) {\n // Field and operator picks carry empty values too, but must fall through to build the row.\n if (type === 'value' && isEmptyConditionValue({ value })) {\n return\n }\n\n const { validOperator } = getValidFieldOperators({\n field: field.field,\n operator: incomingOperator,\n })\n void handleWhereChange({\n or: [{ and: [{ [String(field.fieldPath)]: { [validOperator]: value } }] }],\n })\n return\n }\n\n const existingCondition = conditions[orIndex].and[andIndex]\n\n if (typeof existingCondition === 'object' && field?.fieldPath) {\n const { validOperator } = getValidFieldOperators({\n field: field.field,\n operator: incomingOperator,\n })\n\n // Skip if nothing changed\n const existingValue = existingCondition[String(field.fieldPath)]?.[validOperator]\n if (typeof existingValue !== 'undefined' && existingValue === value) {\n return\n }\n\n if (\n isNoOpConditionValueUpdate({ type, incomingValue: value, storedValue: existingValue })\n ) {\n return\n }\n\n const newRowCondition = {\n [String(field.fieldPath)]: { [validOperator]: value },\n }\n\n if (dequal(existingCondition, newRowCondition)) {\n return\n }\n\n const newConditions = structuredClone(conditions)\n newConditions[orIndex].and[andIndex] = newRowCondition\n\n void handleWhereChange({ or: newConditions })\n }\n },\n [conditions, handleWhereChange],\n )\n\n const removeCondition: RemoveCondition = React.useCallback(\n ({ andIndex, orIndex }) => {\n // Virtual first row: removing it just closes the panel\n if (conditions.length === 0) {\n onEmptyRemove?.()\n return\n }\n\n const newConditions = structuredClone(conditions)\n newConditions[orIndex].and.splice(andIndex, 1)\n\n if (newConditions[orIndex].and.length === 0) {\n newConditions.splice(orIndex, 1)\n }\n\n void handleWhereChange({ or: newConditions })\n\n // Removing the last remaining condition closes the filters panel.\n if (newConditions.length === 0) {\n onEmptyRemove?.()\n }\n },\n [conditions, handleWhereChange, onEmptyRemove],\n )\n\n const updateJoin: UpdateJoin = React.useCallback(\n ({ andIndex, join, orIndex }) => {\n // Flatten the nested or/and structure into a single ordered list, tracking\n // the join relation that connects each condition to the previous one.\n const flattened: { cond: (typeof conditions)[number]['and'][number]; join: 'and' | 'or' }[] =\n []\n\n conditions.forEach((orGroup, oIdx) => {\n orGroup.and.forEach((cond, aIdx) => {\n const isTarget = oIdx === orIndex && aIdx === andIndex\n const currentJoin = flattened.length === 0 ? null : aIdx === 0 ? 'or' : 'and'\n\n flattened.push({ cond, join: isTarget ? join : currentJoin })\n })\n })\n\n // Rebuild the or/and structure from the flattened list using the join relations.\n const newConditions: typeof conditions = []\n\n flattened.forEach(({ cond, join: itemJoin }, index) => {\n if (index === 0 || itemJoin === 'or') {\n newConditions.push({ and: [cond] })\n } else {\n newConditions[newConditions.length - 1].and.push(cond)\n }\n })\n\n void handleWhereChange({ or: newConditions })\n },\n [conditions, handleWhereChange],\n )\n\n const addFirstFilter = React.useCallback(() => {\n if (!firstField) {\n return\n }\n\n // With no committed conditions, only the virtual placeholder row is shown. Commit it\n // and append a new row so a second row appears on the first click.\n if (conditions.length === 0) {\n const defaultOperator = firstField.operators[0].value\n const makeRow = () => ({\n and: [{ [String(firstField.fieldPath)]: { [defaultOperator]: undefined } }],\n })\n\n void handleWhereChange({ or: [makeRow(), makeRow()] })\n return\n }\n\n void addCondition({\n andIndex: 0,\n field: firstField,\n orIndex: conditions.length,\n relation: 'or',\n })\n }, [addCondition, conditions.length, firstField, handleWhereChange])\n\n // When conditions is empty, show a virtual first row so the panel never opens blank.\n const displayConditions =\n conditions.length === 0 && firstField\n ? ([\n { and: [{ [firstField.fieldPath]: { [firstField.operators[0].value]: undefined } }] },\n ] as typeof conditions)\n : conditions\n\n // Disable the remove button only when there are no committed conditions and this host\n // doesn't provide an empty-state removal handler.\n const disableRemoveButton = conditions.length === 0 && !onEmptyRemove\n\n return (\n <div className={baseClass}>\n <div className={`${baseClass}__or-filters`}>\n {displayConditions.map((or, orIndex) => {\n const compoundOrKey = `${orIndex}_${Array.isArray(or?.and) ? or.and.length : ''}`\n\n return (\n <div className={`${baseClass}__and-filters`} key={compoundOrKey}>\n {Array.isArray(or?.and) &&\n or.and.map((_, andIndex) => {\n const condition = displayConditions[orIndex].and[andIndex]\n const fieldPath = Object.keys(condition)[0]\n\n const operator =\n (Object.keys(condition?.[fieldPath] || {})?.[0] as Operator) || undefined\n\n const value = getDisplayedConditionValue({\n value: condition?.[fieldPath]?.[operator],\n })\n\n const isFirstCondition = orIndex === 0 && andIndex === 0\n const join: 'and' | 'or' = andIndex === 0 ? 'or' : 'and'\n\n return (\n <Condition\n addCondition={addCondition}\n andIndex={andIndex}\n disableRemoveButton={disableRemoveButton}\n fieldPath={fieldPath}\n filterOptions={resolvedFilterOptions?.get(fieldPath)}\n isFirstCondition={isFirstCondition}\n join={join}\n key={andIndex}\n operator={operator}\n orIndex={orIndex}\n reducedFields={reducedFields}\n removeCondition={removeCondition}\n RenderedFilter={renderedFilters?.get(fieldPath)}\n updateCondition={updateCondition}\n updateJoin={updateJoin}\n value={value}\n />\n )\n })}\n </div>\n )\n })}\n <div className={`${baseClass}__add-or-row`}>\n <Button\n buttonStyle=\"ghost\"\n className={`${baseClass}__add-or`}\n icon={<CirclePlusIcon size={24} />}\n iconPosition=\"left\"\n onClick={addFirstFilter}\n >\n {t('general:addFilter')}\n </Button>\n </div>\n </div>\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}