@payloadcms/ui 4.0.0-internal.d3909a9 → 4.0.0-internal.d7d662c

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 (761) hide show
  1. package/dist/css/app.css +2 -2
  2. package/dist/css/colors.css +65 -0
  3. package/dist/elements/APIKeyInput/index.js +22 -23
  4. package/dist/elements/APIKeyInput/index.js.map +1 -1
  5. package/dist/elements/AddNewRelation/index.js +17 -19
  6. package/dist/elements/AddNewRelation/index.js.map +1 -1
  7. package/dist/elements/ArrayAction/index.js +39 -30
  8. package/dist/elements/ArrayAction/index.js.map +1 -1
  9. package/dist/elements/Autosave/index.js +234 -142
  10. package/dist/elements/Autosave/index.js.map +1 -1
  11. package/dist/elements/BulkUpload/ActionsBar/index.js.map +1 -1
  12. package/dist/elements/BulkUpload/AddFilesView/index.js.map +1 -1
  13. package/dist/elements/BulkUpload/AddingFilesView/index.js.map +1 -1
  14. package/dist/elements/BulkUpload/DiscardWithoutSaving/index.js.map +1 -1
  15. package/dist/elements/BulkUpload/EditForm/index.js.map +1 -1
  16. package/dist/elements/BulkUpload/EditMany/index.js +29 -21
  17. package/dist/elements/BulkUpload/EditMany/index.js.map +1 -1
  18. package/dist/elements/BulkUpload/FileSidebar/index.js.map +1 -1
  19. package/dist/elements/BulkUpload/index.js +63 -23
  20. package/dist/elements/BulkUpload/index.js.map +1 -1
  21. package/dist/elements/BulkUpload/useUploadCollectionOptions.js.map +1 -1
  22. package/dist/elements/Button/index.css +3 -3
  23. package/dist/elements/Button/index.d.ts.map +1 -1
  24. package/dist/elements/Button/index.js +2 -1
  25. package/dist/elements/Button/index.js.map +1 -1
  26. package/dist/elements/Button/types.d.ts +1 -0
  27. package/dist/elements/Button/types.d.ts.map +1 -1
  28. package/dist/elements/Button/types.js.map +1 -1
  29. package/dist/elements/CardGrid/index.css +0 -1
  30. package/dist/elements/Chip/index.js.map +1 -1
  31. package/dist/elements/ClipboardAction/ClipboardActionLabel.js.map +1 -1
  32. package/dist/elements/ClipboardAction/index.js +213 -88
  33. package/dist/elements/ClipboardAction/index.js.map +1 -1
  34. package/dist/elements/CloseModalOnRouteChange/index.js.map +1 -1
  35. package/dist/elements/CodeEditor/CodeEditor.d.ts.map +1 -1
  36. package/dist/elements/CodeEditor/CodeEditor.js +95 -56
  37. package/dist/elements/CodeEditor/CodeEditor.js.map +1 -1
  38. package/dist/elements/CollapseAllToggle/index.js +47 -32
  39. package/dist/elements/CollapseAllToggle/index.js.map +1 -1
  40. package/dist/elements/Collapsible/index.css +15 -4
  41. package/dist/elements/Collapsible/index.d.ts.map +1 -1
  42. package/dist/elements/Collapsible/index.js +46 -38
  43. package/dist/elements/Collapsible/index.js.map +1 -1
  44. package/dist/elements/Collapsible/provider.js +37 -14
  45. package/dist/elements/Collapsible/provider.js.map +1 -1
  46. package/dist/elements/ColumnSelection/Popup.css +4 -0
  47. package/dist/elements/ColumnSelection/Popup.js +10 -2
  48. package/dist/elements/ColumnSelection/Popup.js.map +1 -1
  49. package/dist/elements/ColumnSelection/index.js.map +1 -1
  50. package/dist/elements/CommandPalette/index.css +8 -0
  51. package/dist/elements/ConfirmationModal/index.d.ts +3 -0
  52. package/dist/elements/ConfirmationModal/index.d.ts.map +1 -1
  53. package/dist/elements/ConfirmationModal/index.js +2 -0
  54. package/dist/elements/ConfirmationModal/index.js.map +1 -1
  55. package/dist/elements/CopyLocaleData/index.js.map +1 -1
  56. package/dist/elements/CopyToClipboard/index.js.map +1 -1
  57. package/dist/elements/CreateDocumentButton/index.js +45 -43
  58. package/dist/elements/CreateDocumentButton/index.js.map +1 -1
  59. package/dist/elements/DatePicker/index.css +5 -0
  60. package/dist/elements/DatePicker/useDatePickerKeyboard.js.map +1 -1
  61. package/dist/elements/DefaultListViewTabs/index.css +4 -0
  62. package/dist/elements/DefaultListViewTabs/index.js +47 -37
  63. package/dist/elements/DefaultListViewTabs/index.js.map +1 -1
  64. package/dist/elements/DelayedSpinner/index.js.map +1 -1
  65. package/dist/elements/DeleteDocument/index.d.ts.map +1 -1
  66. package/dist/elements/DeleteDocument/index.js +1 -3
  67. package/dist/elements/DeleteDocument/index.js.map +1 -1
  68. package/dist/elements/Dialog/DialogCancel/index.js.map +1 -1
  69. package/dist/elements/Dialog/DialogConfirm/index.js.map +1 -1
  70. package/dist/elements/Dialog/DialogHeader/index.js.map +1 -1
  71. package/dist/elements/Dialog/DialogModal/index.js.map +1 -1
  72. package/dist/elements/DocumentCard/index.d.ts +2 -0
  73. package/dist/elements/DocumentCard/index.d.ts.map +1 -1
  74. package/dist/elements/DocumentCard/index.js +2 -0
  75. package/dist/elements/DocumentCard/index.js.map +1 -1
  76. package/dist/elements/DocumentControls/index.js +1 -1
  77. package/dist/elements/DocumentControls/index.js.map +1 -1
  78. package/dist/elements/DocumentDrawer/index.js.map +1 -1
  79. package/dist/elements/DocumentFields/index.js +125 -64
  80. package/dist/elements/DocumentFields/index.js.map +1 -1
  81. package/dist/elements/DocumentHeader/Tabs/ShouldRenderTabs.js.map +1 -1
  82. package/dist/elements/DocumentHeader/Tabs/Tab/TabLink.d.ts.map +1 -1
  83. package/dist/elements/DocumentHeader/Tabs/Tab/TabLink.js +80 -34
  84. package/dist/elements/DocumentHeader/Tabs/Tab/TabLink.js.map +1 -1
  85. package/dist/elements/DocumentHeader/Tabs/Tab/index.css +4 -0
  86. package/dist/elements/DocumentHeader/Tabs/tabs/VersionsPill/index.js.map +1 -1
  87. package/dist/elements/DocumentLocked/index.d.ts.map +1 -1
  88. package/dist/elements/DocumentLocked/index.js +1 -0
  89. package/dist/elements/DocumentLocked/index.js.map +1 -1
  90. package/dist/elements/DocumentStaleData/index.js.map +1 -1
  91. package/dist/elements/DocumentTakeOver/index.js.map +1 -1
  92. package/dist/elements/DraggableSortable/DragOverlayPreview/index.js +2 -0
  93. package/dist/elements/DraggableSortable/DragOverlayPreview/index.js.map +1 -1
  94. package/dist/elements/DraggableSortable/DraggableSortableItem/index.d.ts.map +1 -1
  95. package/dist/elements/DraggableSortable/DraggableSortableItem/index.js +10 -7
  96. package/dist/elements/DraggableSortable/DraggableSortableItem/index.js.map +1 -1
  97. package/dist/elements/DraggableSortable/DraggableSortableItem/types.d.ts +2 -0
  98. package/dist/elements/DraggableSortable/DraggableSortableItem/types.d.ts.map +1 -1
  99. package/dist/elements/DraggableSortable/DraggableSortableItem/types.js.map +1 -1
  100. package/dist/elements/DraggableSortable/index.d.ts.map +1 -1
  101. package/dist/elements/DraggableSortable/index.js +104 -170
  102. package/dist/elements/DraggableSortable/index.js.map +1 -1
  103. package/dist/elements/DraggableSortable/types.d.ts +1 -0
  104. package/dist/elements/DraggableSortable/types.d.ts.map +1 -1
  105. package/dist/elements/DraggableSortable/types.js.map +1 -1
  106. package/dist/elements/DraggableSortable/useDraggableSortable/index.js.map +1 -1
  107. package/dist/elements/DraggableSortable/useRowAccessibility.d.ts +14 -0
  108. package/dist/elements/DraggableSortable/useRowAccessibility.d.ts.map +1 -0
  109. package/dist/elements/DraggableSortable/useRowAccessibility.js +99 -0
  110. package/dist/elements/DraggableSortable/useRowAccessibility.js.map +1 -0
  111. package/dist/elements/Drawer/index.js +138 -81
  112. package/dist/elements/Drawer/index.js.map +1 -1
  113. package/dist/elements/Drawer/useDrawerSlug.js.map +1 -1
  114. package/dist/elements/DrawerActionHeader/index.js.map +1 -1
  115. package/dist/elements/DrawerHeader/index.js.map +1 -1
  116. package/dist/elements/DuplicateDocument/SelectLocalesDrawer/index.js +177 -62
  117. package/dist/elements/DuplicateDocument/SelectLocalesDrawer/index.js.map +1 -1
  118. package/dist/elements/EditMany/DrawerContent.js +1 -1
  119. package/dist/elements/EditMany/DrawerContent.js.map +1 -1
  120. package/dist/elements/EditMany/index.js.map +1 -1
  121. package/dist/elements/FieldDiffContainer/index.d.ts.map +1 -1
  122. package/dist/elements/FieldDiffContainer/index.js +7 -1
  123. package/dist/elements/FieldDiffContainer/index.js.map +1 -1
  124. package/dist/elements/FieldDiffLabel/index.d.ts +1 -0
  125. package/dist/elements/FieldDiffLabel/index.d.ts.map +1 -1
  126. package/dist/elements/FieldDiffLabel/index.js +2 -0
  127. package/dist/elements/FieldDiffLabel/index.js.map +1 -1
  128. package/dist/elements/FieldSelect/index.js +23 -14
  129. package/dist/elements/FieldSelect/index.js.map +1 -1
  130. package/dist/elements/FileDetails/DraggableFileDetails/index.js.map +1 -1
  131. package/dist/elements/FileDetails/FileMeta/index.js.map +1 -1
  132. package/dist/elements/FileManager/FilePreview/index.js.map +1 -1
  133. package/dist/elements/FileManager/index.js.map +1 -1
  134. package/dist/elements/FullscreenModal/index.js.map +1 -1
  135. package/dist/elements/GenerateConfirmation/index.js +21 -21
  136. package/dist/elements/GenerateConfirmation/index.js.map +1 -1
  137. package/dist/elements/GroupBy/Popup.js.map +1 -1
  138. package/dist/elements/GroupBy/index.js +120 -66
  139. package/dist/elements/GroupBy/index.js.map +1 -1
  140. package/dist/elements/HTMLDiff/colors.css +7 -0
  141. package/dist/elements/Hierarchy/ColumnBrowser/Column/index.js.map +1 -1
  142. package/dist/elements/Hierarchy/ColumnBrowser/ColumnItem/index.js +51 -42
  143. package/dist/elements/Hierarchy/ColumnBrowser/ColumnItem/index.js.map +1 -1
  144. package/dist/elements/Hierarchy/DocHeaderButton/index.js +1 -1
  145. package/dist/elements/Hierarchy/DocHeaderButton/index.js.map +1 -1
  146. package/dist/elements/Hierarchy/EditButton/index.js.map +1 -1
  147. package/dist/elements/Hierarchy/HydrateProvider/index.js.map +1 -1
  148. package/dist/elements/Hierarchy/Modal/Footer/index.js.map +1 -1
  149. package/dist/elements/Hierarchy/Search/HierarchySearchResultItem.js +25 -18
  150. package/dist/elements/Hierarchy/Search/HierarchySearchResultItem.js.map +1 -1
  151. package/dist/elements/Hierarchy/Search/HierarchySearchResults.js.map +1 -1
  152. package/dist/elements/Hierarchy/Search/index.js.map +1 -1
  153. package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.js.map +1 -1
  154. package/dist/elements/Hierarchy/Tree/TreeFocusContext.js.map +1 -1
  155. package/dist/elements/Hierarchy/Tree/index.d.ts.map +1 -1
  156. package/dist/elements/Hierarchy/Tree/index.js +10 -5
  157. package/dist/elements/Hierarchy/Tree/index.js.map +1 -1
  158. package/dist/elements/HydrateAuthProvider/index.js.map +1 -1
  159. package/dist/elements/HydratePreferences/index.js.map +1 -1
  160. package/dist/elements/IDLabel/index.js.map +1 -1
  161. package/dist/elements/InputStepper/index.js.map +1 -1
  162. package/dist/elements/ItemsDrawer/ItemSearch/index.js.map +1 -1
  163. package/dist/elements/ItemsDrawer/index.js +186 -105
  164. package/dist/elements/ItemsDrawer/index.js.map +1 -1
  165. package/dist/elements/LLMInstructionsDescription/index.js.map +1 -1
  166. package/dist/elements/LLMInstructionsMenuItem/index.js.map +1 -1
  167. package/dist/elements/LayoutToggle/index.js.map +1 -1
  168. package/dist/elements/LeaveWithoutSaving/index.js.map +1 -1
  169. package/dist/elements/LeaveWithoutSaving/usePreventLeave.js +1 -1
  170. package/dist/elements/LeaveWithoutSaving/usePreventLeave.js.map +1 -1
  171. package/dist/elements/Link/index.js +1 -1
  172. package/dist/elements/Link/index.js.map +1 -1
  173. package/dist/elements/ListColumnSelectionButton/index.js.map +1 -1
  174. package/dist/elements/ListControls/index.js.map +1 -1
  175. package/dist/elements/ListDrawer/DrawerContent.js +1 -1
  176. package/dist/elements/ListDrawer/DrawerContent.js.map +1 -1
  177. package/dist/elements/ListDrawer/Provider.d.ts +3 -2
  178. package/dist/elements/ListDrawer/Provider.d.ts.map +1 -1
  179. package/dist/elements/ListDrawer/Provider.js.map +1 -1
  180. package/dist/elements/ListDrawer/index.js.map +1 -1
  181. package/dist/elements/ListGroupByButton/index.js.map +1 -1
  182. package/dist/elements/ListHeader/DrawerRelationshipSelect/index.js.map +1 -1
  183. package/dist/elements/ListHeader/DrawerTitleActions/ListDrawerConfirmSelectionButton.js.map +1 -1
  184. package/dist/elements/ListHeader/DrawerTitleActions/ListDrawerCreateNewDocButton.js.map +1 -1
  185. package/dist/elements/ListHeader/TitleActions/ListBulkUploadButton.js.map +1 -1
  186. package/dist/elements/ListHeader/TitleActions/ListCreateNewDocButton.js +11 -12
  187. package/dist/elements/ListHeader/TitleActions/ListCreateNewDocButton.js.map +1 -1
  188. package/dist/elements/ListHeader/TitleActions/ListEmptyTrashButton.js +1 -1
  189. package/dist/elements/ListHeader/TitleActions/ListEmptyTrashButton.js.map +1 -1
  190. package/dist/elements/ListSelection/index.js.map +1 -1
  191. package/dist/elements/ListWhereBuilder/index.js.map +1 -1
  192. package/dist/elements/LivePreview/DeviceContainer/index.js.map +1 -1
  193. package/dist/elements/LivePreview/Toolbar/Controls/index.js.map +1 -1
  194. package/dist/elements/LivePreview/Toolbar/SizeInput/index.js.map +1 -1
  195. package/dist/elements/LivePreview/Toolbar/index.js.map +1 -1
  196. package/dist/elements/LivePreview/ToolbarArea/index.js.map +1 -1
  197. package/dist/elements/LivePreview/Window/index.d.ts.map +1 -1
  198. package/dist/elements/LivePreview/Window/index.js +6 -1
  199. package/dist/elements/LivePreview/Window/index.js.map +1 -1
  200. package/dist/elements/LoadMoreRow/index.js.map +1 -1
  201. package/dist/elements/Loading/index.js +62 -18
  202. package/dist/elements/Loading/index.js.map +1 -1
  203. package/dist/elements/LoadingOverlay/index.js +93 -49
  204. package/dist/elements/LoadingOverlay/index.js.map +1 -1
  205. package/dist/elements/Localizer/index.js +133 -108
  206. package/dist/elements/Localizer/index.js.map +1 -1
  207. package/dist/elements/Locked/index.js +54 -37
  208. package/dist/elements/Locked/index.js.map +1 -1
  209. package/dist/elements/Logout/index.js.map +1 -1
  210. package/dist/elements/MiniCarousel/index.js +102 -38
  211. package/dist/elements/MiniCarousel/index.js.map +1 -1
  212. package/dist/elements/Modal/index.d.ts.map +1 -1
  213. package/dist/elements/Modal/index.js +13 -1
  214. package/dist/elements/Modal/index.js.map +1 -1
  215. package/dist/elements/Nav/NavSidebarToggle/index.js.map +1 -1
  216. package/dist/elements/Nav/NavWrapper/index.js +13 -14
  217. package/dist/elements/Nav/NavWrapper/index.js.map +1 -1
  218. package/dist/elements/Nav/SettingsMenuButton/index.js.map +1 -1
  219. package/dist/elements/Nav/SidebarTabs/TabError/index.js.map +1 -1
  220. package/dist/elements/Nav/SidebarTabs/index.client.d.ts.map +1 -1
  221. package/dist/elements/Nav/SidebarTabs/index.client.js +31 -20
  222. package/dist/elements/Nav/SidebarTabs/index.client.js.map +1 -1
  223. package/dist/elements/Nav/index.client.js.map +1 -1
  224. package/dist/elements/Nav/index.css +5 -0
  225. package/dist/elements/NavGroup/index.css +27 -3
  226. package/dist/elements/NavGroup/index.js +31 -38
  227. package/dist/elements/NavGroup/index.js.map +1 -1
  228. package/dist/elements/NoListResults/index.css +1 -0
  229. package/dist/elements/NoListResults/index.js +1 -1
  230. package/dist/elements/NoListResults/index.js.map +1 -1
  231. package/dist/elements/PageControls/GroupByPageControls.js.map +1 -1
  232. package/dist/elements/PageControls/index.js.map +1 -1
  233. package/dist/elements/Pagination/ClickableArrow/index.js +10 -11
  234. package/dist/elements/Pagination/ClickableArrow/index.js.map +1 -1
  235. package/dist/elements/Pagination/SimplePagination/index.js.map +1 -1
  236. package/dist/elements/Pagination/index.js +36 -37
  237. package/dist/elements/Pagination/index.js.map +1 -1
  238. package/dist/elements/PerPage/index.js.map +1 -1
  239. package/dist/elements/Pill/index.js.map +1 -1
  240. package/dist/elements/Popup/index.d.ts.map +1 -1
  241. package/dist/elements/Popup/index.js +19 -3
  242. package/dist/elements/Popup/index.js.map +1 -1
  243. package/dist/elements/PreviewButton/index.js.map +1 -1
  244. package/dist/elements/PreviewSizes/index.js +141 -70
  245. package/dist/elements/PreviewSizes/index.js.map +1 -1
  246. package/dist/elements/PublishButton/ScheduleDrawer/index.d.ts.map +1 -1
  247. package/dist/elements/PublishButton/ScheduleDrawer/index.js +16 -8
  248. package/dist/elements/PublishButton/ScheduleDrawer/index.js.map +1 -1
  249. package/dist/elements/PublishButton/index.d.ts.map +1 -1
  250. package/dist/elements/PublishButton/index.js +1 -0
  251. package/dist/elements/PublishButton/index.js.map +1 -1
  252. package/dist/elements/PublishMany/DrawerContent.js +1 -1
  253. package/dist/elements/PublishMany/DrawerContent.js.map +1 -1
  254. package/dist/elements/PublishMany/index.js +32 -24
  255. package/dist/elements/PublishMany/index.js.map +1 -1
  256. package/dist/elements/QueryPresets/fields/ColumnsField/index.js +194 -100
  257. package/dist/elements/QueryPresets/fields/ColumnsField/index.js.map +1 -1
  258. package/dist/elements/QueryPresets/fields/GroupByField/index.js +78 -29
  259. package/dist/elements/QueryPresets/fields/GroupByField/index.js.map +1 -1
  260. package/dist/elements/QueryPresets/fields/Heading/index.js.map +1 -1
  261. package/dist/elements/QueryPresets/fields/WhereField/index.js.map +1 -1
  262. package/dist/elements/ReactSelect/ClearIndicator/index.js.map +1 -1
  263. package/dist/elements/ReactSelect/MultiValue/index.js +19 -9
  264. package/dist/elements/ReactSelect/MultiValue/index.js.map +1 -1
  265. package/dist/elements/ReactSelect/MultiValueLabel/index.js.map +1 -1
  266. package/dist/elements/ReactSelect/MultiValueRemove/index.js +38 -29
  267. package/dist/elements/ReactSelect/MultiValueRemove/index.js.map +1 -1
  268. package/dist/elements/ReactSelect/ValueContainer/index.js.map +1 -1
  269. package/dist/elements/ReactSelect/index.css +4 -0
  270. package/dist/elements/RelationshipTable/Pagination.js.map +1 -1
  271. package/dist/elements/RelationshipTable/cells/DrawerLink/index.js.map +1 -1
  272. package/dist/elements/RelationshipTable/index.js +1 -1
  273. package/dist/elements/RelationshipTable/index.js.map +1 -1
  274. package/dist/elements/RenderIfInViewport/index.js.map +1 -1
  275. package/dist/elements/RenderTitle/index.js.map +1 -1
  276. package/dist/elements/RestoreMany/index.js +1 -1
  277. package/dist/elements/RestoreMany/index.js.map +1 -1
  278. package/dist/elements/SchedulePublishButton/index.js +111 -39
  279. package/dist/elements/SchedulePublishButton/index.js.map +1 -1
  280. package/dist/elements/Search/SearchInput/index.js.map +1 -1
  281. package/dist/elements/SegmentedControl/index.js.map +1 -1
  282. package/dist/elements/SelectAll/index.js.map +1 -1
  283. package/dist/elements/SelectRow/index.js +31 -21
  284. package/dist/elements/SelectRow/index.js.map +1 -1
  285. package/dist/elements/ShimmerEffect/index.js.map +1 -1
  286. package/dist/elements/SidebarToggle/index.js.map +1 -1
  287. package/dist/elements/SkipToContent/index.js.map +1 -1
  288. package/dist/elements/SortHeader/index.js.map +1 -1
  289. package/dist/elements/SortRow/index.js.map +1 -1
  290. package/dist/elements/Spinner/index.js.map +1 -1
  291. package/dist/elements/StayLoggedIn/index.js.map +1 -1
  292. package/dist/elements/StepNav/SetStepNav.js.map +1 -1
  293. package/dist/elements/StepNav/context.js.map +1 -1
  294. package/dist/elements/Switch/index.css +2 -2
  295. package/dist/elements/Switch/index.js.map +1 -1
  296. package/dist/elements/Table/DefaultCell/fields/Array/index.js +28 -9
  297. package/dist/elements/Table/DefaultCell/fields/Array/index.js.map +1 -1
  298. package/dist/elements/Table/DefaultCell/fields/Blocks/index.js +80 -27
  299. package/dist/elements/Table/DefaultCell/fields/Blocks/index.js.map +1 -1
  300. package/dist/elements/Table/DefaultCell/fields/Checkbox/index.js +9 -10
  301. package/dist/elements/Table/DefaultCell/fields/Checkbox/index.js.map +1 -1
  302. package/dist/elements/Table/DefaultCell/fields/Date/index.js.map +1 -1
  303. package/dist/elements/Table/DefaultCell/fields/JSON/index.d.ts.map +1 -1
  304. package/dist/elements/Table/DefaultCell/fields/JSON/index.js +21 -32
  305. package/dist/elements/Table/DefaultCell/fields/JSON/index.js.map +1 -1
  306. package/dist/elements/Table/DefaultCell/fields/Relationship/index.js.map +1 -1
  307. package/dist/elements/Table/DefaultCell/fields/Select/index.js.map +1 -1
  308. package/dist/elements/Table/DefaultCell/fields/Status/index.js.map +1 -1
  309. package/dist/elements/Table/DefaultCell/index.js.map +1 -1
  310. package/dist/elements/Table/GridNavigation/useGridNavigation.js.map +1 -1
  311. package/dist/elements/Table/RelationshipProvider/index.js.map +1 -1
  312. package/dist/elements/Table/TableIdentity.js +32 -16
  313. package/dist/elements/Table/TableIdentity.js.map +1 -1
  314. package/dist/elements/Table/useAriaSort.js.map +1 -1
  315. package/dist/elements/Thumbnail/index.js +133 -53
  316. package/dist/elements/Thumbnail/index.js.map +1 -1
  317. package/dist/elements/ThumbnailCard/index.js.map +1 -1
  318. package/dist/elements/TimezonePicker/index.js +113 -54
  319. package/dist/elements/TimezonePicker/index.js.map +1 -1
  320. package/dist/elements/Toasts/fieldErrors.js.map +1 -1
  321. package/dist/elements/Tooltip/index.js.map +1 -1
  322. package/dist/elements/TrashBanner/index.js.map +1 -1
  323. package/dist/elements/UnpublishMany/DrawerContent.js +1 -1
  324. package/dist/elements/UnpublishMany/DrawerContent.js.map +1 -1
  325. package/dist/elements/UnpublishMany/index.js +32 -24
  326. package/dist/elements/UnpublishMany/index.js.map +1 -1
  327. package/dist/elements/Upload/UploadFromURLModal/index.js.map +1 -1
  328. package/dist/elements/Upload/index.js.map +1 -1
  329. package/dist/elements/Upload/usePasteFromClipboard.js.map +1 -1
  330. package/dist/elements/Upload/useUploadFromUrl.js.map +1 -1
  331. package/dist/elements/UserMenu/LanguageMenu/index.js.map +1 -1
  332. package/dist/elements/UserMenu/SettingsMenu/index.js.map +1 -1
  333. package/dist/elements/UserMenu/ThemeMenu/index.js.map +1 -1
  334. package/dist/elements/UserMenu/index.d.ts.map +1 -1
  335. package/dist/elements/UserMenu/index.js +2 -1
  336. package/dist/elements/UserMenu/index.js.map +1 -1
  337. package/dist/elements/ViewDescription/index.js.map +1 -1
  338. package/dist/elements/WhereBuilder/Condition/Date/index.js.map +1 -1
  339. package/dist/elements/WhereBuilder/Condition/Number/index.js.map +1 -1
  340. package/dist/elements/WhereBuilder/Condition/Select/index.js.map +1 -1
  341. package/dist/elements/WhereBuilder/Condition/Text/index.js.map +1 -1
  342. package/dist/elements/WhereBuilder/Condition/index.d.ts.map +1 -1
  343. package/dist/elements/WhereBuilder/Condition/index.js +1 -0
  344. package/dist/elements/WhereBuilder/Condition/index.js.map +1 -1
  345. package/dist/exports/client/{CodeEditor-I6PL55BF.js → CodeEditor-23ZGBN6S.js} +2 -2
  346. package/dist/exports/client/{DatePicker-RFCB5VGD.js → DatePicker-AZBZPMY6.js} +2 -2
  347. package/dist/exports/client/chunk-EXVR6BZK.js +27 -0
  348. package/dist/exports/client/chunk-EXVR6BZK.js.map +7 -0
  349. package/dist/exports/client/{chunk-AVJIZPR3.js → chunk-SMBFG6XU.js} +1 -1
  350. package/dist/exports/client/{chunk-AVJIZPR3.js.map → chunk-SMBFG6XU.js.map} +1 -1
  351. package/dist/exports/client/{chunk-O2RR6XEH.js → chunk-ZP2PB6M4.js} +2 -2
  352. package/dist/exports/client/{chunk-O2RR6XEH.js.map → chunk-ZP2PB6M4.js.map} +1 -1
  353. package/dist/exports/client/index.d.ts +2 -2
  354. package/dist/exports/client/index.d.ts.map +1 -1
  355. package/dist/exports/client/index.js +27 -27
  356. package/dist/exports/client/index.js.map +4 -4
  357. package/dist/exports/rsc/index.d.ts +1 -1
  358. package/dist/exports/rsc/index.d.ts.map +1 -1
  359. package/dist/exports/rsc/index.js +1 -1
  360. package/dist/exports/rsc/index.js.map +1 -1
  361. package/dist/fields/Array/ArrayRow.d.ts.map +1 -1
  362. package/dist/fields/Array/ArrayRow.js +207 -99
  363. package/dist/fields/Array/ArrayRow.js.map +1 -1
  364. package/dist/fields/Array/index.d.ts.map +1 -1
  365. package/dist/fields/Array/index.js +521 -308
  366. package/dist/fields/Array/index.js.map +1 -1
  367. package/dist/fields/Blocks/BlockRow.d.ts.map +1 -1
  368. package/dist/fields/Blocks/BlockRow.js +224 -136
  369. package/dist/fields/Blocks/BlockRow.js.map +1 -1
  370. package/dist/fields/Blocks/BlockSelector/BlockSearch/index.js.map +1 -1
  371. package/dist/fields/Blocks/BlockSelector/index.js +114 -74
  372. package/dist/fields/Blocks/BlockSelector/index.js.map +1 -1
  373. package/dist/fields/Blocks/BlocksDrawer/index.js.map +1 -1
  374. package/dist/fields/Blocks/RowActions.js +75 -55
  375. package/dist/fields/Blocks/RowActions.js.map +1 -1
  376. package/dist/fields/Blocks/SectionTitle/index.css +4 -0
  377. package/dist/fields/Blocks/SectionTitle/index.js.map +1 -1
  378. package/dist/fields/Blocks/index.d.ts.map +1 -1
  379. package/dist/fields/Blocks/index.js +1 -0
  380. package/dist/fields/Blocks/index.js.map +1 -1
  381. package/dist/fields/Checkbox/index.css +3 -3
  382. package/dist/fields/Code/index.d.ts.map +1 -1
  383. package/dist/fields/Code/index.js +3 -2
  384. package/dist/fields/Code/index.js.map +1 -1
  385. package/dist/fields/Collapsible/index.js +114 -73
  386. package/dist/fields/Collapsible/index.js.map +1 -1
  387. package/dist/fields/ConfirmPassword/index.js.map +1 -1
  388. package/dist/fields/DateTime/index.js +215 -121
  389. package/dist/fields/DateTime/index.js.map +1 -1
  390. package/dist/fields/FieldDescription/index.js +29 -21
  391. package/dist/fields/FieldDescription/index.js.map +1 -1
  392. package/dist/fields/FieldError/index.js.map +1 -1
  393. package/dist/fields/FieldLabel/index.js.map +1 -1
  394. package/dist/fields/Group/index.js +75 -46
  395. package/dist/fields/Group/index.js.map +1 -1
  396. package/dist/fields/Hidden/index.js +23 -15
  397. package/dist/fields/Hidden/index.js.map +1 -1
  398. package/dist/fields/JSON/index.d.ts.map +1 -1
  399. package/dist/fields/JSON/index.js +3 -2
  400. package/dist/fields/JSON/index.js.map +1 -1
  401. package/dist/fields/Number/Input.js.map +1 -1
  402. package/dist/fields/Password/input.js +46 -27
  403. package/dist/fields/Password/input.js.map +1 -1
  404. package/dist/fields/RadioGroup/Radio/index.js +35 -35
  405. package/dist/fields/RadioGroup/Radio/index.js.map +1 -1
  406. package/dist/fields/Relationship/Input.js +14 -14
  407. package/dist/fields/Relationship/Input.js.map +1 -1
  408. package/dist/fields/Relationship/index.js +216 -111
  409. package/dist/fields/Relationship/index.js.map +1 -1
  410. package/dist/fields/Relationship/select-components/MultiValueLabel/index.js.map +1 -1
  411. package/dist/fields/Relationship/select-components/SingleValue/index.js +9 -11
  412. package/dist/fields/Relationship/select-components/SingleValue/index.js.map +1 -1
  413. package/dist/fields/Select/Input.js +26 -10
  414. package/dist/fields/Select/Input.js.map +1 -1
  415. package/dist/fields/Select/index.js +158 -77
  416. package/dist/fields/Select/index.js.map +1 -1
  417. package/dist/fields/Tabs/Tab/index.js.map +1 -1
  418. package/dist/fields/Tabs/index.css +11 -15
  419. package/dist/fields/Tabs/index.js +120 -112
  420. package/dist/fields/Tabs/index.js.map +1 -1
  421. package/dist/fields/Text/Input.d.ts.map +1 -1
  422. package/dist/fields/Text/Input.js +2 -2
  423. package/dist/fields/Text/Input.js.map +1 -1
  424. package/dist/fields/Text/index.js +172 -95
  425. package/dist/fields/Text/index.js.map +1 -1
  426. package/dist/fields/Text/types.d.ts +2 -1
  427. package/dist/fields/Text/types.d.ts.map +1 -1
  428. package/dist/fields/Text/types.js.map +1 -1
  429. package/dist/fields/Textarea/Input.js +58 -28
  430. package/dist/fields/Textarea/Input.js.map +1 -1
  431. package/dist/fields/Textarea/index.js +97 -55
  432. package/dist/fields/Textarea/index.js.map +1 -1
  433. package/dist/fields/Upload/HasMany/index.js.map +1 -1
  434. package/dist/fields/Upload/Input.d.ts.map +1 -1
  435. package/dist/fields/Upload/Input.js +16 -7
  436. package/dist/fields/Upload/Input.js.map +1 -1
  437. package/dist/fields/Upload/RelationshipContent/index.js.map +1 -1
  438. package/dist/fields/Upload/index.css +9 -0
  439. package/dist/fields/Upload/index.js +101 -63
  440. package/dist/fields/Upload/index.js.map +1 -1
  441. package/dist/fields/shared/useRowFocus.js.map +1 -1
  442. package/dist/forms/Form/context.js.map +1 -1
  443. package/dist/forms/Form/index.d.ts.map +1 -1
  444. package/dist/forms/Form/index.js +27 -8
  445. package/dist/forms/Form/index.js.map +1 -1
  446. package/dist/forms/Form/types.d.ts +1 -1
  447. package/dist/forms/Form/types.d.ts.map +1 -1
  448. package/dist/forms/Form/types.js.map +1 -1
  449. package/dist/forms/NullifyField/index.js.map +1 -1
  450. package/dist/forms/RenderFields/RenderField.js.map +1 -1
  451. package/dist/forms/RenderFields/context.js +3 -2
  452. package/dist/forms/RenderFields/context.js.map +1 -1
  453. package/dist/forms/RenderFields/index.js.map +1 -1
  454. package/dist/forms/RowLabel/Context/index.d.ts.map +1 -1
  455. package/dist/forms/RowLabel/Context/index.js +58 -18
  456. package/dist/forms/RowLabel/Context/index.js.map +1 -1
  457. package/dist/forms/Submit/index.js +12 -13
  458. package/dist/forms/Submit/index.js.map +1 -1
  459. package/dist/forms/WatchChildErrors/index.js.map +1 -1
  460. package/dist/forms/useField/index.js +1 -1
  461. package/dist/forms/useField/index.js.map +1 -1
  462. package/dist/forms/withCondition/WatchCondition.js.map +1 -1
  463. package/dist/graphics/Account/Gravatar/index.js +32 -17
  464. package/dist/graphics/Account/Gravatar/index.js.map +1 -1
  465. package/dist/graphics/Account/index.js +27 -18
  466. package/dist/graphics/Account/index.js.map +1 -1
  467. package/dist/hooks/useControllableState.js.map +1 -1
  468. package/dist/hooks/useDebounce.js.map +1 -1
  469. package/dist/hooks/useDebouncedCallback.js.map +1 -1
  470. package/dist/hooks/useDebouncedEffect.js.map +1 -1
  471. package/dist/hooks/useDelay.js.map +1 -1
  472. package/dist/hooks/useDelayedRender.js.map +1 -1
  473. package/dist/hooks/useElementHeightVariable.js.map +1 -1
  474. package/dist/hooks/useHotkey.js.map +1 -1
  475. package/dist/hooks/useIntersect.js.map +1 -1
  476. package/dist/hooks/usePayloadAPI.js.map +1 -1
  477. package/dist/hooks/usePopupWindow.js.map +1 -1
  478. package/dist/hooks/useRelatedCollections.js.map +1 -1
  479. package/dist/hooks/useResize.js.map +1 -1
  480. package/dist/hooks/useThrottledEffect.d.ts.map +1 -1
  481. package/dist/hooks/useThrottledEffect.js +21 -24
  482. package/dist/hooks/useThrottledEffect.js.map +1 -1
  483. package/dist/hooks/useUseAsTitle.js.map +1 -1
  484. package/dist/layouts/Root/RootProviders.d.ts.map +1 -1
  485. package/dist/layouts/Root/RootProviders.js +31 -28
  486. package/dist/layouts/Root/RootProviders.js.map +1 -1
  487. package/dist/providers/Actions/index.js.map +1 -1
  488. package/dist/providers/Auth/AuthSessionDebug/index.js.map +1 -1
  489. package/dist/providers/Auth/index.js +2 -2
  490. package/dist/providers/Auth/index.js.map +1 -1
  491. package/dist/providers/Auth/tabSessionSync/useTabSessionSync.js.map +1 -1
  492. package/dist/providers/ClientFunction/index.js.map +1 -1
  493. package/dist/providers/Config/index.js +65 -32
  494. package/dist/providers/Config/index.js.map +1 -1
  495. package/dist/providers/DocumentEvents/index.js.map +1 -1
  496. package/dist/providers/EditDepth/index.js.map +1 -1
  497. package/dist/providers/Embed/index.js.map +1 -1
  498. package/dist/providers/EntityVisibility/index.js.map +1 -1
  499. package/dist/providers/ListQuery/index.d.ts.map +1 -1
  500. package/dist/providers/ListQuery/index.js +5 -5
  501. package/dist/providers/ListQuery/index.js.map +1 -1
  502. package/dist/providers/ListQuery/types.d.ts +6 -1
  503. package/dist/providers/ListQuery/types.d.ts.map +1 -1
  504. package/dist/providers/ListQuery/types.js.map +1 -1
  505. package/dist/providers/ModalAccessibility/index.js.map +1 -1
  506. package/dist/providers/ModalFocus/index.d.ts +15 -0
  507. package/dist/providers/ModalFocus/index.d.ts.map +1 -0
  508. package/dist/providers/ModalFocus/index.js +70 -0
  509. package/dist/providers/ModalFocus/index.js.map +1 -0
  510. package/dist/providers/RouteCache/index.js.map +1 -1
  511. package/dist/providers/RouteTransition/ProgressBar/index.js.map +1 -1
  512. package/dist/providers/RouteTransition/index.d.ts +3 -2
  513. package/dist/providers/RouteTransition/index.d.ts.map +1 -1
  514. package/dist/providers/RouteTransition/index.js +78 -105
  515. package/dist/providers/RouteTransition/index.js.map +1 -1
  516. package/dist/providers/RouterAdapter/index.js.map +1 -1
  517. package/dist/providers/TableColumns/RenderDefaultCell/index.js.map +1 -1
  518. package/dist/providers/TableColumns/index.d.ts.map +1 -1
  519. package/dist/providers/TableColumns/index.js +18 -35
  520. package/dist/providers/TableColumns/index.js.map +1 -1
  521. package/dist/providers/Theme/index.js.map +1 -1
  522. package/dist/providers/ToastContainer/index.js.map +1 -1
  523. package/dist/providers/Translation/index.js.map +1 -1
  524. package/dist/providers/UploadControls/index.js.map +1 -1
  525. package/dist/providers/UploadEdits/index.js.map +1 -1
  526. package/dist/providers/UploadHandlers/index.js.map +1 -1
  527. package/dist/styles.css +66 -1
  528. package/dist/templates/Default/Wrapper/index.js.map +1 -1
  529. package/dist/utilities/serverFunctionRegistry.js +2 -2
  530. package/dist/utilities/serverFunctionRegistry.js.map +1 -1
  531. package/dist/views/API/LocaleSelector/index.js.map +1 -1
  532. package/dist/views/API/index.client.d.ts.map +1 -1
  533. package/dist/views/API/index.client.js +1 -0
  534. package/dist/views/API/index.client.js.map +1 -1
  535. package/dist/views/Account/ResetPreferences/index.js +17 -17
  536. package/dist/views/Account/ResetPreferences/index.js.map +1 -1
  537. package/dist/views/Account/Settings/LanguageSelector.js.map +1 -1
  538. package/dist/views/Account/ToggleHighContrast/index.js.map +1 -1
  539. package/dist/views/Account/ToggleTheme/index.js +106 -27
  540. package/dist/views/Account/ToggleTheme/index.js.map +1 -1
  541. package/dist/views/Account/index.client.js.map +1 -1
  542. package/dist/views/Dashboard/Default/ModularDashboard/DashboardStepNav.js.map +1 -1
  543. package/dist/views/Dashboard/Default/ModularDashboard/WidgetEditControl.js.map +1 -1
  544. package/dist/views/Dashboard/Default/ModularDashboard/index.client.d.ts.map +1 -1
  545. package/dist/views/Dashboard/Default/ModularDashboard/index.client.js +373 -151
  546. package/dist/views/Dashboard/Default/ModularDashboard/index.client.js.map +1 -1
  547. package/dist/views/Dashboard/Default/ModularDashboard/renderWidget/RenderWidget.js.map +1 -1
  548. package/dist/views/Dashboard/Default/ModularDashboard/useDashboardLayout.d.ts.map +1 -1
  549. package/dist/views/Dashboard/Default/ModularDashboard/useDashboardLayout.js +2 -1
  550. package/dist/views/Dashboard/Default/ModularDashboard/useDashboardLayout.js.map +1 -1
  551. package/dist/views/Edit/Auth/APIKeyGenerationModal.js.map +1 -1
  552. package/dist/views/Edit/Auth/index.d.ts.map +1 -1
  553. package/dist/views/Edit/Auth/index.js +13 -11
  554. package/dist/views/Edit/Auth/index.js.map +1 -1
  555. package/dist/views/Edit/SetDocumentStepNav/index.js.map +1 -1
  556. package/dist/views/Edit/SetDocumentTitle/index.js.map +1 -1
  557. package/dist/views/Edit/index.d.ts.map +1 -1
  558. package/dist/views/Edit/index.js +27 -16
  559. package/dist/views/Edit/index.js.map +1 -1
  560. package/dist/views/ForgotPassword/ForgotPasswordForm/index.d.ts.map +1 -1
  561. package/dist/views/ForgotPassword/ForgotPasswordForm/index.js +45 -41
  562. package/dist/views/ForgotPassword/ForgotPasswordForm/index.js.map +1 -1
  563. package/dist/views/HierarchyList/DocumentListSelection/index.js.map +1 -1
  564. package/dist/views/HierarchyList/HierarchyListHeader/index.js.map +1 -1
  565. package/dist/views/HierarchyList/HierarchyTable/ChildNameCell.js.map +1 -1
  566. package/dist/views/HierarchyList/HierarchyTable/DateCell.js +8 -9
  567. package/dist/views/HierarchyList/HierarchyTable/DateCell.js.map +1 -1
  568. package/dist/views/HierarchyList/HierarchyTable/RelatedNameCell.js.map +1 -1
  569. package/dist/views/HierarchyList/TypeFilter/index.js.map +1 -1
  570. package/dist/views/HierarchyList/index.js +2 -2
  571. package/dist/views/HierarchyList/index.js.map +1 -1
  572. package/dist/views/List/DocumentGrid/index.js.map +1 -1
  573. package/dist/views/List/GroupedDocumentGrid/index.js.map +1 -1
  574. package/dist/views/List/ListSelection/index.js.map +1 -1
  575. package/dist/views/Login/LoginField/index.js.map +1 -1
  576. package/dist/views/Login/LoginForm/index.js.map +1 -1
  577. package/dist/views/Logout/LogoutClient.js.map +1 -1
  578. package/dist/views/NotFound/index.client.js.map +1 -1
  579. package/dist/views/ResetPassword/ResetPasswordForm/index.js.map +1 -1
  580. package/dist/views/Verify/index.client.js.map +1 -1
  581. package/dist/views/Version/Default/SetStepNav.js.map +1 -1
  582. package/dist/views/Version/Default/index.js +321 -181
  583. package/dist/views/Version/Default/index.js.map +1 -1
  584. package/dist/views/Version/RenderFieldsToDiff/DiffCollapser/index.js.map +1 -1
  585. package/dist/views/Version/RenderFieldsToDiff/RenderVersionFieldsToDiff.js.map +1 -1
  586. package/dist/views/Version/RenderFieldsToDiff/fields/Checkbox/index.js +9 -11
  587. package/dist/views/Version/RenderFieldsToDiff/fields/Checkbox/index.js.map +1 -1
  588. package/dist/views/Version/RenderFieldsToDiff/fields/Collapsible/index.js.map +1 -1
  589. package/dist/views/Version/RenderFieldsToDiff/fields/Date/index.js +41 -29
  590. package/dist/views/Version/RenderFieldsToDiff/fields/Date/index.js.map +1 -1
  591. package/dist/views/Version/RenderFieldsToDiff/fields/Group/index.js.map +1 -1
  592. package/dist/views/Version/RenderFieldsToDiff/fields/Iterable/index.js.map +1 -1
  593. package/dist/views/Version/RenderFieldsToDiff/fields/Select/index.js +19 -19
  594. package/dist/views/Version/RenderFieldsToDiff/fields/Select/index.js.map +1 -1
  595. package/dist/views/Version/RenderFieldsToDiff/fields/Tabs/index.js.map +1 -1
  596. package/dist/views/Version/RenderFieldsToDiff/fields/Text/index.js.map +1 -1
  597. package/dist/views/Version/Restore/index.d.ts.map +1 -1
  598. package/dist/views/Version/Restore/index.js +176 -77
  599. package/dist/views/Version/Restore/index.js.map +1 -1
  600. package/dist/views/Version/SelectComparison/VersionDrawer/CreatedAtCell.js.map +1 -1
  601. package/dist/views/Version/SelectComparison/VersionDrawer/index.js.map +1 -1
  602. package/dist/views/Version/SelectComparison/index.js +113 -33
  603. package/dist/views/Version/SelectComparison/index.js.map +1 -1
  604. package/dist/views/Version/SelectLocales/index.js.map +1 -1
  605. package/dist/views/Versions/VersionPillLabel/VersionPillLabel.js.map +1 -1
  606. package/dist/views/Versions/cells/AutosaveCell/index.js.map +1 -1
  607. package/dist/views/Versions/cells/CreatedAt/index.js.map +1 -1
  608. package/dist/views/Versions/cells/VersionDrawerCreatedAtCell/index.js.map +1 -1
  609. package/dist/views/Versions/index.client.js +9 -11
  610. package/dist/views/Versions/index.client.js.map +1 -1
  611. package/dist/widgets/Activity/Tabs/PinnedDocuments/PinDocumentPicker/index.css +28 -0
  612. package/dist/widgets/Activity/Tabs/PinnedDocuments/PinDocumentPicker/index.d.ts +16 -0
  613. package/dist/widgets/Activity/Tabs/PinnedDocuments/PinDocumentPicker/index.d.ts.map +1 -0
  614. package/dist/widgets/Activity/Tabs/PinnedDocuments/PinDocumentPicker/index.js +98 -0
  615. package/dist/widgets/Activity/Tabs/PinnedDocuments/PinDocumentPicker/index.js.map +1 -0
  616. package/dist/widgets/Activity/Tabs/PinnedDocuments/index.css +70 -0
  617. package/dist/widgets/Activity/Tabs/PinnedDocuments/index.d.ts +13 -0
  618. package/dist/widgets/Activity/Tabs/PinnedDocuments/index.d.ts.map +1 -0
  619. package/dist/widgets/Activity/Tabs/PinnedDocuments/index.js +81 -0
  620. package/dist/widgets/Activity/Tabs/PinnedDocuments/index.js.map +1 -0
  621. package/dist/widgets/{RecentlyViewed/pinnedPreferences.d.ts → Activity/Tabs/PinnedDocuments/preferences.d.ts} +6 -9
  622. package/dist/widgets/Activity/Tabs/PinnedDocuments/preferences.d.ts.map +1 -0
  623. package/dist/widgets/{RecentlyViewed/pinnedPreferences.js → Activity/Tabs/PinnedDocuments/preferences.js} +3 -22
  624. package/dist/widgets/Activity/Tabs/PinnedDocuments/preferences.js.map +1 -0
  625. package/dist/widgets/Activity/Tabs/PinnedDocuments/usePinnedDocuments.d.ts +39 -0
  626. package/dist/widgets/Activity/Tabs/PinnedDocuments/usePinnedDocuments.d.ts.map +1 -0
  627. package/dist/widgets/Activity/Tabs/PinnedDocuments/usePinnedDocuments.js +83 -0
  628. package/dist/widgets/Activity/Tabs/PinnedDocuments/usePinnedDocuments.js.map +1 -0
  629. package/dist/widgets/Activity/Tabs/RecentDocuments/index.d.ts +9 -0
  630. package/dist/widgets/Activity/Tabs/RecentDocuments/index.d.ts.map +1 -0
  631. package/dist/widgets/Activity/Tabs/RecentDocuments/index.js +23 -0
  632. package/dist/widgets/Activity/Tabs/RecentDocuments/index.js.map +1 -0
  633. package/dist/widgets/Activity/components/DocumentList/index.css +61 -0
  634. package/dist/widgets/Activity/components/DocumentList/index.d.ts +15 -0
  635. package/dist/widgets/Activity/components/DocumentList/index.d.ts.map +1 -0
  636. package/dist/widgets/Activity/components/DocumentList/index.js +56 -0
  637. package/dist/widgets/Activity/components/DocumentList/index.js.map +1 -0
  638. package/dist/widgets/Activity/components/EmptyState/index.css +47 -0
  639. package/dist/widgets/Activity/components/EmptyState/index.d.ts +12 -0
  640. package/dist/widgets/Activity/components/EmptyState/index.d.ts.map +1 -0
  641. package/dist/widgets/Activity/components/EmptyState/index.js +37 -0
  642. package/dist/widgets/Activity/components/EmptyState/index.js.map +1 -0
  643. package/dist/widgets/Activity/components/Pagination/index.css +42 -0
  644. package/dist/widgets/Activity/components/Pagination/index.d.ts +20 -0
  645. package/dist/widgets/Activity/components/Pagination/index.d.ts.map +1 -0
  646. package/dist/widgets/Activity/components/Pagination/index.js +125 -0
  647. package/dist/widgets/Activity/components/Pagination/index.js.map +1 -0
  648. package/dist/widgets/Activity/components/StatusPill/index.css +24 -0
  649. package/dist/widgets/Activity/components/StatusPill/index.d.ts +8 -0
  650. package/dist/widgets/Activity/components/StatusPill/index.d.ts.map +1 -0
  651. package/dist/widgets/Activity/components/StatusPill/index.js +18 -0
  652. package/dist/widgets/Activity/components/StatusPill/index.js.map +1 -0
  653. package/dist/widgets/Activity/index.client.d.ts +15 -0
  654. package/dist/widgets/Activity/index.client.d.ts.map +1 -0
  655. package/dist/widgets/Activity/index.client.js +186 -0
  656. package/dist/widgets/Activity/index.client.js.map +1 -0
  657. package/dist/widgets/Activity/index.css +320 -0
  658. package/dist/widgets/Activity/index.d.ts +13 -0
  659. package/dist/widgets/Activity/index.d.ts.map +1 -0
  660. package/dist/widgets/Activity/index.js +100 -0
  661. package/dist/widgets/Activity/index.js.map +1 -0
  662. package/dist/widgets/{RecentlyViewed/index.client.d.ts → Activity/types.d.ts} +5 -13
  663. package/dist/widgets/Activity/types.d.ts.map +1 -0
  664. package/dist/widgets/Activity/types.js +2 -0
  665. package/dist/widgets/Activity/types.js.map +1 -0
  666. package/dist/widgets/Activity/utils/cache.d.ts +33 -0
  667. package/dist/widgets/Activity/utils/cache.d.ts.map +1 -0
  668. package/dist/widgets/Activity/utils/cache.js +72 -0
  669. package/dist/widgets/Activity/utils/cache.js.map +1 -0
  670. package/dist/widgets/Activity/utils/constants.d.ts +5 -0
  671. package/dist/widgets/Activity/utils/constants.d.ts.map +1 -0
  672. package/dist/widgets/Activity/utils/constants.js +4 -0
  673. package/dist/widgets/Activity/utils/constants.js.map +1 -0
  674. package/dist/widgets/Activity/utils/documents.d.ts +11 -0
  675. package/dist/widgets/Activity/utils/documents.d.ts.map +1 -0
  676. package/dist/widgets/Activity/utils/documents.js +38 -0
  677. package/dist/widgets/Activity/utils/documents.js.map +1 -0
  678. package/dist/widgets/Activity/utils/getActivityWidgetDocs.d.ts +20 -0
  679. package/dist/widgets/Activity/utils/getActivityWidgetDocs.d.ts.map +1 -0
  680. package/dist/widgets/{RecentlyViewed/getDocuments.js → Activity/utils/getActivityWidgetDocs.js} +18 -19
  681. package/dist/widgets/Activity/utils/getActivityWidgetDocs.js.map +1 -0
  682. package/dist/widgets/Activity/utils/state.d.ts +44 -0
  683. package/dist/widgets/Activity/utils/state.d.ts.map +1 -0
  684. package/dist/widgets/Activity/utils/state.js +80 -0
  685. package/dist/widgets/Activity/utils/state.js.map +1 -0
  686. package/dist/widgets/Activity/utils/useActivityDocuments.d.ts +35 -0
  687. package/dist/widgets/Activity/utils/useActivityDocuments.d.ts.map +1 -0
  688. package/dist/widgets/Activity/utils/useActivityDocuments.js +141 -0
  689. package/dist/widgets/Activity/utils/useActivityDocuments.js.map +1 -0
  690. package/dist/widgets/Activity/utils/usePageSize.d.ts +11 -0
  691. package/dist/widgets/Activity/utils/usePageSize.d.ts.map +1 -0
  692. package/dist/widgets/Activity/utils/usePageSize.js +35 -0
  693. package/dist/widgets/Activity/utils/usePageSize.js.map +1 -0
  694. package/dist/widgets/CollectionCards/index.client.d.ts +3 -0
  695. package/dist/widgets/CollectionCards/index.client.d.ts.map +1 -1
  696. package/dist/widgets/CollectionCards/index.client.js +3 -0
  697. package/dist/widgets/CollectionCards/index.client.js.map +1 -1
  698. package/dist/widgets/CollectionCards/index.d.ts +3 -0
  699. package/dist/widgets/CollectionCards/index.d.ts.map +1 -1
  700. package/dist/widgets/CollectionCards/index.js +3 -0
  701. package/dist/widgets/CollectionCards/index.js.map +1 -1
  702. package/dist/widgets/CollectionQuery/SortField/index.d.ts +3 -0
  703. package/dist/widgets/CollectionQuery/SortField/index.d.ts.map +1 -1
  704. package/dist/widgets/CollectionQuery/SortField/index.js +181 -73
  705. package/dist/widgets/CollectionQuery/SortField/index.js.map +1 -1
  706. package/dist/widgets/CollectionQuery/index.d.ts +3 -0
  707. package/dist/widgets/CollectionQuery/index.d.ts.map +1 -1
  708. package/dist/widgets/CollectionQuery/index.js +3 -0
  709. package/dist/widgets/CollectionQuery/index.js.map +1 -1
  710. package/dist/widgets/UploadDropzone/CollectionsField/index.d.ts +3 -0
  711. package/dist/widgets/UploadDropzone/CollectionsField/index.d.ts.map +1 -1
  712. package/dist/widgets/UploadDropzone/CollectionsField/index.js +65 -14
  713. package/dist/widgets/UploadDropzone/CollectionsField/index.js.map +1 -1
  714. package/dist/widgets/UploadDropzone/index.client.d.ts +3 -0
  715. package/dist/widgets/UploadDropzone/index.client.d.ts.map +1 -1
  716. package/dist/widgets/UploadDropzone/index.client.js +3 -0
  717. package/dist/widgets/UploadDropzone/index.client.js.map +1 -1
  718. package/dist/widgets/UploadDropzone/index.d.ts +3 -0
  719. package/dist/widgets/UploadDropzone/index.d.ts.map +1 -1
  720. package/dist/widgets/UploadDropzone/index.js +3 -0
  721. package/dist/widgets/UploadDropzone/index.js.map +1 -1
  722. package/dist/widgets/Welcome/index.d.ts +3 -0
  723. package/dist/widgets/Welcome/index.d.ts.map +1 -1
  724. package/dist/widgets/Welcome/index.js +3 -0
  725. package/dist/widgets/Welcome/index.js.map +1 -1
  726. package/dist/widgets/WidgetCard/index.css +0 -20
  727. package/dist/widgets/{RecentlyViewed/CollectionsField → shared/CollectionFilter}/index.css +2 -2
  728. package/dist/widgets/{RecentlyViewed/CollectionsField → shared/CollectionFilter}/index.d.ts +3 -1
  729. package/dist/widgets/shared/CollectionFilter/index.d.ts.map +1 -0
  730. package/dist/widgets/shared/CollectionFilter/index.js +170 -0
  731. package/dist/widgets/shared/CollectionFilter/index.js.map +1 -0
  732. package/package.json +8 -7
  733. package/dist/exports/client/chunk-R7M6BG75.js +0 -27
  734. package/dist/exports/client/chunk-R7M6BG75.js.map +0 -7
  735. package/dist/widgets/RecentlyViewed/CollectionsField/index.d.ts.map +0 -1
  736. package/dist/widgets/RecentlyViewed/CollectionsField/index.js +0 -102
  737. package/dist/widgets/RecentlyViewed/CollectionsField/index.js.map +0 -1
  738. package/dist/widgets/RecentlyViewed/PinDocumentPicker/index.css +0 -41
  739. package/dist/widgets/RecentlyViewed/PinDocumentPicker/index.d.ts +0 -19
  740. package/dist/widgets/RecentlyViewed/PinDocumentPicker/index.d.ts.map +0 -1
  741. package/dist/widgets/RecentlyViewed/PinDocumentPicker/index.js +0 -121
  742. package/dist/widgets/RecentlyViewed/PinDocumentPicker/index.js.map +0 -1
  743. package/dist/widgets/RecentlyViewed/getDocuments.d.ts +0 -20
  744. package/dist/widgets/RecentlyViewed/getDocuments.d.ts.map +0 -1
  745. package/dist/widgets/RecentlyViewed/getDocuments.js.map +0 -1
  746. package/dist/widgets/RecentlyViewed/index.client.d.ts.map +0 -1
  747. package/dist/widgets/RecentlyViewed/index.client.js +0 -409
  748. package/dist/widgets/RecentlyViewed/index.client.js.map +0 -1
  749. package/dist/widgets/RecentlyViewed/index.css +0 -352
  750. package/dist/widgets/RecentlyViewed/index.d.ts +0 -10
  751. package/dist/widgets/RecentlyViewed/index.d.ts.map +0 -1
  752. package/dist/widgets/RecentlyViewed/index.js +0 -47
  753. package/dist/widgets/RecentlyViewed/index.js.map +0 -1
  754. package/dist/widgets/RecentlyViewed/pinnedPreferences.d.ts.map +0 -1
  755. package/dist/widgets/RecentlyViewed/pinnedPreferences.js.map +0 -1
  756. package/dist/widgets/RecentlyViewed/recents.d.ts +0 -8
  757. package/dist/widgets/RecentlyViewed/recents.d.ts.map +0 -1
  758. package/dist/widgets/RecentlyViewed/recents.js +0 -19
  759. package/dist/widgets/RecentlyViewed/recents.js.map +0 -1
  760. /package/dist/exports/client/{CodeEditor-I6PL55BF.js.map → CodeEditor-23ZGBN6S.js.map} +0 -0
  761. /package/dist/exports/client/{DatePicker-RFCB5VGD.js.map → DatePicker-AZBZPMY6.js.map} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["c","_c","React","useCallback","useId","useState","useTranslation","ClickableArrow","baseClass","Pagination","props","$","hasNextPage","t0","hasPrevPage","t1","nextPage","t2","onChange","page","t3","prevPage","t4","tableId","totalPages","t5","undefined","currentPage","pageDescriptionID","t","inputValue","setInputValue","String","t6","t7","useEffect","t8","updatePage","t9","Symbol","for","e","target","value","handleInputChange","t10","parsed","parseInt","isNaN","clamped","Math","max","min","handleInputBlur","t11","e_0","key","currentTarget","blur","preventDefault","parsed_0","parsed_1","handleInputKeyDown","isSinglePage","t12","t13","t14","t15","_jsxs","className","children","_jsx","ariaControls","direction","isDisabled","disabled","inputMode","onBlur","onKeyDown","style","width","length","type","id"],"sources":["../../../src/elements/Pagination/index.tsx"],"sourcesContent":["'use client'\nimport React, { useCallback, useId, useState } from 'react'\n\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { ClickableArrow } from './ClickableArrow/index.js'\nimport './index.css'\n\nconst baseClass = 'paginator'\n\nexport type PaginationProps = {\n hasNextPage?: boolean\n hasPrevPage?: boolean\n limit?: number\n nextPage?: number\n numberOfNeighbors?: number\n onChange?: (page: number) => void\n page?: number\n prevPage?: number\n tableId?: string\n totalPages?: number\n}\n\nexport const Pagination: React.FC<PaginationProps> = (props) => {\n const {\n hasNextPage = false,\n hasPrevPage = false,\n nextPage = null,\n onChange,\n page: currentPage = 1,\n prevPage = null,\n tableId,\n totalPages = 1,\n } = props\n\n const pageDescriptionID = useId()\n const { t } = useTranslation()\n const [inputValue, setInputValue] = useState(String(currentPage))\n\n // Sync input value when currentPage changes externally\n React.useEffect(() => {\n setInputValue(String(currentPage))\n }, [currentPage])\n\n const updatePage = useCallback(\n (page: number) => {\n if (typeof onChange === 'function') {\n onChange(page)\n }\n },\n [onChange],\n )\n\n const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n setInputValue(e.target.value)\n }\n\n const handleInputBlur = () => {\n const parsed = parseInt(inputValue, 10)\n if (!isNaN(parsed)) {\n // Clamp to valid range\n const clamped = Math.max(1, Math.min(parsed, totalPages))\n if (clamped !== currentPage) {\n updatePage(clamped)\n } else {\n setInputValue(String(currentPage))\n }\n } else {\n // Reset to current page if not a number\n setInputValue(String(currentPage))\n }\n }\n\n const handleInputKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === 'Enter') {\n e.currentTarget.blur()\n } else if (e.key === 'Escape') {\n setInputValue(String(currentPage))\n e.currentTarget.blur()\n } else if (e.key === 'ArrowUp') {\n e.preventDefault()\n const parsed = parseInt(inputValue, 10)\n if (!isNaN(parsed) && parsed < totalPages) {\n setInputValue(String(parsed + 1))\n }\n } else if (e.key === 'ArrowDown') {\n e.preventDefault()\n const parsed = parseInt(inputValue, 10)\n if (!isNaN(parsed) && parsed > 1) {\n setInputValue(String(parsed - 1))\n }\n }\n }\n\n const isSinglePage = !totalPages || totalPages <= 1\n\n return (\n <div className={baseClass}>\n <ClickableArrow\n ariaControls={tableId}\n direction=\"left\"\n isDisabled={isSinglePage || !hasPrevPage}\n updatePage={() => updatePage(prevPage ?? Math.max(1, currentPage - 1))}\n />\n <ClickableArrow\n ariaControls={tableId}\n direction=\"right\"\n isDisabled={isSinglePage || !hasNextPage}\n updatePage={() => updatePage(nextPage ?? currentPage + 1)}\n />\n <div className={`${baseClass}__page-input-wrapper`}>\n <input\n aria-controls={tableId}\n aria-describedby={pageDescriptionID}\n aria-label={t('general:goToPage')}\n className={`${baseClass}__page-input`}\n disabled={isSinglePage}\n inputMode=\"numeric\"\n max={totalPages}\n min={1}\n onBlur={handleInputBlur}\n onChange={handleInputChange}\n onKeyDown={handleInputKeyDown}\n style={{ width: `${Math.max(inputValue.length, 1)}ch` }}\n type=\"text\"\n value={inputValue}\n />\n <span className=\"sr-only\" id={pageDescriptionID}>\n {t('general:pageNumberRange', { totalPages: isSinglePage ? 1 : totalPages })}\n </span>\n <span className={`${baseClass}__page-total`}>\n {t('general:of')} {isSinglePage ? 1 : totalPages}\n </span>\n </div>\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["c","_c","React","useCallback","useId","useState","useTranslation","ClickableArrow","baseClass","Pagination","props","$","hasNextPage","t0","hasPrevPage","t1","nextPage","t2","onChange","page","t3","prevPage","t4","tableId","totalPages","t5","undefined","currentPage","pageDescriptionID","t","inputValue","setInputValue","String","t6","t7","useEffect","t8","updatePage","t9","Symbol","for","e","target","value","handleInputChange","t10","parsed","parseInt","isNaN","clamped","Math","max","min","handleInputBlur","t11","e_0","key","currentTarget","blur","preventDefault","parsed_0","parsed_1","handleInputKeyDown","isSinglePage","t12","t13","t14","_jsxs","className","children","_jsx","ariaControls","direction","isDisabled","disabled","inputMode","onBlur","onKeyDown","style","width","length","type","id"],"sources":["../../../src/elements/Pagination/index.tsx"],"sourcesContent":["'use client'\nimport React, { useCallback, useId, useState } from 'react'\n\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { ClickableArrow } from './ClickableArrow/index.js'\nimport './index.css'\n\nconst baseClass = 'paginator'\n\nexport type PaginationProps = {\n hasNextPage?: boolean\n hasPrevPage?: boolean\n limit?: number\n nextPage?: number\n numberOfNeighbors?: number\n onChange?: (page: number) => void\n page?: number\n prevPage?: number\n tableId?: string\n totalPages?: number\n}\n\nexport const Pagination: React.FC<PaginationProps> = (props) => {\n const {\n hasNextPage = false,\n hasPrevPage = false,\n nextPage = null,\n onChange,\n page: currentPage = 1,\n prevPage = null,\n tableId,\n totalPages = 1,\n } = props\n\n const pageDescriptionID = useId()\n const { t } = useTranslation()\n const [inputValue, setInputValue] = useState(String(currentPage))\n\n // Sync input value when currentPage changes externally\n React.useEffect(() => {\n setInputValue(String(currentPage))\n }, [currentPage])\n\n const updatePage = useCallback(\n (page: number) => {\n if (typeof onChange === 'function') {\n onChange(page)\n }\n },\n [onChange],\n )\n\n const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n setInputValue(e.target.value)\n }\n\n const handleInputBlur = () => {\n const parsed = parseInt(inputValue, 10)\n if (!isNaN(parsed)) {\n // Clamp to valid range\n const clamped = Math.max(1, Math.min(parsed, totalPages))\n if (clamped !== currentPage) {\n updatePage(clamped)\n } else {\n setInputValue(String(currentPage))\n }\n } else {\n // Reset to current page if not a number\n setInputValue(String(currentPage))\n }\n }\n\n const handleInputKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === 'Enter') {\n e.currentTarget.blur()\n } else if (e.key === 'Escape') {\n setInputValue(String(currentPage))\n e.currentTarget.blur()\n } else if (e.key === 'ArrowUp') {\n e.preventDefault()\n const parsed = parseInt(inputValue, 10)\n if (!isNaN(parsed) && parsed < totalPages) {\n setInputValue(String(parsed + 1))\n }\n } else if (e.key === 'ArrowDown') {\n e.preventDefault()\n const parsed = parseInt(inputValue, 10)\n if (!isNaN(parsed) && parsed > 1) {\n setInputValue(String(parsed - 1))\n }\n }\n }\n\n const isSinglePage = !totalPages || totalPages <= 1\n\n return (\n <div className={baseClass}>\n <ClickableArrow\n ariaControls={tableId}\n direction=\"left\"\n isDisabled={isSinglePage || !hasPrevPage}\n updatePage={() => updatePage(prevPage ?? Math.max(1, currentPage - 1))}\n />\n <ClickableArrow\n ariaControls={tableId}\n direction=\"right\"\n isDisabled={isSinglePage || !hasNextPage}\n updatePage={() => updatePage(nextPage ?? currentPage + 1)}\n />\n <div className={`${baseClass}__page-input-wrapper`}>\n <input\n aria-controls={tableId}\n aria-describedby={pageDescriptionID}\n aria-label={t('general:goToPage')}\n className={`${baseClass}__page-input`}\n disabled={isSinglePage}\n inputMode=\"numeric\"\n max={totalPages}\n min={1}\n onBlur={handleInputBlur}\n onChange={handleInputChange}\n onKeyDown={handleInputKeyDown}\n style={{ width: `${Math.max(inputValue.length, 1)}ch` }}\n type=\"text\"\n value={inputValue}\n />\n <span className=\"sr-only\" id={pageDescriptionID}>\n {t('general:pageNumberRange', { totalPages: isSinglePage ? 1 : totalPages })}\n </span>\n <span className={`${baseClass}__page-total`}>\n {t('general:of')} {isSinglePage ? 1 : totalPages}\n </span>\n </div>\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["c","_c","collectionDefaults","isNumber","React","ChevronIcon","useTranslation","Button","Popup","PopupList","baseClass","defaultLimits","admin","pagination","limits","PerPage","t0","$","defaultLimit","t1","handleChange","limit","t2","tableId","undefined","t","limitToUse","t3","t4","t5","close","_jsx","RadioGroup","children","map","limitNumber","i","RadioGroupItem","active","onClick","t6","onKeyDown","ariaProps","buttonStyle","className","filter","Boolean","join","extraButtonProps","icon","size","_jsxs","horizontalAlign","popupType","render"],"sources":["../../../src/elements/PerPage/index.tsx"],"sourcesContent":["'use client'\nimport { collectionDefaults, isNumber } from 'payload/shared'\nimport React from 'react'\n\nimport { ChevronIcon } from '../../icons/Chevron/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { Button } from '../Button/index.js'\nimport { Popup, PopupList } from '../Popup/index.js'\nimport './index.css'\n\nconst baseClass = 'per-page'\n\nconst defaultLimits = collectionDefaults.admin.pagination.limits\n\nexport type PerPageProps = {\n readonly defaultLimit?: number\n readonly handleChange?: (limit: number) => void\n readonly limit: number\n readonly limits: number[]\n readonly resetPage?: boolean\n readonly tableId?: string\n}\n\nexport const PerPage: React.FC<PerPageProps> = ({\n defaultLimit = 10,\n handleChange,\n limit,\n limits = defaultLimits,\n tableId,\n}) => {\n const { t } = useTranslation()\n\n const limitToUse = isNumber(limit) ? limit : defaultLimit\n\n return (\n <div className={baseClass}>\n <span className={`${baseClass}__label`}>{t('general:perPageLabel')}</span>\n <Popup\n horizontalAlign=\"right\"\n popupType=\"menu\"\n render={({ close }) => (\n <PopupList.RadioGroup>\n {limits.map((limitNumber, i) => (\n <PopupList.RadioGroupItem\n active={limitNumber === limitToUse}\n key={i}\n onClick={() => {\n close()\n if (handleChange) {\n handleChange(limitNumber)\n }\n }}\n >\n {limitNumber}\n </PopupList.RadioGroupItem>\n ))}\n </PopupList.RadioGroup>\n )}\n renderButton={({ active, onClick, onKeyDown, ...ariaProps }) => (\n <Button\n {...ariaProps}\n aria-label={t('general:perPage', { limit: limitToUse })}\n buttonStyle=\"secondary\"\n className={[active && `${baseClass}--active`].filter(Boolean).join(' ')}\n extraButtonProps={{\n 'aria-controls': [ariaProps['aria-controls'], tableId].filter(Boolean).join(' '),\n onKeyDown,\n }}\n icon={<ChevronIcon className={`${baseClass}__icon`} size={16} />}\n iconPosition=\"right\"\n onClick={onClick}\n >\n {limitToUse}\n </Button>\n )}\n size=\"small\"\n />\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["c","_c","collectionDefaults","isNumber","React","ChevronIcon","useTranslation","Button","Popup","PopupList","baseClass","defaultLimits","admin","pagination","limits","PerPage","t0","$","defaultLimit","t1","handleChange","limit","t2","tableId","undefined","t","limitToUse","t3","t4","t5","close","_jsx","RadioGroup","children","map","limitNumber","i","RadioGroupItem","active","onClick","t6","onKeyDown","ariaProps","buttonStyle","className","filter","Boolean","join","extraButtonProps","icon","size","_jsxs","horizontalAlign","popupType","render"],"sources":["../../../src/elements/PerPage/index.tsx"],"sourcesContent":["'use client'\nimport { collectionDefaults, isNumber } from 'payload/shared'\nimport React from 'react'\n\nimport { ChevronIcon } from '../../icons/Chevron/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { Button } from '../Button/index.js'\nimport { Popup, PopupList } from '../Popup/index.js'\nimport './index.css'\n\nconst baseClass = 'per-page'\n\nconst defaultLimits = collectionDefaults.admin.pagination.limits\n\nexport type PerPageProps = {\n readonly defaultLimit?: number\n readonly handleChange?: (limit: number) => void\n readonly limit: number\n readonly limits: number[]\n readonly resetPage?: boolean\n readonly tableId?: string\n}\n\nexport const PerPage: React.FC<PerPageProps> = ({\n defaultLimit = 10,\n handleChange,\n limit,\n limits = defaultLimits,\n tableId,\n}) => {\n const { t } = useTranslation()\n\n const limitToUse = isNumber(limit) ? limit : defaultLimit\n\n return (\n <div className={baseClass}>\n <span className={`${baseClass}__label`}>{t('general:perPageLabel')}</span>\n <Popup\n horizontalAlign=\"right\"\n popupType=\"menu\"\n render={({ close }) => (\n <PopupList.RadioGroup>\n {limits.map((limitNumber, i) => (\n <PopupList.RadioGroupItem\n active={limitNumber === limitToUse}\n key={i}\n onClick={() => {\n close()\n if (handleChange) {\n handleChange(limitNumber)\n }\n }}\n >\n {limitNumber}\n </PopupList.RadioGroupItem>\n ))}\n </PopupList.RadioGroup>\n )}\n renderButton={({ active, onClick, onKeyDown, ...ariaProps }) => (\n <Button\n {...ariaProps}\n aria-label={t('general:perPage', { limit: limitToUse })}\n buttonStyle=\"secondary\"\n className={[active && `${baseClass}--active`].filter(Boolean).join(' ')}\n extraButtonProps={{\n 'aria-controls': [ariaProps['aria-controls'], tableId].filter(Boolean).join(' '),\n onKeyDown,\n }}\n icon={<ChevronIcon className={`${baseClass}__icon`} size={16} />}\n iconPosition=\"right\"\n onClick={onClick}\n >\n {limitToUse}\n </Button>\n )}\n size=\"small\"\n />\n </div>\n )\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;;AACA,SAASC,kBAAkB,EAAEC,QAAQ,QAAQ;AAC7C,OAAOC,KAAA,MAAW;AAElB,SAASC,WAAW,QAAQ;AAC5B,SAASC,cAAc,QAAQ;AAC/B,SAASC,MAAM,QAAQ;AACvB,SAASC,KAAK,EAAEC,SAAS,QAAQ;AACjC,OAAO;AAEP,MAAMC,SAAA,GAAY;AAElB,MAAMC,aAAA,GAAgBT,kBAAA,CAAmBU,KAAK,CAACC,UAAU,CAACC,MAAM;AAWhE,OAAO,MAAMC,OAAA,GAAkCC,EAAA;EAAA,MAAAC,CAAA,GAAAhB,EAAA;EAAC;IAAAiB,YAAA,EAAAC,EAAA;IAAAC,YAAA;IAAAC,KAAA;IAAAP,MAAA,EAAAQ,EAAA;IAAAC;EAAA,IAAAP,EAM/C;EALC,MAAAE,YAAA,GAAAC,EAAiB,KAAjBK,SAAiB,GAAjB,EAAiB,GAAjBL,EAAiB;EAGjB,MAAAL,MAAA,GAAAQ,EAAsB,KAAtBE,SAAsB,GAAtBb,aAAsB,GAAtBW,EAAsB;EAGtB;IAAAG;EAAA,IAAcnB,cAAA;EAEd,MAAAoB,UAAA,GAAmBvB,QAAA,CAASkB,KAAiB,IAA1BA,KAA0B,GAA1BH,YAA0B;EAAA,IAAAS,EAAA;EAAA,IAAAV,CAAA,QAAAG,YAAA,IAAAH,CAAA,QAAAS,UAAA,IAAAT,CAAA,QAAAH,MAAA,IAAAG,CAAA,QAAAQ,CAAA,IAAAR,CAAA,QAAAM,OAAA;IAAA,IAAAK,EAAA;IAAA,IAAAX,CAAA,QAAAG,YAAA,IAAAH,CAAA,QAAAS,UAAA,IAAAT,CAAA,QAAAH,MAAA;MAQ/Bc,EAAA,GAAAC,EAAA;QAAC;UAAAC;QAAA,IAAAD,EAAS;QAAA,OAChBE,IAAA,CAACtB,SAAA,CAAAuB,UAAoB;UAAAC,QAAA,EAClBnB,MAAA,CAAAoB,GAAU,CAAC,CAAAC,WAAA,EAAAC,CAAA,KACVL,IAAA,CAACtB,SAAA,CAAA4B,cAAwB;YAAAC,MAAA,EACfH,WAAA,KAAgBT,UAAA;YAAAa,OAAA,EAEfA,CAAA;cACPT,KAAA;cACA,IAAIV,YAAA;gBACFA,YAAA,CAAae,WAAA;cAAA;YACf,CACF;YAAAF,QAAA,EAECE;aARIC,CAAA;;;;;;;;;;;;MAaCP,EAAA,GAAAW,EAAA;QAAC;UAAAF,MAAA;UAAAC,OAAA;UAAAE,SAAA;UAAA,GAAAC;QAAA,IAAAF,EAA4C;QAAA,OACzDT,IAAA,CAACxB,MAAA;UAAA,GACKmC,SAAS;UAAA,cACDjB,CAAA,CAAE,mBAAmB;YAAAJ,KAAA,EAASK;UAAW;UAAAiB,WAAA,EACzC;UAAAC,SAAA,EACD,CAACN,MAAgC,IAAhC,GAAa5B,SAAA,UAAmB,CAAC,CAAAmC,MAAO,CAACC,OAAA,EAAAC,IAAa,CAAC;UAAAC,gBAAA,EACjD;YAAA,iBACC,CAACN,SAAS,CAAC,gBAAgB,EAAEnB,OAAA,CAAQ,CAAAsB,MAAO,CAACC,OAAA,EAAAC,IAAa,CAAC;YAAAN;UAE9E;UAAAQ,IAAA,EACMlB,IAAA,CAAC1B,WAAA;YAAAuC,SAAA,EAAuB,GAAGlC,SAAA,QAAiB;YAAAwC,IAAA,EAAQ;;wBAC7C;UAAAX,OAAA;UAAAN,QAAA,EAGZP;;;;;;;;;;IArCTC,EAAA,GAAAwB,KAAA,CAAC;MAAAP,SAAA,EAAelC,SAAA;MAAAuB,QAAA,E,CACdF,IAAA,CAAC;QAAAa,SAAA,EAAgB,GAAGlC,SAAA,SAAkB;QAAAuB,QAAA,EAAGR,CAAA,CAAE;UAC3CM,IAAA,CAACvB,KAAA;QAAA4C,eAAA,EACiB;QAAAC,SAAA,EACN;QAAAC,MAAA,EACF1B,E;sBAkBMC,E;cAiBT;;;;;;;;;;;;SAxCTF,E;CA4CJ","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["c","_c","React","useDraggableSortable","baseClass","DraggablePill","props","$","id","className","t0","attributes","isDragging","listeners","setNodeRef","transform","t1","t2","filter","Boolean","t3","join","t4","_jsx","StaticPill","elementProps","ref","style","alignIcon","ariaChecked","ariaControls","ariaExpanded","ariaLabel","children","draggable","icon","pillStyle","rounded","size","classes","_jsxs","Pill"],"sources":["../../../src/elements/Pill/index.tsx"],"sourcesContent":["'use client'\nimport type { HTMLAttributes } from 'react'\n\nimport React from 'react'\n\nexport type PillStyle =\n | 'always-white'\n | 'dark'\n | 'error'\n | 'light'\n | 'light-gray'\n | 'success'\n | 'warning'\n | 'white'\n\nexport type PillProps = {\n alignIcon?: 'left' | 'right'\n 'aria-checked'?: boolean\n 'aria-controls'?: string\n 'aria-expanded'?: boolean\n 'aria-label'?: string\n children?: React.ReactNode\n className?: string\n draggable?: boolean\n elementProps?: {\n ref: React.RefCallback<HTMLElement>\n } & HTMLAttributes<HTMLElement>\n icon?: React.ReactNode\n id?: string\n /**\n * @default 'light'\n */\n pillStyle?: PillStyle\n rounded?: boolean\n size?: 'medium' | 'small'\n}\n\nimport { useDraggableSortable } from '../DraggableSortable/useDraggableSortable/index.js'\nimport './index.css'\n\nconst baseClass = 'pill'\n\nconst DraggablePill: React.FC<PillProps> = (props) => {\n const { id, className } = props\n\n const { attributes, isDragging, listeners, setNodeRef, transform } = useDraggableSortable({\n id,\n })\n\n return (\n <StaticPill\n {...props}\n className={[isDragging && `${baseClass}--is-dragging`, className].filter(Boolean).join(' ')}\n elementProps={{\n ...listeners,\n ...attributes,\n ref: setNodeRef,\n style: {\n transform,\n },\n }}\n />\n )\n}\n\nconst StaticPill: React.FC<PillProps> = (props) => {\n const {\n id,\n alignIcon = 'right',\n 'aria-checked': ariaChecked,\n 'aria-controls': ariaControls,\n 'aria-expanded': ariaExpanded,\n 'aria-label': ariaLabel,\n children,\n className,\n draggable,\n elementProps,\n icon,\n pillStyle = 'light',\n rounded,\n size = 'medium',\n } = props\n\n const classes = [\n baseClass,\n `${baseClass}--style-${pillStyle}`,\n `${baseClass}--size-${size}`,\n className && className,\n icon && `${baseClass}--has-icon`,\n icon && `${baseClass}--align-icon-${alignIcon}`,\n draggable && `${baseClass}--draggable`,\n rounded && `${baseClass}--rounded`,\n ]\n .filter(Boolean)\n .join(' ')\n\n return (\n <div\n {...elementProps}\n aria-checked={ariaChecked}\n aria-controls={ariaControls}\n aria-expanded={ariaExpanded}\n aria-label={ariaLabel}\n className={classes}\n id={id}\n >\n <span className={`${baseClass}__label`}>{children}</span>\n {Boolean(icon) && <span className={`${baseClass}__icon`}>{icon}</span>}\n </div>\n )\n}\n\nexport const Pill: React.FC<PillProps> = (props) => {\n const { draggable } = props\n\n if (draggable) {\n return <DraggablePill {...props} />\n }\n return <StaticPill {...props} />\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["c","_c","React","useDraggableSortable","baseClass","DraggablePill","props","$","id","className","t0","attributes","isDragging","listeners","setNodeRef","transform","t1","t2","filter","Boolean","t3","join","t4","_jsx","StaticPill","elementProps","ref","style","alignIcon","ariaChecked","ariaControls","ariaExpanded","ariaLabel","children","draggable","icon","pillStyle","rounded","size","classes","_jsxs","Pill"],"sources":["../../../src/elements/Pill/index.tsx"],"sourcesContent":["'use client'\nimport type { HTMLAttributes } from 'react'\n\nimport React from 'react'\n\nexport type PillStyle =\n | 'always-white'\n | 'dark'\n | 'error'\n | 'light'\n | 'light-gray'\n | 'success'\n | 'warning'\n | 'white'\n\nexport type PillProps = {\n alignIcon?: 'left' | 'right'\n 'aria-checked'?: boolean\n 'aria-controls'?: string\n 'aria-expanded'?: boolean\n 'aria-label'?: string\n children?: React.ReactNode\n className?: string\n draggable?: boolean\n elementProps?: {\n ref: React.RefCallback<HTMLElement>\n } & HTMLAttributes<HTMLElement>\n icon?: React.ReactNode\n id?: string\n /**\n * @default 'light'\n */\n pillStyle?: PillStyle\n rounded?: boolean\n size?: 'medium' | 'small'\n}\n\nimport { useDraggableSortable } from '../DraggableSortable/useDraggableSortable/index.js'\nimport './index.css'\n\nconst baseClass = 'pill'\n\nconst DraggablePill: React.FC<PillProps> = (props) => {\n const { id, className } = props\n\n const { attributes, isDragging, listeners, setNodeRef, transform } = useDraggableSortable({\n id,\n })\n\n return (\n <StaticPill\n {...props}\n className={[isDragging && `${baseClass}--is-dragging`, className].filter(Boolean).join(' ')}\n elementProps={{\n ...listeners,\n ...attributes,\n ref: setNodeRef,\n style: {\n transform,\n },\n }}\n />\n )\n}\n\nconst StaticPill: React.FC<PillProps> = (props) => {\n const {\n id,\n alignIcon = 'right',\n 'aria-checked': ariaChecked,\n 'aria-controls': ariaControls,\n 'aria-expanded': ariaExpanded,\n 'aria-label': ariaLabel,\n children,\n className,\n draggable,\n elementProps,\n icon,\n pillStyle = 'light',\n rounded,\n size = 'medium',\n } = props\n\n const classes = [\n baseClass,\n `${baseClass}--style-${pillStyle}`,\n `${baseClass}--size-${size}`,\n className && className,\n icon && `${baseClass}--has-icon`,\n icon && `${baseClass}--align-icon-${alignIcon}`,\n draggable && `${baseClass}--draggable`,\n rounded && `${baseClass}--rounded`,\n ]\n .filter(Boolean)\n .join(' ')\n\n return (\n <div\n {...elementProps}\n aria-checked={ariaChecked}\n aria-controls={ariaControls}\n aria-expanded={ariaExpanded}\n aria-label={ariaLabel}\n className={classes}\n id={id}\n >\n <span className={`${baseClass}__label`}>{children}</span>\n {Boolean(icon) && <span className={`${baseClass}__icon`}>{icon}</span>}\n </div>\n )\n}\n\nexport const Pill: React.FC<PillProps> = (props) => {\n const { draggable } = props\n\n if (draggable) {\n return <DraggablePill {...props} />\n }\n return <StaticPill {...props} />\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/Popup/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAY,aAAa,EAAE,MAAM,OAAO,CAAA;AAEpE,OAAO,KAAK,SAAS,MAAM,4BAA4B,CAAA;AAEvD,OAAO,KAA8E,MAAM,OAAO,CAAA;AAIlG,OAAO,aAAa,CAAA;AACpB,OAAO,EAAE,KAAK,sBAAsB,EAAgB,MAAM,yBAAyB,CAAA;AAyCnF,MAAM,MAAM,UAAU,GAAG;IACvB,eAAe,CAAC,EAAE,aAAa,CAAC,iBAAiB,CAAC,CAAA;IAClD,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,CAAA;IAC1C,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACxB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,UAAU,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAA;IAC/B,UAAU,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAA;IACjC,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB;;;;;;OAMG;IACH,eAAe,CAAC,EAAE,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAA;IAC7C,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,aAAa,CAAC,EAAE,MAAM,IAAI,CAAA;IAC1B,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAA;IACxC,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,SAAS,CAAC,EAAE,cAAc,CAAC,eAAe,CAAC,CAAA;IAC3C,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,IAAI,CAAA;KAAE,KAAK,KAAK,CAAC,SAAS,CAAA;IACzD;;;OAGG;IACH,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,sBAAsB,KAAK,KAAK,CAAC,SAAS,CAAA;IACjE,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB;;;;;OAKG;IACH,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB;;;;;OAKG;IACH,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;IACvB,IAAI,CAAC,EAAE,aAAa,GAAG,OAAO,GAAG,OAAO,CAAA;IACxC;;;;;OAKG;IACH,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAA;IACjC;;;;;;;;OAQG;IACH,aAAa,CAAC,EAAE,QAAQ,GAAG,KAAK,CAAA;CACjC,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC,UAAU,CAyoBtC,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/Popup/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAY,aAAa,EAAE,MAAM,OAAO,CAAA;AAEpE,OAAO,KAAK,SAAS,MAAM,4BAA4B,CAAA;AAEvD,OAAO,KASN,MAAM,OAAO,CAAA;AAKd,OAAO,aAAa,CAAA;AACpB,OAAO,EAAE,KAAK,sBAAsB,EAAgB,MAAM,yBAAyB,CAAA;AAyCnF,MAAM,MAAM,UAAU,GAAG;IACvB,eAAe,CAAC,EAAE,aAAa,CAAC,iBAAiB,CAAC,CAAA;IAClD,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,CAAA;IAC1C,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACxB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,UAAU,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAA;IAC/B,UAAU,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAA;IACjC,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB;;;;;;OAMG;IACH,eAAe,CAAC,EAAE,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAA;IAC7C,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,aAAa,CAAC,EAAE,MAAM,IAAI,CAAA;IAC1B,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAA;IACxC,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,SAAS,CAAC,EAAE,cAAc,CAAC,eAAe,CAAC,CAAA;IAC3C,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,IAAI,CAAA;KAAE,KAAK,KAAK,CAAC,SAAS,CAAA;IACzD;;;OAGG;IACH,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,sBAAsB,KAAK,KAAK,CAAC,SAAS,CAAA;IACjE,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB;;;;;OAKG;IACH,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB;;;;;OAKG;IACH,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;IACvB,IAAI,CAAC,EAAE,aAAa,GAAG,OAAO,GAAG,OAAO,CAAA;IACxC;;;;;OAKG;IACH,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAA;IACjC;;;;;;;;OAQG;IACH,aAAa,CAAC,EAAE,QAAQ,GAAG,KAAK,CAAA;CACjC,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC,UAAU,CAupBtC,CAAA"}
@@ -2,8 +2,9 @@
2
2
 
3
3
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
4
4
  export * as PopupList from './PopupButtonList/index.js';
5
- import React, { createContext, use, useCallback, useEffect, useId, useRef, useState } from 'react';
5
+ import React, { createContext, use, useCallback, useEffect, useId, useLayoutEffect, useRef, useState } from 'react';
6
6
  import { useEffectEvent } from '../../hooks/useEffectEvent.js';
7
+ import { useModalFocus } from '../../providers/ModalFocus/index.js';
7
8
  import { ThemeProvider } from '../../providers/Theme/index.js';
8
9
  import './index.css';
9
10
  import { PopupTrigger } from './PopupTrigger/index.js';
@@ -56,7 +57,21 @@ export const Popup = props => {
56
57
  verticalAlign = 'bottom'
57
58
  } = props;
58
59
  const popupRef = useRef(null);
60
+ const containerRef = useRef(null);
59
61
  const triggerRef = useRef(null);
62
+ const {
63
+ registerPopup
64
+ } = useModalFocus();
65
+ const getTrigger = useCallback(() => triggerRef.current?.querySelector('button, [tabindex="0"]') ?? null, []);
66
+ useLayoutEffect(() => {
67
+ const container = containerRef.current;
68
+ if (container) {
69
+ return registerPopup({
70
+ container,
71
+ getTrigger
72
+ });
73
+ }
74
+ }, [getTrigger, registerPopup]);
60
75
  const generatedContentId = useId();
61
76
  const contentId = `${id || generatedContentId}-content`;
62
77
  /**
@@ -95,12 +110,12 @@ export const Popup = props => {
95
110
  const closePopup = useCallback(({
96
111
  restoreFocus = true
97
112
  } = {}) => {
98
- const trigger = triggerRef.current?.querySelector('button, [tabindex="0"]');
113
+ const trigger = getTrigger();
99
114
  setActive(false);
100
115
  if (restoreFocus) {
101
116
  requestAnimationFrame(() => trigger?.focus());
102
117
  }
103
- }, [setActive]);
118
+ }, [getTrigger, setActive]);
104
119
  const close = useCallback(() => closePopup(), [closePopup]);
105
120
  const closePopupChain = useCallback((options = {}) => {
106
121
  if (parentPopup) {
@@ -493,6 +508,7 @@ export const Popup = props => {
493
508
  return /*#__PURE__*/_jsxs("div", {
494
509
  className: [baseClass, className].filter(Boolean).join(' '),
495
510
  id: id,
511
+ ref: containerRef,
496
512
  children: [/*#__PURE__*/_jsx("div", {
497
513
  className: `${baseClass}__trigger-wrap`,
498
514
  ref: triggerRef,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["PopupList","React","createContext","use","useCallback","useEffect","useId","useRef","useState","useEffectEvent","ThemeProvider","PopupTrigger","createSubmenuScope","useSubmenuPointerIntent","baseClass","PopupContext","TABBABLE_SELECTOR","map","s","join","MENU_ITEM_SELECTOR","POPUP_CONTENT_SELECTOR","getMenuItems","popup","Array","from","querySelectorAll","filter","item","closest","Popup","props","id","button","buttonAriaLabel","buttonClassName","buttonSize","buttonType","caret","children","className","disabled","forceOpen","horizontalAlign","horizontalAlignProp","hoverSubmenu","initActive","noBackground","onToggleClose","onToggleOpen","popupAriaLabel","popupType","portalClassName","render","renderButton","showOnHover","showScrollbar","side","size","theme","verticalAlign","popupRef","triggerRef","generatedContentId","contentId","openedViaKeyboardRef","parentPopup","popupRole","undefined","submenuScope","isSubmenu","resolvedSide","active","setActiveInternal","isOnTop","setIsOnTop","setActive","isActive","viaKeyboard","coordinateParent","current","requestOpen","delay","closeActiveBranch","release","closePopup","restoreFocus","trigger","querySelector","requestAnimationFrame","focus","close","closePopupChain","options","openFromParent","register","closeBranch","open","pointerIntent","contentRef","enabled","onClose","onOpen","Boolean","activeChildId","updatePosition","triggerRect","getBoundingClientRect","popupRect","offset","sideOffset","top","left","caretLeft","scrollContainer","popupPaddingTop","Number","parseFloat","window","getComputedStyle","paddingTop","maxTop","innerHeight","height","Math","max","min","anchorRect","width","right","innerWidth","onTop","bottom","topIfAbove","triggerCenter","newTop","round","newLeft","newCaretLeft","newPosition","style","position","getPropertyValue","setProperty","handleClickOutside","e","target","isOutsidePopup","contains","isOutsideTrigger","clickedPopupContent","isInsideChildPopup","handleKeyDown","activePopup","document","activeElement","key","preventDefault","stopPropagation","nestedTrigger","dispatchEvent","KeyboardEvent","bubbles","shiftKey","setTimeout","includes","menuItems","length","currentIndex","findIndex","nextIndex","forEach","index","setAttribute","focusable","el","goBackward","handleActionableClick","actionable","matches","showPopover","rafId","firstFocusable","addEventListener","capture","passive","cancelAnimationFrame","removeEventListener","hidePopover","Trigger","_jsx","isMenuItem","_jsxs","ref","onMouseEnter","onMouseLeave","role","tabIndex","value","popover","_Fragment"],"sources":["../../../src/elements/Popup/index.tsx"],"sourcesContent":["'use client'\nimport type { AriaAttributes, AriaRole, CSSProperties } from 'react'\n\nexport * as PopupList from './PopupButtonList/index.js'\n\nimport React, { createContext, use, useCallback, useEffect, useId, useRef, useState } from 'react'\n\nimport { useEffectEvent } from '../../hooks/useEffectEvent.js'\nimport { ThemeProvider } from '../../providers/Theme/index.js'\nimport './index.css'\nimport { type PopupButtonRenderProps, PopupTrigger } from './PopupTrigger/index.js'\nimport { createSubmenuScope, type SubmenuScope } from './SubmenuScope.js'\nimport { useSubmenuPointerIntent } from './useSubmenuPointerIntent.js'\n\nconst baseClass = 'popup'\n\ntype PopupContextValue = {\n closePopupChain: (options?: { restoreFocus?: boolean }) => void\n popupRef: React.RefObject<HTMLDivElement | null>\n popupRole?: AriaRole\n submenuScope: SubmenuScope\n}\n\nconst PopupContext = createContext<null | PopupContextValue>(null)\n\n/**\n * Selector for all elements the browser considers tabbable.\n */\nconst TABBABLE_SELECTOR = [\n 'a[href]',\n 'button:not(:disabled)',\n 'input:not(:disabled):not([type=\"hidden\"])',\n 'select:not(:disabled)',\n 'textarea:not(:disabled)',\n '[tabindex]',\n '[contenteditable]:not([contenteditable=\"false\"])',\n 'audio[controls]',\n 'video[controls]',\n 'summary',\n]\n .map((s) => `${s}:not([tabindex=\"-1\"])`)\n .join(', ')\n\nconst MENU_ITEM_SELECTOR = '[role=\"menuitem\"], [role=\"menuitemcheckbox\"], [role=\"menuitemradio\"]'\nconst POPUP_CONTENT_SELECTOR = `.${baseClass}__content, .${baseClass}__hidden-content`\n\nconst getMenuItems = (popup: HTMLElement): HTMLElement[] =>\n Array.from(popup.querySelectorAll<HTMLElement>(MENU_ITEM_SELECTOR)).filter(\n (item) => item.closest(POPUP_CONTENT_SELECTOR) === popup,\n )\n\nexport type PopupProps = {\n backgroundColor?: CSSProperties['backgroundColor']\n boundingRef?: React.RefObject<HTMLElement>\n button?: React.ReactNode\n buttonAriaLabel?: string\n buttonClassName?: string\n buttonSize?: 'large' | 'medium'\n buttonType?: 'custom' | 'default'\n caret?: boolean\n children?: React.ReactNode\n className?: string\n disabled?: boolean\n forceOpen?: boolean\n /**\n * Preferred horizontal alignment of the popup, if there is enough space available.\n * Nested menu popups use 'left' and 'right' as their preferred side instead.\n * When omitted, nested menu popups prefer the right side.\n *\n * @default 'left'\n */\n horizontalAlign?: 'center' | 'left' | 'right'\n hoverSubmenu?: boolean\n id?: string\n initActive?: boolean\n noBackground?: boolean\n onToggleClose?: () => void\n onToggleOpen?: (active: boolean) => void\n popupAriaLabel?: string\n popupType?: AriaAttributes['aria-haspopup']\n portalClassName?: string\n render?: (args: { close: () => void }) => React.ReactNode\n /**\n * Render prop for custom trigger button. Receives onClick/onKeyDown/aria props.\n * When provided, `button` and `buttonType` are ignored.\n */\n renderButton?: (props: PopupButtonRenderProps) => React.ReactNode\n showOnHover?: boolean\n /**\n * By default, the scrollbar is hidden. If you want to show it, set this to true.\n * In both cases, the container is still scrollable.\n *\n * @default false\n */\n showScrollbar?: boolean\n /**\n * Position the popup to the side of the trigger instead of above/below.\n * The popup's top edge aligns with the trigger's top edge (with viewport clamping).\n * Automatically flips to the opposite side if there is not enough space.\n * When set, `verticalAlign`, `horizontalAlign`, and the caret are ignored.\n */\n side?: 'left' | 'right'\n size?: 'fit-content' | 'large' | 'small'\n /**\n * Theme for the popup content. Defaults to 'dark'.\n * Set to 'auto' to inherit the current theme.\n *\n * @default 'dark'\n */\n theme?: 'auto' | 'dark' | 'light'\n /**\n * Preferred vertical alignment of the popup (position below or above the trigger),\n * if there is enough space available.\n *\n * If the popup is too close to the edge of the viewport, it will flip to the opposite side\n * regardless of the preferred vertical alignment.\n *\n * @default 'bottom'\n */\n verticalAlign?: 'bottom' | 'top'\n}\n\n/**\n * Component that renders a popup, as well as a button that triggers the popup.\n *\n * The popup is rendered next to its trigger in the DOM and positioned above / below it,\n * depending on the verticalAlign prop and the space available.\n */\nexport const Popup: React.FC<PopupProps> = (props) => {\n const {\n id,\n button,\n buttonAriaLabel,\n buttonClassName,\n buttonSize,\n buttonType = 'default',\n caret = true,\n children,\n className,\n disabled,\n forceOpen,\n horizontalAlign: horizontalAlignProp,\n hoverSubmenu = false,\n initActive = false,\n noBackground,\n onToggleClose,\n onToggleOpen,\n popupAriaLabel,\n popupType,\n portalClassName,\n render,\n renderButton,\n showOnHover = false,\n showScrollbar = false,\n side,\n size = 'fit-content',\n theme = 'dark',\n verticalAlign = 'bottom',\n } = props\n\n const popupRef = useRef<HTMLDivElement>(null)\n const triggerRef = useRef<HTMLDivElement>(null)\n const generatedContentId = useId()\n const contentId = `${id || generatedContentId}-content`\n\n /**\n * Keeps track of whether the popup was opened via keyboard.\n * This is used to determine whether to autofocus the first element in the popup.\n * If the popup was opened via mouse, we do not want to autofocus the first element.\n */\n const openedViaKeyboardRef = useRef(false)\n\n const parentPopup = use(PopupContext)\n const popupRole = (popupType === true ? 'menu' : popupType || undefined) as AriaRole | undefined\n const submenuScope = useState(() => createSubmenuScope())[0]\n const isSubmenu = parentPopup?.popupRole === 'menu' && popupRole === 'menu'\n const horizontalAlign = horizontalAlignProp ?? 'left'\n const resolvedSide =\n side ?? (isSubmenu ? (horizontalAlignProp === 'left' ? 'left' : 'right') : undefined)\n\n const [active, setActiveInternal] = useState(initActive)\n const [isOnTop, setIsOnTop] = useState(verticalAlign === 'top')\n\n const setActive = useCallback(\n (isActive: boolean, viaKeyboard = false, coordinateParent = true) => {\n if (isActive) {\n openedViaKeyboardRef.current = viaKeyboard\n if (coordinateParent && isSubmenu) {\n parentPopup.submenuScope.requestOpen({\n id: contentId,\n delay: false,\n viaKeyboard,\n })\n return\n }\n onToggleOpen?.(true)\n } else {\n onToggleClose?.()\n submenuScope.closeActiveBranch()\n parentPopup?.submenuScope.release(contentId)\n }\n setActiveInternal(isActive)\n },\n [contentId, isSubmenu, onToggleClose, onToggleOpen, parentPopup, submenuScope],\n )\n\n const closePopup = useCallback(\n ({ restoreFocus = true }: { restoreFocus?: boolean } = {}) => {\n const trigger = triggerRef.current?.querySelector<HTMLElement>('button, [tabindex=\"0\"]')\n\n setActive(false)\n if (restoreFocus) {\n requestAnimationFrame(() => trigger?.focus())\n }\n },\n [setActive],\n )\n const close = useCallback(() => closePopup(), [closePopup])\n const closePopupChain = useCallback(\n (options: { restoreFocus?: boolean } = {}) => {\n if (parentPopup) {\n closePopup({ restoreFocus: false })\n parentPopup.closePopupChain(options)\n return\n }\n\n closePopup(options)\n },\n [closePopup, parentPopup],\n )\n\n const openFromParent = useCallback(\n (viaKeyboard: boolean) => setActive(true, viaKeyboard, false),\n [setActive],\n )\n\n useEffect(() => {\n if (!isSubmenu) {\n return\n }\n\n return parentPopup.submenuScope.register({\n id: contentId,\n closeBranch: () => closePopup({ restoreFocus: false }),\n open: openFromParent,\n })\n }, [closePopup, contentId, isSubmenu, openFromParent, parentPopup])\n\n const pointerIntent = useSubmenuPointerIntent({\n contentRef: popupRef,\n enabled: isSubmenu && hoverSubmenu,\n onClose: () => setActive(false),\n onOpen: () =>\n parentPopup?.submenuScope.requestOpen({\n id: contentId,\n delay: Boolean(parentPopup.submenuScope.activeChildId),\n }),\n })\n\n // /////////////////////////////////////\n // Position Calculation\n //\n // Calculates and applies popup position relative to trigger.\n // Always checks viewport bounds (for flipping), but only updates\n // styles if the calculated position differs from current position.\n // /////////////////////////////////////\n\n const updatePosition = useEffectEvent(() => {\n const trigger = triggerRef.current\n const popup = popupRef.current\n if (!trigger || !popup) {\n return\n }\n\n const triggerRect = trigger.getBoundingClientRect()\n const popupRect = popup.getBoundingClientRect()\n\n // Gap between the popup and the trigger/viewport edges (in pixels)\n const offset = 8\n // Additional gap used in side mode so the child popup has breathing room from its parent\n const sideOffset = 4\n\n let top: number\n let left: number\n let caretLeft: number\n\n if (resolvedSide) {\n // /////////////////////////////////////\n // Side Positioning\n // Places the popup to the left or right of the parent popup (not just the trigger),\n // top-aligned with the trigger. Flips to the opposite side if there is not enough\n // viewport space.\n // /////////////////////////////////////\n\n const scrollContainer = popup.querySelector<HTMLElement>(\n `:scope > .${baseClass}__scroll-container`,\n )\n const popupPaddingTop = scrollContainer\n ? Number.parseFloat(window.getComputedStyle(scrollContainer).paddingTop) || 0\n : 0\n\n // Align the first menu item with the trigger by accounting for the popup's top padding.\n top = triggerRect.top - popupPaddingTop\n const maxTop = window.innerHeight - popupRect.height - offset\n top = Math.max(offset, Math.min(top, maxTop))\n\n // Use the parent popup's bounding rect as the reference for left/right positioning\n // so the child appears 4px from the parent popup edge, not just the trigger button.\n const anchorRect = parentPopup?.popupRef.current\n ? parentPopup.popupRef.current.getBoundingClientRect()\n : triggerRect\n\n if (resolvedSide === 'left') {\n left = anchorRect.left - popupRect.width - sideOffset\n if (left < offset) {\n // flip to right side\n left = anchorRect.right + sideOffset\n }\n } else {\n left = anchorRect.right + sideOffset\n if (left + popupRect.width + offset > window.innerWidth) {\n // flip to left side\n left = anchorRect.left - popupRect.width - sideOffset\n }\n }\n\n left = Math.max(\n offset,\n Math.min(left, Math.max(offset, window.innerWidth - popupRect.width - offset)),\n )\n\n // Caret not used in side mode; set a neutral value\n caretLeft = popupRect.width / 2\n\n setIsOnTop(false)\n } else {\n // /////////////////////////////////////\n // Vertical Positioning\n // Calculates the `top` position in absolute page coordinates.\n // Uses `verticalAlign` prop as the preferred direction, but flips\n // to the opposite side if there's not enough viewport space.\n // /////////////////////////////////////\n\n let onTop = verticalAlign === 'top'\n\n if (verticalAlign === 'bottom') {\n top = triggerRect.bottom + offset\n\n if (triggerRect.bottom + popupRect.height + offset > window.innerHeight) {\n // Try to flip above — only do so if there's actually enough room\n const topIfAbove = triggerRect.top - popupRect.height - offset\n if (topIfAbove >= 0) {\n top = topIfAbove\n onTop = true\n }\n // else: not enough room above either — keep below and let it overflow rather than going off-screen\n }\n } else {\n top = triggerRect.top - popupRect.height - offset\n\n if (triggerRect.top - popupRect.height - offset < 0) {\n top = triggerRect.bottom + offset\n onTop = false\n }\n }\n\n const maxTop = Math.max(offset, window.innerHeight - popupRect.height - offset)\n top = Math.max(offset, Math.min(top, maxTop))\n\n setIsOnTop(onTop)\n\n // /////////////////////////////////////\n // Horizontal Positioning\n // Calculates the `left` position based on `horizontalAlign` prop:\n // - 'left': aligns popup's left edge with trigger's left edge\n // - 'right': aligns popup's right edge with trigger's right edge\n // - 'center': centers popup horizontally relative to trigger\n // Then clamps to keep the popup within viewport bounds.\n // /////////////////////////////////////\n\n left =\n horizontalAlign === 'right'\n ? triggerRect.right - popupRect.width\n : horizontalAlign === 'center'\n ? triggerRect.left + triggerRect.width / 2 - popupRect.width / 2\n : triggerRect.left\n\n left = Math.max(offset, Math.min(left, window.innerWidth - popupRect.width - offset))\n\n // /////////////////////////////////////\n // Caret Positioning\n // Positions the caret arrow to point at the trigger's horizontal center.\n // Clamps between 12px from edges to prevent caret from overflowing the popup.\n // /////////////////////////////////////\n\n const triggerCenter = triggerRect.left + triggerRect.width / 2\n caretLeft = Math.max(12, Math.min(triggerCenter - left, popupRect.width - 12))\n }\n\n // /////////////////////////////////////\n // Apply Styles (only if changed)\n // Compares calculated position with current styles to avoid unnecessary\n // DOM updates during scroll. This prevents visual lag by relying on the absolute\n // positioning where possible (popup slightly lags behind when scrolling really fast),\n // while still allowing position changes when needed (e.g., sticky parent, viewport flip).\n // Values are rounded to match browser's CSS precision and avoid false updates.\n // /////////////////////////////////////\n\n const newTop = `${Math.round(top)}px`\n const newLeft = `${Math.round(left)}px`\n const newCaretLeft = `${Math.round(caretLeft)}px`\n const newPosition = 'fixed'\n\n if (popup.style.position !== newPosition) {\n popup.style.position = newPosition\n }\n if (popup.style.top !== newTop) {\n popup.style.top = newTop\n }\n if (popup.style.left !== newLeft) {\n popup.style.left = newLeft\n }\n if (popup.style.getPropertyValue('--caret-left') !== newCaretLeft) {\n popup.style.setProperty('--caret-left', newCaretLeft)\n }\n })\n\n // /////////////////////////////////////\n // Click Outside Handler\n // Closes popup when clicking outside both the popup and trigger.\n // Distinguishes between parent and child popups:\n // - Click in child popup: parent stays open\n // - Click in parent popup: child closes\n // /////////////////////////////////////\n\n const handleClickOutside = useEffectEvent((e: MouseEvent) => {\n const target = e.target as Node\n const isOutsidePopup = !popupRef.current?.contains(target)\n const isOutsideTrigger = !triggerRef.current?.contains(target)\n\n // Check if click is inside a popup portal\n const clickedPopupContent = (target as Element).closest?.('.popup__content')\n\n // If the clicked popup contains this popup's trigger, it's a parent popup\n // and we should close. If it doesn't contain our trigger, it's a child popup\n // and we should stay open to avoid closing parent when interacting with child.\n const isInsideChildPopup =\n clickedPopupContent && !clickedPopupContent.contains(triggerRef.current)\n\n if (isOutsidePopup && isOutsideTrigger && !isInsideChildPopup) {\n setActive(false)\n }\n })\n\n // /////////////////////////////////////\n // Keyboard Navigation\n // Handles keyboard interactions when popup is open:\n // - Escape: closes popup and returns focus to trigger\n // - Tab/Shift+Tab: closes menus; dialogs retain normal document tab order\n // - ArrowUp/ArrowDown: moves between menu items with wrapping\n // Focus is managed manually to support elements the browser might skip.\n // /////////////////////////////////////\n\n const handleKeyDown = useEffectEvent((e: KeyboardEvent) => {\n const popup = popupRef.current\n if (!popup || !active) {\n return\n }\n\n const activePopup = document.activeElement?.closest(`.${baseClass}__content`)\n if (activePopup && activePopup !== popup) {\n return\n }\n\n if (e.key === 'Escape') {\n e.preventDefault()\n e.stopPropagation()\n closePopup()\n return\n }\n\n if (e.key === 'ArrowRight' && popupRole === 'menu') {\n const trigger = (document.activeElement as HTMLElement | null)?.closest<HTMLElement>(\n `.${baseClass}__trigger-wrap`,\n )\n const nestedTrigger = trigger?.querySelector<HTMLElement>('button, [role=\"menuitem\"]')\n if (nestedTrigger) {\n e.preventDefault()\n nestedTrigger.dispatchEvent(new KeyboardEvent('keydown', { bubbles: true, key: 'Enter' }))\n return\n }\n }\n\n if (e.key === 'ArrowLeft' && parentPopup) {\n e.preventDefault()\n closePopup()\n return\n }\n\n if (e.key === 'Tab' && popupRole === 'menu') {\n if (e.shiftKey) {\n e.preventDefault()\n closePopupChain({ restoreFocus: true })\n return\n }\n\n setTimeout(closePopupChain)\n return\n }\n\n if (['ArrowDown', 'ArrowUp', 'End', 'Home'].includes(e.key)) {\n const menuItems = getMenuItems(popup)\n if (menuItems.length > 0) {\n e.preventDefault()\n\n const currentIndex = menuItems.findIndex((item) => item === document.activeElement)\n const nextIndex =\n e.key === 'Home'\n ? 0\n : e.key === 'End'\n ? menuItems.length - 1\n : e.key === 'ArrowUp'\n ? currentIndex <= 0\n ? menuItems.length - 1\n : currentIndex - 1\n : currentIndex === -1 || currentIndex === menuItems.length - 1\n ? 0\n : currentIndex + 1\n\n menuItems.forEach((item, index) =>\n item.setAttribute('tabindex', index === nextIndex ? '0' : '-1'),\n )\n menuItems[nextIndex].focus()\n return\n }\n }\n\n if (e.key === 'ArrowDown' || e.key === 'ArrowUp') {\n const focusable = Array.from(popup.querySelectorAll<HTMLElement>(TABBABLE_SELECTOR))\n if (focusable.length === 0) {\n return\n }\n\n e.preventDefault()\n\n const currentIndex = focusable.findIndex((el) => el === document.activeElement)\n const goBackward = e.key === 'ArrowUp'\n\n let nextIndex: number\n if (currentIndex === -1) {\n nextIndex = goBackward ? focusable.length - 1 : 0\n } else if (goBackward) {\n nextIndex = currentIndex === 0 ? focusable.length - 1 : currentIndex - 1\n } else {\n nextIndex = currentIndex === focusable.length - 1 ? 0 : currentIndex + 1\n }\n\n focusable[nextIndex].focus()\n }\n })\n\n // /////////////////////////////////////\n // Click Handler for Actionable Elements\n // Closes popup when buttons/links inside are clicked (includes Enter/Space activation).\n // /////////////////////////////////////\n\n const handleActionableClick = useEffectEvent((e: MouseEvent) => {\n const target = e.target as HTMLElement\n\n // Allow opting out with data-popup-prevent-close attribute on element or ancestor\n if (target.closest('[data-popup-prevent-close]')) {\n return\n }\n\n // Check if the clicked element or any ancestor is an actionable element\n const actionable = target.closest('button, a[href], [role=\"button\"], [role=\"menuitem\"]')\n if (actionable && popupRef.current?.contains(actionable)) {\n if (actionable.closest(`.${baseClass}__content`) !== popupRef.current) {\n return\n }\n // Don't close if clicking a nested popup's trigger — it will manage its own open state\n if (actionable.closest(`.${baseClass}__trigger-wrap`)) {\n return\n }\n closePopup()\n }\n })\n\n // /////////////////////////////////////\n // Effect: Setup/Teardown position and focus management\n // /////////////////////////////////////\n\n useEffect(() => {\n if (!active) {\n const popup = popupRef.current\n if (popup) {\n // Clear inline position styles so the CSS `top: -9999px` rule on\n // `.popup__hidden-content` takes effect. Without this, the inline\n // styles set during positioning would win over the CSS rule, keeping\n // portaled children (e.g. a ReactSelect menu) visually on-screen.\n popup.style.position = ''\n popup.style.top = ''\n popup.style.left = ''\n }\n return\n }\n\n const popup = popupRef.current\n if (!popup) {\n return\n }\n\n if (!popup.matches(':popover-open')) {\n popup.showPopover()\n }\n\n const menuItems = getMenuItems(popup)\n menuItems.forEach((item, index) => item.setAttribute('tabindex', index === 0 ? '0' : '-1'))\n\n // /////////////////////////////////////\n // Initial Position\n // Calculate and apply popup position.\n // getBoundingClientRect() forces synchronous layout.\n //\n // We call updatePosition() twice: once synchronously (so the popup\n // snaps to roughly the right place immediately rather than flashing\n // from -9999px) and once in a requestAnimationFrame, which fires\n // after the browser has finished laying out the newly-visible popup\n // content. The rAF call is the authoritative one — it catches cases\n // where the popup height wasn't stable yet during the first call\n // (e.g. ColumnSelection popup content rendering after hidden → visible\n // class switch), which was causing incorrect flip-to-top decisions.\n // /////////////////////////////////////\n\n updatePosition()\n const rafId = requestAnimationFrame(() => {\n updatePosition()\n })\n\n // /////////////////////////////////////\n // Focus Management\n // When opened via keyboard, autofocus the first focusable button.\n // When opened via mouse, skip autofocus to avoid unwanted highlights.\n // /////////////////////////////////////\n\n if (openedViaKeyboardRef.current) {\n // Use requestAnimationFrame to ensure DOM is ready.\n requestAnimationFrame(() => {\n const firstFocusable = menuItems[0] ?? popup.querySelector<HTMLElement>(TABBABLE_SELECTOR)\n firstFocusable?.focus()\n })\n }\n\n // /////////////////////////////////////\n // Event Listeners\n // - resize/scroll: recalculate position (only applies styles if changed)\n // - mousedown: detect clicks outside to close\n // - keydown: handle keyboard navigation\n // /////////////////////////////////////\n\n window.addEventListener('resize', updatePosition)\n window.addEventListener('scroll', updatePosition, { capture: true, passive: true })\n document.addEventListener('mousedown', handleClickOutside)\n popup.addEventListener('keydown', handleKeyDown)\n popup.addEventListener('click', handleActionableClick)\n\n return () => {\n cancelAnimationFrame(rafId)\n window.removeEventListener('resize', updatePosition)\n window.removeEventListener('scroll', updatePosition, { capture: true })\n document.removeEventListener('mousedown', handleClickOutside)\n popup.removeEventListener('keydown', handleKeyDown)\n popup.removeEventListener('click', handleActionableClick)\n if (popup.matches(':popover-open')) {\n popup.hidePopover()\n }\n }\n }, [active])\n\n useEffect(() => {\n if (forceOpen !== undefined) {\n setActive(forceOpen)\n }\n }, [forceOpen, setActive])\n\n const Trigger = (\n <PopupTrigger\n active={active}\n button={button}\n buttonAriaLabel={buttonAriaLabel}\n buttonType={buttonType}\n className={buttonClassName}\n contentId={contentId}\n disabled={disabled}\n isMenuItem={parentPopup?.popupRole === 'menu'}\n noBackground={noBackground}\n popupType={popupType}\n renderButton={renderButton}\n setActive={setActive}\n size={buttonSize}\n />\n )\n\n return (\n <div className={[baseClass, className].filter(Boolean).join(' ')} id={id}>\n <div className={`${baseClass}__trigger-wrap`} ref={triggerRef}>\n {showOnHover ? (\n <div\n className={`${baseClass}__on-hover-watch`}\n onMouseEnter={() => setActive(true)}\n onMouseLeave={() => setActive(false)}\n role=\"button\"\n tabIndex={0}\n >\n {Trigger}\n </div>\n ) : hoverSubmenu && isSubmenu ? (\n <div {...pointerIntent} className={`${baseClass}__submenu-hover-watch`}>\n {Trigger}\n </div>\n ) : (\n Trigger\n )}\n </div>\n\n <PopupContext value={{ closePopupChain, popupRef, popupRole, submenuScope }}>\n {/* The menu surface tracks pointer intent while preserving its menu semantics. */}\n {/* eslint-disable-next-line jsx-a11y/no-static-element-interactions */}\n <div\n aria-label={popupAriaLabel}\n className={\n active\n ? [\n `${baseClass}__content`,\n `${baseClass}--size-${size}`,\n resolvedSide\n ? `${baseClass}--side-${resolvedSide}`\n : isOnTop\n ? `${baseClass}--v-top`\n : `${baseClass}--v-bottom`,\n portalClassName,\n ]\n .filter(Boolean)\n .join(' ')\n : // Do not share any class names between active and disabled popups, to make sure\n // tests do not accidentally target inactive popups.\n `${baseClass}__hidden-content`\n }\n data-popup-id={id || undefined}\n data-theme={theme === 'auto' ? undefined : theme}\n id={contentId}\n onMouseEnter={pointerIntent.onMouseEnter}\n onMouseLeave={pointerIntent.onMouseLeave}\n popover=\"manual\"\n ref={popupRef}\n role={popupRole}\n >\n <div\n className={`${baseClass}__scroll-container${showScrollbar ? ` ${baseClass}__scroll-container--show-scrollbar` : ''}`}\n >\n {theme === 'auto' ? (\n <>\n {render?.({ close })}\n {children}\n </>\n ) : (\n <ThemeProvider theme={theme}>\n {render?.({ close })}\n {children}\n </ThemeProvider>\n )}\n </div>\n {caret && !resolvedSide && <div className={`${baseClass}__caret`} />}\n </div>\n </PopupContext>\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["PopupList","React","createContext","use","useCallback","useEffect","useId","useLayoutEffect","useRef","useState","useEffectEvent","useModalFocus","ThemeProvider","PopupTrigger","createSubmenuScope","useSubmenuPointerIntent","baseClass","PopupContext","TABBABLE_SELECTOR","map","s","join","MENU_ITEM_SELECTOR","POPUP_CONTENT_SELECTOR","getMenuItems","popup","Array","from","querySelectorAll","filter","item","closest","Popup","props","id","button","buttonAriaLabel","buttonClassName","buttonSize","buttonType","caret","children","className","disabled","forceOpen","horizontalAlign","horizontalAlignProp","hoverSubmenu","initActive","noBackground","onToggleClose","onToggleOpen","popupAriaLabel","popupType","portalClassName","render","renderButton","showOnHover","showScrollbar","side","size","theme","verticalAlign","popupRef","containerRef","triggerRef","registerPopup","getTrigger","current","querySelector","container","generatedContentId","contentId","openedViaKeyboardRef","parentPopup","popupRole","undefined","submenuScope","isSubmenu","resolvedSide","active","setActiveInternal","isOnTop","setIsOnTop","setActive","isActive","viaKeyboard","coordinateParent","requestOpen","delay","closeActiveBranch","release","closePopup","restoreFocus","trigger","requestAnimationFrame","focus","close","closePopupChain","options","openFromParent","register","closeBranch","open","pointerIntent","contentRef","enabled","onClose","onOpen","Boolean","activeChildId","updatePosition","triggerRect","getBoundingClientRect","popupRect","offset","sideOffset","top","left","caretLeft","scrollContainer","popupPaddingTop","Number","parseFloat","window","getComputedStyle","paddingTop","maxTop","innerHeight","height","Math","max","min","anchorRect","width","right","innerWidth","onTop","bottom","topIfAbove","triggerCenter","newTop","round","newLeft","newCaretLeft","newPosition","style","position","getPropertyValue","setProperty","handleClickOutside","e","target","isOutsidePopup","contains","isOutsideTrigger","clickedPopupContent","isInsideChildPopup","handleKeyDown","activePopup","document","activeElement","key","preventDefault","stopPropagation","nestedTrigger","dispatchEvent","KeyboardEvent","bubbles","shiftKey","setTimeout","includes","menuItems","length","currentIndex","findIndex","nextIndex","forEach","index","setAttribute","focusable","el","goBackward","handleActionableClick","actionable","matches","showPopover","rafId","firstFocusable","addEventListener","capture","passive","cancelAnimationFrame","removeEventListener","hidePopover","Trigger","_jsx","isMenuItem","_jsxs","ref","onMouseEnter","onMouseLeave","role","tabIndex","value","popover","_Fragment"],"sources":["../../../src/elements/Popup/index.tsx"],"sourcesContent":["'use client'\nimport type { AriaAttributes, AriaRole, CSSProperties } from 'react'\n\nexport * as PopupList from './PopupButtonList/index.js'\n\nimport React, {\n createContext,\n use,\n useCallback,\n useEffect,\n useId,\n useLayoutEffect,\n useRef,\n useState,\n} from 'react'\n\nimport { useEffectEvent } from '../../hooks/useEffectEvent.js'\nimport { useModalFocus } from '../../providers/ModalFocus/index.js'\nimport { ThemeProvider } from '../../providers/Theme/index.js'\nimport './index.css'\nimport { type PopupButtonRenderProps, PopupTrigger } from './PopupTrigger/index.js'\nimport { createSubmenuScope, type SubmenuScope } from './SubmenuScope.js'\nimport { useSubmenuPointerIntent } from './useSubmenuPointerIntent.js'\n\nconst baseClass = 'popup'\n\ntype PopupContextValue = {\n closePopupChain: (options?: { restoreFocus?: boolean }) => void\n popupRef: React.RefObject<HTMLDivElement | null>\n popupRole?: AriaRole\n submenuScope: SubmenuScope\n}\n\nconst PopupContext = createContext<null | PopupContextValue>(null)\n\n/**\n * Selector for all elements the browser considers tabbable.\n */\nconst TABBABLE_SELECTOR = [\n 'a[href]',\n 'button:not(:disabled)',\n 'input:not(:disabled):not([type=\"hidden\"])',\n 'select:not(:disabled)',\n 'textarea:not(:disabled)',\n '[tabindex]',\n '[contenteditable]:not([contenteditable=\"false\"])',\n 'audio[controls]',\n 'video[controls]',\n 'summary',\n]\n .map((s) => `${s}:not([tabindex=\"-1\"])`)\n .join(', ')\n\nconst MENU_ITEM_SELECTOR = '[role=\"menuitem\"], [role=\"menuitemcheckbox\"], [role=\"menuitemradio\"]'\nconst POPUP_CONTENT_SELECTOR = `.${baseClass}__content, .${baseClass}__hidden-content`\n\nconst getMenuItems = (popup: HTMLElement): HTMLElement[] =>\n Array.from(popup.querySelectorAll<HTMLElement>(MENU_ITEM_SELECTOR)).filter(\n (item) => item.closest(POPUP_CONTENT_SELECTOR) === popup,\n )\n\nexport type PopupProps = {\n backgroundColor?: CSSProperties['backgroundColor']\n boundingRef?: React.RefObject<HTMLElement>\n button?: React.ReactNode\n buttonAriaLabel?: string\n buttonClassName?: string\n buttonSize?: 'large' | 'medium'\n buttonType?: 'custom' | 'default'\n caret?: boolean\n children?: React.ReactNode\n className?: string\n disabled?: boolean\n forceOpen?: boolean\n /**\n * Preferred horizontal alignment of the popup, if there is enough space available.\n * Nested menu popups use 'left' and 'right' as their preferred side instead.\n * When omitted, nested menu popups prefer the right side.\n *\n * @default 'left'\n */\n horizontalAlign?: 'center' | 'left' | 'right'\n hoverSubmenu?: boolean\n id?: string\n initActive?: boolean\n noBackground?: boolean\n onToggleClose?: () => void\n onToggleOpen?: (active: boolean) => void\n popupAriaLabel?: string\n popupType?: AriaAttributes['aria-haspopup']\n portalClassName?: string\n render?: (args: { close: () => void }) => React.ReactNode\n /**\n * Render prop for custom trigger button. Receives onClick/onKeyDown/aria props.\n * When provided, `button` and `buttonType` are ignored.\n */\n renderButton?: (props: PopupButtonRenderProps) => React.ReactNode\n showOnHover?: boolean\n /**\n * By default, the scrollbar is hidden. If you want to show it, set this to true.\n * In both cases, the container is still scrollable.\n *\n * @default false\n */\n showScrollbar?: boolean\n /**\n * Position the popup to the side of the trigger instead of above/below.\n * The popup's top edge aligns with the trigger's top edge (with viewport clamping).\n * Automatically flips to the opposite side if there is not enough space.\n * When set, `verticalAlign`, `horizontalAlign`, and the caret are ignored.\n */\n side?: 'left' | 'right'\n size?: 'fit-content' | 'large' | 'small'\n /**\n * Theme for the popup content. Defaults to 'dark'.\n * Set to 'auto' to inherit the current theme.\n *\n * @default 'dark'\n */\n theme?: 'auto' | 'dark' | 'light'\n /**\n * Preferred vertical alignment of the popup (position below or above the trigger),\n * if there is enough space available.\n *\n * If the popup is too close to the edge of the viewport, it will flip to the opposite side\n * regardless of the preferred vertical alignment.\n *\n * @default 'bottom'\n */\n verticalAlign?: 'bottom' | 'top'\n}\n\n/**\n * Component that renders a popup, as well as a button that triggers the popup.\n *\n * The popup is rendered next to its trigger in the DOM and positioned above / below it,\n * depending on the verticalAlign prop and the space available.\n */\nexport const Popup: React.FC<PopupProps> = (props) => {\n const {\n id,\n button,\n buttonAriaLabel,\n buttonClassName,\n buttonSize,\n buttonType = 'default',\n caret = true,\n children,\n className,\n disabled,\n forceOpen,\n horizontalAlign: horizontalAlignProp,\n hoverSubmenu = false,\n initActive = false,\n noBackground,\n onToggleClose,\n onToggleOpen,\n popupAriaLabel,\n popupType,\n portalClassName,\n render,\n renderButton,\n showOnHover = false,\n showScrollbar = false,\n side,\n size = 'fit-content',\n theme = 'dark',\n verticalAlign = 'bottom',\n } = props\n\n const popupRef = useRef<HTMLDivElement>(null)\n const containerRef = useRef<HTMLDivElement>(null)\n const triggerRef = useRef<HTMLDivElement>(null)\n const { registerPopup } = useModalFocus()\n const getTrigger = useCallback(\n () => triggerRef.current?.querySelector<HTMLElement>('button, [tabindex=\"0\"]') ?? null,\n [],\n )\n\n useLayoutEffect(() => {\n const container = containerRef.current\n\n if (container) {\n return registerPopup({ container, getTrigger })\n }\n }, [getTrigger, registerPopup])\n const generatedContentId = useId()\n const contentId = `${id || generatedContentId}-content`\n\n /**\n * Keeps track of whether the popup was opened via keyboard.\n * This is used to determine whether to autofocus the first element in the popup.\n * If the popup was opened via mouse, we do not want to autofocus the first element.\n */\n const openedViaKeyboardRef = useRef(false)\n\n const parentPopup = use(PopupContext)\n const popupRole = (popupType === true ? 'menu' : popupType || undefined) as AriaRole | undefined\n const submenuScope = useState(() => createSubmenuScope())[0]\n const isSubmenu = parentPopup?.popupRole === 'menu' && popupRole === 'menu'\n const horizontalAlign = horizontalAlignProp ?? 'left'\n const resolvedSide =\n side ?? (isSubmenu ? (horizontalAlignProp === 'left' ? 'left' : 'right') : undefined)\n\n const [active, setActiveInternal] = useState(initActive)\n const [isOnTop, setIsOnTop] = useState(verticalAlign === 'top')\n\n const setActive = useCallback(\n (isActive: boolean, viaKeyboard = false, coordinateParent = true) => {\n if (isActive) {\n openedViaKeyboardRef.current = viaKeyboard\n if (coordinateParent && isSubmenu) {\n parentPopup.submenuScope.requestOpen({\n id: contentId,\n delay: false,\n viaKeyboard,\n })\n return\n }\n onToggleOpen?.(true)\n } else {\n onToggleClose?.()\n submenuScope.closeActiveBranch()\n parentPopup?.submenuScope.release(contentId)\n }\n setActiveInternal(isActive)\n },\n [contentId, isSubmenu, onToggleClose, onToggleOpen, parentPopup, submenuScope],\n )\n\n const closePopup = useCallback(\n ({ restoreFocus = true }: { restoreFocus?: boolean } = {}) => {\n const trigger = getTrigger()\n\n setActive(false)\n if (restoreFocus) {\n requestAnimationFrame(() => trigger?.focus())\n }\n },\n [getTrigger, setActive],\n )\n const close = useCallback(() => closePopup(), [closePopup])\n const closePopupChain = useCallback(\n (options: { restoreFocus?: boolean } = {}) => {\n if (parentPopup) {\n closePopup({ restoreFocus: false })\n parentPopup.closePopupChain(options)\n return\n }\n\n closePopup(options)\n },\n [closePopup, parentPopup],\n )\n\n const openFromParent = useCallback(\n (viaKeyboard: boolean) => setActive(true, viaKeyboard, false),\n [setActive],\n )\n\n useEffect(() => {\n if (!isSubmenu) {\n return\n }\n\n return parentPopup.submenuScope.register({\n id: contentId,\n closeBranch: () => closePopup({ restoreFocus: false }),\n open: openFromParent,\n })\n }, [closePopup, contentId, isSubmenu, openFromParent, parentPopup])\n\n const pointerIntent = useSubmenuPointerIntent({\n contentRef: popupRef,\n enabled: isSubmenu && hoverSubmenu,\n onClose: () => setActive(false),\n onOpen: () =>\n parentPopup?.submenuScope.requestOpen({\n id: contentId,\n delay: Boolean(parentPopup.submenuScope.activeChildId),\n }),\n })\n\n // /////////////////////////////////////\n // Position Calculation\n //\n // Calculates and applies popup position relative to trigger.\n // Always checks viewport bounds (for flipping), but only updates\n // styles if the calculated position differs from current position.\n // /////////////////////////////////////\n\n const updatePosition = useEffectEvent(() => {\n const trigger = triggerRef.current\n const popup = popupRef.current\n if (!trigger || !popup) {\n return\n }\n\n const triggerRect = trigger.getBoundingClientRect()\n const popupRect = popup.getBoundingClientRect()\n\n // Gap between the popup and the trigger/viewport edges (in pixels)\n const offset = 8\n // Additional gap used in side mode so the child popup has breathing room from its parent\n const sideOffset = 4\n\n let top: number\n let left: number\n let caretLeft: number\n\n if (resolvedSide) {\n // /////////////////////////////////////\n // Side Positioning\n // Places the popup to the left or right of the parent popup (not just the trigger),\n // top-aligned with the trigger. Flips to the opposite side if there is not enough\n // viewport space.\n // /////////////////////////////////////\n\n const scrollContainer = popup.querySelector<HTMLElement>(\n `:scope > .${baseClass}__scroll-container`,\n )\n const popupPaddingTop = scrollContainer\n ? Number.parseFloat(window.getComputedStyle(scrollContainer).paddingTop) || 0\n : 0\n\n // Align the first menu item with the trigger by accounting for the popup's top padding.\n top = triggerRect.top - popupPaddingTop\n const maxTop = window.innerHeight - popupRect.height - offset\n top = Math.max(offset, Math.min(top, maxTop))\n\n // Use the parent popup's bounding rect as the reference for left/right positioning\n // so the child appears 4px from the parent popup edge, not just the trigger button.\n const anchorRect = parentPopup?.popupRef.current\n ? parentPopup.popupRef.current.getBoundingClientRect()\n : triggerRect\n\n if (resolvedSide === 'left') {\n left = anchorRect.left - popupRect.width - sideOffset\n if (left < offset) {\n // flip to right side\n left = anchorRect.right + sideOffset\n }\n } else {\n left = anchorRect.right + sideOffset\n if (left + popupRect.width + offset > window.innerWidth) {\n // flip to left side\n left = anchorRect.left - popupRect.width - sideOffset\n }\n }\n\n left = Math.max(\n offset,\n Math.min(left, Math.max(offset, window.innerWidth - popupRect.width - offset)),\n )\n\n // Caret not used in side mode; set a neutral value\n caretLeft = popupRect.width / 2\n\n setIsOnTop(false)\n } else {\n // /////////////////////////////////////\n // Vertical Positioning\n // Calculates the `top` position in absolute page coordinates.\n // Uses `verticalAlign` prop as the preferred direction, but flips\n // to the opposite side if there's not enough viewport space.\n // /////////////////////////////////////\n\n let onTop = verticalAlign === 'top'\n\n if (verticalAlign === 'bottom') {\n top = triggerRect.bottom + offset\n\n if (triggerRect.bottom + popupRect.height + offset > window.innerHeight) {\n // Try to flip above — only do so if there's actually enough room\n const topIfAbove = triggerRect.top - popupRect.height - offset\n if (topIfAbove >= 0) {\n top = topIfAbove\n onTop = true\n }\n // else: not enough room above either — keep below and let it overflow rather than going off-screen\n }\n } else {\n top = triggerRect.top - popupRect.height - offset\n\n if (triggerRect.top - popupRect.height - offset < 0) {\n top = triggerRect.bottom + offset\n onTop = false\n }\n }\n\n const maxTop = Math.max(offset, window.innerHeight - popupRect.height - offset)\n top = Math.max(offset, Math.min(top, maxTop))\n\n setIsOnTop(onTop)\n\n // /////////////////////////////////////\n // Horizontal Positioning\n // Calculates the `left` position based on `horizontalAlign` prop:\n // - 'left': aligns popup's left edge with trigger's left edge\n // - 'right': aligns popup's right edge with trigger's right edge\n // - 'center': centers popup horizontally relative to trigger\n // Then clamps to keep the popup within viewport bounds.\n // /////////////////////////////////////\n\n left =\n horizontalAlign === 'right'\n ? triggerRect.right - popupRect.width\n : horizontalAlign === 'center'\n ? triggerRect.left + triggerRect.width / 2 - popupRect.width / 2\n : triggerRect.left\n\n left = Math.max(offset, Math.min(left, window.innerWidth - popupRect.width - offset))\n\n // /////////////////////////////////////\n // Caret Positioning\n // Positions the caret arrow to point at the trigger's horizontal center.\n // Clamps between 12px from edges to prevent caret from overflowing the popup.\n // /////////////////////////////////////\n\n const triggerCenter = triggerRect.left + triggerRect.width / 2\n caretLeft = Math.max(12, Math.min(triggerCenter - left, popupRect.width - 12))\n }\n\n // /////////////////////////////////////\n // Apply Styles (only if changed)\n // Compares calculated position with current styles to avoid unnecessary\n // DOM updates during scroll. This prevents visual lag by relying on the absolute\n // positioning where possible (popup slightly lags behind when scrolling really fast),\n // while still allowing position changes when needed (e.g., sticky parent, viewport flip).\n // Values are rounded to match browser's CSS precision and avoid false updates.\n // /////////////////////////////////////\n\n const newTop = `${Math.round(top)}px`\n const newLeft = `${Math.round(left)}px`\n const newCaretLeft = `${Math.round(caretLeft)}px`\n const newPosition = 'fixed'\n\n if (popup.style.position !== newPosition) {\n popup.style.position = newPosition\n }\n if (popup.style.top !== newTop) {\n popup.style.top = newTop\n }\n if (popup.style.left !== newLeft) {\n popup.style.left = newLeft\n }\n if (popup.style.getPropertyValue('--caret-left') !== newCaretLeft) {\n popup.style.setProperty('--caret-left', newCaretLeft)\n }\n })\n\n // /////////////////////////////////////\n // Click Outside Handler\n // Closes popup when clicking outside both the popup and trigger.\n // Distinguishes between parent and child popups:\n // - Click in child popup: parent stays open\n // - Click in parent popup: child closes\n // /////////////////////////////////////\n\n const handleClickOutside = useEffectEvent((e: MouseEvent) => {\n const target = e.target as Node\n const isOutsidePopup = !popupRef.current?.contains(target)\n const isOutsideTrigger = !triggerRef.current?.contains(target)\n\n // Check if click is inside a popup portal\n const clickedPopupContent = (target as Element).closest?.('.popup__content')\n\n // If the clicked popup contains this popup's trigger, it's a parent popup\n // and we should close. If it doesn't contain our trigger, it's a child popup\n // and we should stay open to avoid closing parent when interacting with child.\n const isInsideChildPopup =\n clickedPopupContent && !clickedPopupContent.contains(triggerRef.current)\n\n if (isOutsidePopup && isOutsideTrigger && !isInsideChildPopup) {\n setActive(false)\n }\n })\n\n // /////////////////////////////////////\n // Keyboard Navigation\n // Handles keyboard interactions when popup is open:\n // - Escape: closes popup and returns focus to trigger\n // - Tab/Shift+Tab: closes menus; dialogs retain normal document tab order\n // - ArrowUp/ArrowDown: moves between menu items with wrapping\n // Focus is managed manually to support elements the browser might skip.\n // /////////////////////////////////////\n\n const handleKeyDown = useEffectEvent((e: KeyboardEvent) => {\n const popup = popupRef.current\n if (!popup || !active) {\n return\n }\n\n const activePopup = document.activeElement?.closest(`.${baseClass}__content`)\n if (activePopup && activePopup !== popup) {\n return\n }\n\n if (e.key === 'Escape') {\n e.preventDefault()\n e.stopPropagation()\n closePopup()\n return\n }\n\n if (e.key === 'ArrowRight' && popupRole === 'menu') {\n const trigger = (document.activeElement as HTMLElement | null)?.closest<HTMLElement>(\n `.${baseClass}__trigger-wrap`,\n )\n const nestedTrigger = trigger?.querySelector<HTMLElement>('button, [role=\"menuitem\"]')\n if (nestedTrigger) {\n e.preventDefault()\n nestedTrigger.dispatchEvent(new KeyboardEvent('keydown', { bubbles: true, key: 'Enter' }))\n return\n }\n }\n\n if (e.key === 'ArrowLeft' && parentPopup) {\n e.preventDefault()\n closePopup()\n return\n }\n\n if (e.key === 'Tab' && popupRole === 'menu') {\n if (e.shiftKey) {\n e.preventDefault()\n closePopupChain({ restoreFocus: true })\n return\n }\n\n setTimeout(closePopupChain)\n return\n }\n\n if (['ArrowDown', 'ArrowUp', 'End', 'Home'].includes(e.key)) {\n const menuItems = getMenuItems(popup)\n if (menuItems.length > 0) {\n e.preventDefault()\n\n const currentIndex = menuItems.findIndex((item) => item === document.activeElement)\n const nextIndex =\n e.key === 'Home'\n ? 0\n : e.key === 'End'\n ? menuItems.length - 1\n : e.key === 'ArrowUp'\n ? currentIndex <= 0\n ? menuItems.length - 1\n : currentIndex - 1\n : currentIndex === -1 || currentIndex === menuItems.length - 1\n ? 0\n : currentIndex + 1\n\n menuItems.forEach((item, index) =>\n item.setAttribute('tabindex', index === nextIndex ? '0' : '-1'),\n )\n menuItems[nextIndex].focus()\n return\n }\n }\n\n if (e.key === 'ArrowDown' || e.key === 'ArrowUp') {\n const focusable = Array.from(popup.querySelectorAll<HTMLElement>(TABBABLE_SELECTOR))\n if (focusable.length === 0) {\n return\n }\n\n e.preventDefault()\n\n const currentIndex = focusable.findIndex((el) => el === document.activeElement)\n const goBackward = e.key === 'ArrowUp'\n\n let nextIndex: number\n if (currentIndex === -1) {\n nextIndex = goBackward ? focusable.length - 1 : 0\n } else if (goBackward) {\n nextIndex = currentIndex === 0 ? focusable.length - 1 : currentIndex - 1\n } else {\n nextIndex = currentIndex === focusable.length - 1 ? 0 : currentIndex + 1\n }\n\n focusable[nextIndex].focus()\n }\n })\n\n // /////////////////////////////////////\n // Click Handler for Actionable Elements\n // Closes popup when buttons/links inside are clicked (includes Enter/Space activation).\n // /////////////////////////////////////\n\n const handleActionableClick = useEffectEvent((e: MouseEvent) => {\n const target = e.target as HTMLElement\n\n // Allow opting out with data-popup-prevent-close attribute on element or ancestor\n if (target.closest('[data-popup-prevent-close]')) {\n return\n }\n\n // Check if the clicked element or any ancestor is an actionable element\n const actionable = target.closest('button, a[href], [role=\"button\"], [role=\"menuitem\"]')\n if (actionable && popupRef.current?.contains(actionable)) {\n if (actionable.closest(`.${baseClass}__content`) !== popupRef.current) {\n return\n }\n // Don't close if clicking a nested popup's trigger — it will manage its own open state\n if (actionable.closest(`.${baseClass}__trigger-wrap`)) {\n return\n }\n closePopup()\n }\n })\n\n // /////////////////////////////////////\n // Effect: Setup/Teardown position and focus management\n // /////////////////////////////////////\n\n useEffect(() => {\n if (!active) {\n const popup = popupRef.current\n if (popup) {\n // Clear inline position styles so the CSS `top: -9999px` rule on\n // `.popup__hidden-content` takes effect. Without this, the inline\n // styles set during positioning would win over the CSS rule, keeping\n // portaled children (e.g. a ReactSelect menu) visually on-screen.\n popup.style.position = ''\n popup.style.top = ''\n popup.style.left = ''\n }\n return\n }\n\n const popup = popupRef.current\n if (!popup) {\n return\n }\n\n if (!popup.matches(':popover-open')) {\n popup.showPopover()\n }\n\n const menuItems = getMenuItems(popup)\n menuItems.forEach((item, index) => item.setAttribute('tabindex', index === 0 ? '0' : '-1'))\n\n // /////////////////////////////////////\n // Initial Position\n // Calculate and apply popup position.\n // getBoundingClientRect() forces synchronous layout.\n //\n // We call updatePosition() twice: once synchronously (so the popup\n // snaps to roughly the right place immediately rather than flashing\n // from -9999px) and once in a requestAnimationFrame, which fires\n // after the browser has finished laying out the newly-visible popup\n // content. The rAF call is the authoritative one — it catches cases\n // where the popup height wasn't stable yet during the first call\n // (e.g. ColumnSelection popup content rendering after hidden → visible\n // class switch), which was causing incorrect flip-to-top decisions.\n // /////////////////////////////////////\n\n updatePosition()\n const rafId = requestAnimationFrame(() => {\n updatePosition()\n })\n\n // /////////////////////////////////////\n // Focus Management\n // When opened via keyboard, autofocus the first focusable button.\n // When opened via mouse, skip autofocus to avoid unwanted highlights.\n // /////////////////////////////////////\n\n if (openedViaKeyboardRef.current) {\n // Use requestAnimationFrame to ensure DOM is ready.\n requestAnimationFrame(() => {\n const firstFocusable = menuItems[0] ?? popup.querySelector<HTMLElement>(TABBABLE_SELECTOR)\n firstFocusable?.focus()\n })\n }\n\n // /////////////////////////////////////\n // Event Listeners\n // - resize/scroll: recalculate position (only applies styles if changed)\n // - mousedown: detect clicks outside to close\n // - keydown: handle keyboard navigation\n // /////////////////////////////////////\n\n window.addEventListener('resize', updatePosition)\n window.addEventListener('scroll', updatePosition, { capture: true, passive: true })\n document.addEventListener('mousedown', handleClickOutside)\n popup.addEventListener('keydown', handleKeyDown)\n popup.addEventListener('click', handleActionableClick)\n\n return () => {\n cancelAnimationFrame(rafId)\n window.removeEventListener('resize', updatePosition)\n window.removeEventListener('scroll', updatePosition, { capture: true })\n document.removeEventListener('mousedown', handleClickOutside)\n popup.removeEventListener('keydown', handleKeyDown)\n popup.removeEventListener('click', handleActionableClick)\n if (popup.matches(':popover-open')) {\n popup.hidePopover()\n }\n }\n }, [active])\n\n useEffect(() => {\n if (forceOpen !== undefined) {\n setActive(forceOpen)\n }\n }, [forceOpen, setActive])\n\n const Trigger = (\n <PopupTrigger\n active={active}\n button={button}\n buttonAriaLabel={buttonAriaLabel}\n buttonType={buttonType}\n className={buttonClassName}\n contentId={contentId}\n disabled={disabled}\n isMenuItem={parentPopup?.popupRole === 'menu'}\n noBackground={noBackground}\n popupType={popupType}\n renderButton={renderButton}\n setActive={setActive}\n size={buttonSize}\n />\n )\n\n return (\n <div className={[baseClass, className].filter(Boolean).join(' ')} id={id} ref={containerRef}>\n <div className={`${baseClass}__trigger-wrap`} ref={triggerRef}>\n {showOnHover ? (\n <div\n className={`${baseClass}__on-hover-watch`}\n onMouseEnter={() => setActive(true)}\n onMouseLeave={() => setActive(false)}\n role=\"button\"\n tabIndex={0}\n >\n {Trigger}\n </div>\n ) : hoverSubmenu && isSubmenu ? (\n <div {...pointerIntent} className={`${baseClass}__submenu-hover-watch`}>\n {Trigger}\n </div>\n ) : (\n Trigger\n )}\n </div>\n\n <PopupContext value={{ closePopupChain, popupRef, popupRole, submenuScope }}>\n {/* The menu surface tracks pointer intent while preserving its menu semantics. */}\n {/* eslint-disable-next-line jsx-a11y/no-static-element-interactions */}\n <div\n aria-label={popupAriaLabel}\n className={\n active\n ? [\n `${baseClass}__content`,\n `${baseClass}--size-${size}`,\n resolvedSide\n ? `${baseClass}--side-${resolvedSide}`\n : isOnTop\n ? `${baseClass}--v-top`\n : `${baseClass}--v-bottom`,\n portalClassName,\n ]\n .filter(Boolean)\n .join(' ')\n : // Do not share any class names between active and disabled popups, to make sure\n // tests do not accidentally target inactive popups.\n `${baseClass}__hidden-content`\n }\n data-popup-id={id || undefined}\n data-theme={theme === 'auto' ? undefined : theme}\n id={contentId}\n onMouseEnter={pointerIntent.onMouseEnter}\n onMouseLeave={pointerIntent.onMouseLeave}\n popover=\"manual\"\n ref={popupRef}\n role={popupRole}\n >\n <div\n className={`${baseClass}__scroll-container${showScrollbar ? ` ${baseClass}__scroll-container--show-scrollbar` : ''}`}\n >\n {theme === 'auto' ? (\n <>\n {render?.({ close })}\n {children}\n </>\n ) : (\n <ThemeProvider theme={theme}>\n {render?.({ close })}\n {children}\n </ThemeProvider>\n )}\n </div>\n {caret && !resolvedSide && <div className={`${baseClass}__caret`} />}\n </div>\n </PopupContext>\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["c","_c","React","useCallback","useState","LinkIcon","usePreviewURL","useTranslation","Button","Tooltip","PreviewButton","$","previewURL","t","copied","setCopied","hovered","setHovered","t0","event","metaKey","ctrlKey","window","open","navigator","clipboard","writeText","handleClick","t1","label","t2","t3","Symbol","for","_jsxs","onPointerEnter","onPointerLeave","style","position","children","_jsx","buttonStyle","icon","size","onClick","delay","id","show"],"sources":["../../../src/elements/PreviewButton/index.tsx"],"sourcesContent":["'use client'\nimport React, { useCallback, useState } from 'react'\n\nimport { LinkIcon } from '../../icons/Link/index.js'\nimport { usePreviewURL } from '../../providers/LivePreview/context.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { Button } from '../Button/index.js'\nimport { Tooltip } from '../Tooltip/index.js'\n\nexport function PreviewButton() {\n const { previewURL } = usePreviewURL()\n const { t } = useTranslation()\n const [copied, setCopied] = useState(false)\n const [hovered, setHovered] = useState(false)\n\n const handleClick = useCallback(\n async (event: React.MouseEvent<HTMLButtonElement>) => {\n if (!previewURL) {\n return\n }\n\n if (event.metaKey || event.ctrlKey) {\n window.open(previewURL, '_blank', 'noopener,noreferrer')\n return\n }\n\n await navigator.clipboard.writeText(previewURL)\n setCopied(true)\n },\n [previewURL],\n )\n\n if (!previewURL) {\n return null\n }\n\n const label = copied ? t('general:copied') : t('general:copy')\n\n return (\n <span\n onPointerEnter={() => {\n setHovered(true)\n setCopied(false)\n }}\n onPointerLeave={() => {\n setHovered(false)\n setCopied(false)\n }}\n style={{ position: 'relative' }}\n >\n <Button\n buttonStyle=\"ghost\"\n icon={<LinkIcon size={24} />}\n id=\"preview-button\"\n onClick={handleClick}\n />\n <Tooltip delay={0} id=\"preview-button-tooltip\" show={hovered || copied}>\n {label}\n </Tooltip>\n </span>\n )\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;;AACA,OAAOC,KAAA,IAASC,WAAW,EAAEC,QAAQ,QAAQ;AAE7C,SAASC,QAAQ,QAAQ;AACzB,SAASC,aAAa,QAAQ;AAC9B,SAASC,cAAc,QAAQ;AAC/B,SAASC,MAAM,QAAQ;AACvB,SAASC,OAAO,QAAQ;AAExB,OAAO,SAAAC,cAAA;EAAA,MAAAC,CAAA,GAAAV,EAAA;EACL;IAAAW;EAAA,IAAuBN,aAAA;EACvB;IAAAO;EAAA,IAAcN,cAAA;EACd,OAAAO,MAAA,EAAAC,SAAA,IAA4BX,QAAA,MAAS;EACrC,OAAAY,OAAA,EAAAC,UAAA,IAA8Bb,QAAA,MAAS;EAAA,IAAAc,EAAA;EAAA,IAAAP,CAAA,QAAAC,UAAA;IAGrCM,EAAA,SAAAC,KAAA;MAAA,KACOP,UAAA;QAAA;MAAA;MAAA,IAIDO,KAAA,CAAAC,OAAA,IAAiBD,KAAA,CAAAE,OAAa;QAChCC,MAAA,CAAAC,IAAA,CAAYX,UAAA,EAAY,UAAU;QAAA;MAAA;MAAA,MAI9BY,SAAA,CAAAC,SAAA,CAAAC,SAAA,CAA8Bd,UAAA;MACpCG,SAAA,KAAU;IAAA;IACZJ,CAAA,MAAAC,UAAA;IAAAD,CAAA,MAAAO,EAAA;EAAA;IAAAA,EAAA,GAAAP,CAAA;EAAA;EAbF,MAAAgB,WAAA,GAAoBT,EAcN;EAAA,KAGTN,UAAA;IAAA;EAAA;EAAA,IAAAgB,EAAA;EAAA,IAAAjB,CAAA,QAAAG,MAAA,IAAAH,CAAA,QAAAgB,WAAA,IAAAhB,CAAA,QAAAK,OAAA,IAAAL,CAAA,QAAAE,CAAA;IAIL,MAAAgB,KAAA,GAAcf,MAAA,GAASD,CAAA,CAAE,oBAAoBA,CAAA,CAAE;IAAA,IAAAiB,EAAA;IAAA,IAAAC,EAAA;IAAA,IAAApB,CAAA,QAAAqB,MAAA,CAAAC,GAAA;MAI3BH,EAAA,GAAAA,CAAA;QACdb,UAAA,KAAW;QACXF,SAAA,MAAU;MAAA;MAEIgB,EAAA,GAAAA,CAAA;QACdd,UAAA,MAAW;QACXF,SAAA,MAAU;MAAA;MACZJ,CAAA,MAAAmB,EAAA;MAAAnB,CAAA,MAAAoB,EAAA;IAAA;MAAAD,EAAA,GAAAnB,CAAA;MAAAoB,EAAA,GAAApB,CAAA;IAAA;IARFiB,EAAA,GAAAM,KAAA,CAAC;MAAAC,cAAA,EACiBL,EAGhB;MAAAM,cAAA,EACgBL,EAGhB;MAAAM,KAAA;QAAAC,QAAA,EACmB;MAAA;MAAAC,QAAA,GAEnBC,IAAA,CAAAhC,MAAA;QAAAiC,WAAA,EACc;QAAAC,IAAA,EACNF,IAAA,CAAAnC,QAAA;UAAAsC,IAAA;QAAA,C;YACH;QAAAC,OAAA,EACMjB;MAAA,C,GAEXa,IAAA,CAAA/B,OAAA;QAAAoC,KAAA;QAAAC,EAAA,EAAsB;QAAAC,IAAA,EAA+B/B,OAAA,IAAWF,MAAA;QAAAyB,QAAA,EAC7DV;MAAA,C;;;;;;;;;;SAlBLD,E","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["c","_c","React","useCallback","useState","LinkIcon","usePreviewURL","useTranslation","Button","Tooltip","PreviewButton","$","previewURL","t","copied","setCopied","hovered","setHovered","t0","event","metaKey","ctrlKey","window","open","navigator","clipboard","writeText","handleClick","t1","label","t2","t3","Symbol","for","_jsxs","onPointerEnter","onPointerLeave","style","position","children","_jsx","buttonStyle","icon","size","onClick","delay","id","show"],"sources":["../../../src/elements/PreviewButton/index.tsx"],"sourcesContent":["'use client'\nimport React, { useCallback, useState } from 'react'\n\nimport { LinkIcon } from '../../icons/Link/index.js'\nimport { usePreviewURL } from '../../providers/LivePreview/context.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { Button } from '../Button/index.js'\nimport { Tooltip } from '../Tooltip/index.js'\n\nexport function PreviewButton() {\n const { previewURL } = usePreviewURL()\n const { t } = useTranslation()\n const [copied, setCopied] = useState(false)\n const [hovered, setHovered] = useState(false)\n\n const handleClick = useCallback(\n async (event: React.MouseEvent<HTMLButtonElement>) => {\n if (!previewURL) {\n return\n }\n\n if (event.metaKey || event.ctrlKey) {\n window.open(previewURL, '_blank', 'noopener,noreferrer')\n return\n }\n\n await navigator.clipboard.writeText(previewURL)\n setCopied(true)\n },\n [previewURL],\n )\n\n if (!previewURL) {\n return null\n }\n\n const label = copied ? t('general:copied') : t('general:copy')\n\n return (\n <span\n onPointerEnter={() => {\n setHovered(true)\n setCopied(false)\n }}\n onPointerLeave={() => {\n setHovered(false)\n setCopied(false)\n }}\n style={{ position: 'relative' }}\n >\n <Button\n buttonStyle=\"ghost\"\n icon={<LinkIcon size={24} />}\n id=\"preview-button\"\n onClick={handleClick}\n />\n <Tooltip delay={0} id=\"preview-button-tooltip\" show={hovered || copied}>\n {label}\n </Tooltip>\n </span>\n )\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;;AACA,OAAOC,KAAA,IAASC,WAAW,EAAEC,QAAQ,QAAQ;AAE7C,SAASC,QAAQ,QAAQ;AACzB,SAASC,aAAa,QAAQ;AAC9B,SAASC,cAAc,QAAQ;AAC/B,SAASC,MAAM,QAAQ;AACvB,SAASC,OAAO,QAAQ;AAExB,OAAO,SAAAC,cAAA;EAAA,MAAAC,CAAA,GAAAV,EAAA;EACL;IAAAW;EAAA,IAAuBN,aAAA;EACvB;IAAAO;EAAA,IAAcN,cAAA;EACd,OAAAO,MAAA,EAAAC,SAAA,IAA4BX,QAAA,CAAS;EACrC,OAAAY,OAAA,EAAAC,UAAA,IAA8Bb,QAAA,CAAS;EAAA,IAAAc,EAAA;EAAA,IAAAP,CAAA,QAAAC,UAAA;IAGrCM,EAAA,SAAAC,KAAA;MACE,IAAI,CAACP,UAAA;QAAA;MAAA;MAIL,IAAIO,KAAA,CAAAC,OAA8B,IAAbD,KAAA,CAAAE,OAAa;QAChCC,MAAA,CAAAC,IAAW,CAACX,UAAA,EAAY,UAAU;QAAA;MAAA;MAIpC,MAAMY,SAAA,CAAAC,SAAmB,CAAAC,SAAU,CAACd,UAAA;MACpCG,SAAA,CAAU;IAAA,CACZ;IAAAJ,CAAA,MAAAC,UAAA;IAAAD,CAAA,MAAAO,EAAA;EAAA;IAAAA,EAAA,GAAAP,CAAA;EAAA;EAbF,MAAAgB,WAAA,GAAoBT,EAcN;EAGd,IAAI,CAACN,UAAA;IAAA,OACI;EAAA;EACT,IAAAgB,EAAA;EAAA,IAAAjB,CAAA,QAAAG,MAAA,IAAAH,CAAA,QAAAgB,WAAA,IAAAhB,CAAA,QAAAK,OAAA,IAAAL,CAAA,QAAAE,CAAA;IAEA,MAAAgB,KAAA,GAAcf,MAAA,GAASD,CAAA,CAAE,gBAAsB,IAAFA,CAAA,CAAE;IAAA,IAAAiB,EAAA;IAAA,IAAAC,EAAA;IAAA,IAAApB,CAAA,QAAAqB,MAAA,CAAAC,GAAA;MAI3BH,EAAA,GAAAA,CAAA;QACdb,UAAA,CAAW;QACXF,SAAA,CAAU;MAAA,CACZ;MACgBgB,EAAA,GAAAA,CAAA;QACdd,UAAA,CAAW;QACXF,SAAA,CAAU;MAAA,CACZ;MAAAJ,CAAA,MAAAmB,EAAA;MAAAnB,CAAA,MAAAoB,EAAA;IAAA;MAAAD,EAAA,GAAAnB,CAAA;MAAAoB,EAAA,GAAApB,CAAA;IAAA;IARFiB,EAAA,GAAAM,KAAA,CAAC;MAAAC,cAAA,EACiBL,EAGhB;MAAAM,cAAA,EACgBL,EAGhB;MAAAM,KAAA,EACO;QAAAC,QAAA,EAAY;MAAW;MAAAC,QAAA,E,CAE9BC,IAAA,CAAChC,MAAA;QAAAiC,WAAA,EACa;QAAAC,IAAA,EACNF,IAAA,CAACnC,QAAA;UAAAsC,IAAA,EAAe;;YACnB;QAAAC,OAAA,EACMjB;UAEXa,IAAA,CAAC/B,OAAA;QAAAoC,KAAA,EAAe;QAAAC,EAAA,EAAM;QAAAC,IAAA,EAA+B/B,OAAW,IAAXF,MAAW;QAAAyB,QAAA,EAC7DV;;;;;;;;;;;SAlBLD,E","ignoreList":[]}