@canonical/react-components 1.2.5 → 1.3.1
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/README.md +2 -2
- package/dist-esm/components/Accordion/Accordion.js +52 -0
- package/dist-esm/components/Accordion/AccordionSection/AccordionSection.js +47 -0
- package/dist-esm/components/Accordion/AccordionSection/index.js +1 -0
- package/dist-esm/components/Accordion/index.js +1 -0
- package/dist-esm/components/ActionButton/ActionButton.js +106 -0
- package/dist-esm/components/ActionButton/index.js +1 -0
- package/dist-esm/components/ApplicationLayout/AppAside/AppAside.js +29 -0
- package/dist-esm/components/ApplicationLayout/AppAside/index.js +1 -0
- package/dist-esm/components/ApplicationLayout/AppMain/AppMain.js +21 -0
- package/dist-esm/components/ApplicationLayout/AppMain/index.js +1 -0
- package/dist-esm/components/ApplicationLayout/AppNavigation/AppNavigation.js +31 -0
- package/dist-esm/components/ApplicationLayout/AppNavigation/index.js +1 -0
- package/dist-esm/components/ApplicationLayout/AppNavigationBar/AppNavigationBar.js +24 -0
- package/dist-esm/components/ApplicationLayout/AppNavigationBar/index.js +1 -0
- package/dist-esm/components/ApplicationLayout/AppStatus/AppStatus.js +21 -0
- package/dist-esm/components/ApplicationLayout/AppStatus/index.js +1 -0
- package/dist-esm/components/ApplicationLayout/Application/Application.js +22 -0
- package/dist-esm/components/ApplicationLayout/Application/index.js +1 -0
- package/dist-esm/components/ApplicationLayout/ApplicationLayout.js +113 -0
- package/dist-esm/components/ApplicationLayout/index.js +7 -0
- package/dist-esm/components/ArticlePagination/ArticlePagination.js +39 -0
- package/dist-esm/components/ArticlePagination/index.js +1 -0
- package/dist-esm/components/Badge/Badge.js +64 -0
- package/dist-esm/components/Badge/index.js +1 -0
- package/dist-esm/components/Button/Button.js +55 -0
- package/dist-esm/components/Button/index.js +1 -0
- package/dist-esm/components/Card/Card.js +45 -0
- package/dist-esm/components/Card/index.js +1 -0
- package/dist-esm/components/CheckboxInput/CheckableInput/CheckableInput.js +35 -0
- package/dist-esm/components/CheckboxInput/CheckableInput/index.js +1 -0
- package/dist-esm/components/CheckboxInput/CheckboxInput.js +24 -0
- package/dist-esm/components/CheckboxInput/index.js +1 -0
- package/dist-esm/components/Chip/Chip.js +81 -0
- package/dist-esm/components/Chip/index.js +1 -0
- package/dist-esm/components/Code/Code.js +49 -0
- package/dist-esm/components/Code/index.js +1 -0
- package/dist-esm/components/CodeSnippet/CodeSnippet.js +28 -0
- package/dist-esm/components/CodeSnippet/CodeSnippetBlock.js +64 -0
- package/dist-esm/components/CodeSnippet/CodeSnippetDropdown.js +27 -0
- package/dist-esm/components/CodeSnippet/index.js +2 -0
- package/dist-esm/components/Col/Col.js +38 -0
- package/dist-esm/components/Col/index.js +1 -0
- package/dist-esm/components/ConfirmationButton/ConfirmationButton.js +63 -0
- package/dist-esm/components/ConfirmationButton/index.js +1 -0
- package/dist-esm/components/ConfirmationModal/ConfirmationModal.js +47 -0
- package/dist-esm/components/ConfirmationModal/index.js +1 -0
- package/dist-esm/components/ContextualMenu/ContextualMenu.js +215 -0
- package/dist-esm/components/ContextualMenu/ContextualMenuDropdown/ContextualMenuDropdown.js +249 -0
- package/dist-esm/components/ContextualMenu/ContextualMenuDropdown/index.js +1 -0
- package/dist-esm/components/ContextualMenu/index.js +1 -0
- package/dist-esm/components/EmptyState/EmptyState.js +28 -0
- package/dist-esm/components/EmptyState/index.js +1 -0
- package/dist-esm/components/Field/Field.js +126 -0
- package/dist-esm/components/Field/index.js +1 -0
- package/dist-esm/components/Form/Form.js +28 -0
- package/dist-esm/components/Form/index.js +1 -0
- package/dist-esm/components/FormikField/FormikField.js +33 -0
- package/dist-esm/components/FormikField/index.js +1 -0
- package/dist-esm/components/Icon/Icon.js +61 -0
- package/dist-esm/components/Icon/index.js +1 -0
- package/dist-esm/components/Input/Input.js +103 -0
- package/dist-esm/components/Input/index.js +1 -0
- package/dist-esm/components/Label/Label.js +27 -0
- package/dist-esm/components/Label/index.js +1 -0
- package/dist-esm/components/Link/Link.js +37 -0
- package/dist-esm/components/Link/index.js +1 -0
- package/dist-esm/components/List/List.js +110 -0
- package/dist-esm/components/List/index.js +1 -0
- package/dist-esm/components/Loader/Loader.js +14 -0
- package/dist-esm/components/Loader/index.js +1 -0
- package/dist-esm/components/LoginPageLayout/LoginPageLayout.js +63 -0
- package/dist-esm/components/LoginPageLayout/index.js +1 -0
- package/dist-esm/components/MainTable/MainTable.js +211 -0
- package/dist-esm/components/MainTable/index.js +1 -0
- package/dist-esm/components/Modal/Modal.js +135 -0
- package/dist-esm/components/Modal/index.js +1 -0
- package/dist-esm/components/ModularTable/ModularTable.js +166 -0
- package/dist-esm/components/ModularTable/index.js +1 -0
- package/dist-esm/components/MultiSelect/FadeInDown/FadeInDown.js +25 -0
- package/dist-esm/components/MultiSelect/FadeInDown/index.js +1 -0
- package/dist-esm/components/MultiSelect/MultiSelect.js +308 -0
- package/dist-esm/components/MultiSelect/index.js +1 -0
- package/dist-esm/components/Navigation/Navigation.js +215 -0
- package/dist-esm/components/Navigation/NavigationLink/NavigationLink.js +58 -0
- package/dist-esm/components/Navigation/NavigationLink/index.js +1 -0
- package/dist-esm/components/Navigation/NavigationMenu/NavigationMenu.js +57 -0
- package/dist-esm/components/Navigation/NavigationMenu/index.js +1 -0
- package/dist-esm/components/Navigation/index.js +1 -0
- package/dist-esm/components/Navigation/types.js +1 -0
- package/dist-esm/components/Notification/Notification.js +119 -0
- package/dist-esm/components/Notification/index.js +1 -0
- package/dist-esm/components/NotificationProvider/NotificationProvider.js +83 -0
- package/dist-esm/components/NotificationProvider/index.js +2 -0
- package/dist-esm/components/NotificationProvider/messageBuilder.js +31 -0
- package/dist-esm/components/NotificationProvider/types.js +1 -0
- package/dist-esm/components/Pagination/Pagination.js +173 -0
- package/dist-esm/components/Pagination/PaginationButton/PaginationButton.js +31 -0
- package/dist-esm/components/Pagination/PaginationButton/index.js +1 -0
- package/dist-esm/components/Pagination/PaginationItem/PaginationItem.js +20 -0
- package/dist-esm/components/Pagination/PaginationItem/index.js +1 -0
- package/dist-esm/components/Pagination/index.js +1 -0
- package/dist-esm/components/Panel/Panel.js +89 -0
- package/dist-esm/components/Panel/index.js +1 -0
- package/dist-esm/components/PasswordToggle/PasswordToggle.js +90 -0
- package/dist-esm/components/PasswordToggle/index.js +1 -0
- package/dist-esm/components/RadioInput/RadioInput.js +22 -0
- package/dist-esm/components/RadioInput/index.js +1 -0
- package/dist-esm/components/Row/Row.js +22 -0
- package/dist-esm/components/Row/index.js +1 -0
- package/dist-esm/components/SearchAndFilter/FilterPanelSection/FilterPanelSection.js +107 -0
- package/dist-esm/components/SearchAndFilter/FilterPanelSection/index.js +1 -0
- package/dist-esm/components/SearchAndFilter/SearchAndFilter.js +286 -0
- package/dist-esm/components/SearchAndFilter/index.js +1 -0
- package/dist-esm/components/SearchAndFilter/types.js +1 -0
- package/dist-esm/components/SearchAndFilter/utils.js +22 -0
- package/dist-esm/components/SearchBox/SearchBox.js +95 -0
- package/dist-esm/components/SearchBox/index.js +1 -0
- package/dist-esm/components/Select/Select.js +84 -0
- package/dist-esm/components/Select/index.js +1 -0
- package/dist-esm/components/SideNavigation/SideNavigation.js +89 -0
- package/dist-esm/components/SideNavigation/SideNavigationBase/SideNavigationBase.js +31 -0
- package/dist-esm/components/SideNavigation/SideNavigationBase/index.js +1 -0
- package/dist-esm/components/SideNavigation/SideNavigationItem/SideNavigationItem.js +32 -0
- package/dist-esm/components/SideNavigation/SideNavigationItem/index.js +1 -0
- package/dist-esm/components/SideNavigation/SideNavigationLink/SideNavigationLink.js +25 -0
- package/dist-esm/components/SideNavigation/SideNavigationLink/index.js +1 -0
- package/dist-esm/components/SideNavigation/SideNavigationText/SideNavigationText.js +20 -0
- package/dist-esm/components/SideNavigation/SideNavigationText/index.js +1 -0
- package/dist-esm/components/SideNavigation/index.js +4 -0
- package/dist-esm/components/Slider/Slider.js +83 -0
- package/dist-esm/components/Slider/index.js +1 -0
- package/dist-esm/components/Spinner/Spinner.js +36 -0
- package/dist-esm/components/Spinner/index.js +1 -0
- package/dist-esm/components/StatusLabel/StatusLabel.js +36 -0
- package/dist-esm/components/StatusLabel/index.js +1 -0
- package/dist-esm/components/Strip/Strip.js +50 -0
- package/dist-esm/components/Strip/index.js +1 -0
- package/dist-esm/components/SummaryButton/SummaryButton.js +28 -0
- package/dist-esm/components/SummaryButton/index.js +1 -0
- package/dist-esm/components/Switch/Switch.js +28 -0
- package/dist-esm/components/Switch/index.js +1 -0
- package/dist-esm/components/Table/Table.js +23 -0
- package/dist-esm/components/Table/index.js +1 -0
- package/dist-esm/components/TableCell/TableCell.js +26 -0
- package/dist-esm/components/TableCell/index.js +1 -0
- package/dist-esm/components/TableHeader/TableHeader.js +17 -0
- package/dist-esm/components/TableHeader/index.js +1 -0
- package/dist-esm/components/TablePagination/TablePagination.js +104 -0
- package/dist-esm/components/TablePagination/TablePaginationControls/TablePaginationControls.js +120 -0
- package/dist-esm/components/TablePagination/TablePaginationControls/index.js +1 -0
- package/dist-esm/components/TablePagination/index.js +1 -0
- package/dist-esm/components/TablePagination/utils.js +67 -0
- package/dist-esm/components/TableRow/TableRow.js +15 -0
- package/dist-esm/components/TableRow/index.js +1 -0
- package/dist-esm/components/Tabs/Tabs.js +42 -0
- package/dist-esm/components/Tabs/index.js +1 -0
- package/dist-esm/components/Textarea/Textarea.js +115 -0
- package/dist-esm/components/Textarea/index.js +1 -0
- package/dist-esm/components/Tooltip/Tooltip.js +245 -0
- package/dist-esm/components/Tooltip/index.js +1 -0
- package/dist-esm/enums.js +8 -0
- package/dist-esm/hooks/index.js +8 -0
- package/dist-esm/hooks/useId.js +13 -0
- package/dist-esm/hooks/useListener.js +51 -0
- package/dist-esm/hooks/useOnClickOutside.js +38 -0
- package/dist-esm/hooks/useOnEscapePressed.js +25 -0
- package/dist-esm/hooks/usePagination.js +45 -0
- package/dist-esm/hooks/usePrevious.js +16 -0
- package/dist-esm/hooks/useThrottle.js +49 -0
- package/dist-esm/hooks/useWindowFitment.js +109 -0
- package/dist-esm/index.js +69 -0
- package/dist-esm/types/index.js +1 -0
- package/dist-esm/types/react-table-config.d.js +1 -0
- package/dist-esm/utils.js +41 -0
- package/package.json +11 -6
- package/dist/components/Accordion/Accordion.stories.d.ts +0 -18
- package/dist/components/Accordion/Accordion.stories.js +0 -117
- package/dist/components/ActionButton/ActionButton.stories.d.ts +0 -7
- package/dist/components/ActionButton/ActionButton.stories.js +0 -36
- package/dist/components/ApplicationLayout/AppAside/AppAside.stories.d.ts +0 -13
- package/dist/components/ApplicationLayout/AppAside/AppAside.stories.js +0 -116
- package/dist/components/ApplicationLayout/AppMain/AppMain.stories.d.ts +0 -14
- package/dist/components/ApplicationLayout/AppMain/AppMain.stories.js +0 -45
- package/dist/components/ApplicationLayout/AppNavigation/AppNavigation.stories.d.ts +0 -12
- package/dist/components/ApplicationLayout/AppNavigation/AppNavigation.stories.js +0 -104
- package/dist/components/ApplicationLayout/AppNavigationBar/AppNavigationBar.stories.d.ts +0 -15
- package/dist/components/ApplicationLayout/AppNavigationBar/AppNavigationBar.stories.js +0 -52
- package/dist/components/ApplicationLayout/AppStatus/AppStatus.stories.d.ts +0 -13
- package/dist/components/ApplicationLayout/AppStatus/AppStatus.stories.js +0 -41
- package/dist/components/ApplicationLayout/Application/Application.stories.d.ts +0 -6
- package/dist/components/ApplicationLayout/Application/Application.stories.js +0 -16
- package/dist/components/ApplicationLayout/ApplicationLayout.stories.d.ts +0 -24
- package/dist/components/ApplicationLayout/ApplicationLayout.stories.js +0 -232
- package/dist/components/ArticlePagination/ArticlePagination.stories.d.ts +0 -6
- package/dist/components/ArticlePagination/ArticlePagination.stories.js +0 -22
- package/dist/components/Badge/Badge.stories.d.ts +0 -15
- package/dist/components/Badge/Badge.stories.js +0 -62
- package/dist/components/Button/Button.stories.d.ts +0 -32
- package/dist/components/Button/Button.stories.js +0 -180
- package/dist/components/Card/Card.stories.d.ts +0 -33
- package/dist/components/Card/Card.stories.js +0 -51
- package/dist/components/CheckboxInput/CheckboxInput.stories.d.ts +0 -11
- package/dist/components/CheckboxInput/CheckboxInput.stories.js +0 -84
- package/dist/components/Chip/Chip.stories.d.ts +0 -9
- package/dist/components/Chip/Chip.stories.js +0 -45
- package/dist/components/CodeSnippet/CodeSnippet.stories.d.ts +0 -45
- package/dist/components/CodeSnippet/CodeSnippet.stories.js +0 -279
- package/dist/components/Col/Col.stories.d.ts +0 -11
- package/dist/components/Col/Col.stories.js +0 -154
- package/dist/components/ConfirmationButton/ConfirmationButton.stories.d.ts +0 -9
- package/dist/components/ConfirmationButton/ConfirmationButton.stories.js +0 -108
- package/dist/components/ConfirmationModal/ConfirmationModal.stories.d.ts +0 -18
- package/dist/components/ConfirmationModal/ConfirmationModal.stories.js +0 -135
- package/dist/components/ContextualMenu/ContextualMenu.stories.d.ts +0 -13
- package/dist/components/ContextualMenu/ContextualMenu.stories.js +0 -107
- package/dist/components/EmptyState/EmptyState.stories.d.ts +0 -7
- package/dist/components/EmptyState/EmptyState.stories.js +0 -49
- package/dist/components/Form/Form.stories.d.ts +0 -12
- package/dist/components/Form/Form.stories.js +0 -179
- package/dist/components/FormikField/FormikField.stories.d.ts +0 -8
- package/dist/components/FormikField/FormikField.stories.js +0 -85
- package/dist/components/Icon/Icon.stories.d.ts +0 -16
- package/dist/components/Icon/Icon.stories.js +0 -49
- package/dist/components/Input/Input.stories.d.ts +0 -14
- package/dist/components/Input/Input.stories.js +0 -148
- package/dist/components/Link/Link.stories.d.ts +0 -9
- package/dist/components/Link/Link.stories.js +0 -48
- package/dist/components/List/List.stories.d.ts +0 -15
- package/dist/components/List/List.stories.js +0 -122
- package/dist/components/LoginPageLayout/LoginPageLayout.stories.d.ts +0 -9
- package/dist/components/LoginPageLayout/LoginPageLayout.stories.js +0 -58
- package/dist/components/MainTable/MainTable.stories.d.ts +0 -15
- package/dist/components/MainTable/MainTable.stories.js +0 -553
- package/dist/components/Modal/Modal.stories.d.ts +0 -6
- package/dist/components/Modal/Modal.stories.js +0 -57
- package/dist/components/ModularTable/ModularTable.stories.d.ts +0 -27
- package/dist/components/ModularTable/ModularTable.stories.js +0 -343
- package/dist/components/MultiSelect/MultiSelect.stories.d.ts +0 -8
- package/dist/components/MultiSelect/MultiSelect.stories.js +0 -70
- package/dist/components/Navigation/Navigation.stories.d.ts +0 -43
- package/dist/components/Navigation/Navigation.stories.js +0 -232
- package/dist/components/Notification/Notification.stories.d.ts +0 -45
- package/dist/components/Notification/Notification.stories.js +0 -201
- package/dist/components/Pagination/Pagination.stories.d.ts +0 -14
- package/dist/components/Pagination/Pagination.stories.js +0 -94
- package/dist/components/Panel/Panel.stories.d.ts +0 -17
- package/dist/components/Panel/Panel.stories.js +0 -60
- package/dist/components/PasswordToggle/PasswordToggle.stories.d.ts +0 -12
- package/dist/components/PasswordToggle/PasswordToggle.stories.js +0 -74
- package/dist/components/RadioInput/RadioInput.stories.d.ts +0 -10
- package/dist/components/RadioInput/RadioInput.stories.js +0 -83
- package/dist/components/Row/Row.stories.d.ts +0 -9
- package/dist/components/Row/Row.stories.js +0 -29
- package/dist/components/SearchAndFilter/SearchAndFilter.stories.d.ts +0 -8
- package/dist/components/SearchAndFilter/SearchAndFilter.stories.js +0 -218
- package/dist/components/SearchBox/SearchBox.stories.d.ts +0 -14
- package/dist/components/SearchBox/SearchBox.stories.js +0 -106
- package/dist/components/Select/Select.stories.d.ts +0 -7
- package/dist/components/Select/Select.stories.js +0 -97
- package/dist/components/SideNavigation/SideNavigation.stories.d.ts +0 -14
- package/dist/components/SideNavigation/SideNavigation.stories.js +0 -62
- package/dist/components/SideNavigation/SideNavigationItem/SideNavigationItem.stories.d.ts +0 -22
- package/dist/components/SideNavigation/SideNavigationItem/SideNavigationItem.stories.js +0 -70
- package/dist/components/SideNavigation/SideNavigationLink/SideNavigationLink.stories.d.ts +0 -7
- package/dist/components/SideNavigation/SideNavigationLink/SideNavigationLink.stories.js +0 -32
- package/dist/components/SideNavigation/SideNavigationText/SideNavigationText.stories.d.ts +0 -6
- package/dist/components/SideNavigation/SideNavigationText/SideNavigationText.stories.js +0 -25
- package/dist/components/Slider/Slider.stories.d.ts +0 -10
- package/dist/components/Slider/Slider.stories.js +0 -74
- package/dist/components/Spinner/Spinner.stories.d.ts +0 -8
- package/dist/components/Spinner/Spinner.stories.js +0 -28
- package/dist/components/StatusLabel/StatusLabel.stories.d.ts +0 -10
- package/dist/components/StatusLabel/StatusLabel.stories.js +0 -61
- package/dist/components/Strip/Strip.stories.d.ts +0 -12
- package/dist/components/Strip/Strip.stories.js +0 -130
- package/dist/components/SummaryButton/SummaryButton.stories.d.ts +0 -18
- package/dist/components/SummaryButton/SummaryButton.stories.js +0 -59
- package/dist/components/Switch/Switch.stories.d.ts +0 -7
- package/dist/components/Switch/Switch.stories.js +0 -26
- package/dist/components/TablePagination/TablePagination.stories.d.ts +0 -14
- package/dist/components/TablePagination/TablePagination.stories.js +0 -330
- package/dist/components/Tabs/Tabs.stories.d.ts +0 -11
- package/dist/components/Tabs/Tabs.stories.js +0 -56
- package/dist/components/Textarea/Textarea.stories.d.ts +0 -7
- package/dist/components/Textarea/Textarea.stories.js +0 -62
- package/dist/components/Tooltip/Tooltip.stories.d.ts +0 -12
- package/dist/components/Tooltip/Tooltip.stories.js +0 -71
- /package/{dist → dist-types}/components/Accordion/Accordion.d.ts +0 -0
- /package/{dist → dist-types}/components/Accordion/AccordionSection/AccordionSection.d.ts +0 -0
- /package/{dist → dist-types}/components/Accordion/AccordionSection/index.d.ts +0 -0
- /package/{dist → dist-types}/components/Accordion/index.d.ts +0 -0
- /package/{dist → dist-types}/components/ActionButton/ActionButton.d.ts +0 -0
- /package/{dist → dist-types}/components/ActionButton/index.d.ts +0 -0
- /package/{dist → dist-types}/components/ApplicationLayout/AppAside/AppAside.d.ts +0 -0
- /package/{dist → dist-types}/components/ApplicationLayout/AppAside/index.d.ts +0 -0
- /package/{dist → dist-types}/components/ApplicationLayout/AppMain/AppMain.d.ts +0 -0
- /package/{dist → dist-types}/components/ApplicationLayout/AppMain/index.d.ts +0 -0
- /package/{dist → dist-types}/components/ApplicationLayout/AppNavigation/AppNavigation.d.ts +0 -0
- /package/{dist → dist-types}/components/ApplicationLayout/AppNavigation/index.d.ts +0 -0
- /package/{dist → dist-types}/components/ApplicationLayout/AppNavigationBar/AppNavigationBar.d.ts +0 -0
- /package/{dist → dist-types}/components/ApplicationLayout/AppNavigationBar/index.d.ts +0 -0
- /package/{dist → dist-types}/components/ApplicationLayout/AppStatus/AppStatus.d.ts +0 -0
- /package/{dist → dist-types}/components/ApplicationLayout/AppStatus/index.d.ts +0 -0
- /package/{dist → dist-types}/components/ApplicationLayout/Application/Application.d.ts +0 -0
- /package/{dist → dist-types}/components/ApplicationLayout/Application/index.d.ts +0 -0
- /package/{dist → dist-types}/components/ApplicationLayout/ApplicationLayout.d.ts +0 -0
- /package/{dist → dist-types}/components/ApplicationLayout/index.d.ts +0 -0
- /package/{dist → dist-types}/components/ArticlePagination/ArticlePagination.d.ts +0 -0
- /package/{dist → dist-types}/components/ArticlePagination/index.d.ts +0 -0
- /package/{dist → dist-types}/components/Badge/Badge.d.ts +0 -0
- /package/{dist → dist-types}/components/Badge/index.d.ts +0 -0
- /package/{dist → dist-types}/components/Button/Button.d.ts +0 -0
- /package/{dist → dist-types}/components/Button/index.d.ts +0 -0
- /package/{dist → dist-types}/components/Card/Card.d.ts +0 -0
- /package/{dist → dist-types}/components/Card/index.d.ts +0 -0
- /package/{dist → dist-types}/components/CheckboxInput/CheckableInput/CheckableInput.d.ts +0 -0
- /package/{dist → dist-types}/components/CheckboxInput/CheckableInput/index.d.ts +0 -0
- /package/{dist → dist-types}/components/CheckboxInput/CheckboxInput.d.ts +0 -0
- /package/{dist → dist-types}/components/CheckboxInput/index.d.ts +0 -0
- /package/{dist → dist-types}/components/Chip/Chip.d.ts +0 -0
- /package/{dist → dist-types}/components/Chip/index.d.ts +0 -0
- /package/{dist → dist-types}/components/Code/Code.d.ts +0 -0
- /package/{dist → dist-types}/components/Code/index.d.ts +0 -0
- /package/{dist → dist-types}/components/CodeSnippet/CodeSnippet.d.ts +0 -0
- /package/{dist → dist-types}/components/CodeSnippet/CodeSnippetBlock.d.ts +0 -0
- /package/{dist → dist-types}/components/CodeSnippet/CodeSnippetDropdown.d.ts +0 -0
- /package/{dist → dist-types}/components/CodeSnippet/index.d.ts +0 -0
- /package/{dist → dist-types}/components/Col/Col.d.ts +0 -0
- /package/{dist → dist-types}/components/Col/index.d.ts +0 -0
- /package/{dist → dist-types}/components/ConfirmationButton/ConfirmationButton.d.ts +0 -0
- /package/{dist → dist-types}/components/ConfirmationButton/index.d.ts +0 -0
- /package/{dist → dist-types}/components/ConfirmationModal/ConfirmationModal.d.ts +0 -0
- /package/{dist → dist-types}/components/ConfirmationModal/index.d.ts +0 -0
- /package/{dist → dist-types}/components/ContextualMenu/ContextualMenu.d.ts +0 -0
- /package/{dist → dist-types}/components/ContextualMenu/ContextualMenuDropdown/ContextualMenuDropdown.d.ts +0 -0
- /package/{dist → dist-types}/components/ContextualMenu/ContextualMenuDropdown/index.d.ts +0 -0
- /package/{dist → dist-types}/components/ContextualMenu/index.d.ts +0 -0
- /package/{dist → dist-types}/components/EmptyState/EmptyState.d.ts +0 -0
- /package/{dist → dist-types}/components/EmptyState/index.d.ts +0 -0
- /package/{dist → dist-types}/components/Field/Field.d.ts +0 -0
- /package/{dist → dist-types}/components/Field/index.d.ts +0 -0
- /package/{dist → dist-types}/components/Form/Form.d.ts +0 -0
- /package/{dist → dist-types}/components/Form/index.d.ts +0 -0
- /package/{dist → dist-types}/components/FormikField/FormikField.d.ts +0 -0
- /package/{dist → dist-types}/components/FormikField/index.d.ts +0 -0
- /package/{dist → dist-types}/components/Icon/Icon.d.ts +0 -0
- /package/{dist → dist-types}/components/Icon/index.d.ts +0 -0
- /package/{dist → dist-types}/components/Input/Input.d.ts +0 -0
- /package/{dist → dist-types}/components/Input/index.d.ts +0 -0
- /package/{dist → dist-types}/components/Label/Label.d.ts +0 -0
- /package/{dist → dist-types}/components/Label/index.d.ts +0 -0
- /package/{dist → dist-types}/components/Link/Link.d.ts +0 -0
- /package/{dist → dist-types}/components/Link/index.d.ts +0 -0
- /package/{dist → dist-types}/components/List/List.d.ts +0 -0
- /package/{dist → dist-types}/components/List/index.d.ts +0 -0
- /package/{dist → dist-types}/components/Loader/Loader.d.ts +0 -0
- /package/{dist → dist-types}/components/Loader/index.d.ts +0 -0
- /package/{dist → dist-types}/components/LoginPageLayout/LoginPageLayout.d.ts +0 -0
- /package/{dist → dist-types}/components/LoginPageLayout/index.d.ts +0 -0
- /package/{dist → dist-types}/components/MainTable/MainTable.d.ts +0 -0
- /package/{dist → dist-types}/components/MainTable/index.d.ts +0 -0
- /package/{dist → dist-types}/components/Modal/Modal.d.ts +0 -0
- /package/{dist → dist-types}/components/Modal/index.d.ts +0 -0
- /package/{dist → dist-types}/components/ModularTable/ModularTable.d.ts +0 -0
- /package/{dist → dist-types}/components/ModularTable/index.d.ts +0 -0
- /package/{dist → dist-types}/components/MultiSelect/FadeInDown/FadeInDown.d.ts +0 -0
- /package/{dist → dist-types}/components/MultiSelect/FadeInDown/index.d.ts +0 -0
- /package/{dist → dist-types}/components/MultiSelect/MultiSelect.d.ts +0 -0
- /package/{dist → dist-types}/components/MultiSelect/index.d.ts +0 -0
- /package/{dist → dist-types}/components/Navigation/Navigation.d.ts +0 -0
- /package/{dist → dist-types}/components/Navigation/NavigationLink/NavigationLink.d.ts +0 -0
- /package/{dist → dist-types}/components/Navigation/NavigationLink/index.d.ts +0 -0
- /package/{dist → dist-types}/components/Navigation/NavigationMenu/NavigationMenu.d.ts +0 -0
- /package/{dist → dist-types}/components/Navigation/NavigationMenu/index.d.ts +0 -0
- /package/{dist → dist-types}/components/Navigation/index.d.ts +0 -0
- /package/{dist → dist-types}/components/Navigation/types.d.ts +0 -0
- /package/{dist → dist-types}/components/Notification/Notification.d.ts +0 -0
- /package/{dist → dist-types}/components/Notification/index.d.ts +0 -0
- /package/{dist → dist-types}/components/NotificationProvider/NotificationProvider.d.ts +0 -0
- /package/{dist → dist-types}/components/NotificationProvider/index.d.ts +0 -0
- /package/{dist → dist-types}/components/NotificationProvider/messageBuilder.d.ts +0 -0
- /package/{dist → dist-types}/components/NotificationProvider/types.d.ts +0 -0
- /package/{dist → dist-types}/components/Pagination/Pagination.d.ts +0 -0
- /package/{dist → dist-types}/components/Pagination/PaginationButton/PaginationButton.d.ts +0 -0
- /package/{dist → dist-types}/components/Pagination/PaginationButton/index.d.ts +0 -0
- /package/{dist → dist-types}/components/Pagination/PaginationItem/PaginationItem.d.ts +0 -0
- /package/{dist → dist-types}/components/Pagination/PaginationItem/index.d.ts +0 -0
- /package/{dist → dist-types}/components/Pagination/index.d.ts +0 -0
- /package/{dist → dist-types}/components/Panel/Panel.d.ts +0 -0
- /package/{dist → dist-types}/components/Panel/index.d.ts +0 -0
- /package/{dist → dist-types}/components/PasswordToggle/PasswordToggle.d.ts +0 -0
- /package/{dist → dist-types}/components/PasswordToggle/index.d.ts +0 -0
- /package/{dist → dist-types}/components/RadioInput/RadioInput.d.ts +0 -0
- /package/{dist → dist-types}/components/RadioInput/index.d.ts +0 -0
- /package/{dist → dist-types}/components/Row/Row.d.ts +0 -0
- /package/{dist → dist-types}/components/Row/index.d.ts +0 -0
- /package/{dist → dist-types}/components/SearchAndFilter/FilterPanelSection/FilterPanelSection.d.ts +0 -0
- /package/{dist → dist-types}/components/SearchAndFilter/FilterPanelSection/index.d.ts +0 -0
- /package/{dist → dist-types}/components/SearchAndFilter/SearchAndFilter.d.ts +0 -0
- /package/{dist → dist-types}/components/SearchAndFilter/index.d.ts +0 -0
- /package/{dist → dist-types}/components/SearchAndFilter/types.d.ts +0 -0
- /package/{dist → dist-types}/components/SearchAndFilter/utils.d.ts +0 -0
- /package/{dist → dist-types}/components/SearchBox/SearchBox.d.ts +0 -0
- /package/{dist → dist-types}/components/SearchBox/index.d.ts +0 -0
- /package/{dist → dist-types}/components/Select/Select.d.ts +0 -0
- /package/{dist → dist-types}/components/Select/index.d.ts +0 -0
- /package/{dist → dist-types}/components/SideNavigation/SideNavigation.d.ts +0 -0
- /package/{dist → dist-types}/components/SideNavigation/SideNavigationBase/SideNavigationBase.d.ts +0 -0
- /package/{dist → dist-types}/components/SideNavigation/SideNavigationBase/index.d.ts +0 -0
- /package/{dist → dist-types}/components/SideNavigation/SideNavigationItem/SideNavigationItem.d.ts +0 -0
- /package/{dist → dist-types}/components/SideNavigation/SideNavigationItem/index.d.ts +0 -0
- /package/{dist → dist-types}/components/SideNavigation/SideNavigationLink/SideNavigationLink.d.ts +0 -0
- /package/{dist → dist-types}/components/SideNavigation/SideNavigationLink/index.d.ts +0 -0
- /package/{dist → dist-types}/components/SideNavigation/SideNavigationText/SideNavigationText.d.ts +0 -0
- /package/{dist → dist-types}/components/SideNavigation/SideNavigationText/index.d.ts +0 -0
- /package/{dist → dist-types}/components/SideNavigation/index.d.ts +0 -0
- /package/{dist → dist-types}/components/Slider/Slider.d.ts +0 -0
- /package/{dist → dist-types}/components/Slider/index.d.ts +0 -0
- /package/{dist → dist-types}/components/Spinner/Spinner.d.ts +0 -0
- /package/{dist → dist-types}/components/Spinner/index.d.ts +0 -0
- /package/{dist → dist-types}/components/StatusLabel/StatusLabel.d.ts +0 -0
- /package/{dist → dist-types}/components/StatusLabel/index.d.ts +0 -0
- /package/{dist → dist-types}/components/Strip/Strip.d.ts +0 -0
- /package/{dist → dist-types}/components/Strip/index.d.ts +0 -0
- /package/{dist → dist-types}/components/SummaryButton/SummaryButton.d.ts +0 -0
- /package/{dist → dist-types}/components/SummaryButton/index.d.ts +0 -0
- /package/{dist → dist-types}/components/Switch/Switch.d.ts +0 -0
- /package/{dist → dist-types}/components/Switch/index.d.ts +0 -0
- /package/{dist → dist-types}/components/Table/Table.d.ts +0 -0
- /package/{dist → dist-types}/components/Table/index.d.ts +0 -0
- /package/{dist → dist-types}/components/TableCell/TableCell.d.ts +0 -0
- /package/{dist → dist-types}/components/TableCell/index.d.ts +0 -0
- /package/{dist → dist-types}/components/TableHeader/TableHeader.d.ts +0 -0
- /package/{dist → dist-types}/components/TableHeader/index.d.ts +0 -0
- /package/{dist → dist-types}/components/TablePagination/TablePagination.d.ts +0 -0
- /package/{dist → dist-types}/components/TablePagination/TablePaginationControls/TablePaginationControls.d.ts +0 -0
- /package/{dist → dist-types}/components/TablePagination/TablePaginationControls/index.d.ts +0 -0
- /package/{dist → dist-types}/components/TablePagination/index.d.ts +0 -0
- /package/{dist → dist-types}/components/TablePagination/utils.d.ts +0 -0
- /package/{dist → dist-types}/components/TableRow/TableRow.d.ts +0 -0
- /package/{dist → dist-types}/components/TableRow/index.d.ts +0 -0
- /package/{dist → dist-types}/components/Tabs/Tabs.d.ts +0 -0
- /package/{dist → dist-types}/components/Tabs/index.d.ts +0 -0
- /package/{dist → dist-types}/components/Textarea/Textarea.d.ts +0 -0
- /package/{dist → dist-types}/components/Textarea/index.d.ts +0 -0
- /package/{dist → dist-types}/components/Tooltip/Tooltip.d.ts +0 -0
- /package/{dist → dist-types}/components/Tooltip/index.d.ts +0 -0
- /package/{dist → dist-types}/enums.d.ts +0 -0
- /package/{dist → dist-types}/hooks/index.d.ts +0 -0
- /package/{dist → dist-types}/hooks/useId.d.ts +0 -0
- /package/{dist → dist-types}/hooks/useListener.d.ts +0 -0
- /package/{dist → dist-types}/hooks/useOnClickOutside.d.ts +0 -0
- /package/{dist → dist-types}/hooks/useOnEscapePressed.d.ts +0 -0
- /package/{dist → dist-types}/hooks/usePagination.d.ts +0 -0
- /package/{dist → dist-types}/hooks/usePrevious.d.ts +0 -0
- /package/{dist → dist-types}/hooks/useThrottle.d.ts +0 -0
- /package/{dist → dist-types}/hooks/useWindowFitment.d.ts +0 -0
- /package/{dist → dist-types}/index.d.ts +0 -0
- /package/{dist → dist-types}/types/index.d.ts +0 -0
- /package/{dist → dist-types}/utils.d.ts +0 -0
|
@@ -0,0 +1,245 @@
|
|
|
1
|
+
import classNames from "classnames";
|
|
2
|
+
import React, { useCallback, useEffect, useId, useRef, useState } from "react";
|
|
3
|
+
import usePortal from "react-useportal";
|
|
4
|
+
import { useWindowFitment, useListener } from "../../hooks";
|
|
5
|
+
export var position = {
|
|
6
|
+
btmCenter: "btm-center",
|
|
7
|
+
btmLeft: "btm-left",
|
|
8
|
+
btmRight: "btm-right",
|
|
9
|
+
left: "left",
|
|
10
|
+
right: "right",
|
|
11
|
+
topCenter: "top-center",
|
|
12
|
+
topLeft: "top-left",
|
|
13
|
+
topRight: "top-right"
|
|
14
|
+
};
|
|
15
|
+
var getPositionStyle = (pos, wrapperNode) => {
|
|
16
|
+
if (!wrapperNode) {
|
|
17
|
+
return null;
|
|
18
|
+
}
|
|
19
|
+
var dimensions = wrapperNode.getBoundingClientRect();
|
|
20
|
+
var {
|
|
21
|
+
x,
|
|
22
|
+
y,
|
|
23
|
+
height,
|
|
24
|
+
width
|
|
25
|
+
} = dimensions;
|
|
26
|
+
var left = x + window.scrollX || 0;
|
|
27
|
+
var top = y + window.scrollY || 0;
|
|
28
|
+
switch (pos) {
|
|
29
|
+
case "btm-center":
|
|
30
|
+
left += width / 2;
|
|
31
|
+
top += height;
|
|
32
|
+
break;
|
|
33
|
+
case "btm-left":
|
|
34
|
+
top += height;
|
|
35
|
+
break;
|
|
36
|
+
case "btm-right":
|
|
37
|
+
left += width;
|
|
38
|
+
top += height;
|
|
39
|
+
break;
|
|
40
|
+
case "left":
|
|
41
|
+
top += height / 2;
|
|
42
|
+
break;
|
|
43
|
+
case "right":
|
|
44
|
+
left += width;
|
|
45
|
+
top += height / 2;
|
|
46
|
+
break;
|
|
47
|
+
case "top-center":
|
|
48
|
+
left += width / 2;
|
|
49
|
+
break;
|
|
50
|
+
case "top-left":
|
|
51
|
+
break;
|
|
52
|
+
case "top-right":
|
|
53
|
+
left += width;
|
|
54
|
+
break;
|
|
55
|
+
default:
|
|
56
|
+
break;
|
|
57
|
+
}
|
|
58
|
+
return {
|
|
59
|
+
position: "absolute",
|
|
60
|
+
left,
|
|
61
|
+
top
|
|
62
|
+
};
|
|
63
|
+
};
|
|
64
|
+
export var adjustForWindow = (position, fitsWindow) => {
|
|
65
|
+
var newPosition = position;
|
|
66
|
+
if (!fitsWindow.fromLeft.fitsLeft && newPosition === "left") {
|
|
67
|
+
newPosition = "top-right";
|
|
68
|
+
}
|
|
69
|
+
if (!fitsWindow.fromRight.fitsRight && newPosition === "right") {
|
|
70
|
+
newPosition = "top-left";
|
|
71
|
+
}
|
|
72
|
+
if (!fitsWindow.fromRight.fitsLeft && newPosition.endsWith("-right")) {
|
|
73
|
+
newPosition = newPosition.replace("right", "left");
|
|
74
|
+
}
|
|
75
|
+
if (!fitsWindow.fromLeft.fitsRight && newPosition.endsWith("-left")) {
|
|
76
|
+
newPosition = newPosition.replace("left", "right");
|
|
77
|
+
}
|
|
78
|
+
if (!fitsWindow.fromTop.fitsAbove && newPosition.startsWith("top")) {
|
|
79
|
+
newPosition = newPosition.replace("top", "btm");
|
|
80
|
+
}
|
|
81
|
+
if (!fitsWindow.fromBottom.fitsBelow && newPosition.startsWith("btm")) {
|
|
82
|
+
newPosition = newPosition.replace("btm", "top");
|
|
83
|
+
}
|
|
84
|
+
if (!fitsWindow.fromLeft.fitsRight && !fitsWindow.fromRight.fitsLeft && (newPosition.endsWith("-left") || newPosition.endsWith("-right"))) {
|
|
85
|
+
newPosition = newPosition.replace("left", "center").replace("right", "center");
|
|
86
|
+
}
|
|
87
|
+
if (newPosition.endsWith("center") && (fitsWindow.fromCenter.fitsCentered.fitsRight || fitsWindow.fromCenter.fitsCentered.fitsLeft)) {
|
|
88
|
+
if (!fitsWindow.fromCenter.fitsCentered.fitsRight) {
|
|
89
|
+
newPosition = newPosition.replace("center", "right");
|
|
90
|
+
}
|
|
91
|
+
if (!fitsWindow.fromCenter.fitsCentered.fitsLeft) {
|
|
92
|
+
newPosition = newPosition.replace("center", "left");
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
return newPosition;
|
|
96
|
+
};
|
|
97
|
+
|
|
98
|
+
/**
|
|
99
|
+
* This is the [React](https://reactjs.org/) component for Vanilla [Tooltips](https://vanillaframework.io/docs/patterns/tooltips).
|
|
100
|
+
*
|
|
101
|
+
* Tooltips are text labels that appear when the user hovers over, focuses on, or touches an element on the screen.
|
|
102
|
+
*
|
|
103
|
+
* They can be used to provide information about concepts/terms/actions that are not self-explanatory or well known.
|
|
104
|
+
*
|
|
105
|
+
* An alternative use of tooltips is to provide information on a disabled actionable element, e.g. for disabled buttons, providing information about why they are disabled.
|
|
106
|
+
*/
|
|
107
|
+
var Tooltip = _ref => {
|
|
108
|
+
var {
|
|
109
|
+
autoAdjust = true,
|
|
110
|
+
children,
|
|
111
|
+
className,
|
|
112
|
+
followMouse = false,
|
|
113
|
+
message,
|
|
114
|
+
position = "top-left",
|
|
115
|
+
positionElementClassName,
|
|
116
|
+
tooltipClassName,
|
|
117
|
+
zIndex,
|
|
118
|
+
delay = 350
|
|
119
|
+
} = _ref;
|
|
120
|
+
var wrapperRef = useRef(null);
|
|
121
|
+
var messageRef = useRef(null);
|
|
122
|
+
var [adjustedPosition, setAdjustedPosition] = useState(position);
|
|
123
|
+
var [positionStyle, setPositionStyle] = useState({
|
|
124
|
+
position: "absolute",
|
|
125
|
+
// Initially position the tooltip of the screen in case it gets shown
|
|
126
|
+
// before setting the position.
|
|
127
|
+
left: -9999999,
|
|
128
|
+
top: -9999999
|
|
129
|
+
});
|
|
130
|
+
var {
|
|
131
|
+
openPortal,
|
|
132
|
+
closePortal,
|
|
133
|
+
isOpen,
|
|
134
|
+
Portal
|
|
135
|
+
} = usePortal({
|
|
136
|
+
programmaticallyOpen: true
|
|
137
|
+
});
|
|
138
|
+
var tooltipId = useId();
|
|
139
|
+
var [timer, setTimer] = useState(null);
|
|
140
|
+
var cancelableClosePortal = useCallback(() => {
|
|
141
|
+
clearTimeout(timer);
|
|
142
|
+
closePortal();
|
|
143
|
+
}, [timer, closePortal]);
|
|
144
|
+
useEffect(() => {
|
|
145
|
+
if (isOpen && !followMouse && wrapperRef.current) {
|
|
146
|
+
// Position the tooltip when it becomes visible.
|
|
147
|
+
setPositionStyle(getPositionStyle(adjustedPosition, wrapperRef.current));
|
|
148
|
+
}
|
|
149
|
+
}, [adjustedPosition, isOpen, followMouse]);
|
|
150
|
+
var mouseHandler = useCallback(evt => {
|
|
151
|
+
// Set the position of the tooltip next to the mouse.
|
|
152
|
+
setPositionStyle({
|
|
153
|
+
// Don't allow the tooltip to block the mouse events.
|
|
154
|
+
pointerEvents: "none",
|
|
155
|
+
position: "absolute",
|
|
156
|
+
left: evt.pageX,
|
|
157
|
+
top: evt.pageY
|
|
158
|
+
});
|
|
159
|
+
}, []);
|
|
160
|
+
var onUpdateWindowFitment = useCallback(fitsWindow => {
|
|
161
|
+
setAdjustedPosition(adjustForWindow(position, fitsWindow));
|
|
162
|
+
}, [setAdjustedPosition, position]);
|
|
163
|
+
|
|
164
|
+
// Handle mouse events.
|
|
165
|
+
useListener(wrapperRef.current, mouseHandler, "mousemove", true, followMouse && isOpen);
|
|
166
|
+
|
|
167
|
+
// Handle adjusting the position of the tooltip so that it remains on screen.
|
|
168
|
+
useWindowFitment(messageRef.current, wrapperRef.current, onUpdateWindowFitment, 20, isOpen, autoAdjust && followMouse);
|
|
169
|
+
var handleKeyPress = useCallback(event => {
|
|
170
|
+
if (event.key === "Escape") {
|
|
171
|
+
cancelableClosePortal();
|
|
172
|
+
}
|
|
173
|
+
}, [cancelableClosePortal]);
|
|
174
|
+
useEffect(() => {
|
|
175
|
+
window.addEventListener("keypress", handleKeyPress);
|
|
176
|
+
return () => {
|
|
177
|
+
window.removeEventListener("keypress", handleKeyPress);
|
|
178
|
+
};
|
|
179
|
+
}, [handleKeyPress]);
|
|
180
|
+
var handleBlur = e => {
|
|
181
|
+
var _wrapperRef$current, _messageRef$current, _wrapperRef$current2;
|
|
182
|
+
// do not close if the focus is within the tooltip wrapper
|
|
183
|
+
if (wrapperRef !== null && wrapperRef !== void 0 && (_wrapperRef$current = wrapperRef.current) !== null && _wrapperRef$current !== void 0 && _wrapperRef$current.contains(document.activeElement)) {
|
|
184
|
+
return;
|
|
185
|
+
}
|
|
186
|
+
if (e.relatedTarget ? !((_messageRef$current = messageRef.current) !== null && _messageRef$current !== void 0 && _messageRef$current.contains(e.relatedTarget)) && !((_wrapperRef$current2 = wrapperRef.current) !== null && _wrapperRef$current2 !== void 0 && _wrapperRef$current2.contains(e.relatedTarget)) : e.target !== messageRef.current) {
|
|
187
|
+
cancelableClosePortal();
|
|
188
|
+
}
|
|
189
|
+
};
|
|
190
|
+
var handleClick = e => {
|
|
191
|
+
var _messageRef$current2;
|
|
192
|
+
// ignore clicks within the tooltip message
|
|
193
|
+
if ((_messageRef$current2 = messageRef.current) !== null && _messageRef$current2 !== void 0 && _messageRef$current2.contains(e.target)) {
|
|
194
|
+
return;
|
|
195
|
+
}
|
|
196
|
+
e.target.focus();
|
|
197
|
+
openPortal(e);
|
|
198
|
+
};
|
|
199
|
+
var delayedOpenPortal = useCallback(() => {
|
|
200
|
+
if (isOpen) {
|
|
201
|
+
return;
|
|
202
|
+
}
|
|
203
|
+
if (timer) {
|
|
204
|
+
clearTimeout(timer);
|
|
205
|
+
}
|
|
206
|
+
var timeout = setTimeout(() => openPortal(), delay);
|
|
207
|
+
setTimer(timeout);
|
|
208
|
+
}, [delay, openPortal, timer, isOpen]);
|
|
209
|
+
return /*#__PURE__*/React.createElement(React.Fragment, null, message ? /*#__PURE__*/React.createElement("span", {
|
|
210
|
+
className: className,
|
|
211
|
+
onBlur: handleBlur,
|
|
212
|
+
onClick: handleClick,
|
|
213
|
+
onFocus: openPortal,
|
|
214
|
+
onMouseOut: handleBlur,
|
|
215
|
+
onMouseOver: delayedOpenPortal
|
|
216
|
+
}, /*#__PURE__*/React.createElement("span", {
|
|
217
|
+
className: positionElementClassName,
|
|
218
|
+
ref: wrapperRef,
|
|
219
|
+
style: {
|
|
220
|
+
display: "inline-block"
|
|
221
|
+
}
|
|
222
|
+
}, React.Children.map(children, child => child && /*#__PURE__*/React.isValidElement(child) ? /*#__PURE__*/React.cloneElement(child, {
|
|
223
|
+
"aria-describedby": isOpen ? tooltipId : undefined
|
|
224
|
+
}) : child)), isOpen ? /*#__PURE__*/React.createElement(Portal, null, /*#__PURE__*/React.createElement("span", {
|
|
225
|
+
className: classNames("p-tooltip--".concat(adjustedPosition), "is-detached", tooltipClassName),
|
|
226
|
+
"data-testid": "tooltip-portal",
|
|
227
|
+
style: positionStyle
|
|
228
|
+
}, /*#__PURE__*/React.createElement("span", {
|
|
229
|
+
role: "tooltip",
|
|
230
|
+
className: "p-tooltip__message",
|
|
231
|
+
onClick: event => {
|
|
232
|
+
// Prevent clicks inside the message from bubbling to parent
|
|
233
|
+
// click handlers.
|
|
234
|
+
event.stopPropagation();
|
|
235
|
+
},
|
|
236
|
+
ref: messageRef,
|
|
237
|
+
id: tooltipId,
|
|
238
|
+
style: {
|
|
239
|
+
zIndex: zIndex
|
|
240
|
+
}
|
|
241
|
+
}, message))) : null) : /*#__PURE__*/React.createElement("span", {
|
|
242
|
+
className: className
|
|
243
|
+
}, children));
|
|
244
|
+
};
|
|
245
|
+
export default Tooltip;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default, position } from "./Tooltip";
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export { useOnClickOutside, useClickOutside } from "./useOnClickOutside";
|
|
2
|
+
export { useId } from "./useId";
|
|
3
|
+
export { useListener } from "./useListener";
|
|
4
|
+
export { useOnEscapePressed } from "./useOnEscapePressed";
|
|
5
|
+
export { usePrevious } from "./usePrevious";
|
|
6
|
+
export { useThrottle } from "./useThrottle";
|
|
7
|
+
export { usePagination } from "./usePagination";
|
|
8
|
+
export { useWindowFitment } from "./useWindowFitment";
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { useId as useIdReact } from "react";
|
|
2
|
+
import { IS_DEV } from "../utils";
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* @deprecated Code component is deprecated. Use CodeSnippet component or inline `<code>` instead.
|
|
6
|
+
*/
|
|
7
|
+
export var useId = () => {
|
|
8
|
+
var id = useIdReact();
|
|
9
|
+
if (IS_DEV) {
|
|
10
|
+
console.warn('The useId hook has been deprecated. Use `import { useId } from "react";` instead.');
|
|
11
|
+
}
|
|
12
|
+
return id;
|
|
13
|
+
};
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { useEffect, useRef } from "react";
|
|
2
|
+
import { useThrottle } from "./useThrottle";
|
|
3
|
+
import { usePrevious } from "./usePrevious";
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* A hook that handles attaching/removing listeners and smartly reattaching if
|
|
7
|
+
* any of the attributes change.
|
|
8
|
+
* @param targetNode The node to attach the listener to.
|
|
9
|
+
* @param callback The function to call from the listener.
|
|
10
|
+
* @param eventType The event name.
|
|
11
|
+
* @param shouldThrottle Whether the callback calls should be throttled.
|
|
12
|
+
* @param shouldListen When the listener should be active.
|
|
13
|
+
* @param options Native event listener options.
|
|
14
|
+
*/
|
|
15
|
+
export var useListener = function useListener(targetNode, callback, eventType) {
|
|
16
|
+
var shouldThrottle = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
|
|
17
|
+
var shouldListen = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true;
|
|
18
|
+
var options = arguments.length > 5 ? arguments[5] : undefined;
|
|
19
|
+
var isListening = useRef(false);
|
|
20
|
+
var throttle = useThrottle(callback);
|
|
21
|
+
var eventListener = useRef(shouldThrottle ? throttle : callback);
|
|
22
|
+
var previousEventType = usePrevious(eventType);
|
|
23
|
+
var previousShouldThrottle = usePrevious(shouldThrottle);
|
|
24
|
+
var previousTargetNode = usePrevious(targetNode);
|
|
25
|
+
var previousCallback = usePrevious(callback);
|
|
26
|
+
var previousOptions = usePrevious(options);
|
|
27
|
+
useEffect(() => {
|
|
28
|
+
// If any of the props related to the attached listener changed then the
|
|
29
|
+
// listener needs to be re-attached.
|
|
30
|
+
var listenerAttributesChanged = callback !== previousCallback || eventType !== previousEventType || shouldThrottle !== previousShouldThrottle || targetNode !== previousTargetNode || options !== previousOptions;
|
|
31
|
+
if (isListening.current && (!shouldListen || listenerAttributesChanged)) {
|
|
32
|
+
previousTargetNode.removeEventListener(previousEventType, eventListener.current, previousOptions);
|
|
33
|
+
isListening.current = false;
|
|
34
|
+
}
|
|
35
|
+
if (shouldThrottle !== previousShouldThrottle || callback !== previousCallback) {
|
|
36
|
+
// Set the listener to the callback, or used the throttled callback.
|
|
37
|
+
eventListener.current = shouldThrottle ? throttle : callback;
|
|
38
|
+
}
|
|
39
|
+
if (targetNode && shouldListen && !isListening.current) {
|
|
40
|
+
targetNode.addEventListener(eventType, eventListener.current, options);
|
|
41
|
+
isListening.current = true;
|
|
42
|
+
}
|
|
43
|
+
}, [callback, eventType, options, previousCallback, previousEventType, previousOptions, previousShouldThrottle, previousTargetNode, shouldListen, shouldThrottle, targetNode, throttle]);
|
|
44
|
+
useEffect(() => () => {
|
|
45
|
+
// Unattach the listener if the component gets unmounted while
|
|
46
|
+
// listening.
|
|
47
|
+
if (targetNode && isListening.current) {
|
|
48
|
+
targetNode.removeEventListener(eventType, eventListener.current, options);
|
|
49
|
+
}
|
|
50
|
+
}, [eventType, targetNode, options]);
|
|
51
|
+
};
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { useCallback, useEffect, useRef } from "react";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Handle clicks outside an element.
|
|
5
|
+
*/
|
|
6
|
+
export var useOnClickOutside = function useOnClickOutside(elementRef, onClickOutside) {
|
|
7
|
+
var {
|
|
8
|
+
isEnabled
|
|
9
|
+
} = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {
|
|
10
|
+
isEnabled: true
|
|
11
|
+
};
|
|
12
|
+
var handleClickOutside = useCallback(evt => {
|
|
13
|
+
var _evt$target, _elementRef$current;
|
|
14
|
+
var target = evt.target;
|
|
15
|
+
// The target might be something like an SVG node which doesn't provide
|
|
16
|
+
// the class name as a string.
|
|
17
|
+
var isValidTarget = typeof (evt === null || evt === void 0 || (_evt$target = evt.target) === null || _evt$target === void 0 ? void 0 : _evt$target.className) === "string";
|
|
18
|
+
if (!isValidTarget || elementRef !== null && elementRef !== void 0 && elementRef.current && !((_elementRef$current = elementRef.current) !== null && _elementRef$current !== void 0 && _elementRef$current.contains(target)) && elementRef.current !== target) {
|
|
19
|
+
onClickOutside();
|
|
20
|
+
}
|
|
21
|
+
}, [elementRef, onClickOutside]);
|
|
22
|
+
useEffect(() => {
|
|
23
|
+
if (isEnabled) {
|
|
24
|
+
document.addEventListener("click", handleClickOutside, false);
|
|
25
|
+
}
|
|
26
|
+
return () => document.removeEventListener("click", handleClickOutside, false);
|
|
27
|
+
}, [handleClickOutside, isEnabled]);
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* Handle clicks outside an element.
|
|
32
|
+
* @returns A ref to pass to the element to handle clicks outside of.
|
|
33
|
+
*/
|
|
34
|
+
export var useClickOutside = onClickOutside => {
|
|
35
|
+
var ref = useRef(null);
|
|
36
|
+
useOnClickOutside(ref, onClickOutside);
|
|
37
|
+
return ref;
|
|
38
|
+
};
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { useCallback, useEffect } from "react";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Handle the escape key pressed.
|
|
5
|
+
*/
|
|
6
|
+
export var useOnEscapePressed = function useOnEscapePressed(onEscape) {
|
|
7
|
+
var {
|
|
8
|
+
isEnabled
|
|
9
|
+
} = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {
|
|
10
|
+
isEnabled: true
|
|
11
|
+
};
|
|
12
|
+
var keyDown = useCallback(evt => {
|
|
13
|
+
if (evt.code === "Escape") {
|
|
14
|
+
onEscape();
|
|
15
|
+
}
|
|
16
|
+
}, [onEscape]);
|
|
17
|
+
useEffect(() => {
|
|
18
|
+
if (isEnabled) {
|
|
19
|
+
document.addEventListener("keydown", keyDown);
|
|
20
|
+
}
|
|
21
|
+
return () => {
|
|
22
|
+
document.removeEventListener("keydown", keyDown);
|
|
23
|
+
};
|
|
24
|
+
}, [keyDown, isEnabled]);
|
|
25
|
+
};
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { useMemo, useEffect, useState } from "react";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* A hook that handles pagination.
|
|
5
|
+
* @param data - The data array to paginate.
|
|
6
|
+
* @param {Object} options
|
|
7
|
+
* @param {number} [options.itemsPerPage] - Number of items per page. Returns all items if no value has been provided.
|
|
8
|
+
* @param {number} [options.initialPage=1] - Initial page number. Defaults to 1.
|
|
9
|
+
* @param {boolean} [options.autoResetPage=false] - Whether to reset the page number to 1 when the data changes.
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
export function usePagination(data, options) {
|
|
13
|
+
var _data$length;
|
|
14
|
+
var defaultOptions = {
|
|
15
|
+
initialPage: 1,
|
|
16
|
+
autoResetPage: false
|
|
17
|
+
};
|
|
18
|
+
var {
|
|
19
|
+
itemsPerPage,
|
|
20
|
+
initialPage,
|
|
21
|
+
autoResetPage
|
|
22
|
+
} = Object.assign(defaultOptions, options);
|
|
23
|
+
var totalItems = (_data$length = data === null || data === void 0 ? void 0 : data.length) !== null && _data$length !== void 0 ? _data$length : 0;
|
|
24
|
+
var initialPageIndex = initialPage > 0 ? initialPage - 1 : 0;
|
|
25
|
+
var [pageIndex, setPageIndex] = useState(initialPageIndex);
|
|
26
|
+
var startIndex = typeof itemsPerPage === "number" ? pageIndex * itemsPerPage : 0;
|
|
27
|
+
var paginate = pageNumber => setPageIndex(pageNumber - 1);
|
|
28
|
+
useEffect(() => {
|
|
29
|
+
if (typeof itemsPerPage === "number" && startIndex >= totalItems) {
|
|
30
|
+
!autoResetPage && Math.floor(totalItems / itemsPerPage) > 0 ?
|
|
31
|
+
// go to the last available page if the current page is out of bounds
|
|
32
|
+
setPageIndex(Math.floor(totalItems / itemsPerPage) - 1) :
|
|
33
|
+
// go to the initial page if autoResetPage is true
|
|
34
|
+
setPageIndex(0);
|
|
35
|
+
}
|
|
36
|
+
}, [pageIndex, startIndex, setPageIndex, totalItems, itemsPerPage, autoResetPage]);
|
|
37
|
+
var pageData = useMemo(() => typeof itemsPerPage === "number" ? data === null || data === void 0 ? void 0 : data.slice(startIndex, startIndex + itemsPerPage) : data, [startIndex, data, itemsPerPage]);
|
|
38
|
+
return {
|
|
39
|
+
pageData,
|
|
40
|
+
currentPage: pageIndex + 1,
|
|
41
|
+
paginate,
|
|
42
|
+
itemsPerPage,
|
|
43
|
+
totalItems
|
|
44
|
+
};
|
|
45
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { useEffect, useRef } from "react";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* A hook to handle storing the previous value of anything.
|
|
5
|
+
* @param value - The value to watch.
|
|
6
|
+
* @param setInitial - Whether it should initialise with the current value.
|
|
7
|
+
* @return The previous value.
|
|
8
|
+
*/
|
|
9
|
+
export var usePrevious = function usePrevious(value) {
|
|
10
|
+
var setInitial = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
|
|
11
|
+
var ref = useRef(setInitial ? value : undefined);
|
|
12
|
+
useEffect(() => {
|
|
13
|
+
ref.current = value;
|
|
14
|
+
}, [value]);
|
|
15
|
+
return ref.current;
|
|
16
|
+
};
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { useCallback, useEffect, useRef } from "react";
|
|
2
|
+
export var THROTTLE_DELAY = 1000 / 60;
|
|
3
|
+
// eslint-disable-line @typescript-eslint/no-explicit-any
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* A hook to handle throttling calls to a function.
|
|
7
|
+
* @param callback The function to throttle.
|
|
8
|
+
* @param delay The throttle delay in ms.
|
|
9
|
+
* @return The callback function wrapped in the throttle.
|
|
10
|
+
*/
|
|
11
|
+
export var useThrottle = function useThrottle(callback) {
|
|
12
|
+
var delay = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : THROTTLE_DELAY;
|
|
13
|
+
var timeout = useRef();
|
|
14
|
+
var lastCall = useRef();
|
|
15
|
+
var lastArgs = useRef(null);
|
|
16
|
+
var throttle = useCallback(function () {
|
|
17
|
+
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
18
|
+
args[_key] = arguments[_key];
|
|
19
|
+
}
|
|
20
|
+
lastArgs.current = args;
|
|
21
|
+
var callCallback = () => {
|
|
22
|
+
callback(...lastArgs.current);
|
|
23
|
+
lastCall.current = Date.now();
|
|
24
|
+
timeout.current = null;
|
|
25
|
+
};
|
|
26
|
+
var createTimeout = () => {
|
|
27
|
+
timeout.current = window.setTimeout(() => {
|
|
28
|
+
callCallback();
|
|
29
|
+
timeout.current = null;
|
|
30
|
+
}, delay);
|
|
31
|
+
};
|
|
32
|
+
if (!lastCall.current) {
|
|
33
|
+
// Initially call the callback and start a timeout for the next call.
|
|
34
|
+
callCallback();
|
|
35
|
+
createTimeout();
|
|
36
|
+
} else if (!timeout.current && Date.now() - lastCall.current > delay) {
|
|
37
|
+
// If a timeout isn't active then create a new one if the delay time
|
|
38
|
+
// has elapsed.
|
|
39
|
+
createTimeout();
|
|
40
|
+
}
|
|
41
|
+
}, [callback, delay]);
|
|
42
|
+
useEffect(() => () => {
|
|
43
|
+
// Clear the timeout when unmounting.
|
|
44
|
+
if (timeout.current) {
|
|
45
|
+
clearTimeout(timeout.current);
|
|
46
|
+
}
|
|
47
|
+
}, []);
|
|
48
|
+
return throttle;
|
|
49
|
+
};
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import { useCallback, useEffect, useRef } from "react";
|
|
2
|
+
import { useListener } from "./useListener";
|
|
3
|
+
/**
|
|
4
|
+
* A hook to determine if an element fits on the window.
|
|
5
|
+
* @param targetNode The element to try and fit on the window.
|
|
6
|
+
* @param referenceNode The element to use to position the target.
|
|
7
|
+
* @param callback The function to call when updating fitment info.
|
|
8
|
+
* @param spacer An additional space to leave between the target and reference.
|
|
9
|
+
* @param shouldCheck Whether the fitment info should be being checked.
|
|
10
|
+
* @param fromMouse Whether the target should be being positioned in relation
|
|
11
|
+
* to the mouse. In this case refernceNode will be used to
|
|
12
|
+
* listen for mouseover events.
|
|
13
|
+
*/
|
|
14
|
+
export var useWindowFitment = function useWindowFitment(targetNode, referenceNode, callback) {
|
|
15
|
+
var spacer = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;
|
|
16
|
+
var shouldCheck = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true;
|
|
17
|
+
var fromMouse = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : false;
|
|
18
|
+
var htmlRef = useRef(document.querySelector("html"));
|
|
19
|
+
var update = useCallback(evt => {
|
|
20
|
+
var referenceCoordinates;
|
|
21
|
+
if (fromMouse) {
|
|
22
|
+
if (evt) {
|
|
23
|
+
referenceCoordinates = {
|
|
24
|
+
// The mouse is a single point so use 0 for the height and width.
|
|
25
|
+
height: 0,
|
|
26
|
+
left: evt.x || 0,
|
|
27
|
+
top: evt.y || 0,
|
|
28
|
+
width: 0
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
} else if (referenceNode) {
|
|
32
|
+
referenceCoordinates = referenceNode.getBoundingClientRect();
|
|
33
|
+
}
|
|
34
|
+
if (shouldCheck && targetNode && referenceCoordinates) {
|
|
35
|
+
var {
|
|
36
|
+
height: targetHeight,
|
|
37
|
+
width: targetWidth
|
|
38
|
+
} = targetNode.getBoundingClientRect();
|
|
39
|
+
var {
|
|
40
|
+
height: referenceHeight,
|
|
41
|
+
left: referenceLeft,
|
|
42
|
+
top: referenceTop,
|
|
43
|
+
width: referenceWidth
|
|
44
|
+
} = referenceCoordinates;
|
|
45
|
+
var referenceBottom = referenceTop + referenceHeight;
|
|
46
|
+
var referenceRight = referenceLeft + referenceWidth;
|
|
47
|
+
var referenceCenterX = referenceLeft + referenceWidth / 2;
|
|
48
|
+
var referenceCenterY = referenceTop + referenceHeight / 2;
|
|
49
|
+
var windowLeft = htmlRef.current.scrollLeft;
|
|
50
|
+
var windowRight = window.innerWidth - htmlRef.current.scrollLeft;
|
|
51
|
+
var windowTop = 0;
|
|
52
|
+
var windowBottom = window.innerHeight;
|
|
53
|
+
var heightIncludingSpace = targetHeight + spacer;
|
|
54
|
+
var widthIncludingSpace = targetWidth + spacer;
|
|
55
|
+
var widthFromCenter = targetWidth / 2;
|
|
56
|
+
var heightFromCenter = targetHeight / 2;
|
|
57
|
+
callback({
|
|
58
|
+
fromTop: {
|
|
59
|
+
fitsAbove: referenceTop - heightIncludingSpace > windowTop,
|
|
60
|
+
fitsBelow: referenceTop + heightIncludingSpace < windowBottom,
|
|
61
|
+
spaceAbove: Math.abs(windowTop - referenceTop),
|
|
62
|
+
spaceBelow: windowBottom - referenceTop
|
|
63
|
+
},
|
|
64
|
+
fromBottom: {
|
|
65
|
+
fitsAbove: referenceBottom - heightIncludingSpace > windowTop,
|
|
66
|
+
fitsBelow: referenceBottom + heightIncludingSpace < windowBottom,
|
|
67
|
+
spaceAbove: Math.abs(windowTop - referenceBottom),
|
|
68
|
+
spaceBelow: windowBottom - referenceBottom
|
|
69
|
+
},
|
|
70
|
+
fromLeft: {
|
|
71
|
+
fitsLeft: referenceLeft - widthIncludingSpace > windowLeft,
|
|
72
|
+
fitsRight: referenceLeft + widthIncludingSpace < windowRight,
|
|
73
|
+
spaceLeft: Math.abs(windowLeft - referenceLeft),
|
|
74
|
+
spaceRight: windowRight - referenceLeft
|
|
75
|
+
},
|
|
76
|
+
fromRight: {
|
|
77
|
+
fitsLeft: referenceRight - widthIncludingSpace > windowLeft,
|
|
78
|
+
fitsRight: referenceRight + widthIncludingSpace < windowRight,
|
|
79
|
+
spaceLeft: Math.abs(windowLeft - referenceRight),
|
|
80
|
+
spaceRight: windowRight - referenceRight
|
|
81
|
+
},
|
|
82
|
+
fromCenter: {
|
|
83
|
+
fitsLeft: referenceCenterX - widthIncludingSpace > windowLeft,
|
|
84
|
+
fitsRight: referenceCenterX + widthIncludingSpace < windowRight,
|
|
85
|
+
fitsAbove: referenceCenterY - heightIncludingSpace > windowTop,
|
|
86
|
+
fitsBelow: referenceCenterY + heightIncludingSpace < windowBottom,
|
|
87
|
+
spaceAbove: Math.abs(windowTop - referenceCenterY),
|
|
88
|
+
spaceBelow: windowBottom - referenceCenterY,
|
|
89
|
+
spaceLeft: Math.abs(windowLeft - referenceCenterX),
|
|
90
|
+
spaceRight: windowRight - referenceCenterX,
|
|
91
|
+
fitsCentered: {
|
|
92
|
+
fitsLeft: referenceCenterX - widthFromCenter > windowLeft,
|
|
93
|
+
fitsRight: referenceCenterX + widthFromCenter < windowRight,
|
|
94
|
+
fitsAbove: referenceCenterY - heightFromCenter > windowTop,
|
|
95
|
+
fitsBelow: referenceCenterY + heightFromCenter < windowBottom
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
}, [shouldCheck, targetNode, callback, spacer, fromMouse, referenceNode]);
|
|
101
|
+
useListener(window, update, "resize", true, shouldCheck && !fromMouse);
|
|
102
|
+
useListener(window, update, "scroll", true, shouldCheck && !fromMouse);
|
|
103
|
+
useListener(referenceNode, update, "mousemove", true, fromMouse && shouldCheck);
|
|
104
|
+
useEffect(() => {
|
|
105
|
+
if (!fromMouse) {
|
|
106
|
+
update();
|
|
107
|
+
}
|
|
108
|
+
}, [fromMouse, update]);
|
|
109
|
+
};
|