qpp-style 9.20.4 → 9.20.6

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 (203) hide show
  1. package/.storybook/main.js +5 -22
  2. package/components/DropdownButton/DropdownButton.stories.js +86 -125
  3. package/components/DropdownButton/Menu.js +31 -0
  4. package/components/DropdownButton/MenuButton.js +41 -0
  5. package/components/DropdownButton/MenuItem.js +25 -0
  6. package/components/Footer/FooterUI.jsx +4 -1
  7. package/components/Infotip/Infotip.jsx +3 -3
  8. package/coverage/clover.xml +74 -74
  9. package/coverage/coverage-final.json +72 -72
  10. package/coverage/lcov-report/components/Accordion/index.html +1 -1
  11. package/coverage/lcov-report/components/Accordion/index.jsx.html +4 -4
  12. package/coverage/lcov-report/components/Button/index.html +116 -0
  13. package/coverage/lcov-report/components/Button/index.js.html +355 -0
  14. package/coverage/lcov-report/components/Error/Collapsible.jsx.html +1 -1
  15. package/coverage/lcov-report/components/Error/ErrorUI.jsx.html +1 -1
  16. package/coverage/lcov-report/components/Error/index.html +1 -1
  17. package/coverage/lcov-report/components/Footer/FooterUI.jsx.html +189 -348
  18. package/coverage/lcov-report/components/Footer/SocialLinks.jsx.html +11 -11
  19. package/coverage/lcov-report/components/Footer/Subscribe.jsx.html +11 -11
  20. package/coverage/lcov-report/components/Footer/index.html +29 -44
  21. package/coverage/lcov-report/components/{SideNav/UI → GovBanner}/index.html +27 -42
  22. package/coverage/lcov-report/components/GovBanner/index.js.html +436 -0
  23. package/coverage/lcov-report/components/{SideNav/Links/NavLinkInline.jsx.html → Header/HeaderAccountMenu.jsx.html} +118 -157
  24. package/coverage/lcov-report/components/{SideNav/Details/IndividualDetails.jsx.html → Header/HeaderCancel.jsx.html} +18 -24
  25. package/coverage/lcov-report/components/Header/HeaderContainer.jsx.html +280 -0
  26. package/coverage/lcov-report/components/{SideNav/Links/CmsSwitchLink.jsx.html → Header/HeaderLogo.jsx.html} +61 -58
  27. package/coverage/lcov-report/components/{SideNav/Links/NavItemInline.jsx.html → Header/HeaderMenuButton.js.html} +63 -75
  28. package/coverage/lcov-report/components/{SideNav/Content/LevelTwoContent.jsx.html → Header/HeaderMenuItem.jsx.html} +305 -236
  29. package/coverage/lcov-report/components/Header/HeaderMenuLink.js.html +253 -0
  30. package/coverage/lcov-report/components/Header/HeaderMenuSignOutButton.js.html +271 -0
  31. package/coverage/lcov-report/components/{SideNav/Links/NavLinkToggle.jsx.html → Header/HeaderMobileButton.js.html} +54 -45
  32. package/coverage/lcov-report/components/{Footer/LegacyFooterUI.jsx.html → Header/HeaderUI.jsx.html} +198 -303
  33. package/coverage/lcov-report/components/Header/HelpIcon.jsx.html +181 -0
  34. package/coverage/lcov-report/components/Header/ImpersonatorBanner.jsx.html +331 -0
  35. package/coverage/lcov-report/components/{SideNav/AnimationGroup/AnimationGroup.jsx.html → Header/NavigationButtonIcon.jsx.html} +48 -48
  36. package/coverage/lcov-report/components/Header/hooks.js.html +283 -0
  37. package/coverage/lcov-report/components/Header/index.html +326 -0
  38. package/coverage/lcov-report/components/{SideNav/Links/index.js.html → Header/utag-helpers.js.html} +28 -40
  39. package/coverage/lcov-report/components/Infotip/Infotip.jsx.html +5 -5
  40. package/coverage/lcov-report/components/Infotip/InfotipIcon.jsx.html +5 -5
  41. package/coverage/lcov-report/components/Infotip/index.html +1 -1
  42. package/coverage/lcov-report/components/Infotip/index.js.html +1 -1
  43. package/coverage/lcov-report/components/Modal/LegacyModal.jsx.html +3 -3
  44. package/coverage/lcov-report/components/Modal/Modal.jsx.html +5 -5
  45. package/coverage/lcov-report/components/Modal/index.html +1 -1
  46. package/coverage/lcov-report/components/Modal/index.jsx.html +5 -5
  47. package/coverage/lcov-report/components/{SideNav/Links/NavLinkContainer.jsx.html → NotificationBanner/CollapsedView.js.html} +61 -58
  48. package/coverage/lcov-report/components/{SideNav/Details/PracticeDetails.jsx.html → NotificationBanner/ExpandedView.js.html} +64 -64
  49. package/coverage/lcov-report/components/{SideNav/Details → NotificationBanner}/index.html +46 -46
  50. package/coverage/lcov-report/components/{SideNav/Content/LevelOneContent.jsx.html → NotificationBanner/index.js.html} +281 -242
  51. package/coverage/lcov-report/components/SanitizedContent/index.html +1 -1
  52. package/coverage/lcov-report/components/SanitizedContent/index.jsx.html +1 -1
  53. package/coverage/lcov-report/components/SessionDialogUI.jsx.html +4 -4
  54. package/coverage/lcov-report/components/SideNav/Chart/ScoreChart.jsx.html +7 -7
  55. package/coverage/lcov-report/components/SideNav/Chart/index.html +1 -16
  56. package/coverage/lcov-report/components/SideNav/{AnimationGroup → Content/SelectRole}/index.html +30 -30
  57. package/coverage/lcov-report/components/SideNav/Content/SelectRole/utils.js.html +505 -0
  58. package/coverage/lcov-report/components/SideNav/helpers.js.html +895 -10
  59. package/coverage/lcov-report/components/SideNav/index.html +17 -17
  60. package/coverage/lcov-report/components/Tooltip/Tooltip.jsx.html +8 -8
  61. package/coverage/lcov-report/components/Tooltip/index.html +1 -1
  62. package/coverage/lcov-report/components/Tooltip/index.js.html +1 -1
  63. package/coverage/lcov-report/components/Tooltip/position.js.html +1 -1
  64. package/coverage/lcov-report/components/hooks/index.html +5 -5
  65. package/coverage/lcov-report/components/hooks/useGetConfig.js.html +18 -15
  66. package/coverage/lcov-report/components/index.html +1 -1
  67. package/coverage/lcov-report/index.html +1 -1
  68. package/coverage/lcov-report/lib/Chevron.jsx.html +5 -5
  69. package/coverage/lcov-report/lib/SvgComponents.jsx.html +105 -12
  70. package/coverage/lcov-report/lib/index.html +15 -30
  71. package/coverage/lcov-report/react/components/Accordion/index.html +1 -1
  72. package/coverage/lcov-report/react/components/Accordion/index.jsx.html +1 -1
  73. package/coverage/lcov-report/react/components/Button/index.html +1 -1
  74. package/coverage/lcov-report/react/components/Button/index.js.html +1 -1
  75. package/coverage/lcov-report/react/components/Dropdown/index.html +1 -1
  76. package/coverage/lcov-report/react/components/Dropdown/index.js.html +1 -1
  77. package/coverage/lcov-report/react/components/Error/Collapsible.jsx.html +1 -1
  78. package/coverage/lcov-report/react/components/Error/ErrorUI.jsx.html +1 -1
  79. package/coverage/lcov-report/react/components/Error/error.js.html +1 -1
  80. package/coverage/lcov-report/react/components/Error/index.html +1 -1
  81. package/coverage/lcov-report/react/components/Footer/FooterUI.jsx.html +12 -3
  82. package/coverage/lcov-report/react/components/Footer/LegacyFooterUI.jsx.html +16 -16
  83. package/coverage/lcov-report/react/components/Footer/SocialLinks.jsx.html +1 -1
  84. package/coverage/lcov-report/react/components/Footer/Subscribe.jsx.html +1 -1
  85. package/coverage/lcov-report/react/components/Footer/footer.js.html +1 -1
  86. package/coverage/lcov-report/react/components/Footer/index.html +1 -1
  87. package/coverage/lcov-report/react/components/GovBanner/index.html +1 -1
  88. package/coverage/lcov-report/react/components/GovBanner/index.js.html +1 -1
  89. package/coverage/lcov-report/react/components/Header/HeaderAccountMenu.jsx.html +1 -1
  90. package/coverage/lcov-report/react/components/Header/HeaderCancel.jsx.html +1 -1
  91. package/coverage/lcov-report/react/components/Header/HeaderContainer.jsx.html +1 -1
  92. package/coverage/lcov-report/react/components/Header/HeaderLogo.jsx.html +1 -1
  93. package/coverage/lcov-report/react/components/Header/HeaderMenuButton.js.html +1 -1
  94. package/coverage/lcov-report/react/components/Header/HeaderMenuItem.jsx.html +1 -1
  95. package/coverage/lcov-report/react/components/Header/HeaderMenuLink.js.html +1 -1
  96. package/coverage/lcov-report/react/components/Header/HeaderMenuSignOutButton.js.html +1 -1
  97. package/coverage/lcov-report/react/components/Header/HeaderMobileButton.js.html +1 -1
  98. package/coverage/lcov-report/react/components/Header/HeaderUI.jsx.html +1 -1
  99. package/coverage/lcov-report/react/components/Header/HelpIcon.jsx.html +1 -1
  100. package/coverage/lcov-report/react/components/Header/ImpersonatorBanner.jsx.html +1 -1
  101. package/coverage/lcov-report/react/components/Header/NavigationButtonIcon.jsx.html +1 -1
  102. package/coverage/lcov-report/react/components/Header/header.js.html +1 -1
  103. package/coverage/lcov-report/react/components/Header/hooks.js.html +1 -1
  104. package/coverage/lcov-report/react/components/Header/index.html +1 -1
  105. package/coverage/lcov-report/react/components/Header/utag-helpers.js.html +1 -1
  106. package/coverage/lcov-report/react/components/Infotip/Infotip.jsx.html +4 -4
  107. package/coverage/lcov-report/react/components/Infotip/InfotipIcon.jsx.html +1 -1
  108. package/coverage/lcov-report/react/components/Infotip/index.html +1 -1
  109. package/coverage/lcov-report/react/components/Infotip/index.js.html +1 -1
  110. package/coverage/lcov-report/react/components/Modal/LegacyModal.jsx.html +1 -1
  111. package/coverage/lcov-report/react/components/Modal/Modal.jsx.html +1 -1
  112. package/coverage/lcov-report/react/components/Modal/index.html +1 -1
  113. package/coverage/lcov-report/react/components/Modal/index.jsx.html +1 -1
  114. package/coverage/lcov-report/react/components/NotificationBanner/CollapsedView.js.html +1 -1
  115. package/coverage/lcov-report/react/components/NotificationBanner/ExpandedView.js.html +1 -1
  116. package/coverage/lcov-report/react/components/NotificationBanner/index.html +1 -1
  117. package/coverage/lcov-report/react/components/NotificationBanner/index.js.html +1 -1
  118. package/coverage/lcov-report/react/components/SanitizedContent/index.html +1 -1
  119. package/coverage/lcov-report/react/components/SanitizedContent/index.jsx.html +1 -1
  120. package/coverage/lcov-report/react/components/SessionDialog/index.html +1 -1
  121. package/coverage/lcov-report/react/components/SessionDialog/sessionDialog.js.html +1 -1
  122. package/coverage/lcov-report/react/components/SessionDialogUI.jsx.html +1 -1
  123. package/coverage/lcov-report/react/components/SideNav/AnimationGroup/AnimationGroup.jsx.html +1 -1
  124. package/coverage/lcov-report/react/components/SideNav/AnimationGroup/index.html +1 -1
  125. package/coverage/lcov-report/react/components/SideNav/Chart/ScoreChart.jsx.html +1 -1
  126. package/coverage/lcov-report/react/components/SideNav/Chart/index.html +1 -1
  127. package/coverage/lcov-report/react/components/SideNav/Chart/index.js.html +1 -1
  128. package/coverage/lcov-report/react/components/SideNav/Content/LevelOneContent.jsx.html +1 -1
  129. package/coverage/lcov-report/react/components/SideNav/Content/LevelTwoContent.jsx.html +1 -1
  130. package/coverage/lcov-report/react/components/SideNav/Content/SelectRole/index.html +1 -1
  131. package/coverage/lcov-report/react/components/SideNav/Content/SelectRole/index.js.html +1 -1
  132. package/coverage/lcov-report/react/components/SideNav/Content/SelectRole/utils.js.html +1 -1
  133. package/coverage/lcov-report/react/components/SideNav/Content/index.html +1 -1
  134. package/coverage/lcov-report/react/components/SideNav/Content/index.js.html +1 -1
  135. package/coverage/lcov-report/react/components/SideNav/Details/IndividualDetails.jsx.html +1 -1
  136. package/coverage/lcov-report/react/components/SideNav/Details/PracticeDetails.jsx.html +1 -1
  137. package/coverage/lcov-report/react/components/SideNav/Details/index.html +1 -1
  138. package/coverage/lcov-report/react/components/SideNav/Details/index.js.html +1 -1
  139. package/coverage/lcov-report/react/components/SideNav/Links/CmsSwitchLink.jsx.html +1 -1
  140. package/coverage/lcov-report/react/components/SideNav/Links/NavItemInline.jsx.html +1 -1
  141. package/coverage/lcov-report/react/components/SideNav/Links/NavLinkContainer.jsx.html +1 -1
  142. package/coverage/lcov-report/react/components/SideNav/Links/NavLinkDrawer.jsx.html +1 -1
  143. package/coverage/lcov-report/react/components/SideNav/Links/NavLinkInline.jsx.html +1 -1
  144. package/coverage/lcov-report/react/components/SideNav/Links/NavLinkToggle.jsx.html +1 -1
  145. package/coverage/lcov-report/react/components/SideNav/Links/index.html +1 -1
  146. package/coverage/lcov-report/react/components/SideNav/Links/index.js.html +1 -1
  147. package/coverage/lcov-report/react/components/SideNav/UI/SideNavUI.jsx.html +1 -1
  148. package/coverage/lcov-report/react/components/SideNav/UI/index.html +1 -1
  149. package/coverage/lcov-report/react/components/SideNav/UI/index.js.html +1 -1
  150. package/coverage/lcov-report/react/components/SideNav/helpers.js.html +1 -1
  151. package/coverage/lcov-report/react/components/SideNav/index.html +1 -1
  152. package/coverage/lcov-report/react/components/SideNav/index.js.html +1 -1
  153. package/coverage/lcov-report/react/components/Tooltip/Tooltip.jsx.html +1 -1
  154. package/coverage/lcov-report/react/components/Tooltip/index.html +1 -1
  155. package/coverage/lcov-report/react/components/Tooltip/index.js.html +1 -1
  156. package/coverage/lcov-report/react/components/Tooltip/position.js.html +1 -1
  157. package/coverage/lcov-report/react/components/hooks/index.html +1 -1
  158. package/coverage/lcov-report/react/components/hooks/useGetConfig.js.html +1 -1
  159. package/coverage/lcov-report/react/components/index.html +1 -1
  160. package/coverage/lcov-report/react/index.html +1 -1
  161. package/coverage/lcov-report/react/index.js.html +1 -1
  162. package/coverage/lcov-report/react/lib/Chevron.jsx.html +1 -1
  163. package/coverage/lcov-report/react/lib/SvgComponents.jsx.html +1 -1
  164. package/coverage/lcov-report/react/lib/index.html +1 -1
  165. package/coverage/lcov-report/react/lib/svg-definitions.svg.html +1 -1
  166. package/coverage/lcov-report/react/session/index.html +1 -1
  167. package/coverage/lcov-report/react/session/index.js.html +1 -1
  168. package/coverage/lcov-report/react/session/logout.js.html +1 -1
  169. package/coverage/lcov-report/react/session/refresh.js.html +1 -1
  170. package/coverage/lcov-report/react/session/ttl.js.html +1 -1
  171. package/coverage/lcov-report/session/index.html +20 -20
  172. package/coverage/lcov-report/session/index.js.html +1 -1
  173. package/coverage/lcov-report/session/logout.js.html +24 -15
  174. package/coverage/lcov-report/session/refresh.js.html +2 -2
  175. package/coverage/lcov-report/session/ttl.js.html +2 -2
  176. package/dist/browser.js +1 -1
  177. package/dist/browser.js.map +1 -1
  178. package/dist/index.js +1 -1
  179. package/dist/index.js.map +1 -1
  180. package/dist/react/index.js +1 -1
  181. package/dist/react/index.js.map +1 -1
  182. package/images/icons/svg/clipboard.svg +1 -0
  183. package/images/icons/svg/doctors-and-clinicians-preview.svg +10 -0
  184. package/images/icons/svg/file-upload.svg +1 -1
  185. package/images/icons/svg/manage-user-access.svg +8 -0
  186. package/images/icons/svg/performance-feedback.svg +1 -0
  187. package/images/icons/svg/registration.svg +2 -2
  188. package/images/icons/svg/search.svg +1 -1
  189. package/images/icons/svg/targeted-review.svg +15 -0
  190. package/package.json +30 -33
  191. package/svgo.config.js +14 -0
  192. package/webpack.config.js +3 -12
  193. package/webpack.config.react.js +3 -12
  194. package/components/DropdownButton/index.js +0 -148
  195. package/coverage/lcov-report/components/SideNav/Chart/index.js.html +0 -94
  196. package/coverage/lcov-report/components/SideNav/Content/index.html +0 -146
  197. package/coverage/lcov-report/components/SideNav/Content/index.js.html +0 -97
  198. package/coverage/lcov-report/components/SideNav/Details/index.js.html +0 -97
  199. package/coverage/lcov-report/components/SideNav/Links/NavLinkDrawer.jsx.html +0 -832
  200. package/coverage/lcov-report/components/SideNav/Links/index.html +0 -206
  201. package/coverage/lcov-report/components/SideNav/UI/SideNavUI.jsx.html +0 -1084
  202. package/coverage/lcov-report/components/SideNav/UI/index.js.html +0 -94
  203. package/coverage/lcov-report/lib/svg-definitions.svg.html +0 -460
