@payloadcms/ui 3.68.0-internal-debug.2eb12b9 → 3.68.0-internal-debug.185cc5f

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 (253) hide show
  1. package/dist/elements/AnimateHeight/usePatchAnimateHeight.js +2 -2
  2. package/dist/elements/AnimateHeight/usePatchAnimateHeight.js.map +1 -1
  3. package/dist/elements/Autosave/index.js +1 -0
  4. package/dist/elements/Autosave/index.js.map +1 -1
  5. package/dist/elements/BulkUpload/EditMany/index.js +2 -2
  6. package/dist/elements/BulkUpload/EditMany/index.js.map +1 -1
  7. package/dist/elements/BulkUpload/FormsManager/index.js +8 -8
  8. package/dist/elements/BulkUpload/FormsManager/index.js.map +1 -1
  9. package/dist/elements/BulkUpload/index.js +12 -1
  10. package/dist/elements/BulkUpload/index.js.map +1 -1
  11. package/dist/elements/Button/index.js +2 -2
  12. package/dist/elements/Button/index.js.map +1 -1
  13. package/dist/elements/Button/types.js +13 -1
  14. package/dist/elements/Button/types.js.map +1 -1
  15. package/dist/elements/Card/index.js +5 -1
  16. package/dist/elements/Card/index.js.map +1 -1
  17. package/dist/elements/CodeEditor/CodeEditor.js +2 -2
  18. package/dist/elements/CodeEditor/CodeEditor.js.map +1 -1
  19. package/dist/elements/CodeEditor/types.js +3 -1
  20. package/dist/elements/CodeEditor/types.js.map +1 -1
  21. package/dist/elements/Collapsible/index.js +8 -1
  22. package/dist/elements/Collapsible/index.js.map +1 -1
  23. package/dist/elements/Combobox/index.js +6 -0
  24. package/dist/elements/Combobox/index.js.map +1 -1
  25. package/dist/elements/DatePicker/DatePicker.js +1 -0
  26. package/dist/elements/DatePicker/DatePicker.js.map +1 -1
  27. package/dist/elements/DatePicker/getFormattedLocale.js +1 -0
  28. package/dist/elements/DatePicker/getFormattedLocale.js.map +1 -1
  29. package/dist/elements/DeleteMany/index.js +25 -1
  30. package/dist/elements/DeleteMany/index.js.map +1 -1
  31. package/dist/elements/DocumentControls/index.js +1 -1
  32. package/dist/elements/DocumentControls/index.js.map +1 -1
  33. package/dist/elements/DocumentDrawer/Provider.js +5 -1
  34. package/dist/elements/DocumentDrawer/Provider.js.map +1 -1
  35. package/dist/elements/DocumentDrawer/types.js +11 -1
  36. package/dist/elements/DocumentDrawer/types.js.map +1 -1
  37. package/dist/elements/DraggableSortable/useDraggableSortable/index.js +1 -0
  38. package/dist/elements/DraggableSortable/useDraggableSortable/index.js.map +1 -1
  39. package/dist/elements/Drawer/index.js +3 -1
  40. package/dist/elements/Drawer/index.js.map +1 -1
  41. package/dist/elements/EditMany/DrawerContent.js +15 -1
  42. package/dist/elements/EditMany/DrawerContent.js.map +1 -1
  43. package/dist/elements/EditMany/index.js +3 -1
  44. package/dist/elements/EditMany/index.js.map +1 -1
  45. package/dist/elements/FolderView/Drawers/MoveToFolder/index.js +8 -1
  46. package/dist/elements/FolderView/Drawers/MoveToFolder/index.js.map +1 -1
  47. package/dist/elements/FolderView/FolderFileCard/index.js +1 -0
  48. package/dist/elements/FolderView/FolderFileCard/index.js.map +1 -1
  49. package/dist/elements/FolderView/MoveDocToFolder/index.js +2 -3
  50. package/dist/elements/FolderView/MoveDocToFolder/index.js.map +1 -1
  51. package/dist/elements/HTMLDiff/diff/index.js +24 -3
  52. package/dist/elements/HTMLDiff/diff/index.js.map +1 -1
  53. package/dist/elements/HydrateAuthProvider/index.js +6 -1
  54. package/dist/elements/HydrateAuthProvider/index.js.map +1 -1
  55. package/dist/elements/LeaveWithoutSaving/usePreventLeave.js +3 -1
  56. package/dist/elements/LeaveWithoutSaving/usePreventLeave.js.map +1 -1
  57. package/dist/elements/Link/index.js +5 -1
  58. package/dist/elements/Link/index.js.map +1 -1
  59. package/dist/elements/ListControls/types.js +7 -1
  60. package/dist/elements/ListControls/types.js.map +1 -1
  61. package/dist/elements/ListDrawer/DrawerContent.js +2 -2
  62. package/dist/elements/ListDrawer/DrawerContent.js.map +1 -1
  63. package/dist/elements/ListDrawer/Provider.js +8 -1
  64. package/dist/elements/ListDrawer/Provider.js.map +1 -1
  65. package/dist/elements/ListDrawer/index.js +2 -1
  66. package/dist/elements/ListDrawer/index.js.map +1 -1
  67. package/dist/elements/ListDrawer/types.js +5 -1
  68. package/dist/elements/ListDrawer/types.js.map +1 -1
  69. package/dist/elements/ListHeader/TitleActions/ListBulkUploadButton.js +5 -1
  70. package/dist/elements/ListHeader/TitleActions/ListBulkUploadButton.js.map +1 -1
  71. package/dist/elements/ListSelection/index.js +11 -1
  72. package/dist/elements/ListSelection/index.js.map +1 -1
  73. package/dist/elements/LivePreview/Toolbar/Controls/index.js +1 -1
  74. package/dist/elements/LivePreview/Toolbar/Controls/index.js.map +1 -1
  75. package/dist/elements/Logout/index.js +5 -1
  76. package/dist/elements/Logout/index.js.map +1 -1
  77. package/dist/elements/Pill/index.js +5 -2
  78. package/dist/elements/Pill/index.js.map +1 -1
  79. package/dist/elements/PublishMany/index.js +3 -1
  80. package/dist/elements/PublishMany/index.js.map +1 -1
  81. package/dist/elements/QueryPresets/QueryPresetBar/index.js +1 -2
  82. package/dist/elements/QueryPresets/QueryPresetBar/index.js.map +1 -1
  83. package/dist/elements/ReactSelect/index.js +2 -2
  84. package/dist/elements/ReactSelect/index.js.map +1 -1
  85. package/dist/elements/ReactSelect/types.js +8 -1
  86. package/dist/elements/ReactSelect/types.js.map +1 -1
  87. package/dist/elements/RelationshipTable/index.js +2 -2
  88. package/dist/elements/RelationshipTable/index.js.map +1 -1
  89. package/dist/elements/RestoreMany/index.js +1 -0
  90. package/dist/elements/RestoreMany/index.js.map +1 -1
  91. package/dist/elements/SaveButton/index.js +1 -2
  92. package/dist/elements/SaveButton/index.js.map +1 -1
  93. package/dist/elements/SaveDraftButton/index.js +1 -2
  94. package/dist/elements/SaveDraftButton/index.js.map +1 -1
  95. package/dist/elements/SearchFilter/types.js +19 -1
  96. package/dist/elements/SearchFilter/types.js.map +1 -1
  97. package/dist/elements/Status/index.js +2 -2
  98. package/dist/elements/Status/index.js.map +1 -1
  99. package/dist/elements/StepNav/index.js +5 -1
  100. package/dist/elements/StepNav/index.js.map +1 -1
  101. package/dist/elements/Table/DefaultCell/fields/Select/index.js +4 -4
  102. package/dist/elements/Table/DefaultCell/fields/Select/index.js.map +1 -1
  103. package/dist/elements/Table/DefaultCell/index.js +2 -1
  104. package/dist/elements/Table/DefaultCell/index.js.map +1 -1
  105. package/dist/elements/Table/RelationshipProvider/index.js +3 -0
  106. package/dist/elements/Table/RelationshipProvider/index.js.map +1 -1
  107. package/dist/elements/Thumbnail/createThumbnail.js +12 -12
  108. package/dist/elements/Thumbnail/createThumbnail.js.map +1 -1
  109. package/dist/elements/Tooltip/index.js +3 -1
  110. package/dist/elements/Tooltip/index.js.map +1 -1
  111. package/dist/elements/UnpublishMany/index.js +3 -1
  112. package/dist/elements/UnpublishMany/index.js.map +1 -1
  113. package/dist/elements/Upload/index.js +8 -8
  114. package/dist/elements/Upload/index.js.map +1 -1
  115. package/dist/elements/WhereBuilder/Condition/Number/index.js +1 -0
  116. package/dist/elements/WhereBuilder/Condition/Number/index.js.map +1 -1
  117. package/dist/elements/WhereBuilder/Condition/Relationship/index.js +5 -6
  118. package/dist/elements/WhereBuilder/Condition/Relationship/index.js.map +1 -1
  119. package/dist/elements/WhereBuilder/Condition/Text/index.js +1 -0
  120. package/dist/elements/WhereBuilder/Condition/Text/index.js.map +1 -1
  121. package/dist/elements/WhereBuilder/index.js +2 -2
  122. package/dist/elements/WhereBuilder/index.js.map +1 -1
  123. package/dist/exports/client/index.js +26 -2
  124. package/dist/exports/client/index.js.map +1 -1
  125. package/dist/exports/shared/index.js +2 -1
  126. package/dist/exports/shared/index.js.map +1 -1
  127. package/dist/fields/Blocks/BlockSelector/index.js +3 -1
  128. package/dist/fields/Blocks/BlockSelector/index.js.map +1 -1
  129. package/dist/fields/Email/index.js +1 -1
  130. package/dist/fields/Email/index.js.map +1 -1
  131. package/dist/fields/Group/index.js +1 -1
  132. package/dist/fields/Group/index.js.map +1 -1
  133. package/dist/fields/Number/index.js +5 -3
  134. package/dist/fields/Number/index.js.map +1 -1
  135. package/dist/fields/Password/types.js +11 -1
  136. package/dist/fields/Password/types.js.map +1 -1
  137. package/dist/fields/Point/index.js +2 -2
  138. package/dist/fields/Point/index.js.map +1 -1
  139. package/dist/fields/Relationship/select-components/MultiValueLabel/index.js +4 -1
  140. package/dist/fields/Relationship/select-components/MultiValueLabel/index.js.map +1 -1
  141. package/dist/fields/Relationship/select-components/SingleValue/index.js +4 -1
  142. package/dist/fields/Relationship/select-components/SingleValue/index.js.map +1 -1
  143. package/dist/fields/Text/index.js +3 -2
  144. package/dist/fields/Text/index.js.map +1 -1
  145. package/dist/fields/Upload/Input.js +3 -1
  146. package/dist/fields/Upload/Input.js.map +1 -1
  147. package/dist/fields/Upload/types.js +1 -0
  148. package/dist/fields/Upload/types.js.map +1 -1
  149. package/dist/fields/shared/index.js +2 -3
  150. package/dist/fields/shared/index.js.map +1 -1
  151. package/dist/forms/Form/fieldReducer.js +2 -1
  152. package/dist/forms/Form/fieldReducer.js.map +1 -1
  153. package/dist/forms/Form/index.js +12 -9
  154. package/dist/forms/Form/index.js.map +1 -1
  155. package/dist/forms/Form/mergeServerFormState.js +11 -3
  156. package/dist/forms/Form/mergeServerFormState.js.map +1 -1
  157. package/dist/forms/Form/reduceToSerializableFields.js +2 -2
  158. package/dist/forms/Form/reduceToSerializableFields.js.map +1 -1
  159. package/dist/forms/Form/types.js +52 -1
  160. package/dist/forms/Form/types.js.map +1 -1
  161. package/dist/forms/NullifyField/index.js +2 -1
  162. package/dist/forms/NullifyField/index.js.map +1 -1
  163. package/dist/forms/WatchChildErrors/index.js +6 -1
  164. package/dist/forms/WatchChildErrors/index.js.map +1 -1
  165. package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.js +20 -0
  166. package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.js.map +1 -1
  167. package/dist/forms/fieldSchemasToFormState/index.js +33 -1
  168. package/dist/forms/fieldSchemasToFormState/index.js.map +1 -1
  169. package/dist/forms/fieldSchemasToFormState/isRowCollapsed.js +2 -2
  170. package/dist/forms/fieldSchemasToFormState/isRowCollapsed.js.map +1 -1
  171. package/dist/forms/fieldSchemasToFormState/iterateFields.js +16 -0
  172. package/dist/forms/fieldSchemasToFormState/iterateFields.js.map +1 -1
  173. package/dist/forms/fieldSchemasToFormState/renderField.js +2 -2
  174. package/dist/forms/fieldSchemasToFormState/renderField.js.map +1 -1
  175. package/dist/forms/fieldSchemasToFormState/serverFunctions/renderFieldServerFn.js +22 -1
  176. package/dist/forms/fieldSchemasToFormState/serverFunctions/renderFieldServerFn.js.map +1 -1
  177. package/dist/forms/fieldSchemasToFormState/types.js +5 -1
  178. package/dist/forms/fieldSchemasToFormState/types.js.map +1 -1
  179. package/dist/forms/useField/index.js +1 -0
  180. package/dist/forms/useField/index.js.map +1 -1
  181. package/dist/forms/useField/types.js +19 -1
  182. package/dist/forms/useField/types.js.map +1 -1
  183. package/dist/hooks/useControllableState.js +9 -1
  184. package/dist/hooks/useControllableState.js.map +1 -1
  185. package/dist/hooks/useDelayedRender.js +3 -1
  186. package/dist/hooks/useDelayedRender.js.map +1 -1
  187. package/dist/hooks/useHotkey.js +2 -2
  188. package/dist/hooks/useHotkey.js.map +1 -1
  189. package/dist/hooks/usePayloadAPI.js +3 -4
  190. package/dist/hooks/usePayloadAPI.js.map +1 -1
  191. package/dist/hooks/usePopupWindow.js +2 -2
  192. package/dist/hooks/usePopupWindow.js.map +1 -1
  193. package/dist/hooks/useQueue.js +15 -7
  194. package/dist/hooks/useQueue.js.map +1 -1
  195. package/dist/hooks/useResize.js +4 -3
  196. package/dist/hooks/useResize.js.map +1 -1
  197. package/dist/providers/Auth/index.js +35 -3
  198. package/dist/providers/Auth/index.js.map +1 -1
  199. package/dist/providers/Config/index.js +10 -1
  200. package/dist/providers/Config/index.js.map +1 -1
  201. package/dist/providers/DocumentInfo/index.js +6 -7
  202. package/dist/providers/DocumentInfo/index.js.map +1 -1
  203. package/dist/providers/DocumentInfo/types.js +25 -1
  204. package/dist/providers/DocumentInfo/types.js.map +1 -1
  205. package/dist/providers/Folders/index.js +44 -2
  206. package/dist/providers/Folders/index.js.map +1 -1
  207. package/dist/providers/ListQuery/types.js +5 -1
  208. package/dist/providers/ListQuery/types.js.map +1 -1
  209. package/dist/providers/LivePreview/context.js +11 -1
  210. package/dist/providers/LivePreview/context.js.map +1 -1
  211. package/dist/providers/LivePreview/index.js +7 -4
  212. package/dist/providers/LivePreview/index.js.map +1 -1
  213. package/dist/providers/Preferences/index.js +7 -2
  214. package/dist/providers/Preferences/index.js.map +1 -1
  215. package/dist/providers/RouteTransition/index.js +9 -9
  216. package/dist/providers/RouteTransition/index.js.map +1 -1
  217. package/dist/providers/Selection/index.js +7 -2
  218. package/dist/providers/Selection/index.js.map +1 -1
  219. package/dist/providers/ServerFunctions/index.js +25 -22
  220. package/dist/providers/ServerFunctions/index.js.map +1 -1
  221. package/dist/providers/TableColumns/buildColumnState/index.js +10 -9
  222. package/dist/providers/TableColumns/buildColumnState/index.js.map +1 -1
  223. package/dist/providers/TableColumns/buildColumnState/renderCell.js +4 -3
  224. package/dist/providers/TableColumns/buildColumnState/renderCell.js.map +1 -1
  225. package/dist/providers/TableColumns/types.js +17 -1
  226. package/dist/providers/TableColumns/types.js.map +1 -1
  227. package/dist/utilities/abortAndIgnore.js +4 -6
  228. package/dist/utilities/abortAndIgnore.js.map +1 -1
  229. package/dist/utilities/buildFieldSchemaMap/traverseFields.js +2 -2
  230. package/dist/utilities/buildFieldSchemaMap/traverseFields.js.map +1 -1
  231. package/dist/utilities/copyDataFromLocale.js +6 -2
  232. package/dist/utilities/copyDataFromLocale.js.map +1 -1
  233. package/dist/utilities/getDisplayedFieldValue.js +8 -8
  234. package/dist/utilities/getDisplayedFieldValue.js.map +1 -1
  235. package/dist/utilities/getFolderResultsComponentAndData.js +2 -1
  236. package/dist/utilities/getFolderResultsComponentAndData.js.map +1 -1
  237. package/dist/utilities/handleFormStateLocking.js +2 -2
  238. package/dist/utilities/handleFormStateLocking.js.map +1 -1
  239. package/dist/utilities/hasSavePermission.js +5 -1
  240. package/dist/utilities/hasSavePermission.js.map +1 -1
  241. package/dist/utilities/isURLAllowed.js +6 -6
  242. package/dist/utilities/isURLAllowed.js.map +1 -1
  243. package/dist/utilities/renderTable.js +2 -1
  244. package/dist/utilities/renderTable.js.map +1 -1
  245. package/dist/utilities/schedulePublishHandler.js +3 -1
  246. package/dist/utilities/schedulePublishHandler.js.map +1 -1
  247. package/dist/utilities/upsertPreferences.js +1 -0
  248. package/dist/utilities/upsertPreferences.js.map +1 -1
  249. package/dist/views/Edit/index.js +7 -7
  250. package/dist/views/Edit/index.js.map +1 -1
  251. package/dist/views/List/ListHeader/index.js +6 -1
  252. package/dist/views/List/ListHeader/index.js.map +1 -1
  253. package/package.json +6 -5
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/fields/Point/index.tsx"],"sourcesContent":["'use client'\nimport type { PointFieldClientComponent, PointFieldValidation } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport React, { useCallback, useMemo } from 'react'\n\nimport { RenderCustomComponent } from '../../elements/RenderCustomComponent/index.js'\nimport { FieldDescription } from '../../fields/FieldDescription/index.js'\nimport { FieldError } from '../../fields/FieldError/index.js'\nimport { FieldLabel } from '../../fields/FieldLabel/index.js'\nimport { useField } from '../../forms/useField/index.js'\nimport { withCondition } from '../../forms/withCondition/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { mergeFieldStyles } from '../mergeFieldStyles.js'\nimport './index.scss'\nimport { fieldBaseClass } from '../shared/index.js'\n\nconst baseClass = 'point'\n\nexport const PointFieldComponent: PointFieldClientComponent = (props) => {\n const {\n field,\n field: {\n admin: { className, description, placeholder, step } = {},\n label,\n localized,\n required,\n },\n path: pathFromProps,\n readOnly,\n validate,\n } = props\n\n const { i18n, t } = useTranslation()\n\n const memoizedValidate: PointFieldValidation = useCallback(\n (value, options) => {\n if (typeof validate === 'function') {\n return validate(value, { ...options, required })\n }\n },\n [validate, required],\n )\n\n const {\n customComponents: { AfterInput, BeforeInput, Description, Error, Label } = {},\n disabled,\n path,\n setValue,\n showError,\n value = [null, null],\n } = useField<[number, number]>({\n potentiallyStalePath: pathFromProps,\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 = label ? getTranslation(label, i18n) : ''\n\n return `${fieldLabel}${fieldLabel ? ' - ' : ''}${suffix}`\n }\n\n const styles = useMemo(() => mergeFieldStyles(field), [field])\n\n return (\n <div\n className={[\n fieldBaseClass,\n baseClass,\n className,\n showError && 'error',\n (readOnly || disabled) && 'read-only',\n ]\n .filter(Boolean)\n .join(' ')}\n style={styles}\n >\n <ul className={`${baseClass}__wrap`}>\n <li>\n <RenderCustomComponent\n CustomComponent={Label}\n Fallback={\n <FieldLabel\n label={getCoordinateFieldLabel('longitude')}\n localized={localized}\n path={path}\n required={required}\n />\n }\n />\n <div className=\"input-wrapper\">\n {BeforeInput}\n {/* disable eslint rule because the label is dynamic */}\n {/* eslint-disable-next-line jsx-a11y/control-has-associated-label */}\n <input\n disabled={readOnly || disabled}\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 <RenderCustomComponent\n CustomComponent={Label}\n Fallback={\n <FieldLabel\n label={getCoordinateFieldLabel('latitude')}\n localized={localized}\n path={path}\n required={required}\n />\n }\n />\n <div className=\"input-wrapper\">\n <RenderCustomComponent\n CustomComponent={Error}\n Fallback={<FieldError path={path} showError={showError} />}\n />\n {BeforeInput}\n {/* disable eslint rule because the label is dynamic */}\n {/* eslint-disable-next-line jsx-a11y/control-has-associated-label */}\n <input\n disabled={readOnly || disabled}\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 <RenderCustomComponent\n CustomComponent={Description}\n Fallback={<FieldDescription description={description} path={path} />}\n />\n </div>\n )\n}\n\nexport const PointField = withCondition(PointFieldComponent)\n"],"names":["getTranslation","React","useCallback","useMemo","RenderCustomComponent","FieldDescription","FieldError","FieldLabel","useField","withCondition","useTranslation","mergeFieldStyles","fieldBaseClass","baseClass","PointFieldComponent","props","field","admin","className","description","placeholder","step","label","localized","required","path","pathFromProps","readOnly","validate","i18n","t","memoizedValidate","value","options","customComponents","AfterInput","BeforeInput","Description","Error","Label","disabled","setValue","showError","potentiallyStalePath","handleChange","e","index","val","parseFloat","target","Number","isNaN","coordinates","getCoordinateFieldLabel","type","suffix","fieldLabel","styles","div","filter","Boolean","join","style","ul","li","CustomComponent","Fallback","input","id","replace","name","onChange","PointField"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/fields/Point/index.tsx"],"sourcesContent":["'use client'\nimport type { PointFieldClientComponent, PointFieldValidation } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport React, { useCallback, useMemo } from 'react'\n\nimport { RenderCustomComponent } from '../../elements/RenderCustomComponent/index.js'\nimport { FieldDescription } from '../../fields/FieldDescription/index.js'\nimport { FieldError } from '../../fields/FieldError/index.js'\nimport { FieldLabel } from '../../fields/FieldLabel/index.js'\nimport { useField } from '../../forms/useField/index.js'\nimport { withCondition } from '../../forms/withCondition/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { mergeFieldStyles } from '../mergeFieldStyles.js'\nimport './index.scss'\nimport { fieldBaseClass } from '../shared/index.js'\n\nconst baseClass = 'point'\n\nexport const PointFieldComponent: PointFieldClientComponent = (props) => {\n const {\n field,\n field: {\n admin: { className, description, placeholder, step } = {},\n label,\n localized,\n required,\n },\n path: pathFromProps,\n readOnly,\n validate,\n } = props\n\n const { i18n, t } = useTranslation()\n\n const memoizedValidate: PointFieldValidation = useCallback(\n (value, options) => {\n if (typeof validate === 'function') {\n return validate(value, { ...options, required })\n }\n },\n [validate, required],\n )\n\n const {\n customComponents: { AfterInput, BeforeInput, Description, Error, Label } = {},\n disabled,\n path,\n setValue,\n showError,\n value = [null, null],\n } = useField<[number, number]>({\n potentiallyStalePath: pathFromProps,\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 = label ? getTranslation(label, i18n) : ''\n\n return `${fieldLabel}${fieldLabel ? ' - ' : ''}${suffix}`\n }\n\n const styles = useMemo(() => mergeFieldStyles(field), [field])\n\n return (\n <div\n className={[\n fieldBaseClass,\n baseClass,\n className,\n showError && 'error',\n (readOnly || disabled) && 'read-only',\n ]\n .filter(Boolean)\n .join(' ')}\n style={styles}\n >\n <ul className={`${baseClass}__wrap`}>\n <li>\n <RenderCustomComponent\n CustomComponent={Label}\n Fallback={\n <FieldLabel\n label={getCoordinateFieldLabel('longitude')}\n localized={localized}\n path={path}\n required={required}\n />\n }\n />\n <div className=\"input-wrapper\">\n {BeforeInput}\n {/* disable eslint rule because the label is dynamic */}\n {/* eslint-disable-next-line jsx-a11y/control-has-associated-label */}\n <input\n disabled={readOnly || disabled}\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 <RenderCustomComponent\n CustomComponent={Label}\n Fallback={\n <FieldLabel\n label={getCoordinateFieldLabel('latitude')}\n localized={localized}\n path={path}\n required={required}\n />\n }\n />\n <div className=\"input-wrapper\">\n <RenderCustomComponent\n CustomComponent={Error}\n Fallback={<FieldError path={path} showError={showError} />}\n />\n {BeforeInput}\n {/* disable eslint rule because the label is dynamic */}\n {/* eslint-disable-next-line jsx-a11y/control-has-associated-label */}\n <input\n disabled={readOnly || disabled}\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 <RenderCustomComponent\n CustomComponent={Description}\n Fallback={<FieldDescription description={description} path={path} />}\n />\n </div>\n )\n}\n\nexport const PointField = withCondition(PointFieldComponent)\n"],"names":["getTranslation","React","useCallback","useMemo","RenderCustomComponent","FieldDescription","FieldError","FieldLabel","useField","withCondition","useTranslation","mergeFieldStyles","fieldBaseClass","baseClass","PointFieldComponent","props","field","admin","className","description","placeholder","step","label","localized","required","path","pathFromProps","readOnly","validate","i18n","t","memoizedValidate","value","options","customComponents","AfterInput","BeforeInput","Description","Error","Label","disabled","setValue","showError","potentiallyStalePath","handleChange","e","index","val","parseFloat","target","Number","isNaN","coordinates","getCoordinateFieldLabel","type","suffix","fieldLabel","styles","div","filter","Boolean","join","style","ul","li","CustomComponent","Fallback","input","id","replace","name","onChange","PointField"],"mappings":"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"}
@@ -8,7 +8,8 @@ import { useAuth } from '../../../../providers/Auth/index.js';
8
8
  import { useTranslation } from '../../../../providers/Translation/index.js';
9
9
  import './index.scss';
10
10
  const baseClass = 'relationship--multi-value-label';
11
- export const MultiValueLabel = (props)=>{
11
+ export const MultiValueLabel = // TODO Fix this - moduleResolution 16 breaks our declare module
12
+ (props)=>{
12
13
  const { data: { allowEdit, label, relationTo, value }, selectProps: { customProps: { draggableProps, onDocumentOpen } = {} } = {} } = props;
13
14
  const { permissions } = useAuth();
14
15
  const [showTooltip, setShowTooltip] = useState(false);
@@ -47,9 +48,11 @@ export const MultiValueLabel = (props)=>{
47
48
  }
48
49
  },
49
50
  onMouseDown: (e)=>e.stopPropagation(),
51
+ // prevents react-select dropdown from opening
50
52
  onMouseEnter: ()=>setShowTooltip(true),
51
53
  onMouseLeave: ()=>setShowTooltip(false),
52
54
  onTouchEnd: (e)=>e.stopPropagation(),
55
+ // prevents react-select dropdown from opening
53
56
  type: "button",
54
57
  children: [
55
58
  /*#__PURE__*/ _jsx(Tooltip, {
@@ -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, useState } from 'react'\nimport { components } from 'react-select'\n\nimport type { ReactSelectAdapterProps } from '../../../../elements/ReactSelect/types.js'\nimport type { Option } from '../../types.js'\n\nimport { Tooltip } from '../../../../elements/Tooltip/index.js'\nimport { EditIcon } 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<\n {\n selectProps: {\n // TODO Fix this - moduleResolution 16 breaks our declare module\n customProps: ReactSelectAdapterProps['customProps']\n }\n } & MultiValueProps<Option>\n> = (props) => {\n const {\n data: { allowEdit, label, relationTo, value },\n selectProps: { customProps: { draggableProps, onDocumentOpen } = {} } = {},\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)\n\n return (\n <div className={baseClass} title={label || ''}>\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 && allowEdit !== false && (\n <Fragment>\n <button\n aria-label={`Edit ${label}`}\n className={`${baseClass}__drawer-toggler`}\n onClick={(event) => {\n setShowTooltip(false)\n onDocumentOpen({\n id: value,\n collectionSlug: relationTo,\n hasReadPermission,\n openInNewTab: event.metaKey || event.ctrlKey,\n })\n }}\n onKeyDown={(e) => {\n if (e.key === 'Enter') {\n e.stopPropagation()\n }\n }}\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 type=\"button\"\n >\n <Tooltip className={`${baseClass}__tooltip`} show={showTooltip}>\n {t('general:editLabel', { label: '' })}\n </Tooltip>\n <EditIcon className={`${baseClass}__icon`} />\n </button>\n </Fragment>\n )}\n </div>\n )\n}\n"],"names":["React","Fragment","useState","components","Tooltip","EditIcon","useAuth","useTranslation","baseClass","MultiValueLabel","props","data","allowEdit","label","relationTo","value","selectProps","customProps","draggableProps","onDocumentOpen","permissions","showTooltip","setShowTooltip","t","hasReadPermission","Boolean","collections","read","div","className","title","innerProps","button","aria-label","onClick","event","id","collectionSlug","openInNewTab","metaKey","ctrlKey","onKeyDown","e","key","stopPropagation","onMouseDown","onMouseEnter","onMouseLeave","onTouchEnd","type","show"],"mappings":"AAAA;;AAGA,OAAOA,SAASC,QAAQ,EAAEC,QAAQ,QAAQ,QAAO;AACjD,SAASC,UAAU,QAAQ,eAAc;AAKzC,SAASC,OAAO,QAAQ,wCAAuC;AAC/D,SAASC,QAAQ,QAAQ,kCAAiC;AAC1D,SAASC,OAAO,QAAQ,sCAAqC;AAC7D,SAASC,cAAc,QAAQ,6CAA4C;AAC3E,OAAO,eAAc;AAErB,MAAMC,YAAY;AAElB,OAAO,MAAMC,kBAOT,CAACC;IACH,MAAM,EACJC,MAAM,EAAEC,SAAS,EAAEC,KAAK,EAAEC,UAAU,EAAEC,KAAK,EAAE,EAC7CC,aAAa,EAAEC,aAAa,EAAEC,cAAc,EAAEC,cAAc,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAC3E,GAAGT;IAEJ,MAAM,EAAEU,WAAW,EAAE,GAAGd;IACxB,MAAM,CAACe,aAAaC,eAAe,GAAGpB,SAAS;IAC/C,MAAM,EAAEqB,CAAC,EAAE,GAAGhB;IACd,MAAMiB,oBAAoBC,QAAQL,aAAaM,aAAa,CAACZ,WAAW,EAAEa;IAE1E,qBACE,MAACC;QAAIC,WAAWrB;QAAWsB,OAAOjB,SAAS;;0BACzC,KAACe;gBAAIC,WAAW,GAAGrB,UAAU,SAAS,CAAC;0BACrC,cAAA,KAACL,WAAWM,eAAe;oBACxB,GAAGC,KAAK;oBACTqB,YAAY;wBACVF,WAAW,GAAGrB,UAAU,MAAM,CAAC;wBAC/B,GAAIU,kBAAkB,CAAC,CAAC;oBAC1B;;;YAGHJ,cAAcU,qBAAqBZ,cAAc,uBAChD,KAACX;0BACC,cAAA,MAAC+B;oBACCC,cAAY,CAAC,KAAK,EAAEpB,OAAO;oBAC3BgB,WAAW,GAAGrB,UAAU,gBAAgB,CAAC;oBACzC0B,SAAS,CAACC;wBACRb,eAAe;wBACfH,eAAe;4BACbiB,IAAIrB;4BACJsB,gBAAgBvB;4BAChBU;4BACAc,cAAcH,MAAMI,OAAO,IAAIJ,MAAMK,OAAO;wBAC9C;oBACF;oBACAC,WAAW,CAACC;wBACV,IAAIA,EAAEC,GAAG,KAAK,SAAS;4BACrBD,EAAEE,eAAe;wBACnB;oBACF;oBACAC,aAAa,CAACH,IAAMA,EAAEE,eAAe;oBACrCE,cAAc,IAAMxB,eAAe;oBACnCyB,cAAc,IAAMzB,eAAe;oBACnC0B,YAAY,CAACN,IAAMA,EAAEE,eAAe;oBACpCK,MAAK;;sCAEL,KAAC7C;4BAAQyB,WAAW,GAAGrB,UAAU,SAAS,CAAC;4BAAE0C,MAAM7B;sCAChDE,EAAE,qBAAqB;gCAAEV,OAAO;4BAAG;;sCAEtC,KAACR;4BAASwB,WAAW,GAAGrB,UAAU,MAAM,CAAC;;;;;;;AAMrD,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, useState } from 'react'\nimport { components } from 'react-select'\n\nimport type { ReactSelectAdapterProps } from '../../../../elements/ReactSelect/types.js'\nimport type { Option } from '../../types.js'\n\nimport { Tooltip } from '../../../../elements/Tooltip/index.js'\nimport { EditIcon } 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<\n {\n selectProps: {\n // TODO Fix this - moduleResolution 16 breaks our declare module\n customProps: ReactSelectAdapterProps['customProps']\n }\n } & MultiValueProps<Option>\n> = (props) => {\n const {\n data: { allowEdit, label, relationTo, value },\n selectProps: { customProps: { draggableProps, onDocumentOpen } = {} } = {},\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)\n\n return (\n <div className={baseClass} title={label || ''}>\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 && allowEdit !== false && (\n <Fragment>\n <button\n aria-label={`Edit ${label}`}\n className={`${baseClass}__drawer-toggler`}\n onClick={(event) => {\n setShowTooltip(false)\n onDocumentOpen({\n id: value,\n collectionSlug: relationTo,\n hasReadPermission,\n openInNewTab: event.metaKey || event.ctrlKey,\n })\n }}\n onKeyDown={(e) => {\n if (e.key === 'Enter') {\n e.stopPropagation()\n }\n }}\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 type=\"button\"\n >\n <Tooltip className={`${baseClass}__tooltip`} show={showTooltip}>\n {t('general:editLabel', { label: '' })}\n </Tooltip>\n <EditIcon className={`${baseClass}__icon`} />\n </button>\n </Fragment>\n )}\n </div>\n )\n}\n"],"names":["React","Fragment","useState","components","Tooltip","EditIcon","useAuth","useTranslation","baseClass","MultiValueLabel","props","data","allowEdit","label","relationTo","value","selectProps","customProps","draggableProps","onDocumentOpen","permissions","showTooltip","setShowTooltip","t","hasReadPermission","Boolean","collections","read","div","className","title","innerProps","button","aria-label","onClick","event","id","collectionSlug","openInNewTab","metaKey","ctrlKey","onKeyDown","e","key","stopPropagation","onMouseDown","onMouseEnter","onMouseLeave","onTouchEnd","type","show"],"mappings":"AAAA;;AAGA,OAAOA,SAASC,QAAQ,EAAEC,QAAQ,QAAQ,QAAO;AACjD,SAASC,UAAU,QAAQ,eAAc;AAKzC,SAASC,OAAO,QAAQ,wCAAuC;AAC/D,SAASC,QAAQ,QAAQ,kCAAiC;AAC1D,SAASC,OAAO,QAAQ,sCAAqC;AAC7D,SAASC,cAAc,QAAQ,6CAA4C;AAC3E,OAAO,eAAc;AAErB,MAAMC,YAAY;AAElB,OAAO,MAAMC,kBAGP,gEAAgE;AAIlE,CAACC;IACH,MAAM,EACJC,MAAM,EAAEC,SAAS,EAAEC,KAAK,EAAEC,UAAU,EAAEC,KAAK,EAAE,EAC7CC,aAAa,EAAEC,aAAa,EAAEC,cAAc,EAAEC,cAAc,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAC3E,GAAGT;IAEJ,MAAM,EAAEU,WAAW,EAAE,GAAGd;IACxB,MAAM,CAACe,aAAaC,eAAe,GAAGpB,SAAS;IAC/C,MAAM,EAAEqB,CAAC,EAAE,GAAGhB;IACd,MAAMiB,oBAAoBC,QAAQL,aAAaM,aAAa,CAACZ,WAAW,EAAEa;IAE1E,qBACE,MAACC;QAAIC,WAAWrB;QAAWsB,OAAOjB,SAAS;;0BACzC,KAACe;gBAAIC,WAAW,GAAGrB,UAAU,SAAS,CAAC;0BACrC,cAAA,KAACL,WAAWM,eAAe;oBACxB,GAAGC,KAAK;oBACTqB,YAAY;wBACVF,WAAW,GAAGrB,UAAU,MAAM,CAAC;wBAC/B,GAAIU,kBAAkB,CAAC,CAAC;oBAC1B;;;YAGHJ,cAAcU,qBAAqBZ,cAAc,uBAChD,KAACX;0BACC,cAAA,MAAC+B;oBACCC,cAAY,CAAC,KAAK,EAAEpB,OAAO;oBAC3BgB,WAAW,GAAGrB,UAAU,gBAAgB,CAAC;oBACzC0B,SAAS,CAACC;wBACRb,eAAe;wBACfH,eAAe;4BACbiB,IAAIrB;4BACJsB,gBAAgBvB;4BAChBU;4BACAc,cAAcH,MAAMI,OAAO,IAAIJ,MAAMK,OAAO;wBAC9C;oBACF;oBACAC,WAAW,CAACC;wBACV,IAAIA,EAAEC,GAAG,KAAK,SAAS;4BACrBD,EAAEE,eAAe;wBACnB;oBACF;oBACAC,aAAa,CAACH,IAAMA,EAAEE,eAAe;oBAAI,8CAA8C;oBACvFE,cAAc,IAAMxB,eAAe;oBACnCyB,cAAc,IAAMzB,eAAe;oBACnC0B,YAAY,CAACN,IAAMA,EAAEE,eAAe;oBAAI,8CAA8C;oBACtFK,MAAK;;sCAEL,KAAC7C;4BAAQyB,WAAW,GAAGrB,UAAU,SAAS,CAAC;4BAAE0C,MAAM7B;sCAChDE,EAAE,qBAAqB;gCAAEV,OAAO;4BAAG;;sCAEtC,KAACR;4BAASwB,WAAW,GAAGrB,UAAU,MAAM,CAAC;;;;;;;AAMrD,EAAC"}
@@ -8,7 +8,8 @@ import { useAuth } from '../../../../providers/Auth/index.js';
8
8
  import { useTranslation } from '../../../../providers/Translation/index.js';
9
9
  import './index.scss';
10
10
  const baseClass = 'relationship--single-value';
11
- export const SingleValue = (props)=>{
11
+ export const SingleValue = // TODO Fix this - moduleResolution 16 breaks our declare module
12
+ (props)=>{
12
13
  const { children, data: { allowEdit, label, relationTo, value }, selectProps: { customProps: { onDocumentOpen } = {} } = {} } = props;
13
14
  const [showTooltip, setShowTooltip] = useState(false);
14
15
  const { t } = useTranslation();
@@ -48,9 +49,11 @@ export const SingleValue = (props)=>{
48
49
  }
49
50
  },
50
51
  onMouseDown: (e)=>e.stopPropagation(),
52
+ // prevents react-select dropdown from opening
51
53
  onMouseEnter: ()=>setShowTooltip(true),
52
54
  onMouseLeave: ()=>setShowTooltip(false),
53
55
  onTouchEnd: (e)=>e.stopPropagation(),
56
+ // prevents react-select dropdown from openingtype="button"
54
57
  type: "button",
55
58
  children: [
56
59
  /*#__PURE__*/ _jsx(Tooltip, {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/fields/Relationship/select-components/SingleValue/index.tsx"],"sourcesContent":["'use client'\nimport type { SingleValueProps } from 'react-select'\n\nimport React, { Fragment, useState } from 'react'\nimport { components as SelectComponents } from 'react-select'\n\nimport type { ReactSelectAdapterProps } from '../../../../elements/ReactSelect/types.js'\nimport type { Option } from '../../types.js'\n\nimport { Tooltip } from '../../../../elements/Tooltip/index.js'\nimport { EditIcon } 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--single-value'\n\nexport const SingleValue: React.FC<\n {\n selectProps: {\n // TODO Fix this - moduleResolution 16 breaks our declare module\n customProps: ReactSelectAdapterProps['customProps']\n }\n } & SingleValueProps<Option>\n> = (props) => {\n const {\n children,\n data: { allowEdit, label, relationTo, value },\n selectProps: { customProps: { onDocumentOpen } = {} } = {},\n } = props\n\n const [showTooltip, setShowTooltip] = useState(false)\n const { t } = useTranslation()\n const { permissions } = useAuth()\n const hasReadPermission = Boolean(permissions?.collections?.[relationTo]?.read)\n\n return (\n <SelectComponents.SingleValue {...props} className={baseClass}>\n <div className={`${baseClass}__label`} title={label || ''}>\n <div className={`${baseClass}__label-text`}>\n <div className={`${baseClass}__text`}>{children}</div>\n {relationTo && hasReadPermission && allowEdit !== false && (\n <Fragment>\n <button\n aria-label={t('general:editLabel', { label })}\n className={`${baseClass}__drawer-toggler`}\n onClick={(event) => {\n setShowTooltip(false)\n onDocumentOpen({\n id: value,\n collectionSlug: relationTo,\n hasReadPermission,\n openInNewTab: event.metaKey || event.ctrlKey,\n })\n }}\n onKeyDown={(e) => {\n if (e.key === 'Enter') {\n e.stopPropagation()\n }\n }}\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 openingtype=\"button\"\n type=\"button\"\n >\n <Tooltip className={`${baseClass}__tooltip`} show={showTooltip}>\n {t('general:edit')}\n </Tooltip>\n <EditIcon />\n </button>\n </Fragment>\n )}\n </div>\n </div>\n </SelectComponents.SingleValue>\n )\n}\n"],"names":["React","Fragment","useState","components","SelectComponents","Tooltip","EditIcon","useAuth","useTranslation","baseClass","SingleValue","props","children","data","allowEdit","label","relationTo","value","selectProps","customProps","onDocumentOpen","showTooltip","setShowTooltip","t","permissions","hasReadPermission","Boolean","collections","read","className","div","title","button","aria-label","onClick","event","id","collectionSlug","openInNewTab","metaKey","ctrlKey","onKeyDown","e","key","stopPropagation","onMouseDown","onMouseEnter","onMouseLeave","onTouchEnd","type","show"],"mappings":"AAAA;;AAGA,OAAOA,SAASC,QAAQ,EAAEC,QAAQ,QAAQ,QAAO;AACjD,SAASC,cAAcC,gBAAgB,QAAQ,eAAc;AAK7D,SAASC,OAAO,QAAQ,wCAAuC;AAC/D,SAASC,QAAQ,QAAQ,kCAAiC;AAC1D,SAASC,OAAO,QAAQ,sCAAqC;AAC7D,SAASC,cAAc,QAAQ,6CAA4C;AAC3E,OAAO,eAAc;AAErB,MAAMC,YAAY;AAElB,OAAO,MAAMC,cAOT,CAACC;IACH,MAAM,EACJC,QAAQ,EACRC,MAAM,EAAEC,SAAS,EAAEC,KAAK,EAAEC,UAAU,EAAEC,KAAK,EAAE,EAC7CC,aAAa,EAAEC,aAAa,EAAEC,cAAc,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAC3D,GAAGT;IAEJ,MAAM,CAACU,aAAaC,eAAe,GAAGpB,SAAS;IAC/C,MAAM,EAAEqB,CAAC,EAAE,GAAGf;IACd,MAAM,EAAEgB,WAAW,EAAE,GAAGjB;IACxB,MAAMkB,oBAAoBC,QAAQF,aAAaG,aAAa,CAACX,WAAW,EAAEY;IAE1E,qBACE,KAACxB,iBAAiBM,WAAW;QAAE,GAAGC,KAAK;QAAEkB,WAAWpB;kBAClD,cAAA,KAACqB;YAAID,WAAW,GAAGpB,UAAU,OAAO,CAAC;YAAEsB,OAAOhB,SAAS;sBACrD,cAAA,MAACe;gBAAID,WAAW,GAAGpB,UAAU,YAAY,CAAC;;kCACxC,KAACqB;wBAAID,WAAW,GAAGpB,UAAU,MAAM,CAAC;kCAAGG;;oBACtCI,cAAcS,qBAAqBX,cAAc,uBAChD,KAACb;kCACC,cAAA,MAAC+B;4BACCC,cAAYV,EAAE,qBAAqB;gCAAER;4BAAM;4BAC3Cc,WAAW,GAAGpB,UAAU,gBAAgB,CAAC;4BACzCyB,SAAS,CAACC;gCACRb,eAAe;gCACfF,eAAe;oCACbgB,IAAInB;oCACJoB,gBAAgBrB;oCAChBS;oCACAa,cAAcH,MAAMI,OAAO,IAAIJ,MAAMK,OAAO;gCAC9C;4BACF;4BACAC,WAAW,CAACC;gCACV,IAAIA,EAAEC,GAAG,KAAK,SAAS;oCACrBD,EAAEE,eAAe;gCACnB;4BACF;4BACAC,aAAa,CAACH,IAAMA,EAAEE,eAAe;4BACrCE,cAAc,IAAMxB,eAAe;4BACnCyB,cAAc,IAAMzB,eAAe;4BACnC0B,YAAY,CAACN,IAAMA,EAAEE,eAAe;4BACpCK,MAAK;;8CAEL,KAAC5C;oCAAQwB,WAAW,GAAGpB,UAAU,SAAS,CAAC;oCAAEyC,MAAM7B;8CAChDE,EAAE;;8CAEL,KAACjB;;;;;;;;AAQjB,EAAC"}
1
+ {"version":3,"sources":["../../../../../src/fields/Relationship/select-components/SingleValue/index.tsx"],"sourcesContent":["'use client'\nimport type { SingleValueProps } from 'react-select'\n\nimport React, { Fragment, useState } from 'react'\nimport { components as SelectComponents } from 'react-select'\n\nimport type { ReactSelectAdapterProps } from '../../../../elements/ReactSelect/types.js'\nimport type { Option } from '../../types.js'\n\nimport { Tooltip } from '../../../../elements/Tooltip/index.js'\nimport { EditIcon } 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--single-value'\n\nexport const SingleValue: React.FC<\n {\n selectProps: {\n // TODO Fix this - moduleResolution 16 breaks our declare module\n customProps: ReactSelectAdapterProps['customProps']\n }\n } & SingleValueProps<Option>\n> = (props) => {\n const {\n children,\n data: { allowEdit, label, relationTo, value },\n selectProps: { customProps: { onDocumentOpen } = {} } = {},\n } = props\n\n const [showTooltip, setShowTooltip] = useState(false)\n const { t } = useTranslation()\n const { permissions } = useAuth()\n const hasReadPermission = Boolean(permissions?.collections?.[relationTo]?.read)\n\n return (\n <SelectComponents.SingleValue {...props} className={baseClass}>\n <div className={`${baseClass}__label`} title={label || ''}>\n <div className={`${baseClass}__label-text`}>\n <div className={`${baseClass}__text`}>{children}</div>\n {relationTo && hasReadPermission && allowEdit !== false && (\n <Fragment>\n <button\n aria-label={t('general:editLabel', { label })}\n className={`${baseClass}__drawer-toggler`}\n onClick={(event) => {\n setShowTooltip(false)\n onDocumentOpen({\n id: value,\n collectionSlug: relationTo,\n hasReadPermission,\n openInNewTab: event.metaKey || event.ctrlKey,\n })\n }}\n onKeyDown={(e) => {\n if (e.key === 'Enter') {\n e.stopPropagation()\n }\n }}\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 openingtype=\"button\"\n type=\"button\"\n >\n <Tooltip className={`${baseClass}__tooltip`} show={showTooltip}>\n {t('general:edit')}\n </Tooltip>\n <EditIcon />\n </button>\n </Fragment>\n )}\n </div>\n </div>\n </SelectComponents.SingleValue>\n )\n}\n"],"names":["React","Fragment","useState","components","SelectComponents","Tooltip","EditIcon","useAuth","useTranslation","baseClass","SingleValue","props","children","data","allowEdit","label","relationTo","value","selectProps","customProps","onDocumentOpen","showTooltip","setShowTooltip","t","permissions","hasReadPermission","Boolean","collections","read","className","div","title","button","aria-label","onClick","event","id","collectionSlug","openInNewTab","metaKey","ctrlKey","onKeyDown","e","key","stopPropagation","onMouseDown","onMouseEnter","onMouseLeave","onTouchEnd","type","show"],"mappings":"AAAA;;AAGA,OAAOA,SAASC,QAAQ,EAAEC,QAAQ,QAAQ,QAAO;AACjD,SAASC,cAAcC,gBAAgB,QAAQ,eAAc;AAK7D,SAASC,OAAO,QAAQ,wCAAuC;AAC/D,SAASC,QAAQ,QAAQ,kCAAiC;AAC1D,SAASC,OAAO,QAAQ,sCAAqC;AAC7D,SAASC,cAAc,QAAQ,6CAA4C;AAC3E,OAAO,eAAc;AAErB,MAAMC,YAAY;AAElB,OAAO,MAAMC,cAGP,gEAAgE;AAIlE,CAACC;IACH,MAAM,EACJC,QAAQ,EACRC,MAAM,EAAEC,SAAS,EAAEC,KAAK,EAAEC,UAAU,EAAEC,KAAK,EAAE,EAC7CC,aAAa,EAAEC,aAAa,EAAEC,cAAc,EAAE,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAC3D,GAAGT;IAEJ,MAAM,CAACU,aAAaC,eAAe,GAAGpB,SAAS;IAC/C,MAAM,EAAEqB,CAAC,EAAE,GAAGf;IACd,MAAM,EAAEgB,WAAW,EAAE,GAAGjB;IACxB,MAAMkB,oBAAoBC,QAAQF,aAAaG,aAAa,CAACX,WAAW,EAAEY;IAE1E,qBACE,KAACxB,iBAAiBM,WAAW;QAAE,GAAGC,KAAK;QAAEkB,WAAWpB;kBAClD,cAAA,KAACqB;YAAID,WAAW,GAAGpB,UAAU,OAAO,CAAC;YAAEsB,OAAOhB,SAAS;sBACrD,cAAA,MAACe;gBAAID,WAAW,GAAGpB,UAAU,YAAY,CAAC;;kCACxC,KAACqB;wBAAID,WAAW,GAAGpB,UAAU,MAAM,CAAC;kCAAGG;;oBACtCI,cAAcS,qBAAqBX,cAAc,uBAChD,KAACb;kCACC,cAAA,MAAC+B;4BACCC,cAAYV,EAAE,qBAAqB;gCAAER;4BAAM;4BAC3Cc,WAAW,GAAGpB,UAAU,gBAAgB,CAAC;4BACzCyB,SAAS,CAACC;gCACRb,eAAe;gCACfF,eAAe;oCACbgB,IAAInB;oCACJoB,gBAAgBrB;oCAChBS;oCACAa,cAAcH,MAAMI,OAAO,IAAIJ,MAAMK,OAAO;gCAC9C;4BACF;4BACAC,WAAW,CAACC;gCACV,IAAIA,EAAEC,GAAG,KAAK,SAAS;oCACrBD,EAAEE,eAAe;gCACnB;4BACF;4BACAC,aAAa,CAACH,IAAMA,EAAEE,eAAe;4BAAI,8CAA8C;4BACvFE,cAAc,IAAMxB,eAAe;4BACnCyB,cAAc,IAAMzB,eAAe;4BACnC0B,YAAY,CAACN,IAAMA,EAAEE,eAAe;4BAAI,2DAA2D;4BACnGK,MAAK;;8CAEL,KAAC5C;oCAAQwB,WAAW,GAAGpB,UAAU,SAAS,CAAC;oCAAEyC,MAAM7B;8CAChDE,EAAE;;8CAEL,KAACjB;;;;;;;;AAQjB,EAAC"}
@@ -39,8 +39,8 @@ const TextFieldComponent = (props)=>{
39
39
  locale,
40
40
  localizationConfig: localizationConfig || undefined
41
41
  });
42
- const [valueToRender, setValueToRender] = useState([]) // Only for hasMany
43
- ;
42
+ const [valueToRender, setValueToRender] = useState([]);
43
+ // Only for hasMany
44
44
  const handleHasManyChange = useCallback((selectedOption)=>{
45
45
  if (!(readOnly || disabled)) {
46
46
  let newValue;
@@ -66,6 +66,7 @@ const TextFieldComponent = (props)=>{
66
66
  setValueToRender(value.map((val, index)=>{
67
67
  return {
68
68
  id: `${val}${index}`,
69
+ // append index to avoid duplicate keys but allow duplicate numbers
69
70
  label: `${val}`,
70
71
  value: {
71
72
  // 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.
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/fields/Text/index.tsx"],"sourcesContent":["'use client'\nimport type { TextFieldClientComponent } from 'payload'\n\nimport React, { useCallback, useEffect, useMemo, useState } from 'react'\n\nimport type { Option } from '../../elements/ReactSelect/types.js'\nimport type { TextInputProps } from './types.js'\n\nimport { useField } from '../../forms/useField/index.js'\nimport { withCondition } from '../../forms/withCondition/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useLocale } from '../../providers/Locale/index.js'\nimport { mergeFieldStyles } from '../mergeFieldStyles.js'\nimport { isFieldRTL } from '../shared/index.js'\nimport { TextInput } from './Input.js'\nimport './index.scss'\n\nexport { TextInput, TextInputProps }\n\nconst TextFieldComponent: TextFieldClientComponent = (props) => {\n const {\n field,\n field: {\n admin: { autoComplete, className, description, placeholder, rtl } = {},\n hasMany,\n label,\n localized,\n maxLength,\n maxRows,\n minLength,\n minRows,\n required,\n },\n inputRef,\n path: pathFromProps,\n readOnly,\n validate,\n } = props\n\n const locale = useLocale()\n\n const {\n config: { localization: localizationConfig },\n } = useConfig()\n\n const memoizedValidate = useCallback(\n (value, options) => {\n if (typeof validate === 'function') {\n return validate(value, { ...options, maxLength, minLength, required })\n }\n },\n [validate, minLength, maxLength, required],\n )\n\n const {\n customComponents: { AfterInput, BeforeInput, Description, Error, Label } = {},\n disabled,\n path,\n setValue,\n showError,\n value,\n } = useField({\n potentiallyStalePath: pathFromProps,\n validate: memoizedValidate,\n })\n\n const renderRTL = isFieldRTL({\n fieldLocalized: localized,\n fieldRTL: rtl,\n locale,\n localizationConfig: localizationConfig || undefined,\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 || disabled)) {\n let newValue\n if (!selectedOption) {\n newValue = []\n } else if (Array.isArray(selectedOption)) {\n newValue = selectedOption.map((option) => option.value?.value || option.value)\n } else {\n newValue = [selectedOption.value?.value || selectedOption.value]\n }\n\n setValue(newValue)\n }\n },\n [readOnly, setValue, disabled],\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 // 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 toString: () => `${val}${index}`,\n value: val?.value || val,\n },\n }\n }),\n )\n }\n }, [value, hasMany])\n\n const styles = useMemo(() => mergeFieldStyles(field), [field])\n\n return (\n <TextInput\n AfterInput={AfterInput}\n BeforeInput={BeforeInput}\n className={className}\n Description={Description}\n description={description}\n Error={Error}\n hasMany={hasMany}\n htmlAttributes={{\n autoComplete: autoComplete || undefined,\n }}\n inputRef={inputRef}\n Label={Label}\n label={label}\n localized={localized}\n maxRows={maxRows}\n minRows={minRows}\n onChange={\n hasMany\n ? handleHasManyChange\n : (e) => {\n setValue(e.target.value)\n }\n }\n path={path}\n placeholder={placeholder}\n readOnly={readOnly || disabled}\n required={required}\n rtl={renderRTL}\n showError={showError}\n style={styles}\n value={(value as string) || ''}\n valueToRender={valueToRender as Option[]}\n />\n )\n}\n\nexport const TextField = withCondition(TextFieldComponent)\n"],"names":["React","useCallback","useEffect","useMemo","useState","useField","withCondition","useConfig","useLocale","mergeFieldStyles","isFieldRTL","TextInput","TextFieldComponent","props","field","admin","autoComplete","className","description","placeholder","rtl","hasMany","label","localized","maxLength","maxRows","minLength","minRows","required","inputRef","path","pathFromProps","readOnly","validate","locale","config","localization","localizationConfig","memoizedValidate","value","options","customComponents","AfterInput","BeforeInput","Description","Error","Label","disabled","setValue","showError","potentiallyStalePath","renderRTL","fieldLocalized","fieldRTL","undefined","valueToRender","setValueToRender","handleHasManyChange","selectedOption","newValue","Array","isArray","map","option","val","index","id","toString","styles","htmlAttributes","onChange","e","target","style","TextField"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/fields/Text/index.tsx"],"sourcesContent":["'use client'\nimport type { TextFieldClientComponent } from 'payload'\n\nimport React, { useCallback, useEffect, useMemo, useState } from 'react'\n\nimport type { Option } from '../../elements/ReactSelect/types.js'\nimport type { TextInputProps } from './types.js'\n\nimport { useField } from '../../forms/useField/index.js'\nimport { withCondition } from '../../forms/withCondition/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useLocale } from '../../providers/Locale/index.js'\nimport { mergeFieldStyles } from '../mergeFieldStyles.js'\nimport { isFieldRTL } from '../shared/index.js'\nimport { TextInput } from './Input.js'\nimport './index.scss'\n\nexport { TextInput, TextInputProps }\n\nconst TextFieldComponent: TextFieldClientComponent = (props) => {\n const {\n field,\n field: {\n admin: { autoComplete, className, description, placeholder, rtl } = {},\n hasMany,\n label,\n localized,\n maxLength,\n maxRows,\n minLength,\n minRows,\n required,\n },\n inputRef,\n path: pathFromProps,\n readOnly,\n validate,\n } = props\n\n const locale = useLocale()\n\n const {\n config: { localization: localizationConfig },\n } = useConfig()\n\n const memoizedValidate = useCallback(\n (value, options) => {\n if (typeof validate === 'function') {\n return validate(value, { ...options, maxLength, minLength, required })\n }\n },\n [validate, minLength, maxLength, required],\n )\n\n const {\n customComponents: { AfterInput, BeforeInput, Description, Error, Label } = {},\n disabled,\n path,\n setValue,\n showError,\n value,\n } = useField({\n potentiallyStalePath: pathFromProps,\n validate: memoizedValidate,\n })\n\n const renderRTL = isFieldRTL({\n fieldLocalized: localized,\n fieldRTL: rtl,\n locale,\n localizationConfig: localizationConfig || undefined,\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 || disabled)) {\n let newValue\n if (!selectedOption) {\n newValue = []\n } else if (Array.isArray(selectedOption)) {\n newValue = selectedOption.map((option) => option.value?.value || option.value)\n } else {\n newValue = [selectedOption.value?.value || selectedOption.value]\n }\n\n setValue(newValue)\n }\n },\n [readOnly, setValue, disabled],\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 // 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 toString: () => `${val}${index}`,\n value: val?.value || val,\n },\n }\n }),\n )\n }\n }, [value, hasMany])\n\n const styles = useMemo(() => mergeFieldStyles(field), [field])\n\n return (\n <TextInput\n AfterInput={AfterInput}\n BeforeInput={BeforeInput}\n className={className}\n Description={Description}\n description={description}\n Error={Error}\n hasMany={hasMany}\n htmlAttributes={{\n autoComplete: autoComplete || undefined,\n }}\n inputRef={inputRef}\n Label={Label}\n label={label}\n localized={localized}\n maxRows={maxRows}\n minRows={minRows}\n onChange={\n hasMany\n ? handleHasManyChange\n : (e) => {\n setValue(e.target.value)\n }\n }\n path={path}\n placeholder={placeholder}\n readOnly={readOnly || disabled}\n required={required}\n rtl={renderRTL}\n showError={showError}\n style={styles}\n value={(value as string) || ''}\n valueToRender={valueToRender as Option[]}\n />\n )\n}\n\nexport const TextField = withCondition(TextFieldComponent)\n"],"names":["React","useCallback","useEffect","useMemo","useState","useField","withCondition","useConfig","useLocale","mergeFieldStyles","isFieldRTL","TextInput","TextFieldComponent","props","field","admin","autoComplete","className","description","placeholder","rtl","hasMany","label","localized","maxLength","maxRows","minLength","minRows","required","inputRef","path","pathFromProps","readOnly","validate","locale","config","localization","localizationConfig","memoizedValidate","value","options","customComponents","AfterInput","BeforeInput","Description","Error","Label","disabled","setValue","showError","potentiallyStalePath","renderRTL","fieldLocalized","fieldRTL","undefined","valueToRender","setValueToRender","handleHasManyChange","selectedOption","newValue","Array","isArray","map","option","val","index","id","toString","styles","htmlAttributes","onChange","e","target","style","TextField"],"mappings":"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"}
@@ -22,7 +22,9 @@ import { UploadComponentHasMany } from './HasMany/index.js';
22
22
  import { UploadComponentHasOne } from './HasOne/index.js';
23
23
  import './index.scss';
24
24
  export const baseClass = 'upload';
25
- export function UploadInput(props) {
25
+ /**
26
+ * Controls the visibility of the "Create new collection" button
27
+ */ export function UploadInput(props) {
26
28
  const { AfterInput, allowCreate, api, BeforeInput, className, Description, description, displayPreview, Error, filterOptions: filterOptionsFromProps, hasMany, isSortable, Label, label, localized, maxRows, onChange: onChangeFromProps, path, readOnly, relationTo, required, serverURL, showError, style, value } = props;
27
29
  const [populatedDocs, setPopulatedDocs] = React.useState();
28
30
  const [activeRelationTo] = React.useState(Array.isArray(relationTo) ? relationTo[0] : relationTo);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/fields/Upload/Input.tsx"],"sourcesContent":["'use client'\n\nimport type {\n ClientCollectionConfig,\n FieldLabelClientProps,\n FilterOptionsResult,\n JsonObject,\n StaticDescription,\n StaticLabel,\n UploadFieldClient,\n UploadField as UploadFieldType,\n ValueWithRelation,\n} from 'payload'\nimport type { MarkOptional } from 'ts-essentials'\n\nimport { useModal } from '@faceless-ui/modal'\nimport * as qs from 'qs-esm'\nimport React, { useCallback, useEffect, useMemo } from 'react'\n\nimport type { ListDrawerProps } from '../../elements/ListDrawer/types.js'\nimport type { ReloadDoc, ValueAsDataWithRelation } from './types.js'\n\nimport { type BulkUploadContext, useBulkUpload } from '../../elements/BulkUpload/index.js'\nimport { Button } from '../../elements/Button/index.js'\nimport { useDocumentDrawer } from '../../elements/DocumentDrawer/index.js'\nimport { Dropzone } from '../../elements/Dropzone/index.js'\nimport { useListDrawer } from '../../elements/ListDrawer/index.js'\nimport { RenderCustomComponent } from '../../elements/RenderCustomComponent/index.js'\nimport { ShimmerEffect } from '../../elements/ShimmerEffect/index.js'\nimport { FieldDescription } from '../../fields/FieldDescription/index.js'\nimport { FieldError } from '../../fields/FieldError/index.js'\nimport { FieldLabel } from '../../fields/FieldLabel/index.js'\nimport { useAuth } from '../../providers/Auth/index.js'\nimport { useLocale } from '../../providers/Locale/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { normalizeRelationshipValue } from '../../utilities/normalizeRelationshipValue.js'\nimport { fieldBaseClass } from '../shared/index.js'\nimport { UploadComponentHasMany } from './HasMany/index.js'\nimport { UploadComponentHasOne } from './HasOne/index.js'\nimport './index.scss'\n\nexport const baseClass = 'upload'\n\ntype PopulatedDocs = { relationTo: string; value: JsonObject }[]\n\nexport type UploadInputProps = {\n readonly AfterInput?: React.ReactNode\n readonly allowCreate?: boolean\n /**\n * Controls the visibility of the \"Create new collection\" button\n */\n readonly api?: string\n readonly BeforeInput?: React.ReactNode\n readonly className?: string\n readonly collection?: ClientCollectionConfig\n readonly customUploadActions?: React.ReactNode[]\n readonly Description?: React.ReactNode\n readonly description?: StaticDescription\n readonly displayPreview?: boolean\n readonly Error?: React.ReactNode\n readonly filterOptions?: FilterOptionsResult\n readonly hasMany?: boolean\n readonly hideRemoveFile?: boolean\n readonly isSortable?: boolean\n readonly Label?: React.ReactNode\n readonly label?: StaticLabel\n readonly labelProps?: FieldLabelClientProps<MarkOptional<UploadFieldClient, 'type'>>\n readonly localized?: boolean\n readonly maxRows?: number\n readonly onChange?: (e) => void\n readonly path: string\n readonly readOnly?: boolean\n readonly relationTo: UploadFieldType['relationTo']\n readonly required?: boolean\n readonly serverURL?: string\n readonly showError?: boolean\n readonly style?: React.CSSProperties\n readonly value?: (number | string)[] | number | string | ValueWithRelation | ValueWithRelation[]\n}\n\nexport function UploadInput(props: UploadInputProps) {\n const {\n AfterInput,\n allowCreate,\n api,\n BeforeInput,\n className,\n Description,\n description,\n displayPreview,\n Error,\n filterOptions: filterOptionsFromProps,\n hasMany,\n isSortable,\n Label,\n label,\n localized,\n maxRows,\n onChange: onChangeFromProps,\n path,\n readOnly,\n relationTo,\n required,\n serverURL,\n showError,\n style,\n value,\n } = props\n\n const [populatedDocs, setPopulatedDocs] = React.useState<\n {\n relationTo: string\n value: JsonObject\n }[]\n >()\n\n const [activeRelationTo] = React.useState<string>(\n Array.isArray(relationTo) ? relationTo[0] : relationTo,\n )\n\n const { openModal } = useModal()\n const {\n drawerSlug,\n setCollectionSlug,\n setInitialFiles,\n setMaxFiles,\n setOnSuccess,\n setSelectableCollections,\n } = useBulkUpload()\n const { permissions } = useAuth()\n const { code } = useLocale()\n const { i18n, t } = useTranslation()\n\n // This will be used by the bulk upload to allow you to select only collections you have create permissions for\n const collectionSlugsWithCreatePermission = useMemo(() => {\n if (Array.isArray(relationTo)) {\n return relationTo.filter(\n (relation) => permissions?.collections && permissions.collections?.[relation]?.create,\n )\n }\n return []\n }, [relationTo, permissions])\n\n const filterOptions: FilterOptionsResult = useMemo(() => {\n const isPoly = Array.isArray(relationTo)\n\n if (!value) {\n return filterOptionsFromProps\n }\n\n // Group existing IDs by relation\n const existingIdsByRelation: Record<string, (number | string)[]> = {}\n\n const values = Array.isArray(value) ? value : [value]\n\n for (const val of values) {\n if (isPoly && typeof val === 'object' && 'relationTo' in val) {\n // Poly upload - group by relationTo\n if (!existingIdsByRelation[val.relationTo]) {\n existingIdsByRelation[val.relationTo] = []\n }\n existingIdsByRelation[val.relationTo].push(val.value)\n } else if (!isPoly) {\n // Non-poly upload - all IDs belong to the single collection\n const collection = relationTo\n if (!existingIdsByRelation[collection]) {\n existingIdsByRelation[collection] = []\n }\n const id = typeof val === 'object' && 'value' in val ? val.value : val\n if (typeof id === 'string' || typeof id === 'number') {\n existingIdsByRelation[collection].push(id)\n }\n }\n }\n\n // Build filter options for each collection\n const newFilterOptions = { ...filterOptionsFromProps }\n const relations = isPoly ? relationTo : [relationTo]\n\n relations.forEach((relation) => {\n const existingIds = existingIdsByRelation[relation] || []\n\n newFilterOptions[relation] = {\n ...((filterOptionsFromProps?.[relation] as any) || {}),\n id: {\n ...((filterOptionsFromProps?.[relation] as any)?.id || {}),\n not_in: ((filterOptionsFromProps?.[relation] as any)?.id?.not_in || []).concat(\n existingIds,\n ),\n },\n }\n })\n\n return newFilterOptions\n }, [value, filterOptionsFromProps, relationTo])\n\n const [ListDrawer, , { closeDrawer: closeListDrawer, openDrawer: openListDrawer }] =\n useListDrawer({\n collectionSlugs: typeof relationTo === 'string' ? [relationTo] : relationTo,\n filterOptions,\n })\n\n const [\n CreateDocDrawer,\n ,\n { closeDrawer: closeCreateDocDrawer, openDrawer: openCreateDocDrawer },\n ] = useDocumentDrawer({\n collectionSlug: activeRelationTo,\n })\n\n /**\n * Track the last loaded value to prevent unnecessary reloads\n */\n const loadedValueRef = React.useRef<\n (number | string)[] | null | number | string | ValueWithRelation | ValueWithRelation[]\n >(null)\n\n const canCreate = useMemo(() => {\n if (!allowCreate) {\n return false\n }\n\n if (typeof activeRelationTo === 'string') {\n if (permissions?.collections && permissions.collections?.[activeRelationTo]?.create) {\n return true\n }\n }\n\n return false\n }, [activeRelationTo, permissions, allowCreate])\n\n const onChange = React.useCallback(\n (newValue) => {\n if (typeof onChangeFromProps === 'function') {\n onChangeFromProps(newValue)\n }\n },\n [onChangeFromProps],\n )\n\n const populateDocs = React.useCallback(\n async (items: ValueWithRelation[]): Promise<ValueAsDataWithRelation[]> => {\n if (!items?.length) {\n return []\n }\n\n // 1. Group IDs by collection\n const grouped: Record<string, (number | string)[]> = {}\n items.forEach(({ relationTo, value }) => {\n if (!grouped[relationTo]) {\n grouped[relationTo] = []\n }\n // Ensure we extract the actual ID value, not an object\n let idValue: number | string = value\n\n if (value && typeof value === 'object' && 'value' in (value as any)) {\n idValue = (value as any).value\n }\n\n grouped[relationTo].push(idValue)\n })\n\n // 2. Fetch per collection\n const fetches = Object.entries(grouped).map(async ([collection, ids]) => {\n const query = {\n depth: 0,\n draft: true,\n limit: ids.length,\n locale: code,\n where: {\n and: [\n {\n id: {\n in: ids,\n },\n },\n ],\n },\n }\n const response = await fetch(`${serverURL}${api}/${collection}`, {\n body: qs.stringify(query),\n credentials: 'include',\n headers: {\n 'Accept-Language': i18n.language,\n 'Content-Type': 'application/x-www-form-urlencoded',\n 'X-Payload-HTTP-Method-Override': 'GET',\n },\n method: 'POST',\n })\n let docs: any[] = []\n if (response.ok) {\n const data = await response.json()\n docs = data.docs\n }\n // Map docs by ID for fast lookup\n const docsById = docs.reduce((acc, doc) => {\n acc[doc.id] = doc\n return acc\n }, {})\n return { collection, docsById }\n })\n\n const results = await Promise.all(fetches)\n\n // 3. Build lookup\n const lookup: Record<string, Record<string, any>> = {}\n results.forEach(({ collection, docsById }) => {\n lookup[collection] = docsById\n })\n\n // 4. Reconstruct in input order, add placeholders if missing\n const sortedDocs = items.map(({ relationTo, value }) => {\n const doc = lookup[relationTo]?.[value] || {\n id: value,\n filename: `${t('general:untitled')} - ID: ${value}`,\n isPlaceholder: true,\n }\n return { relationTo, value: doc }\n })\n\n return sortedDocs\n },\n [serverURL, api, code, i18n.language, t],\n )\n\n const normalizeValue = useCallback(\n (value: any): any => normalizeRelationshipValue(value, relationTo),\n [relationTo],\n )\n\n const onUploadSuccess: BulkUploadContext['onSuccess'] = useCallback(\n (uploadedForms) => {\n const isPoly = Array.isArray(relationTo)\n\n if (hasMany) {\n const newValues = uploadedForms.map((form) =>\n isPoly ? { relationTo: form.collectionSlug, value: form.doc.id } : form.doc.id,\n )\n // Normalize existing values before merging\n const normalizedExisting = Array.isArray(value) ? value.map(normalizeValue) : []\n const mergedValue = [...normalizedExisting, ...newValues]\n onChange(mergedValue)\n setPopulatedDocs((currentDocs) => [\n ...(currentDocs || []),\n ...uploadedForms.map((form) => ({\n relationTo: form.collectionSlug,\n value: form.doc,\n })),\n ])\n } else {\n const firstDoc = uploadedForms[0]\n const newValue = isPoly\n ? { relationTo: firstDoc.collectionSlug, value: firstDoc.doc.id }\n : firstDoc.doc.id\n onChange(newValue)\n setPopulatedDocs([\n {\n relationTo: firstDoc.collectionSlug,\n value: firstDoc.doc,\n },\n ])\n }\n },\n [value, onChange, hasMany, relationTo, normalizeValue],\n )\n\n const onLocalFileSelection = React.useCallback(\n (fileList?: FileList) => {\n let fileListToUse = fileList\n if (!hasMany && fileList && fileList.length > 1) {\n const dataTransfer = new DataTransfer()\n dataTransfer.items.add(fileList[0])\n fileListToUse = dataTransfer.files\n }\n if (fileListToUse) {\n setInitialFiles(fileListToUse)\n }\n // Use activeRelationTo for poly uploads, or relationTo as string for single collection\n const collectionToUse = Array.isArray(relationTo) ? activeRelationTo : relationTo\n\n setCollectionSlug(collectionToUse)\n if (Array.isArray(collectionSlugsWithCreatePermission)) {\n setSelectableCollections(collectionSlugsWithCreatePermission)\n }\n\n if (typeof maxRows === 'number') {\n setMaxFiles(maxRows)\n }\n\n openModal(drawerSlug)\n },\n [\n hasMany,\n relationTo,\n activeRelationTo,\n setCollectionSlug,\n collectionSlugsWithCreatePermission,\n maxRows,\n openModal,\n drawerSlug,\n setInitialFiles,\n setSelectableCollections,\n setMaxFiles,\n ],\n )\n\n // only hasMany can bulk select\n const onListBulkSelect = React.useCallback<NonNullable<ListDrawerProps['onBulkSelect']>>(\n async (docs) => {\n const isPoly = Array.isArray(relationTo)\n const selectedDocIDs = []\n\n for (const [id, isSelected] of docs) {\n if (isSelected) {\n selectedDocIDs.push(id)\n }\n }\n\n const itemsToLoad = selectedDocIDs.map((id) => ({\n relationTo: activeRelationTo,\n value: id,\n }))\n\n const loadedDocs = await populateDocs(itemsToLoad)\n if (loadedDocs) {\n setPopulatedDocs((currentDocs) => [...(currentDocs || []), ...loadedDocs])\n }\n\n const newValues = selectedDocIDs.map((id) =>\n isPoly ? { relationTo: activeRelationTo, value: id } : id,\n )\n // Normalize existing values before merging\n const normalizedExisting = Array.isArray(value) ? value.map(normalizeValue) : []\n onChange([...normalizedExisting, ...newValues])\n closeListDrawer()\n },\n [activeRelationTo, closeListDrawer, onChange, populateDocs, value, relationTo, normalizeValue],\n )\n\n const onDocCreate = React.useCallback(\n (data) => {\n const isPoly = Array.isArray(relationTo)\n if (data.doc) {\n setPopulatedDocs((currentDocs) => [\n ...(currentDocs || []),\n {\n relationTo: activeRelationTo,\n value: data.doc,\n },\n ])\n\n const newValue = isPoly ? { relationTo: activeRelationTo, value: data.doc.id } : data.doc.id\n onChange(newValue)\n }\n closeCreateDocDrawer()\n },\n [closeCreateDocDrawer, activeRelationTo, onChange, relationTo],\n )\n\n const onListSelect = useCallback<NonNullable<ListDrawerProps['onSelect']>>(\n async ({ collectionSlug, doc }) => {\n const isPoly = Array.isArray(relationTo)\n\n const loadedDocs = await populateDocs([{ relationTo: collectionSlug, value: doc.id }])\n const selectedDoc = loadedDocs?.[0] || null\n\n setPopulatedDocs((currentDocs) => {\n if (selectedDoc) {\n if (hasMany) {\n return [...(currentDocs || []), selectedDoc]\n }\n return [selectedDoc]\n }\n return currentDocs\n })\n\n if (hasMany) {\n const newValue = isPoly ? { relationTo: collectionSlug, value: doc.id } : doc.id\n // Normalize existing values before merging\n const normalizedExisting = Array.isArray(value) ? value.map(normalizeValue) : []\n const valueToUse = [...normalizedExisting, newValue]\n onChange(valueToUse)\n } else {\n const valueToUse = isPoly ? { relationTo: collectionSlug, value: doc.id } : doc.id\n onChange(valueToUse)\n }\n closeListDrawer()\n },\n [closeListDrawer, hasMany, populateDocs, onChange, value, relationTo, normalizeValue],\n )\n\n const reloadDoc = React.useCallback<ReloadDoc>(\n async (docID, collectionSlug) => {\n const docs = await populateDocs([{ relationTo: collectionSlug, value: docID }])\n\n if (docs[0]) {\n let updatedDocsToPropogate = []\n setPopulatedDocs((currentDocs) => {\n const existingDocIndex = currentDocs?.findIndex((doc) => {\n const hasExisting = doc.value?.id === docs[0].value.id || doc.value?.isPlaceholder\n return hasExisting && doc.relationTo === collectionSlug\n })\n if (existingDocIndex > -1) {\n const updatedDocs = [...currentDocs]\n updatedDocs[existingDocIndex] = docs[0]\n updatedDocsToPropogate = updatedDocs\n return updatedDocs\n }\n return currentDocs\n })\n\n if (updatedDocsToPropogate.length && hasMany) {\n onChange(updatedDocsToPropogate.map((doc) => doc.value?.id))\n }\n }\n },\n [populateDocs, onChange, hasMany],\n )\n\n // only hasMany can reorder\n const onReorder = React.useCallback(\n (newValue) => {\n const isPoly = Array.isArray(relationTo)\n const newValueToSave = newValue.map(({ relationTo: rel, value }) =>\n isPoly ? { relationTo: rel, value: value.id } : value.id,\n )\n onChange(newValueToSave)\n setPopulatedDocs(newValue)\n },\n [onChange, relationTo],\n )\n\n const onRemove = React.useCallback(\n (newValue?: PopulatedDocs) => {\n const isPoly = Array.isArray(relationTo)\n\n if (!newValue || newValue.length === 0) {\n onChange(hasMany ? [] : null)\n setPopulatedDocs(hasMany ? [] : null)\n return\n }\n\n const newValueToSave = newValue.map(({ relationTo: rel, value }) =>\n isPoly ? { relationTo: rel, value: value.id } : value.id,\n )\n\n onChange(hasMany ? newValueToSave : newValueToSave[0])\n setPopulatedDocs(newValue)\n },\n [onChange, hasMany, relationTo],\n )\n\n useEffect(() => {\n async function loadInitialDocs() {\n if (value) {\n let itemsToLoad: ValueWithRelation[] = []\n if (\n Array.isArray(relationTo) &&\n ((typeof value === 'object' && 'relationTo' in value) ||\n (Array.isArray(value) &&\n value.length > 0 &&\n typeof value[0] === 'object' &&\n 'relationTo' in value[0]))\n ) {\n // For poly uploads, value should already be in the format { relationTo, value }\n const values = Array.isArray(value) ? value : [value]\n itemsToLoad = values\n .filter((v): v is ValueWithRelation => typeof v === 'object' && 'relationTo' in v)\n .map((v) => {\n // Ensure the value property is a simple ID, not nested\n let idValue: any = v.value\n while (\n idValue &&\n typeof idValue === 'object' &&\n idValue !== null &&\n 'value' in idValue\n ) {\n idValue = idValue.value\n }\n return {\n relationTo: v.relationTo,\n value: idValue as number | string,\n }\n })\n } else {\n // This check is here to satisfy TypeScript that relationTo is a string\n if (!Array.isArray(relationTo)) {\n // For single collection uploads, we need to wrap the IDs\n const ids = Array.isArray(value) ? value : [value]\n itemsToLoad = ids.map((id): ValueWithRelation => {\n // Extract the actual ID, handling nested objects\n let idValue: any = id\n while (\n idValue &&\n typeof idValue === 'object' &&\n idValue !== null &&\n 'value' in idValue\n ) {\n idValue = idValue.value\n }\n return {\n relationTo,\n value: idValue as number | string,\n }\n })\n }\n }\n\n if (itemsToLoad.length > 0) {\n const loadedDocs = await populateDocs(itemsToLoad)\n\n if (loadedDocs) {\n setPopulatedDocs(loadedDocs)\n loadedValueRef.current = value\n }\n }\n } else {\n // Clear populated docs when value is cleared\n setPopulatedDocs([])\n loadedValueRef.current = null\n }\n }\n\n // Only load if value has changed from what we last loaded\n const valueChanged = loadedValueRef.current !== value\n if (valueChanged) {\n void loadInitialDocs()\n }\n }, [populateDocs, value, relationTo])\n\n useEffect(() => {\n setOnSuccess(onUploadSuccess)\n }, [value, path, onUploadSuccess, setOnSuccess])\n\n const showDropzone =\n !value ||\n (hasMany && Array.isArray(value) && (typeof maxRows !== 'number' || value.length < maxRows)) ||\n (!hasMany && populatedDocs?.[0] && typeof populatedDocs[0].value === 'undefined')\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 id={`field-${path?.replace(/\\./g, '__')}`}\n style={style}\n >\n <RenderCustomComponent\n CustomComponent={Label}\n Fallback={\n <FieldLabel label={label} localized={localized} path={path} required={required} />\n }\n />\n <div className={`${baseClass}__wrap`}>\n <RenderCustomComponent\n CustomComponent={Error}\n Fallback={<FieldError path={path} showError={showError} />}\n />\n </div>\n {BeforeInput}\n <div className={`${baseClass}__dropzoneAndUpload`}>\n {hasMany && Array.isArray(value) && value.length > 0 ? (\n <>\n {populatedDocs && populatedDocs?.length > 0 ? (\n <UploadComponentHasMany\n displayPreview={displayPreview}\n fileDocs={populatedDocs}\n isSortable={isSortable && !readOnly}\n onRemove={onRemove}\n onReorder={onReorder}\n readonly={readOnly}\n reloadDoc={reloadDoc}\n serverURL={serverURL}\n showCollectionSlug={Array.isArray(relationTo)}\n />\n ) : (\n <div className={`${baseClass}__loadingRows`}>\n {value.map((id) => (\n <ShimmerEffect height=\"40px\" key={typeof id === 'object' ? id.value : id} />\n ))}\n </div>\n )}\n </>\n ) : null}\n {!hasMany && value ? (\n <>\n {populatedDocs && populatedDocs?.length > 0 && populatedDocs[0].value ? (\n <UploadComponentHasOne\n displayPreview={displayPreview}\n fileDoc={populatedDocs[0]}\n onRemove={onRemove}\n readonly={readOnly}\n reloadDoc={reloadDoc}\n serverURL={serverURL}\n showCollectionSlug={Array.isArray(relationTo)}\n />\n ) : populatedDocs && value && !populatedDocs?.[0]?.value ? (\n <>\n {t('general:untitled')} - ID: {value}\n </>\n ) : (\n <ShimmerEffect height=\"62px\" />\n )}\n </>\n ) : null}\n {showDropzone ? (\n <Dropzone\n disabled={readOnly || !canCreate}\n multipleFiles={hasMany}\n onChange={onLocalFileSelection}\n >\n <div className={`${baseClass}__dropzoneContent`}>\n <div className={`${baseClass}__dropzoneContent__buttons`}>\n {canCreate && (\n <>\n <Button\n buttonStyle=\"pill\"\n className={`${baseClass}__createNewToggler`}\n disabled={readOnly || !canCreate}\n onClick={() => {\n if (!readOnly) {\n if (hasMany) {\n onLocalFileSelection()\n } else {\n openCreateDocDrawer()\n }\n }\n }}\n size=\"small\"\n >\n {t('general:createNew')}\n </Button>\n <span className={`${baseClass}__dropzoneContent__orText`}>\n {t('general:or')}\n </span>\n </>\n )}\n <Button\n buttonStyle=\"pill\"\n className={`${baseClass}__listToggler`}\n disabled={readOnly}\n onClick={openListDrawer}\n size=\"small\"\n >\n {t('fields:chooseFromExisting')}\n </Button>\n <CreateDocDrawer onSave={onDocCreate} />\n <ListDrawer\n allowCreate={canCreate}\n enableRowSelections={hasMany}\n onBulkSelect={onListBulkSelect}\n onSelect={onListSelect}\n />\n </div>\n\n {canCreate && !readOnly && (\n <p className={`${baseClass}__dragAndDropText`}>\n {t('general:or')} {t('upload:dragAndDrop')}\n </p>\n )}\n </div>\n </Dropzone>\n ) : (\n <>\n {!readOnly &&\n !populatedDocs &&\n (!value ||\n typeof maxRows !== 'number' ||\n (Array.isArray(value) && value.length < maxRows)) ? (\n <ShimmerEffect height=\"40px\" />\n ) : null}\n </>\n )}\n </div>\n {AfterInput}\n <RenderCustomComponent\n CustomComponent={Description}\n Fallback={<FieldDescription description={description} path={path} />}\n />\n </div>\n )\n}\n"],"names":["useModal","qs","React","useCallback","useEffect","useMemo","useBulkUpload","Button","useDocumentDrawer","Dropzone","useListDrawer","RenderCustomComponent","ShimmerEffect","FieldDescription","FieldError","FieldLabel","useAuth","useLocale","useTranslation","normalizeRelationshipValue","fieldBaseClass","UploadComponentHasMany","UploadComponentHasOne","baseClass","UploadInput","props","AfterInput","allowCreate","api","BeforeInput","className","Description","description","displayPreview","Error","filterOptions","filterOptionsFromProps","hasMany","isSortable","Label","label","localized","maxRows","onChange","onChangeFromProps","path","readOnly","relationTo","required","serverURL","showError","style","value","populatedDocs","setPopulatedDocs","useState","activeRelationTo","Array","isArray","openModal","drawerSlug","setCollectionSlug","setInitialFiles","setMaxFiles","setOnSuccess","setSelectableCollections","permissions","code","i18n","t","collectionSlugsWithCreatePermission","filter","relation","collections","create","isPoly","existingIdsByRelation","values","val","push","collection","id","newFilterOptions","relations","forEach","existingIds","not_in","concat","ListDrawer","closeDrawer","closeListDrawer","openDrawer","openListDrawer","collectionSlugs","CreateDocDrawer","closeCreateDocDrawer","openCreateDocDrawer","collectionSlug","loadedValueRef","useRef","canCreate","newValue","populateDocs","items","length","grouped","idValue","fetches","Object","entries","map","ids","query","depth","draft","limit","locale","where","and","in","response","fetch","body","stringify","credentials","headers","language","method","docs","ok","data","json","docsById","reduce","acc","doc","results","Promise","all","lookup","sortedDocs","filename","isPlaceholder","normalizeValue","onUploadSuccess","uploadedForms","newValues","form","normalizedExisting","mergedValue","currentDocs","firstDoc","onLocalFileSelection","fileList","fileListToUse","dataTransfer","DataTransfer","add","files","collectionToUse","onListBulkSelect","selectedDocIDs","isSelected","itemsToLoad","loadedDocs","onDocCreate","onListSelect","selectedDoc","valueToUse","reloadDoc","docID","updatedDocsToPropogate","existingDocIndex","findIndex","hasExisting","updatedDocs","onReorder","newValueToSave","rel","onRemove","loadInitialDocs","v","current","valueChanged","showDropzone","div","Boolean","join","replace","CustomComponent","Fallback","fileDocs","readonly","showCollectionSlug","height","fileDoc","disabled","multipleFiles","buttonStyle","onClick","size","span","onSave","enableRowSelections","onBulkSelect","onSelect","p"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/fields/Upload/Input.tsx"],"sourcesContent":["'use client'\n\nimport type {\n ClientCollectionConfig,\n FieldLabelClientProps,\n FilterOptionsResult,\n JsonObject,\n StaticDescription,\n StaticLabel,\n UploadFieldClient,\n UploadField as UploadFieldType,\n ValueWithRelation,\n} from 'payload'\nimport type { MarkOptional } from 'ts-essentials'\n\nimport { useModal } from '@faceless-ui/modal'\nimport * as qs from 'qs-esm'\nimport React, { useCallback, useEffect, useMemo } from 'react'\n\nimport type { ListDrawerProps } from '../../elements/ListDrawer/types.js'\nimport type { ReloadDoc, ValueAsDataWithRelation } from './types.js'\n\nimport { type BulkUploadContext, useBulkUpload } from '../../elements/BulkUpload/index.js'\nimport { Button } from '../../elements/Button/index.js'\nimport { useDocumentDrawer } from '../../elements/DocumentDrawer/index.js'\nimport { Dropzone } from '../../elements/Dropzone/index.js'\nimport { useListDrawer } from '../../elements/ListDrawer/index.js'\nimport { RenderCustomComponent } from '../../elements/RenderCustomComponent/index.js'\nimport { ShimmerEffect } from '../../elements/ShimmerEffect/index.js'\nimport { FieldDescription } from '../../fields/FieldDescription/index.js'\nimport { FieldError } from '../../fields/FieldError/index.js'\nimport { FieldLabel } from '../../fields/FieldLabel/index.js'\nimport { useAuth } from '../../providers/Auth/index.js'\nimport { useLocale } from '../../providers/Locale/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { normalizeRelationshipValue } from '../../utilities/normalizeRelationshipValue.js'\nimport { fieldBaseClass } from '../shared/index.js'\nimport { UploadComponentHasMany } from './HasMany/index.js'\nimport { UploadComponentHasOne } from './HasOne/index.js'\nimport './index.scss'\n\nexport const baseClass = 'upload'\n\ntype PopulatedDocs = { relationTo: string; value: JsonObject }[]\n\nexport type UploadInputProps = {\n readonly AfterInput?: React.ReactNode\n readonly allowCreate?: boolean\n /**\n * Controls the visibility of the \"Create new collection\" button\n */\n readonly api?: string\n readonly BeforeInput?: React.ReactNode\n readonly className?: string\n readonly collection?: ClientCollectionConfig\n readonly customUploadActions?: React.ReactNode[]\n readonly Description?: React.ReactNode\n readonly description?: StaticDescription\n readonly displayPreview?: boolean\n readonly Error?: React.ReactNode\n readonly filterOptions?: FilterOptionsResult\n readonly hasMany?: boolean\n readonly hideRemoveFile?: boolean\n readonly isSortable?: boolean\n readonly Label?: React.ReactNode\n readonly label?: StaticLabel\n readonly labelProps?: FieldLabelClientProps<MarkOptional<UploadFieldClient, 'type'>>\n readonly localized?: boolean\n readonly maxRows?: number\n readonly onChange?: (e) => void\n readonly path: string\n readonly readOnly?: boolean\n readonly relationTo: UploadFieldType['relationTo']\n readonly required?: boolean\n readonly serverURL?: string\n readonly showError?: boolean\n readonly style?: React.CSSProperties\n readonly value?: (number | string)[] | number | string | ValueWithRelation | ValueWithRelation[]\n}\n\nexport function UploadInput(props: UploadInputProps) {\n const {\n AfterInput,\n allowCreate,\n api,\n BeforeInput,\n className,\n Description,\n description,\n displayPreview,\n Error,\n filterOptions: filterOptionsFromProps,\n hasMany,\n isSortable,\n Label,\n label,\n localized,\n maxRows,\n onChange: onChangeFromProps,\n path,\n readOnly,\n relationTo,\n required,\n serverURL,\n showError,\n style,\n value,\n } = props\n\n const [populatedDocs, setPopulatedDocs] = React.useState<\n {\n relationTo: string\n value: JsonObject\n }[]\n >()\n\n const [activeRelationTo] = React.useState<string>(\n Array.isArray(relationTo) ? relationTo[0] : relationTo,\n )\n\n const { openModal } = useModal()\n const {\n drawerSlug,\n setCollectionSlug,\n setInitialFiles,\n setMaxFiles,\n setOnSuccess,\n setSelectableCollections,\n } = useBulkUpload()\n const { permissions } = useAuth()\n const { code } = useLocale()\n const { i18n, t } = useTranslation()\n\n // This will be used by the bulk upload to allow you to select only collections you have create permissions for\n const collectionSlugsWithCreatePermission = useMemo(() => {\n if (Array.isArray(relationTo)) {\n return relationTo.filter(\n (relation) => permissions?.collections && permissions.collections?.[relation]?.create,\n )\n }\n return []\n }, [relationTo, permissions])\n\n const filterOptions: FilterOptionsResult = useMemo(() => {\n const isPoly = Array.isArray(relationTo)\n\n if (!value) {\n return filterOptionsFromProps\n }\n\n // Group existing IDs by relation\n const existingIdsByRelation: Record<string, (number | string)[]> = {}\n\n const values = Array.isArray(value) ? value : [value]\n\n for (const val of values) {\n if (isPoly && typeof val === 'object' && 'relationTo' in val) {\n // Poly upload - group by relationTo\n if (!existingIdsByRelation[val.relationTo]) {\n existingIdsByRelation[val.relationTo] = []\n }\n existingIdsByRelation[val.relationTo].push(val.value)\n } else if (!isPoly) {\n // Non-poly upload - all IDs belong to the single collection\n const collection = relationTo\n if (!existingIdsByRelation[collection]) {\n existingIdsByRelation[collection] = []\n }\n const id = typeof val === 'object' && 'value' in val ? val.value : val\n if (typeof id === 'string' || typeof id === 'number') {\n existingIdsByRelation[collection].push(id)\n }\n }\n }\n\n // Build filter options for each collection\n const newFilterOptions = { ...filterOptionsFromProps }\n const relations = isPoly ? relationTo : [relationTo]\n\n relations.forEach((relation) => {\n const existingIds = existingIdsByRelation[relation] || []\n\n newFilterOptions[relation] = {\n ...((filterOptionsFromProps?.[relation] as any) || {}),\n id: {\n ...((filterOptionsFromProps?.[relation] as any)?.id || {}),\n not_in: ((filterOptionsFromProps?.[relation] as any)?.id?.not_in || []).concat(\n existingIds,\n ),\n },\n }\n })\n\n return newFilterOptions\n }, [value, filterOptionsFromProps, relationTo])\n\n const [ListDrawer, , { closeDrawer: closeListDrawer, openDrawer: openListDrawer }] =\n useListDrawer({\n collectionSlugs: typeof relationTo === 'string' ? [relationTo] : relationTo,\n filterOptions,\n })\n\n const [\n CreateDocDrawer,\n ,\n { closeDrawer: closeCreateDocDrawer, openDrawer: openCreateDocDrawer },\n ] = useDocumentDrawer({\n collectionSlug: activeRelationTo,\n })\n\n /**\n * Track the last loaded value to prevent unnecessary reloads\n */\n const loadedValueRef = React.useRef<\n (number | string)[] | null | number | string | ValueWithRelation | ValueWithRelation[]\n >(null)\n\n const canCreate = useMemo(() => {\n if (!allowCreate) {\n return false\n }\n\n if (typeof activeRelationTo === 'string') {\n if (permissions?.collections && permissions.collections?.[activeRelationTo]?.create) {\n return true\n }\n }\n\n return false\n }, [activeRelationTo, permissions, allowCreate])\n\n const onChange = React.useCallback(\n (newValue) => {\n if (typeof onChangeFromProps === 'function') {\n onChangeFromProps(newValue)\n }\n },\n [onChangeFromProps],\n )\n\n const populateDocs = React.useCallback(\n async (items: ValueWithRelation[]): Promise<ValueAsDataWithRelation[]> => {\n if (!items?.length) {\n return []\n }\n\n // 1. Group IDs by collection\n const grouped: Record<string, (number | string)[]> = {}\n items.forEach(({ relationTo, value }) => {\n if (!grouped[relationTo]) {\n grouped[relationTo] = []\n }\n // Ensure we extract the actual ID value, not an object\n let idValue: number | string = value\n\n if (value && typeof value === 'object' && 'value' in (value as any)) {\n idValue = (value as any).value\n }\n\n grouped[relationTo].push(idValue)\n })\n\n // 2. Fetch per collection\n const fetches = Object.entries(grouped).map(async ([collection, ids]) => {\n const query = {\n depth: 0,\n draft: true,\n limit: ids.length,\n locale: code,\n where: {\n and: [\n {\n id: {\n in: ids,\n },\n },\n ],\n },\n }\n const response = await fetch(`${serverURL}${api}/${collection}`, {\n body: qs.stringify(query),\n credentials: 'include',\n headers: {\n 'Accept-Language': i18n.language,\n 'Content-Type': 'application/x-www-form-urlencoded',\n 'X-Payload-HTTP-Method-Override': 'GET',\n },\n method: 'POST',\n })\n let docs: any[] = []\n if (response.ok) {\n const data = await response.json()\n docs = data.docs\n }\n // Map docs by ID for fast lookup\n const docsById = docs.reduce((acc, doc) => {\n acc[doc.id] = doc\n return acc\n }, {})\n return { collection, docsById }\n })\n\n const results = await Promise.all(fetches)\n\n // 3. Build lookup\n const lookup: Record<string, Record<string, any>> = {}\n results.forEach(({ collection, docsById }) => {\n lookup[collection] = docsById\n })\n\n // 4. Reconstruct in input order, add placeholders if missing\n const sortedDocs = items.map(({ relationTo, value }) => {\n const doc = lookup[relationTo]?.[value] || {\n id: value,\n filename: `${t('general:untitled')} - ID: ${value}`,\n isPlaceholder: true,\n }\n return { relationTo, value: doc }\n })\n\n return sortedDocs\n },\n [serverURL, api, code, i18n.language, t],\n )\n\n const normalizeValue = useCallback(\n (value: any): any => normalizeRelationshipValue(value, relationTo),\n [relationTo],\n )\n\n const onUploadSuccess: BulkUploadContext['onSuccess'] = useCallback(\n (uploadedForms) => {\n const isPoly = Array.isArray(relationTo)\n\n if (hasMany) {\n const newValues = uploadedForms.map((form) =>\n isPoly ? { relationTo: form.collectionSlug, value: form.doc.id } : form.doc.id,\n )\n // Normalize existing values before merging\n const normalizedExisting = Array.isArray(value) ? value.map(normalizeValue) : []\n const mergedValue = [...normalizedExisting, ...newValues]\n onChange(mergedValue)\n setPopulatedDocs((currentDocs) => [\n ...(currentDocs || []),\n ...uploadedForms.map((form) => ({\n relationTo: form.collectionSlug,\n value: form.doc,\n })),\n ])\n } else {\n const firstDoc = uploadedForms[0]\n const newValue = isPoly\n ? { relationTo: firstDoc.collectionSlug, value: firstDoc.doc.id }\n : firstDoc.doc.id\n onChange(newValue)\n setPopulatedDocs([\n {\n relationTo: firstDoc.collectionSlug,\n value: firstDoc.doc,\n },\n ])\n }\n },\n [value, onChange, hasMany, relationTo, normalizeValue],\n )\n\n const onLocalFileSelection = React.useCallback(\n (fileList?: FileList) => {\n let fileListToUse = fileList\n if (!hasMany && fileList && fileList.length > 1) {\n const dataTransfer = new DataTransfer()\n dataTransfer.items.add(fileList[0])\n fileListToUse = dataTransfer.files\n }\n if (fileListToUse) {\n setInitialFiles(fileListToUse)\n }\n // Use activeRelationTo for poly uploads, or relationTo as string for single collection\n const collectionToUse = Array.isArray(relationTo) ? activeRelationTo : relationTo\n\n setCollectionSlug(collectionToUse)\n if (Array.isArray(collectionSlugsWithCreatePermission)) {\n setSelectableCollections(collectionSlugsWithCreatePermission)\n }\n\n if (typeof maxRows === 'number') {\n setMaxFiles(maxRows)\n }\n\n openModal(drawerSlug)\n },\n [\n hasMany,\n relationTo,\n activeRelationTo,\n setCollectionSlug,\n collectionSlugsWithCreatePermission,\n maxRows,\n openModal,\n drawerSlug,\n setInitialFiles,\n setSelectableCollections,\n setMaxFiles,\n ],\n )\n\n // only hasMany can bulk select\n const onListBulkSelect = React.useCallback<NonNullable<ListDrawerProps['onBulkSelect']>>(\n async (docs) => {\n const isPoly = Array.isArray(relationTo)\n const selectedDocIDs = []\n\n for (const [id, isSelected] of docs) {\n if (isSelected) {\n selectedDocIDs.push(id)\n }\n }\n\n const itemsToLoad = selectedDocIDs.map((id) => ({\n relationTo: activeRelationTo,\n value: id,\n }))\n\n const loadedDocs = await populateDocs(itemsToLoad)\n if (loadedDocs) {\n setPopulatedDocs((currentDocs) => [...(currentDocs || []), ...loadedDocs])\n }\n\n const newValues = selectedDocIDs.map((id) =>\n isPoly ? { relationTo: activeRelationTo, value: id } : id,\n )\n // Normalize existing values before merging\n const normalizedExisting = Array.isArray(value) ? value.map(normalizeValue) : []\n onChange([...normalizedExisting, ...newValues])\n closeListDrawer()\n },\n [activeRelationTo, closeListDrawer, onChange, populateDocs, value, relationTo, normalizeValue],\n )\n\n const onDocCreate = React.useCallback(\n (data) => {\n const isPoly = Array.isArray(relationTo)\n if (data.doc) {\n setPopulatedDocs((currentDocs) => [\n ...(currentDocs || []),\n {\n relationTo: activeRelationTo,\n value: data.doc,\n },\n ])\n\n const newValue = isPoly ? { relationTo: activeRelationTo, value: data.doc.id } : data.doc.id\n onChange(newValue)\n }\n closeCreateDocDrawer()\n },\n [closeCreateDocDrawer, activeRelationTo, onChange, relationTo],\n )\n\n const onListSelect = useCallback<NonNullable<ListDrawerProps['onSelect']>>(\n async ({ collectionSlug, doc }) => {\n const isPoly = Array.isArray(relationTo)\n\n const loadedDocs = await populateDocs([{ relationTo: collectionSlug, value: doc.id }])\n const selectedDoc = loadedDocs?.[0] || null\n\n setPopulatedDocs((currentDocs) => {\n if (selectedDoc) {\n if (hasMany) {\n return [...(currentDocs || []), selectedDoc]\n }\n return [selectedDoc]\n }\n return currentDocs\n })\n\n if (hasMany) {\n const newValue = isPoly ? { relationTo: collectionSlug, value: doc.id } : doc.id\n // Normalize existing values before merging\n const normalizedExisting = Array.isArray(value) ? value.map(normalizeValue) : []\n const valueToUse = [...normalizedExisting, newValue]\n onChange(valueToUse)\n } else {\n const valueToUse = isPoly ? { relationTo: collectionSlug, value: doc.id } : doc.id\n onChange(valueToUse)\n }\n closeListDrawer()\n },\n [closeListDrawer, hasMany, populateDocs, onChange, value, relationTo, normalizeValue],\n )\n\n const reloadDoc = React.useCallback<ReloadDoc>(\n async (docID, collectionSlug) => {\n const docs = await populateDocs([{ relationTo: collectionSlug, value: docID }])\n\n if (docs[0]) {\n let updatedDocsToPropogate = []\n setPopulatedDocs((currentDocs) => {\n const existingDocIndex = currentDocs?.findIndex((doc) => {\n const hasExisting = doc.value?.id === docs[0].value.id || doc.value?.isPlaceholder\n return hasExisting && doc.relationTo === collectionSlug\n })\n if (existingDocIndex > -1) {\n const updatedDocs = [...currentDocs]\n updatedDocs[existingDocIndex] = docs[0]\n updatedDocsToPropogate = updatedDocs\n return updatedDocs\n }\n return currentDocs\n })\n\n if (updatedDocsToPropogate.length && hasMany) {\n onChange(updatedDocsToPropogate.map((doc) => doc.value?.id))\n }\n }\n },\n [populateDocs, onChange, hasMany],\n )\n\n // only hasMany can reorder\n const onReorder = React.useCallback(\n (newValue) => {\n const isPoly = Array.isArray(relationTo)\n const newValueToSave = newValue.map(({ relationTo: rel, value }) =>\n isPoly ? { relationTo: rel, value: value.id } : value.id,\n )\n onChange(newValueToSave)\n setPopulatedDocs(newValue)\n },\n [onChange, relationTo],\n )\n\n const onRemove = React.useCallback(\n (newValue?: PopulatedDocs) => {\n const isPoly = Array.isArray(relationTo)\n\n if (!newValue || newValue.length === 0) {\n onChange(hasMany ? [] : null)\n setPopulatedDocs(hasMany ? [] : null)\n return\n }\n\n const newValueToSave = newValue.map(({ relationTo: rel, value }) =>\n isPoly ? { relationTo: rel, value: value.id } : value.id,\n )\n\n onChange(hasMany ? newValueToSave : newValueToSave[0])\n setPopulatedDocs(newValue)\n },\n [onChange, hasMany, relationTo],\n )\n\n useEffect(() => {\n async function loadInitialDocs() {\n if (value) {\n let itemsToLoad: ValueWithRelation[] = []\n if (\n Array.isArray(relationTo) &&\n ((typeof value === 'object' && 'relationTo' in value) ||\n (Array.isArray(value) &&\n value.length > 0 &&\n typeof value[0] === 'object' &&\n 'relationTo' in value[0]))\n ) {\n // For poly uploads, value should already be in the format { relationTo, value }\n const values = Array.isArray(value) ? value : [value]\n itemsToLoad = values\n .filter((v): v is ValueWithRelation => typeof v === 'object' && 'relationTo' in v)\n .map((v) => {\n // Ensure the value property is a simple ID, not nested\n let idValue: any = v.value\n while (\n idValue &&\n typeof idValue === 'object' &&\n idValue !== null &&\n 'value' in idValue\n ) {\n idValue = idValue.value\n }\n return {\n relationTo: v.relationTo,\n value: idValue as number | string,\n }\n })\n } else {\n // This check is here to satisfy TypeScript that relationTo is a string\n if (!Array.isArray(relationTo)) {\n // For single collection uploads, we need to wrap the IDs\n const ids = Array.isArray(value) ? value : [value]\n itemsToLoad = ids.map((id): ValueWithRelation => {\n // Extract the actual ID, handling nested objects\n let idValue: any = id\n while (\n idValue &&\n typeof idValue === 'object' &&\n idValue !== null &&\n 'value' in idValue\n ) {\n idValue = idValue.value\n }\n return {\n relationTo,\n value: idValue as number | string,\n }\n })\n }\n }\n\n if (itemsToLoad.length > 0) {\n const loadedDocs = await populateDocs(itemsToLoad)\n\n if (loadedDocs) {\n setPopulatedDocs(loadedDocs)\n loadedValueRef.current = value\n }\n }\n } else {\n // Clear populated docs when value is cleared\n setPopulatedDocs([])\n loadedValueRef.current = null\n }\n }\n\n // Only load if value has changed from what we last loaded\n const valueChanged = loadedValueRef.current !== value\n if (valueChanged) {\n void loadInitialDocs()\n }\n }, [populateDocs, value, relationTo])\n\n useEffect(() => {\n setOnSuccess(onUploadSuccess)\n }, [value, path, onUploadSuccess, setOnSuccess])\n\n const showDropzone =\n !value ||\n (hasMany && Array.isArray(value) && (typeof maxRows !== 'number' || value.length < maxRows)) ||\n (!hasMany && populatedDocs?.[0] && typeof populatedDocs[0].value === 'undefined')\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 id={`field-${path?.replace(/\\./g, '__')}`}\n style={style}\n >\n <RenderCustomComponent\n CustomComponent={Label}\n Fallback={\n <FieldLabel label={label} localized={localized} path={path} required={required} />\n }\n />\n <div className={`${baseClass}__wrap`}>\n <RenderCustomComponent\n CustomComponent={Error}\n Fallback={<FieldError path={path} showError={showError} />}\n />\n </div>\n {BeforeInput}\n <div className={`${baseClass}__dropzoneAndUpload`}>\n {hasMany && Array.isArray(value) && value.length > 0 ? (\n <>\n {populatedDocs && populatedDocs?.length > 0 ? (\n <UploadComponentHasMany\n displayPreview={displayPreview}\n fileDocs={populatedDocs}\n isSortable={isSortable && !readOnly}\n onRemove={onRemove}\n onReorder={onReorder}\n readonly={readOnly}\n reloadDoc={reloadDoc}\n serverURL={serverURL}\n showCollectionSlug={Array.isArray(relationTo)}\n />\n ) : (\n <div className={`${baseClass}__loadingRows`}>\n {value.map((id) => (\n <ShimmerEffect height=\"40px\" key={typeof id === 'object' ? id.value : id} />\n ))}\n </div>\n )}\n </>\n ) : null}\n {!hasMany && value ? (\n <>\n {populatedDocs && populatedDocs?.length > 0 && populatedDocs[0].value ? (\n <UploadComponentHasOne\n displayPreview={displayPreview}\n fileDoc={populatedDocs[0]}\n onRemove={onRemove}\n readonly={readOnly}\n reloadDoc={reloadDoc}\n serverURL={serverURL}\n showCollectionSlug={Array.isArray(relationTo)}\n />\n ) : populatedDocs && value && !populatedDocs?.[0]?.value ? (\n <>\n {t('general:untitled')} - ID: {value}\n </>\n ) : (\n <ShimmerEffect height=\"62px\" />\n )}\n </>\n ) : null}\n {showDropzone ? (\n <Dropzone\n disabled={readOnly || !canCreate}\n multipleFiles={hasMany}\n onChange={onLocalFileSelection}\n >\n <div className={`${baseClass}__dropzoneContent`}>\n <div className={`${baseClass}__dropzoneContent__buttons`}>\n {canCreate && (\n <>\n <Button\n buttonStyle=\"pill\"\n className={`${baseClass}__createNewToggler`}\n disabled={readOnly || !canCreate}\n onClick={() => {\n if (!readOnly) {\n if (hasMany) {\n onLocalFileSelection()\n } else {\n openCreateDocDrawer()\n }\n }\n }}\n size=\"small\"\n >\n {t('general:createNew')}\n </Button>\n <span className={`${baseClass}__dropzoneContent__orText`}>\n {t('general:or')}\n </span>\n </>\n )}\n <Button\n buttonStyle=\"pill\"\n className={`${baseClass}__listToggler`}\n disabled={readOnly}\n onClick={openListDrawer}\n size=\"small\"\n >\n {t('fields:chooseFromExisting')}\n </Button>\n <CreateDocDrawer onSave={onDocCreate} />\n <ListDrawer\n allowCreate={canCreate}\n enableRowSelections={hasMany}\n onBulkSelect={onListBulkSelect}\n onSelect={onListSelect}\n />\n </div>\n\n {canCreate && !readOnly && (\n <p className={`${baseClass}__dragAndDropText`}>\n {t('general:or')} {t('upload:dragAndDrop')}\n </p>\n )}\n </div>\n </Dropzone>\n ) : (\n <>\n {!readOnly &&\n !populatedDocs &&\n (!value ||\n typeof maxRows !== 'number' ||\n (Array.isArray(value) && value.length < maxRows)) ? (\n <ShimmerEffect height=\"40px\" />\n ) : null}\n </>\n )}\n </div>\n {AfterInput}\n <RenderCustomComponent\n CustomComponent={Description}\n Fallback={<FieldDescription description={description} path={path} />}\n />\n </div>\n )\n}\n"],"names":["useModal","qs","React","useCallback","useEffect","useMemo","useBulkUpload","Button","useDocumentDrawer","Dropzone","useListDrawer","RenderCustomComponent","ShimmerEffect","FieldDescription","FieldError","FieldLabel","useAuth","useLocale","useTranslation","normalizeRelationshipValue","fieldBaseClass","UploadComponentHasMany","UploadComponentHasOne","baseClass","UploadInput","props","AfterInput","allowCreate","api","BeforeInput","className","Description","description","displayPreview","Error","filterOptions","filterOptionsFromProps","hasMany","isSortable","Label","label","localized","maxRows","onChange","onChangeFromProps","path","readOnly","relationTo","required","serverURL","showError","style","value","populatedDocs","setPopulatedDocs","useState","activeRelationTo","Array","isArray","openModal","drawerSlug","setCollectionSlug","setInitialFiles","setMaxFiles","setOnSuccess","setSelectableCollections","permissions","code","i18n","t","collectionSlugsWithCreatePermission","filter","relation","collections","create","isPoly","existingIdsByRelation","values","val","push","collection","id","newFilterOptions","relations","forEach","existingIds","not_in","concat","ListDrawer","closeDrawer","closeListDrawer","openDrawer","openListDrawer","collectionSlugs","CreateDocDrawer","closeCreateDocDrawer","openCreateDocDrawer","collectionSlug","loadedValueRef","useRef","canCreate","newValue","populateDocs","items","length","grouped","idValue","fetches","Object","entries","map","ids","query","depth","draft","limit","locale","where","and","in","response","fetch","body","stringify","credentials","headers","language","method","docs","ok","data","json","docsById","reduce","acc","doc","results","Promise","all","lookup","sortedDocs","filename","isPlaceholder","normalizeValue","onUploadSuccess","uploadedForms","newValues","form","normalizedExisting","mergedValue","currentDocs","firstDoc","onLocalFileSelection","fileList","fileListToUse","dataTransfer","DataTransfer","add","files","collectionToUse","onListBulkSelect","selectedDocIDs","isSelected","itemsToLoad","loadedDocs","onDocCreate","onListSelect","selectedDoc","valueToUse","reloadDoc","docID","updatedDocsToPropogate","existingDocIndex","findIndex","hasExisting","updatedDocs","onReorder","newValueToSave","rel","onRemove","loadInitialDocs","v","current","valueChanged","showDropzone","div","Boolean","join","replace","CustomComponent","Fallback","fileDocs","readonly","showCollectionSlug","height","fileDoc","disabled","multipleFiles","buttonStyle","onClick","size","span","onSave","enableRowSelections","onBulkSelect","onSelect","p"],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ // kept for compatibility, not used
1
2
  export { };
2
3
 
3
4
  //# sourceMappingURL=types.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/fields/Upload/types.ts"],"sourcesContent":["import type { PaginatedDocs, ValueWithRelation } from 'payload'\n\nexport type ValueAsDataWithRelation = {\n relationTo: string\n value: any\n}\n\ntype PopulateDocsDeprecated = (\n ids: (number | string)[],\n items: never,\n collectionSlug?: string, // kept for compatibility, not used\n) => Promise<null | PaginatedDocs>\n\ntype PopulateDocsNew = (\n items: ValueWithRelation[],\n ids: never,\n collectionSlug: never,\n) => Promise<null | ValueAsDataWithRelation[]>\n\nexport type PopulateDocs = PopulateDocsDeprecated | PopulateDocsNew\n\nexport type ReloadDoc = (doc: number | string, collectionSlug: string) => Promise<void>\n"],"names":[],"mappings":"AAqBA,WAAuF"}
1
+ {"version":3,"sources":["../../../src/fields/Upload/types.ts"],"sourcesContent":["import type { PaginatedDocs, ValueWithRelation } from 'payload'\n\nexport type ValueAsDataWithRelation = {\n relationTo: string\n value: any\n}\n\ntype PopulateDocsDeprecated = (\n ids: (number | string)[],\n items: never,\n collectionSlug?: string, // kept for compatibility, not used\n) => Promise<null | PaginatedDocs>\n\ntype PopulateDocsNew = (\n items: ValueWithRelation[],\n ids: never,\n collectionSlug: never,\n) => Promise<null | ValueAsDataWithRelation[]>\n\nexport type PopulateDocs = PopulateDocsDeprecated | PopulateDocsNew\n\nexport type ReloadDoc = (doc: number | string, collectionSlug: string) => Promise<void>\n"],"names":[],"mappings":"AAU2B,mCAAmC;AAW9D,WAAuF"}
@@ -9,8 +9,7 @@ export const fieldBaseClass = 'field-type';
9
9
  const isCurrentLocaleDefaultLocale = locale?.code === localizationConfig?.defaultLocale;
10
10
  return fieldRTL !== false && locale?.rtl === true && (fieldLocalized || !fieldLocalized && !hasMultipleLocales || // If there is only one locale which is also rtl, that field is rtl too
11
11
  !fieldLocalized && isCurrentLocaleDefaultLocale) || // If the current locale is the default locale, but the field is not localized, that field is rtl too
12
- fieldRTL === true // If fieldRTL is true. This should be useful for when no localization is set at all in the payload config, but you still want fields to be rtl.
13
- ;
14
- }
12
+ fieldRTL === true;
13
+ } // If fieldRTL is true. This should be useful for when no localization is set at all in the payload config, but you still want fields to be rtl.
15
14
 
16
15
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/fields/shared/index.tsx"],"sourcesContent":["'use client'\nimport type { Locale, SanitizedLocalizationConfig } from 'payload'\n\nexport const fieldBaseClass = 'field-type'\n\n/**\n * Determines whether a field should be displayed as right-to-left (RTL) based on its configuration, payload's localization configuration and the adming user's currently enabled locale.\n\n * @returns Whether the field should be displayed as RTL.\n */\nexport function isFieldRTL({\n fieldLocalized,\n fieldRTL,\n locale,\n localizationConfig,\n}: {\n fieldLocalized: boolean\n fieldRTL: boolean\n locale: Locale\n localizationConfig?: SanitizedLocalizationConfig\n}) {\n const hasMultipleLocales =\n locale &&\n localizationConfig &&\n localizationConfig.locales &&\n localizationConfig.locales.length > 1\n\n const isCurrentLocaleDefaultLocale = locale?.code === localizationConfig?.defaultLocale\n\n return (\n (fieldRTL !== false &&\n locale?.rtl === true &&\n (fieldLocalized ||\n (!fieldLocalized && !hasMultipleLocales) || // If there is only one locale which is also rtl, that field is rtl too\n (!fieldLocalized && isCurrentLocaleDefaultLocale))) || // If the current locale is the default locale, but the field is not localized, that field is rtl too\n fieldRTL === true\n ) // If fieldRTL is true. This should be useful for when no localization is set at all in the payload config, but you still want fields to be rtl.\n}\n"],"names":["fieldBaseClass","isFieldRTL","fieldLocalized","fieldRTL","locale","localizationConfig","hasMultipleLocales","locales","length","isCurrentLocaleDefaultLocale","code","defaultLocale","rtl"],"mappings":"AAAA;AAGA,OAAO,MAAMA,iBAAiB,aAAY;AAE1C;;;;CAIC,GACD,OAAO,SAASC,WAAW,EACzBC,cAAc,EACdC,QAAQ,EACRC,MAAM,EACNC,kBAAkB,EAMnB;IACC,MAAMC,qBACJF,UACAC,sBACAA,mBAAmBE,OAAO,IAC1BF,mBAAmBE,OAAO,CAACC,MAAM,GAAG;IAEtC,MAAMC,+BAA+BL,QAAQM,SAASL,oBAAoBM;IAE1E,OACE,AAACR,aAAa,SACZC,QAAQQ,QAAQ,QACfV,CAAAA,kBACE,CAACA,kBAAkB,CAACI,sBAAuB,uEAAuE;IAClH,CAACJ,kBAAkBO,4BAA4B,KAAO,qGAAqG;IAChKN,aAAa,KACb,gJAAgJ;;AACpJ"}
1
+ {"version":3,"sources":["../../../src/fields/shared/index.tsx"],"sourcesContent":["'use client'\nimport type { Locale, SanitizedLocalizationConfig } from 'payload'\n\nexport const fieldBaseClass = 'field-type'\n\n/**\n * Determines whether a field should be displayed as right-to-left (RTL) based on its configuration, payload's localization configuration and the adming user's currently enabled locale.\n\n * @returns Whether the field should be displayed as RTL.\n */\nexport function isFieldRTL({\n fieldLocalized,\n fieldRTL,\n locale,\n localizationConfig,\n}: {\n fieldLocalized: boolean\n fieldRTL: boolean\n locale: Locale\n localizationConfig?: SanitizedLocalizationConfig\n}) {\n const hasMultipleLocales =\n locale &&\n localizationConfig &&\n localizationConfig.locales &&\n localizationConfig.locales.length > 1\n\n const isCurrentLocaleDefaultLocale = locale?.code === localizationConfig?.defaultLocale\n\n return (\n (fieldRTL !== false &&\n locale?.rtl === true &&\n (fieldLocalized ||\n (!fieldLocalized && !hasMultipleLocales) || // If there is only one locale which is also rtl, that field is rtl too\n (!fieldLocalized && isCurrentLocaleDefaultLocale))) || // If the current locale is the default locale, but the field is not localized, that field is rtl too\n fieldRTL === true\n ) // If fieldRTL is true. This should be useful for when no localization is set at all in the payload config, but you still want fields to be rtl.\n}\n"],"names":["fieldBaseClass","isFieldRTL","fieldLocalized","fieldRTL","locale","localizationConfig","hasMultipleLocales","locales","length","isCurrentLocaleDefaultLocale","code","defaultLocale","rtl"],"mappings":"AAAA;AAGA,OAAO,MAAMA,iBAAiB,aAAY;AAE1C;;;;CAIC,GACD,OAAO,SAASC,WAAW,EACzBC,cAAc,EACdC,QAAQ,EACRC,MAAM,EACNC,kBAAkB,EAMnB;IACC,MAAMC,qBACJF,UACAC,sBACAA,mBAAmBE,OAAO,IAC1BF,mBAAmBE,OAAO,CAACC,MAAM,GAAG;IAEtC,MAAMC,+BAA+BL,QAAQM,SAASL,oBAAoBM;IAE1E,OACE,AAACR,aAAa,SACZC,QAAQQ,QAAQ,QACfV,CAAAA,kBACE,CAACA,kBAAkB,CAACI,sBAAuB,uEAAuE;IAClH,CAACJ,kBAAkBO,4BAA4B,KAAO,qGAAqG;IAChKN,aAAa;AAEjB,EADI,gJAAgJ"}
@@ -1,6 +1,7 @@
1
1
  'use client';
2
2
  import ObjectIdImport from 'bson-objectid';
3
- import { dequal } from 'dequal/lite'; // lite: no need for Map and Set support
3
+ import { dequal } from 'dequal/lite';
4
+ // lite: no need for Map and Set support
4
5
  import { deepCopyObjectSimpleWithoutReactComponents } from 'payload/shared';
5
6
  import { mergeServerFormState } from './mergeServerFormState.js';
6
7
  import { flattenRows, separateRows } from './rows.js';