@payloadcms/ui 3.69.0-internal.424436e → 3.69.0

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 (241) hide show
  1. package/dist/elements/AppHeader/index.js +1 -2
  2. package/dist/elements/AppHeader/index.js.map +1 -1
  3. package/dist/elements/AppHeader/index.scss +0 -1
  4. package/dist/elements/ArrayAction/index.d.ts +6 -6
  5. package/dist/elements/ArrayAction/index.d.ts.map +1 -1
  6. package/dist/elements/ArrayAction/index.js +8 -8
  7. package/dist/elements/ArrayAction/index.js.map +1 -1
  8. package/dist/elements/Autosave/index.d.ts.map +1 -1
  9. package/dist/elements/Autosave/index.js +20 -5
  10. package/dist/elements/Autosave/index.js.map +1 -1
  11. package/dist/elements/BulkUpload/FormsManager/index.d.ts.map +1 -1
  12. package/dist/elements/BulkUpload/FormsManager/index.js +10 -6
  13. package/dist/elements/BulkUpload/FormsManager/index.js.map +1 -1
  14. package/dist/elements/CopyLocaleData/index.d.ts.map +1 -1
  15. package/dist/elements/CopyLocaleData/index.js +36 -39
  16. package/dist/elements/CopyLocaleData/index.js.map +1 -1
  17. package/dist/elements/DefaultListViewTabs/index.d.ts.map +1 -1
  18. package/dist/elements/DefaultListViewTabs/index.js +1 -2
  19. package/dist/elements/DefaultListViewTabs/index.js.map +1 -1
  20. package/dist/elements/DeleteDocument/index.d.ts.map +1 -1
  21. package/dist/elements/DeleteDocument/index.js +9 -7
  22. package/dist/elements/DeleteDocument/index.js.map +1 -1
  23. package/dist/elements/DeleteMany/index.d.ts.map +1 -1
  24. package/dist/elements/DeleteMany/index.js +19 -16
  25. package/dist/elements/DeleteMany/index.js.map +1 -1
  26. package/dist/elements/DocumentControls/index.d.ts.map +1 -1
  27. package/dist/elements/DocumentControls/index.js +2 -4
  28. package/dist/elements/DocumentControls/index.js.map +1 -1
  29. package/dist/elements/DuplicateDocument/index.d.ts.map +1 -1
  30. package/dist/elements/DuplicateDocument/index.js +4 -6
  31. package/dist/elements/DuplicateDocument/index.js.map +1 -1
  32. package/dist/elements/EditMany/DrawerContent.d.ts.map +1 -1
  33. package/dist/elements/EditMany/DrawerContent.js +8 -12
  34. package/dist/elements/EditMany/DrawerContent.js.map +1 -1
  35. package/dist/elements/FolderView/BrowseByFolderButton/index.d.ts.map +1 -1
  36. package/dist/elements/FolderView/BrowseByFolderButton/index.js +2 -4
  37. package/dist/elements/FolderView/BrowseByFolderButton/index.js.map +1 -1
  38. package/dist/elements/FolderView/Cell/index.client.d.ts.map +1 -1
  39. package/dist/elements/FolderView/Cell/index.client.js +9 -2
  40. package/dist/elements/FolderView/Cell/index.client.js.map +1 -1
  41. package/dist/elements/FolderView/CurrentFolderActions/index.d.ts.map +1 -1
  42. package/dist/elements/FolderView/CurrentFolderActions/index.js +7 -4
  43. package/dist/elements/FolderView/CurrentFolderActions/index.js.map +1 -1
  44. package/dist/elements/FolderView/MoveDocToFolder/index.d.ts +1 -1
  45. package/dist/elements/FolderView/MoveDocToFolder/index.d.ts.map +1 -1
  46. package/dist/elements/FolderView/MoveDocToFolder/index.js +5 -1
  47. package/dist/elements/FolderView/MoveDocToFolder/index.js.map +1 -1
  48. package/dist/elements/IDLabel/index.d.ts.map +1 -1
  49. package/dist/elements/IDLabel/index.js +11 -14
  50. package/dist/elements/IDLabel/index.js.map +1 -1
  51. package/dist/elements/ItemsDrawer/ItemSearch/index.d.ts +8 -0
  52. package/dist/elements/ItemsDrawer/ItemSearch/index.d.ts.map +1 -0
  53. package/dist/elements/ItemsDrawer/ItemSearch/index.js +56 -0
  54. package/dist/elements/ItemsDrawer/ItemSearch/index.js.map +1 -0
  55. package/dist/elements/ItemsDrawer/ItemSearch/index.scss +38 -0
  56. package/dist/elements/ItemsDrawer/index.d.ts +15 -0
  57. package/dist/elements/ItemsDrawer/index.d.ts.map +1 -0
  58. package/dist/elements/ItemsDrawer/index.js +195 -0
  59. package/dist/elements/ItemsDrawer/index.js.map +1 -0
  60. package/dist/elements/ItemsDrawer/index.scss +102 -0
  61. package/dist/elements/Link/index.d.ts.map +1 -1
  62. package/dist/elements/Link/index.js +5 -3
  63. package/dist/elements/Link/index.js.map +1 -1
  64. package/dist/elements/ListControls/index.d.ts.map +1 -1
  65. package/dist/elements/ListControls/index.js +6 -4
  66. package/dist/elements/ListControls/index.js.map +1 -1
  67. package/dist/elements/ListHeader/TitleActions/ListEmptyTrashButton.d.ts.map +1 -1
  68. package/dist/elements/ListHeader/TitleActions/ListEmptyTrashButton.js +9 -2
  69. package/dist/elements/ListHeader/TitleActions/ListEmptyTrashButton.js.map +1 -1
  70. package/dist/elements/Logout/index.d.ts.map +1 -1
  71. package/dist/elements/Logout/index.js +8 -11
  72. package/dist/elements/Logout/index.js.map +1 -1
  73. package/dist/elements/PermanentlyDeleteButton/index.d.ts.map +1 -1
  74. package/dist/elements/PermanentlyDeleteButton/index.js +19 -14
  75. package/dist/elements/PermanentlyDeleteButton/index.js.map +1 -1
  76. package/dist/elements/Popup/PopupButtonList/index.scss +1 -0
  77. package/dist/elements/Popup/PopupTrigger/index.d.ts +1 -1
  78. package/dist/elements/Popup/PopupTrigger/index.d.ts.map +1 -1
  79. package/dist/elements/Popup/PopupTrigger/index.js +24 -92
  80. package/dist/elements/Popup/PopupTrigger/index.js.map +1 -1
  81. package/dist/elements/Popup/index.d.ts +32 -1
  82. package/dist/elements/Popup/index.d.ts.map +1 -1
  83. package/dist/elements/Popup/index.js +249 -122
  84. package/dist/elements/Popup/index.js.map +1 -1
  85. package/dist/elements/Popup/index.scss +49 -231
  86. package/dist/elements/PublishButton/ScheduleDrawer/index.d.ts.map +1 -1
  87. package/dist/elements/PublishButton/ScheduleDrawer/index.js +6 -2
  88. package/dist/elements/PublishButton/ScheduleDrawer/index.js.map +1 -1
  89. package/dist/elements/PublishButton/index.d.ts.map +1 -1
  90. package/dist/elements/PublishButton/index.js +14 -4
  91. package/dist/elements/PublishButton/index.js.map +1 -1
  92. package/dist/elements/PublishMany/DrawerContent.d.ts.map +1 -1
  93. package/dist/elements/PublishMany/DrawerContent.js +8 -5
  94. package/dist/elements/PublishMany/DrawerContent.js.map +1 -1
  95. package/dist/elements/QueryPresets/QueryPresetBar/index.d.ts.map +1 -1
  96. package/dist/elements/QueryPresets/QueryPresetBar/index.js +7 -9
  97. package/dist/elements/QueryPresets/QueryPresetBar/index.js.map +1 -1
  98. package/dist/elements/RestoreButton/index.d.ts.map +1 -1
  99. package/dist/elements/RestoreButton/index.js +19 -14
  100. package/dist/elements/RestoreButton/index.js.map +1 -1
  101. package/dist/elements/RestoreMany/index.d.ts.map +1 -1
  102. package/dist/elements/RestoreMany/index.js +17 -14
  103. package/dist/elements/RestoreMany/index.js.map +1 -1
  104. package/dist/elements/SaveDraftButton/index.d.ts.map +1 -1
  105. package/dist/elements/SaveDraftButton/index.js +11 -5
  106. package/dist/elements/SaveDraftButton/index.js.map +1 -1
  107. package/dist/elements/Status/index.d.ts.map +1 -1
  108. package/dist/elements/Status/index.js +11 -5
  109. package/dist/elements/Status/index.js.map +1 -1
  110. package/dist/elements/StayLoggedIn/index.d.ts.map +1 -1
  111. package/dist/elements/StayLoggedIn/index.js +17 -20
  112. package/dist/elements/StayLoggedIn/index.js.map +1 -1
  113. package/dist/elements/StepNav/context.d.ts.map +1 -1
  114. package/dist/elements/StepNav/context.js +9 -1
  115. package/dist/elements/StepNav/context.js.map +1 -1
  116. package/dist/elements/StepNav/index.scss +0 -1
  117. package/dist/elements/Table/DefaultCell/fields/Relationship/index.d.ts.map +1 -1
  118. package/dist/elements/Table/DefaultCell/fields/Relationship/index.js +39 -41
  119. package/dist/elements/Table/DefaultCell/fields/Relationship/index.js.map +1 -1
  120. package/dist/elements/Table/DefaultCell/index.d.ts.map +1 -1
  121. package/dist/elements/Table/DefaultCell/index.js +9 -12
  122. package/dist/elements/Table/DefaultCell/index.js.map +1 -1
  123. package/dist/elements/Table/OrderableTable.d.ts.map +1 -1
  124. package/dist/elements/Table/OrderableTable.js +5 -1
  125. package/dist/elements/Table/OrderableTable.js.map +1 -1
  126. package/dist/elements/Table/RelationshipProvider/index.d.ts.map +1 -1
  127. package/dist/elements/Table/RelationshipProvider/index.js +25 -24
  128. package/dist/elements/Table/RelationshipProvider/index.js.map +1 -1
  129. package/dist/elements/UnpublishMany/DrawerContent.d.ts.map +1 -1
  130. package/dist/elements/UnpublishMany/DrawerContent.js +8 -5
  131. package/dist/elements/UnpublishMany/DrawerContent.js.map +1 -1
  132. package/dist/elements/Upload/index.d.ts.map +1 -1
  133. package/dist/elements/Upload/index.js +7 -5
  134. package/dist/elements/Upload/index.js.map +1 -1
  135. package/dist/elements/WhereBuilder/Condition/Relationship/index.d.ts.map +1 -1
  136. package/dist/elements/WhereBuilder/Condition/Relationship/index.js +14 -8
  137. package/dist/elements/WhereBuilder/Condition/Relationship/index.js.map +1 -1
  138. package/dist/elements/withMergedProps/index.d.ts +1 -1
  139. package/dist/elements/withMergedProps/index.js +1 -1
  140. package/dist/elements/withMergedProps/index.js.map +1 -1
  141. package/dist/exports/client/index.d.ts +1 -2
  142. package/dist/exports/client/index.d.ts.map +1 -1
  143. package/dist/exports/client/index.js +12 -12
  144. package/dist/exports/client/index.js.map +4 -4
  145. package/dist/exports/rsc/index.d.ts +1 -0
  146. package/dist/exports/rsc/index.d.ts.map +1 -1
  147. package/dist/exports/rsc/index.js +1 -0
  148. package/dist/exports/rsc/index.js.map +1 -1
  149. package/dist/exports/shared/index.d.ts +3 -0
  150. package/dist/exports/shared/index.d.ts.map +1 -1
  151. package/dist/exports/shared/index.js +2 -2
  152. package/dist/exports/shared/index.js.map +4 -4
  153. package/dist/fields/Array/ArrayRow.d.ts +7 -18
  154. package/dist/fields/Array/ArrayRow.d.ts.map +1 -1
  155. package/dist/fields/Array/ArrayRow.js +133 -65
  156. package/dist/fields/Array/ArrayRow.js.map +1 -1
  157. package/dist/fields/Array/index.d.ts.map +1 -1
  158. package/dist/fields/Array/index.js +3 -10
  159. package/dist/fields/Array/index.js.map +1 -1
  160. package/dist/fields/Relationship/Input.d.ts.map +1 -1
  161. package/dist/fields/Relationship/Input.js +9 -3
  162. package/dist/fields/Relationship/Input.js.map +1 -1
  163. package/dist/fields/Upload/Input.d.ts.map +1 -1
  164. package/dist/fields/Upload/Input.js +7 -3
  165. package/dist/fields/Upload/Input.js.map +1 -1
  166. package/dist/forms/fieldSchemasToFormState/fieldSchemasToFormState.spec.js +8 -1
  167. package/dist/forms/fieldSchemasToFormState/fieldSchemasToFormState.spec.js.map +1 -1
  168. package/dist/graphics/Account/index.d.ts.map +1 -1
  169. package/dist/graphics/Account/index.js +2 -4
  170. package/dist/graphics/Account/index.js.map +1 -1
  171. package/dist/providers/Auth/index.d.ts.map +1 -1
  172. package/dist/providers/Auth/index.js +23 -26
  173. package/dist/providers/Auth/index.js.map +1 -1
  174. package/dist/providers/DocumentInfo/index.d.ts +1 -1
  175. package/dist/providers/DocumentInfo/index.d.ts.map +1 -1
  176. package/dist/providers/DocumentInfo/index.js +16 -15
  177. package/dist/providers/DocumentInfo/index.js.map +1 -1
  178. package/dist/providers/DocumentInfo/useGetDocPermissions.d.ts +1 -2
  179. package/dist/providers/DocumentInfo/useGetDocPermissions.d.ts.map +1 -1
  180. package/dist/providers/DocumentInfo/useGetDocPermissions.js +16 -6
  181. package/dist/providers/DocumentInfo/useGetDocPermissions.js.map +1 -1
  182. package/dist/providers/Folders/index.d.ts.map +1 -1
  183. package/dist/providers/Folders/index.js +14 -11
  184. package/dist/providers/Folders/index.js.map +1 -1
  185. package/dist/providers/Locale/index.d.ts.map +1 -1
  186. package/dist/providers/Locale/index.js +45 -34
  187. package/dist/providers/Locale/index.js.map +1 -1
  188. package/dist/providers/Preferences/index.d.ts.map +1 -1
  189. package/dist/providers/Preferences/index.js +16 -7
  190. package/dist/providers/Preferences/index.js.map +1 -1
  191. package/dist/providers/RouteTransition/index.d.ts.map +1 -1
  192. package/dist/providers/RouteTransition/index.js +6 -1
  193. package/dist/providers/RouteTransition/index.js.map +1 -1
  194. package/dist/providers/TableColumns/buildColumnState/renderCell.d.ts.map +1 -1
  195. package/dist/providers/TableColumns/buildColumnState/renderCell.js +1 -2
  196. package/dist/providers/TableColumns/buildColumnState/renderCell.js.map +1 -1
  197. package/dist/scss/app.scss +14 -1
  198. package/dist/styles.css +1 -1
  199. package/dist/utilities/getGlobalData.d.ts +11 -0
  200. package/dist/utilities/getGlobalData.d.ts.map +1 -0
  201. package/dist/utilities/getGlobalData.js +49 -0
  202. package/dist/utilities/getGlobalData.js.map +1 -0
  203. package/dist/utilities/getNavGroups.d.ts +5 -0
  204. package/dist/utilities/getNavGroups.d.ts.map +1 -0
  205. package/dist/utilities/getNavGroups.js +22 -0
  206. package/dist/utilities/getNavGroups.js.map +1 -0
  207. package/dist/utilities/getVisibleEntities.d.ts +5 -0
  208. package/dist/utilities/getVisibleEntities.d.ts.map +1 -0
  209. package/dist/utilities/getVisibleEntities.js +31 -0
  210. package/dist/utilities/getVisibleEntities.js.map +1 -0
  211. package/dist/utilities/groupNavItems.d.ts +3 -0
  212. package/dist/utilities/groupNavItems.d.ts.map +1 -1
  213. package/dist/utilities/groupNavItems.js +3 -0
  214. package/dist/utilities/groupNavItems.js.map +1 -1
  215. package/dist/utilities/handleBackToDashboard.js +1 -1
  216. package/dist/utilities/handleBackToDashboard.js.map +1 -1
  217. package/dist/utilities/handleGoBack.d.ts.map +1 -1
  218. package/dist/utilities/handleGoBack.js +1 -2
  219. package/dist/utilities/handleGoBack.js.map +1 -1
  220. package/dist/utilities/normalizeRelationshipValue.spec.js +1 -1
  221. package/dist/utilities/normalizeRelationshipValue.spec.js.map +1 -1
  222. package/dist/views/CollectionFolder/index.js +2 -4
  223. package/dist/views/CollectionFolder/index.js.map +1 -1
  224. package/dist/views/Edit/Auth/index.d.ts.map +1 -1
  225. package/dist/views/Edit/Auth/index.js +22 -21
  226. package/dist/views/Edit/Auth/index.js.map +1 -1
  227. package/dist/views/Edit/SetDocumentStepNav/index.d.ts.map +1 -1
  228. package/dist/views/Edit/SetDocumentStepNav/index.js +36 -22
  229. package/dist/views/Edit/SetDocumentStepNav/index.js.map +1 -1
  230. package/dist/views/Edit/index.d.ts.map +1 -1
  231. package/dist/views/Edit/index.js +2 -3
  232. package/dist/views/Edit/index.js.map +1 -1
  233. package/dist/views/List/index.d.ts.map +1 -1
  234. package/dist/views/List/index.js +1 -2
  235. package/dist/views/List/index.js.map +1 -1
  236. package/dist/widgets/CollectionCards/index.d.ts +5 -0
  237. package/dist/widgets/CollectionCards/index.d.ts.map +1 -0
  238. package/dist/widgets/CollectionCards/index.js +135 -0
  239. package/dist/widgets/CollectionCards/index.js.map +1 -0
  240. package/dist/widgets/CollectionCards/index.scss +70 -0
  241. package/package.json +5 -5
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["useModal","getTranslation","toWords","React","useEffect","useMemo","useState","DefaultBlockImage","useConfig","useTranslation","Drawer","ThumbnailCard","ItemSearch","baseClass","getItemLabel","item","i18n","labels","singular","toLowerCase","label","slug","getItemSlug","getItemImageInfo","imageAltText","imageURL","undefined","getItemDisplayLabel","ItemsDrawer","props","addRowIndex","drawerSlug","items","onItemClick","searchPlaceholder","title","searchTerm","setSearchTerm","filteredItems","setFilteredItems","closeModal","isModalOpen","t","config","itemGroups","groups","_none","forEach","admin","group","Object","hasOwn","push","searchTermToUse","matchingItems","reduce","matchedItems","_item","blocksMap","itemLabel","includes","finalTitle","_jsxs","_jsx","placeholder","className","entries","map","groupLabel","groupItems","length","filter","Boolean","join","index","displayLabel","alignLabel","onClick","thumbnail","alt","src"],"sources":["../../../src/elements/ItemsDrawer/index.tsx"],"sourcesContent":["'use client'\nimport type { I18nClient } from '@payloadcms/translations'\nimport type { ClientBlock, ClientWidget, Labels } from 'payload'\n\nimport { useModal } from '@faceless-ui/modal'\nimport { getTranslation } from '@payloadcms/translations'\nimport { toWords } from 'payload/shared'\nimport React, { useEffect, useMemo, useState } from 'react'\n\nimport { DefaultBlockImage } from '../../graphics/DefaultBlockImage/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { Drawer } from '../Drawer/index.js'\nimport { ThumbnailCard } from '../ThumbnailCard/index.js'\nimport './index.scss'\nimport { ItemSearch } from './ItemSearch/index.js'\n\nexport type DrawerItem = ClientBlock | ClientWidget\n\nexport type ItemsDrawerProps = {\n readonly addRowIndex?: number\n readonly drawerSlug: string\n readonly items: (DrawerItem | string)[]\n readonly labels?: Labels\n readonly onItemClick: (item: DrawerItem, index?: number) => Promise<void> | void\n readonly searchPlaceholder?: string\n readonly title?: string\n}\n\nconst baseClass = 'items-drawer'\n\nconst getItemLabel = (item: DrawerItem, i18n: I18nClient): string => {\n // Handle ClientBlock\n if ('labels' in item && item.labels?.singular) {\n if (typeof item.labels.singular === 'string') {\n return item.labels.singular.toLowerCase()\n }\n if (typeof item.labels.singular === 'object') {\n return getTranslation(item.labels.singular, i18n).toLowerCase()\n }\n }\n\n // Handle ClientWidget with label (already resolved from function on server)\n if ('label' in item && item.label) {\n if (typeof item.label === 'string') {\n return item.label.toLowerCase()\n }\n if (typeof item.label === 'object') {\n return getTranslation(item.label, i18n).toLowerCase()\n }\n }\n\n // Fallback to slug\n if ('slug' in item) {\n return toWords(item.slug).toLowerCase()\n }\n\n return ''\n}\n\nconst getItemSlug = (item: DrawerItem): string => {\n return item.slug\n}\n\nconst getItemImageInfo = (item: DrawerItem) => {\n if ('imageURL' in item) {\n return {\n imageAltText: item.imageAltText,\n imageURL: item.imageURL,\n }\n }\n return { imageAltText: undefined, imageURL: undefined }\n}\n\nconst getItemDisplayLabel = (item: DrawerItem, i18n: I18nClient): string => {\n // Handle ClientBlock\n if ('labels' in item && item.labels?.singular) {\n return getTranslation(item.labels.singular, i18n)\n }\n\n // Handle ClientWidget with label (already resolved from function on server)\n if ('label' in item && item.label) {\n if (typeof item.label === 'string') {\n return item.label\n }\n if (typeof item.label === 'object') {\n return getTranslation(item.label, i18n)\n }\n }\n\n // Fallback to slug - convert to human-readable label\n return toWords(item.slug)\n}\n\nexport const ItemsDrawer: React.FC<ItemsDrawerProps> = (props) => {\n const { addRowIndex, drawerSlug, items, labels, onItemClick, searchPlaceholder, title } = props\n\n const [searchTerm, setSearchTerm] = useState('')\n const [filteredItems, setFilteredItems] = useState(items)\n const { closeModal, isModalOpen } = useModal()\n const { i18n, t } = useTranslation()\n const { config } = useConfig()\n\n const itemGroups = useMemo(() => {\n const groups: Record<string, (DrawerItem | string)[]> = {\n _none: [],\n }\n filteredItems.forEach((item) => {\n if (typeof item === 'object' && 'admin' in item && item.admin?.group) {\n const group = item.admin.group\n const label = typeof group === 'string' ? group : getTranslation(group, i18n)\n\n if (Object.hasOwn(groups, label)) {\n groups[label].push(item)\n } else {\n groups[label] = [item]\n }\n } else {\n groups._none.push(item)\n }\n })\n return groups\n }, [filteredItems, i18n])\n\n useEffect(() => {\n if (!isModalOpen(drawerSlug)) {\n setSearchTerm('')\n }\n }, [isModalOpen, drawerSlug])\n\n useEffect(() => {\n const searchTermToUse = searchTerm.toLowerCase()\n\n const matchingItems = items?.reduce((matchedItems, _item) => {\n let item: DrawerItem\n\n if (typeof _item === 'string') {\n // Handle string references (for blocks)\n item = config.blocksMap?.[_item] as DrawerItem\n } else {\n item = _item\n }\n\n if (item) {\n const itemLabel = getItemLabel(item, i18n)\n if (itemLabel.includes(searchTermToUse)) {\n matchedItems.push(item)\n }\n }\n return matchedItems\n }, [] as DrawerItem[])\n\n setFilteredItems(matchingItems || [])\n }, [searchTerm, items, i18n, config.blocksMap])\n\n const finalTitle =\n title ||\n (labels\n ? t('fields:addLabel', { label: getTranslation(labels.singular, i18n) })\n : t('fields:addNew'))\n\n return (\n <Drawer slug={drawerSlug} title={finalTitle}>\n <ItemSearch\n placeholder={searchPlaceholder || t('fields:searchForBlock')}\n setSearchTerm={setSearchTerm}\n />\n <div className={`${baseClass}__items-wrapper`}>\n <ul className={`${baseClass}__item-groups`}>\n {Object.entries(itemGroups).map(([groupLabel, groupItems]) =>\n !groupItems.length ? null : (\n <li\n className={[\n `${baseClass}__item-group`,\n groupLabel === '_none' && `${baseClass}__item-group-none`,\n ]\n .filter(Boolean)\n .join(' ')}\n key={groupLabel}\n >\n {groupLabel !== '_none' && (\n <h3 className={`${baseClass}__item-group-label`}>{groupLabel}</h3>\n )}\n <ul className={`${baseClass}__items`}>\n {groupItems.map((_item, index) => {\n const item =\n typeof _item === 'string' ? (config.blocksMap?.[_item] as DrawerItem) : _item\n\n if (!item) {\n return null\n }\n\n const { imageAltText, imageURL } = getItemImageInfo(item)\n const displayLabel = getItemDisplayLabel(item, i18n)\n\n return (\n <li className={`${baseClass}__item`} key={index}>\n <ThumbnailCard\n alignLabel=\"center\"\n label={displayLabel}\n onClick={() => {\n void onItemClick(item, addRowIndex)\n closeModal(drawerSlug)\n }}\n thumbnail={\n <div className={`${baseClass}__default-image`}>\n {imageURL ? (\n <img alt={imageAltText} src={imageURL} />\n ) : (\n <DefaultBlockImage />\n )}\n </div>\n }\n />\n </li>\n )\n })}\n </ul>\n </li>\n ),\n )}\n </ul>\n </div>\n </Drawer>\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,102 @@
1
+ @import '../../scss/styles.scss';
2
+
3
+ @layer payload-default {
4
+ .items-drawer {
5
+ &__items-wrapper {
6
+ padding-top: base(1.5);
7
+ }
8
+
9
+ &__items {
10
+ position: relative;
11
+ padding: 0;
12
+ list-style: none;
13
+ display: grid;
14
+ grid-template-columns: repeat(6, 1fr);
15
+ gap: base(1);
16
+ }
17
+
18
+ &__default-image {
19
+ display: flex;
20
+ align-items: center;
21
+ justify-content: center;
22
+ width: 100%;
23
+ aspect-ratio: 3 / 2;
24
+ overflow: hidden;
25
+
26
+ img,
27
+ svg {
28
+ width: 100%;
29
+ height: 100%;
30
+ object-fit: cover;
31
+ }
32
+ }
33
+
34
+ &__item-groups {
35
+ padding: 0;
36
+ display: flex;
37
+ flex-direction: column;
38
+ gap: base(1.5);
39
+ }
40
+
41
+ &__item-group {
42
+ list-style: none;
43
+ }
44
+
45
+ &__item-group-label {
46
+ padding-bottom: base(0.5);
47
+ }
48
+
49
+ &__item-group-none {
50
+ order: 1;
51
+ padding-top: base(1.5);
52
+ border-top: 1px solid var(--theme-border-color);
53
+
54
+ &:only-child {
55
+ padding-top: 0;
56
+ border-top: 0;
57
+ }
58
+ }
59
+
60
+ @include large-break {
61
+ &__items {
62
+ grid-template-columns: repeat(5, 1fr);
63
+ }
64
+ }
65
+
66
+ @include mid-break {
67
+ &__items-wrapper {
68
+ padding-top: base(1.75);
69
+ }
70
+
71
+ &__items {
72
+ grid-template-columns: repeat(3, 1fr);
73
+ }
74
+
75
+ &__item-groups {
76
+ gap: base(1.75);
77
+ }
78
+
79
+ &__item-group-none {
80
+ padding-top: base(1.75);
81
+ }
82
+ }
83
+
84
+ @include small-break {
85
+ &__items-wrapper {
86
+ padding-top: base(0.75);
87
+ }
88
+
89
+ &__items {
90
+ grid-template-columns: repeat(2, 1fr);
91
+ }
92
+
93
+ &__item-groups {
94
+ gap: base(0.75);
95
+ }
96
+
97
+ &__item-group-none {
98
+ padding-top: base(0.75);
99
+ }
100
+ }
101
+ }
102
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/Link/index.tsx"],"names":[],"mappings":"AACA,OAAO,cAAc,MAAM,cAAc,CAAA;AAEzC,OAAO,KAAK,MAAM,OAAO,CAAA;AAKzB,QAAA,MAAM,QAAQ;eAyE2tF,MAAO,SAAS;2CAzEnqF,CAAA;AAgBtF,KAAK,KAAK,GAAG;IACX;;;;OAIG;IACH,cAAc,CAAC,EAAE,OAAO,CAAA;CACzB,GAAG,UAAU,CAAC,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAA;AAElC,eAAO,MAAM,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CA+ChC,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/Link/index.tsx"],"names":[],"mappings":"AACA,OAAO,cAAc,MAAM,cAAc,CAAA;AAEzC,OAAO,KAAK,MAAM,OAAO,CAAA;AAKzB,QAAA,MAAM,QAAQ;eA4E2mF,MAAO,SAAS;2CA5EnjF,CAAA;AAgBtF,KAAK,KAAK,GAAG;IACX;;;;OAIG;IACH,cAAc,CAAC,EAAE,OAAO,CAAA;CACzB,GAAG,UAAU,CAAC,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAA;AAElC,eAAO,MAAM,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAkDhC,CAAA"}
@@ -43,8 +43,8 @@ export const Link = ({
43
43
  if (preventDefault) {
44
44
  e.preventDefault();
45
45
  }
46
- startRouteTransition(() => {
47
- const url = typeof href === 'string' ? href : formatUrl(href);
46
+ const url = typeof href === 'string' ? href : formatUrl(href);
47
+ const navigate = () => {
48
48
  if (replace) {
49
49
  void router.replace(url, {
50
50
  scroll
@@ -54,7 +54,9 @@ export const Link = ({
54
54
  scroll
55
55
  });
56
56
  }
57
- });
57
+ };
58
+ // Call startRouteTransition if available, otherwise navigate directly
59
+ startRouteTransition(navigate);
58
60
  },
59
61
  ref: ref,
60
62
  ...rest,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["NextLinkImport","useRouter","React","useRouteTransition","formatUrl","NextLink","default","isModifiedEvent","event","eventTarget","currentTarget","target","getAttribute","metaKey","ctrlKey","shiftKey","altKey","nativeEvent","which","Link","children","href","onClick","preventDefault","ref","replace","scroll","rest","router","startRouteTransition","_jsx","e","url","push"],"sources":["../../../src/elements/Link/index.tsx"],"sourcesContent":["'use client'\nimport NextLinkImport from 'next/link.js'\nimport { useRouter } from 'next/navigation.js'\nimport React from 'react'\n\nimport { useRouteTransition } from '../../providers/RouteTransition/index.js'\nimport { formatUrl } from './formatUrl.js'\n\nconst NextLink = 'default' in NextLinkImport ? NextLinkImport.default : NextLinkImport\n\n// Copied from https://github.com/vercel/next.js/blob/canary/packages/next/src/client/link.tsx#L180-L191\nfunction isModifiedEvent(event: React.MouseEvent): boolean {\n const eventTarget = event.currentTarget as HTMLAnchorElement | SVGAElement\n const target = eventTarget.getAttribute('target')\n return (\n (target && target !== '_self') ||\n event.metaKey ||\n event.ctrlKey ||\n event.shiftKey ||\n event.altKey || // triggers resource download\n (event.nativeEvent && event.nativeEvent.which === 2)\n )\n}\n\ntype Props = {\n /**\n * Disable the e.preventDefault() call on click if you want to handle it yourself via onClick\n *\n * @default true\n */\n preventDefault?: boolean\n} & Parameters<typeof NextLink>[0]\n\nexport const Link: React.FC<Props> = ({\n children,\n href,\n onClick,\n preventDefault = true,\n ref,\n replace,\n scroll,\n ...rest\n}) => {\n const router = useRouter()\n const { startRouteTransition } = useRouteTransition()\n\n return (\n <NextLink\n href={href}\n onClick={(e) => {\n if (isModifiedEvent(e)) {\n return\n }\n\n if (onClick) {\n onClick(e)\n }\n\n // We need a preventDefault here so that a clicked link doesn't trigger twice,\n // once for default browser navigation and once for startRouteTransition\n if (preventDefault) {\n e.preventDefault()\n }\n\n startRouteTransition(() => {\n const url = typeof href === 'string' ? href : formatUrl(href)\n\n if (replace) {\n void router.replace(url, { scroll })\n } else {\n void router.push(url, { scroll })\n }\n })\n }}\n ref={ref}\n {...rest}\n >\n {children}\n </NextLink>\n )\n}\n"],"mappings":"AAAA;;;AACA,OAAOA,cAAA,MAAoB;AAC3B,SAASC,SAAS,QAAQ;AAC1B,OAAOC,KAAA,MAAW;AAElB,SAASC,kBAAkB,QAAQ;AACnC,SAASC,SAAS,QAAQ;AAE1B,MAAMC,QAAA,GAAW,aAAaL,cAAA,GAAiBA,cAAA,CAAeM,OAAO,GAAGN,cAAA;AAExE;AACA,SAASO,gBAAgBC,KAAuB;EAC9C,MAAMC,WAAA,GAAcD,KAAA,CAAME,aAAa;EACvC,MAAMC,MAAA,GAASF,WAAA,CAAYG,YAAY,CAAC;EACxC,OACED,MAAC,IAAUA,MAAA,KAAW,WACtBH,KAAA,CAAMK,OAAO,IACbL,KAAA,CAAMM,OAAO,IACbN,KAAA,CAAMO,QAAQ,IACdP,KAAA,CAAMQ,MAAM;EAAI;EACfR,KAAA,CAAMS,WAAW,IAAIT,KAAA,CAAMS,WAAW,CAACC,KAAK,KAAK;AAEtD;AAWA,OAAO,MAAMC,IAAA,GAAwBA,CAAC;EACpCC,QAAQ;EACRC,IAAI;EACJC,OAAO;EACPC,cAAA,GAAiB,IAAI;EACrBC,GAAG;EACHC,OAAO;EACPC,MAAM;EACN,GAAGC;AAAA,CACJ;EACC,MAAMC,MAAA,GAAS3B,SAAA;EACf,MAAM;IAAE4B;EAAoB,CAAE,GAAG1B,kBAAA;EAEjC,oBACE2B,IAAA,CAACzB,QAAA;IACCgB,IAAA,EAAMA,IAAA;IACNC,OAAA,EAAUS,CAAA;MACR,IAAIxB,eAAA,CAAgBwB,CAAA,GAAI;QACtB;MACF;MAEA,IAAIT,OAAA,EAAS;QACXA,OAAA,CAAQS,CAAA;MACV;MAEA;MACA;MACA,IAAIR,cAAA,EAAgB;QAClBQ,CAAA,CAAER,cAAc;MAClB;MAEAM,oBAAA,CAAqB;QACnB,MAAMG,GAAA,GAAM,OAAOX,IAAA,KAAS,WAAWA,IAAA,GAAOjB,SAAA,CAAUiB,IAAA;QAExD,IAAII,OAAA,EAAS;UACX,KAAKG,MAAA,CAAOH,OAAO,CAACO,GAAA,EAAK;YAAEN;UAAO;QACpC,OAAO;UACL,KAAKE,MAAA,CAAOK,IAAI,CAACD,GAAA,EAAK;YAAEN;UAAO;QACjC;MACF;IACF;IACAF,GAAA,EAAKA,GAAA;IACJ,GAAGG,IAAI;cAEPP;;AAGP","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["NextLinkImport","useRouter","React","useRouteTransition","formatUrl","NextLink","default","isModifiedEvent","event","eventTarget","currentTarget","target","getAttribute","metaKey","ctrlKey","shiftKey","altKey","nativeEvent","which","Link","children","href","onClick","preventDefault","ref","replace","scroll","rest","router","startRouteTransition","_jsx","e","url","navigate","push"],"sources":["../../../src/elements/Link/index.tsx"],"sourcesContent":["'use client'\nimport NextLinkImport from 'next/link.js'\nimport { useRouter } from 'next/navigation.js'\nimport React from 'react'\n\nimport { useRouteTransition } from '../../providers/RouteTransition/index.js'\nimport { formatUrl } from './formatUrl.js'\n\nconst NextLink = 'default' in NextLinkImport ? NextLinkImport.default : NextLinkImport\n\n// Copied from https://github.com/vercel/next.js/blob/canary/packages/next/src/client/link.tsx#L180-L191\nfunction isModifiedEvent(event: React.MouseEvent): boolean {\n const eventTarget = event.currentTarget as HTMLAnchorElement | SVGAElement\n const target = eventTarget.getAttribute('target')\n return (\n (target && target !== '_self') ||\n event.metaKey ||\n event.ctrlKey ||\n event.shiftKey ||\n event.altKey || // triggers resource download\n (event.nativeEvent && event.nativeEvent.which === 2)\n )\n}\n\ntype Props = {\n /**\n * Disable the e.preventDefault() call on click if you want to handle it yourself via onClick\n *\n * @default true\n */\n preventDefault?: boolean\n} & Parameters<typeof NextLink>[0]\n\nexport const Link: React.FC<Props> = ({\n children,\n href,\n onClick,\n preventDefault = true,\n ref,\n replace,\n scroll,\n ...rest\n}) => {\n const router = useRouter()\n const { startRouteTransition } = useRouteTransition()\n\n return (\n <NextLink\n href={href}\n onClick={(e) => {\n if (isModifiedEvent(e)) {\n return\n }\n\n if (onClick) {\n onClick(e)\n }\n\n // We need a preventDefault here so that a clicked link doesn't trigger twice,\n // once for default browser navigation and once for startRouteTransition\n if (preventDefault) {\n e.preventDefault()\n }\n\n const url = typeof href === 'string' ? href : formatUrl(href)\n\n const navigate = () => {\n if (replace) {\n void router.replace(url, { scroll })\n } else {\n void router.push(url, { scroll })\n }\n }\n\n // Call startRouteTransition if available, otherwise navigate directly\n startRouteTransition(navigate)\n }}\n ref={ref}\n {...rest}\n >\n {children}\n </NextLink>\n )\n}\n"],"mappings":"AAAA;;;AACA,OAAOA,cAAA,MAAoB;AAC3B,SAASC,SAAS,QAAQ;AAC1B,OAAOC,KAAA,MAAW;AAElB,SAASC,kBAAkB,QAAQ;AACnC,SAASC,SAAS,QAAQ;AAE1B,MAAMC,QAAA,GAAW,aAAaL,cAAA,GAAiBA,cAAA,CAAeM,OAAO,GAAGN,cAAA;AAExE;AACA,SAASO,gBAAgBC,KAAuB;EAC9C,MAAMC,WAAA,GAAcD,KAAA,CAAME,aAAa;EACvC,MAAMC,MAAA,GAASF,WAAA,CAAYG,YAAY,CAAC;EACxC,OACED,MAAC,IAAUA,MAAA,KAAW,WACtBH,KAAA,CAAMK,OAAO,IACbL,KAAA,CAAMM,OAAO,IACbN,KAAA,CAAMO,QAAQ,IACdP,KAAA,CAAMQ,MAAM;EAAI;EACfR,KAAA,CAAMS,WAAW,IAAIT,KAAA,CAAMS,WAAW,CAACC,KAAK,KAAK;AAEtD;AAWA,OAAO,MAAMC,IAAA,GAAwBA,CAAC;EACpCC,QAAQ;EACRC,IAAI;EACJC,OAAO;EACPC,cAAA,GAAiB,IAAI;EACrBC,GAAG;EACHC,OAAO;EACPC,MAAM;EACN,GAAGC;AAAA,CACJ;EACC,MAAMC,MAAA,GAAS3B,SAAA;EACf,MAAM;IAAE4B;EAAoB,CAAE,GAAG1B,kBAAA;EAEjC,oBACE2B,IAAA,CAACzB,QAAA;IACCgB,IAAA,EAAMA,IAAA;IACNC,OAAA,EAAUS,CAAA;MACR,IAAIxB,eAAA,CAAgBwB,CAAA,GAAI;QACtB;MACF;MAEA,IAAIT,OAAA,EAAS;QACXA,OAAA,CAAQS,CAAA;MACV;MAEA;MACA;MACA,IAAIR,cAAA,EAAgB;QAClBQ,CAAA,CAAER,cAAc;MAClB;MAEA,MAAMS,GAAA,GAAM,OAAOX,IAAA,KAAS,WAAWA,IAAA,GAAOjB,SAAA,CAAUiB,IAAA;MAExD,MAAMY,QAAA,GAAWA,CAAA;QACf,IAAIR,OAAA,EAAS;UACX,KAAKG,MAAA,CAAOH,OAAO,CAACO,GAAA,EAAK;YAAEN;UAAO;QACpC,OAAO;UACL,KAAKE,MAAA,CAAOM,IAAI,CAACF,GAAA,EAAK;YAAEN;UAAO;QACjC;MACF;MAEA;MACAG,oBAAA,CAAqBI,QAAA;IACvB;IACAT,GAAA,EAAKA,GAAA;IACJ,GAAGG,IAAI;cAEPP;;AAGP","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/ListControls/index.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAgD,MAAM,OAAO,CAAA;AAEpE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAgBnD,OAAO,cAAc,CAAA;AAIrB;;;;GAIG;AACH,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CAgOpD,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/ListControls/index.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAgD,MAAM,OAAO,CAAA;AAEpE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAgBnD,OAAO,cAAc,CAAA;AAIrB;;;;GAIG;AACH,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CAkOpD,CAAA"}
@@ -5,7 +5,7 @@ import { useWindowInfo } from '@faceless-ui/window-info';
5
5
  import { getTranslation } from '@payloadcms/translations';
6
6
  import { validateWhereQuery } from 'payload/shared';
7
7
  import React, { Fragment, useEffect, useRef, useState } from 'react';
8
- import { Popup } from '../../elements/Popup/index.js';
8
+ import { Popup, PopupList } from '../../elements/Popup/index.js';
9
9
  import { useUseTitleField } from '../../hooks/useUseAsTitle.js';
10
10
  import { ChevronIcon } from '../../icons/Chevron/index.js';
11
11
  import { Dots } from '../../icons/Dots/index.js';
@@ -156,9 +156,11 @@ export const ListControls = props => {
156
156
  id: "list-menu",
157
157
  size: "small",
158
158
  verticalAlign: "bottom",
159
- children: listMenuItems.map((item, i_0) => /*#__PURE__*/_jsx(Fragment, {
160
- children: item
161
- }, `list-menu-item-${i_0}`))
159
+ children: /*#__PURE__*/_jsx(PopupList.ButtonGroup, {
160
+ children: listMenuItems.map((item, i_0) => /*#__PURE__*/_jsx(Fragment, {
161
+ children: item
162
+ }, `list-menu-item-${i_0}`))
163
+ })
162
164
  }, "list-menu")].filter(Boolean),
163
165
  label: searchLabelTranslated.current,
164
166
  onSearchChange: handleSearchChange,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["useWindowInfo","getTranslation","validateWhereQuery","React","Fragment","useEffect","useRef","useState","Popup","useUseTitleField","ChevronIcon","Dots","useListQuery","useTranslation","AnimateHeight","ColumnSelector","GroupByBuilder","Pill","QueryPresetBar","SearchBar","WhereBuilder","getTextFieldsToBeSearched","baseClass","ListControls","props","beforeActions","collectionConfig","collectionSlug","disableQueryPresets","enableColumns","enableFilters","enableSort","listMenuItems","queryPreset","activePreset","queryPresetPermissions","renderedFilters","resolvedFilterOptions","handleSearchChange","query","titleField","i18n","t","breakpoints","s","smallBreak","searchLabel","label","name","listSearchableFields","admin","fields","searchLabelTranslated","hasWhereParam","Boolean","where","shouldInitializeWhereOpened","visibleDrawer","setVisibleDrawer","undefined","current","length","reduce","placeholderText","field","i","_jsxs","className","enableQueryPresets","_jsx","Actions","icon","direction","id","onClick","pillStyle","size","groupBy","Array","isArray","button","ariaLabel","horizontalAlign","verticalAlign","map","item","filter","onSearchChange","searchQueryParam","search","height","slug","collectionPluralLabel","labels","plural"],"sources":["../../../src/elements/ListControls/index.tsx"],"sourcesContent":["'use client'\n\nimport { useWindowInfo } from '@faceless-ui/window-info'\nimport { getTranslation } from '@payloadcms/translations'\nimport { validateWhereQuery } from 'payload/shared'\nimport React, { Fragment, useEffect, useRef, useState } from 'react'\n\nimport type { ListControlsProps } from './types.js'\n\nimport { Popup } from '../../elements/Popup/index.js'\nimport { useUseTitleField } from '../../hooks/useUseAsTitle.js'\nimport { ChevronIcon } from '../../icons/Chevron/index.js'\nimport { Dots } from '../../icons/Dots/index.js'\nimport { useListQuery } from '../../providers/ListQuery/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { AnimateHeight } from '../AnimateHeight/index.js'\nimport { ColumnSelector } from '../ColumnSelector/index.js'\nimport { GroupByBuilder } from '../GroupByBuilder/index.js'\nimport { Pill } from '../Pill/index.js'\nimport { QueryPresetBar } from '../QueryPresets/QueryPresetBar/index.js'\nimport { SearchBar } from '../SearchBar/index.js'\nimport { WhereBuilder } from '../WhereBuilder/index.js'\nimport { getTextFieldsToBeSearched } from './getTextFieldsToBeSearched.js'\nimport './index.scss'\n\nconst baseClass = 'list-controls'\n\n/**\n * The ListControls component is used to render the controls (search, filter, where)\n * for a collection's list view. You can find those directly above the table which lists\n * the collection's documents.\n */\nexport const ListControls: React.FC<ListControlsProps> = (props) => {\n const {\n beforeActions,\n collectionConfig,\n collectionSlug,\n disableQueryPresets,\n enableColumns = true,\n enableFilters = true,\n enableSort = false,\n listMenuItems,\n queryPreset: activePreset,\n queryPresetPermissions,\n renderedFilters,\n resolvedFilterOptions,\n } = props\n\n const { handleSearchChange, query } = useListQuery()\n\n const titleField = useUseTitleField(collectionConfig)\n const { i18n, t } = useTranslation()\n\n const {\n breakpoints: { s: smallBreak },\n } = useWindowInfo()\n\n const searchLabel =\n (titleField &&\n getTranslation(\n 'label' in titleField &&\n (typeof titleField.label === 'string' || typeof titleField.label === 'object')\n ? titleField.label\n : 'name' in titleField\n ? titleField.name\n : null,\n i18n,\n )) ??\n 'ID'\n\n const listSearchableFields = getTextFieldsToBeSearched(\n collectionConfig.admin.listSearchableFields,\n collectionConfig.fields,\n i18n,\n )\n\n const searchLabelTranslated = useRef(\n t('general:searchBy', { label: getTranslation(searchLabel, i18n) }),\n )\n\n const hasWhereParam = useRef(Boolean(query?.where))\n\n const shouldInitializeWhereOpened = validateWhereQuery(query?.where)\n\n const [visibleDrawer, setVisibleDrawer] = useState<'columns' | 'group-by' | 'sort' | 'where'>(\n shouldInitializeWhereOpened ? 'where' : undefined,\n )\n\n useEffect(() => {\n if (hasWhereParam.current && !query?.where) {\n hasWhereParam.current = false\n } else if (query?.where) {\n hasWhereParam.current = true\n }\n }, [setVisibleDrawer, query?.where])\n\n useEffect(() => {\n if (listSearchableFields?.length > 0) {\n searchLabelTranslated.current = listSearchableFields.reduce(\n (placeholderText: string, field, i: number) => {\n const label =\n 'label' in field && field.label ? field.label : 'name' in field ? field.name : null\n\n if (i === 0) {\n return `${t('general:searchBy', {\n label: getTranslation(label, i18n),\n })}`\n }\n\n if (i === listSearchableFields.length - 1) {\n return `${placeholderText} ${t('general:or')} ${getTranslation(label, i18n)}`\n }\n\n return `${placeholderText}, ${getTranslation(label, i18n)}`\n },\n '',\n )\n } else {\n searchLabelTranslated.current = t('general:searchBy', {\n label: getTranslation(searchLabel, i18n),\n })\n }\n }, [t, listSearchableFields, i18n, searchLabel])\n\n return (\n <div className={baseClass}>\n {collectionConfig?.enableQueryPresets && !disableQueryPresets && (\n <QueryPresetBar\n activePreset={activePreset}\n collectionSlug={collectionSlug}\n queryPresetPermissions={queryPresetPermissions}\n />\n )}\n <SearchBar\n Actions={[\n !smallBreak && (\n <React.Fragment key=\"before-actions\">{beforeActions && beforeActions}</React.Fragment>\n ),\n enableColumns && (\n <Pill\n aria-controls={`${baseClass}-columns`}\n aria-expanded={visibleDrawer === 'columns'}\n className={`${baseClass}__toggle-columns`}\n icon={<ChevronIcon direction={visibleDrawer === 'columns' ? 'up' : 'down'} />}\n id=\"toggle-list-columns\"\n key=\"toggle-list-columns\"\n onClick={() => setVisibleDrawer(visibleDrawer !== 'columns' ? 'columns' : undefined)}\n pillStyle=\"light\"\n size=\"small\"\n >\n {t('general:columns')}\n </Pill>\n ),\n enableFilters && (\n <Pill\n aria-controls={`${baseClass}-where`}\n aria-expanded={visibleDrawer === 'where'}\n className={`${baseClass}__toggle-where`}\n icon={<ChevronIcon direction={visibleDrawer === 'where' ? 'up' : 'down'} />}\n id=\"toggle-list-filters\"\n key=\"toggle-list-filters\"\n onClick={() => setVisibleDrawer(visibleDrawer !== 'where' ? 'where' : undefined)}\n pillStyle=\"light\"\n size=\"small\"\n >\n {t('general:filters')}\n </Pill>\n ),\n enableSort && (\n <Pill\n aria-controls={`${baseClass}-sort`}\n aria-expanded={visibleDrawer === 'sort'}\n className={`${baseClass}__toggle-sort`}\n icon={<ChevronIcon />}\n id=\"toggle-list-sort\"\n key=\"toggle-list-sort\"\n onClick={() => setVisibleDrawer(visibleDrawer !== 'sort' ? 'sort' : undefined)}\n pillStyle=\"light\"\n size=\"small\"\n >\n {t('general:sort')}\n </Pill>\n ),\n collectionConfig.admin.groupBy && (\n <Pill\n aria-controls={`${baseClass}-group-by`}\n aria-expanded={visibleDrawer === 'group-by'}\n className={`${baseClass}__toggle-group-by`}\n icon={<ChevronIcon direction={visibleDrawer === 'group-by' ? 'up' : 'down'} />}\n id=\"toggle-group-by\"\n key=\"toggle-group-by\"\n onClick={() =>\n setVisibleDrawer(visibleDrawer !== 'group-by' ? 'group-by' : undefined)\n }\n pillStyle=\"light\"\n size=\"small\"\n >\n {t('general:groupByLabel', {\n label: '',\n })}\n </Pill>\n ),\n listMenuItems && Array.isArray(listMenuItems) && listMenuItems.length > 0 && (\n <Popup\n button={<Dots ariaLabel={t('general:moreOptions')} />}\n className={`${baseClass}__popup`}\n horizontalAlign=\"right\"\n id=\"list-menu\"\n key=\"list-menu\"\n size=\"small\"\n verticalAlign=\"bottom\"\n >\n {listMenuItems.map((item, i) => (\n <Fragment key={`list-menu-item-${i}`}>{item}</Fragment>\n ))}\n </Popup>\n ),\n ].filter(Boolean)}\n key={collectionSlug}\n label={searchLabelTranslated.current}\n onSearchChange={handleSearchChange}\n searchQueryParam={query?.search}\n />\n {enableColumns && (\n <AnimateHeight\n className={`${baseClass}__columns`}\n height={visibleDrawer === 'columns' ? 'auto' : 0}\n id={`${baseClass}-columns`}\n >\n <ColumnSelector collectionSlug={collectionConfig.slug} />\n </AnimateHeight>\n )}\n <AnimateHeight\n className={`${baseClass}__where`}\n height={visibleDrawer === 'where' ? 'auto' : 0}\n id={`${baseClass}-where`}\n >\n <WhereBuilder\n collectionPluralLabel={collectionConfig?.labels?.plural}\n collectionSlug={collectionConfig.slug}\n fields={collectionConfig?.fields}\n renderedFilters={renderedFilters}\n resolvedFilterOptions={resolvedFilterOptions}\n />\n </AnimateHeight>\n {collectionConfig.admin.groupBy && (\n <AnimateHeight\n className={`${baseClass}__group-by`}\n height={visibleDrawer === 'group-by' ? 'auto' : 0}\n id={`${baseClass}-group-by`}\n >\n <GroupByBuilder collectionSlug={collectionConfig.slug} fields={collectionConfig.fields} />\n </AnimateHeight>\n )}\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["useWindowInfo","getTranslation","validateWhereQuery","React","Fragment","useEffect","useRef","useState","Popup","PopupList","useUseTitleField","ChevronIcon","Dots","useListQuery","useTranslation","AnimateHeight","ColumnSelector","GroupByBuilder","Pill","QueryPresetBar","SearchBar","WhereBuilder","getTextFieldsToBeSearched","baseClass","ListControls","props","beforeActions","collectionConfig","collectionSlug","disableQueryPresets","enableColumns","enableFilters","enableSort","listMenuItems","queryPreset","activePreset","queryPresetPermissions","renderedFilters","resolvedFilterOptions","handleSearchChange","query","titleField","i18n","t","breakpoints","s","smallBreak","searchLabel","label","name","listSearchableFields","admin","fields","searchLabelTranslated","hasWhereParam","Boolean","where","shouldInitializeWhereOpened","visibleDrawer","setVisibleDrawer","undefined","current","length","reduce","placeholderText","field","i","_jsxs","className","enableQueryPresets","_jsx","Actions","icon","direction","id","onClick","pillStyle","size","groupBy","Array","isArray","button","ariaLabel","horizontalAlign","verticalAlign","ButtonGroup","map","item","filter","onSearchChange","searchQueryParam","search","height","slug","collectionPluralLabel","labels","plural"],"sources":["../../../src/elements/ListControls/index.tsx"],"sourcesContent":["'use client'\n\nimport { useWindowInfo } from '@faceless-ui/window-info'\nimport { getTranslation } from '@payloadcms/translations'\nimport { validateWhereQuery } from 'payload/shared'\nimport React, { Fragment, useEffect, useRef, useState } from 'react'\n\nimport type { ListControlsProps } from './types.js'\n\nimport { Popup, PopupList } from '../../elements/Popup/index.js'\nimport { useUseTitleField } from '../../hooks/useUseAsTitle.js'\nimport { ChevronIcon } from '../../icons/Chevron/index.js'\nimport { Dots } from '../../icons/Dots/index.js'\nimport { useListQuery } from '../../providers/ListQuery/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { AnimateHeight } from '../AnimateHeight/index.js'\nimport { ColumnSelector } from '../ColumnSelector/index.js'\nimport { GroupByBuilder } from '../GroupByBuilder/index.js'\nimport { Pill } from '../Pill/index.js'\nimport { QueryPresetBar } from '../QueryPresets/QueryPresetBar/index.js'\nimport { SearchBar } from '../SearchBar/index.js'\nimport { WhereBuilder } from '../WhereBuilder/index.js'\nimport { getTextFieldsToBeSearched } from './getTextFieldsToBeSearched.js'\nimport './index.scss'\n\nconst baseClass = 'list-controls'\n\n/**\n * The ListControls component is used to render the controls (search, filter, where)\n * for a collection's list view. You can find those directly above the table which lists\n * the collection's documents.\n */\nexport const ListControls: React.FC<ListControlsProps> = (props) => {\n const {\n beforeActions,\n collectionConfig,\n collectionSlug,\n disableQueryPresets,\n enableColumns = true,\n enableFilters = true,\n enableSort = false,\n listMenuItems,\n queryPreset: activePreset,\n queryPresetPermissions,\n renderedFilters,\n resolvedFilterOptions,\n } = props\n\n const { handleSearchChange, query } = useListQuery()\n\n const titleField = useUseTitleField(collectionConfig)\n const { i18n, t } = useTranslation()\n\n const {\n breakpoints: { s: smallBreak },\n } = useWindowInfo()\n\n const searchLabel =\n (titleField &&\n getTranslation(\n 'label' in titleField &&\n (typeof titleField.label === 'string' || typeof titleField.label === 'object')\n ? titleField.label\n : 'name' in titleField\n ? titleField.name\n : null,\n i18n,\n )) ??\n 'ID'\n\n const listSearchableFields = getTextFieldsToBeSearched(\n collectionConfig.admin.listSearchableFields,\n collectionConfig.fields,\n i18n,\n )\n\n const searchLabelTranslated = useRef(\n t('general:searchBy', { label: getTranslation(searchLabel, i18n) }),\n )\n\n const hasWhereParam = useRef(Boolean(query?.where))\n\n const shouldInitializeWhereOpened = validateWhereQuery(query?.where)\n\n const [visibleDrawer, setVisibleDrawer] = useState<'columns' | 'group-by' | 'sort' | 'where'>(\n shouldInitializeWhereOpened ? 'where' : undefined,\n )\n\n useEffect(() => {\n if (hasWhereParam.current && !query?.where) {\n hasWhereParam.current = false\n } else if (query?.where) {\n hasWhereParam.current = true\n }\n }, [setVisibleDrawer, query?.where])\n\n useEffect(() => {\n if (listSearchableFields?.length > 0) {\n searchLabelTranslated.current = listSearchableFields.reduce(\n (placeholderText: string, field, i: number) => {\n const label =\n 'label' in field && field.label ? field.label : 'name' in field ? field.name : null\n\n if (i === 0) {\n return `${t('general:searchBy', {\n label: getTranslation(label, i18n),\n })}`\n }\n\n if (i === listSearchableFields.length - 1) {\n return `${placeholderText} ${t('general:or')} ${getTranslation(label, i18n)}`\n }\n\n return `${placeholderText}, ${getTranslation(label, i18n)}`\n },\n '',\n )\n } else {\n searchLabelTranslated.current = t('general:searchBy', {\n label: getTranslation(searchLabel, i18n),\n })\n }\n }, [t, listSearchableFields, i18n, searchLabel])\n\n return (\n <div className={baseClass}>\n {collectionConfig?.enableQueryPresets && !disableQueryPresets && (\n <QueryPresetBar\n activePreset={activePreset}\n collectionSlug={collectionSlug}\n queryPresetPermissions={queryPresetPermissions}\n />\n )}\n <SearchBar\n Actions={[\n !smallBreak && (\n <React.Fragment key=\"before-actions\">{beforeActions && beforeActions}</React.Fragment>\n ),\n enableColumns && (\n <Pill\n aria-controls={`${baseClass}-columns`}\n aria-expanded={visibleDrawer === 'columns'}\n className={`${baseClass}__toggle-columns`}\n icon={<ChevronIcon direction={visibleDrawer === 'columns' ? 'up' : 'down'} />}\n id=\"toggle-list-columns\"\n key=\"toggle-list-columns\"\n onClick={() => setVisibleDrawer(visibleDrawer !== 'columns' ? 'columns' : undefined)}\n pillStyle=\"light\"\n size=\"small\"\n >\n {t('general:columns')}\n </Pill>\n ),\n enableFilters && (\n <Pill\n aria-controls={`${baseClass}-where`}\n aria-expanded={visibleDrawer === 'where'}\n className={`${baseClass}__toggle-where`}\n icon={<ChevronIcon direction={visibleDrawer === 'where' ? 'up' : 'down'} />}\n id=\"toggle-list-filters\"\n key=\"toggle-list-filters\"\n onClick={() => setVisibleDrawer(visibleDrawer !== 'where' ? 'where' : undefined)}\n pillStyle=\"light\"\n size=\"small\"\n >\n {t('general:filters')}\n </Pill>\n ),\n enableSort && (\n <Pill\n aria-controls={`${baseClass}-sort`}\n aria-expanded={visibleDrawer === 'sort'}\n className={`${baseClass}__toggle-sort`}\n icon={<ChevronIcon />}\n id=\"toggle-list-sort\"\n key=\"toggle-list-sort\"\n onClick={() => setVisibleDrawer(visibleDrawer !== 'sort' ? 'sort' : undefined)}\n pillStyle=\"light\"\n size=\"small\"\n >\n {t('general:sort')}\n </Pill>\n ),\n collectionConfig.admin.groupBy && (\n <Pill\n aria-controls={`${baseClass}-group-by`}\n aria-expanded={visibleDrawer === 'group-by'}\n className={`${baseClass}__toggle-group-by`}\n icon={<ChevronIcon direction={visibleDrawer === 'group-by' ? 'up' : 'down'} />}\n id=\"toggle-group-by\"\n key=\"toggle-group-by\"\n onClick={() =>\n setVisibleDrawer(visibleDrawer !== 'group-by' ? 'group-by' : undefined)\n }\n pillStyle=\"light\"\n size=\"small\"\n >\n {t('general:groupByLabel', {\n label: '',\n })}\n </Pill>\n ),\n listMenuItems && Array.isArray(listMenuItems) && listMenuItems.length > 0 && (\n <Popup\n button={<Dots ariaLabel={t('general:moreOptions')} />}\n className={`${baseClass}__popup`}\n horizontalAlign=\"right\"\n id=\"list-menu\"\n key=\"list-menu\"\n size=\"small\"\n verticalAlign=\"bottom\"\n >\n <PopupList.ButtonGroup>\n {listMenuItems.map((item, i) => (\n <Fragment key={`list-menu-item-${i}`}>{item}</Fragment>\n ))}\n </PopupList.ButtonGroup>\n </Popup>\n ),\n ].filter(Boolean)}\n key={collectionSlug}\n label={searchLabelTranslated.current}\n onSearchChange={handleSearchChange}\n searchQueryParam={query?.search}\n />\n {enableColumns && (\n <AnimateHeight\n className={`${baseClass}__columns`}\n height={visibleDrawer === 'columns' ? 'auto' : 0}\n id={`${baseClass}-columns`}\n >\n <ColumnSelector collectionSlug={collectionConfig.slug} />\n </AnimateHeight>\n )}\n <AnimateHeight\n className={`${baseClass}__where`}\n height={visibleDrawer === 'where' ? 'auto' : 0}\n id={`${baseClass}-where`}\n >\n <WhereBuilder\n collectionPluralLabel={collectionConfig?.labels?.plural}\n collectionSlug={collectionConfig.slug}\n fields={collectionConfig?.fields}\n renderedFilters={renderedFilters}\n resolvedFilterOptions={resolvedFilterOptions}\n />\n </AnimateHeight>\n {collectionConfig.admin.groupBy && (\n <AnimateHeight\n className={`${baseClass}__group-by`}\n height={visibleDrawer === 'group-by' ? 'auto' : 0}\n id={`${baseClass}-group-by`}\n >\n <GroupByBuilder collectionSlug={collectionConfig.slug} fields={collectionConfig.fields} />\n </AnimateHeight>\n )}\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"ListEmptyTrashButton.d.ts","sourceRoot":"","sources":["../../../../src/elements/ListHeader/TitleActions/ListEmptyTrashButton.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAA;AAMrD,OAAO,KAAK,MAAM,OAAO,CAAA;AAczB,wBAAgB,oBAAoB,CAAC,EACnC,gBAAgB,EAChB,mBAAmB,GACpB,EAAE;IACD,gBAAgB,EAAE,sBAAsB,CAAA;IACxC,mBAAmB,EAAE,OAAO,CAAA;CAC7B,qBAyKA"}
1
+ {"version":3,"file":"ListEmptyTrashButton.d.ts","sourceRoot":"","sources":["../../../../src/elements/ListHeader/TitleActions/ListEmptyTrashButton.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAA;AAOrD,OAAO,KAAK,MAAM,OAAO,CAAA;AAczB,wBAAgB,oBAAoB,CAAC,EACnC,gBAAgB,EAChB,mBAAmB,GACpB,EAAE;IACD,gBAAgB,EAAE,sBAAsB,CAAA;IACxC,mBAAmB,EAAE,OAAO,CAAA;CAC7B,qBA+KA"}
@@ -4,6 +4,7 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
4
4
  import { useModal } from '@faceless-ui/modal';
5
5
  import { getTranslation } from '@payloadcms/translations';
6
6
  import { useRouter, useSearchParams } from 'next/navigation.js';
7
+ import { formatAdminURL } from 'payload/shared';
7
8
  import * as qs from 'qs-esm';
8
9
  import React from 'react';
9
10
  import { toast } from 'sonner';
@@ -55,7 +56,10 @@ export function ListEmptyTrashButton({
55
56
  addQueryPrefix: true
56
57
  });
57
58
  try {
58
- const res = await requests.get(`${config.serverURL}${config.routes.api}/${collectionConfig.slug}${queryString}`, {
59
+ const res = await requests.get(formatAdminURL({
60
+ apiRoute: config.routes.api,
61
+ path: `/${collectionConfig.slug}${queryString}`
62
+ }), {
59
63
  headers: {
60
64
  'Accept-Language': i18n.language,
61
65
  'Content-Type': 'application/json'
@@ -89,7 +93,10 @@ export function ListEmptyTrashButton({
89
93
  }, {
90
94
  addQueryPrefix: true
91
95
  });
92
- const res_0 = await requests.delete(`${config.serverURL}${config.routes.api}/${slug}${queryString_0}`, {
96
+ const res_0 = await requests.delete(formatAdminURL({
97
+ apiRoute: config.routes.api,
98
+ path: `/${slug}${queryString_0}`
99
+ }), {
93
100
  headers: {
94
101
  'Accept-Language': i18n.language,
95
102
  'Content-Type': 'application/json'
@@ -1 +1 @@
1
- {"version":3,"file":"ListEmptyTrashButton.js","names":["useModal","getTranslation","useRouter","useSearchParams","qs","React","toast","useConfig","useLocale","useRouteCache","useTranslation","requests","Button","ConfirmationModal","Translation","confirmEmptyTrashSlug","ListEmptyTrashButton","collectionConfig","hasDeletePermission","i18n","t","code","locale","config","openModal","router","searchParams","clearRouteCache","trashCount","setTrashCount","useState","useEffect","fetchTrashCount","queryString","stringify","depth","limit","trash","where","deletedAt","exists","addQueryPrefix","res","get","serverURL","routes","api","slug","headers","language","json","totalDocs","handleEmptyTrash","useCallback","labels","delete","deletedCount","docs","length","status","success","count","label","plural","errors","error","message","description","map","err","join","replace","Object","fromEntries","entries","page","_jsxs","Fragment","_jsx","buttonStyle","disabled","id","onClick","size","body","elements","0","children","1","i18nKey","variables","singular","confirmingLabel","heading","modalSlug","onConfirm"],"sources":["../../../../src/elements/ListHeader/TitleActions/ListEmptyTrashButton.tsx"],"sourcesContent":["'use client'\nimport type { ClientCollectionConfig } from 'payload'\n\nimport { useModal } from '@faceless-ui/modal'\nimport { getTranslation } from '@payloadcms/translations'\nimport { useRouter, useSearchParams } from 'next/navigation.js'\nimport * as qs from 'qs-esm'\nimport React from 'react'\nimport { toast } from 'sonner'\n\nimport { useConfig } from '../../../providers/Config/index.js'\nimport { useLocale } from '../../../providers/Locale/index.js'\nimport { useRouteCache } from '../../../providers/RouteCache/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 { Translation } from '../../Translation/index.js'\n\nconst confirmEmptyTrashSlug = 'confirm-empty-trash'\n\nexport function ListEmptyTrashButton({\n collectionConfig,\n hasDeletePermission,\n}: {\n collectionConfig: ClientCollectionConfig\n hasDeletePermission: boolean\n}) {\n const { i18n, t } = useTranslation()\n const { code: locale } = useLocale()\n const { config } = useConfig()\n const { openModal } = useModal()\n const router = useRouter()\n const searchParams = useSearchParams()\n const { clearRouteCache } = useRouteCache()\n\n const [trashCount, setTrashCount] = React.useState<null | number>(null)\n\n React.useEffect(() => {\n const fetchTrashCount = async () => {\n const queryString = qs.stringify(\n {\n depth: 0,\n limit: 0,\n locale,\n trash: true,\n where: {\n deletedAt: {\n exists: true,\n },\n },\n },\n { addQueryPrefix: true },\n )\n\n try {\n const res = await requests.get(\n `${config.serverURL}${config.routes.api}/${collectionConfig.slug}${queryString}`,\n {\n headers: {\n 'Accept-Language': i18n.language,\n 'Content-Type': 'application/json',\n },\n },\n )\n\n const json = await res.json()\n setTrashCount(json?.totalDocs ?? 0)\n } catch {\n setTrashCount(0)\n }\n }\n\n void fetchTrashCount()\n }, [collectionConfig.slug, config, i18n.language, locale])\n\n const handleEmptyTrash = React.useCallback(async () => {\n if (!hasDeletePermission) {\n return\n }\n\n const { slug, labels } = collectionConfig\n\n const queryString = qs.stringify(\n {\n limit: 0,\n locale,\n trash: true,\n where: {\n deletedAt: {\n exists: true,\n },\n },\n },\n { addQueryPrefix: true },\n )\n\n const res = await requests.delete(\n `${config.serverURL}${config.routes.api}/${slug}${queryString}`,\n {\n headers: {\n 'Accept-Language': i18n.language,\n 'Content-Type': 'application/json',\n },\n },\n )\n\n try {\n const json = await res.json()\n const deletedCount = json?.docs?.length || 0\n\n if (res.status < 400) {\n toast.success(\n t('general:permanentlyDeletedCountSuccessfully', {\n count: deletedCount,\n label: getTranslation(labels?.plural, i18n),\n }),\n )\n }\n\n if (json?.errors?.length > 0) {\n toast.error(json.message, {\n description: json.errors.map((err) => err.message).join('\\n'),\n })\n }\n\n router.replace(\n qs.stringify(\n {\n ...Object.fromEntries(searchParams.entries()),\n page: '1',\n },\n { addQueryPrefix: true },\n ),\n )\n\n clearRouteCache()\n } catch {\n toast.error(t('error:unknown'))\n }\n }, [\n collectionConfig,\n config,\n hasDeletePermission,\n i18n,\n t,\n locale,\n searchParams,\n router,\n clearRouteCache,\n ])\n\n return (\n <React.Fragment>\n <Button\n aria-label={t('general:emptyTrashLabel', {\n label: getTranslation(collectionConfig?.labels?.plural, i18n),\n })}\n buttonStyle=\"pill\"\n disabled={trashCount === 0}\n id=\"empty-trash-button\"\n key=\"empty-trash-button\"\n onClick={() => {\n openModal(confirmEmptyTrashSlug)\n }}\n size=\"small\"\n >\n {t('general:emptyTrash')}\n </Button>\n <ConfirmationModal\n body={\n <Translation\n elements={{\n '0': ({ children }) => <strong>{children}</strong>,\n '1': ({ children }) => <strong>{children}</strong>,\n }}\n i18nKey=\"general:aboutToPermanentlyDeleteTrash\"\n t={t}\n variables={{\n count: trashCount ?? 0,\n label: getTranslation(\n trashCount === 1\n ? collectionConfig.labels?.singular\n : collectionConfig.labels?.plural,\n i18n,\n ),\n }}\n />\n }\n confirmingLabel={t('general:deleting')}\n heading={t('general:confirmDeletion')}\n modalSlug={confirmEmptyTrashSlug}\n onConfirm={handleEmptyTrash}\n />\n </React.Fragment>\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"ListEmptyTrashButton.js","names":["useModal","getTranslation","useRouter","useSearchParams","formatAdminURL","qs","React","toast","useConfig","useLocale","useRouteCache","useTranslation","requests","Button","ConfirmationModal","Translation","confirmEmptyTrashSlug","ListEmptyTrashButton","collectionConfig","hasDeletePermission","i18n","t","code","locale","config","openModal","router","searchParams","clearRouteCache","trashCount","setTrashCount","useState","useEffect","fetchTrashCount","queryString","stringify","depth","limit","trash","where","deletedAt","exists","addQueryPrefix","res","get","apiRoute","routes","api","path","slug","headers","language","json","totalDocs","handleEmptyTrash","useCallback","labels","delete","deletedCount","docs","length","status","success","count","label","plural","errors","error","message","description","map","err","join","replace","Object","fromEntries","entries","page","_jsxs","Fragment","_jsx","buttonStyle","disabled","id","onClick","size","body","elements","0","children","1","i18nKey","variables","singular","confirmingLabel","heading","modalSlug","onConfirm"],"sources":["../../../../src/elements/ListHeader/TitleActions/ListEmptyTrashButton.tsx"],"sourcesContent":["'use client'\nimport type { ClientCollectionConfig } from 'payload'\n\nimport { useModal } from '@faceless-ui/modal'\nimport { getTranslation } from '@payloadcms/translations'\nimport { useRouter, useSearchParams } from 'next/navigation.js'\nimport { formatAdminURL } from 'payload/shared'\nimport * as qs from 'qs-esm'\nimport React from 'react'\nimport { toast } from 'sonner'\n\nimport { useConfig } from '../../../providers/Config/index.js'\nimport { useLocale } from '../../../providers/Locale/index.js'\nimport { useRouteCache } from '../../../providers/RouteCache/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 { Translation } from '../../Translation/index.js'\n\nconst confirmEmptyTrashSlug = 'confirm-empty-trash'\n\nexport function ListEmptyTrashButton({\n collectionConfig,\n hasDeletePermission,\n}: {\n collectionConfig: ClientCollectionConfig\n hasDeletePermission: boolean\n}) {\n const { i18n, t } = useTranslation()\n const { code: locale } = useLocale()\n const { config } = useConfig()\n const { openModal } = useModal()\n const router = useRouter()\n const searchParams = useSearchParams()\n const { clearRouteCache } = useRouteCache()\n\n const [trashCount, setTrashCount] = React.useState<null | number>(null)\n\n React.useEffect(() => {\n const fetchTrashCount = async () => {\n const queryString = qs.stringify(\n {\n depth: 0,\n limit: 0,\n locale,\n trash: true,\n where: {\n deletedAt: {\n exists: true,\n },\n },\n },\n { addQueryPrefix: true },\n )\n\n try {\n const res = await requests.get(\n formatAdminURL({\n apiRoute: config.routes.api,\n path: `/${collectionConfig.slug}${queryString}`,\n }),\n {\n headers: {\n 'Accept-Language': i18n.language,\n 'Content-Type': 'application/json',\n },\n },\n )\n\n const json = await res.json()\n setTrashCount(json?.totalDocs ?? 0)\n } catch {\n setTrashCount(0)\n }\n }\n\n void fetchTrashCount()\n }, [collectionConfig.slug, config, i18n.language, locale])\n\n const handleEmptyTrash = React.useCallback(async () => {\n if (!hasDeletePermission) {\n return\n }\n\n const { slug, labels } = collectionConfig\n\n const queryString = qs.stringify(\n {\n limit: 0,\n locale,\n trash: true,\n where: {\n deletedAt: {\n exists: true,\n },\n },\n },\n { addQueryPrefix: true },\n )\n\n const res = await requests.delete(\n formatAdminURL({\n apiRoute: config.routes.api,\n path: `/${slug}${queryString}`,\n }),\n {\n headers: {\n 'Accept-Language': i18n.language,\n 'Content-Type': 'application/json',\n },\n },\n )\n\n try {\n const json = await res.json()\n const deletedCount = json?.docs?.length || 0\n\n if (res.status < 400) {\n toast.success(\n t('general:permanentlyDeletedCountSuccessfully', {\n count: deletedCount,\n label: getTranslation(labels?.plural, i18n),\n }),\n )\n }\n\n if (json?.errors?.length > 0) {\n toast.error(json.message, {\n description: json.errors.map((err) => err.message).join('\\n'),\n })\n }\n\n router.replace(\n qs.stringify(\n {\n ...Object.fromEntries(searchParams.entries()),\n page: '1',\n },\n { addQueryPrefix: true },\n ),\n )\n\n clearRouteCache()\n } catch {\n toast.error(t('error:unknown'))\n }\n }, [\n collectionConfig,\n config,\n hasDeletePermission,\n i18n,\n t,\n locale,\n searchParams,\n router,\n clearRouteCache,\n ])\n\n return (\n <React.Fragment>\n <Button\n aria-label={t('general:emptyTrashLabel', {\n label: getTranslation(collectionConfig?.labels?.plural, i18n),\n })}\n buttonStyle=\"pill\"\n disabled={trashCount === 0}\n id=\"empty-trash-button\"\n key=\"empty-trash-button\"\n onClick={() => {\n openModal(confirmEmptyTrashSlug)\n }}\n size=\"small\"\n >\n {t('general:emptyTrash')}\n </Button>\n <ConfirmationModal\n body={\n <Translation\n elements={{\n '0': ({ children }) => <strong>{children}</strong>,\n '1': ({ children }) => <strong>{children}</strong>,\n }}\n i18nKey=\"general:aboutToPermanentlyDeleteTrash\"\n t={t}\n variables={{\n count: trashCount ?? 0,\n label: getTranslation(\n trashCount === 1\n ? collectionConfig.labels?.singular\n : collectionConfig.labels?.plural,\n i18n,\n ),\n }}\n />\n }\n confirmingLabel={t('general:deleting')}\n heading={t('general:confirmDeletion')}\n modalSlug={confirmEmptyTrashSlug}\n onConfirm={handleEmptyTrash}\n />\n </React.Fragment>\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/Logout/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAA;AASzB,eAAO,MAAM,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC;IAC5B;;;;OAIG;IACH,IAAI,CAAC,EAAE,KAAK,CAAC,aAAa,CAAA;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB,CA4BA,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/Logout/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAA;AASzB,eAAO,MAAM,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC;IAC5B;;;;OAIG;IACH,IAAI,CAAC,EAAE,KAAK,CAAC,aAAa,CAAA;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB,CA0BA,CAAA"}
@@ -10,7 +10,7 @@ import { useTranslation } from '../../providers/Translation/index.js';
10
10
  import { Link } from '../Link/index.js';
11
11
  const baseClass = 'nav';
12
12
  export const Logout = t0 => {
13
- const $ = _c(6);
13
+ const $ = _c(5);
14
14
  const {
15
15
  tabIndex: t1
16
16
  } = t0;
@@ -23,8 +23,7 @@ export const Logout = t0 => {
23
23
  } = useConfig();
24
24
  const {
25
25
  admin: t2,
26
- routes: t3,
27
- serverURL
26
+ routes: t3
28
27
  } = config;
29
28
  const {
30
29
  routes: t4
@@ -36,14 +35,13 @@ export const Logout = t0 => {
36
35
  admin: adminRoute
37
36
  } = t3;
38
37
  let t5;
39
- if ($[0] !== adminRoute || $[1] !== logoutRoute || $[2] !== serverURL || $[3] !== t || $[4] !== tabIndex) {
38
+ if ($[0] !== adminRoute || $[1] !== logoutRoute || $[2] !== t || $[3] !== tabIndex) {
40
39
  t5 = _jsx(Link, {
41
40
  "aria-label": t("authentication:logOut"),
42
41
  className: `${baseClass}__log-out`,
43
42
  href: formatAdminURL({
44
43
  adminRoute,
45
- path: logoutRoute,
46
- serverURL
44
+ path: logoutRoute
47
45
  }),
48
46
  prefetch: false,
49
47
  tabIndex,
@@ -52,12 +50,11 @@ export const Logout = t0 => {
52
50
  });
53
51
  $[0] = adminRoute;
54
52
  $[1] = logoutRoute;
55
- $[2] = serverURL;
56
- $[3] = t;
57
- $[4] = tabIndex;
58
- $[5] = t5;
53
+ $[2] = t;
54
+ $[3] = tabIndex;
55
+ $[4] = t5;
59
56
  } else {
60
- t5 = $[5];
57
+ t5 = $[4];
61
58
  }
62
59
  return t5;
63
60
  };
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["c","_c","formatAdminURL","React","LogOutIcon","useConfig","useTranslation","Link","baseClass","Logout","t0","$","tabIndex","t1","undefined","t","config","admin","t2","routes","t3","serverURL","t4","logout","logoutRoute","adminRoute","t5","_jsx","className","href","path","prefetch","title","children"],"sources":["../../../src/elements/Logout/index.tsx"],"sourcesContent":["'use client'\nimport { formatAdminURL } from 'payload/shared'\nimport React from 'react'\n\nimport { LogOutIcon } from '../../icons/LogOut/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { Link } from '../Link/index.js'\n\nconst baseClass = 'nav'\n\nexport const Logout: React.FC<{\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 Link?: React.ComponentType\n tabIndex?: number\n}> = ({ tabIndex = 0 }) => {\n const { t } = useTranslation()\n const { config } = useConfig()\n\n const {\n admin: {\n routes: { logout: logoutRoute },\n },\n routes: { admin: adminRoute },\n serverURL,\n } = config\n\n return (\n <Link\n aria-label={t('authentication:logOut')}\n className={`${baseClass}__log-out`}\n href={formatAdminURL({\n adminRoute,\n path: logoutRoute,\n serverURL,\n })}\n prefetch={false}\n tabIndex={tabIndex}\n title={t('authentication:logOut')}\n >\n <LogOutIcon />\n </Link>\n )\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;;AACA,SAASC,cAAc,QAAQ;AAC/B,OAAOC,KAAA,MAAW;AAElB,SAASC,UAAU,QAAQ;AAC3B,SAASC,SAAS,QAAQ;AAC1B,SAASC,cAAc,QAAQ;AAC/B,SAASC,IAAI,QAAQ;AAErB,MAAMC,SAAA,GAAY;AAElB,OAAO,MAAMC,MAAA,GAQRC,EAAA;EAAA,MAAAC,CAAA,GAAAV,EAAA;EAAC;IAAAW,QAAA,EAAAC;EAAA,IAAAH,EAAgB;EAAd,MAAAE,QAAA,GAAAC,EAAY,KAAAC,SAAA,OAAZD,EAAY;EAClB;IAAAE;EAAA,IAAcT,cAAA;EACd;IAAAU;EAAA,IAAmBX,SAAA;EAEnB;IAAAY,KAAA,EAAAC,EAAA;IAAAC,MAAA,EAAAC,EAAA;IAAAC;EAAA,IAMIL,MAAA;EALK;IAAAG,MAAA,EAAAG;EAAA,IAAAJ,EAEN;EADS;IAAAK,MAAA,EAAAC;EAAA,IAAAF,EAAuB;EAEzB;IAAAL,KAAA,EAAAQ;EAAA,IAAAL,EAAqB;EAAA,IAAAM,EAAA;EAAA,IAAAf,CAAA,QAAAc,UAAA,IAAAd,CAAA,QAAAa,WAAA,IAAAb,CAAA,QAAAU,SAAA,IAAAV,CAAA,QAAAI,CAAA,IAAAJ,CAAA,QAAAC,QAAA;IAK7Bc,EAAA,GAAAC,IAAA,CAAApB,IAAA;MAAA,cACcQ,CAAA,CAAE;MAAAa,SAAA,EACH,GAAApB,SAAA,WAAuB;MAAAqB,IAAA,EAC5B3B,cAAA;QAAAuB,UAAA;QAAAK,IAAA,EAEEN,WAAA;QAAAH;MAAA,CAER;MAAAU,QAAA;MAAAnB,QAAA;MAAAoB,KAAA,EAGOjB,CAAA,CAAE;MAAAkB,QAAA,EAETN,IAAA,CAAAvB,UAAA,IAAC;IAAA,C;;;;;;;;;;SAZHsB,E;CAeJ","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["c","_c","formatAdminURL","React","LogOutIcon","useConfig","useTranslation","Link","baseClass","Logout","t0","$","tabIndex","t1","undefined","t","config","admin","t2","routes","t3","t4","logout","logoutRoute","adminRoute","t5","_jsx","className","href","path","prefetch","title","children"],"sources":["../../../src/elements/Logout/index.tsx"],"sourcesContent":["'use client'\nimport { formatAdminURL } from 'payload/shared'\nimport React from 'react'\n\nimport { LogOutIcon } from '../../icons/LogOut/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { Link } from '../Link/index.js'\n\nconst baseClass = 'nav'\n\nexport const Logout: React.FC<{\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 Link?: React.ComponentType\n tabIndex?: number\n}> = ({ tabIndex = 0 }) => {\n const { t } = useTranslation()\n const { config } = useConfig()\n\n const {\n admin: {\n routes: { logout: logoutRoute },\n },\n routes: { admin: adminRoute },\n } = config\n\n return (\n <Link\n aria-label={t('authentication:logOut')}\n className={`${baseClass}__log-out`}\n href={formatAdminURL({\n adminRoute,\n path: logoutRoute,\n })}\n prefetch={false}\n tabIndex={tabIndex}\n title={t('authentication:logOut')}\n >\n <LogOutIcon />\n </Link>\n )\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;;AACA,SAASC,cAAc,QAAQ;AAC/B,OAAOC,KAAA,MAAW;AAElB,SAASC,UAAU,QAAQ;AAC3B,SAASC,SAAS,QAAQ;AAC1B,SAASC,cAAc,QAAQ;AAC/B,SAASC,IAAI,QAAQ;AAErB,MAAMC,SAAA,GAAY;AAElB,OAAO,MAAMC,MAAA,GAQRC,EAAA;EAAA,MAAAC,CAAA,GAAAV,EAAA;EAAC;IAAAW,QAAA,EAAAC;EAAA,IAAAH,EAAgB;EAAd,MAAAE,QAAA,GAAAC,EAAY,KAAAC,SAAA,OAAZD,EAAY;EAClB;IAAAE;EAAA,IAAcT,cAAA;EACd;IAAAU;EAAA,IAAmBX,SAAA;EAEnB;IAAAY,KAAA,EAAAC,EAAA;IAAAC,MAAA,EAAAC;EAAA,IAKIJ,MAAA;EAJK;IAAAG,MAAA,EAAAE;EAAA,IAAAH,EAEN;EADS;IAAAI,MAAA,EAAAC;EAAA,IAAAF,EAAuB;EAEzB;IAAAJ,KAAA,EAAAO;EAAA,IAAAJ,EAAqB;EAAA,IAAAK,EAAA;EAAA,IAAAd,CAAA,QAAAa,UAAA,IAAAb,CAAA,QAAAY,WAAA,IAAAZ,CAAA,QAAAI,CAAA,IAAAJ,CAAA,QAAAC,QAAA;IAI7Ba,EAAA,GAAAC,IAAA,CAAAnB,IAAA;MAAA,cACcQ,CAAA,CAAE;MAAAY,SAAA,EACH,GAAAnB,SAAA,WAAuB;MAAAoB,IAAA,EAC5B1B,cAAA;QAAAsB,UAAA;QAAAK,IAAA,EAEEN;MAAA,CACR;MAAAO,QAAA;MAAAlB,QAAA;MAAAmB,KAAA,EAGOhB,CAAA,CAAE;MAAAiB,QAAA,EAETN,IAAA,CAAAtB,UAAA,IAAC;IAAA,C;;;;;;;;;SAXHqB,E;CAcJ","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/PermanentlyDeleteButton/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,SAAS,CAAA;AAOxD,OAAO,KAAgC,MAAM,OAAO,CAAA;AAGpD,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAA;AAW9E,MAAM,MAAM,KAAK,GAAG;IAClB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,cAAc,EAAE,yBAAyB,CAAC,MAAM,CAAC,CAAA;IAC1D,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,QAAQ,CAAC,EAAE,yBAAyB,CAAC,UAAU,CAAC,CAAA;IACzD,QAAQ,CAAC,mBAAmB,CAAC,EAAE,OAAO,CAAA;IACtC,QAAQ,CAAC,aAAa,EAAE,yBAAyB,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,CAAA;IACvE,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CACxB,CAAA;AAED,eAAO,MAAM,uBAAuB,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CA2InD,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/PermanentlyDeleteButton/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,SAAS,CAAA;AAOxD,OAAO,KAAgC,MAAM,OAAO,CAAA;AAGpD,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAA;AAW9E,MAAM,MAAM,KAAK,GAAG;IAClB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,cAAc,EAAE,yBAAyB,CAAC,MAAM,CAAC,CAAA;IAC1D,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,QAAQ,CAAC,EAAE,yBAAyB,CAAC,UAAU,CAAC,CAAA;IACzD,QAAQ,CAAC,mBAAmB,CAAC,EAAE,OAAO,CAAA;IACtC,QAAQ,CAAC,aAAa,EAAE,yBAAyB,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,CAAA;IACvE,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CACxB,CAAA;AAED,eAAO,MAAM,uBAAuB,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAmJnD,CAAA"}
@@ -61,20 +61,25 @@ export const PermanentlyDeleteButton = props => {
61
61
  }, [t, title]);
62
62
  const handleDelete = useCallback(async () => {
63
63
  try {
64
- const url = `${serverURL}${api}/${collectionSlug}?${qs.stringify({
65
- trash: true,
66
- where: {
67
- and: [{
68
- id: {
69
- equals: id
70
- }
71
- }, {
72
- deletedAt: {
73
- exists: true
74
- }
75
- }]
76
- }
77
- })}`;
64
+ const url = formatAdminURL({
65
+ apiRoute: api,
66
+ path: `/${collectionSlug}${qs.stringify({
67
+ trash: true,
68
+ where: {
69
+ and: [{
70
+ id: {
71
+ equals: id
72
+ }
73
+ }, {
74
+ deletedAt: {
75
+ exists: true
76
+ }
77
+ }]
78
+ }
79
+ }, {
80
+ addQueryPrefix: true
81
+ })}`
82
+ });
78
83
  const res = await requests.delete(url, {
79
84
  headers: {
80
85
  'Accept-Language': i18n.language,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["useModal","getTranslation","useRouter","formatAdminURL","qs","React","Fragment","useCallback","toast","useConfig","useDocumentTitle","useRouteTransition","useTranslation","requests","Button","ConfirmationModal","Translation","PermanentlyDeleteButton","props","id","buttonId","collectionSlug","onDelete","redirectAfterDelete","singularLabel","title","titleFromProps","config","routes","admin","adminRoute","api","serverURL","getEntityConfig","collectionConfig","router","i18n","t","startRouteTransition","openModal","modalSlug","addDefaultError","error","handleDelete","url","stringify","trash","where","and","equals","deletedAt","exists","res","delete","headers","language","json","status","success","label","message","push","path","errors","forEach","_err","_jsxs","_jsx","buttonStyle","onClick","body","elements","1","children","i18nKey","variables","confirmingLabel","heading","onConfirm"],"sources":["../../../src/elements/PermanentlyDeleteButton/index.tsx"],"sourcesContent":["'use client'\n\nimport type { SanitizedCollectionConfig } from 'payload'\n\nimport { useModal } from '@faceless-ui/modal'\nimport { getTranslation } from '@payloadcms/translations'\nimport { useRouter } from 'next/navigation.js'\nimport { formatAdminURL } from 'payload/shared'\nimport * as qs from 'qs-esm'\nimport React, { Fragment, useCallback } from 'react'\nimport { toast } from 'sonner'\n\nimport type { DocumentDrawerContextType } from '../DocumentDrawer/Provider.js'\n\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useDocumentTitle } from '../../providers/DocumentTitle/index.js'\nimport { useRouteTransition } from '../../providers/RouteTransition/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 { Translation } from '../Translation/index.js'\n\nexport type Props = {\n readonly buttonId?: string\n readonly collectionSlug: SanitizedCollectionConfig['slug']\n readonly id?: string\n readonly onDelete?: DocumentDrawerContextType['onDelete']\n readonly redirectAfterDelete?: boolean\n readonly singularLabel: SanitizedCollectionConfig['labels']['singular']\n readonly title?: string\n}\n\nexport const PermanentlyDeleteButton: React.FC<Props> = (props) => {\n const {\n id,\n buttonId,\n collectionSlug,\n onDelete,\n redirectAfterDelete = true,\n singularLabel,\n title: titleFromProps,\n } = props\n\n const {\n config: {\n routes: { admin: adminRoute, api },\n serverURL,\n },\n getEntityConfig,\n } = useConfig()\n\n const collectionConfig = getEntityConfig({ collectionSlug })\n const router = useRouter()\n const { i18n, t } = useTranslation()\n const { title } = useDocumentTitle()\n const { startRouteTransition } = useRouteTransition()\n const { openModal } = useModal()\n\n const modalSlug = `perma-delete-${id}`\n\n const addDefaultError = useCallback(() => {\n toast.error(t('error:deletingTitle', { title }))\n }, [t, title])\n\n const handleDelete = useCallback(async () => {\n try {\n const url = `${serverURL}${api}/${collectionSlug}?${qs.stringify({\n trash: true,\n where: {\n and: [{ id: { equals: id } }, { deletedAt: { exists: true } }],\n },\n })}`\n\n const res = await requests.delete(url, {\n headers: {\n 'Accept-Language': i18n.language,\n 'Content-Type': 'application/json',\n },\n })\n\n const json = await res.json()\n\n if (res.status < 400) {\n toast.success(\n t('general:titleDeleted', {\n label: getTranslation(singularLabel, i18n),\n title,\n }) || json.message,\n )\n\n if (redirectAfterDelete) {\n return startRouteTransition(() =>\n router.push(\n formatAdminURL({\n adminRoute,\n path: `/collections/${collectionSlug}/trash`,\n serverURL,\n }),\n ),\n )\n }\n\n if (typeof onDelete === 'function') {\n await onDelete({ id, collectionConfig })\n }\n\n return\n }\n\n if (json.errors) {\n json.errors.forEach((error) => toast.error(error.message))\n } else {\n addDefaultError()\n }\n } catch (_err) {\n addDefaultError()\n }\n }, [\n serverURL,\n api,\n collectionSlug,\n id,\n t,\n singularLabel,\n addDefaultError,\n i18n,\n title,\n router,\n adminRoute,\n redirectAfterDelete,\n onDelete,\n collectionConfig,\n startRouteTransition,\n ])\n\n if (id) {\n return (\n <Fragment>\n <Button\n buttonStyle=\"secondary\"\n id={buttonId}\n onClick={() => {\n openModal(modalSlug)\n }}\n >\n {t('general:permanentlyDelete')}\n </Button>\n <ConfirmationModal\n body={\n <Translation\n elements={{\n '1': ({ children }) => <strong>{children}</strong>,\n }}\n i18nKey=\"general:aboutToPermanentlyDelete\"\n t={t}\n variables={{\n label: getTranslation(singularLabel, i18n),\n title: titleFromProps || title || id,\n }}\n />\n }\n confirmingLabel={t('general:deleting')}\n heading={t('general:confirmDeletion')}\n modalSlug={modalSlug}\n onConfirm={handleDelete}\n />\n </Fragment>\n )\n }\n\n return null\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["useModal","getTranslation","useRouter","formatAdminURL","qs","React","Fragment","useCallback","toast","useConfig","useDocumentTitle","useRouteTransition","useTranslation","requests","Button","ConfirmationModal","Translation","PermanentlyDeleteButton","props","id","buttonId","collectionSlug","onDelete","redirectAfterDelete","singularLabel","title","titleFromProps","config","routes","admin","adminRoute","api","serverURL","getEntityConfig","collectionConfig","router","i18n","t","startRouteTransition","openModal","modalSlug","addDefaultError","error","handleDelete","url","apiRoute","path","stringify","trash","where","and","equals","deletedAt","exists","addQueryPrefix","res","delete","headers","language","json","status","success","label","message","push","errors","forEach","_err","_jsxs","_jsx","buttonStyle","onClick","body","elements","1","children","i18nKey","variables","confirmingLabel","heading","onConfirm"],"sources":["../../../src/elements/PermanentlyDeleteButton/index.tsx"],"sourcesContent":["'use client'\n\nimport type { SanitizedCollectionConfig } from 'payload'\n\nimport { useModal } from '@faceless-ui/modal'\nimport { getTranslation } from '@payloadcms/translations'\nimport { useRouter } from 'next/navigation.js'\nimport { formatAdminURL } from 'payload/shared'\nimport * as qs from 'qs-esm'\nimport React, { Fragment, useCallback } from 'react'\nimport { toast } from 'sonner'\n\nimport type { DocumentDrawerContextType } from '../DocumentDrawer/Provider.js'\n\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useDocumentTitle } from '../../providers/DocumentTitle/index.js'\nimport { useRouteTransition } from '../../providers/RouteTransition/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 { Translation } from '../Translation/index.js'\n\nexport type Props = {\n readonly buttonId?: string\n readonly collectionSlug: SanitizedCollectionConfig['slug']\n readonly id?: string\n readonly onDelete?: DocumentDrawerContextType['onDelete']\n readonly redirectAfterDelete?: boolean\n readonly singularLabel: SanitizedCollectionConfig['labels']['singular']\n readonly title?: string\n}\n\nexport const PermanentlyDeleteButton: React.FC<Props> = (props) => {\n const {\n id,\n buttonId,\n collectionSlug,\n onDelete,\n redirectAfterDelete = true,\n singularLabel,\n title: titleFromProps,\n } = props\n\n const {\n config: {\n routes: { admin: adminRoute, api },\n serverURL,\n },\n getEntityConfig,\n } = useConfig()\n\n const collectionConfig = getEntityConfig({ collectionSlug })\n const router = useRouter()\n const { i18n, t } = useTranslation()\n const { title } = useDocumentTitle()\n const { startRouteTransition } = useRouteTransition()\n const { openModal } = useModal()\n\n const modalSlug = `perma-delete-${id}`\n\n const addDefaultError = useCallback(() => {\n toast.error(t('error:deletingTitle', { title }))\n }, [t, title])\n\n const handleDelete = useCallback(async () => {\n try {\n const url = formatAdminURL({\n apiRoute: api,\n path: `/${collectionSlug}${qs.stringify(\n {\n trash: true,\n where: {\n and: [{ id: { equals: id } }, { deletedAt: { exists: true } }],\n },\n },\n {\n addQueryPrefix: true,\n },\n )}`,\n })\n\n const res = await requests.delete(url, {\n headers: {\n 'Accept-Language': i18n.language,\n 'Content-Type': 'application/json',\n },\n })\n\n const json = await res.json()\n\n if (res.status < 400) {\n toast.success(\n t('general:titleDeleted', {\n label: getTranslation(singularLabel, i18n),\n title,\n }) || json.message,\n )\n\n if (redirectAfterDelete) {\n return startRouteTransition(() =>\n router.push(\n formatAdminURL({\n adminRoute,\n path: `/collections/${collectionSlug}/trash`,\n serverURL,\n }),\n ),\n )\n }\n\n if (typeof onDelete === 'function') {\n await onDelete({ id, collectionConfig })\n }\n\n return\n }\n\n if (json.errors) {\n json.errors.forEach((error) => toast.error(error.message))\n } else {\n addDefaultError()\n }\n } catch (_err) {\n addDefaultError()\n }\n }, [\n serverURL,\n api,\n collectionSlug,\n id,\n t,\n singularLabel,\n addDefaultError,\n i18n,\n title,\n router,\n adminRoute,\n redirectAfterDelete,\n onDelete,\n collectionConfig,\n startRouteTransition,\n ])\n\n if (id) {\n return (\n <Fragment>\n <Button\n buttonStyle=\"secondary\"\n id={buttonId}\n onClick={() => {\n openModal(modalSlug)\n }}\n >\n {t('general:permanentlyDelete')}\n </Button>\n <ConfirmationModal\n body={\n <Translation\n elements={{\n '1': ({ children }) => <strong>{children}</strong>,\n }}\n i18nKey=\"general:aboutToPermanentlyDelete\"\n t={t}\n variables={{\n label: getTranslation(singularLabel, i18n),\n title: titleFromProps || title || id,\n }}\n />\n }\n confirmingLabel={t('general:deleting')}\n heading={t('general:confirmDeletion')}\n modalSlug={modalSlug}\n onConfirm={handleDelete}\n />\n </Fragment>\n )\n }\n\n return null\n}\n"],"mappings":"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","ignoreList":[]}
@@ -47,6 +47,7 @@
47
47
  &:hover,
48
48
  &:focus-visible,
49
49
  &:focus-within {
50
+ outline: none;
50
51
  background-color: var(--popup-button-highlight);
51
52
  }
52
53
  }
@@ -7,7 +7,7 @@ export type PopupTriggerProps = {
7
7
  className?: string;
8
8
  disabled?: boolean;
9
9
  noBackground?: boolean;
10
- setActive: (active: boolean) => void;
10
+ setActive: (active: boolean, viaKeyboard?: boolean) => void;
11
11
  size?: 'large' | 'medium' | 'small' | 'xsmall';
12
12
  };
13
13
  export declare const PopupTrigger: React.FC<PopupTriggerProps>;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/elements/Popup/PopupTrigger/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,cAAc,CAAA;AAIrB,MAAM,MAAM,iBAAiB,GAAG;IAC9B,MAAM,EAAE,OAAO,CAAA;IACf,MAAM,EAAE,KAAK,CAAC,SAAS,CAAA;IACvB,UAAU,EAAE,QAAQ,GAAG,SAAS,GAAG,MAAM,CAAA;IACzC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,SAAS,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAA;IACpC,IAAI,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,CAAA;CAC/C,CAAA;AAED,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CAwDpD,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/elements/Popup/PopupTrigger/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,cAAc,CAAA;AAIrB,MAAM,MAAM,iBAAiB,GAAG;IAC9B,MAAM,EAAE,OAAO,CAAA;IACf,MAAM,EAAE,KAAK,CAAC,SAAS,CAAA;IACvB,UAAU,EAAE,QAAQ,GAAG,SAAS,GAAG,MAAM,CAAA;IACzC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,SAAS,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,WAAW,CAAC,EAAE,OAAO,KAAK,IAAI,CAAA;IAC3D,IAAI,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,CAAA;CAC/C,CAAA;AAED,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CAuDpD,CAAA"}