@payloadcms/ui 3.0.0-alpha.60 → 3.0.0-alpha.61

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 (399) hide show
  1. package/dist/@types/assets.d.js.map +1 -1
  2. package/dist/assets/index.js.map +1 -1
  3. package/dist/elements/AppHeader/index.js.map +1 -1
  4. package/dist/elements/ArrayAction/index.js.map +1 -1
  5. package/dist/elements/Autosave/index.js +4 -1
  6. package/dist/elements/Autosave/index.js.map +1 -1
  7. package/dist/elements/Banner/index.js.map +1 -1
  8. package/dist/elements/Button/index.js.map +1 -1
  9. package/dist/elements/Button/types.js.map +1 -1
  10. package/dist/elements/Card/index.js.map +1 -1
  11. package/dist/elements/CodeEditor/CodeEditor.js.map +1 -1
  12. package/dist/elements/CodeEditor/index.js.map +1 -1
  13. package/dist/elements/CodeEditor/types.js.map +1 -1
  14. package/dist/elements/Collapsible/index.js.map +1 -1
  15. package/dist/elements/Collapsible/provider.js.map +1 -1
  16. package/dist/elements/ColumnSelector/index.js.map +1 -1
  17. package/dist/elements/CopyToClipboard/index.js.map +1 -1
  18. package/dist/elements/DatePicker/DatePicker.js +4 -4
  19. package/dist/elements/DatePicker/DatePicker.js.map +1 -1
  20. package/dist/elements/DatePicker/getFormattedLocale.d.ts +2 -0
  21. package/dist/elements/DatePicker/getFormattedLocale.d.ts.map +1 -0
  22. package/dist/elements/DatePicker/getFormattedLocale.js +12 -0
  23. package/dist/elements/DatePicker/getFormattedLocale.js.map +1 -0
  24. package/dist/elements/DatePicker/index.js.map +1 -1
  25. package/dist/elements/DatePicker/types.js.map +1 -1
  26. package/dist/elements/DeleteDocument/index.js.map +1 -1
  27. package/dist/elements/DeleteMany/index.js.map +1 -1
  28. package/dist/elements/DocumentControls/index.d.ts.map +1 -1
  29. package/dist/elements/DocumentControls/index.js +20 -4
  30. package/dist/elements/DocumentControls/index.js.map +1 -1
  31. package/dist/elements/DocumentDrawer/DrawerContent.js.map +1 -1
  32. package/dist/elements/DocumentDrawer/index.js.map +1 -1
  33. package/dist/elements/DocumentDrawer/types.js.map +1 -1
  34. package/dist/elements/DocumentFields/index.js.map +1 -1
  35. package/dist/elements/DocumentHeader/Tabs/ShouldRenderTabs.js.map +1 -1
  36. package/dist/elements/DocumentHeader/Tabs/Tab/TabLink.js.map +1 -1
  37. package/dist/elements/DocumentHeader/Tabs/Tab/index.js.map +1 -1
  38. package/dist/elements/DocumentHeader/Tabs/getCustomViews.js.map +1 -1
  39. package/dist/elements/DocumentHeader/Tabs/getViewConfig.js.map +1 -1
  40. package/dist/elements/DocumentHeader/Tabs/index.js.map +1 -1
  41. package/dist/elements/DocumentHeader/Tabs/tabs/VersionsPill/index.js.map +1 -1
  42. package/dist/elements/DocumentHeader/Tabs/tabs/index.js.map +1 -1
  43. package/dist/elements/DocumentHeader/index.js.map +1 -1
  44. package/dist/elements/DraggableSortable/DraggableSortableItem/index.js.map +1 -1
  45. package/dist/elements/DraggableSortable/DraggableSortableItem/types.js.map +1 -1
  46. package/dist/elements/DraggableSortable/index.js.map +1 -1
  47. package/dist/elements/DraggableSortable/types.js.map +1 -1
  48. package/dist/elements/DraggableSortable/useDraggableSortable/index.js.map +1 -1
  49. package/dist/elements/DraggableSortable/useDraggableSortable/types.js.map +1 -1
  50. package/dist/elements/Drawer/index.js.map +1 -1
  51. package/dist/elements/Drawer/types.js.map +1 -1
  52. package/dist/elements/Drawer/useDrawerSlug.js.map +1 -1
  53. package/dist/elements/Dropzone/index.js.map +1 -1
  54. package/dist/elements/DuplicateDocument/index.js.map +1 -1
  55. package/dist/elements/EditMany/index.js.map +1 -1
  56. package/dist/elements/EditUpload/index.js.map +1 -1
  57. package/dist/elements/ErrorPill/index.js.map +1 -1
  58. package/dist/elements/FieldSelect/index.js.map +1 -1
  59. package/dist/elements/FileDetails/FileMeta/index.js.map +1 -1
  60. package/dist/elements/FileDetails/index.js.map +1 -1
  61. package/dist/elements/GenerateConfirmation/index.js.map +1 -1
  62. package/dist/elements/Gutter/index.js.map +1 -1
  63. package/dist/elements/Hamburger/index.js.map +1 -1
  64. package/dist/elements/HydrateClientUser/index.js.map +1 -1
  65. package/dist/elements/IDLabel/index.js.map +1 -1
  66. package/dist/elements/ListControls/getTextFieldsToBeSearched.js.map +1 -1
  67. package/dist/elements/ListControls/index.js.map +1 -1
  68. package/dist/elements/ListDrawer/DrawerContent.js.map +1 -1
  69. package/dist/elements/ListDrawer/index.js.map +1 -1
  70. package/dist/elements/ListDrawer/types.js.map +1 -1
  71. package/dist/elements/ListSelection/index.js.map +1 -1
  72. package/dist/elements/Loading/index.js.map +1 -1
  73. package/dist/elements/LoadingOverlay/index.js.map +1 -1
  74. package/dist/elements/LoadingOverlay/reducer.js.map +1 -1
  75. package/dist/elements/LoadingOverlay/types.js.map +1 -1
  76. package/dist/elements/Localizer/LocalizerLabel/index.js.map +1 -1
  77. package/dist/elements/Localizer/index.js.map +1 -1
  78. package/dist/elements/Logout/index.js.map +1 -1
  79. package/dist/elements/Modal/index.js.map +1 -1
  80. package/dist/elements/Nav/NavHamburger/index.js.map +1 -1
  81. package/dist/elements/Nav/NavToggler/index.js.map +1 -1
  82. package/dist/elements/Nav/NavWrapper/index.js.map +1 -1
  83. package/dist/elements/Nav/context.js.map +1 -1
  84. package/dist/elements/Nav/index.client.js.map +1 -1
  85. package/dist/elements/Nav/index.js.map +1 -1
  86. package/dist/elements/NavGroup/index.js.map +1 -1
  87. package/dist/elements/Pagination/ClickableArrow/index.js.map +1 -1
  88. package/dist/elements/Pagination/Page/index.js.map +1 -1
  89. package/dist/elements/Pagination/Separator/index.js.map +1 -1
  90. package/dist/elements/Pagination/index.js.map +1 -1
  91. package/dist/elements/PerPage/index.js.map +1 -1
  92. package/dist/elements/Pill/index.js.map +1 -1
  93. package/dist/elements/Popup/PopupButtonList/index.js.map +1 -1
  94. package/dist/elements/Popup/PopupTrigger/index.js.map +1 -1
  95. package/dist/elements/Popup/PopupTrigger/types.js.map +1 -1
  96. package/dist/elements/Popup/index.js.map +1 -1
  97. package/dist/elements/PreviewButton/index.js.map +1 -1
  98. package/dist/elements/PreviewButton/usePreviewURL.js.map +1 -1
  99. package/dist/elements/PreviewSizes/index.js.map +1 -1
  100. package/dist/elements/Publish/index.js.map +1 -1
  101. package/dist/elements/PublishMany/index.js.map +1 -1
  102. package/dist/elements/ReactSelect/ClearIndicator/index.js.map +1 -1
  103. package/dist/elements/ReactSelect/Control/index.js.map +1 -1
  104. package/dist/elements/ReactSelect/MultiValue/index.js.map +1 -1
  105. package/dist/elements/ReactSelect/MultiValueLabel/index.js.map +1 -1
  106. package/dist/elements/ReactSelect/MultiValueRemove/index.js.map +1 -1
  107. package/dist/elements/ReactSelect/SingleValue/index.js.map +1 -1
  108. package/dist/elements/ReactSelect/ValueContainer/index.js.map +1 -1
  109. package/dist/elements/ReactSelect/index.js.map +1 -1
  110. package/dist/elements/ReactSelect/types.js.map +1 -1
  111. package/dist/elements/RenderCustomComponent/index.js.map +1 -1
  112. package/dist/elements/RenderTitle/index.js.map +1 -1
  113. package/dist/elements/Save/index.js.map +1 -1
  114. package/dist/elements/SaveDraft/index.js.map +1 -1
  115. package/dist/elements/SearchFilter/index.js.map +1 -1
  116. package/dist/elements/SelectAll/index.js.map +1 -1
  117. package/dist/elements/SelectRow/index.js.map +1 -1
  118. package/dist/elements/ShimmerEffect/index.js.map +1 -1
  119. package/dist/elements/SortColumn/index.js.map +1 -1
  120. package/dist/elements/SortComplex/index.js.map +1 -1
  121. package/dist/elements/Status/index.js.map +1 -1
  122. package/dist/elements/StayLoggedIn/index.js.map +1 -1
  123. package/dist/elements/StepNav/SetStepNav.js.map +1 -1
  124. package/dist/elements/StepNav/index.d.ts +2 -1
  125. package/dist/elements/StepNav/index.d.ts.map +1 -1
  126. package/dist/elements/StepNav/index.js.map +1 -1
  127. package/dist/elements/Table/DefaultCell/fields/Array/index.js.map +1 -1
  128. package/dist/elements/Table/DefaultCell/fields/Blocks/index.js.map +1 -1
  129. package/dist/elements/Table/DefaultCell/fields/Checkbox/index.js.map +1 -1
  130. package/dist/elements/Table/DefaultCell/fields/Code/index.js.map +1 -1
  131. package/dist/elements/Table/DefaultCell/fields/Date/index.js +5 -1
  132. package/dist/elements/Table/DefaultCell/fields/Date/index.js.map +1 -1
  133. package/dist/elements/Table/DefaultCell/fields/File/index.js.map +1 -1
  134. package/dist/elements/Table/DefaultCell/fields/JSON/index.js.map +1 -1
  135. package/dist/elements/Table/DefaultCell/fields/Relationship/index.js.map +1 -1
  136. package/dist/elements/Table/DefaultCell/fields/Select/index.js.map +1 -1
  137. package/dist/elements/Table/DefaultCell/fields/Textarea/index.js.map +1 -1
  138. package/dist/elements/Table/DefaultCell/fields/index.js.map +1 -1
  139. package/dist/elements/Table/DefaultCell/index.js.map +1 -1
  140. package/dist/elements/Table/RelationshipProvider/index.js.map +1 -1
  141. package/dist/elements/Table/RelationshipProvider/reducer.js.map +1 -1
  142. package/dist/elements/Table/TableCellProvider/index.js.map +1 -1
  143. package/dist/elements/Table/index.js.map +1 -1
  144. package/dist/elements/TableColumns/buildColumnState.js.map +1 -1
  145. package/dist/elements/TableColumns/columnReducer.js.map +1 -1
  146. package/dist/elements/TableColumns/filterFields.js.map +1 -1
  147. package/dist/elements/TableColumns/getInitialColumns.js.map +1 -1
  148. package/dist/elements/TableColumns/index.js.map +1 -1
  149. package/dist/elements/Thumbnail/index.js.map +1 -1
  150. package/dist/elements/ThumbnailCard/index.js.map +1 -1
  151. package/dist/elements/Tooltip/index.js.map +1 -1
  152. package/dist/elements/Translation/index.js.map +1 -1
  153. package/dist/elements/UnpublishMany/index.js.map +1 -1
  154. package/dist/elements/Upload/index.js.map +1 -1
  155. package/dist/elements/ViewDescription/index.js.map +1 -1
  156. package/dist/elements/ViewDescription/types.js.map +1 -1
  157. package/dist/elements/WhereBuilder/Condition/Date/index.js.map +1 -1
  158. package/dist/elements/WhereBuilder/Condition/Date/types.js.map +1 -1
  159. package/dist/elements/WhereBuilder/Condition/Number/index.js.map +1 -1
  160. package/dist/elements/WhereBuilder/Condition/Number/types.js.map +1 -1
  161. package/dist/elements/WhereBuilder/Condition/Relationship/index.js.map +1 -1
  162. package/dist/elements/WhereBuilder/Condition/Relationship/optionsReducer.js.map +1 -1
  163. package/dist/elements/WhereBuilder/Condition/Relationship/types.js.map +1 -1
  164. package/dist/elements/WhereBuilder/Condition/Select/index.js.map +1 -1
  165. package/dist/elements/WhereBuilder/Condition/Select/types.js.map +1 -1
  166. package/dist/elements/WhereBuilder/Condition/Text/index.js.map +1 -1
  167. package/dist/elements/WhereBuilder/Condition/Text/types.js.map +1 -1
  168. package/dist/elements/WhereBuilder/Condition/index.js.map +1 -1
  169. package/dist/elements/WhereBuilder/Condition/types.js.map +1 -1
  170. package/dist/elements/WhereBuilder/field-types.js.map +1 -1
  171. package/dist/elements/WhereBuilder/index.js.map +1 -1
  172. package/dist/elements/WhereBuilder/reduceFieldMap.js.map +1 -1
  173. package/dist/elements/WhereBuilder/transformWhereQuery.js.map +1 -1
  174. package/dist/elements/WhereBuilder/types.js.map +1 -1
  175. package/dist/elements/WhereBuilder/validateWhereQuery.js.map +1 -1
  176. package/dist/elements/WindowInfo/index.js.map +1 -1
  177. package/dist/elements/withMergedProps/index.js.map +1 -1
  178. package/dist/exports/elements.js.map +1 -1
  179. package/dist/fields/Array/ArrayRow.js.map +1 -1
  180. package/dist/fields/Array/index.js.map +1 -1
  181. package/dist/fields/Blocks/BlockRow.js.map +1 -1
  182. package/dist/fields/Blocks/BlocksDrawer/BlockSearch/index.js.map +1 -1
  183. package/dist/fields/Blocks/BlocksDrawer/index.js.map +1 -1
  184. package/dist/fields/Blocks/RowActions.js.map +1 -1
  185. package/dist/fields/Blocks/SectionTitle/index.js.map +1 -1
  186. package/dist/fields/Blocks/index.js.map +1 -1
  187. package/dist/fields/Checkbox/Input.js.map +1 -1
  188. package/dist/fields/Checkbox/index.js.map +1 -1
  189. package/dist/fields/Checkbox/types.js.map +1 -1
  190. package/dist/fields/Code/index.js.map +1 -1
  191. package/dist/fields/Collapsible/index.js.map +1 -1
  192. package/dist/fields/ConfirmPassword/index.js.map +1 -1
  193. package/dist/fields/DateTime/index.js.map +1 -1
  194. package/dist/fields/Email/index.js.map +1 -1
  195. package/dist/fields/Group/index.js.map +1 -1
  196. package/dist/fields/Group/provider.js.map +1 -1
  197. package/dist/fields/HiddenInput/index.js.map +1 -1
  198. package/dist/fields/JSON/index.js.map +1 -1
  199. package/dist/fields/Number/index.js.map +1 -1
  200. package/dist/fields/Password/index.js.map +1 -1
  201. package/dist/fields/Point/index.js.map +1 -1
  202. package/dist/fields/RadioGroup/Radio/index.js.map +1 -1
  203. package/dist/fields/RadioGroup/index.js.map +1 -1
  204. package/dist/fields/Relationship/AddNew/index.js.map +1 -1
  205. package/dist/fields/Relationship/AddNew/types.js.map +1 -1
  206. package/dist/fields/Relationship/AddNew/useRelatedCollections.js.map +1 -1
  207. package/dist/fields/Relationship/createRelationMap.js.map +1 -1
  208. package/dist/fields/Relationship/findOptionsByValue.js.map +1 -1
  209. package/dist/fields/Relationship/index.js.map +1 -1
  210. package/dist/fields/Relationship/optionsReducer.js.map +1 -1
  211. package/dist/fields/Relationship/select-components/MultiValueLabel/index.js.map +1 -1
  212. package/dist/fields/Relationship/select-components/SingleValue/index.js.map +1 -1
  213. package/dist/fields/Relationship/types.js.map +1 -1
  214. package/dist/fields/RichText/index.js.map +1 -1
  215. package/dist/fields/Row/index.js.map +1 -1
  216. package/dist/fields/Row/provider.js.map +1 -1
  217. package/dist/fields/Row/types.js.map +1 -1
  218. package/dist/fields/Select/index.js.map +1 -1
  219. package/dist/fields/Tabs/Tab/index.js.map +1 -1
  220. package/dist/fields/Tabs/index.js.map +1 -1
  221. package/dist/fields/Tabs/provider.js.map +1 -1
  222. package/dist/fields/Text/Input.js.map +1 -1
  223. package/dist/fields/Text/index.js.map +1 -1
  224. package/dist/fields/Text/types.js.map +1 -1
  225. package/dist/fields/Textarea/Input.js.map +1 -1
  226. package/dist/fields/Textarea/index.js.map +1 -1
  227. package/dist/fields/Textarea/types.js.map +1 -1
  228. package/dist/fields/UI/index.js.map +1 -1
  229. package/dist/fields/Upload/Input.js.map +1 -1
  230. package/dist/fields/Upload/index.js.map +1 -1
  231. package/dist/fields/Upload/types.js.map +1 -1
  232. package/dist/fields/index.js.map +1 -1
  233. package/dist/fields/shared/index.js.map +1 -1
  234. package/dist/forms/FieldDescription/index.js.map +1 -1
  235. package/dist/forms/FieldError/index.js.map +1 -1
  236. package/dist/forms/FieldLabel/index.js.map +1 -1
  237. package/dist/forms/FieldPropsProvider/index.js.map +1 -1
  238. package/dist/forms/Form/context.js.map +1 -1
  239. package/dist/forms/Form/createNestedFieldPath.js.map +1 -1
  240. package/dist/forms/Form/errorMessages.js.map +1 -1
  241. package/dist/forms/Form/fieldReducer.d.ts.map +1 -1
  242. package/dist/forms/Form/fieldReducer.js +53 -0
  243. package/dist/forms/Form/fieldReducer.js.map +1 -1
  244. package/dist/forms/Form/getDataByPath.js.map +1 -1
  245. package/dist/forms/Form/getSiblingData.js.map +1 -1
  246. package/dist/forms/Form/index.d.ts.map +1 -1
  247. package/dist/forms/Form/index.js +3 -8
  248. package/dist/forms/Form/index.js.map +1 -1
  249. package/dist/forms/Form/initContextState.js.map +1 -1
  250. package/dist/forms/Form/mergeErrorPaths.js.map +1 -1
  251. package/dist/forms/Form/mergeServerFormState.js.map +1 -1
  252. package/dist/forms/Form/rows.js.map +1 -1
  253. package/dist/forms/Form/types.d.ts +8 -1
  254. package/dist/forms/Form/types.d.ts.map +1 -1
  255. package/dist/forms/Form/types.js.map +1 -1
  256. package/dist/forms/NullifyField/index.js.map +1 -1
  257. package/dist/forms/RenderFields/RenderField.js.map +1 -1
  258. package/dist/forms/RenderFields/index.js.map +1 -1
  259. package/dist/forms/RenderFields/types.js.map +1 -1
  260. package/dist/forms/RowLabel/Context/index.js.map +1 -1
  261. package/dist/forms/RowLabel/index.js.map +1 -1
  262. package/dist/forms/RowLabel/types.js.map +1 -1
  263. package/dist/forms/Submit/index.js.map +1 -1
  264. package/dist/forms/WatchChildErrors/buildPathSegments.js.map +1 -1
  265. package/dist/forms/WatchChildErrors/getFieldStateFromPaths.js.map +1 -1
  266. package/dist/forms/WatchChildErrors/getNestedFieldState.js.map +1 -1
  267. package/dist/forms/WatchChildErrors/index.js.map +1 -1
  268. package/dist/forms/buildStateFromSchema/addFieldStatePromise.js.map +1 -1
  269. package/dist/forms/buildStateFromSchema/buildStateFromSchema.spec.js.map +1 -1
  270. package/dist/forms/buildStateFromSchema/calculateDefaultValues/index.js.map +1 -1
  271. package/dist/forms/buildStateFromSchema/calculateDefaultValues/iterateFields.js.map +1 -1
  272. package/dist/forms/buildStateFromSchema/calculateDefaultValues/promise.js.map +1 -1
  273. package/dist/forms/buildStateFromSchema/getFilterOptionsQuery.js.map +1 -1
  274. package/dist/forms/buildStateFromSchema/index.js.map +1 -1
  275. package/dist/forms/buildStateFromSchema/iterateFields.js.map +1 -1
  276. package/dist/forms/useField/index.js.map +1 -1
  277. package/dist/forms/useField/types.js.map +1 -1
  278. package/dist/forms/withCondition/WatchCondition.js.map +1 -1
  279. package/dist/forms/withCondition/index.js.map +1 -1
  280. package/dist/graphics/Account/Default/index.js.map +1 -1
  281. package/dist/graphics/Account/Gravatar/index.js.map +1 -1
  282. package/dist/graphics/Account/index.js.map +1 -1
  283. package/dist/graphics/DefaultBlockImage/index.js.map +1 -1
  284. package/dist/graphics/ExternalLink/index.js.map +1 -1
  285. package/dist/graphics/File/index.js.map +1 -1
  286. package/dist/graphics/Icon/index.js.map +1 -1
  287. package/dist/graphics/Logo/index.js.map +1 -1
  288. package/dist/graphics/Search/index.js.map +1 -1
  289. package/dist/hooks/useDebounce.js.map +1 -1
  290. package/dist/hooks/useDebouncedCallback.js.map +1 -1
  291. package/dist/hooks/useDebouncedEffect.js.map +1 -1
  292. package/dist/hooks/useDelay.js.map +1 -1
  293. package/dist/hooks/useDelayedRender.js.map +1 -1
  294. package/dist/hooks/useHotkey.js.map +1 -1
  295. package/dist/hooks/useIntersect.js.map +1 -1
  296. package/dist/hooks/usePayloadAPI.js.map +1 -1
  297. package/dist/hooks/useResize.js.map +1 -1
  298. package/dist/hooks/useThrottledEffect.js.map +1 -1
  299. package/dist/hooks/useUseAsTitle.js.map +1 -1
  300. package/dist/icons/Calendar/index.js.map +1 -1
  301. package/dist/icons/Check/index.js.map +1 -1
  302. package/dist/icons/Chevron/index.js.map +1 -1
  303. package/dist/icons/CloseMenu/index.js.map +1 -1
  304. package/dist/icons/CodeBlock/index.js.map +1 -1
  305. package/dist/icons/Copy/index.js.map +1 -1
  306. package/dist/icons/DragHandle/index.js.map +1 -1
  307. package/dist/icons/Edit/index.js.map +1 -1
  308. package/dist/icons/Line/index.js.map +1 -1
  309. package/dist/icons/Link/index.js.map +1 -1
  310. package/dist/icons/LogOut/index.js.map +1 -1
  311. package/dist/icons/Menu/index.js.map +1 -1
  312. package/dist/icons/MinimizeMaximize/index.js.map +1 -1
  313. package/dist/icons/More/index.js.map +1 -1
  314. package/dist/icons/Plus/index.js.map +1 -1
  315. package/dist/icons/Search/index.js.map +1 -1
  316. package/dist/icons/Swap/index.js.map +1 -1
  317. package/dist/icons/X/index.js.map +1 -1
  318. package/dist/providers/Actions/SetViewActions/index.js.map +1 -1
  319. package/dist/providers/Actions/index.js.map +1 -1
  320. package/dist/providers/Auth/index.js.map +1 -1
  321. package/dist/providers/ClientFunction/index.js.map +1 -1
  322. package/dist/providers/ComponentMap/buildComponentMap/actions.js.map +1 -1
  323. package/dist/providers/ComponentMap/buildComponentMap/collections.d.ts +3 -1
  324. package/dist/providers/ComponentMap/buildComponentMap/collections.d.ts.map +1 -1
  325. package/dist/providers/ComponentMap/buildComponentMap/collections.js +2 -1
  326. package/dist/providers/ComponentMap/buildComponentMap/collections.js.map +1 -1
  327. package/dist/providers/ComponentMap/buildComponentMap/fields.d.ts +2 -0
  328. package/dist/providers/ComponentMap/buildComponentMap/fields.d.ts.map +1 -1
  329. package/dist/providers/ComponentMap/buildComponentMap/fields.js +30 -7
  330. package/dist/providers/ComponentMap/buildComponentMap/fields.js.map +1 -1
  331. package/dist/providers/ComponentMap/buildComponentMap/globals.d.ts +3 -1
  332. package/dist/providers/ComponentMap/buildComponentMap/globals.d.ts.map +1 -1
  333. package/dist/providers/ComponentMap/buildComponentMap/globals.js +2 -1
  334. package/dist/providers/ComponentMap/buildComponentMap/globals.js.map +1 -1
  335. package/dist/providers/ComponentMap/buildComponentMap/index.d.ts +2 -0
  336. package/dist/providers/ComponentMap/buildComponentMap/index.d.ts.map +1 -1
  337. package/dist/providers/ComponentMap/buildComponentMap/index.js +3 -1
  338. package/dist/providers/ComponentMap/buildComponentMap/index.js.map +1 -1
  339. package/dist/providers/ComponentMap/buildComponentMap/types.js.map +1 -1
  340. package/dist/providers/ComponentMap/index.js.map +1 -1
  341. package/dist/providers/Config/index.js.map +1 -1
  342. package/dist/providers/DocumentEvents/index.js.map +1 -1
  343. package/dist/providers/DocumentInfo/index.js.map +1 -1
  344. package/dist/providers/DocumentInfo/types.js.map +1 -1
  345. package/dist/providers/EditDepth/index.js.map +1 -1
  346. package/dist/providers/EntityVisibility/index.js.map +1 -1
  347. package/dist/providers/FieldComponents/index.js.map +1 -1
  348. package/dist/providers/FormQueryParams/index.js.map +1 -1
  349. package/dist/providers/FormQueryParams/types.js.map +1 -1
  350. package/dist/providers/ListInfo/index.js.map +1 -1
  351. package/dist/providers/ListQuery/index.js.map +1 -1
  352. package/dist/providers/Locale/index.js.map +1 -1
  353. package/dist/providers/Operation/index.js.map +1 -1
  354. package/dist/providers/Params/index.js.map +1 -1
  355. package/dist/providers/Preferences/index.js.map +1 -1
  356. package/dist/providers/Root/index.d.ts +4 -3
  357. package/dist/providers/Root/index.d.ts.map +1 -1
  358. package/dist/providers/Root/index.js +3 -2
  359. package/dist/providers/Root/index.js.map +1 -1
  360. package/dist/providers/RouteCache/index.js.map +1 -1
  361. package/dist/providers/SearchParams/index.js.map +1 -1
  362. package/dist/providers/Selection/index.js.map +1 -1
  363. package/dist/providers/Theme/index.js.map +1 -1
  364. package/dist/providers/Translation/index.d.ts +4 -3
  365. package/dist/providers/Translation/index.d.ts.map +1 -1
  366. package/dist/providers/Translation/index.js +20 -6
  367. package/dist/providers/Translation/index.js.map +1 -1
  368. package/dist/templates/Default/NavHamburger/index.js.map +1 -1
  369. package/dist/templates/Default/Wrapper/index.js.map +1 -1
  370. package/dist/templates/Default/index.js.map +1 -1
  371. package/dist/templates/Minimal/index.js.map +1 -1
  372. package/dist/utilities/api.js.map +1 -1
  373. package/dist/utilities/arraysHaveSameStrings.js.map +1 -1
  374. package/dist/utilities/buildComponentMap.js.map +1 -1
  375. package/dist/utilities/canUseDOM.js.map +1 -1
  376. package/dist/utilities/dateLocales.js.map +1 -1
  377. package/dist/utilities/findLocaleFromCode.js.map +1 -1
  378. package/dist/utilities/flattenFieldMap.js.map +1 -1
  379. package/dist/utilities/formatDate.d.ts +13 -2
  380. package/dist/utilities/formatDate.d.ts.map +1 -1
  381. package/dist/utilities/formatDate.js +4 -7
  382. package/dist/utilities/formatDate.js.map +1 -1
  383. package/dist/utilities/formatDocTitle.js +5 -1
  384. package/dist/utilities/formatDocTitle.js.map +1 -1
  385. package/dist/utilities/formatFields.js.map +1 -1
  386. package/dist/utilities/generateFieldID.js.map +1 -1
  387. package/dist/utilities/getFormState.js.map +1 -1
  388. package/dist/utilities/getOffsetTop.js.map +1 -1
  389. package/dist/utilities/getRequestLanguage.js.map +1 -1
  390. package/dist/utilities/getSupportedMonacoLocale.js.map +1 -1
  391. package/dist/utilities/groupNavItems.js.map +1 -1
  392. package/dist/utilities/reduceFieldsToValues.js.map +1 -1
  393. package/dist/utilities/scrollToID.js.map +1 -1
  394. package/dist/utilities/setsAreEqual.js.map +1 -1
  395. package/package.json +4 -4
  396. package/dist/utilities/getDateLocale.d.ts +0 -7
  397. package/dist/utilities/getDateLocale.d.ts.map +0 -1
  398. package/dist/utilities/getDateLocale.js +0 -16
  399. package/dist/utilities/getDateLocale.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/fields/Number/index.tsx"],"sourcesContent":["/* eslint-disable react/destructuring-assignment */\n'use client'\nimport type { FieldBase, NumberField as NumberFieldType } from 'payload/types'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport { FieldDescription } from '@payloadcms/ui/forms/FieldDescription'\nimport { FieldError } from '@payloadcms/ui/forms/FieldError'\nimport { FieldLabel } from '@payloadcms/ui/forms/FieldLabel'\nimport { useFieldProps } from '@payloadcms/ui/forms/FieldPropsProvider'\nimport { isNumber } from 'payload/utilities'\nimport React, { useCallback, useEffect, useState } from 'react'\n\nimport type { Option } from '../../elements/ReactSelect/types.js'\nimport type { FormFieldBase } from '../shared/index.js'\n\nimport { ReactSelect } from '../../elements/ReactSelect/index.js'\nimport { useField } from '../../forms/useField/index.js'\nimport { withCondition } from '../../forms/withCondition/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { fieldBaseClass } from '../shared/index.js'\nimport './index.scss'\n\nexport type NumberFieldProps = FormFieldBase & {\n hasMany?: boolean\n label?: FieldBase['label']\n max?: number\n maxRows?: number\n min?: number\n name?: string\n onChange?: (e: number) => void\n path?: string\n placeholder?: NumberFieldType['admin']['placeholder']\n step?: number\n width?: string\n}\n\nconst NumberFieldComponent: React.FC<NumberFieldProps> = (props) => {\n const {\n name,\n AfterInput,\n BeforeInput,\n CustomDescription,\n CustomError,\n CustomLabel,\n className,\n descriptionProps,\n errorProps,\n hasMany = false,\n label,\n labelProps,\n max = Infinity,\n maxRows = Infinity,\n min = -Infinity,\n onChange: onChangeFromProps,\n path: pathFromProps,\n placeholder,\n readOnly: readOnlyFromProps,\n required,\n step = 1,\n style,\n validate,\n width,\n } = props\n\n const { i18n, t } = useTranslation()\n\n const memoizedValidate = useCallback(\n (value, options) => {\n if (typeof validate === 'function') {\n return validate(value, { ...options, max, min, required })\n }\n },\n [validate, min, max, required],\n )\n\n const { path: pathFromContext, readOnly: readOnlyFromContext } = useFieldProps()\n const readOnly = readOnlyFromProps || readOnlyFromContext\n\n const { path, setValue, showError, value } = useField<number | number[]>({\n path: pathFromContext || pathFromProps || name,\n validate: memoizedValidate,\n })\n\n const handleChange = useCallback(\n (e) => {\n const val = parseFloat(e.target.value)\n let newVal = val\n\n if (Number.isNaN(val)) {\n newVal = undefined\n }\n\n if (typeof onChangeFromProps === 'function') {\n onChangeFromProps(newVal)\n }\n\n setValue(newVal)\n },\n [onChangeFromProps, setValue],\n )\n\n const [valueToRender, setValueToRender] = useState<\n { id: string; label: string; value: { value: number } }[]\n >([]) // Only for hasMany\n\n const handleHasManyChange = useCallback(\n (selectedOption) => {\n if (!readOnly) {\n let newValue\n if (!selectedOption) {\n newValue = []\n } else if (Array.isArray(selectedOption)) {\n newValue = selectedOption.map((option) => Number(option.value?.value || option.value))\n } else {\n newValue = [Number(selectedOption.value?.value || selectedOption.value)]\n }\n\n setValue(newValue)\n }\n },\n [readOnly, setValue],\n )\n\n // useEffect update valueToRender:\n useEffect(() => {\n if (hasMany && Array.isArray(value)) {\n setValueToRender(\n value.map((val, index) => {\n return {\n id: `${val}${index}`, // append index to avoid duplicate keys but allow duplicate numbers\n label: `${val}`,\n value: {\n toString: () => `${val}${index}`,\n value: (val as unknown as Record<string, number>)?.value || val,\n }, // You're probably wondering, why the hell is this done that way? Well, React-select automatically uses \"label-value\" as a key, so we will get that react duplicate key warning if we just pass in the value as multiple values can be the same. So we need to append the index to the toString() of the value to avoid that warning, as it uses that as the key.\n }\n }),\n )\n }\n }, [value, hasMany])\n\n return (\n <div\n className={[\n fieldBaseClass,\n 'number',\n className,\n showError && 'error',\n readOnly && 'read-only',\n hasMany && 'has-many',\n ]\n .filter(Boolean)\n .join(' ')}\n style={{\n ...style,\n width,\n }}\n >\n <FieldLabel\n CustomLabel={CustomLabel}\n label={label}\n required={required}\n {...(labelProps || {})}\n />\n <FieldError CustomError={CustomError} path={path} {...(errorProps || {})} />\n {hasMany ? (\n <ReactSelect\n className={`field-${path.replace(/\\./g, '__')}`}\n disabled={readOnly}\n filterOption={(_, rawInput) => {\n // eslint-disable-next-line no-restricted-globals\n const isOverHasMany = Array.isArray(value) && value.length >= maxRows\n return isNumber(rawInput) && !isOverHasMany\n }}\n isClearable\n isCreatable\n isMulti\n isSortable\n noOptionsMessage={() => {\n const isOverHasMany = Array.isArray(value) && value.length >= maxRows\n if (isOverHasMany) {\n return t('validation:limitReached', { max: maxRows, value: value.length + 1 })\n }\n return null\n }}\n // numberOnly\n onChange={handleHasManyChange}\n options={[]}\n placeholder={t('general:enterAValue')}\n showError={showError}\n value={valueToRender as Option[]}\n />\n ) : (\n <div>\n {BeforeInput}\n <input\n disabled={readOnly}\n id={`field-${path.replace(/\\./g, '__')}`}\n max={max}\n min={min}\n name={path}\n onChange={handleChange}\n onWheel={(e) => {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-expect-error\n e.target.blur()\n }}\n placeholder={getTranslation(placeholder, i18n)}\n step={step}\n type=\"number\"\n value={typeof value === 'number' ? value : ''}\n />\n {AfterInput}\n </div>\n )}\n {CustomDescription !== undefined ? (\n CustomDescription\n ) : (\n <FieldDescription {...(descriptionProps || {})} />\n )}\n </div>\n )\n}\n\nexport const NumberField = withCondition(NumberFieldComponent)\n"],"names":["getTranslation","FieldDescription","FieldError","FieldLabel","useFieldProps","isNumber","React","useCallback","useEffect","useState","ReactSelect","useField","withCondition","useTranslation","fieldBaseClass","NumberFieldComponent","props","name","AfterInput","BeforeInput","CustomDescription","CustomError","CustomLabel","className","descriptionProps","errorProps","hasMany","label","labelProps","max","Infinity","maxRows","min","onChange","onChangeFromProps","path","pathFromProps","placeholder","readOnly","readOnlyFromProps","required","step","style","validate","width","i18n","t","memoizedValidate","value","options","pathFromContext","readOnlyFromContext","setValue","showError","handleChange","e","val","parseFloat","target","newVal","Number","isNaN","undefined","valueToRender","setValueToRender","handleHasManyChange","selectedOption","newValue","Array","isArray","map","option","index","id","toString","div","filter","Boolean","join","replace","disabled","filterOption","_","rawInput","isOverHasMany","length","isClearable","isCreatable","isMulti","isSortable","noOptionsMessage","input","onWheel","blur","type","NumberField"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/fields/Number/index.tsx"],"sourcesContent":["/* eslint-disable react/destructuring-assignment */\n'use client'\nimport type { FieldBase, NumberField as NumberFieldType } from 'payload/types'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport { FieldDescription } from '@payloadcms/ui/forms/FieldDescription'\nimport { FieldError } from '@payloadcms/ui/forms/FieldError'\nimport { FieldLabel } from '@payloadcms/ui/forms/FieldLabel'\nimport { useFieldProps } from '@payloadcms/ui/forms/FieldPropsProvider'\nimport { isNumber } from 'payload/utilities'\nimport React, { useCallback, useEffect, useState } from 'react'\n\nimport type { Option } from '../../elements/ReactSelect/types.js'\nimport type { FormFieldBase } from '../shared/index.js'\n\nimport { ReactSelect } from '../../elements/ReactSelect/index.js'\nimport { useField } from '../../forms/useField/index.js'\nimport { withCondition } from '../../forms/withCondition/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { fieldBaseClass } from '../shared/index.js'\nimport './index.scss'\n\nexport type NumberFieldProps = FormFieldBase & {\n hasMany?: boolean\n label?: FieldBase['label']\n max?: number\n maxRows?: number\n min?: number\n name?: string\n onChange?: (e: number) => void\n path?: string\n placeholder?: NumberFieldType['admin']['placeholder']\n step?: number\n width?: string\n}\n\nconst NumberFieldComponent: React.FC<NumberFieldProps> = (props) => {\n const {\n name,\n AfterInput,\n BeforeInput,\n CustomDescription,\n CustomError,\n CustomLabel,\n className,\n descriptionProps,\n errorProps,\n hasMany = false,\n label,\n labelProps,\n max = Infinity,\n maxRows = Infinity,\n min = -Infinity,\n onChange: onChangeFromProps,\n path: pathFromProps,\n placeholder,\n readOnly: readOnlyFromProps,\n required,\n step = 1,\n style,\n validate,\n width,\n } = props\n\n const { i18n, t } = useTranslation()\n\n const memoizedValidate = useCallback(\n (value, options) => {\n if (typeof validate === 'function') {\n return validate(value, { ...options, max, min, required })\n }\n },\n [validate, min, max, required],\n )\n\n const { path: pathFromContext, readOnly: readOnlyFromContext } = useFieldProps()\n const readOnly = readOnlyFromProps || readOnlyFromContext\n\n const { path, setValue, showError, value } = useField<number | number[]>({\n path: pathFromContext || pathFromProps || name,\n validate: memoizedValidate,\n })\n\n const handleChange = useCallback(\n (e) => {\n const val = parseFloat(e.target.value)\n let newVal = val\n\n if (Number.isNaN(val)) {\n newVal = undefined\n }\n\n if (typeof onChangeFromProps === 'function') {\n onChangeFromProps(newVal)\n }\n\n setValue(newVal)\n },\n [onChangeFromProps, setValue],\n )\n\n const [valueToRender, setValueToRender] = useState<\n { id: string; label: string; value: { value: number } }[]\n >([]) // Only for hasMany\n\n const handleHasManyChange = useCallback(\n (selectedOption) => {\n if (!readOnly) {\n let newValue\n if (!selectedOption) {\n newValue = []\n } else if (Array.isArray(selectedOption)) {\n newValue = selectedOption.map((option) => Number(option.value?.value || option.value))\n } else {\n newValue = [Number(selectedOption.value?.value || selectedOption.value)]\n }\n\n setValue(newValue)\n }\n },\n [readOnly, setValue],\n )\n\n // useEffect update valueToRender:\n useEffect(() => {\n if (hasMany && Array.isArray(value)) {\n setValueToRender(\n value.map((val, index) => {\n return {\n id: `${val}${index}`, // append index to avoid duplicate keys but allow duplicate numbers\n label: `${val}`,\n value: {\n toString: () => `${val}${index}`,\n value: (val as unknown as Record<string, number>)?.value || val,\n }, // You're probably wondering, why the hell is this done that way? Well, React-select automatically uses \"label-value\" as a key, so we will get that react duplicate key warning if we just pass in the value as multiple values can be the same. So we need to append the index to the toString() of the value to avoid that warning, as it uses that as the key.\n }\n }),\n )\n }\n }, [value, hasMany])\n\n return (\n <div\n className={[\n fieldBaseClass,\n 'number',\n className,\n showError && 'error',\n readOnly && 'read-only',\n hasMany && 'has-many',\n ]\n .filter(Boolean)\n .join(' ')}\n style={{\n ...style,\n width,\n }}\n >\n <FieldLabel\n CustomLabel={CustomLabel}\n label={label}\n required={required}\n {...(labelProps || {})}\n />\n <FieldError CustomError={CustomError} path={path} {...(errorProps || {})} />\n {hasMany ? (\n <ReactSelect\n className={`field-${path.replace(/\\./g, '__')}`}\n disabled={readOnly}\n filterOption={(_, rawInput) => {\n // eslint-disable-next-line no-restricted-globals\n const isOverHasMany = Array.isArray(value) && value.length >= maxRows\n return isNumber(rawInput) && !isOverHasMany\n }}\n isClearable\n isCreatable\n isMulti\n isSortable\n noOptionsMessage={() => {\n const isOverHasMany = Array.isArray(value) && value.length >= maxRows\n if (isOverHasMany) {\n return t('validation:limitReached', { max: maxRows, value: value.length + 1 })\n }\n return null\n }}\n // numberOnly\n onChange={handleHasManyChange}\n options={[]}\n placeholder={t('general:enterAValue')}\n showError={showError}\n value={valueToRender as Option[]}\n />\n ) : (\n <div>\n {BeforeInput}\n <input\n disabled={readOnly}\n id={`field-${path.replace(/\\./g, '__')}`}\n max={max}\n min={min}\n name={path}\n onChange={handleChange}\n onWheel={(e) => {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-expect-error\n e.target.blur()\n }}\n placeholder={getTranslation(placeholder, i18n)}\n step={step}\n type=\"number\"\n value={typeof value === 'number' ? value : ''}\n />\n {AfterInput}\n </div>\n )}\n {CustomDescription !== undefined ? (\n CustomDescription\n ) : (\n <FieldDescription {...(descriptionProps || {})} />\n )}\n </div>\n )\n}\n\nexport const NumberField = withCondition(NumberFieldComponent)\n"],"names":["getTranslation","FieldDescription","FieldError","FieldLabel","useFieldProps","isNumber","React","useCallback","useEffect","useState","ReactSelect","useField","withCondition","useTranslation","fieldBaseClass","NumberFieldComponent","props","name","AfterInput","BeforeInput","CustomDescription","CustomError","CustomLabel","className","descriptionProps","errorProps","hasMany","label","labelProps","max","Infinity","maxRows","min","onChange","onChangeFromProps","path","pathFromProps","placeholder","readOnly","readOnlyFromProps","required","step","style","validate","width","i18n","t","memoizedValidate","value","options","pathFromContext","readOnlyFromContext","setValue","showError","handleChange","e","val","parseFloat","target","newVal","Number","isNaN","undefined","valueToRender","setValueToRender","handleHasManyChange","selectedOption","newValue","Array","isArray","map","option","index","id","toString","div","filter","Boolean","join","replace","disabled","filterOption","_","rawInput","isOverHasMany","length","isClearable","isCreatable","isMulti","isSortable","noOptionsMessage","input","onWheel","blur","type","NumberField"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/fields/Password/index.tsx"],"sourcesContent":["'use client'\nimport type { ClientValidate, Description, Validate } from 'payload/types'\n\nimport { FieldError } from '@payloadcms/ui/forms/FieldError'\nimport { FieldLabel } from '@payloadcms/ui/forms/FieldLabel'\nimport React, { useCallback } from 'react'\n\nimport type { FormFieldBase } from '../shared/index.js'\n\nimport { useField } from '../../forms/useField/index.js'\nimport { withCondition } from '../../forms/withCondition/index.js'\nimport { fieldBaseClass } from '../shared/index.js'\nimport './index.scss'\n\nexport type PasswordFieldProps = FormFieldBase & {\n autoComplete?: string\n className?: string\n description?: Description\n disabled?: boolean\n label?: string\n name: string\n path?: string\n required?: boolean\n style?: React.CSSProperties\n validate?: Validate\n width?: string\n}\n\nconst PasswordField: React.FC<PasswordFieldProps> = (props) => {\n const {\n name,\n CustomError,\n CustomLabel,\n autoComplete,\n className,\n disabled,\n errorProps,\n label,\n labelProps,\n path: pathFromProps,\n required,\n style,\n validate,\n width,\n } = props\n\n const memoizedValidate: ClientValidate = useCallback(\n (value, options) => {\n if (typeof validate === 'function') {\n return validate(value, { ...options, required })\n }\n },\n [validate, required],\n )\n\n const { formProcessing, path, setValue, showError, value } = useField({\n path: pathFromProps || name,\n validate: memoizedValidate,\n })\n\n return (\n <div\n className={[fieldBaseClass, 'password', className, showError && 'error']\n .filter(Boolean)\n .join(' ')}\n style={{\n ...style,\n width,\n }}\n >\n <FieldError CustomError={CustomError} path={path} {...(errorProps || {})} />\n <FieldLabel\n CustomLabel={CustomLabel}\n label={label}\n required={required}\n {...(labelProps || {})}\n />\n <input\n autoComplete={autoComplete}\n disabled={formProcessing || disabled}\n id={`field-${path.replace(/\\./g, '__')}`}\n name={path}\n onChange={setValue}\n type=\"password\"\n value={(value as string) || ''}\n />\n </div>\n )\n}\n\nexport const Password = withCondition(PasswordField)\n"],"names":["FieldError","FieldLabel","React","useCallback","useField","withCondition","fieldBaseClass","PasswordField","props","name","CustomError","CustomLabel","autoComplete","className","disabled","errorProps","label","labelProps","path","pathFromProps","required","style","validate","width","memoizedValidate","value","options","formProcessing","setValue","showError","div","filter","Boolean","join","input","id","replace","onChange","type","Password"],"mappings":"AAAA;AAGA,SAASA,UAAU,QAAQ,kCAAiC;AAC5D,SAASC,UAAU,QAAQ,kCAAiC;AAC5D,OAAOC,SAASC,WAAW,QAAQ,QAAO;AAI1C,SAASC,QAAQ,QAAQ,gCAA+B;AACxD,SAASC,aAAa,QAAQ,qCAAoC;AAClE,SAASC,cAAc,QAAQ,qBAAoB;AAiBnD,MAAMC,gBAA8C,CAACC;IACnD,MAAM,EACJC,IAAI,EACJC,WAAW,EACXC,WAAW,EACXC,YAAY,EACZC,SAAS,EACTC,QAAQ,EACRC,UAAU,EACVC,KAAK,EACLC,UAAU,EACVC,MAAMC,aAAa,EACnBC,QAAQ,EACRC,KAAK,EACLC,QAAQ,EACRC,KAAK,EACN,GAAGf;IAEJ,MAAMgB,mBAAmCrB,YACvC,CAACsB,OAAOC;QACN,IAAI,OAAOJ,aAAa,YAAY;YAClC,OAAOA,SAASG,OAAO;gBAAE,GAAGC,OAAO;gBAAEN;YAAS;QAChD;IACF,GACA;QAACE;QAAUF;KAAS;IAGtB,MAAM,EAAEO,cAAc,EAAET,IAAI,EAAEU,QAAQ,EAAEC,SAAS,EAAEJ,KAAK,EAAE,GAAGrB,SAAS;QACpEc,MAAMC,iBAAiBV;QACvBa,UAAUE;IACZ;IAEA,qBACE,oBAACM;QACCjB,WAAW;YAACP;YAAgB;YAAYO;YAAWgB,aAAa;SAAQ,CACrEE,MAAM,CAACC,SACPC,IAAI,CAAC;QACRZ,OAAO;YACL,GAAGA,KAAK;YACRE;QACF;qBAEA,oBAACvB;QAAWU,aAAaA;QAAaQ,MAAMA;QAAO,GAAIH,cAAc,CAAC,CAAC;sBACvE,oBAACd;QACCU,aAAaA;QACbK,OAAOA;QACPI,UAAUA;QACT,GAAIH,cAAc,CAAC,CAAC;sBAEvB,oBAACiB;QACCtB,cAAcA;QACdE,UAAUa,kBAAkBb;QAC5BqB,IAAI,CAAC,MAAM,EAAEjB,KAAKkB,OAAO,CAAC,OAAO,MAAM,CAAC;QACxC3B,MAAMS;QACNmB,UAAUT;QACVU,MAAK;QACLb,OAAO,AAACA,SAAoB;;AAIpC;AAEA,OAAO,MAAMc,WAAWlC,cAAcE,eAAc"}
1
+ {"version":3,"sources":["../../../src/fields/Password/index.tsx"],"sourcesContent":["'use client'\nimport type { ClientValidate, Description, Validate } from 'payload/types'\n\nimport { FieldError } from '@payloadcms/ui/forms/FieldError'\nimport { FieldLabel } from '@payloadcms/ui/forms/FieldLabel'\nimport React, { useCallback } from 'react'\n\nimport type { FormFieldBase } from '../shared/index.js'\n\nimport { useField } from '../../forms/useField/index.js'\nimport { withCondition } from '../../forms/withCondition/index.js'\nimport { fieldBaseClass } from '../shared/index.js'\nimport './index.scss'\n\nexport type PasswordFieldProps = FormFieldBase & {\n autoComplete?: string\n className?: string\n description?: Description\n disabled?: boolean\n label?: string\n name: string\n path?: string\n required?: boolean\n style?: React.CSSProperties\n validate?: Validate\n width?: string\n}\n\nconst PasswordField: React.FC<PasswordFieldProps> = (props) => {\n const {\n name,\n CustomError,\n CustomLabel,\n autoComplete,\n className,\n disabled,\n errorProps,\n label,\n labelProps,\n path: pathFromProps,\n required,\n style,\n validate,\n width,\n } = props\n\n const memoizedValidate: ClientValidate = useCallback(\n (value, options) => {\n if (typeof validate === 'function') {\n return validate(value, { ...options, required })\n }\n },\n [validate, required],\n )\n\n const { formProcessing, path, setValue, showError, value } = useField({\n path: pathFromProps || name,\n validate: memoizedValidate,\n })\n\n return (\n <div\n className={[fieldBaseClass, 'password', className, showError && 'error']\n .filter(Boolean)\n .join(' ')}\n style={{\n ...style,\n width,\n }}\n >\n <FieldError CustomError={CustomError} path={path} {...(errorProps || {})} />\n <FieldLabel\n CustomLabel={CustomLabel}\n label={label}\n required={required}\n {...(labelProps || {})}\n />\n <input\n autoComplete={autoComplete}\n disabled={formProcessing || disabled}\n id={`field-${path.replace(/\\./g, '__')}`}\n name={path}\n onChange={setValue}\n type=\"password\"\n value={(value as string) || ''}\n />\n </div>\n )\n}\n\nexport const Password = withCondition(PasswordField)\n"],"names":["FieldError","FieldLabel","React","useCallback","useField","withCondition","fieldBaseClass","PasswordField","props","name","CustomError","CustomLabel","autoComplete","className","disabled","errorProps","label","labelProps","path","pathFromProps","required","style","validate","width","memoizedValidate","value","options","formProcessing","setValue","showError","div","filter","Boolean","join","input","id","replace","onChange","type","Password"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA;AAGA,SAASA,UAAU,QAAQ,kCAAiC;AAC5D,SAASC,UAAU,QAAQ,kCAAiC;AAC5D,OAAOC,SAASC,WAAW,QAAQ,QAAO;AAI1C,SAASC,QAAQ,QAAQ,gCAA+B;AACxD,SAASC,aAAa,QAAQ,qCAAoC;AAClE,SAASC,cAAc,QAAQ,qBAAoB;AAiBnD,MAAMC,gBAA8C,CAACC;IACnD,MAAM,EACJC,IAAI,EACJC,WAAW,EACXC,WAAW,EACXC,YAAY,EACZC,SAAS,EACTC,QAAQ,EACRC,UAAU,EACVC,KAAK,EACLC,UAAU,EACVC,MAAMC,aAAa,EACnBC,QAAQ,EACRC,KAAK,EACLC,QAAQ,EACRC,KAAK,EACN,GAAGf;IAEJ,MAAMgB,mBAAmCrB,YACvC,CAACsB,OAAOC;QACN,IAAI,OAAOJ,aAAa,YAAY;YAClC,OAAOA,SAASG,OAAO;gBAAE,GAAGC,OAAO;gBAAEN;YAAS;QAChD;IACF,GACA;QAACE;QAAUF;KAAS;IAGtB,MAAM,EAAEO,cAAc,EAAET,IAAI,EAAEU,QAAQ,EAAEC,SAAS,EAAEJ,KAAK,EAAE,GAAGrB,SAAS;QACpEc,MAAMC,iBAAiBV;QACvBa,UAAUE;IACZ;IAEA,qBACE,oBAACM;QACCjB,WAAW;YAACP;YAAgB;YAAYO;YAAWgB,aAAa;SAAQ,CACrEE,MAAM,CAACC,SACPC,IAAI,CAAC;QACRZ,OAAO;YACL,GAAGA,KAAK;YACRE;QACF;qBAEA,oBAACvB;QAAWU,aAAaA;QAAaQ,MAAMA;QAAO,GAAIH,cAAc,CAAC,CAAC;sBACvE,oBAACd;QACCU,aAAaA;QACbK,OAAOA;QACPI,UAAUA;QACT,GAAIH,cAAc,CAAC,CAAC;sBAEvB,oBAACiB;QACCtB,cAAcA;QACdE,UAAUa,kBAAkBb;QAC5BqB,IAAI,CAAC,MAAM,EAAEjB,KAAKkB,OAAO,CAAC,OAAO,MAAM,CAAC;QACxC3B,MAAMS;QACNmB,UAAUT;QACVU,MAAK;QACLb,OAAO,AAACA,SAAoB;;AAIpC;AAEA,OAAO,MAAMc,WAAWlC,cAAcE,eAAc"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/fields/Point/index.tsx"],"sourcesContent":["/* eslint-disable react/destructuring-assignment */\n'use client'\nimport type { ClientValidate, FieldBase } from 'payload/types'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport React, { useCallback } from 'react'\n\nimport { useField } from '../../forms/useField/index.js'\nimport { withCondition } from '../../forms/withCondition/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { fieldBaseClass } from '../shared/index.js'\nimport './index.scss'\n\nconst baseClass = 'point'\n\nimport { FieldDescription } from '@payloadcms/ui/forms/FieldDescription'\nimport { FieldError } from '@payloadcms/ui/forms/FieldError'\nimport { FieldLabel } from '@payloadcms/ui/forms/FieldLabel'\nimport { useFieldProps } from '@payloadcms/ui/forms/FieldPropsProvider'\n\nimport type { FormFieldBase } from '../shared/index.js'\n\nexport type PointFieldProps = FormFieldBase & {\n label?: FieldBase['label']\n name?: string\n path?: string\n placeholder?: string\n step?: number\n width?: string\n}\n\nconst PointField: React.FC<PointFieldProps> = (props) => {\n const {\n name,\n AfterInput,\n BeforeInput,\n CustomDescription,\n CustomError,\n CustomLabel,\n className,\n descriptionProps,\n errorProps,\n labelProps,\n path: pathFromProps,\n placeholder,\n readOnly: readOnlyFromProps,\n required,\n step,\n style,\n validate,\n width,\n } = props\n\n const { i18n, t } = useTranslation()\n\n const memoizedValidate: ClientValidate = useCallback(\n (value, options) => {\n if (typeof validate === 'function') {\n return validate(value, { ...options, required })\n }\n },\n [validate, required],\n )\n\n const { path: pathFromContext, readOnly: readOnlyFromContext } = useFieldProps()\n const readOnly = readOnlyFromProps || readOnlyFromContext\n\n const {\n path,\n setValue,\n showError,\n value = [null, null],\n } = useField<[number, number]>({\n path: pathFromContext || pathFromProps || name,\n validate: memoizedValidate,\n })\n\n const handleChange = useCallback(\n (e, index: 0 | 1) => {\n let val = parseFloat(e.target.value)\n if (Number.isNaN(val)) {\n val = e.target.value\n }\n const coordinates = [...value]\n coordinates[index] = val\n setValue(coordinates)\n },\n [setValue, value],\n )\n\n const getCoordinateFieldLabel = (type: 'latitude' | 'longitude') => {\n const suffix = type === 'longitude' ? t('fields:longitude') : t('fields:latitude')\n const fieldLabel = labelProps && labelProps.label ? getTranslation(labelProps.label, i18n) : ''\n\n return {\n ...labelProps,\n label: `${fieldLabel}${fieldLabel ? ' - ' : ''}${suffix}`,\n }\n }\n\n return (\n <div\n className={[\n fieldBaseClass,\n baseClass,\n className,\n showError && 'error',\n readOnly && 'read-only',\n ]\n .filter(Boolean)\n .join(' ')}\n style={{\n ...style,\n width,\n }}\n >\n <FieldError CustomError={CustomError} path={path} {...(errorProps || {})} />\n <ul className={`${baseClass}__wrap`}>\n <li>\n {CustomLabel !== undefined ? (\n CustomLabel\n ) : (\n <FieldLabel {...getCoordinateFieldLabel('longitude')} />\n )}\n <div className=\"input-wrapper\">\n {BeforeInput}\n <input\n disabled={readOnly}\n id={`field-longitude-${path.replace(/\\./g, '__')}`}\n name={`${path}.longitude`}\n onChange={(e) => handleChange(e, 0)}\n placeholder={getTranslation(placeholder, i18n)}\n step={step}\n type=\"number\"\n value={value && typeof value[0] === 'number' ? value[0] : ''}\n />\n {AfterInput}\n </div>\n </li>\n <li>\n {CustomLabel !== undefined ? (\n CustomLabel\n ) : (\n <FieldLabel {...getCoordinateFieldLabel('latitude')} />\n )}\n <div className=\"input-wrapper\">\n {BeforeInput}\n <input\n disabled={readOnly}\n id={`field-latitude-${path.replace(/\\./g, '__')}`}\n name={`${path}.latitude`}\n onChange={(e) => handleChange(e, 1)}\n placeholder={getTranslation(placeholder, i18n)}\n step={step}\n type=\"number\"\n value={value && typeof value[1] === 'number' ? value[1] : ''}\n />\n {AfterInput}\n </div>\n </li>\n </ul>\n {CustomDescription !== undefined ? (\n CustomDescription\n ) : (\n <FieldDescription {...(descriptionProps || {})} />\n )}\n </div>\n )\n}\n\nexport const Point = withCondition(PointField)\n"],"names":["getTranslation","React","useCallback","useField","withCondition","useTranslation","fieldBaseClass","baseClass","FieldDescription","FieldError","FieldLabel","useFieldProps","PointField","props","name","AfterInput","BeforeInput","CustomDescription","CustomError","CustomLabel","className","descriptionProps","errorProps","labelProps","path","pathFromProps","placeholder","readOnly","readOnlyFromProps","required","step","style","validate","width","i18n","t","memoizedValidate","value","options","pathFromContext","readOnlyFromContext","setValue","showError","handleChange","e","index","val","parseFloat","target","Number","isNaN","coordinates","getCoordinateFieldLabel","type","suffix","fieldLabel","label","div","filter","Boolean","join","ul","li","undefined","input","disabled","id","replace","onChange","Point"],"mappings":"AAAA,iDAAiD,GACjD;AAGA,SAASA,cAAc,QAAQ,2BAA0B;AACzD,OAAOC,SAASC,WAAW,QAAQ,QAAO;AAE1C,SAASC,QAAQ,QAAQ,gCAA+B;AACxD,SAASC,aAAa,QAAQ,qCAAoC;AAClE,SAASC,cAAc,QAAQ,uCAAsC;AACrE,SAASC,cAAc,QAAQ,qBAAoB;AAGnD,MAAMC,YAAY;AAElB,SAASC,gBAAgB,QAAQ,wCAAuC;AACxE,SAASC,UAAU,QAAQ,kCAAiC;AAC5D,SAASC,UAAU,QAAQ,kCAAiC;AAC5D,SAASC,aAAa,QAAQ,0CAAyC;AAavE,MAAMC,aAAwC,CAACC;IAC7C,MAAM,EACJC,IAAI,EACJC,UAAU,EACVC,WAAW,EACXC,iBAAiB,EACjBC,WAAW,EACXC,WAAW,EACXC,SAAS,EACTC,gBAAgB,EAChBC,UAAU,EACVC,UAAU,EACVC,MAAMC,aAAa,EACnBC,WAAW,EACXC,UAAUC,iBAAiB,EAC3BC,QAAQ,EACRC,IAAI,EACJC,KAAK,EACLC,QAAQ,EACRC,KAAK,EACN,GAAGpB;IAEJ,MAAM,EAAEqB,IAAI,EAAEC,CAAC,EAAE,GAAG9B;IAEpB,MAAM+B,mBAAmClC,YACvC,CAACmC,OAAOC;QACN,IAAI,OAAON,aAAa,YAAY;YAClC,OAAOA,SAASK,OAAO;gBAAE,GAAGC,OAAO;gBAAET;YAAS;QAChD;IACF,GACA;QAACG;QAAUH;KAAS;IAGtB,MAAM,EAAEL,MAAMe,eAAe,EAAEZ,UAAUa,mBAAmB,EAAE,GAAG7B;IACjE,MAAMgB,WAAWC,qBAAqBY;IAEtC,MAAM,EACJhB,IAAI,EACJiB,QAAQ,EACRC,SAAS,EACTL,QAAQ;QAAC;QAAM;KAAK,EACrB,GAAGlC,SAA2B;QAC7BqB,MAAMe,mBAAmBd,iBAAiBX;QAC1CkB,UAAUI;IACZ;IAEA,MAAMO,eAAezC,YACnB,CAAC0C,GAAGC;QACF,IAAIC,MAAMC,WAAWH,EAAEI,MAAM,CAACX,KAAK;QACnC,IAAIY,OAAOC,KAAK,CAACJ,MAAM;YACrBA,MAAMF,EAAEI,MAAM,CAACX,KAAK;QACtB;QACA,MAAMc,cAAc;eAAId;SAAM;QAC9Bc,WAAW,CAACN,MAAM,GAAGC;QACrBL,SAASU;IACX,GACA;QAACV;QAAUJ;KAAM;IAGnB,MAAMe,0BAA0B,CAACC;QAC/B,MAAMC,SAASD,SAAS,cAAclB,EAAE,sBAAsBA,EAAE;QAChE,MAAMoB,aAAahC,cAAcA,WAAWiC,KAAK,GAAGxD,eAAeuB,WAAWiC,KAAK,EAAEtB,QAAQ;QAE7F,OAAO;YACL,GAAGX,UAAU;YACbiC,OAAO,CAAC,EAAED,WAAW,EAAEA,aAAa,QAAQ,GAAG,EAAED,OAAO,CAAC;QAC3D;IACF;IAEA,qBACE,oBAACG;QACCrC,WAAW;YACTd;YACAC;YACAa;YACAsB,aAAa;YACbf,YAAY;SACb,CACE+B,MAAM,CAACC,SACPC,IAAI,CAAC;QACR7B,OAAO;YACL,GAAGA,KAAK;YACRE;QACF;qBAEA,oBAACxB;QAAWS,aAAaA;QAAaM,MAAMA;QAAO,GAAIF,cAAc,CAAC,CAAC;sBACvE,oBAACuC;QAAGzC,WAAW,CAAC,EAAEb,UAAU,MAAM,CAAC;qBACjC,oBAACuD,YACE3C,gBAAgB4C,YACf5C,4BAEA,oBAACT,YAAe0C,wBAAwB,6BAE1C,oBAACK;QAAIrC,WAAU;OACZJ,2BACD,oBAACgD;QACCC,UAAUtC;QACVuC,IAAI,CAAC,gBAAgB,EAAE1C,KAAK2C,OAAO,CAAC,OAAO,MAAM,CAAC;QAClDrD,MAAM,CAAC,EAAEU,KAAK,UAAU,CAAC;QACzB4C,UAAU,CAACxB,IAAMD,aAAaC,GAAG;QACjClB,aAAa1B,eAAe0B,aAAaQ;QACzCJ,MAAMA;QACNuB,MAAK;QACLhB,OAAOA,SAAS,OAAOA,KAAK,CAAC,EAAE,KAAK,WAAWA,KAAK,CAAC,EAAE,GAAG;QAE3DtB,4BAGL,oBAAC+C,YACE3C,gBAAgB4C,YACf5C,4BAEA,oBAACT,YAAe0C,wBAAwB,4BAE1C,oBAACK;QAAIrC,WAAU;OACZJ,2BACD,oBAACgD;QACCC,UAAUtC;QACVuC,IAAI,CAAC,eAAe,EAAE1C,KAAK2C,OAAO,CAAC,OAAO,MAAM,CAAC;QACjDrD,MAAM,CAAC,EAAEU,KAAK,SAAS,CAAC;QACxB4C,UAAU,CAACxB,IAAMD,aAAaC,GAAG;QACjClB,aAAa1B,eAAe0B,aAAaQ;QACzCJ,MAAMA;QACNuB,MAAK;QACLhB,OAAOA,SAAS,OAAOA,KAAK,CAAC,EAAE,KAAK,WAAWA,KAAK,CAAC,EAAE,GAAG;QAE3DtB,eAINE,sBAAsB8C,YACrB9C,kCAEA,oBAACT,kBAAsBa,oBAAoB,CAAC;AAIpD;AAEA,OAAO,MAAMgD,QAAQjE,cAAcQ,YAAW"}
1
+ {"version":3,"sources":["../../../src/fields/Point/index.tsx"],"sourcesContent":["/* eslint-disable react/destructuring-assignment */\n'use client'\nimport type { ClientValidate, FieldBase } from 'payload/types'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport React, { useCallback } from 'react'\n\nimport { useField } from '../../forms/useField/index.js'\nimport { withCondition } from '../../forms/withCondition/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { fieldBaseClass } from '../shared/index.js'\nimport './index.scss'\n\nconst baseClass = 'point'\n\nimport { FieldDescription } from '@payloadcms/ui/forms/FieldDescription'\nimport { FieldError } from '@payloadcms/ui/forms/FieldError'\nimport { FieldLabel } from '@payloadcms/ui/forms/FieldLabel'\nimport { useFieldProps } from '@payloadcms/ui/forms/FieldPropsProvider'\n\nimport type { FormFieldBase } from '../shared/index.js'\n\nexport type PointFieldProps = FormFieldBase & {\n label?: FieldBase['label']\n name?: string\n path?: string\n placeholder?: string\n step?: number\n width?: string\n}\n\nconst PointField: React.FC<PointFieldProps> = (props) => {\n const {\n name,\n AfterInput,\n BeforeInput,\n CustomDescription,\n CustomError,\n CustomLabel,\n className,\n descriptionProps,\n errorProps,\n labelProps,\n path: pathFromProps,\n placeholder,\n readOnly: readOnlyFromProps,\n required,\n step,\n style,\n validate,\n width,\n } = props\n\n const { i18n, t } = useTranslation()\n\n const memoizedValidate: ClientValidate = useCallback(\n (value, options) => {\n if (typeof validate === 'function') {\n return validate(value, { ...options, required })\n }\n },\n [validate, required],\n )\n\n const { path: pathFromContext, readOnly: readOnlyFromContext } = useFieldProps()\n const readOnly = readOnlyFromProps || readOnlyFromContext\n\n const {\n path,\n setValue,\n showError,\n value = [null, null],\n } = useField<[number, number]>({\n path: pathFromContext || pathFromProps || name,\n validate: memoizedValidate,\n })\n\n const handleChange = useCallback(\n (e, index: 0 | 1) => {\n let val = parseFloat(e.target.value)\n if (Number.isNaN(val)) {\n val = e.target.value\n }\n const coordinates = [...value]\n coordinates[index] = val\n setValue(coordinates)\n },\n [setValue, value],\n )\n\n const getCoordinateFieldLabel = (type: 'latitude' | 'longitude') => {\n const suffix = type === 'longitude' ? t('fields:longitude') : t('fields:latitude')\n const fieldLabel = labelProps && labelProps.label ? getTranslation(labelProps.label, i18n) : ''\n\n return {\n ...labelProps,\n label: `${fieldLabel}${fieldLabel ? ' - ' : ''}${suffix}`,\n }\n }\n\n return (\n <div\n className={[\n fieldBaseClass,\n baseClass,\n className,\n showError && 'error',\n readOnly && 'read-only',\n ]\n .filter(Boolean)\n .join(' ')}\n style={{\n ...style,\n width,\n }}\n >\n <FieldError CustomError={CustomError} path={path} {...(errorProps || {})} />\n <ul className={`${baseClass}__wrap`}>\n <li>\n {CustomLabel !== undefined ? (\n CustomLabel\n ) : (\n <FieldLabel {...getCoordinateFieldLabel('longitude')} />\n )}\n <div className=\"input-wrapper\">\n {BeforeInput}\n <input\n disabled={readOnly}\n id={`field-longitude-${path.replace(/\\./g, '__')}`}\n name={`${path}.longitude`}\n onChange={(e) => handleChange(e, 0)}\n placeholder={getTranslation(placeholder, i18n)}\n step={step}\n type=\"number\"\n value={value && typeof value[0] === 'number' ? value[0] : ''}\n />\n {AfterInput}\n </div>\n </li>\n <li>\n {CustomLabel !== undefined ? (\n CustomLabel\n ) : (\n <FieldLabel {...getCoordinateFieldLabel('latitude')} />\n )}\n <div className=\"input-wrapper\">\n {BeforeInput}\n <input\n disabled={readOnly}\n id={`field-latitude-${path.replace(/\\./g, '__')}`}\n name={`${path}.latitude`}\n onChange={(e) => handleChange(e, 1)}\n placeholder={getTranslation(placeholder, i18n)}\n step={step}\n type=\"number\"\n value={value && typeof value[1] === 'number' ? value[1] : ''}\n />\n {AfterInput}\n </div>\n </li>\n </ul>\n {CustomDescription !== undefined ? (\n CustomDescription\n ) : (\n <FieldDescription {...(descriptionProps || {})} />\n )}\n </div>\n )\n}\n\nexport const Point = withCondition(PointField)\n"],"names":["getTranslation","React","useCallback","useField","withCondition","useTranslation","fieldBaseClass","baseClass","FieldDescription","FieldError","FieldLabel","useFieldProps","PointField","props","name","AfterInput","BeforeInput","CustomDescription","CustomError","CustomLabel","className","descriptionProps","errorProps","labelProps","path","pathFromProps","placeholder","readOnly","readOnlyFromProps","required","step","style","validate","width","i18n","t","memoizedValidate","value","options","pathFromContext","readOnlyFromContext","setValue","showError","handleChange","e","index","val","parseFloat","target","Number","isNaN","coordinates","getCoordinateFieldLabel","type","suffix","fieldLabel","label","div","filter","Boolean","join","ul","li","undefined","input","disabled","id","replace","onChange","Point"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/fields/RadioGroup/Radio/index.tsx"],"sourcesContent":["'use client'\nimport type { OptionObject } from 'payload/types'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport React from 'react'\n\nimport type { OnChange } from '../index.js'\n\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport './index.scss'\n\nconst baseClass = 'radio-input'\n\nexport const Radio: React.FC<{\n id: string\n isSelected: boolean\n onChange: OnChange\n option: OptionObject\n path: string\n uuid?: string\n}> = (props) => {\n const { isSelected, onChange, option, path, uuid } = props\n const { i18n } = useTranslation()\n\n const id = `field-${path}-${option.value}${uuid ? `-${uuid}` : ''}`\n\n return (\n <label htmlFor={id}>\n <div\n className={[baseClass, isSelected && `${baseClass}--is-selected`].filter(Boolean).join(' ')}\n >\n <input\n checked={isSelected}\n id={id}\n onChange={() => (typeof onChange === 'function' ? onChange(option.value) : null)}\n type=\"radio\"\n />\n <span className={`${baseClass}__styled-radio`} />\n <span className={`${baseClass}__label`}>{getTranslation(option.label, i18n)}</span>\n </div>\n </label>\n )\n}\n"],"names":["getTranslation","React","useTranslation","baseClass","Radio","props","isSelected","onChange","option","path","uuid","i18n","id","value","label","htmlFor","div","className","filter","Boolean","join","input","checked","type","span"],"mappings":"AAAA;AAGA,SAASA,cAAc,QAAQ,2BAA0B;AACzD,OAAOC,WAAW,QAAO;AAIzB,SAASC,cAAc,QAAQ,0CAAyC;AAGxE,MAAMC,YAAY;AAElB,OAAO,MAAMC,QAOR,CAACC;IACJ,MAAM,EAAEC,UAAU,EAAEC,QAAQ,EAAEC,MAAM,EAAEC,IAAI,EAAEC,IAAI,EAAE,GAAGL;IACrD,MAAM,EAAEM,IAAI,EAAE,GAAGT;IAEjB,MAAMU,KAAK,CAAC,MAAM,EAAEH,KAAK,CAAC,EAAED,OAAOK,KAAK,CAAC,EAAEH,OAAO,CAAC,CAAC,EAAEA,KAAK,CAAC,GAAG,GAAG,CAAC;IAEnE,qBACE,oBAACI;QAAMC,SAASH;qBACd,oBAACI;QACCC,WAAW;YAACd;YAAWG,cAAc,CAAC,EAAEH,UAAU,aAAa,CAAC;SAAC,CAACe,MAAM,CAACC,SAASC,IAAI,CAAC;qBAEvF,oBAACC;QACCC,SAAShB;QACTM,IAAIA;QACJL,UAAU,IAAO,OAAOA,aAAa,aAAaA,SAASC,OAAOK,KAAK,IAAI;QAC3EU,MAAK;sBAEP,oBAACC;QAAKP,WAAW,CAAC,EAAEd,UAAU,cAAc,CAAC;sBAC7C,oBAACqB;QAAKP,WAAW,CAAC,EAAEd,UAAU,OAAO,CAAC;OAAGH,eAAeQ,OAAOM,KAAK,EAAEH;AAI9E,EAAC"}
1
+ {"version":3,"sources":["../../../../src/fields/RadioGroup/Radio/index.tsx"],"sourcesContent":["'use client'\nimport type { OptionObject } from 'payload/types'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport React from 'react'\n\nimport type { OnChange } from '../index.js'\n\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport './index.scss'\n\nconst baseClass = 'radio-input'\n\nexport const Radio: React.FC<{\n id: string\n isSelected: boolean\n onChange: OnChange\n option: OptionObject\n path: string\n uuid?: string\n}> = (props) => {\n const { isSelected, onChange, option, path, uuid } = props\n const { i18n } = useTranslation()\n\n const id = `field-${path}-${option.value}${uuid ? `-${uuid}` : ''}`\n\n return (\n <label htmlFor={id}>\n <div\n className={[baseClass, isSelected && `${baseClass}--is-selected`].filter(Boolean).join(' ')}\n >\n <input\n checked={isSelected}\n id={id}\n onChange={() => (typeof onChange === 'function' ? onChange(option.value) : null)}\n type=\"radio\"\n />\n <span className={`${baseClass}__styled-radio`} />\n <span className={`${baseClass}__label`}>{getTranslation(option.label, i18n)}</span>\n </div>\n </label>\n )\n}\n"],"names":["getTranslation","React","useTranslation","baseClass","Radio","props","isSelected","onChange","option","path","uuid","i18n","id","value","label","htmlFor","div","className","filter","Boolean","join","input","checked","type","span"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA;AAGA,SAASA,cAAc,QAAQ,2BAA0B;AACzD,OAAOC,WAAW,QAAO;AAIzB,SAASC,cAAc,QAAQ,0CAAyC;AAGxE,MAAMC,YAAY;AAElB,OAAO,MAAMC,QAOR,CAACC;IACJ,MAAM,EAAEC,UAAU,EAAEC,QAAQ,EAAEC,MAAM,EAAEC,IAAI,EAAEC,IAAI,EAAE,GAAGL;IACrD,MAAM,EAAEM,IAAI,EAAE,GAAGT;IAEjB,MAAMU,KAAK,CAAC,MAAM,EAAEH,KAAK,CAAC,EAAED,OAAOK,KAAK,CAAC,EAAEH,OAAO,CAAC,CAAC,EAAEA,KAAK,CAAC,GAAG,GAAG,CAAC;IAEnE,qBACE,oBAACI;QAAMC,SAASH;qBACd,oBAACI;QACCC,WAAW;YAACd;YAAWG,cAAc,CAAC,EAAEH,UAAU,aAAa,CAAC;SAAC,CAACe,MAAM,CAACC,SAASC,IAAI,CAAC;qBAEvF,oBAACC;QACCC,SAAShB;QACTM,IAAIA;QACJL,UAAU,IAAO,OAAOA,aAAa,aAAaA,SAASC,OAAOK,KAAK,IAAI;QAC3EU,MAAK;sBAEP,oBAACC;QAAKP,WAAW,CAAC,EAAEd,UAAU,cAAc,CAAC;sBAC7C,oBAACqB;QAAKP,WAAW,CAAC,EAAEd,UAAU,OAAO,CAAC;OAAGH,eAAeQ,OAAOM,KAAK,EAAEH;AAI9E,EAAC"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/fields/RadioGroup/index.tsx"],"sourcesContent":["/* eslint-disable react/destructuring-assignment */\n/* eslint-disable react-hooks/exhaustive-deps */\n'use client'\nimport type { FieldBase, Option } from 'payload/types'\n\nimport { optionIsObject } from 'payload/types'\nimport React, { useCallback } from 'react'\n\nimport { FieldLabel } from '../../forms/FieldLabel/index.js'\nimport { useForm } from '../../forms/Form/context.js'\nimport { useField } from '../../forms/useField/index.js'\nimport { withCondition } from '../../forms/withCondition/index.js'\nimport { fieldBaseClass } from '../shared/index.js'\nimport { Radio } from './Radio/index.js'\nimport './index.scss'\n\nconst baseClass = 'radio-group'\n\nimport { FieldDescription } from '@payloadcms/ui/forms/FieldDescription'\nimport { FieldError } from '@payloadcms/ui/forms/FieldError'\nimport { useFieldProps } from '@payloadcms/ui/forms/FieldPropsProvider'\n\nimport type { FormFieldBase } from '../shared/index.js'\n\nexport type RadioFieldProps = FormFieldBase & {\n label?: FieldBase['label']\n layout?: 'horizontal' | 'vertical'\n name?: string\n onChange?: OnChange\n options?: Option[]\n path?: string\n value?: string\n width?: string\n}\n\nexport type OnChange<T = string> = (value: T) => void\n\nconst RadioGroupField: React.FC<RadioFieldProps> = (props) => {\n const {\n name,\n CustomDescription,\n CustomError,\n CustomLabel,\n className,\n descriptionProps,\n errorProps,\n label,\n labelProps,\n layout = 'horizontal',\n onChange: onChangeFromProps,\n options = [],\n path: pathFromProps,\n readOnly: readOnlyFromProps,\n required,\n style,\n validate,\n value: valueFromProps,\n width,\n } = props\n\n const { uuid } = useForm()\n\n const memoizedValidate = useCallback(\n (value, validationOptions) => {\n if (typeof validate === 'function')\n return validate(value, { ...validationOptions, options, required })\n },\n [validate, options, required],\n )\n\n const { path: pathFromContext, readOnly: readOnlyFromContext } = useFieldProps()\n const readOnly = readOnlyFromProps || readOnlyFromContext\n\n const {\n path,\n setValue,\n showError,\n value: valueFromContext,\n } = useField<string>({\n path: pathFromContext || pathFromProps || name,\n validate: memoizedValidate,\n })\n\n const value = valueFromContext || valueFromProps\n\n return (\n <div\n className={[\n fieldBaseClass,\n baseClass,\n className,\n `${baseClass}--layout-${layout}`,\n showError && 'error',\n readOnly && `${baseClass}--read-only`,\n ]\n .filter(Boolean)\n .join(' ')}\n style={{\n ...style,\n width,\n }}\n >\n <div className={`${baseClass}__error-wrap`}>\n <FieldError CustomError={CustomError} path={path} {...(errorProps || {})} />\n </div>\n <FieldLabel\n CustomLabel={CustomLabel}\n label={label}\n required={required}\n {...(labelProps || {})}\n />\n <ul className={`${baseClass}--group`} id={`field-${path.replace(/\\./g, '__')}`}>\n {options.map((option) => {\n let optionValue = ''\n\n if (optionIsObject(option)) {\n optionValue = option.value\n } else {\n optionValue = option\n }\n\n const isSelected = String(optionValue) === String(value)\n\n const id = `field-${path}-${optionValue}${uuid ? `-${uuid}` : ''}`\n\n return (\n <li key={`${path} - ${optionValue}`}>\n <Radio\n id={id}\n isSelected={isSelected}\n onChange={() => {\n if (typeof onChangeFromProps === 'function') {\n onChangeFromProps(optionValue)\n }\n\n if (!readOnly) {\n setValue(optionValue)\n }\n }}\n option={optionIsObject(option) ? option : { label: option, value: option }}\n path={path}\n uuid={uuid}\n />\n </li>\n )\n })}\n </ul>\n {CustomDescription !== undefined ? (\n CustomDescription\n ) : (\n <FieldDescription {...(descriptionProps || {})} />\n )}\n </div>\n )\n}\n\nexport const RadioGroup = withCondition(RadioGroupField)\n"],"names":["optionIsObject","React","useCallback","FieldLabel","useForm","useField","withCondition","fieldBaseClass","Radio","baseClass","FieldDescription","FieldError","useFieldProps","RadioGroupField","props","name","CustomDescription","CustomError","CustomLabel","className","descriptionProps","errorProps","label","labelProps","layout","onChange","onChangeFromProps","options","path","pathFromProps","readOnly","readOnlyFromProps","required","style","validate","value","valueFromProps","width","uuid","memoizedValidate","validationOptions","pathFromContext","readOnlyFromContext","setValue","showError","valueFromContext","div","filter","Boolean","join","ul","id","replace","map","option","optionValue","isSelected","String","li","key","undefined","RadioGroup"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/fields/RadioGroup/index.tsx"],"sourcesContent":["/* eslint-disable react/destructuring-assignment */\n/* eslint-disable react-hooks/exhaustive-deps */\n'use client'\nimport type { FieldBase, Option } from 'payload/types'\n\nimport { optionIsObject } from 'payload/types'\nimport React, { useCallback } from 'react'\n\nimport { FieldLabel } from '../../forms/FieldLabel/index.js'\nimport { useForm } from '../../forms/Form/context.js'\nimport { useField } from '../../forms/useField/index.js'\nimport { withCondition } from '../../forms/withCondition/index.js'\nimport { fieldBaseClass } from '../shared/index.js'\nimport { Radio } from './Radio/index.js'\nimport './index.scss'\n\nconst baseClass = 'radio-group'\n\nimport { FieldDescription } from '@payloadcms/ui/forms/FieldDescription'\nimport { FieldError } from '@payloadcms/ui/forms/FieldError'\nimport { useFieldProps } from '@payloadcms/ui/forms/FieldPropsProvider'\n\nimport type { FormFieldBase } from '../shared/index.js'\n\nexport type RadioFieldProps = FormFieldBase & {\n label?: FieldBase['label']\n layout?: 'horizontal' | 'vertical'\n name?: string\n onChange?: OnChange\n options?: Option[]\n path?: string\n value?: string\n width?: string\n}\n\nexport type OnChange<T = string> = (value: T) => void\n\nconst RadioGroupField: React.FC<RadioFieldProps> = (props) => {\n const {\n name,\n CustomDescription,\n CustomError,\n CustomLabel,\n className,\n descriptionProps,\n errorProps,\n label,\n labelProps,\n layout = 'horizontal',\n onChange: onChangeFromProps,\n options = [],\n path: pathFromProps,\n readOnly: readOnlyFromProps,\n required,\n style,\n validate,\n value: valueFromProps,\n width,\n } = props\n\n const { uuid } = useForm()\n\n const memoizedValidate = useCallback(\n (value, validationOptions) => {\n if (typeof validate === 'function')\n return validate(value, { ...validationOptions, options, required })\n },\n [validate, options, required],\n )\n\n const { path: pathFromContext, readOnly: readOnlyFromContext } = useFieldProps()\n const readOnly = readOnlyFromProps || readOnlyFromContext\n\n const {\n path,\n setValue,\n showError,\n value: valueFromContext,\n } = useField<string>({\n path: pathFromContext || pathFromProps || name,\n validate: memoizedValidate,\n })\n\n const value = valueFromContext || valueFromProps\n\n return (\n <div\n className={[\n fieldBaseClass,\n baseClass,\n className,\n `${baseClass}--layout-${layout}`,\n showError && 'error',\n readOnly && `${baseClass}--read-only`,\n ]\n .filter(Boolean)\n .join(' ')}\n style={{\n ...style,\n width,\n }}\n >\n <div className={`${baseClass}__error-wrap`}>\n <FieldError CustomError={CustomError} path={path} {...(errorProps || {})} />\n </div>\n <FieldLabel\n CustomLabel={CustomLabel}\n label={label}\n required={required}\n {...(labelProps || {})}\n />\n <ul className={`${baseClass}--group`} id={`field-${path.replace(/\\./g, '__')}`}>\n {options.map((option) => {\n let optionValue = ''\n\n if (optionIsObject(option)) {\n optionValue = option.value\n } else {\n optionValue = option\n }\n\n const isSelected = String(optionValue) === String(value)\n\n const id = `field-${path}-${optionValue}${uuid ? `-${uuid}` : ''}`\n\n return (\n <li key={`${path} - ${optionValue}`}>\n <Radio\n id={id}\n isSelected={isSelected}\n onChange={() => {\n if (typeof onChangeFromProps === 'function') {\n onChangeFromProps(optionValue)\n }\n\n if (!readOnly) {\n setValue(optionValue)\n }\n }}\n option={optionIsObject(option) ? option : { label: option, value: option }}\n path={path}\n uuid={uuid}\n />\n </li>\n )\n })}\n </ul>\n {CustomDescription !== undefined ? (\n CustomDescription\n ) : (\n <FieldDescription {...(descriptionProps || {})} />\n )}\n </div>\n )\n}\n\nexport const RadioGroup = withCondition(RadioGroupField)\n"],"names":["optionIsObject","React","useCallback","FieldLabel","useForm","useField","withCondition","fieldBaseClass","Radio","baseClass","FieldDescription","FieldError","useFieldProps","RadioGroupField","props","name","CustomDescription","CustomError","CustomLabel","className","descriptionProps","errorProps","label","labelProps","layout","onChange","onChangeFromProps","options","path","pathFromProps","readOnly","readOnlyFromProps","required","style","validate","value","valueFromProps","width","uuid","memoizedValidate","validationOptions","pathFromContext","readOnlyFromContext","setValue","showError","valueFromContext","div","filter","Boolean","join","ul","id","replace","map","option","optionValue","isSelected","String","li","key","undefined","RadioGroup"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA,iDAAiD,GACjD,8CAA8C,GAC9C;AAGA,SAASA,cAAc,QAAQ,gBAAe;AAC9C,OAAOC,SAASC,WAAW,QAAQ,QAAO;AAE1C,SAASC,UAAU,QAAQ,kCAAiC;AAC5D,SAASC,OAAO,QAAQ,8BAA6B;AACrD,SAASC,QAAQ,QAAQ,gCAA+B;AACxD,SAASC,aAAa,QAAQ,qCAAoC;AAClE,SAASC,cAAc,QAAQ,qBAAoB;AACnD,SAASC,KAAK,QAAQ,mBAAkB;AAGxC,MAAMC,YAAY;AAElB,SAASC,gBAAgB,QAAQ,wCAAuC;AACxE,SAASC,UAAU,QAAQ,kCAAiC;AAC5D,SAASC,aAAa,QAAQ,0CAAyC;AAiBvE,MAAMC,kBAA6C,CAACC;IAClD,MAAM,EACJC,IAAI,EACJC,iBAAiB,EACjBC,WAAW,EACXC,WAAW,EACXC,SAAS,EACTC,gBAAgB,EAChBC,UAAU,EACVC,KAAK,EACLC,UAAU,EACVC,SAAS,YAAY,EACrBC,UAAUC,iBAAiB,EAC3BC,UAAU,EAAE,EACZC,MAAMC,aAAa,EACnBC,UAAUC,iBAAiB,EAC3BC,QAAQ,EACRC,KAAK,EACLC,QAAQ,EACRC,OAAOC,cAAc,EACrBC,KAAK,EACN,GAAGvB;IAEJ,MAAM,EAAEwB,IAAI,EAAE,GAAGlC;IAEjB,MAAMmC,mBAAmBrC,YACvB,CAACiC,OAAOK;QACN,IAAI,OAAON,aAAa,YACtB,OAAOA,SAASC,OAAO;YAAE,GAAGK,iBAAiB;YAAEb;YAASK;QAAS;IACrE,GACA;QAACE;QAAUP;QAASK;KAAS;IAG/B,MAAM,EAAEJ,MAAMa,eAAe,EAAEX,UAAUY,mBAAmB,EAAE,GAAG9B;IACjE,MAAMkB,WAAWC,qBAAqBW;IAEtC,MAAM,EACJd,IAAI,EACJe,QAAQ,EACRC,SAAS,EACTT,OAAOU,gBAAgB,EACxB,GAAGxC,SAAiB;QACnBuB,MAAMa,mBAAmBZ,iBAAiBd;QAC1CmB,UAAUK;IACZ;IAEA,MAAMJ,QAAQU,oBAAoBT;IAElC,qBACE,oBAACU;QACC3B,WAAW;YACTZ;YACAE;YACAU;YACA,CAAC,EAAEV,UAAU,SAAS,EAAEe,OAAO,CAAC;YAChCoB,aAAa;YACbd,YAAY,CAAC,EAAErB,UAAU,WAAW,CAAC;SACtC,CACEsC,MAAM,CAACC,SACPC,IAAI,CAAC;QACRhB,OAAO;YACL,GAAGA,KAAK;YACRI;QACF;qBAEA,oBAACS;QAAI3B,WAAW,CAAC,EAAEV,UAAU,YAAY,CAAC;qBACxC,oBAACE;QAAWM,aAAaA;QAAaW,MAAMA;QAAO,GAAIP,cAAc,CAAC,CAAC;uBAEzE,oBAAClB;QACCe,aAAaA;QACbI,OAAOA;QACPU,UAAUA;QACT,GAAIT,cAAc,CAAC,CAAC;sBAEvB,oBAAC2B;QAAG/B,WAAW,CAAC,EAAEV,UAAU,OAAO,CAAC;QAAE0C,IAAI,CAAC,MAAM,EAAEvB,KAAKwB,OAAO,CAAC,OAAO,MAAM,CAAC;OAC3EzB,QAAQ0B,GAAG,CAAC,CAACC;QACZ,IAAIC,cAAc;QAElB,IAAIvD,eAAesD,SAAS;YAC1BC,cAAcD,OAAOnB,KAAK;QAC5B,OAAO;YACLoB,cAAcD;QAChB;QAEA,MAAME,aAAaC,OAAOF,iBAAiBE,OAAOtB;QAElD,MAAMgB,KAAK,CAAC,MAAM,EAAEvB,KAAK,CAAC,EAAE2B,YAAY,EAAEjB,OAAO,CAAC,CAAC,EAAEA,KAAK,CAAC,GAAG,GAAG,CAAC;QAElE,qBACE,oBAACoB;YAAGC,KAAK,CAAC,EAAE/B,KAAK,GAAG,EAAE2B,YAAY,CAAC;yBACjC,oBAAC/C;YACC2C,IAAIA;YACJK,YAAYA;YACZ/B,UAAU;gBACR,IAAI,OAAOC,sBAAsB,YAAY;oBAC3CA,kBAAkB6B;gBACpB;gBAEA,IAAI,CAACzB,UAAU;oBACba,SAASY;gBACX;YACF;YACAD,QAAQtD,eAAesD,UAAUA,SAAS;gBAAEhC,OAAOgC;gBAAQnB,OAAOmB;YAAO;YACzE1B,MAAMA;YACNU,MAAMA;;IAId,KAEDtB,sBAAsB4C,YACrB5C,kCAEA,oBAACN,kBAAsBU,oBAAoB,CAAC;AAIpD;AAEA,OAAO,MAAMyC,aAAavD,cAAcO,iBAAgB"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/fields/Relationship/AddNew/index.tsx"],"sourcesContent":["'use client'\nimport type { ClientCollectionConfig } from 'payload/types'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport React, { Fragment, useCallback, useEffect, useState } from 'react'\n\nimport type { DocumentInfoContext } from '../../../providers/DocumentInfo/types.js'\nimport type { Value } from '../types.js'\nimport type { Props } from './types.js'\n\nimport { Button } from '../../../elements/Button/index.js'\nimport { useDocumentDrawer } from '../../../elements/DocumentDrawer/index.js'\nimport * as PopupList from '../../../elements/Popup/PopupButtonList/index.js'\nimport { Popup } from '../../../elements/Popup/index.js'\nimport { Tooltip } from '../../../elements/Tooltip/index.js'\nimport { Plus } from '../../../icons/Plus/index.js'\nimport { useAuth } from '../../../providers/Auth/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport './index.scss'\nimport { useRelatedCollections } from './useRelatedCollections.js'\n\nconst baseClass = 'relationship-add-new'\n\nexport const AddNewRelation: React.FC<Props> = ({\n // dispatchOptions,\n hasMany,\n path,\n relationTo,\n setValue,\n value,\n}) => {\n const relatedCollections = useRelatedCollections(relationTo)\n const { permissions } = useAuth()\n const [show, setShow] = useState(false)\n const [selectedCollection, setSelectedCollection] = useState<string>()\n const relatedToMany = relatedCollections.length > 1\n const [collectionConfig, setCollectionConfig] = useState<ClientCollectionConfig>(() =>\n !relatedToMany ? relatedCollections[0] : undefined,\n )\n const [popupOpen, setPopupOpen] = useState(false)\n const { i18n, t } = useTranslation()\n const [showTooltip, setShowTooltip] = useState(false)\n\n const [DocumentDrawer, DocumentDrawerToggler, { isDrawerOpen, toggleDrawer }] = useDocumentDrawer(\n {\n collectionSlug: collectionConfig?.slug,\n },\n )\n\n const onSave: DocumentInfoContext['onSave'] = useCallback(\n ({ doc, operation }) => {\n if (operation === 'create') {\n const newValue: Value = Array.isArray(relationTo)\n ? {\n relationTo: collectionConfig.slug,\n value: doc.id,\n }\n : doc.id\n\n // ensure the value is not already in the array\n const isNewValue =\n Array.isArray(relationTo) && Array.isArray(value)\n ? !value.some((v) => v && typeof v === 'object' && v.value === doc.id)\n : value !== doc.id\n\n if (isNewValue) {\n // dispatchOptions({\n // collection: collectionConfig,\n // // TODO: fix this\n // // @ts-expect-error-next-line\n // type: 'ADD',\n // config,\n // docs: [doc],\n // i18n,\n // sort: true,\n // })\n\n if (hasMany) {\n setValue([...(Array.isArray(value) ? value : []), newValue])\n } else {\n setValue(newValue)\n }\n }\n\n setSelectedCollection(undefined)\n }\n },\n [relationTo, collectionConfig, hasMany, setValue, value],\n )\n\n const onPopupToggle = useCallback((state) => {\n setPopupOpen(state)\n }, [])\n\n useEffect(() => {\n if (permissions) {\n if (relatedCollections.length === 1) {\n setShow(permissions.collections[relatedCollections[0].slug].create.permission)\n } else {\n setShow(\n relatedCollections.some(\n (collection) => permissions.collections[collection.slug].create.permission,\n ),\n )\n }\n }\n }, [permissions, relatedCollections])\n\n useEffect(() => {\n if (relatedToMany && selectedCollection) {\n setCollectionConfig(\n relatedCollections.find((collection) => collection.slug === selectedCollection),\n )\n }\n }, [selectedCollection, relatedToMany, relatedCollections])\n\n useEffect(() => {\n if (relatedToMany && collectionConfig) {\n // the drawer must be rendered on the page before before opening it\n // this is why 'selectedCollection' is different from 'collectionConfig'\n toggleDrawer()\n setSelectedCollection(undefined)\n }\n }, [toggleDrawer, relatedToMany, collectionConfig])\n\n useEffect(() => {\n if (relatedToMany && !isDrawerOpen) {\n setCollectionConfig(undefined)\n }\n }, [isDrawerOpen, relatedToMany])\n\n if (show) {\n return (\n <div className={baseClass} id={`${path}-add-new`}>\n {relatedCollections.length === 1 && (\n <Fragment>\n <DocumentDrawerToggler\n className={`${baseClass}__add-button`}\n onClick={() => setShowTooltip(false)}\n onMouseEnter={() => setShowTooltip(true)}\n onMouseLeave={() => setShowTooltip(false)}\n >\n <Tooltip className={`${baseClass}__tooltip`} show={showTooltip}>\n {t('fields:addNewLabel', {\n label: getTranslation(relatedCollections[0].labels.singular, i18n),\n })}\n </Tooltip>\n <Plus />\n </DocumentDrawerToggler>\n <DocumentDrawer onSave={onSave} />\n </Fragment>\n )}\n {relatedCollections.length > 1 && (\n <Fragment>\n <Popup\n button={\n <Button\n buttonStyle=\"none\"\n className={`${baseClass}__add-button`}\n tooltip={popupOpen ? undefined : t('fields:addNew')}\n >\n <Plus />\n </Button>\n }\n buttonType=\"custom\"\n horizontalAlign=\"center\"\n onToggleOpen={onPopupToggle}\n render={({ close: closePopup }) => (\n <PopupList.ButtonGroup>\n {relatedCollections.map((relatedCollection) => {\n if (permissions.collections[relatedCollection.slug].create.permission) {\n return (\n <PopupList.Button\n className={`${baseClass}__relation-button--${relatedCollection.slug}`}\n key={relatedCollection.slug}\n onClick={() => {\n closePopup()\n setSelectedCollection(relatedCollection.slug)\n }}\n >\n {getTranslation(relatedCollection.labels.singular, i18n)}\n </PopupList.Button>\n )\n }\n\n return null\n })}\n </PopupList.ButtonGroup>\n )}\n size=\"medium\"\n />\n {collectionConfig &&\n permissions.collections[collectionConfig.slug].create.permission && (\n <DocumentDrawer onSave={onSave} />\n )}\n </Fragment>\n )}\n </div>\n )\n }\n return null\n}\n"],"names":["getTranslation","React","Fragment","useCallback","useEffect","useState","Button","useDocumentDrawer","PopupList","Popup","Tooltip","Plus","useAuth","useTranslation","useRelatedCollections","baseClass","AddNewRelation","hasMany","path","relationTo","setValue","value","relatedCollections","permissions","show","setShow","selectedCollection","setSelectedCollection","relatedToMany","length","collectionConfig","setCollectionConfig","undefined","popupOpen","setPopupOpen","i18n","t","showTooltip","setShowTooltip","DocumentDrawer","DocumentDrawerToggler","isDrawerOpen","toggleDrawer","collectionSlug","slug","onSave","doc","operation","newValue","Array","isArray","id","isNewValue","some","v","onPopupToggle","state","collections","create","permission","collection","find","div","className","onClick","onMouseEnter","onMouseLeave","label","labels","singular","button","buttonStyle","tooltip","buttonType","horizontalAlign","onToggleOpen","render","close","closePopup","ButtonGroup","map","relatedCollection","key","size"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../src/fields/Relationship/AddNew/index.tsx"],"sourcesContent":["'use client'\nimport type { ClientCollectionConfig } from 'payload/types'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport React, { Fragment, useCallback, useEffect, useState } from 'react'\n\nimport type { DocumentInfoContext } from '../../../providers/DocumentInfo/types.js'\nimport type { Value } from '../types.js'\nimport type { Props } from './types.js'\n\nimport { Button } from '../../../elements/Button/index.js'\nimport { useDocumentDrawer } from '../../../elements/DocumentDrawer/index.js'\nimport * as PopupList from '../../../elements/Popup/PopupButtonList/index.js'\nimport { Popup } from '../../../elements/Popup/index.js'\nimport { Tooltip } from '../../../elements/Tooltip/index.js'\nimport { Plus } from '../../../icons/Plus/index.js'\nimport { useAuth } from '../../../providers/Auth/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport './index.scss'\nimport { useRelatedCollections } from './useRelatedCollections.js'\n\nconst baseClass = 'relationship-add-new'\n\nexport const AddNewRelation: React.FC<Props> = ({\n // dispatchOptions,\n hasMany,\n path,\n relationTo,\n setValue,\n value,\n}) => {\n const relatedCollections = useRelatedCollections(relationTo)\n const { permissions } = useAuth()\n const [show, setShow] = useState(false)\n const [selectedCollection, setSelectedCollection] = useState<string>()\n const relatedToMany = relatedCollections.length > 1\n const [collectionConfig, setCollectionConfig] = useState<ClientCollectionConfig>(() =>\n !relatedToMany ? relatedCollections[0] : undefined,\n )\n const [popupOpen, setPopupOpen] = useState(false)\n const { i18n, t } = useTranslation()\n const [showTooltip, setShowTooltip] = useState(false)\n\n const [DocumentDrawer, DocumentDrawerToggler, { isDrawerOpen, toggleDrawer }] = useDocumentDrawer(\n {\n collectionSlug: collectionConfig?.slug,\n },\n )\n\n const onSave: DocumentInfoContext['onSave'] = useCallback(\n ({ doc, operation }) => {\n if (operation === 'create') {\n const newValue: Value = Array.isArray(relationTo)\n ? {\n relationTo: collectionConfig.slug,\n value: doc.id,\n }\n : doc.id\n\n // ensure the value is not already in the array\n const isNewValue =\n Array.isArray(relationTo) && Array.isArray(value)\n ? !value.some((v) => v && typeof v === 'object' && v.value === doc.id)\n : value !== doc.id\n\n if (isNewValue) {\n // dispatchOptions({\n // collection: collectionConfig,\n // // TODO: fix this\n // // @ts-expect-error-next-line\n // type: 'ADD',\n // config,\n // docs: [doc],\n // i18n,\n // sort: true,\n // })\n\n if (hasMany) {\n setValue([...(Array.isArray(value) ? value : []), newValue])\n } else {\n setValue(newValue)\n }\n }\n\n setSelectedCollection(undefined)\n }\n },\n [relationTo, collectionConfig, hasMany, setValue, value],\n )\n\n const onPopupToggle = useCallback((state) => {\n setPopupOpen(state)\n }, [])\n\n useEffect(() => {\n if (permissions) {\n if (relatedCollections.length === 1) {\n setShow(permissions.collections[relatedCollections[0].slug].create.permission)\n } else {\n setShow(\n relatedCollections.some(\n (collection) => permissions.collections[collection.slug].create.permission,\n ),\n )\n }\n }\n }, [permissions, relatedCollections])\n\n useEffect(() => {\n if (relatedToMany && selectedCollection) {\n setCollectionConfig(\n relatedCollections.find((collection) => collection.slug === selectedCollection),\n )\n }\n }, [selectedCollection, relatedToMany, relatedCollections])\n\n useEffect(() => {\n if (relatedToMany && collectionConfig) {\n // the drawer must be rendered on the page before before opening it\n // this is why 'selectedCollection' is different from 'collectionConfig'\n toggleDrawer()\n setSelectedCollection(undefined)\n }\n }, [toggleDrawer, relatedToMany, collectionConfig])\n\n useEffect(() => {\n if (relatedToMany && !isDrawerOpen) {\n setCollectionConfig(undefined)\n }\n }, [isDrawerOpen, relatedToMany])\n\n if (show) {\n return (\n <div className={baseClass} id={`${path}-add-new`}>\n {relatedCollections.length === 1 && (\n <Fragment>\n <DocumentDrawerToggler\n className={`${baseClass}__add-button`}\n onClick={() => setShowTooltip(false)}\n onMouseEnter={() => setShowTooltip(true)}\n onMouseLeave={() => setShowTooltip(false)}\n >\n <Tooltip className={`${baseClass}__tooltip`} show={showTooltip}>\n {t('fields:addNewLabel', {\n label: getTranslation(relatedCollections[0].labels.singular, i18n),\n })}\n </Tooltip>\n <Plus />\n </DocumentDrawerToggler>\n <DocumentDrawer onSave={onSave} />\n </Fragment>\n )}\n {relatedCollections.length > 1 && (\n <Fragment>\n <Popup\n button={\n <Button\n buttonStyle=\"none\"\n className={`${baseClass}__add-button`}\n tooltip={popupOpen ? undefined : t('fields:addNew')}\n >\n <Plus />\n </Button>\n }\n buttonType=\"custom\"\n horizontalAlign=\"center\"\n onToggleOpen={onPopupToggle}\n render={({ close: closePopup }) => (\n <PopupList.ButtonGroup>\n {relatedCollections.map((relatedCollection) => {\n if (permissions.collections[relatedCollection.slug].create.permission) {\n return (\n <PopupList.Button\n className={`${baseClass}__relation-button--${relatedCollection.slug}`}\n key={relatedCollection.slug}\n onClick={() => {\n closePopup()\n setSelectedCollection(relatedCollection.slug)\n }}\n >\n {getTranslation(relatedCollection.labels.singular, i18n)}\n </PopupList.Button>\n )\n }\n\n return null\n })}\n </PopupList.ButtonGroup>\n )}\n size=\"medium\"\n />\n {collectionConfig &&\n permissions.collections[collectionConfig.slug].create.permission && (\n <DocumentDrawer onSave={onSave} />\n )}\n </Fragment>\n )}\n </div>\n )\n }\n return null\n}\n"],"names":["getTranslation","React","Fragment","useCallback","useEffect","useState","Button","useDocumentDrawer","PopupList","Popup","Tooltip","Plus","useAuth","useTranslation","useRelatedCollections","baseClass","AddNewRelation","hasMany","path","relationTo","setValue","value","relatedCollections","permissions","show","setShow","selectedCollection","setSelectedCollection","relatedToMany","length","collectionConfig","setCollectionConfig","undefined","popupOpen","setPopupOpen","i18n","t","showTooltip","setShowTooltip","DocumentDrawer","DocumentDrawerToggler","isDrawerOpen","toggleDrawer","collectionSlug","slug","onSave","doc","operation","newValue","Array","isArray","id","isNewValue","some","v","onPopupToggle","state","collections","create","permission","collection","find","div","className","onClick","onMouseEnter","onMouseLeave","label","labels","singular","button","buttonStyle","tooltip","buttonType","horizontalAlign","onToggleOpen","render","close","closePopup","ButtonGroup","map","relatedCollection","key","size"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/fields/Relationship/AddNew/types.ts"],"sourcesContent":["import type React from 'react'\n\nimport type { Action, OptionGroup, Value } from '../types.js'\n\nexport type Props = {\n dispatchOptions: React.Dispatch<Action>\n hasMany: boolean\n options: OptionGroup[]\n path: string\n relationTo: string | string[]\n setValue: (value: unknown) => void\n value: Value | Value[]\n}\n"],"names":[],"mappings":"AAIA,WAQC"}
1
+ {"version":3,"sources":["../../../../src/fields/Relationship/AddNew/types.ts"],"sourcesContent":["import type React from 'react'\n\nimport type { Action, OptionGroup, Value } from '../types.js'\n\nexport type Props = {\n dispatchOptions: React.Dispatch<Action>\n hasMany: boolean\n options: OptionGroup[]\n path: string\n relationTo: string | string[]\n setValue: (value: unknown) => void\n value: Value | Value[]\n}\n"],"names":[],"rangeMappings":"","mappings":"AAIA,WAQC"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/fields/Relationship/AddNew/useRelatedCollections.ts"],"sourcesContent":["import type { ClientCollectionConfig } from 'payload/types'\n\nimport { useState } from 'react'\n\nimport { useConfig } from '../../../providers/Config/index.js'\n\nexport const useRelatedCollections = (relationTo: string | string[]): ClientCollectionConfig[] => {\n const config = useConfig()\n\n const [relatedCollections] = useState(() => {\n if (relationTo) {\n const relations = typeof relationTo === 'string' ? [relationTo] : relationTo\n return relations.map((relation) =>\n config.collections.find((collection) => collection.slug === relation),\n )\n }\n return []\n })\n\n return relatedCollections\n}\n"],"names":["useState","useConfig","useRelatedCollections","relationTo","config","relatedCollections","relations","map","relation","collections","find","collection","slug"],"mappings":"AAEA,SAASA,QAAQ,QAAQ,QAAO;AAEhC,SAASC,SAAS,QAAQ,qCAAoC;AAE9D,OAAO,MAAMC,wBAAwB,CAACC;IACpC,MAAMC,SAASH;IAEf,MAAM,CAACI,mBAAmB,GAAGL,SAAS;QACpC,IAAIG,YAAY;YACd,MAAMG,YAAY,OAAOH,eAAe,WAAW;gBAACA;aAAW,GAAGA;YAClE,OAAOG,UAAUC,GAAG,CAAC,CAACC,WACpBJ,OAAOK,WAAW,CAACC,IAAI,CAAC,CAACC,aAAeA,WAAWC,IAAI,KAAKJ;QAEhE;QACA,OAAO,EAAE;IACX;IAEA,OAAOH;AACT,EAAC"}
1
+ {"version":3,"sources":["../../../../src/fields/Relationship/AddNew/useRelatedCollections.ts"],"sourcesContent":["import type { ClientCollectionConfig } from 'payload/types'\n\nimport { useState } from 'react'\n\nimport { useConfig } from '../../../providers/Config/index.js'\n\nexport const useRelatedCollections = (relationTo: string | string[]): ClientCollectionConfig[] => {\n const config = useConfig()\n\n const [relatedCollections] = useState(() => {\n if (relationTo) {\n const relations = typeof relationTo === 'string' ? [relationTo] : relationTo\n return relations.map((relation) =>\n config.collections.find((collection) => collection.slug === relation),\n )\n }\n return []\n })\n\n return relatedCollections\n}\n"],"names":["useState","useConfig","useRelatedCollections","relationTo","config","relatedCollections","relations","map","relation","collections","find","collection","slug"],"rangeMappings":";;;;;;;;;;;;;;","mappings":"AAEA,SAASA,QAAQ,QAAQ,QAAO;AAEhC,SAASC,SAAS,QAAQ,qCAAoC;AAE9D,OAAO,MAAMC,wBAAwB,CAACC;IACpC,MAAMC,SAASH;IAEf,MAAM,CAACI,mBAAmB,GAAGL,SAAS;QACpC,IAAIG,YAAY;YACd,MAAMG,YAAY,OAAOH,eAAe,WAAW;gBAACA;aAAW,GAAGA;YAClE,OAAOG,UAAUC,GAAG,CAAC,CAACC,WACpBJ,OAAOK,WAAW,CAACC,IAAI,CAAC,CAACC,aAAeA,WAAWC,IAAI,KAAKJ;QAEhE;QACA,OAAO,EAAE;IACX;IAEA,OAAOH;AACT,EAAC"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/fields/Relationship/createRelationMap.ts"],"sourcesContent":["import type { Value } from './types.js'\n\ntype RelationMap = {\n [relation: string]: (number | string)[]\n}\n\ntype CreateRelationMap = (args: {\n hasMany: boolean\n relationTo: string | string[]\n value: Value | Value[] | null // really needs to be `ValueWithRelation`\n}) => RelationMap\n\nexport const createRelationMap: CreateRelationMap = ({ hasMany, relationTo, value }) => {\n const hasMultipleRelations = Array.isArray(relationTo)\n let relationMap: RelationMap\n if (Array.isArray(relationTo)) {\n relationMap = relationTo.reduce((map, current) => {\n return { ...map, [current]: [] }\n }, {})\n } else {\n relationMap = { [relationTo]: [] }\n }\n\n if (value === null) {\n return relationMap\n }\n\n const add = (relation: string, id: unknown) => {\n if ((typeof id === 'string' || typeof id === 'number') && typeof relation === 'string') {\n if (relationMap[relation]) {\n relationMap[relation].push(id)\n } else {\n relationMap[relation] = [id]\n }\n }\n }\n\n if (hasMany && Array.isArray(value)) {\n value.forEach((val) => {\n if (\n hasMultipleRelations &&\n typeof val === 'object' &&\n 'relationTo' in val &&\n 'value' in val\n ) {\n add(val.relationTo, val.value)\n }\n\n if (!hasMultipleRelations && typeof relationTo === 'string') {\n add(relationTo, val)\n }\n })\n } else if (hasMultipleRelations && Array.isArray(relationTo)) {\n if (typeof value === 'object' && 'relationTo' in value && 'value' in value) {\n add(value.relationTo, value.value)\n }\n } else {\n add(relationTo, value)\n }\n\n return relationMap\n}\n"],"names":["createRelationMap","hasMany","relationTo","value","hasMultipleRelations","Array","isArray","relationMap","reduce","map","current","add","relation","id","push","forEach","val"],"mappings":"AAYA,OAAO,MAAMA,oBAAuC,CAAC,EAAEC,OAAO,EAAEC,UAAU,EAAEC,KAAK,EAAE;IACjF,MAAMC,uBAAuBC,MAAMC,OAAO,CAACJ;IAC3C,IAAIK;IACJ,IAAIF,MAAMC,OAAO,CAACJ,aAAa;QAC7BK,cAAcL,WAAWM,MAAM,CAAC,CAACC,KAAKC;YACpC,OAAO;gBAAE,GAAGD,GAAG;gBAAE,CAACC,QAAQ,EAAE,EAAE;YAAC;QACjC,GAAG,CAAC;IACN,OAAO;QACLH,cAAc;YAAE,CAACL,WAAW,EAAE,EAAE;QAAC;IACnC;IAEA,IAAIC,UAAU,MAAM;QAClB,OAAOI;IACT;IAEA,MAAMI,MAAM,CAACC,UAAkBC;QAC7B,IAAI,AAAC,CAAA,OAAOA,OAAO,YAAY,OAAOA,OAAO,QAAO,KAAM,OAAOD,aAAa,UAAU;YACtF,IAAIL,WAAW,CAACK,SAAS,EAAE;gBACzBL,WAAW,CAACK,SAAS,CAACE,IAAI,CAACD;YAC7B,OAAO;gBACLN,WAAW,CAACK,SAAS,GAAG;oBAACC;iBAAG;YAC9B;QACF;IACF;IAEA,IAAIZ,WAAWI,MAAMC,OAAO,CAACH,QAAQ;QACnCA,MAAMY,OAAO,CAAC,CAACC;YACb,IACEZ,wBACA,OAAOY,QAAQ,YACf,gBAAgBA,OAChB,WAAWA,KACX;gBACAL,IAAIK,IAAId,UAAU,EAAEc,IAAIb,KAAK;YAC/B;YAEA,IAAI,CAACC,wBAAwB,OAAOF,eAAe,UAAU;gBAC3DS,IAAIT,YAAYc;YAClB;QACF;IACF,OAAO,IAAIZ,wBAAwBC,MAAMC,OAAO,CAACJ,aAAa;QAC5D,IAAI,OAAOC,UAAU,YAAY,gBAAgBA,SAAS,WAAWA,OAAO;YAC1EQ,IAAIR,MAAMD,UAAU,EAAEC,MAAMA,KAAK;QACnC;IACF,OAAO;QACLQ,IAAIT,YAAYC;IAClB;IAEA,OAAOI;AACT,EAAC"}
1
+ {"version":3,"sources":["../../../src/fields/Relationship/createRelationMap.ts"],"sourcesContent":["import type { Value } from './types.js'\n\ntype RelationMap = {\n [relation: string]: (number | string)[]\n}\n\ntype CreateRelationMap = (args: {\n hasMany: boolean\n relationTo: string | string[]\n value: Value | Value[] | null // really needs to be `ValueWithRelation`\n}) => RelationMap\n\nexport const createRelationMap: CreateRelationMap = ({ hasMany, relationTo, value }) => {\n const hasMultipleRelations = Array.isArray(relationTo)\n let relationMap: RelationMap\n if (Array.isArray(relationTo)) {\n relationMap = relationTo.reduce((map, current) => {\n return { ...map, [current]: [] }\n }, {})\n } else {\n relationMap = { [relationTo]: [] }\n }\n\n if (value === null) {\n return relationMap\n }\n\n const add = (relation: string, id: unknown) => {\n if ((typeof id === 'string' || typeof id === 'number') && typeof relation === 'string') {\n if (relationMap[relation]) {\n relationMap[relation].push(id)\n } else {\n relationMap[relation] = [id]\n }\n }\n }\n\n if (hasMany && Array.isArray(value)) {\n value.forEach((val) => {\n if (\n hasMultipleRelations &&\n typeof val === 'object' &&\n 'relationTo' in val &&\n 'value' in val\n ) {\n add(val.relationTo, val.value)\n }\n\n if (!hasMultipleRelations && typeof relationTo === 'string') {\n add(relationTo, val)\n }\n })\n } else if (hasMultipleRelations && Array.isArray(relationTo)) {\n if (typeof value === 'object' && 'relationTo' in value && 'value' in value) {\n add(value.relationTo, value.value)\n }\n } else {\n add(relationTo, value)\n }\n\n return relationMap\n}\n"],"names":["createRelationMap","hasMany","relationTo","value","hasMultipleRelations","Array","isArray","relationMap","reduce","map","current","add","relation","id","push","forEach","val"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAYA,OAAO,MAAMA,oBAAuC,CAAC,EAAEC,OAAO,EAAEC,UAAU,EAAEC,KAAK,EAAE;IACjF,MAAMC,uBAAuBC,MAAMC,OAAO,CAACJ;IAC3C,IAAIK;IACJ,IAAIF,MAAMC,OAAO,CAACJ,aAAa;QAC7BK,cAAcL,WAAWM,MAAM,CAAC,CAACC,KAAKC;YACpC,OAAO;gBAAE,GAAGD,GAAG;gBAAE,CAACC,QAAQ,EAAE,EAAE;YAAC;QACjC,GAAG,CAAC;IACN,OAAO;QACLH,cAAc;YAAE,CAACL,WAAW,EAAE,EAAE;QAAC;IACnC;IAEA,IAAIC,UAAU,MAAM;QAClB,OAAOI;IACT;IAEA,MAAMI,MAAM,CAACC,UAAkBC;QAC7B,IAAI,AAAC,CAAA,OAAOA,OAAO,YAAY,OAAOA,OAAO,QAAO,KAAM,OAAOD,aAAa,UAAU;YACtF,IAAIL,WAAW,CAACK,SAAS,EAAE;gBACzBL,WAAW,CAACK,SAAS,CAACE,IAAI,CAACD;YAC7B,OAAO;gBACLN,WAAW,CAACK,SAAS,GAAG;oBAACC;iBAAG;YAC9B;QACF;IACF;IAEA,IAAIZ,WAAWI,MAAMC,OAAO,CAACH,QAAQ;QACnCA,MAAMY,OAAO,CAAC,CAACC;YACb,IACEZ,wBACA,OAAOY,QAAQ,YACf,gBAAgBA,OAChB,WAAWA,KACX;gBACAL,IAAIK,IAAId,UAAU,EAAEc,IAAIb,KAAK;YAC/B;YAEA,IAAI,CAACC,wBAAwB,OAAOF,eAAe,UAAU;gBAC3DS,IAAIT,YAAYc;YAClB;QACF;IACF,OAAO,IAAIZ,wBAAwBC,MAAMC,OAAO,CAACJ,aAAa;QAC5D,IAAI,OAAOC,UAAU,YAAY,gBAAgBA,SAAS,WAAWA,OAAO;YAC1EQ,IAAIR,MAAMD,UAAU,EAAEC,MAAMA,KAAK;QACnC;IACF,OAAO;QACLQ,IAAIT,YAAYC;IAClB;IAEA,OAAOI;AACT,EAAC"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/fields/Relationship/findOptionsByValue.ts"],"sourcesContent":["import type { Option } from '../../elements/ReactSelect/types.js'\nimport type { OptionGroup, Value } from './types.js'\n\ntype Args = {\n options: OptionGroup[]\n value: Value | Value[]\n}\n\nexport const findOptionsByValue = ({ options, value }: Args): Option | Option[] => {\n if (value) {\n if (Array.isArray(value)) {\n return value.map((val) => {\n let matchedOption: Option\n\n options.forEach((optGroup) => {\n if (!matchedOption) {\n matchedOption = optGroup.options.find((option) => {\n if (typeof val === 'object') {\n return option.value === val.value && option.relationTo === val.relationTo\n }\n\n return val === option.value\n })\n }\n })\n\n return matchedOption\n })\n }\n\n let matchedOption: Option\n\n options.forEach((optGroup) => {\n if (!matchedOption) {\n matchedOption = optGroup.options.find((option) => {\n if (typeof value === 'object') {\n return option.value === value.value && option.relationTo === value.relationTo\n }\n return value === option.value\n })\n }\n })\n\n return matchedOption\n }\n\n return undefined\n}\n"],"names":["findOptionsByValue","options","value","Array","isArray","map","val","matchedOption","forEach","optGroup","find","option","relationTo","undefined"],"mappings":"AAQA,OAAO,MAAMA,qBAAqB,CAAC,EAAEC,OAAO,EAAEC,KAAK,EAAQ;IACzD,IAAIA,OAAO;QACT,IAAIC,MAAMC,OAAO,CAACF,QAAQ;YACxB,OAAOA,MAAMG,GAAG,CAAC,CAACC;gBAChB,IAAIC;gBAEJN,QAAQO,OAAO,CAAC,CAACC;oBACf,IAAI,CAACF,eAAe;wBAClBA,gBAAgBE,SAASR,OAAO,CAACS,IAAI,CAAC,CAACC;4BACrC,IAAI,OAAOL,QAAQ,UAAU;gCAC3B,OAAOK,OAAOT,KAAK,KAAKI,IAAIJ,KAAK,IAAIS,OAAOC,UAAU,KAAKN,IAAIM,UAAU;4BAC3E;4BAEA,OAAON,QAAQK,OAAOT,KAAK;wBAC7B;oBACF;gBACF;gBAEA,OAAOK;YACT;QACF;QAEA,IAAIA;QAEJN,QAAQO,OAAO,CAAC,CAACC;YACf,IAAI,CAACF,eAAe;gBAClBA,gBAAgBE,SAASR,OAAO,CAACS,IAAI,CAAC,CAACC;oBACrC,IAAI,OAAOT,UAAU,UAAU;wBAC7B,OAAOS,OAAOT,KAAK,KAAKA,MAAMA,KAAK,IAAIS,OAAOC,UAAU,KAAKV,MAAMU,UAAU;oBAC/E;oBACA,OAAOV,UAAUS,OAAOT,KAAK;gBAC/B;YACF;QACF;QAEA,OAAOK;IACT;IAEA,OAAOM;AACT,EAAC"}
1
+ {"version":3,"sources":["../../../src/fields/Relationship/findOptionsByValue.ts"],"sourcesContent":["import type { Option } from '../../elements/ReactSelect/types.js'\nimport type { OptionGroup, Value } from './types.js'\n\ntype Args = {\n options: OptionGroup[]\n value: Value | Value[]\n}\n\nexport const findOptionsByValue = ({ options, value }: Args): Option | Option[] => {\n if (value) {\n if (Array.isArray(value)) {\n return value.map((val) => {\n let matchedOption: Option\n\n options.forEach((optGroup) => {\n if (!matchedOption) {\n matchedOption = optGroup.options.find((option) => {\n if (typeof val === 'object') {\n return option.value === val.value && option.relationTo === val.relationTo\n }\n\n return val === option.value\n })\n }\n })\n\n return matchedOption\n })\n }\n\n let matchedOption: Option\n\n options.forEach((optGroup) => {\n if (!matchedOption) {\n matchedOption = optGroup.options.find((option) => {\n if (typeof value === 'object') {\n return option.value === value.value && option.relationTo === value.relationTo\n }\n return value === option.value\n })\n }\n })\n\n return matchedOption\n }\n\n return undefined\n}\n"],"names":["findOptionsByValue","options","value","Array","isArray","map","val","matchedOption","forEach","optGroup","find","option","relationTo","undefined"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAQA,OAAO,MAAMA,qBAAqB,CAAC,EAAEC,OAAO,EAAEC,KAAK,EAAQ;IACzD,IAAIA,OAAO;QACT,IAAIC,MAAMC,OAAO,CAACF,QAAQ;YACxB,OAAOA,MAAMG,GAAG,CAAC,CAACC;gBAChB,IAAIC;gBAEJN,QAAQO,OAAO,CAAC,CAACC;oBACf,IAAI,CAACF,eAAe;wBAClBA,gBAAgBE,SAASR,OAAO,CAACS,IAAI,CAAC,CAACC;4BACrC,IAAI,OAAOL,QAAQ,UAAU;gCAC3B,OAAOK,OAAOT,KAAK,KAAKI,IAAIJ,KAAK,IAAIS,OAAOC,UAAU,KAAKN,IAAIM,UAAU;4BAC3E;4BAEA,OAAON,QAAQK,OAAOT,KAAK;wBAC7B;oBACF;gBACF;gBAEA,OAAOK;YACT;QACF;QAEA,IAAIA;QAEJN,QAAQO,OAAO,CAAC,CAACC;YACf,IAAI,CAACF,eAAe;gBAClBA,gBAAgBE,SAASR,OAAO,CAACS,IAAI,CAAC,CAACC;oBACrC,IAAI,OAAOT,UAAU,UAAU;wBAC7B,OAAOS,OAAOT,KAAK,KAAKA,MAAMA,KAAK,IAAIS,OAAOC,UAAU,KAAKV,MAAMU,UAAU;oBAC/E;oBACA,OAAOV,UAAUS,OAAOT,KAAK;gBAC/B;YACF;QACF;QAEA,OAAOK;IACT;IAEA,OAAOM;AACT,EAAC"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/fields/Relationship/index.tsx"],"sourcesContent":["'use client'\nimport type { PaginatedDocs } from 'payload/database'\nimport type { Where } from 'payload/types'\n\nimport { FieldDescription } from '@payloadcms/ui/forms/FieldDescription'\nimport { FieldError } from '@payloadcms/ui/forms/FieldError'\nimport { FieldLabel } from '@payloadcms/ui/forms/FieldLabel'\nimport { useFieldProps } from '@payloadcms/ui/forms/FieldPropsProvider'\nimport { wordBoundariesRegex } from 'payload/utilities'\nimport qs from 'qs'\nimport React, { useCallback, useEffect, useReducer, useRef, useState } from 'react'\n\nimport type { DocumentDrawerProps } from '../../elements/DocumentDrawer/types.js'\nimport type { GetResults, Option, RelationshipFieldProps, Value } from './types.js'\n\nimport { ReactSelect } from '../../elements/ReactSelect/index.js'\nimport { useFormProcessing } from '../../forms/Form/context.js'\nimport { useField } from '../../forms/useField/index.js'\nimport { withCondition } from '../../forms/withCondition/index.js'\nimport { useDebouncedCallback } from '../../hooks/useDebouncedCallback.js'\nimport { useAuth } from '../../providers/Auth/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useLocale } from '../../providers/Locale/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { fieldBaseClass } from '../shared/index.js'\nimport { AddNewRelation } from './AddNew/index.js'\nimport { createRelationMap } from './createRelationMap.js'\nimport { findOptionsByValue } from './findOptionsByValue.js'\nimport './index.scss'\nimport { optionsReducer } from './optionsReducer.js'\nimport { MultiValueLabel } from './select-components/MultiValueLabel/index.js'\nimport { SingleValue } from './select-components/SingleValue/index.js'\n\nconst maxResultsPerRequest = 10\n\nconst baseClass = 'relationship'\n\nexport { RelationshipFieldProps }\n\nconst RelationshipField: React.FC<RelationshipFieldProps> = (props) => {\n const {\n name,\n CustomDescription,\n CustomError,\n CustomLabel,\n allowCreate = true,\n className,\n descriptionProps,\n errorProps,\n hasMany,\n isSortable = true,\n label,\n labelProps,\n path: pathFromProps,\n readOnly: readOnlyFromProps,\n relationTo,\n required,\n sortOptions,\n style,\n validate,\n width,\n } = props\n\n const config = useConfig()\n\n const {\n collections,\n routes: { api },\n serverURL,\n } = config\n\n const { i18n, t } = useTranslation()\n const { permissions } = useAuth()\n const { code: locale } = useLocale()\n const formProcessing = useFormProcessing()\n const hasMultipleRelations = Array.isArray(relationTo)\n const [options, dispatchOptions] = useReducer(optionsReducer, [])\n const [lastFullyLoadedRelation, setLastFullyLoadedRelation] = useState(-1)\n const [lastLoadedPage, setLastLoadedPage] = useState<Record<string, number>>({})\n const [errorLoading, setErrorLoading] = useState('')\n const [search, setSearch] = useState('')\n const [isLoading, setIsLoading] = useState(false)\n const [enableWordBoundarySearch, setEnableWordBoundarySearch] = useState(false)\n const menuIsOpen = useRef(false)\n const hasLoadedFirstPageRef = useRef(false)\n\n const memoizedValidate = useCallback(\n (value, validationOptions) => {\n if (typeof validate === 'function') {\n return validate(value, { ...validationOptions, required })\n }\n },\n [validate, required],\n )\n const { path: pathFromContext, readOnly: readOnlyFromContext } = useFieldProps()\n const readOnly = readOnlyFromProps || readOnlyFromContext\n\n const { filterOptions, initialValue, path, setValue, showError, value } = useField<\n Value | Value[]\n >({\n path: pathFromContext || pathFromProps || name,\n validate: memoizedValidate,\n })\n\n const valueRef = useRef(value)\n valueRef.current = value\n\n const [drawerIsOpen, setDrawerIsOpen] = useState(false)\n\n const getResults: GetResults = useCallback(\n async ({\n lastFullyLoadedRelation: lastFullyLoadedRelationArg,\n lastLoadedPage: lastLoadedPageArg,\n onSuccess,\n search: searchArg,\n sort,\n value: valueArg,\n }) => {\n if (!permissions) {\n return\n }\n const lastFullyLoadedRelationToUse =\n typeof lastFullyLoadedRelationArg !== 'undefined' ? lastFullyLoadedRelationArg : -1\n\n const relations = Array.isArray(relationTo) ? relationTo : [relationTo]\n const relationsToFetch =\n lastFullyLoadedRelationToUse === -1\n ? relations\n : relations.slice(lastFullyLoadedRelationToUse + 1)\n\n let resultsFetched = 0\n const relationMap = createRelationMap({\n hasMany,\n relationTo,\n value: valueArg,\n })\n\n if (!errorLoading) {\n await relationsToFetch.reduce(async (priorRelation, relation) => {\n const relationFilterOption = filterOptions?.[relation]\n\n let lastLoadedPageToUse\n if (search !== searchArg) {\n lastLoadedPageToUse = 1\n } else {\n lastLoadedPageToUse = lastLoadedPageArg[relation] + 1\n }\n await priorRelation\n\n if (relationFilterOption === false) {\n setLastFullyLoadedRelation(relations.indexOf(relation))\n return Promise.resolve()\n }\n\n if (resultsFetched < 10) {\n const collection = collections.find((coll) => coll.slug === relation)\n let fieldToSearch = collection?.defaultSort || collection?.admin?.useAsTitle || 'id'\n if (!searchArg) {\n if (typeof sortOptions === 'string') {\n fieldToSearch = sortOptions\n } else if (sortOptions?.[relation]) {\n fieldToSearch = sortOptions[relation]\n }\n }\n\n const query: {\n [key: string]: unknown\n where: Where\n } = {\n depth: 0,\n draft: true,\n limit: maxResultsPerRequest,\n locale,\n page: lastLoadedPageToUse,\n sort: fieldToSearch,\n where: {\n and: [\n {\n id: {\n not_in: relationMap[relation],\n },\n },\n ],\n },\n }\n\n if (searchArg) {\n query.where.and.push({\n [fieldToSearch]: {\n like: searchArg,\n },\n })\n }\n\n if (relationFilterOption && typeof relationFilterOption !== 'boolean') {\n query.where.and.push(relationFilterOption)\n }\n\n const response = await fetch(`${serverURL}${api}/${relation}?${qs.stringify(query)}`, {\n credentials: 'include',\n headers: {\n 'Accept-Language': i18n.language,\n },\n })\n\n if (response.ok) {\n const data: PaginatedDocs<unknown> = await response.json()\n setLastLoadedPage((prevState) => {\n return {\n ...prevState,\n [relation]: lastLoadedPageToUse,\n }\n })\n\n if (!data.nextPage) {\n setLastFullyLoadedRelation(relations.indexOf(relation))\n }\n\n if (data.docs.length > 0) {\n resultsFetched += data.docs.length\n\n dispatchOptions({\n type: 'ADD',\n collection,\n // TODO: fix this\n // @ts-expect-error-next-line\n config,\n docs: data.docs,\n i18n,\n sort,\n })\n }\n } else if (response.status === 403) {\n setLastFullyLoadedRelation(relations.indexOf(relation))\n dispatchOptions({\n type: 'ADD',\n collection,\n // TODO: fix this\n // @ts-expect-error-next-line\n config,\n docs: [],\n i18n,\n ids: relationMap[relation],\n sort,\n })\n } else {\n setErrorLoading(t('error:unspecific'))\n }\n }\n }, Promise.resolve())\n\n if (typeof onSuccess === 'function') onSuccess()\n }\n },\n [\n permissions,\n relationTo,\n hasMany,\n errorLoading,\n search,\n collections,\n locale,\n filterOptions,\n serverURL,\n sortOptions,\n api,\n i18n,\n config,\n t,\n ],\n )\n\n const updateSearch = useDebouncedCallback((searchArg: string, valueArg: Value | Value[]) => {\n void getResults({ lastLoadedPage: {}, search: searchArg, sort: true, value: valueArg })\n setSearch(searchArg)\n }, 300)\n\n const handleInputChange = useCallback(\n (searchArg: string, valueArg: Value | Value[]) => {\n if (search !== searchArg) {\n setLastLoadedPage({})\n updateSearch(searchArg, valueArg, searchArg !== '')\n }\n },\n [search, updateSearch],\n )\n\n // ///////////////////////////////////\n // Ensure we have an option for each value\n // ///////////////////////////////////\n\n useEffect(() => {\n const relationMap = createRelationMap({\n hasMany,\n relationTo,\n value,\n })\n\n void Object.entries(relationMap).reduce(async (priorRelation, [relation, ids]) => {\n await priorRelation\n\n const idsToLoad = ids.filter((id) => {\n return !options.find((optionGroup) =>\n optionGroup?.options?.find(\n (option) => option.value === id && option.relationTo === relation,\n ),\n )\n })\n\n if (idsToLoad.length > 0) {\n const query = {\n depth: 0,\n draft: true,\n limit: idsToLoad.length,\n locale,\n where: {\n id: {\n in: idsToLoad,\n },\n },\n }\n\n if (!errorLoading) {\n const response = await fetch(`${serverURL}${api}/${relation}?${qs.stringify(query)}`, {\n credentials: 'include',\n headers: {\n 'Accept-Language': i18n.language,\n },\n })\n\n const collection = collections.find((coll) => coll.slug === relation)\n let docs = []\n\n if (response.ok) {\n const data = await response.json()\n docs = data.docs\n }\n\n dispatchOptions({\n type: 'ADD',\n collection,\n // TODO: fix this\n // @ts-expect-error-next-line\n config,\n docs,\n i18n,\n ids: idsToLoad,\n sort: true,\n })\n }\n }\n }, Promise.resolve())\n }, [\n options,\n value,\n hasMany,\n errorLoading,\n collections,\n hasMultipleRelations,\n serverURL,\n api,\n i18n,\n relationTo,\n locale,\n config,\n ])\n\n // Determine if we should switch to word boundary search\n useEffect(() => {\n const relations = Array.isArray(relationTo) ? relationTo : [relationTo]\n const isIdOnly = relations.reduce((idOnly, relation) => {\n const collection = collections.find((coll) => coll.slug === relation)\n const fieldToSearch = collection?.admin?.useAsTitle || 'id'\n return fieldToSearch === 'id' && idOnly\n }, true)\n setEnableWordBoundarySearch(!isIdOnly)\n }, [relationTo, collections])\n\n // When (`relationTo` || `filterOptions` || `locale`) changes, reset component\n // Note - effect should not run on first run\n useEffect(() => {\n // If the menu is open while filterOptions changes\n // due to latency of getFormState and fast clicking into this field,\n // re-fetch options\n\n if (hasLoadedFirstPageRef.current && menuIsOpen.current) {\n setIsLoading(true)\n void getResults({\n lastLoadedPage: {},\n onSuccess: () => {\n hasLoadedFirstPageRef.current = true\n setIsLoading(false)\n },\n value: valueRef.current,\n })\n }\n\n // If the menu is not open, still reset the field state\n // because we need to get new options next time the menu\n // opens by the user\n\n dispatchOptions({ type: 'CLEAR' })\n setLastFullyLoadedRelation(-1)\n setLastLoadedPage({})\n hasLoadedFirstPageRef.current = false\n }, [\n relationTo,\n filterOptions,\n locale,\n menuIsOpen,\n getResults,\n valueRef,\n hasLoadedFirstPageRef,\n path,\n ])\n\n const onSave = useCallback<DocumentDrawerProps['onSave']>(\n (args) => {\n dispatchOptions({\n type: 'UPDATE',\n collection: args.collectionConfig,\n // TODO: fix this\n // @ts-expect-error-next-line\n config,\n doc: args.doc,\n i18n,\n })\n },\n [i18n, config],\n )\n\n const filterOption = useCallback((item: Option, searchFilter: string) => {\n if (!searchFilter) {\n return true\n }\n const r = wordBoundariesRegex(searchFilter || '')\n // breaking the labels to search into smaller parts increases performance\n const breakApartThreshold = 250\n let string = item.label\n // strings less than breakApartThreshold length won't be chunked\n while (string.length > breakApartThreshold) {\n // slicing by the next space after the length of the search input prevents slicing the string up by partial words\n const indexOfSpace = string.indexOf(' ', searchFilter.length)\n if (r.test(string.slice(0, indexOfSpace === -1 ? searchFilter.length : indexOfSpace + 1))) {\n return true\n }\n string = string.slice(indexOfSpace === -1 ? searchFilter.length : indexOfSpace + 1)\n }\n return r.test(string.slice(-breakApartThreshold))\n }, [])\n\n const valueToRender = findOptionsByValue({ options, value })\n\n if (!Array.isArray(valueToRender) && valueToRender?.value === 'null') valueToRender.value = null\n\n return (\n <div\n className={[\n fieldBaseClass,\n baseClass,\n className,\n showError && 'error',\n errorLoading && 'error-loading',\n readOnly && `${baseClass}--read-only`,\n ]\n .filter(Boolean)\n .join(' ')}\n id={`field-${path.replace(/\\./g, '__')}`}\n style={{\n ...style,\n width,\n }}\n >\n <FieldError CustomError={CustomError} path={path} {...(errorProps || {})} />\n <FieldLabel\n CustomLabel={CustomLabel}\n label={label}\n required={required}\n {...(labelProps || {})}\n />\n {!errorLoading && (\n <div className={`${baseClass}__wrap`}>\n <ReactSelect\n backspaceRemovesValue={!drawerIsOpen}\n components={{\n MultiValueLabel,\n SingleValue,\n }}\n customProps={{\n disableKeyDown: drawerIsOpen,\n disableMouseDown: drawerIsOpen,\n onSave,\n setDrawerIsOpen,\n }}\n disabled={readOnly || formProcessing}\n filterOption={enableWordBoundarySearch ? filterOption : undefined}\n isLoading={isLoading}\n isMulti={hasMany}\n isSortable={isSortable}\n onChange={\n !readOnly\n ? (selected) => {\n if (selected === null) {\n setValue(hasMany ? [] : null)\n } else if (hasMany) {\n setValue(\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) {\n setValue({\n relationTo: selected.relationTo,\n value: selected.value,\n })\n } else {\n setValue(selected.value)\n }\n }\n : undefined\n }\n onInputChange={(newSearch) => handleInputChange(newSearch, value)}\n onMenuClose={() => {\n menuIsOpen.current = false\n }}\n onMenuOpen={() => {\n menuIsOpen.current = true\n\n if (!hasLoadedFirstPageRef.current) {\n setIsLoading(true)\n void getResults({\n lastLoadedPage: {},\n onSuccess: () => {\n hasLoadedFirstPageRef.current = true\n setIsLoading(false)\n },\n value: initialValue,\n })\n }\n }}\n onMenuScrollToBottom={() => {\n void getResults({\n lastFullyLoadedRelation,\n lastLoadedPage,\n search,\n sort: false,\n value: initialValue,\n })\n }}\n options={options}\n showError={showError}\n value={valueToRender ?? null}\n />\n {!readOnly && allowCreate && (\n <AddNewRelation\n {...{\n dispatchOptions,\n hasMany,\n options,\n path,\n relationTo,\n setValue,\n value,\n }}\n />\n )}\n </div>\n )}\n {errorLoading && <div className={`${baseClass}__error-loading`}>{errorLoading}</div>}\n {CustomDescription !== undefined ? (\n CustomDescription\n ) : (\n <FieldDescription {...(descriptionProps || {})} />\n )}\n </div>\n )\n}\n\nexport const Relationship = withCondition(RelationshipField)\n"],"names":["FieldDescription","FieldError","FieldLabel","useFieldProps","wordBoundariesRegex","qs","React","useCallback","useEffect","useReducer","useRef","useState","ReactSelect","useFormProcessing","useField","withCondition","useDebouncedCallback","useAuth","useConfig","useLocale","useTranslation","fieldBaseClass","AddNewRelation","createRelationMap","findOptionsByValue","optionsReducer","MultiValueLabel","SingleValue","maxResultsPerRequest","baseClass","RelationshipField","props","name","CustomDescription","CustomError","CustomLabel","allowCreate","className","descriptionProps","errorProps","hasMany","isSortable","label","labelProps","path","pathFromProps","readOnly","readOnlyFromProps","relationTo","required","sortOptions","style","validate","width","config","collections","routes","api","serverURL","i18n","t","permissions","code","locale","formProcessing","hasMultipleRelations","Array","isArray","options","dispatchOptions","lastFullyLoadedRelation","setLastFullyLoadedRelation","lastLoadedPage","setLastLoadedPage","errorLoading","setErrorLoading","search","setSearch","isLoading","setIsLoading","enableWordBoundarySearch","setEnableWordBoundarySearch","menuIsOpen","hasLoadedFirstPageRef","memoizedValidate","value","validationOptions","pathFromContext","readOnlyFromContext","filterOptions","initialValue","setValue","showError","valueRef","current","drawerIsOpen","setDrawerIsOpen","getResults","lastFullyLoadedRelationArg","lastLoadedPageArg","onSuccess","searchArg","sort","valueArg","lastFullyLoadedRelationToUse","relations","relationsToFetch","slice","resultsFetched","relationMap","reduce","priorRelation","relation","relationFilterOption","lastLoadedPageToUse","indexOf","Promise","resolve","collection","find","coll","slug","fieldToSearch","defaultSort","admin","useAsTitle","query","depth","draft","limit","page","where","and","id","not_in","push","like","response","fetch","stringify","credentials","headers","language","ok","data","json","prevState","nextPage","docs","length","type","status","ids","updateSearch","handleInputChange","Object","entries","idsToLoad","filter","optionGroup","option","in","isIdOnly","idOnly","onSave","args","collectionConfig","doc","filterOption","item","searchFilter","r","breakApartThreshold","string","indexOfSpace","test","valueToRender","div","Boolean","join","replace","backspaceRemovesValue","components","customProps","disableKeyDown","disableMouseDown","disabled","undefined","isMulti","onChange","selected","map","onInputChange","newSearch","onMenuClose","onMenuOpen","onMenuScrollToBottom","Relationship"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/fields/Relationship/index.tsx"],"sourcesContent":["'use client'\nimport type { PaginatedDocs } from 'payload/database'\nimport type { Where } from 'payload/types'\n\nimport { FieldDescription } from '@payloadcms/ui/forms/FieldDescription'\nimport { FieldError } from '@payloadcms/ui/forms/FieldError'\nimport { FieldLabel } from '@payloadcms/ui/forms/FieldLabel'\nimport { useFieldProps } from '@payloadcms/ui/forms/FieldPropsProvider'\nimport { wordBoundariesRegex } from 'payload/utilities'\nimport qs from 'qs'\nimport React, { useCallback, useEffect, useReducer, useRef, useState } from 'react'\n\nimport type { DocumentDrawerProps } from '../../elements/DocumentDrawer/types.js'\nimport type { GetResults, Option, RelationshipFieldProps, Value } from './types.js'\n\nimport { ReactSelect } from '../../elements/ReactSelect/index.js'\nimport { useFormProcessing } from '../../forms/Form/context.js'\nimport { useField } from '../../forms/useField/index.js'\nimport { withCondition } from '../../forms/withCondition/index.js'\nimport { useDebouncedCallback } from '../../hooks/useDebouncedCallback.js'\nimport { useAuth } from '../../providers/Auth/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useLocale } from '../../providers/Locale/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { fieldBaseClass } from '../shared/index.js'\nimport { AddNewRelation } from './AddNew/index.js'\nimport { createRelationMap } from './createRelationMap.js'\nimport { findOptionsByValue } from './findOptionsByValue.js'\nimport './index.scss'\nimport { optionsReducer } from './optionsReducer.js'\nimport { MultiValueLabel } from './select-components/MultiValueLabel/index.js'\nimport { SingleValue } from './select-components/SingleValue/index.js'\n\nconst maxResultsPerRequest = 10\n\nconst baseClass = 'relationship'\n\nexport { RelationshipFieldProps }\n\nconst RelationshipField: React.FC<RelationshipFieldProps> = (props) => {\n const {\n name,\n CustomDescription,\n CustomError,\n CustomLabel,\n allowCreate = true,\n className,\n descriptionProps,\n errorProps,\n hasMany,\n isSortable = true,\n label,\n labelProps,\n path: pathFromProps,\n readOnly: readOnlyFromProps,\n relationTo,\n required,\n sortOptions,\n style,\n validate,\n width,\n } = props\n\n const config = useConfig()\n\n const {\n collections,\n routes: { api },\n serverURL,\n } = config\n\n const { i18n, t } = useTranslation()\n const { permissions } = useAuth()\n const { code: locale } = useLocale()\n const formProcessing = useFormProcessing()\n const hasMultipleRelations = Array.isArray(relationTo)\n const [options, dispatchOptions] = useReducer(optionsReducer, [])\n const [lastFullyLoadedRelation, setLastFullyLoadedRelation] = useState(-1)\n const [lastLoadedPage, setLastLoadedPage] = useState<Record<string, number>>({})\n const [errorLoading, setErrorLoading] = useState('')\n const [search, setSearch] = useState('')\n const [isLoading, setIsLoading] = useState(false)\n const [enableWordBoundarySearch, setEnableWordBoundarySearch] = useState(false)\n const menuIsOpen = useRef(false)\n const hasLoadedFirstPageRef = useRef(false)\n\n const memoizedValidate = useCallback(\n (value, validationOptions) => {\n if (typeof validate === 'function') {\n return validate(value, { ...validationOptions, required })\n }\n },\n [validate, required],\n )\n const { path: pathFromContext, readOnly: readOnlyFromContext } = useFieldProps()\n const readOnly = readOnlyFromProps || readOnlyFromContext\n\n const { filterOptions, initialValue, path, setValue, showError, value } = useField<\n Value | Value[]\n >({\n path: pathFromContext || pathFromProps || name,\n validate: memoizedValidate,\n })\n\n const valueRef = useRef(value)\n valueRef.current = value\n\n const [drawerIsOpen, setDrawerIsOpen] = useState(false)\n\n const getResults: GetResults = useCallback(\n async ({\n lastFullyLoadedRelation: lastFullyLoadedRelationArg,\n lastLoadedPage: lastLoadedPageArg,\n onSuccess,\n search: searchArg,\n sort,\n value: valueArg,\n }) => {\n if (!permissions) {\n return\n }\n const lastFullyLoadedRelationToUse =\n typeof lastFullyLoadedRelationArg !== 'undefined' ? lastFullyLoadedRelationArg : -1\n\n const relations = Array.isArray(relationTo) ? relationTo : [relationTo]\n const relationsToFetch =\n lastFullyLoadedRelationToUse === -1\n ? relations\n : relations.slice(lastFullyLoadedRelationToUse + 1)\n\n let resultsFetched = 0\n const relationMap = createRelationMap({\n hasMany,\n relationTo,\n value: valueArg,\n })\n\n if (!errorLoading) {\n await relationsToFetch.reduce(async (priorRelation, relation) => {\n const relationFilterOption = filterOptions?.[relation]\n\n let lastLoadedPageToUse\n if (search !== searchArg) {\n lastLoadedPageToUse = 1\n } else {\n lastLoadedPageToUse = lastLoadedPageArg[relation] + 1\n }\n await priorRelation\n\n if (relationFilterOption === false) {\n setLastFullyLoadedRelation(relations.indexOf(relation))\n return Promise.resolve()\n }\n\n if (resultsFetched < 10) {\n const collection = collections.find((coll) => coll.slug === relation)\n let fieldToSearch = collection?.defaultSort || collection?.admin?.useAsTitle || 'id'\n if (!searchArg) {\n if (typeof sortOptions === 'string') {\n fieldToSearch = sortOptions\n } else if (sortOptions?.[relation]) {\n fieldToSearch = sortOptions[relation]\n }\n }\n\n const query: {\n [key: string]: unknown\n where: Where\n } = {\n depth: 0,\n draft: true,\n limit: maxResultsPerRequest,\n locale,\n page: lastLoadedPageToUse,\n sort: fieldToSearch,\n where: {\n and: [\n {\n id: {\n not_in: relationMap[relation],\n },\n },\n ],\n },\n }\n\n if (searchArg) {\n query.where.and.push({\n [fieldToSearch]: {\n like: searchArg,\n },\n })\n }\n\n if (relationFilterOption && typeof relationFilterOption !== 'boolean') {\n query.where.and.push(relationFilterOption)\n }\n\n const response = await fetch(`${serverURL}${api}/${relation}?${qs.stringify(query)}`, {\n credentials: 'include',\n headers: {\n 'Accept-Language': i18n.language,\n },\n })\n\n if (response.ok) {\n const data: PaginatedDocs<unknown> = await response.json()\n setLastLoadedPage((prevState) => {\n return {\n ...prevState,\n [relation]: lastLoadedPageToUse,\n }\n })\n\n if (!data.nextPage) {\n setLastFullyLoadedRelation(relations.indexOf(relation))\n }\n\n if (data.docs.length > 0) {\n resultsFetched += data.docs.length\n\n dispatchOptions({\n type: 'ADD',\n collection,\n // TODO: fix this\n // @ts-expect-error-next-line\n config,\n docs: data.docs,\n i18n,\n sort,\n })\n }\n } else if (response.status === 403) {\n setLastFullyLoadedRelation(relations.indexOf(relation))\n dispatchOptions({\n type: 'ADD',\n collection,\n // TODO: fix this\n // @ts-expect-error-next-line\n config,\n docs: [],\n i18n,\n ids: relationMap[relation],\n sort,\n })\n } else {\n setErrorLoading(t('error:unspecific'))\n }\n }\n }, Promise.resolve())\n\n if (typeof onSuccess === 'function') onSuccess()\n }\n },\n [\n permissions,\n relationTo,\n hasMany,\n errorLoading,\n search,\n collections,\n locale,\n filterOptions,\n serverURL,\n sortOptions,\n api,\n i18n,\n config,\n t,\n ],\n )\n\n const updateSearch = useDebouncedCallback((searchArg: string, valueArg: Value | Value[]) => {\n void getResults({ lastLoadedPage: {}, search: searchArg, sort: true, value: valueArg })\n setSearch(searchArg)\n }, 300)\n\n const handleInputChange = useCallback(\n (searchArg: string, valueArg: Value | Value[]) => {\n if (search !== searchArg) {\n setLastLoadedPage({})\n updateSearch(searchArg, valueArg, searchArg !== '')\n }\n },\n [search, updateSearch],\n )\n\n // ///////////////////////////////////\n // Ensure we have an option for each value\n // ///////////////////////////////////\n\n useEffect(() => {\n const relationMap = createRelationMap({\n hasMany,\n relationTo,\n value,\n })\n\n void Object.entries(relationMap).reduce(async (priorRelation, [relation, ids]) => {\n await priorRelation\n\n const idsToLoad = ids.filter((id) => {\n return !options.find((optionGroup) =>\n optionGroup?.options?.find(\n (option) => option.value === id && option.relationTo === relation,\n ),\n )\n })\n\n if (idsToLoad.length > 0) {\n const query = {\n depth: 0,\n draft: true,\n limit: idsToLoad.length,\n locale,\n where: {\n id: {\n in: idsToLoad,\n },\n },\n }\n\n if (!errorLoading) {\n const response = await fetch(`${serverURL}${api}/${relation}?${qs.stringify(query)}`, {\n credentials: 'include',\n headers: {\n 'Accept-Language': i18n.language,\n },\n })\n\n const collection = collections.find((coll) => coll.slug === relation)\n let docs = []\n\n if (response.ok) {\n const data = await response.json()\n docs = data.docs\n }\n\n dispatchOptions({\n type: 'ADD',\n collection,\n // TODO: fix this\n // @ts-expect-error-next-line\n config,\n docs,\n i18n,\n ids: idsToLoad,\n sort: true,\n })\n }\n }\n }, Promise.resolve())\n }, [\n options,\n value,\n hasMany,\n errorLoading,\n collections,\n hasMultipleRelations,\n serverURL,\n api,\n i18n,\n relationTo,\n locale,\n config,\n ])\n\n // Determine if we should switch to word boundary search\n useEffect(() => {\n const relations = Array.isArray(relationTo) ? relationTo : [relationTo]\n const isIdOnly = relations.reduce((idOnly, relation) => {\n const collection = collections.find((coll) => coll.slug === relation)\n const fieldToSearch = collection?.admin?.useAsTitle || 'id'\n return fieldToSearch === 'id' && idOnly\n }, true)\n setEnableWordBoundarySearch(!isIdOnly)\n }, [relationTo, collections])\n\n // When (`relationTo` || `filterOptions` || `locale`) changes, reset component\n // Note - effect should not run on first run\n useEffect(() => {\n // If the menu is open while filterOptions changes\n // due to latency of getFormState and fast clicking into this field,\n // re-fetch options\n\n if (hasLoadedFirstPageRef.current && menuIsOpen.current) {\n setIsLoading(true)\n void getResults({\n lastLoadedPage: {},\n onSuccess: () => {\n hasLoadedFirstPageRef.current = true\n setIsLoading(false)\n },\n value: valueRef.current,\n })\n }\n\n // If the menu is not open, still reset the field state\n // because we need to get new options next time the menu\n // opens by the user\n\n dispatchOptions({ type: 'CLEAR' })\n setLastFullyLoadedRelation(-1)\n setLastLoadedPage({})\n hasLoadedFirstPageRef.current = false\n }, [\n relationTo,\n filterOptions,\n locale,\n menuIsOpen,\n getResults,\n valueRef,\n hasLoadedFirstPageRef,\n path,\n ])\n\n const onSave = useCallback<DocumentDrawerProps['onSave']>(\n (args) => {\n dispatchOptions({\n type: 'UPDATE',\n collection: args.collectionConfig,\n // TODO: fix this\n // @ts-expect-error-next-line\n config,\n doc: args.doc,\n i18n,\n })\n },\n [i18n, config],\n )\n\n const filterOption = useCallback((item: Option, searchFilter: string) => {\n if (!searchFilter) {\n return true\n }\n const r = wordBoundariesRegex(searchFilter || '')\n // breaking the labels to search into smaller parts increases performance\n const breakApartThreshold = 250\n let string = item.label\n // strings less than breakApartThreshold length won't be chunked\n while (string.length > breakApartThreshold) {\n // slicing by the next space after the length of the search input prevents slicing the string up by partial words\n const indexOfSpace = string.indexOf(' ', searchFilter.length)\n if (r.test(string.slice(0, indexOfSpace === -1 ? searchFilter.length : indexOfSpace + 1))) {\n return true\n }\n string = string.slice(indexOfSpace === -1 ? searchFilter.length : indexOfSpace + 1)\n }\n return r.test(string.slice(-breakApartThreshold))\n }, [])\n\n const valueToRender = findOptionsByValue({ options, value })\n\n if (!Array.isArray(valueToRender) && valueToRender?.value === 'null') valueToRender.value = null\n\n return (\n <div\n className={[\n fieldBaseClass,\n baseClass,\n className,\n showError && 'error',\n errorLoading && 'error-loading',\n readOnly && `${baseClass}--read-only`,\n ]\n .filter(Boolean)\n .join(' ')}\n id={`field-${path.replace(/\\./g, '__')}`}\n style={{\n ...style,\n width,\n }}\n >\n <FieldError CustomError={CustomError} path={path} {...(errorProps || {})} />\n <FieldLabel\n CustomLabel={CustomLabel}\n label={label}\n required={required}\n {...(labelProps || {})}\n />\n {!errorLoading && (\n <div className={`${baseClass}__wrap`}>\n <ReactSelect\n backspaceRemovesValue={!drawerIsOpen}\n components={{\n MultiValueLabel,\n SingleValue,\n }}\n customProps={{\n disableKeyDown: drawerIsOpen,\n disableMouseDown: drawerIsOpen,\n onSave,\n setDrawerIsOpen,\n }}\n disabled={readOnly || formProcessing}\n filterOption={enableWordBoundarySearch ? filterOption : undefined}\n isLoading={isLoading}\n isMulti={hasMany}\n isSortable={isSortable}\n onChange={\n !readOnly\n ? (selected) => {\n if (selected === null) {\n setValue(hasMany ? [] : null)\n } else if (hasMany) {\n setValue(\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) {\n setValue({\n relationTo: selected.relationTo,\n value: selected.value,\n })\n } else {\n setValue(selected.value)\n }\n }\n : undefined\n }\n onInputChange={(newSearch) => handleInputChange(newSearch, value)}\n onMenuClose={() => {\n menuIsOpen.current = false\n }}\n onMenuOpen={() => {\n menuIsOpen.current = true\n\n if (!hasLoadedFirstPageRef.current) {\n setIsLoading(true)\n void getResults({\n lastLoadedPage: {},\n onSuccess: () => {\n hasLoadedFirstPageRef.current = true\n setIsLoading(false)\n },\n value: initialValue,\n })\n }\n }}\n onMenuScrollToBottom={() => {\n void getResults({\n lastFullyLoadedRelation,\n lastLoadedPage,\n search,\n sort: false,\n value: initialValue,\n })\n }}\n options={options}\n showError={showError}\n value={valueToRender ?? null}\n />\n {!readOnly && allowCreate && (\n <AddNewRelation\n {...{\n dispatchOptions,\n hasMany,\n options,\n path,\n relationTo,\n setValue,\n value,\n }}\n />\n )}\n </div>\n )}\n {errorLoading && <div className={`${baseClass}__error-loading`}>{errorLoading}</div>}\n {CustomDescription !== undefined ? (\n CustomDescription\n ) : (\n <FieldDescription {...(descriptionProps || {})} />\n )}\n </div>\n )\n}\n\nexport const Relationship = withCondition(RelationshipField)\n"],"names":["FieldDescription","FieldError","FieldLabel","useFieldProps","wordBoundariesRegex","qs","React","useCallback","useEffect","useReducer","useRef","useState","ReactSelect","useFormProcessing","useField","withCondition","useDebouncedCallback","useAuth","useConfig","useLocale","useTranslation","fieldBaseClass","AddNewRelation","createRelationMap","findOptionsByValue","optionsReducer","MultiValueLabel","SingleValue","maxResultsPerRequest","baseClass","RelationshipField","props","name","CustomDescription","CustomError","CustomLabel","allowCreate","className","descriptionProps","errorProps","hasMany","isSortable","label","labelProps","path","pathFromProps","readOnly","readOnlyFromProps","relationTo","required","sortOptions","style","validate","width","config","collections","routes","api","serverURL","i18n","t","permissions","code","locale","formProcessing","hasMultipleRelations","Array","isArray","options","dispatchOptions","lastFullyLoadedRelation","setLastFullyLoadedRelation","lastLoadedPage","setLastLoadedPage","errorLoading","setErrorLoading","search","setSearch","isLoading","setIsLoading","enableWordBoundarySearch","setEnableWordBoundarySearch","menuIsOpen","hasLoadedFirstPageRef","memoizedValidate","value","validationOptions","pathFromContext","readOnlyFromContext","filterOptions","initialValue","setValue","showError","valueRef","current","drawerIsOpen","setDrawerIsOpen","getResults","lastFullyLoadedRelationArg","lastLoadedPageArg","onSuccess","searchArg","sort","valueArg","lastFullyLoadedRelationToUse","relations","relationsToFetch","slice","resultsFetched","relationMap","reduce","priorRelation","relation","relationFilterOption","lastLoadedPageToUse","indexOf","Promise","resolve","collection","find","coll","slug","fieldToSearch","defaultSort","admin","useAsTitle","query","depth","draft","limit","page","where","and","id","not_in","push","like","response","fetch","stringify","credentials","headers","language","ok","data","json","prevState","nextPage","docs","length","type","status","ids","updateSearch","handleInputChange","Object","entries","idsToLoad","filter","optionGroup","option","in","isIdOnly","idOnly","onSave","args","collectionConfig","doc","filterOption","item","searchFilter","r","breakApartThreshold","string","indexOfSpace","test","valueToRender","div","Boolean","join","replace","backspaceRemovesValue","components","customProps","disableKeyDown","disableMouseDown","disabled","undefined","isMulti","onChange","selected","map","onInputChange","newSearch","onMenuClose","onMenuOpen","onMenuScrollToBottom","Relationship"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/fields/Relationship/optionsReducer.ts"],"sourcesContent":["import { getTranslation } from '@payloadcms/translations'\n\nimport type { Action, Option, OptionGroup } from './types.js'\n\nimport { formatDocTitle } from '../../utilities/formatDocTitle.js'\n\nconst reduceToIDs = (options) =>\n options.reduce((ids, option) => {\n if (option.options) {\n return [...ids, ...reduceToIDs(option.options)]\n }\n\n return [...ids, { id: option.value, relationTo: option.relationTo }]\n }, [])\n\nconst sortOptions = (options: Option[]): Option[] =>\n options.sort((a: Option, b: Option) => {\n if (\n typeof a?.label?.localeCompare === 'function' &&\n typeof b?.label?.localeCompare === 'function'\n ) {\n return a.label.localeCompare(b.label)\n }\n\n return 0\n })\n\nexport const optionsReducer = (state: OptionGroup[], action: Action): OptionGroup[] => {\n switch (action.type) {\n case 'CLEAR': {\n return []\n }\n\n case 'UPDATE': {\n const { collection, config, doc, i18n } = action\n const relation = collection.slug\n const newOptions = [...state]\n\n const docTitle = formatDocTitle({\n collectionConfig: collection,\n data: doc,\n dateFormat: config.admin.dateFormat,\n fallback: `${i18n.t('general:untitled')} - ID: ${doc.id}`,\n i18n,\n })\n\n const foundOptionGroup = newOptions.find(\n (optionGroup) => optionGroup.label === collection.labels.plural,\n )\n const foundOption = foundOptionGroup?.options?.find((option) => option.value === doc.id)\n\n if (foundOption) {\n foundOption.label = docTitle\n foundOption.relationTo = relation\n }\n\n return newOptions\n }\n\n case 'ADD': {\n const { collection, config, docs, i18n, ids = [], sort } = action\n const relation = collection.slug\n const loadedIDs = reduceToIDs(state)\n const newOptions = [...state]\n const optionsToAddTo = newOptions.find(\n (optionGroup) => optionGroup.label === collection.labels.plural,\n )\n const newSubOptions = docs.reduce((docSubOptions, doc) => {\n if (\n loadedIDs.filter((item) => item.id === doc.id && item.relationTo === relation).length ===\n 0\n ) {\n loadedIDs.push({ id: doc.id, relationTo: relation })\n\n const docTitle = formatDocTitle({\n collectionConfig: collection,\n data: doc,\n dateFormat: config.admin.dateFormat,\n fallback: `${i18n.t('general:untitled')} - ID: ${doc.id}`,\n i18n,\n })\n\n return [\n ...docSubOptions,\n {\n label: docTitle,\n relationTo: relation,\n value: doc.id,\n },\n ]\n }\n\n return docSubOptions\n }, [])\n\n ids.forEach((id) => {\n if (\n loadedIDs.filter((item) => item.id === id && item.relationTo === relation).length === 0\n ) {\n loadedIDs.push({ id, relationTo: relation })\n newSubOptions.push({\n label: `${i18n.t('general:untitled')} - ID: ${id}`,\n relationTo: relation,\n value: id,\n })\n }\n })\n\n if (optionsToAddTo) {\n const subOptions = [...optionsToAddTo.options, ...newSubOptions]\n\n optionsToAddTo.options = sort ? sortOptions(subOptions) : subOptions\n } else {\n newOptions.push({\n label: getTranslation(collection.labels.plural, i18n),\n options: sort ? sortOptions(newSubOptions) : newSubOptions,\n })\n }\n\n return newOptions\n }\n\n default: {\n return state\n }\n }\n}\n"],"names":["getTranslation","formatDocTitle","reduceToIDs","options","reduce","ids","option","id","value","relationTo","sortOptions","sort","a","b","label","localeCompare","optionsReducer","state","action","type","collection","config","doc","i18n","relation","slug","newOptions","docTitle","collectionConfig","data","dateFormat","admin","fallback","t","foundOptionGroup","find","optionGroup","labels","plural","foundOption","docs","loadedIDs","optionsToAddTo","newSubOptions","docSubOptions","filter","item","length","push","forEach","subOptions"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/fields/Relationship/optionsReducer.ts"],"sourcesContent":["import { getTranslation } from '@payloadcms/translations'\n\nimport type { Action, Option, OptionGroup } from './types.js'\n\nimport { formatDocTitle } from '../../utilities/formatDocTitle.js'\n\nconst reduceToIDs = (options) =>\n options.reduce((ids, option) => {\n if (option.options) {\n return [...ids, ...reduceToIDs(option.options)]\n }\n\n return [...ids, { id: option.value, relationTo: option.relationTo }]\n }, [])\n\nconst sortOptions = (options: Option[]): Option[] =>\n options.sort((a: Option, b: Option) => {\n if (\n typeof a?.label?.localeCompare === 'function' &&\n typeof b?.label?.localeCompare === 'function'\n ) {\n return a.label.localeCompare(b.label)\n }\n\n return 0\n })\n\nexport const optionsReducer = (state: OptionGroup[], action: Action): OptionGroup[] => {\n switch (action.type) {\n case 'CLEAR': {\n return []\n }\n\n case 'UPDATE': {\n const { collection, config, doc, i18n } = action\n const relation = collection.slug\n const newOptions = [...state]\n\n const docTitle = formatDocTitle({\n collectionConfig: collection,\n data: doc,\n dateFormat: config.admin.dateFormat,\n fallback: `${i18n.t('general:untitled')} - ID: ${doc.id}`,\n i18n,\n })\n\n const foundOptionGroup = newOptions.find(\n (optionGroup) => optionGroup.label === collection.labels.plural,\n )\n const foundOption = foundOptionGroup?.options?.find((option) => option.value === doc.id)\n\n if (foundOption) {\n foundOption.label = docTitle\n foundOption.relationTo = relation\n }\n\n return newOptions\n }\n\n case 'ADD': {\n const { collection, config, docs, i18n, ids = [], sort } = action\n const relation = collection.slug\n const loadedIDs = reduceToIDs(state)\n const newOptions = [...state]\n const optionsToAddTo = newOptions.find(\n (optionGroup) => optionGroup.label === collection.labels.plural,\n )\n const newSubOptions = docs.reduce((docSubOptions, doc) => {\n if (\n loadedIDs.filter((item) => item.id === doc.id && item.relationTo === relation).length ===\n 0\n ) {\n loadedIDs.push({ id: doc.id, relationTo: relation })\n\n const docTitle = formatDocTitle({\n collectionConfig: collection,\n data: doc,\n dateFormat: config.admin.dateFormat,\n fallback: `${i18n.t('general:untitled')} - ID: ${doc.id}`,\n i18n,\n })\n\n return [\n ...docSubOptions,\n {\n label: docTitle,\n relationTo: relation,\n value: doc.id,\n },\n ]\n }\n\n return docSubOptions\n }, [])\n\n ids.forEach((id) => {\n if (\n loadedIDs.filter((item) => item.id === id && item.relationTo === relation).length === 0\n ) {\n loadedIDs.push({ id, relationTo: relation })\n newSubOptions.push({\n label: `${i18n.t('general:untitled')} - ID: ${id}`,\n relationTo: relation,\n value: id,\n })\n }\n })\n\n if (optionsToAddTo) {\n const subOptions = [...optionsToAddTo.options, ...newSubOptions]\n\n optionsToAddTo.options = sort ? sortOptions(subOptions) : subOptions\n } else {\n newOptions.push({\n label: getTranslation(collection.labels.plural, i18n),\n options: sort ? sortOptions(newSubOptions) : newSubOptions,\n })\n }\n\n return newOptions\n }\n\n default: {\n return state\n }\n }\n}\n"],"names":["getTranslation","formatDocTitle","reduceToIDs","options","reduce","ids","option","id","value","relationTo","sortOptions","sort","a","b","label","localeCompare","optionsReducer","state","action","type","collection","config","doc","i18n","relation","slug","newOptions","docTitle","collectionConfig","data","dateFormat","admin","fallback","t","foundOptionGroup","find","optionGroup","labels","plural","foundOption","docs","loadedIDs","optionsToAddTo","newSubOptions","docSubOptions","filter","item","length","push","forEach","subOptions"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/fields/Relationship/select-components/MultiValueLabel/index.tsx"],"sourcesContent":["'use client'\nimport type { MultiValueProps } from 'react-select'\n\nimport React, { Fragment, useEffect, useState } from 'react'\nimport { components } from 'react-select'\n\nimport type { Option } from '../../types.js'\n\nimport { useDocumentDrawer } from '../../../../elements/DocumentDrawer/index.js'\nimport { Tooltip } from '../../../../elements/Tooltip/index.js'\nimport { Edit } from '../../../../icons/Edit/index.js'\nimport { useAuth } from '../../../../providers/Auth/index.js'\nimport { useTranslation } from '../../../../providers/Translation/index.js'\nimport './index.scss'\n\nconst baseClass = 'relationship--multi-value-label'\n\nexport const MultiValueLabel: React.FC<MultiValueProps<Option>> = (props) => {\n const {\n data: { label, relationTo, value },\n selectProps: {\n // @ts-expect-error-next-line // TODO Fix this - moduleResolution 16 breaks our declare module\n customProps: {\n // @ts-expect-error-next-line// TODO Fix this - moduleResolution 16 breaks our declare module\n draggableProps,\n // @ts-expect-error-next-line // TODO Fix this - moduleResolution 16 breaks our declare module\n setDrawerIsOpen,\n // onSave,\n } = {},\n } = {},\n } = props\n\n const { permissions } = useAuth()\n const [showTooltip, setShowTooltip] = useState(false)\n const { t } = useTranslation()\n const hasReadPermission = Boolean(permissions?.collections?.[relationTo]?.read?.permission)\n\n const [DocumentDrawer, DocumentDrawerToggler, { isDrawerOpen }] = useDocumentDrawer({\n id: value?.toString(),\n collectionSlug: relationTo,\n })\n\n useEffect(() => {\n if (typeof setDrawerIsOpen === 'function') setDrawerIsOpen(isDrawerOpen)\n }, [isDrawerOpen, setDrawerIsOpen])\n\n return (\n <div className={baseClass}>\n <div className={`${baseClass}__content`}>\n <components.MultiValueLabel\n {...props}\n innerProps={{\n className: `${baseClass}__text`,\n ...(draggableProps || {}),\n }}\n />\n </div>\n {relationTo && hasReadPermission && (\n <Fragment>\n <DocumentDrawerToggler\n aria-label={`Edit ${label}`}\n className={`${baseClass}__drawer-toggler`}\n onClick={() => setShowTooltip(false)}\n onMouseDown={(e) => e.stopPropagation()} // prevents react-select dropdown from opening\n onMouseEnter={() => setShowTooltip(true)}\n onMouseLeave={() => setShowTooltip(false)}\n onTouchEnd={(e) => e.stopPropagation()} // prevents react-select dropdown from opening\n >\n <Tooltip className={`${baseClass}__tooltip`} show={showTooltip}>\n {t('general:editLabel', { label: '' })}\n </Tooltip>\n <Edit />\n </DocumentDrawerToggler>\n <DocumentDrawer onSave={/* onSave */ null} />\n </Fragment>\n )}\n </div>\n )\n}\n"],"names":["React","Fragment","useEffect","useState","components","useDocumentDrawer","Tooltip","Edit","useAuth","useTranslation","baseClass","MultiValueLabel","props","data","label","relationTo","value","selectProps","customProps","draggableProps","setDrawerIsOpen","permissions","showTooltip","setShowTooltip","t","hasReadPermission","Boolean","collections","read","permission","DocumentDrawer","DocumentDrawerToggler","isDrawerOpen","id","toString","collectionSlug","div","className","innerProps","aria-label","onClick","onMouseDown","e","stopPropagation","onMouseEnter","onMouseLeave","onTouchEnd","show","onSave"],"mappings":"AAAA;AAGA,OAAOA,SAASC,QAAQ,EAAEC,SAAS,EAAEC,QAAQ,QAAQ,QAAO;AAC5D,SAASC,UAAU,QAAQ,eAAc;AAIzC,SAASC,iBAAiB,QAAQ,+CAA8C;AAChF,SAASC,OAAO,QAAQ,wCAAuC;AAC/D,SAASC,IAAI,QAAQ,kCAAiC;AACtD,SAASC,OAAO,QAAQ,sCAAqC;AAC7D,SAASC,cAAc,QAAQ,6CAA4C;AAG3E,MAAMC,YAAY;AAElB,OAAO,MAAMC,kBAAqD,CAACC;IACjE,MAAM,EACJC,MAAM,EAAEC,KAAK,EAAEC,UAAU,EAAEC,KAAK,EAAE,EAClCC,aAAa,EACX,8FAA8F;IAC9FC,aAAa,EACX,6FAA6F;IAC7FC,cAAc,EACd,8FAA8F;IAC9FC,eAAe,EAEhB,GAAG,CAAC,CAAC,EACP,GAAG,CAAC,CAAC,EACP,GAAGR;IAEJ,MAAM,EAAES,WAAW,EAAE,GAAGb;IACxB,MAAM,CAACc,aAAaC,eAAe,GAAGpB,SAAS;IAC/C,MAAM,EAAEqB,CAAC,EAAE,GAAGf;IACd,MAAMgB,oBAAoBC,QAAQL,aAAaM,aAAa,CAACZ,WAAW,EAAEa,MAAMC;IAEhF,MAAM,CAACC,gBAAgBC,uBAAuB,EAAEC,YAAY,EAAE,CAAC,GAAG3B,kBAAkB;QAClF4B,IAAIjB,OAAOkB;QACXC,gBAAgBpB;IAClB;IAEAb,UAAU;QACR,IAAI,OAAOkB,oBAAoB,YAAYA,gBAAgBY;IAC7D,GAAG;QAACA;QAAcZ;KAAgB;IAElC,qBACE,oBAACgB;QAAIC,WAAW3B;qBACd,oBAAC0B;QAAIC,WAAW,CAAC,EAAE3B,UAAU,SAAS,CAAC;qBACrC,oBAACN,WAAWO,eAAe;QACxB,GAAGC,KAAK;QACT0B,YAAY;YACVD,WAAW,CAAC,EAAE3B,UAAU,MAAM,CAAC;YAC/B,GAAIS,kBAAkB,CAAC,CAAC;QAC1B;SAGHJ,cAAcU,mCACb,oBAACxB,8BACC,oBAAC8B;QACCQ,cAAY,CAAC,KAAK,EAAEzB,MAAM,CAAC;QAC3BuB,WAAW,CAAC,EAAE3B,UAAU,gBAAgB,CAAC;QACzC8B,SAAS,IAAMjB,eAAe;QAC9BkB,aAAa,CAACC,IAAMA,EAAEC,eAAe;QACrCC,cAAc,IAAMrB,eAAe;QACnCsB,cAAc,IAAMtB,eAAe;QACnCuB,YAAY,CAACJ,IAAMA,EAAEC,eAAe;qBAEpC,oBAACrC;QAAQ+B,WAAW,CAAC,EAAE3B,UAAU,SAAS,CAAC;QAAEqC,MAAMzB;OAChDE,EAAE,qBAAqB;QAAEV,OAAO;IAAG,mBAEtC,oBAACP,4BAEH,oBAACuB;QAAekB,QAAqB;;AAK/C,EAAC"}
1
+ {"version":3,"sources":["../../../../../src/fields/Relationship/select-components/MultiValueLabel/index.tsx"],"sourcesContent":["'use client'\nimport type { MultiValueProps } from 'react-select'\n\nimport React, { Fragment, useEffect, useState } from 'react'\nimport { components } from 'react-select'\n\nimport type { Option } from '../../types.js'\n\nimport { useDocumentDrawer } from '../../../../elements/DocumentDrawer/index.js'\nimport { Tooltip } from '../../../../elements/Tooltip/index.js'\nimport { Edit } from '../../../../icons/Edit/index.js'\nimport { useAuth } from '../../../../providers/Auth/index.js'\nimport { useTranslation } from '../../../../providers/Translation/index.js'\nimport './index.scss'\n\nconst baseClass = 'relationship--multi-value-label'\n\nexport const MultiValueLabel: React.FC<MultiValueProps<Option>> = (props) => {\n const {\n data: { label, relationTo, value },\n selectProps: {\n // @ts-expect-error-next-line // TODO Fix this - moduleResolution 16 breaks our declare module\n customProps: {\n // @ts-expect-error-next-line// TODO Fix this - moduleResolution 16 breaks our declare module\n draggableProps,\n // @ts-expect-error-next-line // TODO Fix this - moduleResolution 16 breaks our declare module\n setDrawerIsOpen,\n // onSave,\n } = {},\n } = {},\n } = props\n\n const { permissions } = useAuth()\n const [showTooltip, setShowTooltip] = useState(false)\n const { t } = useTranslation()\n const hasReadPermission = Boolean(permissions?.collections?.[relationTo]?.read?.permission)\n\n const [DocumentDrawer, DocumentDrawerToggler, { isDrawerOpen }] = useDocumentDrawer({\n id: value?.toString(),\n collectionSlug: relationTo,\n })\n\n useEffect(() => {\n if (typeof setDrawerIsOpen === 'function') setDrawerIsOpen(isDrawerOpen)\n }, [isDrawerOpen, setDrawerIsOpen])\n\n return (\n <div className={baseClass}>\n <div className={`${baseClass}__content`}>\n <components.MultiValueLabel\n {...props}\n innerProps={{\n className: `${baseClass}__text`,\n ...(draggableProps || {}),\n }}\n />\n </div>\n {relationTo && hasReadPermission && (\n <Fragment>\n <DocumentDrawerToggler\n aria-label={`Edit ${label}`}\n className={`${baseClass}__drawer-toggler`}\n onClick={() => setShowTooltip(false)}\n onMouseDown={(e) => e.stopPropagation()} // prevents react-select dropdown from opening\n onMouseEnter={() => setShowTooltip(true)}\n onMouseLeave={() => setShowTooltip(false)}\n onTouchEnd={(e) => e.stopPropagation()} // prevents react-select dropdown from opening\n >\n <Tooltip className={`${baseClass}__tooltip`} show={showTooltip}>\n {t('general:editLabel', { label: '' })}\n </Tooltip>\n <Edit />\n </DocumentDrawerToggler>\n <DocumentDrawer onSave={/* onSave */ null} />\n </Fragment>\n )}\n </div>\n )\n}\n"],"names":["React","Fragment","useEffect","useState","components","useDocumentDrawer","Tooltip","Edit","useAuth","useTranslation","baseClass","MultiValueLabel","props","data","label","relationTo","value","selectProps","customProps","draggableProps","setDrawerIsOpen","permissions","showTooltip","setShowTooltip","t","hasReadPermission","Boolean","collections","read","permission","DocumentDrawer","DocumentDrawerToggler","isDrawerOpen","id","toString","collectionSlug","div","className","innerProps","aria-label","onClick","onMouseDown","e","stopPropagation","onMouseEnter","onMouseLeave","onTouchEnd","show","onSave"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA;AAGA,OAAOA,SAASC,QAAQ,EAAEC,SAAS,EAAEC,QAAQ,QAAQ,QAAO;AAC5D,SAASC,UAAU,QAAQ,eAAc;AAIzC,SAASC,iBAAiB,QAAQ,+CAA8C;AAChF,SAASC,OAAO,QAAQ,wCAAuC;AAC/D,SAASC,IAAI,QAAQ,kCAAiC;AACtD,SAASC,OAAO,QAAQ,sCAAqC;AAC7D,SAASC,cAAc,QAAQ,6CAA4C;AAG3E,MAAMC,YAAY;AAElB,OAAO,MAAMC,kBAAqD,CAACC;IACjE,MAAM,EACJC,MAAM,EAAEC,KAAK,EAAEC,UAAU,EAAEC,KAAK,EAAE,EAClCC,aAAa,EACX,8FAA8F;IAC9FC,aAAa,EACX,6FAA6F;IAC7FC,cAAc,EACd,8FAA8F;IAC9FC,eAAe,EAEhB,GAAG,CAAC,CAAC,EACP,GAAG,CAAC,CAAC,EACP,GAAGR;IAEJ,MAAM,EAAES,WAAW,EAAE,GAAGb;IACxB,MAAM,CAACc,aAAaC,eAAe,GAAGpB,SAAS;IAC/C,MAAM,EAAEqB,CAAC,EAAE,GAAGf;IACd,MAAMgB,oBAAoBC,QAAQL,aAAaM,aAAa,CAACZ,WAAW,EAAEa,MAAMC;IAEhF,MAAM,CAACC,gBAAgBC,uBAAuB,EAAEC,YAAY,EAAE,CAAC,GAAG3B,kBAAkB;QAClF4B,IAAIjB,OAAOkB;QACXC,gBAAgBpB;IAClB;IAEAb,UAAU;QACR,IAAI,OAAOkB,oBAAoB,YAAYA,gBAAgBY;IAC7D,GAAG;QAACA;QAAcZ;KAAgB;IAElC,qBACE,oBAACgB;QAAIC,WAAW3B;qBACd,oBAAC0B;QAAIC,WAAW,CAAC,EAAE3B,UAAU,SAAS,CAAC;qBACrC,oBAACN,WAAWO,eAAe;QACxB,GAAGC,KAAK;QACT0B,YAAY;YACVD,WAAW,CAAC,EAAE3B,UAAU,MAAM,CAAC;YAC/B,GAAIS,kBAAkB,CAAC,CAAC;QAC1B;SAGHJ,cAAcU,mCACb,oBAACxB,8BACC,oBAAC8B;QACCQ,cAAY,CAAC,KAAK,EAAEzB,MAAM,CAAC;QAC3BuB,WAAW,CAAC,EAAE3B,UAAU,gBAAgB,CAAC;QACzC8B,SAAS,IAAMjB,eAAe;QAC9BkB,aAAa,CAACC,IAAMA,EAAEC,eAAe;QACrCC,cAAc,IAAMrB,eAAe;QACnCsB,cAAc,IAAMtB,eAAe;QACnCuB,YAAY,CAACJ,IAAMA,EAAEC,eAAe;qBAEpC,oBAACrC;QAAQ+B,WAAW,CAAC,EAAE3B,UAAU,SAAS,CAAC;QAAEqC,MAAMzB;OAChDE,EAAE,qBAAqB;QAAEV,OAAO;IAAG,mBAEtC,oBAACP,4BAEH,oBAACuB;QAAekB,QAAqB;;AAK/C,EAAC"}