@comicrelief/component-library 7.24.1 → 7.25.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 (277) hide show
  1. package/.github/workflows/main.yml +22 -24
  2. package/dist/components/Atoms/Button/Button.js +21 -15
  3. package/dist/components/Atoms/Button/Button.test.js +3 -3
  4. package/dist/components/Atoms/ButtonWithStates/ButtonWithStates.js +19 -22
  5. package/dist/components/Atoms/Checkbox/Checkbox.js +42 -26
  6. package/dist/components/Atoms/Checkbox/Checkbox.test.js +3 -3
  7. package/dist/components/Atoms/Confetti/Confetti.js +20 -23
  8. package/dist/components/Atoms/Confetti/_TriggerConfetti.js +4 -11
  9. package/dist/components/Atoms/ErrorText/ErrorText.js +15 -11
  10. package/dist/components/Atoms/ErrorText/ErrorText.test.js +3 -3
  11. package/dist/components/Atoms/Icons/Arrow.js +16 -15
  12. package/dist/components/Atoms/Icons/AtSign.js +9 -9
  13. package/dist/components/Atoms/Icons/Chevron.js +16 -15
  14. package/dist/components/Atoms/Icons/Curve.js +16 -18
  15. package/dist/components/Atoms/Icons/Download.js +8 -8
  16. package/dist/components/Atoms/Icons/External.js +8 -8
  17. package/dist/components/Atoms/Icons/Favourite.js +8 -8
  18. package/dist/components/Atoms/Icons/Internal.js +8 -8
  19. package/dist/components/Atoms/Icons/index.js +8 -8
  20. package/dist/components/Atoms/Input/Input.js +38 -33
  21. package/dist/components/Atoms/Input/input.test.js +3 -3
  22. package/dist/components/Atoms/Label/Label.js +28 -23
  23. package/dist/components/Atoms/Link/Link.js +24 -29
  24. package/dist/components/Atoms/Link/Link.style.js +51 -40
  25. package/dist/components/Atoms/Link/Link.test.js +9 -9
  26. package/dist/components/Atoms/Logo/Logo.js +16 -18
  27. package/dist/components/Atoms/Logo/Logo.test.js +3 -3
  28. package/dist/components/Atoms/Pagination/Item/Item.js +7 -7
  29. package/dist/components/Atoms/Pagination/Item/Item.style.js +35 -28
  30. package/dist/components/Atoms/Pagination/List/List.js +21 -19
  31. package/dist/components/Atoms/Pagination/Pagination.js +41 -49
  32. package/dist/components/Atoms/Pagination/Pagination.test.js +54 -108
  33. package/dist/components/Atoms/Pagination/Utils/PaginationCalculator.js +15 -15
  34. package/dist/components/Atoms/Picture/Picture.js +34 -44
  35. package/dist/components/Atoms/Picture/Picture.test.js +5 -5
  36. package/dist/components/Atoms/RadioButton/RadioButton.js +35 -23
  37. package/dist/components/Atoms/RadioButton/RadioButton.test.js +3 -3
  38. package/dist/components/Atoms/RichText/RichText.js +9 -11
  39. package/dist/components/Atoms/RichText/RichText.test.js +4 -4
  40. package/dist/components/Atoms/Select/Select.js +56 -49
  41. package/dist/components/Atoms/Select/Select.test.js +3 -3
  42. package/dist/components/Atoms/SocialIcons/Icon/Icon.js +13 -13
  43. package/dist/components/Atoms/SocialIcons/SocialIcons.js +25 -23
  44. package/dist/components/Atoms/SocialIcons/SocialIcons.test.js +7 -7
  45. package/dist/components/Atoms/SocialIcons/Utils/Icons.js +1 -1
  46. package/dist/components/Atoms/SocialIcons/Utils/Links.js +19 -20
  47. package/dist/components/Atoms/Text/Text.js +62 -41
  48. package/dist/components/Atoms/Text/Text.test.js +11 -11
  49. package/dist/components/Atoms/TextArea/TextArea.js +18 -17
  50. package/dist/components/Atoms/TextArea/TextArea.test.js +3 -3
  51. package/dist/components/Atoms/TextInputWithDropdown/TextInputWithDropdown.js +69 -86
  52. package/dist/components/Atoms/TextInputWithDropdown/TextInputWithDropdown.style.js +23 -15
  53. package/dist/components/Atoms/TextInputWithDropdown/TextInputWithDropdown.test.js +15 -19
  54. package/dist/components/Molecules/Accordion/Accordion.js +35 -32
  55. package/dist/components/Molecules/Accordion/Accordion.test.js +3 -3
  56. package/dist/components/Molecules/ArticleTeaser/ArticleTeaser.js +81 -52
  57. package/dist/components/Molecules/ArticleTeaser/ArticleTeaser.test.js +5 -5
  58. package/dist/components/Molecules/Banner/Banner.js +21 -13
  59. package/dist/components/Molecules/Banner/Banner.test.js +3 -3
  60. package/dist/components/Molecules/Box/Box.js +33 -27
  61. package/dist/components/Molecules/Box/Box.test.js +5 -5
  62. package/dist/components/Molecules/Card/Card.js +22 -22
  63. package/dist/components/Molecules/Card/Card.test.js +5 -5
  64. package/dist/components/Molecules/CardDs/CardDs.js +80 -55
  65. package/dist/components/Molecules/CardDs/CardDs.test.js +3 -3
  66. package/dist/components/Molecules/Chip/Chip.js +8 -6
  67. package/dist/components/Molecules/Chip/Chip.style.js +48 -28
  68. package/dist/components/Molecules/Chip/Chip.test.js +4 -6
  69. package/dist/components/Molecules/Countdown/Countdown.js +28 -36
  70. package/dist/components/Molecules/Countdown/Countdown.style.js +3 -3
  71. package/dist/components/Molecules/Descriptor/Descriptor.js +32 -26
  72. package/dist/components/Molecules/Descriptor/Descriptor.test.js +5 -5
  73. package/dist/components/Molecules/DoubleCopy/DoubleCopy.js +6 -4
  74. package/dist/components/Molecules/DoubleCopy/DoubleCopy.style.js +7 -5
  75. package/dist/components/Molecules/DoubleCopy/DoubleCopy.test.js +4 -4
  76. package/dist/components/Molecules/HeroBanner/HeroBanner.js +13 -17
  77. package/dist/components/Molecules/InfoBanner/InfoBanner.js +22 -18
  78. package/dist/components/Molecules/InfoBanner/InfoBanner.test.js +10 -10
  79. package/dist/components/Molecules/Logos/Logos.js +26 -14
  80. package/dist/components/Molecules/Logos/Logos.md +5 -0
  81. package/dist/components/Molecules/Lookup/Lookup.js +49 -84
  82. package/dist/components/Molecules/PartnerLink/PartnerLink.js +10 -11
  83. package/dist/components/Molecules/PartnerLink/PartnerLink.style.js +15 -9
  84. package/dist/components/Molecules/PartnerLink/PartnerLink.test.js +3 -3
  85. package/dist/components/Molecules/Promo/Promo.js +30 -36
  86. package/dist/components/Molecules/Promo/Promo.style.js +44 -31
  87. package/dist/components/Molecules/Promo/Promo.test.js +6 -6
  88. package/dist/components/Molecules/Promo/_ProgressRing.js +13 -19
  89. package/dist/components/Molecules/Promo/_PromoVideo.js +25 -34
  90. package/dist/components/Molecules/Promo/_PromoVideoButton.js +7 -7
  91. package/dist/components/Molecules/Promo/_PromoVideoButton.style.js +68 -41
  92. package/dist/components/Molecules/SchoolLookup/SchoolLookup.js +29 -52
  93. package/dist/components/Molecules/SchoolLookup/SchoolLookup.test.js +4 -4
  94. package/dist/components/Molecules/SearchInput/SearchInput.js +8 -8
  95. package/dist/components/Molecules/SearchInput/SearchInput.style.js +22 -14
  96. package/dist/components/Molecules/SearchInput/SearchInput.test.js +4 -4
  97. package/dist/components/Molecules/SearchResult/SearchResult.js +43 -29
  98. package/dist/components/Molecules/SearchResult/SearchResult.test.js +9 -9
  99. package/dist/components/Molecules/ShareButton/ShareButton.js +22 -26
  100. package/dist/components/Molecules/ShareButton/ShareButton.style.js +5 -5
  101. package/dist/components/Molecules/ShareButton/ShareButton.test.js +3 -3
  102. package/dist/components/Molecules/ShareButton/assets/ShareIcons.js +2 -2
  103. package/dist/components/Molecules/SimpleSchoolLookup/SimpleSchoolLookup.js +28 -55
  104. package/dist/components/Molecules/SingleMessage/SingleMessage.js +99 -123
  105. package/dist/components/Molecules/SingleMessage/SingleMessage.style.js +132 -81
  106. package/dist/components/Molecules/SingleMessage/SingleMessage.test.js +13 -13
  107. package/dist/components/Molecules/SingleMessageDS/SingleMessageDs.js +31 -40
  108. package/dist/components/Molecules/SingleMessageDS/SingleMessageDs.style.js +85 -49
  109. package/dist/components/Molecules/SingleMessageDS/SingleMessageDs.test.js +3 -3
  110. package/dist/components/Molecules/Typeahead/Typeahead.js +47 -84
  111. package/dist/components/Molecules/Typeahead/Typeahead.test.js +12 -35
  112. package/dist/components/Molecules/VideoBanner/VideoBanner.js +20 -25
  113. package/dist/components/Molecules/VideoBanner/VideoBanner.test.js +4 -4
  114. package/dist/components/Organisms/CookieBanner/CookieBanner.js +7 -5
  115. package/dist/components/Organisms/CookieBanner/CookieBanner.style.js +21 -13
  116. package/dist/components/Organisms/CookieBanner/CookieBanner.test.js +5 -5
  117. package/dist/components/Organisms/Donate/Donate.js +42 -39
  118. package/dist/components/Organisms/Donate/Donate.md +85 -0
  119. package/dist/components/Organisms/Donate/Donate.style.js +85 -53
  120. package/dist/components/Organisms/Donate/Donate.test.js +10 -10
  121. package/dist/components/Organisms/Donate/Form/Form.js +64 -80
  122. package/dist/components/Organisms/Donate/Form/PopUpComponent.js +25 -30
  123. package/dist/components/Organisms/Donate/GivingSelector/GivingSelector.js +11 -13
  124. package/dist/components/Organisms/Donate/GivingSelector/GivingSelector.style.js +38 -22
  125. package/dist/components/Organisms/Donate/MoneyBuy/MoneyBuy.js +47 -30
  126. package/dist/components/Organisms/EmailSignUp/EmailSignUp.style.js +63 -37
  127. package/dist/components/Organisms/EmailSignUp/EmailSignUp.test.js +12 -12
  128. package/dist/components/Organisms/EmailSignUp/EmailSignUpForm.js +23 -43
  129. package/dist/components/Organisms/EmailSignUp/_EmailSignUp.js +25 -21
  130. package/dist/components/Organisms/EmailSignUp/_EmailSignUpConfig.js +10 -9
  131. package/dist/components/Organisms/EmailSignUp/_TextInput.js +20 -18
  132. package/dist/components/Organisms/Footer/Footer.js +10 -10
  133. package/dist/components/Organisms/Footer/Footer.style.js +27 -21
  134. package/dist/components/Organisms/Footer/Footer.test.js +3 -3
  135. package/dist/components/Organisms/Footer/Nav/Nav.js +59 -70
  136. package/dist/components/Organisms/Footer/Nav/Nav.style.js +77 -43
  137. package/dist/components/Organisms/Header/Burger/BurgerMenu.js +6 -4
  138. package/dist/components/Organisms/Header/Burger/BurgerMenu.style.js +37 -21
  139. package/dist/components/Organisms/Header/Header.js +8 -8
  140. package/dist/components/Organisms/Header/Header.style.js +27 -19
  141. package/dist/components/Organisms/Header/Nav/Nav.js +39 -50
  142. package/dist/components/Organisms/Header/Nav/Nav.style.js +103 -57
  143. package/dist/components/Organisms/Header/header.test.js +1 -1
  144. package/dist/components/Organisms/ImpactSlider/ImpactMoneybuys.style.js +32 -29
  145. package/dist/components/Organisms/ImpactSlider/ImpactSlider.js +19 -22
  146. package/dist/components/Organisms/ImpactSlider/ImpactSlider.style.js +38 -24
  147. package/dist/components/Organisms/ImpactSlider/Slider.style.js +8 -14
  148. package/dist/components/Organisms/ImpactSlider/_ImpactMoneybuys.js +11 -11
  149. package/dist/components/Organisms/ImpactSlider/_Slider.js +9 -7
  150. package/dist/components/Organisms/ImpactSlider/_utils.js +11 -11
  151. package/dist/components/Organisms/MarketingPreferencesDS/MarketingPreferencesDS.style.js +61 -38
  152. package/dist/components/Organisms/MarketingPreferencesDS/MarketingPreferencesDSForm.js +24 -16
  153. package/dist/components/Organisms/MarketingPreferencesDS/_AssociatedFields.js +1 -1
  154. package/dist/components/Organisms/MarketingPreferencesDS/_CheckAnswer.js +20 -16
  155. package/dist/components/Organisms/MarketingPreferencesDS/_DefaultCopy.js +3 -3
  156. package/dist/components/Organisms/MarketingPreferencesDS/_MarketingPreferencesDS.js +46 -36
  157. package/dist/components/Organisms/MarketingPreferencesDS/_MarketingPrefsConfig.js +21 -34
  158. package/dist/components/Organisms/MarketingPreferencesDS/_TextInput.js +20 -18
  159. package/dist/components/Organisms/Membership/Form/Form.js +48 -81
  160. package/dist/components/Organisms/Membership/Membership.js +17 -15
  161. package/dist/components/Organisms/Membership/Membership.style.js +81 -51
  162. package/dist/components/Organisms/Membership/Membership.test.js +4 -4
  163. package/dist/components/Organisms/Membership/MoneyBox/MoneyBox.js +37 -26
  164. package/dist/hoc/shallowWithTheme.js +1 -1
  165. package/dist/index.js +67 -67
  166. package/dist/styleguide/CRLogo.js +2 -2
  167. package/dist/styleguide/StyleGuideRenderer.js +9 -7
  168. package/dist/styleguide/ThemeWrapper.js +5 -3
  169. package/dist/styleguide/data/data.js +3 -3
  170. package/dist/theme/crTheme/buttonColors.js +6 -5
  171. package/dist/theme/crTheme/colors.js +4 -3
  172. package/dist/theme/crTheme/fontSizes.js +4 -3
  173. package/dist/theme/crTheme/linkStyles.js +6 -5
  174. package/dist/theme/crTheme/theme.js +1 -1
  175. package/dist/theme/shared/breakpoint.js +4 -3
  176. package/dist/theme/shared/fontFamilies.js +5 -4
  177. package/dist/theme/shared/hideVisually.js +1 -1
  178. package/dist/theme/shared/size.js +4 -3
  179. package/dist/theme/shared/spacing.js +2 -2
  180. package/dist/theme/shared/zIndex.js +3 -3
  181. package/dist/theme/srTheme/buttonColors.js +6 -5
  182. package/dist/theme/srTheme/colors.js +4 -3
  183. package/dist/theme/srTheme/fontSizes.js +4 -3
  184. package/dist/theme/srTheme/linkStyles.js +6 -5
  185. package/dist/theme/srTheme/theme.js +1 -1
  186. package/dist/utils/Membership.js +30 -27
  187. package/dist/utils/ShareButton/sharePopUpHelper.js +8 -8
  188. package/dist/utils/ShareButton/shareTracking.js +1 -1
  189. package/dist/utils/ShareButton/shareUrlHelper.js +3 -3
  190. package/dist/utils/allowListed.js +3 -5
  191. package/dist/utils/allowListed.test.js +3 -3
  192. package/dist/utils/internalLinkHelper.js +8 -10
  193. package/dist/utils/navHelper.js +2 -2
  194. package/package.json +12 -9
  195. package/playwright/components/atoms/checkbox.spec.js +64 -0
  196. package/playwright/components/atoms/input.spec.js +158 -0
  197. package/playwright/components/atoms/label.spec.js +29 -0
  198. package/playwright/components/atoms/link.spec.js +48 -0
  199. package/playwright/components/atoms/radioButton.spec.js +30 -0
  200. package/playwright/components/atoms/select.spec.js +36 -0
  201. package/playwright/components/atoms/textArea.spec.js +39 -0
  202. package/playwright/components/atoms/textInputWithDropdown.spec.js +23 -0
  203. package/playwright/components/molecules/accordian.spec.js +20 -0
  204. package/playwright/components/molecules/schoolLookup.spec.js +26 -0
  205. package/playwright/components/molecules/searchInput.spec.js +24 -0
  206. package/playwright/components/molecules/shareButton.spec.js +32 -0
  207. package/playwright/components/molecules/simpleSchoolLookUp.spec.js +35 -0
  208. package/playwright/components/molecules/typeahead.spec.js +27 -0
  209. package/playwright/components/organisms/donate.spec.js +293 -0
  210. package/playwright/components/organisms/emailSignUpForm.spec.js +109 -0
  211. package/playwright/components/organisms/footer.spec.js +67 -0
  212. package/playwright/components/organisms/header.spec.js +82 -0
  213. package/playwright/components/organisms/impactSlider.spec.js +292 -0
  214. package/playwright/components/organisms/marketingPreferences.spec.js +220 -0
  215. package/playwright/components/organisms/membership.spec.js +47 -0
  216. package/playwright.config.js +49 -0
  217. package/src/components/Molecules/Logos/Logos.js +18 -6
  218. package/src/components/Molecules/Logos/Logos.md +5 -0
  219. package/src/components/Organisms/Donate/Donate.js +11 -3
  220. package/src/components/Organisms/Donate/Donate.md +85 -0
  221. package/src/components/Organisms/Donate/Form/Form.js +20 -2
  222. package/src/components/Organisms/ImpactSlider/_ImpactMoneybuys.js +3 -4
  223. package/src/components/Organisms/Membership/Membership.test.js +1 -1
  224. package/cypress/e2e/components/atoms/button.cy.js +0 -102
  225. package/cypress/e2e/components/atoms/buttonWithStates.cy.js +0 -47
  226. package/cypress/e2e/components/atoms/checkbox.cy.js +0 -70
  227. package/cypress/e2e/components/atoms/confetti.cy.js +0 -46
  228. package/cypress/e2e/components/atoms/errorText.cy.js +0 -45
  229. package/cypress/e2e/components/atoms/input.cy.js +0 -157
  230. package/cypress/e2e/components/atoms/label.cy.js +0 -93
  231. package/cypress/e2e/components/atoms/link.cy.js +0 -190
  232. package/cypress/e2e/components/atoms/logo.cy.js +0 -132
  233. package/cypress/e2e/components/atoms/pagination.cy.js +0 -191
  234. package/cypress/e2e/components/atoms/picture.cy.js +0 -130
  235. package/cypress/e2e/components/atoms/radioButton.cy.js +0 -76
  236. package/cypress/e2e/components/atoms/richText.cy.js +0 -70
  237. package/cypress/e2e/components/atoms/select.cy.js +0 -84
  238. package/cypress/e2e/components/atoms/socialIcons.cy.js +0 -162
  239. package/cypress/e2e/components/atoms/text.cy.js +0 -169
  240. package/cypress/e2e/components/atoms/textArea.cy.js +0 -89
  241. package/cypress/e2e/components/atoms/textInputWithDrop.cy.js +0 -76
  242. package/cypress/e2e/components/molecules/accordion.cy.js +0 -67
  243. package/cypress/e2e/components/molecules/articleTeaser.cy.js +0 -105
  244. package/cypress/e2e/components/molecules/banner.cy.js +0 -67
  245. package/cypress/e2e/components/molecules/box.cy.js +0 -104
  246. package/cypress/e2e/components/molecules/card.cy.js +0 -105
  247. package/cypress/e2e/components/molecules/cardDs.cy.js +0 -198
  248. package/cypress/e2e/components/molecules/chip.cy.js +0 -68
  249. package/cypress/e2e/components/molecules/countdown.cy.js +0 -71
  250. package/cypress/e2e/components/molecules/descriptor.cy.js +0 -142
  251. package/cypress/e2e/components/molecules/doubleCopy.cy.js +0 -79
  252. package/cypress/e2e/components/molecules/heroBanner.cy.js +0 -69
  253. package/cypress/e2e/components/molecules/infoBanner.cy.js +0 -69
  254. package/cypress/e2e/components/molecules/partnerLink.cy.js +0 -68
  255. package/cypress/e2e/components/molecules/promo.cy.js +0 -74
  256. package/cypress/e2e/components/molecules/schoolLookup.cy.js +0 -83
  257. package/cypress/e2e/components/molecules/searchInput.cy.js +0 -72
  258. package/cypress/e2e/components/molecules/searchResult.cy.js +0 -191
  259. package/cypress/e2e/components/molecules/shareButton.cy.js +0 -76
  260. package/cypress/e2e/components/molecules/simpleSchoolLookup.cy.js +0 -83
  261. package/cypress/e2e/components/molecules/singleMessage.cy.js +0 -502
  262. package/cypress/e2e/components/molecules/singleMessageDs.cy.js +0 -234
  263. package/cypress/e2e/components/molecules/typeahead.cy.js +0 -97
  264. package/cypress/e2e/components/molecules/videoBanner.cy.js +0 -132
  265. package/cypress/e2e/components/organisms/cookieBanner.cy.js +0 -80
  266. package/cypress/e2e/components/organisms/donate.cy.js +0 -284
  267. package/cypress/e2e/components/organisms/emailSignUp.cy.js +0 -54
  268. package/cypress/e2e/components/organisms/footer.cy.js +0 -168
  269. package/cypress/e2e/components/organisms/header.cy.js +0 -138
  270. package/cypress/e2e/components/organisms/impactSlider.cy.js +0 -72
  271. package/cypress/e2e/components/organisms/marketingPreferencesDSForm.cy.js +0 -589
  272. package/cypress/e2e/components/organisms/membership.cy.js +0 -122
  273. package/cypress/fixtures/example.json +0 -5
  274. package/cypress/plugins/index.js +0 -21
  275. package/cypress/support/commands.js +0 -25
  276. package/cypress/support/e2e.js +0 -36
  277. package/cypress.config.js +0 -15
