@innovaccer/design-system 2.5.0-4 → 2.6.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.
Files changed (264) hide show
  1. package/.all-contributorsrc +1 -1
  2. package/.eslintrc.json +53 -0
  3. package/.github/workflows/jira.yml +1 -2
  4. package/.github/workflows/main.yml +2 -2
  5. package/.github/workflows/pull_request.yml +1 -1
  6. package/.github/workflows/test.yml +1 -1
  7. package/.husky/commit-msg +4 -0
  8. package/.prettierrc +2 -2
  9. package/CHANGELOG.md +38 -88
  10. package/CONTRIBUTING.md +173 -97
  11. package/README.md +1 -1
  12. package/commitlint.config.js +1 -0
  13. package/core/accessibility/utils/index.ts +5 -0
  14. package/core/accessibility/utils/isEnterKey.ts +5 -0
  15. package/core/accessibility/utils/isSpaceKey.ts +5 -0
  16. package/core/accessibility/utils/useAccessibilityProps.ts +31 -0
  17. package/core/components/atoms/_chip/__tests__/__snapshots__/_chip.test.tsx.snap +8 -0
  18. package/core/components/atoms/_chip/index.tsx +2 -0
  19. package/core/components/atoms/button/__stories__/Alert.story.tsx +8 -1
  20. package/core/components/atoms/button/__stories__/Cancel.story.tsx +4 -1
  21. package/core/components/atoms/button/__stories__/IconButtonGroup.story.tsx +12 -3
  22. package/core/components/atoms/button/__stories__/IconButtonSecondary.story.tsx +6 -1
  23. package/core/components/atoms/button/__stories__/IconLeftSecondary.story.tsx +4 -1
  24. package/core/components/atoms/button/__stories__/IconRightSecondary.story.tsx +4 -1
  25. package/core/components/atoms/button/__stories__/IconTransparent.story.tsx +4 -1
  26. package/core/components/atoms/button/__stories__/LabelButtonGroup.story.tsx +14 -3
  27. package/core/components/atoms/button/__stories__/LargeIconExpanded.story.tsx +4 -1
  28. package/core/components/atoms/button/__stories__/LoadingPrimary.story.tsx +4 -1
  29. package/core/components/atoms/button/__stories__/Primary.story.tsx +5 -2
  30. package/core/components/atoms/button/__stories__/SplitButton.story.tsx +6 -1
  31. package/core/components/atoms/button/__stories__/Transparent.story.tsx +8 -1
  32. package/core/components/atoms/button/__stories__/index.story.tsx +11 -1
  33. package/core/components/atoms/button/__stories__/variants/Appearance.story.tsx +4 -0
  34. package/core/components/atoms/button/__stories__/variants/Expanded.story.tsx +4 -0
  35. package/core/components/atoms/button/__stories__/variants/Size.story.tsx +4 -0
  36. package/core/components/atoms/button/__stories__/variants/icon/Icon.story.tsx +15 -0
  37. package/core/components/atoms/button/__stories__/variants/icon/IconLeft.story.tsx +4 -0
  38. package/core/components/atoms/button/__stories__/variants/icon/IconRight.story.tsx +4 -0
  39. package/core/components/atoms/button/__stories__/variants/state/Alert.story.tsx +7 -17
  40. package/core/components/atoms/button/__stories__/variants/state/Basic.story.tsx +9 -17
  41. package/core/components/atoms/button/__stories__/variants/state/Primary.story.tsx +7 -17
  42. package/core/components/atoms/button/__stories__/variants/state/Success.story.tsx +7 -17
  43. package/core/components/atoms/button/__stories__/variants/state/Transparent.story.tsx +13 -17
  44. package/core/components/atoms/chipGroup/__tests__/__snapshots__/chipGroup.test.tsx.snap +6 -0
  45. package/core/components/atoms/collapsible/__stories__/index.story.tsx +2 -2
  46. package/core/components/atoms/collapsible/__tests__/__snapshots__/Collapsible.test.tsx.snap +8 -0
  47. package/core/components/atoms/divider/Divider.tsx +44 -0
  48. package/core/components/atoms/divider/__stories__/BasicDividerInCard.story.tsx +74 -0
  49. package/core/components/atoms/divider/__stories__/HeaderDividerInCard.story.tsx +35 -0
  50. package/core/components/atoms/divider/__stories__/IndentedDivider.story.tsx +49 -0
  51. package/core/components/atoms/divider/__stories__/Vertical.story.tsx +51 -0
  52. package/core/components/atoms/divider/__stories__/index.story.tsx +91 -0
  53. package/core/components/atoms/divider/__stories__/variants/HorizontalDivider.story.tsx +27 -0
  54. package/core/components/atoms/divider/__tests__/Divider.test.tsx +50 -0
  55. package/core/components/atoms/divider/__tests__/__snapshots__/Divider.test.tsx.snap +53 -0
  56. package/core/components/atoms/divider/index.tsx +2 -0
  57. package/core/components/atoms/dropdown/DropdownList.tsx +8 -2
  58. package/core/components/atoms/dropdown/__stories__/variants/controlledDropdown/MultiSelect.story.tsx +27 -17
  59. package/core/components/atoms/dropdown/option/DefaultOption.tsx +3 -0
  60. package/core/components/atoms/dropdown/option/IconOption.tsx +3 -0
  61. package/core/components/atoms/dropdown/option/IconWithMetaOption.tsx +3 -0
  62. package/core/components/atoms/dropdown/option/MetaOption.tsx +3 -0
  63. package/core/components/atoms/editable/Editable.tsx +3 -0
  64. package/core/components/atoms/icon/Icon.tsx +14 -3
  65. package/core/components/atoms/icon/__stories__/variants/Image.story.tsx +6 -1
  66. package/core/components/atoms/icon/__tests__/__snapshots__/Icon.test.tsx.snap +74 -0
  67. package/core/components/atoms/input/Input.tsx +14 -4
  68. package/core/components/atoms/input/__stories__/BasicInput.story.tsx +2 -1
  69. package/core/components/atoms/input/__stories__/InputWithCaption.story.tsx +29 -9
  70. package/core/components/atoms/input/__stories__/InputWithLabel.story.tsx +11 -3
  71. package/core/components/atoms/input/__stories__/LabelPosition.story.tsx +8 -4
  72. package/core/components/atoms/input/__stories__/RequiredVsOptional.story.tsx +12 -8
  73. package/core/components/atoms/input/__tests__/__snapshots__/Input.test.tsx.snap +19 -0
  74. package/core/components/atoms/legend/Legend.tsx +3 -0
  75. package/core/components/atoms/message/__stories__/CustomDescription.tsx +25 -0
  76. package/core/components/atoms/metricInput/MetricInput.tsx +12 -2
  77. package/core/components/atoms/metricInput/__stories__/DefaultMetric.story.tsx +8 -2
  78. package/core/components/atoms/metricInput/__stories__/WithPrefix.story.tsx +6 -2
  79. package/core/components/atoms/metricInput/__stories__/index.story.tsx +1 -0
  80. package/core/components/atoms/metricInput/__stories__/variants/Controlled.story.tsx +2 -0
  81. package/core/components/atoms/metricInput/__stories__/variants/Size.story.tsx +2 -2
  82. package/core/components/atoms/metricInput/__stories__/withSuffix.story.tsx +6 -2
  83. package/core/components/atoms/metricInput/__tests__/__snapshots__/MetricInput.test.tsx.snap +20 -4
  84. package/core/components/atoms/multiSlider/Handle.tsx +3 -0
  85. package/core/components/atoms/multiSlider/index.tsx +6 -0
  86. package/core/components/atoms/outsideClick/__stories__/index.story.tsx +1 -1
  87. package/core/components/atoms/statusHint/StatusHint.tsx +3 -0
  88. package/core/components/atoms/switchInput/Switch.tsx +10 -4
  89. package/core/components/atoms/switchInput/__stories__/DefaultSwitch.story.tsx +4 -1
  90. package/core/components/atoms/switchInput/__stories__/OffState.story.tsx +4 -1
  91. package/core/components/atoms/switchInput/__stories__/index.story.tsx +26 -3
  92. package/core/components/atoms/switchInput/__stories__/variants/Size.story.tsx +10 -1
  93. package/core/components/atoms/switchInput/__stories__/variants/State.story.tsx +9 -2
  94. package/core/components/atoms/textarea/__stories__/TextareaWithCaption.story.tsx +9 -3
  95. package/core/components/atoms/textarea/__stories__/defaultTextarea.story.tsx +10 -2
  96. package/core/components/atoms/textarea/__stories__/index.story.tsx +1 -0
  97. package/core/components/atoms/textarea/__stories__/variants/Disable.story.tsx +1 -0
  98. package/core/components/atoms/toast/__tests__/__snapshots__/Toast.test.tsx.snap +30 -0
  99. package/core/components/css-utilities/Align/Align.story.tsx +1 -1
  100. package/core/components/css-utilities/Background/Background.story.tsx +1 -1
  101. package/core/components/css-utilities/Border/Border.story.tsx +1 -1
  102. package/core/components/css-utilities/Display/Display.story.tsx +1 -1
  103. package/core/components/css-utilities/Flex/Flex.story.tsx +1 -1
  104. package/core/components/css-utilities/Miscellaneous/Miscellaneous.story.tsx +1 -1
  105. package/core/components/css-utilities/Overflow/Overflow.story.tsx +1 -1
  106. package/core/components/css-utilities/Position/Position.story.tsx +1 -1
  107. package/core/components/css-utilities/Sizing/Sizing.story.tsx +1 -1
  108. package/core/components/css-utilities/Spacing/Spacing.story.tsx +1 -1
  109. package/core/components/molecules/chatMessage/Box.tsx +3 -0
  110. package/core/components/molecules/chipInput/ChipInput.tsx +3 -0
  111. package/core/components/molecules/chipInput/__tests__/__snapshots__/ChipInput.test.tsx.snap +12 -0
  112. package/core/components/molecules/dropzone/Dropzone.tsx +3 -0
  113. package/core/components/molecules/dropzone/FileSelectorUtils.tsx +1 -1
  114. package/core/components/molecules/editableChipInput/EditableChipInput.tsx +9 -5
  115. package/core/components/molecules/editableChipInput/__stories__/Uncontrolled.story.tsx +1 -1
  116. package/core/components/molecules/editableChipInput/__tests__/__snapshots__/EditableChipInput.test.tsx.snap +8 -0
  117. package/core/components/molecules/editableDropdown/EditableDropdown.tsx +2 -2
  118. package/core/components/molecules/editableInput/EditableInput.tsx +13 -4
  119. package/core/components/molecules/emptyState/EmptyState.tsx +5 -1
  120. package/core/components/molecules/fileList/FileListItem.tsx +2 -0
  121. package/core/components/molecules/fileUploader/FileUploaderItem.tsx +2 -0
  122. package/core/components/molecules/fileUploader/__stories__/index.story.tsx +156 -21
  123. package/core/components/molecules/inputMask/InputMask.tsx +1 -1
  124. package/core/components/molecules/inputMask/__tests__/__snapshots__/InputMask.test.tsx.snap +1 -0
  125. package/core/components/molecules/pagination/__tests__/__snapshots__/Pagination.test.tsx.snap +5 -1
  126. package/core/components/molecules/stepper/Step.tsx +2 -0
  127. package/core/components/molecules/tabs/Tabs.tsx +2 -0
  128. package/core/components/molecules/tabs/TabsWrapper.tsx +2 -0
  129. package/core/components/molecules/tabs/__stories__/CustomLabels.story.tsx +1 -1
  130. package/core/components/molecules/verificationCodeInput/VerificationCodeInput.tsx +8 -4
  131. package/core/components/molecules/verificationCodeInput/__stories__/index.story.tsx +3 -1
  132. package/core/components/molecules/verificationCodeInput/__tests__/__snapshots__/VerificationCodeInput.test.tsx.snap +1 -0
  133. package/core/components/organisms/calendar/Calendar.tsx +130 -8
  134. package/core/components/organisms/calendar/__tests__/Calendar.test.tsx +27 -0
  135. package/core/components/organisms/choiceList/ChoiceList.tsx +1 -1
  136. package/core/components/organisms/datePicker/DatePicker.tsx +30 -15
  137. package/core/components/organisms/datePicker/__tests__/DatePicker.test.tsx +136 -46
  138. package/core/components/organisms/datePicker/__tests__/__snapshots__/DatePicker.test.tsx.snap +4388 -1857
  139. package/core/components/organisms/dateRangePicker/__tests__/__snapshots__/DateRangePicker.test.tsx.snap +112 -40
  140. package/core/components/organisms/grid/Cell.tsx +4 -0
  141. package/core/components/organisms/grid/GridRow.tsx +4 -0
  142. package/core/components/organisms/grid/__stories__/_common_/fetchData.ts +2 -2
  143. package/core/components/organisms/horizontalNav/HorizontalNav.tsx +2 -0
  144. package/core/components/organisms/inlineMessage/InlineMessage.tsx +3 -5
  145. package/core/components/organisms/inlineMessage/__tests__/__snapshots__/InlineMessage.test.tsx.snap +30 -40
  146. package/core/components/organisms/navigation/VerticalNavigation.tsx +4 -0
  147. package/core/components/organisms/table/Table.tsx +1 -0
  148. package/core/components/organisms/table/__stories__/NestedTableWithNestedCard.story.tsx +4 -1
  149. package/core/components/organisms/table/__stories__/ResourceTable.story.tsx +3 -2
  150. package/core/components/organisms/table/__stories__/Selection.story.tsx +2 -2
  151. package/core/components/organisms/table/__stories__/TableAsDescriptionList.story.tsx +1 -1
  152. package/core/components/organisms/table/__stories__/TableAsOptionList.story.tsx +1 -1
  153. package/core/components/organisms/table/__stories__/syncTable.story.tsx +14 -6
  154. package/core/components/organisms/table/__stories__/variants/nestedRows.story.tsx +5 -2
  155. package/core/components/organisms/table/__stories__/variants/withHeader.story.tsx +0 -2
  156. package/core/components/organisms/timePicker/TimePicker.tsx +1 -1
  157. package/core/components/organisms/timePicker/__tests__/__snapshots__/TimePicker.test.tsx.snap +14 -2
  158. package/core/components/organisms/verticalNav/MenuItem.tsx +2 -0
  159. package/core/components/patterns/datePicker/datePickerWithPresets.story.tsx +126 -0
  160. package/core/components/patterns/dateRangePicker/withCustomPopover.story.tsx +8 -8
  161. package/core/components/patterns/forms/CreatePassword.story.tsx +1 -1
  162. package/core/components/patterns/forms/VerificationCodeInput.story.tsx +2 -2
  163. package/core/components/patterns/table/Table with Header/tableWithHeader.story.jsx +7 -7
  164. package/core/index.tsx +1 -0
  165. package/core/index.type.tsx +1 -0
  166. package/core/utils/Keys.ts +4 -0
  167. package/core/utils/__tests__/__snapshots__/TS.test.tsx.snap +544 -536
  168. package/core/utils/docPage/index.tsx +22 -17
  169. package/core/utils/testHelper.ts +1 -1
  170. package/core/utils/validators.ts +37 -34
  171. package/css/dist/index.css +1523 -1402
  172. package/css/dist/index.css.map +1 -1
  173. package/css/src/components/Legend.css +7 -7
  174. package/css/src/components/ProgressBar.css +1 -1
  175. package/css/src/components/avatarGroup.css +1 -1
  176. package/css/src/components/backdrop.css +12 -6
  177. package/css/src/components/badge.css +52 -52
  178. package/css/src/components/button.css +99 -94
  179. package/css/src/components/calendar.css +137 -126
  180. package/css/src/components/card.css +0 -1
  181. package/css/src/components/cardSubdued.css +3 -5
  182. package/css/src/components/chat.css +1 -1
  183. package/css/src/components/checkbox.css +71 -70
  184. package/css/src/components/chip.css +14 -13
  185. package/css/src/components/chipGroup.css +5 -5
  186. package/css/src/components/chipInput.css +1 -1
  187. package/css/src/components/choiceList.css +4 -4
  188. package/css/src/components/dateRangePicker.css +13 -13
  189. package/css/src/components/divider.css +20 -0
  190. package/css/src/components/dropdown.css +61 -61
  191. package/css/src/components/dropdownButton.css +36 -36
  192. package/css/src/components/dropzone.css +16 -20
  193. package/css/src/components/editableChipInput.css +10 -9
  194. package/css/src/components/editableDropdown.css +1 -1
  195. package/css/src/components/editableInput.css +1 -1
  196. package/css/src/components/emptyState.css +15 -15
  197. package/css/src/components/fileList.css +44 -45
  198. package/css/src/components/grid.css +217 -199
  199. package/css/src/components/horizontalNav.css +0 -1
  200. package/css/src/components/icon.css +1 -7
  201. package/css/src/components/inlineMessage.css +2 -1
  202. package/css/src/components/input.css +62 -62
  203. package/css/src/components/link.css +1 -1
  204. package/css/src/components/list.css +10 -10
  205. package/css/src/components/message.css +69 -70
  206. package/css/src/components/metaList.css +26 -26
  207. package/css/src/components/metricInput.css +3 -4
  208. package/css/src/components/modal.css +1 -1
  209. package/css/src/components/navigation.css +3 -3
  210. package/css/src/components/pageHeader.css +1 -2
  211. package/css/src/components/pagination.css +36 -36
  212. package/css/src/components/pills.css +19 -19
  213. package/css/src/components/placeholder.css +10 -5
  214. package/css/src/components/popover.css +2 -2
  215. package/css/src/components/progressRing.css +1 -1
  216. package/css/src/components/radio.css +74 -74
  217. package/css/src/components/slider.css +5 -5
  218. package/css/src/components/statusHints.css +15 -15
  219. package/css/src/components/switch.css +45 -41
  220. package/css/src/components/table.css +15 -15
  221. package/css/src/components/tabs.css +53 -53
  222. package/css/src/components/textarea.css +1 -1
  223. package/css/src/components/toast.css +53 -53
  224. package/css/src/components/verificationCodeInput.css +5 -6
  225. package/css/src/components/verticalNav.css +1 -2
  226. package/css/src/core/base.css +3 -0
  227. package/css/src/core/typography.css +1 -1
  228. package/css/src/core/utilities.css +1 -1
  229. package/css/src/tokens/index.css +63 -63
  230. package/css/src/utils/align.css +1 -1
  231. package/css/src/utils/background.css +1 -1
  232. package/css/src/utils/cursor.css +1 -1
  233. package/css/src/utils/display.css +1 -1
  234. package/css/src/utils/flex.css +1 -1
  235. package/css/src/utils/grid.css +1 -1
  236. package/css/src/utils/overflow.css +1 -1
  237. package/css/src/utils/position.css +1 -1
  238. package/css/src/utils/spacing.css +1 -1
  239. package/css/src/utils/utility.css +13 -13
  240. package/css/src/variables/index.css +1 -1
  241. package/dist/core/accessibility/utils/index.d.ts +4 -0
  242. package/dist/core/accessibility/utils/isEnterKey.d.ts +3 -0
  243. package/dist/core/accessibility/utils/isSpaceKey.d.ts +3 -0
  244. package/dist/core/accessibility/utils/useAccessibilityProps.d.ts +15 -0
  245. package/dist/core/components/atoms/divider/Divider.d.ts +15 -0
  246. package/dist/core/components/atoms/divider/index.d.ts +2 -0
  247. package/dist/core/components/atoms/icon/Icon.d.ts +3 -1
  248. package/dist/core/components/atoms/input/Input.d.ts +1 -1
  249. package/dist/core/components/atoms/popperWrapper/PopperWrapper.d.ts +50 -49
  250. package/dist/core/components/atoms/switchInput/Switch.d.ts +2 -1
  251. package/dist/core/components/organisms/calendar/Calendar.d.ts +31 -0
  252. package/dist/core/components/organisms/datePicker/DatePicker.d.ts +2 -0
  253. package/dist/core/components/patterns/datePicker/datePickerWithPresets.story.d.ts +15 -0
  254. package/dist/core/index.d.ts +1 -0
  255. package/dist/core/index.type.d.ts +1 -0
  256. package/dist/index.esm.js +829 -495
  257. package/dist/index.js +313 -144
  258. package/dist/index.js.map +1 -1
  259. package/dist/index.umd.js +1 -1
  260. package/dist/index.umd.js.br +0 -0
  261. package/dist/index.umd.js.gz +0 -0
  262. package/package.json +17 -14
  263. package/.husky/prepare-commit-msg +0 -6
  264. package/tslint.json +0 -30
