@payloadcms/ui 3.23.0-canary.fa36283 → 3.24.0-canary.05013b2

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 (302) hide show
  1. package/dist/elements/AppHeader/index.d.ts.map +1 -1
  2. package/dist/elements/AppHeader/index.js +2 -4
  3. package/dist/elements/AppHeader/index.js.map +1 -1
  4. package/dist/elements/Banner/index.d.ts.map +1 -1
  5. package/dist/elements/Banner/index.js +1 -2
  6. package/dist/elements/Banner/index.js.map +1 -1
  7. package/dist/elements/BulkUpload/EditForm/index.d.ts.map +1 -1
  8. package/dist/elements/BulkUpload/EditForm/index.js +6 -2
  9. package/dist/elements/BulkUpload/EditForm/index.js.map +1 -1
  10. package/dist/elements/BulkUpload/EditMany/DrawerContent.d.ts.map +1 -1
  11. package/dist/elements/BulkUpload/EditMany/DrawerContent.js +22 -20
  12. package/dist/elements/BulkUpload/EditMany/DrawerContent.js.map +1 -1
  13. package/dist/elements/Button/index.d.ts.map +1 -1
  14. package/dist/elements/Button/index.js +11 -12
  15. package/dist/elements/Button/index.js.map +1 -1
  16. package/dist/elements/Button/types.d.ts +5 -0
  17. package/dist/elements/Button/types.d.ts.map +1 -1
  18. package/dist/elements/Button/types.js.map +1 -1
  19. package/dist/elements/Card/index.d.ts +7 -3
  20. package/dist/elements/Card/index.d.ts.map +1 -1
  21. package/dist/elements/Card/index.js +0 -2
  22. package/dist/elements/Card/index.js.map +1 -1
  23. package/dist/elements/CopyLocaleData/index.d.ts.map +1 -1
  24. package/dist/elements/CopyLocaleData/index.js +220 -99
  25. package/dist/elements/CopyLocaleData/index.js.map +1 -1
  26. package/dist/elements/DeleteDocument/index.d.ts.map +1 -1
  27. package/dist/elements/DeleteDocument/index.js +7 -3
  28. package/dist/elements/DeleteDocument/index.js.map +1 -1
  29. package/dist/elements/DeleteMany/index.d.ts.map +1 -1
  30. package/dist/elements/DeleteMany/index.js +2 -2
  31. package/dist/elements/DeleteMany/index.js.map +1 -1
  32. package/dist/elements/DocumentControls/index.d.ts.map +1 -1
  33. package/dist/elements/DocumentControls/index.js.map +1 -1
  34. package/dist/elements/DocumentLocked/index.d.ts.map +1 -1
  35. package/dist/elements/DocumentLocked/index.js +67 -39
  36. package/dist/elements/DocumentLocked/index.js.map +1 -1
  37. package/dist/elements/DocumentTakeOver/index.d.ts.map +1 -1
  38. package/dist/elements/DocumentTakeOver/index.js +28 -12
  39. package/dist/elements/DocumentTakeOver/index.js.map +1 -1
  40. package/dist/elements/DuplicateDocument/index.d.ts.map +1 -1
  41. package/dist/elements/DuplicateDocument/index.js +8 -4
  42. package/dist/elements/DuplicateDocument/index.js.map +1 -1
  43. package/dist/elements/EditMany/DrawerContent.d.ts.map +1 -1
  44. package/dist/elements/EditMany/DrawerContent.js +3 -2
  45. package/dist/elements/EditMany/DrawerContent.js.map +1 -1
  46. package/dist/elements/EditUpload/index.js +1 -1
  47. package/dist/elements/EditUpload/index.js.map +1 -1
  48. package/dist/elements/FileDetails/DraggableFileDetails/index.d.ts +1 -0
  49. package/dist/elements/FileDetails/DraggableFileDetails/index.d.ts.map +1 -1
  50. package/dist/elements/FileDetails/DraggableFileDetails/index.js +19 -17
  51. package/dist/elements/FileDetails/DraggableFileDetails/index.js.map +1 -1
  52. package/dist/elements/FileDetails/StaticFileDetails/index.d.ts +1 -0
  53. package/dist/elements/FileDetails/StaticFileDetails/index.d.ts.map +1 -1
  54. package/dist/elements/FileDetails/StaticFileDetails/index.js +2 -1
  55. package/dist/elements/FileDetails/StaticFileDetails/index.js.map +1 -1
  56. package/dist/elements/FileDetails/index.d.ts +1 -0
  57. package/dist/elements/FileDetails/index.d.ts.map +1 -1
  58. package/dist/elements/FileDetails/index.js.map +1 -1
  59. package/dist/elements/LeaveWithoutSaving/index.js.map +1 -1
  60. package/dist/elements/LeaveWithoutSaving/usePreventLeave.d.ts.map +1 -1
  61. package/dist/elements/LeaveWithoutSaving/usePreventLeave.js +6 -2
  62. package/dist/elements/LeaveWithoutSaving/usePreventLeave.js.map +1 -1
  63. package/dist/elements/Link/formatUrl.d.ts +4 -0
  64. package/dist/elements/Link/formatUrl.d.ts.map +1 -0
  65. package/dist/elements/Link/formatUrl.js +87 -0
  66. package/dist/elements/Link/formatUrl.js.map +1 -0
  67. package/dist/elements/Link/index.d.ts +6 -0
  68. package/dist/elements/Link/index.d.ts.map +1 -0
  69. package/dist/elements/Link/index.js +58 -0
  70. package/dist/elements/Link/index.js.map +1 -0
  71. package/dist/elements/ListControls/index.d.ts +2 -1
  72. package/dist/elements/ListControls/index.d.ts.map +1 -1
  73. package/dist/elements/ListControls/index.js +6 -4
  74. package/dist/elements/ListControls/index.js.map +1 -1
  75. package/dist/elements/Logout/index.d.ts +5 -0
  76. package/dist/elements/Logout/index.d.ts.map +1 -1
  77. package/dist/elements/Logout/index.js +10 -13
  78. package/dist/elements/Logout/index.js.map +1 -1
  79. package/dist/elements/Nav/context.d.ts.map +1 -1
  80. package/dist/elements/Nav/context.js +3 -1
  81. package/dist/elements/Nav/context.js.map +1 -1
  82. package/dist/elements/Pill/index.d.ts.map +1 -1
  83. package/dist/elements/Pill/index.js +1 -2
  84. package/dist/elements/Pill/index.js.map +1 -1
  85. package/dist/elements/Popup/PopupButtonList/index.d.ts.map +1 -1
  86. package/dist/elements/Popup/PopupButtonList/index.js +1 -2
  87. package/dist/elements/Popup/PopupButtonList/index.js.map +1 -1
  88. package/dist/elements/PreviewButton/index.d.ts +2 -1
  89. package/dist/elements/PreviewButton/index.d.ts.map +1 -1
  90. package/dist/elements/PreviewButton/index.js +2 -2
  91. package/dist/elements/PreviewButton/index.js.map +1 -1
  92. package/dist/elements/PreviewSizes/index.js +1 -1
  93. package/dist/elements/PreviewSizes/index.js.map +1 -1
  94. package/dist/elements/PublishButton/ScheduleDrawer/buildUpcomingColumns.d.ts +1 -2
  95. package/dist/elements/PublishButton/ScheduleDrawer/buildUpcomingColumns.d.ts.map +1 -1
  96. package/dist/elements/PublishButton/ScheduleDrawer/buildUpcomingColumns.js.map +1 -1
  97. package/dist/elements/PublishButton/ScheduleDrawer/index.d.ts.map +1 -1
  98. package/dist/elements/PublishButton/ScheduleDrawer/index.js.map +1 -1
  99. package/dist/elements/PublishButton/index.d.ts +2 -3
  100. package/dist/elements/PublishButton/index.d.ts.map +1 -1
  101. package/dist/elements/PublishButton/index.js +2 -2
  102. package/dist/elements/PublishButton/index.js.map +1 -1
  103. package/dist/elements/RelationshipTable/index.d.ts.map +1 -1
  104. package/dist/elements/RelationshipTable/index.js.map +1 -1
  105. package/dist/elements/SaveButton/index.d.ts +2 -3
  106. package/dist/elements/SaveButton/index.d.ts.map +1 -1
  107. package/dist/elements/SaveButton/index.js +3 -3
  108. package/dist/elements/SaveButton/index.js.map +1 -1
  109. package/dist/elements/SaveDraftButton/index.d.ts +2 -1
  110. package/dist/elements/SaveDraftButton/index.d.ts.map +1 -1
  111. package/dist/elements/SaveDraftButton/index.js +2 -2
  112. package/dist/elements/SaveDraftButton/index.js.map +1 -1
  113. package/dist/elements/StayLoggedIn/index.d.ts.map +1 -1
  114. package/dist/elements/StayLoggedIn/index.js +32 -27
  115. package/dist/elements/StayLoggedIn/index.js.map +1 -1
  116. package/dist/elements/StepNav/index.d.ts +5 -0
  117. package/dist/elements/StepNav/index.d.ts.map +1 -1
  118. package/dist/elements/StepNav/index.js +18 -25
  119. package/dist/elements/StepNav/index.js.map +1 -1
  120. package/dist/elements/Table/DefaultCell/fields/Blocks/index.d.ts.map +1 -1
  121. package/dist/elements/Table/DefaultCell/fields/Blocks/index.js +12 -4
  122. package/dist/elements/Table/DefaultCell/fields/Blocks/index.js.map +1 -1
  123. package/dist/elements/Table/DefaultCell/index.d.ts.map +1 -1
  124. package/dist/elements/Table/DefaultCell/index.js +1 -2
  125. package/dist/elements/Table/DefaultCell/index.js.map +1 -1
  126. package/dist/elements/Table/index.d.ts +1 -9
  127. package/dist/elements/Table/index.d.ts.map +1 -1
  128. package/dist/elements/Table/index.js.map +1 -1
  129. package/dist/elements/TableColumns/buildColumnState.d.ts +1 -2
  130. package/dist/elements/TableColumns/buildColumnState.d.ts.map +1 -1
  131. package/dist/elements/TableColumns/buildColumnState.js.map +1 -1
  132. package/dist/elements/TableColumns/index.d.ts +1 -2
  133. package/dist/elements/TableColumns/index.d.ts.map +1 -1
  134. package/dist/elements/TableColumns/index.js.map +1 -1
  135. package/dist/elements/Thumbnail/index.js +2 -2
  136. package/dist/elements/Thumbnail/index.js.map +1 -1
  137. package/dist/elements/UnpublishMany/index.d.ts.map +1 -1
  138. package/dist/elements/UnpublishMany/index.js.map +1 -1
  139. package/dist/elements/Upload/index.d.ts.map +1 -1
  140. package/dist/elements/Upload/index.js +5 -1
  141. package/dist/elements/Upload/index.js.map +1 -1
  142. package/dist/elements/ViewDescription/index.d.ts +2 -6
  143. package/dist/elements/ViewDescription/index.d.ts.map +1 -1
  144. package/dist/elements/ViewDescription/index.js +3 -4
  145. package/dist/elements/ViewDescription/index.js.map +1 -1
  146. package/dist/elements/WhereBuilder/Condition/DefaultFilter/index.d.ts +4 -3
  147. package/dist/elements/WhereBuilder/Condition/DefaultFilter/index.d.ts.map +1 -1
  148. package/dist/elements/WhereBuilder/Condition/DefaultFilter/index.js +3 -0
  149. package/dist/elements/WhereBuilder/Condition/DefaultFilter/index.js.map +1 -1
  150. package/dist/elements/WhereBuilder/Condition/Relationship/index.d.ts.map +1 -1
  151. package/dist/elements/WhereBuilder/Condition/Relationship/index.js +63 -43
  152. package/dist/elements/WhereBuilder/Condition/Relationship/index.js.map +1 -1
  153. package/dist/elements/WhereBuilder/Condition/Relationship/types.d.ts +2 -1
  154. package/dist/elements/WhereBuilder/Condition/Relationship/types.d.ts.map +1 -1
  155. package/dist/elements/WhereBuilder/Condition/Relationship/types.js.map +1 -1
  156. package/dist/elements/WhereBuilder/Condition/Select/index.d.ts.map +1 -1
  157. package/dist/elements/WhereBuilder/Condition/Select/index.js +2 -0
  158. package/dist/elements/WhereBuilder/Condition/Select/index.js.map +1 -1
  159. package/dist/elements/WhereBuilder/Condition/Select/types.d.ts +1 -0
  160. package/dist/elements/WhereBuilder/Condition/Select/types.d.ts.map +1 -1
  161. package/dist/elements/WhereBuilder/Condition/Select/types.js.map +1 -1
  162. package/dist/elements/WhereBuilder/Condition/index.d.ts +7 -17
  163. package/dist/elements/WhereBuilder/Condition/index.d.ts.map +1 -1
  164. package/dist/elements/WhereBuilder/Condition/index.js +116 -276
  165. package/dist/elements/WhereBuilder/Condition/index.js.map +1 -1
  166. package/dist/elements/WhereBuilder/Condition/types.d.ts +2 -2
  167. package/dist/elements/WhereBuilder/Condition/types.d.ts.map +1 -1
  168. package/dist/elements/WhereBuilder/Condition/types.js.map +1 -1
  169. package/dist/elements/WhereBuilder/field-types.d.ts +1 -92
  170. package/dist/elements/WhereBuilder/field-types.d.ts.map +1 -1
  171. package/dist/elements/WhereBuilder/field-types.js.map +1 -1
  172. package/dist/elements/WhereBuilder/index.d.ts.map +1 -1
  173. package/dist/elements/WhereBuilder/index.js +171 -260
  174. package/dist/elements/WhereBuilder/index.js.map +1 -1
  175. package/dist/elements/WhereBuilder/{reduceClientFields.d.ts → reduceFields.d.ts} +5 -4
  176. package/dist/elements/WhereBuilder/reduceFields.d.ts.map +1 -0
  177. package/dist/elements/WhereBuilder/{reduceClientFields.js → reduceFields.js} +8 -8
  178. package/dist/elements/WhereBuilder/reduceFields.js.map +1 -0
  179. package/dist/elements/WhereBuilder/types.d.ts +17 -3
  180. package/dist/elements/WhereBuilder/types.d.ts.map +1 -1
  181. package/dist/elements/WhereBuilder/types.js.map +1 -1
  182. package/dist/elements/WhereBuilder/validateWhereQuery.d.ts.map +1 -1
  183. package/dist/elements/WhereBuilder/validateWhereQuery.js.map +1 -1
  184. package/dist/exports/client/{CodeEditor-BMYVMDNZ.js → CodeEditor-L6GW2VQ6.js} +2 -2
  185. package/dist/exports/client/chunk-ZZDNSFEW.js +26 -0
  186. package/dist/exports/client/{chunk-CQQHQHCB.js.map → chunk-ZZDNSFEW.js.map} +4 -4
  187. package/dist/exports/client/index.d.ts +47 -4
  188. package/dist/exports/client/index.d.ts.map +1 -1
  189. package/dist/exports/client/index.js +23 -23
  190. package/dist/exports/client/index.js.map +4 -4
  191. package/dist/exports/rsc/index.d.ts +1 -0
  192. package/dist/exports/rsc/index.d.ts.map +1 -1
  193. package/dist/exports/rsc/index.js +1 -0
  194. package/dist/exports/rsc/index.js.map +1 -1
  195. package/dist/fields/Array/index.d.ts.map +1 -1
  196. package/dist/fields/Array/index.js +1 -2
  197. package/dist/fields/Array/index.js.map +1 -1
  198. package/dist/fields/Blocks/BlockRow.d.ts +1 -1
  199. package/dist/fields/Blocks/BlockRow.d.ts.map +1 -1
  200. package/dist/fields/Blocks/BlockRow.js.map +1 -1
  201. package/dist/fields/Blocks/BlocksDrawer/index.d.ts +1 -1
  202. package/dist/fields/Blocks/BlocksDrawer/index.d.ts.map +1 -1
  203. package/dist/fields/Blocks/BlocksDrawer/index.js +31 -23
  204. package/dist/fields/Blocks/BlocksDrawer/index.js.map +1 -1
  205. package/dist/fields/Blocks/RowActions.d.ts +1 -1
  206. package/dist/fields/Blocks/RowActions.d.ts.map +1 -1
  207. package/dist/fields/Blocks/RowActions.js.map +1 -1
  208. package/dist/fields/Blocks/index.d.ts.map +1 -1
  209. package/dist/fields/Blocks/index.js +6 -4
  210. package/dist/fields/Blocks/index.js.map +1 -1
  211. package/dist/fields/JSON/index.d.ts.map +1 -1
  212. package/dist/fields/JSON/index.js +5 -6
  213. package/dist/fields/JSON/index.js.map +1 -1
  214. package/dist/fields/Join/index.d.ts.map +1 -1
  215. package/dist/fields/Join/index.js +20 -4
  216. package/dist/fields/Join/index.js.map +1 -1
  217. package/dist/fields/Relationship/optionsReducer.d.ts.map +1 -1
  218. package/dist/fields/Relationship/optionsReducer.js +1 -0
  219. package/dist/fields/Relationship/optionsReducer.js.map +1 -1
  220. package/dist/fields/Upload/Input.d.ts +1 -0
  221. package/dist/fields/Upload/Input.d.ts.map +1 -1
  222. package/dist/fields/Upload/Input.js.map +1 -1
  223. package/dist/fields/Upload/RelationshipContent/index.js +1 -1
  224. package/dist/fields/Upload/RelationshipContent/index.js.map +1 -1
  225. package/dist/forms/Form/index.d.ts.map +1 -1
  226. package/dist/forms/Form/index.js +5 -1
  227. package/dist/forms/Form/index.js.map +1 -1
  228. package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.d.ts.map +1 -1
  229. package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.js +4 -3
  230. package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.js.map +1 -1
  231. package/dist/forms/fieldSchemasToFormState/calculateDefaultValues/promise.d.ts.map +1 -1
  232. package/dist/forms/fieldSchemasToFormState/calculateDefaultValues/promise.js +1 -1
  233. package/dist/forms/fieldSchemasToFormState/calculateDefaultValues/promise.js.map +1 -1
  234. package/dist/forms/fieldSchemasToFormState/renderField.d.ts.map +1 -1
  235. package/dist/forms/fieldSchemasToFormState/renderField.js +2 -1
  236. package/dist/forms/fieldSchemasToFormState/renderField.js.map +1 -1
  237. package/dist/providers/Auth/index.d.ts.map +1 -1
  238. package/dist/providers/Auth/index.js +9 -13
  239. package/dist/providers/Auth/index.js.map +1 -1
  240. package/dist/providers/Config/index.d.ts +2 -2
  241. package/dist/providers/Config/index.d.ts.map +1 -1
  242. package/dist/providers/Config/index.js +17 -2
  243. package/dist/providers/Config/index.js.map +1 -1
  244. package/dist/providers/ListQuery/index.d.ts.map +1 -1
  245. package/dist/providers/ListQuery/index.js +2 -1
  246. package/dist/providers/ListQuery/index.js.map +1 -1
  247. package/dist/providers/Root/index.d.ts.map +1 -1
  248. package/dist/providers/Root/index.js +44 -41
  249. package/dist/providers/Root/index.js.map +1 -1
  250. package/dist/providers/RouteTransition/ProgressBar/index.d.ts +17 -0
  251. package/dist/providers/RouteTransition/ProgressBar/index.d.ts.map +1 -0
  252. package/dist/providers/RouteTransition/ProgressBar/index.js +104 -0
  253. package/dist/providers/RouteTransition/ProgressBar/index.js.map +1 -0
  254. package/dist/providers/RouteTransition/ProgressBar/index.scss +21 -0
  255. package/dist/providers/RouteTransition/index.d.ts +51 -0
  256. package/dist/providers/RouteTransition/index.d.ts.map +1 -0
  257. package/dist/providers/RouteTransition/index.js +133 -0
  258. package/dist/providers/RouteTransition/index.js.map +1 -0
  259. package/dist/styles.css +1 -1
  260. package/dist/utilities/buildClientFieldSchemaMap/traverseFields.d.ts.map +1 -1
  261. package/dist/utilities/buildClientFieldSchemaMap/traverseFields.js +3 -1
  262. package/dist/utilities/buildClientFieldSchemaMap/traverseFields.js.map +1 -1
  263. package/dist/utilities/buildFieldSchemaMap/traverseFields.d.ts.map +1 -1
  264. package/dist/utilities/buildFieldSchemaMap/traverseFields.js +4 -1
  265. package/dist/utilities/buildFieldSchemaMap/traverseFields.js.map +1 -1
  266. package/dist/utilities/buildTableState.d.ts +1 -2
  267. package/dist/utilities/buildTableState.d.ts.map +1 -1
  268. package/dist/utilities/buildTableState.js +1 -0
  269. package/dist/utilities/buildTableState.js.map +1 -1
  270. package/dist/utilities/copyDataFromLocale.d.ts.map +1 -1
  271. package/dist/utilities/copyDataFromLocale.js +22 -18
  272. package/dist/utilities/copyDataFromLocale.js.map +1 -1
  273. package/dist/utilities/getClientConfig.js.map +1 -1
  274. package/dist/utilities/renderTable.d.ts.map +1 -1
  275. package/dist/utilities/renderTable.js.map +1 -1
  276. package/dist/utilities/resolveFilterOptions.d.ts +5 -0
  277. package/dist/utilities/resolveFilterOptions.d.ts.map +1 -0
  278. package/dist/{forms/fieldSchemasToFormState/getFilterOptionsQuery.js → utilities/resolveFilterOptions.js} +2 -2
  279. package/dist/utilities/resolveFilterOptions.js.map +1 -0
  280. package/dist/views/Edit/index.d.ts +2 -2
  281. package/dist/views/Edit/index.d.ts.map +1 -1
  282. package/dist/views/Edit/index.js +8 -4
  283. package/dist/views/Edit/index.js.map +1 -1
  284. package/dist/views/List/ListHeader/index.d.ts.map +1 -1
  285. package/dist/views/List/ListHeader/index.js +1 -4
  286. package/dist/views/List/ListHeader/index.js.map +1 -1
  287. package/dist/views/List/index.d.ts +2 -24
  288. package/dist/views/List/index.d.ts.map +1 -1
  289. package/dist/views/List/index.js +7 -7
  290. package/dist/views/List/index.js.map +1 -1
  291. package/dist/views/List/types.d.ts +1 -18
  292. package/dist/views/List/types.d.ts.map +1 -1
  293. package/dist/views/List/types.js.map +1 -1
  294. package/package.json +6 -6
  295. package/dist/elements/ViewDescription/index.scss +0 -7
  296. package/dist/elements/WhereBuilder/reduceClientFields.d.ts.map +0 -1
  297. package/dist/elements/WhereBuilder/reduceClientFields.js.map +0 -1
  298. package/dist/exports/client/chunk-CQQHQHCB.js +0 -26
  299. package/dist/forms/fieldSchemasToFormState/getFilterOptionsQuery.d.ts +0 -7
  300. package/dist/forms/fieldSchemasToFormState/getFilterOptionsQuery.d.ts.map +0 -1
  301. package/dist/forms/fieldSchemasToFormState/getFilterOptionsQuery.js.map +0 -1
  302. /package/dist/exports/client/{CodeEditor-BMYVMDNZ.js.map → CodeEditor-L6GW2VQ6.js.map} +0 -0