@@ -4,15 +4,16 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.sizes = exports.default = void 0;
7
- var sizes = exports.sizes = {
7
+ const sizes = exports.sizes = {
8
8
  small: 740,
9
9
  medium: 1024,
10
10
  nav: 1150,
11
11
  large: 1440
12
12
  };
13
- var _default = exports.default = function _default(size) {
13
+ var _default = size => {
14
14
  if (size) {
15
15
  return "(min-width: ".concat(sizes[size], "px)");
16
16
  }
17
17
  return 'inherit';
18
- };
18
+ };
19
+ exports.default = _default;
@@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
- var fonts = {
7
+ const fonts = {
8
8
  Montserrat: {
9
9
  font: 'Montserrat',
10
10
  fallback: 'Helvetica, Arial'
@@ -26,10 +26,11 @@ var fonts = {
26
26
  fallback: 'helvetica, arial, sans-serif'
27
27
  }
28
28
  };
29
- var _default = exports.default = function _default(family) {
30
- var style = 'inherit';
29
+ var _default = family => {
30
+ let style = 'inherit';
31
31
  if (family) {
32
32
  style = "'".concat(fonts[family].font, "', ").concat(fonts[family].fallback, ", sans-serif");
33
33
  }
34
34
  return style;
35
- };
35
+ };
36
+ exports.default = _default;
@@ -5,5 +5,5 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.default = void 0;
7
7
  var _styledComponents = require("styled-components");
8
- var hideVisually = (0, _styledComponents.css)(["border:0;clip:rect(0 0 0 0);clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px;"]);
8
+ const hideVisually = (0, _styledComponents.css)(["border:0;clip:rect(0 0 0 0);clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px;"]);
9
9
  var _default = exports.default = hideVisually;
@@ -4,18 +4,19 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.screen = exports.media = exports.container = void 0;
7
- var screen = exports.screen = {
7
+ const screen = exports.screen = {
8
8
  small: '740px',
9
9
  medium: '1024px',
10
10
  large: '1440px'
11
11
  };
12
- var media = exports.media = function media(size) {
12
+ const media = size => {
13
13
  if (size) {
14
14
  return "@media (min-width: ".concat(screen[size], ")");
15
15
  }
16
16
  return 'inherit';
17
17
  };
18
- var container = exports.container = {
18
+ exports.media = media;
19
+ const container = exports.container = {
19
20
  small: '880px',
20
21
  medium: '1200px',
21
22
  large: '1440px'
@@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
- var spacingSizes = {
7
+ const spacingSizes = {
8
8
  none: '0',
9
9
  xsm: '0.25rem',
10
10
  sm: '0.5rem',
@@ -16,7 +16,7 @@ var spacingSizes = {
16
16
  xxl: '8rem',
17
17
  xxxl: '16rem'
18
18
  };
19
- var spacing = function spacing(size) {
19
+ const spacing = size => {
20
20
  if (size) {
21
21
  return spacingSizes[size];
22
22
  }
@@ -5,15 +5,15 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.default = void 0;
7
7
  var _styledComponents = require("styled-components");
8
- var indexes = {
8
+ const indexes = {
9
9
  base: 0,
10
10
  low: 1,
11
11
  medium: 2,
12
12
  high: 3,
13
13
  higher: 4
14
14
  };
15
- var zIndex = function zIndex(index) {
16
- var value = indexes.base;
15
+ const zIndex = index => {
16
+ let value = indexes.base;
17
17
  if (index) {
18
18
  value = indexes[index];
19
19
  }
@@ -1,13 +1,13 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
7
  exports.default = void 0;
8
8
  var _styledComponents = require("styled-components");
9
9
  var _colors = _interopRequireDefault(require("./colors"));
10
- var buttonColors = {
10
+ const buttonColors = {
11
11
  black: {
12
12
  background: (0, _colors.default)('black'),
13
13
  color: (0, _colors.default)('white'),
@@ -195,10 +195,11 @@ var buttonColors = {
195
195
  hoverColor: (0, _colors.default)('white')
196
196
  }
197
197
  };
198
- var _default = exports.default = function _default(colorName) {
199
- var style = 'inherit';
198
+ var _default = colorName => {
199
+ let style = 'inherit';
200
200
  if (colorName) {
201
201
  style = (0, _styledComponents.css)(["background-color:", ";color:", ";:hover{background-color:", ";color:", ";}"], buttonColors[colorName].background, buttonColors[colorName].color, buttonColors[colorName].hoverBackground, buttonColors[colorName].hoverColor);
202
202
  }
203
203
  return style;
204
- };
204
+ };
205
+ exports.default = _default;
@@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
- var colors = {
7
+ const colors = {
8
8
  black: '#030e1a',
9
9
  black_dark: '#030e1a',
10
10
  blue: '#223c59',
@@ -48,9 +48,10 @@ var colors = {
48
48
  yellow_dark: '#665700',
49
49
  yellow_light: '#FEFD5A'
50
50
  };
51
- var _default = exports.default = function _default(colorName) {
51
+ var _default = colorName => {
52
52
  if (colorName) {
53
53
  return colors[colorName];
54
54
  }
55
55
  return 'inherit';
56
- };
56
+ };
57
+ exports.default = _default;
@@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
- var fontSizes = {
7
+ const fontSizes = {
8
8
  xxs: '0.69375rem',
9
9
  xs: '0.83125rem',
10
10
  s: '1rem',
@@ -14,9 +14,10 @@ var fontSizes = {
14
14
  xxl: '4.125rem',
15
15
  super: '7.3125rem'
16
16
  };
17
- var _default = exports.default = function _default(size) {
17
+ var _default = size => {
18
18
  if (size) {
19
19
  return fontSizes[size];
20
20
  }
21
21
  return '';
22
- };
22
+ };
23
+ exports.default = _default;
@@ -1,13 +1,13 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
7
  exports.default = void 0;
8
8
  var _styledComponents = require("styled-components");
9
9
  var _colors = _interopRequireDefault(require("./colors"));
10
- var linkStyles = {
10
+ const linkStyles = {
11
11
  standard: {
12
12
  color: (0, _colors.default)('black'),
13
13
  border: "1px solid ".concat((0, _colors.default)('black')),
@@ -25,10 +25,11 @@ var linkStyles = {
25
25
  hoverBorder: '1px solid trasparent'
26
26
  }
27
27
  };
28
- var _default = exports.default = function _default(styleName, underline) {
29
- var style = (0, _styledComponents.css)(["padding-bottom:0.06em;color:", ";border-bottom:solid 1px;border-bottom-color:inherit;font-weight:700;:hover{color:inherit;font-weight:700;}"], (0, _colors.default)('black'));
28
+ var _default = (styleName, underline) => {
29
+ let style = (0, _styledComponents.css)(["padding-bottom:0.06em;color:", ";border-bottom:solid 1px;border-bottom-color:inherit;font-weight:700;:hover{color:inherit;font-weight:700;}"], (0, _colors.default)('black'));
30
30
  if (styleName) {
31
31
  style = (0, _styledComponents.css)(["padding:", ";color:", ";border-bottom:", ";font-weight:", ";:hover{color:", ";border-bottom:", ";font-weight:", ";}"], linkStyles[styleName].padding, linkStyles[styleName].color, underline && linkStyles[styleName].border, linkStyles[styleName].weight, linkStyles[styleName].hoverColor, underline && linkStyles[styleName].hoverBorder, linkStyles[styleName].hoverWeight);
32
32
  }
33
33
  return style;
34
- };
34
+ };
35
+ exports.default = _default;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
@@ -5,47 +5,50 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.onKeyPress = exports.isInputMatchBoxValue = exports.isAmountValid = exports.handleDonateSubmission = exports.amountFormatter = void 0;
7
7
  // this function prevent keyboard characters like e, + , - to be passed on the input
8
- var onKeyPress = exports.onKeyPress = function onKeyPress(event) {
9
- var keyCode = event.keyCode || event.which;
10
- var keyValue = String.fromCharCode(keyCode);
8
+ const onKeyPress = event => {
9
+ const keyCode = event.keyCode || event.which;
10
+ const keyValue = String.fromCharCode(keyCode);
11
11
  if (/\+|-|e/.test(keyValue)) event.preventDefault();
12
12
  };
13
- var amountFormatter = exports.amountFormatter = function amountFormatter(amount) {
13
+ exports.onKeyPress = onKeyPress;
14
+ const amountFormatter = amount => {
14
15
  if (!amount) return ' ';
15
16
  // Determine how many places to fix the number to before passing
16
- var decPoint = !Number.isInteger(amount) ? 2 : 0;
17
+ const decPoint = !Number.isInteger(amount) ? 2 : 0;
17
18
  return parseFloat(amount).toFixed(decPoint);
18
19
  };
19
- var isAmountValid = exports.isAmountValid = function isAmountValid(input) {
20
- var reg = /^\s*(?=.*[1-9])\d*(?:\.\d{1,2})?\s*$/g;
21
- var isValid = input * 1 >= 1 && input * 1 <= 25000 && reg.test(input);
20
+ exports.amountFormatter = amountFormatter;
21
+ const isAmountValid = input => {
22
+ const reg = /^\s*(?=.*[1-9])\d*(?:\.\d{1,2})?\s*$/g;
23
+ const isValid = input * 1 >= 1 && input * 1 <= 25000 && reg.test(input);
22
24
  return isValid;
23
25
  };
24
- var getUrlParameter = function getUrlParameter(name) {
25
- var text = name.replace(/\[]/, '\\[').replace(/[\]]/, '\\]');
26
- var regex = new RegExp("[\\?&]".concat(text, "=([^&#]*)"));
27
- var results = regex.exec(window.location.search);
28
- var param = results === null ? 'generic' : decodeURIComponent(results[1].replace(/\+/g, ' '));
26
+ exports.isAmountValid = isAmountValid;
27
+ const getUrlParameter = name => {
28
+ const text = name.replace(/\[]/, '\\[').replace(/[\]]/, '\\]');
29
+ const regex = new RegExp("[\\?&]".concat(text, "=([^&#]*)"));
30
+ const results = regex.exec(window.location.search);
31
+ const param = results === null ? 'generic' : decodeURIComponent(results[1].replace(/\+/g, ' '));
29
32
  return param;
30
33
  };
31
- var isInputMatchBoxValue = exports.isInputMatchBoxValue = function isInputMatchBoxValue(moneyBoxes, selectMoneyBuy, setAmountDonate, input) {
32
- var inputToNum = input * 1;
33
- return Object.keys(moneyBoxes).map(function (box) {
34
- return moneyBoxes[box].value === inputToNum && (selectMoneyBuy(moneyBoxes[box].description, moneyBoxes[box].value), setAmountDonate(input));
35
- });
34
+ const isInputMatchBoxValue = (moneyBoxes, selectMoneyBuy, setAmountDonate, input) => {
35
+ const inputToNum = input * 1;
36
+ return Object.keys(moneyBoxes).map(box => moneyBoxes[box].value === inputToNum && (selectMoneyBuy(moneyBoxes[box].description, moneyBoxes[box].value), setAmountDonate(input)));
36
37
  };
37
38
 
38
39
  // This function is still in progress
39
- var handleDonateSubmission = exports.handleDonateSubmission = function handleDonateSubmission(amount, clientID, cartID, mbshipID, donateLink) {
40
- var givingType = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 'monthly';
41
- var popUpShown = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : null;
42
- var currentpageUrl = window.location.href;
43
- var affiliateValue = getUrlParameter(currentpageUrl);
44
- var reg = /[#?|[\]\\]/g;
40
+ exports.isInputMatchBoxValue = isInputMatchBoxValue;
41
+ const handleDonateSubmission = function (amount, clientID, cartID, mbshipID, donateLink) {
42
+ let givingType = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 'monthly';
43
+ let popUpShown = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : null;
44
+ let currentpageUrl = window.location.href;
45
+ const affiliateValue = getUrlParameter(currentpageUrl);
46
+ const reg = /[#?|[\]\\]/g;
45
47
  if (currentpageUrl.match(reg) !== null) {
46
- var thisMatch = currentpageUrl.match(reg)[0];
48
+ const thisMatch = currentpageUrl.match(reg)[0];
47
49
  currentpageUrl = currentpageUrl.substring(0, currentpageUrl.indexOf(thisMatch));
48
50
  }
49
- var givingTypeUrl = givingType === 'single' ? 'single' : 'monthly';
51
+ const givingTypeUrl = givingType === 'single' ? 'single' : 'monthly';
50
52
  window.location.href = "".concat(donateLink, "?clientOverride=").concat(clientID, "&amount=").concat(amount, "&currency=GBP&givingType=").concat(givingTypeUrl, "&cartId=").concat(cartID, "&affiliate=").concat(affiliateValue, "&siteurl=").concat(currentpageUrl, "&rowID=").concat(mbshipID, "&popUpShown=").concat(popUpShown);
51
- };
53
+ };
54
+ exports.handleDonateSubmission = handleDonateSubmission;
@@ -5,11 +5,11 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.default = void 0;
7
7
  /* Handles issues related to screen/browser positions on dual-screen setups- http://www.xtf.dk/ */
8
- var popUpCentre = function popUpCentre(url, popUpWidth, popUpHeight) {
9
- var dualScreenLeft = window.screenLeft !== undefined ? window.screenLeft : window.screen.left;
10
- var dualScreenTop = window.screenTop !== undefined ? window.screenTop : window.screen.top;
11
- var browserWidth;
12
- var browserHeight;
8
+ const popUpCentre = (url, popUpWidth, popUpHeight) => {
9
+ const dualScreenLeft = window.screenLeft !== undefined ? window.screenLeft : window.screen.left;
10
+ const dualScreenTop = window.screenTop !== undefined ? window.screenTop : window.screen.top;
11
+ let browserWidth;
12
+ let browserHeight;
13
13
  if (window.innerWidth) {
14
14
  browserWidth = window.innerWidth;
15
15
  } else if (document.documentElement.clientWidth) {
@@ -24,9 +24,9 @@ var popUpCentre = function popUpCentre(url, popUpWidth, popUpHeight) {
24
24
  } else {
25
25
  browserHeight = window.screen.height;
26
26
  }
27
- var popUpLeft = browserWidth / 2 - popUpWidth / 2 + dualScreenLeft;
28
- var popUpTop = browserHeight / 2 - popUpHeight / 2 + dualScreenTop;
29
- var newWindow = window.open(url, '', "width=".concat(popUpWidth, ", height=").concat(popUpHeight, ", top=").concat(popUpTop, ", left=").concat(popUpLeft));
27
+ const popUpLeft = browserWidth / 2 - popUpWidth / 2 + dualScreenLeft;
28
+ const popUpTop = browserHeight / 2 - popUpHeight / 2 + dualScreenTop;
29
+ const newWindow = window.open(url, '', "width=".concat(popUpWidth, ", height=").concat(popUpHeight, ", top=").concat(popUpTop, ", left=").concat(popUpLeft));
30
30
 
31
31
  // Shift browser focus to newWindow
32
32
  if (window.focus) {
@@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
- var shareTracking = function shareTracking(channel) {
7
+ const shareTracking = channel => {
8
8
  if (!window.dataLayer) {
9
9
  window.dataLayer = [];
10
10
  }
@@ -5,12 +5,12 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.default = void 0;
7
7
  /* Determine where to grab the URL, depending on the component type and values supplied */
8
- var shareUrlHelper = function shareUrlHelper(urlToShare, typeOfShare) {
8
+ const shareUrlHelper = (urlToShare, typeOfShare) => {
9
9
  // Encode the URL so we can happily pass it as a parameter, fragments and all
10
- var urlToShareEncoded = encodeURIComponent(urlToShare);
10
+ const urlToShareEncoded = encodeURIComponent(urlToShare);
11
11
 
12
12
  // Construct all share urls
13
- var shareURLs = {
13
+ const shareURLs = {
14
14
  Twitter: "http://www.twitter.com/intent/tweet?url=".concat(urlToShareEncoded),
15
15
  Facebook: "https://www.facebook.com/sharer/sharer.php?u=".concat(urlToShareEncoded)
16
16
  };
@@ -4,11 +4,9 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
- var allowList = ['https://giftaid.comicrelief.com', 'https://donation.comicrelief.com', 'https://www.comicrelief.com', 'https://www.sportrelief.com', 'https://app.beapplied.com/org/comic-relief', 'stories.comicrelief.com', 'https://form.typeform.com'];
8
- var allowListed = function allowListed(url) {
9
- if (url !== undefined && url !== null && allowList.some(function (v) {
10
- return url.indexOf(v) >= 0;
11
- })) {
7
+ const allowList = ['https://giftaid.comicrelief.com', 'https://donation.comicrelief.com', 'https://www.comicrelief.com', 'https://www.sportrelief.com', 'https://app.beapplied.com/org/comic-relief', 'stories.comicrelief.com', 'https://form.typeform.com'];
8
+ const allowListed = url => {
9
+ if (url !== undefined && url !== null && allowList.some(v => url.indexOf(v) >= 0)) {
12
10
  return true;
13
11
  }
14
12
  return false;
@@ -1,10 +1,10 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
4
  var _allowListed = _interopRequireDefault(require("./allowListed"));
5
- it('link is allowListed', function () {
5
+ it('link is allowListed', () => {
6
6
  expect((0, _allowListed.default)('https://www.comicrelief.com/home')).toBe(true);
7
7
  });
8
- it('link is not allowListed', function () {
8
+ it('link is not allowListed', () => {
9
9
  expect((0, _allowListed.default)('https://www.google.co.uk/')).toBe(false);
10
10
  });
@@ -1,13 +1,11 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
3
  Object.defineProperty(exports, "__esModule", {
5
4
  value: true
6
5
  });
7
6
  exports.getDomain = exports.InternalLinkHelper = void 0;
8
- var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/slicedToArray"));
9
- var domainRegEx = new RegExp('(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\\.)+[a-z0-9][a-z0-9-]{0,61}[a-z0-9]');
10
- var InternalLinkHelper = exports.InternalLinkHelper = function InternalLinkHelper(link) {
7
+ const domainRegEx = new RegExp('(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\\.)+[a-z0-9][a-z0-9-]{0,61}[a-z0-9]');
8
+ const InternalLinkHelper = link => {
11
9
  // Check our URL for a domain pattern, if so return it
12
10
  if (domainRegEx.test(link)) {
13
11
  return link;
@@ -16,18 +14,18 @@ var InternalLinkHelper = exports.InternalLinkHelper = function InternalLinkHelpe
16
14
  // If domain-free and internal, prefix it with slash if it doesn't already have one
17
15
  return link.substring(0, 1) === '/' ? link : "/".concat(link);
18
16
  };
19
- var getDomain = exports.getDomain = function getDomain(url) {
20
- var thisURL = url;
17
+ exports.InternalLinkHelper = InternalLinkHelper;
18
+ const getDomain = url => {
19
+ let thisURL = url;
21
20
 
22
21
  // Strip out protocol
23
22
  thisURL = url.replace(/(https?:\/\/)?(www.)?/i, '');
24
23
 
25
24
  // Strip out subdirectory/path
26
25
  if (thisURL.indexOf('/') !== -1) {
27
- var _thisURL$split = thisURL.split('/'),
28
- _thisURL$split2 = (0, _slicedToArray2.default)(_thisURL$split, 1),
29
- splitURL = _thisURL$split2[0];
26
+ const [splitURL] = thisURL.split('/');
30
27
  thisURL = splitURL;
31
28
  }
32
29
  return thisURL;
33
- };
30
+ };
31
+ exports.getDomain = getDomain;
@@ -5,9 +5,9 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.default = void 0;
7
7
  /* Determine where to grab the URL, depending on the component type and values supplied */
8
- var NavHelper = function NavHelper(navItem) {
8
+ const NavHelper = navItem => {
9
9
  /* Default url path location for 'Pages' */
10
- var thisUrl = navItem.path;
10
+ let thisUrl = navItem.path;
11
11
  if (navItem.internal.type === 'ContentfulComponentLink') {
12
12
  thisUrl = navItem.reference && navItem.reference.path ? navItem.reference.path : navItem.url;
13
13
  }
package/package.json CHANGED
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "name": "@comicrelief/component-library",
3
3
  "author": "Comic Relief Engineering Team",
4
- "version": "7.24.1",
4
+ "version": "7.25.0",
5
5
  "main": "dist/index.js",
6
6
  "license": "ISC",
7
7
  "jest": {
8
8
  "verbose": true,
9
9
  "testPathIgnorePatterns": [
10
- "<rootDir>/cypress/",
10
+ "<rootDir>/playwright/",
11
11
  "<rootDir>/dist/",
12
12
  "<rootDir>/node_modules/"
13
13
  ],
@@ -22,6 +22,7 @@
22
22
  },
23
23
  "dependencies": {
24
24
  "@babel/cli": "^7.21.5",
25
+ "@babel/plugin-proposal-private-property-in-object": "^7.21.11",
25
26
  "@hookform/resolvers": "^1.3.4",
26
27
  "axios": "^0.21.1",
27
28
  "ejs": "^3.1.9",
@@ -36,8 +37,8 @@
36
37
  "react-dom": "^17.0.2",
37
38
  "react-hook-form": "^6.3.0",
38
39
  "react-modal": "^3.16.1",
39
- "react-responsive": "^9.0.2",
40
40
  "react-range-slider-input": "^3.0.7",
41
+ "react-responsive": "^9.0.2",
41
42
  "react-scripts": "4.0.3",
42
43
  "react-spinners": "^0.11.0",
43
44
  "react-styleguidist": "^11.1.7",
@@ -51,14 +52,15 @@
51
52
  "react-scripts/workbox-webpack-plugin/workbox-build/@surma/rollup-plugin-off-main-thread/ejs": "3.1.6"
52
53
  },
53
54
  "scripts": {
54
- "test": "yarn run jest",
55
+ "test:unit": "yarn run jest",
55
56
  "styleguide": "cross-env FAST_REFRESH=false styleguidist server",
56
57
  "styleguide:build": "styleguidist build",
57
58
  "postinstall": "yarn run build",
58
59
  "build": "rm -rf dist && NODE_ENV=production babel src --out-dir dist --copy-files --ignore __tests__,spec.js,test.js",
59
- "cy:run": "export NODE_ENV=development; cypress run --headless --browser chrome",
60
- "cy:open": "export NODE_ENV=development; cypress open",
61
- "feature-test": "run-p --race styleguide cy:run",
60
+ "test:e2e": "playwright test --project=chromium",
61
+ "test:e2e--h": "playwright test --project=chromium --headed",
62
+ "test:e2e:ci": "NODE_ENV=development; start-server-and-test styleguide http://localhost:6060 test:e2e",
63
+ "test:e2e:local": "export NODE_ENV=development; start-server-and-test styleguide http://localhost:6060 test:e2e",
62
64
  "lint": "eslint src",
63
65
  "lint-fix": "yarn lint --fix"
64
66
  },
@@ -75,8 +77,8 @@
75
77
  ]
76
78
  },
77
79
  "devDependencies": {
80
+ "@playwright/test": "^1.38.1",
78
81
  "cross-env": "^7.0.3",
79
- "cypress": "13.2.0",
80
82
  "eslint": "^7.32.0",
81
83
  "eslint-config-airbnb": "^18.2.0",
82
84
  "eslint-plugin-import": "^2.27.5",
@@ -86,6 +88,7 @@
86
88
  "jest": "^26.1.0",
87
89
  "npm-run-all": "^4.1.5",
88
90
  "prettier": "^2.8.8",
89
- "semantic-release": "^17.4.6"
91
+ "semantic-release": "^17.4.6",
92
+ "start-server-and-test": "^2.0.0"
90
93
  }
91
94
  }
@@ -0,0 +1,64 @@
1
+ const { test, expect } = require('@playwright/test');
2
+
3
+ test.describe('checkbox', () => {
4
+ test('checkbox component', async ({ page }) => {
5
+
6
+ await page.goto('/#checkbox');
7
+
8
+ // checkbox component should be visible
9
+ await expect(page.locator('[data-testid="Checkbox-example-1"]')).toBeVisible();
10
+ await expect(page.locator('[data-preview="Checkbox"]')).toBeVisible();
11
+
12
+ // ensure checkboxes are checked when clicked
13
+ // tennis option
14
+ await page.locator('[data-testid="Checkbox-example-1"] div > label:nth-child(2)').click();
15
+ await expect(page.locator('[data-testid="Checkbox-example-1"] div > label:nth-child(2)')).toHaveValue('Tennis');
16
+ expect(await page.locator('[data-testid="Checkbox-example-1"] div > label:nth-child(2)').isChecked()).toBeTruthy();
17
+
18
+ // basketball option
19
+ await page.locator('[data-testid="Checkbox-example-1"] div > label:nth-child(3)').click();
20
+ await expect(page.locator('[data-testid="Checkbox-example-1"] div > label:nth-child(3)')).toHaveValue('Basketball');
21
+ expect(await page.locator('[data-testid="Checkbox-example-1"] div > label:nth-child(3)').isChecked()).toBeTruthy();
22
+
23
+ // cycling option
24
+ await page.locator('[data-testid="Checkbox-example-1"] div > label:nth-child(4)').click();
25
+ await expect(page.locator('[data-testid="Checkbox-example-1"] div > label:nth-child(4)')).toHaveValue('Cycling');
26
+ expect(await page.locator('[data-testid="Checkbox-example-1"] div > label:nth-child(4)').isChecked()).toBeTruthy();
27
+
28
+ // football checkbox
29
+ await page.locator('[data-testid="Checkbox-example-1"] div > label:nth-child(5)').click();
30
+ await expect(page.locator('[data-testid="Checkbox-example-1"] div > label:nth-child(5)')).toHaveValue('Football');
31
+ expect(await page.locator('[data-testid="Checkbox-example-1"] div > label:nth-child(5)').isChecked()).toBeTruthy();
32
+
33
+ // terms and conditions
34
+ await page.locator('[data-testid="Checkbox-example-1"] div > label:nth-child(8)').click();
35
+ expect(await page.locator('[data-testid="Checkbox-example-1"] div > label:nth-child(8)').isChecked()).toBeTruthy();
36
+
37
+ // ensure checkboxes are unchecked when clicked again
38
+ // tennis option
39
+ await page.locator('[data-testid="Checkbox-example-1"] div > label:nth-child(2)').click();
40
+ await expect(page.locator('[data-testid="Checkbox-example-1"] div > label:nth-child(2)')).toHaveValue('Tennis');
41
+ expect(await page.locator('[data-testid="Checkbox-example-1"] div > label:nth-child(2)').isChecked()).toBeFalsy();
42
+
43
+ // basketball option
44
+ await page.locator('[data-testid="Checkbox-example-1"] div > label:nth-child(3)').click();
45
+ await expect(page.locator('[data-testid="Checkbox-example-1"] div > label:nth-child(3)')).toHaveValue('Basketball');
46
+ expect(await page.locator('[data-testid="Checkbox-example-1"] div > label:nth-child(3)').isChecked()).toBeFalsy();
47
+
48
+ // cycling option
49
+ await page.locator('[data-testid="Checkbox-example-1"] div > label:nth-child(4)').click();
50
+ await expect(page.locator('[data-testid="Checkbox-example-1"] div > label:nth-child(4)')).toHaveValue('Cycling');
51
+ expect(await page.locator('[data-testid="Checkbox-example-1"] div > label:nth-child(4)').isChecked()).toBeFalsy();
52
+
53
+ // football checkbox
54
+ await page.locator('[data-testid="Checkbox-example-1"] div > label:nth-child(5)').click();
55
+ await expect(page.locator('[data-testid="Checkbox-example-1"] div > label:nth-child(5)')).toHaveValue('Football');
56
+ expect(await page.locator('[data-testid="Checkbox-example-1"] div > label:nth-child(5)').isChecked()).toBeFalsy();
57
+
58
+ // terms and conditions
59
+ await page.locator('[data-testid="Checkbox-example-1"] div > label:nth-child(8)').click();
60
+ expect(await page.locator('[data-testid="Checkbox-example-1"] div > label:nth-child(8)').isChecked()).toBeFalsy();
61
+
62
+ await page.close();
63
+ });
64
+ });