@@ -0,0 +1,50 @@
1
+ import * as React from 'react';
2
+ import { render } from '@testing-library/react';
3
+ import { testHelper, filterUndefined, valueHelper, testMessageHelper } from '@/utils/testHelper';
4
+ import { Divider } from '@/index';
5
+ import { DividerProps as Props } from '@/index.type';
6
+
7
+ const appearance = ['basic', 'header'];
8
+ const booleanValue = [true, false];
9
+
10
+ const testFunc = (props: Record<string, any>): void => {
11
+ const attr = filterUndefined(props) as Props;
12
+
13
+ it(testMessageHelper(attr), () => {
14
+ const { baseElement } = render(<Divider {...attr} />);
15
+ expect(baseElement).toMatchSnapshot();
16
+ });
17
+ };
18
+
19
+ describe('Divider component snapshots', () => {
20
+ const mapper: Record<string, any> = {
21
+ vertical: valueHelper(booleanValue, { required: true, iterate: true }),
22
+ appearance: valueHelper(appearance, { required: true, iterate: true }),
23
+ };
24
+
25
+ testHelper(mapper, testFunc);
26
+ });
27
+
28
+ describe('Divider component with orientation:horizontal', () => {
29
+ it('test for horizontal divider type:Basic', () => {
30
+ const { getByTestId } = render(<Divider />);
31
+ expect(getByTestId('DesignSystem-Divider')).toHaveClass('Divider');
32
+ expect(getByTestId('DesignSystem-Divider')).toHaveClass('Divider--horizontal');
33
+ expect(getByTestId('DesignSystem-Divider')).toHaveClass('Divider--basic');
34
+ });
35
+
36
+ it('test for horizontal divider type:Header', () => {
37
+ const { getByTestId } = render(<Divider appearance="header" />);
38
+ expect(getByTestId('DesignSystem-Divider')).toHaveClass('Divider');
39
+ expect(getByTestId('DesignSystem-Divider')).toHaveClass('Divider--horizontal');
40
+ expect(getByTestId('DesignSystem-Divider')).toHaveClass('Divider--header');
41
+ });
42
+ });
43
+
44
+ describe('Divider component with orientation:vertical', () => {
45
+ it('test for Vertical divider', () => {
46
+ const { getByTestId } = render(<Divider vertical={true} />);
47
+ expect(getByTestId('DesignSystem-Divider')).toHaveClass('Divider--vertical');
48
+ expect(getByTestId('DesignSystem-Divider')).toHaveClass('Divider');
49
+ });
50
+ });
@@ -0,0 +1,53 @@
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`Divider component snapshots
4
+ vertical: false, appearance: "basic"
5
+ 1`] = `
6
+ <body>
7
+ <div>
8
+ <hr
9
+ class="Divider Divider--horizontal Divider--basic"
10
+ data-test="DesignSystem-Divider"
11
+ />
12
+ </div>
13
+ </body>
14
+ `;
15
+
16
+ exports[`Divider component snapshots
17
+ vertical: false, appearance: "header"
18
+ 1`] = `
19
+ <body>
20
+ <div>
21
+ <hr
22
+ class="Divider Divider--horizontal Divider--header"
23
+ data-test="DesignSystem-Divider"
24
+ />
25
+ </div>
26
+ </body>
27
+ `;
28
+
29
+ exports[`Divider component snapshots
30
+ vertical: true, appearance: "basic"
31
+ 1`] = `
32
+ <body>
33
+ <div>
34
+ <hr
35
+ class="Divider Divider--vertical Divider--basic"
36
+ data-test="DesignSystem-Divider"
37
+ />
38
+ </div>
39
+ </body>
40
+ `;
41
+
42
+ exports[`Divider component snapshots
43
+ vertical: true, appearance: "header"
44
+ 1`] = `
45
+ <body>
46
+ <div>
47
+ <hr
48
+ class="Divider Divider--vertical"
49
+ data-test="DesignSystem-Divider"
50
+ />
51
+ </div>
52
+ </body>
53
+ `;
@@ -0,0 +1,2 @@
1
+ export { default } from './Divider';
2
+ export * from './Divider';
@@ -411,6 +411,8 @@ const DropdownList = (props: OptionsProps) => {
411
411
  icon={'search'}
412
412
  value={searchTerm}
413
413
  placeholder={'Search..'}
414
+ // TODO(a11y): research more on this.
415
+ // eslint-disable-next-line jsx-a11y/no-autofocus
414
416
  autoFocus={true}
415
417
  onChange={searchHandler}
416
418
  onClear={searchClearHandler}
@@ -567,7 +569,7 @@ const DropdownList = (props: OptionsProps) => {
567
569
  event.preventDefault();
568
570
  dropdownOpen ? focusOption('up', optionClass) : onToggleDropdown(!dropdownOpen);
569
571
  break;
570
- case 'Enter':
572
+ case 'Enter': {
571
573
  const activeElement = document.activeElement;
572
574
  if (dropdownOpen && (inputRef.current === activeElement || dropdownTriggerRef.current === activeElement)) {
573
575
  event.preventDefault();
@@ -578,7 +580,8 @@ const DropdownList = (props: OptionsProps) => {
578
580
  }
579
581
  if (!dropdownOpen) onToggleDropdown(!dropdownOpen);
580
582
  break;
581
- case 'Tab':
583
+ }
584
+ case 'Tab': {
582
585
  if (!showApplyButton && dropdownOpen) {
583
586
  event.preventDefault();
584
587
  onToggleDropdown(false, 'onClick');
@@ -608,12 +611,15 @@ const DropdownList = (props: OptionsProps) => {
608
611
  }
609
612
 
610
613
  break;
614
+ }
611
615
  default:
612
616
  break;
613
617
  }
614
618
  };
615
619
 
616
620
  return (
621
+ //TODO(a11y)
622
+ //eslint-disable-next-line
617
623
  <div {...baseProps} className={dropdownClass} ref={triggerRef} onKeyDown={onkeydown}>
618
624
  <Popover
619
625
  onToggle={onToggleDropdown}
@@ -34,7 +34,7 @@ export const multiSelect = () => {
34
34
 
35
35
  const onSelectLessThan50 = (type: EventType, option?: any) => {
36
36
  switch (type) {
37
- case 'select-all':
37
+ case 'select-all': {
38
38
  const selectedDisabledArray = selectedLessThan50.filter((item) => item.disabled);
39
39
  const selectedOptions = [
40
40
  ...dropdownOptions.slice(0, 50).filter((item) => !item.disabled),
@@ -42,41 +42,51 @@ export const multiSelect = () => {
42
42
  ];
43
43
 
44
44
  setSelectedLessThan50(selectedOptions);
45
- return;
46
- case 'deselect-all':
45
+ break;
46
+ }
47
+ case 'deselect-all': {
47
48
  const selectedArr = selectedLessThan50.filter((item) => item.disabled);
48
49
  setSelectedLessThan50(selectedArr);
49
- return;
50
- case 'select-option':
50
+ break;
51
+ }
52
+ case 'select-option': {
51
53
  setSelectedLessThan50(selectedLessThan50.concat(option));
52
- return;
53
- case 'deselect-option':
54
+ break;
55
+ }
56
+ case 'deselect-option': {
54
57
  const selectedArray = selectedLessThan50.slice();
55
58
  const index = selectedArray.findIndex((item) => item.value === option.value);
56
59
  selectedArray.splice(index, 1);
57
60
  setSelectedLessThan50(selectedArray);
58
- default:
59
- return;
61
+ break;
62
+ }
63
+ default: {
64
+ break;
65
+ }
60
66
  }
61
67
  };
62
68
 
63
69
  const onSelectMoreThan50 = (type: EventType, option?: any) => {
64
70
  switch (type) {
65
- case 'select-option':
71
+ case 'select-option': {
66
72
  setSelectedMoreThan50(selectedMoreThan50.concat(option));
67
- return;
68
- case 'deselect-option':
73
+ break;
74
+ }
75
+ case 'deselect-option': {
69
76
  const selectedArray = selectedMoreThan50.slice();
70
77
  const index = selectedArray.findIndex((item) => item.value === option.value);
71
78
  selectedArray.splice(index, 1);
72
79
  setSelectedMoreThan50(selectedArray);
73
- return;
74
- case 'clear-all':
80
+ break;
81
+ }
82
+ case 'clear-all': {
75
83
  const selectedArr = selectedMoreThan50.filter((item) => item.disabled);
76
84
  setSelectedMoreThan50(selectedArr);
77
- return;
78
- default:
79
- return;
85
+ break;
86
+ }
87
+ default: {
88
+ break;
89
+ }
80
90
  }
81
91
  };
82
92
 
@@ -8,6 +8,8 @@ const DefaultOption = (props: OptionTypeProps) => {
8
8
  const { label, disabled } = optionData;
9
9
 
10
10
  return (
11
+ // TODO(a11y): fix accessibility
12
+ /* eslint-disable */
11
13
  <div
12
14
  className={className}
13
15
  onClick={onClickHandler}
@@ -15,6 +17,7 @@ const DefaultOption = (props: OptionTypeProps) => {
15
17
  data-test={dataTest}
16
18
  data-disabled={disabled}
17
19
  >
20
+ {/* eslint-enable */}
18
21
  <div className={'Option-label'}>
19
22
  <Text className={textClassName} appearance={appearance}>
20
23
  {label}
@@ -14,6 +14,8 @@ const IconOption = (props: OptionTypeProps) => {
14
14
  });
15
15
 
16
16
  return (
17
+ // TODO(a11y): fix accessibility
18
+ /* eslint-disable */
17
19
  <div
18
20
  className={OptionClass}
19
21
  onClick={onClickHandler}
@@ -21,6 +23,7 @@ const IconOption = (props: OptionTypeProps) => {
21
23
  data-test={dataTest}
22
24
  data-disabled={disabled}
23
25
  >
26
+ {/* eslint-enable */}
24
27
  {icon && (
25
28
  <Icon className="Option-icon mr-4" data-test={`${dataTest}--Icon`} name={icon} appearance={appearance} />
26
29
  )}
@@ -23,6 +23,8 @@ const IconWithMetaOption = (props: OptionTypeProps) => {
23
23
  });
24
24
 
25
25
  return (
26
+ // TODO(a11y): fix accessibility
27
+ /* eslint-disable */
26
28
  <div
27
29
  className={OptionClass}
28
30
  onClick={onClickHandler}
@@ -30,6 +32,7 @@ const IconWithMetaOption = (props: OptionTypeProps) => {
30
32
  data-test={dataTest}
31
33
  data-disabled={disabled}
32
34
  >
35
+ {/* eslint-enable */}
33
36
  {icon && (
34
37
  <Icon data-test={`${dataTest}--Icon`} className="Option-icon mr-4" name={icon} appearance={appearance} />
35
38
  )}
@@ -17,6 +17,8 @@ const MetaOption = (props: OptionTypeProps) => {
17
17
  const { subInfo, label, disabled } = optionData;
18
18
 
19
19
  return (
20
+ // TODO(a11y): fix accessibility
21
+ /* eslint-disable */
20
22
  <div
21
23
  className={className}
22
24
  onClick={onClickHandler}
@@ -24,6 +26,7 @@ const MetaOption = (props: OptionTypeProps) => {
24
26
  data-test={dataTest}
25
27
  data-disabled={disabled}
26
28
  >
29
+ {/* eslint-enable */}
27
30
  <div className={'Option-label'}>
28
31
  <Text className={textClassName} appearance={appearance}>
29
32
  {label}
@@ -22,12 +22,15 @@ export const Editable = (props: EditableProps) => {
22
22
 
23
23
  return (
24
24
  <div data-test="DesignSystem-Editable" {...baseProps} className={EditableClass}>
25
+ {/* TODO(a11y): fix accessibility */}
26
+ {/* eslint-disable */}
25
27
  <div
26
28
  data-test="DesignSystem-EditableWrapper"
27
29
  onClick={() => onChange('edit')}
28
30
  onMouseEnter={() => !editing && onChange('hover')}
29
31
  onMouseLeave={() => !editing && onChange('default')}
30
32
  >
33
+ {/* eslint-enable */}
31
34
  {children}
32
35
  </div>
33
36
  </div>
@@ -1,6 +1,7 @@
1
1
  import * as React from 'react';
2
2
  import classNames from 'classnames';
3
3
  import { BaseProps, extractBaseProps } from '@/utils/types';
4
+ import { useAccessibilityProps } from '@/accessibility/utils';
4
5
 
5
6
  export type Appearance =
6
7
  | 'default'
@@ -58,15 +59,25 @@ export interface IconProps extends BaseProps {
58
59
  /**
59
60
  * Handler to be called when icon is clicked
60
61
  */
61
- onClick?: (e: React.MouseEvent<HTMLElement, MouseEvent>) => void;
62
+ onClick?: (e: React.MouseEvent<HTMLElement>) => void;
63
+ /**
64
+ * Handler to be called when key is pressed on icon
65
+ */
66
+ onKeyDown?: (e: React.KeyboardEvent<HTMLElement>) => void;
62
67
  /**
63
68
  * DOM node to be passed as child to the component
64
69
  */
65
70
  children?: React.ReactNode;
71
+ /**
72
+ * The tabindex global attribute indicates that its element can be focused, and
73
+ * where it participates in sequential keyboard navigation.
74
+ */
75
+ tabIndex?: React.DetailedHTMLProps<React.HTMLAttributes<HTMLElement>, HTMLElement>['tabIndex'];
66
76
  }
67
77
 
68
78
  export const Icon = (props: IconProps) => {
69
- const { appearance, className, name, size, onClick, children } = props;
79
+ const { appearance, className, name, size, children } = props;
80
+ const accessibilityProps = useAccessibilityProps(props);
70
81
 
71
82
  const baseProps = extractBaseProps(props);
72
83
 
@@ -107,7 +118,7 @@ export const Icon = (props: IconProps) => {
107
118
  );
108
119
  }
109
120
  return (
110
- <i {...baseProps} className={iconClass} style={styles} onClick={onClick}>
121
+ <i {...baseProps} role="alert" className={iconClass} style={styles} {...accessibilityProps}>
111
122
  {type ? `${name}_${type}` : name}
112
123
  </i>
113
124
  );
@@ -4,7 +4,12 @@ import { Icon } from '@/index';
4
4
  export const image = () => {
5
5
  return (
6
6
  <Icon size={50}>
7
- <img src="https://innovaccer.com/static/image/site-logo/innovaccer-logo-black.svg" width="150" height="150" />
7
+ <img
8
+ alt="Innovaccer logo"
9
+ src="https://innovaccer.com/static/image/site-logo/innovaccer-logo-black.svg"
10
+ width="150"
11
+ height="150"
12
+ />
8
13
  </Icon>
9
14
  );
10
15
  };