@payloadcms/ui 4.0.0-canary.1 → 4.0.0-canary.3

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 (290) hide show
  1. package/dist/css/colors.css +3 -0
  2. package/dist/css/design-tokens.css +5 -0
  3. package/dist/css/elevations.css +4 -0
  4. package/dist/css/radius.css +1 -3
  5. package/dist/css/theme.css +4 -0
  6. package/dist/css/utilities.css +5 -0
  7. package/dist/elements/APIKeyInput/index.css +92 -0
  8. package/dist/elements/APIKeyInput/index.d.ts +14 -0
  9. package/dist/elements/APIKeyInput/index.d.ts.map +1 -0
  10. package/dist/elements/APIKeyInput/index.js +86 -0
  11. package/dist/elements/APIKeyInput/index.js.map +1 -0
  12. package/dist/elements/AppHeader/index.d.ts +3 -2
  13. package/dist/elements/AppHeader/index.d.ts.map +1 -1
  14. package/dist/elements/AppHeader/index.js +2 -2
  15. package/dist/elements/AppHeader/index.js.map +1 -1
  16. package/dist/elements/BulkUpload/ActionsBar/index.css +10 -4
  17. package/dist/elements/BulkUpload/ActionsBar/index.d.ts.map +1 -1
  18. package/dist/elements/BulkUpload/ActionsBar/index.js +43 -40
  19. package/dist/elements/BulkUpload/ActionsBar/index.js.map +1 -1
  20. package/dist/elements/BulkUpload/AddFilesView/index.js +1 -1
  21. package/dist/elements/BulkUpload/AddFilesView/index.js.map +1 -1
  22. package/dist/elements/BulkUpload/AddingFilesView/index.css +25 -0
  23. package/dist/elements/BulkUpload/AddingFilesView/index.d.ts +1 -1
  24. package/dist/elements/BulkUpload/AddingFilesView/index.d.ts.map +1 -1
  25. package/dist/elements/BulkUpload/AddingFilesView/index.js +1 -1
  26. package/dist/elements/BulkUpload/AddingFilesView/index.js.map +1 -1
  27. package/dist/elements/BulkUpload/EditForm/index.css +9 -0
  28. package/dist/elements/BulkUpload/EditForm/index.d.ts +1 -1
  29. package/dist/elements/BulkUpload/EditForm/index.d.ts.map +1 -1
  30. package/dist/elements/BulkUpload/EditForm/index.js +1 -1
  31. package/dist/elements/BulkUpload/EditForm/index.js.map +1 -1
  32. package/dist/elements/BulkUpload/EditMany/DrawerContent.d.ts +1 -1
  33. package/dist/elements/BulkUpload/EditMany/DrawerContent.d.ts.map +1 -1
  34. package/dist/elements/BulkUpload/EditMany/DrawerContent.js +59 -55
  35. package/dist/elements/BulkUpload/EditMany/DrawerContent.js.map +1 -1
  36. package/dist/elements/BulkUpload/EditMany/index.css +71 -0
  37. package/dist/elements/BulkUpload/EditMany/index.d.ts +1 -1
  38. package/dist/elements/BulkUpload/EditMany/index.d.ts.map +1 -1
  39. package/dist/elements/BulkUpload/EditMany/index.js +1 -1
  40. package/dist/elements/BulkUpload/EditMany/index.js.map +1 -1
  41. package/dist/elements/BulkUpload/FileSidebar/index.css +54 -75
  42. package/dist/elements/BulkUpload/FileSidebar/index.d.ts.map +1 -1
  43. package/dist/elements/BulkUpload/FileSidebar/index.js +60 -50
  44. package/dist/elements/BulkUpload/FileSidebar/index.js.map +1 -1
  45. package/dist/elements/ColumnSelector/index.js +1 -1
  46. package/dist/elements/ColumnSelector/index.js.map +1 -1
  47. package/dist/elements/DocumentControls/index.css +7 -1
  48. package/dist/elements/DocumentFields/index.css +1 -1
  49. package/dist/elements/Drawer/index.d.ts +25 -0
  50. package/dist/elements/Drawer/index.d.ts.map +1 -1
  51. package/dist/elements/Drawer/index.js +134 -62
  52. package/dist/elements/Drawer/index.js.map +1 -1
  53. package/dist/elements/FileDetails/DraggableFileDetails/index.css +32 -0
  54. package/dist/elements/FileDetails/DraggableFileDetails/index.d.ts +1 -1
  55. package/dist/elements/FileDetails/DraggableFileDetails/index.d.ts.map +1 -1
  56. package/dist/elements/FileDetails/DraggableFileDetails/index.js +19 -18
  57. package/dist/elements/FileDetails/DraggableFileDetails/index.js.map +1 -1
  58. package/dist/elements/Hierarchy/Field/SelectedHierarchies.css +36 -0
  59. package/dist/elements/Hierarchy/Field/SelectedHierarchies.d.ts +1 -1
  60. package/dist/elements/Hierarchy/Field/SelectedHierarchies.d.ts.map +1 -1
  61. package/dist/elements/Hierarchy/Field/SelectedHierarchies.js +1 -1
  62. package/dist/elements/Hierarchy/Field/SelectedHierarchies.js.map +1 -1
  63. package/dist/elements/Hierarchy/Field/index.client.d.ts +1 -1
  64. package/dist/elements/Hierarchy/Field/index.client.d.ts.map +1 -1
  65. package/dist/elements/Hierarchy/Field/index.client.js +5 -2
  66. package/dist/elements/Hierarchy/Field/index.client.js.map +1 -1
  67. package/dist/elements/Hierarchy/Field/index.css +37 -0
  68. package/dist/elements/Hierarchy/MoveMany/index.d.ts +0 -1
  69. package/dist/elements/Hierarchy/MoveMany/index.d.ts.map +1 -1
  70. package/dist/elements/Hierarchy/MoveMany/index.js +0 -1
  71. package/dist/elements/Hierarchy/MoveMany/index.js.map +1 -1
  72. package/dist/elements/Hierarchy/Tree/LoadMore/index.css +27 -0
  73. package/dist/elements/Hierarchy/Tree/LoadMore/index.d.ts +1 -1
  74. package/dist/elements/Hierarchy/Tree/LoadMore/index.d.ts.map +1 -1
  75. package/dist/elements/Hierarchy/Tree/LoadMore/index.js +1 -1
  76. package/dist/elements/Hierarchy/Tree/LoadMore/index.js.map +1 -1
  77. package/dist/elements/Hierarchy/Tree/TreeFocusContext.d.ts.map +1 -1
  78. package/dist/elements/Hierarchy/Tree/TreeFocusContext.js +36 -16
  79. package/dist/elements/Hierarchy/Tree/TreeFocusContext.js.map +1 -1
  80. package/dist/elements/Hierarchy/Tree/TreeNode/index.d.ts.map +1 -1
  81. package/dist/elements/Hierarchy/Tree/TreeNode/index.js +20 -15
  82. package/dist/elements/Hierarchy/Tree/TreeNode/index.js.map +1 -1
  83. package/dist/elements/LoadMoreRow/index.css +34 -0
  84. package/dist/elements/LoadMoreRow/index.d.ts +1 -1
  85. package/dist/elements/LoadMoreRow/index.d.ts.map +1 -1
  86. package/dist/elements/LoadMoreRow/index.js +4 -8
  87. package/dist/elements/LoadMoreRow/index.js.map +1 -1
  88. package/dist/elements/Popup/PopupButtonList/index.css +5 -0
  89. package/dist/elements/Popup/PopupGroupLabel/index.css +19 -4
  90. package/dist/elements/PublishButton/ScheduleDrawer/buildUpcomingScheduleWhere.d.ts +13 -0
  91. package/dist/elements/PublishButton/ScheduleDrawer/buildUpcomingScheduleWhere.d.ts.map +1 -0
  92. package/dist/elements/PublishButton/ScheduleDrawer/buildUpcomingScheduleWhere.js +41 -0
  93. package/dist/elements/PublishButton/ScheduleDrawer/buildUpcomingScheduleWhere.js.map +1 -0
  94. package/dist/elements/PublishButton/ScheduleDrawer/index.d.ts +1 -0
  95. package/dist/elements/PublishButton/ScheduleDrawer/index.d.ts.map +1 -1
  96. package/dist/elements/PublishButton/ScheduleDrawer/index.js +9 -31
  97. package/dist/elements/PublishButton/ScheduleDrawer/index.js.map +1 -1
  98. package/dist/elements/PublishButton/index.d.ts.map +1 -1
  99. package/dist/elements/PublishButton/index.js +4 -5
  100. package/dist/elements/PublishButton/index.js.map +1 -1
  101. package/dist/elements/PublishMany/DrawerContent.d.ts +2 -1
  102. package/dist/elements/PublishMany/DrawerContent.d.ts.map +1 -1
  103. package/dist/elements/PublishMany/DrawerContent.js.map +1 -1
  104. package/dist/elements/PublishMany/index.d.ts +2 -6
  105. package/dist/elements/PublishMany/index.d.ts.map +1 -1
  106. package/dist/elements/PublishMany/index.js +0 -38
  107. package/dist/elements/PublishMany/index.js.map +1 -1
  108. package/dist/elements/ReactSelect/MultiValue/index.css +1 -1
  109. package/dist/elements/ReactSelect/getCaptureMenuScroll.d.ts +5 -0
  110. package/dist/elements/ReactSelect/getCaptureMenuScroll.d.ts.map +1 -0
  111. package/dist/elements/ReactSelect/getCaptureMenuScroll.js +10 -0
  112. package/dist/elements/ReactSelect/getCaptureMenuScroll.js.map +1 -0
  113. package/dist/elements/ReactSelect/getMenuListStyles.d.ts +6 -0
  114. package/dist/elements/ReactSelect/getMenuListStyles.d.ts.map +1 -0
  115. package/dist/elements/ReactSelect/getMenuListStyles.js +7 -0
  116. package/dist/elements/ReactSelect/getMenuListStyles.js.map +1 -0
  117. package/dist/elements/ReactSelect/index.css +0 -1
  118. package/dist/elements/ReactSelect/index.d.ts.map +1 -1
  119. package/dist/elements/ReactSelect/index.js +168 -140
  120. package/dist/elements/ReactSelect/index.js.map +1 -1
  121. package/dist/elements/ReactSelect/types.d.ts +1 -0
  122. package/dist/elements/ReactSelect/types.d.ts.map +1 -1
  123. package/dist/elements/ReactSelect/types.js.map +1 -1
  124. package/dist/elements/SchedulePublishButton/index.d.ts.map +1 -1
  125. package/dist/elements/SchedulePublishButton/index.js +6 -1
  126. package/dist/elements/SchedulePublishButton/index.js.map +1 -1
  127. package/dist/elements/SelectMany/index.js +1 -1
  128. package/dist/elements/SelectMany/index.js.map +1 -1
  129. package/dist/elements/Table/index.css +7 -5
  130. package/dist/elements/Tabs/index.css +100 -0
  131. package/dist/elements/Tabs/index.d.ts +32 -0
  132. package/dist/elements/Tabs/index.d.ts.map +1 -0
  133. package/dist/elements/Tabs/index.js +62 -0
  134. package/dist/elements/Tabs/index.js.map +1 -0
  135. package/dist/elements/TimezonePicker/index.css +0 -15
  136. package/dist/elements/Toasts/fieldErrors.d.ts +1 -0
  137. package/dist/elements/Toasts/fieldErrors.d.ts.map +1 -1
  138. package/dist/elements/Toasts/fieldErrors.js +25 -9
  139. package/dist/elements/Toasts/fieldErrors.js.map +1 -1
  140. package/dist/elements/Toasts/index.css +5 -0
  141. package/dist/elements/UnpublishButton/index.d.ts.map +1 -1
  142. package/dist/elements/UnpublishButton/index.js +5 -13
  143. package/dist/elements/UnpublishButton/index.js.map +1 -1
  144. package/dist/elements/UnpublishMany/DrawerContent.d.ts +2 -1
  145. package/dist/elements/UnpublishMany/DrawerContent.d.ts.map +1 -1
  146. package/dist/elements/UnpublishMany/DrawerContent.js.map +1 -1
  147. package/dist/elements/UnpublishMany/index.d.ts +2 -4
  148. package/dist/elements/UnpublishMany/index.d.ts.map +1 -1
  149. package/dist/elements/UnpublishMany/index.js +0 -38
  150. package/dist/elements/UnpublishMany/index.js.map +1 -1
  151. package/dist/elements/UserMenu/LanguageMenu/index.js +1 -1
  152. package/dist/elements/UserMenu/LanguageMenu/index.js.map +1 -1
  153. package/dist/elements/UserMenu/SettingsMenu/index.d.ts +6 -2
  154. package/dist/elements/UserMenu/SettingsMenu/index.d.ts.map +1 -1
  155. package/dist/elements/UserMenu/SettingsMenu/index.js +15 -10
  156. package/dist/elements/UserMenu/SettingsMenu/index.js.map +1 -1
  157. package/dist/elements/UserMenu/ThemeMenu/index.js +1 -1
  158. package/dist/elements/UserMenu/ThemeMenu/index.js.map +1 -1
  159. package/dist/elements/UserMenu/index.d.ts +2 -1
  160. package/dist/elements/UserMenu/index.d.ts.map +1 -1
  161. package/dist/elements/UserMenu/index.js +8 -5
  162. package/dist/elements/UserMenu/index.js.map +1 -1
  163. package/dist/exports/client/index.d.ts +7 -0
  164. package/dist/exports/client/index.d.ts.map +1 -1
  165. package/dist/exports/client/index.js +26 -26
  166. package/dist/exports/client/index.js.map +4 -4
  167. package/dist/fields/RadioGroup/index.css +6 -0
  168. package/dist/fields/Tabs/Tab/index.d.ts +0 -1
  169. package/dist/fields/Tabs/Tab/index.d.ts.map +1 -1
  170. package/dist/fields/Tabs/Tab/index.js +12 -23
  171. package/dist/fields/Tabs/Tab/index.js.map +1 -1
  172. package/dist/fields/Tabs/index.d.ts.map +1 -1
  173. package/dist/fields/Tabs/index.js +37 -37
  174. package/dist/fields/Tabs/index.js.map +1 -1
  175. package/dist/fields/Upload/HasMany/index.css +4 -0
  176. package/dist/forms/RenderFields/RenderField.d.ts +1 -1
  177. package/dist/icons/Check/index.css +1 -2
  178. package/dist/icons/Check/index.js +1 -1
  179. package/dist/icons/Check/index.js.map +1 -1
  180. package/dist/icons/Gear/index.d.ts.map +1 -1
  181. package/dist/icons/Gear/index.js +8 -1
  182. package/dist/icons/Gear/index.js.map +1 -1
  183. package/dist/icons/{Write → Key}/index.css +1 -1
  184. package/dist/icons/Key/index.d.ts +7 -0
  185. package/dist/icons/Key/index.d.ts.map +1 -0
  186. package/dist/icons/Key/index.js +24 -0
  187. package/dist/icons/Key/index.js.map +1 -0
  188. package/dist/icons/Schedule/index.d.ts.map +1 -1
  189. package/dist/icons/Schedule/index.js +38 -39
  190. package/dist/icons/Schedule/index.js.map +1 -1
  191. package/dist/icons/Warning/index.css +1 -7
  192. package/dist/icons/Warning/index.d.ts +1 -1
  193. package/dist/icons/Warning/index.d.ts.map +1 -1
  194. package/dist/icons/Warning/index.js +11 -16
  195. package/dist/icons/Warning/index.js.map +1 -1
  196. package/dist/icons/WarningTriangle/index.css +5 -0
  197. package/dist/icons/WarningTriangle/index.d.ts +6 -0
  198. package/dist/icons/WarningTriangle/index.d.ts.map +1 -0
  199. package/dist/icons/WarningTriangle/index.js +21 -0
  200. package/dist/icons/WarningTriangle/index.js.map +1 -0
  201. package/dist/icons/Write/index.d.ts +0 -1
  202. package/dist/icons/Write/index.d.ts.map +1 -1
  203. package/dist/icons/Write/index.js +1 -2
  204. package/dist/icons/Write/index.js.map +1 -1
  205. package/dist/providers/DocumentInfo/index.d.ts.map +1 -1
  206. package/dist/providers/DocumentInfo/index.js +4 -0
  207. package/dist/providers/DocumentInfo/index.js.map +1 -1
  208. package/dist/providers/DocumentInfo/types.d.ts +4 -0
  209. package/dist/providers/DocumentInfo/types.d.ts.map +1 -1
  210. package/dist/providers/DocumentInfo/types.js.map +1 -1
  211. package/dist/providers/Root/index.d.ts.map +1 -1
  212. package/dist/providers/Root/index.js +27 -24
  213. package/dist/providers/Root/index.js.map +1 -1
  214. package/dist/providers/TableColumns/RenderDefaultCell/index.css +1 -0
  215. package/dist/providers/ToastContainer/index.css +208 -0
  216. package/dist/providers/ToastContainer/index.d.ts +1 -0
  217. package/dist/providers/ToastContainer/index.d.ts.map +1 -1
  218. package/dist/providers/ToastContainer/index.js +19 -6
  219. package/dist/providers/ToastContainer/index.js.map +1 -1
  220. package/dist/scss/app.scss +1 -2
  221. package/dist/styles.css +1 -1
  222. package/dist/templates/Default/index.d.ts.map +1 -1
  223. package/dist/templates/Default/index.js +51 -9
  224. package/dist/templates/Default/index.js.map +1 -1
  225. package/dist/utilities/getHasScheduledPublish.d.ts +12 -0
  226. package/dist/utilities/getHasScheduledPublish.d.ts.map +1 -0
  227. package/dist/utilities/getHasScheduledPublish.js +38 -0
  228. package/dist/utilities/getHasScheduledPublish.js.map +1 -0
  229. package/dist/utilities/getVersions.d.ts.map +1 -1
  230. package/dist/utilities/getVersions.js +1 -21
  231. package/dist/utilities/getVersions.js.map +1 -1
  232. package/dist/views/Document/index.d.ts.map +1 -1
  233. package/dist/views/Document/index.js +10 -1
  234. package/dist/views/Document/index.js.map +1 -1
  235. package/dist/views/Edit/Auth/APIKey.d.ts.map +1 -1
  236. package/dist/views/Edit/Auth/APIKey.js +10 -32
  237. package/dist/views/Edit/Auth/APIKey.js.map +1 -1
  238. package/dist/views/Edit/Auth/index.css +0 -67
  239. package/dist/views/HierarchyList/DocumentListSelection/index.js +4 -4
  240. package/dist/views/HierarchyList/DocumentListSelection/index.js.map +1 -1
  241. package/dist/views/List/ListSelection/index.js +4 -4
  242. package/dist/views/List/ListSelection/index.js.map +1 -1
  243. package/dist/views/List/handleGroupBy.d.ts.map +1 -1
  244. package/dist/views/List/handleGroupBy.js +9 -0
  245. package/dist/views/List/handleGroupBy.js.map +1 -1
  246. package/dist/views/List/index.client.d.ts.map +1 -1
  247. package/dist/views/List/index.client.js +3 -2
  248. package/dist/views/List/index.client.js.map +1 -1
  249. package/dist/views/List/index.css +1 -1
  250. package/dist/views/List/index.d.ts.map +1 -1
  251. package/dist/views/List/index.js +2 -1
  252. package/dist/views/List/index.js.map +1 -1
  253. package/dist/views/List/renderListViewSlots.d.ts.map +1 -1
  254. package/dist/views/List/renderListViewSlots.js +11 -0
  255. package/dist/views/List/renderListViewSlots.js.map +1 -1
  256. package/dist/views/Logout/LogoutClient.js +1 -1
  257. package/dist/views/Logout/LogoutClient.js.map +1 -1
  258. package/dist/views/Version/SelectComparison/VersionDrawer/index.css +5 -0
  259. package/dist/views/Version/SelectComparison/VersionDrawer/index.d.ts +1 -1
  260. package/dist/views/Version/SelectComparison/VersionDrawer/index.d.ts.map +1 -1
  261. package/dist/views/Version/SelectComparison/VersionDrawer/index.js +1 -2
  262. package/dist/views/Version/SelectComparison/VersionDrawer/index.js.map +1 -1
  263. package/dist/views/Version/SelectComparison/index.css +5 -0
  264. package/dist/views/Version/SelectComparison/index.d.ts +1 -1
  265. package/dist/views/Version/SelectComparison/index.d.ts.map +1 -1
  266. package/dist/views/Version/SelectComparison/index.js +1 -1
  267. package/dist/views/Version/SelectComparison/index.js.map +1 -1
  268. package/dist/views/Versions/index.css +2 -2
  269. package/dist/views/Versions/index.d.ts +1 -1
  270. package/dist/views/Versions/index.d.ts.map +1 -1
  271. package/dist/views/Versions/index.js +3 -26
  272. package/dist/views/Versions/index.js.map +1 -1
  273. package/package.json +5 -5
  274. package/dist/elements/BulkUpload/AddingFilesView/index.scss +0 -25
  275. package/dist/elements/BulkUpload/EditForm/index.scss +0 -11
  276. package/dist/elements/BulkUpload/EditMany/index.scss +0 -171
  277. package/dist/elements/FileDetails/DraggableFileDetails/index.scss +0 -35
  278. package/dist/elements/Hierarchy/Field/SelectedHierarchies.scss +0 -78
  279. package/dist/elements/Hierarchy/Field/index.scss +0 -41
  280. package/dist/elements/Hierarchy/MoveMany/index.scss +0 -7
  281. package/dist/elements/Hierarchy/Tree/LoadMore/index.scss +0 -26
  282. package/dist/elements/Hierarchy/Tree/TreeConnector.d.ts +0 -7
  283. package/dist/elements/Hierarchy/Tree/TreeConnector.d.ts.map +0 -1
  284. package/dist/elements/Hierarchy/Tree/TreeConnector.js +0 -23
  285. package/dist/elements/Hierarchy/Tree/TreeConnector.js.map +0 -1
  286. package/dist/elements/LoadMoreRow/index.scss +0 -45
  287. package/dist/fields/Tabs/Tab/index.css +0 -82
  288. package/dist/scss/toasts.scss +0 -146
  289. package/dist/views/Version/SelectComparison/VersionDrawer/index.scss +0 -18
  290. package/dist/views/Version/SelectComparison/index.scss +0 -9