@@ -59,29 +59,12 @@ module.exports = {
59
59
  },
60
60
  ],
61
61
  });
62
+
62
63
  config.module.rules.push({
63
- test: /\.svg$/,
64
- type: 'asset/source',
65
- use: {
66
- loader: 'svgo-loader',
67
- options: {
68
- plugins: [
69
- {
70
- removeTitle: true,
71
- },
72
- {
73
- convertColors: {
74
- shorthex: false,
75
- },
76
- },
77
- {
78
- convertPathData: false,
79
- },
80
- ],
81
- },
82
- },
83
- }); // Modify default storybook SVG loader so we can use the one expected by qpp-style
84
- // NOTE: When updating storybook dependency, double check this override.
64
+ test: /\.svg$/i,
65
+ issuer: /\.[jt]sx?$/,
66
+ use: ['@svgr/webpack'],
67
+ });
85
68
 
86
69
  const staticAssetLoader = config.module.rules.find((rule) => {
87
70
  const regExp = rule.test;
@@ -1,137 +1,98 @@
1
1
  import React from 'react';
2
- import SvgIcon from '@material-ui/core/SvgIcon';
3
- import DropdownButton from './index';
4
- import { withKnobs, boolean } from '@storybook/addon-knobs';
2
+ import MenuButton from './MenuButton';
3
+ import Menu from './Menu';
4
+ import MenuItem from './MenuItem';
5
+ import { useMenuState } from 'ariakit/menu';
6
+ import Download from '@material-design-icons/svg/outlined/file_download.svg';
5
7
 
6
8
  export default {
7
9
  title: 'DropdownButton',
8
- component: DropdownButton,
9
- decorators: [withKnobs],
10
+ component: MenuButton,
10
11
  };
11
12
 
12
- // mat-ui v4 doesn't include this "FileDownload" icon, but mat-ui v5 does
13
- // whenever we update to v5, we could replace this svg with the one from npm
14
- const DownloadIcon = (...props) => (
15
- <SvgIcon {...props}>
16
- <path d="M18,15v3H6v-3H4v3c0,1.1,0.9,2,2,2h12c1.1,0,2-0.9,2-2v-3H18z M17,11l-1.41-1.41L13,12.17V4h-2v8.17L8.41,9.59L7,11l5,5 L17,11z" />
17
- </SvgIcon>
18
- );
13
+ export function BasicExample() {
14
+ const menu = useMenuState({ gutter: 8 });
15
+ const basicEx = ['option 1', 'Name of Option 2'];
19
16
 
20
- export const BasicExample = () => (
21
- <div className="qpp-u-padding--48">
22
- <DropdownButton
23
- menuId="example-menu-1"
24
- ariaLabel="aria label example"
25
- buttonLabel="Test"
26
- options={[
27
- {
28
- value: 'option 1',
29
- },
30
- { value: 'option 2', name: 'Name of Option 2' },
31
- ]}
32
- loading={boolean('loading', false)}
33
- />
34
- </div>
35
- );
17
+ return (
18
+ <div className="qpp-u-padding--48">
19
+ <MenuButton state={menu}>Test</MenuButton>
20
+ <Menu state={menu}>
21
+ {basicEx.map((item, i) => (
22
+ <MenuItem key={i}>{item}</MenuItem>
23
+ ))}
24
+ </Menu>
25
+ </div>
26
+ );
27
+ }
36
28
 
37
- /*
38
- Dropdown menu headers were removed from designs for now. We may revisit this
39
- in the future so we're leaving this here until we decide on design.
40
- */
41
- // export const WithHeader = () => (
42
- // <div className="qpp-u-padding--48">
43
- // <DropdownButton
44
- // menuId="example-menu-2"
45
- // ariaLabel="aria label example"
46
- // buttonLabel="Test"
47
- // options={[
48
- // {
49
- // value: 'option 1',
50
- // },
51
- // { value: 'option 2', name: 'Name of Option 2' },
52
- // ]}
53
- // header="Header"
54
- // />
55
- // </div>
56
- // );
29
+ export function MaxHeight() {
30
+ const menu = useMenuState({ gutter: 8 });
31
+ const maxHeightEx = [
32
+ 'option 1',
33
+ 'option 2',
34
+ 'option 3',
35
+ 'option 4',
36
+ 'option 5',
37
+ 'option 6',
38
+ 'option 7',
39
+ 'option 8',
40
+ 'option 9',
41
+ 'option 10',
42
+ ];
57
43
 
58
- export const Loading = () => (
59
- <div className="qpp-u-padding--48">
60
- <DropdownButton
61
- menuId="example-menu-3"
62
- ariaLabel="aria label example"
63
- buttonLabel="Test"
64
- options={[
65
- {
66
- value: 'option 1',
67
- },
68
- { value: 'option 2', name: 'Name of Option 2' },
69
- ]}
70
- loading
71
- />
72
- </div>
73
- );
44
+ return (
45
+ <div className="qpp-u-padding--48">
46
+ <MenuButton state={menu}>Test</MenuButton>
47
+ <Menu state={menu}>
48
+ {maxHeightEx.map((item, i) => (
49
+ <MenuItem key={i}>{item}</MenuItem>
50
+ ))}
51
+ </Menu>
52
+ </div>
53
+ );
54
+ }
74
55
 
75
- export const MaxHeight = () => (
76
- <div className="qpp-u-padding--48">
77
- <DropdownButton
78
- menuId="example-menu-3"
79
- ariaLabel="aria label example"
80
- buttonLabel="Test"
81
- options={[
82
- { value: 'option 1' },
83
- { value: 'option 2' },
84
- { value: 'option 3' },
85
- { value: 'option 4' },
86
- { value: 'option 5' },
87
- { value: 'option 6' },
88
- { value: 'option 7' },
89
- { value: 'option 8' },
90
- { value: 'option 9' },
91
- ]}
92
- loading={boolean('loading', false)}
93
- />
94
- </div>
95
- );
56
+ export function MaxWidth() {
57
+ const menu = useMenuState({ gutter: 8 });
58
+ const maxWidthtEx = [
59
+ 'option 1',
60
+ 'very long item text 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24',
61
+ ];
62
+ const maxContentLength = 57;
96
63
 
97
- export const MaxWidth = () => (
98
- <div className="qpp-u-padding--48">
99
- <DropdownButton
100
- menuId="example-menu-1"
101
- ariaLabel="aria label example"
102
- buttonLabel="Test"
103
- options={[
104
- { value: 'option 1' },
105
- {
106
- value: 'option 2',
107
- name: 'very long item text 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24',
108
- },
109
- ]}
110
- loading={boolean('loading', false)}
111
- />
112
- </div>
113
- );
64
+ return (
65
+ <div className="qpp-u-padding--48">
66
+ <MenuButton state={menu}>Test</MenuButton>
67
+ <Menu state={menu}>
68
+ {maxWidthtEx.map((item, i) => (
69
+ <MenuItem key={i}>{`${item.slice(0, maxContentLength)}...`}</MenuItem>
70
+ ))}
71
+ </Menu>
72
+ </div>
73
+ );
74
+ }
114
75
 
115
- export const ItemsWithIcons = () => (
116
- <div className="qpp-u-padding--48">
117
- <DropdownButton
118
- menuId="example-menu-1"
119
- ariaLabel="aria label example"
120
- buttonLabel="Test"
121
- options={[
122
- {
123
- value: 'option 1',
124
- Icon: DownloadIcon,
125
- 'aria-roledescription': 'Download file',
126
- },
127
- {
128
- value: 'option 2',
129
- name: 'very long item text 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24',
130
- Icon: DownloadIcon,
131
- 'aria-roledescription': 'Download file',
132
- },
133
- ]}
134
- loading={boolean('loading', false)}
135
- />
136
- </div>
137
- );
76
+ export function ItemsWithIcons() {
77
+ const menu = useMenuState({ gutter: 8 });
78
+ const maxWidthtEx = [
79
+ 'option 1',
80
+ 'very long item text 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24',
81
+ ];
82
+
83
+ const maxContentLengthWithIcon = 53;
84
+
85
+ return (
86
+ <div className="qpp-u-padding--48">
87
+ <MenuButton state={menu}>Test</MenuButton>
88
+ <Menu state={menu}>
89
+ {maxWidthtEx.map((item, i) => (
90
+ <MenuItem key={i}>
91
+ <Download />
92
+ {`${item.slice(0, maxContentLengthWithIcon)}...`}
93
+ </MenuItem>
94
+ ))}
95
+ </Menu>
96
+ </div>
97
+ );
98
+ }
@@ -0,0 +1,31 @@
1
+ import React from 'react';
2
+ import PropTypes from 'prop-types';
3
+ import { Menu as AriaKitMenu } from 'ariakit/menu';
4
+
5
+ function Menu({ state, className, children, ...props }) {
6
+ return (
7
+ <AriaKitMenu state={state} className={className} {...props}>
8
+ <div className="qpp-c-dropdown-menu__box">
9
+ <ul
10
+ className="qpp-c-dropdown-menu__list"
11
+ style={{ maxHeight: '264px', maxWidth: '400px' }} // temp. => to Sass
12
+ >
13
+ {children}
14
+ </ul>
15
+ </div>
16
+ </AriaKitMenu>
17
+ );
18
+ }
19
+
20
+ Menu.propTypes = {
21
+ state: PropTypes.object.isRequired,
22
+ className: PropTypes.string,
23
+ children: PropTypes.node,
24
+ };
25
+
26
+ Menu.defaultProps = {
27
+ className: 'qpp-c-dropdown-menu',
28
+ children: null,
29
+ };
30
+
31
+ export default Menu;
@@ -0,0 +1,41 @@
1
+ import React from 'react';
2
+ import PropTypes from 'prop-types';
3
+ import { MenuButton as AriaKitButton } from 'ariakit/menu';
4
+
5
+ function MenuButton({ state, className, iconExist, children, ...props }) {
6
+ const dropDownIsOpen = state.open;
7
+
8
+ const CheveronUpIcon = 'M12 8l-6 6 1.41 1.41L12 10.83l4.59 4.58L18 14z';
9
+ const CheveronDownIcon = 'M16.59 8.59L12 13.17 7.41 8.59 6 10l6 6 6-6z';
10
+
11
+ return (
12
+ <AriaKitButton state={state} className={className} {...props}>
13
+ {children}{' '}
14
+ {iconExist && (
15
+ <svg
16
+ className="qpp-icon-mat qpp-icon-inline--lg"
17
+ focusable="false"
18
+ viewBox="0 0 24 24"
19
+ aria-hidden="true"
20
+ >
21
+ <path d={dropDownIsOpen ? CheveronUpIcon : CheveronDownIcon} />
22
+ </svg>
23
+ )}
24
+ </AriaKitButton>
25
+ );
26
+ }
27
+
28
+ MenuButton.propTypes = {
29
+ state: PropTypes.object.isRequired,
30
+ className: PropTypes.string,
31
+ iconExist: PropTypes.bool,
32
+ children: PropTypes.node,
33
+ };
34
+
35
+ MenuButton.defaultProps = {
36
+ className: 'qpp-c-button',
37
+ iconExist: true,
38
+ children: null,
39
+ };
40
+
41
+ export default MenuButton;
@@ -0,0 +1,25 @@
1
+ import React from 'react';
2
+ import PropTypes from 'prop-types';
3
+ import { MenuItem as AriaKitMenuItem } from 'ariakit/menu';
4
+
5
+ function MenuItem({ as, className, children, ...props }) {
6
+ return (
7
+ <AriaKitMenuItem as={as} className={className} {...props}>
8
+ {children}
9
+ </AriaKitMenuItem>
10
+ );
11
+ }
12
+
13
+ MenuItem.propTypes = {
14
+ as: PropTypes.string,
15
+ className: PropTypes.string,
16
+ children: PropTypes.node,
17
+ };
18
+
19
+ MenuItem.defaultProps = {
20
+ as: 'li',
21
+ className: 'qpp-c-dropdown-menu__item',
22
+ children: null,
23
+ };
24
+
25
+ export default MenuItem;
@@ -98,7 +98,10 @@ const FooterUI = () => (
98
98
  <p>
99
99
  1-866-288-8292 (TRS: 711)
100
100
  <span className="footer-trs-infotip">
101
- <InfoTip label={infoTipLabel} />
101
+ <InfoTip
102
+ ariaLabel="TRS Communications Assistant Information"
103
+ label={infoTipLabel}
104
+ />
102
105
  </span>
103
106
  </p>
104
107
 
@@ -40,11 +40,11 @@ const touchHandlers = {
40
40
  /**
41
41
  * Tooltip with styled information icon
42
42
  */
43
- const Infotip = ({ label, lightIcon, ...props }) => (
43
+ const Infotip = ({ ariaLabel, label, lightIcon, ...props }) => (
44
44
  <Tooltip label={label} {...props}>
45
45
  <button
46
46
  type="button"
47
- aria-label="Information"
47
+ aria-label={ariaLabel}
48
48
  style={buttonStyle}
49
49
  {...touchHandlers}
50
50
  >
@@ -67,7 +67,7 @@ Infotip.propTypes = {
67
67
  };
68
68
 
69
69
  Infotip.defaultProps = {
70
- ariaLabel: undefined,
70
+ ariaLabel: 'Information',
71
71
  lightIcon: false,
72
72
  DEBUG_STYLE: undefined,
73
73
  };