qpp-style 9.20.5 → 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 (213) 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/coverage/clover.xml +386 -382
  7. package/coverage/coverage-final.json +72 -73
  8. package/coverage/lcov-report/components/Accordion/index.html +1 -1
  9. package/coverage/lcov-report/components/Accordion/index.jsx.html +4 -4
  10. package/coverage/lcov-report/components/Button/index.html +116 -0
  11. package/coverage/lcov-report/components/Button/index.js.html +355 -0
  12. package/coverage/lcov-report/components/Error/Collapsible.jsx.html +1 -1
  13. package/coverage/lcov-report/components/Error/ErrorUI.jsx.html +1 -1
  14. package/coverage/lcov-report/components/Error/index.html +1 -1
  15. package/coverage/lcov-report/components/Footer/FooterUI.jsx.html +189 -348
  16. package/coverage/lcov-report/components/Footer/SocialLinks.jsx.html +11 -11
  17. package/coverage/lcov-report/components/Footer/Subscribe.jsx.html +11 -11
  18. package/coverage/lcov-report/components/Footer/index.html +29 -44
  19. package/coverage/lcov-report/components/{SideNav/UI → GovBanner}/index.html +27 -42
  20. package/coverage/lcov-report/components/GovBanner/index.js.html +436 -0
  21. package/coverage/lcov-report/components/{SideNav/Links/NavLinkInline.jsx.html → Header/HeaderAccountMenu.jsx.html} +118 -157
  22. package/coverage/lcov-report/components/{SideNav/Details/IndividualDetails.jsx.html → Header/HeaderCancel.jsx.html} +18 -24
  23. package/coverage/lcov-report/components/Header/HeaderContainer.jsx.html +280 -0
  24. package/coverage/lcov-report/components/{SideNav/Links/CmsSwitchLink.jsx.html → Header/HeaderLogo.jsx.html} +61 -58
  25. package/coverage/lcov-report/components/{SideNav/Links/NavItemInline.jsx.html → Header/HeaderMenuButton.js.html} +63 -75
  26. package/coverage/lcov-report/components/{SideNav/Content/LevelTwoContent.jsx.html → Header/HeaderMenuItem.jsx.html} +305 -236
  27. package/coverage/lcov-report/components/Header/HeaderMenuLink.js.html +253 -0
  28. package/coverage/lcov-report/components/Header/HeaderMenuSignOutButton.js.html +271 -0
  29. package/coverage/lcov-report/components/{SideNav/Links/NavLinkToggle.jsx.html → Header/HeaderMobileButton.js.html} +54 -45
  30. package/coverage/lcov-report/components/{Footer/LegacyFooterUI.jsx.html → Header/HeaderUI.jsx.html} +198 -303
  31. package/coverage/lcov-report/components/Header/HelpIcon.jsx.html +181 -0
  32. package/coverage/lcov-report/components/Header/ImpersonatorBanner.jsx.html +331 -0
  33. package/coverage/lcov-report/components/{SideNav/AnimationGroup/AnimationGroup.jsx.html → Header/NavigationButtonIcon.jsx.html} +48 -48
  34. package/coverage/lcov-report/components/Header/hooks.js.html +283 -0
  35. package/coverage/lcov-report/components/Header/index.html +326 -0
  36. package/coverage/lcov-report/components/{SideNav/Links/index.js.html → Header/utag-helpers.js.html} +28 -40
  37. package/coverage/lcov-report/components/Infotip/Infotip.jsx.html +5 -5
  38. package/coverage/lcov-report/components/Infotip/InfotipIcon.jsx.html +5 -5
  39. package/coverage/lcov-report/components/Infotip/index.html +1 -1
  40. package/coverage/lcov-report/components/Infotip/index.js.html +1 -1
  41. package/coverage/lcov-report/components/Modal/LegacyModal.jsx.html +3 -3
  42. package/coverage/lcov-report/components/Modal/Modal.jsx.html +5 -5
  43. package/coverage/lcov-report/components/Modal/index.html +1 -1
  44. package/coverage/lcov-report/components/Modal/index.jsx.html +5 -5
  45. package/coverage/lcov-report/components/{SideNav/Links/NavLinkContainer.jsx.html → NotificationBanner/CollapsedView.js.html} +61 -58
  46. package/coverage/lcov-report/components/{SideNav/Details/PracticeDetails.jsx.html → NotificationBanner/ExpandedView.js.html} +64 -64
  47. package/coverage/lcov-report/components/{SideNav/Details → NotificationBanner}/index.html +46 -46
  48. package/coverage/lcov-report/components/{SideNav/Content/LevelOneContent.jsx.html → NotificationBanner/index.js.html} +281 -242
  49. package/coverage/lcov-report/components/SanitizedContent/index.html +1 -1
  50. package/coverage/lcov-report/components/SanitizedContent/index.jsx.html +1 -1
  51. package/coverage/lcov-report/components/SessionDialogUI.jsx.html +4 -4
  52. package/coverage/lcov-report/components/SideNav/Chart/ScoreChart.jsx.html +7 -7
  53. package/coverage/lcov-report/components/SideNav/Chart/index.html +1 -16
  54. package/coverage/lcov-report/components/SideNav/{AnimationGroup → Content/SelectRole}/index.html +30 -30
  55. package/coverage/lcov-report/components/SideNav/Content/SelectRole/utils.js.html +505 -0
  56. package/coverage/lcov-report/components/SideNav/helpers.js.html +895 -10
  57. package/coverage/lcov-report/components/SideNav/index.html +17 -17
  58. package/coverage/lcov-report/components/Tooltip/Tooltip.jsx.html +8 -8
  59. package/coverage/lcov-report/components/Tooltip/index.html +1 -1
  60. package/coverage/lcov-report/components/Tooltip/index.js.html +1 -1
  61. package/coverage/lcov-report/components/Tooltip/position.js.html +1 -1
  62. package/coverage/lcov-report/components/hooks/index.html +5 -5
  63. package/coverage/lcov-report/components/hooks/useGetConfig.js.html +18 -15
  64. package/coverage/lcov-report/components/index.html +1 -1
  65. package/coverage/lcov-report/index.html +56 -56
  66. package/coverage/lcov-report/lib/Chevron.jsx.html +5 -5
  67. package/coverage/lcov-report/lib/SvgComponents.jsx.html +105 -12
  68. package/coverage/lcov-report/lib/index.html +15 -30
  69. package/coverage/lcov-report/react/components/Accordion/index.html +1 -1
  70. package/coverage/lcov-report/react/components/Accordion/index.jsx.html +1 -1
  71. package/coverage/lcov-report/react/components/Button/index.html +1 -1
  72. package/coverage/lcov-report/react/components/Button/index.js.html +1 -1
  73. package/coverage/lcov-report/react/components/Dropdown/index.html +1 -1
  74. package/coverage/lcov-report/react/components/Dropdown/index.js.html +1 -1
  75. package/coverage/lcov-report/react/components/Error/Collapsible.jsx.html +1 -1
  76. package/coverage/lcov-report/react/components/Error/ErrorUI.jsx.html +1 -1
  77. package/coverage/lcov-report/react/components/Error/error.js.html +1 -1
  78. package/coverage/lcov-report/react/components/Error/index.html +1 -1
  79. package/coverage/lcov-report/react/components/Footer/FooterUI.jsx.html +32 -17
  80. package/coverage/lcov-report/react/components/Footer/LegacyFooterUI.jsx.html +1 -1
  81. package/coverage/lcov-report/react/components/Footer/SocialLinks.jsx.html +1 -1
  82. package/coverage/lcov-report/react/components/Footer/Subscribe.jsx.html +1 -1
  83. package/coverage/lcov-report/react/components/Footer/footer.js.html +1 -1
  84. package/coverage/lcov-report/react/components/Footer/index.html +1 -1
  85. package/coverage/lcov-report/react/components/GovBanner/index.html +1 -1
  86. package/coverage/lcov-report/react/components/GovBanner/index.js.html +3 -3
  87. package/coverage/lcov-report/react/components/Header/HeaderAccountMenu.jsx.html +26 -251
  88. package/coverage/lcov-report/react/components/Header/HeaderCancel.jsx.html +1 -1
  89. package/coverage/lcov-report/react/components/Header/HeaderContainer.jsx.html +2 -2
  90. package/coverage/lcov-report/react/components/Header/HeaderLogo.jsx.html +4 -4
  91. package/coverage/lcov-report/react/components/Header/HeaderMenuButton.js.html +1 -1
  92. package/coverage/lcov-report/react/components/Header/HeaderMenuItem.jsx.html +19 -19
  93. package/coverage/lcov-report/react/components/Header/HeaderMenuLink.js.html +1 -1
  94. package/coverage/lcov-report/react/components/Header/HeaderMenuSignOutButton.js.html +1 -1
  95. package/coverage/lcov-report/react/components/Header/HeaderMobileButton.js.html +2 -2
  96. package/coverage/lcov-report/react/components/Header/HeaderUI.jsx.html +89 -113
  97. package/coverage/lcov-report/react/components/Header/HelpIcon.jsx.html +2 -2
  98. package/coverage/lcov-report/react/components/Header/ImpersonatorBanner.jsx.html +5 -5
  99. package/coverage/lcov-report/react/components/Header/NavigationButtonIcon.jsx.html +1 -1
  100. package/coverage/lcov-report/react/components/Header/header.js.html +1 -1
  101. package/coverage/lcov-report/react/components/Header/hooks.js.html +59 -17
  102. package/coverage/lcov-report/react/components/Header/index.html +28 -28
  103. package/coverage/lcov-report/react/components/Header/utag-helpers.js.html +1 -1
  104. package/coverage/lcov-report/react/components/Infotip/Infotip.jsx.html +4 -4
  105. package/coverage/lcov-report/react/components/Infotip/InfotipIcon.jsx.html +1 -1
  106. package/coverage/lcov-report/react/components/Infotip/index.html +1 -1
  107. package/coverage/lcov-report/react/components/Infotip/index.js.html +1 -1
  108. package/coverage/lcov-report/react/components/Modal/LegacyModal.jsx.html +1 -1
  109. package/coverage/lcov-report/react/components/Modal/Modal.jsx.html +1 -1
  110. package/coverage/lcov-report/react/components/Modal/index.html +1 -1
  111. package/coverage/lcov-report/react/components/Modal/index.jsx.html +1 -1
  112. package/coverage/lcov-report/react/components/NotificationBanner/CollapsedView.js.html +49 -28
  113. package/coverage/lcov-report/react/components/NotificationBanner/ExpandedView.js.html +1 -1
  114. package/coverage/lcov-report/react/components/NotificationBanner/index.html +11 -11
  115. package/coverage/lcov-report/react/components/NotificationBanner/index.js.html +32 -32
  116. package/coverage/lcov-report/react/components/SanitizedContent/index.html +1 -1
  117. package/coverage/lcov-report/react/components/SanitizedContent/index.jsx.html +1 -1
  118. package/coverage/lcov-report/react/components/SessionDialog/index.html +1 -1
  119. package/coverage/lcov-report/react/components/SessionDialog/sessionDialog.js.html +1 -1
  120. package/coverage/lcov-report/react/components/SessionDialogUI.jsx.html +1 -1
  121. package/coverage/lcov-report/react/components/SideNav/AnimationGroup/AnimationGroup.jsx.html +1 -1
  122. package/coverage/lcov-report/react/components/SideNav/AnimationGroup/index.html +1 -1
  123. package/coverage/lcov-report/react/components/SideNav/Chart/ScoreChart.jsx.html +1 -1
  124. package/coverage/lcov-report/react/components/SideNav/Chart/index.html +1 -1
  125. package/coverage/lcov-report/react/components/SideNav/Chart/index.js.html +1 -1
  126. package/coverage/lcov-report/react/components/SideNav/Content/LevelOneContent.jsx.html +1 -1
  127. package/coverage/lcov-report/react/components/SideNav/Content/LevelTwoContent.jsx.html +1 -1
  128. package/coverage/lcov-report/react/components/SideNav/Content/SelectRole/index.html +13 -13
  129. package/coverage/lcov-report/react/components/SideNav/Content/SelectRole/index.js.html +1 -1
  130. package/coverage/lcov-report/react/components/SideNav/Content/SelectRole/utils.js.html +60 -24
  131. package/coverage/lcov-report/react/components/SideNav/Content/index.html +1 -1
  132. package/coverage/lcov-report/react/components/SideNav/Content/index.js.html +1 -1
  133. package/coverage/lcov-report/react/components/SideNav/Details/IndividualDetails.jsx.html +1 -1
  134. package/coverage/lcov-report/react/components/SideNav/Details/PracticeDetails.jsx.html +1 -1
  135. package/coverage/lcov-report/react/components/SideNav/Details/index.html +1 -1
  136. package/coverage/lcov-report/react/components/SideNav/Details/index.js.html +1 -1
  137. package/coverage/lcov-report/react/components/SideNav/Links/CmsSwitchLink.jsx.html +1 -1
  138. package/coverage/lcov-report/react/components/SideNav/Links/NavItemInline.jsx.html +1 -1
  139. package/coverage/lcov-report/react/components/SideNav/Links/NavLinkContainer.jsx.html +1 -1
  140. package/coverage/lcov-report/react/components/SideNav/Links/NavLinkDrawer.jsx.html +3 -3
  141. package/coverage/lcov-report/react/components/SideNav/Links/NavLinkInline.jsx.html +1 -1
  142. package/coverage/lcov-report/react/components/SideNav/Links/NavLinkToggle.jsx.html +1 -1
  143. package/coverage/lcov-report/react/components/SideNav/Links/index.html +1 -1
  144. package/coverage/lcov-report/react/components/SideNav/Links/index.js.html +1 -1
  145. package/coverage/lcov-report/react/components/SideNav/UI/SideNavUI.jsx.html +2 -20
  146. package/coverage/lcov-report/react/components/SideNav/UI/index.html +1 -1
  147. package/coverage/lcov-report/react/components/SideNav/UI/index.js.html +1 -1
  148. package/coverage/lcov-report/react/components/SideNav/helpers.js.html +78 -12
  149. package/coverage/lcov-report/react/components/SideNav/index.html +19 -19
  150. package/coverage/lcov-report/react/components/SideNav/index.js.html +1 -1
  151. package/coverage/lcov-report/react/components/Tooltip/Tooltip.jsx.html +1 -1
  152. package/coverage/lcov-report/react/components/Tooltip/index.html +1 -1
  153. package/coverage/lcov-report/react/components/Tooltip/index.js.html +1 -1
  154. package/coverage/lcov-report/react/components/Tooltip/position.js.html +1 -1
  155. package/coverage/lcov-report/react/components/hooks/index.html +19 -19
  156. package/coverage/lcov-report/react/components/hooks/useGetConfig.js.html +37 -37
  157. package/coverage/lcov-report/react/components/index.html +1 -1
  158. package/coverage/lcov-report/react/index.html +1 -1
  159. package/coverage/lcov-report/react/index.js.html +1 -1
  160. package/coverage/lcov-report/react/lib/Chevron.jsx.html +2 -2
  161. package/coverage/lcov-report/react/lib/SvgComponents.jsx.html +7 -4
  162. package/coverage/lcov-report/react/lib/index.html +5 -20
  163. package/coverage/lcov-report/react/lib/svg-definitions.svg.html +1 -1
  164. package/coverage/lcov-report/react/session/index.html +1 -1
  165. package/coverage/lcov-report/react/session/index.js.html +1 -1
  166. package/coverage/lcov-report/react/session/logout.js.html +1 -1
  167. package/coverage/lcov-report/react/session/refresh.js.html +1 -1
  168. package/coverage/lcov-report/react/session/ttl.js.html +1 -1
  169. package/coverage/lcov-report/session/index.html +20 -20
  170. package/coverage/lcov-report/session/index.js.html +1 -1
  171. package/coverage/lcov-report/session/logout.js.html +24 -15
  172. package/coverage/lcov-report/session/refresh.js.html +2 -2
  173. package/coverage/lcov-report/session/ttl.js.html +2 -2
  174. package/coverage/lcov.info +581 -577
  175. package/dist/browser.js +1 -1
  176. package/dist/browser.js.map +1 -1
  177. package/dist/index.js +1 -1
  178. package/dist/index.js.map +1 -1
  179. package/dist/react/index.js +1 -1
  180. package/dist/react/index.js.map +1 -1
  181. package/images/icons/svg/clipboard.svg +1 -0
  182. package/images/icons/svg/doctors-and-clinicians-preview.svg +10 -0
  183. package/images/icons/svg/file-upload.svg +1 -1
  184. package/images/icons/svg/manage-user-access.svg +8 -0
  185. package/images/icons/svg/performance-feedback.svg +1 -0
  186. package/images/icons/svg/registration.svg +2 -2
  187. package/images/icons/svg/search.svg +1 -1
  188. package/images/icons/svg/targeted-review.svg +15 -0
  189. package/package.json +30 -33
  190. package/svgo.config.js +14 -0
  191. package/webpack.config.js +3 -12
  192. package/webpack.config.react.js +3 -12
  193. package/components/DropdownButton/index.js +0 -148
  194. package/coverage/lcov-report/components/SideNav/Chart/index.js.html +0 -94
  195. package/coverage/lcov-report/components/SideNav/Content/index.html +0 -146
  196. package/coverage/lcov-report/components/SideNav/Content/index.js.html +0 -97
  197. package/coverage/lcov-report/components/SideNav/Details/index.js.html +0 -97
  198. package/coverage/lcov-report/components/SideNav/Links/NavLinkDrawer.jsx.html +0 -832
  199. package/coverage/lcov-report/components/SideNav/Links/index.html +0 -206
  200. package/coverage/lcov-report/components/SideNav/UI/SideNavUI.jsx.html +0 -1084
  201. package/coverage/lcov-report/components/SideNav/UI/index.js.html +0 -94
  202. package/coverage/lcov-report/lib/svg-definitions.svg.html +0 -460
  203. package/styles/components/_footer.scss +0 -593
  204. package/styles/components/_header.scss +0 -890
  205. package/styles/components/_sidebar.scss +0 -8
  206. package/styles/components/sidebar/_animations.scss +0 -38
  207. package/styles/components/sidebar/_cms.scss +0 -61
  208. package/styles/components/sidebar/_details.scss +0 -58
  209. package/styles/components/sidebar/_links.scss +0 -415
  210. package/styles/components/sidebar/_sidebar-animation.scss +0 -121
  211. package/styles/components/sidebar/_sidebar-tooltip.scss +0 -33
  212. package/styles/components/sidebar/_sidebar.scss +0 -141
  213. package/styles/components/sidebar/project-specific/_wi.scss +0 -42
@@ -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;