@payloadcms/ui 3.26.0-canary.bbb3083 → 3.27.0-canary.ecc3f49

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 (277) hide show
  1. package/dist/elements/AnimateHeight/index.scss +7 -5
  2. package/dist/elements/AppHeader/index.d.ts.map +1 -1
  3. package/dist/elements/AppHeader/index.js +1 -1
  4. package/dist/elements/AppHeader/index.js.map +1 -1
  5. package/dist/elements/BulkUpload/EditForm/index.d.ts.map +1 -1
  6. package/dist/elements/BulkUpload/EditForm/index.js +1 -1
  7. package/dist/elements/BulkUpload/EditForm/index.js.map +1 -1
  8. package/dist/elements/BulkUpload/FormsManager/index.d.ts.map +1 -1
  9. package/dist/elements/BulkUpload/FormsManager/index.js +37 -21
  10. package/dist/elements/BulkUpload/FormsManager/index.js.map +1 -1
  11. package/dist/elements/ColumnSelector/index.js +1 -1
  12. package/dist/elements/ColumnSelector/index.js.map +1 -1
  13. package/dist/elements/ColumnSelector/index.scss +2 -3
  14. package/dist/elements/DeleteDocument/index.d.ts.map +1 -1
  15. package/dist/elements/DeleteDocument/index.js +2 -3
  16. package/dist/elements/DeleteDocument/index.js.map +1 -1
  17. package/dist/elements/DeleteMany/index.d.ts.map +1 -1
  18. package/dist/elements/DeleteMany/index.js +1 -1
  19. package/dist/elements/DeleteMany/index.js.map +1 -1
  20. package/dist/elements/DocumentControls/index.d.ts.map +1 -1
  21. package/dist/elements/DocumentControls/index.js +1 -1
  22. package/dist/elements/DocumentControls/index.js.map +1 -1
  23. package/dist/elements/DocumentDrawer/DrawerContent.d.ts.map +1 -1
  24. package/dist/elements/DocumentDrawer/DrawerContent.js +2 -1
  25. package/dist/elements/DocumentDrawer/DrawerContent.js.map +1 -1
  26. package/dist/elements/DocumentDrawer/types.d.ts +4 -0
  27. package/dist/elements/DocumentDrawer/types.d.ts.map +1 -1
  28. package/dist/elements/DocumentDrawer/types.js.map +1 -1
  29. package/dist/elements/DuplicateDocument/index.d.ts.map +1 -1
  30. package/dist/elements/DuplicateDocument/index.js +1 -1
  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 +1 -1
  34. package/dist/elements/EditMany/DrawerContent.js.map +1 -1
  35. package/dist/elements/FieldSelect/index.js +1 -1
  36. package/dist/elements/FieldSelect/index.js.map +1 -1
  37. package/dist/elements/ListControls/ActiveListPreset/index.d.ts +8 -0
  38. package/dist/elements/ListControls/ActiveListPreset/index.d.ts.map +1 -0
  39. package/dist/elements/ListControls/ActiveListPreset/index.js +102 -0
  40. package/dist/elements/ListControls/ActiveListPreset/index.js.map +1 -0
  41. package/dist/elements/ListControls/ActiveListPreset/index.scss +21 -0
  42. package/dist/elements/ListControls/index.d.ts +1 -24
  43. package/dist/elements/ListControls/index.d.ts.map +1 -1
  44. package/dist/elements/ListControls/index.js +110 -86
  45. package/dist/elements/ListControls/index.js.map +1 -1
  46. package/dist/elements/ListControls/index.scss +5 -9
  47. package/dist/elements/ListControls/types.d.ts +27 -0
  48. package/dist/elements/ListControls/types.d.ts.map +1 -0
  49. package/dist/elements/ListControls/types.js +2 -0
  50. package/dist/elements/ListControls/types.js.map +1 -0
  51. package/dist/elements/ListControls/useListPresets.d.ts +15 -0
  52. package/dist/elements/ListControls/useListPresets.d.ts.map +1 -0
  53. package/dist/elements/ListControls/useListPresets.js +251 -0
  54. package/dist/elements/ListControls/useListPresets.js.map +1 -0
  55. package/dist/elements/ListDrawer/DrawerContent.d.ts.map +1 -1
  56. package/dist/elements/ListDrawer/DrawerContent.js +4 -2
  57. package/dist/elements/ListDrawer/DrawerContent.js.map +1 -1
  58. package/dist/elements/ListDrawer/types.d.ts +3 -2
  59. package/dist/elements/ListDrawer/types.d.ts.map +1 -1
  60. package/dist/elements/ListDrawer/types.js.map +1 -1
  61. package/dist/elements/ListPresets/cells/AccessCell/index.d.ts +4 -0
  62. package/dist/elements/ListPresets/cells/AccessCell/index.d.ts.map +1 -0
  63. package/dist/elements/ListPresets/cells/AccessCell/index.js +25 -0
  64. package/dist/elements/ListPresets/cells/AccessCell/index.js.map +1 -0
  65. package/dist/elements/ListPresets/cells/ColumnsCell/index.d.ts +4 -0
  66. package/dist/elements/ListPresets/cells/ColumnsCell/index.d.ts.map +1 -0
  67. package/dist/elements/ListPresets/cells/ColumnsCell/index.js +11 -0
  68. package/dist/elements/ListPresets/cells/ColumnsCell/index.js.map +1 -0
  69. package/dist/elements/ListPresets/cells/WhereCell/index.d.ts +4 -0
  70. package/dist/elements/ListPresets/cells/WhereCell/index.d.ts.map +1 -0
  71. package/dist/elements/ListPresets/cells/WhereCell/index.js +23 -0
  72. package/dist/elements/ListPresets/cells/WhereCell/index.js.map +1 -0
  73. package/dist/elements/ListPresets/fields/AccessLabel/index.d.ts +3 -0
  74. package/dist/elements/ListPresets/fields/AccessLabel/index.d.ts.map +1 -0
  75. package/dist/elements/ListPresets/fields/AccessLabel/index.js +19 -0
  76. package/dist/elements/ListPresets/fields/AccessLabel/index.js.map +1 -0
  77. package/dist/elements/ListPresets/fields/ColumnsField/index.d.ts +4 -0
  78. package/dist/elements/ListPresets/fields/ColumnsField/index.d.ts.map +1 -0
  79. package/dist/elements/ListPresets/fields/ColumnsField/index.js +64 -0
  80. package/dist/elements/ListPresets/fields/ColumnsField/index.js.map +1 -0
  81. package/dist/elements/ListPresets/fields/ColumnsField/index.scss +28 -0
  82. package/dist/elements/ListPresets/fields/WhereField/index.d.ts +4 -0
  83. package/dist/elements/ListPresets/fields/WhereField/index.d.ts.map +1 -0
  84. package/dist/elements/ListPresets/fields/WhereField/index.js +118 -0
  85. package/dist/elements/ListPresets/fields/WhereField/index.js.map +1 -0
  86. package/dist/elements/ListPresets/fields/WhereField/index.scss +23 -0
  87. package/dist/elements/Localizer/index.d.ts.map +1 -1
  88. package/dist/elements/Localizer/index.js +36 -24
  89. package/dist/elements/Localizer/index.js.map +1 -1
  90. package/dist/elements/Logout/index.d.ts.map +1 -1
  91. package/dist/elements/Logout/index.js +1 -1
  92. package/dist/elements/Logout/index.js.map +1 -1
  93. package/dist/elements/Nav/context.d.ts.map +1 -1
  94. package/dist/elements/Nav/context.js +8 -1
  95. package/dist/elements/Nav/context.js.map +1 -1
  96. package/dist/elements/Pill/index.d.ts +1 -1
  97. package/dist/elements/Pill/index.d.ts.map +1 -1
  98. package/dist/elements/Pill/index.js +2 -0
  99. package/dist/elements/Pill/index.js.map +1 -1
  100. package/dist/elements/Pill/index.scss +29 -6
  101. package/dist/elements/PublishButton/index.js +1 -0
  102. package/dist/elements/PublishButton/index.js.map +1 -1
  103. package/dist/elements/RelationshipTable/cells/DrawerLink/index.js +1 -1
  104. package/dist/elements/RelationshipTable/cells/DrawerLink/index.js.map +1 -1
  105. package/dist/elements/RelationshipTable/index.d.ts +1 -1
  106. package/dist/elements/RelationshipTable/index.d.ts.map +1 -1
  107. package/dist/elements/RelationshipTable/index.js +6 -14
  108. package/dist/elements/RelationshipTable/index.js.map +1 -1
  109. package/dist/elements/StayLoggedIn/index.d.ts.map +1 -1
  110. package/dist/elements/StayLoggedIn/index.js +1 -1
  111. package/dist/elements/StayLoggedIn/index.js.map +1 -1
  112. package/dist/elements/Table/DefaultCell/index.d.ts.map +1 -1
  113. package/dist/elements/Table/DefaultCell/index.js +1 -2
  114. package/dist/elements/Table/DefaultCell/index.js.map +1 -1
  115. package/dist/elements/WhereBuilder/Condition/index.d.ts +2 -5
  116. package/dist/elements/WhereBuilder/Condition/index.d.ts.map +1 -1
  117. package/dist/elements/WhereBuilder/Condition/index.js +7 -7
  118. package/dist/elements/WhereBuilder/Condition/index.js.map +1 -1
  119. package/dist/elements/WhereBuilder/index.d.ts.map +1 -1
  120. package/dist/elements/WhereBuilder/index.js +22 -32
  121. package/dist/elements/WhereBuilder/index.js.map +1 -1
  122. package/dist/elements/WhereBuilder/types.d.ts +6 -2
  123. package/dist/elements/WhereBuilder/types.d.ts.map +1 -1
  124. package/dist/elements/WhereBuilder/types.js.map +1 -1
  125. package/dist/exports/client/index.d.ts +8 -2
  126. package/dist/exports/client/index.d.ts.map +1 -1
  127. package/dist/exports/client/index.js +11 -11
  128. package/dist/exports/client/index.js.map +4 -4
  129. package/dist/exports/shared/index.d.ts +8 -3
  130. package/dist/exports/shared/index.d.ts.map +1 -1
  131. package/dist/exports/shared/index.js +2 -2
  132. package/dist/exports/shared/index.js.map +4 -4
  133. package/dist/fields/Upload/HasMany/index.d.ts.map +1 -1
  134. package/dist/fields/Upload/HasMany/index.js +12 -4
  135. package/dist/fields/Upload/HasMany/index.js.map +1 -1
  136. package/dist/fields/Upload/HasOne/index.d.ts.map +1 -1
  137. package/dist/fields/Upload/HasOne/index.js +15 -5
  138. package/dist/fields/Upload/HasOne/index.js.map +1 -1
  139. package/dist/fields/Upload/RelationshipContent/index.d.ts +1 -0
  140. package/dist/fields/Upload/RelationshipContent/index.d.ts.map +1 -1
  141. package/dist/fields/Upload/RelationshipContent/index.js +13 -11
  142. package/dist/fields/Upload/RelationshipContent/index.js.map +1 -1
  143. package/dist/forms/Form/index.d.ts.map +1 -1
  144. package/dist/forms/Form/index.js +3 -1
  145. package/dist/forms/Form/index.js.map +1 -1
  146. package/dist/forms/Form/types.d.ts +4 -0
  147. package/dist/forms/Form/types.d.ts.map +1 -1
  148. package/dist/forms/Form/types.js.map +1 -1
  149. package/dist/graphics/Account/index.d.ts.map +1 -1
  150. package/dist/graphics/Account/index.js +1 -1
  151. package/dist/graphics/Account/index.js.map +1 -1
  152. package/dist/icons/Chevron/index.d.ts +1 -0
  153. package/dist/icons/Chevron/index.d.ts.map +1 -1
  154. package/dist/icons/Chevron/index.js +2 -0
  155. package/dist/icons/Chevron/index.js.map +1 -1
  156. package/dist/icons/Dots/index.d.ts +2 -0
  157. package/dist/icons/Dots/index.d.ts.map +1 -1
  158. package/dist/icons/Dots/index.js +5 -2
  159. package/dist/icons/Dots/index.js.map +1 -1
  160. package/dist/icons/Dots/index.scss +14 -0
  161. package/dist/icons/People/index.d.ts +6 -0
  162. package/dist/icons/People/index.d.ts.map +1 -0
  163. package/dist/icons/People/index.js +18 -0
  164. package/dist/icons/People/index.js.map +1 -0
  165. package/dist/icons/People/index.scss +11 -0
  166. package/dist/providers/Auth/index.d.ts.map +1 -1
  167. package/dist/providers/Auth/index.js +1 -1
  168. package/dist/providers/Auth/index.js.map +1 -1
  169. package/dist/providers/DocumentInfo/types.d.ts +1 -0
  170. package/dist/providers/DocumentInfo/types.d.ts.map +1 -1
  171. package/dist/providers/DocumentInfo/types.js.map +1 -1
  172. package/dist/providers/ListQuery/context.d.ts +6 -0
  173. package/dist/providers/ListQuery/context.d.ts.map +1 -0
  174. package/dist/providers/ListQuery/context.js +6 -0
  175. package/dist/providers/ListQuery/context.js.map +1 -0
  176. package/dist/providers/ListQuery/index.d.ts +2 -27
  177. package/dist/providers/ListQuery/index.d.ts.map +1 -1
  178. package/dist/providers/ListQuery/index.js +72 -46
  179. package/dist/providers/ListQuery/index.js.map +1 -1
  180. package/dist/providers/ListQuery/types.d.ts +36 -0
  181. package/dist/providers/ListQuery/types.d.ts.map +1 -0
  182. package/dist/providers/ListQuery/types.js +2 -0
  183. package/dist/providers/ListQuery/types.js.map +1 -0
  184. package/dist/providers/Preferences/index.d.ts.map +1 -1
  185. package/dist/providers/Preferences/index.js.map +1 -1
  186. package/dist/providers/RouteTransition/ProgressBar/index.scss +19 -17
  187. package/dist/providers/ServerFunctions/index.d.ts +1 -0
  188. package/dist/providers/ServerFunctions/index.d.ts.map +1 -1
  189. package/dist/providers/ServerFunctions/index.js.map +1 -1
  190. package/dist/providers/TableColumns/RenderDefaultCell/index.d.ts.map +1 -0
  191. package/dist/{elements → providers}/TableColumns/RenderDefaultCell/index.js +2 -2
  192. package/dist/providers/TableColumns/RenderDefaultCell/index.js.map +1 -0
  193. package/dist/{elements → providers}/TableColumns/buildColumnState.d.ts +1 -1
  194. package/dist/providers/TableColumns/buildColumnState.d.ts.map +1 -0
  195. package/dist/{elements → providers}/TableColumns/buildColumnState.js +1 -1
  196. package/dist/providers/TableColumns/buildColumnState.js.map +1 -0
  197. package/dist/{elements → providers}/TableColumns/buildPolymorphicColumnState.d.ts +1 -1
  198. package/dist/providers/TableColumns/buildPolymorphicColumnState.d.ts.map +1 -0
  199. package/dist/{elements → providers}/TableColumns/buildPolymorphicColumnState.js +1 -1
  200. package/dist/providers/TableColumns/buildPolymorphicColumnState.js.map +1 -0
  201. package/dist/providers/TableColumns/context.d.ts +6 -0
  202. package/dist/providers/TableColumns/context.d.ts.map +1 -0
  203. package/dist/providers/TableColumns/context.js +6 -0
  204. package/dist/providers/TableColumns/context.js.map +1 -0
  205. package/dist/providers/TableColumns/filterFields.d.ts.map +1 -0
  206. package/dist/providers/TableColumns/filterFields.js.map +1 -0
  207. package/dist/providers/TableColumns/getInitialColumns.d.ts.map +1 -0
  208. package/dist/providers/TableColumns/getInitialColumns.js.map +1 -0
  209. package/dist/providers/TableColumns/index.d.ts +5 -0
  210. package/dist/providers/TableColumns/index.d.ts.map +1 -0
  211. package/dist/providers/TableColumns/index.js +105 -0
  212. package/dist/providers/TableColumns/index.js.map +1 -0
  213. package/dist/{elements/TableColumns/index.d.ts → providers/TableColumns/types.d.ts} +32 -11
  214. package/dist/providers/TableColumns/types.d.ts.map +1 -0
  215. package/dist/providers/TableColumns/types.js +2 -0
  216. package/dist/providers/TableColumns/types.js.map +1 -0
  217. package/dist/styles.css +1 -1
  218. package/dist/utilities/copyDataFromLocale.d.ts.map +1 -1
  219. package/dist/utilities/copyDataFromLocale.js +6 -2
  220. package/dist/utilities/copyDataFromLocale.js.map +1 -1
  221. package/dist/utilities/formatAdminURL.d.ts +1 -7
  222. package/dist/utilities/formatAdminURL.d.ts.map +1 -1
  223. package/dist/utilities/formatAdminURL.js +1 -18
  224. package/dist/utilities/formatAdminURL.js.map +1 -1
  225. package/dist/utilities/handleBackToDashboard.js +1 -1
  226. package/dist/utilities/handleBackToDashboard.js.map +1 -1
  227. package/dist/utilities/handleFormStateLocking.d.ts.map +1 -1
  228. package/dist/utilities/handleFormStateLocking.js +4 -2
  229. package/dist/utilities/handleFormStateLocking.js.map +1 -1
  230. package/dist/utilities/handleGoBack.js +1 -1
  231. package/dist/utilities/handleGoBack.js.map +1 -1
  232. package/dist/utilities/renderTable.js +4 -4
  233. package/dist/utilities/renderTable.js.map +1 -1
  234. package/dist/utilities/upsertPreferences.d.ts +7 -2
  235. package/dist/utilities/upsertPreferences.d.ts.map +1 -1
  236. package/dist/utilities/upsertPreferences.js +11 -5
  237. package/dist/utilities/upsertPreferences.js.map +1 -1
  238. package/dist/views/Edit/SetDocumentStepNav/index.js +1 -1
  239. package/dist/views/Edit/SetDocumentStepNav/index.js.map +1 -1
  240. package/dist/views/Edit/index.d.ts.map +1 -1
  241. package/dist/views/Edit/index.js +4 -3
  242. package/dist/views/Edit/index.js.map +1 -1
  243. package/dist/views/List/index.d.ts.map +1 -1
  244. package/dist/views/List/index.js +5 -8
  245. package/dist/views/List/index.js.map +1 -1
  246. package/package.json +4 -4
  247. package/dist/elements/TableColumns/RenderDefaultCell/index.d.ts.map +0 -1
  248. package/dist/elements/TableColumns/RenderDefaultCell/index.js.map +0 -1
  249. package/dist/elements/TableColumns/buildColumnState.d.ts.map +0 -1
  250. package/dist/elements/TableColumns/buildColumnState.js.map +0 -1
  251. package/dist/elements/TableColumns/buildPolymorphicColumnState.d.ts.map +0 -1
  252. package/dist/elements/TableColumns/buildPolymorphicColumnState.js.map +0 -1
  253. package/dist/elements/TableColumns/filterFields.d.ts.map +0 -1
  254. package/dist/elements/TableColumns/filterFields.js.map +0 -1
  255. package/dist/elements/TableColumns/getInitialColumns.d.ts.map +0 -1
  256. package/dist/elements/TableColumns/getInitialColumns.js.map +0 -1
  257. package/dist/elements/TableColumns/index.d.ts.map +0 -1
  258. package/dist/elements/TableColumns/index.js +0 -206
  259. package/dist/elements/TableColumns/index.js.map +0 -1
  260. package/dist/elements/WhereBuilder/transformWhereQuery.d.ts +0 -8
  261. package/dist/elements/WhereBuilder/transformWhereQuery.d.ts.map +0 -1
  262. package/dist/elements/WhereBuilder/transformWhereQuery.js +0 -45
  263. package/dist/elements/WhereBuilder/transformWhereQuery.js.map +0 -1
  264. package/dist/elements/WhereBuilder/validateWhereQuery.d.ts +0 -4
  265. package/dist/elements/WhereBuilder/validateWhereQuery.d.ts.map +0 -1
  266. package/dist/elements/WhereBuilder/validateWhereQuery.js +0 -36
  267. package/dist/elements/WhereBuilder/validateWhereQuery.js.map +0 -1
  268. package/dist/utilities/mergeListSearchAndWhere.d.ts +0 -10
  269. package/dist/utilities/mergeListSearchAndWhere.d.ts.map +0 -1
  270. package/dist/utilities/mergeListSearchAndWhere.js +0 -47
  271. package/dist/utilities/mergeListSearchAndWhere.js.map +0 -1
  272. /package/dist/{elements → providers}/TableColumns/RenderDefaultCell/index.d.ts +0 -0
  273. /package/dist/{elements → providers}/TableColumns/RenderDefaultCell/index.scss +0 -0
  274. /package/dist/{elements → providers}/TableColumns/filterFields.d.ts +0 -0
  275. /package/dist/{elements → providers}/TableColumns/filterFields.js +0 -0
  276. /package/dist/{elements → providers}/TableColumns/getInitialColumns.d.ts +0 -0
  277. /package/dist/{elements → providers}/TableColumns/getInitialColumns.js +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"DrawerContent.js","names":["c","_c","useModal","getTranslation","useRouter","useSearchParams","qs","React","useCallback","useEffect","useMemo","useState","useForm","Form","RenderFields","FormSubmit","XIcon","useAuth","useConfig","DocumentInfoProvider","OperationContext","useRouteCache","SelectAllStatus","useSelection","useServerFunctions","useTranslation","abortAndIgnore","handleAbortRef","filterOutUploadFields","mergeListSearchAndWhere","parseSearchParams","FieldSelect","baseClass","sanitizeUnselectedFields","formState","selected","filteredData","reduce","acc","field","foundState","path","value","Submit","t0","$","action","disabled","submit","t","t1","method","overrides","skipValidation","save","t2","_jsx","className","onClick","children","PublishButton","_status","SaveDraftButton","buttonStyle","EditManyDrawerContent","props","collection","slug","fields","labels","plural","singular","drawerSlug","selectedFromProps","permissions","user","closeModal","config","routes","api","apiRoute","serverURL","getFormState","count","getQueryParams","selectAll","i18n","setSelected","router","initialState","setInitialState","hasInitializedState","useRef","abortFormStateRef","clearRouteCache","collectionPermissions","collections","searchParams","filteredFields","controller","AbortController","current","getInitialState","state","result","collectionSlug","data","docPermissions","docPreferences","operation","schemaPath","signal","onChange","prevFormState","abortFormState","queryString","queryWithSearch","collectionConfig","search","get","onSuccess","replace","stringify","page","AllAvailable","undefined","addQueryPrefix","currentEditor","hasPublishedDoc","id","initialData","isLocked","lastUpdateTime","mostRecentVersionIsAutosaved","unpublishedVersionCount","versionCount","Provider","_jsxs","label","type","length","parentIndexPath","parentPath","parentSchemaPath","readOnly","versions","drafts","Fragment"],"sources":["../../../src/elements/EditMany/DrawerContent.tsx"],"sourcesContent":["'use client'\n\nimport type { FieldWithPathClient, FormState } 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, { useCallback, useEffect, useMemo, useState } from 'react'\n\nimport type { FormProps } from '../../forms/Form/index.js'\n\nimport { useForm } from '../../forms/Form/context.js'\nimport { Form } from '../../forms/Form/index.js'\nimport { RenderFields } from '../../forms/RenderFields/index.js'\nimport { FormSubmit } from '../../forms/Submit/index.js'\nimport { XIcon } from '../../icons/X/index.js'\nimport { useAuth } from '../../providers/Auth/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { DocumentInfoProvider } from '../../providers/DocumentInfo/index.js'\nimport { OperationContext } from '../../providers/Operation/index.js'\nimport { useRouteCache } from '../../providers/RouteCache/index.js'\nimport { SelectAllStatus, useSelection } from '../../providers/Selection/index.js'\nimport { useServerFunctions } from '../../providers/ServerFunctions/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { abortAndIgnore, handleAbortRef } from '../../utilities/abortAndIgnore.js'\nimport { filterOutUploadFields } from '../../utilities/filterOutUploadFields.js'\nimport { mergeListSearchAndWhere } from '../../utilities/mergeListSearchAndWhere.js'\nimport { parseSearchParams } from '../../utilities/parseSearchParams.js'\nimport { FieldSelect } from '../FieldSelect/index.js'\nimport { baseClass, type EditManyProps } from './index.js'\nimport './index.scss'\n\nconst sanitizeUnselectedFields = (formState: FormState, selected: FieldWithPathClient[]) => {\n const filteredData = selected.reduce((acc, field) => {\n const foundState = formState?.[field.path]\n\n if (foundState) {\n acc[field.path] = formState?.[field.path]?.value\n }\n\n return acc\n }, {} as FormData)\n\n return filteredData\n}\n\nconst Submit: React.FC<{\n readonly action: string\n readonly disabled: boolean\n readonly selected?: FieldWithPathClient[]\n}> = ({ action, disabled, selected }) => {\n const { submit } = useForm()\n const { t } = useTranslation()\n\n const save = useCallback(() => {\n void submit({\n action,\n method: 'PATCH',\n overrides: (formState) => sanitizeUnselectedFields(formState, selected),\n skipValidation: true,\n })\n }, [action, submit, selected])\n\n return (\n <FormSubmit className={`${baseClass}__save`} disabled={disabled} onClick={save}>\n {t('general:save')}\n </FormSubmit>\n )\n}\n\nconst PublishButton: React.FC<{\n action: string\n disabled: boolean\n selected?: FieldWithPathClient[]\n}> = ({ action, disabled, selected }) => {\n const { submit } = useForm()\n const { t } = useTranslation()\n\n const save = useCallback(() => {\n void submit({\n action,\n method: 'PATCH',\n overrides: (formState) => ({\n ...sanitizeUnselectedFields(formState, selected),\n _status: 'published',\n }),\n skipValidation: true,\n })\n }, [action, submit, selected])\n\n return (\n <FormSubmit className={`${baseClass}__publish`} disabled={disabled} onClick={save}>\n {t('version:publishChanges')}\n </FormSubmit>\n )\n}\n\nconst SaveDraftButton: React.FC<{\n action: string\n disabled: boolean\n selected?: FieldWithPathClient[]\n}> = ({ action, disabled, selected }) => {\n const { submit } = useForm()\n const { t } = useTranslation()\n\n const save = useCallback(() => {\n void submit({\n action,\n method: 'PATCH',\n overrides: (formState) => ({\n ...sanitizeUnselectedFields(formState, selected),\n _status: 'draft',\n }),\n skipValidation: true,\n })\n }, [action, submit, selected])\n\n return (\n <FormSubmit\n buttonStyle=\"secondary\"\n className={`${baseClass}__draft`}\n disabled={disabled}\n onClick={save}\n >\n {t('version:saveDraft')}\n </FormSubmit>\n )\n}\n\nexport const EditManyDrawerContent: React.FC<\n {\n drawerSlug: string\n selected: FieldWithPathClient[]\n } & EditManyProps\n> = (props) => {\n const {\n collection: { slug, fields, labels: { plural, singular } } = {},\n collection,\n drawerSlug,\n selected: selectedFromProps,\n } = props\n\n const { permissions, user } = useAuth()\n\n const { closeModal } = useModal()\n\n const {\n config: {\n routes: { api: apiRoute },\n serverURL,\n },\n } = useConfig()\n\n const { getFormState } = useServerFunctions()\n\n const { count, getQueryParams, selectAll } = useSelection()\n const { i18n, t } = useTranslation()\n const [selected, setSelected] = useState<FieldWithPathClient[]>([])\n\n useEffect(() => {\n setSelected(selectedFromProps)\n }, [selectedFromProps])\n\n const router = useRouter()\n const [initialState, setInitialState] = useState<FormState>()\n const hasInitializedState = React.useRef(false)\n const abortFormStateRef = React.useRef<AbortController>(null)\n const { clearRouteCache } = useRouteCache()\n const collectionPermissions = permissions?.collections?.[slug]\n const searchParams = useSearchParams()\n\n const filteredFields = filterOutUploadFields(fields)\n\n React.useEffect(() => {\n const controller = new AbortController()\n\n if (!hasInitializedState.current) {\n const getInitialState = async () => {\n const { state: result } = await getFormState({\n collectionSlug: slug,\n data: {},\n docPermissions: collectionPermissions,\n docPreferences: null,\n operation: 'update',\n schemaPath: slug,\n signal: controller.signal,\n skipValidation: true,\n })\n\n setInitialState(result)\n hasInitializedState.current = true\n }\n\n void getInitialState()\n }\n\n return () => {\n abortAndIgnore(controller)\n }\n }, [apiRoute, hasInitializedState, serverURL, slug, getFormState, user, collectionPermissions])\n\n const onChange: FormProps['onChange'][0] = useCallback(\n async ({ formState: prevFormState }) => {\n const controller = handleAbortRef(abortFormStateRef)\n\n const { state } = await getFormState({\n collectionSlug: slug,\n docPermissions: collectionPermissions,\n docPreferences: null,\n formState: prevFormState,\n operation: 'update',\n schemaPath: slug,\n signal: controller.signal,\n })\n\n abortFormStateRef.current = null\n\n return state\n },\n [getFormState, slug, collectionPermissions],\n )\n\n useEffect(() => {\n const abortFormState = abortFormStateRef.current\n\n return () => {\n abortAndIgnore(abortFormState)\n }\n }, [])\n\n const queryString = useMemo(() => {\n const queryWithSearch = mergeListSearchAndWhere({\n collectionConfig: collection,\n search: searchParams.get('search'),\n })\n\n return getQueryParams(queryWithSearch)\n }, [collection, searchParams, getQueryParams])\n\n const onSuccess = () => {\n router.replace(\n qs.stringify(\n {\n ...parseSearchParams(searchParams),\n page: selectAll === SelectAllStatus.AllAvailable ? '1' : undefined,\n },\n { addQueryPrefix: true },\n ),\n )\n clearRouteCache() // Use clearRouteCache instead of router.refresh, as we only need to clear the cache if the user has route caching enabled - clearRouteCache checks for this\n closeModal(drawerSlug)\n }\n\n return (\n <DocumentInfoProvider\n collectionSlug={slug}\n currentEditor={user}\n hasPublishedDoc={false}\n id={null}\n initialData={{}}\n initialState={initialState}\n isLocked={false}\n lastUpdateTime={0}\n mostRecentVersionIsAutosaved={false}\n unpublishedVersionCount={0}\n versionCount={0}\n >\n <OperationContext.Provider value=\"update\">\n <div className={`${baseClass}__main`}>\n <div className={`${baseClass}__header`}>\n <h2 className={`${baseClass}__header__title`}>\n {t('general:editingLabel', {\n count,\n label: getTranslation(count > 1 ? plural : singular, i18n),\n })}\n </h2>\n <button\n aria-label={t('general:close')}\n className={`${baseClass}__header__close`}\n id={`close-drawer__${drawerSlug}`}\n onClick={() => closeModal(drawerSlug)}\n type=\"button\"\n >\n <XIcon />\n </button>\n </div>\n <Form\n className={`${baseClass}__form`}\n initialState={initialState}\n onChange={[onChange]}\n onSuccess={onSuccess}\n >\n <FieldSelect fields={filteredFields} setSelected={setSelected} />\n {selected.length === 0 ? null : (\n <RenderFields\n fields={selected}\n parentIndexPath=\"\"\n parentPath=\"\"\n parentSchemaPath={slug}\n permissions={collectionPermissions?.fields}\n readOnly={false}\n />\n )}\n <div className={`${baseClass}__sidebar-wrap`}>\n <div className={`${baseClass}__sidebar`}>\n <div className={`${baseClass}__sidebar-sticky-wrap`}>\n <div className={`${baseClass}__document-actions`}>\n {collection?.versions?.drafts ? (\n <React.Fragment>\n <SaveDraftButton\n action={`${serverURL}${apiRoute}/${slug}${queryString}&draft=true`}\n disabled={selected.length === 0}\n selected={selected}\n />\n <PublishButton\n action={`${serverURL}${apiRoute}/${slug}${queryString}&draft=true`}\n disabled={selected.length === 0}\n selected={selected}\n />\n </React.Fragment>\n ) : (\n <Submit\n action={`${serverURL}${apiRoute}/${slug}${queryString}`}\n disabled={selected.length === 0}\n selected={selected}\n />\n )}\n </div>\n </div>\n </div>\n </div>\n </Form>\n </div>\n </OperationContext.Provider>\n </DocumentInfoProvider>\n )\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;;AAIA,SAASC,QAAQ,QAAQ;AACzB,SAASC,cAAc,QAAQ;AAC/B,SAASC,SAAS,EAAEC,eAAe,QAAQ;AAC3C,YAAYC,EAAA,MAAQ;AACpB,OAAOC,KAAA,IAASC,WAAW,EAAEC,SAAS,EAAEC,OAAO,EAAEC,QAAQ,QAAQ;AAIjE,SAASC,OAAO,QAAQ;AACxB,SAASC,IAAI,QAAQ;AACrB,SAASC,YAAY,QAAQ;AAC7B,SAASC,UAAU,QAAQ;AAC3B,SAASC,KAAK,QAAQ;AACtB,SAASC,OAAO,QAAQ;AACxB,SAASC,SAAS,QAAQ;AAC1B,SAASC,oBAAoB,QAAQ;AACrC,SAASC,gBAAgB,QAAQ;AACjC,SAASC,aAAa,QAAQ;AAC9B,SAASC,eAAe,EAAEC,YAAY,QAAQ;AAC9C,SAASC,kBAAkB,QAAQ;AACnC,SAASC,cAAc,QAAQ;AAC/B,SAASC,cAAc,EAAEC,cAAc,QAAQ;AAC/C,SAASC,qBAAqB,QAAQ;AACtC,SAASC,uBAAuB,QAAQ;AACxC,SAASC,iBAAiB,QAAQ;AAClC,SAASC,WAAW,QAAQ;AAC5B,SAASC,SAAS,QAA4B;AAC9C,OAAO;AAEP,MAAMC,wBAAA,GAA2BA,CAACC,SAAA,EAAsBC,QAAA;EACtD,MAAMC,YAAA,GAAeD,QAAA,CAASE,MAAM,CAAC,CAACC,GAAA,EAAKC,KAAA;IACzC,MAAMC,UAAA,GAAaN,SAAA,GAAYK,KAAA,CAAME,IAAI,CAAC;IAE1C,IAAID,UAAA,EAAY;MACdF,GAAG,CAACC,KAAA,CAAME,IAAI,CAAC,GAAGP,SAAA,GAAYK,KAAA,CAAME,IAAI,CAAC,EAAEC,KAAA;IAC7C;IAEA,OAAOJ,GAAA;EACT,GAAG,CAAC;EAEJ,OAAOF,YAAA;AACT;AAEA,MAAMO,MAAA,GAIDC,EAAA;EAAA,MAAAC,CAAA,GAAA5C,EAAA;EAAC;IAAA6C,MAAA;IAAAC,QAAA;IAAAZ;EAAA,IAAAS,EAA8B;EAClC;IAAAI;EAAA,IAAmBpC,OAAA;EACnB;IAAAqC;EAAA,IAAcxB,cAAA;EAAA,IAAAyB,EAAA;EAAA,IAAAL,CAAA,QAAAC,MAAA,IAAAD,CAAA,QAAAV,QAAA,IAAAU,CAAA,QAAAG,MAAA;IAEWE,EAAA,GAAAA,CAAA;MAClBF,MAAA;QAAAF,MAAA;QAAAK,MAAA,EAEK;QAAAC,SAAA,EAAAlB,SAAA,IACkBD,wBAAA,CAAyBC,SAAA,EAAWC,QAAA;QAAAkB,cAAA;MAAA,CAEhE;IAAA;IACFR,CAAA,MAAAC,MAAA;IAAAD,CAAA,MAAAV,QAAA;IAAAU,CAAA,MAAAG,MAAA;IAAAH,CAAA,MAAAK,EAAA;EAAA;IAAAA,EAAA,GAAAL,CAAA;EAAA;EAPA,MAAAS,IAAA,GAAaJ,EAOgB;EAAA,IAAAK,EAAA;EAAA,IAAAV,CAAA,QAAAE,QAAA,IAAAF,CAAA,QAAAS,IAAA,IAAAT,CAAA,QAAAI,CAAA;IAG3BM,EAAA,GAAAC,IAAA,CAAAzC,UAAA;MAAA0C,SAAA,EAAuB,GAAAzB,SAAA,QAAoB;MAAAe,QAAA;MAAAW,OAAA,EAA+BJ,IAAA;MAAAK,QAAA,EACvEV,CAAA,CAAE;IAAA,C;;;;;;;;SADLM,E;CAIJ;AAEA,MAAMK,aAAA,GAIDhB,EAAA;EAAA,MAAAC,CAAA,GAAA5C,EAAA;EAAC;IAAA6C,MAAA;IAAAC,QAAA;IAAAZ;EAAA,IAAAS,EAA8B;EAClC;IAAAI;EAAA,IAAmBpC,OAAA;EACnB;IAAAqC;EAAA,IAAcxB,cAAA;EAAA,IAAAyB,EAAA;EAAA,IAAAL,CAAA,QAAAC,MAAA,IAAAD,CAAA,QAAAV,QAAA,IAAAU,CAAA,QAAAG,MAAA;IAEWE,EAAA,GAAAA,CAAA;MAClBF,MAAA;QAAAF,MAAA;QAAAK,MAAA,EAEK;QAAAC,SAAA,EAAAlB,SAAA;UAAA,GAEHD,wBAAA,CAAyBC,SAAA,EAAWC,QAAA,CAAS;UAAA0B,OAAA,EACvC;QAAA;QAAAR,cAAA;MAAA,CAGb;IAAA;IACFR,CAAA,MAAAC,MAAA;IAAAD,CAAA,MAAAV,QAAA;IAAAU,CAAA,MAAAG,MAAA;IAAAH,CAAA,MAAAK,EAAA;EAAA;IAAAA,EAAA,GAAAL,CAAA;EAAA;EAVA,MAAAS,IAAA,GAAaJ,EAUgB;EAAA,IAAAK,EAAA;EAAA,IAAAV,CAAA,QAAAE,QAAA,IAAAF,CAAA,QAAAS,IAAA,IAAAT,CAAA,QAAAI,CAAA;IAG3BM,EAAA,GAAAC,IAAA,CAAAzC,UAAA;MAAA0C,SAAA,EAAuB,GAAAzB,SAAA,WAAuB;MAAAe,QAAA;MAAAW,OAAA,EAA+BJ,IAAA;MAAAK,QAAA,EAC1EV,CAAA,CAAE;IAAA,C;;;;;;;;SADLM,E;CAIJ;AAEA,MAAMO,eAAA,GAIDlB,EAAA;EAAA,MAAAC,CAAA,GAAA5C,EAAA;EAAC;IAAA6C,MAAA;IAAAC,QAAA;IAAAZ;EAAA,IAAAS,EAA8B;EAClC;IAAAI;EAAA,IAAmBpC,OAAA;EACnB;IAAAqC;EAAA,IAAcxB,cAAA;EAAA,IAAAyB,EAAA;EAAA,IAAAL,CAAA,QAAAC,MAAA,IAAAD,CAAA,QAAAV,QAAA,IAAAU,CAAA,QAAAG,MAAA;IAEWE,EAAA,GAAAA,CAAA;MAClBF,MAAA;QAAAF,MAAA;QAAAK,MAAA,EAEK;QAAAC,SAAA,EAAAlB,SAAA;UAAA,GAEHD,wBAAA,CAAyBC,SAAA,EAAWC,QAAA,CAAS;UAAA0B,OAAA,EACvC;QAAA;QAAAR,cAAA;MAAA,CAGb;IAAA;IACFR,CAAA,MAAAC,MAAA;IAAAD,CAAA,MAAAV,QAAA;IAAAU,CAAA,MAAAG,MAAA;IAAAH,CAAA,MAAAK,EAAA;EAAA;IAAAA,EAAA,GAAAL,CAAA;EAAA;EAVA,MAAAS,IAAA,GAAaJ,EAUgB;EAAA,IAAAK,EAAA;EAAA,IAAAV,CAAA,QAAAE,QAAA,IAAAF,CAAA,QAAAS,IAAA,IAAAT,CAAA,QAAAI,CAAA;IAG3BM,EAAA,GAAAC,IAAA,CAAAzC,UAAA;MAAAgD,WAAA,EACc;MAAAN,SAAA,EACD,GAAAzB,SAAA,SAAqB;MAAAe,QAAA;MAAAW,OAAA,EAEvBJ,IAAA;MAAAK,QAAA,EAERV,CAAA,CAAE;IAAA,C;;;;;;;;SANLM,E;CASJ;AAEA,OAAO,MAAMS,qBAAA,GAKRC,KAAA;EACH,MAAM;IACJC,UAAA,EAAY;MAAEC,IAAI;MAAEC,MAAM;MAAEC,MAAA,EAAQ;QAAEC,MAAM;QAAEC;MAAQ;IAAE,CAAE,GAAG,CAAC,CAAC;IAC/DL,UAAU;IACVM,UAAU;IACVrC,QAAA,EAAUsC;EAAiB,CAC5B,GAAGR,KAAA;EAEJ,MAAM;IAAES,WAAW;IAAEC;EAAI,CAAE,GAAG1D,OAAA;EAE9B,MAAM;IAAE2D;EAAU,CAAE,GAAG1E,QAAA;EAEvB,MAAM;IACJ2E,MAAA,EAAQ;MACNC,MAAA,EAAQ;QAAEC,GAAA,EAAKC;MAAQ,CAAE;MACzBC;IAAS;EACV,CACF,GAAG/D,SAAA;EAEJ,MAAM;IAAEgE;EAAY,CAAE,GAAG1D,kBAAA;EAEzB,MAAM;IAAE2D,KAAK;IAAEC,cAAc;IAAEC;EAAS,CAAE,GAAG9D,YAAA;EAC7C,MAAM;IAAE+D,IAAI;IAAErC;EAAC,CAAE,GAAGxB,cAAA;EACpB,MAAM,CAACU,QAAA,EAAUoD,WAAA,CAAY,GAAG5E,QAAA,CAAgC,EAAE;EAElEF,SAAA,CAAU;IACR8E,WAAA,CAAYd,iBAAA;EACd,GAAG,CAACA,iBAAA,CAAkB;EAEtB,MAAMe,MAAA,GAASpF,SAAA;EACf,MAAM,CAACqF,YAAA,EAAcC,eAAA,CAAgB,GAAG/E,QAAA;EACxC,MAAMgF,mBAAA,GAAsBpF,KAAA,CAAMqF,MAAM,CAAC;EACzC,MAAMC,iBAAA,GAAoBtF,KAAA,CAAMqF,MAAM,CAAkB;EACxD,MAAM;IAAEE;EAAe,CAAE,GAAGzE,aAAA;EAC5B,MAAM0E,qBAAA,GAAwBrB,WAAA,EAAasB,WAAA,GAAc7B,IAAA,CAAK;EAC9D,MAAM8B,YAAA,GAAe5F,eAAA;EAErB,MAAM6F,cAAA,GAAiBtE,qBAAA,CAAsBwC,MAAA;EAE7C7D,KAAA,CAAME,SAAS,CAAC;IACd,MAAM0F,UAAA,GAAa,IAAIC,eAAA;IAEvB,IAAI,CAACT,mBAAA,CAAoBU,OAAO,EAAE;MAChC,MAAMC,eAAA,GAAkB,MAAAA,CAAA;QACtB,MAAM;UAAEC,KAAA,EAAOC;QAAM,CAAE,GAAG,MAAMtB,YAAA,CAAa;UAC3CuB,cAAA,EAAgBtC,IAAA;UAChBuC,IAAA,EAAM,CAAC;UACPC,cAAA,EAAgBZ,qBAAA;UAChBa,cAAA,EAAgB;UAChBC,SAAA,EAAW;UACXC,UAAA,EAAY3C,IAAA;UACZ4C,MAAA,EAAQZ,UAAA,CAAWY,MAAM;UACzB1D,cAAA,EAAgB;QAClB;QAEAqC,eAAA,CAAgBc,MAAA;QAChBb,mBAAA,CAAoBU,OAAO,GAAG;MAChC;MAEA,KAAKC,eAAA;IACP;IAEA,OAAO;MACL5E,cAAA,CAAeyE,UAAA;IACjB;EACF,GAAG,CAACnB,QAAA,EAAUW,mBAAA,EAAqBV,SAAA,EAAWd,IAAA,EAAMe,YAAA,EAAcP,IAAA,EAAMoB,qBAAA,CAAsB;EAE9F,MAAMiB,QAAA,GAAqCxG,WAAA,CACzC,OAAO;IAAE0B,SAAA,EAAW+E;EAAa,CAAE;IACjC,MAAMd,YAAA,GAAaxE,cAAA,CAAekE,iBAAA;IAElC,MAAM;MAAEU;IAAK,CAAE,GAAG,MAAMrB,YAAA,CAAa;MACnCuB,cAAA,EAAgBtC,IAAA;MAChBwC,cAAA,EAAgBZ,qBAAA;MAChBa,cAAA,EAAgB;MAChB1E,SAAA,EAAW+E,aAAA;MACXJ,SAAA,EAAW;MACXC,UAAA,EAAY3C,IAAA;MACZ4C,MAAA,EAAQZ,YAAA,CAAWY;IACrB;IAEAlB,iBAAA,CAAkBQ,OAAO,GAAG;IAE5B,OAAOE,KAAA;EACT,GACA,CAACrB,YAAA,EAAcf,IAAA,EAAM4B,qBAAA,CAAsB;EAG7CtF,SAAA,CAAU;IACR,MAAMyG,cAAA,GAAiBrB,iBAAA,CAAkBQ,OAAO;IAEhD,OAAO;MACL3E,cAAA,CAAewF,cAAA;IACjB;EACF,GAAG,EAAE;EAEL,MAAMC,WAAA,GAAczG,OAAA,CAAQ;IAC1B,MAAM0G,eAAA,GAAkBvF,uBAAA,CAAwB;MAC9CwF,gBAAA,EAAkBnD,UAAA;MAClBoD,MAAA,EAAQrB,YAAA,CAAasB,GAAG,CAAC;IAC3B;IAEA,OAAOnC,cAAA,CAAegC,eAAA;EACxB,GAAG,CAAClD,UAAA,EAAY+B,YAAA,EAAcb,cAAA,CAAe;EAE7C,MAAMoC,SAAA,GAAYA,CAAA;IAChBhC,MAAA,CAAOiC,OAAO,CACZnH,EAAA,CAAGoH,SAAS,CACV;MACE,GAAG5F,iBAAA,CAAkBmE,YAAA,CAAa;MAClC0B,IAAA,EAAMtC,SAAA,KAAc/D,eAAA,CAAgBsG,YAAY,GAAG,MAAMC;IAC3D,GACA;MAAEC,cAAA,EAAgB;IAAK;IAG3BhC,eAAA,GAAkB;IAAA;IAClBlB,UAAA,CAAWJ,UAAA;EACb;EAEA,oBACEhB,IAAA,CAACrC,oBAAA;IACCsF,cAAA,EAAgBtC,IAAA;IAChB4D,aAAA,EAAepD,IAAA;IACfqD,eAAA,EAAiB;IACjBC,EAAA,EAAI;IACJC,WAAA,EAAa,CAAC;IACdzC,YAAA,EAAcA,YAAA;IACd0C,QAAA,EAAU;IACVC,cAAA,EAAgB;IAChBC,4BAAA,EAA8B;IAC9BC,uBAAA,EAAyB;IACzBC,YAAA,EAAc;cAEd,aAAA/E,IAAA,CAACpC,gBAAA,CAAiBoH,QAAQ;MAAC9F,KAAA,EAAM;gBAC/B,aAAA+F,KAAA,CAAC;QAAIhF,SAAA,EAAW,GAAGzB,SAAA,QAAiB;gCAClCyG,KAAA,CAAC;UAAIhF,SAAA,EAAW,GAAGzB,SAAA,UAAmB;kCACpCwB,IAAA,CAAC;YAAGC,SAAA,EAAW,GAAGzB,SAAA,iBAA0B;sBACzCiB,CAAA,CAAE,wBAAwB;cACzBkC,KAAA;cACAuD,KAAA,EAAOvI,cAAA,CAAegF,KAAA,GAAQ,IAAIb,MAAA,GAASC,QAAA,EAAUe,IAAA;YACvD;2BAEF9B,IAAA,CAAC;YACC,cAAYP,CAAA,CAAE;YACdQ,SAAA,EAAW,GAAGzB,SAAA,iBAA0B;YACxCiG,EAAA,EAAI,iBAAiBzD,UAAA,EAAY;YACjCd,OAAA,EAASA,CAAA,KAAMkB,UAAA,CAAWJ,UAAA;YAC1BmE,IAAA,EAAK;sBAEL,aAAAnF,IAAA,CAACxC,KAAA;;yBAGLyH,KAAA,CAAC5H,IAAA;UACC4C,SAAA,EAAW,GAAGzB,SAAA,QAAiB;UAC/ByD,YAAA,EAAcA,YAAA;UACduB,QAAA,EAAU,CAACA,QAAA,CAAS;UACpBQ,SAAA,EAAWA,SAAA;kCAEXhE,IAAA,CAACzB,WAAA;YAAYqC,MAAA,EAAQ8B,cAAA;YAAgBX,WAAA,EAAaA;cACjDpD,QAAA,CAASyG,MAAM,KAAK,IAAI,oBACvBpF,IAAA,CAAC1C,YAAA;YACCsD,MAAA,EAAQjC,QAAA;YACR0G,eAAA,EAAgB;YAChBC,UAAA,EAAW;YACXC,gBAAA,EAAkB5E,IAAA;YAClBO,WAAA,EAAaqB,qBAAA,EAAuB3B,MAAA;YACpC4E,QAAA,EAAU;2BAGdxF,IAAA,CAAC;YAAIC,SAAA,EAAW,GAAGzB,SAAA,gBAAyB;sBAC1C,aAAAwB,IAAA,CAAC;cAAIC,SAAA,EAAW,GAAGzB,SAAA,WAAoB;wBACrC,aAAAwB,IAAA,CAAC;gBAAIC,SAAA,EAAW,GAAGzB,SAAA,uBAAgC;0BACjD,aAAAwB,IAAA,CAAC;kBAAIC,SAAA,EAAW,GAAGzB,SAAA,oBAA6B;4BAC7CkC,UAAA,EAAY+E,QAAA,EAAUC,MAAA,gBACrBT,KAAA,CAAClI,KAAA,CAAM4I,QAAQ;4CACb3F,IAAA,CAACM,eAAA;sBACChB,MAAA,EAAQ,GAAGmC,SAAA,GAAYD,QAAA,IAAYb,IAAA,GAAOgD,WAAA,aAAwB;sBAClEpE,QAAA,EAAUZ,QAAA,CAASyG,MAAM,KAAK;sBAC9BzG,QAAA,EAAUA;qCAEZqB,IAAA,CAACI,aAAA;sBACCd,MAAA,EAAQ,GAAGmC,SAAA,GAAYD,QAAA,IAAYb,IAAA,GAAOgD,WAAA,aAAwB;sBAClEpE,QAAA,EAAUZ,QAAA,CAASyG,MAAM,KAAK;sBAC9BzG,QAAA,EAAUA;;oCAIdqB,IAAA,CAACb,MAAA;oBACCG,MAAA,EAAQ,GAAGmC,SAAA,GAAYD,QAAA,IAAYb,IAAA,GAAOgD,WAAA,EAAa;oBACvDpE,QAAA,EAAUZ,QAAA,CAASyG,MAAM,KAAK;oBAC9BzG,QAAA,EAAUA;;;;;;;;;;AAYlC","ignoreList":[]}
