qpp-style 1.2.0-rm.1 → 1.2.1-bv.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 (479) hide show
  1. package/.editorconfig +1 -1
  2. package/.eslintrc.js +29 -28
  3. package/.husky/pre-commit +5 -0
  4. package/.prettierrc +1 -0
  5. package/README.md +56 -1
  6. package/components/Accordion/index.jsx +17 -13
  7. package/components/Alert/index.js +15 -8
  8. package/components/Breadcrumb/index.js +8 -8
  9. package/components/Button/index.js +15 -15
  10. package/components/Details/DetailsIcons.js +50 -0
  11. package/components/Details/index.js +53 -0
  12. package/components/Dropdown/index.js +85 -0
  13. package/components/DropdownButton/Menu.js +25 -0
  14. package/components/DropdownButton/MenuButton.js +41 -0
  15. package/components/DropdownButton/MenuItem.js +25 -0
  16. package/components/DropdownButton/MenuItemLink.js +27 -0
  17. package/components/Error/Collapsible.jsx +3 -3
  18. package/components/Error/ErrorUI.jsx +4 -4
  19. package/components/Error/error.js +4 -4
  20. package/components/FlashNotification/FlashNotificationUI.jsx +11 -11
  21. package/components/FlashNotification/index.js +5 -5
  22. package/components/Footer/FooterUI.jsx +181 -225
  23. package/components/Footer/SocialLinks.jsx +1 -1
  24. package/components/Footer/Subscribe.jsx +1 -1
  25. package/components/Footer/footer.js +6 -16
  26. package/components/GovBanner/index.js +117 -0
  27. package/components/Header/HeaderAccountMenu.jsx +18 -93
  28. package/components/Header/HeaderCancel.jsx +2 -2
  29. package/components/Header/HeaderContainer.jsx +53 -26
  30. package/components/Header/HeaderLogo.jsx +25 -5
  31. package/components/Header/HeaderMenuButton.js +7 -7
  32. package/components/Header/HeaderMenuItem.jsx +48 -41
  33. package/components/Header/HeaderMenuLink.js +13 -7
  34. package/components/Header/HeaderMenuSignOutButton.js +9 -9
  35. package/components/Header/HeaderMobileButton.js +4 -4
  36. package/components/Header/HeaderUI.jsx +84 -73
  37. package/components/Header/HelpIcon.jsx +1 -1
  38. package/components/Header/ImpersonatorBanner.jsx +87 -0
  39. package/components/Header/NavigationButtonIcon.jsx +1 -1
  40. package/components/Header/header.js +6 -4
  41. package/components/Header/hooks.js +24 -10
  42. package/components/Header/utag-helpers.js +1 -1
  43. package/components/HeaderSearchBar/index.jsx +80 -0
  44. package/components/Infotip/Infotip.jsx +15 -19
  45. package/components/Infotip/InfotipContent.jsx +48 -0
  46. package/components/Infotip/InfotipIcon.jsx +5 -5
  47. package/components/Infotip/index.js +1 -1
  48. package/components/Link/index.js +61 -0
  49. package/components/Modal/LegacyModal.jsx +8 -8
  50. package/components/Modal/Modal.jsx +9 -9
  51. package/components/Modal/index.jsx +5 -5
  52. package/components/NotificationBanner/CollapsedView.js +39 -0
  53. package/components/NotificationBanner/ExpandedView.js +45 -0
  54. package/components/NotificationBanner/index.js +133 -177
  55. package/components/SanitizedContent/index.jsx +189 -166
  56. package/components/Search/index.js +54 -41
  57. package/components/Session/Session.jsx +89 -0
  58. package/components/Session/SessionDialogWrapped.jsx +12 -0
  59. package/components/Session/index.jsx +3 -0
  60. package/components/SideNav/AnimationGroup/AnimationGroup.jsx +11 -6
  61. package/components/SideNav/Content/LevelOneContent.jsx +34 -145
  62. package/components/SideNav/Content/SelectRole/index.js +70 -0
  63. package/components/SideNav/Content/SelectRole/utils.js +142 -0
  64. package/components/SideNav/Content/index.js +2 -3
  65. package/components/SideNav/Details/IndividualDetails.jsx +2 -2
  66. package/components/SideNav/Details/PracticeDetails.jsx +13 -3
  67. package/components/SideNav/Details/index.js +2 -2
  68. package/components/SideNav/Links/CmsSwitchLink.jsx +4 -4
  69. package/components/SideNav/Links/NavItemInline.jsx +7 -7
  70. package/components/SideNav/Links/NavLinkContainer.jsx +2 -2
  71. package/components/SideNav/Links/NavLinkDrawer.jsx +157 -54
  72. package/components/SideNav/Links/NavLinkInline.jsx +23 -19
  73. package/components/SideNav/Links/NavLinkToggle.jsx +7 -7
  74. package/components/SideNav/Links/index.js +5 -5
  75. package/components/SideNav/UI/SideNavUI.jsx +123 -122
  76. package/components/SideNav/UI/default-markup.js +4 -0
  77. package/components/SideNav/UI/index.js +1 -1
  78. package/components/SideNav/UI/utils.js +0 -0
  79. package/components/SideNav/helpers.js +32 -33
  80. package/components/SideNav/index.js +11 -35
  81. package/components/Tabs/TabPanel.js +2 -37
  82. package/components/Tabs/Tabs.js +73 -0
  83. package/components/TextInput/index.js +21 -21
  84. package/components/hooks/useGetConfig.js +9 -9
  85. package/components/index.js +24 -24
  86. package/dist/browser.js +1 -1
  87. package/dist/browser.js.LICENSE.txt +1 -7
  88. package/dist/browser.js.map +1 -1
  89. package/dist/index.js +1 -1
  90. package/dist/index.js.LICENSE.txt +1 -7
  91. package/dist/index.js.map +1 -1
  92. package/dist/react/index.js +1 -1
  93. package/dist/react/index.js.LICENSE.txt +16 -16
  94. package/dist/react/index.js.map +1 -1
  95. package/fonts/PublicSans-Black.ttf +0 -0
  96. package/fonts/PublicSans-BlackItalic.ttf +0 -0
  97. package/fonts/PublicSans-Bold.ttf +0 -0
  98. package/fonts/PublicSans-BoldItalic.ttf +0 -0
  99. package/fonts/PublicSans-ExtraBold.ttf +0 -0
  100. package/fonts/PublicSans-ExtraBoldItalic.ttf +0 -0
  101. package/fonts/PublicSans-ExtraLight.ttf +0 -0
  102. package/fonts/PublicSans-ExtraLightItalic.ttf +0 -0
  103. package/fonts/PublicSans-Italic.ttf +0 -0
  104. package/fonts/PublicSans-Light.ttf +0 -0
  105. package/fonts/PublicSans-LightItalic.ttf +0 -0
  106. package/fonts/PublicSans-Medium.ttf +0 -0
  107. package/fonts/PublicSans-MediumItalic.ttf +0 -0
  108. package/fonts/PublicSans-Regular.ttf +0 -0
  109. package/fonts/PublicSans-SemiBold.ttf +0 -0
  110. package/fonts/PublicSans-SemiBoldItalic.ttf +0 -0
  111. package/fonts/PublicSans-Thin.ttf +0 -0
  112. package/fonts/PublicSans-ThinItalic.ttf +0 -0
  113. package/images/icon-dot-gov.svg +1 -0
  114. package/images/icon-https.svg +1 -0
  115. package/images/icons/svg/arrow-down.svg +2 -2
  116. package/images/icons/svg/arrow-download.svg +1 -5
  117. package/images/icons/svg/arrow-right.svg +1 -5
  118. package/images/icons/svg/arrow-up.svg +3 -0
  119. package/images/icons/svg/block.svg +5 -0
  120. package/images/icons/svg/calendar.svg +1 -0
  121. package/images/icons/svg/check-circle.svg +5 -0
  122. package/images/icons/svg/checkmark.svg +7 -0
  123. package/images/icons/svg/chevron-down.svg +11 -0
  124. package/images/icons/svg/chevron-left.svg +12 -0
  125. package/images/icons/svg/chevron-right.svg +12 -0
  126. package/images/icons/svg/chevron-up.svg +12 -0
  127. package/images/icons/svg/clipboard.svg +1 -0
  128. package/images/icons/svg/close.svg +1 -3
  129. package/images/icons/svg/divide.svg +13 -0
  130. package/images/icons/svg/doctors-and-clinicians-preview.svg +10 -0
  131. package/images/icons/svg/download.svg +1 -1
  132. package/images/icons/svg/dropdown-arrow.svg +1 -0
  133. package/images/icons/svg/equals.svg +13 -0
  134. package/images/icons/svg/exclamation.svg +10 -0
  135. package/images/icons/svg/external.svg +1 -4
  136. package/images/icons/svg/file-download.svg +1 -0
  137. package/images/icons/svg/file-upload.svg +1 -1
  138. package/images/icons/svg/info.svg +17 -0
  139. package/images/icons/svg/manage-user-access.svg +8 -0
  140. package/images/icons/svg/multiply.svg +12 -0
  141. package/images/icons/svg/performance-feedback.svg +1 -0
  142. package/images/icons/svg/plus.svg +12 -0
  143. package/images/icons/svg/preview.svg +15 -0
  144. package/images/icons/svg/print.svg +1 -4
  145. package/images/icons/svg/registration.svg +8 -0
  146. package/images/icons/svg/reporting.svg +15 -0
  147. package/images/icons/svg/save-disk.svg +5 -0
  148. package/images/icons/svg/search.svg +1 -0
  149. package/images/icons/svg/subtract.svg +15 -0
  150. package/images/icons/svg/targeted-review.svg +15 -0
  151. package/images/icons/svg/tooltip-question.svg +1 -0
  152. package/images/icons/svg/trash.svg +1 -5
  153. package/images/icons/svg/upload.svg +1 -3
  154. package/images/us_flag_small.png +0 -0
  155. package/index.js +2 -2
  156. package/jest.config.js +132 -132
  157. package/lib/SvgComponents.jsx +167 -1
  158. package/package.json +49 -78
  159. package/session/logout.js +57 -19
  160. package/session/refresh.js +33 -33
  161. package/session/ttl.js +18 -34
  162. package/styles/_main.scss +3 -2
  163. package/styles/components/_accordion.scss +7 -0
  164. package/styles/components/_notification-banner.scss +151 -150
  165. package/styles/components/_text.scss +102 -102
  166. package/styles/qppds/base/_backgrounds.scss +3 -3
  167. package/styles/qppds/base/_fonts.scss +29 -5
  168. package/styles/qppds/base/_icon.scss +31 -0
  169. package/styles/qppds/base/_layout.scss +2 -2
  170. package/styles/qppds/base/_typography.scss +71 -51
  171. package/styles/qppds/base/index.scss +5 -9
  172. package/styles/qppds/components/_alert.scss +40 -34
  173. package/styles/qppds/components/_breadcrumbs.scss +52 -18
  174. package/styles/qppds/components/_button.scss +102 -88
  175. package/styles/qppds/components/_card.scss +22 -21
  176. package/styles/qppds/components/_checkbox.scss +201 -0
  177. package/styles/qppds/components/_circular-loader.scss +47 -0
  178. package/styles/qppds/components/_details.scss +91 -0
  179. package/styles/qppds/components/_dropdown-menu.scss +126 -0
  180. package/styles/qppds/components/_dropdown.scss +22 -17
  181. package/styles/qppds/components/_footer.scss +18 -9
  182. package/styles/qppds/components/_gov-banner.scss +342 -0
  183. package/styles/qppds/components/_header.scss +129 -84
  184. package/styles/qppds/components/_link.scss +29 -27
  185. package/styles/qppds/components/_modal.scss +92 -21
  186. package/styles/qppds/components/_page-header.scss +61 -22
  187. package/styles/qppds/components/_pagination.scss +230 -0
  188. package/styles/qppds/components/_process-list.scss +106 -0
  189. package/styles/qppds/components/_radio-button.scss +185 -0
  190. package/styles/qppds/components/_search.scss +133 -21
  191. package/styles/qppds/components/_sidebar.scss +1 -0
  192. package/styles/qppds/components/_step-indicator.scss +193 -0
  193. package/styles/qppds/components/_table.scss +62 -42
  194. package/styles/qppds/components/_tabs.scss +79 -34
  195. package/styles/qppds/components/_text-input.scss +22 -22
  196. package/styles/qppds/components/index.scss +22 -12
  197. package/styles/qppds/components/sidebar/_details.scss +3 -0
  198. package/styles/qppds/components/sidebar/_links.scss +48 -1
  199. package/styles/qppds/components/sidebar/_select-role-dropdown.scss +21 -0
  200. package/styles/qppds/components/sidebar/_sidebar-animation.scss +72 -102
  201. package/styles/qppds/components/sidebar/_sidebar.scss +5 -1
  202. package/styles/qppds/settings/_functions.scss +3 -1
  203. package/styles/qppds/settings/_index.scss +3 -3
  204. package/styles/qppds/settings/mixins/_borders.scss +2 -2
  205. package/styles/qppds/settings/mixins/_focus.scss +9 -7
  206. package/styles/qppds/settings/mixins/_icons.scss +39 -2
  207. package/styles/qppds/settings/mixins/_index.scss +8 -7
  208. package/styles/qppds/settings/mixins/_layout.scss +16 -16
  209. package/styles/qppds/settings/mixins/_table.scss +18 -17
  210. package/styles/qppds/settings/mixins/_type.scss +90 -0
  211. package/styles/qppds/settings/variables/_index.scss +4 -3
  212. package/styles/qppds/settings/variables/_layout.scss +15 -13
  213. package/styles/qppds/settings/variables/_type.scss +13 -10
  214. package/styles/qppds/settings/variables/_z-index.scss +8 -0
  215. package/styles/qppds/utilities/_background-color.scss +34 -34
  216. package/styles/qppds/utilities/_color.scss +16 -8
  217. package/styles/qppds/utilities/_display-visibility.scss +5 -4
  218. package/styles/qppds/utilities/_flexbox.scss +22 -22
  219. package/styles/qppds/utilities/_font-family.scss +3 -2
  220. package/styles/qppds/utilities/_font-size.scss +2 -2
  221. package/styles/qppds/utilities/_font-weight.scss +4 -2
  222. package/styles/qppds/utilities/_gap.scss +38 -0
  223. package/styles/qppds/utilities/_height.scss +81 -0
  224. package/styles/qppds/utilities/_list-style.scss +17 -0
  225. package/styles/qppds/utilities/_margin.scss +6 -6
  226. package/styles/qppds/utilities/_padding.scss +6 -6
  227. package/styles/qppds/utilities/_position.scss +3 -3
  228. package/styles/qppds/utilities/_text-align.scss +3 -3
  229. package/styles/qppds/utilities/_text-transform.scss +1 -1
  230. package/styles/qppds/utilities/_vertical-align.scss +72 -0
  231. package/styles/qppds/utilities/_width.scss +46 -8
  232. package/styles/qppds/utilities/index.scss +17 -14
  233. package/svgo.config.js +14 -0
  234. package/test/components/FooterUI.test.js +18 -49
  235. package/test/components/HeaderUI.test.js +5 -15
  236. package/test/components/Infotip.test.js +41 -37
  237. package/test/session/session.test.js +67 -68
  238. package/test-setup.js +0 -8
  239. package/webpack.config.js +29 -39
  240. package/webpack.config.react.js +7 -18
  241. package/.storybook/.babelrc +0 -4
  242. package/.storybook/main.js +0 -89
  243. package/.storybook/preview-head.html +0 -9
  244. package/.storybook/preview.js +0 -5
  245. package/Session.vim +0 -83
  246. package/components/Accordion/Accordion.stories.js +0 -20
  247. package/components/Alert/Alert.stories.js +0 -61
  248. package/components/Breadcrumb/Breadcrumb.stories.js +0 -58
  249. package/components/Button/Button.stories.js +0 -121
  250. package/components/CalloutBox/CalloutBox.stories.js +0 -94
  251. package/components/CalloutBox/index.js +0 -109
  252. package/components/Card/Card.stories.js +0 -163
  253. package/components/Card/index.js +0 -137
  254. package/components/Footer/Footer.stories.js +0 -20
  255. package/components/Footer/LegacyFooterUI.jsx +0 -194
  256. package/components/Header/Header.stories.js +0 -32
  257. package/components/Infotip/Infotip.stories.js +0 -50
  258. package/components/Modal/Modal.stories.js +0 -159
  259. package/components/NotificationBanner/NotificationBanner.stories.js +0 -23
  260. package/components/Search/Search.stories.js +0 -21
  261. package/components/SessionDialog/sessionDialog.js +0 -26
  262. package/components/SessionDialogUI.jsx +0 -261
  263. package/components/SideNav/Chart/ScoreChart.jsx +0 -268
  264. package/components/SideNav/Chart/__tests__/ScoreChart.test.js +0 -22
  265. package/components/SideNav/Chart/__tests__/__snapshots__/ScoreChart.test.js.snap +0 -173
  266. package/components/SideNav/Chart/index.js +0 -3
  267. package/components/SideNav/Content/LevelTwoContent.jsx +0 -214
  268. package/components/SideNav/SideNav.stories.js +0 -349
  269. package/components/SideNav/UI/default-content.json +0 -77
  270. package/components/Spinner/index.js +0 -9
  271. package/components/Tabs/Tab.js +0 -66
  272. package/components/Tabs/Tabs.stories.js +0 -120
  273. package/components/Tabs/index.js +0 -135
  274. package/components/TextInput/TextInput.stories.js +0 -118
  275. package/components/Tooltip/Tooltip.jsx +0 -88
  276. package/components/Tooltip/Tooltip.stories.js +0 -80
  277. package/components/Tooltip/index.js +0 -3
  278. package/components/Tooltip/position.js +0 -68
  279. package/components/UnwrappedSpinner/index.js +0 -8
  280. package/coverage/clover.xml +0 -1218
  281. package/coverage/coverage-final.json +0 -67
  282. package/coverage/lcov-report/Accordion/index.html +0 -111
  283. package/coverage/lcov-report/Accordion/index.jsx.html +0 -389
  284. package/coverage/lcov-report/Error/Collapsible.jsx.html +0 -344
  285. package/coverage/lcov-report/Error/ErrorUI.jsx.html +0 -173
  286. package/coverage/lcov-report/Error/index.html +0 -111
  287. package/coverage/lcov-report/ErrorUI.jsx.html +0 -173
  288. package/coverage/lcov-report/HeaderUI.jsx.html +0 -593
  289. package/coverage/lcov-report/ScoreChart.jsx.html +0 -1025
  290. package/coverage/lcov-report/SideNav/Chart/ScoreChart.jsx.html +0 -884
  291. package/coverage/lcov-report/SideNav/Chart/index.html +0 -111
  292. package/coverage/lcov-report/base.css +0 -224
  293. package/coverage/lcov-report/block-navigation.js +0 -79
  294. package/coverage/lcov-report/components/Accordion/index.html +0 -111
  295. package/coverage/lcov-report/components/Accordion/index.jsx.html +0 -389
  296. package/coverage/lcov-report/components/Error/Collapsible.jsx.html +0 -344
  297. package/coverage/lcov-report/components/Error/ErrorUI.jsx.html +0 -179
  298. package/coverage/lcov-report/components/Error/index.html +0 -126
  299. package/coverage/lcov-report/components/Footer/FooterUI.jsx.html +0 -710
  300. package/coverage/lcov-report/components/Footer/LegacyFooterUI.jsx.html +0 -668
  301. package/coverage/lcov-report/components/Footer/SocialLinks.jsx.html +0 -302
  302. package/coverage/lcov-report/components/Footer/Subscribe.jsx.html +0 -182
  303. package/coverage/lcov-report/components/Footer/index.html +0 -156
  304. package/coverage/lcov-report/components/Header/HeaderAccountMenu.jsx.html +0 -794
  305. package/coverage/lcov-report/components/Header/HeaderCancel.jsx.html +0 -137
  306. package/coverage/lcov-report/components/Header/HeaderUI.jsx.html +0 -1142
  307. package/coverage/lcov-report/components/Header/NavigationButtonIcon.jsx.html +0 -161
  308. package/coverage/lcov-report/components/Header/index.html +0 -156
  309. package/coverage/lcov-report/components/InfoModal/index.html +0 -111
  310. package/coverage/lcov-report/components/InfoModal/index.jsx.html +0 -401
  311. package/coverage/lcov-report/components/Infotip/Infotip.jsx.html +0 -305
  312. package/coverage/lcov-report/components/Infotip/InfotipIcon.jsx.html +0 -203
  313. package/coverage/lcov-report/components/Infotip/index.html +0 -141
  314. package/coverage/lcov-report/components/Infotip/index.js.html +0 -89
  315. package/coverage/lcov-report/components/NotificationBanner/NotificationBannerUI.jsx.html +0 -1010
  316. package/coverage/lcov-report/components/NotificationBanner/index.html +0 -111
  317. package/coverage/lcov-report/components/SanitizedContent/index.html +0 -111
  318. package/coverage/lcov-report/components/SanitizedContent/index.jsx.html +0 -260
  319. package/coverage/lcov-report/components/SessionDialogUI.jsx.html +0 -863
  320. package/coverage/lcov-report/components/SideNav/AnimationGroup/AnimationGroup.jsx.html +0 -131
  321. package/coverage/lcov-report/components/SideNav/AnimationGroup/index.html +0 -111
  322. package/coverage/lcov-report/components/SideNav/Chart/ScoreChart.jsx.html +0 -1025
  323. package/coverage/lcov-report/components/SideNav/Chart/index.html +0 -126
  324. package/coverage/lcov-report/components/SideNav/Chart/index.js.html +0 -89
  325. package/coverage/lcov-report/components/SideNav/Content/LevelOneContent.jsx.html +0 -1007
  326. package/coverage/lcov-report/components/SideNav/Content/LevelTwoContent.jsx.html +0 -728
  327. package/coverage/lcov-report/components/SideNav/Content/index.html +0 -141
  328. package/coverage/lcov-report/components/SideNav/Content/index.js.html +0 -92
  329. package/coverage/lcov-report/components/SideNav/Details/IndividualDetails.jsx.html +0 -143
  330. package/coverage/lcov-report/components/SideNav/Details/PracticeDetails.jsx.html +0 -203
  331. package/coverage/lcov-report/components/SideNav/Details/index.html +0 -141
  332. package/coverage/lcov-report/components/SideNav/Details/index.js.html +0 -92
  333. package/coverage/lcov-report/components/SideNav/Links/CmsSwitchLink.jsx.html +0 -200
  334. package/coverage/lcov-report/components/SideNav/Links/NavItemInline.jsx.html +0 -242
  335. package/coverage/lcov-report/components/SideNav/Links/NavLinkContainer.jsx.html +0 -200
  336. package/coverage/lcov-report/components/SideNav/Links/NavLinkDrawer.jsx.html +0 -779
  337. package/coverage/lcov-report/components/SideNav/Links/NavLinkInline.jsx.html +0 -356
  338. package/coverage/lcov-report/components/SideNav/Links/NavLinkToggle.jsx.html +0 -179
  339. package/coverage/lcov-report/components/SideNav/Links/index.html +0 -201
  340. package/coverage/lcov-report/components/SideNav/Links/index.js.html +0 -119
  341. package/coverage/lcov-report/components/SideNav/UI/SideNavUI.jsx.html +0 -1298
  342. package/coverage/lcov-report/components/SideNav/UI/index.html +0 -126
  343. package/coverage/lcov-report/components/SideNav/UI/index.js.html +0 -89
  344. package/coverage/lcov-report/components/SideNav/helpers.js.html +0 -197
  345. package/coverage/lcov-report/components/SideNav/index.html +0 -111
  346. package/coverage/lcov-report/components/Tooltip/Tooltip.jsx.html +0 -344
  347. package/coverage/lcov-report/components/Tooltip/index.html +0 -141
  348. package/coverage/lcov-report/components/Tooltip/index.js.html +0 -89
  349. package/coverage/lcov-report/components/Tooltip/position.js.html +0 -296
  350. package/coverage/lcov-report/components/index.html +0 -111
  351. package/coverage/lcov-report/favicon.png +0 -0
  352. package/coverage/lcov-report/index.html +0 -426
  353. package/coverage/lcov-report/lib/index.html +0 -111
  354. package/coverage/lcov-report/lib/svg-definitions.svg.html +0 -1319
  355. package/coverage/lcov-report/prettify.css +0 -1
  356. package/coverage/lcov-report/prettify.js +0 -2
  357. package/coverage/lcov-report/react/components/Accordion/index.html +0 -111
  358. package/coverage/lcov-report/react/components/Accordion/index.jsx.html +0 -359
  359. package/coverage/lcov-report/react/components/Error/Collapsible.jsx.html +0 -344
  360. package/coverage/lcov-report/react/components/Error/ErrorUI.jsx.html +0 -173
  361. package/coverage/lcov-report/react/components/Error/error.js.html +0 -158
  362. package/coverage/lcov-report/react/components/Error/index.html +0 -141
  363. package/coverage/lcov-report/react/components/FlashNotification/FlashNotificationUI.jsx.html +0 -296
  364. package/coverage/lcov-report/react/components/FlashNotification/index.html +0 -126
  365. package/coverage/lcov-report/react/components/FlashNotification/index.js.html +0 -170
  366. package/coverage/lcov-report/react/components/Footer/FooterUI.jsx.html +0 -845
  367. package/coverage/lcov-report/react/components/Footer/LegacyFooterUI.jsx.html +0 -662
  368. package/coverage/lcov-report/react/components/Footer/SocialLinks.jsx.html +0 -260
  369. package/coverage/lcov-report/react/components/Footer/Subscribe.jsx.html +0 -182
  370. package/coverage/lcov-report/react/components/Footer/footer.js.html +0 -170
  371. package/coverage/lcov-report/react/components/Footer/index.html +0 -171
  372. package/coverage/lcov-report/react/components/Header/HeaderAccountMenu.jsx.html +0 -587
  373. package/coverage/lcov-report/react/components/Header/HeaderCancel.jsx.html +0 -128
  374. package/coverage/lcov-report/react/components/Header/HeaderContainer.jsx.html +0 -266
  375. package/coverage/lcov-report/react/components/Header/HeaderLogo.jsx.html +0 -206
  376. package/coverage/lcov-report/react/components/Header/HeaderMenuButton.js.html +0 -230
  377. package/coverage/lcov-report/react/components/Header/HeaderMenuItem.jsx.html +0 -758
  378. package/coverage/lcov-report/react/components/Header/HeaderMenuLink.js.html +0 -230
  379. package/coverage/lcov-report/react/components/Header/HeaderMenuSignOutButton.js.html +0 -266
  380. package/coverage/lcov-report/react/components/Header/HeaderMobileButton.js.html +0 -191
  381. package/coverage/lcov-report/react/components/Header/HeaderUI.jsx.html +0 -557
  382. package/coverage/lcov-report/react/components/Header/HelpIcon.jsx.html +0 -170
  383. package/coverage/lcov-report/react/components/Header/NavigationButtonIcon.jsx.html +0 -161
  384. package/coverage/lcov-report/react/components/Header/header.js.html +0 -194
  385. package/coverage/lcov-report/react/components/Header/hooks.js.html +0 -236
  386. package/coverage/lcov-report/react/components/Header/index.html +0 -321
  387. package/coverage/lcov-report/react/components/Header/utag-helpers.js.html +0 -110
  388. package/coverage/lcov-report/react/components/InfoModal/index.html +0 -111
  389. package/coverage/lcov-report/react/components/InfoModal/index.jsx.html +0 -392
  390. package/coverage/lcov-report/react/components/Infotip/Infotip.jsx.html +0 -305
  391. package/coverage/lcov-report/react/components/Infotip/InfotipIcon.jsx.html +0 -203
  392. package/coverage/lcov-report/react/components/Infotip/index.html +0 -141
  393. package/coverage/lcov-report/react/components/Infotip/index.js.html +0 -89
  394. package/coverage/lcov-report/react/components/Modal/LegacyModal.jsx.html +0 -296
  395. package/coverage/lcov-report/react/components/Modal/Modal.jsx.html +0 -500
  396. package/coverage/lcov-report/react/components/Modal/index.html +0 -141
  397. package/coverage/lcov-report/react/components/Modal/index.jsx.html +0 -146
  398. package/coverage/lcov-report/react/components/NotificationBanner/NotificationBannerUI.jsx.html +0 -926
  399. package/coverage/lcov-report/react/components/NotificationBanner/index.html +0 -111
  400. package/coverage/lcov-report/react/components/NotificationBanner/index.js.html +0 -875
  401. package/coverage/lcov-report/react/components/SanitizedContent/index.html +0 -111
  402. package/coverage/lcov-report/react/components/SanitizedContent/index.jsx.html +0 -680
  403. package/coverage/lcov-report/react/components/SessionDialog/index.html +0 -111
  404. package/coverage/lcov-report/react/components/SessionDialog/sessionDialog.js.html +0 -158
  405. package/coverage/lcov-report/react/components/SessionDialogUI.jsx.html +0 -863
  406. package/coverage/lcov-report/react/components/SideNav/AnimationGroup/AnimationGroup.jsx.html +0 -140
  407. package/coverage/lcov-report/react/components/SideNav/AnimationGroup/index.html +0 -111
  408. package/coverage/lcov-report/react/components/SideNav/Chart/ScoreChart.jsx.html +0 -884
  409. package/coverage/lcov-report/react/components/SideNav/Chart/index.html +0 -126
  410. package/coverage/lcov-report/react/components/SideNav/Chart/index.js.html +0 -89
  411. package/coverage/lcov-report/react/components/SideNav/Content/LevelOneContent.jsx.html +0 -1007
  412. package/coverage/lcov-report/react/components/SideNav/Content/LevelTwoContent.jsx.html +0 -722
  413. package/coverage/lcov-report/react/components/SideNav/Content/index.html +0 -141
  414. package/coverage/lcov-report/react/components/SideNav/Content/index.js.html +0 -92
  415. package/coverage/lcov-report/react/components/SideNav/Details/IndividualDetails.jsx.html +0 -134
  416. package/coverage/lcov-report/react/components/SideNav/Details/PracticeDetails.jsx.html +0 -203
  417. package/coverage/lcov-report/react/components/SideNav/Details/index.html +0 -141
  418. package/coverage/lcov-report/react/components/SideNav/Details/index.js.html +0 -92
  419. package/coverage/lcov-report/react/components/SideNav/Links/CmsSwitchLink.jsx.html +0 -203
  420. package/coverage/lcov-report/react/components/SideNav/Links/NavItemInline.jsx.html +0 -242
  421. package/coverage/lcov-report/react/components/SideNav/Links/NavLinkContainer.jsx.html +0 -209
  422. package/coverage/lcov-report/react/components/SideNav/Links/NavLinkDrawer.jsx.html +0 -659
  423. package/coverage/lcov-report/react/components/SideNav/Links/NavLinkInline.jsx.html +0 -401
  424. package/coverage/lcov-report/react/components/SideNav/Links/NavLinkToggle.jsx.html +0 -182
  425. package/coverage/lcov-report/react/components/SideNav/Links/index.html +0 -201
  426. package/coverage/lcov-report/react/components/SideNav/Links/index.js.html +0 -119
  427. package/coverage/lcov-report/react/components/SideNav/UI/SideNavUI.jsx.html +0 -1103
  428. package/coverage/lcov-report/react/components/SideNav/UI/index.html +0 -126
  429. package/coverage/lcov-report/react/components/SideNav/UI/index.js.html +0 -89
  430. package/coverage/lcov-report/react/components/SideNav/helpers.js.html +0 -221
  431. package/coverage/lcov-report/react/components/SideNav/index.html +0 -126
  432. package/coverage/lcov-report/react/components/SideNav/index.js.html +0 -239
  433. package/coverage/lcov-report/react/components/Spinner/index.html +0 -111
  434. package/coverage/lcov-report/react/components/Spinner/index.js.html +0 -107
  435. package/coverage/lcov-report/react/components/Tabs/TabsUI.jsx.html +0 -443
  436. package/coverage/lcov-report/react/components/Tabs/index.html +0 -126
  437. package/coverage/lcov-report/react/components/Tabs/tabs.js.html +0 -188
  438. package/coverage/lcov-report/react/components/Tooltip/Tooltip.jsx.html +0 -344
  439. package/coverage/lcov-report/react/components/Tooltip/index.html +0 -141
  440. package/coverage/lcov-report/react/components/Tooltip/index.js.html +0 -89
  441. package/coverage/lcov-report/react/components/Tooltip/position.js.html +0 -284
  442. package/coverage/lcov-report/react/components/hooks/index.html +0 -111
  443. package/coverage/lcov-report/react/components/hooks/useGetConfig.js.html +0 -302
  444. package/coverage/lcov-report/react/components/index.html +0 -111
  445. package/coverage/lcov-report/react/index.html +0 -111
  446. package/coverage/lcov-report/react/index.js.html +0 -173
  447. package/coverage/lcov-report/react/lib/Chevron.jsx.html +0 -161
  448. package/coverage/lcov-report/react/lib/SvgComponents.jsx.html +0 -1697
  449. package/coverage/lcov-report/react/lib/index.html +0 -141
  450. package/coverage/lcov-report/react/lib/svg-definitions.svg.html +0 -455
  451. package/coverage/lcov-report/react/session/index.html +0 -156
  452. package/coverage/lcov-report/react/session/index.js.html +0 -95
  453. package/coverage/lcov-report/react/session/logout.js.html +0 -203
  454. package/coverage/lcov-report/react/session/refresh.js.html +0 -227
  455. package/coverage/lcov-report/react/session/ttl.js.html +0 -191
  456. package/coverage/lcov-report/session/index.html +0 -126
  457. package/coverage/lcov-report/session/index.js.html +0 -95
  458. package/coverage/lcov-report/session/logout.js.html +0 -203
  459. package/coverage/lcov-report/session/refresh.js.html +0 -227
  460. package/coverage/lcov-report/session/ttl.js.html +0 -191
  461. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  462. package/coverage/lcov-report/sorter.js +0 -170
  463. package/coverage/lcov.info +0 -2704
  464. package/styles/components/_footer.scss +0 -593
  465. package/styles/components/_header.scss +0 -887
  466. package/styles/components/_header_backup.scss +0 -574
  467. package/styles/components/_sidebar.scss +0 -8
  468. package/styles/components/sidebar/_animations.scss +0 -38
  469. package/styles/components/sidebar/_cms.scss +0 -61
  470. package/styles/components/sidebar/_details.scss +0 -58
  471. package/styles/components/sidebar/_links.scss +0 -415
  472. package/styles/components/sidebar/_sidebar-animation.scss +0 -121
  473. package/styles/components/sidebar/_sidebar-tooltip.scss +0 -33
  474. package/styles/components/sidebar/_sidebar.scss +0 -141
  475. package/styles/components/sidebar/project-specific/_wi.scss +0 -42
  476. package/styles/qppds/utilities/_display-visability.scss +0 -83
  477. package/styles/qppds/utilities/_truncate.scss +0 -8
  478. package/test/components/SessionDialogUI.test.js +0 -339
  479. package/test/components/Tooltip.test.js +0 -147
