@laerdal/life-react-components 3.6.0-dev.1.full → 3.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (227) hide show
  1. package/dist/Accordion/__tests__/AccordionMenu.test.tsx +42 -0
  2. package/dist/Accordion/__tests__/ContentAccordion.test.tsx +150 -0
  3. package/dist/AuthPage/__tests__/AuthPage.test.tsx +27 -0
  4. package/dist/Banners/__tests__/Banner.test.tsx +47 -0
  5. package/dist/Banners/__tests__/OverviewBanner.test.tsx +20 -0
  6. package/dist/Breadcrumb/__tests__/Breadcrumb.test.tsx +78 -0
  7. package/dist/Button/TextButton.cjs +648 -0
  8. package/dist/Button/TextButton.cjs.map +1 -0
  9. package/dist/Button/TextButton.d.ts +77 -0
  10. package/dist/Button/TextButton.js +640 -0
  11. package/dist/Button/TextButton.js.map +1 -0
  12. package/dist/Button/__tests__/BackButton.test.tsx +32 -0
  13. package/dist/Button/__tests__/Button.test.tsx +45 -0
  14. package/dist/Button/__tests__/DualButton.test.tsx +119 -0
  15. package/dist/Button/__tests__/TextButton.test.tsx +45 -0
  16. package/dist/Card/HorizontalCard/__tests__/HorizontalCard.test.tsx +71 -0
  17. package/dist/Card/HorizontalCard/__tests__/VerticalCard.test.tsx +124 -0
  18. package/dist/Card/VerticalCard/VerticalCard.cjs +187 -0
  19. package/dist/Card/VerticalCard/VerticalCard.cjs.map +1 -0
  20. package/dist/Card/VerticalCard/VerticalCard.d.ts +25 -0
  21. package/dist/Card/VerticalCard/VerticalCard.js +178 -0
  22. package/dist/Card/VerticalCard/VerticalCard.js.map +1 -0
  23. package/dist/Card/VerticalCard/VerticalCardBottomSection.cjs +261 -0
  24. package/dist/Card/VerticalCard/VerticalCardBottomSection.cjs.map +1 -0
  25. package/dist/Card/VerticalCard/VerticalCardBottomSection.d.ts +53 -0
  26. package/dist/Card/VerticalCard/VerticalCardBottomSection.js +252 -0
  27. package/dist/Card/VerticalCard/VerticalCardBottomSection.js.map +1 -0
  28. package/dist/Card/VerticalCard/VerticalCardMiddleSection.cjs +145 -0
  29. package/dist/Card/VerticalCard/VerticalCardMiddleSection.cjs.map +1 -0
  30. package/dist/Card/VerticalCard/VerticalCardMiddleSection.d.ts +42 -0
  31. package/dist/Card/VerticalCard/VerticalCardMiddleSection.js +136 -0
  32. package/dist/Card/VerticalCard/VerticalCardMiddleSection.js.map +1 -0
  33. package/dist/Card/VerticalCard/VerticalCardTopSection.cjs +165 -0
  34. package/dist/Card/VerticalCard/VerticalCardTopSection.cjs.map +1 -0
  35. package/dist/Card/VerticalCard/VerticalCardTopSection.d.ts +45 -0
  36. package/dist/Card/VerticalCard/VerticalCardTopSection.js +156 -0
  37. package/dist/Card/VerticalCard/VerticalCardTopSection.js.map +1 -0
  38. package/dist/Card/VerticalCard/__tests__/VerticalCard.test.tsx +124 -0
  39. package/dist/Card/__tests__/Card.test.tsx +146 -0
  40. package/dist/Chips/ChoiceChips.cjs +0 -1
  41. package/dist/Chips/ChoiceChips.cjs.map +1 -1
  42. package/dist/Chips/ChoiceChips.js +0 -1
  43. package/dist/Chips/ChoiceChips.js.map +1 -1
  44. package/dist/Chips/__tests__/ActionChip.test.tsx +94 -0
  45. package/dist/Chips/__tests__/ChoiceChips.test.tsx +79 -0
  46. package/dist/Chips/__tests__/FilterChip.test.tsx +95 -0
  47. package/dist/Chips/__tests__/InputChip.test.tsx +155 -0
  48. package/dist/ChipsInput/ChipDropdownInput.cjs +1 -1
  49. package/dist/ChipsInput/ChipDropdownInput.cjs.map +1 -1
  50. package/dist/ChipsInput/ChipDropdownInput.js +1 -1
  51. package/dist/ChipsInput/ChipDropdownInput.js.map +1 -1
  52. package/dist/ChipsInput/__tests__/ChipDropdownInput.test.tsx +100 -0
  53. package/dist/ChipsInput/__tests__/ChipInputFields.test.tsx +155 -0
  54. package/dist/Dropdown/BasicDropdown.cjs +0 -2
  55. package/dist/Dropdown/BasicDropdown.cjs.map +1 -1
  56. package/dist/Dropdown/BasicDropdown.js +0 -2
  57. package/dist/Dropdown/BasicDropdown.js.map +1 -1
  58. package/dist/Dropdown/DropdownButton.cjs +0 -4
  59. package/dist/Dropdown/DropdownButton.cjs.map +1 -1
  60. package/dist/Dropdown/DropdownButton.js +0 -4
  61. package/dist/Dropdown/DropdownButton.js.map +1 -1
  62. package/dist/Dropdown/DropdownContent.cjs +1 -1
  63. package/dist/Dropdown/DropdownContent.cjs.map +1 -1
  64. package/dist/Dropdown/DropdownContent.js +1 -1
  65. package/dist/Dropdown/DropdownContent.js.map +1 -1
  66. package/dist/Dropdown/DropdownFilter.cjs +0 -2
  67. package/dist/Dropdown/DropdownFilter.cjs.map +1 -1
  68. package/dist/Dropdown/DropdownFilter.js +0 -2
  69. package/dist/Dropdown/DropdownFilter.js.map +1 -1
  70. package/dist/Dropdown/__tests__/DropdownFilter.test.tsx +39 -0
  71. package/dist/Footer/__tests__/Footer.test.tsx +182 -0
  72. package/dist/GlobalNavigationBar/__tests__/Logo.test.tsx +31 -0
  73. package/dist/GlobalNavigationBar/desktop/ExtendedMainMenu.cjs +1 -0
  74. package/dist/GlobalNavigationBar/desktop/ExtendedMainMenu.cjs.map +1 -1
  75. package/dist/GlobalNavigationBar/desktop/ExtendedMainMenu.js +1 -0
  76. package/dist/GlobalNavigationBar/desktop/ExtendedMainMenu.js.map +1 -1
  77. package/dist/GlobalNavigationBar/desktop/SubMenu.cjs +1 -0
  78. package/dist/GlobalNavigationBar/desktop/SubMenu.cjs.map +1 -1
  79. package/dist/GlobalNavigationBar/desktop/SubMenu.js +1 -0
  80. package/dist/GlobalNavigationBar/desktop/SubMenu.js.map +1 -1
  81. package/dist/GlobalNavigationBar/desktop/__tests__/DesktopActions.test.tsx +108 -0
  82. package/dist/GlobalNavigationBar/desktop/__tests__/ExtendedMainMenu.test.tsx +28 -0
  83. package/dist/GlobalNavigationBar/desktop/__tests__/MainMenu.test.tsx +55 -0
  84. package/dist/GlobalNavigationBar/desktop/__tests__/RightSideNav.test.tsx +45 -0
  85. package/dist/GlobalNavigationBar/desktop/__tests__/UserMenu.test.tsx +125 -0
  86. package/dist/GlobalNavigationBar/mobile/__tests__/MobileMenu.test.tsx +317 -0
  87. package/dist/GlobalNavigationBar/mobile/__tests__/MobileMenuContent.test.tsx +294 -0
  88. package/dist/GlobalNavigationBar/mobile/__tests__/MobileMenuHeader.test.tsx +195 -0
  89. package/dist/InputFields/QuickSearch.cjs +1 -1
  90. package/dist/InputFields/QuickSearch.cjs.map +1 -1
  91. package/dist/InputFields/QuickSearch.js +1 -1
  92. package/dist/InputFields/QuickSearch.js.map +1 -1
  93. package/dist/InputFields/__tests__/NumberField.test.tsx +67 -0
  94. package/dist/InputFields/__tests__/NumberInput.test.tsx +68 -0
  95. package/dist/InputFields/__tests__/QuickSearch.test.tsx +42 -0
  96. package/dist/LinearProgress/__tests__/LinearProgress.test.tsx +25 -0
  97. package/dist/List/__tests__/ListRow.test.tsx +18 -0
  98. package/dist/LoadingPage/__tests__/GlobalLoadingPage.test.tsx +23 -0
  99. package/dist/Modals/__tests__/Modal.test.tsx +169 -0
  100. package/dist/Modals/__tests__/ModalContainer.test.tsx +77 -0
  101. package/dist/Modals/__tests__/ModalContent.test.tsx +126 -0
  102. package/dist/NavItem/__tests__/NavItem.test.ts +6 -0
  103. package/dist/Navigation/NavigationProvider.cjs +43 -0
  104. package/dist/Navigation/NavigationProvider.cjs.map +1 -0
  105. package/dist/Navigation/NavigationProvider.d.ts +15 -0
  106. package/dist/Navigation/NavigationProvider.js +32 -0
  107. package/dist/Navigation/NavigationProvider.js.map +1 -0
  108. package/dist/Navigation/index.cjs +19 -0
  109. package/dist/Navigation/index.cjs.map +1 -0
  110. package/dist/Navigation/index.d.ts +2 -0
  111. package/dist/Navigation/index.js +2 -0
  112. package/dist/Navigation/index.js.map +1 -0
  113. package/dist/NotificationDot/__tests__/NotificationDot.test.tsx +33 -0
  114. package/dist/Paginator/__tests__/Paginator.test.tsx +33 -0
  115. package/dist/Popover/__tests__/Popover.test.tsx +64 -0
  116. package/dist/ProfileButton/__tests__/ProfileButton.test.tsx +31 -0
  117. package/dist/QuizButton/__tests__/QuizButton.test.tsx +53 -0
  118. package/dist/SegmentControl/__tests__/SegmentControl.test.tsx +145 -0
  119. package/dist/SideMenu/__tests__/SideMenu.test.tsx +99 -0
  120. package/dist/Switcher/__tests__/SwitcherMenuItem.tsx +14 -0
  121. package/dist/Table/Table.cjs +3 -1
  122. package/dist/Table/Table.cjs.map +1 -1
  123. package/dist/Table/Table.js +3 -1
  124. package/dist/Table/Table.js.map +1 -1
  125. package/dist/Table/TableBody.cjs +1 -1
  126. package/dist/Table/TableBody.cjs.map +1 -1
  127. package/dist/Table/TableBody.js +1 -1
  128. package/dist/Table/TableBody.js.map +1 -1
  129. package/dist/Table/TableFooter.cjs +0 -2
  130. package/dist/Table/TableFooter.cjs.map +1 -1
  131. package/dist/Table/TableFooter.js +0 -2
  132. package/dist/Table/TableFooter.js.map +1 -1
  133. package/dist/Table/__tests__/Table.test.tsx +499 -0
  134. package/dist/Tabs/__tests__/HorizontalTabs.test.tsx +95 -0
  135. package/dist/Tabs/__tests__/TabLink.test.tsx +40 -0
  136. package/dist/Tabs/__tests__/Tablist.test.tsx +37 -0
  137. package/dist/Tag/__tests__/Tag.test.tsx +86 -0
  138. package/dist/Toasters/__tests__/Toast.test.tsx +74 -0
  139. package/dist/Toggles/__tests__/ToggleButton.test.tsx +53 -0
  140. package/dist/Toggles/__tests__/ToggleSwitch.test.tsx +87 -0
  141. package/dist/Tooltips/__tests__/TooltipWrapper.test.tsx +16 -0
  142. package/dist/icons/systemicons/CreditCard.cjs +43 -0
  143. package/dist/icons/systemicons/CreditCard.cjs.map +1 -0
  144. package/dist/icons/systemicons/CreditCard.d.ts +3 -0
  145. package/dist/icons/systemicons/CreditCard.js +33 -0
  146. package/dist/icons/systemicons/CreditCard.js.map +1 -0
  147. package/dist/icons/systemicons/Discount.cjs +43 -0
  148. package/dist/icons/systemicons/Discount.cjs.map +1 -0
  149. package/dist/icons/systemicons/Discount.d.ts +3 -0
  150. package/dist/icons/systemicons/Discount.js +33 -0
  151. package/dist/icons/systemicons/Discount.js.map +1 -0
  152. package/dist/icons/systemicons/DocumentComplete.cjs +43 -0
  153. package/dist/icons/systemicons/DocumentComplete.cjs.map +1 -0
  154. package/dist/icons/systemicons/DocumentComplete.d.ts +3 -0
  155. package/dist/icons/systemicons/DocumentComplete.js +33 -0
  156. package/dist/icons/systemicons/DocumentComplete.js.map +1 -0
  157. package/dist/icons/systemicons/Folder.cjs +43 -0
  158. package/dist/icons/systemicons/Folder.cjs.map +1 -0
  159. package/dist/icons/systemicons/Folder.d.ts +3 -0
  160. package/dist/icons/systemicons/Folder.js +33 -0
  161. package/dist/icons/systemicons/Folder.js.map +1 -0
  162. package/dist/icons/systemicons/FolderNew.cjs +43 -0
  163. package/dist/icons/systemicons/FolderNew.cjs.map +1 -0
  164. package/dist/icons/systemicons/FolderNew.d.ts +3 -0
  165. package/dist/icons/systemicons/FolderNew.js +33 -0
  166. package/dist/icons/systemicons/FolderNew.js.map +1 -0
  167. package/dist/icons/systemicons/MoodHappy.cjs +43 -0
  168. package/dist/icons/systemicons/MoodHappy.cjs.map +1 -0
  169. package/dist/icons/systemicons/MoodHappy.d.ts +3 -0
  170. package/dist/icons/systemicons/MoodHappy.js +33 -0
  171. package/dist/icons/systemicons/MoodHappy.js.map +1 -0
  172. package/dist/icons/systemicons/MoodIndifferent.cjs +43 -0
  173. package/dist/icons/systemicons/MoodIndifferent.cjs.map +1 -0
  174. package/dist/icons/systemicons/MoodIndifferent.d.ts +3 -0
  175. package/dist/icons/systemicons/MoodIndifferent.js +33 -0
  176. package/dist/icons/systemicons/MoodIndifferent.js.map +1 -0
  177. package/dist/icons/systemicons/MoodSad.cjs +43 -0
  178. package/dist/icons/systemicons/MoodSad.cjs.map +1 -0
  179. package/dist/icons/systemicons/MoodSad.d.ts +3 -0
  180. package/dist/icons/systemicons/MoodSad.js +33 -0
  181. package/dist/icons/systemicons/MoodSad.js.map +1 -0
  182. package/dist/icons/systemicons/MoodVeryHappy.cjs +43 -0
  183. package/dist/icons/systemicons/MoodVeryHappy.cjs.map +1 -0
  184. package/dist/icons/systemicons/MoodVeryHappy.d.ts +3 -0
  185. package/dist/icons/systemicons/MoodVeryHappy.js +33 -0
  186. package/dist/icons/systemicons/MoodVeryHappy.js.map +1 -0
  187. package/dist/icons/systemicons/MoodVerySad.cjs +43 -0
  188. package/dist/icons/systemicons/MoodVerySad.cjs.map +1 -0
  189. package/dist/icons/systemicons/MoodVerySad.d.ts +3 -0
  190. package/dist/icons/systemicons/MoodVerySad.js +33 -0
  191. package/dist/icons/systemicons/MoodVerySad.js.map +1 -0
  192. package/dist/icons/systemicons/Orders.cjs +43 -0
  193. package/dist/icons/systemicons/Orders.cjs.map +1 -0
  194. package/dist/icons/systemicons/Orders.d.ts +3 -0
  195. package/dist/icons/systemicons/Orders.js +33 -0
  196. package/dist/icons/systemicons/Orders.js.map +1 -0
  197. package/dist/icons/systemicons/Palette.cjs +43 -0
  198. package/dist/icons/systemicons/Palette.cjs.map +1 -0
  199. package/dist/icons/systemicons/Palette.d.ts +3 -0
  200. package/dist/icons/systemicons/Palette.js +33 -0
  201. package/dist/icons/systemicons/Palette.js.map +1 -0
  202. package/dist/icons/systemicons/Stack.cjs +43 -0
  203. package/dist/icons/systemicons/Stack.cjs.map +1 -0
  204. package/dist/icons/systemicons/Stack.d.ts +3 -0
  205. package/dist/icons/systemicons/Stack.js +33 -0
  206. package/dist/icons/systemicons/Stack.js.map +1 -0
  207. package/dist/styles/design-tokens/dark/tokens.css +481 -0
  208. package/dist/styles/design-tokens/light/tokens.css +481 -0
  209. package/dist/styles/design-tokens/rqi_dark/tokens.css +481 -0
  210. package/dist/styles/design-tokens/rqi_light/tokens.css +481 -0
  211. package/dist/styles/react-datepicker.css +766 -0
  212. package/dist/styles/typography.cjs +35 -59
  213. package/dist/styles/typography.cjs.map +1 -1
  214. package/dist/styles/typography.d.ts +1 -1
  215. package/dist/styles/typography.js +35 -59
  216. package/dist/styles/typography.js.map +1 -1
  217. package/dist/test-utils.cjs +16 -10
  218. package/dist/test-utils.cjs.map +1 -1
  219. package/dist/test-utils.d.ts +5 -5
  220. package/dist/test-utils.js +14 -8
  221. package/dist/test-utils.js.map +1 -1
  222. package/dist/utils/color-tokens.cjs +91 -0
  223. package/dist/utils/color-tokens.cjs.map +1 -0
  224. package/dist/utils/color-tokens.d.ts +19 -0
  225. package/dist/utils/color-tokens.js +82 -0
  226. package/dist/utils/color-tokens.js.map +1 -0
  227. package/package.json +1 -1