1
+ {"version":3,"file":"DrawerContent.js","names":["c","_c","useModal","getTranslation","useRouter","useSearchParams","mergeListSearchAndWhere","qs","React","useCallback","useEffect","useMemo","useState","useForm","Form","RenderFields","FormSubmit","XIcon","useAuth","useConfig","DocumentInfoProvider","OperationContext","useRouteCache","SelectAllStatus","useSelection","useServerFunctions","useTranslation","abortAndIgnore","handleAbortRef","filterOutUploadFields","parseSearchParams","FieldSelect","baseClass","sanitizeUnselectedFields","formState","selected","filteredData","reduce","acc","field","foundState","path","value","Submit","t0","$","action","disabled","submit","t","t1","method","overrides","skipValidation","save","t2","_jsx","className","onClick","children","PublishButton","_status","SaveDraftButton","buttonStyle","EditManyDrawerContent","props","collection","slug","fields","labels","plural","singular","drawerSlug","selectedFromProps","permissions","user","closeModal","config","routes","api","apiRoute","serverURL","getFormState","count","getQueryParams","selectAll","i18n","setSelected","router","initialState","setInitialState","hasInitializedState","useRef","abortFormStateRef","clearRouteCache","collectionPermissions","collections","searchParams","filteredFields","controller","AbortController","current","getInitialState","state","result","collectionSlug","data","docPermissions","docPreferences","operation","schemaPath","signal","onChange","prevFormState","abortFormState","queryString","queryWithSearch","collectionConfig","search","get","onSuccess","replace","stringify","page","AllAvailable","undefined","addQueryPrefix","currentEditor","hasPublishedDoc","id","initialData","isLocked","lastUpdateTime","mostRecentVersionIsAutosaved","unpublishedVersionCount","versionCount","Provider","_jsxs","label","type","length","parentIndexPath","parentPath","parentSchemaPath","readOnly","versions","drafts","Fragment"],"sources":["../../../src/elements/EditMany/DrawerContent.tsx"],"sourcesContent":["'use client'\n\nimport type { FieldWithPathClient, FormState } 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, { useCallback, useEffect, useMemo, useState } from 'react'\n\nimport type { FormProps } from '../../forms/Form/index.js'\n\nimport { useForm } from '../../forms/Form/context.js'\nimport { Form } from '../../forms/Form/index.js'\nimport { RenderFields } from '../../forms/RenderFields/index.js'\nimport { FormSubmit } from '../../forms/Submit/index.js'\nimport { XIcon } from '../../icons/X/index.js'\nimport { useAuth } from '../../providers/Auth/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { DocumentInfoProvider } from '../../providers/DocumentInfo/index.js'\nimport { OperationContext } from '../../providers/Operation/index.js'\nimport { useRouteCache } from '../../providers/RouteCache/index.js'\nimport { SelectAllStatus, useSelection } from '../../providers/Selection/index.js'\nimport { useServerFunctions } from '../../providers/ServerFunctions/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { abortAndIgnore, handleAbortRef } from '../../utilities/abortAndIgnore.js'\nimport { filterOutUploadFields } from '../../utilities/filterOutUploadFields.js'\nimport { parseSearchParams } from '../../utilities/parseSearchParams.js'\nimport { FieldSelect } from '../FieldSelect/index.js'\nimport { baseClass, type EditManyProps } from './index.js'\nimport './index.scss'\n\nconst sanitizeUnselectedFields = (formState: FormState, selected: FieldWithPathClient[]) => {\n const filteredData = selected.reduce((acc, field) => {\n const foundState = formState?.[field.path]\n\n if (foundState) {\n acc[field.path] = formState?.[field.path]?.value\n }\n\n return acc\n }, {} as FormData)\n\n return filteredData\n}\n\nconst Submit: React.FC<{\n readonly action: string\n readonly disabled: boolean\n readonly selected?: FieldWithPathClient[]\n}> = ({ action, disabled, selected }) => {\n const { submit } = useForm()\n const { t } = useTranslation()\n\n const save = useCallback(() => {\n void submit({\n action,\n method: 'PATCH',\n overrides: (formState) => sanitizeUnselectedFields(formState, selected),\n skipValidation: true,\n })\n }, [action, submit, selected])\n\n return (\n <FormSubmit className={`${baseClass}__save`} disabled={disabled} onClick={save}>\n {t('general:save')}\n </FormSubmit>\n )\n}\n\nconst PublishButton: React.FC<{\n action: string\n disabled: boolean\n selected?: FieldWithPathClient[]\n}> = ({ action, disabled, selected }) => {\n const { submit } = useForm()\n const { t } = useTranslation()\n\n const save = useCallback(() => {\n void submit({\n action,\n method: 'PATCH',\n overrides: (formState) => ({\n ...sanitizeUnselectedFields(formState, selected),\n _status: 'published',\n }),\n skipValidation: true,\n })\n }, [action, submit, selected])\n\n return (\n <FormSubmit className={`${baseClass}__publish`} disabled={disabled} onClick={save}>\n {t('version:publishChanges')}\n </FormSubmit>\n )\n}\n\nconst SaveDraftButton: React.FC<{\n action: string\n disabled: boolean\n selected?: FieldWithPathClient[]\n}> = ({ action, disabled, selected }) => {\n const { submit } = useForm()\n const { t } = useTranslation()\n\n const save = useCallback(() => {\n void submit({\n action,\n method: 'PATCH',\n overrides: (formState) => ({\n ...sanitizeUnselectedFields(formState, selected),\n _status: 'draft',\n }),\n skipValidation: true,\n })\n }, [action, submit, selected])\n\n return (\n <FormSubmit\n buttonStyle=\"secondary\"\n className={`${baseClass}__draft`}\n disabled={disabled}\n onClick={save}\n >\n {t('version:saveDraft')}\n </FormSubmit>\n )\n}\n\nexport const EditManyDrawerContent: React.FC<\n {\n drawerSlug: string\n selected: FieldWithPathClient[]\n } & EditManyProps\n> = (props) => {\n const {\n collection: { slug, fields, labels: { plural, singular } } = {},\n collection,\n drawerSlug,\n selected: selectedFromProps,\n } = props\n\n const { permissions, user } = useAuth()\n\n const { closeModal } = useModal()\n\n const {\n config: {\n routes: { api: apiRoute },\n serverURL,\n },\n } = useConfig()\n\n const { getFormState } = useServerFunctions()\n\n const { count, getQueryParams, selectAll } = useSelection()\n const { i18n, t } = useTranslation()\n const [selected, setSelected] = useState<FieldWithPathClient[]>([])\n\n useEffect(() => {\n setSelected(selectedFromProps)\n }, [selectedFromProps])\n\n const router = useRouter()\n const [initialState, setInitialState] = useState<FormState>()\n const hasInitializedState = React.useRef(false)\n const abortFormStateRef = React.useRef<AbortController>(null)\n const { clearRouteCache } = useRouteCache()\n const collectionPermissions = permissions?.collections?.[slug]\n const searchParams = useSearchParams()\n\n const filteredFields = filterOutUploadFields(fields)\n\n React.useEffect(() => {\n const controller = new AbortController()\n\n if (!hasInitializedState.current) {\n const getInitialState = async () => {\n const { state: result } = await getFormState({\n collectionSlug: slug,\n data: {},\n docPermissions: collectionPermissions,\n docPreferences: null,\n operation: 'update',\n schemaPath: slug,\n signal: controller.signal,\n skipValidation: true,\n })\n\n setInitialState(result)\n hasInitializedState.current = true\n }\n\n void getInitialState()\n }\n\n return () => {\n abortAndIgnore(controller)\n }\n }, [apiRoute, hasInitializedState, serverURL, slug, getFormState, user, collectionPermissions])\n\n const onChange: FormProps['onChange'][0] = useCallback(\n async ({ formState: prevFormState }) => {\n const controller = handleAbortRef(abortFormStateRef)\n\n const { state } = await getFormState({\n collectionSlug: slug,\n docPermissions: collectionPermissions,\n docPreferences: null,\n formState: prevFormState,\n operation: 'update',\n schemaPath: slug,\n signal: controller.signal,\n })\n\n abortFormStateRef.current = null\n\n return state\n },\n [getFormState, slug, collectionPermissions],\n )\n\n useEffect(() => {\n const abortFormState = abortFormStateRef.current\n\n return () => {\n abortAndIgnore(abortFormState)\n }\n }, [])\n\n const queryString = useMemo(() => {\n const queryWithSearch = mergeListSearchAndWhere({\n collectionConfig: collection,\n search: searchParams.get('search'),\n })\n\n return getQueryParams(queryWithSearch)\n }, [collection, searchParams, getQueryParams])\n\n const onSuccess = () => {\n router.replace(\n qs.stringify(\n {\n ...parseSearchParams(searchParams),\n page: selectAll === SelectAllStatus.AllAvailable ? '1' : undefined,\n },\n { addQueryPrefix: true },\n ),\n )\n clearRouteCache() // Use clearRouteCache instead of router.refresh, as we only need to clear the cache if the user has route caching enabled - clearRouteCache checks for this\n closeModal(drawerSlug)\n }\n\n return (\n <DocumentInfoProvider\n collectionSlug={slug}\n currentEditor={user}\n hasPublishedDoc={false}\n id={null}\n initialData={{}}\n initialState={initialState}\n isLocked={false}\n lastUpdateTime={0}\n mostRecentVersionIsAutosaved={false}\n unpublishedVersionCount={0}\n versionCount={0}\n >\n <OperationContext.Provider value=\"update\">\n <div className={`${baseClass}__main`}>\n <div className={`${baseClass}__header`}>\n <h2 className={`${baseClass}__header__title`}>\n {t('general:editingLabel', {\n count,\n label: getTranslation(count > 1 ? plural : singular, i18n),\n })}\n </h2>\n <button\n aria-label={t('general:close')}\n className={`${baseClass}__header__close`}\n id={`close-drawer__${drawerSlug}`}\n onClick={() => closeModal(drawerSlug)}\n type=\"button\"\n >\n <XIcon />\n </button>\n </div>\n <Form\n className={`${baseClass}__form`}\n initialState={initialState}\n onChange={[onChange]}\n onSuccess={onSuccess}\n >\n <FieldSelect fields={filteredFields} setSelected={setSelected} />\n {selected.length === 0 ? null : (\n <RenderFields\n fields={selected}\n parentIndexPath=\"\"\n parentPath=\"\"\n parentSchemaPath={slug}\n permissions={collectionPermissions?.fields}\n readOnly={false}\n />\n )}\n <div className={`${baseClass}__sidebar-wrap`}>\n <div className={`${baseClass}__sidebar`}>\n <div className={`${baseClass}__sidebar-sticky-wrap`}>\n <div className={`${baseClass}__document-actions`}>\n {collection?.versions?.drafts ? (\n <React.Fragment>\n <SaveDraftButton\n action={`${serverURL}${apiRoute}/${slug}${queryString}&draft=true`}\n disabled={selected.length === 0}\n selected={selected}\n />\n <PublishButton\n action={`${serverURL}${apiRoute}/${slug}${queryString}&draft=true`}\n disabled={selected.length === 0}\n selected={selected}\n />\n </React.Fragment>\n ) : (\n <Submit\n action={`${serverURL}${apiRoute}/${slug}${queryString}`}\n disabled={selected.length === 0}\n selected={selected}\n />\n )}\n </div>\n </div>\n </div>\n </div>\n </Form>\n </div>\n </OperationContext.Provider>\n </DocumentInfoProvider>\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -50,7 +50,7 @@ const reduceFields = ({
50
50
  const CustomLabel = formState?.[path]?.customComponents?.Label;
51
51
  return fields?.reduce((fieldsToUse, field) => {
52
52
  // escape for a variety of reasons, include ui fields as they have `name`.
53
- if ((fieldAffectsData(field) || field.type === 'ui') && (field.admin.disableBulkEdit || field.unique || fieldIsHiddenOrDisabled(field) || 'readOnly' in field && field.readOnly)) {
53
+ if ((fieldAffectsData(field) || field.type === 'ui') && (field.admin?.disableBulkEdit || field.unique || fieldIsHiddenOrDisabled(field) || 'readOnly' in field && field.readOnly)) {
54
54
  return fieldsToUse;
55
55
  }
56
56
  if (!(field.type === 'array' || field.type === 'blocks') && fieldHasSubFields(field)) {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["c","_c","fieldAffectsData","fieldHasSubFields","fieldIsHiddenOrDisabled","React","Fragment","useState","RenderCustomComponent","FieldLabel","useForm","createNestedClientFieldPath","useTranslation","ReactSelect","baseClass","combineLabel","CustomLabel","field","prefix","_jsxs","_jsx","style","display","CustomComponent","Fallback","label","reduceFields","fields","formState","labelPrefix","path","customComponents","Label","reduce","fieldsToUse","type","admin","disableBulkEdit","unique","readOnly","tabs","tabFields","tab","isNamedTab","name","formattedField","value","FieldSelect","t0","$","setSelected","t","dispatchFields","getFields","t1","options","t2","selected","activeFields","map","_temp","Object","keys","length","forEach","find","handleChange","t3","className","children","getOptionValue","_temp2","isMulti","onChange","option","String"],"sources":["../../../src/elements/FieldSelect/index.tsx"],"sourcesContent":["'use client'\nimport type { ClientField, FieldWithPathClient, FormState } from 'payload'\n\nimport { fieldAffectsData, fieldHasSubFields, fieldIsHiddenOrDisabled } from 'payload/shared'\nimport React, { Fragment, useState } from 'react'\n\nimport { RenderCustomComponent } from '../../elements/RenderCustomComponent/index.js'\nimport { FieldLabel } from '../../fields/FieldLabel/index.js'\nimport { useForm } from '../../forms/Form/context.js'\nimport { createNestedClientFieldPath } from '../../forms/Form/createNestedClientFieldPath.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { ReactSelect } from '../ReactSelect/index.js'\nimport './index.scss'\n\nconst baseClass = 'field-select'\n\nexport type FieldSelectProps = {\n readonly fields: ClientField[]\n readonly setSelected: (fields: FieldWithPathClient[]) => void\n}\n\nexport const combineLabel = ({\n CustomLabel,\n field,\n prefix,\n}: {\n CustomLabel?: React.ReactNode\n field?: ClientField\n prefix?: React.ReactNode\n}): React.ReactNode => {\n return (\n <Fragment>\n {prefix ? (\n <Fragment>\n <span style={{ display: 'inline-block' }}>{prefix}</span>\n {' > '}\n </Fragment>\n ) : null}\n <span style={{ display: 'inline-block' }}>\n <RenderCustomComponent\n CustomComponent={CustomLabel}\n Fallback={<FieldLabel label={'label' in field && field.label} />}\n />\n </span>\n </Fragment>\n )\n}\n\nconst reduceFields = ({\n fields,\n formState,\n labelPrefix = null,\n path = '',\n}: {\n fields: ClientField[]\n formState?: FormState\n labelPrefix?: React.ReactNode\n path?: string\n}): { Label: React.ReactNode; value: FieldWithPathClient }[] => {\n if (!fields) {\n return []\n }\n\n const CustomLabel = formState?.[path]?.customComponents?.Label\n\n return fields?.reduce((fieldsToUse, field) => {\n // escape for a variety of reasons, include ui fields as they have `name`.\n if (\n (fieldAffectsData(field) || field.type === 'ui') &&\n (field.admin.disableBulkEdit ||\n field.unique ||\n fieldIsHiddenOrDisabled(field) ||\n ('readOnly' in field && field.readOnly))\n ) {\n return fieldsToUse\n }\n\n if (!(field.type === 'array' || field.type === 'blocks') && fieldHasSubFields(field)) {\n return [\n ...fieldsToUse,\n ...reduceFields({\n fields: field.fields,\n labelPrefix: combineLabel({ CustomLabel, field, prefix: labelPrefix }),\n path: createNestedClientFieldPath(path, field),\n }),\n ]\n }\n\n if (field.type === 'tabs' && 'tabs' in field) {\n return [\n ...fieldsToUse,\n ...field.tabs.reduce((tabFields, tab) => {\n if ('fields' in tab) {\n const isNamedTab = 'name' in tab && tab.name\n return [\n ...tabFields,\n ...reduceFields({\n fields: tab.fields,\n labelPrefix,\n path: isNamedTab ? createNestedClientFieldPath(path, field) : path,\n }),\n ]\n }\n }, []),\n ]\n }\n\n const formattedField = {\n label: combineLabel({ CustomLabel, field, prefix: labelPrefix }),\n value: {\n ...field,\n path: createNestedClientFieldPath(path, field),\n },\n }\n\n return [...fieldsToUse, formattedField]\n }, [])\n}\n\nexport const FieldSelect: React.FC<FieldSelectProps> = ({ fields, setSelected }) => {\n const { t } = useTranslation()\n const { dispatchFields, getFields } = useForm()\n\n const [options] = useState(() => reduceFields({ fields, formState: getFields() }))\n\n const handleChange = (selected) => {\n const activeFields = getFields()\n\n if (selected === null) {\n setSelected([])\n } else {\n setSelected(selected.map(({ value }) => value))\n }\n\n // remove deselected values from form state\n if (selected === null || Object.keys(activeFields || []).length > selected.length) {\n Object.keys(activeFields).forEach((path) => {\n if (\n selected === null ||\n !selected.find((field) => {\n return field.value.path === path\n })\n ) {\n dispatchFields({\n type: 'REMOVE',\n path,\n })\n }\n })\n }\n }\n\n return (\n <div className={baseClass}>\n <FieldLabel label={t('fields:selectFieldsToEdit')} />\n <ReactSelect\n getOptionValue={(option) => {\n if (typeof option.value === 'object' && 'path' in option.value) {\n return String(option.value.path)\n }\n return String(option.value)\n }}\n isMulti\n onChange={handleChange}\n options={options}\n />\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["c","_c","fieldAffectsData","fieldHasSubFields","fieldIsHiddenOrDisabled","React","Fragment","useState","RenderCustomComponent","FieldLabel","useForm","createNestedClientFieldPath","useTranslation","ReactSelect","baseClass","combineLabel","CustomLabel","field","prefix","_jsxs","_jsx","style","display","CustomComponent","Fallback","label","reduceFields","fields","formState","labelPrefix","path","customComponents","Label","reduce","fieldsToUse","type","admin","disableBulkEdit","unique","readOnly","tabs","tabFields","tab","isNamedTab","name","formattedField","value","FieldSelect","t0","$","setSelected","t","dispatchFields","getFields","t1","options","t2","selected","activeFields","map","_temp","Object","keys","length","forEach","find","handleChange","t3","className","children","getOptionValue","_temp2","isMulti","onChange","option","String"],"sources":["../../../src/elements/FieldSelect/index.tsx"],"sourcesContent":["'use client'\nimport type { ClientField, FieldWithPathClient, FormState } from 'payload'\n\nimport { fieldAffectsData, fieldHasSubFields, fieldIsHiddenOrDisabled } from 'payload/shared'\nimport React, { Fragment, useState } from 'react'\n\nimport { RenderCustomComponent } from '../../elements/RenderCustomComponent/index.js'\nimport { FieldLabel } from '../../fields/FieldLabel/index.js'\nimport { useForm } from '../../forms/Form/context.js'\nimport { createNestedClientFieldPath } from '../../forms/Form/createNestedClientFieldPath.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { ReactSelect } from '../ReactSelect/index.js'\nimport './index.scss'\n\nconst baseClass = 'field-select'\n\nexport type FieldSelectProps = {\n readonly fields: ClientField[]\n readonly setSelected: (fields: FieldWithPathClient[]) => void\n}\n\nexport const combineLabel = ({\n CustomLabel,\n field,\n prefix,\n}: {\n CustomLabel?: React.ReactNode\n field?: ClientField\n prefix?: React.ReactNode\n}): React.ReactNode => {\n return (\n <Fragment>\n {prefix ? (\n <Fragment>\n <span style={{ display: 'inline-block' }}>{prefix}</span>\n {' > '}\n </Fragment>\n ) : null}\n <span style={{ display: 'inline-block' }}>\n <RenderCustomComponent\n CustomComponent={CustomLabel}\n Fallback={<FieldLabel label={'label' in field && field.label} />}\n />\n </span>\n </Fragment>\n )\n}\n\nconst reduceFields = ({\n fields,\n formState,\n labelPrefix = null,\n path = '',\n}: {\n fields: ClientField[]\n formState?: FormState\n labelPrefix?: React.ReactNode\n path?: string\n}): { Label: React.ReactNode; value: FieldWithPathClient }[] => {\n if (!fields) {\n return []\n }\n\n const CustomLabel = formState?.[path]?.customComponents?.Label\n\n return fields?.reduce((fieldsToUse, field) => {\n // escape for a variety of reasons, include ui fields as they have `name`.\n if (\n (fieldAffectsData(field) || field.type === 'ui') &&\n (field.admin?.disableBulkEdit ||\n field.unique ||\n fieldIsHiddenOrDisabled(field) ||\n ('readOnly' in field && field.readOnly))\n ) {\n return fieldsToUse\n }\n\n if (!(field.type === 'array' || field.type === 'blocks') && fieldHasSubFields(field)) {\n return [\n ...fieldsToUse,\n ...reduceFields({\n fields: field.fields,\n labelPrefix: combineLabel({ CustomLabel, field, prefix: labelPrefix }),\n path: createNestedClientFieldPath(path, field),\n }),\n ]\n }\n\n if (field.type === 'tabs' && 'tabs' in field) {\n return [\n ...fieldsToUse,\n ...field.tabs.reduce((tabFields, tab) => {\n if ('fields' in tab) {\n const isNamedTab = 'name' in tab && tab.name\n return [\n ...tabFields,\n ...reduceFields({\n fields: tab.fields,\n labelPrefix,\n path: isNamedTab ? createNestedClientFieldPath(path, field) : path,\n }),\n ]\n }\n }, []),\n ]\n }\n\n const formattedField = {\n label: combineLabel({ CustomLabel, field, prefix: labelPrefix }),\n value: {\n ...field,\n path: createNestedClientFieldPath(path, field),\n },\n }\n\n return [...fieldsToUse, formattedField]\n }, [])\n}\n\nexport const FieldSelect: React.FC<FieldSelectProps> = ({ fields, setSelected }) => {\n const { t } = useTranslation()\n const { dispatchFields, getFields } = useForm()\n\n const [options] = useState(() => reduceFields({ fields, formState: getFields() }))\n\n const handleChange = (selected) => {\n const activeFields = getFields()\n\n if (selected === null) {\n setSelected([])\n } else {\n setSelected(selected.map(({ value }) => value))\n }\n\n // remove deselected values from form state\n if (selected === null || Object.keys(activeFields || []).length > selected.length) {\n Object.keys(activeFields).forEach((path) => {\n if (\n selected === null ||\n !selected.find((field) => {\n return field.value.path === path\n })\n ) {\n dispatchFields({\n type: 'REMOVE',\n path,\n })\n }\n })\n }\n }\n\n return (\n <div className={baseClass}>\n <FieldLabel label={t('fields:selectFieldsToEdit')} />\n <ReactSelect\n getOptionValue={(option) => {\n if (typeof option.value === 'object' && 'path' in option.value) {\n return String(option.value.path)\n }\n return String(option.value)\n }}\n isMulti\n onChange={handleChange}\n options={options}\n />\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,8 @@
1
+ import type { ListPreset } from 'payload';
2
+ import './index.scss';
3
+ export declare function ActiveListPreset({ activePreset, openPresetListDrawer, resetPreset, }: {
4
+ activePreset: ListPreset;
5
+ openPresetListDrawer: () => void;
6
+ resetPreset: () => Promise<void>;
7
+ }): import("react").JSX.Element;
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/elements/ListControls/ActiveListPreset/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAMzC,OAAO,cAAc,CAAA;AAIrB,wBAAgB,gBAAgB,CAAC,EAC/B,YAAY,EACZ,oBAAoB,EACpB,WAAW,GACZ,EAAE;IACD,YAAY,EAAE,UAAU,CAAA;IACxB,oBAAoB,EAAE,MAAM,IAAI,CAAA;IAChC,WAAW,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CACjC,+BAoCA"}
@@ -0,0 +1,102 @@
1
+ 'use client';
2
+
3
+ import { c as _c } from "react/compiler-runtime";
4
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
5
+ import { PeopleIcon } from '../../../icons/People/index.js';
6
+ import { XIcon } from '../../../icons/X/index.js';
7
+ import { useTranslation } from '../../../providers/Translation/index.js';
8
+ import { Pill } from '../../Pill/index.js';
9
+ import './index.scss';
10
+ const baseClass = 'active-list-preset';
11
+ export function ActiveListPreset(t0) {
12
+ const $ = _c(17);
13
+ const {
14
+ activePreset,
15
+ openPresetListDrawer,
16
+ resetPreset
17
+ } = t0;
18
+ const {
19
+ t
20
+ } = useTranslation();
21
+ const t1 = activePreset && `${baseClass}--active`;
22
+ let t2;
23
+ if ($[0] !== t1) {
24
+ t2 = [baseClass, t1].filter(Boolean);
25
+ $[0] = t1;
26
+ $[1] = t2;
27
+ } else {
28
+ t2 = $[1];
29
+ }
30
+ const t3 = t2.join(" ");
31
+ let t4;
32
+ if ($[2] !== openPresetListDrawer) {
33
+ t4 = () => {
34
+ openPresetListDrawer();
35
+ };
36
+ $[2] = openPresetListDrawer;
37
+ $[3] = t4;
38
+ } else {
39
+ t4 = $[3];
40
+ }
41
+ const t5 = activePreset ? "always-white" : "light";
42
+ let t6;
43
+ if ($[4] !== activePreset?.isShared) {
44
+ t6 = activePreset?.isShared && _jsx(PeopleIcon, {
45
+ className: `${baseClass}__shared`
46
+ });
47
+ $[4] = activePreset?.isShared;
48
+ $[5] = t6;
49
+ } else {
50
+ t6 = $[5];
51
+ }
52
+ let t7;
53
+ if ($[6] !== activePreset?.title || $[7] !== t) {
54
+ t7 = activePreset?.title || t("general:selectLabel", {
55
+ label: t("general:preset")
56
+ });
57
+ $[6] = activePreset?.title;
58
+ $[7] = t;
59
+ $[8] = t7;
60
+ } else {
61
+ t7 = $[8];
62
+ }
63
+ let t8;
64
+ if ($[9] !== activePreset || $[10] !== resetPreset || $[11] !== t3 || $[12] !== t4 || $[13] !== t5 || $[14] !== t6 || $[15] !== t7) {
65
+ t8 = _jsxs(Pill, {
66
+ className: t3,
67
+ id: "select-preset",
68
+ onClick: t4,
69
+ pillStyle: t5,
70
+ children: [t6, _jsx("div", {
71
+ className: `${baseClass}__label-text`,
72
+ children: t7
73
+ }), activePreset ? _jsx("div", {
74
+ className: `${baseClass}__clear`,
75
+ id: "clear-preset",
76
+ onClick: async e => {
77
+ e.stopPropagation();
78
+ await resetPreset();
79
+ },
80
+ onKeyDown: async e_0 => {
81
+ e_0.stopPropagation();
82
+ await resetPreset();
83
+ },
84
+ role: "button",
85
+ tabIndex: 0,
86
+ children: _jsx(XIcon, {})
87
+ }) : null]
88
+ });
89
+ $[9] = activePreset;
90
+ $[10] = resetPreset;
91
+ $[11] = t3;
92
+ $[12] = t4;
93
+ $[13] = t5;
94
+ $[14] = t6;
95
+ $[15] = t7;
96
+ $[16] = t8;
97
+ } else {
98
+ t8 = $[16];
99
+ }
100
+ return t8;
101
+ }
102
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["c","_c","PeopleIcon","XIcon","useTranslation","Pill","baseClass","ActiveListPreset","t0","$","activePreset","openPresetListDrawer","resetPreset","t","t1","t2","filter","Boolean","t3","join","t4","t5","t6","isShared","_jsx","className","t7","title","label","t8","_jsxs","id","onClick","pillStyle","children","e","stopPropagation","onKeyDown","e_0","role","tabIndex"],"sources":["../../../../src/elements/ListControls/ActiveListPreset/index.tsx"],"sourcesContent":["'use client'\nimport type { ListPreset } from 'payload'\n\nimport { PeopleIcon } from '../../../icons/People/index.js'\nimport { XIcon } from '../../../icons/X/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport { Pill } from '../../Pill/index.js'\nimport './index.scss'\n\nconst baseClass = 'active-list-preset'\n\nexport function ActiveListPreset({\n activePreset,\n openPresetListDrawer,\n resetPreset,\n}: {\n activePreset: ListPreset\n openPresetListDrawer: () => void\n resetPreset: () => Promise<void>\n}) {\n const { t } = useTranslation()\n\n return (\n <Pill\n className={[baseClass, activePreset && `${baseClass}--active`].filter(Boolean).join(' ')}\n id=\"select-preset\"\n onClick={() => {\n openPresetListDrawer()\n }}\n pillStyle={activePreset ? 'always-white' : 'light'}\n >\n {activePreset?.isShared && <PeopleIcon className={`${baseClass}__shared`} />}\n <div className={`${baseClass}__label-text`}>\n {activePreset?.title || t('general:selectLabel', { label: t('general:preset') })}\n </div>\n {activePreset ? (\n <div\n className={`${baseClass}__clear`}\n id=\"clear-preset\"\n onClick={async (e) => {\n e.stopPropagation()\n await resetPreset()\n }}\n onKeyDown={async (e) => {\n e.stopPropagation()\n await resetPreset()\n }}\n role=\"button\"\n tabIndex={0}\n >\n <XIcon />\n </div>\n ) : null}\n </Pill>\n )\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;;AAGA,SAASC,UAAU,QAAQ;AAC3B,SAASC,KAAK,QAAQ;AACtB,SAASC,cAAc,QAAQ;AAC/B,SAASC,IAAI,QAAQ;AACrB,OAAO;AAEP,MAAMC,SAAA,GAAY;AAElB,OAAO,SAAAC,iBAAAC,EAAA;EAAA,MAAAC,CAAA,GAAAR,EAAA;EAA0B;IAAAS,YAAA;IAAAC,oBAAA;IAAAC;EAAA,IAAAJ,EAQhC;EACC;IAAAK;EAAA,IAAcT,cAAA;EAIa,MAAAU,EAAA,GAAAJ,YAAA,IAAgB,GAAAJ,SAAA,UAAsB;EAAA,IAAAS,EAAA;EAAA,IAAAN,CAAA,QAAAK,EAAA;IAAlDC,EAAA,IAAAT,SAAA,EAAYQ,EAAsC,EAAAE,MAAA,CAAAC,OAAS;IAAAR,CAAA,MAAAK,EAAA;IAAAL,CAAA,MAAAM,EAAA;EAAA;IAAAA,EAAA,GAAAN,CAAA;EAAA;EAA3D,MAAAS,EAAA,GAAAH,EAA2D,CAAAI,IAAA,CAAc;EAAA,IAAAC,EAAA;EAAA,IAAAX,CAAA,QAAAE,oBAAA;IAE3ES,EAAA,GAAAA,CAAA;MACPT,oBAAA;IAAA;IACFF,CAAA,MAAAE,oBAAA;IAAAF,CAAA,MAAAW,EAAA;EAAA;IAAAA,EAAA,GAAAX,CAAA;EAAA;EACW,MAAAY,EAAA,GAAAX,YAAA,GAAe,iBAAiB;EAAA,IAAAY,EAAA;EAAA,IAAAb,CAAA,QAAAC,YAAA,EAAAa,QAAA;IAE1CD,EAAA,GAAAZ,YAAA,EAAAa,QAAA,IAA0BC,IAAA,CAAAtB,UAAA;MAAAuB,SAAA,EAAuB,GAAAnB,SAAA;IAAsB,C;;;;;;;;IAErEoB,EAAA,GAAAhB,YAAA,EAAAiB,KAAA,IAAuBd,CAAA,CAAE;MAAAe,KAAA,EAAgCf,CAAA,CAAE;IAAA,CAAkB;IAAAJ,CAAA,MAAAC,YAAA,EAAAiB,KAAA;IAAAlB,CAAA,MAAAI,CAAA;IAAAJ,CAAA,MAAAiB,EAAA;EAAA;IAAAA,EAAA,GAAAjB,CAAA;EAAA;EAAA,IAAAoB,EAAA;EAAA,IAAApB,CAAA,QAAAC,YAAA,IAAAD,CAAA,SAAAG,WAAA,IAAAH,CAAA,SAAAS,EAAA,IAAAT,CAAA,SAAAW,EAAA,IAAAX,CAAA,SAAAY,EAAA,IAAAZ,CAAA,SAAAa,EAAA,IAAAb,CAAA,SAAAiB,EAAA;IAVlFG,EAAA,GAAAC,KAAA,CAAAzB,IAAA;MAAAoB,SAAA,EACaP,EAAyE;MAAAa,EAAA,EACjF;MAAAC,OAAA,EACMZ,EAET;MAAAa,SAAA,EACWZ,EAAgC;MAAAa,QAAA,GAE1CZ,E,EACDE,IAAA,CAAC;QAAAC,SAAA,EAAe,GAAAnB,SAAA,cAA0B;QAAA4B,QAAA,EACvCR;MAA6E,C,GAE/EhB,YAAA,GACCc,IAAA,CAAC;QAAAC,SAAA,EACY,GAAAnB,SAAA,SAAqB;QAAAyB,EAAA,EAC7B;QAAAC,OAAA,QAAAG,CAAA;UAEDA,CAAA,CAAAC,eAAA,CAAiB;UAAA,MACXxB,WAAA;QAAA;QAAAyB,SAAA,QAAAC,GAAA;UAGNH,GAAA,CAAAC,eAAA,CAAiB;UAAA,MACXxB,WAAA;QAAA;QAAA2B,IAAA,EAEH;QAAAC,QAAA;QAAAN,QAAA,EAGLV,IAAA,CAAArB,KAAA,IAAC;MAAA,C,QAED;IAAA,C;;;;;;;;;;;;SA7BN0B,E","ignoreList":[]}
@@ -0,0 +1,21 @@
1
+ @import '../../../scss/styles';
2
+
3
+ @layer payload-default {
4
+ .active-list-preset {
5
+ &.pill {
6
+ max-width: 150px;
7
+ overflow: hidden;
8
+ }
9
+
10
+ .pill__label {
11
+ display: flex;
12
+ align-items: center;
13
+ }
14
+
15
+ &__label-text {
16
+ text-overflow: ellipsis;
17
+ overflow: hidden;
18
+ white-space: nowrap;
19
+ }
20
+ }
21
+ }
@@ -1,29 +1,6 @@
1
- import type { ClientCollectionConfig, ResolvedFilterOptions, Where } from 'payload';
2
1
  import React from 'react';
2
+ import type { ListControlsProps } from './types.js';
3
3
  import './index.scss';
4
- export type ListControlsProps = {
5
- readonly beforeActions?: React.ReactNode[];
6
- readonly collectionConfig: ClientCollectionConfig;
7
- readonly collectionSlug: string;
8
- /**
9
- * @deprecated
10
- * These are now handled by the `ListSelection` component
11
- */
12
- readonly disableBulkDelete?: boolean;
13
- /**
14
- * @deprecated
15
- * These are now handled by the `ListSelection` component
16
- */
17
- readonly disableBulkEdit?: boolean;
18
- readonly enableColumns?: boolean;
19
- readonly enableSort?: boolean;
20
- readonly handleSearchChange?: (search: string) => void;
21
- readonly handleSortChange?: (sort: string) => void;
22
- readonly handleWhereChange?: (where: Where) => void;
23
- readonly listMenuItems?: React.ReactNode[];
24
- readonly renderedFilters?: Map<string, React.ReactNode>;
25
- readonly resolvedFilterOptions?: Map<string, ResolvedFilterOptions>;
26
- };
27
4
  /**
28
5
  * The ListControls component is used to render the controls (search, filter, where)
29
6
  * for a collection's list view. You can find those directly above the table which lists
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/ListControls/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAInF,OAAO,KAAsC,MAAM,OAAO,CAAA;AAgB1D,OAAO,cAAc,CAAA;AAIrB,MAAM,MAAM,iBAAiB,GAAG;IAC9B,QAAQ,CAAC,aAAa,CAAC,EAAE,KAAK,CAAC,SAAS,EAAE,CAAA;IAC1C,QAAQ,CAAC,gBAAgB,EAAE,sBAAsB,CAAA;IACjD,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;IAC/B;;;OAGG;IACH,QAAQ,CAAC,iBAAiB,CAAC,EAAE,OAAO,CAAA;IACpC;;;OAGG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,CAAA;IAClC,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAA;IAChC,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAA;IAC7B,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAA;IACtD,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IAClD,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAA;IACnD,QAAQ,CAAC,aAAa,CAAC,EAAE,KAAK,CAAC,SAAS,EAAE,CAAA;IAC1C,QAAQ,CAAC,eAAe,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,CAAA;IACvD,QAAQ,CAAC,qBAAqB,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAA;CACpE,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CA4LpD,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;AAiBnD,OAAO,cAAc,CAAA;AAIrB;;;;GAIG;AACH,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CAwNpD,CAAA"}
@@ -3,7 +3,8 @@
3
3
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
4
4
  import { useWindowInfo } from '@faceless-ui/window-info';
5
5
  import { getTranslation } from '@payloadcms/translations';
6
- import React, { useEffect, useRef, useState } from 'react';
6
+ import { validateWhereQuery } from 'payload/shared';
7
+ import React, { Fragment, useEffect, useRef, useState } from 'react';
7
8
  import { Popup, PopupList } from '../../elements/Popup/index.js';
8
9
  import { useUseTitleField } from '../../hooks/useUseAsTitle.js';
9
10
  import { ChevronIcon } from '../../icons/Chevron/index.js';
@@ -16,8 +17,9 @@ import { ColumnSelector } from '../ColumnSelector/index.js';
16
17
  import { Pill } from '../Pill/index.js';
17
18
  import { SearchFilter } from '../SearchFilter/index.js';
18
19
  import { WhereBuilder } from '../WhereBuilder/index.js';
19
- import validateWhereQuery from '../WhereBuilder/validateWhereQuery.js';
20
+ import { ActiveListPreset } from './ActiveListPreset/index.js';
20
21
  import { getTextFieldsToBeSearched } from './getTextFieldsToBeSearched.js';
22
+ import { useListPresets } from './useListPresets.js';
21
23
  import './index.scss';
22
24
  const baseClass = 'list-controls';
23
25
  /**
@@ -27,12 +29,14 @@ const baseClass = 'list-controls';
27
29
  */
28
30
  export const ListControls = props => {
29
31
  const {
32
+ activePreset,
30
33
  beforeActions,
31
34
  collectionConfig,
32
35
  collectionSlug,
36
+ disableListPresets,
33
37
  enableColumns = true,
34
38
  enableSort = false,
35
- listMenuItems,
39
+ listMenuItems: listMenuItemsFromProps,
36
40
  renderedFilters,
37
41
  resolvedFilterOptions
38
42
  } = props;
@@ -40,6 +44,19 @@ export const ListControls = props => {
40
44
  handleSearchChange,
41
45
  query
42
46
  } = useListQuery();
47
+ const {
48
+ CreateNewPresetDrawer,
49
+ DeletePresetModal,
50
+ EditPresetDrawer,
51
+ hasModifiedPreset,
52
+ listPresetMenuItems,
53
+ openPresetListDrawer,
54
+ PresetListDrawer,
55
+ resetPreset
56
+ } = useListPresets({
57
+ activePreset,
58
+ collectionSlug
59
+ });
43
60
  const titleField = useUseTitleField(collectionConfig);
44
61
  const {
45
62
  i18n,
@@ -85,92 +102,99 @@ export const ListControls = props => {
85
102
  });
86
103
  }
87
104
  }, [t, listSearchableFields, i18n, searchLabel]);
88
- return /*#__PURE__*/_jsxs("div", {
89
- className: baseClass,
105
+ const listMenuItems = listMenuItemsFromProps || [];
106
+ if (collectionConfig?.enableListPresets && !disableListPresets) {
107
+ listMenuItems.push(listPresetMenuItems);
108
+ }
109
+ return /*#__PURE__*/_jsxs(Fragment, {
90
110
  children: [/*#__PURE__*/_jsxs("div", {
91
- className: `${baseClass}__wrap`,
92
- children: [/*#__PURE__*/_jsx(SearchIcon, {}), /*#__PURE__*/_jsx(SearchFilter, {
93
- fieldName: titleField && 'name' in titleField ? titleField?.name : null,
94
- handleChange: search => {
95
- return void handleSearchChange(search);
96
- },
97
- // @ts-expect-error @todo: fix types
98
- initialParams: query,
99
- label: searchLabelTranslated.current
100
- }, collectionSlug), /*#__PURE__*/_jsx("div", {
101
- className: `${baseClass}__buttons`,
102
- children: /*#__PURE__*/_jsxs("div", {
103
- className: `${baseClass}__buttons-wrap`,
104
- children: [!smallBreak && /*#__PURE__*/_jsx(React.Fragment, {
105
- children: beforeActions && beforeActions
106
- }), enableColumns && /*#__PURE__*/_jsx(Pill, {
107
- "aria-controls": `${baseClass}-columns`,
108
- "aria-expanded": visibleDrawer === 'columns',
109
- className: `${baseClass}__toggle-columns`,
110
- icon: /*#__PURE__*/_jsx(ChevronIcon, {
111
- direction: visibleDrawer === 'columns' ? 'up' : 'down'
112
- }),
113
- onClick: () => setVisibleDrawer(visibleDrawer !== 'columns' ? 'columns' : undefined),
114
- pillStyle: "light",
115
- children: t('general:columns')
116
- }), /*#__PURE__*/_jsx(Pill, {
117
- "aria-controls": `${baseClass}-where`,
118
- "aria-expanded": visibleDrawer === 'where',
119
- className: `${baseClass}__toggle-where`,
120
- icon: /*#__PURE__*/_jsx(ChevronIcon, {
121
- direction: visibleDrawer === 'where' ? 'up' : 'down'
122
- }),
123
- onClick: () => setVisibleDrawer(visibleDrawer !== 'where' ? 'where' : undefined),
124
- pillStyle: "light",
125
- children: t('general:filters')
126
- }), enableSort && /*#__PURE__*/_jsx(Pill, {
127
- "aria-controls": `${baseClass}-sort`,
128
- "aria-expanded": visibleDrawer === 'sort',
129
- className: `${baseClass}__toggle-sort`,
130
- icon: /*#__PURE__*/_jsx(ChevronIcon, {}),
131
- onClick: () => setVisibleDrawer(visibleDrawer !== 'sort' ? 'sort' : undefined),
132
- pillStyle: "light",
133
- children: t('general:sort')
134
- }), listMenuItems && /*#__PURE__*/_jsx(Popup, {
135
- button: /*#__PURE__*/_jsx(Dots, {
136
- ariaLabel: t('general:moreOptions')
137
- }),
138
- className: `${baseClass}__popup`,
139
- horizontalAlign: "right",
140
- size: "large",
141
- verticalAlign: "bottom",
142
- children: /*#__PURE__*/_jsx(PopupList.ButtonGroup, {
143
- children: listMenuItems.map(item => item)
144
- })
145
- })]
111
+ className: baseClass,
112
+ children: [/*#__PURE__*/_jsxs("div", {
113
+ className: `${baseClass}__wrap`,
114
+ children: [/*#__PURE__*/_jsx(SearchIcon, {}), /*#__PURE__*/_jsx(SearchFilter, {
115
+ fieldName: titleField && 'name' in titleField ? titleField?.name : null,
116
+ handleChange: search => {
117
+ return void handleSearchChange(search);
118
+ },
119
+ // @ts-expect-error @todo: fix types
120
+ initialParams: query,
121
+ label: searchLabelTranslated.current
122
+ }, collectionSlug), activePreset && hasModifiedPreset ? /*#__PURE__*/_jsx("div", {
123
+ className: `${baseClass}__modified`,
124
+ children: "Modified"
125
+ }) : null, /*#__PURE__*/_jsx("div", {
126
+ className: `${baseClass}__buttons`,
127
+ children: /*#__PURE__*/_jsxs("div", {
128
+ className: `${baseClass}__buttons-wrap`,
129
+ children: [!smallBreak && /*#__PURE__*/_jsx(React.Fragment, {
130
+ children: beforeActions && beforeActions
131
+ }), enableColumns && /*#__PURE__*/_jsx(Pill, {
132
+ "aria-controls": `${baseClass}-columns`,
133
+ "aria-expanded": visibleDrawer === 'columns',
134
+ className: `${baseClass}__toggle-columns`,
135
+ icon: /*#__PURE__*/_jsx(ChevronIcon, {
136
+ direction: visibleDrawer === 'columns' ? 'up' : 'down'
137
+ }),
138
+ onClick: () => setVisibleDrawer(visibleDrawer !== 'columns' ? 'columns' : undefined),
139
+ pillStyle: "light",
140
+ children: t('general:columns')
141
+ }), /*#__PURE__*/_jsx(Pill, {
142
+ "aria-controls": `${baseClass}-where`,
143
+ "aria-expanded": visibleDrawer === 'where',
144
+ className: `${baseClass}__toggle-where`,
145
+ icon: /*#__PURE__*/_jsx(ChevronIcon, {
146
+ direction: visibleDrawer === 'where' ? 'up' : 'down'
147
+ }),
148
+ onClick: () => setVisibleDrawer(visibleDrawer !== 'where' ? 'where' : undefined),
149
+ pillStyle: "light",
150
+ children: t('general:filters')
151
+ }), enableSort && /*#__PURE__*/_jsx(Pill, {
152
+ "aria-controls": `${baseClass}-sort`,
153
+ "aria-expanded": visibleDrawer === 'sort',
154
+ className: `${baseClass}__toggle-sort`,
155
+ icon: /*#__PURE__*/_jsx(ChevronIcon, {}),
156
+ onClick: () => setVisibleDrawer(visibleDrawer !== 'sort' ? 'sort' : undefined),
157
+ pillStyle: "light",
158
+ children: t('general:sort')
159
+ }), !disableListPresets && /*#__PURE__*/_jsx(ActiveListPreset, {
160
+ activePreset: activePreset,
161
+ openPresetListDrawer: openPresetListDrawer,
162
+ resetPreset: resetPreset
163
+ }), listMenuItems && Array.isArray(listMenuItems) && listMenuItems.length > 0 && /*#__PURE__*/_jsx(Popup, {
164
+ button: /*#__PURE__*/_jsx(Dots, {
165
+ ariaLabel: t('general:moreOptions')
166
+ }),
167
+ className: `${baseClass}__popup`,
168
+ horizontalAlign: "right",
169
+ id: "list-menu",
170
+ size: "large",
171
+ verticalAlign: "bottom",
172
+ children: /*#__PURE__*/_jsx(PopupList.ButtonGroup, {
173
+ children: listMenuItems
174
+ })
175
+ })]
176
+ })
177
+ })]
178
+ }), enableColumns && /*#__PURE__*/_jsx(AnimateHeight, {
179
+ className: `${baseClass}__columns`,
180
+ height: visibleDrawer === 'columns' ? 'auto' : 0,
181
+ id: `${baseClass}-columns`,
182
+ children: /*#__PURE__*/_jsx(ColumnSelector, {
183
+ collectionSlug: collectionConfig.slug
184
+ })
185
+ }), /*#__PURE__*/_jsx(AnimateHeight, {
186
+ className: `${baseClass}__where`,
187
+ height: visibleDrawer === 'where' ? 'auto' : 0,
188
+ id: `${baseClass}-where`,
189
+ children: /*#__PURE__*/_jsx(WhereBuilder, {
190
+ collectionPluralLabel: collectionConfig?.labels?.plural,
191
+ collectionSlug: collectionConfig.slug,
192
+ fields: collectionConfig?.fields,
193
+ renderedFilters: renderedFilters,
194
+ resolvedFilterOptions: resolvedFilterOptions
146
195
  })
147
196
  })]
148
- }), enableColumns && /*#__PURE__*/_jsx(AnimateHeight, {
149
- className: `${baseClass}__columns`,
150
- height: visibleDrawer === 'columns' ? 'auto' : 0,
151
- id: `${baseClass}-columns`,
152
- children: /*#__PURE__*/_jsx(ColumnSelector, {
153
- collectionSlug: collectionConfig.slug
154
- })
155
- }), /*#__PURE__*/_jsx(AnimateHeight, {
156
- className: `${baseClass}__where`,
157
- height: visibleDrawer === 'where' ? 'auto' : 0,
158
- id: `${baseClass}-where`,
159
- children: /*#__PURE__*/_jsx(WhereBuilder, {
160
- collectionPluralLabel: collectionConfig?.labels?.plural,
161
- collectionSlug: collectionConfig.slug,
162
- fields: collectionConfig?.fields,
163
- renderedFilters: renderedFilters,
164
- resolvedFilterOptions: resolvedFilterOptions
165
- })
166
- }), enableSort && /*#__PURE__*/_jsx(AnimateHeight, {
167
- className: `${baseClass}__sort`,
168
- height: visibleDrawer === 'sort' ? 'auto' : 0,
169
- id: `${baseClass}-sort`,
170
- children: /*#__PURE__*/_jsx("p", {
171
- children: "Sort Complex"
172
- })
173
- })]
197
+ }), PresetListDrawer, EditPresetDrawer, CreateNewPresetDrawer, DeletePresetModal]
174
198
  });
175
199
  };
176
200
  //# sourceMappingURL=index.js.map