@payloadcms/ui 4.0.0-internal.cd47d20 → 4.0.0-internal.ce66a41
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.
- package/dist/css/app.css +1 -1
- package/dist/css/forms.css +0 -1
- package/dist/css/spacing.css +1 -1
- package/dist/css/typography.css +161 -55
- package/dist/elements/APIKeyInput/index.css +2 -2
- package/dist/elements/AddNewRelation/index.css +0 -4
- package/dist/elements/AddNewRelation/index.js +2 -2
- package/dist/elements/AddNewRelation/index.js.map +1 -1
- package/dist/elements/AppHeader/index.css +4 -0
- package/dist/elements/AppHeader/index.d.ts +1 -8
- package/dist/elements/AppHeader/index.d.ts.map +1 -1
- package/dist/elements/AppHeader/index.js +10 -19
- package/dist/elements/AppHeader/index.js.map +1 -1
- package/dist/elements/Banner/index.css +3 -4
- package/dist/elements/BulkUpload/ActionsBar/index.d.ts.map +1 -1
- package/dist/elements/BulkUpload/ActionsBar/index.js +12 -10
- package/dist/elements/BulkUpload/ActionsBar/index.js.map +1 -1
- package/dist/elements/BulkUpload/AddFilesView/index.css +5 -0
- package/dist/elements/BulkUpload/AddFilesView/index.d.ts.map +1 -1
- package/dist/elements/BulkUpload/AddFilesView/index.js +49 -8
- package/dist/elements/BulkUpload/AddFilesView/index.js.map +1 -1
- package/dist/elements/BulkUpload/AddingFilesView/index.d.ts.map +1 -1
- package/dist/elements/BulkUpload/AddingFilesView/index.js +25 -20
- package/dist/elements/BulkUpload/AddingFilesView/index.js.map +1 -1
- package/dist/elements/BulkUpload/EditMany/index.css +4 -5
- package/dist/elements/BulkUpload/FileSidebar/index.css +0 -1
- package/dist/elements/BulkUpload/FileSidebar/index.d.ts.map +1 -1
- package/dist/elements/BulkUpload/FileSidebar/index.js +28 -35
- package/dist/elements/BulkUpload/FileSidebar/index.js.map +1 -1
- package/dist/elements/BulkUpload/FormsManager/index.d.ts +2 -1
- package/dist/elements/BulkUpload/FormsManager/index.d.ts.map +1 -1
- package/dist/elements/BulkUpload/FormsManager/index.js +175 -60
- package/dist/elements/BulkUpload/FormsManager/index.js.map +1 -1
- package/dist/elements/BulkUpload/useUploadCollectionOptions.d.ts +6 -0
- package/dist/elements/BulkUpload/useUploadCollectionOptions.d.ts.map +1 -0
- package/dist/elements/BulkUpload/useUploadCollectionOptions.js +74 -0
- package/dist/elements/BulkUpload/useUploadCollectionOptions.js.map +1 -0
- package/dist/elements/Button/index.css +7 -1
- package/dist/elements/Button/types.d.ts +1 -1
- package/dist/elements/Button/types.d.ts.map +1 -1
- package/dist/elements/Button/types.js.map +1 -1
- package/dist/elements/Card/index.css +7 -8
- package/dist/elements/CardGrid/index.css +20 -0
- package/dist/elements/CardGrid/index.d.ts +13 -0
- package/dist/elements/CardGrid/index.d.ts.map +1 -0
- package/dist/elements/CardGrid/index.js +23 -0
- package/dist/elements/CardGrid/index.js.map +1 -0
- package/dist/elements/Chip/index.css +0 -1
- package/dist/elements/CollapseAllToggle/index.d.ts +3 -0
- package/dist/elements/CollapseAllToggle/index.d.ts.map +1 -1
- package/dist/elements/CollapseAllToggle/index.js +36 -22
- package/dist/elements/CollapseAllToggle/index.js.map +1 -1
- package/dist/elements/Collapsible/index.css +4 -1
- package/dist/elements/Collapsible/index.d.ts +2 -0
- package/dist/elements/Collapsible/index.d.ts.map +1 -1
- package/dist/elements/Collapsible/index.js +67 -46
- package/dist/elements/Collapsible/index.js.map +1 -1
- package/dist/elements/ColumnSelection/Popup.css +14 -11
- package/dist/elements/ColumnSelection/Popup.d.ts.map +1 -1
- package/dist/elements/ColumnSelection/Popup.js +22 -14
- package/dist/elements/ColumnSelection/Popup.js.map +1 -1
- package/dist/elements/CommandPalette/index.css +3 -8
- package/dist/elements/CopyLocaleData/index.d.ts.map +1 -1
- package/dist/elements/CopyLocaleData/index.js +1 -0
- package/dist/elements/CopyLocaleData/index.js.map +1 -1
- package/dist/elements/CreateDocumentButton/index.d.ts.map +1 -1
- package/dist/elements/CreateDocumentButton/index.js +56 -33
- package/dist/elements/CreateDocumentButton/index.js.map +1 -1
- package/dist/elements/DatePicker/DatePicker.d.ts.map +1 -1
- package/dist/elements/DatePicker/DatePicker.js +33 -2
- package/dist/elements/DatePicker/DatePicker.js.map +1 -1
- package/dist/elements/DatePicker/hasAmbiguousYearInput.d.ts +8 -0
- package/dist/elements/DatePicker/hasAmbiguousYearInput.d.ts.map +1 -0
- package/dist/elements/DatePicker/hasAmbiguousYearInput.js +37 -0
- package/dist/elements/DatePicker/hasAmbiguousYearInput.js.map +1 -0
- package/dist/elements/DatePicker/index.css +27 -17
- package/dist/elements/DefaultListViewTabs/index.d.ts.map +1 -1
- package/dist/elements/DefaultListViewTabs/index.js +9 -7
- package/dist/elements/DefaultListViewTabs/index.js.map +1 -1
- package/dist/elements/Dialog/DialogModal/index.d.ts.map +1 -1
- package/dist/elements/Dialog/DialogModal/index.js +40 -28
- package/dist/elements/Dialog/DialogModal/index.js.map +1 -1
- package/dist/elements/Dialog/DialogTitle/index.css +1 -1
- package/dist/elements/Dialog/index.css +1 -2
- package/dist/elements/DocumentCard/index.css +73 -0
- package/dist/elements/DocumentCard/index.d.ts +18 -0
- package/dist/elements/DocumentCard/index.d.ts.map +1 -0
- package/dist/elements/DocumentCard/index.js +182 -0
- package/dist/elements/DocumentCard/index.js.map +1 -0
- package/dist/elements/DocumentControls/index.css +1 -5
- package/dist/elements/DocumentDrawer/DrawerHeader/index.css +4 -7
- package/dist/elements/DocumentDrawer/types.d.ts +1 -1
- package/dist/elements/DocumentDrawer/types.d.ts.map +1 -1
- package/dist/elements/DocumentDrawer/types.js.map +1 -1
- package/dist/elements/DocumentFields/RequiredFieldsInfo/index.css +40 -0
- package/dist/elements/DocumentFields/RequiredFieldsInfo/index.d.ts +4 -0
- package/dist/elements/DocumentFields/RequiredFieldsInfo/index.d.ts.map +1 -0
- package/dist/elements/DocumentFields/RequiredFieldsInfo/index.js +88 -0
- package/dist/elements/DocumentFields/RequiredFieldsInfo/index.js.map +1 -0
- package/dist/elements/DocumentFields/index.d.ts.map +1 -1
- package/dist/elements/DocumentFields/index.js +2 -1
- package/dist/elements/DocumentFields/index.js.map +1 -1
- package/dist/elements/DocumentHeader/Tabs/Tab/index.d.ts.map +1 -1
- package/dist/elements/DocumentHeader/Tabs/Tab/index.js +0 -1
- package/dist/elements/DocumentHeader/Tabs/Tab/index.js.map +1 -1
- package/dist/elements/DocumentHeader/index.css +1 -1
- package/dist/elements/DraggableSortable/index.d.ts.map +1 -1
- package/dist/elements/DraggableSortable/index.js +13 -10
- package/dist/elements/DraggableSortable/index.js.map +1 -1
- package/dist/elements/DraggableSortable/types.d.ts +1 -0
- package/dist/elements/DraggableSortable/types.d.ts.map +1 -1
- package/dist/elements/DraggableSortable/types.js.map +1 -1
- package/dist/elements/Drawer/index.css +4 -5
- package/dist/elements/Drawer/types.d.ts +2 -2
- package/dist/elements/Drawer/types.d.ts.map +1 -1
- package/dist/elements/Drawer/types.js.map +1 -1
- package/dist/elements/Dropzone/index.d.ts +2 -1
- package/dist/elements/Dropzone/index.d.ts.map +1 -1
- package/dist/elements/Dropzone/index.js +9 -10
- package/dist/elements/Dropzone/index.js.map +1 -1
- package/dist/elements/EditMany/index.css +4 -5
- package/dist/elements/EditUpload/index.css +3 -4
- package/dist/elements/ErrorPill/index.css +0 -1
- package/dist/elements/FieldDiffContainer/index.css +0 -1
- package/dist/elements/FieldDiffLabel/index.css +4 -5
- package/dist/elements/FileDetails/DraggableFileDetails/index.d.ts +1 -1
- package/dist/elements/FileDetails/DraggableFileDetails/index.d.ts.map +1 -1
- package/dist/elements/FileDetails/DraggableFileDetails/index.js.map +1 -1
- package/dist/elements/FileDetails/FileMeta/index.d.ts +1 -1
- package/dist/elements/FileDetails/FileMeta/index.d.ts.map +1 -1
- package/dist/elements/FileDetails/FileMeta/index.js.map +1 -1
- package/dist/elements/FileDetails/StaticFileDetails/index.d.ts +1 -1
- package/dist/elements/FileDetails/StaticFileDetails/index.d.ts.map +1 -1
- package/dist/elements/FileDetails/StaticFileDetails/index.js.map +1 -1
- package/dist/elements/FileDetails/index.d.ts +1 -1
- package/dist/elements/FileDetails/index.d.ts.map +1 -1
- package/dist/elements/FileDetails/index.js.map +1 -1
- package/dist/elements/FileManager/FilePreview/index.css +2 -3
- package/dist/elements/FileManager/FilePreview/index.js +4 -4
- package/dist/elements/FileManager/FilePreview/index.js.map +1 -1
- package/dist/elements/FileManager/FileToolbar/index.css +2 -3
- package/dist/elements/FileManager/index.css +0 -1
- package/dist/elements/FileManager/index.d.ts.map +1 -1
- package/dist/elements/FileManager/index.js +197 -177
- package/dist/elements/FileManager/index.js.map +1 -1
- package/dist/elements/FormHeader/index.css +0 -2
- package/dist/elements/GroupBy/Popup.css +3 -6
- package/dist/elements/HTMLDiff/index.css +0 -1
- package/dist/elements/HTMLDiff/index.d.ts +3 -1
- package/dist/elements/HTMLDiff/index.d.ts.map +1 -1
- package/dist/elements/HTMLDiff/index.js +9 -3
- package/dist/elements/HTMLDiff/index.js.map +1 -1
- package/dist/elements/Hierarchy/ColumnBrowser/ColumnItem/index.d.ts.map +1 -1
- package/dist/elements/Hierarchy/ColumnBrowser/ColumnItem/index.js +40 -36
- package/dist/elements/Hierarchy/ColumnBrowser/ColumnItem/index.js.map +1 -1
- package/dist/elements/Hierarchy/ColumnBrowser/index.d.ts.map +1 -1
- package/dist/elements/Hierarchy/ColumnBrowser/index.js +15 -58
- package/dist/elements/Hierarchy/ColumnBrowser/index.js.map +1 -1
- package/dist/elements/Hierarchy/DocHeaderButton/index.d.ts.map +1 -1
- package/dist/elements/Hierarchy/DocHeaderButton/index.js +29 -1
- package/dist/elements/Hierarchy/DocHeaderButton/index.js.map +1 -1
- package/dist/elements/Hierarchy/Field/getHierarchyFilterOptions.d.ts +9 -0
- package/dist/elements/Hierarchy/Field/getHierarchyFilterOptions.d.ts.map +1 -0
- package/dist/elements/Hierarchy/Field/getHierarchyFilterOptions.js +41 -0
- package/dist/elements/Hierarchy/Field/getHierarchyFilterOptions.js.map +1 -0
- package/dist/elements/Hierarchy/Field/index.client.d.ts.map +1 -1
- package/dist/elements/Hierarchy/Field/index.client.js +120 -105
- package/dist/elements/Hierarchy/Field/index.client.js.map +1 -1
- package/dist/elements/Hierarchy/Field/index.css +0 -1
- package/dist/elements/Hierarchy/Modal/index.d.ts +1 -1
- package/dist/elements/Hierarchy/Modal/index.d.ts.map +1 -1
- package/dist/elements/Hierarchy/Modal/index.js +28 -39
- package/dist/elements/Hierarchy/Modal/index.js.map +1 -1
- package/dist/elements/Hierarchy/Modal/selection.d.ts +12 -0
- package/dist/elements/Hierarchy/Modal/selection.d.ts.map +1 -0
- package/dist/elements/Hierarchy/Modal/selection.js +40 -0
- package/dist/elements/Hierarchy/Modal/selection.js.map +1 -0
- package/dist/elements/Hierarchy/Modal/types.d.ts +2 -0
- package/dist/elements/Hierarchy/Modal/types.d.ts.map +1 -1
- package/dist/elements/Hierarchy/Modal/types.js.map +1 -1
- package/dist/elements/Hierarchy/Modal/useHierarchyModal.d.ts.map +1 -1
- package/dist/elements/Hierarchy/Modal/useHierarchyModal.js +1 -1
- package/dist/elements/Hierarchy/Modal/useHierarchyModal.js.map +1 -1
- package/dist/elements/Hierarchy/MoveMany/index.d.ts +3 -1
- package/dist/elements/Hierarchy/MoveMany/index.d.ts.map +1 -1
- package/dist/elements/Hierarchy/MoveMany/index.js +17 -8
- package/dist/elements/Hierarchy/MoveMany/index.js.map +1 -1
- package/dist/elements/Hierarchy/Search/index.d.ts.map +1 -1
- package/dist/elements/Hierarchy/Search/index.js +11 -0
- package/dist/elements/Hierarchy/Search/index.js.map +1 -1
- package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.d.ts.map +1 -1
- package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.js +7 -1
- package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.js.map +1 -1
- package/dist/elements/Hierarchy/Tree/TreeFocusContext.d.ts +2 -1
- package/dist/elements/Hierarchy/Tree/TreeFocusContext.d.ts.map +1 -1
- package/dist/elements/Hierarchy/Tree/TreeFocusContext.js +30 -28
- package/dist/elements/Hierarchy/Tree/TreeFocusContext.js.map +1 -1
- package/dist/elements/Hierarchy/Tree/TreeNode/index.d.ts.map +1 -1
- package/dist/elements/Hierarchy/Tree/TreeNode/index.js +6 -2
- package/dist/elements/Hierarchy/Tree/TreeNode/index.js.map +1 -1
- package/dist/elements/Hierarchy/Tree/index.css +3 -1
- package/dist/elements/Hierarchy/Tree/index.d.ts.map +1 -1
- package/dist/elements/Hierarchy/Tree/index.js +25 -26
- package/dist/elements/Hierarchy/Tree/index.js.map +1 -1
- package/dist/elements/HydratePreferences/index.d.ts +8 -0
- package/dist/elements/HydratePreferences/index.d.ts.map +1 -0
- package/dist/elements/HydratePreferences/index.js +34 -0
- package/dist/elements/HydratePreferences/index.js.map +1 -0
- package/dist/elements/IDLabel/index.css +5 -7
- package/dist/elements/IframeLoader/index.d.ts.map +1 -1
- package/dist/elements/IframeLoader/index.js +34 -6
- package/dist/elements/IframeLoader/index.js.map +1 -1
- package/dist/elements/ItemsDrawer/ItemSearch/index.css +0 -1
- package/dist/elements/ItemsDrawer/index.d.ts.map +1 -1
- package/dist/elements/ItemsDrawer/index.js +23 -1
- package/dist/elements/ItemsDrawer/index.js.map +1 -1
- package/dist/elements/LLMInstructionsCell/index.css +11 -0
- package/dist/elements/LLMInstructionsCell/index.d.ts +5 -0
- package/dist/elements/LLMInstructionsCell/index.d.ts.map +1 -0
- package/dist/elements/LLMInstructionsCell/index.js +24 -0
- package/dist/elements/LLMInstructionsCell/index.js.map +1 -0
- package/dist/elements/LLMInstructionsDescription/index.css +79 -0
- package/dist/elements/LLMInstructionsDescription/index.d.ts +6 -0
- package/dist/elements/LLMInstructionsDescription/index.d.ts.map +1 -0
- package/dist/elements/LLMInstructionsDescription/index.js +40 -0
- package/dist/elements/LLMInstructionsDescription/index.js.map +1 -0
- package/dist/elements/LLMInstructionsMenuItem/index.d.ts +5 -0
- package/dist/elements/LLMInstructionsMenuItem/index.d.ts.map +1 -0
- package/dist/elements/LLMInstructionsMenuItem/index.js +46 -0
- package/dist/elements/LLMInstructionsMenuItem/index.js.map +1 -0
- package/dist/elements/LayoutToggle/index.d.ts +8 -0
- package/dist/elements/LayoutToggle/index.d.ts.map +1 -0
- package/dist/elements/LayoutToggle/index.js +56 -0
- package/dist/elements/LayoutToggle/index.js.map +1 -0
- package/dist/elements/Link/index.d.ts.map +1 -1
- package/dist/elements/Link/index.js +3 -0
- package/dist/elements/Link/index.js.map +1 -1
- package/dist/elements/ListControls/index.d.ts.map +1 -1
- package/dist/elements/ListControls/index.js +5 -2
- package/dist/elements/ListControls/index.js.map +1 -1
- package/dist/elements/ListControls/types.d.ts +1 -0
- package/dist/elements/ListControls/types.d.ts.map +1 -1
- package/dist/elements/ListControls/types.js.map +1 -1
- package/dist/elements/ListDrawer/DrawerContent.d.ts.map +1 -1
- package/dist/elements/ListDrawer/DrawerContent.js +1 -1
- package/dist/elements/ListDrawer/DrawerContent.js.map +1 -1
- package/dist/elements/ListHeader/DrawerTitleActions/ListDrawerConfirmSelectionButton.d.ts +6 -0
- package/dist/elements/ListHeader/DrawerTitleActions/ListDrawerConfirmSelectionButton.d.ts.map +1 -0
- package/dist/elements/ListHeader/DrawerTitleActions/ListDrawerConfirmSelectionButton.js +61 -0
- package/dist/elements/ListHeader/DrawerTitleActions/ListDrawerConfirmSelectionButton.js.map +1 -0
- package/dist/elements/ListHeader/DrawerTitleActions/ListDrawerCreateNewDocButton.js +1 -1
- package/dist/elements/ListHeader/DrawerTitleActions/ListDrawerCreateNewDocButton.js.map +1 -1
- package/dist/elements/ListHeader/DrawerTitleActions/index.d.ts +1 -0
- package/dist/elements/ListHeader/DrawerTitleActions/index.d.ts.map +1 -1
- package/dist/elements/ListHeader/DrawerTitleActions/index.js +1 -0
- package/dist/elements/ListHeader/DrawerTitleActions/index.js.map +1 -1
- package/dist/elements/ListHeader/index.css +4 -5
- package/dist/elements/Loading/index.d.ts.map +1 -1
- package/dist/elements/Loading/index.js +1 -0
- package/dist/elements/Loading/index.js.map +1 -1
- package/dist/elements/MiniCarousel/index.d.ts +1 -1
- package/dist/elements/MiniCarousel/index.d.ts.map +1 -1
- package/dist/elements/MiniCarousel/index.js +6 -6
- package/dist/elements/MiniCarousel/index.js.map +1 -1
- package/dist/elements/Nav/NavSidebarToggle/index.d.ts.map +1 -1
- package/dist/elements/Nav/NavSidebarToggle/index.js +29 -24
- package/dist/elements/Nav/NavSidebarToggle/index.js.map +1 -1
- package/dist/elements/Nav/NavWrapper/index.d.ts +1 -0
- package/dist/elements/Nav/NavWrapper/index.d.ts.map +1 -1
- package/dist/elements/Nav/NavWrapper/index.js +15 -13
- package/dist/elements/Nav/NavWrapper/index.js.map +1 -1
- package/dist/elements/Nav/SidebarTabs/index.client.js +1 -1
- package/dist/elements/Nav/SidebarTabs/index.client.js.map +1 -1
- package/dist/elements/Nav/SidebarTabs/index.css +3 -3
- package/dist/elements/Nav/context.d.ts +1 -1
- package/dist/elements/Nav/context.d.ts.map +1 -1
- package/dist/elements/Nav/context.js +32 -11
- package/dist/elements/Nav/context.js.map +1 -1
- package/dist/elements/Nav/index.client.d.ts.map +1 -1
- package/dist/elements/Nav/index.client.js +1 -10
- package/dist/elements/Nav/index.client.js.map +1 -1
- package/dist/elements/Nav/index.css +45 -34
- package/dist/elements/Nav/index.d.ts +4 -0
- package/dist/elements/Nav/index.d.ts.map +1 -1
- package/dist/elements/Nav/index.js +15 -1
- package/dist/elements/Nav/index.js.map +1 -1
- package/dist/elements/NavGroup/index.css +32 -19
- package/dist/elements/NavGroup/index.d.ts.map +1 -1
- package/dist/elements/NavGroup/index.js +31 -28
- package/dist/elements/NavGroup/index.js.map +1 -1
- package/dist/elements/NoListResults/index.css +2 -3
- package/dist/elements/PageControls/index.css +4 -1
- package/dist/elements/PageControls/index.d.ts +1 -0
- package/dist/elements/PageControls/index.d.ts.map +1 -1
- package/dist/elements/PageControls/index.js +41 -21
- package/dist/elements/PageControls/index.js.map +1 -1
- package/dist/elements/Pagination/ClickableArrow/index.d.ts.map +1 -1
- package/dist/elements/Pagination/ClickableArrow/index.js +45 -11
- package/dist/elements/Pagination/ClickableArrow/index.js.map +1 -1
- package/dist/elements/Pagination/SimplePagination/index.css +0 -1
- package/dist/elements/Pagination/index.css +0 -2
- package/dist/elements/Pagination/index.d.ts.map +1 -1
- package/dist/elements/Pagination/index.js +32 -18
- package/dist/elements/Pagination/index.js.map +1 -1
- package/dist/elements/PerPage/index.css +0 -1
- package/dist/elements/PerPage/index.js +3 -1
- package/dist/elements/PerPage/index.js.map +1 -1
- package/dist/elements/Pill/index.css +0 -1
- package/dist/elements/Popup/PopupButtonList/SubmenuTrigger/index.css +53 -0
- package/dist/elements/Popup/PopupButtonList/SubmenuTrigger/index.d.ts +13 -0
- package/dist/elements/Popup/PopupButtonList/SubmenuTrigger/index.d.ts.map +1 -0
- package/dist/elements/Popup/PopupButtonList/SubmenuTrigger/index.js +44 -0
- package/dist/elements/Popup/PopupButtonList/SubmenuTrigger/index.js.map +1 -0
- package/dist/elements/Popup/PopupButtonList/index.css +30 -8
- package/dist/elements/Popup/PopupButtonList/index.d.ts +1 -0
- package/dist/elements/Popup/PopupButtonList/index.d.ts.map +1 -1
- package/dist/elements/Popup/PopupButtonList/index.js +1 -0
- package/dist/elements/Popup/PopupButtonList/index.js.map +1 -1
- package/dist/elements/Popup/PopupGroupLabel/index.css +0 -1
- package/dist/elements/Popup/SubmenuScope.d.ts +21 -0
- package/dist/elements/Popup/SubmenuScope.d.ts.map +1 -0
- package/dist/elements/Popup/SubmenuScope.js +89 -0
- package/dist/elements/Popup/SubmenuScope.js.map +1 -0
- package/dist/elements/Popup/index.css +5 -0
- package/dist/elements/Popup/index.d.ts +3 -0
- package/dist/elements/Popup/index.d.ts.map +1 -1
- package/dist/elements/Popup/index.js +75 -10
- package/dist/elements/Popup/index.js.map +1 -1
- package/dist/elements/Popup/useSubmenuPointerIntent.d.ts +13 -0
- package/dist/elements/Popup/useSubmenuPointerIntent.d.ts.map +1 -0
- package/dist/elements/Popup/useSubmenuPointerIntent.js +42 -0
- package/dist/elements/Popup/useSubmenuPointerIntent.js.map +1 -0
- package/dist/elements/PreviewSizes/index.d.ts +1 -1
- package/dist/elements/PreviewSizes/index.d.ts.map +1 -1
- package/dist/elements/PreviewSizes/index.js +9 -9
- package/dist/elements/PreviewSizes/index.js.map +1 -1
- package/dist/elements/QueryPresets/fields/Heading/index.css +0 -1
- package/dist/elements/ReactSelect/MultiValueLabel/index.css +0 -1
- package/dist/elements/ReactSelect/ValueContainer/index.d.ts.map +1 -1
- package/dist/elements/ReactSelect/ValueContainer/index.js +23 -1
- package/dist/elements/ReactSelect/ValueContainer/index.js.map +1 -1
- package/dist/elements/ReactSelect/index.css +5 -3
- package/dist/elements/ReactSelect/types.d.ts +3 -0
- package/dist/elements/ReactSelect/types.d.ts.map +1 -1
- package/dist/elements/ReactSelect/types.js.map +1 -1
- package/dist/elements/RenderTitle/index.css +9 -7
- package/dist/elements/Search/ListSearchFilter/index.d.ts +2 -1
- package/dist/elements/Search/ListSearchFilter/index.d.ts.map +1 -1
- package/dist/elements/Search/ListSearchFilter/index.js +33 -17
- package/dist/elements/Search/ListSearchFilter/index.js.map +1 -1
- package/dist/elements/Search/SearchInput/index.css +0 -1
- package/dist/elements/Search/SearchInput/index.d.ts +1 -0
- package/dist/elements/Search/SearchInput/index.d.ts.map +1 -1
- package/dist/elements/Search/SearchInput/index.js +23 -20
- package/dist/elements/Search/SearchInput/index.js.map +1 -1
- package/dist/elements/SegmentedControl/index.css +9 -0
- package/dist/elements/SegmentedControl/index.d.ts +20 -0
- package/dist/elements/SegmentedControl/index.d.ts.map +1 -0
- package/dist/elements/SegmentedControl/index.js +162 -0
- package/dist/elements/SegmentedControl/index.js.map +1 -0
- package/dist/elements/SelectRow/index.d.ts +1 -0
- package/dist/elements/SelectRow/index.d.ts.map +1 -1
- package/dist/elements/SelectRow/index.js +35 -27
- package/dist/elements/SelectRow/index.js.map +1 -1
- package/dist/elements/SidebarRow/index.css +43 -2
- package/dist/elements/SidebarToggle/index.css +3 -1
- package/dist/elements/SkipToContent/index.css +21 -0
- package/dist/elements/SkipToContent/index.d.ts +4 -0
- package/dist/elements/SkipToContent/index.d.ts.map +1 -0
- package/dist/elements/SkipToContent/index.js +63 -0
- package/dist/elements/SkipToContent/index.js.map +1 -0
- package/dist/elements/SortColumn/index.css +1 -2
- package/dist/elements/SortColumn/index.d.ts.map +1 -1
- package/dist/elements/SortColumn/index.js +7 -3
- package/dist/elements/SortColumn/index.js.map +1 -1
- package/dist/elements/Spinner/index.css +0 -2
- package/dist/elements/Status/index.css +3 -4
- package/dist/elements/StepNav/index.css +15 -9
- package/dist/elements/Switch/index.css +0 -1
- package/dist/elements/Switch/index.d.ts +1 -0
- package/dist/elements/Switch/index.d.ts.map +1 -1
- package/dist/elements/Switch/index.js +18 -16
- package/dist/elements/Switch/index.js.map +1 -1
- package/dist/elements/Table/DefaultCell/fields/Checkbox/index.css +0 -1
- package/dist/elements/Table/DefaultCell/fields/Code/index.css +0 -1
- package/dist/elements/Table/DefaultCell/fields/File/index.css +18 -13
- package/dist/elements/Table/DefaultCell/fields/File/index.js +1 -1
- package/dist/elements/Table/DefaultCell/fields/File/index.js.map +1 -1
- package/dist/elements/Table/DefaultCell/fields/Hierarchy/index.css +26 -7
- package/dist/elements/Table/DefaultCell/fields/Hierarchy/index.d.ts.map +1 -1
- package/dist/elements/Table/DefaultCell/fields/Hierarchy/index.js +42 -8
- package/dist/elements/Table/DefaultCell/fields/Hierarchy/index.js.map +1 -1
- package/dist/elements/Table/DefaultCell/fields/JSON/index.css +0 -1
- package/dist/elements/Table/DefaultCell/fields/Status/index.css +0 -1
- package/dist/elements/Table/GridNavigation/useGridNavigation.d.ts +8 -0
- package/dist/elements/Table/GridNavigation/useGridNavigation.d.ts.map +1 -0
- package/dist/elements/Table/GridNavigation/useGridNavigation.js +397 -0
- package/dist/elements/Table/GridNavigation/useGridNavigation.js.map +1 -0
- package/dist/elements/Table/TableIdentity.d.ts +3 -0
- package/dist/elements/Table/TableIdentity.d.ts.map +1 -1
- package/dist/elements/Table/TableIdentity.js +13 -8
- package/dist/elements/Table/TableIdentity.js.map +1 -1
- package/dist/elements/Table/index.css +23 -3
- package/dist/elements/Table/index.d.ts +2 -0
- package/dist/elements/Table/index.d.ts.map +1 -1
- package/dist/elements/Table/index.js +77 -83
- package/dist/elements/Table/index.js.map +1 -1
- package/dist/elements/TableSection/index.css +4 -5
- package/dist/elements/Tabs/index.css +1 -2
- package/dist/elements/Tabs/index.d.ts +4 -0
- package/dist/elements/Tabs/index.d.ts.map +1 -1
- package/dist/elements/Tabs/index.js +30 -1
- package/dist/elements/Tabs/index.js.map +1 -1
- package/dist/elements/ThumbnailCard/index.css +0 -1
- package/dist/elements/TimezonePicker/index.css +0 -3
- package/dist/elements/Tooltip/index.css +2 -2
- package/dist/elements/Tooltip/index.d.ts +5 -5
- package/dist/elements/Tooltip/index.d.ts.map +1 -1
- package/dist/elements/Tooltip/index.js +20 -13
- package/dist/elements/Tooltip/index.js.map +1 -1
- package/dist/elements/Upload/index.css +2 -3
- package/dist/elements/Upload/index.d.ts +1 -1
- package/dist/elements/Upload/index.d.ts.map +1 -1
- package/dist/elements/Upload/index.js +6 -6
- package/dist/elements/Upload/index.js.map +1 -1
- package/dist/elements/UserMenu/LanguageMenu/index.d.ts.map +1 -1
- package/dist/elements/UserMenu/LanguageMenu/index.js +12 -30
- package/dist/elements/UserMenu/LanguageMenu/index.js.map +1 -1
- package/dist/elements/UserMenu/SettingsMenu/index.d.ts.map +1 -1
- package/dist/elements/UserMenu/SettingsMenu/index.js +12 -30
- package/dist/elements/UserMenu/SettingsMenu/index.js.map +1 -1
- package/dist/elements/UserMenu/ThemeMenu/index.d.ts.map +1 -1
- package/dist/elements/UserMenu/ThemeMenu/index.js +12 -30
- package/dist/elements/UserMenu/ThemeMenu/index.js.map +1 -1
- package/dist/elements/UserMenu/index.css +29 -15
- package/dist/elements/UserMenu/index.d.ts +1 -0
- package/dist/elements/UserMenu/index.d.ts.map +1 -1
- package/dist/elements/UserMenu/index.js +60 -46
- package/dist/elements/UserMenu/index.js.map +1 -1
- package/dist/exports/client/CodeEditor-UKD3EPUY.js +14 -0
- package/dist/exports/client/CodeEditor-UKD3EPUY.js.map +7 -0
- package/dist/exports/client/DatePicker-BBZ3XRWP.js +14 -0
- package/dist/exports/client/DatePicker-BBZ3XRWP.js.map +7 -0
- package/dist/exports/client/chunk-6XCSN54Q.js +27 -0
- package/dist/exports/client/chunk-6XCSN54Q.js.map +7 -0
- package/dist/exports/client/chunk-AVJIZPR3.js +14 -0
- package/dist/exports/client/chunk-AVJIZPR3.js.map +7 -0
- package/dist/exports/client/chunk-USFUVW7C.js +29 -0
- package/dist/exports/client/chunk-USFUVW7C.js.map +7 -0
- package/dist/exports/client/index.d.ts +22 -2
- package/dist/exports/client/index.d.ts.map +1 -1
- package/dist/exports/client/index.js +100 -1
- package/dist/exports/client/index.js.map +4 -4
- package/dist/exports/rsc/index.d.ts +3 -0
- package/dist/exports/rsc/index.d.ts.map +1 -1
- package/dist/exports/rsc/index.js +3 -0
- package/dist/exports/rsc/index.js.map +1 -1
- package/dist/exports/shared/index.js +1 -1
- package/dist/exports/shared/index.js.map +3 -3
- package/dist/fields/Array/index.css +4 -0
- package/dist/fields/Array/index.d.ts.map +1 -1
- package/dist/fields/Array/index.js +14 -5
- package/dist/fields/Array/index.js.map +1 -1
- package/dist/fields/Blocks/SectionTitle/index.css +3 -5
- package/dist/fields/Blocks/index.css +2 -2
- package/dist/fields/Blocks/index.d.ts.map +1 -1
- package/dist/fields/Blocks/index.js +20 -11
- package/dist/fields/Blocks/index.js.map +1 -1
- package/dist/fields/Checkbox/Input.d.ts +2 -2
- package/dist/fields/Checkbox/Input.d.ts.map +1 -1
- package/dist/fields/Checkbox/Input.js +134 -152
- package/dist/fields/Checkbox/Input.js.map +1 -1
- package/dist/fields/Checkbox/index.css +189 -155
- package/dist/fields/Code/index.d.ts.map +1 -1
- package/dist/fields/Code/index.js +20 -3
- package/dist/fields/Code/index.js.map +1 -1
- package/dist/fields/Collapsible/index.d.ts.map +1 -1
- package/dist/fields/Collapsible/index.js +1 -0
- package/dist/fields/Collapsible/index.js.map +1 -1
- package/dist/fields/ConfirmPassword/index.d.ts.map +1 -1
- package/dist/fields/ConfirmPassword/index.js +45 -31
- package/dist/fields/ConfirmPassword/index.js.map +1 -1
- package/dist/fields/Email/index.d.ts.map +1 -1
- package/dist/fields/Email/index.js +11 -0
- package/dist/fields/Email/index.js.map +1 -1
- package/dist/fields/FieldError/index.css +12 -0
- package/dist/fields/FieldError/index.d.ts.map +1 -1
- package/dist/fields/FieldError/index.js +4 -1
- package/dist/fields/FieldError/index.js.map +1 -1
- package/dist/fields/FieldLabel/index.css +5 -4
- package/dist/fields/FieldLabel/index.d.ts.map +1 -1
- package/dist/fields/FieldLabel/index.js +28 -10
- package/dist/fields/FieldLabel/index.js.map +1 -1
- package/dist/fields/Group/index.css +2 -3
- package/dist/fields/JSON/index.d.ts.map +1 -1
- package/dist/fields/JSON/index.js +15 -1
- package/dist/fields/JSON/index.js.map +1 -1
- package/dist/fields/Join/index.css +3 -4
- package/dist/fields/Password/input.d.ts.map +1 -1
- package/dist/fields/Password/input.js +73 -95
- package/dist/fields/Password/input.js.map +1 -1
- package/dist/fields/Point/index.d.ts.map +1 -1
- package/dist/fields/Point/index.js +15 -2
- package/dist/fields/Point/index.js.map +1 -1
- package/dist/fields/RadioGroup/Radio/index.css +0 -1
- package/dist/fields/Relationship/Input.d.ts.map +1 -1
- package/dist/fields/Relationship/Input.js +25 -17
- package/dist/fields/Relationship/Input.js.map +1 -1
- package/dist/fields/Relationship/optionsReducer.d.ts.map +1 -1
- package/dist/fields/Relationship/optionsReducer.js +2 -0
- package/dist/fields/Relationship/optionsReducer.js.map +1 -1
- package/dist/fields/Relationship/types.d.ts +8 -0
- package/dist/fields/Relationship/types.d.ts.map +1 -1
- package/dist/fields/Relationship/types.js.map +1 -1
- package/dist/fields/Select/Input.d.ts.map +1 -1
- package/dist/fields/Select/Input.js +70 -51
- package/dist/fields/Select/Input.js.map +1 -1
- package/dist/fields/Select/index.css +7 -0
- package/dist/fields/Tabs/Tab/index.d.ts +2 -0
- package/dist/fields/Tabs/Tab/index.d.ts.map +1 -1
- package/dist/fields/Tabs/Tab/index.js +15 -9
- package/dist/fields/Tabs/Tab/index.js.map +1 -1
- package/dist/fields/Tabs/index.d.ts.map +1 -1
- package/dist/fields/Tabs/index.js +179 -116
- package/dist/fields/Tabs/index.js.map +1 -1
- package/dist/fields/Text/Input.d.ts.map +1 -1
- package/dist/fields/Text/Input.js +53 -34
- package/dist/fields/Text/Input.js.map +1 -1
- package/dist/fields/Upload/HasMany/index.js +1 -1
- package/dist/fields/Upload/HasMany/index.js.map +1 -1
- package/dist/fields/Upload/HasOne/index.js +1 -1
- package/dist/fields/Upload/HasOne/index.js.map +1 -1
- package/dist/fields/Upload/Input.d.ts.map +1 -1
- package/dist/fields/Upload/Input.js +13 -4
- package/dist/fields/Upload/Input.js.map +1 -1
- package/dist/fields/shared/useRowFocus.d.ts +5 -0
- package/dist/fields/shared/useRowFocus.d.ts.map +1 -0
- package/dist/fields/shared/useRowFocus.js +50 -0
- package/dist/fields/shared/useRowFocus.js.map +1 -0
- package/dist/forms/NullifyField/index.d.ts +10 -0
- package/dist/forms/NullifyField/index.d.ts.map +1 -1
- package/dist/forms/NullifyField/index.js +14 -4
- package/dist/forms/NullifyField/index.js.map +1 -1
- package/dist/forms/RenderFields/index.css +3 -6
- package/dist/forms/fieldSchemasToFormState/renderField.js +2 -2
- package/dist/forms/fieldSchemasToFormState/renderField.js.map +1 -1
- package/dist/graphics/Logo/index.d.ts.map +1 -1
- package/dist/graphics/Logo/index.js +2 -0
- package/dist/graphics/Logo/index.js.map +1 -1
- package/dist/icons/ImageStack/index.d.ts +3 -0
- package/dist/icons/ImageStack/index.d.ts.map +1 -0
- package/dist/icons/ImageStack/index.js +17 -0
- package/dist/icons/ImageStack/index.js.map +1 -0
- package/dist/icons/Table/index.css +1 -0
- package/dist/icons/Table/index.d.ts +7 -0
- package/dist/icons/Table/index.d.ts.map +1 -0
- package/dist/icons/Table/index.js +25 -0
- package/dist/icons/Table/index.js.map +1 -0
- package/dist/layouts/Root/DocumentRoot.d.ts +24 -0
- package/dist/layouts/Root/DocumentRoot.d.ts.map +1 -0
- package/dist/layouts/Root/DocumentRoot.js +40 -0
- package/dist/layouts/Root/DocumentRoot.js.map +1 -0
- package/dist/layouts/Root/ResolveThemeOnClient.d.ts +12 -0
- package/dist/layouts/Root/ResolveThemeOnClient.d.ts.map +1 -0
- package/dist/layouts/Root/ResolveThemeOnClient.js +35 -0
- package/dist/layouts/Root/ResolveThemeOnClient.js.map +1 -0
- package/dist/layouts/Root/RootProviders.d.ts +11 -0
- package/dist/layouts/Root/RootProviders.d.ts.map +1 -0
- package/dist/layouts/Root/RootProviders.js +164 -0
- package/dist/layouts/Root/RootProviders.js.map +1 -0
- package/dist/layouts/Root/getRootLayoutData.d.ts +29 -0
- package/dist/layouts/Root/getRootLayoutData.d.ts.map +1 -0
- package/dist/layouts/Root/getRootLayoutData.js +72 -0
- package/dist/layouts/Root/getRootLayoutData.js.map +1 -0
- package/dist/layouts/Root/index.d.ts.map +1 -1
- package/dist/layouts/Root/index.js +48 -103
- package/dist/layouts/Root/index.js.map +1 -1
- package/dist/providers/ListQuery/getSearchWithListQuery.d.ts +7 -0
- package/dist/providers/ListQuery/getSearchWithListQuery.d.ts.map +1 -0
- package/dist/providers/ListQuery/getSearchWithListQuery.js +22 -0
- package/dist/providers/ListQuery/getSearchWithListQuery.js.map +1 -0
- package/dist/providers/ListQuery/index.d.ts.map +1 -1
- package/dist/providers/ListQuery/index.js +16 -12
- package/dist/providers/ListQuery/index.js.map +1 -1
- package/dist/providers/ListQuery/types.d.ts +4 -0
- package/dist/providers/ListQuery/types.d.ts.map +1 -1
- package/dist/providers/ListQuery/types.js.map +1 -1
- package/dist/providers/Preferences/index.d.ts +7 -1
- package/dist/providers/Preferences/index.d.ts.map +1 -1
- package/dist/providers/Preferences/index.js +62 -20
- package/dist/providers/Preferences/index.js.map +1 -1
- package/dist/providers/TableColumns/buildColumnState/index.d.ts +1 -0
- package/dist/providers/TableColumns/buildColumnState/index.d.ts.map +1 -1
- package/dist/providers/TableColumns/buildColumnState/index.js +2 -0
- package/dist/providers/TableColumns/buildColumnState/index.js.map +1 -1
- package/dist/providers/TableColumns/buildColumnState/renderCell.d.ts +2 -1
- package/dist/providers/TableColumns/buildColumnState/renderCell.d.ts.map +1 -1
- package/dist/providers/TableColumns/buildColumnState/renderCell.js +12 -28
- package/dist/providers/TableColumns/buildColumnState/renderCell.js.map +1 -1
- package/dist/providers/ToastContainer/index.css +6 -7
- package/dist/providers/ToastContainer/index.d.ts.map +1 -1
- package/dist/providers/ToastContainer/index.js +15 -4
- package/dist/providers/ToastContainer/index.js.map +1 -1
- package/dist/providers/Translation/index.d.ts.map +1 -1
- package/dist/providers/Translation/index.js +11 -1
- package/dist/providers/Translation/index.js.map +1 -1
- package/dist/styles.css +163 -58
- package/dist/templates/Default/Wrapper/index.css +20 -5
- package/dist/templates/Default/Wrapper/index.d.ts.map +1 -1
- package/dist/templates/Default/Wrapper/index.js +4 -3
- package/dist/templates/Default/Wrapper/index.js.map +1 -1
- package/dist/templates/Default/index.d.ts.map +1 -1
- package/dist/templates/Default/index.js +19 -14
- package/dist/templates/Default/index.js.map +1 -1
- package/dist/utilities/filterLLMInstructionsMenuItems.d.ts +9 -0
- package/dist/utilities/filterLLMInstructionsMenuItems.d.ts.map +1 -0
- package/dist/utilities/filterLLMInstructionsMenuItems.js +37 -0
- package/dist/utilities/filterLLMInstructionsMenuItems.js.map +1 -0
- package/dist/utilities/filterOutUploadFields.js +1 -1
- package/dist/utilities/filterOutUploadFields.js.map +1 -1
- package/dist/utilities/generateFieldID.d.ts +1 -1
- package/dist/utilities/generateFieldID.d.ts.map +1 -1
- package/dist/utilities/generateFieldID.js.map +1 -1
- package/dist/utilities/getClientConfig.d.ts +5 -1
- package/dist/utilities/getClientConfig.d.ts.map +1 -1
- package/dist/utilities/getClientConfig.js +2 -1
- package/dist/utilities/getClientConfig.js.map +1 -1
- package/dist/utilities/getRequestTheme.d.ts +8 -1
- package/dist/utilities/getRequestTheme.d.ts.map +1 -1
- package/dist/utilities/getRequestTheme.js +16 -4
- package/dist/utilities/getRequestTheme.js.map +1 -1
- package/dist/utilities/hierarchyCollectionRestrictions.d.ts +15 -0
- package/dist/utilities/hierarchyCollectionRestrictions.d.ts.map +1 -0
- package/dist/utilities/hierarchyCollectionRestrictions.js +17 -0
- package/dist/utilities/hierarchyCollectionRestrictions.js.map +1 -0
- package/dist/utilities/renderTable.d.ts +2 -1
- package/dist/utilities/renderTable.d.ts.map +1 -1
- package/dist/utilities/renderTable.js +4 -0
- package/dist/utilities/renderTable.js.map +1 -1
- package/dist/views/API/index.client.d.ts.map +1 -1
- package/dist/views/API/index.client.js +19 -1
- package/dist/views/API/index.client.js.map +1 -1
- package/dist/views/API/index.css +1 -2
- package/dist/views/CreateFirstUser/index.css +0 -2
- package/dist/views/Dashboard/Default/ModularDashboard/DashboardStepNav.d.ts.map +1 -1
- package/dist/views/Dashboard/Default/ModularDashboard/DashboardStepNav.js +75 -116
- package/dist/views/Dashboard/Default/ModularDashboard/DashboardStepNav.js.map +1 -1
- package/dist/views/Dashboard/Default/ModularDashboard/WidgetContent/index.d.ts +7 -0
- package/dist/views/Dashboard/Default/ModularDashboard/WidgetContent/index.d.ts.map +1 -0
- package/dist/views/Dashboard/Default/ModularDashboard/WidgetContent/index.js +65 -0
- package/dist/views/Dashboard/Default/ModularDashboard/WidgetContent/index.js.map +1 -0
- package/dist/views/Dashboard/Default/ModularDashboard/WidgetEditControl.d.ts +2 -1
- package/dist/views/Dashboard/Default/ModularDashboard/WidgetEditControl.d.ts.map +1 -1
- package/dist/views/Dashboard/Default/ModularDashboard/WidgetEditControl.js +8 -2
- package/dist/views/Dashboard/Default/ModularDashboard/WidgetEditControl.js.map +1 -1
- package/dist/views/Dashboard/Default/ModularDashboard/index.client.d.ts.map +1 -1
- package/dist/views/Dashboard/Default/ModularDashboard/index.client.js +127 -91
- package/dist/views/Dashboard/Default/ModularDashboard/index.client.js.map +1 -1
- package/dist/views/Dashboard/Default/ModularDashboard/index.css +9 -6
- package/dist/views/Dashboard/Default/ModularDashboard/useDashboardLayout.d.ts.map +1 -1
- package/dist/views/Dashboard/Default/ModularDashboard/useDashboardLayout.js +3 -0
- package/dist/views/Dashboard/Default/ModularDashboard/useDashboardLayout.js.map +1 -1
- package/dist/views/Dashboard/Default/ModularDashboard/utils/sensors.d.ts.map +1 -1
- package/dist/views/Dashboard/Default/ModularDashboard/utils/sensors.js +2 -38
- package/dist/views/Dashboard/Default/ModularDashboard/utils/sensors.js.map +1 -1
- package/dist/views/Document/index.js +1 -1
- package/dist/views/Document/index.js.map +1 -1
- package/dist/views/Document/renderDocumentSlots.d.ts +1 -1
- package/dist/views/Document/renderDocumentSlots.d.ts.map +1 -1
- package/dist/views/Document/renderDocumentSlots.js +10 -3
- package/dist/views/Document/renderDocumentSlots.js.map +1 -1
- package/dist/views/Edit/Auth/index.css +4 -5
- package/dist/views/ForgotPassword/index.d.ts.map +1 -1
- package/dist/views/ForgotPassword/index.js +1 -3
- package/dist/views/ForgotPassword/index.js.map +1 -1
- package/dist/views/HierarchyList/DocumentListSelection/index.d.ts.map +1 -1
- package/dist/views/HierarchyList/DocumentListSelection/index.js +104 -105
- package/dist/views/HierarchyList/DocumentListSelection/index.js.map +1 -1
- package/dist/views/HierarchyList/HierarchyTable/ChildNameCell.d.ts.map +1 -1
- package/dist/views/HierarchyList/HierarchyTable/ChildNameCell.js +79 -63
- package/dist/views/HierarchyList/HierarchyTable/ChildNameCell.js.map +1 -1
- package/dist/views/HierarchyList/HierarchyTable/RelatedNameCell.d.ts.map +1 -1
- package/dist/views/HierarchyList/HierarchyTable/RelatedNameCell.js +35 -87
- package/dist/views/HierarchyList/HierarchyTable/RelatedNameCell.js.map +1 -1
- package/dist/views/HierarchyList/HierarchyTable/SlotTable.css +0 -101
- package/dist/views/HierarchyList/HierarchyTable/SlotTable.d.ts +2 -0
- package/dist/views/HierarchyList/HierarchyTable/SlotTable.d.ts.map +1 -1
- package/dist/views/HierarchyList/HierarchyTable/SlotTable.js +45 -32
- package/dist/views/HierarchyList/HierarchyTable/SlotTable.js.map +1 -1
- package/dist/views/HierarchyList/HierarchyTable/index.css +51 -41
- package/dist/views/HierarchyList/HierarchyTable/index.d.ts +3 -1
- package/dist/views/HierarchyList/HierarchyTable/index.d.ts.map +1 -1
- package/dist/views/HierarchyList/HierarchyTable/index.js +80 -6
- package/dist/views/HierarchyList/HierarchyTable/index.js.map +1 -1
- package/dist/views/HierarchyList/getHierarchyListURL.d.ts +7 -0
- package/dist/views/HierarchyList/getHierarchyListURL.d.ts.map +1 -0
- package/dist/views/HierarchyList/getHierarchyListURL.js +22 -0
- package/dist/views/HierarchyList/getHierarchyListURL.js.map +1 -0
- package/dist/views/HierarchyList/index.d.ts.map +1 -1
- package/dist/views/HierarchyList/index.js +32 -11
- package/dist/views/HierarchyList/index.js.map +1 -1
- package/dist/views/List/DocumentGrid/index.d.ts +17 -0
- package/dist/views/List/DocumentGrid/index.d.ts.map +1 -0
- package/dist/views/List/DocumentGrid/index.js +152 -0
- package/dist/views/List/DocumentGrid/index.js.map +1 -0
- package/dist/views/List/GroupedDocumentGrid/index.css +17 -0
- package/dist/views/List/GroupedDocumentGrid/index.d.ts +14 -0
- package/dist/views/List/GroupedDocumentGrid/index.d.ts.map +1 -0
- package/dist/views/List/GroupedDocumentGrid/index.js +99 -0
- package/dist/views/List/GroupedDocumentGrid/index.js.map +1 -0
- package/dist/views/List/ListHeader/index.css +4 -5
- package/dist/views/List/ListHeader/index.d.ts +1 -0
- package/dist/views/List/ListHeader/index.d.ts.map +1 -1
- package/dist/views/List/ListHeader/index.js +5 -2
- package/dist/views/List/ListHeader/index.js.map +1 -1
- package/dist/views/List/getDocumentListItemURL.d.ts +9 -0
- package/dist/views/List/getDocumentListItemURL.d.ts.map +1 -0
- package/dist/views/List/getDocumentListItemURL.js +23 -0
- package/dist/views/List/getDocumentListItemURL.js.map +1 -0
- package/dist/views/List/handleGroupBy.d.ts +6 -2
- package/dist/views/List/handleGroupBy.d.ts.map +1 -1
- package/dist/views/List/handleGroupBy.js +13 -3
- package/dist/views/List/handleGroupBy.js.map +1 -1
- package/dist/views/List/index.client.d.ts.map +1 -1
- package/dist/views/List/index.client.js +207 -129
- package/dist/views/List/index.client.js.map +1 -1
- package/dist/views/List/index.css +1 -2
- package/dist/views/List/index.d.ts.map +1 -1
- package/dist/views/List/index.js +57 -3
- package/dist/views/List/index.js.map +1 -1
- package/dist/views/List/renderListViewSlots.d.ts +3 -2
- package/dist/views/List/renderListViewSlots.d.ts.map +1 -1
- package/dist/views/List/renderListViewSlots.js +12 -4
- package/dist/views/List/renderListViewSlots.js.map +1 -1
- package/dist/views/List/resolveDocumentListItemURL.d.ts +11 -0
- package/dist/views/List/resolveDocumentListItemURL.d.ts.map +1 -0
- package/dist/views/List/resolveDocumentListItemURL.js +30 -0
- package/dist/views/List/resolveDocumentListItemURL.js.map +1 -0
- package/dist/views/NotFound/index.css +0 -2
- package/dist/views/ResetPassword/index.d.ts.map +1 -1
- package/dist/views/ResetPassword/index.js +1 -3
- package/dist/views/ResetPassword/index.js.map +1 -1
- package/dist/views/Root/getRouteData.d.ts +1 -8
- package/dist/views/Root/getRouteData.d.ts.map +1 -1
- package/dist/views/Root/getRouteData.js +3 -12
- package/dist/views/Root/getRouteData.js.map +1 -1
- package/dist/views/Unauthorized/index.css +0 -2
- package/dist/views/Unauthorized/index.d.ts.map +1 -1
- package/dist/views/Unauthorized/index.js +2 -1
- package/dist/views/Unauthorized/index.js.map +1 -1
- package/dist/views/Version/Default/index.css +7 -11
- package/dist/views/Version/RenderFieldsToDiff/DiffCollapser/index.css +0 -1
- package/dist/views/Version/RenderFieldsToDiff/fields/Checkbox/index.css +0 -1
- package/dist/views/Version/RenderFieldsToDiff/fields/Iterable/index.css +3 -4
- package/dist/views/Version/RenderFieldsToDiff/fields/Relationship/index.css +0 -1
- package/dist/views/Version/RenderFieldsToDiff/fields/Text/index.d.ts.map +1 -1
- package/dist/views/Version/RenderFieldsToDiff/fields/Text/index.js +3 -1
- package/dist/views/Version/RenderFieldsToDiff/fields/Text/index.js.map +1 -1
- package/dist/views/Version/RenderFieldsToDiff/fields/Upload/index.css +0 -1
- package/dist/views/Versions/VersionPillLabel/index.css +1 -2
- package/dist/views/Versions/index.client.d.ts.map +1 -1
- package/dist/views/Versions/index.client.js +3 -1
- package/dist/views/Versions/index.client.js.map +1 -1
- package/dist/views/Versions/index.css +1 -1
- package/dist/widgets/CollectionCards/index.client.d.ts.map +1 -1
- package/dist/widgets/CollectionCards/index.client.js +8 -6
- package/dist/widgets/CollectionCards/index.client.js.map +1 -1
- package/dist/widgets/CollectionCards/index.css +30 -38
- package/dist/widgets/CollectionCards/index.d.ts.map +1 -1
- package/dist/widgets/CollectionCards/index.js +7 -5
- package/dist/widgets/CollectionCards/index.js.map +1 -1
- package/dist/widgets/CollectionQuery/index.css +4 -6
- package/dist/widgets/RecentlyViewed/CollectionsField/index.d.ts +1 -1
- package/dist/widgets/RecentlyViewed/CollectionsField/index.js +1 -1
- package/dist/widgets/RecentlyViewed/CollectionsField/index.js.map +1 -1
- package/dist/widgets/UploadDropzone/CollectionsField/index.d.ts +4 -0
- package/dist/widgets/UploadDropzone/CollectionsField/index.d.ts.map +1 -0
- package/dist/widgets/UploadDropzone/CollectionsField/index.js +29 -0
- package/dist/widgets/UploadDropzone/CollectionsField/index.js.map +1 -0
- package/dist/widgets/UploadDropzone/index.client.d.ts +10 -0
- package/dist/widgets/UploadDropzone/index.client.d.ts.map +1 -0
- package/dist/widgets/UploadDropzone/index.client.js +78 -0
- package/dist/widgets/UploadDropzone/index.client.js.map +1 -0
- package/dist/widgets/UploadDropzone/index.css +80 -0
- package/dist/widgets/UploadDropzone/index.d.ts +12 -0
- package/dist/widgets/UploadDropzone/index.d.ts.map +1 -0
- package/dist/widgets/UploadDropzone/index.js +58 -0
- package/dist/widgets/UploadDropzone/index.js.map +1 -0
- package/dist/widgets/Welcome/getWelcomeDisplay.d.ts +7 -0
- package/dist/widgets/Welcome/getWelcomeDisplay.d.ts.map +1 -0
- package/dist/widgets/Welcome/getWelcomeDisplay.js +21 -0
- package/dist/widgets/Welcome/getWelcomeDisplay.js.map +1 -0
- package/dist/widgets/Welcome/index.css +25 -0
- package/dist/widgets/Welcome/index.d.ts +5 -0
- package/dist/widgets/Welcome/index.d.ts.map +1 -0
- package/dist/widgets/Welcome/index.js +25 -0
- package/dist/widgets/Welcome/index.js.map +1 -0
- package/dist/widgets/WidgetCard/index.css +4 -8
- package/package.json +35 -10
- package/dist/providers/Root/index.d.ts +0 -25
- package/dist/providers/Root/index.d.ts.map +0 -1
- package/dist/providers/Root/index.js +0 -156
- package/dist/providers/Root/index.js.map +0 -1
- package/dist/utilities/dateLocales.d.ts +0 -30
- package/dist/utilities/dateLocales.d.ts.map +0 -1
- package/dist/utilities/dateLocales.js +0 -57
- package/dist/utilities/dateLocales.js.map +0 -1
|
@@ -7,6 +7,8 @@ import { useEffectEvent } from '../../hooks/useEffectEvent.js';
|
|
|
7
7
|
import { ThemeProvider } from '../../providers/Theme/index.js';
|
|
8
8
|
import './index.css';
|
|
9
9
|
import { PopupTrigger } from './PopupTrigger/index.js';
|
|
10
|
+
import { createSubmenuScope } from './SubmenuScope.js';
|
|
11
|
+
import { useSubmenuPointerIntent } from './useSubmenuPointerIntent.js';
|
|
10
12
|
const baseClass = 'popup';
|
|
11
13
|
const PopupContext = /*#__PURE__*/createContext(null);
|
|
12
14
|
/**
|
|
@@ -35,7 +37,8 @@ export const Popup = props => {
|
|
|
35
37
|
className,
|
|
36
38
|
disabled,
|
|
37
39
|
forceOpen,
|
|
38
|
-
horizontalAlign
|
|
40
|
+
horizontalAlign: horizontalAlignProp,
|
|
41
|
+
hoverSubmenu = false,
|
|
39
42
|
initActive = false,
|
|
40
43
|
noBackground,
|
|
41
44
|
onToggleClose,
|
|
@@ -64,17 +67,31 @@ export const Popup = props => {
|
|
|
64
67
|
const openedViaKeyboardRef = useRef(false);
|
|
65
68
|
const parentPopup = use(PopupContext);
|
|
66
69
|
const popupRole = popupType === true ? 'menu' : popupType || undefined;
|
|
70
|
+
const submenuScope = useState(() => createSubmenuScope())[0];
|
|
71
|
+
const isSubmenu = parentPopup?.popupRole === 'menu' && popupRole === 'menu';
|
|
72
|
+
const horizontalAlign = horizontalAlignProp ?? 'left';
|
|
73
|
+
const resolvedSide = side ?? (isSubmenu ? horizontalAlignProp === 'left' ? 'left' : 'right' : undefined);
|
|
67
74
|
const [active, setActiveInternal] = useState(initActive);
|
|
68
75
|
const [isOnTop, setIsOnTop] = useState(verticalAlign === 'top');
|
|
69
|
-
const setActive = useCallback((isActive, viaKeyboard = false) => {
|
|
76
|
+
const setActive = useCallback((isActive, viaKeyboard = false, coordinateParent = true) => {
|
|
70
77
|
if (isActive) {
|
|
71
78
|
openedViaKeyboardRef.current = viaKeyboard;
|
|
79
|
+
if (coordinateParent && isSubmenu) {
|
|
80
|
+
parentPopup.submenuScope.requestOpen({
|
|
81
|
+
id: contentId,
|
|
82
|
+
delay: false,
|
|
83
|
+
viaKeyboard
|
|
84
|
+
});
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
72
87
|
onToggleOpen?.(true);
|
|
73
88
|
} else {
|
|
74
89
|
onToggleClose?.();
|
|
90
|
+
submenuScope.closeActiveBranch();
|
|
91
|
+
parentPopup?.submenuScope.release(contentId);
|
|
75
92
|
}
|
|
76
93
|
setActiveInternal(isActive);
|
|
77
|
-
}, [onToggleClose, onToggleOpen]);
|
|
94
|
+
}, [contentId, isSubmenu, onToggleClose, onToggleOpen, parentPopup, submenuScope]);
|
|
78
95
|
const closePopup = useCallback(({
|
|
79
96
|
restoreFocus = true
|
|
80
97
|
} = {}) => {
|
|
@@ -95,6 +112,28 @@ export const Popup = props => {
|
|
|
95
112
|
}
|
|
96
113
|
closePopup(options);
|
|
97
114
|
}, [closePopup, parentPopup]);
|
|
115
|
+
const openFromParent = useCallback(viaKeyboard_0 => setActive(true, viaKeyboard_0, false), [setActive]);
|
|
116
|
+
useEffect(() => {
|
|
117
|
+
if (!isSubmenu) {
|
|
118
|
+
return;
|
|
119
|
+
}
|
|
120
|
+
return parentPopup.submenuScope.register({
|
|
121
|
+
id: contentId,
|
|
122
|
+
closeBranch: () => closePopup({
|
|
123
|
+
restoreFocus: false
|
|
124
|
+
}),
|
|
125
|
+
open: openFromParent
|
|
126
|
+
});
|
|
127
|
+
}, [closePopup, contentId, isSubmenu, openFromParent, parentPopup]);
|
|
128
|
+
const pointerIntent = useSubmenuPointerIntent({
|
|
129
|
+
contentRef: popupRef,
|
|
130
|
+
enabled: isSubmenu && hoverSubmenu,
|
|
131
|
+
onClose: () => setActive(false),
|
|
132
|
+
onOpen: () => parentPopup?.submenuScope.requestOpen({
|
|
133
|
+
id: contentId,
|
|
134
|
+
delay: Boolean(parentPopup.submenuScope.activeChildId)
|
|
135
|
+
})
|
|
136
|
+
});
|
|
98
137
|
// /////////////////////////////////////
|
|
99
138
|
// Position Calculation
|
|
100
139
|
//
|
|
@@ -117,21 +156,23 @@ export const Popup = props => {
|
|
|
117
156
|
let top;
|
|
118
157
|
let left;
|
|
119
158
|
let caretLeft;
|
|
120
|
-
if (
|
|
159
|
+
if (resolvedSide) {
|
|
121
160
|
// /////////////////////////////////////
|
|
122
161
|
// Side Positioning
|
|
123
162
|
// Places the popup to the left or right of the parent popup (not just the trigger),
|
|
124
163
|
// top-aligned with the trigger. Flips to the opposite side if there is not enough
|
|
125
164
|
// viewport space.
|
|
126
165
|
// /////////////////////////////////////
|
|
127
|
-
|
|
128
|
-
|
|
166
|
+
const scrollContainer = popup.querySelector(`:scope > .${baseClass}__scroll-container`);
|
|
167
|
+
const popupPaddingTop = scrollContainer ? Number.parseFloat(window.getComputedStyle(scrollContainer).paddingTop) || 0 : 0;
|
|
168
|
+
// Align the first menu item with the trigger by accounting for the popup's top padding.
|
|
169
|
+
top = triggerRect.top - popupPaddingTop;
|
|
129
170
|
const maxTop = window.innerHeight - popupRect.height - offset;
|
|
130
171
|
top = Math.max(offset, Math.min(top, maxTop));
|
|
131
172
|
// Use the parent popup's bounding rect as the reference for left/right positioning
|
|
132
173
|
// so the child appears 4px from the parent popup edge, not just the trigger button.
|
|
133
174
|
const anchorRect = parentPopup?.popupRef.current ? parentPopup.popupRef.current.getBoundingClientRect() : triggerRect;
|
|
134
|
-
if (
|
|
175
|
+
if (resolvedSide === 'left') {
|
|
135
176
|
left = anchorRect.left - popupRect.width - sideOffset;
|
|
136
177
|
if (left < offset) {
|
|
137
178
|
// flip to right side
|
|
@@ -264,6 +305,23 @@ export const Popup = props => {
|
|
|
264
305
|
closePopup();
|
|
265
306
|
return;
|
|
266
307
|
}
|
|
308
|
+
if (e_0.key === 'ArrowRight' && popupRole === 'menu') {
|
|
309
|
+
const trigger_1 = document.activeElement?.closest(`.${baseClass}__trigger-wrap`);
|
|
310
|
+
const nestedTrigger = trigger_1?.querySelector('button, [role="menuitem"]');
|
|
311
|
+
if (nestedTrigger) {
|
|
312
|
+
e_0.preventDefault();
|
|
313
|
+
nestedTrigger.dispatchEvent(new KeyboardEvent('keydown', {
|
|
314
|
+
bubbles: true,
|
|
315
|
+
key: 'Enter'
|
|
316
|
+
}));
|
|
317
|
+
return;
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
if (e_0.key === 'ArrowLeft' && parentPopup) {
|
|
321
|
+
e_0.preventDefault();
|
|
322
|
+
closePopup();
|
|
323
|
+
return;
|
|
324
|
+
}
|
|
267
325
|
if (e_0.key === 'Tab' && popupRole === 'menu') {
|
|
268
326
|
if (e_0.shiftKey) {
|
|
269
327
|
e_0.preventDefault();
|
|
@@ -445,21 +503,28 @@ export const Popup = props => {
|
|
|
445
503
|
role: "button",
|
|
446
504
|
tabIndex: 0,
|
|
447
505
|
children: Trigger
|
|
506
|
+
}) : hoverSubmenu && isSubmenu ? /*#__PURE__*/_jsx("div", {
|
|
507
|
+
...pointerIntent,
|
|
508
|
+
className: `${baseClass}__submenu-hover-watch`,
|
|
509
|
+
children: Trigger
|
|
448
510
|
}) : Trigger
|
|
449
511
|
}), /*#__PURE__*/_jsx(PopupContext, {
|
|
450
512
|
value: {
|
|
451
513
|
closePopupChain,
|
|
452
514
|
popupRef,
|
|
453
|
-
popupRole
|
|
515
|
+
popupRole,
|
|
516
|
+
submenuScope
|
|
454
517
|
},
|
|
455
518
|
children: /*#__PURE__*/_jsxs("div", {
|
|
456
519
|
"aria-label": popupAriaLabel,
|
|
457
|
-
className: active ? [`${baseClass}__content`, `${baseClass}--size-${size}`,
|
|
520
|
+
className: active ? [`${baseClass}__content`, `${baseClass}--size-${size}`, resolvedSide ? `${baseClass}--side-${resolvedSide}` : isOnTop ? `${baseClass}--v-top` : `${baseClass}--v-bottom`, portalClassName].filter(Boolean).join(' ') :
|
|
458
521
|
// tests do not accidentally target inactive popups.
|
|
459
522
|
`${baseClass}__hidden-content`,
|
|
460
523
|
"data-popup-id": id || undefined,
|
|
461
524
|
"data-theme": theme === 'auto' ? undefined : theme,
|
|
462
525
|
id: contentId,
|
|
526
|
+
onMouseEnter: pointerIntent.onMouseEnter,
|
|
527
|
+
onMouseLeave: pointerIntent.onMouseLeave,
|
|
463
528
|
popover: "manual",
|
|
464
529
|
ref: popupRef,
|
|
465
530
|
role: popupRole,
|
|
@@ -475,7 +540,7 @@ export const Popup = props => {
|
|
|
475
540
|
close
|
|
476
541
|
}), children]
|
|
477
542
|
})
|
|
478
|
-
}), caret && !
|
|
543
|
+
}), caret && !resolvedSide && /*#__PURE__*/_jsx("div", {
|
|
479
544
|
className: `${baseClass}__caret`
|
|
480
545
|
})]
|
|
481
546
|
})
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["PopupList","React","createContext","use","useCallback","useEffect","useId","useRef","useState","useEffectEvent","ThemeProvider","PopupTrigger","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","initActive","noBackground","onToggleClose","onToggleOpen","popupAriaLabel","popupType","portalClassName","render","renderButton","showOnHover","showScrollbar","side","size","theme","verticalAlign","popupRef","triggerRef","generatedContentId","contentId","openedViaKeyboardRef","parentPopup","popupRole","undefined","active","setActiveInternal","isOnTop","setIsOnTop","setActive","isActive","viaKeyboard","current","closePopup","restoreFocus","trigger","querySelector","requestAnimationFrame","focus","close","closePopupChain","options","updatePosition","triggerRect","getBoundingClientRect","popupRect","offset","sideOffset","top","left","caretLeft","maxTop","window","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","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","Boolean","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'\n\nconst baseClass = 'popup'\n\ntype PopupContextValue = {\n closePopupChain: (options?: { restoreFocus?: boolean }) => void\n popupRef: React.RefObject<HTMLDivElement | null>\n popupRole?: AriaRole\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 *\n * @default 'left'\n */\n horizontalAlign?: 'center' | 'left' | 'right'\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 = 'left',\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\n const [active, setActiveInternal] = useState(initActive)\n const [isOnTop, setIsOnTop] = useState(verticalAlign === 'top')\n\n const setActive = useCallback(\n (isActive: boolean, viaKeyboard = false) => {\n if (isActive) {\n openedViaKeyboardRef.current = viaKeyboard\n onToggleOpen?.(true)\n } else {\n onToggleClose?.()\n }\n setActiveInternal(isActive)\n },\n [onToggleClose, onToggleOpen],\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 // /////////////////////////////////////\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 (side) {\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 // Top: align with trigger top, clamped to viewport\n top = triggerRect.top\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 (side === '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 === '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 ) : (\n Trigger\n )}\n </div>\n\n <PopupContext value={{ closePopupChain, popupRef, popupRole }}>\n <div\n aria-label={popupAriaLabel}\n className={\n active\n ? [\n `${baseClass}__content`,\n `${baseClass}--size-${size}`,\n side\n ? `${baseClass}--side-${side}`\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 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 && !side && <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","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":[]}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { MouseEvent, RefObject } from 'react';
|
|
2
|
+
type UseSubmenuPointerIntentArgs = {
|
|
3
|
+
contentRef: RefObject<HTMLElement | null>;
|
|
4
|
+
enabled: boolean;
|
|
5
|
+
onClose: () => void;
|
|
6
|
+
onOpen: () => void;
|
|
7
|
+
};
|
|
8
|
+
export declare const useSubmenuPointerIntent: ({ contentRef, enabled, onClose, onOpen, }: UseSubmenuPointerIntentArgs) => {
|
|
9
|
+
onMouseEnter: () => void;
|
|
10
|
+
onMouseLeave: (event: MouseEvent) => void;
|
|
11
|
+
};
|
|
12
|
+
export {};
|
|
13
|
+
//# sourceMappingURL=useSubmenuPointerIntent.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useSubmenuPointerIntent.d.ts","sourceRoot":"","sources":["../../../src/elements/Popup/useSubmenuPointerIntent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAIlD,KAAK,2BAA2B,GAAG;IACjC,UAAU,EAAE,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,CAAA;IACzC,OAAO,EAAE,OAAO,CAAA;IAChB,OAAO,EAAE,MAAM,IAAI,CAAA;IACnB,MAAM,EAAE,MAAM,IAAI,CAAA;CACnB,CAAA;AAED,eAAO,MAAM,uBAAuB,8CAKjC,2BAA2B;IAwC1B,YAAY;IACZ,YAAY,UAzBJ,UAAU;CA2BrB,CAAA"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { useCallback, useEffect, useRef } from 'react';
|
|
2
|
+
export const useSubmenuPointerIntent = ({
|
|
3
|
+
contentRef,
|
|
4
|
+
enabled,
|
|
5
|
+
onClose,
|
|
6
|
+
onOpen
|
|
7
|
+
}) => {
|
|
8
|
+
const closeTimer = useRef(undefined);
|
|
9
|
+
const cancelClose = useCallback(() => {
|
|
10
|
+
if (closeTimer.current) {
|
|
11
|
+
clearTimeout(closeTimer.current);
|
|
12
|
+
closeTimer.current = undefined;
|
|
13
|
+
}
|
|
14
|
+
}, []);
|
|
15
|
+
const handleEnter = useCallback(() => {
|
|
16
|
+
cancelClose();
|
|
17
|
+
onOpen();
|
|
18
|
+
}, [cancelClose, onOpen]);
|
|
19
|
+
const handleLeave = useCallback(event => {
|
|
20
|
+
const target = event.relatedTarget;
|
|
21
|
+
if (target && contentRef.current?.contains(target)) {
|
|
22
|
+
cancelClose();
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
cancelClose();
|
|
26
|
+
closeTimer.current = setTimeout(() => {
|
|
27
|
+
closeTimer.current = undefined;
|
|
28
|
+
onClose();
|
|
29
|
+
}, 250);
|
|
30
|
+
}, [cancelClose, contentRef, onClose]);
|
|
31
|
+
useEffect(() => {
|
|
32
|
+
if (!enabled) {
|
|
33
|
+
cancelClose();
|
|
34
|
+
}
|
|
35
|
+
return cancelClose;
|
|
36
|
+
}, [cancelClose, enabled]);
|
|
37
|
+
return {
|
|
38
|
+
onMouseEnter: enabled ? handleEnter : undefined,
|
|
39
|
+
onMouseLeave: enabled ? handleLeave : undefined
|
|
40
|
+
};
|
|
41
|
+
};
|
|
42
|
+
//# sourceMappingURL=useSubmenuPointerIntent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useSubmenuPointerIntent.js","names":["useCallback","useEffect","useRef","useSubmenuPointerIntent","contentRef","enabled","onClose","onOpen","closeTimer","undefined","cancelClose","current","clearTimeout","handleEnter","handleLeave","event","target","relatedTarget","contains","setTimeout","onMouseEnter","onMouseLeave"],"sources":["../../../src/elements/Popup/useSubmenuPointerIntent.ts"],"sourcesContent":["import type { MouseEvent, RefObject } from 'react'\n\nimport { useCallback, useEffect, useRef } from 'react'\n\ntype UseSubmenuPointerIntentArgs = {\n contentRef: RefObject<HTMLElement | null>\n enabled: boolean\n onClose: () => void\n onOpen: () => void\n}\n\nexport const useSubmenuPointerIntent = ({\n contentRef,\n enabled,\n onClose,\n onOpen,\n}: UseSubmenuPointerIntentArgs) => {\n const closeTimer = useRef<ReturnType<typeof setTimeout> | undefined>(undefined)\n\n const cancelClose = useCallback(() => {\n if (closeTimer.current) {\n clearTimeout(closeTimer.current)\n closeTimer.current = undefined\n }\n }, [])\n\n const handleEnter = useCallback(() => {\n cancelClose()\n onOpen()\n }, [cancelClose, onOpen])\n\n const handleLeave = useCallback(\n (event: MouseEvent) => {\n const target = event.relatedTarget as Node | null\n if (target && contentRef.current?.contains(target)) {\n cancelClose()\n return\n }\n\n cancelClose()\n closeTimer.current = setTimeout(() => {\n closeTimer.current = undefined\n onClose()\n }, 250)\n },\n [cancelClose, contentRef, onClose],\n )\n\n useEffect(() => {\n if (!enabled) {\n cancelClose()\n }\n return cancelClose\n }, [cancelClose, enabled])\n\n return {\n onMouseEnter: enabled ? handleEnter : undefined,\n onMouseLeave: enabled ? handleLeave : undefined,\n }\n}\n"],"mappings":"AAEA,SAASA,WAAW,EAAEC,SAAS,EAAEC,MAAM,QAAQ;AAS/C,OAAO,MAAMC,uBAAA,GAA0BA,CAAC;EACtCC,UAAU;EACVC,OAAO;EACPC,OAAO;EACPC;AAAM,CACsB;EAC5B,MAAMC,UAAA,GAAaN,MAAA,CAAkDO,SAAA;EAErE,MAAMC,WAAA,GAAcV,WAAA,CAAY;IAC9B,IAAIQ,UAAA,CAAWG,OAAO,EAAE;MACtBC,YAAA,CAAaJ,UAAA,CAAWG,OAAO;MAC/BH,UAAA,CAAWG,OAAO,GAAGF,SAAA;IACvB;EACF,GAAG,EAAE;EAEL,MAAMI,WAAA,GAAcb,WAAA,CAAY;IAC9BU,WAAA;IACAH,MAAA;EACF,GAAG,CAACG,WAAA,EAAaH,MAAA,CAAO;EAExB,MAAMO,WAAA,GAAcd,WAAA,CACjBe,KAAA;IACC,MAAMC,MAAA,GAASD,KAAA,CAAME,aAAa;IAClC,IAAID,MAAA,IAAUZ,UAAA,CAAWO,OAAO,EAAEO,QAAA,CAASF,MAAA,GAAS;MAClDN,WAAA;MACA;IACF;IAEAA,WAAA;IACAF,UAAA,CAAWG,OAAO,GAAGQ,UAAA,CAAW;MAC9BX,UAAA,CAAWG,OAAO,GAAGF,SAAA;MACrBH,OAAA;IACF,GAAG;EACL,GACA,CAACI,WAAA,EAAaN,UAAA,EAAYE,OAAA,CAAQ;EAGpCL,SAAA,CAAU;IACR,IAAI,CAACI,OAAA,EAAS;MACZK,WAAA;IACF;IACA,OAAOA,WAAA;EACT,GAAG,CAACA,WAAA,EAAaL,OAAA,CAAQ;EAEzB,OAAO;IACLe,YAAA,EAAcf,OAAA,GAAUQ,WAAA,GAAcJ,SAAA;IACtCY,YAAA,EAAchB,OAAA,GAAUS,WAAA,GAAcL;EACxC;AACF","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/PreviewSizes/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,yBAAyB,EAAyB,MAAM,SAAS,CAAA;AAE/F,OAAO,KAAuC,MAAM,OAAO,CAAA;AAI3D,OAAO,aAAa,CAAA;AAIpB,KAAK,QAAQ,GAAG;IACd,GAAG,EAAE,MAAM,CAAA;CACZ,GAAG,QAAQ,CAAA;AACZ,KAAK,iBAAiB,GAAG;IACvB,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ,CAAA;CACxB,CAAA;AA8DD,MAAM,MAAM,iBAAiB,GAAG;IAC9B,GAAG,EAAE;QACH,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/PreviewSizes/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,yBAAyB,EAAyB,MAAM,SAAS,CAAA;AAE/F,OAAO,KAAuC,MAAM,OAAO,CAAA;AAI3D,OAAO,aAAa,CAAA;AAIpB,KAAK,QAAQ,GAAG;IACd,GAAG,EAAE,MAAM,CAAA;CACZ,GAAG,QAAQ,CAAA;AACZ,KAAK,iBAAiB,GAAG;IACvB,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ,CAAA;CACxB,CAAA;AA8DD,MAAM,MAAM,iBAAiB,GAAG;IAC9B,GAAG,EAAE;QACH,QAAQ,CAAC,EAAE,iBAAiB,CAAA;KAC7B,GAAG,IAAI,CAAA;IACR,aAAa,CAAC,EAAE,KAAK,GAAG,MAAM,CAAA;IAC9B,YAAY,EAAE,yBAAyB,CAAC,QAAQ,CAAC,CAAA;CAClD,CAAA;AAED,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CAoFpD,CAAA"}
|
|
@@ -6,12 +6,12 @@ import { appendCacheTag } from '../../utilities/appendCacheTag.js';
|
|
|
6
6
|
import { FileMeta } from '../FileDetails/FileMeta/index.js';
|
|
7
7
|
import './index.css';
|
|
8
8
|
const baseClass = 'preview-sizes';
|
|
9
|
-
const sortSizes = (sizes,
|
|
10
|
-
if (!
|
|
9
|
+
const sortSizes = (sizes, variants) => {
|
|
10
|
+
if (!variants || variants.length === 0) {
|
|
11
11
|
return sizes;
|
|
12
12
|
}
|
|
13
13
|
const orderedSizes = {};
|
|
14
|
-
|
|
14
|
+
variants.forEach(({
|
|
15
15
|
name
|
|
16
16
|
}) => {
|
|
17
17
|
if (sizes[name]) {
|
|
@@ -64,13 +64,13 @@ export const PreviewSizes = ({
|
|
|
64
64
|
uploadConfig
|
|
65
65
|
}) => {
|
|
66
66
|
const {
|
|
67
|
-
|
|
67
|
+
variants
|
|
68
68
|
} = uploadConfig;
|
|
69
69
|
const {
|
|
70
|
-
sizes
|
|
70
|
+
variants: sizes
|
|
71
71
|
} = doc;
|
|
72
72
|
const alt = doc?.alt || doc.filename || '';
|
|
73
|
-
const [orderedSizes, setOrderedSizes] = useState(() => sortSizes(sizes,
|
|
73
|
+
const [orderedSizes, setOrderedSizes] = useState(() => sortSizes(sizes, variants));
|
|
74
74
|
const [selectedSize, setSelectedSize] = useState(null);
|
|
75
75
|
const generateImageUrl = doc_0 => {
|
|
76
76
|
if (!doc_0.filename) {
|
|
@@ -81,9 +81,9 @@ export const PreviewSizes = ({
|
|
|
81
81
|
}
|
|
82
82
|
};
|
|
83
83
|
useEffect(() => {
|
|
84
|
-
setOrderedSizes(sortSizes(sizes,
|
|
85
|
-
}, [sizes,
|
|
86
|
-
const mainPreviewSrc = selectedSize ? generateImageUrl(doc.
|
|
84
|
+
setOrderedSizes(sortSizes(sizes, variants));
|
|
85
|
+
}, [sizes, variants, imageCacheTag]);
|
|
86
|
+
const mainPreviewSrc = selectedSize ? generateImageUrl(doc.variants[selectedSize]) : generateImageUrl(doc);
|
|
87
87
|
const originalImage = useMemo(() => ({
|
|
88
88
|
filename: doc.filename,
|
|
89
89
|
filesize: doc.filesize,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["React","useEffect","useMemo","useState","appendCacheTag","FileMeta","baseClass","sortSizes","sizes","
|
|
1
|
+
{"version":3,"file":"index.js","names":["React","useEffect","useMemo","useState","appendCacheTag","FileMeta","baseClass","sortSizes","sizes","variants","length","orderedSizes","forEach","name","PreviewSizeCard","active","alt","meta","onClick","previewSrc","_jsxs","className","filter","Boolean","join","undefined","onKeyDown","e","key","role","tabIndex","_jsx","src","PreviewSizes","doc","imageCacheTag","uploadConfig","filename","setOrderedSizes","selectedSize","setSelectedSize","generateImageUrl","url","mainPreviewSrc","originalImage","filesize","height","mimeType","width","originalFilename","Object","entries","map","val","selected"],"sources":["../../../src/elements/PreviewSizes/index.tsx"],"sourcesContent":["'use client'\nimport type { Data, FileSize, SanitizedCollectionConfig, SanitizedUploadConfig } from 'payload'\n\nimport React, { useEffect, useMemo, useState } from 'react'\n\nimport { appendCacheTag } from '../../utilities/appendCacheTag.js'\nimport { FileMeta } from '../FileDetails/FileMeta/index.js'\nimport './index.css'\n\nconst baseClass = 'preview-sizes'\n\ntype FileInfo = {\n url: string\n} & FileSize\ntype FilesSizesWithUrl = {\n [key: string]: FileInfo\n}\n\nconst sortSizes = (sizes: FilesSizesWithUrl, variants: SanitizedUploadConfig['variants']) => {\n if (!variants || variants.length === 0) {\n return sizes\n }\n\n const orderedSizes: FilesSizesWithUrl = {}\n\n variants.forEach(({ name }) => {\n if (sizes[name]) {\n orderedSizes[name] = sizes[name]\n }\n })\n\n return orderedSizes\n}\n\ntype PreviewSizeCardProps = {\n active: boolean\n alt: string\n meta: FileInfo\n name: string\n onClick?: () => void\n previewSrc: string\n}\nconst PreviewSizeCard: React.FC<PreviewSizeCardProps> = ({\n name,\n active,\n alt,\n meta,\n onClick,\n previewSrc,\n}) => {\n return (\n <div\n className={[`${baseClass}__sizeOption`, active && `${baseClass}--selected`]\n .filter(Boolean)\n .join(' ')}\n onClick={typeof onClick === 'function' ? onClick : undefined}\n onKeyDown={(e) => {\n if (typeof onClick !== 'function') {\n return\n }\n if (e.key === 'Enter') {\n onClick()\n }\n }}\n role=\"button\"\n tabIndex={0}\n >\n <div className={`${baseClass}__image`}>\n <img alt={alt} src={previewSrc} />\n </div>\n <div className={`${baseClass}__sizeMeta`}>\n <div className={`${baseClass}__sizeName`}>{name}</div>\n <FileMeta {...meta} />\n </div>\n </div>\n )\n}\n\nexport type PreviewSizesProps = {\n doc: {\n variants?: FilesSizesWithUrl\n } & Data\n imageCacheTag?: false | string\n uploadConfig: SanitizedCollectionConfig['upload']\n}\n\nexport const PreviewSizes: React.FC<PreviewSizesProps> = ({ doc, imageCacheTag, uploadConfig }) => {\n const { variants } = uploadConfig\n const { variants: sizes } = doc\n\n const alt = (doc as { alt?: string })?.alt || doc.filename || ''\n\n const [orderedSizes, setOrderedSizes] = useState<FilesSizesWithUrl>(() =>\n sortSizes(sizes, variants),\n )\n const [selectedSize, setSelectedSize] = useState<null | string>(null)\n\n const generateImageUrl = (doc) => {\n if (!doc.filename) {\n return null\n }\n if (doc.url) {\n return appendCacheTag(doc.url, imageCacheTag)\n }\n }\n useEffect(() => {\n setOrderedSizes(sortSizes(sizes, variants))\n }, [sizes, variants, imageCacheTag])\n\n const mainPreviewSrc = selectedSize\n ? generateImageUrl(doc.variants[selectedSize])\n : generateImageUrl(doc)\n\n const originalImage = useMemo(\n (): FileInfo => ({\n filename: doc.filename,\n filesize: doc.filesize,\n height: doc.height,\n mimeType: doc.mimeType,\n url: doc.url,\n width: doc.width,\n }),\n [doc],\n )\n const originalFilename = 'Original'\n\n return (\n <div className={baseClass}>\n <div className={`${baseClass}__imageWrap`}>\n <div className={`${baseClass}__meta`}>\n <div className={`${baseClass}__sizeName`}>{selectedSize || originalFilename}</div>\n <FileMeta {...(selectedSize ? orderedSizes[selectedSize] : originalImage)} />\n </div>\n <img alt={alt} className={`${baseClass}__preview`} src={mainPreviewSrc} />\n </div>\n <div className={`${baseClass}__listWrap`}>\n <div className={`${baseClass}__list`}>\n <PreviewSizeCard\n active={!selectedSize}\n alt={alt}\n meta={originalImage}\n name={originalFilename}\n onClick={() => setSelectedSize(null)}\n previewSrc={generateImageUrl(doc)}\n />\n\n {Object.entries(orderedSizes).map(([key, val]) => {\n const selected = selectedSize === key\n const previewSrc = generateImageUrl(val)\n\n if (previewSrc) {\n return (\n <PreviewSizeCard\n active={selected}\n alt={alt}\n key={key}\n meta={val}\n name={key}\n onClick={() => setSelectedSize(key)}\n previewSrc={previewSrc}\n />\n )\n }\n\n return null\n })}\n </div>\n </div>\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
.query-preset-heading {
|
|
3
3
|
margin: var(--spacer-4) 0 var(--spacer-2-5);
|
|
4
4
|
color: var(--color-text);
|
|
5
|
-
font-family: var(--text-heading-medium-font-family);
|
|
6
5
|
font-size: var(--text-heading-medium-font-size);
|
|
7
6
|
font-weight: var(--text-heading-medium-font-weight);
|
|
8
7
|
line-height: var(--text-heading-medium-line-height);
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
@layer payload-default {
|
|
2
2
|
.multi-value-label {
|
|
3
3
|
align-self: center;
|
|
4
|
-
font-family: var(--text-body-medium-font-family);
|
|
5
4
|
font-size: var(--text-body-medium-font-size);
|
|
6
5
|
font-weight: var(--text-body-medium-font-weight);
|
|
7
6
|
line-height: var(--text-body-medium-line-height);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/elements/ReactSelect/ValueContainer/index.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/elements/ReactSelect/ValueContainer/index.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AAGvD,OAAO,KAAK,MAAM,OAAO,CAAA;AAGzB,OAAO,KAAK,EAAE,MAAM,EAA2B,MAAM,aAAa,CAAA;AAGlE,OAAO,aAAa,CAAA;AAIpB,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,mBAAmB,CAAC,MAAM,EAAE,GAAG,CAAC,CA0CrE,CAAA"}
|