@@ -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
+ });
@@ -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
+ });
@@ -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
+ });
@@ -205,6 +205,9 @@ var Table = function Table(props) {
205
205
  // Let's return filtered rows
206
206
  return tmpFilteredRows;
207
207
  };
208
+ React.useEffect(function () {
209
+ props.onSelectionChange && props.onSelectionChange(selected);
210
+ }, [selected]);
208
211
 
209
212
  /**
210
213
  * Takes care of local pagination.
@@ -332,7 +335,6 @@ var Table = function Table(props) {
332
335
  }
333
336
  }
334
337
  setSelected(currentSelection);
335
- props.onSelectionChange && props.onSelectionChange(currentSelection);
336
338
  }
337
339
  };
338
340
 
@@ -1 +1 @@
1
- {"version":3,"file":"Table.cjs","names":["React","_interopRequireWildcard","require","_types","_TableStyles","_LoadingIndicator","_TableHeaders","_interopRequireDefault","_TableFooter","_TableBody","_jsxRuntime","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","_typeof","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","_createForOfIteratorHelper","Symbol","iterator","Array","isArray","_unsupportedIterableToArray","_n","F","s","done","value","f","TypeError","next","_arrayLikeToArray","toString","slice","constructor","name","from","test","Table","props","onPreviousPageClick","onNextPageClick","onRowsPerPageChange","onTriggerSortingChange","columns","rows","remoteOperations","pagination","showLoadingIndicator","selectable","multiSelect","keyExpr","sortProps","accordion","_props$collapsed","collapsed","collapsedRows","rowsPerPageLabel","loaderZIndex","_React$useState","useState","_React$useState2","_slicedToArray2","rowsPerPage","setRowsPerPage","_React$useState3","_React$useState4","filteredRows","setFilteredRows","_React$useState5","_React$useState6","currentPageRows","setCurrentPageRows","_React$useState7","_React$useState8","currentPage","setCurrentPage","_React$useState9","_React$useState10","sort","setSort","_React$useState11","_React$useState12","setFrom","_React$useState13","_React$useState14","to","setTo","_React$useState15","_React$useState16","total","setTotal","_React$useState17","_React$useState18","isCollapsed","setIsCollapsed","_React$useState19","_React$useState20","selectAllState","setSelectAllState","_React$useState21","undefined","_React$useState22","selected","setSelected","useEffect","_sortProps$column","_sortProps$direction","column","direction","allowClearingSort","selectedRows","currentList","map","row","count","item","includes","filterAndSortRows","tmpFilteredRows","matchFilterCriteria","_iterator","_step","filterValue","key","toLowerCase","indexOf","err","b","rowsFrom","rowsTo","sortTableColumn","columnKey","sortDirection","previousPage","nextPage","changeRowsPerPage","onRowClick","_window","_window$getSelection","selectedText","window","getSelection","currentSelection","existing","_toConsumableArray2","splice","concat","onSelectionChange","onSelectAllClick","jsxs","TableWrapper","className","border","children","jsx","sortByColumn","prevPage","StyledTableSpinner","zindex","LoadingIndicator","size","Size","Medium","_default","exports"],"sources":["../../src/Table/Table.tsx"],"sourcesContent":["/**\r\n * Import React libraries.\r\n */\r\nimport * as React from 'react';\r\n\r\n/**\r\n * Import custom components.\r\n */\r\nimport {Size} from '../types'\r\n\r\n/**\r\n * Import custom styles.\r\n */\r\nimport {StyledTable, StyledTableSpinner, TableWrapper} from './TableStyles';\r\n\r\n/**\r\n * Import custom types.\r\n */\r\nimport {TableProps, TableColumn, TableSortingDirection, TableSortProps} from './TableTypes';\r\nimport {LoadingIndicator} from '../LoadingIndicator';\r\nimport TableHeader from './TableHeaders';\r\nimport TableFooter from './TableFooter';\r\nimport TableBody from './TableBody';\r\n\r\nconst Table: React.FunctionComponent<TableProps> = (props: TableProps) => {\r\n let {\r\n onPreviousPageClick,\r\n onNextPageClick,\r\n onRowsPerPageChange,\r\n onTriggerSortingChange,\r\n columns,\r\n rows,\r\n remoteOperations,\r\n pagination,\r\n showLoadingIndicator,\r\n selectable,\r\n multiSelect,\r\n keyExpr,\r\n sortProps,\r\n accordion,\r\n collapsed = true,\r\n\r\n collapsedRows,\r\n rowsPerPageLabel,\r\n loaderZIndex\r\n } = props;\r\n\r\n // States used within the component\r\n const [rowsPerPage, setRowsPerPage] = React.useState<number>(10);\r\n const [filteredRows, setFilteredRows] = React.useState<any[]>([]);\r\n const [currentPageRows, setCurrentPageRows] = React.useState<any[]>([]);\r\n const [currentPage, setCurrentPage] = React.useState<number>(1);\r\n const [sort, setSort] = React.useState<TableSortProps | undefined>();\r\n const [from, setFrom] = React.useState<number>();\r\n const [to, setTo] = React.useState<number>();\r\n const [total, setTotal] = React.useState<number>();\r\n\r\n const [isCollapsed, setIsCollapsed] = React.useState(true);\r\n\r\n const [selectAllState, setSelectAllState] = React.useState<'all' | 'some' | 'none'>('none');\r\n\r\n const [selected, setSelected] = React.useState<any | any[]>(multiSelect ? [] : undefined);\r\n\r\n React.useEffect(() => {\r\n setSort({\r\n column: sortProps?.column ?? '', \r\n direction: sortProps?.direction ?? 'asc', \r\n allowClearingSort: sortProps?.allowClearingSort === undefined ? true : sortProps.allowClearingSort\r\n });\r\n }, [sortProps])\r\n\r\n React.useEffect(() => {\r\n setSelected(props.selectedRows || (multiSelect ? [] : undefined))\r\n }, [props.selectedRows, multiSelect])\r\n\r\n /**\r\n * update select all checkbox state\r\n */\r\n React.useEffect(() => {\r\n if (multiSelect) {\r\n const currentList = currentPageRows.map(row => keyExpr ? row[keyExpr] : row);\r\n const count = selected.filter((item: any) => currentList.includes(item)).length;\r\n\r\n setSelectAllState(count === currentList.length ? 'all' : count > 0 ? 'some' : 'none');\r\n }\r\n }, [currentPageRows, multiSelect, selected, keyExpr])\r\n\r\n /**\r\n * Takes care of remote pagination.\r\n * Works only in case remote pagination is set to true.\r\n */\r\n React.useEffect(() => {\r\n if (remoteOperations) {\r\n setCurrentPageRows(rows);\r\n\r\n // Let's assign pagination values\r\n setFrom(pagination?.from);\r\n setTo(pagination?.to);\r\n setTotal(pagination?.total);\r\n setCurrentPage(pagination?.currentPage!);\r\n setRowsPerPage(pagination?.rowsPerPage!);\r\n }\r\n }, [remoteOperations, pagination, rows]);\r\n\r\n /**\r\n * Sets number of rows to display when accordion.\r\n */\r\n React.useEffect(() => {\r\n if (!accordion) return;\r\n\r\n setRowsPerPage(isCollapsed ? collapsedRows || 10 : rows.length);\r\n }, [rows, accordion, collapsedRows, isCollapsed])\r\n\r\n React.useEffect(() => {\r\n if (!accordion) return;\r\n\r\n setIsCollapsed(!!collapsed);\r\n }, [accordion, collapsed])\r\n\r\n /**\r\n * Filters out a rows by specific column filters and sorts them if any sorting is set.\r\n * @returns Filtered and sorted rows.\r\n */\r\n const filterAndSortRows = (): any[] => {\r\n let tmpFilteredRows = rows.filter((row) => {\r\n // Let's start with matched filter criteria\r\n let matchFilterCriteria = true;\r\n\r\n // Let's go through columns\r\n for (const column of columns) {\r\n // Let's check if filter value is specified for the column\r\n // And if it doesn't match the current row column value\r\n // Then let's update match filter criteria to failed\r\n if (column.filterValue && row[column.key].toLowerCase().indexOf(column.filterValue.toLowerCase()) === -1) {\r\n matchFilterCriteria = false;\r\n }\r\n }\r\n\r\n // Let's return row only in case match filter criteria succeeds\r\n if (matchFilterCriteria) {\r\n return row;\r\n }\r\n });\r\n\r\n // Let's apply sorting if needed\r\n if (!!sort?.column && !!sort?.direction) {\r\n // Let's sort the rows\r\n tmpFilteredRows.sort((a, b) => {\r\n if (a[sort.column!] > b[sort.column!]) {\r\n return sort.direction! === 'asc' ? 1 : -1;\r\n } else if (a[sort.column!] < b[sort.column!]) {\r\n return sort.direction! === 'asc' ? -1 : 1;\r\n } else {\r\n return 0;\r\n }\r\n });\r\n }\r\n\r\n // Let's return filtered rows\r\n return tmpFilteredRows;\r\n };\r\n\r\n /**\r\n * Takes care of local pagination.\r\n * Works only in case remote pagination is not defined or is set to false.\r\n */\r\n React.useEffect(() => {\r\n if (!remoteOperations) {\r\n // Let's retrieve temporary filtered rows and update globally filtered rows\r\n const tmpFilteredRows = filterAndSortRows();\r\n setFilteredRows(tmpFilteredRows);\r\n setTotal(tmpFilteredRows.length);\r\n\r\n // Assign rows from and rows to\r\n const rowsFrom = (currentPage - 1) * rowsPerPage;\r\n const rowsTo = rowsFrom + rowsPerPage >= tmpFilteredRows.length ? tmpFilteredRows.length : rowsFrom + rowsPerPage;\r\n\r\n // Set from and to values\r\n setFrom(rowsFrom + 1);\r\n setTo(rowsTo);\r\n\r\n // Filter out the rows\r\n setCurrentPageRows(tmpFilteredRows.slice(rowsFrom, rowsTo));\r\n }\r\n }, [rowsPerPage, rows, currentPage, columns, sort, remoteOperations]);\r\n\r\n\r\n /**\r\n * Applies a specific sorting to a column.\r\n * If no sorting exists, then applies ascending initially\r\n * @param column - Column to which sorting should be applied.\r\n */\r\n const sortTableColumn = (column: TableColumn): void => {\r\n let columnKey = '';\r\n let sortDirection: TableSortingDirection | undefined = undefined;\r\n\r\n if (sort?.column !== column.key) {\r\n columnKey = column.key;\r\n sortDirection = 'asc';\r\n } else {\r\n if (sort?.direction === 'desc' && sort?.allowClearingSort) {\r\n columnKey = '';\r\n sortDirection = undefined;\r\n } else {\r\n columnKey = sort.column;\r\n sortDirection = sort.direction === 'asc' ? 'desc' : 'asc';\r\n }\r\n }\r\n\r\n if(columnKey == '')\r\n setSort({ column: '', direction: 'asc', allowClearingSort: sort?.allowClearingSort});\r\n else\r\n setSort({column: columnKey, direction: sortDirection!, allowClearingSort: sort?.allowClearingSort});\r\n\r\n remoteOperations && onTriggerSortingChange && onTriggerSortingChange(columnKey, sortDirection);\r\n };\r\n\r\n /**\r\n * Navigates user back to the previous page and updates the current table page.\r\n */\r\n const previousPage = () => {\r\n if (remoteOperations) {\r\n // Let's inform parent component about page change\r\n if (onPreviousPageClick) {\r\n onPreviousPageClick();\r\n }\r\n } else {\r\n // Let's change the page within the component\r\n setCurrentPage(currentPage > 1 ? currentPage - 1 : 1);\r\n }\r\n };\r\n\r\n /**\r\n * Navigates user to the next page and updates the current table page.\r\n */\r\n const nextPage = () => {\r\n if (remoteOperations) {\r\n // Let's inform parent component about page change\r\n if (onNextPageClick) {\r\n onNextPageClick();\r\n }\r\n } else {\r\n // Let's change the page within the component\r\n setCurrentPage(currentPage * rowsPerPage >= filteredRows.length ? currentPage : currentPage + 1);\r\n }\r\n };\r\n\r\n /**\r\n * Updates the rows per page value and refreshes the table content accordingly.\r\n * @param value - Newly selected rows per page value.\r\n */\r\n const changeRowsPerPage = (value: number) => {\r\n // Let's check if we are using remote pagination\r\n if (remoteOperations) {\r\n // Inform parent component about rows per page change\r\n if (onRowsPerPageChange) {\r\n onRowsPerPageChange(value);\r\n }\r\n } else {\r\n // Let's reset current page to 1\r\n setCurrentPage(1);\r\n }\r\n\r\n // Let's set rows per page\r\n setRowsPerPage(value);\r\n };\r\n\r\n\r\n /**\r\n * Function which is called when a mouse click happens on a row to pass data to the parent component.\r\n * @param row - Row in which the link is located.\r\n */\r\n const onRowClick = (row: any): void => {\r\n const selectedText = window?.getSelection()?.toString();\r\n\r\n if (selectedText?.length === 0 && selectable) {\r\n const value = keyExpr ? row[keyExpr] : row;\r\n let currentSelection = value;\r\n if (!!multiSelect) {\r\n const existing = selected?.indexOf(value);\r\n if (existing > -1) {\r\n currentSelection = [...selected];\r\n currentSelection.splice(existing, 1);\r\n } else {\r\n currentSelection = [...selected, currentSelection];\r\n }\r\n }\r\n\r\n setSelected(currentSelection)\r\n props.onSelectionChange && props.onSelectionChange(currentSelection);\r\n }\r\n };\r\n\r\n /**\r\n * Function which is called when user clicks checkbox to select or deselect all rows.\r\n */\r\n const onSelectAllClick = () => {\r\n const currentList = currentPageRows.map(row => keyExpr ? row[keyExpr] : row);\r\n\r\n switch (selectAllState) {\r\n case 'all':\r\n setSelected([...selected].filter(item => !currentList.includes(item)));\r\n setSelectAllState('none');\r\n break;\r\n case 'none':\r\n setSelected([...selected, ...currentList]);\r\n setSelectAllState('all');\r\n break;\r\n case 'some':\r\n setSelected([...selected, ...currentList.filter(item => !selected.includes(item))]);\r\n setSelectAllState('all');\r\n break;\r\n }\r\n };\r\n\r\n /**\r\n * Return Table component.\r\n */\r\n return (\r\n <TableWrapper className={props.border ? 'border' : undefined}>\r\n <TableHeader {...props}/>\r\n <TableBody {...props}\r\n currentPageRows={currentPageRows}\r\n selected={selected}\r\n onRowClick={onRowClick}\r\n sortByColumn={sortTableColumn}\r\n onSelectAllClick={onSelectAllClick}\r\n sortProps={sort}\r\n selectAllState={selectAllState}/>\r\n <TableFooter {...props}\r\n onRowsPerPageChange={changeRowsPerPage}\r\n rowsPerPage={rowsPerPage}\r\n setIsCollapsed={setIsCollapsed}\r\n isCollapsed={isCollapsed}\r\n from={from}\r\n to={to}\r\n total={total}\r\n nextPage={nextPage}\r\n prevPage={previousPage}/>\r\n {showLoadingIndicator && (\r\n <StyledTableSpinner zindex={loaderZIndex}>\r\n <LoadingIndicator size={Size.Medium}/>\r\n </StyledTableSpinner>\r\n )}\r\n </TableWrapper>\r\n );\r\n};\r\n\r\nexport default Table;\r\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"Table.cjs","names":["React","_interopRequireWildcard","require","_types","_TableStyles","_LoadingIndicator","_TableHeaders","_interopRequireDefault","_TableFooter","_TableBody","_jsxRuntime","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","_typeof","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","_createForOfIteratorHelper","Symbol","iterator","Array","isArray","_unsupportedIterableToArray","_n","F","s","done","value","f","TypeError","next","_arrayLikeToArray","toString","slice","constructor","name","from","test","Table","props","onPreviousPageClick","onNextPageClick","onRowsPerPageChange","onTriggerSortingChange","columns","rows","remoteOperations","pagination","showLoadingIndicator","selectable","multiSelect","keyExpr","sortProps","accordion","_props$collapsed","collapsed","collapsedRows","rowsPerPageLabel","loaderZIndex","_React$useState","useState","_React$useState2","_slicedToArray2","rowsPerPage","setRowsPerPage","_React$useState3","_React$useState4","filteredRows","setFilteredRows","_React$useState5","_React$useState6","currentPageRows","setCurrentPageRows","_React$useState7","_React$useState8","currentPage","setCurrentPage","_React$useState9","_React$useState10","sort","setSort","_React$useState11","_React$useState12","setFrom","_React$useState13","_React$useState14","to","setTo","_React$useState15","_React$useState16","total","setTotal","_React$useState17","_React$useState18","isCollapsed","setIsCollapsed","_React$useState19","_React$useState20","selectAllState","setSelectAllState","_React$useState21","undefined","_React$useState22","selected","setSelected","useEffect","_sortProps$column","_sortProps$direction","column","direction","allowClearingSort","selectedRows","currentList","map","row","count","item","includes","filterAndSortRows","tmpFilteredRows","matchFilterCriteria","_iterator","_step","filterValue","key","toLowerCase","indexOf","err","b","onSelectionChange","rowsFrom","rowsTo","sortTableColumn","columnKey","sortDirection","previousPage","nextPage","changeRowsPerPage","onRowClick","_window","_window$getSelection","selectedText","window","getSelection","currentSelection","existing","_toConsumableArray2","splice","concat","onSelectAllClick","jsxs","TableWrapper","className","border","children","jsx","sortByColumn","prevPage","StyledTableSpinner","zindex","LoadingIndicator","size","Size","Medium","_default","exports"],"sources":["../../src/Table/Table.tsx"],"sourcesContent":["/**\r\n * Import React libraries.\r\n */\r\nimport * as React from 'react';\r\n\r\n/**\r\n * Import custom components.\r\n */\r\nimport {Size} from '../types'\r\n\r\n/**\r\n * Import custom styles.\r\n */\r\nimport {StyledTable, StyledTableSpinner, TableWrapper} from './TableStyles';\r\n\r\n/**\r\n * Import custom types.\r\n */\r\nimport {TableProps, TableColumn, TableSortingDirection, TableSortProps} from './TableTypes';\r\nimport {LoadingIndicator} from '../LoadingIndicator';\r\nimport TableHeader from './TableHeaders';\r\nimport TableFooter from './TableFooter';\r\nimport TableBody from './TableBody';\r\n\r\nconst Table: React.FunctionComponent<TableProps> = (props: TableProps) => {\r\n let {\r\n onPreviousPageClick,\r\n onNextPageClick,\r\n onRowsPerPageChange,\r\n onTriggerSortingChange,\r\n columns,\r\n rows,\r\n remoteOperations,\r\n pagination,\r\n showLoadingIndicator,\r\n selectable,\r\n multiSelect,\r\n keyExpr,\r\n sortProps,\r\n accordion,\r\n collapsed = true,\r\n\r\n collapsedRows,\r\n rowsPerPageLabel,\r\n loaderZIndex\r\n } = props;\r\n\r\n // States used within the component\r\n const [rowsPerPage, setRowsPerPage] = React.useState<number>(10);\r\n const [filteredRows, setFilteredRows] = React.useState<any[]>([]);\r\n const [currentPageRows, setCurrentPageRows] = React.useState<any[]>([]);\r\n const [currentPage, setCurrentPage] = React.useState<number>(1);\r\n const [sort, setSort] = React.useState<TableSortProps | undefined>();\r\n const [from, setFrom] = React.useState<number>();\r\n const [to, setTo] = React.useState<number>();\r\n const [total, setTotal] = React.useState<number>();\r\n\r\n const [isCollapsed, setIsCollapsed] = React.useState(true);\r\n\r\n const [selectAllState, setSelectAllState] = React.useState<'all' | 'some' | 'none'>('none');\r\n\r\n const [selected, setSelected] = React.useState<any | any[]>(multiSelect ? [] : undefined);\r\n\r\n React.useEffect(() => {\r\n setSort({\r\n column: sortProps?.column ?? '', \r\n direction: sortProps?.direction ?? 'asc', \r\n allowClearingSort: sortProps?.allowClearingSort === undefined ? true : sortProps.allowClearingSort\r\n });\r\n }, [sortProps])\r\n\r\n React.useEffect(() => {\r\n setSelected(props.selectedRows || (multiSelect ? [] : undefined))\r\n }, [props.selectedRows, multiSelect])\r\n\r\n /**\r\n * update select all checkbox state\r\n */\r\n React.useEffect(() => {\r\n if (multiSelect) {\r\n const currentList = currentPageRows.map(row => keyExpr ? row[keyExpr] : row);\r\n const count = selected.filter((item: any) => currentList.includes(item)).length;\r\n\r\n setSelectAllState(count === currentList.length ? 'all' : count > 0 ? 'some' : 'none');\r\n }\r\n }, [currentPageRows, multiSelect, selected, keyExpr])\r\n\r\n /**\r\n * Takes care of remote pagination.\r\n * Works only in case remote pagination is set to true.\r\n */\r\n React.useEffect(() => {\r\n if (remoteOperations) {\r\n setCurrentPageRows(rows);\r\n\r\n // Let's assign pagination values\r\n setFrom(pagination?.from);\r\n setTo(pagination?.to);\r\n setTotal(pagination?.total);\r\n setCurrentPage(pagination?.currentPage!);\r\n setRowsPerPage(pagination?.rowsPerPage!);\r\n }\r\n }, [remoteOperations, pagination, rows]);\r\n\r\n /**\r\n * Sets number of rows to display when accordion.\r\n */\r\n React.useEffect(() => {\r\n if (!accordion) return;\r\n\r\n setRowsPerPage(isCollapsed ? collapsedRows || 10 : rows.length);\r\n }, [rows, accordion, collapsedRows, isCollapsed])\r\n\r\n React.useEffect(() => {\r\n if (!accordion) return;\r\n\r\n setIsCollapsed(!!collapsed);\r\n }, [accordion, collapsed])\r\n\r\n /**\r\n * Filters out a rows by specific column filters and sorts them if any sorting is set.\r\n * @returns Filtered and sorted rows.\r\n */\r\n const filterAndSortRows = (): any[] => {\r\n let tmpFilteredRows = rows.filter((row) => {\r\n // Let's start with matched filter criteria\r\n let matchFilterCriteria = true;\r\n\r\n // Let's go through columns\r\n for (const column of columns) {\r\n // Let's check if filter value is specified for the column\r\n // And if it doesn't match the current row column value\r\n // Then let's update match filter criteria to failed\r\n if (column.filterValue && row[column.key].toLowerCase().indexOf(column.filterValue.toLowerCase()) === -1) {\r\n matchFilterCriteria = false;\r\n }\r\n }\r\n\r\n // Let's return row only in case match filter criteria succeeds\r\n if (matchFilterCriteria) {\r\n return row;\r\n }\r\n });\r\n\r\n // Let's apply sorting if needed\r\n if (!!sort?.column && !!sort?.direction) {\r\n // Let's sort the rows\r\n tmpFilteredRows.sort((a, b) => {\r\n if (a[sort.column!] > b[sort.column!]) {\r\n return sort.direction! === 'asc' ? 1 : -1;\r\n } else if (a[sort.column!] < b[sort.column!]) {\r\n return sort.direction! === 'asc' ? -1 : 1;\r\n } else {\r\n return 0;\r\n }\r\n });\r\n }\r\n\r\n // Let's return filtered rows\r\n return tmpFilteredRows;\r\n };\r\n\r\n React.useEffect(() => {\r\n props.onSelectionChange && props.onSelectionChange(selected);\r\n }, [selected]);\r\n\r\n /**\r\n * Takes care of local pagination.\r\n * Works only in case remote pagination is not defined or is set to false.\r\n */\r\n React.useEffect(() => {\r\n if (!remoteOperations) {\r\n // Let's retrieve temporary filtered rows and update globally filtered rows\r\n const tmpFilteredRows = filterAndSortRows();\r\n setFilteredRows(tmpFilteredRows);\r\n setTotal(tmpFilteredRows.length);\r\n\r\n // Assign rows from and rows to\r\n const rowsFrom = (currentPage - 1) * rowsPerPage;\r\n const rowsTo = rowsFrom + rowsPerPage >= tmpFilteredRows.length ? tmpFilteredRows.length : rowsFrom + rowsPerPage;\r\n\r\n // Set from and to values\r\n setFrom(rowsFrom + 1);\r\n setTo(rowsTo);\r\n\r\n // Filter out the rows\r\n setCurrentPageRows(tmpFilteredRows.slice(rowsFrom, rowsTo));\r\n }\r\n }, [rowsPerPage, rows, currentPage, columns, sort, remoteOperations]);\r\n\r\n\r\n /**\r\n * Applies a specific sorting to a column.\r\n * If no sorting exists, then applies ascending initially\r\n * @param column - Column to which sorting should be applied.\r\n */\r\n const sortTableColumn = (column: TableColumn): void => {\r\n let columnKey = '';\r\n let sortDirection: TableSortingDirection | undefined = undefined;\r\n\r\n if (sort?.column !== column.key) {\r\n columnKey = column.key;\r\n sortDirection = 'asc';\r\n } else {\r\n if (sort?.direction === 'desc' && sort?.allowClearingSort) {\r\n columnKey = '';\r\n sortDirection = undefined;\r\n } else {\r\n columnKey = sort.column;\r\n sortDirection = sort.direction === 'asc' ? 'desc' : 'asc';\r\n }\r\n }\r\n\r\n if(columnKey == '')\r\n setSort({ column: '', direction: 'asc', allowClearingSort: sort?.allowClearingSort});\r\n else\r\n setSort({column: columnKey, direction: sortDirection!, allowClearingSort: sort?.allowClearingSort});\r\n\r\n remoteOperations && onTriggerSortingChange && onTriggerSortingChange(columnKey, sortDirection);\r\n };\r\n\r\n /**\r\n * Navigates user back to the previous page and updates the current table page.\r\n */\r\n const previousPage = () => {\r\n if (remoteOperations) {\r\n // Let's inform parent component about page change\r\n if (onPreviousPageClick) {\r\n onPreviousPageClick();\r\n }\r\n } else {\r\n // Let's change the page within the component\r\n setCurrentPage(currentPage > 1 ? currentPage - 1 : 1);\r\n }\r\n };\r\n\r\n /**\r\n * Navigates user to the next page and updates the current table page.\r\n */\r\n const nextPage = () => {\r\n if (remoteOperations) {\r\n // Let's inform parent component about page change\r\n if (onNextPageClick) {\r\n onNextPageClick();\r\n }\r\n } else {\r\n // Let's change the page within the component\r\n setCurrentPage(currentPage * rowsPerPage >= filteredRows.length ? currentPage : currentPage + 1);\r\n }\r\n };\r\n\r\n /**\r\n * Updates the rows per page value and refreshes the table content accordingly.\r\n * @param value - Newly selected rows per page value.\r\n */\r\n const changeRowsPerPage = (value: number) => {\r\n // Let's check if we are using remote pagination\r\n if (remoteOperations) {\r\n // Inform parent component about rows per page change\r\n if (onRowsPerPageChange) {\r\n onRowsPerPageChange(value);\r\n }\r\n } else {\r\n // Let's reset current page to 1\r\n setCurrentPage(1);\r\n }\r\n\r\n // Let's set rows per page\r\n setRowsPerPage(value);\r\n };\r\n\r\n\r\n /**\r\n * Function which is called when a mouse click happens on a row to pass data to the parent component.\r\n * @param row - Row in which the link is located.\r\n */\r\n const onRowClick = (row: any): void => {\r\n const selectedText = window?.getSelection()?.toString();\r\n\r\n if (selectedText?.length === 0 && selectable) {\r\n const value = keyExpr ? row[keyExpr] : row;\r\n let currentSelection = value;\r\n if (!!multiSelect) {\r\n const existing = selected?.indexOf(value);\r\n if (existing > -1) {\r\n currentSelection = [...selected];\r\n currentSelection.splice(existing, 1);\r\n } else {\r\n currentSelection = [...selected, currentSelection];\r\n }\r\n }\r\n\r\n setSelected(currentSelection)\r\n }\r\n };\r\n\r\n /**\r\n * Function which is called when user clicks checkbox to select or deselect all rows.\r\n */\r\n const onSelectAllClick = () => {\r\n const currentList = currentPageRows.map(row => keyExpr ? row[keyExpr] : row);\r\n\r\n switch (selectAllState) {\r\n case 'all':\r\n setSelected([...selected].filter(item => !currentList.includes(item)));\r\n setSelectAllState('none');\r\n break;\r\n case 'none':\r\n setSelected([...selected, ...currentList]);\r\n setSelectAllState('all');\r\n break;\r\n case 'some':\r\n setSelected([...selected, ...currentList.filter(item => !selected.includes(item))]);\r\n setSelectAllState('all');\r\n break;\r\n }\r\n };\r\n\r\n /**\r\n * Return Table component.\r\n */\r\n return (\r\n <TableWrapper className={props.border ? 'border' : undefined}>\r\n <TableHeader {...props}/>\r\n <TableBody {...props}\r\n currentPageRows={currentPageRows}\r\n selected={selected}\r\n onRowClick={onRowClick}\r\n sortByColumn={sortTableColumn}\r\n onSelectAllClick={onSelectAllClick}\r\n sortProps={sort}\r\n selectAllState={selectAllState}/>\r\n <TableFooter {...props}\r\n onRowsPerPageChange={changeRowsPerPage}\r\n rowsPerPage={rowsPerPage}\r\n setIsCollapsed={setIsCollapsed}\r\n isCollapsed={isCollapsed}\r\n from={from}\r\n to={to}\r\n total={total}\r\n nextPage={nextPage}\r\n prevPage={previousPage}/>\r\n {showLoadingIndicator && (\r\n <StyledTableSpinner zindex={loaderZIndex}>\r\n <LoadingIndicator size={Size.Medium}/>\r\n </StyledTableSpinner>\r\n )}\r\n </TableWrapper>\r\n );\r\n};\r\n\r\nexport default Table;\r\n"],"mappings":"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","ignoreList":[]}
@@ -204,6 +204,9 @@ var Table = function Table(props) {
204
204
  // Let's return filtered rows
205
205
  return tmpFilteredRows;
206
206
  };
207
+ React.useEffect(function () {
208
+ props.onSelectionChange && props.onSelectionChange(selected);
209
+ }, [selected]);
207
210
 
208
211
  /**
209
212
  * Takes care of local pagination.
@@ -331,7 +334,6 @@ var Table = function Table(props) {
331
334
  }
332
335
  }
333
336
  setSelected(currentSelection);
334
- props.onSelectionChange && props.onSelectionChange(currentSelection);
335
337
  }
336
338
  };
337
339