package/.editorconfig CHANGED
@@ -6,7 +6,7 @@ root = true
6
6
 
7
7
  [*]
8
8
  indent_style = space
9
- indent_size = 4
9
+ indent_size = 2
10
10
  end_of_line = lf
11
11
  charset = utf-8
12
12
  trim_trailing_whitespace = true
package/.eslintrc.js CHANGED
@@ -1,31 +1,32 @@
1
1
  module.exports = {
2
- extends: ['eslint:recommended', 'plugin:react/recommended'],
3
- parser: 'babel-eslint',
4
- parserOptions: {
5
- sourceType: 'module',
6
- ecmaFeatures: {
7
- jsx: true
8
- }
2
+ extends: ["eslint:recommended", "plugin:react/recommended"],
3
+ parser: "@babel/eslint-parser",
4
+ parserOptions: {
5
+ sourceType: "module",
6
+ ecmaFeatures: {
7
+ jsx: true,
9
8
  },
10
- env: {
11
- es6: true,
12
- node: true,
13
- browser: true,
14
- jquery: true,
15
- mocha: true
16
- },
17
- rules: {
18
- 'no-unused-vars': [
19
- 'error',
20
- {
21
- args: 'none'
22
- }
23
- ],
24
- 'linebreak-style': ['error', 'unix'],
25
- 'no-console': 0,
26
- 'no-prototype-builtins': [0]
27
- },
28
- settings: {
29
- react: { version: 'detect' }
30
- }
9
+ },
10
+ env: {
11
+ es6: true,
12
+ node: true,
13
+ browser: true,
14
+ jquery: true,
15
+ mocha: true,
16
+ },
17
+ rules: {
18
+ "no-unused-vars": [
19
+ "error",
20
+ {
21
+ args: "none",
22
+ },
23
+ ],
24
+ "linebreak-style": ["error", "unix"],
25
+ "no-console": 0,
26
+ "no-prototype-builtins": [0],
27
+ "react/no-deprecated": [0],
28
+ },
29
+ settings: {
30
+ react: { version: "detect" },
31
+ },
31
32
  };
@@ -0,0 +1,5 @@
1
+ #!/usr/bin/env sh
2
+ . "$(dirname -- "$0")/_/husky.sh"
3
+
4
+ cd react
5
+ npm run precommit
package/.prettierrc ADDED
@@ -0,0 +1 @@
1
+ {}
package/README.md CHANGED
@@ -2,4 +2,59 @@
2
2
 
3
3
  This directory contains react implementations of the components for QPP.
4
4
 
5
- A storybook with examples is published at [https://cmsgov.github.io/qpp-style](https://cmsgov.github.io/qpp-style)
5
+ ## Github Branch and Pull Request process
6
+
7
+ 1. Create branch off main and create a Pull Request into main for the feature.
8
+ > Example Branch Name: feature/QPPXX-XXXX_make_icon_better
9
+ 2. Once merged into main, create release branch from main.
10
+ 3. Name the new branch release/x.xx.x
11
+ 4. Run the version bump:
12
+
13
+ ```bash
14
+ cd qpp-style/react
15
+ npm version --no-git-tag-version patch
16
+ ```
17
+
18
+ Example Commit Message:
19
+
20
+ > x.xx.x release
21
+
22
+ 5. Create a pull request against main with the PR Title: x.xx.x release [Example PR](https://github.com/CMSgov/qpp-style/pull/1065)
23
+ 6. Enter the change in the description of the pull request i.e.:
24
+ > Added new svg for Icon Name
25
+
26
+ ## Generate an NPM token with Publish permissions
27
+
28
+ 1. If you do not already have an access token, sign in to npmjs.com and navigate to access tokens.
29
+ 2. Click generate new token.
30
+ 3. Select publish under type.
31
+ 4. Copy the npm token and set its value as the environment variable: NPM_TOKEN
32
+
33
+ ```bash
34
+ export NPM_TOKEN={npm_token}
35
+ ```
36
+
37
+ ## Publish the react qpp-style npm package (used by both react and angular)
38
+
39
+ ```bash
40
+ cd qpp-style/react
41
+ npm i
42
+ npm publish
43
+ ```
44
+
45
+ 7. Once published successfully, merge into main.
46
+
47
+ The Side Nav contains multiple item array types: divider, container, linkBack, linkHome, practiceDetails, individualDetails, linkDrawer, custom, chart, and switchLink.
48
+
49
+ | Item Array Type | Description |
50
+ |-------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
51
+ | divider | <hr> element that is located above and below the practice container. |
52
+ | container | gets Dynamic Content of multiple items and contains the linkDrawer item. Level One and Level Two content are located in this container. |
53
+ | linkBack | <button> that links the user back to a URL. This uses a chevron Left icon. |
54
+ | linkHome | <a> tag element which sends the user back to the “Account Home” page /user/submissions. This uses the home icon SVG and is located at the top of the side nav. |
55
+ | practiceDetails | <div> element with the class name practice-container. Inside this container is the <h2> element which includes the Practice Name and the <p> element which is the Practice Tin. The Practice Tin shows either the CPC+ ID, PCF ID, APM Entity ID, VG ID, or Practice Tin. |
56
+ | individualDetails | <div> element with the class name “individual-container”. This parent element contains two other elements which are the <h3> Individual Name and the <p> Individual NPI. |
57
+ | linkDrawer | This is the most complex item type. This item displays the Level One and Level Two <button> elements which contain navigation links depending on each page as well as specific SVG icons. Depending on the page there can be multiple links to the user can access quickly using the side nav. |
58
+ | custom | This option is for sanitized HTML content. This custom HTML will be cleaned of any potentially harmful elements that could compromise the security of the web app. |
59
+ | chart | This option uses the ScoreChart component to display Chart Data on the Side Nav. This data includes categories from Quality Measures, Advancing Care Info, Promoting Interoperability, Improvement Activities, and Cost. |
60
+ | switchLink | This is an implementation of the “Switch Practice” button for the Side Nav. Clicking 'Switch Practice' will take the user back to the TIN list for the part of the application they are viewing. |
@@ -1,30 +1,30 @@
1
- import React, { useState, useRef, useEffect } from 'react';
2
- import PropTypes from 'prop-types';
3
- import { Chevron } from '../../lib/Chevron.jsx';
1
+ import React, { useState, useRef, useEffect } from "react";
2
+ import PropTypes from "prop-types";
3
+ import { Chevron } from "../../lib/Chevron.jsx";
4
4
 
5
5
  const Accordion = (props) => {
6
6
  const content = useRef(null);
7
- const [setActive, setActiveState] = useState(props.isOpen ? 'active' : '');
8
- const ariaPressed = setActive ? 'true' : 'false';
7
+ const [setActive, setActiveState] = useState(props.isOpen ? "active" : "");
8
+ const ariaPressed = setActive ? "true" : "false";
9
9
  const getHeight = (node) => {
10
10
  if (node) {
11
11
  return `${node.scrollHeight}px`;
12
12
  }
13
- return 'auto';
13
+ return "auto";
14
14
  };
15
- const height = setActive ? getHeight(content.current) : '0px';
16
- const rotate = setActive ? 'accordion-icon rotate' : 'accordion-icon';
15
+ const height = setActive ? getHeight(content.current) : "0px";
16
+ const rotate = setActive ? "accordion-icon rotate" : "accordion-icon";
17
17
 
18
18
  function toggleAccordion() {
19
- setActiveState(setActive === '' ? 'active' : '');
19
+ setActiveState(setActive === "" ? "active" : "");
20
20
  }
21
21
 
22
22
  function openAccordion() {
23
- setActiveState('active');
23
+ setActiveState("active");
24
24
  }
25
25
 
26
26
  function closeAccordion() {
27
- setActiveState('');
27
+ setActiveState("");
28
28
  }
29
29
 
30
30
  useEffect(() => {
@@ -38,7 +38,9 @@ const Accordion = (props) => {
38
38
  return (
39
39
  <div className="accordion-section" data-testid="accordion">
40
40
  <button
41
- className={`accordion ${setActive}`}
41
+ className={`accordion ${setActive} ${
42
+ setActive && props.isSticky ? "sticky" : ""
43
+ }`}
42
44
  aria-label={props.title}
43
45
  aria-pressed={ariaPressed}
44
46
  aria-expanded={ariaPressed}
@@ -83,11 +85,13 @@ Accordion.propTypes = {
83
85
  centerItem: PropTypes.string,
84
86
  rightItem: PropTypes.string,
85
87
  isOpen: PropTypes.bool,
88
+ isSticky: PropTypes.bool,
86
89
  };
87
90
 
88
91
  Accordion.defaultProps = {
89
- title: '',
92
+ title: "",
90
93
  isOpen: false,
94
+ isSticky: false,
91
95
  };
92
96
 
93
97
  export default Accordion;
@@ -1,8 +1,15 @@
1
- import React from 'react';
2
- import PropTypes from 'prop-types';
1
+ import React from "react";
2
+ import PropTypes from "prop-types";
3
3
 
4
- const Alert = ({ title, children, description, variant, className, ...rest }) => {
5
- const HeadingComponent = title?.headingLevel || 'h2';
4
+ const Alert = ({
5
+ title,
6
+ children,
7
+ description,
8
+ variant,
9
+ className,
10
+ ...rest
11
+ }) => {
12
+ const HeadingComponent = title?.headingLevel || "h2";
6
13
  return (
7
14
  <div
8
15
  className={`qpp-c-alert qpp-c-alert--${variant} ${className}`}
@@ -12,7 +19,7 @@ const Alert = ({ title, children, description, variant, className, ...rest }) =>
12
19
  <div className="qpp-c-alert__body">
13
20
  {title && (
14
21
  <HeadingComponent className="h4 qpp-c-alert__heading">
15
- {typeof title === 'object' ? title.text : title}
22
+ {typeof title === "object" ? title.text : title}
16
23
  </HeadingComponent>
17
24
  )}
18
25
  {description && <p className="qpp-c-alert__text">{description}</p>}
@@ -33,14 +40,14 @@ Alert.propTypes = {
33
40
  headingLevel: PropTypes.string,
34
41
  }),
35
42
  ]),
36
- variant: PropTypes.oneOf(['info', 'warning', 'success', 'error']),
43
+ variant: PropTypes.oneOf(["info", "warning", "success", "error"]),
37
44
  };
38
45
  Alert.defaultProps = {
39
46
  children: null,
40
- className: '',
47
+ className: "",
41
48
  description: null,
42
49
  title: null,
43
- variant: 'info',
50
+ variant: "info",
44
51
  };
45
52
 
46
53
  export default Alert;
@@ -1,5 +1,5 @@
1
- import React from 'react';
2
- import PropTypes from 'prop-types';
1
+ import React from "react";
2
+ import PropTypes from "prop-types";
3
3
 
4
4
  const Breadcrumb = ({
5
5
  breadcrumbClass,
@@ -11,7 +11,7 @@ const Breadcrumb = ({
11
11
  return (
12
12
  <nav
13
13
  className={`qpp-c-breadcrumbs ${
14
- !dark ? 'qpp-c-breadcrumbs--light' : ''
14
+ !dark ? "qpp-c-breadcrumbs--light" : ""
15
15
  } ${breadcrumbClass}`}
16
16
  aria-label="Breadcrumbs"
17
17
  >
@@ -50,12 +50,12 @@ const Breadcrumb = ({
50
50
  return (
51
51
  <li
52
52
  key={crumb}
53
- className="qpp-c-breadcrumbs__list-item qpp-c-breadcrumbs__list-item--current"
53
+ className={`${
54
+ i === crumbs.length - 1 ? "sr-only" : ""
55
+ } qpp-c-breadcrumbs__list-itemqpp-c-breadcrumbs__list-item--current`}
54
56
  aria-current="page"
55
57
  >
56
- <span className={i === crumbs.length - 1 ? 'sr-only' : ''}>
57
- {crumb}
58
- </span>
58
+ <span>{crumb}</span>
59
59
  </li>
60
60
  );
61
61
  }
@@ -74,7 +74,7 @@ Breadcrumb.propTypes = {
74
74
  };
75
75
 
76
76
  Breadcrumb.defaultProps = {
77
- breadcrumbClass: '',
77
+ breadcrumbClass: "",
78
78
  dark: false,
79
79
  RouterLink: null,
80
80
  routerExcludedLinks: [],
@@ -1,8 +1,8 @@
1
- import React from 'react';
2
- import PropTypes from 'prop-types';
1
+ import React from "react";
2
+ import PropTypes from "prop-types";
3
3
 
4
- const VARIANTS = ['secondary', 'outline', 'danger', 'white'];
5
- const SIZES = ['big'];
4
+ const VARIANTS = ["secondary", "outline", "danger", "white"];
5
+ const SIZES = ["big"];
6
6
 
7
7
  const Button = ({
8
8
  children,
@@ -15,16 +15,16 @@ const Button = ({
15
15
  type,
16
16
  ...rest
17
17
  }) => {
18
- let btnClass = 'qpp-c-button';
18
+ let btnClass = "qpp-c-button";
19
19
 
20
20
  if (VARIANTS.includes(variant)) {
21
- btnClass = btnClass.concat(' ', `qpp-c-button--${variant}`);
21
+ btnClass = btnClass.concat(" ", `qpp-c-button--${variant}`);
22
22
  }
23
23
  if (SIZES.includes(size)) {
24
- btnClass = btnClass.concat(' ', `qpp-c-button--${size}`);
24
+ btnClass = btnClass.concat(" ", `qpp-c-button--${size}`);
25
25
  }
26
26
  if (className) {
27
- btnClass = btnClass.concat(' ', className);
27
+ btnClass = btnClass.concat(" ", className);
28
28
  }
29
29
 
30
30
  if (href) {
@@ -32,7 +32,7 @@ const Button = ({
32
32
  <a
33
33
  href={href}
34
34
  data-testid="ds-btn"
35
- className={btnClass || ''}
35
+ className={btnClass || ""}
36
36
  onClick={onClick}
37
37
  >
38
38
  {children}
@@ -42,7 +42,7 @@ const Button = ({
42
42
  return (
43
43
  <button
44
44
  data-testid="ds-btn"
45
- className={btnClass || ''}
45
+ className={btnClass || ""}
46
46
  onClick={onClick}
47
47
  disabled={loading}
48
48
  type={type}
@@ -66,16 +66,16 @@ Button.propTypes = {
66
66
 
67
67
  Button.defaultProps = {
68
68
  children: false,
69
- className: '',
70
- href: '',
69
+ className: "",
70
+ href: "",
71
71
  loading: false,
72
72
  onClick: () => null,
73
73
  size: null,
74
- type: 'button',
74
+ type: "button",
75
75
  variant: null,
76
76
  };
77
77
 
78
- export const TextButton = ({ className = '', ...props }) => (
78
+ export const TextButton = ({ className = "", ...props }) => (
79
79
  <Button className={`qpp-c-button--text ${className}`} {...props} />
80
80
  );
81
81
 
@@ -84,7 +84,7 @@ TextButton.propTypes = {
84
84
  };
85
85
 
86
86
  TextButton.defaultProps = {
87
- className: '',
87
+ className: "",
88
88
  };
89
89
 
90
90
  export default Button;
@@ -0,0 +1,50 @@
1
+ import React from "react";
2
+ import PropTypes from "prop-types";
3
+
4
+ export const Add = ({ iconText }) => (
5
+ <>
6
+ <svg
7
+ className="qpp-c-details--icon-closed qpp-icon-mat qpp-icon-inline--md"
8
+ aria-hidden="true"
9
+ xmlns="http://www.w3.org/2000/svg"
10
+ viewBox="0 0 24 24"
11
+ role="img"
12
+ focusable="false"
13
+ >
14
+ <path d="M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z" />
15
+ </svg>{" "}
16
+ {iconText}
17
+ </>
18
+ );
19
+
20
+ Add.propTypes = {
21
+ iconText: PropTypes.string,
22
+ };
23
+
24
+ Add.defaultProps = {
25
+ iconText: null,
26
+ };
27
+
28
+ export const Remove = ({ iconText }) => (
29
+ <>
30
+ <svg
31
+ className="qpp-c-details--icon-open qpp-icon-mat qpp-icon-inline--md"
32
+ aria-hidden="true"
33
+ xmlns="http://www.w3.org/2000/svg"
34
+ viewBox="0 0 24 24"
35
+ role="img"
36
+ focusable="false"
37
+ >
38
+ <path d="M19 13H5v-2h14v2z" />
39
+ </svg>
40
+ {iconText}
41
+ </>
42
+ );
43
+
44
+ Remove.propTypes = {
45
+ iconText: PropTypes.string,
46
+ };
47
+
48
+ Remove.defaultProps = {
49
+ iconText: null,
50
+ };
@@ -0,0 +1,53 @@
1
+ import React from "react";
2
+ import PropTypes from "prop-types";
3
+ import { Add, Remove } from "./DetailsIcons";
4
+
5
+ const Details = ({ children, title, variant, className, ...rest }) => {
6
+ if (variant === "header") {
7
+ return (
8
+ <details className="qpp-c-details qpp-c-details--header">
9
+ <summary>
10
+ {title}
11
+ <span className="qpp-c-details--icon-closed" aria-hidden="true">
12
+ <Add iconText="View" />
13
+ </span>
14
+ <span className="qpp-c-details--icon-open" aria-hidden="true">
15
+ <Remove iconText="Hide" />
16
+ </span>
17
+ </summary>
18
+ {children}
19
+ </details>
20
+ );
21
+ }
22
+
23
+ return (
24
+ <details className={`qpp-c-details ${className}`} {...rest}>
25
+ <summary
26
+ className={
27
+ variant === "text-button" ? "qpp-c-button qpp-c-button--text" : ""
28
+ }
29
+ >
30
+ <Add />
31
+ <Remove />
32
+ {title}
33
+ </summary>
34
+ {children}
35
+ </details>
36
+ );
37
+ };
38
+
39
+ Details.propTypes = {
40
+ children: PropTypes.node,
41
+ title: PropTypes.node,
42
+ variant: PropTypes.oneOf(["header", "text-button"]),
43
+ className: PropTypes.string,
44
+ };
45
+
46
+ Details.defaultProps = {
47
+ children: false,
48
+ title: null,
49
+ variant: null,
50
+ className: "",
51
+ };
52
+
53
+ export default Details;
@@ -0,0 +1,85 @@
1
+ import React from "react";
2
+ import PropTypes from "prop-types";
3
+
4
+ const Dropdown = ({
5
+ className,
6
+ id,
7
+ ariaLabelledBy,
8
+ ariaLabel,
9
+ onChange,
10
+ dataTestId,
11
+ name,
12
+ dataType,
13
+ disabled,
14
+ size,
15
+ options,
16
+ children,
17
+ parentElement,
18
+ ...rest
19
+ }) => {
20
+ const dropdownClass = [
21
+ "qpp-c-dropdown",
22
+ size === "big" && "qpp-c-dropdown--big",
23
+ className,
24
+ ]
25
+ .filter(Boolean)
26
+ .join(" ");
27
+
28
+ return (
29
+ <select
30
+ id={id}
31
+ aria-labelledby={ariaLabelledBy}
32
+ aria-label={ariaLabel}
33
+ className={dropdownClass || ""}
34
+ onChange={onChange}
35
+ data-testid={dataTestId}
36
+ name={name}
37
+ disabled={disabled}
38
+ data-type={dataType}
39
+ {...rest}
40
+ >
41
+ {children}
42
+ {options.map(({ disabled, name, value }) => (
43
+ <option disabled={disabled} key={value} value={value}>
44
+ {name}
45
+ </option>
46
+ ))}
47
+ </select>
48
+ );
49
+ };
50
+
51
+ Dropdown.propTypes = {
52
+ children: PropTypes.node,
53
+ className: PropTypes.string,
54
+ id: PropTypes.string,
55
+ ariaLabelledBy: PropTypes.string,
56
+ ariaLabel: PropTypes.string,
57
+ onChange: PropTypes.func,
58
+ value: PropTypes.string,
59
+ defaultValue: PropTypes.string,
60
+ dataTestId: PropTypes.string,
61
+ name: PropTypes.string,
62
+ dataType: PropTypes.string,
63
+ disabled: PropTypes.bool,
64
+ size: PropTypes.oneOf(["big"]),
65
+ options: PropTypes.array,
66
+ parentElement: PropTypes.string,
67
+ };
68
+
69
+ Dropdown.defaultProps = {
70
+ children: false,
71
+ className: "qpp-u-width--100",
72
+ id: null,
73
+ ariaLabelledBy: null,
74
+ ariaLabel: null,
75
+ onChange: () => null,
76
+ dataTestId: null,
77
+ name: null,
78
+ dataType: null,
79
+ disabled: false,
80
+ size: null,
81
+ options: [],
82
+ parentElement: "span",
83
+ };
84
+
85
+ export default Dropdown;
@@ -0,0 +1,25 @@
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 as="ul" state={state} className={className} {...props}>
8
+ {children}
9
+ </AriaKitMenu>
10
+ );
11
+ }
12
+
13
+ Menu.propTypes = {
14
+ state: PropTypes.object.isRequired,
15
+ className: PropTypes.string,
16
+ children: PropTypes.node,
17
+ };
18
+
19
+ Menu.defaultProps = {
20
+ className:
21
+ "qpp-c-dropdown-menu qpp-c-dropdown-menu__box qpp-c-dropdown-menu__list",
22
+ children: null,
23
+ };
24
+
25
+ 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;