@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
package/README.md
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
- `cd /path/to/your-app`
|
|
9
9
|
- `yarn add @laerdal/life-react-components` or `npm add @laerdal/life-react-components`
|
|
10
10
|
- Import components in your code:
|
|
11
|
-
- `import {
|
|
11
|
+
- `import { TextButton } from '@laerdal/life-react-components'`
|
|
12
12
|
- or icons:
|
|
13
13
|
- `import { ChevronLeft, ChevronRight } from '@laerdal/life-react-components'`
|
|
14
14
|
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { render } from '../../test-utils';
|
|
3
|
+
import 'jest-styled-components';
|
|
4
|
+
import { COLORS } from '../../styles';
|
|
5
|
+
import AccordionMenu from '../AccordionMenu';
|
|
6
|
+
|
|
7
|
+
const accordionItems = [
|
|
8
|
+
{
|
|
9
|
+
id: 'test1_id',
|
|
10
|
+
title: 'Item label with text 1',
|
|
11
|
+
children: <div>content test1</div>,
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
id: 'test2_id',
|
|
15
|
+
title: 'Item label with text 2',
|
|
16
|
+
children: <div>content test2</div>,
|
|
17
|
+
},
|
|
18
|
+
];
|
|
19
|
+
|
|
20
|
+
describe('<AccordionMenu />', () => {
|
|
21
|
+
it('Check correct text placed on labels', async () => {
|
|
22
|
+
const { queryByText } = render(<AccordionMenu items={accordionItems} onSelect={() => {}}></AccordionMenu>);
|
|
23
|
+
expect(queryByText('Item label with text 1')).toBeDefined();
|
|
24
|
+
expect(queryByText('Item label with text 2')).toBeDefined();
|
|
25
|
+
expect(queryByText('content test1')).toBeNull();
|
|
26
|
+
});
|
|
27
|
+
|
|
28
|
+
it('Check item label element color and label', async () => {
|
|
29
|
+
const { container } = render(<AccordionMenu items={accordionItems} onSelect={() => {}}></AccordionMenu>);
|
|
30
|
+
const headerItem = container.querySelector('#test2_id');
|
|
31
|
+
expect(headerItem).toBeDefined();
|
|
32
|
+
expect(headerItem?.textContent).toContain('Item label with text 2');
|
|
33
|
+
});
|
|
34
|
+
|
|
35
|
+
it('Check expanded item text', async () => {
|
|
36
|
+
const { container } = render(<AccordionMenu items={accordionItems} onSelect={() => {}} selectedItems={['test1_id']}></AccordionMenu>);
|
|
37
|
+
const headerItem = container.querySelector('#test1_id');
|
|
38
|
+
//check item expanded
|
|
39
|
+
expect(headerItem?.children[1]).toBeDefined();
|
|
40
|
+
expect(headerItem?.children[1]?.textContent).toContain('content test1');
|
|
41
|
+
});
|
|
42
|
+
});
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import ContentAccordion, {
|
|
3
|
+
ContentAccordionItem,
|
|
4
|
+
ContentAccordionItemContentBody, ContentAccordionItemContentFooter,
|
|
5
|
+
ContentAccordionItemContentHeader, ContentAccordionItemHeader, ContentAccordionWrapper
|
|
6
|
+
} from '../ContentAccordion';
|
|
7
|
+
import {fireEvent, render} from '../../test-utils';
|
|
8
|
+
import {Size} from '../../types';
|
|
9
|
+
|
|
10
|
+
describe('ContentAccordion', () => {
|
|
11
|
+
const contentAccordionItemsWithBody = [
|
|
12
|
+
{
|
|
13
|
+
id: '1',
|
|
14
|
+
title: 'Item 1',
|
|
15
|
+
body: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.'
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
id: '2',
|
|
19
|
+
title: 'Item 2',
|
|
20
|
+
body: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.',
|
|
21
|
+
active: true
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
id: '3',
|
|
25
|
+
title: 'Item 3',
|
|
26
|
+
body: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.',
|
|
27
|
+
disabled: true
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
id: '4',
|
|
31
|
+
title: 'Item 4',
|
|
32
|
+
body: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.'
|
|
33
|
+
}
|
|
34
|
+
];
|
|
35
|
+
|
|
36
|
+
const contentAccordionItemsWithBodyAndHeaderAndFooter = [
|
|
37
|
+
{
|
|
38
|
+
id: '1',
|
|
39
|
+
title: 'Item 1',
|
|
40
|
+
body: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.',
|
|
41
|
+
header: 'Header 1',
|
|
42
|
+
footer: <span/>,
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
id: '2',
|
|
46
|
+
title: 'Item 2',
|
|
47
|
+
body: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.',
|
|
48
|
+
header: 'Header 2',
|
|
49
|
+
footer: <span/>,
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
id: '3',
|
|
53
|
+
title: 'Item 3',
|
|
54
|
+
body: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.',
|
|
55
|
+
header: 'Header 3',
|
|
56
|
+
footer: <span/>,
|
|
57
|
+
disabled: true
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
id: '4',
|
|
61
|
+
title: 'Item 4',
|
|
62
|
+
body: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.',
|
|
63
|
+
header: 'Header 4',
|
|
64
|
+
footer: <span/>,
|
|
65
|
+
}
|
|
66
|
+
];
|
|
67
|
+
|
|
68
|
+
it('should render items in correct state', () => {
|
|
69
|
+
const wrapper = render(<ContentAccordion items={contentAccordionItemsWithBody}/>);
|
|
70
|
+
|
|
71
|
+
expect(wrapper.container.querySelectorAll(`${ContentAccordionItem}`).length).toBe(4);
|
|
72
|
+
expect(wrapper.container.querySelectorAll(`${ContentAccordionItem}.disabled`).length).toBe(1);
|
|
73
|
+
expect(wrapper.container.querySelectorAll(`${ContentAccordionItem}.disabled`)[0].id).toBe('item_3');
|
|
74
|
+
expect(wrapper.container.querySelectorAll(`${ContentAccordionItem}.active`).length).toBe(1);
|
|
75
|
+
expect(wrapper.container.querySelectorAll(`${ContentAccordionItem}.active`)[0].id).toBe('item_2');
|
|
76
|
+
});
|
|
77
|
+
|
|
78
|
+
it('should not render header if not provided', () => {
|
|
79
|
+
const wrapper = render(<ContentAccordion items={contentAccordionItemsWithBody}/>);
|
|
80
|
+
|
|
81
|
+
expect(wrapper.container.querySelectorAll(`${ContentAccordionItemContentBody}`).length).toBe(4);
|
|
82
|
+
expect(wrapper.container.querySelectorAll(`${ContentAccordionItemContentHeader}`).length).toBe(0);
|
|
83
|
+
});
|
|
84
|
+
|
|
85
|
+
it('should not render footer if not provided', () => {
|
|
86
|
+
const wrapper = render(<ContentAccordion items={contentAccordionItemsWithBody}/>);
|
|
87
|
+
|
|
88
|
+
expect(wrapper.container.querySelectorAll(`${ContentAccordionItemContentBody}`).length).toBe(4);
|
|
89
|
+
expect(wrapper.container.querySelectorAll(`${ContentAccordionItemContentFooter}`).length).toBe(0);
|
|
90
|
+
});
|
|
91
|
+
|
|
92
|
+
it('should render body, header, and footer if all are provided', () => {
|
|
93
|
+
const wrapper = render(<ContentAccordion items={contentAccordionItemsWithBodyAndHeaderAndFooter}/>);
|
|
94
|
+
|
|
95
|
+
expect(wrapper.container.querySelectorAll(`${ContentAccordionItem}`).length).toBe(4);
|
|
96
|
+
expect(wrapper.container.querySelectorAll(`${ContentAccordionItemContentBody}`).length).toBe(4);
|
|
97
|
+
expect(wrapper.container.querySelectorAll(`${ContentAccordionItemContentHeader}`).length).toBe(4);
|
|
98
|
+
expect(wrapper.container.querySelectorAll(`${ContentAccordionItemContentFooter}`).length).toBe(4);
|
|
99
|
+
});
|
|
100
|
+
|
|
101
|
+
it('should set correct size class name for small accordion', () => {
|
|
102
|
+
const wrapper = render(<ContentAccordion items={contentAccordionItemsWithBodyAndHeaderAndFooter}
|
|
103
|
+
size={Size.Small}/>);
|
|
104
|
+
expect(wrapper.container.querySelectorAll(`${ContentAccordionWrapper}.small`).length).toBe(1);
|
|
105
|
+
});
|
|
106
|
+
|
|
107
|
+
it('should set correct size class name for medium accordion', () => {
|
|
108
|
+
const wrapper = render(<ContentAccordion items={contentAccordionItemsWithBodyAndHeaderAndFooter}
|
|
109
|
+
size={Size.Medium}/>);
|
|
110
|
+
expect(wrapper.container.querySelectorAll(`${ContentAccordionWrapper}.medium`).length).toBe(1);
|
|
111
|
+
});
|
|
112
|
+
|
|
113
|
+
it('should set correct size class name for large accordion', () => {
|
|
114
|
+
const wrapper = render(<ContentAccordion items={contentAccordionItemsWithBodyAndHeaderAndFooter}
|
|
115
|
+
size={Size.Large}/>);
|
|
116
|
+
expect(wrapper.container.querySelectorAll(`${ContentAccordionWrapper}.large`).length).toBe(1);
|
|
117
|
+
});
|
|
118
|
+
|
|
119
|
+
it('should change active state when item header is clicked', () => {
|
|
120
|
+
const wrapper = render(<ContentAccordion items={contentAccordionItemsWithBody} multi={false}/>);
|
|
121
|
+
const itemHeader = wrapper.container.querySelectorAll(`${ContentAccordionItemHeader}`)[3];
|
|
122
|
+
|
|
123
|
+
fireEvent.click(itemHeader);
|
|
124
|
+
|
|
125
|
+
expect(wrapper.container.querySelectorAll(`${ContentAccordionItem}.active`).length).toBe(1);
|
|
126
|
+
expect(wrapper.container.querySelectorAll(`${ContentAccordionItem}.active`)[0].id).toBe('item_4');
|
|
127
|
+
});
|
|
128
|
+
|
|
129
|
+
it('should not change active state when disabled item header is clicked', () => {
|
|
130
|
+
const wrapper = render(<ContentAccordion items={contentAccordionItemsWithBody} multi={false}/>);
|
|
131
|
+
const itemHeader = wrapper.container.querySelectorAll(`${ContentAccordionItemHeader}`)[2];
|
|
132
|
+
|
|
133
|
+
fireEvent.click(itemHeader);
|
|
134
|
+
|
|
135
|
+
expect(wrapper.container.querySelectorAll(`${ContentAccordionItem}.active`).length).toBe(1);
|
|
136
|
+
expect(wrapper.container.querySelectorAll(`${ContentAccordionItem}.active`)[0].id).toBe('item_2');
|
|
137
|
+
});
|
|
138
|
+
|
|
139
|
+
it('should append active items if multi property is true', () => {
|
|
140
|
+
const wrapper = render(<ContentAccordion items={contentAccordionItemsWithBody} multi={true}/>);
|
|
141
|
+
const itemHeader = wrapper.container.querySelectorAll(`${ContentAccordionItemHeader}`)[3];
|
|
142
|
+
|
|
143
|
+
fireEvent.click(itemHeader);
|
|
144
|
+
|
|
145
|
+
expect(wrapper.container.querySelectorAll(`${ContentAccordionItem}.active`).length).toBe(2);
|
|
146
|
+
expect(wrapper.container.querySelectorAll(`${ContentAccordionItem}.active`)[0].id).toBe('item_2');
|
|
147
|
+
expect(wrapper.container.querySelectorAll(`${ContentAccordionItem}.active`)[1].id).toBe('item_4');
|
|
148
|
+
});
|
|
149
|
+
|
|
150
|
+
});
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { render } from '../../test-utils';
|
|
3
|
+
import '@testing-library/jest-dom';
|
|
4
|
+
import { AuthPage, Size, SystemIcons } from '../..';
|
|
5
|
+
import 'jest-styled-components';
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
describe('<AuthPage />', () => {
|
|
11
|
+
it('Renders AuthPage component', async () => {
|
|
12
|
+
const { getByText, container, getByTestId } = render(
|
|
13
|
+
<AuthPage
|
|
14
|
+
screenSetsContainerId="gigya_test"
|
|
15
|
+
panel={{
|
|
16
|
+
title: 'Sign in header',
|
|
17
|
+
content: 'Sign in information',
|
|
18
|
+
}}
|
|
19
|
+
/>,
|
|
20
|
+
);
|
|
21
|
+
//expect gygia container displayed
|
|
22
|
+
expect(container.querySelector('[id="gigya_test"]')).toBeTruthy();
|
|
23
|
+
//expect sign in header and info text displayed
|
|
24
|
+
expect(getByText('Sign in header')).toBeTruthy();
|
|
25
|
+
expect(getByText('Sign in information')).toBeTruthy();
|
|
26
|
+
});
|
|
27
|
+
});
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { render } from '../../test-utils';
|
|
3
|
+
import { Banner } from '../index';
|
|
4
|
+
import 'jest-styled-components';
|
|
5
|
+
import { COLORS } from '../../styles';
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
describe('<Banner />', () => {
|
|
11
|
+
it('Renders warning banner', async () => {
|
|
12
|
+
const { queryByText, getByTestId } = render(
|
|
13
|
+
<Banner type="warning" testId="TestBanner">
|
|
14
|
+
<h2>TestBanner</h2>
|
|
15
|
+
</Banner>,
|
|
16
|
+
);
|
|
17
|
+
expect(queryByText('TestHeader')).toBeDefined();
|
|
18
|
+
expect(getByTestId('TestBanner')).toHaveStyleRule('background', COLORS.bg_surface_warning);
|
|
19
|
+
});
|
|
20
|
+
it('Renders critial banner', async () => {
|
|
21
|
+
const { queryByText, getByTestId } = render(
|
|
22
|
+
<Banner type="critical" testId="TestBanner">
|
|
23
|
+
<h2>TestBanner</h2>
|
|
24
|
+
</Banner>,
|
|
25
|
+
);
|
|
26
|
+
expect(queryByText('TestHeader')).toBeDefined();
|
|
27
|
+
expect(getByTestId('TestBanner')).toHaveStyleRule('background', COLORS.bg_surface_critical);
|
|
28
|
+
});
|
|
29
|
+
it('Renders positive banner', async () => {
|
|
30
|
+
const { queryByText, getByTestId } = render(
|
|
31
|
+
<Banner type="positive" testId="TestBanner">
|
|
32
|
+
<h2>TestBanner</h2>
|
|
33
|
+
</Banner>,
|
|
34
|
+
);
|
|
35
|
+
expect(queryByText('TestHeader')).toBeDefined();
|
|
36
|
+
expect(getByTestId('TestBanner')).toHaveStyleRule('background', COLORS.bg_surface_positive);
|
|
37
|
+
});
|
|
38
|
+
it('Renders default banner', async () => {
|
|
39
|
+
const { queryByText, getByTestId } = render(
|
|
40
|
+
<Banner testId="TestBanner">
|
|
41
|
+
<h2>TestBanner</h2>
|
|
42
|
+
</Banner>,
|
|
43
|
+
);
|
|
44
|
+
expect(queryByText('TestHeader')).toBeDefined();
|
|
45
|
+
expect(getByTestId('TestBanner')).toHaveStyleRule('background', COLORS.bg_surface_primary);
|
|
46
|
+
});
|
|
47
|
+
});
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { render } from '../../test-utils';
|
|
3
|
+
import { OverviewBanner } from '../index';
|
|
4
|
+
import 'jest-styled-components';
|
|
5
|
+
import { COLORS } from '../../styles';
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
describe('<OverviewBanner />', () => {
|
|
11
|
+
it('Renders', async () => {
|
|
12
|
+
const { queryByText, getByTestId } = render(
|
|
13
|
+
<OverviewBanner testId="TestBanner">
|
|
14
|
+
<h2>TestHeader</h2>
|
|
15
|
+
</OverviewBanner>,
|
|
16
|
+
);
|
|
17
|
+
expect(queryByText('TestHeader')).toBeDefined();
|
|
18
|
+
expect(getByTestId('TestBanner')).toHaveStyleRule('background-color', COLORS.primary_20);
|
|
19
|
+
});
|
|
20
|
+
});
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { render } from '../../test-utils';
|
|
3
|
+
import { Breadcrumb } from '../index';
|
|
4
|
+
import '@testing-library/jest-dom';
|
|
5
|
+
import { Size } from '../../types';
|
|
6
|
+
|
|
7
|
+
const items = [
|
|
8
|
+
{ label: 'test1', url: 'http://laerdal_test.com', callback: (id?: string) => {} },
|
|
9
|
+
{ label: 'test2', url: 'http://laerdal_test1.com', callback: (id?: string) => {} },
|
|
10
|
+
{ label: 'test3', url: 'http://laerdal_test2.com', callback: (id?: string) => {} },
|
|
11
|
+
{ label: 'test4', url: 'http://laerdal_test3.com', callback: (id?: string) => {} },
|
|
12
|
+
];
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
describe('<Breadcrumb />', () => {
|
|
17
|
+
it('Renders with no values', async () => {
|
|
18
|
+
const { getByTestId, container } = render(<Breadcrumb items={[]} />);
|
|
19
|
+
//main container is displayed
|
|
20
|
+
expect(getByTestId('breacrumbContainer')).toBeDefined();
|
|
21
|
+
//home link is displayed
|
|
22
|
+
expect(container.querySelector('[id="homelink"]')).toBeDefined();
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
it('Renders with home icon and no values', async () => {
|
|
26
|
+
const { getByTestId, container } = render(<Breadcrumb items={[]} homeIcon={true} />);
|
|
27
|
+
expect(getByTestId('breacrumbContainer')).toBeDefined();
|
|
28
|
+
//home icon is displayed
|
|
29
|
+
expect(container.querySelector('[id="homeIcon"]')).toBeDefined();
|
|
30
|
+
|
|
31
|
+
//because a size was not provided, small icons width will be set (20px)
|
|
32
|
+
const svg = container.querySelector('svg');
|
|
33
|
+
expect(svg).toHaveAttribute('width', '20px');
|
|
34
|
+
});
|
|
35
|
+
|
|
36
|
+
it('Render breadcrumb with two values ', async () => {
|
|
37
|
+
const options = items.slice(0, 2);
|
|
38
|
+
const { getByTestId, container } = render(<Breadcrumb lastItemAsLabel={true} items={options} size={Size.Medium} />);
|
|
39
|
+
expect(getByTestId('breacrumbContainer')).toBeDefined();
|
|
40
|
+
//check breadcrumbs displayed correctly - only one link defined for this scenario
|
|
41
|
+
const linkItem = container.querySelector('a[id*="link-item"]');
|
|
42
|
+
expect(linkItem).toBeDefined();
|
|
43
|
+
expect(linkItem).toHaveTextContent(options[0].label);
|
|
44
|
+
|
|
45
|
+
//query breadcrumb chrevron separators
|
|
46
|
+
const breadcrumbSeparators = container.querySelectorAll('.chevronicon');
|
|
47
|
+
expect(breadcrumbSeparators).toBeDefined();
|
|
48
|
+
expect(breadcrumbSeparators).toHaveLength(2);
|
|
49
|
+
|
|
50
|
+
//medium size provided
|
|
51
|
+
const svg = container.querySelector('svg');
|
|
52
|
+
expect(svg).toHaveAttribute('width', '24px');
|
|
53
|
+
|
|
54
|
+
const lastItem = container.querySelector('label');
|
|
55
|
+
expect(lastItem).toBeDefined();
|
|
56
|
+
expect(lastItem).toHaveTextContent(options[options.length - 1].label);
|
|
57
|
+
});
|
|
58
|
+
|
|
59
|
+
it('Render more than 3 items', async () => {
|
|
60
|
+
const { container, getByText } = render(<Breadcrumb lastItemAsLabel={true} items={items} size={Size.XSmall} />);
|
|
61
|
+
|
|
62
|
+
//having more than 2 item show more dropdown selector should be displayed
|
|
63
|
+
//because home page button is not provided, only one button should be rendered
|
|
64
|
+
const showMoreBtn = container.querySelector('button');
|
|
65
|
+
expect(showMoreBtn).toBeDefined();
|
|
66
|
+
//in this scenario, first option label is not displayed, so only one link item available
|
|
67
|
+
const linkItem = container.querySelectorAll('a[id*="link-item"]');
|
|
68
|
+
expect(linkItem).toHaveLength(1);
|
|
69
|
+
|
|
70
|
+
//links not displayed for first two items, but these are defined as dropdown options
|
|
71
|
+
expect(getByText(items[0].label)).toBeDefined();
|
|
72
|
+
expect(getByText(items[1].label)).toBeDefined();
|
|
73
|
+
|
|
74
|
+
//xs size provided
|
|
75
|
+
const svg = container.querySelector('svg');
|
|
76
|
+
expect(svg).toHaveAttribute('width', '16px');
|
|
77
|
+
});
|
|
78
|
+
});
|
|
@@ -9,7 +9,7 @@ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/de
|
|
|
9
9
|
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
|
|
10
10
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
11
11
|
var React = _interopRequireWildcard(require("react"));
|
|
12
|
-
var
|
|
12
|
+
var _TextButton = _interopRequireWildcard(require("./TextButton"));
|
|
13
13
|
var _icons = require("../icons");
|
|
14
14
|
var _CommonStyling = require("../Dropdown/CommonStyling");
|
|
15
15
|
var _nanoid = require("nanoid");
|
|
@@ -32,7 +32,7 @@ const DualButtonsContainer = _styledComponents.default.div`
|
|
|
32
32
|
margin-right: 2px;
|
|
33
33
|
}
|
|
34
34
|
|
|
35
|
-
${
|
|
35
|
+
${_TextButton.TextButtonContentContainer} {
|
|
36
36
|
min-width: unset;
|
|
37
37
|
gap: 0px;
|
|
38
38
|
padding: ${props => props.$size == _types.Size.Large ? '4px 18px' : props.$size == _types.Size.Medium ? '4px 14px' : '4px 10px'};
|
|
@@ -84,7 +84,7 @@ const DualFunctionButton = _ref => {
|
|
|
84
84
|
$readOnly: false,
|
|
85
85
|
$disabled: false,
|
|
86
86
|
margin: "",
|
|
87
|
-
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(
|
|
87
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_TextButton.default, _objectSpread(_objectSpread({}, renderProps), {}, {
|
|
88
88
|
testId: testId,
|
|
89
89
|
onClick: onClick,
|
|
90
90
|
disabled: disabled,
|
|
@@ -117,7 +117,7 @@ const DualFunctionButton = _ref => {
|
|
|
117
117
|
alignLeft: true,
|
|
118
118
|
ariaRolesType: "menu"
|
|
119
119
|
})]
|
|
120
|
-
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(
|
|
120
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_TextButton.default, _objectSpread(_objectSpread({
|
|
121
121
|
variant: variant
|
|
122
122
|
}, renderProps), {}, {
|
|
123
123
|
onKeyPress: e => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DualFunctionButton.cjs","names":["React","_interopRequireWildcard","require","_Button","_icons","_CommonStyling","_nanoid","_types","_DropdownContent","_interopRequireDefault","_styledComponents","_common","_jsxRuntime","_excluded","_excluded2","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","ownKeys","keys","getOwnPropertySymbols","o","filter","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty2","getOwnPropertyDescriptors","defineProperties","DualButtonsContainer","styled","div","ButtonContentContainer","props","$size","Size","Large","Medium","DualFunctionButton","_ref","children","variant","type","size","width","testId","disabled","id","dropdownMenuValues","setDropdownMenuValues","dropdownCustomizationProps","_objectWithoutProperties2","loading","icon","onClick","renderProps","isOpen","setIsOpen","useState","activeDescendant","setActiveDescendant","focused","setFocused","keyboardNavigated","setKeyboardNavigated","dropdownContainerRef","useRef","selectedValues","setSelectedValues","dropdownContentRef","dropdownButtonRef","useClickOutsideRef","useFocusOutsideRef","dropdownContentId","nanoid","useEffect","jsxs","DropdownContainer","ref","$isButton","$readOnly","$disabled","margin","jsx","flatEdge","containerRef","customizationProps","itemsType","isButton","Small","onActiveDescendantChanged","outline","messageOnNoResults","alignLeft","ariaRolesType","onKeyPress","key","className","role","stopPropagation","SystemIcons","ArrowDropUp","ArrowDropDown","propTypes","_propTypes","arrayOf","string","func","_default","exports"],"sources":["../../src/Button/DualFunctionButton.tsx"],"sourcesContent":["import * as React from 'react';\r\nimport Button, { ButtonContentContainer, ButtonProps } from './Button';\r\nimport { SystemIcons } from '../icons';\r\nimport { DropdownContainer } from '../Dropdown/CommonStyling';\r\nimport { nanoid } from 'nanoid';\r\nimport { Size } from '../types';\r\nimport DropdownContent, { DropdownCustomizationProps } from '../Dropdown/DropdownContent';\r\nimport styled from 'styled-components';\r\nimport { useClickOutsideRef, useFocusOutsideRef } from '../common';\r\n\r\nconst DualButtonsContainer = styled.div<{ $size?: Size }>`\r\n display: flex;\r\n align-items: center;\r\n\r\n button:first-child {\r\n margin-right: 2px;\r\n }\r\n\r\n ${ButtonContentContainer} {\r\n min-width: unset;\r\n gap: 0px;\r\n padding: ${(props) => (props.$size == Size.Large ? '4px 18px' : props.$size == Size.Medium ? '4px 14px' : '4px 10px')};\r\n }\r\n\r\n .extraMargin {\r\n margin-bottom: 4px;\r\n }\r\n`;\r\n\r\nexport interface ButtonOption {\r\n label: string;\r\n}\r\n\r\nexport interface DualButtonProps extends ButtonProps {\r\n /**\r\n * Required. An object containing customization properties for the dropdown.\r\n */\r\n dropdownCustomizationProps: DropdownCustomizationProps;\r\n /**\r\n * Optional. An array of strings representing the values in the dropdown menu.\r\n */\r\n dropdownMenuValues?: string[];\r\n /**\r\n * Optional. A function to be called when the values in the dropdown menu change.\r\n * It should return void, a boolean, or undefined.\r\n */\r\n setDropdownMenuValues?: (values: string[]) => void | boolean | undefined;\r\n}\r\n\r\nconst DualFunctionButton: React.FunctionComponent<DualButtonProps> = ({\r\n children = 'Primary Button',\r\n variant = 'primary',\r\n type = 'button',\r\n size = Size.Medium,\r\n width: width = 'auto',\r\n testId,\r\n disabled,\r\n id,\r\n dropdownMenuValues,\r\n setDropdownMenuValues,\r\n dropdownCustomizationProps,\r\n ...props\r\n}) => {\r\n // Let's filter out properties that we don't need to render.\r\n const { loading, icon, onClick, ...renderProps } = props;\r\n const [isOpen, setIsOpen] = React.useState<boolean>(false);\r\n const [activeDescendant, setActiveDescendant] = React.useState<string>();\r\n const [focused, setFocused] = React.useState<number | null>(null);\r\n const [keyboardNavigated, setKeyboardNavigated] = React.useState<boolean>(false);\r\n const dropdownContainerRef = React.useRef<HTMLDivElement>(null);\r\n const [selectedValues, setSelectedValues] = React.useState<string[]>([]);\r\n\r\n const dropdownContentRef = React.useRef<HTMLDivElement>(null);\r\n const dropdownButtonRef = useClickOutsideRef(\r\n () => setIsOpen(false),\r\n [dropdownContainerRef],\r\n useFocusOutsideRef(() => setIsOpen(false), [dropdownContentRef]),\r\n );\r\n \r\n const dropdownContentId = id ? id + '_dropdownContent' : nanoid();\r\n\r\n React.useEffect(() => {\r\n !isOpen && setKeyboardNavigated(false);\r\n }, [isOpen]);\r\n\r\n return (\r\n <DualButtonsContainer $size={size}>\r\n <DropdownContainer ref={dropdownContainerRef} $isButton={true} $readOnly={false} $disabled={false} margin=\"\">\r\n <Button {...renderProps} testId={testId} onClick={onClick} disabled={disabled} type={type} loading={loading} icon={icon} size={size} width={width} variant={variant} flatEdge=\"right\">\r\n {children}\r\n </Button>\r\n <DropdownContent\r\n containerRef={dropdownContainerRef}\r\n customizationProps={dropdownCustomizationProps}\r\n filter=\"\"\r\n ref={dropdownContentRef}\r\n selectedValues={dropdownCustomizationProps.itemsType == 'normal' ? [] : dropdownMenuValues ?? selectedValues}\r\n setSelectedValues={setDropdownMenuValues ? setDropdownMenuValues : setSelectedValues}\r\n isButton={true}\r\n setIsOpen={setIsOpen}\r\n focused={focused}\r\n width={size == Size.Small ? '280px' : '360px'}\r\n onActiveDescendantChanged={(e) => setActiveDescendant(e)}\r\n setFocused={setFocused}\r\n size={size}\r\n outline={keyboardNavigated}\r\n isOpen={isOpen}\r\n id={dropdownContentId}\r\n messageOnNoResults=\"\"\r\n alignLeft={true}\r\n ariaRolesType=\"menu\"\r\n />\r\n </DropdownContainer>\r\n <Button\r\n variant={variant}\r\n {...renderProps}\r\n onKeyPress={(e: any) => {\r\n if (isOpen) return;\r\n\r\n if (e.key === 'Enter' || e.key === ' ') {\r\n setFocused(0);\r\n setKeyboardNavigated(true);\r\n }\r\n }}\r\n className=\"extraMargin\"\r\n testId={'options_toggleBtn'}\r\n ref={dropdownButtonRef}\r\n aria-activedescendant={activeDescendant}\r\n role=\"button\"\r\n aria-controls={dropdownContentId}\r\n disabled={disabled}\r\n type={type}\r\n size={size}\r\n onClick={(e) => {\r\n e.stopPropagation();\r\n setIsOpen(!isOpen);\r\n }}\r\n icon={ isOpen ? <SystemIcons.ArrowDropUp aria-hidden=\"true\" size=\"16px\" /> \r\n : <SystemIcons.ArrowDropDown aria-hidden=\"true\" size=\"16px\" /> }\r\n flatEdge=\"left\"\r\n />\r\n </DualButtonsContainer>\r\n );\r\n};\r\n\r\nexport default DualFunctionButton;\r\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"DualFunctionButton.cjs","names":["React","_interopRequireWildcard","require","_TextButton","_icons","_CommonStyling","_nanoid","_types","_DropdownContent","_interopRequireDefault","_styledComponents","_common","_jsxRuntime","_excluded","_excluded2","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","ownKeys","keys","getOwnPropertySymbols","o","filter","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty2","getOwnPropertyDescriptors","defineProperties","DualButtonsContainer","styled","div","TextButtonContentContainer","props","$size","Size","Large","Medium","DualFunctionButton","_ref","children","variant","type","size","width","testId","disabled","id","dropdownMenuValues","setDropdownMenuValues","dropdownCustomizationProps","_objectWithoutProperties2","loading","icon","onClick","renderProps","isOpen","setIsOpen","useState","activeDescendant","setActiveDescendant","focused","setFocused","keyboardNavigated","setKeyboardNavigated","dropdownContainerRef","useRef","selectedValues","setSelectedValues","dropdownContentRef","dropdownButtonRef","useClickOutsideRef","useFocusOutsideRef","dropdownContentId","nanoid","useEffect","jsxs","DropdownContainer","ref","$isButton","$readOnly","$disabled","margin","jsx","flatEdge","containerRef","customizationProps","itemsType","isButton","Small","onActiveDescendantChanged","outline","messageOnNoResults","alignLeft","ariaRolesType","onKeyPress","key","className","role","stopPropagation","SystemIcons","ArrowDropUp","ArrowDropDown","propTypes","_propTypes","arrayOf","string","func","_default","exports"],"sources":["../../src/Button/DualFunctionButton.tsx"],"sourcesContent":["import * as React from 'react';\r\nimport TextButton, { TextButtonContentContainer, TextButtonProps } from './TextButton';\r\nimport { SystemIcons } from '../icons';\r\nimport { DropdownContainer } from '../Dropdown/CommonStyling';\r\nimport { nanoid } from 'nanoid';\r\nimport { Size } from '../types';\r\nimport DropdownContent, { DropdownCustomizationProps } from '../Dropdown/DropdownContent';\r\nimport styled from 'styled-components';\r\nimport { useClickOutsideRef, useFocusOutsideRef } from '../common';\r\n\r\nconst DualButtonsContainer = styled.div<{ $size?: Size }>`\r\n display: flex;\r\n align-items: center;\r\n\r\n button:first-child {\r\n margin-right: 2px;\r\n }\r\n\r\n ${TextButtonContentContainer} {\r\n min-width: unset;\r\n gap: 0px;\r\n padding: ${(props) => (props.$size == Size.Large ? '4px 18px' : props.$size == Size.Medium ? '4px 14px' : '4px 10px')};\r\n }\r\n\r\n .extraMargin {\r\n margin-bottom: 4px;\r\n }\r\n`;\r\n\r\nexport interface ButtonOption {\r\n label: string;\r\n}\r\n\r\nexport interface DualButtonProps extends TextButtonProps {\r\n /**\r\n * Required. An object containing customization properties for the dropdown.\r\n */\r\n dropdownCustomizationProps: DropdownCustomizationProps;\r\n /**\r\n * Optional. An array of strings representing the values in the dropdown menu.\r\n */\r\n dropdownMenuValues?: string[];\r\n /**\r\n * Optional. A function to be called when the values in the dropdown menu change.\r\n * It should return void, a boolean, or undefined.\r\n */\r\n setDropdownMenuValues?: (values: string[]) => void | boolean | undefined;\r\n}\r\n\r\nconst DualFunctionButton: React.FunctionComponent<DualButtonProps> = ({\r\n children = 'Primary Button',\r\n variant = 'primary',\r\n type = 'button',\r\n size = Size.Medium,\r\n width: width = 'auto',\r\n testId,\r\n disabled,\r\n id,\r\n dropdownMenuValues,\r\n setDropdownMenuValues,\r\n dropdownCustomizationProps,\r\n ...props\r\n}) => {\r\n // Let's filter out properties that we don't need to render.\r\n const { loading, icon, onClick, ...renderProps } = props;\r\n const [isOpen, setIsOpen] = React.useState<boolean>(false);\r\n const [activeDescendant, setActiveDescendant] = React.useState<string>();\r\n const [focused, setFocused] = React.useState<number | null>(null);\r\n const [keyboardNavigated, setKeyboardNavigated] = React.useState<boolean>(false);\r\n const dropdownContainerRef = React.useRef<HTMLDivElement>(null);\r\n const [selectedValues, setSelectedValues] = React.useState<string[]>([]);\r\n\r\n const dropdownContentRef = React.useRef<HTMLDivElement>(null);\r\n const dropdownButtonRef = useClickOutsideRef(\r\n () => setIsOpen(false),\r\n [dropdownContainerRef],\r\n useFocusOutsideRef(() => setIsOpen(false), [dropdownContentRef]),\r\n );\r\n \r\n const dropdownContentId = id ? id + '_dropdownContent' : nanoid();\r\n\r\n React.useEffect(() => {\r\n !isOpen && setKeyboardNavigated(false);\r\n }, [isOpen]);\r\n\r\n return (\r\n <DualButtonsContainer $size={size}>\r\n <DropdownContainer ref={dropdownContainerRef} $isButton={true} $readOnly={false} $disabled={false} margin=\"\">\r\n <TextButton {...renderProps} testId={testId} onClick={onClick} disabled={disabled} type={type} loading={loading} icon={icon} size={size} width={width} variant={variant} flatEdge=\"right\">\r\n {children}\r\n </TextButton>\r\n <DropdownContent\r\n containerRef={dropdownContainerRef}\r\n customizationProps={dropdownCustomizationProps}\r\n filter=\"\"\r\n ref={dropdownContentRef}\r\n selectedValues={dropdownCustomizationProps.itemsType == 'normal' ? [] : dropdownMenuValues ?? selectedValues}\r\n setSelectedValues={setDropdownMenuValues ? setDropdownMenuValues : setSelectedValues}\r\n isButton={true}\r\n setIsOpen={setIsOpen}\r\n focused={focused}\r\n width={size == Size.Small ? '280px' : '360px'}\r\n onActiveDescendantChanged={(e) => setActiveDescendant(e)}\r\n setFocused={setFocused}\r\n size={size}\r\n outline={keyboardNavigated}\r\n isOpen={isOpen}\r\n id={dropdownContentId}\r\n messageOnNoResults=\"\"\r\n alignLeft={true}\r\n ariaRolesType=\"menu\"\r\n />\r\n </DropdownContainer>\r\n <TextButton\r\n variant={variant}\r\n {...renderProps}\r\n onKeyPress={(e: any) => {\r\n if (isOpen) return;\r\n\r\n if (e.key === 'Enter' || e.key === ' ') {\r\n setFocused(0);\r\n setKeyboardNavigated(true);\r\n }\r\n }}\r\n className=\"extraMargin\"\r\n testId={'options_toggleBtn'}\r\n ref={dropdownButtonRef}\r\n aria-activedescendant={activeDescendant}\r\n role=\"button\"\r\n aria-controls={dropdownContentId}\r\n disabled={disabled}\r\n type={type}\r\n size={size}\r\n onClick={(e) => {\r\n e.stopPropagation();\r\n setIsOpen(!isOpen);\r\n }}\r\n icon={ isOpen ? <SystemIcons.ArrowDropUp aria-hidden=\"true\" size=\"16px\" /> \r\n : <SystemIcons.ArrowDropDown aria-hidden=\"true\" size=\"16px\" /> }\r\n flatEdge=\"left\"\r\n />\r\n </DualButtonsContainer>\r\n );\r\n};\r\n\r\nexport default DualFunctionButton;\r\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
-
import {
|
|
2
|
+
import { TextButtonProps } from './TextButton';
|
|
3
3
|
import { DropdownCustomizationProps } from '../Dropdown/DropdownContent';
|
|
4
4
|
export interface ButtonOption {
|
|
5
5
|
label: string;
|
|
6
6
|
}
|
|
7
|
-
export interface DualButtonProps extends
|
|
7
|
+
export interface DualButtonProps extends TextButtonProps {
|
|
8
8
|
/**
|
|
9
9
|
* Required. An object containing customization properties for the dropdown.
|
|
10
10
|
*/
|
|
@@ -6,7 +6,7 @@ const _excluded = ["children", "variant", "type", "size", "width", "testId", "di
|
|
|
6
6
|
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
7
7
|
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
8
8
|
import * as React from 'react';
|
|
9
|
-
import
|
|
9
|
+
import TextButton, { TextButtonContentContainer } from './TextButton';
|
|
10
10
|
import { SystemIcons } from '../icons';
|
|
11
11
|
import { DropdownContainer } from '../Dropdown/CommonStyling';
|
|
12
12
|
import { nanoid } from 'nanoid';
|
|
@@ -23,7 +23,7 @@ const DualButtonsContainer = styled.div`
|
|
|
23
23
|
margin-right: 2px;
|
|
24
24
|
}
|
|
25
25
|
|
|
26
|
-
${
|
|
26
|
+
${TextButtonContentContainer} {
|
|
27
27
|
min-width: unset;
|
|
28
28
|
gap: 0px;
|
|
29
29
|
padding: ${props => props.$size == Size.Large ? '4px 18px' : props.$size == Size.Medium ? '4px 14px' : '4px 10px'};
|
|
@@ -75,7 +75,7 @@ const DualFunctionButton = _ref => {
|
|
|
75
75
|
$readOnly: false,
|
|
76
76
|
$disabled: false,
|
|
77
77
|
margin: "",
|
|
78
|
-
children: [/*#__PURE__*/_jsx(
|
|
78
|
+
children: [/*#__PURE__*/_jsx(TextButton, _objectSpread(_objectSpread({}, renderProps), {}, {
|
|
79
79
|
testId: testId,
|
|
80
80
|
onClick: onClick,
|
|
81
81
|
disabled: disabled,
|
|
@@ -108,7 +108,7 @@ const DualFunctionButton = _ref => {
|
|
|
108
108
|
alignLeft: true,
|
|
109
109
|
ariaRolesType: "menu"
|
|
110
110
|
})]
|
|
111
|
-
}), /*#__PURE__*/_jsx(
|
|
111
|
+
}), /*#__PURE__*/_jsx(TextButton, _objectSpread(_objectSpread({
|
|
112
112
|
variant: variant
|
|
113
113
|
}, renderProps), {}, {
|
|
114
114
|
onKeyPress: e => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DualFunctionButton.js","names":["React","Button","ButtonContentContainer","SystemIcons","DropdownContainer","nanoid","Size","DropdownContent","styled","useClickOutsideRef","useFocusOutsideRef","jsx","_jsx","jsxs","_jsxs","DualButtonsContainer","div","props","$size","Large","Medium","DualFunctionButton","_ref","children","variant","type","size","width","testId","disabled","id","dropdownMenuValues","setDropdownMenuValues","dropdownCustomizationProps","_objectWithoutProperties","_excluded","loading","icon","onClick","renderProps","_excluded2","isOpen","setIsOpen","useState","activeDescendant","setActiveDescendant","focused","setFocused","keyboardNavigated","setKeyboardNavigated","dropdownContainerRef","useRef","selectedValues","setSelectedValues","dropdownContentRef","dropdownButtonRef","dropdownContentId","useEffect","ref","$isButton","$readOnly","$disabled","margin","_objectSpread","flatEdge","containerRef","customizationProps","filter","itemsType","isButton","Small","onActiveDescendantChanged","e","outline","messageOnNoResults","alignLeft","ariaRolesType","onKeyPress","key","className","role","stopPropagation","ArrowDropUp","ArrowDropDown","propTypes","_pt","arrayOf","string","func"],"sources":["../../src/Button/DualFunctionButton.tsx"],"sourcesContent":["import * as React from 'react';\r\nimport Button, { ButtonContentContainer, ButtonProps } from './Button';\r\nimport { SystemIcons } from '../icons';\r\nimport { DropdownContainer } from '../Dropdown/CommonStyling';\r\nimport { nanoid } from 'nanoid';\r\nimport { Size } from '../types';\r\nimport DropdownContent, { DropdownCustomizationProps } from '../Dropdown/DropdownContent';\r\nimport styled from 'styled-components';\r\nimport { useClickOutsideRef, useFocusOutsideRef } from '../common';\r\n\r\nconst DualButtonsContainer = styled.div<{ $size?: Size }>`\r\n display: flex;\r\n align-items: center;\r\n\r\n button:first-child {\r\n margin-right: 2px;\r\n }\r\n\r\n ${ButtonContentContainer} {\r\n min-width: unset;\r\n gap: 0px;\r\n padding: ${(props) => (props.$size == Size.Large ? '4px 18px' : props.$size == Size.Medium ? '4px 14px' : '4px 10px')};\r\n }\r\n\r\n .extraMargin {\r\n margin-bottom: 4px;\r\n }\r\n`;\r\n\r\nexport interface ButtonOption {\r\n label: string;\r\n}\r\n\r\nexport interface DualButtonProps extends ButtonProps {\r\n /**\r\n * Required. An object containing customization properties for the dropdown.\r\n */\r\n dropdownCustomizationProps: DropdownCustomizationProps;\r\n /**\r\n * Optional. An array of strings representing the values in the dropdown menu.\r\n */\r\n dropdownMenuValues?: string[];\r\n /**\r\n * Optional. A function to be called when the values in the dropdown menu change.\r\n * It should return void, a boolean, or undefined.\r\n */\r\n setDropdownMenuValues?: (values: string[]) => void | boolean | undefined;\r\n}\r\n\r\nconst DualFunctionButton: React.FunctionComponent<DualButtonProps> = ({\r\n children = 'Primary Button',\r\n variant = 'primary',\r\n type = 'button',\r\n size = Size.Medium,\r\n width: width = 'auto',\r\n testId,\r\n disabled,\r\n id,\r\n dropdownMenuValues,\r\n setDropdownMenuValues,\r\n dropdownCustomizationProps,\r\n ...props\r\n}) => {\r\n // Let's filter out properties that we don't need to render.\r\n const { loading, icon, onClick, ...renderProps } = props;\r\n const [isOpen, setIsOpen] = React.useState<boolean>(false);\r\n const [activeDescendant, setActiveDescendant] = React.useState<string>();\r\n const [focused, setFocused] = React.useState<number | null>(null);\r\n const [keyboardNavigated, setKeyboardNavigated] = React.useState<boolean>(false);\r\n const dropdownContainerRef = React.useRef<HTMLDivElement>(null);\r\n const [selectedValues, setSelectedValues] = React.useState<string[]>([]);\r\n\r\n const dropdownContentRef = React.useRef<HTMLDivElement>(null);\r\n const dropdownButtonRef = useClickOutsideRef(\r\n () => setIsOpen(false),\r\n [dropdownContainerRef],\r\n useFocusOutsideRef(() => setIsOpen(false), [dropdownContentRef]),\r\n );\r\n \r\n const dropdownContentId = id ? id + '_dropdownContent' : nanoid();\r\n\r\n React.useEffect(() => {\r\n !isOpen && setKeyboardNavigated(false);\r\n }, [isOpen]);\r\n\r\n return (\r\n <DualButtonsContainer $size={size}>\r\n <DropdownContainer ref={dropdownContainerRef} $isButton={true} $readOnly={false} $disabled={false} margin=\"\">\r\n <Button {...renderProps} testId={testId} onClick={onClick} disabled={disabled} type={type} loading={loading} icon={icon} size={size} width={width} variant={variant} flatEdge=\"right\">\r\n {children}\r\n </Button>\r\n <DropdownContent\r\n containerRef={dropdownContainerRef}\r\n customizationProps={dropdownCustomizationProps}\r\n filter=\"\"\r\n ref={dropdownContentRef}\r\n selectedValues={dropdownCustomizationProps.itemsType == 'normal' ? [] : dropdownMenuValues ?? selectedValues}\r\n setSelectedValues={setDropdownMenuValues ? setDropdownMenuValues : setSelectedValues}\r\n isButton={true}\r\n setIsOpen={setIsOpen}\r\n focused={focused}\r\n width={size == Size.Small ? '280px' : '360px'}\r\n onActiveDescendantChanged={(e) => setActiveDescendant(e)}\r\n setFocused={setFocused}\r\n size={size}\r\n outline={keyboardNavigated}\r\n isOpen={isOpen}\r\n id={dropdownContentId}\r\n messageOnNoResults=\"\"\r\n alignLeft={true}\r\n ariaRolesType=\"menu\"\r\n />\r\n </DropdownContainer>\r\n <Button\r\n variant={variant}\r\n {...renderProps}\r\n onKeyPress={(e: any) => {\r\n if (isOpen) return;\r\n\r\n if (e.key === 'Enter' || e.key === ' ') {\r\n setFocused(0);\r\n setKeyboardNavigated(true);\r\n }\r\n }}\r\n className=\"extraMargin\"\r\n testId={'options_toggleBtn'}\r\n ref={dropdownButtonRef}\r\n aria-activedescendant={activeDescendant}\r\n role=\"button\"\r\n aria-controls={dropdownContentId}\r\n disabled={disabled}\r\n type={type}\r\n size={size}\r\n onClick={(e) => {\r\n e.stopPropagation();\r\n setIsOpen(!isOpen);\r\n }}\r\n icon={ isOpen ? <SystemIcons.ArrowDropUp aria-hidden=\"true\" size=\"16px\" /> \r\n : <SystemIcons.ArrowDropDown aria-hidden=\"true\" size=\"16px\" /> }\r\n flatEdge=\"left\"\r\n />\r\n </DualButtonsContainer>\r\n );\r\n};\r\n\r\nexport default DualFunctionButton;\r\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"DualFunctionButton.js","names":["React","TextButton","TextButtonContentContainer","SystemIcons","DropdownContainer","nanoid","Size","DropdownContent","styled","useClickOutsideRef","useFocusOutsideRef","jsx","_jsx","jsxs","_jsxs","DualButtonsContainer","div","props","$size","Large","Medium","DualFunctionButton","_ref","children","variant","type","size","width","testId","disabled","id","dropdownMenuValues","setDropdownMenuValues","dropdownCustomizationProps","_objectWithoutProperties","_excluded","loading","icon","onClick","renderProps","_excluded2","isOpen","setIsOpen","useState","activeDescendant","setActiveDescendant","focused","setFocused","keyboardNavigated","setKeyboardNavigated","dropdownContainerRef","useRef","selectedValues","setSelectedValues","dropdownContentRef","dropdownButtonRef","dropdownContentId","useEffect","ref","$isButton","$readOnly","$disabled","margin","_objectSpread","flatEdge","containerRef","customizationProps","filter","itemsType","isButton","Small","onActiveDescendantChanged","e","outline","messageOnNoResults","alignLeft","ariaRolesType","onKeyPress","key","className","role","stopPropagation","ArrowDropUp","ArrowDropDown","propTypes","_pt","arrayOf","string","func"],"sources":["../../src/Button/DualFunctionButton.tsx"],"sourcesContent":["import * as React from 'react';\r\nimport TextButton, { TextButtonContentContainer, TextButtonProps } from './TextButton';\r\nimport { SystemIcons } from '../icons';\r\nimport { DropdownContainer } from '../Dropdown/CommonStyling';\r\nimport { nanoid } from 'nanoid';\r\nimport { Size } from '../types';\r\nimport DropdownContent, { DropdownCustomizationProps } from '../Dropdown/DropdownContent';\r\nimport styled from 'styled-components';\r\nimport { useClickOutsideRef, useFocusOutsideRef } from '../common';\r\n\r\nconst DualButtonsContainer = styled.div<{ $size?: Size }>`\r\n display: flex;\r\n align-items: center;\r\n\r\n button:first-child {\r\n margin-right: 2px;\r\n }\r\n\r\n ${TextButtonContentContainer} {\r\n min-width: unset;\r\n gap: 0px;\r\n padding: ${(props) => (props.$size == Size.Large ? '4px 18px' : props.$size == Size.Medium ? '4px 14px' : '4px 10px')};\r\n }\r\n\r\n .extraMargin {\r\n margin-bottom: 4px;\r\n }\r\n`;\r\n\r\nexport interface ButtonOption {\r\n label: string;\r\n}\r\n\r\nexport interface DualButtonProps extends TextButtonProps {\r\n /**\r\n * Required. An object containing customization properties for the dropdown.\r\n */\r\n dropdownCustomizationProps: DropdownCustomizationProps;\r\n /**\r\n * Optional. An array of strings representing the values in the dropdown menu.\r\n */\r\n dropdownMenuValues?: string[];\r\n /**\r\n * Optional. A function to be called when the values in the dropdown menu change.\r\n * It should return void, a boolean, or undefined.\r\n */\r\n setDropdownMenuValues?: (values: string[]) => void | boolean | undefined;\r\n}\r\n\r\nconst DualFunctionButton: React.FunctionComponent<DualButtonProps> = ({\r\n children = 'Primary Button',\r\n variant = 'primary',\r\n type = 'button',\r\n size = Size.Medium,\r\n width: width = 'auto',\r\n testId,\r\n disabled,\r\n id,\r\n dropdownMenuValues,\r\n setDropdownMenuValues,\r\n dropdownCustomizationProps,\r\n ...props\r\n}) => {\r\n // Let's filter out properties that we don't need to render.\r\n const { loading, icon, onClick, ...renderProps } = props;\r\n const [isOpen, setIsOpen] = React.useState<boolean>(false);\r\n const [activeDescendant, setActiveDescendant] = React.useState<string>();\r\n const [focused, setFocused] = React.useState<number | null>(null);\r\n const [keyboardNavigated, setKeyboardNavigated] = React.useState<boolean>(false);\r\n const dropdownContainerRef = React.useRef<HTMLDivElement>(null);\r\n const [selectedValues, setSelectedValues] = React.useState<string[]>([]);\r\n\r\n const dropdownContentRef = React.useRef<HTMLDivElement>(null);\r\n const dropdownButtonRef = useClickOutsideRef(\r\n () => setIsOpen(false),\r\n [dropdownContainerRef],\r\n useFocusOutsideRef(() => setIsOpen(false), [dropdownContentRef]),\r\n );\r\n \r\n const dropdownContentId = id ? id + '_dropdownContent' : nanoid();\r\n\r\n React.useEffect(() => {\r\n !isOpen && setKeyboardNavigated(false);\r\n }, [isOpen]);\r\n\r\n return (\r\n <DualButtonsContainer $size={size}>\r\n <DropdownContainer ref={dropdownContainerRef} $isButton={true} $readOnly={false} $disabled={false} margin=\"\">\r\n <TextButton {...renderProps} testId={testId} onClick={onClick} disabled={disabled} type={type} loading={loading} icon={icon} size={size} width={width} variant={variant} flatEdge=\"right\">\r\n {children}\r\n </TextButton>\r\n <DropdownContent\r\n containerRef={dropdownContainerRef}\r\n customizationProps={dropdownCustomizationProps}\r\n filter=\"\"\r\n ref={dropdownContentRef}\r\n selectedValues={dropdownCustomizationProps.itemsType == 'normal' ? [] : dropdownMenuValues ?? selectedValues}\r\n setSelectedValues={setDropdownMenuValues ? setDropdownMenuValues : setSelectedValues}\r\n isButton={true}\r\n setIsOpen={setIsOpen}\r\n focused={focused}\r\n width={size == Size.Small ? '280px' : '360px'}\r\n onActiveDescendantChanged={(e) => setActiveDescendant(e)}\r\n setFocused={setFocused}\r\n size={size}\r\n outline={keyboardNavigated}\r\n isOpen={isOpen}\r\n id={dropdownContentId}\r\n messageOnNoResults=\"\"\r\n alignLeft={true}\r\n ariaRolesType=\"menu\"\r\n />\r\n </DropdownContainer>\r\n <TextButton\r\n variant={variant}\r\n {...renderProps}\r\n onKeyPress={(e: any) => {\r\n if (isOpen) return;\r\n\r\n if (e.key === 'Enter' || e.key === ' ') {\r\n setFocused(0);\r\n setKeyboardNavigated(true);\r\n }\r\n }}\r\n className=\"extraMargin\"\r\n testId={'options_toggleBtn'}\r\n ref={dropdownButtonRef}\r\n aria-activedescendant={activeDescendant}\r\n role=\"button\"\r\n aria-controls={dropdownContentId}\r\n disabled={disabled}\r\n type={type}\r\n size={size}\r\n onClick={(e) => {\r\n e.stopPropagation();\r\n setIsOpen(!isOpen);\r\n }}\r\n icon={ isOpen ? <SystemIcons.ArrowDropUp aria-hidden=\"true\" size=\"16px\" /> \r\n : <SystemIcons.ArrowDropDown aria-hidden=\"true\" size=\"16px\" /> }\r\n flatEdge=\"left\"\r\n />\r\n </DualButtonsContainer>\r\n );\r\n};\r\n\r\nexport default DualFunctionButton;\r\n"],"mappings":";;;;;;;AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAC9B,OAAOC,UAAU,IAAIC,0BAA0B,QAAyB,cAAc;AACtF,SAASC,WAAW,QAAQ,UAAU;AACtC,SAASC,iBAAiB,QAAQ,2BAA2B;AAC7D,SAASC,MAAM,QAAQ,QAAQ;AAC/B,SAASC,IAAI,QAAQ,UAAU;AAC/B,OAAOC,eAAe,MAAsC,6BAA6B;AACzF,OAAOC,MAAM,MAAM,mBAAmB;AACtC,SAASC,kBAAkB,EAAEC,kBAAkB,QAAQ,WAAW;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAEnE,MAAMC,oBAAoB,GAAGP,MAAM,CAACQ,GAAqB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAId,0BAA0B;AAC9B;AACA;AACA,eAAgBe,KAAK,IAAMA,KAAK,CAACC,KAAK,IAAIZ,IAAI,CAACa,KAAK,GAAG,UAAU,GAAGF,KAAK,CAACC,KAAK,IAAIZ,IAAI,CAACc,MAAM,GAAG,UAAU,GAAG,UAAW;AACzH;AACA;AACA;AACA;AACA;AACA,CAAC;AAsBD,MAAMC,kBAA4D,GAAGC,IAAA,IAa/D;EAAA,IAbgE;MACpEC,QAAQ,GAAG,gBAAgB;MAC3BC,OAAO,GAAG,SAAS;MACnBC,IAAI,GAAG,QAAQ;MACfC,IAAI,GAAGpB,IAAI,CAACc,MAAM;MACXO,KAAK,GAAG,MAAM;MACrBC,MAAM;MACNC,QAAQ;MACRC,EAAE;MACFC,kBAAkB;MAClBC,qBAAqB;MACrBC;IAEF,CAAC,GAAAX,IAAA;IADIL,KAAK,GAAAiB,wBAAA,CAAAZ,IAAA,EAAAa,SAAA;EAER;EACA,MAAM;MAAEC,OAAO;MAAEC,IAAI;MAAEC;IAAwB,CAAC,GAAGrB,KAAK;IAArBsB,WAAW,GAAAL,wBAAA,CAAKjB,KAAK,EAAAuB,UAAA;EACxD,MAAM,CAACC,MAAM,EAAEC,SAAS,CAAC,GAAG1C,KAAK,CAAC2C,QAAQ,CAAU,KAAK,CAAC;EAC1D,MAAM,CAACC,gBAAgB,EAAEC,mBAAmB,CAAC,GAAG7C,KAAK,CAAC2C,QAAQ,CAAS,CAAC;EACxE,MAAM,CAACG,OAAO,EAAEC,UAAU,CAAC,GAAG/C,KAAK,CAAC2C,QAAQ,CAAgB,IAAI,CAAC;EACjE,MAAM,CAACK,iBAAiB,EAAEC,oBAAoB,CAAC,GAAGjD,KAAK,CAAC2C,QAAQ,CAAU,KAAK,CAAC;EAChF,MAAMO,oBAAoB,GAAGlD,KAAK,CAACmD,MAAM,CAAiB,IAAI,CAAC;EAC/D,MAAM,CAACC,cAAc,EAAEC,iBAAiB,CAAC,GAAGrD,KAAK,CAAC2C,QAAQ,CAAW,EAAE,CAAC;EAExE,MAAMW,kBAAkB,GAAGtD,KAAK,CAACmD,MAAM,CAAiB,IAAI,CAAC;EAC7D,MAAMI,iBAAiB,GAAG9C,kBAAkB,CAC1C,MAAMiC,SAAS,CAAC,KAAK,CAAC,EACtB,CAACQ,oBAAoB,CAAC,EACtBxC,kBAAkB,CAAC,MAAMgC,SAAS,CAAC,KAAK,CAAC,EAAE,CAACY,kBAAkB,CAAC,CACjE,CAAC;EAED,MAAME,iBAAiB,GAAG1B,EAAE,GAAGA,EAAE,GAAG,kBAAkB,GAAGzB,MAAM,CAAC,CAAC;EAEjEL,KAAK,CAACyD,SAAS,CAAC,MAAM;IACpB,CAAChB,MAAM,IAAIQ,oBAAoB,CAAC,KAAK,CAAC;EACxC,CAAC,EAAE,CAACR,MAAM,CAAC,CAAC;EAEZ,oBACE3B,KAAA,CAACC,oBAAoB;IAACG,KAAK,EAAEQ,IAAK;IAAAH,QAAA,gBAChCT,KAAA,CAACV,iBAAiB;MAACsD,GAAG,EAAER,oBAAqB;MAACS,SAAS,EAAE,IAAK;MAACC,SAAS,EAAE,KAAM;MAACC,SAAS,EAAE,KAAM;MAACC,MAAM,EAAC,EAAE;MAAAvC,QAAA,gBAC1GX,IAAA,CAACX,UAAU,EAAA8D,aAAA,CAAAA,aAAA,KAAKxB,WAAW;QAAEX,MAAM,EAAEA,MAAO;QAACU,OAAO,EAAEA,OAAQ;QAACT,QAAQ,EAAEA,QAAS;QAACJ,IAAI,EAAEA,IAAK;QAACW,OAAO,EAAEA,OAAQ;QAACC,IAAI,EAAEA,IAAK;QAACX,IAAI,EAAEA,IAAK;QAACC,KAAK,EAAEA,KAAM;QAACH,OAAO,EAAEA,OAAQ;QAACwC,QAAQ,EAAC,OAAO;QAAAzC,QAAA,EACtLA;MAAQ,EACC,CAAC,eACbX,IAAA,CAACL,eAAe;QACd0D,YAAY,EAAEf,oBAAqB;QACnCgB,kBAAkB,EAAEjC,0BAA2B;QAC/CkC,MAAM,EAAC,EAAE;QACTT,GAAG,EAAEJ,kBAAmB;QACxBF,cAAc,EAAEnB,0BAA0B,CAACmC,SAAS,IAAI,QAAQ,GAAG,EAAE,GAAGrC,kBAAkB,IAAIqB,cAAe;QAC7GC,iBAAiB,EAAErB,qBAAqB,GAAGA,qBAAqB,GAAGqB,iBAAkB;QACrFgB,QAAQ,EAAE,IAAK;QACf3B,SAAS,EAAEA,SAAU;QACrBI,OAAO,EAAEA,OAAQ;QACjBnB,KAAK,EAAED,IAAI,IAAIpB,IAAI,CAACgE,KAAK,GAAG,OAAO,GAAG,OAAQ;QAC9CC,yBAAyB,EAAGC,CAAC,IAAK3B,mBAAmB,CAAC2B,CAAC,CAAE;QACzDzB,UAAU,EAAEA,UAAW;QACvBrB,IAAI,EAAEA,IAAK;QACX+C,OAAO,EAAEzB,iBAAkB;QAC3BP,MAAM,EAAEA,MAAO;QACfX,EAAE,EAAE0B,iBAAkB;QACtBkB,kBAAkB,EAAC,EAAE;QACrBC,SAAS,EAAE,IAAK;QAChBC,aAAa,EAAC;MAAM,CACrB,CAAC;IAAA,CACe,CAAC,eACpBhE,IAAA,CAACX,UAAU,EAAA8D,aAAA,CAAAA,aAAA;MACTvC,OAAO,EAAEA;IAAQ,GACbe,WAAW;MACfsC,UAAU,EAAGL,CAAM,IAAK;QACtB,IAAI/B,MAAM,EAAE;QAEZ,IAAI+B,CAAC,CAACM,GAAG,KAAK,OAAO,IAAIN,CAAC,CAACM,GAAG,KAAK,GAAG,EAAE;UACtC/B,UAAU,CAAC,CAAC,CAAC;UACbE,oBAAoB,CAAC,IAAI,CAAC;QAC5B;MACF,CAAE;MACF8B,SAAS,EAAC,aAAa;MACvBnD,MAAM,EAAE,mBAAoB;MAC5B8B,GAAG,EAAEH,iBAAkB;MACvB,yBAAuBX,gBAAiB;MACxCoC,IAAI,EAAC,QAAQ;MACb,iBAAexB,iBAAkB;MACjC3B,QAAQ,EAAEA,QAAS;MACnBJ,IAAI,EAAEA,IAAK;MACXC,IAAI,EAAEA,IAAK;MACXY,OAAO,EAAGkC,CAAC,IAAK;QACdA,CAAC,CAACS,eAAe,CAAC,CAAC;QACnBvC,SAAS,CAAC,CAACD,MAAM,CAAC;MACpB,CAAE;MACFJ,IAAI,EAAGI,MAAM,gBAAG7B,IAAA,CAACT,WAAW,CAAC+E,WAAW;QAAC,eAAY,MAAM;QAACxD,IAAI,EAAC;MAAM,CAAE,CAAC,gBACxEd,IAAA,CAACT,WAAW,CAACgF,aAAa;QAAC,eAAY,MAAM;QAACzD,IAAI,EAAC;MAAM,CAAE,CAAG;MAChEsC,QAAQ,EAAC;IAAM,EAChB,CAAC;EAAA,CACkB,CAAC;AAE3B,CAAC;AAAC3C,kBAAA,CAAA+D,SAAA;EAtGArD,kBAAkB,EAAAsD,GAAA,CAAAC,OAAA,CAAAD,GAAA,CAAAE,MAAA;EAKlBvD,qBAAqB,EAAAqD,GAAA,CAAAG;AAAA;AAmGvB,eAAenE,kBAAkB","ignoreList":[]}
|