@laerdal/life-react-components 6.0.0-dev.7.full → 6.0.0
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 +1 -1
- package/dist/Accordion/__tests__/AccordionMenu.test.tsx +42 -0
- package/dist/Accordion/__tests__/ContentAccordion.test.tsx +150 -0
- package/dist/AuthPage/__tests__/AuthPage.test.tsx +27 -0
- package/dist/Banners/__tests__/Banner.test.tsx +47 -0
- package/dist/Banners/__tests__/OverviewBanner.test.tsx +20 -0
- package/dist/Breadcrumb/__tests__/Breadcrumb.test.tsx +78 -0
- package/dist/Button/DualFunctionButton.cjs +4 -4
- package/dist/Button/DualFunctionButton.cjs.map +1 -1
- package/dist/Button/DualFunctionButton.d.ts +2 -2
- package/dist/Button/DualFunctionButton.js +4 -4
- package/dist/Button/DualFunctionButton.js.map +1 -1
- package/dist/Button/{Button.cjs → TextButton.cjs} +179 -92
- package/dist/Button/TextButton.cjs.map +1 -0
- package/dist/Button/TextButton.d.ts +70 -0
- package/dist/Button/{Button.js → TextButton.js} +178 -91
- package/dist/Button/TextButton.js.map +1 -0
- package/dist/Button/__tests__/BackButton.test.tsx +32 -0
- package/dist/Button/__tests__/Button.test.tsx +45 -0
- package/dist/Button/__tests__/DualButton.test.tsx +119 -0
- package/dist/Button/__tests__/TextButton.test.tsx +45 -0
- package/dist/Button/index.cjs +11 -11
- package/dist/Button/index.cjs.map +1 -1
- package/dist/Button/index.d.ts +2 -2
- package/dist/Button/index.js +2 -2
- package/dist/Button/index.js.map +1 -1
- package/dist/Card/HorizontalCard/__tests__/HorizontalCard.test.tsx +71 -0
- package/dist/Card/VerticalCard/{Card.cjs → VerticalCard.cjs} +62 -26
- package/dist/Card/VerticalCard/VerticalCard.cjs.map +1 -0
- package/dist/Card/VerticalCard/VerticalCard.d.ts +25 -0
- package/dist/Card/VerticalCard/{Card.js → VerticalCard.js} +62 -26
- package/dist/Card/VerticalCard/VerticalCard.js.map +1 -0
- package/dist/Card/VerticalCard/{CardBottomSection.cjs → VerticalCardBottomSection.cjs} +45 -27
- package/dist/Card/VerticalCard/VerticalCardBottomSection.cjs.map +1 -0
- package/dist/Card/VerticalCard/VerticalCardBottomSection.d.ts +53 -0
- package/dist/Card/VerticalCard/{CardBottomSection.js → VerticalCardBottomSection.js} +45 -27
- package/dist/Card/VerticalCard/VerticalCardBottomSection.js.map +1 -0
- package/dist/Card/VerticalCard/{CardMiddleSection.cjs → VerticalCardMiddleSection.cjs} +46 -23
- package/dist/Card/VerticalCard/VerticalCardMiddleSection.cjs.map +1 -0
- package/dist/Card/VerticalCard/VerticalCardMiddleSection.d.ts +42 -0
- package/dist/Card/VerticalCard/{CardMiddleSection.js → VerticalCardMiddleSection.js} +45 -23
- package/dist/Card/VerticalCard/VerticalCardMiddleSection.js.map +1 -0
- package/dist/Card/VerticalCard/{CardTopSection.cjs → VerticalCardTopSection.cjs} +18 -16
- package/dist/Card/VerticalCard/VerticalCardTopSection.cjs.map +1 -0
- package/dist/Card/VerticalCard/{CardTopSection.d.ts → VerticalCardTopSection.d.ts} +8 -8
- package/dist/Card/VerticalCard/{CardTopSection.js → VerticalCardTopSection.js} +17 -15
- package/dist/Card/VerticalCard/VerticalCardTopSection.js.map +1 -0
- package/dist/Card/VerticalCard/__tests__/VerticalCard.test.tsx +124 -0
- package/dist/Card/VerticalCard/index.cjs +25 -25
- package/dist/Card/VerticalCard/index.cjs.map +1 -1
- package/dist/Card/VerticalCard/index.d.ts +7 -7
- package/dist/Card/VerticalCard/index.js +7 -7
- package/dist/Card/VerticalCard/index.js.map +1 -1
- package/dist/Chips/ActionChip.cjs +6 -0
- package/dist/Chips/ActionChip.cjs.map +1 -1
- package/dist/Chips/ActionChip.js +6 -0
- package/dist/Chips/ActionChip.js.map +1 -1
- package/dist/Chips/ChipStyles.cjs +210 -31
- package/dist/Chips/ChipStyles.cjs.map +1 -1
- package/dist/Chips/ChipStyles.js +210 -31
- package/dist/Chips/ChipStyles.js.map +1 -1
- package/dist/Chips/ChoiceChips.cjs +1 -1
- package/dist/Chips/ChoiceChips.cjs.map +1 -1
- package/dist/Chips/ChoiceChips.js +1 -1
- package/dist/Chips/ChoiceChips.js.map +1 -1
- package/dist/Chips/FilterChip.cjs +8 -1
- package/dist/Chips/FilterChip.cjs.map +1 -1
- package/dist/Chips/FilterChip.js +8 -1
- package/dist/Chips/FilterChip.js.map +1 -1
- package/dist/Chips/InputChip.cjs +14 -0
- package/dist/Chips/InputChip.cjs.map +1 -1
- package/dist/Chips/InputChip.js +14 -0
- package/dist/Chips/InputChip.js.map +1 -1
- package/dist/Chips/__tests__/ActionChip.test.tsx +94 -0
- package/dist/Chips/__tests__/ChoiceChips.test.tsx +79 -0
- package/dist/Chips/__tests__/FilterChip.test.tsx +95 -0
- package/dist/Chips/__tests__/InputChip.test.tsx +155 -0
- package/dist/ChipsInput/ChipInputField.cjs +8 -2
- package/dist/ChipsInput/ChipInputField.cjs.map +1 -1
- package/dist/ChipsInput/ChipInputField.js +8 -2
- package/dist/ChipsInput/ChipInputField.js.map +1 -1
- package/dist/ChipsInput/__tests__/ChipDropdownInput.test.tsx +100 -0
- package/dist/ChipsInput/__tests__/ChipInputFields.test.tsx +155 -0
- package/dist/Dropdown/DropdownContent.cjs +2 -2
- package/dist/Dropdown/DropdownContent.cjs.map +1 -1
- package/dist/Dropdown/DropdownContent.js +2 -2
- package/dist/Dropdown/DropdownContent.js.map +1 -1
- package/dist/Dropdown/__tests__/DropdownFilter.test.tsx +39 -0
- package/dist/Footer/Components/FooterTop.cjs +3 -0
- package/dist/Footer/Components/FooterTop.cjs.map +1 -1
- package/dist/Footer/Components/FooterTop.js +3 -0
- package/dist/Footer/Components/FooterTop.js.map +1 -1
- package/dist/Footer/__tests__/Footer.test.tsx +182 -0
- package/dist/GlobalNavigationBar/Logo.cjs +2 -1
- package/dist/GlobalNavigationBar/Logo.cjs.map +1 -1
- package/dist/GlobalNavigationBar/Logo.js +2 -1
- package/dist/GlobalNavigationBar/Logo.js.map +1 -1
- package/dist/GlobalNavigationBar/__tests__/Logo.test.tsx +39 -0
- package/dist/GlobalNavigationBar/desktop/MainMenu.cjs +10 -1
- package/dist/GlobalNavigationBar/desktop/MainMenu.cjs.map +1 -1
- package/dist/GlobalNavigationBar/desktop/MainMenu.js +10 -1
- package/dist/GlobalNavigationBar/desktop/MainMenu.js.map +1 -1
- package/dist/GlobalNavigationBar/desktop/RightSideNav.cjs +5 -4
- package/dist/GlobalNavigationBar/desktop/RightSideNav.cjs.map +1 -1
- package/dist/GlobalNavigationBar/desktop/RightSideNav.js +6 -5
- package/dist/GlobalNavigationBar/desktop/RightSideNav.js.map +1 -1
- package/dist/GlobalNavigationBar/desktop/UserMenu.cjs +1 -1
- package/dist/GlobalNavigationBar/desktop/UserMenu.cjs.map +1 -1
- package/dist/GlobalNavigationBar/desktop/UserMenu.js +2 -2
- package/dist/GlobalNavigationBar/desktop/UserMenu.js.map +1 -1
- package/dist/GlobalNavigationBar/desktop/__tests__/DesktopActions.test.tsx +108 -0
- package/dist/GlobalNavigationBar/desktop/__tests__/ExtendedMainMenu.test.tsx +28 -0
- package/dist/GlobalNavigationBar/desktop/__tests__/MainMenu.test.tsx +55 -0
- package/dist/GlobalNavigationBar/desktop/__tests__/RightSideNav.test.tsx +45 -0
- package/dist/GlobalNavigationBar/desktop/__tests__/UserMenu.test.tsx +125 -0
- package/dist/GlobalNavigationBar/mobile/CommonStyles.cjs.map +1 -1
- package/dist/GlobalNavigationBar/mobile/CommonStyles.js.map +1 -1
- package/dist/GlobalNavigationBar/mobile/MobileActionContainer.cjs +1 -1
- package/dist/GlobalNavigationBar/mobile/MobileActionContainer.cjs.map +1 -1
- package/dist/GlobalNavigationBar/mobile/MobileActionContainer.js +2 -2
- package/dist/GlobalNavigationBar/mobile/MobileActionContainer.js.map +1 -1
- package/dist/GlobalNavigationBar/mobile/__tests__/MobileMenu.test.tsx +317 -0
- package/dist/GlobalNavigationBar/mobile/__tests__/MobileMenuContent.test.tsx +294 -0
- package/dist/GlobalNavigationBar/mobile/__tests__/MobileMenuHeader.test.tsx +195 -0
- package/dist/GlobalNavigationBar/types.cjs.map +1 -1
- package/dist/GlobalNavigationBar/types.d.ts +2 -2
- package/dist/GlobalNavigationBar/types.js.map +1 -1
- package/dist/HyperLink/HyperLink.cjs +18 -2
- package/dist/HyperLink/HyperLink.cjs.map +1 -1
- package/dist/HyperLink/HyperLink.d.ts +2 -0
- package/dist/HyperLink/HyperLink.js +18 -2
- package/dist/HyperLink/HyperLink.js.map +1 -1
- package/dist/HyperLink/styling.cjs +4 -0
- package/dist/HyperLink/styling.cjs.map +1 -1
- package/dist/HyperLink/styling.js +4 -0
- package/dist/HyperLink/styling.js.map +1 -1
- package/dist/InputFields/DatepickerField.cjs +21 -5
- package/dist/InputFields/DatepickerField.cjs.map +1 -1
- package/dist/InputFields/DatepickerField.d.ts +1 -1
- package/dist/InputFields/DatepickerField.js +21 -5
- package/dist/InputFields/DatepickerField.js.map +1 -1
- package/dist/InputFields/NumberField.cjs +4 -0
- package/dist/InputFields/NumberField.cjs.map +1 -1
- package/dist/InputFields/NumberField.js +4 -0
- package/dist/InputFields/NumberField.js.map +1 -1
- package/dist/InputFields/RadioButton.cjs +2 -2
- package/dist/InputFields/RadioButton.cjs.map +1 -1
- package/dist/InputFields/RadioButton.d.ts +4 -4
- package/dist/InputFields/RadioButton.js +2 -2
- package/dist/InputFields/RadioButton.js.map +1 -1
- package/dist/InputFields/__tests__/NumberField.test.tsx +67 -0
- package/dist/InputFields/__tests__/NumberInput.test.tsx +68 -0
- package/dist/InputFields/__tests__/QuickSearch.test.tsx +42 -0
- package/dist/InputFields/components/SearchBarInput.cjs +5 -0
- package/dist/InputFields/components/SearchBarInput.cjs.map +1 -1
- package/dist/InputFields/components/SearchBarInput.js +5 -0
- package/dist/InputFields/components/SearchBarInput.js.map +1 -1
- package/dist/LinearProgress/__tests__/LinearProgress.test.tsx +25 -0
- package/dist/List/__tests__/ListRow.test.tsx +18 -0
- package/dist/LoadingPage/__tests__/GlobalLoadingPage.test.tsx +23 -0
- package/dist/MiniProductCard/MiniProductCard.cjs +15 -1
- package/dist/MiniProductCard/MiniProductCard.cjs.map +1 -1
- package/dist/MiniProductCard/MiniProductCard.d.ts +1 -0
- package/dist/MiniProductCard/MiniProductCard.js +15 -1
- package/dist/MiniProductCard/MiniProductCard.js.map +1 -1
- package/dist/Modals/ModalContainer.cjs +102 -83
- package/dist/Modals/ModalContainer.cjs.map +1 -1
- package/dist/Modals/ModalContainer.d.ts +20 -1
- package/dist/Modals/ModalContainer.js +103 -84
- package/dist/Modals/ModalContainer.js.map +1 -1
- package/dist/Modals/ModalContent.cjs +7 -3
- package/dist/Modals/ModalContent.cjs.map +1 -1
- package/dist/Modals/ModalContent.js +8 -4
- package/dist/Modals/ModalContent.js.map +1 -1
- package/dist/Modals/ModalDialog.cjs +2 -2
- package/dist/Modals/ModalDialog.cjs.map +1 -1
- package/dist/Modals/ModalDialog.js +3 -3
- package/dist/Modals/ModalDialog.js.map +1 -1
- package/dist/Modals/ModalStyles.cjs +12 -0
- package/dist/Modals/ModalStyles.cjs.map +1 -1
- package/dist/Modals/ModalStyles.js +12 -0
- package/dist/Modals/ModalStyles.js.map +1 -1
- package/dist/Modals/ModalTypes.cjs.map +1 -1
- package/dist/Modals/ModalTypes.d.ts +3 -3
- package/dist/Modals/ModalTypes.js.map +1 -1
- package/dist/Modals/__tests__/Modal.test.tsx +169 -0
- package/dist/Modals/__tests__/ModalContainer.test.tsx +77 -0
- package/dist/Modals/__tests__/ModalContent.test.tsx +126 -0
- package/dist/NavItem/NavItem.cjs +7 -1
- package/dist/NavItem/NavItem.cjs.map +1 -1
- package/dist/NavItem/NavItem.js +7 -1
- package/dist/NavItem/NavItem.js.map +1 -1
- package/dist/NavItem/__tests__/NavItem.test.ts +6 -0
- package/dist/Navigation/NavigationProvider.cjs.map +1 -1
- package/dist/Navigation/NavigationProvider.d.ts +3 -0
- package/dist/Navigation/NavigationProvider.js.map +1 -1
- package/dist/NotificationDot/__tests__/NotificationDot.test.tsx +33 -0
- package/dist/Paginator/Paginator.cjs +18 -14
- package/dist/Paginator/Paginator.cjs.map +1 -1
- package/dist/Paginator/Paginator.d.ts +1 -5
- package/dist/Paginator/Paginator.js +18 -14
- package/dist/Paginator/Paginator.js.map +1 -1
- package/dist/Paginator/__tests__/Paginator.test.tsx +33 -0
- package/dist/Popover/Popover.cjs +1 -1
- package/dist/Popover/Popover.cjs.map +1 -1
- package/dist/Popover/Popover.js +2 -2
- package/dist/Popover/Popover.js.map +1 -1
- package/dist/Popover/__tests__/Popover.test.tsx +64 -0
- package/dist/ProfileButton/__tests__/ProfileButton.test.tsx +31 -0
- package/dist/QuizButton/__tests__/QuizButton.test.tsx +53 -0
- package/dist/SegmentControl/__tests__/SegmentControl.test.tsx +145 -0
- package/dist/SideMenu/SideMenuFooter.cjs +1 -1
- package/dist/SideMenu/SideMenuFooter.cjs.map +1 -1
- package/dist/SideMenu/SideMenuFooter.js +2 -2
- package/dist/SideMenu/SideMenuFooter.js.map +1 -1
- package/dist/SideMenu/__tests__/SideMenu.test.tsx +99 -0
- package/dist/SideMenu/types.cjs.map +1 -1
- package/dist/SideMenu/types.d.ts +2 -2
- package/dist/SideMenu/types.js.map +1 -1
- package/dist/Switcher/__tests__/SwitcherMenuItem.tsx +14 -0
- package/dist/Table/TableBody.cjs +1 -1
- package/dist/Table/TableBody.cjs.map +1 -1
- package/dist/Table/TableBody.js +2 -2
- package/dist/Table/TableBody.js.map +1 -1
- package/dist/Table/TableStyles.cjs +4 -1
- package/dist/Table/TableStyles.cjs.map +1 -1
- package/dist/Table/TableStyles.js +4 -1
- package/dist/Table/TableStyles.js.map +1 -1
- package/dist/Table/TableTypes.cjs.map +1 -1
- package/dist/Table/TableTypes.d.ts +2 -2
- package/dist/Table/TableTypes.js.map +1 -1
- package/dist/Table/__tests__/Table.test.tsx +499 -0
- package/dist/Tabs/VerticalTabs.cjs +1 -0
- package/dist/Tabs/VerticalTabs.cjs.map +1 -1
- package/dist/Tabs/VerticalTabs.js +1 -0
- package/dist/Tabs/VerticalTabs.js.map +1 -1
- package/dist/Tabs/__tests__/HorizontalTabs.test.tsx +95 -0
- package/dist/Tabs/__tests__/TabLink.test.tsx +40 -0
- package/dist/Tabs/__tests__/Tablist.test.tsx +37 -0
- package/dist/Tag/Tag.cjs +48 -12
- package/dist/Tag/Tag.cjs.map +1 -1
- package/dist/Tag/Tag.js +48 -12
- package/dist/Tag/Tag.js.map +1 -1
- package/dist/Tag/__tests__/Tag.test.tsx +86 -0
- package/dist/Tile/TileCommonItems.cjs +1 -1
- package/dist/Tile/TileCommonItems.cjs.map +1 -1
- package/dist/Tile/TileCommonItems.js +2 -2
- package/dist/Tile/TileCommonItems.js.map +1 -1
- package/dist/Tile/TileTypes.cjs.map +1 -1
- package/dist/Tile/TileTypes.d.ts +2 -2
- package/dist/Tile/TileTypes.js.map +1 -1
- package/dist/Toasters/Toast.cjs +1 -2
- package/dist/Toasters/Toast.cjs.map +1 -1
- package/dist/Toasters/Toast.js +2 -3
- package/dist/Toasters/Toast.js.map +1 -1
- package/dist/Toasters/__tests__/Toast.test.tsx +74 -0
- package/dist/Toggles/TogglerStyles.cjs +171 -15
- package/dist/Toggles/TogglerStyles.cjs.map +1 -1
- package/dist/Toggles/TogglerStyles.js +171 -15
- package/dist/Toggles/TogglerStyles.js.map +1 -1
- package/dist/Toggles/__tests__/ToggleButton.test.tsx +53 -0
- package/dist/Toggles/__tests__/ToggleSwitch.test.tsx +87 -0
- package/dist/Tooltips/__tests__/TooltipWrapper.test.tsx +16 -0
- package/dist/common/NavigationHelper.cjs +0 -28
- package/dist/common/NavigationHelper.cjs.map +1 -1
- package/dist/common/NavigationHelper.d.ts +0 -4
- package/dist/common/NavigationHelper.js +1 -22
- package/dist/common/NavigationHelper.js.map +1 -1
- package/dist/styles/colors.cjs +6 -0
- package/dist/styles/colors.cjs.map +1 -1
- package/dist/styles/colors.d.ts +6 -0
- package/dist/styles/colors.js +6 -0
- package/dist/styles/colors.js.map +1 -1
- package/dist/styles/design-tokens/dark/tokens.css +481 -0
- package/dist/styles/design-tokens/light/tokens.css +481 -0
- package/dist/styles/design-tokens/rqi_dark/tokens.css +481 -0
- package/dist/styles/design-tokens/rqi_light/tokens.css +481 -0
- package/dist/styles/global.cjs +4 -4
- package/dist/styles/global.cjs.map +1 -1
- package/dist/styles/global.js +4 -4
- package/dist/styles/global.js.map +1 -1
- package/dist/styles/react-datepicker.css +766 -0
- package/dist/styles/typography.cjs +4 -1
- package/dist/styles/typography.cjs.map +1 -1
- package/dist/styles/typography.js +4 -1
- package/dist/styles/typography.js.map +1 -1
- package/dist/test-utils.cjs +7 -1
- package/dist/test-utils.cjs.map +1 -1
- package/dist/test-utils.js +7 -1
- package/dist/test-utils.js.map +1 -1
- package/package.json +11 -6
- package/dist/Button/Button.cjs.map +0 -1
- package/dist/Button/Button.d.ts +0 -70
- package/dist/Button/Button.js.map +0 -1
- package/dist/Card/VerticalCard/Card.cjs.map +0 -1
- package/dist/Card/VerticalCard/Card.d.ts +0 -24
- package/dist/Card/VerticalCard/Card.js.map +0 -1
- package/dist/Card/VerticalCard/CardBottomSection.cjs.map +0 -1
- package/dist/Card/VerticalCard/CardBottomSection.d.ts +0 -49
- package/dist/Card/VerticalCard/CardBottomSection.js.map +0 -1
- package/dist/Card/VerticalCard/CardMiddleSection.cjs.map +0 -1
- package/dist/Card/VerticalCard/CardMiddleSection.d.ts +0 -37
- package/dist/Card/VerticalCard/CardMiddleSection.js.map +0 -1
- package/dist/Card/VerticalCard/CardTopSection.cjs.map +0 -1
- package/dist/Card/VerticalCard/CardTopSection.js.map +0 -1
- package/dist/GlobalNavigationBar/__tests__/GlobalNavigationBar.tests.d.ts +0 -1
- package/dist/GlobalNavigationBar/__tests__/Logo.tests.d.ts +0 -1
- package/dist/List/__tests__/ListRow.tests.d.ts +0 -1
- package/dist/Tabs/__tests__/TabLink.tests.d.ts +0 -1
- package/dist/Tabs/__tests__/Tablist.tests.d.ts +0 -2
- package/dist/common/Link.cjs +0 -45
- package/dist/common/Link.cjs.map +0 -1
- package/dist/common/Link.d.ts +0 -9
- package/dist/common/Link.js +0 -37
- package/dist/common/Link.js.map +0 -1
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { render } from '../../test-utils';
|
|
3
|
+
import 'jest-styled-components';
|
|
4
|
+
import { Popover } from '../..';
|
|
5
|
+
import { SystemIcons } from '../../icons';
|
|
6
|
+
import { Position } from '../../types';
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
describe('<Popover />',()=>{
|
|
10
|
+
it('renders title', async () => {
|
|
11
|
+
const{getByText, queryByTestId} = render(
|
|
12
|
+
<Popover position={Position.Bottom} topSectionProps={{text:'sample title'}} mainContent={<></>} showOnClick={false}>
|
|
13
|
+
<></>
|
|
14
|
+
</Popover>
|
|
15
|
+
);
|
|
16
|
+
|
|
17
|
+
expect(getByText('sample title')).toBeDefined();
|
|
18
|
+
expect(queryByTestId('closeBtn')).toBeNull();
|
|
19
|
+
})
|
|
20
|
+
|
|
21
|
+
it('renders note and title', async () => {
|
|
22
|
+
const{getByText, queryByTestId} = render(
|
|
23
|
+
<Popover position={Position.Left} topSectionProps={{text:'sample title', note:'sample note'}} mainContent={<></>} showOnClick={false}>
|
|
24
|
+
<></>
|
|
25
|
+
</Popover>
|
|
26
|
+
);
|
|
27
|
+
|
|
28
|
+
expect(getByText('sample title')).toBeDefined();
|
|
29
|
+
expect(getByText('sample note')).toBeDefined();
|
|
30
|
+
expect(queryByTestId('closeBtn')).toBeNull();
|
|
31
|
+
})
|
|
32
|
+
|
|
33
|
+
it('renders close button', async () => {
|
|
34
|
+
const{getByTestId} = render(
|
|
35
|
+
<Popover position={Position.Bottom} topSectionProps={{text:'sample title'}} mainContent={<></>} showOnClick={true}>
|
|
36
|
+
<></>
|
|
37
|
+
</Popover>
|
|
38
|
+
);
|
|
39
|
+
|
|
40
|
+
expect(getByTestId('closeBtn')).toBeDefined();
|
|
41
|
+
})
|
|
42
|
+
|
|
43
|
+
it('renders text button', async () => {
|
|
44
|
+
const{getByTestId} = render(
|
|
45
|
+
<Popover position={Position.Right} bottomSectionProps={{textButton:{label:'sample button', icon:<SystemIcons.OpenNewWindow />, action:()=>{}}}} mainContent={<></>} showOnClick={true}>
|
|
46
|
+
<></>
|
|
47
|
+
</Popover>
|
|
48
|
+
);
|
|
49
|
+
|
|
50
|
+
expect(getByTestId('textBtn')).toBeDefined();
|
|
51
|
+
expect(getByTestId('iconBtn').children).toHaveLength(0);
|
|
52
|
+
})
|
|
53
|
+
|
|
54
|
+
it('renders icon button', async () => {
|
|
55
|
+
const{getByTestId, queryByTestId} = render(
|
|
56
|
+
<Popover position={Position.Right} bottomSectionProps={{iconButtons:[{label:'sample button', icon:<SystemIcons.OpenNewWindow />, action:()=>{}}]}} mainContent={<></>} showOnClick={true}>
|
|
57
|
+
<></>
|
|
58
|
+
</Popover>
|
|
59
|
+
);
|
|
60
|
+
|
|
61
|
+
expect(queryByTestId('textBtn')).toBeNull();
|
|
62
|
+
expect(getByTestId('iconBtn').children).toHaveLength(1);
|
|
63
|
+
})
|
|
64
|
+
})
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import {ProfileButton} from '../index';
|
|
3
|
+
import {render} from '../../test-utils';
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
describe('ProfileButton', () => {
|
|
8
|
+
|
|
9
|
+
it('should render', () => {
|
|
10
|
+
const wrapper = render(<ProfileButton onClick={jest.fn()} initials={'initials'}/>);
|
|
11
|
+
|
|
12
|
+
expect(wrapper.queryByText('initials')).toBeInTheDocument();
|
|
13
|
+
});
|
|
14
|
+
|
|
15
|
+
it('should render image if portraitSrc is provided', () => {
|
|
16
|
+
const wrapper = render(<ProfileButton portraitSrc={'#'} onClick={jest.fn()}/>);
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
expect(wrapper.container.querySelector(`img`)).toBeInTheDocument();
|
|
20
|
+
expect(wrapper.queryByText('initials')).not.toBeInTheDocument();
|
|
21
|
+
});
|
|
22
|
+
|
|
23
|
+
it('should render initials if portraitSrc is not provided and initials are', () => {
|
|
24
|
+
const wrapper = render(<ProfileButton initials={'initials'} onClick={jest.fn()}/>);
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
expect(wrapper.container.querySelector(`img`)).not.toBeInTheDocument();
|
|
28
|
+
expect(wrapper.queryByText('initials')).toBeInTheDocument();
|
|
29
|
+
});
|
|
30
|
+
|
|
31
|
+
});
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { render } from '../../test-utils';
|
|
3
|
+
import 'jest-styled-components';
|
|
4
|
+
import { QuizButton } from '..';
|
|
5
|
+
import { Size } from '../../types';
|
|
6
|
+
import COLORS from '../../styles/colors';
|
|
7
|
+
import '@testing-library/jest-dom';
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
describe('<QuizButton />',()=>{
|
|
11
|
+
it('renders correct quiz button', async () => {
|
|
12
|
+
const{getByText, getByTestId} = render(
|
|
13
|
+
<QuizButton size={Size.Small} resultType={'correct'} text={'this is sample text'} type={'radio'} id={'1'}/>
|
|
14
|
+
);
|
|
15
|
+
expect(getByTestId('txtContainer')).toHaveTextContent('this is sample text');
|
|
16
|
+
expect(getByTestId('txtContainer')).toHaveClass('quiz-button-text');
|
|
17
|
+
expect(getByTestId('btnContainer')).toHaveClass('quiz-button-icon');
|
|
18
|
+
});
|
|
19
|
+
|
|
20
|
+
it('renders incorrect quiz button', async () => {
|
|
21
|
+
const{getByText, getByTestId} = render(
|
|
22
|
+
<QuizButton size={Size.Small} resultType={'incorrect'} text={'this is sample text'} type={'checkbox'} id={'1'}/>
|
|
23
|
+
);
|
|
24
|
+
expect(getByTestId('txtContainer')).toHaveTextContent('this is sample text');
|
|
25
|
+
expect(getByTestId('txtContainer')).toHaveClass('quiz-button-text');
|
|
26
|
+
expect(getByTestId('btnContainer')).toHaveClass('quiz-button-icon');
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
it('renders partial quiz button', async () => {
|
|
30
|
+
const{getByText, getByTestId} = render(
|
|
31
|
+
<QuizButton size={Size.Small} resultType={'partial'} text={'this is sample text'} type={'radio'} id={'1'}/>
|
|
32
|
+
);
|
|
33
|
+
expect(getByTestId('txtContainer')).toHaveTextContent('this is sample text');
|
|
34
|
+
expect(getByTestId('txtContainer')).toHaveClass('quiz-button-text');
|
|
35
|
+
expect(getByTestId('btnContainer')).toHaveClass('quiz-button-icon');
|
|
36
|
+
});
|
|
37
|
+
|
|
38
|
+
it('renders quiz button', async () => {
|
|
39
|
+
const{getByText, getByTestId} = render(
|
|
40
|
+
<QuizButton size={Size.Small} text={'this is sample text'} type={'checkbox'} id={'1'}/>
|
|
41
|
+
);
|
|
42
|
+
expect(getByText('this is sample text')).toHaveTextContent('this is sample text');
|
|
43
|
+
expect(getByTestId('txtContainer')).toHaveStyleRule('background',COLORS.accent1_20);
|
|
44
|
+
expect(getByTestId('btnContainer')).toHaveStyleRule('background',COLORS.accent1_100);
|
|
45
|
+
});
|
|
46
|
+
|
|
47
|
+
it('renders selected quiz button', async () => {
|
|
48
|
+
const{getByText} = render(
|
|
49
|
+
<QuizButton size={Size.Small} text={'this is sample text'} selected={true} type={'radio'} id={'1'}/>
|
|
50
|
+
);
|
|
51
|
+
expect(getByText('this is sample text')).toHaveTextContent('this is sample text');
|
|
52
|
+
});
|
|
53
|
+
});
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import {SegmentControlItemWrapper, SegmentControlWrapper} from '../SegmentControl';
|
|
3
|
+
import {render} from '../../test-utils';
|
|
4
|
+
import {SegmentControl} from '../index';
|
|
5
|
+
import {SystemIcons} from '../../icons';
|
|
6
|
+
import {fireEvent} from '@testing-library/react';
|
|
7
|
+
import { act } from "react";
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
describe('SegmentControl', () => {
|
|
13
|
+
|
|
14
|
+
const items = [
|
|
15
|
+
{key: 'item1', content: 'Item 1', disabled: false,},
|
|
16
|
+
{key: 'item2', content: 'Item 2', disabled: false,},
|
|
17
|
+
{key: 'item3', content: 'Item 3', disabled: false,},
|
|
18
|
+
{key: 'item4', content: 'Item 4', disabled: false,},
|
|
19
|
+
{key: 'item5', content: 'Item 5', disabled: false,},
|
|
20
|
+
{key: 'item6', content: 'Item 6', disabled: true,}
|
|
21
|
+
];
|
|
22
|
+
|
|
23
|
+
const icons = [
|
|
24
|
+
{key: 'icon1', content: <SystemIcons.Legend3Star size={'20'}/>, disabled: false,},
|
|
25
|
+
{key: 'icon2', content: <SystemIcons.Legend4Square size={'20'}/>, disabled: false,},
|
|
26
|
+
{key: 'icon3', content: <SystemIcons.Legend5Diamond size={'20'}/>, disabled: false,},
|
|
27
|
+
{key: 'icon4', content: <SystemIcons.Legend6Nabla size={'20'}/>, disabled: false,},
|
|
28
|
+
{key: 'icon5', content: <SystemIcons.Legend7Pentagon size={'20'}/>, disabled: false,},
|
|
29
|
+
{key: 'icon6', content: <SystemIcons.Legend8Rectangle size={'20'}/>, disabled: true,}
|
|
30
|
+
]
|
|
31
|
+
|
|
32
|
+
it('should render a segment control with items', () => {
|
|
33
|
+
const wrapper = render(
|
|
34
|
+
<SegmentControl items={items}
|
|
35
|
+
selected={items[0].key}
|
|
36
|
+
onChange={jest.fn()}/>
|
|
37
|
+
);
|
|
38
|
+
|
|
39
|
+
expect(wrapper.container.querySelectorAll(`${SegmentControlWrapper}`)).toHaveLength(1);
|
|
40
|
+
expect(wrapper.container.querySelectorAll(`${SegmentControlItemWrapper}`)).toHaveLength(6);
|
|
41
|
+
});
|
|
42
|
+
|
|
43
|
+
it('should render items with correct labels', () => {
|
|
44
|
+
const wrapper = render(
|
|
45
|
+
<SegmentControl items={items}
|
|
46
|
+
selected={items[0].key}
|
|
47
|
+
onChange={jest.fn()}/>
|
|
48
|
+
);
|
|
49
|
+
|
|
50
|
+
for (let item of items) {
|
|
51
|
+
expect(wrapper.getByText(item.content)).toBeTruthy();
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
|
|
55
|
+
it('should render items with icons', () => {
|
|
56
|
+
const wrapper = render(
|
|
57
|
+
<SegmentControl items={icons}
|
|
58
|
+
selected={icons[0].key}
|
|
59
|
+
onChange={jest.fn()}/>
|
|
60
|
+
);
|
|
61
|
+
|
|
62
|
+
expect(wrapper.container.querySelectorAll(`${SegmentControlWrapper}`)).toHaveLength(1);
|
|
63
|
+
expect(wrapper.container.querySelectorAll(`${SegmentControlItemWrapper}`)).toHaveLength(6);
|
|
64
|
+
});
|
|
65
|
+
|
|
66
|
+
it('should render correct item as selected', () => {
|
|
67
|
+
const wrapper = render(
|
|
68
|
+
<SegmentControl items={items}
|
|
69
|
+
selected={items[2].key}
|
|
70
|
+
onChange={jest.fn()}/>
|
|
71
|
+
);
|
|
72
|
+
|
|
73
|
+
expect(wrapper.container.querySelectorAll(`${SegmentControlItemWrapper}.selected`)).toHaveLength(1);
|
|
74
|
+
expect(wrapper.container.querySelectorAll(`${SegmentControlItemWrapper}`)[2].classList).toContain('selected');
|
|
75
|
+
});
|
|
76
|
+
|
|
77
|
+
it('should render correct item as disabled', () => {
|
|
78
|
+
const wrapper = render(
|
|
79
|
+
<SegmentControl items={items}
|
|
80
|
+
selected={items[2].key}
|
|
81
|
+
onChange={jest.fn()}/>
|
|
82
|
+
);
|
|
83
|
+
|
|
84
|
+
expect(wrapper.container.querySelectorAll(`${SegmentControlItemWrapper}.disabled`)).toHaveLength(1);
|
|
85
|
+
expect(wrapper.container.querySelectorAll(`${SegmentControlItemWrapper}`)[5].classList).toContain('disabled');
|
|
86
|
+
});
|
|
87
|
+
|
|
88
|
+
it('should call on change function on item click', () => {
|
|
89
|
+
const onChange = jest.fn();
|
|
90
|
+
const wrapper = render(
|
|
91
|
+
<SegmentControl items={items}
|
|
92
|
+
selected={items[2].key}
|
|
93
|
+
onChange={onChange}/>
|
|
94
|
+
);
|
|
95
|
+
act(() => {
|
|
96
|
+
wrapper.getByText(items[0].content).dispatchEvent(new MouseEvent('click', {bubbles: true}));
|
|
97
|
+
})
|
|
98
|
+
expect(onChange).toHaveBeenCalledTimes(1);
|
|
99
|
+
expect(onChange).toHaveBeenCalledWith(items[0].key);
|
|
100
|
+
});
|
|
101
|
+
|
|
102
|
+
it('should call on change function on item key press', () => {
|
|
103
|
+
const onChange = jest.fn();
|
|
104
|
+
const wrapper = render(
|
|
105
|
+
<SegmentControl items={items}
|
|
106
|
+
selected={items[2].key}
|
|
107
|
+
onChange={onChange}/>
|
|
108
|
+
);
|
|
109
|
+
act(() => {
|
|
110
|
+
fireEvent.keyPress(wrapper.getByText(items[0].content), {key: 'Enter', keyCode: 13, which: 13});
|
|
111
|
+
})
|
|
112
|
+
|
|
113
|
+
expect(onChange).toHaveBeenCalledTimes(1);
|
|
114
|
+
expect(onChange).toHaveBeenCalledWith(items[0].key);
|
|
115
|
+
});
|
|
116
|
+
|
|
117
|
+
it('should not call on change function on disabled item click', () => {
|
|
118
|
+
const onChange = jest.fn();
|
|
119
|
+
const wrapper = render(
|
|
120
|
+
<SegmentControl items={items}
|
|
121
|
+
selected={items[2].key}
|
|
122
|
+
onChange={onChange}/>
|
|
123
|
+
);
|
|
124
|
+
act(() => {
|
|
125
|
+
wrapper.getByText(items[5].content).dispatchEvent(new MouseEvent('click', {bubbles: true}));
|
|
126
|
+
})
|
|
127
|
+
expect(onChange).toHaveBeenCalledTimes(0);
|
|
128
|
+
});
|
|
129
|
+
|
|
130
|
+
it('should not call on change function on disabled item key press', () => {
|
|
131
|
+
const onChange = jest.fn();
|
|
132
|
+
const wrapper = render(
|
|
133
|
+
<SegmentControl items={items}
|
|
134
|
+
selected={items[2].key}
|
|
135
|
+
onChange={onChange}/>
|
|
136
|
+
);
|
|
137
|
+
act(() => {
|
|
138
|
+
fireEvent.keyPress(wrapper.getByText(items[5].content), {key: 'Enter', keyCode: 13, which: 13});
|
|
139
|
+
})
|
|
140
|
+
|
|
141
|
+
expect(onChange).toHaveBeenCalledTimes(0);
|
|
142
|
+
});
|
|
143
|
+
|
|
144
|
+
|
|
145
|
+
});
|
|
@@ -68,7 +68,7 @@ const SideMenuFooter = props => {
|
|
|
68
68
|
size: props.size
|
|
69
69
|
}, item), index))
|
|
70
70
|
}), !!props.footer?.buttons?.length && /*#__PURE__*/(0, _jsxRuntime.jsx)(ButtonsContainer, {
|
|
71
|
-
children: props.footer.buttons.map((button, index) => /*#__PURE__*/(0, _jsxRuntime.jsx)(_Button.
|
|
71
|
+
children: props.footer.buttons.map((button, index) => /*#__PURE__*/(0, _jsxRuntime.jsx)(_Button.TextButton, _objectSpread(_objectSpread({
|
|
72
72
|
size: props.size
|
|
73
73
|
}, button), {}, {
|
|
74
74
|
children: button.label
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SideMenuFooter.cjs","names":["_react","_interopRequireDefault","require","_styledComponents","_styles","_assets","_Button","_MenuItem","_jsxRuntime","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty2","default","getOwnPropertyDescriptors","defineProperties","defineProperty","Wrapper","styled","div","props","COLORS","getColor","theme","ItemsContainer","ButtonsContainer","LogoContainer","NoteContainer","ComponentXXSStyling","ComponentTextStyle","Regular","SideMenuFooter","jsxs","children","footer","items","jsx","map","item","index","MenuItem","size","buttons","button","
|
|
1
|
+
{"version":3,"file":"SideMenuFooter.cjs","names":["_react","_interopRequireDefault","require","_styledComponents","_styles","_assets","_Button","_MenuItem","_jsxRuntime","ownKeys","e","r","t","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty2","default","getOwnPropertyDescriptors","defineProperties","defineProperty","Wrapper","styled","div","props","COLORS","getColor","theme","ItemsContainer","ButtonsContainer","LogoContainer","NoteContainer","ComponentXXSStyling","ComponentTextStyle","Regular","SideMenuFooter","jsxs","children","footer","items","jsx","map","item","index","MenuItem","size","buttons","button","TextButton","label","LaerdalLogo","height","width","note","exports"],"sources":["../../src/SideMenu/SideMenuFooter.tsx"],"sourcesContent":["import React from 'react';\r\nimport {SideMenuProps} from './types';\r\nimport styled from 'styled-components';\r\nimport {\r\n COLORS,\r\n ComponentTextStyle,\r\n ComponentXXSStyling\r\n} from '../styles';\r\nimport {LaerdalLogo} from '../assets';\r\nimport {TextButton} from '../Button';\r\nimport {MenuItem} from '../MenuItem';\r\n\r\nconst Wrapper = styled.div`\r\n display: flex;\r\n flex-direction: column;\r\n align-items: center;\r\n box-sizing: border-box;\r\n width: 100%;\r\n\r\n border-top: 1px solid ${props => COLORS.getColor('neutral_200', props.theme)};\r\n`;\r\n\r\nconst ItemsContainer = styled.div`\r\n padding: 8px;\r\n display: flex;\r\n flex-direction: column;\r\n box-sizing: border-box;\r\n width: 100%;\r\n`;\r\n\r\nconst ButtonsContainer = styled.div`\r\n display: flex;\r\n flex-direction: row;\r\n box-sizing: border-box;\r\n padding: 8px 16px;\r\n gap: 10px;\r\n width: 100%;\r\n\r\n button {\r\n flex: 1;\r\n }\r\n\r\n .small & {\r\n gap: 0;\r\n flex-direction: column-reverse;\r\n }\r\n`;\r\n\r\nconst LogoContainer = styled.div`\r\n display: flex;\r\n align-items: center;\r\n justify-content: space-between;\r\n box-sizing: border-box;\r\n min-height: 80px;\r\n padding: 8px 16px;\r\n background-color: ${props => COLORS.getColor('neutral_20', props.theme)};\r\n width: 100%;\r\n`;\r\n\r\nconst NoteContainer = styled.div`\r\n ${props => ComponentXXSStyling(ComponentTextStyle.Regular, COLORS.getColor('neutral_500', props.theme))}\r\n`;\r\n\r\nexport const SideMenuFooter = (props: SideMenuProps) => {\r\n\r\n return (\r\n <Wrapper>\r\n {\r\n !!props.footer?.items?.length &&\r\n <ItemsContainer>\r\n {props.footer.items.map((item, index) =>\r\n <MenuItem key={index} size={props.size} {...item}/>\r\n )}\r\n </ItemsContainer>\r\n }\r\n {\r\n !!props.footer?.buttons?.length &&\r\n <ButtonsContainer>\r\n {\r\n props.footer.buttons.map((button, index) =>\r\n <TextButton key={index} size={props.size} {...button} >\r\n {button.label}\r\n </TextButton>\r\n )\r\n }\r\n </ButtonsContainer>\r\n }\r\n {\r\n !props.footer?.buttons?.length &&\r\n <LogoContainer>\r\n <LaerdalLogo height={'36px'} width={'66px'}/>\r\n <NoteContainer>{props.footer?.note}</NoteContainer>\r\n </LogoContainer>\r\n }\r\n\r\n </Wrapper>\r\n )\r\n};\r\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -5,7 +5,7 @@ import React from 'react';
|
|
|
5
5
|
import styled from 'styled-components';
|
|
6
6
|
import { COLORS, ComponentTextStyle, ComponentXXSStyling } from '../styles';
|
|
7
7
|
import { LaerdalLogo } from '../assets';
|
|
8
|
-
import {
|
|
8
|
+
import { TextButton } from '../Button';
|
|
9
9
|
import { MenuItem } from '../MenuItem';
|
|
10
10
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
11
11
|
const Wrapper = styled.div`
|
|
@@ -61,7 +61,7 @@ export const SideMenuFooter = props => {
|
|
|
61
61
|
size: props.size
|
|
62
62
|
}, item), index))
|
|
63
63
|
}), !!props.footer?.buttons?.length && /*#__PURE__*/_jsx(ButtonsContainer, {
|
|
64
|
-
children: props.footer.buttons.map((button, index) => /*#__PURE__*/_jsx(
|
|
64
|
+
children: props.footer.buttons.map((button, index) => /*#__PURE__*/_jsx(TextButton, _objectSpread(_objectSpread({
|
|
65
65
|
size: props.size
|
|
66
66
|
}, button), {}, {
|
|
67
67
|
children: button.label
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SideMenuFooter.js","names":["React","styled","COLORS","ComponentTextStyle","ComponentXXSStyling","LaerdalLogo","
|
|
1
|
+
{"version":3,"file":"SideMenuFooter.js","names":["React","styled","COLORS","ComponentTextStyle","ComponentXXSStyling","LaerdalLogo","TextButton","MenuItem","jsx","_jsx","jsxs","_jsxs","Wrapper","div","props","getColor","theme","ItemsContainer","ButtonsContainer","LogoContainer","NoteContainer","Regular","SideMenuFooter","children","footer","items","length","map","item","index","_objectSpread","size","buttons","button","label","height","width","note"],"sources":["../../src/SideMenu/SideMenuFooter.tsx"],"sourcesContent":["import React from 'react';\r\nimport {SideMenuProps} from './types';\r\nimport styled from 'styled-components';\r\nimport {\r\n COLORS,\r\n ComponentTextStyle,\r\n ComponentXXSStyling\r\n} from '../styles';\r\nimport {LaerdalLogo} from '../assets';\r\nimport {TextButton} from '../Button';\r\nimport {MenuItem} from '../MenuItem';\r\n\r\nconst Wrapper = styled.div`\r\n display: flex;\r\n flex-direction: column;\r\n align-items: center;\r\n box-sizing: border-box;\r\n width: 100%;\r\n\r\n border-top: 1px solid ${props => COLORS.getColor('neutral_200', props.theme)};\r\n`;\r\n\r\nconst ItemsContainer = styled.div`\r\n padding: 8px;\r\n display: flex;\r\n flex-direction: column;\r\n box-sizing: border-box;\r\n width: 100%;\r\n`;\r\n\r\nconst ButtonsContainer = styled.div`\r\n display: flex;\r\n flex-direction: row;\r\n box-sizing: border-box;\r\n padding: 8px 16px;\r\n gap: 10px;\r\n width: 100%;\r\n\r\n button {\r\n flex: 1;\r\n }\r\n\r\n .small & {\r\n gap: 0;\r\n flex-direction: column-reverse;\r\n }\r\n`;\r\n\r\nconst LogoContainer = styled.div`\r\n display: flex;\r\n align-items: center;\r\n justify-content: space-between;\r\n box-sizing: border-box;\r\n min-height: 80px;\r\n padding: 8px 16px;\r\n background-color: ${props => COLORS.getColor('neutral_20', props.theme)};\r\n width: 100%;\r\n`;\r\n\r\nconst NoteContainer = styled.div`\r\n ${props => ComponentXXSStyling(ComponentTextStyle.Regular, COLORS.getColor('neutral_500', props.theme))}\r\n`;\r\n\r\nexport const SideMenuFooter = (props: SideMenuProps) => {\r\n\r\n return (\r\n <Wrapper>\r\n {\r\n !!props.footer?.items?.length &&\r\n <ItemsContainer>\r\n {props.footer.items.map((item, index) =>\r\n <MenuItem key={index} size={props.size} {...item}/>\r\n )}\r\n </ItemsContainer>\r\n }\r\n {\r\n !!props.footer?.buttons?.length &&\r\n <ButtonsContainer>\r\n {\r\n props.footer.buttons.map((button, index) =>\r\n <TextButton key={index} size={props.size} {...button} >\r\n {button.label}\r\n </TextButton>\r\n )\r\n }\r\n </ButtonsContainer>\r\n }\r\n {\r\n !props.footer?.buttons?.length &&\r\n <LogoContainer>\r\n <LaerdalLogo height={'36px'} width={'66px'}/>\r\n <NoteContainer>{props.footer?.note}</NoteContainer>\r\n </LogoContainer>\r\n }\r\n\r\n </Wrapper>\r\n )\r\n};\r\n"],"mappings":";;;AAAA,OAAOA,KAAK,MAAM,OAAO;AAEzB,OAAOC,MAAM,MAAM,mBAAmB;AACtC,SACEC,MAAM,EACNC,kBAAkB,EAClBC,mBAAmB,QACd,WAAW;AAClB,SAAQC,WAAW,QAAO,WAAW;AACrC,SAAQC,UAAU,QAAO,WAAW;AACpC,SAAQC,QAAQ,QAAO,aAAa;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAErC,MAAMC,OAAO,GAAGX,MAAM,CAACY,GAAG;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0BC,KAAK,IAAIZ,MAAM,CAACa,QAAQ,CAAC,aAAa,EAAED,KAAK,CAACE,KAAK,CAAC;AAC9E,CAAC;AAED,MAAMC,cAAc,GAAGhB,MAAM,CAACY,GAAG;AACjC;AACA;AACA;AACA;AACA;AACA,CAAC;AAED,MAAMK,gBAAgB,GAAGjB,MAAM,CAACY,GAAG;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAED,MAAMM,aAAa,GAAGlB,MAAM,CAACY,GAAG;AAChC;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsBC,KAAK,IAAIZ,MAAM,CAACa,QAAQ,CAAC,YAAY,EAAED,KAAK,CAACE,KAAK,CAAC;AACzE;AACA,CAAC;AAED,MAAMI,aAAa,GAAGnB,MAAM,CAACY,GAAG;AAChC,IAAIC,KAAK,IAAIV,mBAAmB,CAACD,kBAAkB,CAACkB,OAAO,EAAEnB,MAAM,CAACa,QAAQ,CAAC,aAAa,EAAED,KAAK,CAACE,KAAK,CAAC,CAAC;AACzG,CAAC;AAED,OAAO,MAAMM,cAAc,GAAIR,KAAoB,IAAK;EAEtD,oBACEH,KAAA,CAACC,OAAO;IAAAW,QAAA,GAEJ,CAAC,CAACT,KAAK,CAACU,MAAM,EAAEC,KAAK,EAAEC,MAAM,iBAC7BjB,IAAA,CAACQ,cAAc;MAAAM,QAAA,EACZT,KAAK,CAACU,MAAM,CAACC,KAAK,CAACE,GAAG,CAAC,CAACC,IAAI,EAAEC,KAAK,kBAClCpB,IAAA,CAACF,QAAQ,EAAAuB,aAAA;QAAaC,IAAI,EAAEjB,KAAK,CAACiB;MAAK,GAAKH,IAAI,GAAjCC,KAAmC,CACpD;IAAC,CACa,CAAC,EAGjB,CAAC,CAACf,KAAK,CAACU,MAAM,EAAEQ,OAAO,EAAEN,MAAM,iBAC/BjB,IAAA,CAACS,gBAAgB;MAAAK,QAAA,EAEbT,KAAK,CAACU,MAAM,CAACQ,OAAO,CAACL,GAAG,CAAC,CAACM,MAAM,EAAEJ,KAAK,kBACrCpB,IAAA,CAACH,UAAU,EAAAwB,aAAA,CAAAA,aAAA;QAAaC,IAAI,EAAEjB,KAAK,CAACiB;MAAK,GAAKE,MAAM;QAAAV,QAAA,EACjDU,MAAM,CAACC;MAAK,IADEL,KAEL,CACd;IAAC,CAEa,CAAC,EAGnB,CAACf,KAAK,CAACU,MAAM,EAAEQ,OAAO,EAAEN,MAAM,iBAC9Bf,KAAA,CAACQ,aAAa;MAAAI,QAAA,gBACZd,IAAA,CAACJ,WAAW;QAAC8B,MAAM,EAAE,MAAO;QAACC,KAAK,EAAE;MAAO,CAAC,CAAC,eAC7C3B,IAAA,CAACW,aAAa;QAAAG,QAAA,EAAET,KAAK,CAACU,MAAM,EAAEa;MAAI,CAAgB,CAAC;IAAA,CACtC,CAAC;EAAA,CAGX,CAAC;AAEd,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import {SideMenu} from '../index';
|
|
3
|
+
import {act, render} from '../../test-utils';
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
describe('SideMenu', () => {
|
|
8
|
+
|
|
9
|
+
it('should render content', () => {
|
|
10
|
+
const wrapper = render(<SideMenu onClose={jest.fn()}>content</SideMenu>);
|
|
11
|
+
|
|
12
|
+
expect(wrapper.getByText('content')).toBeDefined();
|
|
13
|
+
});
|
|
14
|
+
|
|
15
|
+
it('should call onClose when close button is clicked', () => {
|
|
16
|
+
const onClose = jest.fn();
|
|
17
|
+
const wrapper = render(<SideMenu onClose={onClose}>content</SideMenu>);
|
|
18
|
+
|
|
19
|
+
act(() => {
|
|
20
|
+
wrapper.getByRole('button').click();
|
|
21
|
+
});
|
|
22
|
+
|
|
23
|
+
expect(onClose).toHaveBeenCalled();
|
|
24
|
+
});
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
it('should call onClose when close button is clicked', () => {
|
|
28
|
+
const onClose = jest.fn();
|
|
29
|
+
const wrapper = render(<SideMenu onClose={onClose}>content</SideMenu>);
|
|
30
|
+
|
|
31
|
+
act(() => {
|
|
32
|
+
wrapper.getByRole('button').click();
|
|
33
|
+
});
|
|
34
|
+
|
|
35
|
+
expect(onClose).toHaveBeenCalled();
|
|
36
|
+
});
|
|
37
|
+
|
|
38
|
+
it('should render label', () => {
|
|
39
|
+
const onClose = jest.fn();
|
|
40
|
+
const wrapper = render(<SideMenu onClose={onClose} header={{label: 'label'}}>content</SideMenu>);
|
|
41
|
+
|
|
42
|
+
expect(wrapper.getByText('label')).toBeDefined();
|
|
43
|
+
});
|
|
44
|
+
|
|
45
|
+
it('should render header icon buttons ', () => {
|
|
46
|
+
const onClose = jest.fn();
|
|
47
|
+
const wrapper = render(<SideMenu onClose={onClose} header={{
|
|
48
|
+
label: 'label', actions: [{
|
|
49
|
+
action: () => {
|
|
50
|
+
}, icon: <></>
|
|
51
|
+
}, {
|
|
52
|
+
action: () => {
|
|
53
|
+
}, icon: <></>
|
|
54
|
+
}]
|
|
55
|
+
}}>content</SideMenu>);
|
|
56
|
+
|
|
57
|
+
expect(wrapper.getAllByRole('button')).toHaveLength(3);
|
|
58
|
+
});
|
|
59
|
+
|
|
60
|
+
it('should render footer note', () => {
|
|
61
|
+
const onClose = jest.fn();
|
|
62
|
+
const wrapper = render(<SideMenu onClose={onClose} footer={{note: 'note'}}>content</SideMenu>);
|
|
63
|
+
|
|
64
|
+
expect(wrapper.getByText('note')).toBeDefined();
|
|
65
|
+
});
|
|
66
|
+
|
|
67
|
+
it('should render footer buttons', () => {
|
|
68
|
+
const onClose = jest.fn();
|
|
69
|
+
const wrapper = render(<SideMenu onClose={onClose} footer={{
|
|
70
|
+
buttons: [{
|
|
71
|
+
variant: 'primary', label: 'label', onClick: () => {
|
|
72
|
+
}
|
|
73
|
+
}]
|
|
74
|
+
}}>content</SideMenu>);
|
|
75
|
+
|
|
76
|
+
expect(wrapper.getAllByRole('button')).toHaveLength(2);
|
|
77
|
+
});
|
|
78
|
+
|
|
79
|
+
it('should render footer menu items', () => {
|
|
80
|
+
const onClose = jest.fn();
|
|
81
|
+
const wrapper = render(<SideMenu onClose={onClose} footer={{
|
|
82
|
+
items: [{
|
|
83
|
+
id: '1',
|
|
84
|
+
active: false,
|
|
85
|
+
onClickHandler: () => {},
|
|
86
|
+
item: {displayLabel: 'label 1', value: '1'}
|
|
87
|
+
}, {
|
|
88
|
+
id: '2',
|
|
89
|
+
active: false,
|
|
90
|
+
onClickHandler: () => {},
|
|
91
|
+
item: {displayLabel: 'label 2', value: '2'}
|
|
92
|
+
}]
|
|
93
|
+
}}>content</SideMenu>);
|
|
94
|
+
|
|
95
|
+
expect(wrapper.getByText('label 1')).toBeDefined();
|
|
96
|
+
expect(wrapper.getByText('label 2')).toBeDefined();
|
|
97
|
+
});
|
|
98
|
+
|
|
99
|
+
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.cjs","names":[],"sources":["../../src/SideMenu/types.ts"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"file":"types.cjs","names":[],"sources":["../../src/SideMenu/types.ts"],"sourcesContent":["import {TextButtonProps} from '../Button/TextButton';\r\nimport {IconButtonProps} from '../Button/Iconbutton';\r\nimport {MenuItemProps} from '../MenuItem/MenuItem';\r\nimport {Size} from '../types';\r\n\r\n\r\nexport type SideMenuAction = Omit<IconButtonProps, 'variant' |\r\n 'shape' |\r\n 'isInMobileMenu' |\r\n 'borderRadius' |\r\n 'flatEdge' |\r\n 'focusBackgroundColor' |\r\n 'useTransparentBackground' |\r\n 'unsetIconSize' |\r\n 'shouldNotInteract' |\r\n 'invertFocus' |\r\n 'hideOnLowWidth' | 'children'> & { icon: React.ReactNode };\r\n\r\nexport type SideMenuButton =\r\n Omit<TextButtonProps, 'size' | 'iconOnly' | 'minWidth' | 'testId' | 'width' | 'invertFocus' | 'colorTheme' | 'flatEdge' | 'children'>\r\n & { label: string };\r\n\r\nexport type SideMenuItem = Omit<MenuItemProps, 'size'>\r\n\r\nexport interface SideMenuHeader {\r\n actions?: SideMenuAction[];\r\n label?: string;\r\n}\r\n\r\nexport interface SideMenuFooter {\r\n items?: SideMenuItem[];\r\n buttons?: SideMenuButton[];\r\n note?: string;\r\n}\r\n\r\nexport interface SideMenuProps extends React.HTMLAttributes<HTMLDivElement> {\r\n size?: Size.Small | Size.Medium | Size.Large;\r\n header?: SideMenuHeader;\r\n footer?: SideMenuFooter;\r\n onClose: () => void;\r\n children?: any;\r\n}\r\n"],"mappings":"","ignoreList":[]}
|
package/dist/SideMenu/types.d.ts
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { TextButtonProps } from '../Button/TextButton';
|
|
2
2
|
import { IconButtonProps } from '../Button/Iconbutton';
|
|
3
3
|
import { MenuItemProps } from '../MenuItem/MenuItem';
|
|
4
4
|
import { Size } from '../types';
|
|
5
5
|
export type SideMenuAction = Omit<IconButtonProps, 'variant' | 'shape' | 'isInMobileMenu' | 'borderRadius' | 'flatEdge' | 'focusBackgroundColor' | 'useTransparentBackground' | 'unsetIconSize' | 'shouldNotInteract' | 'invertFocus' | 'hideOnLowWidth' | 'children'> & {
|
|
6
6
|
icon: React.ReactNode;
|
|
7
7
|
};
|
|
8
|
-
export type SideMenuButton = Omit<
|
|
8
|
+
export type SideMenuButton = Omit<TextButtonProps, 'size' | 'iconOnly' | 'minWidth' | 'testId' | 'width' | 'invertFocus' | 'colorTheme' | 'flatEdge' | 'children'> & {
|
|
9
9
|
label: string;
|
|
10
10
|
};
|
|
11
11
|
export type SideMenuItem = Omit<MenuItemProps, 'size'>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","names":[],"sources":["../../src/SideMenu/types.ts"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"file":"types.js","names":[],"sources":["../../src/SideMenu/types.ts"],"sourcesContent":["import {TextButtonProps} from '../Button/TextButton';\r\nimport {IconButtonProps} from '../Button/Iconbutton';\r\nimport {MenuItemProps} from '../MenuItem/MenuItem';\r\nimport {Size} from '../types';\r\n\r\n\r\nexport type SideMenuAction = Omit<IconButtonProps, 'variant' |\r\n 'shape' |\r\n 'isInMobileMenu' |\r\n 'borderRadius' |\r\n 'flatEdge' |\r\n 'focusBackgroundColor' |\r\n 'useTransparentBackground' |\r\n 'unsetIconSize' |\r\n 'shouldNotInteract' |\r\n 'invertFocus' |\r\n 'hideOnLowWidth' | 'children'> & { icon: React.ReactNode };\r\n\r\nexport type SideMenuButton =\r\n Omit<TextButtonProps, 'size' | 'iconOnly' | 'minWidth' | 'testId' | 'width' | 'invertFocus' | 'colorTheme' | 'flatEdge' | 'children'>\r\n & { label: string };\r\n\r\nexport type SideMenuItem = Omit<MenuItemProps, 'size'>\r\n\r\nexport interface SideMenuHeader {\r\n actions?: SideMenuAction[];\r\n label?: string;\r\n}\r\n\r\nexport interface SideMenuFooter {\r\n items?: SideMenuItem[];\r\n buttons?: SideMenuButton[];\r\n note?: string;\r\n}\r\n\r\nexport interface SideMenuProps extends React.HTMLAttributes<HTMLDivElement> {\r\n size?: Size.Small | Size.Medium | Size.Large;\r\n header?: SideMenuHeader;\r\n footer?: SideMenuFooter;\r\n onClose: () => void;\r\n children?: any;\r\n}\r\n"],"mappings":"","ignoreList":[]}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { render } from '@testing-library/react';
|
|
3
|
+
import { SwitcherMenuItem } from '../index';
|
|
4
|
+
import 'jest-styled-components';
|
|
5
|
+
import { COLORS } from '../../styles';
|
|
6
|
+
|
|
7
|
+
describe('<SwitcherMenuItem />', () => {
|
|
8
|
+
it('Renders SwitcherMenuItem', async () => {
|
|
9
|
+
const { queryByText, getByTestId } = render(<SwitcherMenuItem label="TestLabel" url="/test" testId="TestSwitcherMenuItem" />);
|
|
10
|
+
expect(queryByText('TestLabel')).toBeDefined();
|
|
11
|
+
|
|
12
|
+
const testMenuItem = getByTestId('TestSwitcherMenuItem');
|
|
13
|
+
});
|
|
14
|
+
});
|
package/dist/Table/TableBody.cjs
CHANGED
|
@@ -84,7 +84,7 @@ const TableBody = props => {
|
|
|
84
84
|
size: _types.Size.Small,
|
|
85
85
|
tabIndex: props.showLoadingIndicator ? -1 : 0
|
|
86
86
|
}, column.additionalProps);
|
|
87
|
-
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Button.
|
|
87
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Button.TextButton, _objectSpread(_objectSpread({
|
|
88
88
|
style: column.colorFn && {
|
|
89
89
|
color: column.colorFn(row, column.key)
|
|
90
90
|
}
|