@@ -1,14 +1,14 @@
1
1
  'use client';
2
2
 
3
- import { c as _c } from "react/compiler-runtime";
4
3
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
5
4
  import { getTranslation } from '@payloadcms/translations';
6
- import React, { useEffect, useState } from 'react';
5
+ import React, { useMemo } from 'react';
7
6
  import { useListQuery } from '../../providers/ListQuery/index.js';
8
7
  import { useTranslation } from '../../providers/Translation/index.js';
9
8
  import { Button } from '../Button/index.js';
10
9
  import { Condition } from './Condition/index.js';
11
- import { reduceClientFields } from './reduceClientFields.js';
10
+ import fieldTypes from './field-types.js';
11
+ import { reduceFields } from './reduceFields.js';
12
12
  import { transformWhereQuery } from './transformWhereQuery.js';
13
13
  import validateWhereQuery from './validateWhereQuery.js';
14
14
  import './index.scss';
@@ -18,286 +18,197 @@ const baseClass = 'where-builder';
18
18
  * It is part of the {@link ListControls} component which is used to render the controls (search, filter, where).
19
19
  */
20
20
  export const WhereBuilder = props => {
21
- const $ = _c(30);
22
21
  const {
23
22
  collectionPluralLabel,
24
23
  fields,
25
- renderedFilters
24
+ renderedFilters,
25
+ resolvedFilterOptions
26
26
  } = props;
27
27
  const {
28
28
  i18n,
29
29
  t
30
30
  } = useTranslation();
31
- let t0;
32
- if ($[0] !== fields || $[1] !== i18n) {
33
- t0 = () => reduceClientFields({
34
- fields,
35
- i18n
36
- });
37
- $[0] = fields;
38
- $[1] = i18n;
39
- $[2] = t0;
40
- } else {
41
- t0 = $[2];
42
- }
43
- const [options, setOptions] = useState(t0);
44
- let t1;
45
- let t2;
46
- if ($[3] !== fields || $[4] !== i18n) {
47
- t1 = () => {
48
- setOptions(reduceClientFields({
49
- fields,
50
- i18n
51
- }));
52
- };
53
- t2 = [fields, i18n];
54
- $[3] = fields;
55
- $[4] = i18n;
56
- $[5] = t1;
57
- $[6] = t2;
58
- } else {
59
- t1 = $[5];
60
- t2 = $[6];
61
- }
62
- useEffect(t1, t2);
31
+ const reducedFields = useMemo(() => reduceFields({
32
+ fields,
33
+ i18n
34
+ }), [fields, i18n]);
63
35
  const {
64
36
  handleWhereChange,
65
37
  query
66
38
  } = useListQuery();
67
39
  const [shouldUpdateQuery, setShouldUpdateQuery] = React.useState(false);
68
- let t3;
69
- if ($[7] !== query.where) {
70
- t3 = () => {
71
- const whereFromSearch = query.where;
72
- if (whereFromSearch) {
73
- if (validateWhereQuery(whereFromSearch)) {
74
- return whereFromSearch.or;
75
- }
76
- const transformedWhere = transformWhereQuery(whereFromSearch);
77
- if (validateWhereQuery(transformedWhere)) {
78
- return transformedWhere.or;
79
- }
80
- console.warn(`Invalid where query in URL: ${JSON.stringify(whereFromSearch)}`);
40
+ const [conditions, setConditions] = React.useState(() => {
41
+ const whereFromSearch = query.where;
42
+ if (whereFromSearch) {
43
+ if (validateWhereQuery(whereFromSearch)) {
44
+ return whereFromSearch.or;
81
45
  }
82
- return [];
83
- };
84
- $[7] = query.where;
85
- $[8] = t3;
86
- } else {
87
- t3 = $[8];
88
- }
89
- const [conditions, setConditions] = React.useState(t3);
90
- let t4;
91
- if ($[9] !== conditions) {
92
- t4 = t5 => {
93
- const {
94
- andIndex,
95
- fieldName,
96
- orIndex,
97
- relation
98
- } = t5;
99
- const newConditions = [...conditions];
100
- if (relation === "and") {
101
- newConditions[orIndex].and.splice(andIndex, 0, {
102
- [fieldName]: {}
103
- });
104
- } else {
105
- newConditions.push({
106
- and: [{
107
- [fieldName]: {}
108
- }]
109
- });
46
+ // Transform the where query to be in the right format. This will transform something simple like [text][equals]=example%20post to the right format
47
+ const transformedWhere = transformWhereQuery(whereFromSearch);
48
+ if (validateWhereQuery(transformedWhere)) {
49
+ return transformedWhere.or;
110
50
  }
111
- setConditions(newConditions);
112
- };
113
- $[9] = conditions;
114
- $[10] = t4;
115
- } else {
116
- t4 = $[10];
117
- }
118
- const addCondition = t4;
119
- let t5;
120
- if ($[11] !== conditions) {
121
- t5 = t6 => {
122
- const {
123
- andIndex: andIndex_0,
124
- fieldName: fieldName_0,
125
- operator,
126
- orIndex: orIndex_0,
127
- value: valueArg
128
- } = t6;
129
- const existingRowCondition = conditions[orIndex_0].and[andIndex_0];
130
- if (typeof existingRowCondition === "object" && fieldName_0 && operator) {
131
- const value = valueArg ?? (operator ? existingRowCondition[operator] : "");
132
- const newRowCondition = {
133
- [fieldName_0]: operator ? {
134
- [operator]: value
135
- } : {}
136
- };
137
- if (JSON.stringify(existingRowCondition) !== JSON.stringify(newRowCondition)) {
138
- const newConditions_0 = [...conditions];
139
- newConditions_0[orIndex_0].and[andIndex_0] = newRowCondition;
140
- setConditions(newConditions_0);
141
- if (![null, undefined].includes(value)) {
142
- setShouldUpdateQuery(true);
51
+ console.warn(`Invalid where query in URL: ${JSON.stringify(whereFromSearch)}`) // eslint-disable-line no-console
52
+ ;
53
+ }
54
+ return [];
55
+ });
56
+ const addCondition = React.useCallback(({
57
+ andIndex,
58
+ field,
59
+ orIndex,
60
+ relation
61
+ }) => {
62
+ const newConditions = [...conditions];
63
+ const defaultOperator = fieldTypes[field.field.type].operators[0].value;
64
+ if (relation === 'and') {
65
+ newConditions[orIndex].and.splice(andIndex, 0, {
66
+ [field.value]: {
67
+ [defaultOperator]: undefined
68
+ }
69
+ });
70
+ } else {
71
+ newConditions.push({
72
+ and: [{
73
+ [field.value]: {
74
+ [defaultOperator]: undefined
143
75
  }
76
+ }]
77
+ });
78
+ }
79
+ setConditions(newConditions);
80
+ }, [conditions]);
81
+ const updateCondition = React.useCallback(({
82
+ andIndex: andIndex_0,
83
+ field: field_0,
84
+ operator: incomingOperator,
85
+ orIndex: orIndex_0,
86
+ value: valueArg
87
+ }) => {
88
+ const existingRowCondition = conditions[orIndex_0].and[andIndex_0];
89
+ const defaults = fieldTypes[field_0.field.type];
90
+ const operator = incomingOperator || defaults.operators[0].value;
91
+ if (typeof existingRowCondition === 'object' && field_0.value) {
92
+ const value = valueArg ?? existingRowCondition?.[operator];
93
+ const newRowCondition = {
94
+ [field_0.value]: {
95
+ [operator]: value
144
96
  }
145
- }
146
- };
147
- $[11] = conditions;
148
- $[12] = t5;
149
- } else {
150
- t5 = $[12];
151
- }
152
- const updateCondition = t5;
153
- let t6;
154
- if ($[13] !== conditions) {
155
- t6 = t7 => {
156
- const {
157
- andIndex: andIndex_1,
158
- orIndex: orIndex_1
159
- } = t7;
160
- const newConditions_1 = [...conditions];
161
- newConditions_1[orIndex_1].and.splice(andIndex_1, 1);
162
- if (newConditions_1[orIndex_1].and.length === 0) {
163
- newConditions_1.splice(orIndex_1, 1);
164
- }
165
- setConditions(newConditions_1);
97
+ };
98
+ const newConditions_0 = [...conditions];
99
+ newConditions_0[orIndex_0].and[andIndex_0] = newRowCondition;
100
+ setConditions(newConditions_0);
166
101
  setShouldUpdateQuery(true);
167
- };
168
- $[13] = conditions;
169
- $[14] = t6;
170
- } else {
171
- t6 = $[14];
172
- }
173
- const removeCondition = t6;
174
- let t7;
175
- let t8;
176
- if ($[15] !== conditions || $[16] !== handleWhereChange || $[17] !== shouldUpdateQuery) {
177
- t7 = () => {
178
- if (shouldUpdateQuery) {
179
- const handleChange = async function handleChange() {
180
- await handleWhereChange({
181
- or: conditions
182
- });
183
- setShouldUpdateQuery(false);
184
- };
185
- handleChange();
102
+ }
103
+ }, [conditions]);
104
+ const removeCondition = React.useCallback(({
105
+ andIndex: andIndex_1,
106
+ orIndex: orIndex_1
107
+ }) => {
108
+ const newConditions_1 = [...conditions];
109
+ newConditions_1[orIndex_1].and.splice(andIndex_1, 1);
110
+ if (newConditions_1[orIndex_1].and.length === 0) {
111
+ newConditions_1.splice(orIndex_1, 1);
112
+ }
113
+ setConditions(newConditions_1);
114
+ setShouldUpdateQuery(true);
115
+ }, [conditions]);
116
+ React.useEffect(() => {
117
+ if (shouldUpdateQuery) {
118
+ async function handleChange() {
119
+ await handleWhereChange({
120
+ or: conditions
121
+ });
122
+ setShouldUpdateQuery(false);
186
123
  }
187
- };
188
- t8 = [conditions, handleWhereChange, shouldUpdateQuery];
189
- $[15] = conditions;
190
- $[16] = handleWhereChange;
191
- $[17] = shouldUpdateQuery;
192
- $[18] = t7;
193
- $[19] = t8;
194
- } else {
195
- t7 = $[18];
196
- t8 = $[19];
197
- }
198
- React.useEffect(t7, t8);
199
- let t9;
200
- if ($[20] !== addCondition || $[21] !== collectionPluralLabel || $[22] !== conditions || $[23] !== i18n || $[24] !== options || $[25] !== removeCondition || $[26] !== renderedFilters || $[27] !== t || $[28] !== updateCondition) {
201
- t9 = _jsxs("div", {
202
- className: baseClass,
203
- children: [conditions.length > 0 && _jsxs(React.Fragment, {
204
- children: [_jsx("div", {
205
- className: `${baseClass}__label`,
206
- children: t("general:filterWhere", {
207
- label: getTranslation(collectionPluralLabel, i18n)
208
- })
209
- }), _jsx("ul", {
210
- className: `${baseClass}__or-filters`,
211
- children: conditions.map((or, orIndex_2) => {
212
- const compoundOrKey = `${orIndex_2}_${Array.isArray(or?.and) ? or.and.length : ""}`;
213
- return _jsxs("li", {
214
- children: [orIndex_2 !== 0 && _jsx("div", {
215
- className: `${baseClass}__label`,
216
- children: t("general:or")
217
- }), _jsx("ul", {
218
- className: `${baseClass}__and-filters`,
219
- children: Array.isArray(or?.and) && or.and.map((_, andIndex_2) => {
220
- const initialFieldName = Object.keys(conditions[orIndex_2].and[andIndex_2])[0];
221
- const initialOperator = Object.keys(conditions[orIndex_2].and[andIndex_2]?.[initialFieldName] || {})?.[0] || undefined;
222
- const initialValue = conditions[orIndex_2].and[andIndex_2]?.[initialFieldName]?.[initialOperator] || undefined;
223
- return _jsxs("li", {
224
- children: [andIndex_2 !== 0 && _jsx("div", {
225
- className: `${baseClass}__label`,
226
- children: t("general:and")
227
- }), _jsx(Condition, {
228
- addCondition,
229
- andIndex: andIndex_2,
230
- fieldName: initialFieldName,
231
- initialValue,
232
- operator: initialOperator,
233
- options,
234
- orIndex: orIndex_2,
235
- removeCondition,
236
- RenderedFilter: renderedFilters?.get(initialFieldName),
237
- updateCondition
238
- })]
239
- }, andIndex_2);
240
- })
241
- })]
242
- }, compoundOrKey);
243
- })
244
- }), _jsx(Button, {
245
- buttonStyle: "icon-label",
246
- className: `${baseClass}__add-or`,
247
- icon: "plus",
248
- iconPosition: "left",
249
- iconStyle: "with-border",
250
- onClick: () => {
124
+ void handleChange();
125
+ }
126
+ }, [conditions, handleWhereChange, shouldUpdateQuery]);
127
+ return /*#__PURE__*/_jsxs("div", {
128
+ className: baseClass,
129
+ children: [conditions.length > 0 && /*#__PURE__*/_jsxs(React.Fragment, {
130
+ children: [/*#__PURE__*/_jsx("div", {
131
+ className: `${baseClass}__label`,
132
+ children: t('general:filterWhere', {
133
+ label: getTranslation(collectionPluralLabel, i18n)
134
+ })
135
+ }), /*#__PURE__*/_jsx("ul", {
136
+ className: `${baseClass}__or-filters`,
137
+ children: conditions.map((or, orIndex_2) => {
138
+ const compoundOrKey = `${orIndex_2}_${Array.isArray(or?.and) ? or.and.length : ''}`;
139
+ return /*#__PURE__*/_jsxs("li", {
140
+ children: [orIndex_2 !== 0 && /*#__PURE__*/_jsx("div", {
141
+ className: `${baseClass}__label`,
142
+ children: t('general:or')
143
+ }), /*#__PURE__*/_jsx("ul", {
144
+ className: `${baseClass}__and-filters`,
145
+ children: Array.isArray(or?.and) && or.and.map((_, andIndex_2) => {
146
+ const condition = conditions[orIndex_2].and[andIndex_2];
147
+ const fieldName = Object.keys(condition)[0];
148
+ const operator_0 = Object.keys(condition?.[fieldName] || {})?.[0] || undefined;
149
+ const value_0 = condition?.[fieldName]?.[operator_0] || undefined;
150
+ return /*#__PURE__*/_jsxs("li", {
151
+ children: [andIndex_2 !== 0 && /*#__PURE__*/_jsx("div", {
152
+ className: `${baseClass}__label`,
153
+ children: t('general:and')
154
+ }), /*#__PURE__*/_jsx(Condition, {
155
+ addCondition: addCondition,
156
+ andIndex: andIndex_2,
157
+ fieldName: fieldName,
158
+ filterOptions: resolvedFilterOptions?.get(fieldName),
159
+ operator: operator_0,
160
+ orIndex: orIndex_2,
161
+ reducedFields: reducedFields,
162
+ removeCondition: removeCondition,
163
+ RenderedFilter: renderedFilters?.get(fieldName),
164
+ updateCondition: updateCondition,
165
+ value: value_0
166
+ })]
167
+ }, andIndex_2);
168
+ })
169
+ })]
170
+ }, compoundOrKey);
171
+ })
172
+ }), /*#__PURE__*/_jsx(Button, {
173
+ buttonStyle: "icon-label",
174
+ className: `${baseClass}__add-or`,
175
+ icon: "plus",
176
+ iconPosition: "left",
177
+ iconStyle: "with-border",
178
+ onClick: () => {
179
+ addCondition({
180
+ andIndex: 0,
181
+ field: reducedFields[0],
182
+ orIndex: conditions.length,
183
+ relation: 'or'
184
+ });
185
+ },
186
+ children: t('general:or')
187
+ })]
188
+ }), conditions.length === 0 && /*#__PURE__*/_jsxs("div", {
189
+ className: `${baseClass}__no-filters`,
190
+ children: [/*#__PURE__*/_jsx("div", {
191
+ className: `${baseClass}__label`,
192
+ children: t('general:noFiltersSet')
193
+ }), /*#__PURE__*/_jsx(Button, {
194
+ buttonStyle: "icon-label",
195
+ className: `${baseClass}__add-first-filter`,
196
+ icon: "plus",
197
+ iconPosition: "left",
198
+ iconStyle: "with-border",
199
+ onClick: () => {
200
+ if (reducedFields.length > 0) {
251
201
  addCondition({
252
202
  andIndex: 0,
253
- fieldName: options[0].value,
203
+ field: reducedFields.find(field_1 => !field_1.field.admin?.disableListFilter),
254
204
  orIndex: conditions.length,
255
- relation: "or"
205
+ relation: 'or'
256
206
  });
257
- },
258
- children: t("general:or")
259
- })]
260
- }), conditions.length === 0 && _jsxs("div", {
261
- className: `${baseClass}__no-filters`,
262
- children: [_jsx("div", {
263
- className: `${baseClass}__label`,
264
- children: t("general:noFiltersSet")
265
- }), _jsx(Button, {
266
- buttonStyle: "icon-label",
267
- className: `${baseClass}__add-first-filter`,
268
- icon: "plus",
269
- iconPosition: "left",
270
- iconStyle: "with-border",
271
- onClick: () => {
272
- if (options.length > 0) {
273
- addCondition({
274
- andIndex: 0,
275
- fieldName: options.find(_temp).value,
276
- orIndex: conditions.length,
277
- relation: "or"
278
- });
279
- }
280
- },
281
- children: t("general:addFilter")
282
- })]
207
+ }
208
+ },
209
+ children: t('general:addFilter')
283
210
  })]
284
- });
285
- $[20] = addCondition;
286
- $[21] = collectionPluralLabel;
287
- $[22] = conditions;
288
- $[23] = i18n;
289
- $[24] = options;
290
- $[25] = removeCondition;
291
- $[26] = renderedFilters;
292
- $[27] = t;
293
- $[28] = updateCondition;
294
- $[29] = t9;
295
- } else {
296
- t9 = $[29];
297
- }
298
- return t9;
211
+ })]
212
+ });
299
213
  };
300
- function _temp(field) {
301
- return !field.field.admin?.disableListFilter;
302
- }
303
214
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["c","_c","getTranslation","React","useEffect","useState","useListQuery","useTranslation","Button","Condition","reduceClientFields","transformWhereQuery","validateWhereQuery","baseClass","WhereBuilder","props","$","collectionPluralLabel","fields","renderedFilters","i18n","t","t0","options","setOptions","t1","t2","handleWhereChange","query","shouldUpdateQuery","setShouldUpdateQuery","t3","where","whereFromSearch","or","transformedWhere","console","warn","JSON","stringify","conditions","setConditions","t4","t5","andIndex","fieldName","orIndex","relation","newConditions","and","splice","push","addCondition","t6","andIndex_0","fieldName_0","operator","orIndex_0","value","valueArg","existingRowCondition","newRowCondition","newConditions_0","undefined","includes","updateCondition","t7","andIndex_1","orIndex_1","newConditions_1","length","removeCondition","t8","handleChange","t9","_jsxs","className","children","Fragment","_jsx","label","map","orIndex_2","compoundOrKey","Array","isArray","_","andIndex_2","initialFieldName","Object","keys","initialOperator","initialValue","RenderedFilter","get","buttonStyle","icon","iconPosition","iconStyle","onClick","find","_temp","field","admin","disableListFilter"],"sources":["../../../src/elements/WhereBuilder/index.tsx"],"sourcesContent":["'use client'\nimport type { Operator } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport React, { useEffect, useState } from 'react'\n\nimport type { WhereBuilderProps } from './types.js'\n\nimport { useListQuery } from '../../providers/ListQuery/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { Button } from '../Button/index.js'\nimport { Condition } from './Condition/index.js'\nimport { reduceClientFields } from './reduceClientFields.js'\nimport { transformWhereQuery } from './transformWhereQuery.js'\nimport validateWhereQuery from './validateWhereQuery.js'\nimport './index.scss'\n\nconst baseClass = 'where-builder'\n\nexport { WhereBuilderProps }\n\n/**\n * The WhereBuilder component is used to render the filter controls for a collection's list view.\n * It is part of the {@link ListControls} component which is used to render the controls (search, filter, where).\n */\nexport const WhereBuilder: React.FC<WhereBuilderProps> = (props) => {\n const { collectionPluralLabel, fields, renderedFilters } = props\n const { i18n, t } = useTranslation()\n\n const [options, setOptions] = useState(() => reduceClientFields({ fields, i18n }))\n\n useEffect(() => {\n setOptions(reduceClientFields({ fields, i18n }))\n }, [fields, i18n])\n\n const { handleWhereChange, query } = useListQuery()\n const [shouldUpdateQuery, setShouldUpdateQuery] = React.useState(false)\n\n // This handles initializing the where conditions from the search query (URL). That way, if you pass in\n // query params to the URL, the where conditions will be initialized from those and displayed in the UI.\n // Example: /admin/collections/posts?where[or][0][and][0][text][equals]=example%20post\n /*\n stored conditions look like this:\n [\n _or_ & _and_ queries have the same shape:\n {\n and: [{\n category: {\n equals: 'category-a'\n }\n }]\n },\n\n {\n and:[{\n category: {\n equals: 'category-b'\n },\n text: {\n not_equals: 'oranges'\n },\n }]\n }\n ]\n */\n\n const [conditions, setConditions] = React.useState(() => {\n const whereFromSearch = query.where\n\n if (whereFromSearch) {\n if (validateWhereQuery(whereFromSearch)) {\n return whereFromSearch.or\n }\n // Transform the where query to be in the right format. This will transform something simple like [text][equals]=example%20post to the right format\n const transformedWhere = transformWhereQuery(whereFromSearch)\n\n if (validateWhereQuery(transformedWhere)) {\n return transformedWhere.or\n }\n\n console.warn(`Invalid where query in URL: ${JSON.stringify(whereFromSearch)}`) // eslint-disable-line no-console\n }\n\n return []\n })\n\n const addCondition = React.useCallback(\n ({ andIndex, fieldName, orIndex, relation }) => {\n const newConditions = [...conditions]\n if (relation === 'and') {\n newConditions[orIndex].and.splice(andIndex, 0, { [fieldName]: {} })\n } else {\n newConditions.push({\n and: [\n {\n [fieldName]: {},\n },\n ],\n })\n }\n setConditions(newConditions)\n },\n [conditions],\n )\n\n const updateCondition = React.useCallback(\n ({ andIndex, fieldName, operator, orIndex, value: valueArg }) => {\n const existingRowCondition = conditions[orIndex].and[andIndex]\n if (typeof existingRowCondition === 'object' && fieldName && operator) {\n const value = valueArg ?? (operator ? existingRowCondition[operator] : '')\n const newRowCondition = {\n [fieldName]: operator ? { [operator]: value } : {},\n }\n\n if (JSON.stringify(existingRowCondition) !== JSON.stringify(newRowCondition)) {\n const newConditions = [...conditions]\n newConditions[orIndex].and[andIndex] = newRowCondition\n setConditions(newConditions)\n if (![null, undefined].includes(value)) {\n // only update query when field/operator/value are filled out\n setShouldUpdateQuery(true)\n }\n }\n }\n },\n [conditions],\n )\n\n const removeCondition = React.useCallback(\n ({ andIndex, orIndex }) => {\n const newConditions = [...conditions]\n newConditions[orIndex].and.splice(andIndex, 1)\n if (newConditions[orIndex].and.length === 0) {\n newConditions.splice(orIndex, 1)\n }\n setConditions(newConditions)\n setShouldUpdateQuery(true)\n },\n [conditions],\n )\n\n React.useEffect(() => {\n if (shouldUpdateQuery) {\n async function handleChange() {\n await handleWhereChange({ or: conditions })\n setShouldUpdateQuery(false)\n }\n void handleChange()\n }\n }, [conditions, handleWhereChange, shouldUpdateQuery])\n\n return (\n <div className={baseClass}>\n {conditions.length > 0 && (\n <React.Fragment>\n <div className={`${baseClass}__label`}>\n {t('general:filterWhere', { label: getTranslation(collectionPluralLabel, i18n) })}\n </div>\n <ul className={`${baseClass}__or-filters`}>\n {conditions.map((or, orIndex) => {\n const compoundOrKey = `${orIndex}_${Array.isArray(or?.and) ? or.and.length : ''}`\n\n return (\n <li key={compoundOrKey}>\n {orIndex !== 0 && <div className={`${baseClass}__label`}>{t('general:or')}</div>}\n <ul className={`${baseClass}__and-filters`}>\n {Array.isArray(or?.and) &&\n or.and.map((_, andIndex) => {\n const initialFieldName = Object.keys(conditions[orIndex].and[andIndex])[0]\n const initialOperator =\n (Object.keys(\n conditions[orIndex].and[andIndex]?.[initialFieldName] || {},\n )?.[0] as Operator) || undefined\n const initialValue =\n conditions[orIndex].and[andIndex]?.[initialFieldName]?.[\n initialOperator\n ] || undefined\n\n return (\n <li key={andIndex}>\n {andIndex !== 0 && (\n <div className={`${baseClass}__label`}>{t('general:and')}</div>\n )}\n <Condition\n addCondition={addCondition}\n andIndex={andIndex}\n fieldName={initialFieldName}\n initialValue={initialValue}\n operator={initialOperator}\n options={options}\n orIndex={orIndex}\n removeCondition={removeCondition}\n RenderedFilter={renderedFilters?.get(initialFieldName)}\n updateCondition={updateCondition}\n />\n </li>\n )\n })}\n </ul>\n </li>\n )\n })}\n </ul>\n <Button\n buttonStyle=\"icon-label\"\n className={`${baseClass}__add-or`}\n icon=\"plus\"\n iconPosition=\"left\"\n iconStyle=\"with-border\"\n onClick={() => {\n addCondition({\n andIndex: 0,\n fieldName: options[0].value,\n orIndex: conditions.length,\n relation: 'or',\n })\n }}\n >\n {t('general:or')}\n </Button>\n </React.Fragment>\n )}\n {conditions.length === 0 && (\n <div className={`${baseClass}__no-filters`}>\n <div className={`${baseClass}__label`}>{t('general:noFiltersSet')}</div>\n <Button\n buttonStyle=\"icon-label\"\n className={`${baseClass}__add-first-filter`}\n icon=\"plus\"\n iconPosition=\"left\"\n iconStyle=\"with-border\"\n onClick={() => {\n if (options.length > 0) {\n addCondition({\n andIndex: 0,\n fieldName: options.find((field) => !field.field.admin?.disableListFilter).value,\n orIndex: conditions.length,\n relation: 'or',\n })\n }\n }}\n >\n {t('general:addFilter')}\n </Button>\n </div>\n )}\n </div>\n )\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;;AAGA,SAASC,cAAc,QAAQ;AAC/B,OAAOC,KAAA,IAASC,SAAS,EAAEC,QAAQ,QAAQ;AAI3C,SAASC,YAAY,QAAQ;AAC7B,SAASC,cAAc,QAAQ;AAC/B,SAASC,MAAM,QAAQ;AACvB,SAASC,SAAS,QAAQ;AAC1B,SAASC,kBAAkB,QAAQ;AACnC,SAASC,mBAAmB,QAAQ;AACpC,OAAOC,kBAAA,MAAwB;AAC/B,OAAO;AAEP,MAAMC,SAAA,GAAY;AAIlB;;;;AAIA,OAAO,MAAMC,YAAA,GAA4CC,KAAA;EAAA,MAAAC,CAAA,GAAAf,EAAA;EACvD;IAAAgB,qBAAA;IAAAC,MAAA;IAAAC;EAAA,IAA2DJ,KAAA;EAC3D;IAAAK,IAAA;IAAAC;EAAA,IAAoBd,cAAA;EAAA,IAAAe,EAAA;EAAA,IAAAN,CAAA,QAAAE,MAAA,IAAAF,CAAA,QAAAI,IAAA;IAEmBE,EAAA,GAAAA,CAAA,KAAMZ,kBAAA;MAAAQ,MAAA;MAAAE;IAAA,CAAkC;IAAAJ,CAAA,MAAAE,MAAA;IAAAF,CAAA,MAAAI,IAAA;IAAAJ,CAAA,MAAAM,EAAA;EAAA;IAAAA,EAAA,GAAAN,CAAA;EAAA;EAA/E,OAAAO,OAAA,EAAAC,UAAA,IAA8BnB,QAAA,CAASiB,EAAwC;EAAA,IAAAG,EAAA;EAAA,IAAAC,EAAA;EAAA,IAAAV,CAAA,QAAAE,MAAA,IAAAF,CAAA,QAAAI,IAAA;IAErEK,EAAA,GAAAA,CAAA;MACRD,UAAA,CAAWd,kBAAA;QAAAQ,MAAA;QAAAE;MAAA,CAAkC;IAAA;IAC5CM,EAAA,IAACR,MAAA,EAAQE,IAAA;IAAKJ,CAAA,MAAAE,MAAA;IAAAF,CAAA,MAAAI,IAAA;IAAAJ,CAAA,MAAAS,EAAA;IAAAT,CAAA,MAAAU,EAAA;EAAA;IAAAD,EAAA,GAAAT,CAAA;IAAAU,EAAA,GAAAV,CAAA;EAAA;EAFjBZ,SAAA,CAAUqB,EAEV,EAAGC,EAAc;EAEjB;IAAAC,iBAAA;IAAAC;EAAA,IAAqCtB,YAAA;EACrC,OAAAuB,iBAAA,EAAAC,oBAAA,IAAkD3B,KAAA,CAAAE,QAAA,MAAe;EAAA,IAAA0B,EAAA;EAAA,IAAAf,CAAA,QAAAY,KAAA,CAAAI,KAAA;IA8BdD,EAAA,GAAAA,CAAA;MACjD,MAAAE,eAAA,GAAwBL,KAAA,CAAAI,KAAA;MAAW,IAE/BC,eAAA;QAAA,IACErB,kBAAA,CAAmBqB,eAAA;UAAA,OACdA,eAAA,CAAAC,EAAA;QAAA;QAGT,MAAAC,gBAAA,GAAyBxB,mBAAA,CAAoBsB,eAAA;QAAA,IAEzCrB,kBAAA,CAAmBuB,gBAAA;UAAA,OACdA,gBAAA,CAAAD,EAAA;QAAA;QAGTE,OAAA,CAAAC,IAAA,CAAa,+BAA+BC,IAAA,CAAAC,SAAA,CAAeN,eAAA,GAAkB;MAAA;MAAA;IAAA;IAIjFjB,CAAA,MAAAY,KAAA,CAAAI,KAAA;IAAAhB,CAAA,MAAAe,EAAA;EAAA;IAAAA,EAAA,GAAAf,CAAA;EAAA;EAlBA,OAAAwB,UAAA,EAAAC,aAAA,IAAoCtC,KAAA,CAAAE,QAAA,CAAe0B,EAkBnD;EAAA,IAAAW,EAAA;EAAA,IAAA1B,CAAA,QAAAwB,UAAA;IAGEE,EAAA,GAAAC,EAAA;MAAC;QAAAC,QAAA;QAAAC,SAAA;QAAAC,OAAA;QAAAC;MAAA,IAAAJ,EAA0C;MACzC,MAAAK,aAAA,OAA0BR,UAAA;MAAW,IACjCO,QAAA,KAAa;QACfC,aAAa,CAACF,OAAA,EAAAG,GAAA,CAAAC,MAAA,CAAoBN,QAAA;UAAA,CAAgBC,SAAA;QAAA,CAAe;MAAA;QAEjEG,aAAA,CAAAG,IAAA;UAAAF,GAAA;YAAA,CAGOJ,SAAA;UAAA;QAAA,CAGP;MAAA;MAEFJ,aAAA,CAAcO,aAAA;IAAA;IAChBhC,CAAA,MAAAwB,UAAA;IAAAxB,CAAA,OAAA0B,EAAA;EAAA;IAAAA,EAAA,GAAA1B,CAAA;EAAA;EAfF,MAAAoC,YAAA,GAAqBV,EAgBP;EAAA,IAAAC,EAAA;EAAA,IAAA3B,CAAA,SAAAwB,UAAA;IAIZG,EAAA,GAAAU,EAAA;MAAC;QAAAT,QAAA,EAAAU,UAAA;QAAAT,SAAA,EAAAU,WAAA;QAAAC,QAAA;QAAAV,OAAA,EAAAW,SAAA;QAAAC,KAAA,EAAAC;MAAA,IAAAN,EAA2D;MAC1D,MAAAO,oBAAA,GAA6BpB,UAAU,CAACM,SAAA,EAAAG,GAAA,CAAaL,UAAA;MAAS,IAC1D,OAAOgB,oBAAA,KAAyB,YAAYf,WAAA,IAAaW,QAAA;QAC3D,MAAAE,KAAA,GAAcC,QAAA,KAAaH,QAAA,GAAWI,oBAAoB,CAACJ,QAAA,IAAY,EAAC;QACxE,MAAAK,eAAA;UAAA,CACGhB,WAAA,GAAYW,QAAA;YAAA,CAAcA,QAAA,GAAWE;UAAA;QAAW;QACnD,IAEIpB,IAAA,CAAAC,SAAA,CAAeqB,oBAAA,MAA0BtB,IAAA,CAAAC,SAAA,CAAesB,eAAA;UAC1D,MAAAC,eAAA,OAA0BtB,UAAA;UAC1BQ,eAAa,CAACF,SAAA,EAAAG,GAAA,CAAaL,UAAA,IAAYiB,eAAA;UACvCpB,aAAA,CAAcO,eAAA;UAAA,KACT,OAAAe,SAAA,EAAAC,QAAA,CAA2BN,KAAA;YAE9B5B,oBAAA,KAAqB;UAAA;QAAA;MAAA;IAAA;IAI7Bd,CAAA,OAAAwB,UAAA;IAAAxB,CAAA,OAAA2B,EAAA;EAAA;IAAAA,EAAA,GAAA3B,CAAA;EAAA;EAnBF,MAAAiD,eAAA,GAAwBtB,EAoBV;EAAA,IAAAU,EAAA;EAAA,IAAArC,CAAA,SAAAwB,UAAA;IAIZa,EAAA,GAAAa,EAAA;MAAC;QAAAtB,QAAA,EAAAuB,UAAA;QAAArB,OAAA,EAAAsB;MAAA,IAAAF,EAAqB;MACpB,MAAAG,eAAA,OAA0B7B,UAAA;MAC1BQ,eAAa,CAACF,SAAA,EAAAG,GAAA,CAAAC,MAAA,CAAoBN,UAAA,GAAU;MAAA,IACxCI,eAAa,CAACF,SAAA,EAAAG,GAAA,CAAAqB,MAAA,MAAwB;QACxCtB,eAAA,CAAAE,MAAA,CAAqBJ,SAAA,GAAS;MAAA;MAEhCL,aAAA,CAAcO,eAAA;MACdlB,oBAAA,KAAqB;IAAA;IACvBd,CAAA,OAAAwB,UAAA;IAAAxB,CAAA,OAAAqC,EAAA;EAAA;IAAAA,EAAA,GAAArC,CAAA;EAAA;EATF,MAAAuD,eAAA,GAAwBlB,EAUV;EAAA,IAAAa,EAAA;EAAA,IAAAM,EAAA;EAAA,IAAAxD,CAAA,SAAAwB,UAAA,IAAAxB,CAAA,SAAAW,iBAAA,IAAAX,CAAA,SAAAa,iBAAA;IAGEqC,EAAA,GAAAA,CAAA;MAAA,IACVrC,iBAAA;QACF,MAAA4C,YAAA,kBAAAA,aAAA;UAAA,MACQ9C,iBAAA;YAAAO,EAAA,EAAwBM;UAAA,CAAW;UACzCV,oBAAA,MAAqB;QAAA;QAElB2C,YAAA;MAAA;IAAA;IAEND,EAAA,IAAChC,UAAA,EAAYb,iBAAA,EAAmBE,iBAAA;IAAkBb,CAAA,OAAAwB,UAAA;IAAAxB,CAAA,OAAAW,iBAAA;IAAAX,CAAA,OAAAa,iBAAA;IAAAb,CAAA,OAAAkD,EAAA;IAAAlD,CAAA,OAAAwD,EAAA;EAAA;IAAAN,EAAA,GAAAlD,CAAA;IAAAwD,EAAA,GAAAxD,CAAA;EAAA;EARrDb,KAAA,CAAAC,SAAA,CAAgB8D,EAQhB,EAAGM,EAAkD;EAAA,IAAAE,EAAA;EAAA,IAAA1D,CAAA,SAAAoC,YAAA,IAAApC,CAAA,SAAAC,qBAAA,IAAAD,CAAA,SAAAwB,UAAA,IAAAxB,CAAA,SAAAI,IAAA,IAAAJ,CAAA,SAAAO,OAAA,IAAAP,CAAA,SAAAuD,eAAA,IAAAvD,CAAA,SAAAG,eAAA,IAAAH,CAAA,SAAAK,CAAA,IAAAL,CAAA,SAAAiD,eAAA;IAGnDS,EAAA,GAAAC,KAAA,CAAC;MAAAC,SAAA,EAAA/D,SAAA;MAAAgE,QAAA,GACErC,UAAA,CAAA8B,MAAA,IAAoB,IACnBK,KAAA,CAAAxE,KAAA,CAAA2E,QAAA;QAAAD,QAAA,GACEE,IAAA,CAAC;UAAAH,SAAA,EAAe,GAAA/D,SAAA,SAAqB;UAAAgE,QAAA,EAClCxD,CAAA,CAAE;YAAA2D,KAAA,EAAgC9E,cAAA,CAAee,qBAAA,EAAuBG,IAAA;UAAA,CAAM;QAAA,C,GAEjF2D,IAAA,CAAC;UAAAH,SAAA,EAAc,GAAA/D,SAAA,cAA0B;UAAAgE,QAAA,EACtCrC,UAAA,CAAAyC,GAAA,EAAA/C,EAAA,EAAAgD,SAAA;YACC,MAAAC,aAAA,GAAsB,GAAGrC,SAAA,IAAWsC,KAAA,CAAAC,OAAA,CAAcnD,EAAA,EAAAe,GAAI,IAAOf,EAAA,CAAAe,GAAA,CAAAqB,MAAA,GAAgB,IAAI;YAAA,OAG/EK,KAAA,CAAC;cAAAE,QAAA,GACE/B,SAAA,MAAY,IAAKiC,IAAA,CAAC;gBAAAH,SAAA,EAAe,GAAA/D,SAAA,SAAqB;gBAAAgE,QAAA,EAAGxD,CAAA,CAAE;cAAA,C,GAC5D0D,IAAA,CAAC;gBAAAH,SAAA,EAAc,GAAA/D,SAAA,eAA2B;gBAAAgE,QAAA,EACvCO,KAAA,CAAAC,OAAA,CAAcnD,EAAA,EAAAe,GAAI,KACjBf,EAAA,CAAAe,GAAA,CAAAgC,GAAA,EAAAK,CAAA,EAAAC,UAAA;kBACE,MAAAC,gBAAA,GAAyBC,MAAA,CAAAC,IAAA,CAAYlD,UAAU,CAACM,SAAA,EAAAG,GAAA,CAAaL,UAAA,CAAS,CAAC;kBACvE,MAAA+C,eAAA,GACEF,MAAA,CAAAC,IAAA,CACElD,UAAU,CAACM,SAAA,EAAAG,GAAA,CAAaL,UAAA,IAAY4C,gBAAA,OAAsB,UAAAzB,SACrC;kBACzB,MAAA6B,YAAA,GACEpD,UAAU,CAACM,SAAA,EAAAG,GAAA,CAAaL,UAAA,IAAY4C,gBAAA,IAClCG,eAAA,KAAA5B,SACG;kBAAA,OAGLY,KAAA,CAAC;oBAAAE,QAAA,GACEjC,UAAA,MAAa,IACZmC,IAAA,CAAC;sBAAAH,SAAA,EAAe,GAAA/D,SAAA,SAAqB;sBAAAgE,QAAA,EAAGxD,CAAA,CAAE;oBAAA,C,GAE5C0D,IAAA,CAAAtE,SAAA;sBAAA2C,YAAA;sBAAAR,QAAA,EAEYA,UAAA;sBAAAC,SAAA,EACC2C,gBAAA;sBAAAI,YAAA;sBAAApC,QAAA,EAEDmC,eAAA;sBAAApE,OAAA;sBAAAuB,OAAA,EAEDA,SAAA;sBAAAyB,eAAA;sBAAAsB,cAAA,EAEO1E,eAAA,EAAA2E,GAAA,CAAqBN,gBAAA;sBAAAvB;oBAAA,C;qBAbhCrB,UAAA;gBAAA,CAkBb;cAAA,C;eAlCGuC,aAAA;UAAA,CAsCb;QAAA,C,GAEFJ,IAAA,CAAAvE,MAAA;UAAAuF,WAAA,EACc;UAAAnB,SAAA,EACD,GAAA/D,SAAA,UAAsB;UAAAmF,IAAA,EAC5B;UAAAC,YAAA,EACQ;UAAAC,SAAA,EACH;UAAAC,OAAA,EAAAA,CAAA;YAER/C,YAAA;cAAAR,QAAA;cAAAC,SAAA,EAEatB,OAAO,IAAAmC,KAAA;cAAAZ,OAAA,EACTN,UAAA,CAAA8B,MAAA;cAAAvB,QAAA,EACC;YAAA,CACZ;UAAA;UAAA8B,QAAA,EAGDxD,CAAA,CAAE;QAAA,C;UAIRmB,UAAA,CAAA8B,MAAA,MAAsB,IACrBK,KAAA,CAAC;QAAAC,SAAA,EAAe,GAAA/D,SAAA,cAA0B;QAAAgE,QAAA,GACxCE,IAAA,CAAC;UAAAH,SAAA,EAAe,GAAA/D,SAAA,SAAqB;UAAAgE,QAAA,EAAGxD,CAAA,CAAE;QAAA,C,GAC1C0D,IAAA,CAAAvE,MAAA;UAAAuF,WAAA,EACc;UAAAnB,SAAA,EACD,GAAA/D,SAAA,oBAAgC;UAAAmF,IAAA,EACtC;UAAAC,YAAA,EACQ;UAAAC,SAAA,EACH;UAAAC,OAAA,EAAAA,CAAA;YAAA,IAEJ5E,OAAA,CAAA+C,MAAA,IAAiB;cACnBlB,YAAA;gBAAAR,QAAA;gBAAAC,SAAA,EAEatB,OAAA,CAAA6E,IAAA,CAAAC,KAA4C,EAAA3C,KAAA;gBAAAZ,OAAA,EAC9CN,UAAA,CAAA8B,MAAA;gBAAAvB,QAAA,EACC;cAAA,CACZ;YAAA;UAAA;UAAA8B,QAAA,EAIHxD,CAAA,CAAE;QAAA,C;;;;;;;;;;;;;;;;SA1FXqD,E;CAgGJ;AA/NyD,SAAA2B,MAAAC,KAAA;EAAA,QAkNHA,KAAA,CAAAA,KAAA,CAAAC,KAAA,EAAAC,iBAAA;AAAA","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["getTranslation","React","useMemo","useListQuery","useTranslation","Button","Condition","fieldTypes","reduceFields","transformWhereQuery","validateWhereQuery","baseClass","WhereBuilder","props","collectionPluralLabel","fields","renderedFilters","resolvedFilterOptions","i18n","t","reducedFields","handleWhereChange","query","shouldUpdateQuery","setShouldUpdateQuery","useState","conditions","setConditions","whereFromSearch","where","or","transformedWhere","console","warn","JSON","stringify","addCondition","useCallback","andIndex","field","orIndex","relation","newConditions","defaultOperator","type","operators","value","and","splice","undefined","push","updateCondition","operator","incomingOperator","valueArg","existingRowCondition","defaults","newRowCondition","removeCondition","length","useEffect","handleChange","_jsxs","className","Fragment","_jsx","label","map","compoundOrKey","Array","isArray","_","condition","fieldName","Object","keys","filterOptions","get","RenderedFilter","buttonStyle","icon","iconPosition","iconStyle","onClick","find","admin","disableListFilter"],"sources":["../../../src/elements/WhereBuilder/index.tsx"],"sourcesContent":["'use client'\nimport type { Operator, Where } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport React, { useMemo } from 'react'\n\nimport type { AddCondition, UpdateCondition, WhereBuilderProps } from './types.js'\n\nimport { useListQuery } from '../../providers/ListQuery/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { Button } from '../Button/index.js'\nimport { Condition } from './Condition/index.js'\nimport fieldTypes from './field-types.js'\nimport { reduceFields } from './reduceFields.js'\nimport { transformWhereQuery } from './transformWhereQuery.js'\nimport validateWhereQuery from './validateWhereQuery.js'\nimport './index.scss'\n\nconst baseClass = 'where-builder'\n\nexport { WhereBuilderProps }\n\n/**\n * The WhereBuilder component is used to render the filter controls for a collection's list view.\n * It is part of the {@link ListControls} component which is used to render the controls (search, filter, where).\n */\nexport const WhereBuilder: React.FC<WhereBuilderProps> = (props) => {\n const { collectionPluralLabel, fields, renderedFilters, resolvedFilterOptions } = props\n const { i18n, t } = useTranslation()\n\n const reducedFields = useMemo(() => reduceFields({ fields, i18n }), [fields, i18n])\n\n const { handleWhereChange, query } = useListQuery()\n const [shouldUpdateQuery, setShouldUpdateQuery] = React.useState(false)\n\n const [conditions, setConditions] = React.useState<Where[]>(() => {\n const whereFromSearch = query.where\n\n if (whereFromSearch) {\n if (validateWhereQuery(whereFromSearch)) {\n return whereFromSearch.or\n }\n\n // Transform the where query to be in the right format. This will transform something simple like [text][equals]=example%20post to the right format\n const transformedWhere = transformWhereQuery(whereFromSearch)\n\n if (validateWhereQuery(transformedWhere)) {\n return transformedWhere.or\n }\n\n console.warn(`Invalid where query in URL: ${JSON.stringify(whereFromSearch)}`) // eslint-disable-line no-console\n }\n\n return []\n })\n\n const addCondition: AddCondition = React.useCallback(\n ({ andIndex, field, orIndex, relation }) => {\n const newConditions = [...conditions]\n\n const defaultOperator = fieldTypes[field.field.type].operators[0].value\n\n if (relation === 'and') {\n newConditions[orIndex].and.splice(andIndex, 0, {\n [field.value]: {\n [defaultOperator]: undefined,\n },\n })\n } else {\n newConditions.push({\n and: [\n {\n [field.value]: {\n [defaultOperator]: undefined,\n },\n },\n ],\n })\n }\n\n setConditions(newConditions)\n },\n [conditions],\n )\n\n const updateCondition: UpdateCondition = React.useCallback(\n ({ andIndex, field, operator: incomingOperator, orIndex, value: valueArg }) => {\n const existingRowCondition = conditions[orIndex].and[andIndex]\n\n const defaults = fieldTypes[field.field.type]\n const operator = incomingOperator || defaults.operators[0].value\n\n if (typeof existingRowCondition === 'object' && field.value) {\n const value = valueArg ?? existingRowCondition?.[operator]\n\n const newRowCondition = {\n [field.value]: { [operator]: value },\n }\n\n const newConditions = [...conditions]\n newConditions[orIndex].and[andIndex] = newRowCondition\n\n setConditions(newConditions)\n setShouldUpdateQuery(true)\n }\n },\n [conditions],\n )\n\n const removeCondition = React.useCallback(\n ({ andIndex, orIndex }) => {\n const newConditions = [...conditions]\n newConditions[orIndex].and.splice(andIndex, 1)\n\n if (newConditions[orIndex].and.length === 0) {\n newConditions.splice(orIndex, 1)\n }\n\n setConditions(newConditions)\n setShouldUpdateQuery(true)\n },\n [conditions],\n )\n\n React.useEffect(() => {\n if (shouldUpdateQuery) {\n async function handleChange() {\n await handleWhereChange({ or: conditions })\n setShouldUpdateQuery(false)\n }\n void handleChange()\n }\n }, [conditions, handleWhereChange, shouldUpdateQuery])\n\n return (\n <div className={baseClass}>\n {conditions.length > 0 && (\n <React.Fragment>\n <div className={`${baseClass}__label`}>\n {t('general:filterWhere', { label: getTranslation(collectionPluralLabel, i18n) })}\n </div>\n <ul className={`${baseClass}__or-filters`}>\n {conditions.map((or, orIndex) => {\n const compoundOrKey = `${orIndex}_${Array.isArray(or?.and) ? or.and.length : ''}`\n\n return (\n <li key={compoundOrKey}>\n {orIndex !== 0 && <div className={`${baseClass}__label`}>{t('general:or')}</div>}\n <ul className={`${baseClass}__and-filters`}>\n {Array.isArray(or?.and) &&\n or.and.map((_, andIndex) => {\n const condition = conditions[orIndex].and[andIndex]\n const fieldName = Object.keys(condition)[0]\n\n const operator =\n (Object.keys(condition?.[fieldName] || {})?.[0] as Operator) || undefined\n\n const value = condition?.[fieldName]?.[operator] || undefined\n\n return (\n <li key={andIndex}>\n {andIndex !== 0 && (\n <div className={`${baseClass}__label`}>{t('general:and')}</div>\n )}\n <Condition\n addCondition={addCondition}\n andIndex={andIndex}\n fieldName={fieldName}\n filterOptions={resolvedFilterOptions?.get(fieldName)}\n operator={operator}\n orIndex={orIndex}\n reducedFields={reducedFields}\n removeCondition={removeCondition}\n RenderedFilter={renderedFilters?.get(fieldName)}\n updateCondition={updateCondition}\n value={value}\n />\n </li>\n )\n })}\n </ul>\n </li>\n )\n })}\n </ul>\n <Button\n buttonStyle=\"icon-label\"\n className={`${baseClass}__add-or`}\n icon=\"plus\"\n iconPosition=\"left\"\n iconStyle=\"with-border\"\n onClick={() => {\n addCondition({\n andIndex: 0,\n field: reducedFields[0],\n orIndex: conditions.length,\n relation: 'or',\n })\n }}\n >\n {t('general:or')}\n </Button>\n </React.Fragment>\n )}\n {conditions.length === 0 && (\n <div className={`${baseClass}__no-filters`}>\n <div className={`${baseClass}__label`}>{t('general:noFiltersSet')}</div>\n <Button\n buttonStyle=\"icon-label\"\n className={`${baseClass}__add-first-filter`}\n icon=\"plus\"\n iconPosition=\"left\"\n iconStyle=\"with-border\"\n onClick={() => {\n if (reducedFields.length > 0) {\n addCondition({\n andIndex: 0,\n field: reducedFields.find((field) => !field.field.admin?.disableListFilter),\n orIndex: conditions.length,\n relation: 'or',\n })\n }\n }}\n >\n {t('general:addFilter')}\n </Button>\n </div>\n )}\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,7 +1,7 @@
1
1
  import type { I18nClient } from '@payloadcms/translations';
2
2
  import type { ClientField } from 'payload';
3
- import type { FieldCondition } from './types.js';
4
- export type ReduceClientFieldsArgs = {
3
+ import type { ReducedField } from './types.js';
4
+ type ReduceFieldOptionsArgs = {
5
5
  fields: ClientField[];
6
6
  i18n: I18nClient;
7
7
  labelPrefix?: string;
@@ -11,5 +11,6 @@ export type ReduceClientFieldsArgs = {
11
11
  * Reduces a field map to a flat array of fields with labels and values.
12
12
  * Used in the WhereBuilder component to render the fields in the dropdown.
13
13
  */
14
- export declare const reduceClientFields: ({ fields, i18n, labelPrefix, pathPrefix, }: ReduceClientFieldsArgs) => FieldCondition[];
15
- //# sourceMappingURL=reduceClientFields.d.ts.map
14
+ export declare const reduceFields: ({ fields, i18n, labelPrefix, pathPrefix, }: ReduceFieldOptionsArgs) => ReducedField[];
15
+ export {};
16
+ //# sourceMappingURL=reduceFields.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reduceFields.d.ts","sourceRoot":"","sources":["../../../src/elements/WhereBuilder/reduceFields.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAyB,UAAU,EAAE,MAAM,0BAA0B,CAAA;AACjF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAK1C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAM9C,KAAK,sBAAsB,GAAG;IAC5B,MAAM,EAAE,WAAW,EAAE,CAAA;IACrB,IAAI,EAAE,UAAU,CAAA;IAChB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,YAAY,+CAKtB,sBAAsB,KAAG,YAAY,EA4IvC,CAAA"}
@@ -9,7 +9,7 @@ import fieldTypes from './field-types.js';
9
9
  * Reduces a field map to a flat array of fields with labels and values.
10
10
  * Used in the WhereBuilder component to render the fields in the dropdown.
11
11
  */
12
- export const reduceClientFields = ({
12
+ export const reduceFields = ({
13
13
  fields,
14
14
  i18n,
15
15
  labelPrefix,
@@ -29,7 +29,7 @@ export const reduceClientFields = ({
29
29
  // Make sure we handle nested tabs
30
30
  const tabPathPrefix = tabHasName(tab) && tab.name ? pathPrefix ? pathPrefix + '.' + tab.name : tab.name : pathPrefix;
31
31
  if (typeof localizedTabLabel === 'string') {
32
- reduced.push(...reduceClientFields({
32
+ reduced.push(...reduceFields({
33
33
  fields: tab.fields,
34
34
  i18n,
35
35
  labelPrefix: labelWithPrefix,
@@ -42,7 +42,7 @@ export const reduceClientFields = ({
42
42
  }
43
43
  // Rows cant have labels, so we need to handle them differently
44
44
  if (field.type === 'row' && 'fields' in field) {
45
- reduced.push(...reduceClientFields({
45
+ reduced.push(...reduceFields({
46
46
  fields: field.fields,
47
47
  i18n,
48
48
  labelPrefix,
@@ -53,7 +53,7 @@ export const reduceClientFields = ({
53
53
  if (field.type === 'collapsible' && 'fields' in field) {
54
54
  const localizedTabLabel = getTranslation(field.label || '', i18n);
55
55
  const labelWithPrefix = labelPrefix ? labelPrefix + ' > ' + localizedTabLabel : localizedTabLabel;
56
- reduced.push(...reduceClientFields({
56
+ reduced.push(...reduceFields({
57
57
  fields: field.fields,
58
58
  i18n,
59
59
  labelPrefix: labelWithPrefix,
@@ -66,7 +66,7 @@ export const reduceClientFields = ({
66
66
  const labelWithPrefix = labelPrefix ? translatedLabel ? labelPrefix + ' > ' + translatedLabel : labelPrefix : translatedLabel;
67
67
  // Make sure we handle deeply nested groups
68
68
  const pathWithPrefix = field.name ? pathPrefix ? pathPrefix + '.' + field.name : field.name : pathPrefix;
69
- reduced.push(...reduceClientFields({
69
+ reduced.push(...reduceFields({
70
70
  fields: field.fields,
71
71
  i18n,
72
72
  labelPrefix: labelWithPrefix,
@@ -92,10 +92,10 @@ export const reduceClientFields = ({
92
92
  field,
93
93
  prefix: labelPrefix
94
94
  }) : localizedLabel;
95
- const formattedValue = pathPrefix ? createNestedClientFieldPath(pathPrefix, field) : field.name;
95
+ const fieldPath = pathPrefix ? createNestedClientFieldPath(pathPrefix, field) : field.name;
96
96
  const formattedField = {
97
97
  label: formattedLabel,
98
- value: formattedValue,
98
+ value: fieldPath,
99
99
  ...fieldTypes[field.type],
100
100
  field,
101
101
  operators
@@ -106,4 +106,4 @@ export const reduceClientFields = ({
106
106
  return reduced;
107
107
  }, []);
108
108
  };
109
- //# sourceMappingURL=reduceClientFields.js.map
109
+ //# sourceMappingURL=reduceFields.js.map