@@ -4,7 +4,7 @@ import { c as _c } from "react/compiler-runtime";
4
4
  import { jsx as _jsx } from "react/jsx-runtime";
5
5
  import { arrayMove } from '@dnd-kit/sortable';
6
6
  import { getTranslation } from '@payloadcms/translations';
7
- import React, { useEffect, useId } from 'react';
7
+ import React, { useCallback, useEffect, useId, useLayoutEffect, useMemo, useRef, useState } from 'react';
8
8
  import Select, { components as rsComponents } from 'react-select';
9
9
  import CreatableSelect from 'react-select/creatable';
10
10
  import { useDebouncedEffect } from '../../hooks/useDebouncedEffect.js';
@@ -15,6 +15,8 @@ import { ShimmerEffect } from '../ShimmerEffect/index.js';
15
15
  import { ClearIndicator } from './ClearIndicator/index.js';
16
16
  import { Control } from './Control/index.js';
17
17
  import { DropdownIndicator } from './DropdownIndicator/index.js';
18
+ import { getCaptureMenuScroll } from './getCaptureMenuScroll.js';
19
+ import { getMenuListStyles } from './getMenuListStyles.js';
18
20
  import { Input } from './Input/index.js';
19
21
  import { generateMultiValueDraggableID, MultiValue } from './MultiValue/index.js';
20
22
  import { MultiValueLabel } from './MultiValueLabel/index.js';
@@ -22,10 +24,6 @@ import { MultiValueRemove } from './MultiValueRemove/index.js';
22
24
  import { SingleValue } from './SingleValue/index.js';
23
25
  import { ValueContainer } from './ValueContainer/index.js';
24
26
  import './index.css';
25
- const createOption = label => ({
26
- label,
27
- value: label
28
- });
29
27
  // Propagates the nearest scoped theme (via ThemeProvider) into the portal div,
30
28
  // falling back to the global theme. Ensures dropdown menus portaled to
31
29
  // document.body inherit the correct theme (e.g. dark Popup).
@@ -52,23 +50,28 @@ function ThemedMenuPortal(props) {
52
50
  }
53
51
  return t1;
54
52
  }
