@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
@@ -82,6 +82,7 @@ export const RestoreMany = (props)=>{
82
82
  locale,
83
83
  select: {},
84
84
  trash: true,
85
+ // Ensure trashed docs are returned
85
86
  where: mergeListSearchAndWhere({
86
87
  collectionConfig,
87
88
  search: parseSearchParams(searchParams)?.search,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/elements/RestoreMany/index.tsx"],"sourcesContent":["'use client'\nimport type { ClientCollectionConfig, ViewTypes, Where } from 'payload'\n\nimport { useModal } from '@faceless-ui/modal'\nimport { getTranslation } from '@payloadcms/translations'\nimport { useRouter, useSearchParams } from 'next/navigation.js'\nimport { mergeListSearchAndWhere } from 'payload/shared'\nimport * as qs from 'qs-esm'\nimport React from 'react'\nimport { toast } from 'sonner'\n\nimport { CheckboxInput } from '../../fields/Checkbox/Input.js'\nimport { useAuth } from '../../providers/Auth/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useLocale } from '../../providers/Locale/index.js'\nimport { useRouteCache } from '../../providers/RouteCache/index.js'\nimport { SelectAllStatus, useSelection } from '../../providers/Selection/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { requests } from '../../utilities/api.js'\nimport { parseSearchParams } from '../../utilities/parseSearchParams.js'\nimport { ConfirmationModal } from '../ConfirmationModal/index.js'\nimport { ListSelectionButton } from '../ListSelection/index.js'\nimport './index.scss'\n\nconst confirmManyRestoreDrawerSlug = `confirm-restore-many-docs`\n\nconst baseClass = 'restore-many'\n\nexport type Props = {\n collection: ClientCollectionConfig\n viewType?: ViewTypes\n}\n\nexport const RestoreMany: React.FC<Props> = (props) => {\n const { collection: { slug } = {}, viewType } = props\n\n const { permissions } = useAuth()\n const {\n config: { collections, routes, serverURL },\n } = useConfig()\n const { code: locale } = useLocale()\n const router = useRouter()\n const { clearRouteCache } = useRouteCache()\n const searchParams = useSearchParams()\n const { count, getSelectedIds, selectAll, toggleAll } = useSelection()\n const { openModal } = useModal()\n\n const { i18n, t } = useTranslation()\n\n const [restoreAsPublished, setRestoreAsPublished] = React.useState(false)\n\n const collectionPermissions = permissions?.collections?.[slug]\n const hasUpdatePermission = collectionPermissions?.update\n\n if (selectAll === SelectAllStatus.None || !hasUpdatePermission || viewType !== 'trash') {\n return null\n }\n\n const selectingAll = selectAll === SelectAllStatus.AllAvailable\n const selectedIDs = !selectingAll ? getSelectedIds() : []\n\n const baseWhere = parseSearchParams(searchParams)?.where as Where\n\n const finalWhere = {\n and: [\n ...(Array.isArray(baseWhere?.and) ? baseWhere.and : baseWhere ? [baseWhere] : []),\n { deletedAt: { exists: true } },\n ],\n }\n\n const handleRestore = async () => {\n const collectionConfig = collections.find((c) => c.slug === slug)\n if (!collectionConfig) {\n return\n }\n\n let whereConstraint: Where\n\n if (selectingAll) {\n whereConstraint = finalWhere\n } else {\n whereConstraint = {\n and: [{ id: { in: selectedIDs } }, { deletedAt: { exists: true } }],\n }\n }\n\n const url = `${serverURL}${routes.api}/${slug}${qs.stringify(\n {\n limit: 0,\n locale,\n select: {},\n trash: true, // Ensure trashed docs are returned\n where: mergeListSearchAndWhere({\n collectionConfig,\n search: parseSearchParams(searchParams)?.search as string,\n where: whereConstraint,\n }),\n },\n { addQueryPrefix: true },\n )}`\n\n const body: Record<string, unknown> = {\n deletedAt: null,\n }\n\n // Only include _status if drafts are enabled\n if (collectionConfig?.versions?.drafts) {\n body._status = restoreAsPublished ? 'published' : 'draft'\n }\n\n const restoreManyResponse = await requests.patch(url, {\n body: JSON.stringify(body),\n headers: {\n 'Accept-Language': i18n.language,\n 'Content-Type': 'application/json',\n },\n })\n\n try {\n const { plural, singular } = collectionConfig.labels\n const json = await restoreManyResponse.json()\n\n const restoredDocs = json?.docs?.length || 0\n const successLabel = restoredDocs > 1 ? plural : singular\n\n if (restoreManyResponse.status < 400 || restoredDocs > 0) {\n toast.success(\n t('general:restoredCountSuccessfully', {\n count: restoredDocs,\n label: getTranslation(successLabel, i18n),\n }),\n )\n }\n\n if (json?.errors?.length > 0) {\n toast.error(json.message, {\n description: json.errors.map((e) => e.message).join('\\n'),\n })\n }\n } catch (err) {\n toast.error(t('error:unknown'))\n }\n\n toggleAll()\n\n router.replace(\n qs.stringify(\n {\n ...parseSearchParams(searchParams),\n page: selectingAll ? '1' : undefined,\n },\n { addQueryPrefix: true },\n ),\n )\n\n clearRouteCache()\n }\n\n const collectionConfig = collections.find(({ slug: s }) => s === slug)\n\n const labelString = getTranslation(\n count === 1 ? collectionConfig.labels.singular : collectionConfig.labels.plural,\n i18n,\n )\n\n return (\n <React.Fragment>\n <ListSelectionButton\n aria-label={t('general:restore')}\n className=\"restore-documents__toggle\"\n onClick={() => {\n openModal(confirmManyRestoreDrawerSlug)\n }}\n >\n {t('general:restore')}\n </ListSelectionButton>\n <ConfirmationModal\n body={\n <React.Fragment>\n {t(\n collectionConfig?.versions?.drafts\n ? 'general:aboutToRestoreAsDraftCount'\n : 'general:aboutToRestoreCount',\n {\n count,\n label: labelString,\n },\n )}\n {collectionConfig?.versions?.drafts && (\n <div className={`${baseClass}__checkbox`}>\n <CheckboxInput\n checked={restoreAsPublished}\n id=\"restore-as-published-many\"\n label={t('general:restoreAsPublished')}\n name=\"restore-as-published-many\"\n onToggle={(e) => setRestoreAsPublished(e.target.checked)}\n />\n </div>\n )}\n </React.Fragment>\n }\n className={baseClass}\n confirmingLabel={t('general:restoring')}\n heading={t('general:confirmRestoration')}\n modalSlug={confirmManyRestoreDrawerSlug}\n onConfirm={handleRestore}\n />\n </React.Fragment>\n )\n}\n"],"names":["useModal","getTranslation","useRouter","useSearchParams","mergeListSearchAndWhere","qs","React","toast","CheckboxInput","useAuth","useConfig","useLocale","useRouteCache","SelectAllStatus","useSelection","useTranslation","requests","parseSearchParams","ConfirmationModal","ListSelectionButton","confirmManyRestoreDrawerSlug","baseClass","RestoreMany","props","collection","slug","viewType","permissions","config","collections","routes","serverURL","code","locale","router","clearRouteCache","searchParams","count","getSelectedIds","selectAll","toggleAll","openModal","i18n","t","restoreAsPublished","setRestoreAsPublished","useState","collectionPermissions","hasUpdatePermission","update","None","selectingAll","AllAvailable","selectedIDs","baseWhere","where","finalWhere","and","Array","isArray","deletedAt","exists","handleRestore","collectionConfig","find","c","whereConstraint","id","in","url","api","stringify","limit","select","trash","search","addQueryPrefix","body","versions","drafts","_status","restoreManyResponse","patch","JSON","headers","language","plural","singular","labels","json","restoredDocs","docs","length","successLabel","status","success","label","errors","error","message","description","map","e","join","err","replace","page","undefined","s","labelString","Fragment","aria-label","className","onClick","div","checked","name","onToggle","target","confirmingLabel","heading","modalSlug","onConfirm"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/elements/RestoreMany/index.tsx"],"sourcesContent":["'use client'\nimport type { ClientCollectionConfig, ViewTypes, Where } from 'payload'\n\nimport { useModal } from '@faceless-ui/modal'\nimport { getTranslation } from '@payloadcms/translations'\nimport { useRouter, useSearchParams } from 'next/navigation.js'\nimport { mergeListSearchAndWhere } from 'payload/shared'\nimport * as qs from 'qs-esm'\nimport React from 'react'\nimport { toast } from 'sonner'\n\nimport { CheckboxInput } from '../../fields/Checkbox/Input.js'\nimport { useAuth } from '../../providers/Auth/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useLocale } from '../../providers/Locale/index.js'\nimport { useRouteCache } from '../../providers/RouteCache/index.js'\nimport { SelectAllStatus, useSelection } from '../../providers/Selection/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { requests } from '../../utilities/api.js'\nimport { parseSearchParams } from '../../utilities/parseSearchParams.js'\nimport { ConfirmationModal } from '../ConfirmationModal/index.js'\nimport { ListSelectionButton } from '../ListSelection/index.js'\nimport './index.scss'\n\nconst confirmManyRestoreDrawerSlug = `confirm-restore-many-docs`\n\nconst baseClass = 'restore-many'\n\nexport type Props = {\n collection: ClientCollectionConfig\n viewType?: ViewTypes\n}\n\nexport const RestoreMany: React.FC<Props> = (props) => {\n const { collection: { slug } = {}, viewType } = props\n\n const { permissions } = useAuth()\n const {\n config: { collections, routes, serverURL },\n } = useConfig()\n const { code: locale } = useLocale()\n const router = useRouter()\n const { clearRouteCache } = useRouteCache()\n const searchParams = useSearchParams()\n const { count, getSelectedIds, selectAll, toggleAll } = useSelection()\n const { openModal } = useModal()\n\n const { i18n, t } = useTranslation()\n\n const [restoreAsPublished, setRestoreAsPublished] = React.useState(false)\n\n const collectionPermissions = permissions?.collections?.[slug]\n const hasUpdatePermission = collectionPermissions?.update\n\n if (selectAll === SelectAllStatus.None || !hasUpdatePermission || viewType !== 'trash') {\n return null\n }\n\n const selectingAll = selectAll === SelectAllStatus.AllAvailable\n const selectedIDs = !selectingAll ? getSelectedIds() : []\n\n const baseWhere = parseSearchParams(searchParams)?.where as Where\n\n const finalWhere = {\n and: [\n ...(Array.isArray(baseWhere?.and) ? baseWhere.and : baseWhere ? [baseWhere] : []),\n { deletedAt: { exists: true } },\n ],\n }\n\n const handleRestore = async () => {\n const collectionConfig = collections.find((c) => c.slug === slug)\n if (!collectionConfig) {\n return\n }\n\n let whereConstraint: Where\n\n if (selectingAll) {\n whereConstraint = finalWhere\n } else {\n whereConstraint = {\n and: [{ id: { in: selectedIDs } }, { deletedAt: { exists: true } }],\n }\n }\n\n const url = `${serverURL}${routes.api}/${slug}${qs.stringify(\n {\n limit: 0,\n locale,\n select: {},\n trash: true, // Ensure trashed docs are returned\n where: mergeListSearchAndWhere({\n collectionConfig,\n search: parseSearchParams(searchParams)?.search as string,\n where: whereConstraint,\n }),\n },\n { addQueryPrefix: true },\n )}`\n\n const body: Record<string, unknown> = {\n deletedAt: null,\n }\n\n // Only include _status if drafts are enabled\n if (collectionConfig?.versions?.drafts) {\n body._status = restoreAsPublished ? 'published' : 'draft'\n }\n\n const restoreManyResponse = await requests.patch(url, {\n body: JSON.stringify(body),\n headers: {\n 'Accept-Language': i18n.language,\n 'Content-Type': 'application/json',\n },\n })\n\n try {\n const { plural, singular } = collectionConfig.labels\n const json = await restoreManyResponse.json()\n\n const restoredDocs = json?.docs?.length || 0\n const successLabel = restoredDocs > 1 ? plural : singular\n\n if (restoreManyResponse.status < 400 || restoredDocs > 0) {\n toast.success(\n t('general:restoredCountSuccessfully', {\n count: restoredDocs,\n label: getTranslation(successLabel, i18n),\n }),\n )\n }\n\n if (json?.errors?.length > 0) {\n toast.error(json.message, {\n description: json.errors.map((e) => e.message).join('\\n'),\n })\n }\n } catch (err) {\n toast.error(t('error:unknown'))\n }\n\n toggleAll()\n\n router.replace(\n qs.stringify(\n {\n ...parseSearchParams(searchParams),\n page: selectingAll ? '1' : undefined,\n },\n { addQueryPrefix: true },\n ),\n )\n\n clearRouteCache()\n }\n\n const collectionConfig = collections.find(({ slug: s }) => s === slug)\n\n const labelString = getTranslation(\n count === 1 ? collectionConfig.labels.singular : collectionConfig.labels.plural,\n i18n,\n )\n\n return (\n <React.Fragment>\n <ListSelectionButton\n aria-label={t('general:restore')}\n className=\"restore-documents__toggle\"\n onClick={() => {\n openModal(confirmManyRestoreDrawerSlug)\n }}\n >\n {t('general:restore')}\n </ListSelectionButton>\n <ConfirmationModal\n body={\n <React.Fragment>\n {t(\n collectionConfig?.versions?.drafts\n ? 'general:aboutToRestoreAsDraftCount'\n : 'general:aboutToRestoreCount',\n {\n count,\n label: labelString,\n },\n )}\n {collectionConfig?.versions?.drafts && (\n <div className={`${baseClass}__checkbox`}>\n <CheckboxInput\n checked={restoreAsPublished}\n id=\"restore-as-published-many\"\n label={t('general:restoreAsPublished')}\n name=\"restore-as-published-many\"\n onToggle={(e) => setRestoreAsPublished(e.target.checked)}\n />\n </div>\n )}\n </React.Fragment>\n }\n className={baseClass}\n confirmingLabel={t('general:restoring')}\n heading={t('general:confirmRestoration')}\n modalSlug={confirmManyRestoreDrawerSlug}\n onConfirm={handleRestore}\n />\n </React.Fragment>\n )\n}\n"],"names":["useModal","getTranslation","useRouter","useSearchParams","mergeListSearchAndWhere","qs","React","toast","CheckboxInput","useAuth","useConfig","useLocale","useRouteCache","SelectAllStatus","useSelection","useTranslation","requests","parseSearchParams","ConfirmationModal","ListSelectionButton","confirmManyRestoreDrawerSlug","baseClass","RestoreMany","props","collection","slug","viewType","permissions","config","collections","routes","serverURL","code","locale","router","clearRouteCache","searchParams","count","getSelectedIds","selectAll","toggleAll","openModal","i18n","t","restoreAsPublished","setRestoreAsPublished","useState","collectionPermissions","hasUpdatePermission","update","None","selectingAll","AllAvailable","selectedIDs","baseWhere","where","finalWhere","and","Array","isArray","deletedAt","exists","handleRestore","collectionConfig","find","c","whereConstraint","id","in","url","api","stringify","limit","select","trash","search","addQueryPrefix","body","versions","drafts","_status","restoreManyResponse","patch","JSON","headers","language","plural","singular","labels","json","restoredDocs","docs","length","successLabel","status","success","label","errors","error","message","description","map","e","join","err","replace","page","undefined","s","labelString","Fragment","aria-label","className","onClick","div","checked","name","onToggle","target","confirmingLabel","heading","modalSlug","onConfirm"],"mappings":"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"}
@@ -25,9 +25,8 @@ export function SaveButton({ label: labelProp }) {
25
25
  's'
26
26
  ]
27
27
  }, (e)=>{
28
- if (disabled) {
28
+ if (disabled) {}
29
29
  // absorb the event
30
- }
31
30
  e.preventDefault();
32
31
  e.stopPropagation();
33
32
  if (ref?.current) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/elements/SaveButton/index.tsx"],"sourcesContent":["'use client'\n\nimport type { SaveButtonClientProps } from 'payload'\n\nimport React, { useRef } from 'react'\n\nimport { useForm, useFormModified } from '../../forms/Form/context.js'\nimport { FormSubmit } from '../../forms/Submit/index.js'\nimport { useHotkey } from '../../hooks/useHotkey.js'\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { useEditDepth } from '../../providers/EditDepth/index.js'\nimport { useOperation } from '../../providers/Operation/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\n\nexport function SaveButton({ label: labelProp }: SaveButtonClientProps) {\n const { uploadStatus } = useDocumentInfo()\n const { t } = useTranslation()\n const { submit } = useForm()\n const modified = useFormModified()\n const label = labelProp || t('general:save')\n const ref = useRef<HTMLButtonElement>(null)\n const editDepth = useEditDepth()\n const operation = useOperation()\n\n const disabled = (operation === 'update' && !modified) || uploadStatus === 'uploading'\n\n useHotkey({ cmdCtrlKey: true, editDepth, keyCodes: ['s'] }, (e) => {\n if (disabled) {\n // absorb the event\n }\n\n e.preventDefault()\n e.stopPropagation()\n if (ref?.current) {\n ref.current.click()\n }\n })\n\n const handleSubmit = () => {\n if (uploadStatus === 'uploading') {\n return\n }\n\n return void submit()\n }\n\n return (\n <FormSubmit\n buttonId=\"action-save\"\n disabled={disabled}\n onClick={handleSubmit}\n ref={ref}\n size=\"medium\"\n type=\"button\"\n >\n {label}\n </FormSubmit>\n )\n}\n"],"names":["React","useRef","useForm","useFormModified","FormSubmit","useHotkey","useDocumentInfo","useEditDepth","useOperation","useTranslation","SaveButton","label","labelProp","uploadStatus","t","submit","modified","ref","editDepth","operation","disabled","cmdCtrlKey","keyCodes","e","preventDefault","stopPropagation","current","click","handleSubmit","buttonId","onClick","size","type"],"mappings":"AAAA;;AAIA,OAAOA,SAASC,MAAM,QAAQ,QAAO;AAErC,SAASC,OAAO,EAAEC,eAAe,QAAQ,8BAA6B;AACtE,SAASC,UAAU,QAAQ,8BAA6B;AACxD,SAASC,SAAS,QAAQ,2BAA0B;AACpD,SAASC,eAAe,QAAQ,wCAAuC;AACvE,SAASC,YAAY,QAAQ,qCAAoC;AACjE,SAASC,YAAY,QAAQ,qCAAoC;AACjE,SAASC,cAAc,QAAQ,uCAAsC;AAErE,OAAO,SAASC,WAAW,EAAEC,OAAOC,SAAS,EAAyB;IACpE,MAAM,EAAEC,YAAY,EAAE,GAAGP;IACzB,MAAM,EAAEQ,CAAC,EAAE,GAAGL;IACd,MAAM,EAAEM,MAAM,EAAE,GAAGb;IACnB,MAAMc,WAAWb;IACjB,MAAMQ,QAAQC,aAAaE,EAAE;IAC7B,MAAMG,MAAMhB,OAA0B;IACtC,MAAMiB,YAAYX;IAClB,MAAMY,YAAYX;IAElB,MAAMY,WAAW,AAACD,cAAc,YAAY,CAACH,YAAaH,iBAAiB;IAE3ER,UAAU;QAAEgB,YAAY;QAAMH;QAAWI,UAAU;YAAC;SAAI;IAAC,GAAG,CAACC;QAC3D,IAAIH,UAAU;QACZ,mBAAmB;QACrB;QAEAG,EAAEC,cAAc;QAChBD,EAAEE,eAAe;QACjB,IAAIR,KAAKS,SAAS;YAChBT,IAAIS,OAAO,CAACC,KAAK;QACnB;IACF;IAEA,MAAMC,eAAe;QACnB,IAAIf,iBAAiB,aAAa;YAChC;QACF;QAEA,OAAO,KAAKE;IACd;IAEA,qBACE,KAACX;QACCyB,UAAS;QACTT,UAAUA;QACVU,SAASF;QACTX,KAAKA;QACLc,MAAK;QACLC,MAAK;kBAEJrB;;AAGP"}
1
+ {"version":3,"sources":["../../../src/elements/SaveButton/index.tsx"],"sourcesContent":["'use client'\n\nimport type { SaveButtonClientProps } from 'payload'\n\nimport React, { useRef } from 'react'\n\nimport { useForm, useFormModified } from '../../forms/Form/context.js'\nimport { FormSubmit } from '../../forms/Submit/index.js'\nimport { useHotkey } from '../../hooks/useHotkey.js'\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { useEditDepth } from '../../providers/EditDepth/index.js'\nimport { useOperation } from '../../providers/Operation/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\n\nexport function SaveButton({ label: labelProp }: SaveButtonClientProps) {\n const { uploadStatus } = useDocumentInfo()\n const { t } = useTranslation()\n const { submit } = useForm()\n const modified = useFormModified()\n const label = labelProp || t('general:save')\n const ref = useRef<HTMLButtonElement>(null)\n const editDepth = useEditDepth()\n const operation = useOperation()\n\n const disabled = (operation === 'update' && !modified) || uploadStatus === 'uploading'\n\n useHotkey({ cmdCtrlKey: true, editDepth, keyCodes: ['s'] }, (e) => {\n if (disabled) {\n // absorb the event\n }\n\n e.preventDefault()\n e.stopPropagation()\n if (ref?.current) {\n ref.current.click()\n }\n })\n\n const handleSubmit = () => {\n if (uploadStatus === 'uploading') {\n return\n }\n\n return void submit()\n }\n\n return (\n <FormSubmit\n buttonId=\"action-save\"\n disabled={disabled}\n onClick={handleSubmit}\n ref={ref}\n size=\"medium\"\n type=\"button\"\n >\n {label}\n </FormSubmit>\n )\n}\n"],"names":["React","useRef","useForm","useFormModified","FormSubmit","useHotkey","useDocumentInfo","useEditDepth","useOperation","useTranslation","SaveButton","label","labelProp","uploadStatus","t","submit","modified","ref","editDepth","operation","disabled","cmdCtrlKey","keyCodes","e","preventDefault","stopPropagation","current","click","handleSubmit","buttonId","onClick","size","type"],"mappings":"AAAA;;AAIA,OAAOA,SAASC,MAAM,QAAQ,QAAO;AAErC,SAASC,OAAO,EAAEC,eAAe,QAAQ,8BAA6B;AACtE,SAASC,UAAU,QAAQ,8BAA6B;AACxD,SAASC,SAAS,QAAQ,2BAA0B;AACpD,SAASC,eAAe,QAAQ,wCAAuC;AACvE,SAASC,YAAY,QAAQ,qCAAoC;AACjE,SAASC,YAAY,QAAQ,qCAAoC;AACjE,SAASC,cAAc,QAAQ,uCAAsC;AAErE,OAAO,SAASC,WAAW,EAAEC,OAAOC,SAAS,EAAyB;IACpE,MAAM,EAAEC,YAAY,EAAE,GAAGP;IACzB,MAAM,EAAEQ,CAAC,EAAE,GAAGL;IACd,MAAM,EAAEM,MAAM,EAAE,GAAGb;IACnB,MAAMc,WAAWb;IACjB,MAAMQ,QAAQC,aAAaE,EAAE;IAC7B,MAAMG,MAAMhB,OAA0B;IACtC,MAAMiB,YAAYX;IAClB,MAAMY,YAAYX;IAElB,MAAMY,WAAW,AAACD,cAAc,YAAY,CAACH,YAAaH,iBAAiB;IAE3ER,UAAU;QAAEgB,YAAY;QAAMH;QAAWI,UAAU;YAAC;SAAI;IAAC,GAAG,CAACC;QAC3D,IAAIH,UAAU,CAEd;QADE,mBAAmB;QAGrBG,EAAEC,cAAc;QAChBD,EAAEE,eAAe;QACjB,IAAIR,KAAKS,SAAS;YAChBT,IAAIS,OAAO,CAACC,KAAK;QACnB;IACF;IAEA,MAAMC,eAAe;QACnB,IAAIf,iBAAiB,aAAa;YAChC;QACF;QAEA,OAAO,KAAKE;IACd;IAEA,qBACE,KAACX;QACCyB,UAAS;QACTT,UAAUA;QACVU,SAASF;QACTX,KAAKA;QACLc,MAAK;QACLC,MAAK;kBAEJrB;;AAGP"}
@@ -65,9 +65,8 @@ export function SaveDraftButton(props) {
65
65
  's'
66
66
  ]
67
67
  }, (e)=>{
68
- if (disabled) {
68
+ if (disabled) {}
69
69
  // absorb the event
70
- }
71
70
  e.preventDefault();
72
71
  e.stopPropagation();
73
72
  if (ref?.current) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/elements/SaveDraftButton/index.tsx"],"sourcesContent":["'use client'\n\nimport type { SaveDraftButtonClientProps } from 'payload'\n\nimport React, { useCallback, useRef } from 'react'\n\nimport { useForm, useFormModified } from '../../forms/Form/context.js'\nimport { FormSubmit } from '../../forms/Submit/index.js'\nimport { useHotkey } from '../../hooks/useHotkey.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { useEditDepth } from '../../providers/EditDepth/index.js'\nimport { useLocale } from '../../providers/Locale/index.js'\nimport { useOperation } from '../../providers/Operation/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\n\nconst baseClass = 'save-draft'\n\nexport function SaveDraftButton(props: SaveDraftButtonClientProps) {\n const {\n config: {\n routes: { api },\n serverURL,\n },\n } = useConfig()\n\n const { id, collectionSlug, globalSlug, setUnpublishedVersionCount, uploadStatus } =\n useDocumentInfo()\n\n const modified = useFormModified()\n const { code: locale } = useLocale()\n const ref = useRef<HTMLButtonElement>(null)\n const editDepth = useEditDepth()\n const { t } = useTranslation()\n const { submit } = useForm()\n const operation = useOperation()\n\n const disabled = (operation === 'update' && !modified) || uploadStatus === 'uploading'\n\n const saveDraft = useCallback(async () => {\n if (disabled) {\n return\n }\n\n const search = `?locale=${locale}&depth=0&fallback-locale=null&draft=true`\n let action\n let method = 'POST'\n\n if (collectionSlug) {\n action = `${serverURL}${api}/${collectionSlug}${id ? `/${id}` : ''}${search}`\n if (id) {\n method = 'PATCH'\n }\n }\n\n if (globalSlug) {\n action = `${serverURL}${api}/globals/${globalSlug}${search}`\n }\n\n await submit({\n action,\n method,\n overrides: {\n _status: 'draft',\n },\n skipValidation: true,\n })\n\n setUnpublishedVersionCount((count) => count + 1)\n }, [\n submit,\n collectionSlug,\n globalSlug,\n serverURL,\n api,\n locale,\n id,\n disabled,\n setUnpublishedVersionCount,\n ])\n\n useHotkey({ cmdCtrlKey: true, editDepth, keyCodes: ['s'] }, (e) => {\n if (disabled) {\n // absorb the event\n }\n\n e.preventDefault()\n e.stopPropagation()\n if (ref?.current) {\n ref.current.click()\n }\n })\n\n return (\n <FormSubmit\n buttonId=\"action-save-draft\"\n buttonStyle=\"secondary\"\n className={baseClass}\n disabled={disabled}\n onClick={() => {\n return void saveDraft()\n }}\n ref={ref}\n size=\"medium\"\n type=\"button\"\n >\n {t('version:saveDraft')}\n </FormSubmit>\n )\n}\n"],"names":["React","useCallback","useRef","useForm","useFormModified","FormSubmit","useHotkey","useConfig","useDocumentInfo","useEditDepth","useLocale","useOperation","useTranslation","baseClass","SaveDraftButton","props","config","routes","api","serverURL","id","collectionSlug","globalSlug","setUnpublishedVersionCount","uploadStatus","modified","code","locale","ref","editDepth","t","submit","operation","disabled","saveDraft","search","action","method","overrides","_status","skipValidation","count","cmdCtrlKey","keyCodes","e","preventDefault","stopPropagation","current","click","buttonId","buttonStyle","className","onClick","size","type"],"mappings":"AAAA;;AAIA,OAAOA,SAASC,WAAW,EAAEC,MAAM,QAAQ,QAAO;AAElD,SAASC,OAAO,EAAEC,eAAe,QAAQ,8BAA6B;AACtE,SAASC,UAAU,QAAQ,8BAA6B;AACxD,SAASC,SAAS,QAAQ,2BAA0B;AACpD,SAASC,SAAS,QAAQ,kCAAiC;AAC3D,SAASC,eAAe,QAAQ,wCAAuC;AACvE,SAASC,YAAY,QAAQ,qCAAoC;AACjE,SAASC,SAAS,QAAQ,kCAAiC;AAC3D,SAASC,YAAY,QAAQ,qCAAoC;AACjE,SAASC,cAAc,QAAQ,uCAAsC;AAErE,MAAMC,YAAY;AAElB,OAAO,SAASC,gBAAgBC,KAAiC;IAC/D,MAAM,EACJC,QAAQ,EACNC,QAAQ,EAAEC,GAAG,EAAE,EACfC,SAAS,EACV,EACF,GAAGZ;IAEJ,MAAM,EAAEa,EAAE,EAAEC,cAAc,EAAEC,UAAU,EAAEC,0BAA0B,EAAEC,YAAY,EAAE,GAChFhB;IAEF,MAAMiB,WAAWrB;IACjB,MAAM,EAAEsB,MAAMC,MAAM,EAAE,GAAGjB;IACzB,MAAMkB,MAAM1B,OAA0B;IACtC,MAAM2B,YAAYpB;IAClB,MAAM,EAAEqB,CAAC,EAAE,GAAGlB;IACd,MAAM,EAAEmB,MAAM,EAAE,GAAG5B;IACnB,MAAM6B,YAAYrB;IAElB,MAAMsB,WAAW,AAACD,cAAc,YAAY,CAACP,YAAaD,iBAAiB;IAE3E,MAAMU,YAAYjC,YAAY;QAC5B,IAAIgC,UAAU;YACZ;QACF;QAEA,MAAME,SAAS,CAAC,QAAQ,EAAER,OAAO,wCAAwC,CAAC;QAC1E,IAAIS;QACJ,IAAIC,SAAS;QAEb,IAAIhB,gBAAgB;YAClBe,SAAS,GAAGjB,YAAYD,IAAI,CAAC,EAAEG,iBAAiBD,KAAK,CAAC,CAAC,EAAEA,IAAI,GAAG,KAAKe,QAAQ;YAC7E,IAAIf,IAAI;gBACNiB,SAAS;YACX;QACF;QAEA,IAAIf,YAAY;YACdc,SAAS,GAAGjB,YAAYD,IAAI,SAAS,EAAEI,aAAaa,QAAQ;QAC9D;QAEA,MAAMJ,OAAO;YACXK;YACAC;YACAC,WAAW;gBACTC,SAAS;YACX;YACAC,gBAAgB;QAClB;QAEAjB,2BAA2B,CAACkB,QAAUA,QAAQ;IAChD,GAAG;QACDV;QACAV;QACAC;QACAH;QACAD;QACAS;QACAP;QACAa;QACAV;KACD;IAEDjB,UAAU;QAAEoC,YAAY;QAAMb;QAAWc,UAAU;YAAC;SAAI;IAAC,GAAG,CAACC;QAC3D,IAAIX,UAAU;QACZ,mBAAmB;QACrB;QAEAW,EAAEC,cAAc;QAChBD,EAAEE,eAAe;QACjB,IAAIlB,KAAKmB,SAAS;YAChBnB,IAAImB,OAAO,CAACC,KAAK;QACnB;IACF;IAEA,qBACE,KAAC3C;QACC4C,UAAS;QACTC,aAAY;QACZC,WAAWtC;QACXoB,UAAUA;QACVmB,SAAS;YACP,OAAO,KAAKlB;QACd;QACAN,KAAKA;QACLyB,MAAK;QACLC,MAAK;kBAEJxB,EAAE;;AAGT"}
1
+ {"version":3,"sources":["../../../src/elements/SaveDraftButton/index.tsx"],"sourcesContent":["'use client'\n\nimport type { SaveDraftButtonClientProps } from 'payload'\n\nimport React, { useCallback, useRef } from 'react'\n\nimport { useForm, useFormModified } from '../../forms/Form/context.js'\nimport { FormSubmit } from '../../forms/Submit/index.js'\nimport { useHotkey } from '../../hooks/useHotkey.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { useEditDepth } from '../../providers/EditDepth/index.js'\nimport { useLocale } from '../../providers/Locale/index.js'\nimport { useOperation } from '../../providers/Operation/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\n\nconst baseClass = 'save-draft'\n\nexport function SaveDraftButton(props: SaveDraftButtonClientProps) {\n const {\n config: {\n routes: { api },\n serverURL,\n },\n } = useConfig()\n\n const { id, collectionSlug, globalSlug, setUnpublishedVersionCount, uploadStatus } =\n useDocumentInfo()\n\n const modified = useFormModified()\n const { code: locale } = useLocale()\n const ref = useRef<HTMLButtonElement>(null)\n const editDepth = useEditDepth()\n const { t } = useTranslation()\n const { submit } = useForm()\n const operation = useOperation()\n\n const disabled = (operation === 'update' && !modified) || uploadStatus === 'uploading'\n\n const saveDraft = useCallback(async () => {\n if (disabled) {\n return\n }\n\n const search = `?locale=${locale}&depth=0&fallback-locale=null&draft=true`\n let action\n let method = 'POST'\n\n if (collectionSlug) {\n action = `${serverURL}${api}/${collectionSlug}${id ? `/${id}` : ''}${search}`\n if (id) {\n method = 'PATCH'\n }\n }\n\n if (globalSlug) {\n action = `${serverURL}${api}/globals/${globalSlug}${search}`\n }\n\n await submit({\n action,\n method,\n overrides: {\n _status: 'draft',\n },\n skipValidation: true,\n })\n\n setUnpublishedVersionCount((count) => count + 1)\n }, [\n submit,\n collectionSlug,\n globalSlug,\n serverURL,\n api,\n locale,\n id,\n disabled,\n setUnpublishedVersionCount,\n ])\n\n useHotkey({ cmdCtrlKey: true, editDepth, keyCodes: ['s'] }, (e) => {\n if (disabled) {\n // absorb the event\n }\n\n e.preventDefault()\n e.stopPropagation()\n if (ref?.current) {\n ref.current.click()\n }\n })\n\n return (\n <FormSubmit\n buttonId=\"action-save-draft\"\n buttonStyle=\"secondary\"\n className={baseClass}\n disabled={disabled}\n onClick={() => {\n return void saveDraft()\n }}\n ref={ref}\n size=\"medium\"\n type=\"button\"\n >\n {t('version:saveDraft')}\n </FormSubmit>\n )\n}\n"],"names":["React","useCallback","useRef","useForm","useFormModified","FormSubmit","useHotkey","useConfig","useDocumentInfo","useEditDepth","useLocale","useOperation","useTranslation","baseClass","SaveDraftButton","props","config","routes","api","serverURL","id","collectionSlug","globalSlug","setUnpublishedVersionCount","uploadStatus","modified","code","locale","ref","editDepth","t","submit","operation","disabled","saveDraft","search","action","method","overrides","_status","skipValidation","count","cmdCtrlKey","keyCodes","e","preventDefault","stopPropagation","current","click","buttonId","buttonStyle","className","onClick","size","type"],"mappings":"AAAA;;AAIA,OAAOA,SAASC,WAAW,EAAEC,MAAM,QAAQ,QAAO;AAElD,SAASC,OAAO,EAAEC,eAAe,QAAQ,8BAA6B;AACtE,SAASC,UAAU,QAAQ,8BAA6B;AACxD,SAASC,SAAS,QAAQ,2BAA0B;AACpD,SAASC,SAAS,QAAQ,kCAAiC;AAC3D,SAASC,eAAe,QAAQ,wCAAuC;AACvE,SAASC,YAAY,QAAQ,qCAAoC;AACjE,SAASC,SAAS,QAAQ,kCAAiC;AAC3D,SAASC,YAAY,QAAQ,qCAAoC;AACjE,SAASC,cAAc,QAAQ,uCAAsC;AAErE,MAAMC,YAAY;AAElB,OAAO,SAASC,gBAAgBC,KAAiC;IAC/D,MAAM,EACJC,QAAQ,EACNC,QAAQ,EAAEC,GAAG,EAAE,EACfC,SAAS,EACV,EACF,GAAGZ;IAEJ,MAAM,EAAEa,EAAE,EAAEC,cAAc,EAAEC,UAAU,EAAEC,0BAA0B,EAAEC,YAAY,EAAE,GAChFhB;IAEF,MAAMiB,WAAWrB;IACjB,MAAM,EAAEsB,MAAMC,MAAM,EAAE,GAAGjB;IACzB,MAAMkB,MAAM1B,OAA0B;IACtC,MAAM2B,YAAYpB;IAClB,MAAM,EAAEqB,CAAC,EAAE,GAAGlB;IACd,MAAM,EAAEmB,MAAM,EAAE,GAAG5B;IACnB,MAAM6B,YAAYrB;IAElB,MAAMsB,WAAW,AAACD,cAAc,YAAY,CAACP,YAAaD,iBAAiB;IAE3E,MAAMU,YAAYjC,YAAY;QAC5B,IAAIgC,UAAU;YACZ;QACF;QAEA,MAAME,SAAS,CAAC,QAAQ,EAAER,OAAO,wCAAwC,CAAC;QAC1E,IAAIS;QACJ,IAAIC,SAAS;QAEb,IAAIhB,gBAAgB;YAClBe,SAAS,GAAGjB,YAAYD,IAAI,CAAC,EAAEG,iBAAiBD,KAAK,CAAC,CAAC,EAAEA,IAAI,GAAG,KAAKe,QAAQ;YAC7E,IAAIf,IAAI;gBACNiB,SAAS;YACX;QACF;QAEA,IAAIf,YAAY;YACdc,SAAS,GAAGjB,YAAYD,IAAI,SAAS,EAAEI,aAAaa,QAAQ;QAC9D;QAEA,MAAMJ,OAAO;YACXK;YACAC;YACAC,WAAW;gBACTC,SAAS;YACX;YACAC,gBAAgB;QAClB;QAEAjB,2BAA2B,CAACkB,QAAUA,QAAQ;IAChD,GAAG;QACDV;QACAV;QACAC;QACAH;QACAD;QACAS;QACAP;QACAa;QACAV;KACD;IAEDjB,UAAU;QAAEoC,YAAY;QAAMb;QAAWc,UAAU;YAAC;SAAI;IAAC,GAAG,CAACC;QAC3D,IAAIX,UAAU,CAEd;QADE,mBAAmB;QAGrBW,EAAEC,cAAc;QAChBD,EAAEE,eAAe;QACjB,IAAIlB,KAAKmB,SAAS;YAChBnB,IAAImB,OAAO,CAACC,KAAK;QACnB;IACF;IAEA,qBACE,KAAC3C;QACC4C,UAAS;QACTC,aAAY;QACZC,WAAWtC;QACXoB,UAAUA;QACVmB,SAAS;YACP,OAAO,KAAKlB;QACd;QACAN,KAAKA;QACLyB,MAAK;QACLC,MAAK;kBAEJxB,EAAE;;AAGT"}
@@ -1,3 +1,21 @@
1
- export { };
1
+ export { }; /**
2
+ * This prop is deprecated and will be removed in the next major version.
3
+ *
4
+ * @deprecated
5
+ */ /**
6
+ * This prop is deprecated and will be removed in the next major version.
7
+ *
8
+ * Prefer passing in `searchString` instead.
9
+ *
10
+ * @deprecated
11
+ */ /**
12
+ * This prop is deprecated and will be removed in the next major version.
13
+ *
14
+ * @deprecated
15
+ */ /**
16
+ * This prop is deprecated and will be removed in the next major version.
17
+ *
18
+ * @deprecated
19
+ */
2
20
 
3
21
  //# sourceMappingURL=types.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/elements/SearchFilter/types.ts"],"sourcesContent":["import type { ParsedQs } from 'qs-esm'\n\nexport type SearchFilterProps = {\n /**\n * This prop is deprecated and will be removed in the next major version.\n *\n * @deprecated\n */\n fieldName?: string\n handleChange?: (search: string) => void\n /**\n * This prop is deprecated and will be removed in the next major version.\n *\n * Prefer passing in `searchString` instead.\n *\n * @deprecated\n */\n initialParams?: ParsedQs\n label: string\n searchQueryParam?: string\n /**\n * This prop is deprecated and will be removed in the next major version.\n *\n * @deprecated\n */\n setValue?: (arg: string) => void\n /**\n * This prop is deprecated and will be removed in the next major version.\n *\n * @deprecated\n */\n value?: string\n}\n"],"names":[],"mappings":"AAEA,WA8BC"}
1
+ {"version":3,"sources":["../../../src/elements/SearchFilter/types.ts"],"sourcesContent":["import type { ParsedQs } from 'qs-esm'\n\nexport type SearchFilterProps = {\n /**\n * This prop is deprecated and will be removed in the next major version.\n *\n * @deprecated\n */\n fieldName?: string\n handleChange?: (search: string) => void\n /**\n * This prop is deprecated and will be removed in the next major version.\n *\n * Prefer passing in `searchString` instead.\n *\n * @deprecated\n */\n initialParams?: ParsedQs\n label: string\n searchQueryParam?: string\n /**\n * This prop is deprecated and will be removed in the next major version.\n *\n * @deprecated\n */\n setValue?: (arg: string) => void\n /**\n * This prop is deprecated and will be removed in the next major version.\n *\n * @deprecated\n */\n value?: string\n}\n"],"names":[],"mappings":"AAEA,WA8BC,CA7BC;;;;GAIC,IAGD;;;;;;GAMC,IAID;;;;GAIC,IAED;;;;GAIC"}
@@ -92,8 +92,8 @@ export const Status = ()=>{
92
92
  } else {
93
93
  toast.error(t('error:unPublishingDocument'));
94
94
  }
95
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
96
- } catch (err) {
95
+ } // eslint-disable-next-line @typescript-eslint/no-unused-vars
96
+ catch (err) {
97
97
  toast.error(t('error:unPublishingDocument'));
98
98
  }
99
99
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/elements/Status/index.tsx"],"sourcesContent":["'use client'\nimport { useModal } from '@faceless-ui/modal'\nimport React, { useCallback } from 'react'\nimport { toast } from 'sonner'\n\nimport { useForm } from '../../forms/Form/context.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { useLocale } from '../../providers/Locale/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { requests } from '../../utilities/api.js'\nimport { Button } from '../Button/index.js'\nimport { ConfirmationModal } from '../ConfirmationModal/index.js'\nimport './index.scss'\n\nconst baseClass = 'status'\n\nexport const Status: React.FC = () => {\n const {\n id,\n collectionSlug,\n docPermissions,\n globalSlug,\n hasPublishedDoc,\n incrementVersionCount,\n isTrashed,\n setHasPublishedDoc,\n setMostRecentVersionIsAutosaved,\n setUnpublishedVersionCount,\n unpublishedVersionCount,\n } = useDocumentInfo()\n\n const { toggleModal } = useModal()\n\n const {\n config: {\n routes: { api },\n serverURL,\n },\n } = useConfig()\n\n const { reset: resetForm } = useForm()\n const { code: locale } = useLocale()\n const { i18n, t } = useTranslation()\n\n const unPublishModalSlug = `confirm-un-publish-${id}`\n const revertModalSlug = `confirm-revert-${id}`\n\n let statusToRender: 'changed' | 'draft' | 'published'\n\n if (unpublishedVersionCount > 0 && hasPublishedDoc) {\n statusToRender = 'changed'\n } else if (!hasPublishedDoc) {\n statusToRender = 'draft'\n } else if (hasPublishedDoc && unpublishedVersionCount <= 0) {\n statusToRender = 'published'\n }\n\n const displayStatusKey = isTrashed\n ? hasPublishedDoc\n ? 'previouslyPublished'\n : 'previouslyDraft'\n : statusToRender\n\n const performAction = useCallback(\n async (action: 'revert' | 'unpublish') => {\n let url\n let method\n let body\n\n if (action === 'unpublish') {\n body = {\n _status: 'draft',\n }\n }\n\n if (collectionSlug) {\n url = `${serverURL}${api}/${collectionSlug}/${id}?locale=${locale}&fallback-locale=null&depth=0`\n method = 'patch'\n }\n\n if (globalSlug) {\n url = `${serverURL}${api}/globals/${globalSlug}?locale=${locale}&fallback-locale=null&depth=0`\n method = 'post'\n }\n\n if (action === 'revert') {\n const publishedDoc = await requests\n .get(url, {\n headers: {\n 'Accept-Language': i18n.language,\n 'Content-Type': 'application/json',\n },\n })\n .then((res) => res.json())\n\n body = publishedDoc\n }\n\n const res = await requests[method](url, {\n body: JSON.stringify(body),\n headers: {\n 'Accept-Language': i18n.language,\n 'Content-Type': 'application/json',\n },\n })\n\n if (res.status === 200) {\n let data\n const json = await res.json()\n\n if (globalSlug) {\n data = json.result\n } else if (collectionSlug) {\n data = json.doc\n }\n\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n resetForm(data)\n toast.success(json.message)\n incrementVersionCount()\n setMostRecentVersionIsAutosaved(false)\n\n if (action === 'unpublish') {\n setHasPublishedDoc(false)\n } else if (action === 'revert') {\n setUnpublishedVersionCount(0)\n }\n } else {\n try {\n const json = await res.json()\n if (json.errors?.[0]?.message) {\n toast.error(json.errors[0].message)\n } else if (json.error) {\n toast.error(json.error)\n } else {\n toast.error(t('error:unPublishingDocument'))\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n } catch (err) {\n toast.error(t('error:unPublishingDocument'))\n }\n }\n },\n [\n api,\n collectionSlug,\n globalSlug,\n id,\n i18n.language,\n incrementVersionCount,\n locale,\n resetForm,\n serverURL,\n setUnpublishedVersionCount,\n setMostRecentVersionIsAutosaved,\n t,\n setHasPublishedDoc,\n ],\n )\n\n const canUpdate = docPermissions?.update\n\n if (statusToRender) {\n return (\n <div\n className={baseClass}\n title={`${t('version:status')}: ${t(`version:${displayStatusKey}`)}`}\n >\n <div className={`${baseClass}__value-wrap`}>\n <span className={`${baseClass}__label`}>{t('version:status')}:&nbsp;</span>\n <span className={`${baseClass}__value`}>{t(`version:${displayStatusKey}`)}</span>\n {!isTrashed && canUpdate && statusToRender === 'published' && (\n <React.Fragment>\n &nbsp;&mdash;&nbsp;\n <Button\n buttonStyle=\"none\"\n className={`${baseClass}__action`}\n id={`action-unpublish`}\n onClick={() => toggleModal(unPublishModalSlug)}\n >\n {t('version:unpublish')}\n </Button>\n <ConfirmationModal\n body={t('version:aboutToUnpublish')}\n confirmingLabel={t('version:unpublishing')}\n heading={t('version:confirmUnpublish')}\n modalSlug={unPublishModalSlug}\n onConfirm={() => performAction('unpublish')}\n />\n </React.Fragment>\n )}\n {!isTrashed &&\n canUpdate &&\n hasPublishedDoc &&\n statusToRender === 'changed' && (\n <React.Fragment>\n &nbsp;&mdash;&nbsp;\n <Button\n buttonStyle=\"none\"\n className={`${baseClass}__action`}\n id=\"action-revert-to-published\"\n onClick={() => toggleModal(revertModalSlug)}\n >\n {t('version:revertToPublished')}\n </Button>\n <ConfirmationModal\n body={t('version:aboutToRevertToPublished')}\n confirmingLabel={t('version:reverting')}\n heading={t('version:confirmRevertToSaved')}\n modalSlug={revertModalSlug}\n onConfirm={() => performAction('revert')}\n />\n </React.Fragment>\n )}\n </div>\n </div>\n )\n }\n\n return null\n}\n"],"names":["useModal","React","useCallback","toast","useForm","useConfig","useDocumentInfo","useLocale","useTranslation","requests","Button","ConfirmationModal","baseClass","Status","id","collectionSlug","docPermissions","globalSlug","hasPublishedDoc","incrementVersionCount","isTrashed","setHasPublishedDoc","setMostRecentVersionIsAutosaved","setUnpublishedVersionCount","unpublishedVersionCount","toggleModal","config","routes","api","serverURL","reset","resetForm","code","locale","i18n","t","unPublishModalSlug","revertModalSlug","statusToRender","displayStatusKey","performAction","action","url","method","body","_status","publishedDoc","get","headers","language","then","res","json","JSON","stringify","status","data","result","doc","success","message","errors","error","err","canUpdate","update","div","className","title","span","Fragment","buttonStyle","onClick","confirmingLabel","heading","modalSlug","onConfirm"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/elements/Status/index.tsx"],"sourcesContent":["'use client'\nimport { useModal } from '@faceless-ui/modal'\nimport React, { useCallback } from 'react'\nimport { toast } from 'sonner'\n\nimport { useForm } from '../../forms/Form/context.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { useLocale } from '../../providers/Locale/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { requests } from '../../utilities/api.js'\nimport { Button } from '../Button/index.js'\nimport { ConfirmationModal } from '../ConfirmationModal/index.js'\nimport './index.scss'\n\nconst baseClass = 'status'\n\nexport const Status: React.FC = () => {\n const {\n id,\n collectionSlug,\n docPermissions,\n globalSlug,\n hasPublishedDoc,\n incrementVersionCount,\n isTrashed,\n setHasPublishedDoc,\n setMostRecentVersionIsAutosaved,\n setUnpublishedVersionCount,\n unpublishedVersionCount,\n } = useDocumentInfo()\n\n const { toggleModal } = useModal()\n\n const {\n config: {\n routes: { api },\n serverURL,\n },\n } = useConfig()\n\n const { reset: resetForm } = useForm()\n const { code: locale } = useLocale()\n const { i18n, t } = useTranslation()\n\n const unPublishModalSlug = `confirm-un-publish-${id}`\n const revertModalSlug = `confirm-revert-${id}`\n\n let statusToRender: 'changed' | 'draft' | 'published'\n\n if (unpublishedVersionCount > 0 && hasPublishedDoc) {\n statusToRender = 'changed'\n } else if (!hasPublishedDoc) {\n statusToRender = 'draft'\n } else if (hasPublishedDoc && unpublishedVersionCount <= 0) {\n statusToRender = 'published'\n }\n\n const displayStatusKey = isTrashed\n ? hasPublishedDoc\n ? 'previouslyPublished'\n : 'previouslyDraft'\n : statusToRender\n\n const performAction = useCallback(\n async (action: 'revert' | 'unpublish') => {\n let url\n let method\n let body\n\n if (action === 'unpublish') {\n body = {\n _status: 'draft',\n }\n }\n\n if (collectionSlug) {\n url = `${serverURL}${api}/${collectionSlug}/${id}?locale=${locale}&fallback-locale=null&depth=0`\n method = 'patch'\n }\n\n if (globalSlug) {\n url = `${serverURL}${api}/globals/${globalSlug}?locale=${locale}&fallback-locale=null&depth=0`\n method = 'post'\n }\n\n if (action === 'revert') {\n const publishedDoc = await requests\n .get(url, {\n headers: {\n 'Accept-Language': i18n.language,\n 'Content-Type': 'application/json',\n },\n })\n .then((res) => res.json())\n\n body = publishedDoc\n }\n\n const res = await requests[method](url, {\n body: JSON.stringify(body),\n headers: {\n 'Accept-Language': i18n.language,\n 'Content-Type': 'application/json',\n },\n })\n\n if (res.status === 200) {\n let data\n const json = await res.json()\n\n if (globalSlug) {\n data = json.result\n } else if (collectionSlug) {\n data = json.doc\n }\n\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n resetForm(data)\n toast.success(json.message)\n incrementVersionCount()\n setMostRecentVersionIsAutosaved(false)\n\n if (action === 'unpublish') {\n setHasPublishedDoc(false)\n } else if (action === 'revert') {\n setUnpublishedVersionCount(0)\n }\n } else {\n try {\n const json = await res.json()\n if (json.errors?.[0]?.message) {\n toast.error(json.errors[0].message)\n } else if (json.error) {\n toast.error(json.error)\n } else {\n toast.error(t('error:unPublishingDocument'))\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n } catch (err) {\n toast.error(t('error:unPublishingDocument'))\n }\n }\n },\n [\n api,\n collectionSlug,\n globalSlug,\n id,\n i18n.language,\n incrementVersionCount,\n locale,\n resetForm,\n serverURL,\n setUnpublishedVersionCount,\n setMostRecentVersionIsAutosaved,\n t,\n setHasPublishedDoc,\n ],\n )\n\n const canUpdate = docPermissions?.update\n\n if (statusToRender) {\n return (\n <div\n className={baseClass}\n title={`${t('version:status')}: ${t(`version:${displayStatusKey}`)}`}\n >\n <div className={`${baseClass}__value-wrap`}>\n <span className={`${baseClass}__label`}>{t('version:status')}:&nbsp;</span>\n <span className={`${baseClass}__value`}>{t(`version:${displayStatusKey}`)}</span>\n {!isTrashed && canUpdate && statusToRender === 'published' && (\n <React.Fragment>\n &nbsp;&mdash;&nbsp;\n <Button\n buttonStyle=\"none\"\n className={`${baseClass}__action`}\n id={`action-unpublish`}\n onClick={() => toggleModal(unPublishModalSlug)}\n >\n {t('version:unpublish')}\n </Button>\n <ConfirmationModal\n body={t('version:aboutToUnpublish')}\n confirmingLabel={t('version:unpublishing')}\n heading={t('version:confirmUnpublish')}\n modalSlug={unPublishModalSlug}\n onConfirm={() => performAction('unpublish')}\n />\n </React.Fragment>\n )}\n {!isTrashed &&\n canUpdate &&\n hasPublishedDoc &&\n statusToRender === 'changed' && (\n <React.Fragment>\n &nbsp;&mdash;&nbsp;\n <Button\n buttonStyle=\"none\"\n className={`${baseClass}__action`}\n id=\"action-revert-to-published\"\n onClick={() => toggleModal(revertModalSlug)}\n >\n {t('version:revertToPublished')}\n </Button>\n <ConfirmationModal\n body={t('version:aboutToRevertToPublished')}\n confirmingLabel={t('version:reverting')}\n heading={t('version:confirmRevertToSaved')}\n modalSlug={revertModalSlug}\n onConfirm={() => performAction('revert')}\n />\n </React.Fragment>\n )}\n </div>\n </div>\n )\n }\n\n return null\n}\n"],"names":["useModal","React","useCallback","toast","useForm","useConfig","useDocumentInfo","useLocale","useTranslation","requests","Button","ConfirmationModal","baseClass","Status","id","collectionSlug","docPermissions","globalSlug","hasPublishedDoc","incrementVersionCount","isTrashed","setHasPublishedDoc","setMostRecentVersionIsAutosaved","setUnpublishedVersionCount","unpublishedVersionCount","toggleModal","config","routes","api","serverURL","reset","resetForm","code","locale","i18n","t","unPublishModalSlug","revertModalSlug","statusToRender","displayStatusKey","performAction","action","url","method","body","_status","publishedDoc","get","headers","language","then","res","json","JSON","stringify","status","data","result","doc","success","message","errors","error","err","canUpdate","update","div","className","title","span","Fragment","buttonStyle","onClick","confirmingLabel","heading","modalSlug","onConfirm"],"mappings":"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"}
@@ -11,7 +11,11 @@ import { StepNavProvider, useStepNav } from './context.js';
11
11
  import './index.scss';
12
12
  export { SetStepNav } from './SetStepNav.js';
13
13
  const baseClass = 'step-nav';
14
- const StepNav = ({ className, CustomIcon })=>{
14
+ const StepNav = /**
15
+ * @deprecated
16
+ * This prop is deprecated and will be removed in the next major version.
17
+ * Components now import their own `Link` directly from `next/link`.
18
+ */ ({ className, CustomIcon })=>{
15
19
  const { i18n } = useTranslation();
16
20
  const { stepNav } = useStepNav();
17
21
  const { config: { routes: { admin } } } = useConfig();
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/elements/StepNav/index.tsx"],"sourcesContent":["'use client'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport React, { Fragment } from 'react'\n\nimport type { StepNavItem } from './types.js'\n\nimport { PayloadIcon } from '../../graphics/Icon/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { Link } from '../Link/index.js'\nimport { RenderCustomComponent } from '../RenderCustomComponent/index.js'\nimport { StepNavProvider, useStepNav } from './context.js'\nimport './index.scss'\n\nexport { SetStepNav } from './SetStepNav.js'\n\nconst baseClass = 'step-nav'\n\nconst StepNav: React.FC<{\n readonly className?: string\n readonly CustomIcon?: React.ReactNode\n /**\n * @deprecated\n * This prop is deprecated and will be removed in the next major version.\n * Components now import their own `Link` directly from `next/link`.\n */\n readonly Link?: React.ComponentType\n}> = ({ className, CustomIcon }) => {\n const { i18n } = useTranslation()\n\n const { stepNav } = useStepNav()\n\n const {\n config: {\n routes: { admin },\n },\n } = useConfig()\n\n const { t } = useTranslation()\n\n return (\n <Fragment>\n {stepNav.length > 0 ? (\n <nav className={[baseClass, className].filter(Boolean).join(' ')}>\n <Link className={`${baseClass}__home`} href={admin} prefetch={false} tabIndex={0}>\n <span title={t('general:dashboard')}>\n <RenderCustomComponent CustomComponent={CustomIcon} Fallback={<PayloadIcon />} />\n </span>\n </Link>\n <span>/</span>\n {stepNav.map((item, i) => {\n const StepLabel = getTranslation(item.label, i18n)\n const isLast = stepNav.length === i + 1\n\n const Step = isLast ? (\n <span className={`${baseClass}__last`} key={i}>\n {StepLabel}\n </span>\n ) : (\n <Fragment key={i}>\n {item.url ? (\n <Link href={item.url} prefetch={false}>\n <span key={i}>{StepLabel}</span>\n </Link>\n ) : (\n <span key={i}>{StepLabel}</span>\n )}\n <span>/</span>\n </Fragment>\n )\n\n return Step\n })}\n </nav>\n ) : (\n <div className={[baseClass, className].filter(Boolean).join(' ')}>\n <div className={`${baseClass}__home`}>\n <span title={t('general:dashboard')}>\n <RenderCustomComponent CustomComponent={CustomIcon} Fallback={<PayloadIcon />} />\n </span>\n </div>\n </div>\n )}\n </Fragment>\n )\n}\n\nexport { StepNav, StepNavItem, StepNavProvider, useStepNav }\n"],"names":["getTranslation","React","Fragment","PayloadIcon","useConfig","useTranslation","Link","RenderCustomComponent","StepNavProvider","useStepNav","SetStepNav","baseClass","StepNav","className","CustomIcon","i18n","stepNav","config","routes","admin","t","length","nav","filter","Boolean","join","href","prefetch","tabIndex","span","title","CustomComponent","Fallback","map","item","i","StepLabel","label","isLast","Step","url","div"],"mappings":"AAAA;;AAEA,SAASA,cAAc,QAAQ,2BAA0B;AACzD,OAAOC,SAASC,QAAQ,QAAQ,QAAO;AAIvC,SAASC,WAAW,QAAQ,+BAA8B;AAC1D,SAASC,SAAS,QAAQ,kCAAiC;AAC3D,SAASC,cAAc,QAAQ,uCAAsC;AACrE,SAASC,IAAI,QAAQ,mBAAkB;AACvC,SAASC,qBAAqB,QAAQ,oCAAmC;AACzE,SAASC,eAAe,EAAEC,UAAU,QAAQ,eAAc;AAC1D,OAAO,eAAc;AAErB,SAASC,UAAU,QAAQ,kBAAiB;AAE5C,MAAMC,YAAY;AAElB,MAAMC,UASD,CAAC,EAAEC,SAAS,EAAEC,UAAU,EAAE;IAC7B,MAAM,EAAEC,IAAI,EAAE,GAAGV;IAEjB,MAAM,EAAEW,OAAO,EAAE,GAAGP;IAEpB,MAAM,EACJQ,QAAQ,EACNC,QAAQ,EAAEC,KAAK,EAAE,EAClB,EACF,GAAGf;IAEJ,MAAM,EAAEgB,CAAC,EAAE,GAAGf;IAEd,qBACE,KAACH;kBACEc,QAAQK,MAAM,GAAG,kBAChB,MAACC;YAAIT,WAAW;gBAACF;gBAAWE;aAAU,CAACU,MAAM,CAACC,SAASC,IAAI,CAAC;;8BAC1D,KAACnB;oBAAKO,WAAW,GAAGF,UAAU,MAAM,CAAC;oBAAEe,MAAMP;oBAAOQ,UAAU;oBAAOC,UAAU;8BAC7E,cAAA,KAACC;wBAAKC,OAAOV,EAAE;kCACb,cAAA,KAACb;4BAAsBwB,iBAAiBjB;4BAAYkB,wBAAU,KAAC7B;;;;8BAGnE,KAAC0B;8BAAK;;gBACLb,QAAQiB,GAAG,CAAC,CAACC,MAAMC;oBAClB,MAAMC,YAAYpC,eAAekC,KAAKG,KAAK,EAAEtB;oBAC7C,MAAMuB,SAAStB,QAAQK,MAAM,KAAKc,IAAI;oBAEtC,MAAMI,OAAOD,uBACX,KAACT;wBAAKhB,WAAW,GAAGF,UAAU,MAAM,CAAC;kCAClCyB;uBADyCD,mBAI5C,MAACjC;;4BACEgC,KAAKM,GAAG,iBACP,KAAClC;gCAAKoB,MAAMQ,KAAKM,GAAG;gCAAEb,UAAU;0CAC9B,cAAA,KAACE;8CAAcO;mCAAJD;+CAGb,KAACN;0CAAcO;+BAAJD;0CAEb,KAACN;0CAAK;;;uBAROM;oBAYjB,OAAOI;gBACT;;2BAGF,KAACE;YAAI5B,WAAW;gBAACF;gBAAWE;aAAU,CAACU,MAAM,CAACC,SAASC,IAAI,CAAC;sBAC1D,cAAA,KAACgB;gBAAI5B,WAAW,GAAGF,UAAU,MAAM,CAAC;0BAClC,cAAA,KAACkB;oBAAKC,OAAOV,EAAE;8BACb,cAAA,KAACb;wBAAsBwB,iBAAiBjB;wBAAYkB,wBAAU,KAAC7B;;;;;;AAO7E;AAEA,SAASS,OAAO,EAAeJ,eAAe,EAAEC,UAAU,GAAE"}
1
+ {"version":3,"sources":["../../../src/elements/StepNav/index.tsx"],"sourcesContent":["'use client'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport React, { Fragment } from 'react'\n\nimport type { StepNavItem } from './types.js'\n\nimport { PayloadIcon } from '../../graphics/Icon/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { Link } from '../Link/index.js'\nimport { RenderCustomComponent } from '../RenderCustomComponent/index.js'\nimport { StepNavProvider, useStepNav } from './context.js'\nimport './index.scss'\n\nexport { SetStepNav } from './SetStepNav.js'\n\nconst baseClass = 'step-nav'\n\nconst StepNav: React.FC<{\n readonly className?: string\n readonly CustomIcon?: React.ReactNode\n /**\n * @deprecated\n * This prop is deprecated and will be removed in the next major version.\n * Components now import their own `Link` directly from `next/link`.\n */\n readonly Link?: React.ComponentType\n}> = ({ className, CustomIcon }) => {\n const { i18n } = useTranslation()\n\n const { stepNav } = useStepNav()\n\n const {\n config: {\n routes: { admin },\n },\n } = useConfig()\n\n const { t } = useTranslation()\n\n return (\n <Fragment>\n {stepNav.length > 0 ? (\n <nav className={[baseClass, className].filter(Boolean).join(' ')}>\n <Link className={`${baseClass}__home`} href={admin} prefetch={false} tabIndex={0}>\n <span title={t('general:dashboard')}>\n <RenderCustomComponent CustomComponent={CustomIcon} Fallback={<PayloadIcon />} />\n </span>\n </Link>\n <span>/</span>\n {stepNav.map((item, i) => {\n const StepLabel = getTranslation(item.label, i18n)\n const isLast = stepNav.length === i + 1\n\n const Step = isLast ? (\n <span className={`${baseClass}__last`} key={i}>\n {StepLabel}\n </span>\n ) : (\n <Fragment key={i}>\n {item.url ? (\n <Link href={item.url} prefetch={false}>\n <span key={i}>{StepLabel}</span>\n </Link>\n ) : (\n <span key={i}>{StepLabel}</span>\n )}\n <span>/</span>\n </Fragment>\n )\n\n return Step\n })}\n </nav>\n ) : (\n <div className={[baseClass, className].filter(Boolean).join(' ')}>\n <div className={`${baseClass}__home`}>\n <span title={t('general:dashboard')}>\n <RenderCustomComponent CustomComponent={CustomIcon} Fallback={<PayloadIcon />} />\n </span>\n </div>\n </div>\n )}\n </Fragment>\n )\n}\n\nexport { StepNav, StepNavItem, StepNavProvider, useStepNav }\n"],"names":["getTranslation","React","Fragment","PayloadIcon","useConfig","useTranslation","Link","RenderCustomComponent","StepNavProvider","useStepNav","SetStepNav","baseClass","StepNav","className","CustomIcon","i18n","stepNav","config","routes","admin","t","length","nav","filter","Boolean","join","href","prefetch","tabIndex","span","title","CustomComponent","Fallback","map","item","i","StepLabel","label","isLast","Step","url","div"],"mappings":"AAAA;;AAEA,SAASA,cAAc,QAAQ,2BAA0B;AACzD,OAAOC,SAASC,QAAQ,QAAQ,QAAO;AAIvC,SAASC,WAAW,QAAQ,+BAA8B;AAC1D,SAASC,SAAS,QAAQ,kCAAiC;AAC3D,SAASC,cAAc,QAAQ,uCAAsC;AACrE,SAASC,IAAI,QAAQ,mBAAkB;AACvC,SAASC,qBAAqB,QAAQ,oCAAmC;AACzE,SAASC,eAAe,EAAEC,UAAU,QAAQ,eAAc;AAC1D,OAAO,eAAc;AAErB,SAASC,UAAU,QAAQ,kBAAiB;AAE5C,MAAMC,YAAY;AAElB,MAAMC,UAGJ;;;;GAIC,GAEE,CAAC,EAAEC,SAAS,EAAEC,UAAU,EAAE;IAC7B,MAAM,EAAEC,IAAI,EAAE,GAAGV;IAEjB,MAAM,EAAEW,OAAO,EAAE,GAAGP;IAEpB,MAAM,EACJQ,QAAQ,EACNC,QAAQ,EAAEC,KAAK,EAAE,EAClB,EACF,GAAGf;IAEJ,MAAM,EAAEgB,CAAC,EAAE,GAAGf;IAEd,qBACE,KAACH;kBACEc,QAAQK,MAAM,GAAG,kBAChB,MAACC;YAAIT,WAAW;gBAACF;gBAAWE;aAAU,CAACU,MAAM,CAACC,SAASC,IAAI,CAAC;;8BAC1D,KAACnB;oBAAKO,WAAW,GAAGF,UAAU,MAAM,CAAC;oBAAEe,MAAMP;oBAAOQ,UAAU;oBAAOC,UAAU;8BAC7E,cAAA,KAACC;wBAAKC,OAAOV,EAAE;kCACb,cAAA,KAACb;4BAAsBwB,iBAAiBjB;4BAAYkB,wBAAU,KAAC7B;;;;8BAGnE,KAAC0B;8BAAK;;gBACLb,QAAQiB,GAAG,CAAC,CAACC,MAAMC;oBAClB,MAAMC,YAAYpC,eAAekC,KAAKG,KAAK,EAAEtB;oBAC7C,MAAMuB,SAAStB,QAAQK,MAAM,KAAKc,IAAI;oBAEtC,MAAMI,OAAOD,uBACX,KAACT;wBAAKhB,WAAW,GAAGF,UAAU,MAAM,CAAC;kCAClCyB;uBADyCD,mBAI5C,MAACjC;;4BACEgC,KAAKM,GAAG,iBACP,KAAClC;gCAAKoB,MAAMQ,KAAKM,GAAG;gCAAEb,UAAU;0CAC9B,cAAA,KAACE;8CAAcO;mCAAJD;+CAGb,KAACN;0CAAcO;+BAAJD;0CAEb,KAACN;0CAAK;;;uBAROM;oBAYjB,OAAOI;gBACT;;2BAGF,KAACE;YAAI5B,WAAW;gBAACF;gBAAWE;aAAU,CAACU,MAAM,CAACC,SAASC,IAAI,CAAC;sBAC1D,cAAA,KAACgB;gBAAI5B,WAAW,GAAGF,UAAU,MAAM,CAAC;0BAClC,cAAA,KAACkB;oBAAKC,OAAOV,EAAE;8BACb,cAAA,KAACb;wBAAsBwB,iBAAiBjB;wBAAYkB,wBAAU,KAAC7B;;;;;;AAO7E;AAEA,SAASS,OAAO,EAAeJ,eAAe,EAAEC,UAAU,GAAE"}
@@ -12,13 +12,13 @@ export const SelectCell = ({ cellData, field: { options } })=>{
12
12
  }).join(', ');
13
13
  let content = '';
14
14
  if (optionsAreObjects(options)) {
15
- content = Array.isArray(cellData) ? findLabel(cellData) // hasMany
16
- : findLabel([
15
+ content = Array.isArray(cellData) ? findLabel(cellData) : // hasMany
16
+ findLabel([
17
17
  cellData
18
18
  ]);
19
19
  } else {
20
- content = Array.isArray(cellData) ? cellData.join(', ') // hasMany
21
- : cellData;
20
+ content = Array.isArray(cellData) ? cellData.join(', ') : // hasMany
21
+ cellData;
22
22
  }
23
23
  return /*#__PURE__*/ _jsx("span", {
24
24
  children: content
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../src/elements/Table/DefaultCell/fields/Select/index.tsx"],"sourcesContent":["'use client'\nimport type { DefaultCellComponentProps, OptionObject, SelectFieldClient } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport { optionsAreObjects } from 'payload/shared'\nimport React from 'react'\n\nimport { useTranslation } from '../../../../../providers/Translation/index.js'\n\nexport interface SelectCellProps extends DefaultCellComponentProps<SelectFieldClient> {}\n\nexport const SelectCell: React.FC<SelectCellProps> = ({ cellData, field: { options } }) => {\n const { i18n } = useTranslation()\n\n const findLabel = (items: string[]) =>\n items\n .map((i) => {\n const found = (options as OptionObject[]).filter((f: OptionObject) => f.value === i)?.[0]\n ?.label\n return getTranslation(found, i18n)\n })\n .join(', ')\n\n let content = ''\n if (optionsAreObjects(options)) {\n content = Array.isArray(cellData)\n ? findLabel(cellData) // hasMany\n : findLabel([cellData])\n } else {\n content = Array.isArray(cellData)\n ? cellData.join(', ') // hasMany\n : cellData\n }\n\n return <span>{content}</span>\n}\n"],"names":["getTranslation","optionsAreObjects","React","useTranslation","SelectCell","cellData","field","options","i18n","findLabel","items","map","i","found","filter","f","value","label","join","content","Array","isArray","span"],"mappings":"AAAA;;AAGA,SAASA,cAAc,QAAQ,2BAA0B;AACzD,SAASC,iBAAiB,QAAQ,iBAAgB;AAClD,OAAOC,WAAW,QAAO;AAEzB,SAASC,cAAc,QAAQ,gDAA+C;AAI9E,OAAO,MAAMC,aAAwC,CAAC,EAAEC,QAAQ,EAAEC,OAAO,EAAEC,OAAO,EAAE,EAAE;IACpF,MAAM,EAAEC,IAAI,EAAE,GAAGL;IAEjB,MAAMM,YAAY,CAACC,QACjBA,MACGC,GAAG,CAAC,CAACC;YACJ,MAAMC,QAAQ,AAACN,QAA2BO,MAAM,CAAC,CAACC,IAAoBA,EAAEC,KAAK,KAAKJ,IAAI,CAAC,EAAE,EACrFK;YACJ,OAAOjB,eAAea,OAAOL;QAC/B,GACCU,IAAI,CAAC;IAEV,IAAIC,UAAU;IACd,IAAIlB,kBAAkBM,UAAU;QAC9BY,UAAUC,MAAMC,OAAO,CAAChB,YACpBI,UAAUJ,UAAU,UAAU;WAC9BI,UAAU;YAACJ;SAAS;IAC1B,OAAO;QACLc,UAAUC,MAAMC,OAAO,CAAChB,YACpBA,SAASa,IAAI,CAAC,MAAM,UAAU;WAC9Bb;IACN;IAEA,qBAAO,KAACiB;kBAAMH;;AAChB,EAAC"}
1
+ {"version":3,"sources":["../../../../../../src/elements/Table/DefaultCell/fields/Select/index.tsx"],"sourcesContent":["'use client'\nimport type { DefaultCellComponentProps, OptionObject, SelectFieldClient } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport { optionsAreObjects } from 'payload/shared'\nimport React from 'react'\n\nimport { useTranslation } from '../../../../../providers/Translation/index.js'\n\nexport interface SelectCellProps extends DefaultCellComponentProps<SelectFieldClient> {}\n\nexport const SelectCell: React.FC<SelectCellProps> = ({ cellData, field: { options } }) => {\n const { i18n } = useTranslation()\n\n const findLabel = (items: string[]) =>\n items\n .map((i) => {\n const found = (options as OptionObject[]).filter((f: OptionObject) => f.value === i)?.[0]\n ?.label\n return getTranslation(found, i18n)\n })\n .join(', ')\n\n let content = ''\n if (optionsAreObjects(options)) {\n content = Array.isArray(cellData)\n ? findLabel(cellData) // hasMany\n : findLabel([cellData])\n } else {\n content = Array.isArray(cellData)\n ? cellData.join(', ') // hasMany\n : cellData\n }\n\n return <span>{content}</span>\n}\n"],"names":["getTranslation","optionsAreObjects","React","useTranslation","SelectCell","cellData","field","options","i18n","findLabel","items","map","i","found","filter","f","value","label","join","content","Array","isArray","span"],"mappings":"AAAA;;AAGA,SAASA,cAAc,QAAQ,2BAA0B;AACzD,SAASC,iBAAiB,QAAQ,iBAAgB;AAClD,OAAOC,WAAW,QAAO;AAEzB,SAASC,cAAc,QAAQ,gDAA+C;AAI9E,OAAO,MAAMC,aAAwC,CAAC,EAAEC,QAAQ,EAAEC,OAAO,EAAEC,OAAO,EAAE,EAAE;IACpF,MAAM,EAAEC,IAAI,EAAE,GAAGL;IAEjB,MAAMM,YAAY,CAACC,QACjBA,MACGC,GAAG,CAAC,CAACC;YACJ,MAAMC,QAAQ,AAACN,QAA2BO,MAAM,CAAC,CAACC,IAAoBA,EAAEC,KAAK,KAAKJ,IAAI,CAAC,EAAE,EACrFK;YACJ,OAAOjB,eAAea,OAAOL;QAC/B,GACCU,IAAI,CAAC;IAEV,IAAIC,UAAU;IACd,IAAIlB,kBAAkBM,UAAU;QAC9BY,UAAUC,MAAMC,OAAO,CAAChB,YACpBI,UAAUJ,YAAU,UAAU;QAC9BI,UAAU;YAACJ;SAAS;IAC1B,OAAO;QACLc,UAAUC,MAAMC,OAAO,CAAChB,YACpBA,SAASa,IAAI,CAAC,QAAM,UAAU;QAC9Bb;IACN;IAEA,qBAAO,KAACiB;kBAAMH;;AAChB,EAAC"}
@@ -2,7 +2,8 @@
2
2
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
3
  import { getTranslation } from '@payloadcms/translations';
4
4
  import { fieldAffectsData, fieldIsID } from 'payload/shared';
5
- import React from 'react'; // TODO: abstract this out to support all routers
5
+ import React from 'react';
6
+ // TODO: abstract this out to support all routers
6
7
  import { useConfig } from '../../../providers/Config/index.js';
7
8
  import { useTranslation } from '../../../providers/Translation/index.js';
8
9
  import { formatAdminURL } from '../../../utilities/formatAdminURL.js';
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/elements/Table/DefaultCell/index.tsx"],"sourcesContent":["'use client'\nimport type { DefaultCellComponentProps, UploadFieldClient } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport { fieldAffectsData, fieldIsID } from 'payload/shared'\nimport React from 'react' // TODO: abstract this out to support all routers\n\nimport { useConfig } from '../../../providers/Config/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport { formatAdminURL } from '../../../utilities/formatAdminURL.js'\nimport { getDisplayedFieldValue } from '../../../utilities/getDisplayedFieldValue.js'\nimport { isValidReactElement } from '../../../utilities/isValidReactElement.js'\nimport { Link } from '../../Link/index.js'\nimport { CodeCell } from './fields/Code/index.js'\nimport { cellComponents } from './fields/index.js'\n\nexport const DefaultCell: React.FC<DefaultCellComponentProps> = (props) => {\n const {\n cellData,\n className: classNameFromProps,\n collectionSlug,\n field,\n field: { admin },\n link,\n linkURL,\n onClick: onClickFromProps,\n rowData,\n viewType,\n } = props\n\n const { i18n } = useTranslation()\n\n const {\n config: {\n routes: { admin: adminRoute },\n },\n getEntityConfig,\n } = useConfig()\n\n const collectionConfig = getEntityConfig({ collectionSlug })\n\n const classNameFromConfigContext = admin && 'className' in admin ? admin.className : undefined\n\n const className =\n classNameFromProps ||\n (field.admin && 'className' in field.admin ? field.admin.className : null) ||\n classNameFromConfigContext\n\n const onClick = onClickFromProps\n\n let WrapElement: React.ComponentType<any> | string = 'span'\n\n const wrapElementProps: {\n className?: string\n href?: string\n onClick?: () => void\n prefetch?: false\n type?: 'button'\n } = {\n className,\n }\n\n if (link) {\n wrapElementProps.prefetch = false\n WrapElement = Link\n\n // Use custom linkURL if provided, otherwise use default URL generation\n if (linkURL) {\n wrapElementProps.href = linkURL\n } else {\n wrapElementProps.href = collectionConfig?.slug\n ? formatAdminURL({\n adminRoute,\n path: `/collections/${collectionConfig?.slug}${viewType === 'trash' ? '/trash' : ''}/${encodeURIComponent(rowData.id)}`,\n })\n : ''\n }\n }\n\n if (typeof onClick === 'function') {\n WrapElement = 'button'\n wrapElementProps.type = 'button'\n wrapElementProps.onClick = () => {\n onClick({\n cellData,\n collectionSlug: collectionConfig?.slug,\n rowData,\n })\n }\n }\n\n if (fieldIsID(field)) {\n return (\n <WrapElement {...wrapElementProps}>\n <CodeCell\n cellData={`ID: ${cellData}`}\n collectionConfig={collectionConfig}\n collectionSlug={collectionSlug}\n field={{\n ...field,\n type: 'code',\n }}\n nowrap\n rowData={rowData}\n />\n </WrapElement>\n )\n }\n\n const displayedValue = getDisplayedFieldValue(cellData, field, i18n)\n\n const DefaultCellComponent: React.FC<DefaultCellComponentProps> =\n typeof cellData !== 'undefined' && cellComponents[field.type]\n\n let CellComponent: React.ReactNode = null\n\n // Handle JSX labels before using DefaultCellComponent\n if (isValidReactElement(displayedValue)) {\n CellComponent = displayedValue\n } else if (DefaultCellComponent) {\n CellComponent = <DefaultCellComponent cellData={cellData} rowData={rowData} {...props} />\n } else if (!DefaultCellComponent) {\n // DefaultCellComponent does not exist for certain field types like `text`\n if (\n collectionConfig?.upload &&\n fieldAffectsData(field) &&\n field.name === 'filename' &&\n field.type === 'text'\n ) {\n const FileCellComponent = cellComponents.File\n\n CellComponent = (\n <FileCellComponent\n cellData={cellData}\n rowData={rowData}\n {...(props as DefaultCellComponentProps<UploadFieldClient>)}\n collectionConfig={collectionConfig}\n field={field}\n />\n )\n } else {\n return (\n <WrapElement {...wrapElementProps}>\n {(displayedValue === '' ||\n typeof displayedValue === 'undefined' ||\n displayedValue === null) &&\n i18n.t('general:noLabel', {\n label: getTranslation(('label' in field ? field.label : null) || 'data', i18n),\n })}\n {typeof displayedValue === 'string' && displayedValue}\n {typeof displayedValue === 'number' && displayedValue}\n {typeof displayedValue === 'object' &&\n displayedValue !== null &&\n JSON.stringify(displayedValue)}\n </WrapElement>\n )\n }\n }\n\n if ((field.type === 'select' || field.type === 'radio') && field.options.length && cellData) {\n const classes = Array.isArray(cellData)\n ? cellData.map((value) => `selected--${value}`).join(' ')\n : `selected--${cellData}`\n\n const className = [wrapElementProps.className, classes].filter(Boolean).join(' ')\n\n return (\n <WrapElement {...wrapElementProps} className={className}>\n {CellComponent}\n </WrapElement>\n )\n }\n\n return <WrapElement {...wrapElementProps}>{CellComponent}</WrapElement>\n}\n"],"names":["getTranslation","fieldAffectsData","fieldIsID","React","useConfig","useTranslation","formatAdminURL","getDisplayedFieldValue","isValidReactElement","Link","CodeCell","cellComponents","DefaultCell","props","cellData","className","classNameFromProps","collectionSlug","field","admin","link","linkURL","onClick","onClickFromProps","rowData","viewType","i18n","config","routes","adminRoute","getEntityConfig","collectionConfig","classNameFromConfigContext","undefined","WrapElement","wrapElementProps","prefetch","href","slug","path","encodeURIComponent","id","type","nowrap","displayedValue","DefaultCellComponent","CellComponent","upload","name","FileCellComponent","File","t","label","JSON","stringify","options","length","classes","Array","isArray","map","value","join","filter","Boolean"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../src/elements/Table/DefaultCell/index.tsx"],"sourcesContent":["'use client'\nimport type { DefaultCellComponentProps, UploadFieldClient } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport { fieldAffectsData, fieldIsID } from 'payload/shared'\nimport React from 'react' // TODO: abstract this out to support all routers\n\nimport { useConfig } from '../../../providers/Config/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport { formatAdminURL } from '../../../utilities/formatAdminURL.js'\nimport { getDisplayedFieldValue } from '../../../utilities/getDisplayedFieldValue.js'\nimport { isValidReactElement } from '../../../utilities/isValidReactElement.js'\nimport { Link } from '../../Link/index.js'\nimport { CodeCell } from './fields/Code/index.js'\nimport { cellComponents } from './fields/index.js'\n\nexport const DefaultCell: React.FC<DefaultCellComponentProps> = (props) => {\n const {\n cellData,\n className: classNameFromProps,\n collectionSlug,\n field,\n field: { admin },\n link,\n linkURL,\n onClick: onClickFromProps,\n rowData,\n viewType,\n } = props\n\n const { i18n } = useTranslation()\n\n const {\n config: {\n routes: { admin: adminRoute },\n },\n getEntityConfig,\n } = useConfig()\n\n const collectionConfig = getEntityConfig({ collectionSlug })\n\n const classNameFromConfigContext = admin && 'className' in admin ? admin.className : undefined\n\n const className =\n classNameFromProps ||\n (field.admin && 'className' in field.admin ? field.admin.className : null) ||\n classNameFromConfigContext\n\n const onClick = onClickFromProps\n\n let WrapElement: React.ComponentType<any> | string = 'span'\n\n const wrapElementProps: {\n className?: string\n href?: string\n onClick?: () => void\n prefetch?: false\n type?: 'button'\n } = {\n className,\n }\n\n if (link) {\n wrapElementProps.prefetch = false\n WrapElement = Link\n\n // Use custom linkURL if provided, otherwise use default URL generation\n if (linkURL) {\n wrapElementProps.href = linkURL\n } else {\n wrapElementProps.href = collectionConfig?.slug\n ? formatAdminURL({\n adminRoute,\n path: `/collections/${collectionConfig?.slug}${viewType === 'trash' ? '/trash' : ''}/${encodeURIComponent(rowData.id)}`,\n })\n : ''\n }\n }\n\n if (typeof onClick === 'function') {\n WrapElement = 'button'\n wrapElementProps.type = 'button'\n wrapElementProps.onClick = () => {\n onClick({\n cellData,\n collectionSlug: collectionConfig?.slug,\n rowData,\n })\n }\n }\n\n if (fieldIsID(field)) {\n return (\n <WrapElement {...wrapElementProps}>\n <CodeCell\n cellData={`ID: ${cellData}`}\n collectionConfig={collectionConfig}\n collectionSlug={collectionSlug}\n field={{\n ...field,\n type: 'code',\n }}\n nowrap\n rowData={rowData}\n />\n </WrapElement>\n )\n }\n\n const displayedValue = getDisplayedFieldValue(cellData, field, i18n)\n\n const DefaultCellComponent: React.FC<DefaultCellComponentProps> =\n typeof cellData !== 'undefined' && cellComponents[field.type]\n\n let CellComponent: React.ReactNode = null\n\n // Handle JSX labels before using DefaultCellComponent\n if (isValidReactElement(displayedValue)) {\n CellComponent = displayedValue\n } else if (DefaultCellComponent) {\n CellComponent = <DefaultCellComponent cellData={cellData} rowData={rowData} {...props} />\n } else if (!DefaultCellComponent) {\n // DefaultCellComponent does not exist for certain field types like `text`\n if (\n collectionConfig?.upload &&\n fieldAffectsData(field) &&\n field.name === 'filename' &&\n field.type === 'text'\n ) {\n const FileCellComponent = cellComponents.File\n\n CellComponent = (\n <FileCellComponent\n cellData={cellData}\n rowData={rowData}\n {...(props as DefaultCellComponentProps<UploadFieldClient>)}\n collectionConfig={collectionConfig}\n field={field}\n />\n )\n } else {\n return (\n <WrapElement {...wrapElementProps}>\n {(displayedValue === '' ||\n typeof displayedValue === 'undefined' ||\n displayedValue === null) &&\n i18n.t('general:noLabel', {\n label: getTranslation(('label' in field ? field.label : null) || 'data', i18n),\n })}\n {typeof displayedValue === 'string' && displayedValue}\n {typeof displayedValue === 'number' && displayedValue}\n {typeof displayedValue === 'object' &&\n displayedValue !== null &&\n JSON.stringify(displayedValue)}\n </WrapElement>\n )\n }\n }\n\n if ((field.type === 'select' || field.type === 'radio') && field.options.length && cellData) {\n const classes = Array.isArray(cellData)\n ? cellData.map((value) => `selected--${value}`).join(' ')\n : `selected--${cellData}`\n\n const className = [wrapElementProps.className, classes].filter(Boolean).join(' ')\n\n return (\n <WrapElement {...wrapElementProps} className={className}>\n {CellComponent}\n </WrapElement>\n )\n }\n\n return <WrapElement {...wrapElementProps}>{CellComponent}</WrapElement>\n}\n"],"names":["getTranslation","fieldAffectsData","fieldIsID","React","useConfig","useTranslation","formatAdminURL","getDisplayedFieldValue","isValidReactElement","Link","CodeCell","cellComponents","DefaultCell","props","cellData","className","classNameFromProps","collectionSlug","field","admin","link","linkURL","onClick","onClickFromProps","rowData","viewType","i18n","config","routes","adminRoute","getEntityConfig","collectionConfig","classNameFromConfigContext","undefined","WrapElement","wrapElementProps","prefetch","href","slug","path","encodeURIComponent","id","type","nowrap","displayedValue","DefaultCellComponent","CellComponent","upload","name","FileCellComponent","File","t","label","JSON","stringify","options","length","classes","Array","isArray","map","value","join","filter","Boolean"],"mappings":"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"}
@@ -8,6 +8,9 @@ import { useConfig } from '../../../providers/Config/index.js';
8
8
  import { useLocale } from '../../../providers/Locale/index.js';
9
9
  import { useTranslation } from '../../../providers/Translation/index.js';
10
10
  import { reducer } from './reducer.js';
11
+ // documents are first set to null when requested
12
+ // set to false when no doc is returned
13
+ // or set to the document returned
11
14
  const Context = /*#__PURE__*/ createContext({});
12
15
  export const RelationshipProvider = ({ children })=>{
13
16
  const [documents, dispatchDocuments] = useReducer(reducer, {});
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/elements/Table/RelationshipProvider/index.tsx"],"sourcesContent":["'use client'\nimport type { SelectType, TypeWithID } from 'payload'\n\nimport { appendUploadSelectFields } from 'payload/shared'\nimport * as qs from 'qs-esm'\nimport React, { createContext, use, useCallback, useEffect, useReducer, useRef } from 'react'\n\nimport { useDebounce } from '../../../hooks/useDebounce.js'\nimport { useConfig } from '../../../providers/Config/index.js'\nimport { useLocale } from '../../../providers/Locale/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport { reducer } from './reducer.js'\n\n// documents are first set to null when requested\n// set to false when no doc is returned\n// or set to the document returned\nexport type Documents = {\n [slug: string]: {\n [id: number | string]: false | null | TypeWithID\n }\n}\n\ntype ListRelationshipContext = {\n documents: Documents\n getRelationships: (\n docs: {\n relationTo: string\n value: number | string\n }[],\n ) => void\n}\n\nconst Context = createContext({} as ListRelationshipContext)\n\nexport const RelationshipProvider: React.FC<{ readonly children?: React.ReactNode }> = ({\n children,\n}) => {\n const [documents, dispatchDocuments] = useReducer(reducer, {})\n const debouncedDocuments = useDebounce(documents, 100)\n\n const {\n config: {\n collections,\n routes: { api },\n serverURL,\n },\n } = useConfig()\n\n const { i18n } = useTranslation()\n const { code: locale } = useLocale()\n const prevLocale = useRef(locale)\n\n const loadRelationshipDocs = useCallback(\n (reloadAll = false) => {\n Object.entries(debouncedDocuments).forEach(async ([slug, docs]) => {\n const idsToLoad: (number | string)[] = []\n\n Object.entries(docs).forEach(([id, value]) => {\n if (value === null || reloadAll) {\n idsToLoad.push(id)\n }\n })\n\n if (idsToLoad.length > 0) {\n const url = `${serverURL}${api}/${slug}`\n\n const params = new URLSearchParams()\n const select: SelectType = {}\n\n params.append('depth', '0')\n params.append('limit', '250')\n\n const collection = collections.find((c) => c.slug === slug)\n if (collection.admin.enableListViewSelectAPI) {\n const fieldToSelect = collection.admin.useAsTitle ?? 'id'\n select[fieldToSelect] = true\n\n if (collection.upload) {\n appendUploadSelectFields({ collectionConfig: collection, select })\n }\n }\n\n if (locale) {\n params.append('locale', locale)\n }\n\n const idsToString = idsToLoad.map((id) => String(id))\n params.append('where[id][in]', idsToString.join(','))\n\n const query = `?${params.toString()}&${qs.stringify({ select })}`\n\n const result = await fetch(`${url}${query}`, {\n credentials: 'include',\n headers: {\n 'Accept-Language': i18n.language,\n },\n })\n\n if (result.ok) {\n const json = await result.json()\n if (json.docs) {\n dispatchDocuments({\n type: 'ADD_LOADED',\n docs: json.docs,\n idsToLoad,\n relationTo: slug,\n })\n }\n } else {\n dispatchDocuments({ type: 'ADD_LOADED', docs: [], idsToLoad, relationTo: slug })\n }\n }\n })\n },\n [debouncedDocuments, serverURL, api, i18n, locale, collections],\n )\n\n useEffect(() => {\n void loadRelationshipDocs(locale && prevLocale.current !== locale)\n prevLocale.current = locale\n }, [locale, loadRelationshipDocs])\n\n const getRelationships = useCallback(\n (relationships: { relationTo: string; value: number | string }[]) => {\n dispatchDocuments({ type: 'REQUEST', docs: relationships })\n },\n [],\n )\n\n return <Context value={{ documents, getRelationships }}>{children}</Context>\n}\n\nexport const useListRelationships = (): ListRelationshipContext => use(Context)\n"],"names":["appendUploadSelectFields","qs","React","createContext","use","useCallback","useEffect","useReducer","useRef","useDebounce","useConfig","useLocale","useTranslation","reducer","Context","RelationshipProvider","children","documents","dispatchDocuments","debouncedDocuments","config","collections","routes","api","serverURL","i18n","code","locale","prevLocale","loadRelationshipDocs","reloadAll","Object","entries","forEach","slug","docs","idsToLoad","id","value","push","length","url","params","URLSearchParams","select","append","collection","find","c","admin","enableListViewSelectAPI","fieldToSelect","useAsTitle","upload","collectionConfig","idsToString","map","String","join","query","toString","stringify","result","fetch","credentials","headers","language","ok","json","type","relationTo","current","getRelationships","relationships","useListRelationships"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../src/elements/Table/RelationshipProvider/index.tsx"],"sourcesContent":["'use client'\nimport type { SelectType, TypeWithID } from 'payload'\n\nimport { appendUploadSelectFields } from 'payload/shared'\nimport * as qs from 'qs-esm'\nimport React, { createContext, use, useCallback, useEffect, useReducer, useRef } from 'react'\n\nimport { useDebounce } from '../../../hooks/useDebounce.js'\nimport { useConfig } from '../../../providers/Config/index.js'\nimport { useLocale } from '../../../providers/Locale/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport { reducer } from './reducer.js'\n\n// documents are first set to null when requested\n// set to false when no doc is returned\n// or set to the document returned\nexport type Documents = {\n [slug: string]: {\n [id: number | string]: false | null | TypeWithID\n }\n}\n\ntype ListRelationshipContext = {\n documents: Documents\n getRelationships: (\n docs: {\n relationTo: string\n value: number | string\n }[],\n ) => void\n}\n\nconst Context = createContext({} as ListRelationshipContext)\n\nexport const RelationshipProvider: React.FC<{ readonly children?: React.ReactNode }> = ({\n children,\n}) => {\n const [documents, dispatchDocuments] = useReducer(reducer, {})\n const debouncedDocuments = useDebounce(documents, 100)\n\n const {\n config: {\n collections,\n routes: { api },\n serverURL,\n },\n } = useConfig()\n\n const { i18n } = useTranslation()\n const { code: locale } = useLocale()\n const prevLocale = useRef(locale)\n\n const loadRelationshipDocs = useCallback(\n (reloadAll = false) => {\n Object.entries(debouncedDocuments).forEach(async ([slug, docs]) => {\n const idsToLoad: (number | string)[] = []\n\n Object.entries(docs).forEach(([id, value]) => {\n if (value === null || reloadAll) {\n idsToLoad.push(id)\n }\n })\n\n if (idsToLoad.length > 0) {\n const url = `${serverURL}${api}/${slug}`\n\n const params = new URLSearchParams()\n const select: SelectType = {}\n\n params.append('depth', '0')\n params.append('limit', '250')\n\n const collection = collections.find((c) => c.slug === slug)\n if (collection.admin.enableListViewSelectAPI) {\n const fieldToSelect = collection.admin.useAsTitle ?? 'id'\n select[fieldToSelect] = true\n\n if (collection.upload) {\n appendUploadSelectFields({ collectionConfig: collection, select })\n }\n }\n\n if (locale) {\n params.append('locale', locale)\n }\n\n const idsToString = idsToLoad.map((id) => String(id))\n params.append('where[id][in]', idsToString.join(','))\n\n const query = `?${params.toString()}&${qs.stringify({ select })}`\n\n const result = await fetch(`${url}${query}`, {\n credentials: 'include',\n headers: {\n 'Accept-Language': i18n.language,\n },\n })\n\n if (result.ok) {\n const json = await result.json()\n if (json.docs) {\n dispatchDocuments({\n type: 'ADD_LOADED',\n docs: json.docs,\n idsToLoad,\n relationTo: slug,\n })\n }\n } else {\n dispatchDocuments({ type: 'ADD_LOADED', docs: [], idsToLoad, relationTo: slug })\n }\n }\n })\n },\n [debouncedDocuments, serverURL, api, i18n, locale, collections],\n )\n\n useEffect(() => {\n void loadRelationshipDocs(locale && prevLocale.current !== locale)\n prevLocale.current = locale\n }, [locale, loadRelationshipDocs])\n\n const getRelationships = useCallback(\n (relationships: { relationTo: string; value: number | string }[]) => {\n dispatchDocuments({ type: 'REQUEST', docs: relationships })\n },\n [],\n )\n\n return <Context value={{ documents, getRelationships }}>{children}</Context>\n}\n\nexport const useListRelationships = (): ListRelationshipContext => use(Context)\n"],"names":["appendUploadSelectFields","qs","React","createContext","use","useCallback","useEffect","useReducer","useRef","useDebounce","useConfig","useLocale","useTranslation","reducer","Context","RelationshipProvider","children","documents","dispatchDocuments","debouncedDocuments","config","collections","routes","api","serverURL","i18n","code","locale","prevLocale","loadRelationshipDocs","reloadAll","Object","entries","forEach","slug","docs","idsToLoad","id","value","push","length","url","params","URLSearchParams","select","append","collection","find","c","admin","enableListViewSelectAPI","fieldToSelect","useAsTitle","upload","collectionConfig","idsToString","map","String","join","query","toString","stringify","result","fetch","credentials","headers","language","ok","json","type","relationTo","current","getRelationships","relationships","useListRelationships"],"mappings":"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"}
@@ -3,8 +3,8 @@
3
3
  */ export const createThumbnail = (file)=>{
4
4
  return new Promise((resolve, reject)=>{
5
5
  const img = new Image();
6
- img.src = URL.createObjectURL(file) // Use Object URL directly
7
- ;
6
+ img.src = URL.createObjectURL(file);
7
+ // Use Object URL directly
8
8
  img.onload = ()=>{
9
9
  const maxDimension = 280;
10
10
  let drawHeight, drawWidth;
@@ -20,13 +20,13 @@
20
20
  drawWidth = maxDimension * aspectRatio;
21
21
  drawHeight = maxDimension;
22
22
  }
23
- const canvas = new OffscreenCanvas(drawWidth, drawHeight) // Create an OffscreenCanvas
24
- ;
23
+ const canvas = new OffscreenCanvas(drawWidth, drawHeight);
24
+ // Create an OffscreenCanvas
25
25
  const ctx = canvas.getContext('2d');
26
26
  // Determine output format based on input file type
27
27
  const outputFormat = file.type === 'image/png' ? 'image/png' : 'image/jpeg';
28
- const quality = file.type === 'image/png' ? undefined : 0.8 // PNG doesn't use quality, use higher quality for JPEG
29
- ;
28
+ const quality = file.type === 'image/png' ? undefined : 0.8;
29
+ // PNG doesn't use quality, use higher quality for JPEG
30
30
  // Draw the image onto the OffscreenCanvas with calculated dimensions
31
31
  ctx.drawImage(img, 0, 0, drawWidth, drawHeight);
32
32
  // Convert the OffscreenCanvas to a Blob and free up memory
@@ -36,18 +36,18 @@
36
36
  quality
37
37
  }
38
38
  }).then((blob)=>{
39
- URL.revokeObjectURL(img.src) // Release the Object URL
40
- ;
39
+ URL.revokeObjectURL(img.src);
40
+ // Release the Object URL
41
41
  const reader = new FileReader();
42
- reader.onload = ()=>resolve(reader.result) // Resolve as data URL
43
- ;
42
+ reader.onload = ()=>resolve(reader.result);
43
+ // Resolve as data URL
44
44
  reader.onerror = reject;
45
45
  reader.readAsDataURL(blob);
46
46
  }).catch(reject);
47
47
  };
48
48
  img.onerror = (error)=>{
49
- URL.revokeObjectURL(img.src) // Release Object URL on error
50
- ;
49
+ URL.revokeObjectURL(img.src);
50
+ // Release Object URL on error
51
51
  // eslint-disable-next-line @typescript-eslint/prefer-promise-reject-errors
52
52
  reject(error);
53
53
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/elements/Thumbnail/createThumbnail.ts"],"sourcesContent":["/**\n * Create a thumbnail from a File object by drawing it onto an OffscreenCanvas\n */\nexport const createThumbnail = (file: File): Promise<string> => {\n return new Promise((resolve, reject) => {\n const img = new Image()\n img.src = URL.createObjectURL(file) // Use Object URL directly\n\n img.onload = () => {\n const maxDimension = 280\n let drawHeight: number, drawWidth: number\n\n // Calculate aspect ratio\n const aspectRatio = img.width / img.height\n\n // Determine dimensions to fit within maxDimension while maintaining aspect ratio\n if (aspectRatio > 1) {\n // Image is wider than tall\n drawWidth = maxDimension\n drawHeight = maxDimension / aspectRatio\n } else {\n // Image is taller than wide, or square\n drawWidth = maxDimension * aspectRatio\n drawHeight = maxDimension\n }\n\n const canvas = new OffscreenCanvas(drawWidth, drawHeight) // Create an OffscreenCanvas\n const ctx = canvas.getContext('2d')\n\n // Determine output format based on input file type\n const outputFormat = file.type === 'image/png' ? 'image/png' : 'image/jpeg'\n const quality = file.type === 'image/png' ? undefined : 0.8 // PNG doesn't use quality, use higher quality for JPEG\n\n // Draw the image onto the OffscreenCanvas with calculated dimensions\n ctx.drawImage(img, 0, 0, drawWidth, drawHeight)\n\n // Convert the OffscreenCanvas to a Blob and free up memory\n canvas\n .convertToBlob({ type: outputFormat, ...(quality && { quality }) })\n .then((blob) => {\n URL.revokeObjectURL(img.src) // Release the Object URL\n const reader = new FileReader()\n reader.onload = () => resolve(reader.result as string) // Resolve as data URL\n reader.onerror = reject\n reader.readAsDataURL(blob)\n })\n .catch(reject)\n }\n\n img.onerror = (error) => {\n URL.revokeObjectURL(img.src) // Release Object URL on error\n // eslint-disable-next-line @typescript-eslint/prefer-promise-reject-errors\n reject(error)\n }\n })\n}\n"],"names":["createThumbnail","file","Promise","resolve","reject","img","Image","src","URL","createObjectURL","onload","maxDimension","drawHeight","drawWidth","aspectRatio","width","height","canvas","OffscreenCanvas","ctx","getContext","outputFormat","type","quality","undefined","drawImage","convertToBlob","then","blob","revokeObjectURL","reader","FileReader","result","onerror","readAsDataURL","catch","error"],"mappings":"AAAA;;CAEC,GACD,OAAO,MAAMA,kBAAkB,CAACC;IAC9B,OAAO,IAAIC,QAAQ,CAACC,SAASC;QAC3B,MAAMC,MAAM,IAAIC;QAChBD,IAAIE,GAAG,GAAGC,IAAIC,eAAe,CAACR,MAAM,0BAA0B;;QAE9DI,IAAIK,MAAM,GAAG;YACX,MAAMC,eAAe;YACrB,IAAIC,YAAoBC;YAExB,yBAAyB;YACzB,MAAMC,cAAcT,IAAIU,KAAK,GAAGV,IAAIW,MAAM;YAE1C,iFAAiF;YACjF,IAAIF,cAAc,GAAG;gBACnB,2BAA2B;gBAC3BD,YAAYF;gBACZC,aAAaD,eAAeG;YAC9B,OAAO;gBACL,uCAAuC;gBACvCD,YAAYF,eAAeG;gBAC3BF,aAAaD;YACf;YAEA,MAAMM,SAAS,IAAIC,gBAAgBL,WAAWD,YAAY,4BAA4B;;YACtF,MAAMO,MAAMF,OAAOG,UAAU,CAAC;YAE9B,mDAAmD;YACnD,MAAMC,eAAepB,KAAKqB,IAAI,KAAK,cAAc,cAAc;YAC/D,MAAMC,UAAUtB,KAAKqB,IAAI,KAAK,cAAcE,YAAY,IAAI,uDAAuD;;YAEnH,qEAAqE;YACrEL,IAAIM,SAAS,CAACpB,KAAK,GAAG,GAAGQ,WAAWD;YAEpC,2DAA2D;YAC3DK,OACGS,aAAa,CAAC;gBAAEJ,MAAMD;gBAAc,GAAIE,WAAW;oBAAEA;gBAAQ,CAAC;YAAE,GAChEI,IAAI,CAAC,CAACC;gBACLpB,IAAIqB,eAAe,CAACxB,IAAIE,GAAG,EAAE,yBAAyB;;gBACtD,MAAMuB,SAAS,IAAIC;gBACnBD,OAAOpB,MAAM,GAAG,IAAMP,QAAQ2B,OAAOE,MAAM,EAAY,sBAAsB;;gBAC7EF,OAAOG,OAAO,GAAG7B;gBACjB0B,OAAOI,aAAa,CAACN;YACvB,GACCO,KAAK,CAAC/B;QACX;QAEAC,IAAI4B,OAAO,GAAG,CAACG;YACb5B,IAAIqB,eAAe,CAACxB,IAAIE,GAAG,EAAE,8BAA8B;;YAC3D,2EAA2E;YAC3EH,OAAOgC;QACT;IACF;AACF,EAAC"}
1
+ {"version":3,"sources":["../../../src/elements/Thumbnail/createThumbnail.ts"],"sourcesContent":["/**\n * Create a thumbnail from a File object by drawing it onto an OffscreenCanvas\n */\nexport const createThumbnail = (file: File): Promise<string> => {\n return new Promise((resolve, reject) => {\n const img = new Image()\n img.src = URL.createObjectURL(file) // Use Object URL directly\n\n img.onload = () => {\n const maxDimension = 280\n let drawHeight: number, drawWidth: number\n\n // Calculate aspect ratio\n const aspectRatio = img.width / img.height\n\n // Determine dimensions to fit within maxDimension while maintaining aspect ratio\n if (aspectRatio > 1) {\n // Image is wider than tall\n drawWidth = maxDimension\n drawHeight = maxDimension / aspectRatio\n } else {\n // Image is taller than wide, or square\n drawWidth = maxDimension * aspectRatio\n drawHeight = maxDimension\n }\n\n const canvas = new OffscreenCanvas(drawWidth, drawHeight) // Create an OffscreenCanvas\n const ctx = canvas.getContext('2d')\n\n // Determine output format based on input file type\n const outputFormat = file.type === 'image/png' ? 'image/png' : 'image/jpeg'\n const quality = file.type === 'image/png' ? undefined : 0.8 // PNG doesn't use quality, use higher quality for JPEG\n\n // Draw the image onto the OffscreenCanvas with calculated dimensions\n ctx.drawImage(img, 0, 0, drawWidth, drawHeight)\n\n // Convert the OffscreenCanvas to a Blob and free up memory\n canvas\n .convertToBlob({ type: outputFormat, ...(quality && { quality }) })\n .then((blob) => {\n URL.revokeObjectURL(img.src) // Release the Object URL\n const reader = new FileReader()\n reader.onload = () => resolve(reader.result as string) // Resolve as data URL\n reader.onerror = reject\n reader.readAsDataURL(blob)\n })\n .catch(reject)\n }\n\n img.onerror = (error) => {\n URL.revokeObjectURL(img.src) // Release Object URL on error\n // eslint-disable-next-line @typescript-eslint/prefer-promise-reject-errors\n reject(error)\n }\n })\n}\n"],"names":["createThumbnail","file","Promise","resolve","reject","img","Image","src","URL","createObjectURL","onload","maxDimension","drawHeight","drawWidth","aspectRatio","width","height","canvas","OffscreenCanvas","ctx","getContext","outputFormat","type","quality","undefined","drawImage","convertToBlob","then","blob","revokeObjectURL","reader","FileReader","result","onerror","readAsDataURL","catch","error"],"mappings":"AAAA;;CAEC,GACD,OAAO,MAAMA,kBAAkB,CAACC;IAC9B,OAAO,IAAIC,QAAQ,CAACC,SAASC;QAC3B,MAAMC,MAAM,IAAIC;QAChBD,IAAIE,GAAG,GAAGC,IAAIC,eAAe,CAACR;QAAM,0BAA0B;QAE9DI,IAAIK,MAAM,GAAG;YACX,MAAMC,eAAe;YACrB,IAAIC,YAAoBC;YAExB,yBAAyB;YACzB,MAAMC,cAAcT,IAAIU,KAAK,GAAGV,IAAIW,MAAM;YAE1C,iFAAiF;YACjF,IAAIF,cAAc,GAAG;gBACnB,2BAA2B;gBAC3BD,YAAYF;gBACZC,aAAaD,eAAeG;YAC9B,OAAO;gBACL,uCAAuC;gBACvCD,YAAYF,eAAeG;gBAC3BF,aAAaD;YACf;YAEA,MAAMM,SAAS,IAAIC,gBAAgBL,WAAWD;YAAY,4BAA4B;YACtF,MAAMO,MAAMF,OAAOG,UAAU,CAAC;YAE9B,mDAAmD;YACnD,MAAMC,eAAepB,KAAKqB,IAAI,KAAK,cAAc,cAAc;YAC/D,MAAMC,UAAUtB,KAAKqB,IAAI,KAAK,cAAcE,YAAY;YAAI,uDAAuD;YAEnH,qEAAqE;YACrEL,IAAIM,SAAS,CAACpB,KAAK,GAAG,GAAGQ,WAAWD;YAEpC,2DAA2D;YAC3DK,OACGS,aAAa,CAAC;gBAAEJ,MAAMD;gBAAc,GAAIE,WAAW;oBAAEA;gBAAQ,CAAC;YAAE,GAChEI,IAAI,CAAC,CAACC;gBACLpB,IAAIqB,eAAe,CAACxB,IAAIE,GAAG;gBAAE,yBAAyB;gBACtD,MAAMuB,SAAS,IAAIC;gBACnBD,OAAOpB,MAAM,GAAG,IAAMP,QAAQ2B,OAAOE,MAAM;gBAAY,sBAAsB;gBAC7EF,OAAOG,OAAO,GAAG7B;gBACjB0B,OAAOI,aAAa,CAACN;YACvB,GACCO,KAAK,CAAC/B;QACX;QAEAC,IAAI4B,OAAO,GAAG,CAACG;YACb5B,IAAIqB,eAAe,CAACxB,IAAIE,GAAG;YAAE,8BAA8B;YAC3D,2EAA2E;YAC3EH,OAAOgC;QACT;IACF;AACF,EAAC"}
@@ -3,7 +3,9 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
3
  import React, { useEffect } from 'react';
4
4
  import { useIntersect } from '../../hooks/useIntersect.js';
5
5
  import './index.scss';
6
- export const Tooltip = (props)=>{
6
+ /**
7
+ * If the tooltip position should not change depending on if the toolbar is outside the boundingRef. @default false
8
+ */ export const Tooltip = (props)=>{
7
9
  const { alignCaret = 'center', boundingRef, children, className, delay = 350, position: positionFromProps, show: showFromProps = true, staticPositioning = false } = props;
8
10
  const [show, setShow] = React.useState(showFromProps);
9
11
  const [position, setPosition] = React.useState('top');
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/elements/Tooltip/index.tsx"],"sourcesContent":["'use client'\nimport React, { useEffect } from 'react'\n\nimport { useIntersect } from '../../hooks/useIntersect.js'\nimport './index.scss'\n\nexport type Props = {\n alignCaret?: 'center' | 'left' | 'right'\n boundingRef?: React.RefObject<HTMLElement | null>\n children: React.ReactNode\n className?: string\n delay?: number\n position?: 'bottom' | 'top'\n show?: boolean\n /**\n * If the tooltip position should not change depending on if the toolbar is outside the boundingRef. @default false\n */\n staticPositioning?: boolean\n}\n\nexport const Tooltip: React.FC<Props> = (props) => {\n const {\n alignCaret = 'center',\n boundingRef,\n children,\n className,\n delay = 350,\n position: positionFromProps,\n show: showFromProps = true,\n staticPositioning = false,\n } = props\n\n const [show, setShow] = React.useState(showFromProps)\n const [position, setPosition] = React.useState<'bottom' | 'top'>('top')\n\n const getTitleAttribute = (content) => (typeof content === 'string' ? content : '')\n\n const [ref, intersectionEntry] = useIntersect(\n {\n root: boundingRef?.current || null,\n rootMargin: '-145px 0px 0px 100px',\n threshold: 0,\n },\n staticPositioning,\n )\n\n useEffect(() => {\n let timerID: NodeJS.Timeout\n\n // do not use the delay on transition-out\n if (delay && showFromProps) {\n timerID = setTimeout(() => {\n setShow(showFromProps)\n }, delay)\n } else {\n setShow(showFromProps)\n }\n\n return () => {\n if (timerID) {\n clearTimeout(timerID)\n }\n }\n }, [showFromProps, delay])\n\n useEffect(() => {\n if (staticPositioning) {\n return\n }\n setPosition(intersectionEntry?.isIntersecting ? 'top' : 'bottom')\n }, [intersectionEntry, staticPositioning])\n\n // The first aside is always on top. The purpose of that is that it can reliably be used for the interaction observer (as it's not moving around), to calculate the position of the actual tooltip.\n return (\n <React.Fragment>\n {!staticPositioning && (\n <aside\n aria-hidden=\"true\"\n className={['tooltip', className, `tooltip--caret-${alignCaret}`, 'tooltip--position-top']\n .filter(Boolean)\n .join(' ')}\n ref={ref}\n style={{ opacity: '0' }}\n >\n <div className=\"tooltip-content\">{children}</div>\n </aside>\n )}\n <aside\n className={[\n 'tooltip',\n className,\n show && 'tooltip--show',\n `tooltip--caret-${alignCaret}`,\n `tooltip--position-${positionFromProps || position}`,\n ]\n .filter(Boolean)\n .join(' ')}\n title={getTitleAttribute(children)}\n >\n <div className=\"tooltip-content\">{children}</div>\n </aside>\n </React.Fragment>\n )\n}\n"],"names":["React","useEffect","useIntersect","Tooltip","props","alignCaret","boundingRef","children","className","delay","position","positionFromProps","show","showFromProps","staticPositioning","setShow","useState","setPosition","getTitleAttribute","content","ref","intersectionEntry","root","current","rootMargin","threshold","timerID","setTimeout","clearTimeout","isIntersecting","Fragment","aside","aria-hidden","filter","Boolean","join","style","opacity","div","title"],"mappings":"AAAA;;AACA,OAAOA,SAASC,SAAS,QAAQ,QAAO;AAExC,SAASC,YAAY,QAAQ,8BAA6B;AAC1D,OAAO,eAAc;AAgBrB,OAAO,MAAMC,UAA2B,CAACC;IACvC,MAAM,EACJC,aAAa,QAAQ,EACrBC,WAAW,EACXC,QAAQ,EACRC,SAAS,EACTC,QAAQ,GAAG,EACXC,UAAUC,iBAAiB,EAC3BC,MAAMC,gBAAgB,IAAI,EAC1BC,oBAAoB,KAAK,EAC1B,GAAGV;IAEJ,MAAM,CAACQ,MAAMG,QAAQ,GAAGf,MAAMgB,QAAQ,CAACH;IACvC,MAAM,CAACH,UAAUO,YAAY,GAAGjB,MAAMgB,QAAQ,CAAmB;IAEjE,MAAME,oBAAoB,CAACC,UAAa,OAAOA,YAAY,WAAWA,UAAU;IAEhF,MAAM,CAACC,KAAKC,kBAAkB,GAAGnB,aAC/B;QACEoB,MAAMhB,aAAaiB,WAAW;QAC9BC,YAAY;QACZC,WAAW;IACb,GACAX;IAGFb,UAAU;QACR,IAAIyB;QAEJ,yCAAyC;QACzC,IAAIjB,SAASI,eAAe;YAC1Ba,UAAUC,WAAW;gBACnBZ,QAAQF;YACV,GAAGJ;QACL,OAAO;YACLM,QAAQF;QACV;QAEA,OAAO;YACL,IAAIa,SAAS;gBACXE,aAAaF;YACf;QACF;IACF,GAAG;QAACb;QAAeJ;KAAM;IAEzBR,UAAU;QACR,IAAIa,mBAAmB;YACrB;QACF;QACAG,YAAYI,mBAAmBQ,iBAAiB,QAAQ;IAC1D,GAAG;QAACR;QAAmBP;KAAkB;IAEzC,mMAAmM;IACnM,qBACE,MAACd,MAAM8B,QAAQ;;YACZ,CAAChB,mCACA,KAACiB;gBACCC,eAAY;gBACZxB,WAAW;oBAAC;oBAAWA;oBAAW,CAAC,eAAe,EAAEH,YAAY;oBAAE;iBAAwB,CACvF4B,MAAM,CAACC,SACPC,IAAI,CAAC;gBACRf,KAAKA;gBACLgB,OAAO;oBAAEC,SAAS;gBAAI;0BAEtB,cAAA,KAACC;oBAAI9B,WAAU;8BAAmBD;;;0BAGtC,KAACwB;gBACCvB,WAAW;oBACT;oBACAA;oBACAI,QAAQ;oBACR,CAAC,eAAe,EAAEP,YAAY;oBAC9B,CAAC,kBAAkB,EAAEM,qBAAqBD,UAAU;iBACrD,CACEuB,MAAM,CAACC,SACPC,IAAI,CAAC;gBACRI,OAAOrB,kBAAkBX;0BAEzB,cAAA,KAAC+B;oBAAI9B,WAAU;8BAAmBD;;;;;AAI1C,EAAC"}
1
+ {"version":3,"sources":["../../../src/elements/Tooltip/index.tsx"],"sourcesContent":["'use client'\nimport React, { useEffect } from 'react'\n\nimport { useIntersect } from '../../hooks/useIntersect.js'\nimport './index.scss'\n\nexport type Props = {\n alignCaret?: 'center' | 'left' | 'right'\n boundingRef?: React.RefObject<HTMLElement | null>\n children: React.ReactNode\n className?: string\n delay?: number\n position?: 'bottom' | 'top'\n show?: boolean\n /**\n * If the tooltip position should not change depending on if the toolbar is outside the boundingRef. @default false\n */\n staticPositioning?: boolean\n}\n\nexport const Tooltip: React.FC<Props> = (props) => {\n const {\n alignCaret = 'center',\n boundingRef,\n children,\n className,\n delay = 350,\n position: positionFromProps,\n show: showFromProps = true,\n staticPositioning = false,\n } = props\n\n const [show, setShow] = React.useState(showFromProps)\n const [position, setPosition] = React.useState<'bottom' | 'top'>('top')\n\n const getTitleAttribute = (content) => (typeof content === 'string' ? content : '')\n\n const [ref, intersectionEntry] = useIntersect(\n {\n root: boundingRef?.current || null,\n rootMargin: '-145px 0px 0px 100px',\n threshold: 0,\n },\n staticPositioning,\n )\n\n useEffect(() => {\n let timerID: NodeJS.Timeout\n\n // do not use the delay on transition-out\n if (delay && showFromProps) {\n timerID = setTimeout(() => {\n setShow(showFromProps)\n }, delay)\n } else {\n setShow(showFromProps)\n }\n\n return () => {\n if (timerID) {\n clearTimeout(timerID)\n }\n }\n }, [showFromProps, delay])\n\n useEffect(() => {\n if (staticPositioning) {\n return\n }\n setPosition(intersectionEntry?.isIntersecting ? 'top' : 'bottom')\n }, [intersectionEntry, staticPositioning])\n\n // The first aside is always on top. The purpose of that is that it can reliably be used for the interaction observer (as it's not moving around), to calculate the position of the actual tooltip.\n return (\n <React.Fragment>\n {!staticPositioning && (\n <aside\n aria-hidden=\"true\"\n className={['tooltip', className, `tooltip--caret-${alignCaret}`, 'tooltip--position-top']\n .filter(Boolean)\n .join(' ')}\n ref={ref}\n style={{ opacity: '0' }}\n >\n <div className=\"tooltip-content\">{children}</div>\n </aside>\n )}\n <aside\n className={[\n 'tooltip',\n className,\n show && 'tooltip--show',\n `tooltip--caret-${alignCaret}`,\n `tooltip--position-${positionFromProps || position}`,\n ]\n .filter(Boolean)\n .join(' ')}\n title={getTitleAttribute(children)}\n >\n <div className=\"tooltip-content\">{children}</div>\n </aside>\n </React.Fragment>\n )\n}\n"],"names":["React","useEffect","useIntersect","Tooltip","props","alignCaret","boundingRef","children","className","delay","position","positionFromProps","show","showFromProps","staticPositioning","setShow","useState","setPosition","getTitleAttribute","content","ref","intersectionEntry","root","current","rootMargin","threshold","timerID","setTimeout","clearTimeout","isIntersecting","Fragment","aside","aria-hidden","filter","Boolean","join","style","opacity","div","title"],"mappings":"AAAA;;AACA,OAAOA,SAASC,SAAS,QAAQ,QAAO;AAExC,SAASC,YAAY,QAAQ,8BAA6B;AAC1D,OAAO,eAAc;AAUnB;;GAEC,GAIH,OAAO,MAAMC,UAA2B,CAACC;IACvC,MAAM,EACJC,aAAa,QAAQ,EACrBC,WAAW,EACXC,QAAQ,EACRC,SAAS,EACTC,QAAQ,GAAG,EACXC,UAAUC,iBAAiB,EAC3BC,MAAMC,gBAAgB,IAAI,EAC1BC,oBAAoB,KAAK,EAC1B,GAAGV;IAEJ,MAAM,CAACQ,MAAMG,QAAQ,GAAGf,MAAMgB,QAAQ,CAACH;IACvC,MAAM,CAACH,UAAUO,YAAY,GAAGjB,MAAMgB,QAAQ,CAAmB;IAEjE,MAAME,oBAAoB,CAACC,UAAa,OAAOA,YAAY,WAAWA,UAAU;IAEhF,MAAM,CAACC,KAAKC,kBAAkB,GAAGnB,aAC/B;QACEoB,MAAMhB,aAAaiB,WAAW;QAC9BC,YAAY;QACZC,WAAW;IACb,GACAX;IAGFb,UAAU;QACR,IAAIyB;QAEJ,yCAAyC;QACzC,IAAIjB,SAASI,eAAe;YAC1Ba,UAAUC,WAAW;gBACnBZ,QAAQF;YACV,GAAGJ;QACL,OAAO;YACLM,QAAQF;QACV;QAEA,OAAO;YACL,IAAIa,SAAS;gBACXE,aAAaF;YACf;QACF;IACF,GAAG;QAACb;QAAeJ;KAAM;IAEzBR,UAAU;QACR,IAAIa,mBAAmB;YACrB;QACF;QACAG,YAAYI,mBAAmBQ,iBAAiB,QAAQ;IAC1D,GAAG;QAACR;QAAmBP;KAAkB;IAEzC,mMAAmM;IACnM,qBACE,MAACd,MAAM8B,QAAQ;;YACZ,CAAChB,mCACA,KAACiB;gBACCC,eAAY;gBACZxB,WAAW;oBAAC;oBAAWA;oBAAW,CAAC,eAAe,EAAEH,YAAY;oBAAE;iBAAwB,CACvF4B,MAAM,CAACC,SACPC,IAAI,CAAC;gBACRf,KAAKA;gBACLgB,OAAO;oBAAEC,SAAS;gBAAI;0BAEtB,cAAA,KAACC;oBAAI9B,WAAU;8BAAmBD;;;0BAGtC,KAACwB;gBACCvB,WAAW;oBACT;oBACAA;oBACAI,QAAQ;oBACR,CAAC,eAAe,EAAEP,YAAY;oBAC9B,CAAC,kBAAkB,EAAEM,qBAAqBD,UAAU;iBACrD,CACEuB,MAAM,CAACC,SACPC,IAAI,CAAC;gBACRI,OAAOrB,kBAAkBX;0BAEzB,cAAA,KAAC+B;oBAAI9B,WAAU;8BAAmBD;;;;;AAI1C,EAAC"}
@@ -17,7 +17,9 @@ export const UnpublishMany = (props)=>{
17
17
  selectAll: selectAll === SelectAllStatus.AllAvailable
18
18
  });
19
19
  };
20
- export const UnpublishMany_v4 = (props)=>{
20
+ export const UnpublishMany_v4 = /**
21
+ * When multiple UnpublishMany components are rendered on the page, this will differentiate them.
22
+ */ (props)=>{
21
23
  const { collection, collection: { slug, versions } = {}, count, ids, modalPrefix, onSuccess, selectAll, where } = props;
22
24
  const { t } = useTranslation();
23
25
  const { permissions } = useAuth();