53
+ const DEFAULT_MAX_MENU_HEIGHT = 300;
54
+ const MIN_USABLE_MENU_HEIGHT = 140;
55
+ const MENU_VIEWPORT_GAP = 16 // space between the control and the edge of the window
56
+ ;
55
57
  const SelectAdapter = props => {
56
58
  const {
57
59
  i18n,
58
60
  t
59
61
  } = useTranslation();
60
- const [inputValue, setInputValue] = React.useState('') // for creatable select
62
+ const [inputValue, setInputValue] = useState('') // for creatable select
61
63
  ;
62
64
  const uuid = useId();
63
- const [hasMounted, setHasMounted] = React.useState(false);
64
- useEffect(() => {
65
- setHasMounted(true);
66
- }, []);
65
+ const [hasMounted, setHasMounted] = useState(false);
66
+ const [isMenuOpen, setIsMenuOpen] = useState(false);
67
+ const [maxMenuHeight, setMaxMenuHeight] = useState(DEFAULT_MAX_MENU_HEIGHT);
68
+ const [menuPlacement, setMenuPlacement] = useState('auto');
69
+ const containerRef = useRef(null);
67
70
  const {
71
+ captureMenuScroll: captureMenuScrollProp,
68
72
  className,
69
73
  classNames: externalClassNames,
70
74
  components,
71
- customProps,
72
75
  disabled = false,
73
76
  filterOption = undefined,
74
77
  getOptionValue,
@@ -91,46 +94,145 @@ const SelectAdapter = props => {
91
94
  } = props;
92
95
  const menuPortalTarget = menuPortalTargetProp === undefined ? typeof document !== 'undefined' ? document.body : null : menuPortalTargetProp;
93
96
  const menuPosition = menuPositionProp ?? (menuPortalTarget ? 'fixed' : undefined);
97
+ const captureMenuScroll = getCaptureMenuScroll({
98
+ captureMenuScroll: captureMenuScrollProp,
99
+ menuPortalTarget
100
+ });
101
+ const updateMenuViewportSettings = useCallback(() => {
102
+ if (!isMenuOpen || typeof window === 'undefined') {
103
+ return;
104
+ }
105
+ const controlEl = containerRef.current?.querySelector('.rs__control');
106
+ if (!controlEl) {
107
+ return;
108
+ }
109
+ const controlRect = controlEl.getBoundingClientRect();
110
+ const availableBelow = Math.max(window.innerHeight - controlRect.bottom - MENU_VIEWPORT_GAP, 0);
111
+ const availableAbove = Math.max(controlRect.top - MENU_VIEWPORT_GAP, 0);
112
+ const shouldOpenTop = availableBelow < MIN_USABLE_MENU_HEIGHT && availableAbove > availableBelow;
113
+ const availableHeight = shouldOpenTop ? availableAbove : availableBelow;
114
+ setMenuPlacement(shouldOpenTop ? 'top' : 'bottom');
115
+ setMaxMenuHeight(Math.max(Math.min(Math.floor(availableHeight), DEFAULT_MAX_MENU_HEIGHT), 1));
116
+ }, [isMenuOpen]);
117
+ useEffect(() => {
118
+ setHasMounted(true);
119
+ }, []);
120
+ useLayoutEffect(() => {
121
+ if (!isMenuOpen) {
122
+ setMenuPlacement('auto');
123
+ setMaxMenuHeight(DEFAULT_MAX_MENU_HEIGHT);
124
+ return;
125
+ }
126
+ updateMenuViewportSettings();
127
+ window.addEventListener('resize', updateMenuViewportSettings);
128
+ window.addEventListener('scroll', updateMenuViewportSettings, true);
129
+ return () => {
130
+ window.removeEventListener('resize', updateMenuViewportSettings);
131
+ window.removeEventListener('scroll', updateMenuViewportSettings, true);
132
+ };
133
+ }, [isMenuOpen, updateMenuViewportSettings]);
94
134
  // Debounce the loading state so that fast option fetches (e.g. relationship
95
135
  // fields that resolve almost instantly) don't cause the clear indicator to
96
136
  // flash to react-select's loading indicator and back. The loading indicator
97
137
  // only appears once a load takes longer than the threshold below.
98
- const [isLoadingDebounced, setIsLoadingDebounced] = React.useState(false);
138
+ const [isLoadingDebounced, setIsLoadingDebounced] = useState(false);
99
139
  useDebouncedEffect(() => {
100
140
  setIsLoadingDebounced(isLoading);
101
141
  }, [isLoading], 250);
102
- const loadingMessage = () => t('general:loading') + '...';
103
- const classes = [className, 'react-select', showError && 'react-select--error'].filter(Boolean).join(' ');
104
- const styles = {
105
- // Remove the default react-select z-index from the menu so that our custom
106
- // z-index in the "payload-default" css layer can take effect, in such a way
107
- // that end users can easily override it as with other styles.
108
- menu: (rsStyles, state) => ({
109
- ...rsStyles,
110
- zIndex: undefined,
111
- ...externalStyles?.menu?.(rsStyles, state)
112
- }),
113
- // When portaling to document.body, the portal container needs an explicit
114
- // z-index so the menu appears above drawers and dialogs. unstyled={true}
115
- // strips react-select's default zIndex:9999 from the portal container.
116
- ...(menuPortalTarget && {
117
- menuPortal: (rsStyles_0, state_0) => ({
118
- ...rsStyles_0,
119
- zIndex: 9999,
120
- ...externalStyles?.menuPortal?.(rsStyles_0, state_0)
121
- })
122
- }),
123
- // Remove the default react-select min-height so our CSS can control it
124
- control: (rsStyles_1, state_1) => ({
125
- ...rsStyles_1,
126
- minHeight: undefined,
127
- ...externalStyles?.control?.(rsStyles_1, state_1)
128
- }),
129
- // Allow external option styles to override emotion defaults
130
- option: (rsStyles_2, state_2) => ({
131
- ...rsStyles_2,
132
- ...externalStyles?.option?.(rsStyles_2, state_2)
133
- })
142
+ const handleMenuOpen = () => {
143
+ setIsMenuOpen(true);
144
+ requestAnimationFrame(updateMenuViewportSettings);
145
+ onMenuOpen?.();
146
+ };
147
+ const handleMenuClose = () => {
148
+ setIsMenuOpen(false);
149
+ onMenuClose?.();
150
+ };
151
+ const menuClassName = useCallback(state => {
152
+ const placement = state.placement ? `rs__menu--placement-${state.placement}` : '';
153
+ const external = externalClassNames?.menu?.(state) ?? '';
154
+ return [placement, external].filter(Boolean).join(' ');
155
+ }, [externalClassNames]);
156
+ const selectClassNames = useMemo(() => ({
157
+ ...externalClassNames,
158
+ menu: menuClassName,
159
+ menuList: state_0 => {
160
+ const external_0 = externalClassNames?.menuList?.(state_0) ?? '';
161
+ return ['scrollbar-thin', external_0].filter(Boolean).join(' ');
162
+ }
163
+ }), [externalClassNames, menuClassName]);
164
+ const selectComponents = useMemo(() => ({
165
+ ClearIndicator,
166
+ Control,
167
+ DropdownIndicator,
168
+ Input,
169
+ MenuPortal: ThemedMenuPortal,
170
+ MultiValue,
171
+ MultiValueLabel,
172
+ MultiValueRemove,
173
+ SingleValue,
174
+ ValueContainer,
175
+ ...components
176
+ }), [components]);
177
+ const sharedSelectProps = {
178
+ captureMenuScroll,
179
+ className: [className, 'react-select', showError && 'react-select--error'].filter(Boolean).join(' '),
180
+ classNamePrefix: 'rs',
181
+ classNames: selectClassNames,
182
+ components: selectComponents,
183
+ filterOption,
184
+ instanceId: uuid,
185
+ isClearable,
186
+ isDisabled: disabled,
187
+ isLoading: isLoadingDebounced,
188
+ isSearchable,
189
+ loadingMessage: () => t('general:loading') + '...',
190
+ maxMenuHeight,
191
+ menuPlacement,
192
+ menuPortalTarget,
193
+ menuPosition,
194
+ menuShouldBlockScroll: false,
195
+ noOptionsMessage,
196
+ onChange,
197
+ onMenuClose: handleMenuClose,
198
+ onMenuOpen: handleMenuOpen,
199
+ options,
200
+ placeholder: getTranslation(placeholder, i18n),
201
+ styles: {
202
+ // Remove the default react-select z-index from the menu so that our custom
203
+ // z-index in the "payload-default" css layer can take effect, in such a way
204
+ // that end users can easily override it as with other styles.
205
+ menu: (rsStyles, state_1) => ({
206
+ ...rsStyles,
207
+ zIndex: undefined,
208
+ ...externalStyles?.menu?.(rsStyles, state_1)
209
+ }),
210
+ // When portaling to document.body, the portal container needs an explicit
211
+ // z-index so the menu appears above drawers and dialogs. unstyled={true}
212
+ // strips react-select's default zIndex:9999 from the portal container.
213
+ ...(menuPortalTarget && {
214
+ menuPortal: (rsStyles_0, state_2) => ({
215
+ ...rsStyles_0,
216
+ zIndex: 9999,
217
+ ...externalStyles?.menuPortal?.(rsStyles_0, state_2)
218
+ })
219
+ }),
220
+ // Remove the default react-select min-height so our CSS can control it
221
+ control: (rsStyles_1, state_3) => ({
222
+ ...rsStyles_1,
223
+ minHeight: undefined,
224
+ ...externalStyles?.control?.(rsStyles_1, state_3)
225
+ }),
226
+ // Allow external option styles to override emotion defaults
227
+ option: (rsStyles_2, state_4) => ({
228
+ ...rsStyles_2,
229
+ ...externalStyles?.option?.(rsStyles_2, state_4)
230
+ }),
231
+ // Keep react-select's computed maxHeight so the menu can fit available
232
+ // viewport space near screen edges (instead of using a fixed class value).
233
+ menuList: getMenuListStyles(externalStyles)
234
+ },
235
+ unstyled: true
134
236
  };
135
237
  if (!hasMounted) {
136
238
  return /*#__PURE__*/_jsx(ShimmerEffect, {
@@ -138,53 +240,14 @@ const SelectAdapter = props => {
138
240
  });
139
241
  }
140
242
  if (!isCreatable) {
141
- return /*#__PURE__*/_jsx(Select, {
142
- captureMenuScroll: true,
143
- customProps: customProps,
144
- ...props,
145
- className: classes,
146
- classNamePrefix: "rs",
147
- classNames: {
148
- ...externalClassNames,
149
- menu: state_3 => {
150
- const placement = state_3.placement ? `rs__menu--placement-${state_3.placement}` : '';
151
- const external = externalClassNames?.menu?.(state_3) ?? '';
152
- return [placement, external].filter(Boolean).join(' ');
153
- }
154
- },
155
- components: {
156
- ClearIndicator,
157
- Control,
158
- DropdownIndicator,
159
- Input,
160
- MenuPortal: ThemedMenuPortal,
161
- MultiValue,
162
- MultiValueLabel,
163
- MultiValueRemove,
164
- SingleValue,
165
- ValueContainer,
166
- ...components
167
- },
168
- filterOption: filterOption,
169
- getOptionValue: getOptionValue,
170
- instanceId: uuid,
171
- isClearable: isClearable,
172
- isDisabled: disabled,
173
- isLoading: isLoadingDebounced,
174
- isSearchable: isSearchable,
175
- loadingMessage: loadingMessage,
176
- menuPlacement: "auto",
177
- menuPortalTarget: menuPortalTarget,
178
- menuPosition: menuPosition,
179
- noOptionsMessage: noOptionsMessage,
180
- onChange: onChange,
181
- onMenuClose: onMenuClose,
182
- onMenuOpen: onMenuOpen,
183
- options: options,
184
- placeholder: getTranslation(placeholder, i18n),
185
- styles: styles,
186
- unstyled: true,
187
- value: value
243
+ return /*#__PURE__*/_jsx("div", {
244
+ ref: containerRef,
245
+ children: /*#__PURE__*/_jsx(Select, {
246
+ ...props,
247
+ ...sharedSelectProps,
248
+ getOptionValue: getOptionValue,
249
+ value: value
250
+ })
188
251
  });
189
252
  }
190
253
  const handleKeyDown = event => {
@@ -209,7 +272,10 @@ const SelectAdapter = props => {
209
272
  switch (event.key) {
210
273
  case 'Enter':
211
274
  case 'Tab':
212
- onChange([...value, createOption(inputValue)]);
275
+ onChange([...value, {
276
+ label: inputValue,
277
+ value: inputValue
278
+ }]);
213
279
  setInputValue('');
214
280
  event.preventDefault();
215
281
  break;
@@ -217,54 +283,16 @@ const SelectAdapter = props => {
217
283
  break;
218
284
  }
219
285
  };
220
- return /*#__PURE__*/_jsx(CreatableSelect, {
221
- captureMenuScroll: true,
222
- ...props,
223
- className: classes,
224
- classNamePrefix: "rs",
225
- classNames: {
226
- ...externalClassNames,
227
- menu: state_4 => {
228
- const placement_0 = state_4.placement ? `rs__menu--placement-${state_4.placement}` : '';
229
- const external_0 = externalClassNames?.menu?.(state_4) ?? '';
230
- return [placement_0, external_0].filter(Boolean).join(' ');
231
- }
232
- },
233
- components: {
234
- ClearIndicator,
235
- Control,
236
- DropdownIndicator,
237
- Input,
238
- MenuPortal: ThemedMenuPortal,
239
- MultiValue,
240
- MultiValueLabel,
241
- MultiValueRemove,
242
- SingleValue,
243
- ValueContainer,
244
- ...components
245
- },
246
- filterOption: filterOption,
247
- inputValue: inputValue,
248
- instanceId: uuid,
249
- isClearable: isClearable,
250
- isDisabled: disabled,
251
- isLoading: isLoadingDebounced,
252
- isSearchable: isSearchable,
253
- loadingMessage: loadingMessage,
254
- menuPlacement: "auto",
255
- menuPortalTarget: menuPortalTarget,
256
- menuPosition: menuPosition,
257
- noOptionsMessage: noOptionsMessage,
258
- onChange: onChange,
259
- onInputChange: newValue => setInputValue(newValue),
260
- onKeyDown: handleKeyDown,
261
- onMenuClose: onMenuClose,
262
- onMenuOpen: onMenuOpen,
263
- options: options,
264
- placeholder: getTranslation(placeholder, i18n),
265
- styles: styles,
266
- unstyled: true,
267
- value: value
286
+ return /*#__PURE__*/_jsx("div", {
287
+ ref: containerRef,
288
+ children: /*#__PURE__*/_jsx(CreatableSelect, {
289
+ ...props,
290
+ ...sharedSelectProps,
291
+ inputValue: inputValue,
292
+ onInputChange: newValue => setInputValue(newValue),
293
+ onKeyDown: handleKeyDown,
294
+ value: value
295
+ })
268
296
  });
269
297
  };
270
298
  const SortableSelect = props => {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["c","_c","arrayMove","getTranslation","React","useEffect","useId","Select","components","rsComponents","CreatableSelect","useDebouncedEffect","useTheme","useTranslation","DraggableSortable","ShimmerEffect","ClearIndicator","Control","DropdownIndicator","Input","generateMultiValueDraggableID","MultiValue","MultiValueLabel","MultiValueRemove","SingleValue","ValueContainer","createOption","label","value","ThemedMenuPortal","props","$","theme","menuPortalTheme","selectProps","customProps","t0","t1","_jsx","MenuPortal","innerProps","SelectAdapter","i18n","t","inputValue","setInputValue","useState","uuid","hasMounted","setHasMounted","className","classNames","externalClassNames","disabled","filterOption","undefined","getOptionValue","isClearable","isCreatable","isLoading","isSearchable","menuPortalTarget","menuPortalTargetProp","menuPosition","menuPositionProp","noOptionsMessage","numberOnly","onChange","onMenuClose","onMenuOpen","options","placeholder","showError","styles","externalStyles","document","body","isLoadingDebounced","setIsLoadingDebounced","loadingMessage","classes","filter","Boolean","join","menu","rsStyles","state","zIndex","menuPortal","control","minHeight","option","height","captureMenuScroll","classNamePrefix","placement","external","instanceId","isDisabled","menuPlacement","unstyled","handleKeyDown","event","acceptableKeys","isNumber","test","key","isActionKey","includes","preventDefault","trim","nativeEvent","isComposing","onInputChange","newValue","onKeyDown","SortableSelect","draggableIDs","Array","isArray","map","optionValue","ids","onDragEnd","moveFromIndex","moveToIndex","sorted","ReactSelect","isMulti","isSortable"],"sources":["../../../src/elements/ReactSelect/index.tsx"],"sourcesContent":["'use client'\nimport type { JSX, KeyboardEventHandler } from 'react'\nimport type { GroupBase, MenuProps, StylesConfig } from 'react-select'\n\nimport { arrayMove } from '@dnd-kit/sortable'\nimport { getTranslation } from '@payloadcms/translations'\nimport React, { useEffect, useId } from 'react'\nimport Select, { components as rsComponents } from 'react-select'\nimport CreatableSelect from 'react-select/creatable'\n\nimport type { Option, ReactSelectAdapterProps } from './types.js'\nexport type { Option } from './types.js'\n\nimport { useDebouncedEffect } from '../../hooks/useDebouncedEffect.js'\nimport { useTheme } from '../../providers/Theme/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { DraggableSortable } from '../DraggableSortable/index.js'\nimport { ShimmerEffect } from '../ShimmerEffect/index.js'\nimport { ClearIndicator } from './ClearIndicator/index.js'\nimport { Control } from './Control/index.js'\nimport { DropdownIndicator } from './DropdownIndicator/index.js'\nimport { Input } from './Input/index.js'\nimport { generateMultiValueDraggableID, MultiValue } from './MultiValue/index.js'\nimport { MultiValueLabel } from './MultiValueLabel/index.js'\nimport { MultiValueRemove } from './MultiValueRemove/index.js'\nimport { SingleValue } from './SingleValue/index.js'\nimport { ValueContainer } from './ValueContainer/index.js'\nimport './index.css'\n\nconst createOption = (label: string) => ({\n label,\n value: label,\n})\n\n// Propagates the nearest scoped theme (via ThemeProvider) into the portal div,\n// falling back to the global theme. Ensures dropdown menus portaled to\n// document.body inherit the correct theme (e.g. dark Popup).\nfunction ThemedMenuPortal<Opt, IsMulti extends boolean, Group extends GroupBase<Opt>>(\n props: React.ComponentProps<typeof rsComponents.MenuPortal<Opt, IsMulti, Group>>,\n) {\n const { theme } = useTheme()\n const menuPortalTheme = (props.selectProps as any)?.customProps?.menuPortalTheme\n return (\n <rsComponents.MenuPortal\n {...props}\n innerProps={{ 'data-theme': menuPortalTheme ?? theme } as JSX.IntrinsicElements['div']}\n />\n )\n}\n\nconst SelectAdapter: React.FC<ReactSelectAdapterProps> = (props) => {\n const { i18n, t } = useTranslation()\n const [inputValue, setInputValue] = React.useState('') // for creatable select\n const uuid = useId()\n const [hasMounted, setHasMounted] = React.useState(false)\n\n useEffect(() => {\n setHasMounted(true)\n }, [])\n\n const {\n className,\n classNames: externalClassNames,\n components,\n customProps,\n disabled = false,\n filterOption = undefined,\n getOptionValue,\n isClearable = true,\n isCreatable,\n isLoading,\n isSearchable = true,\n menuPortalTarget: menuPortalTargetProp,\n menuPosition: menuPositionProp,\n noOptionsMessage = () => t('general:noOptions'),\n numberOnly = false,\n onChange,\n onMenuClose,\n onMenuOpen,\n options,\n placeholder = t('general:selectValue'),\n showError,\n styles: externalStyles,\n value,\n } = props\n\n const menuPortalTarget =\n menuPortalTargetProp === undefined\n ? typeof document !== 'undefined'\n ? document.body\n : null\n : menuPortalTargetProp\n\n const menuPosition = menuPositionProp ?? (menuPortalTarget ? 'fixed' : undefined)\n\n // Debounce the loading state so that fast option fetches (e.g. relationship\n // fields that resolve almost instantly) don't cause the clear indicator to\n // flash to react-select's loading indicator and back. The loading indicator\n // only appears once a load takes longer than the threshold below.\n const [isLoadingDebounced, setIsLoadingDebounced] = React.useState(false)\n\n useDebouncedEffect(\n () => {\n setIsLoadingDebounced(isLoading)\n },\n [isLoading],\n 250,\n )\n\n const loadingMessage = () => t('general:loading') + '...'\n\n const classes = [className, 'react-select', showError && 'react-select--error']\n .filter(Boolean)\n .join(' ')\n\n const styles: StylesConfig<Option> = {\n // Remove the default react-select z-index from the menu so that our custom\n // z-index in the \"payload-default\" css layer can take effect, in such a way\n // that end users can easily override it as with other styles.\n menu: (rsStyles, state) => ({\n ...rsStyles,\n zIndex: undefined,\n ...externalStyles?.menu?.(rsStyles, state),\n }),\n // When portaling to document.body, the portal container needs an explicit\n // z-index so the menu appears above drawers and dialogs. unstyled={true}\n // strips react-select's default zIndex:9999 from the portal container.\n ...(menuPortalTarget && {\n menuPortal: (rsStyles, state) => ({\n ...rsStyles,\n zIndex: 9999,\n ...externalStyles?.menuPortal?.(rsStyles, state),\n }),\n }),\n // Remove the default react-select min-height so our CSS can control it\n control: (rsStyles, state) => ({\n ...rsStyles,\n minHeight: undefined,\n ...externalStyles?.control?.(rsStyles, state),\n }),\n // Allow external option styles to override emotion defaults\n option: (rsStyles, state) => ({\n ...rsStyles,\n ...externalStyles?.option?.(rsStyles, state),\n }),\n }\n\n if (!hasMounted) {\n return <ShimmerEffect height=\"var(--field-min-height)\" />\n }\n\n if (!isCreatable) {\n return (\n <Select<Option, boolean, GroupBase<Option>>\n captureMenuScroll\n customProps={customProps}\n {...props}\n className={classes}\n classNamePrefix=\"rs\"\n classNames={{\n ...externalClassNames,\n menu: (state: MenuProps<Option, boolean, GroupBase<Option>>) => {\n const placement = state.placement ? `rs__menu--placement-${state.placement}` : ''\n const external = externalClassNames?.menu?.(state) ?? ''\n return [placement, external].filter(Boolean).join(' ')\n },\n }}\n components={{\n ClearIndicator,\n Control,\n DropdownIndicator,\n Input,\n MenuPortal: ThemedMenuPortal,\n MultiValue,\n MultiValueLabel,\n MultiValueRemove,\n SingleValue,\n ValueContainer,\n ...components,\n }}\n filterOption={filterOption}\n getOptionValue={getOptionValue}\n instanceId={uuid}\n isClearable={isClearable}\n isDisabled={disabled}\n isLoading={isLoadingDebounced}\n isSearchable={isSearchable}\n loadingMessage={loadingMessage}\n menuPlacement=\"auto\"\n menuPortalTarget={menuPortalTarget}\n menuPosition={menuPosition}\n noOptionsMessage={noOptionsMessage}\n onChange={onChange}\n onMenuClose={onMenuClose}\n onMenuOpen={onMenuOpen}\n options={options}\n placeholder={getTranslation(placeholder, i18n)}\n styles={styles}\n unstyled={true}\n value={value}\n />\n )\n }\n const handleKeyDown: KeyboardEventHandler = (event) => {\n if (numberOnly === true) {\n const acceptableKeys = [\n 'Tab',\n 'Escape',\n 'Backspace',\n 'Enter',\n 'ArrowRight',\n 'ArrowLeft',\n 'ArrowUp',\n 'ArrowDown',\n ]\n const isNumber = !/\\D/.test(event.key)\n const isActionKey = acceptableKeys.includes(event.key)\n if (!isNumber && !isActionKey) {\n event.preventDefault()\n return\n }\n }\n if (!value || !inputValue || inputValue.trim() === '') {\n return\n }\n if (filterOption && !filterOption(null, inputValue)) {\n return\n }\n if (event.nativeEvent.isComposing) {\n return\n }\n switch (event.key) {\n case 'Enter':\n case 'Tab':\n onChange([...(value as Option[]), createOption(inputValue)])\n setInputValue('')\n event.preventDefault()\n break\n default:\n break\n }\n }\n\n return (\n <CreatableSelect<Option, boolean, GroupBase<Option>>\n captureMenuScroll\n {...props}\n className={classes}\n classNamePrefix=\"rs\"\n classNames={{\n ...externalClassNames,\n menu: (state: MenuProps<Option, boolean, GroupBase<Option>>) => {\n const placement = state.placement ? `rs__menu--placement-${state.placement}` : ''\n const external = externalClassNames?.menu?.(state) ?? ''\n return [placement, external].filter(Boolean).join(' ')\n },\n }}\n components={{\n ClearIndicator,\n Control,\n DropdownIndicator,\n Input,\n MenuPortal: ThemedMenuPortal,\n MultiValue,\n MultiValueLabel,\n MultiValueRemove,\n SingleValue,\n ValueContainer,\n ...components,\n }}\n filterOption={filterOption}\n inputValue={inputValue}\n instanceId={uuid}\n isClearable={isClearable}\n isDisabled={disabled}\n isLoading={isLoadingDebounced}\n isSearchable={isSearchable}\n loadingMessage={loadingMessage}\n menuPlacement=\"auto\"\n menuPortalTarget={menuPortalTarget}\n menuPosition={menuPosition}\n noOptionsMessage={noOptionsMessage}\n onChange={onChange}\n onInputChange={(newValue) => setInputValue(newValue)}\n onKeyDown={handleKeyDown}\n onMenuClose={onMenuClose}\n onMenuOpen={onMenuOpen}\n options={options}\n placeholder={getTranslation(placeholder, i18n)}\n styles={styles}\n unstyled={true}\n value={value}\n />\n )\n}\n\nconst SortableSelect: React.FC<ReactSelectAdapterProps> = (props) => {\n const { getOptionValue, onChange, value } = props\n\n let draggableIDs: string[] = []\n if (value) {\n draggableIDs = (Array.isArray(value) ? value : [value]).map((optionValue) => {\n return generateMultiValueDraggableID(optionValue, getOptionValue)\n })\n }\n\n return (\n <DraggableSortable\n className=\"react-select-container\"\n ids={draggableIDs}\n onDragEnd={({ moveFromIndex, moveToIndex }) => {\n let sorted = value\n if (value && Array.isArray(value)) {\n sorted = arrayMove(value, moveFromIndex, moveToIndex)\n }\n onChange(sorted)\n }}\n >\n <SelectAdapter {...props} />\n </DraggableSortable>\n )\n}\n\nexport const ReactSelect: React.FC<ReactSelectAdapterProps> = (props) => {\n const { isMulti, isSortable } = props\n\n if (isMulti && isSortable) {\n return <SortableSelect {...props} />\n }\n\n return <SelectAdapter {...props} />\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["c","_c","arrayMove","getTranslation","React","useCallback","useEffect","useId","useLayoutEffect","useMemo","useRef","useState","Select","components","rsComponents","CreatableSelect","useDebouncedEffect","useTheme","useTranslation","DraggableSortable","ShimmerEffect","ClearIndicator","Control","DropdownIndicator","getCaptureMenuScroll","getMenuListStyles","Input","generateMultiValueDraggableID","MultiValue","MultiValueLabel","MultiValueRemove","SingleValue","ValueContainer","ThemedMenuPortal","props","$","theme","menuPortalTheme","selectProps","customProps","t0","t1","_jsx","MenuPortal","innerProps","DEFAULT_MAX_MENU_HEIGHT","MIN_USABLE_MENU_HEIGHT","MENU_VIEWPORT_GAP","SelectAdapter","i18n","t","inputValue","setInputValue","uuid","hasMounted","setHasMounted","isMenuOpen","setIsMenuOpen","maxMenuHeight","setMaxMenuHeight","menuPlacement","setMenuPlacement","containerRef","captureMenuScroll","captureMenuScrollProp","className","classNames","externalClassNames","disabled","filterOption","undefined","getOptionValue","isClearable","isCreatable","isLoading","isSearchable","menuPortalTarget","menuPortalTargetProp","menuPosition","menuPositionProp","noOptionsMessage","numberOnly","onChange","onMenuClose","onMenuOpen","options","placeholder","showError","styles","externalStyles","value","document","body","updateMenuViewportSettings","window","controlEl","current","querySelector","controlRect","getBoundingClientRect","availableBelow","Math","max","innerHeight","bottom","availableAbove","top","shouldOpenTop","availableHeight","min","floor","addEventListener","removeEventListener","isLoadingDebounced","setIsLoadingDebounced","handleMenuOpen","requestAnimationFrame","handleMenuClose","menuClassName","state","placement","external","menu","filter","Boolean","join","selectClassNames","menuList","selectComponents","sharedSelectProps","classNamePrefix","instanceId","isDisabled","loadingMessage","menuShouldBlockScroll","rsStyles","zIndex","menuPortal","control","minHeight","option","unstyled","height","ref","handleKeyDown","event","acceptableKeys","isNumber","test","key","isActionKey","includes","preventDefault","trim","nativeEvent","isComposing","label","onInputChange","newValue","onKeyDown","SortableSelect","draggableIDs","Array","isArray","map","optionValue","ids","onDragEnd","moveFromIndex","moveToIndex","sorted","ReactSelect","isMulti","isSortable"],"sources":["../../../src/elements/ReactSelect/index.tsx"],"sourcesContent":["'use client'\nimport type { JSX, KeyboardEventHandler } from 'react'\nimport type { GroupBase, MenuListProps, MenuProps, StylesConfig } from 'react-select'\n\nimport { arrayMove } from '@dnd-kit/sortable'\nimport { getTranslation } from '@payloadcms/translations'\nimport React, {\n useCallback,\n useEffect,\n useId,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n} from 'react'\nimport Select, { components as rsComponents } from 'react-select'\nimport CreatableSelect from 'react-select/creatable'\n\nimport type { Option, ReactSelectAdapterProps } from './types.js'\nexport type { Option } from './types.js'\n\nimport { useDebouncedEffect } from '../../hooks/useDebouncedEffect.js'\nimport { useTheme } from '../../providers/Theme/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { DraggableSortable } from '../DraggableSortable/index.js'\nimport { ShimmerEffect } from '../ShimmerEffect/index.js'\nimport { ClearIndicator } from './ClearIndicator/index.js'\nimport { Control } from './Control/index.js'\nimport { DropdownIndicator } from './DropdownIndicator/index.js'\nimport { getCaptureMenuScroll } from './getCaptureMenuScroll.js'\nimport { getMenuListStyles } from './getMenuListStyles.js'\nimport { Input } from './Input/index.js'\nimport { generateMultiValueDraggableID, MultiValue } from './MultiValue/index.js'\nimport { MultiValueLabel } from './MultiValueLabel/index.js'\nimport { MultiValueRemove } from './MultiValueRemove/index.js'\nimport { SingleValue } from './SingleValue/index.js'\nimport { ValueContainer } from './ValueContainer/index.js'\nimport './index.css'\n\n// Propagates the nearest scoped theme (via ThemeProvider) into the portal div,\n// falling back to the global theme. Ensures dropdown menus portaled to\n// document.body inherit the correct theme (e.g. dark Popup).\nfunction ThemedMenuPortal<Opt, IsMulti extends boolean, Group extends GroupBase<Opt>>(\n props: React.ComponentProps<typeof rsComponents.MenuPortal<Opt, IsMulti, Group>>,\n) {\n const { theme } = useTheme()\n const menuPortalTheme = (props.selectProps as any)?.customProps?.menuPortalTheme\n return (\n <rsComponents.MenuPortal\n {...props}\n innerProps={{ 'data-theme': menuPortalTheme ?? theme } as JSX.IntrinsicElements['div']}\n />\n )\n}\n\nconst DEFAULT_MAX_MENU_HEIGHT = 300\nconst MIN_USABLE_MENU_HEIGHT = 140\nconst MENU_VIEWPORT_GAP = 16 // space between the control and the edge of the window\n\nconst SelectAdapter: React.FC<ReactSelectAdapterProps> = (props) => {\n const { i18n, t } = useTranslation()\n const [inputValue, setInputValue] = useState('') // for creatable select\n const uuid = useId()\n const [hasMounted, setHasMounted] = useState(false)\n const [isMenuOpen, setIsMenuOpen] = useState(false)\n const [maxMenuHeight, setMaxMenuHeight] = useState(DEFAULT_MAX_MENU_HEIGHT)\n const [menuPlacement, setMenuPlacement] = useState<'auto' | 'bottom' | 'top'>('auto')\n const containerRef = useRef<HTMLDivElement>(null)\n\n const {\n captureMenuScroll: captureMenuScrollProp,\n className,\n classNames: externalClassNames,\n components,\n disabled = false,\n filterOption = undefined,\n getOptionValue,\n isClearable = true,\n isCreatable,\n isLoading,\n isSearchable = true,\n menuPortalTarget: menuPortalTargetProp,\n menuPosition: menuPositionProp,\n noOptionsMessage = () => t('general:noOptions'),\n numberOnly = false,\n onChange,\n onMenuClose,\n onMenuOpen,\n options,\n placeholder = t('general:selectValue'),\n showError,\n styles: externalStyles,\n value,\n } = props\n\n const menuPortalTarget =\n menuPortalTargetProp === undefined\n ? typeof document !== 'undefined'\n ? document.body\n : null\n : menuPortalTargetProp\n\n const menuPosition = menuPositionProp ?? (menuPortalTarget ? 'fixed' : undefined)\n const captureMenuScroll = getCaptureMenuScroll({\n captureMenuScroll: captureMenuScrollProp,\n menuPortalTarget,\n })\n\n const updateMenuViewportSettings = useCallback(() => {\n if (!isMenuOpen || typeof window === 'undefined') {\n return\n }\n\n const controlEl = containerRef.current?.querySelector('.rs__control')\n\n if (!controlEl) {\n return\n }\n\n const controlRect = controlEl.getBoundingClientRect()\n const availableBelow = Math.max(window.innerHeight - controlRect.bottom - MENU_VIEWPORT_GAP, 0)\n const availableAbove = Math.max(controlRect.top - MENU_VIEWPORT_GAP, 0)\n const shouldOpenTop = availableBelow < MIN_USABLE_MENU_HEIGHT && availableAbove > availableBelow\n const availableHeight = shouldOpenTop ? availableAbove : availableBelow\n\n setMenuPlacement(shouldOpenTop ? 'top' : 'bottom')\n setMaxMenuHeight(Math.max(Math.min(Math.floor(availableHeight), DEFAULT_MAX_MENU_HEIGHT), 1))\n }, [isMenuOpen])\n\n useEffect(() => {\n setHasMounted(true)\n }, [])\n\n useLayoutEffect(() => {\n if (!isMenuOpen) {\n setMenuPlacement('auto')\n setMaxMenuHeight(DEFAULT_MAX_MENU_HEIGHT)\n return\n }\n\n updateMenuViewportSettings()\n\n window.addEventListener('resize', updateMenuViewportSettings)\n window.addEventListener('scroll', updateMenuViewportSettings, true)\n\n return () => {\n window.removeEventListener('resize', updateMenuViewportSettings)\n window.removeEventListener('scroll', updateMenuViewportSettings, true)\n }\n }, [isMenuOpen, updateMenuViewportSettings])\n\n // Debounce the loading state so that fast option fetches (e.g. relationship\n // fields that resolve almost instantly) don't cause the clear indicator to\n // flash to react-select's loading indicator and back. The loading indicator\n // only appears once a load takes longer than the threshold below.\n const [isLoadingDebounced, setIsLoadingDebounced] = useState(false)\n\n useDebouncedEffect(\n () => {\n setIsLoadingDebounced(isLoading)\n },\n [isLoading],\n 250,\n )\n\n const handleMenuOpen = () => {\n setIsMenuOpen(true)\n requestAnimationFrame(updateMenuViewportSettings)\n onMenuOpen?.()\n }\n\n const handleMenuClose = () => {\n setIsMenuOpen(false)\n onMenuClose?.()\n }\n\n const menuClassName = useCallback(\n (state: MenuProps<Option, boolean, GroupBase<Option>>) => {\n const placement = state.placement ? `rs__menu--placement-${state.placement}` : ''\n const external = externalClassNames?.menu?.(state) ?? ''\n return [placement, external].filter(Boolean).join(' ')\n },\n [externalClassNames],\n )\n\n const selectClassNames = useMemo(\n () => ({\n ...externalClassNames,\n menu: menuClassName,\n menuList: (state: MenuListProps<Option, boolean, GroupBase<Option>>) => {\n const external = externalClassNames?.menuList?.(state) ?? ''\n return ['scrollbar-thin', external].filter(Boolean).join(' ')\n },\n }),\n [externalClassNames, menuClassName],\n )\n\n const selectComponents = useMemo(\n () => ({\n ClearIndicator,\n Control,\n DropdownIndicator,\n Input,\n MenuPortal: ThemedMenuPortal,\n MultiValue,\n MultiValueLabel,\n MultiValueRemove,\n SingleValue,\n ValueContainer,\n ...components,\n }),\n [components],\n )\n\n const sharedSelectProps = {\n captureMenuScroll,\n className: [className, 'react-select', showError && 'react-select--error']\n .filter(Boolean)\n .join(' '),\n classNamePrefix: 'rs',\n classNames: selectClassNames,\n components: selectComponents,\n filterOption,\n instanceId: uuid,\n isClearable,\n isDisabled: disabled,\n isLoading: isLoadingDebounced,\n isSearchable,\n loadingMessage: () => t('general:loading') + '...',\n maxMenuHeight,\n menuPlacement,\n menuPortalTarget,\n menuPosition,\n menuShouldBlockScroll: false,\n noOptionsMessage,\n onChange,\n onMenuClose: handleMenuClose,\n onMenuOpen: handleMenuOpen,\n options,\n placeholder: getTranslation(placeholder, i18n),\n styles: {\n // Remove the default react-select z-index from the menu so that our custom\n // z-index in the \"payload-default\" css layer can take effect, in such a way\n // that end users can easily override it as with other styles.\n menu: (rsStyles, state) => ({\n ...rsStyles,\n zIndex: undefined,\n ...externalStyles?.menu?.(rsStyles, state),\n }),\n // When portaling to document.body, the portal container needs an explicit\n // z-index so the menu appears above drawers and dialogs. unstyled={true}\n // strips react-select's default zIndex:9999 from the portal container.\n ...(menuPortalTarget && {\n menuPortal: (rsStyles, state) => ({\n ...rsStyles,\n zIndex: 9999,\n ...externalStyles?.menuPortal?.(rsStyles, state),\n }),\n }),\n // Remove the default react-select min-height so our CSS can control it\n control: (rsStyles, state) => ({\n ...rsStyles,\n minHeight: undefined,\n ...externalStyles?.control?.(rsStyles, state),\n }),\n // Allow external option styles to override emotion defaults\n option: (rsStyles, state) => ({\n ...rsStyles,\n ...externalStyles?.option?.(rsStyles, state),\n }),\n // Keep react-select's computed maxHeight so the menu can fit available\n // viewport space near screen edges (instead of using a fixed class value).\n menuList: getMenuListStyles(externalStyles),\n },\n unstyled: true,\n }\n\n if (!hasMounted) {\n return <ShimmerEffect height=\"var(--field-min-height)\" />\n }\n\n if (!isCreatable) {\n return (\n <div ref={containerRef}>\n <Select<Option, boolean, GroupBase<Option>>\n {...props}\n {...sharedSelectProps}\n getOptionValue={getOptionValue}\n value={value}\n />\n </div>\n )\n }\n\n const handleKeyDown: KeyboardEventHandler = (event) => {\n if (numberOnly === true) {\n const acceptableKeys = [\n 'Tab',\n 'Escape',\n 'Backspace',\n 'Enter',\n 'ArrowRight',\n 'ArrowLeft',\n 'ArrowUp',\n 'ArrowDown',\n ]\n const isNumber = !/\\D/.test(event.key)\n const isActionKey = acceptableKeys.includes(event.key)\n if (!isNumber && !isActionKey) {\n event.preventDefault()\n return\n }\n }\n\n if (!value || !inputValue || inputValue.trim() === '') {\n return\n }\n\n if (filterOption && !filterOption(null, inputValue)) {\n return\n }\n\n if (event.nativeEvent.isComposing) {\n return\n }\n\n switch (event.key) {\n case 'Enter':\n case 'Tab':\n onChange([\n ...(value as Option[]),\n {\n label: inputValue,\n value: inputValue,\n },\n ])\n setInputValue('')\n event.preventDefault()\n break\n default:\n break\n }\n }\n\n return (\n <div ref={containerRef}>\n <CreatableSelect<Option, boolean, GroupBase<Option>>\n {...props}\n {...sharedSelectProps}\n inputValue={inputValue}\n onInputChange={(newValue) => setInputValue(newValue)}\n onKeyDown={handleKeyDown}\n value={value}\n />\n </div>\n )\n}\n\nconst SortableSelect: React.FC<ReactSelectAdapterProps> = (props) => {\n const { getOptionValue, onChange, value } = props\n\n let draggableIDs: string[] = []\n if (value) {\n draggableIDs = (Array.isArray(value) ? value : [value]).map((optionValue) => {\n return generateMultiValueDraggableID(optionValue, getOptionValue)\n })\n }\n\n return (\n <DraggableSortable\n className=\"react-select-container\"\n ids={draggableIDs}\n onDragEnd={({ moveFromIndex, moveToIndex }) => {\n let sorted = value\n if (value && Array.isArray(value)) {\n sorted = arrayMove(value, moveFromIndex, moveToIndex)\n }\n onChange(sorted)\n }}\n >\n <SelectAdapter {...props} />\n </DraggableSortable>\n )\n}\n\nexport const ReactSelect: React.FC<ReactSelectAdapterProps> = (props) => {\n const { isMulti, isSortable } = props\n\n if (isMulti && isSortable) {\n return <SortableSelect {...props} />\n }\n\n return <SelectAdapter {...props} />\n}\n"],"mappings":"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","ignoreList":[]}
@@ -45,6 +45,7 @@ export type OptionGroup = {
45
45
  export type ReactSelectAdapterProps = {
46
46
  backspaceRemovesValue?: boolean;
47
47
  blurInputOnSelect?: boolean;
48
+ captureMenuScroll?: boolean;
48
49
  className?: string;
49
50
  classNames?: ClassNamesConfig<Option, boolean, GroupBase<Option>>;
50
51
  components?: {
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/elements/ReactSelect/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/elements/ReactSelect/types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","names":[],"sources":["../../../src/elements/ReactSelect/types.ts"],"sourcesContent":["import type { LabelFunction } from 'payload'\nimport type {\n ClassNamesConfig,\n CommonProps,\n GroupBase,\n Props as ReactSelectStateManagerProps,\n StylesConfig,\n} from 'react-select'\n\nimport type { DocumentDrawerProps } from '../DocumentDrawer/types.js'\n\ntype CustomSelectProps = {\n disableKeyDown?: boolean\n disableMouseDown?: boolean\n draggableProps?: any\n droppableRef?: React.RefObject<HTMLDivElement | null>\n editableProps?: (\n data: Option<{ label: string; value: string }>,\n className: string,\n selectProps: ReactSelectStateManagerProps,\n ) => any\n /** Force the portaled menu to render with a specific theme, independent of the control's ambient theme. */\n menuPortalTheme?: 'dark' | 'light'\n onDelete?: DocumentDrawerProps['onDelete']\n onDocumentOpen?: (args: {\n collectionSlug: string\n hasReadPermission: boolean\n id: number | string\n openInNewTab?: boolean\n }) => void\n onDuplicate?: DocumentDrawerProps['onSave']\n onSave?: DocumentDrawerProps['onSave']\n valueContainerLabel?: string\n}\n\n// augment the types for the `Select` component from `react-select`\n// this is to include the `selectProps` prop at the top-level `Select` component\n// @ts-expect-error-next-line // TODO Fix this - moduleResolution 16 breaks our declare module\ndeclare module 'react-select/dist/declarations/src/Select' {\n export interface Props<Option, IsMulti extends boolean, Group extends GroupBase<Option>> {\n customProps?: CustomSelectProps\n }\n}\n\n// augment the types for the `CommonPropsAndClassName` from `react-select`\n// this will include the `selectProps` prop to every `react-select` component automatically\n// @ts-expect-error-next-line // TODO Fix this - moduleResolution 16 breaks our declare module\ndeclare module 'react-select/dist/declarations/src' {\n export interface CommonPropsAndClassName<\n Option,\n IsMulti extends boolean,\n Group extends GroupBase<Option>,\n > extends CommonProps<Option, IsMulti, Group> {\n customProps?: CustomSelectProps & ReactSelectStateManagerProps<Option, IsMulti, Group>\n }\n}\n\nexport type Option<TValue = unknown> = {\n [key: string]: unknown\n //* The ID is used to identify the option in the UI. If it doesn't exist and value cannot be transformed into a string, sorting won't work */\n id?: string\n value: TValue\n}\n\nexport type OptionGroup = {\n label: string\n options: Option[]\n}\n\nexport type ReactSelectAdapterProps = {\n backspaceRemovesValue?: boolean\n blurInputOnSelect?: boolean\n className?: string\n classNames?: ClassNamesConfig<Option, boolean, GroupBase<Option>>\n components?: {\n [key: string]: React.FC<any>\n }\n customProps?: CustomSelectProps\n disabled?: boolean\n filterOption?:\n | ((\n {\n allowEdit,\n data,\n label,\n value,\n }: { allowEdit: boolean; data: Option; label: string; value: string },\n search: string,\n ) => boolean)\n | undefined\n getOptionValue?: ReactSelectStateManagerProps<\n Option,\n boolean,\n GroupBase<Option>\n >['getOptionValue']\n id?: string\n inputId?: string\n isClearable?: boolean\n /** Allows you to create own values in the UI despite them not being pre-specified */\n isCreatable?: boolean\n isLoading?: boolean\n /** Allows you to specify multiple values instead of just one */\n isMulti?: boolean\n isOptionSelected?: any\n isSearchable?: boolean\n isSortable?: boolean\n menuIsOpen?: boolean\n menuPortalTarget?: HTMLElement | null\n menuPosition?: 'absolute' | 'fixed'\n noOptionsMessage?: (obj: { inputValue: string }) => string\n numberOnly?: boolean\n onChange?: (value: Option | Option[]) => void\n onInputChange?: (val: string) => void\n onMenuClose?: () => void\n onMenuOpen?: () => void\n onMenuScrollToBottom?: () => void\n options: Option[] | OptionGroup[]\n placeholder?: LabelFunction | string\n showError?: boolean\n styles?: StylesConfig<Option>\n value?: Option | Option[]\n}\n"],"mappings":"AAqEA","ignoreList":[]}
1
+ {"version":3,"file":"types.js","names":[],"sources":["../../../src/elements/ReactSelect/types.ts"],"sourcesContent":["import type { LabelFunction } from 'payload'\nimport type {\n ClassNamesConfig,\n CommonProps,\n GroupBase,\n Props as ReactSelectStateManagerProps,\n StylesConfig,\n} from 'react-select'\n\nimport type { DocumentDrawerProps } from '../DocumentDrawer/types.js'\n\ntype CustomSelectProps = {\n disableKeyDown?: boolean\n disableMouseDown?: boolean\n draggableProps?: any\n droppableRef?: React.RefObject<HTMLDivElement | null>\n editableProps?: (\n data: Option<{ label: string; value: string }>,\n className: string,\n selectProps: ReactSelectStateManagerProps,\n ) => any\n /** Force the portaled menu to render with a specific theme, independent of the control's ambient theme. */\n menuPortalTheme?: 'dark' | 'light'\n onDelete?: DocumentDrawerProps['onDelete']\n onDocumentOpen?: (args: {\n collectionSlug: string\n hasReadPermission: boolean\n id: number | string\n openInNewTab?: boolean\n }) => void\n onDuplicate?: DocumentDrawerProps['onSave']\n onSave?: DocumentDrawerProps['onSave']\n valueContainerLabel?: string\n}\n\n// augment the types for the `Select` component from `react-select`\n// this is to include the `selectProps` prop at the top-level `Select` component\n// @ts-expect-error-next-line // TODO Fix this - moduleResolution 16 breaks our declare module\ndeclare module 'react-select/dist/declarations/src/Select' {\n export interface Props<Option, IsMulti extends boolean, Group extends GroupBase<Option>> {\n customProps?: CustomSelectProps\n }\n}\n\n// augment the types for the `CommonPropsAndClassName` from `react-select`\n// this will include the `selectProps` prop to every `react-select` component automatically\n// @ts-expect-error-next-line // TODO Fix this - moduleResolution 16 breaks our declare module\ndeclare module 'react-select/dist/declarations/src' {\n export interface CommonPropsAndClassName<\n Option,\n IsMulti extends boolean,\n Group extends GroupBase<Option>,\n > extends CommonProps<Option, IsMulti, Group> {\n customProps?: CustomSelectProps & ReactSelectStateManagerProps<Option, IsMulti, Group>\n }\n}\n\nexport type Option<TValue = unknown> = {\n [key: string]: unknown\n //* The ID is used to identify the option in the UI. If it doesn't exist and value cannot be transformed into a string, sorting won't work */\n id?: string\n value: TValue\n}\n\nexport type OptionGroup = {\n label: string\n options: Option[]\n}\n\nexport type ReactSelectAdapterProps = {\n backspaceRemovesValue?: boolean\n blurInputOnSelect?: boolean\n captureMenuScroll?: boolean\n className?: string\n classNames?: ClassNamesConfig<Option, boolean, GroupBase<Option>>\n components?: {\n [key: string]: React.FC<any>\n }\n customProps?: CustomSelectProps\n disabled?: boolean\n filterOption?:\n | ((\n {\n allowEdit,\n data,\n label,\n value,\n }: { allowEdit: boolean; data: Option; label: string; value: string },\n search: string,\n ) => boolean)\n | undefined\n getOptionValue?: ReactSelectStateManagerProps<\n Option,\n boolean,\n GroupBase<Option>\n >['getOptionValue']\n id?: string\n inputId?: string\n isClearable?: boolean\n /** Allows you to create own values in the UI despite them not being pre-specified */\n isCreatable?: boolean\n isLoading?: boolean\n /** Allows you to specify multiple values instead of just one */\n isMulti?: boolean\n isOptionSelected?: any\n isSearchable?: boolean\n isSortable?: boolean\n menuIsOpen?: boolean\n menuPortalTarget?: HTMLElement | null\n menuPosition?: 'absolute' | 'fixed'\n noOptionsMessage?: (obj: { inputValue: string }) => string\n numberOnly?: boolean\n onChange?: (value: Option | Option[]) => void\n onInputChange?: (val: string) => void\n onMenuClose?: () => void\n onMenuOpen?: () => void\n onMenuScrollToBottom?: () => void\n options: Option[] | OptionGroup[]\n placeholder?: LabelFunction | string\n showError?: boolean\n styles?: StylesConfig<Option>\n value?: Option | Option[]\n}\n"],"mappings":"AAqEA","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/SchedulePublishButton/index.tsx"],"names":[],"mappings":"AAIA,OAAO,KAA4B,MAAM,OAAO,CAAA;AAWhD,eAAO,MAAM,qBAAqB,EAAE,KAAK,CAAC,EAAE,CAAC;IAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,CAsElE,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/SchedulePublishButton/index.tsx"],"names":[],"mappings":"AAIA,OAAO,KAA4B,MAAM,OAAO,CAAA;AAWhD,eAAO,MAAM,qBAAqB,EAAE,KAAK,CAAC,EAAE,CAAC;IAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,CA8ElE,CAAA"}
@@ -20,6 +20,8 @@ export const SchedulePublishButton = ({
20
20
  collectionSlug,
21
21
  globalSlug,
22
22
  hasPublishPermission,
23
+ hasScheduledPublish,
24
+ setHasScheduledPublish,
23
25
  unpublishedVersionCount
24
26
  } = useDocumentInfo();
25
27
  const {
@@ -65,7 +67,9 @@ export const SchedulePublishButton = ({
65
67
  children: [/*#__PURE__*/_jsx(Button, {
66
68
  buttonStyle: "ghost",
67
69
  disabled: disabled,
68
- icon: /*#__PURE__*/_jsx(ScheduleIcon, {}),
70
+ icon: /*#__PURE__*/_jsx(ScheduleIcon, {
71
+ active: hasScheduledPublish
72
+ }),
69
73
  id: "schedule-publish-button",
70
74
  onClick: () => toggleModal(drawerSlug)
71
75
  }), /*#__PURE__*/_jsx(Tooltip, {
@@ -75,6 +79,7 @@ export const SchedulePublishButton = ({
75
79
  })]
76
80
  }), isModalOpen(drawerSlug) && /*#__PURE__*/_jsx(ScheduleDrawer, {
77
81
  defaultType: !hasNewerVersions ? 'unpublish' : 'publish',
82
+ onUpcomingChange: setHasScheduledPublish,
78
83
  schedulePublishConfig: scheduledPublishEnabled && typeof entityConfig.versions.drafts.schedulePublish === 'object' ? entityConfig.versions.drafts.schedulePublish : undefined,
79
84
  slug: drawerSlug
80
85
  })]
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["useModal","hasAutosaveEnabled","hasScheduledPublishEnabled","React","useMemo","useState","useFormModified","ScheduleIcon","useConfig","useDocumentInfo","useTranslation","Button","ScheduleDrawer","Tooltip","SchedulePublishButton","disabled","id","collectionSlug","globalSlug","hasPublishPermission","unpublishedVersionCount","getEntityConfig","isModalOpen","toggleModal","t","modified","hovered","setHovered","entityConfig","scheduledPublishEnabled","hasAutosave","canSchedulePublish","Boolean","drawerSlug","hasNewerVersions","label","_jsxs","Fragment","onPointerEnter","onPointerLeave","style","position","_jsx","buttonStyle","icon","onClick","delay","show","defaultType","schedulePublishConfig","versions","drafts","schedulePublish","undefined","slug"],"sources":["../../../src/elements/SchedulePublishButton/index.tsx"],"sourcesContent":["'use client'\n\nimport { useModal } from '@faceless-ui/modal'\nimport { hasAutosaveEnabled, hasScheduledPublishEnabled } from 'payload/shared'\nimport React, { useMemo, useState } from 'react'\n\nimport { useFormModified } from '../../forms/Form/context.js'\nimport { ScheduleIcon } from '../../icons/Schedule/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { Button } from '../Button/index.js'\nimport { ScheduleDrawer } from '../PublishButton/ScheduleDrawer/index.js'\nimport { Tooltip } from '../Tooltip/index.js'\n\nexport const SchedulePublishButton: React.FC<{ disabled?: boolean }> = ({ disabled }) => {\n const { id, collectionSlug, globalSlug, hasPublishPermission, unpublishedVersionCount } =\n useDocumentInfo()\n\n const { getEntityConfig } = useConfig()\n const { isModalOpen, toggleModal } = useModal()\n const { t } = useTranslation()\n const modified = useFormModified()\n const [hovered, setHovered] = useState(false)\n\n const entityConfig = useMemo(() => {\n if (collectionSlug) {\n return getEntityConfig({ collectionSlug })\n }\n if (globalSlug) {\n return getEntityConfig({ globalSlug })\n }\n }, [collectionSlug, globalSlug, getEntityConfig])\n\n const scheduledPublishEnabled = hasScheduledPublishEnabled(entityConfig)\n const hasAutosave = hasAutosaveEnabled(entityConfig)\n\n const canSchedulePublish = Boolean(\n scheduledPublishEnabled &&\n hasPublishPermission &&\n (globalSlug || (collectionSlug && id)) &&\n (hasAutosave || !modified),\n )\n\n const drawerSlug = `schedule-publish-${id}`\n const hasNewerVersions = unpublishedVersionCount > 0\n\n if (!canSchedulePublish) {\n return null\n }\n\n const label = t('version:schedulePublish')\n\n return (\n <React.Fragment>\n <span\n onPointerEnter={() => setHovered(true)}\n onPointerLeave={() => setHovered(false)}\n style={{ position: 'relative' }}\n >\n <Button\n buttonStyle=\"ghost\"\n disabled={disabled}\n icon={<ScheduleIcon />}\n id=\"schedule-publish-button\"\n onClick={() => toggleModal(drawerSlug)}\n />\n <Tooltip delay={0} show={hovered}>\n {label}\n </Tooltip>\n </span>\n {isModalOpen(drawerSlug) && (\n <ScheduleDrawer\n defaultType={!hasNewerVersions ? 'unpublish' : 'publish'}\n schedulePublishConfig={\n scheduledPublishEnabled &&\n typeof entityConfig.versions.drafts.schedulePublish === 'object'\n ? entityConfig.versions.drafts.schedulePublish\n : undefined\n }\n slug={drawerSlug}\n />\n )}\n </React.Fragment>\n )\n}\n"],"mappings":"AAAA;;;AAEA,SAASA,QAAQ,QAAQ;AACzB,SAASC,kBAAkB,EAAEC,0BAA0B,QAAQ;AAC/D,OAAOC,KAAA,IAASC,OAAO,EAAEC,QAAQ,QAAQ;AAEzC,SAASC,eAAe,QAAQ;AAChC,SAASC,YAAY,QAAQ;AAC7B,SAASC,SAAS,QAAQ;AAC1B,SAASC,eAAe,QAAQ;AAChC,SAASC,cAAc,QAAQ;AAC/B,SAASC,MAAM,QAAQ;AACvB,SAASC,cAAc,QAAQ;AAC/B,SAASC,OAAO,QAAQ;AAExB,OAAO,MAAMC,qBAAA,GAA0DA,CAAC;EAAEC;AAAQ,CAAE;EAClF,MAAM;IAAEC,EAAE;IAAEC,cAAc;IAAEC,UAAU;IAAEC,oBAAoB;IAAEC;EAAuB,CAAE,GACrFX,eAAA;EAEF,MAAM;IAAEY;EAAe,CAAE,GAAGb,SAAA;EAC5B,MAAM;IAAEc,WAAW;IAAEC;EAAW,CAAE,GAAGvB,QAAA;EACrC,MAAM;IAAEwB;EAAC,CAAE,GAAGd,cAAA;EACd,MAAMe,QAAA,GAAWnB,eAAA;EACjB,MAAM,CAACoB,OAAA,EAASC,UAAA,CAAW,GAAGtB,QAAA,CAAS;EAEvC,MAAMuB,YAAA,GAAexB,OAAA,CAAQ;IAC3B,IAAIa,cAAA,EAAgB;MAClB,OAAOI,eAAA,CAAgB;QAAEJ;MAAe;IAC1C;IACA,IAAIC,UAAA,EAAY;MACd,OAAOG,eAAA,CAAgB;QAAEH;MAAW;IACtC;EACF,GAAG,CAACD,cAAA,EAAgBC,UAAA,EAAYG,eAAA,CAAgB;EAEhD,MAAMQ,uBAAA,GAA0B3B,0BAAA,CAA2B0B,YAAA;EAC3D,MAAME,WAAA,GAAc7B,kBAAA,CAAmB2B,YAAA;EAEvC,MAAMG,kBAAA,GAAqBC,OAAA,CACzBH,uBAAA,IACEV,oBAAA,KACCD,UAAA,IAAeD,cAAA,IAAkBD,EAAE,MACnCc,WAAA,IAAe,CAACL,QAAO;EAG5B,MAAMQ,UAAA,GAAa,oBAAoBjB,EAAA,EAAI;EAC3C,MAAMkB,gBAAA,GAAmBd,uBAAA,GAA0B;EAEnD,IAAI,CAACW,kBAAA,EAAoB;IACvB,OAAO;EACT;EAEA,MAAMI,KAAA,GAAQX,CAAA,CAAE;EAEhB,oBACEY,KAAA,CAACjC,KAAA,CAAMkC,QAAQ;4BACbD,KAAA,CAAC;MACCE,cAAA,EAAgBA,CAAA,KAAMX,UAAA,CAAW;MACjCY,cAAA,EAAgBA,CAAA,KAAMZ,UAAA,CAAW;MACjCa,KAAA,EAAO;QAAEC,QAAA,EAAU;MAAW;8BAE9BC,IAAA,CAAC/B,MAAA;QACCgC,WAAA,EAAY;QACZ5B,QAAA,EAAUA,QAAA;QACV6B,IAAA,eAAMF,IAAA,CAACnC,YAAA;QACPS,EAAA,EAAG;QACH6B,OAAA,EAASA,CAAA,KAAMtB,WAAA,CAAYU,UAAA;uBAE7BS,IAAA,CAAC7B,OAAA;QAAQiC,KAAA,EAAO;QAAGC,IAAA,EAAMrB,OAAA;kBACtBS;;QAGJb,WAAA,CAAYW,UAAA,kBACXS,IAAA,CAAC9B,cAAA;MACCoC,WAAA,EAAa,CAACd,gBAAA,GAAmB,cAAc;MAC/Ce,qBAAA,EACEpB,uBAAA,IACA,OAAOD,YAAA,CAAasB,QAAQ,CAACC,MAAM,CAACC,eAAe,KAAK,WACpDxB,YAAA,CAAasB,QAAQ,CAACC,MAAM,CAACC,eAAe,GAC5CC,SAAA;MAENC,IAAA,EAAMrB;;;AAKhB","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["useModal","hasAutosaveEnabled","hasScheduledPublishEnabled","React","useMemo","useState","useFormModified","ScheduleIcon","useConfig","useDocumentInfo","useTranslation","Button","ScheduleDrawer","Tooltip","SchedulePublishButton","disabled","id","collectionSlug","globalSlug","hasPublishPermission","hasScheduledPublish","setHasScheduledPublish","unpublishedVersionCount","getEntityConfig","isModalOpen","toggleModal","t","modified","hovered","setHovered","entityConfig","scheduledPublishEnabled","hasAutosave","canSchedulePublish","Boolean","drawerSlug","hasNewerVersions","label","_jsxs","Fragment","onPointerEnter","onPointerLeave","style","position","_jsx","buttonStyle","icon","active","onClick","delay","show","defaultType","onUpcomingChange","schedulePublishConfig","versions","drafts","schedulePublish","undefined","slug"],"sources":["../../../src/elements/SchedulePublishButton/index.tsx"],"sourcesContent":["'use client'\n\nimport { useModal } from '@faceless-ui/modal'\nimport { hasAutosaveEnabled, hasScheduledPublishEnabled } from 'payload/shared'\nimport React, { useMemo, useState } from 'react'\n\nimport { useFormModified } from '../../forms/Form/context.js'\nimport { ScheduleIcon } from '../../icons/Schedule/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { Button } from '../Button/index.js'\nimport { ScheduleDrawer } from '../PublishButton/ScheduleDrawer/index.js'\nimport { Tooltip } from '../Tooltip/index.js'\n\nexport const SchedulePublishButton: React.FC<{ disabled?: boolean }> = ({ disabled }) => {\n const {\n id,\n collectionSlug,\n globalSlug,\n hasPublishPermission,\n hasScheduledPublish,\n setHasScheduledPublish,\n unpublishedVersionCount,\n } = useDocumentInfo()\n\n const { getEntityConfig } = useConfig()\n const { isModalOpen, toggleModal } = useModal()\n const { t } = useTranslation()\n const modified = useFormModified()\n const [hovered, setHovered] = useState(false)\n\n const entityConfig = useMemo(() => {\n if (collectionSlug) {\n return getEntityConfig({ collectionSlug })\n }\n if (globalSlug) {\n return getEntityConfig({ globalSlug })\n }\n }, [collectionSlug, globalSlug, getEntityConfig])\n\n const scheduledPublishEnabled = hasScheduledPublishEnabled(entityConfig)\n const hasAutosave = hasAutosaveEnabled(entityConfig)\n\n const canSchedulePublish = Boolean(\n scheduledPublishEnabled &&\n hasPublishPermission &&\n (globalSlug || (collectionSlug && id)) &&\n (hasAutosave || !modified),\n )\n\n const drawerSlug = `schedule-publish-${id}`\n const hasNewerVersions = unpublishedVersionCount > 0\n\n if (!canSchedulePublish) {\n return null\n }\n\n const label = t('version:schedulePublish')\n\n return (\n <React.Fragment>\n <span\n onPointerEnter={() => setHovered(true)}\n onPointerLeave={() => setHovered(false)}\n style={{ position: 'relative' }}\n >\n <Button\n buttonStyle=\"ghost\"\n disabled={disabled}\n icon={<ScheduleIcon active={hasScheduledPublish} />}\n id=\"schedule-publish-button\"\n onClick={() => toggleModal(drawerSlug)}\n />\n <Tooltip delay={0} show={hovered}>\n {label}\n </Tooltip>\n </span>\n {isModalOpen(drawerSlug) && (\n <ScheduleDrawer\n defaultType={!hasNewerVersions ? 'unpublish' : 'publish'}\n onUpcomingChange={setHasScheduledPublish}\n schedulePublishConfig={\n scheduledPublishEnabled &&\n typeof entityConfig.versions.drafts.schedulePublish === 'object'\n ? entityConfig.versions.drafts.schedulePublish\n : undefined\n }\n slug={drawerSlug}\n />\n )}\n </React.Fragment>\n )\n}\n"],"mappings":"AAAA;;;AAEA,SAASA,QAAQ,QAAQ;AACzB,SAASC,kBAAkB,EAAEC,0BAA0B,QAAQ;AAC/D,OAAOC,KAAA,IAASC,OAAO,EAAEC,QAAQ,QAAQ;AAEzC,SAASC,eAAe,QAAQ;AAChC,SAASC,YAAY,QAAQ;AAC7B,SAASC,SAAS,QAAQ;AAC1B,SAASC,eAAe,QAAQ;AAChC,SAASC,cAAc,QAAQ;AAC/B,SAASC,MAAM,QAAQ;AACvB,SAASC,cAAc,QAAQ;AAC/B,SAASC,OAAO,QAAQ;AAExB,OAAO,MAAMC,qBAAA,GAA0DA,CAAC;EAAEC;AAAQ,CAAE;EAClF,MAAM;IACJC,EAAE;IACFC,cAAc;IACdC,UAAU;IACVC,oBAAoB;IACpBC,mBAAmB;IACnBC,sBAAsB;IACtBC;EAAuB,CACxB,GAAGb,eAAA;EAEJ,MAAM;IAAEc;EAAe,CAAE,GAAGf,SAAA;EAC5B,MAAM;IAAEgB,WAAW;IAAEC;EAAW,CAAE,GAAGzB,QAAA;EACrC,MAAM;IAAE0B;EAAC,CAAE,GAAGhB,cAAA;EACd,MAAMiB,QAAA,GAAWrB,eAAA;EACjB,MAAM,CAACsB,OAAA,EAASC,UAAA,CAAW,GAAGxB,QAAA,CAAS;EAEvC,MAAMyB,YAAA,GAAe1B,OAAA,CAAQ;IAC3B,IAAIa,cAAA,EAAgB;MAClB,OAAOM,eAAA,CAAgB;QAAEN;MAAe;IAC1C;IACA,IAAIC,UAAA,EAAY;MACd,OAAOK,eAAA,CAAgB;QAAEL;MAAW;IACtC;EACF,GAAG,CAACD,cAAA,EAAgBC,UAAA,EAAYK,eAAA,CAAgB;EAEhD,MAAMQ,uBAAA,GAA0B7B,0BAAA,CAA2B4B,YAAA;EAC3D,MAAME,WAAA,GAAc/B,kBAAA,CAAmB6B,YAAA;EAEvC,MAAMG,kBAAA,GAAqBC,OAAA,CACzBH,uBAAA,IACEZ,oBAAA,KACCD,UAAA,IAAeD,cAAA,IAAkBD,EAAE,MACnCgB,WAAA,IAAe,CAACL,QAAO;EAG5B,MAAMQ,UAAA,GAAa,oBAAoBnB,EAAA,EAAI;EAC3C,MAAMoB,gBAAA,GAAmBd,uBAAA,GAA0B;EAEnD,IAAI,CAACW,kBAAA,EAAoB;IACvB,OAAO;EACT;EAEA,MAAMI,KAAA,GAAQX,CAAA,CAAE;EAEhB,oBACEY,KAAA,CAACnC,KAAA,CAAMoC,QAAQ;4BACbD,KAAA,CAAC;MACCE,cAAA,EAAgBA,CAAA,KAAMX,UAAA,CAAW;MACjCY,cAAA,EAAgBA,CAAA,KAAMZ,UAAA,CAAW;MACjCa,KAAA,EAAO;QAAEC,QAAA,EAAU;MAAW;8BAE9BC,IAAA,CAACjC,MAAA;QACCkC,WAAA,EAAY;QACZ9B,QAAA,EAAUA,QAAA;QACV+B,IAAA,eAAMF,IAAA,CAACrC,YAAA;UAAawC,MAAA,EAAQ3B;;QAC5BJ,EAAA,EAAG;QACHgC,OAAA,EAASA,CAAA,KAAMvB,WAAA,CAAYU,UAAA;uBAE7BS,IAAA,CAAC/B,OAAA;QAAQoC,KAAA,EAAO;QAAGC,IAAA,EAAMtB,OAAA;kBACtBS;;QAGJb,WAAA,CAAYW,UAAA,kBACXS,IAAA,CAAChC,cAAA;MACCuC,WAAA,EAAa,CAACf,gBAAA,GAAmB,cAAc;MAC/CgB,gBAAA,EAAkB/B,sBAAA;MAClBgC,qBAAA,EACEtB,uBAAA,IACA,OAAOD,YAAA,CAAawB,QAAQ,CAACC,MAAM,CAACC,eAAe,KAAK,WACpD1B,YAAA,CAAawB,QAAQ,CAACC,MAAM,CAACC,eAAe,GAC5CC,SAAA;MAENC,IAAA,EAAMvB;;;AAKhB","ignoreList":[]}
@@ -18,7 +18,7 @@ export const SelectMany = props => {
18
18
  return null;
19
19
  }
20
20
  return /*#__PURE__*/_jsxs(Button, {
21
- buttonStyle: "pill",
21
+ buttonStyle: "primary",
22
22
  onClick: () => {
23
23
  if (typeof onClick === 'function') {
24
24
  onClick(selected);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["React","useSelection","useTranslation","Button","SelectMany","props","onClick","count","selected","t","_jsxs","buttonStyle","size"],"sources":["../../../src/elements/SelectMany/index.tsx"],"sourcesContent":["import React from 'react'\n\nimport { useSelection } from '../../providers/Selection/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { Button } from '../Button/index.js'\n\nexport const SelectMany: React.FC<{\n onClick?: (ids: ReturnType<typeof useSelection>['selected']) => void\n}> = (props) => {\n const { onClick } = props\n\n const { count, selected } = useSelection()\n const { t } = useTranslation()\n\n if (!selected || !count) {\n return null\n }\n\n return (\n <Button\n buttonStyle=\"pill\"\n onClick={() => {\n if (typeof onClick === 'function') {\n onClick(selected)\n }\n }}\n size=\"medium\"\n >\n {t('general:select')} {count}\n </Button>\n )\n}\n"],"mappings":";AAAA,OAAOA,KAAA,MAAW;AAElB,SAASC,YAAY,QAAQ;AAC7B,SAASC,cAAc,QAAQ;AAC/B,SAASC,MAAM,QAAQ;AAEvB,OAAO,MAAMC,UAAA,GAEPC,KAAA;EACJ,MAAM;IAAEC;EAAO,CAAE,GAAGD,KAAA;EAEpB,MAAM;IAAEE,KAAK;IAAEC;EAAQ,CAAE,GAAGP,YAAA;EAC5B,MAAM;IAAEQ;EAAC,CAAE,GAAGP,cAAA;EAEd,IAAI,CAACM,QAAA,IAAY,CAACD,KAAA,EAAO;IACvB,OAAO;EACT;EAEA,oBACEG,KAAA,CAACP,MAAA;IACCQ,WAAA,EAAY;IACZL,OAAA,EAASA,CAAA;MACP,IAAI,OAAOA,OAAA,KAAY,YAAY;QACjCA,OAAA,CAAQE,QAAA;MACV;IACF;IACAI,IAAA,EAAK;eAEJH,CAAA,CAAE,mBAAkB,KAAEF,KAAA;;AAG7B","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["React","useSelection","useTranslation","Button","SelectMany","props","onClick","count","selected","t","_jsxs","buttonStyle","size"],"sources":["../../../src/elements/SelectMany/index.tsx"],"sourcesContent":["import React from 'react'\n\nimport { useSelection } from '../../providers/Selection/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { Button } from '../Button/index.js'\n\nexport const SelectMany: React.FC<{\n onClick?: (ids: ReturnType<typeof useSelection>['selected']) => void\n}> = (props) => {\n const { onClick } = props\n\n const { count, selected } = useSelection()\n const { t } = useTranslation()\n\n if (!selected || !count) {\n return null\n }\n\n return (\n <Button\n buttonStyle=\"primary\"\n onClick={() => {\n if (typeof onClick === 'function') {\n onClick(selected)\n }\n }}\n size=\"medium\"\n >\n {t('general:select')} {count}\n </Button>\n )\n}\n"],"mappings":";AAAA,OAAOA,KAAA,MAAW;AAElB,SAASC,YAAY,QAAQ;AAC7B,SAASC,cAAc,QAAQ;AAC/B,SAASC,MAAM,QAAQ;AAEvB,OAAO,MAAMC,UAAA,GAEPC,KAAA;EACJ,MAAM;IAAEC;EAAO,CAAE,GAAGD,KAAA;EAEpB,MAAM;IAAEE,KAAK;IAAEC;EAAQ,CAAE,GAAGP,YAAA;EAC5B,MAAM;IAAEQ;EAAC,CAAE,GAAGP,cAAA;EAEd,IAAI,CAACM,QAAA,IAAY,CAACD,KAAA,EAAO;IACvB,OAAO;EACT;EAEA,oBACEG,KAAA,CAACP,MAAA;IACCQ,WAAA,EAAY;IACZL,OAAA,EAASA,CAAA;MACP,IAAI,OAAOA,OAAA,KAAY,YAAY;QACjCA,OAAA,CAAQE,QAAA;MACV;IACF;IACAI,IAAA,EAAK;eAEJH,CAAA,CAAE,mBAAkB,KAAEF,KAAA;;AAG7B","ignoreList":[]}