@coorpacademy/components 10.5.4 → 10.5.7-alpha.5

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 (133) hide show
  1. package/es/molecule/course-section/index.js +5 -3
  2. package/es/molecule/course-section/index.js.map +1 -1
  3. package/es/molecule/course-section/style.css +2 -1
  4. package/es/molecule/course-section/test/fixtures/chapter.js +2 -1
  5. package/es/molecule/course-section/test/fixtures/chapter.js.map +1 -1
  6. package/es/molecule/course-section/test/fixtures/course.js +2 -1
  7. package/es/molecule/course-section/test/fixtures/course.js.map +1 -1
  8. package/es/molecule/course-sections/index.js +40 -0
  9. package/es/molecule/course-sections/index.js.map +1 -0
  10. package/es/molecule/course-sections/style.css +3 -0
  11. package/es/molecule/course-sections/test/fixtures/default.js +149 -0
  12. package/es/molecule/course-sections/test/fixtures/default.js.map +1 -0
  13. package/es/molecule/course-sections/test/fixtures/loading.js +9 -0
  14. package/es/molecule/course-sections/test/fixtures/loading.js.map +1 -0
  15. package/es/molecule/course-sections/test/fixtures.js +15 -0
  16. package/es/molecule/course-sections/test/fixtures.js.map +1 -0
  17. package/es/molecule/draggable/index.js +1 -1
  18. package/es/molecule/draggable/index.js.map +1 -1
  19. package/es/molecule/draggable/style.css +1 -5
  20. package/es/molecule/draggable-list/index.js +56 -0
  21. package/es/molecule/draggable-list/index.js.map +1 -0
  22. package/es/molecule/draggable-list/test/fixtures/course-sections.js +20 -0
  23. package/es/molecule/draggable-list/test/fixtures/course-sections.js.map +1 -0
  24. package/es/molecule/draggable-list/test/fixtures/dashboard-sections.js +26 -0
  25. package/es/molecule/draggable-list/test/fixtures/dashboard-sections.js.map +1 -0
  26. package/es/molecule/draggable-list/test/fixtures.js +2 -0
  27. package/es/molecule/draggable-list/test/fixtures.js.map +1 -1
  28. package/es/molecule/{setup-sections → draggable-list}/test/on-drop.js +17 -17
  29. package/es/molecule/draggable-list/test/on-drop.js.map +1 -0
  30. package/es/molecule/questions/qcm/index.js +37 -25
  31. package/es/molecule/questions/qcm/index.js.map +1 -1
  32. package/es/molecule/questions/qcm/style.css +48 -14
  33. package/es/molecule/questions/qcm/test/fixtures/default.js +8 -0
  34. package/es/molecule/questions/qcm/test/fixtures/default.js.map +1 -1
  35. package/es/molecule/questions/qcm/test/qcm.js +103 -0
  36. package/es/molecule/questions/qcm/test/qcm.js.map +1 -0
  37. package/es/molecule/questions/qcm-graphic/index.js +35 -17
  38. package/es/molecule/questions/qcm-graphic/index.js.map +1 -1
  39. package/es/molecule/questions/qcm-graphic/style.css +64 -13
  40. package/es/molecule/questions/qcm-graphic/test/qcm-graphic.js +65 -0
  41. package/es/molecule/questions/qcm-graphic/test/qcm-graphic.js.map +1 -0
  42. package/es/molecule/setup-section/style.css +1 -0
  43. package/es/molecule/setup-sections/index.js +7 -33
  44. package/es/molecule/setup-sections/index.js.map +1 -1
  45. package/es/molecule/wizard-summary/test/fixtures/organize-courses.js +106 -0
  46. package/es/molecule/wizard-summary/test/fixtures/organize-courses.js.map +1 -0
  47. package/es/molecule/wizard-summary/test/fixtures.js +2 -0
  48. package/es/molecule/wizard-summary/test/fixtures.js.map +1 -1
  49. package/es/organism/wizard-contents/index.js +6 -0
  50. package/es/organism/wizard-contents/index.js.map +1 -1
  51. package/es/organism/wizard-contents/test/fixtures/playlist-organize-courses.js +45 -0
  52. package/es/organism/wizard-contents/test/fixtures/playlist-organize-courses.js.map +1 -0
  53. package/es/organism/wizard-contents/test/fixtures.js +2 -0
  54. package/es/organism/wizard-contents/test/fixtures.js.map +1 -1
  55. package/es/template/back-office/brand-update/test/fixtures/wizard-organize-courses-playlist.js +22 -0
  56. package/es/template/back-office/brand-update/test/fixtures/wizard-organize-courses-playlist.js.map +1 -0
  57. package/es/template/back-office/brand-update/test/fixtures.js +2 -0
  58. package/es/template/back-office/brand-update/test/fixtures.js.map +1 -1
  59. package/es/util/get-shadow-box-color-from-primary.js +4 -0
  60. package/es/util/get-shadow-box-color-from-primary.js.map +1 -0
  61. package/es/util/test/get-shadow-box-color-from-primary.js +33 -0
  62. package/es/util/test/get-shadow-box-color-from-primary.js.map +1 -0
  63. package/es/variables/colors.css +3 -0
  64. package/lib/molecule/course-section/index.js +5 -3
  65. package/lib/molecule/course-section/index.js.map +1 -1
  66. package/lib/molecule/course-section/style.css +2 -1
  67. package/lib/molecule/course-section/test/fixtures/chapter.js +2 -1
  68. package/lib/molecule/course-section/test/fixtures/chapter.js.map +1 -1
  69. package/lib/molecule/course-section/test/fixtures/course.js +2 -1
  70. package/lib/molecule/course-section/test/fixtures/course.js.map +1 -1
  71. package/lib/molecule/course-sections/index.js +54 -0
  72. package/lib/molecule/course-sections/index.js.map +1 -0
  73. package/lib/molecule/course-sections/style.css +3 -0
  74. package/lib/molecule/course-sections/test/fixtures/default.js +154 -0
  75. package/lib/molecule/course-sections/test/fixtures/default.js.map +1 -0
  76. package/lib/molecule/course-sections/test/fixtures/loading.js +14 -0
  77. package/lib/molecule/course-sections/test/fixtures/loading.js.map +1 -0
  78. package/lib/molecule/course-sections/test/fixtures.js +25 -0
  79. package/lib/molecule/course-sections/test/fixtures.js.map +1 -0
  80. package/lib/molecule/draggable/index.js +1 -1
  81. package/lib/molecule/draggable/index.js.map +1 -1
  82. package/lib/molecule/draggable/style.css +1 -5
  83. package/lib/molecule/draggable-list/index.js +73 -0
  84. package/lib/molecule/draggable-list/index.js.map +1 -0
  85. package/lib/molecule/draggable-list/test/fixtures/course-sections.js +29 -0
  86. package/lib/molecule/draggable-list/test/fixtures/course-sections.js.map +1 -0
  87. package/lib/molecule/draggable-list/test/fixtures/dashboard-sections.js +37 -0
  88. package/lib/molecule/draggable-list/test/fixtures/dashboard-sections.js.map +1 -0
  89. package/lib/molecule/draggable-list/test/fixtures.js +3 -0
  90. package/lib/molecule/draggable-list/test/fixtures.js.map +1 -1
  91. package/lib/molecule/{setup-sections → draggable-list}/test/on-drop.js +19 -19
  92. package/lib/molecule/draggable-list/test/on-drop.js.map +1 -0
  93. package/lib/molecule/questions/qcm/index.js +44 -23
  94. package/lib/molecule/questions/qcm/index.js.map +1 -1
  95. package/lib/molecule/questions/qcm/style.css +48 -14
  96. package/lib/molecule/questions/qcm/test/fixtures/default.js +8 -0
  97. package/lib/molecule/questions/qcm/test/fixtures/default.js.map +1 -1
  98. package/lib/molecule/questions/qcm/test/qcm.js +115 -0
  99. package/lib/molecule/questions/qcm/test/qcm.js.map +1 -0
  100. package/lib/molecule/questions/qcm-graphic/index.js +33 -15
  101. package/lib/molecule/questions/qcm-graphic/index.js.map +1 -1
  102. package/lib/molecule/questions/qcm-graphic/style.css +64 -13
  103. package/lib/molecule/questions/qcm-graphic/test/qcm-graphic.js +76 -0
  104. package/lib/molecule/questions/qcm-graphic/test/qcm-graphic.js.map +1 -0
  105. package/lib/molecule/setup-section/style.css +1 -0
  106. package/lib/molecule/setup-sections/index.js +7 -37
  107. package/lib/molecule/setup-sections/index.js.map +1 -1
  108. package/lib/molecule/wizard-summary/test/fixtures/organize-courses.js +111 -0
  109. package/lib/molecule/wizard-summary/test/fixtures/organize-courses.js.map +1 -0
  110. package/lib/molecule/wizard-summary/test/fixtures.js +3 -0
  111. package/lib/molecule/wizard-summary/test/fixtures.js.map +1 -1
  112. package/lib/organism/wizard-contents/index.js +7 -0
  113. package/lib/organism/wizard-contents/index.js.map +1 -1
  114. package/lib/organism/wizard-contents/test/fixtures/playlist-organize-courses.js +54 -0
  115. package/lib/organism/wizard-contents/test/fixtures/playlist-organize-courses.js.map +1 -0
  116. package/lib/organism/wizard-contents/test/fixtures.js +3 -0
  117. package/lib/organism/wizard-contents/test/fixtures.js.map +1 -1
  118. package/lib/template/back-office/brand-update/test/fixtures/wizard-organize-courses-playlist.js +32 -0
  119. package/lib/template/back-office/brand-update/test/fixtures/wizard-organize-courses-playlist.js.map +1 -0
  120. package/lib/template/back-office/brand-update/test/fixtures.js +3 -0
  121. package/lib/template/back-office/brand-update/test/fixtures.js.map +1 -1
  122. package/lib/util/get-shadow-box-color-from-primary.js +12 -0
  123. package/lib/util/get-shadow-box-color-from-primary.js.map +1 -0
  124. package/lib/util/test/get-shadow-box-color-from-primary.js +40 -0
  125. package/lib/util/test/get-shadow-box-color-from-primary.js.map +1 -0
  126. package/lib/variables/colors.css +3 -0
  127. package/package.json +2 -2
  128. package/es/molecule/search/test/fixtures.js +0 -15
  129. package/es/molecule/search/test/fixtures.js.map +0 -1
  130. package/es/molecule/setup-sections/test/on-drop.js.map +0 -1
  131. package/lib/molecule/search/test/fixtures.js +0 -25
  132. package/lib/molecule/search/test/fixtures.js.map +0 -1
  133. package/lib/molecule/setup-sections/test/on-drop.js.map +0 -1
@@ -6,34 +6,42 @@ var _default = {
6
6
  props: {
7
7
  answers: [{
8
8
  title: 'There is no need for a password for this, you only need your ID to connect',
9
+ 'aria-label': 'aria Answer',
9
10
  onClick: () => {},
10
11
  selected: false
11
12
  }, {
12
13
  title: 'Lorem ipsum',
14
+ 'aria-label': 'aria Answer',
13
15
  onClick: () => {},
14
16
  selected: false
15
17
  }, {
16
18
  title: 'Lorem',
19
+ 'aria-label': 'aria Answer',
17
20
  onClick: () => {},
18
21
  selected: true
19
22
  }, {
20
23
  title: 'You need to have a password',
24
+ 'aria-label': 'aria Answer',
21
25
  onClick: () => {},
22
26
  selected: false
23
27
  }, {
24
28
  title: 'Pouet',
29
+ 'aria-label': 'aria Answer',
25
30
  onClick: () => {},
26
31
  selected: true
27
32
  }, {
28
33
  title: 'Alios autem dicere aiunt multo etiam inhumanius (quem locum breviter paulo ante perstrinxi) praesidii adiumentique causa, non benevolentiae neque caritatis, amicitias esse expetendas; itaque, ut quisque minimum firmitatis haberet minimumque virium',
34
+ 'aria-label': 'aria Answer',
29
35
  onClick: () => {},
30
36
  selected: false
31
37
  }, {
32
38
  title: 'Lorem ipsum dolor',
39
+ 'aria-label': 'aria Answer',
33
40
  onClick: () => {},
34
41
  selected: false
35
42
  }, {
36
43
  title: 'all your base are belong to us',
44
+ 'aria-label': 'aria Answer',
37
45
  onClick: () => {},
38
46
  selected: false
39
47
  }]
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../src/molecule/questions/qcm/test/fixtures/default.js"],"names":["props","answers","title","onClick","selected"],"mappings":";;;;eAAe;AACbA,EAAAA,KAAK,EAAE;AACLC,IAAAA,OAAO,EAAE,CACP;AACEC,MAAAA,KAAK,EAAE,4EADT;AAEEC,MAAAA,OAAO,EAAE,MAAM,CAAE,CAFnB;AAGEC,MAAAA,QAAQ,EAAE;AAHZ,KADO,EAMP;AACEF,MAAAA,KAAK,EAAE,aADT;AAEEC,MAAAA,OAAO,EAAE,MAAM,CAAE,CAFnB;AAGEC,MAAAA,QAAQ,EAAE;AAHZ,KANO,EAWP;AACEF,MAAAA,KAAK,EAAE,OADT;AAEEC,MAAAA,OAAO,EAAE,MAAM,CAAE,CAFnB;AAGEC,MAAAA,QAAQ,EAAE;AAHZ,KAXO,EAgBP;AACEF,MAAAA,KAAK,EAAE,6BADT;AAEEC,MAAAA,OAAO,EAAE,MAAM,CAAE,CAFnB;AAGEC,MAAAA,QAAQ,EAAE;AAHZ,KAhBO,EAqBP;AACEF,MAAAA,KAAK,EAAE,OADT;AAEEC,MAAAA,OAAO,EAAE,MAAM,CAAE,CAFnB;AAGEC,MAAAA,QAAQ,EAAE;AAHZ,KArBO,EA0BP;AACEF,MAAAA,KAAK,EACH,yPAFJ;AAGEC,MAAAA,OAAO,EAAE,MAAM,CAAE,CAHnB;AAIEC,MAAAA,QAAQ,EAAE;AAJZ,KA1BO,EAgCP;AACEF,MAAAA,KAAK,EAAE,mBADT;AAEEC,MAAAA,OAAO,EAAE,MAAM,CAAE,CAFnB;AAGEC,MAAAA,QAAQ,EAAE;AAHZ,KAhCO,EAqCP;AACEF,MAAAA,KAAK,EAAE,gCADT;AAEEC,MAAAA,OAAO,EAAE,MAAM,CAAE,CAFnB;AAGEC,MAAAA,QAAQ,EAAE;AAHZ,KArCO;AADJ;AADM,C","sourcesContent":["export default {\n props: {\n answers: [\n {\n title: 'There is no need for a password for this, you only need your ID to connect',\n onClick: () => {},\n selected: false\n },\n {\n title: 'Lorem ipsum',\n onClick: () => {},\n selected: false\n },\n {\n title: 'Lorem',\n onClick: () => {},\n selected: true\n },\n {\n title: 'You need to have a password',\n onClick: () => {},\n selected: false\n },\n {\n title: 'Pouet',\n onClick: () => {},\n selected: true\n },\n {\n title:\n 'Alios autem dicere aiunt multo etiam inhumanius (quem locum breviter paulo ante perstrinxi) praesidii adiumentique causa, non benevolentiae neque caritatis, amicitias esse expetendas; itaque, ut quisque minimum firmitatis haberet minimumque virium',\n onClick: () => {},\n selected: false\n },\n {\n title: 'Lorem ipsum dolor',\n onClick: () => {},\n selected: false\n },\n {\n title: 'all your base are belong to us',\n onClick: () => {},\n selected: false\n }\n ]\n }\n};\n"],"file":"default.js"}
1
+ {"version":3,"sources":["../../../../../../src/molecule/questions/qcm/test/fixtures/default.js"],"names":["props","answers","title","onClick","selected"],"mappings":";;;;eAAe;AACbA,EAAAA,KAAK,EAAE;AACLC,IAAAA,OAAO,EAAE,CACP;AACEC,MAAAA,KAAK,EAAE,4EADT;AAEE,oBAAc,aAFhB;AAGEC,MAAAA,OAAO,EAAE,MAAM,CAAE,CAHnB;AAIEC,MAAAA,QAAQ,EAAE;AAJZ,KADO,EAOP;AACEF,MAAAA,KAAK,EAAE,aADT;AAEE,oBAAc,aAFhB;AAGEC,MAAAA,OAAO,EAAE,MAAM,CAAE,CAHnB;AAIEC,MAAAA,QAAQ,EAAE;AAJZ,KAPO,EAaP;AACEF,MAAAA,KAAK,EAAE,OADT;AAEE,oBAAc,aAFhB;AAGEC,MAAAA,OAAO,EAAE,MAAM,CAAE,CAHnB;AAIEC,MAAAA,QAAQ,EAAE;AAJZ,KAbO,EAmBP;AACEF,MAAAA,KAAK,EAAE,6BADT;AAEE,oBAAc,aAFhB;AAGEC,MAAAA,OAAO,EAAE,MAAM,CAAE,CAHnB;AAIEC,MAAAA,QAAQ,EAAE;AAJZ,KAnBO,EAyBP;AACEF,MAAAA,KAAK,EAAE,OADT;AAEE,oBAAc,aAFhB;AAGEC,MAAAA,OAAO,EAAE,MAAM,CAAE,CAHnB;AAIEC,MAAAA,QAAQ,EAAE;AAJZ,KAzBO,EA+BP;AACEF,MAAAA,KAAK,EACH,yPAFJ;AAGE,oBAAc,aAHhB;AAIEC,MAAAA,OAAO,EAAE,MAAM,CAAE,CAJnB;AAKEC,MAAAA,QAAQ,EAAE;AALZ,KA/BO,EAsCP;AACEF,MAAAA,KAAK,EAAE,mBADT;AAEE,oBAAc,aAFhB;AAGEC,MAAAA,OAAO,EAAE,MAAM,CAAE,CAHnB;AAIEC,MAAAA,QAAQ,EAAE;AAJZ,KAtCO,EA4CP;AACEF,MAAAA,KAAK,EAAE,gCADT;AAEE,oBAAc,aAFhB;AAGEC,MAAAA,OAAO,EAAE,MAAM,CAAE,CAHnB;AAIEC,MAAAA,QAAQ,EAAE;AAJZ,KA5CO;AADJ;AADM,C","sourcesContent":["export default {\n props: {\n answers: [\n {\n title: 'There is no need for a password for this, you only need your ID to connect',\n 'aria-label': 'aria Answer',\n onClick: () => {},\n selected: false\n },\n {\n title: 'Lorem ipsum',\n 'aria-label': 'aria Answer',\n onClick: () => {},\n selected: false\n },\n {\n title: 'Lorem',\n 'aria-label': 'aria Answer',\n onClick: () => {},\n selected: true\n },\n {\n title: 'You need to have a password',\n 'aria-label': 'aria Answer',\n onClick: () => {},\n selected: false\n },\n {\n title: 'Pouet',\n 'aria-label': 'aria Answer',\n onClick: () => {},\n selected: true\n },\n {\n title:\n 'Alios autem dicere aiunt multo etiam inhumanius (quem locum breviter paulo ante perstrinxi) praesidii adiumentique causa, non benevolentiae neque caritatis, amicitias esse expetendas; itaque, ut quisque minimum firmitatis haberet minimumque virium',\n 'aria-label': 'aria Answer',\n onClick: () => {},\n selected: false\n },\n {\n title: 'Lorem ipsum dolor',\n 'aria-label': 'aria Answer',\n onClick: () => {},\n selected: false\n },\n {\n title: 'all your base are belong to us',\n 'aria-label': 'aria Answer',\n onClick: () => {},\n selected: false\n }\n ]\n }\n};\n"],"file":"default.js"}
@@ -0,0 +1,115 @@
1
+ "use strict";
2
+
3
+ var _identity2 = _interopRequireDefault(require("lodash/fp/identity"));
4
+
5
+ var _browserEnv = _interopRequireDefault(require("browser-env"));
6
+
7
+ var _ava = _interopRequireDefault(require("ava"));
8
+
9
+ var _react = _interopRequireDefault(require("react"));
10
+
11
+ var _enzyme = require("enzyme");
12
+
13
+ var _enzymeAdapterReact = _interopRequireDefault(require("enzyme-adapter-react-16"));
14
+
15
+ var _ = _interopRequireDefault(require(".."));
16
+
17
+ var _default = _interopRequireDefault(require("./fixtures/default"));
18
+
19
+ var _noSelected = _interopRequireDefault(require("./fixtures/no-selected"));
20
+
21
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
22
+
23
+ function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
24
+
25
+ (0, _browserEnv.default)();
26
+ (0, _enzyme.configure)({
27
+ adapter: new _enzymeAdapterReact.default()
28
+ });
29
+ const translate = _identity2.default;
30
+ (0, _ava.default)('onClick should be reachable, should match given aria-label', t => {
31
+ let answerWasClicked = false;
32
+ _default.default.props.answers[1] = _extends(_extends({}, _default.default.props.answers[1]), {}, {
33
+ onClick: () => {
34
+ answerWasClicked = true;
35
+ }
36
+ });
37
+ const wrapper = (0, _enzyme.shallow)( /*#__PURE__*/_react.default.createElement(_.default, _default.default.props), {
38
+ context: {
39
+ translate
40
+ }
41
+ });
42
+ const answers = wrapper.find('[data-name="answer"]');
43
+ t.true(answers.at(1).exists());
44
+ t.is(answers.at(1).props()['aria-label'], 'aria Answer');
45
+ answers.at(1).simulate('click', {});
46
+ t.true(answerWasClicked);
47
+ t.pass();
48
+ });
49
+ (0, _ava.default)("should set: selected's background to Primary, unselected's no background", t => {
50
+ const wrapper = (0, _enzyme.mount)( /*#__PURE__*/_react.default.createElement(_.default, _default.default.props));
51
+ const answers = wrapper.find('[data-name="answer"]');
52
+ const unselectedAnswer = answers.at(1);
53
+ const expectedPrimaryColor = '#00B0FF'; // ---- unselected ----
54
+ // should not have styles on the wrapper
55
+
56
+ t.true(unselectedAnswer.exists());
57
+ t.deepEqual(unselectedAnswer.props().style, {}); // should not have any styles (color should be picked from the css for unselected)
58
+
59
+ const unselectedLabel = unselectedAnswer.children().at(1);
60
+ t.true(unselectedLabel.exists());
61
+ t.falsy(unselectedLabel.props().style); // check dangerouslySetInnerHTML
62
+
63
+ t.deepEqual(unselectedLabel.props().dangerouslySetInnerHTML, {
64
+ __html: 'Lorem ipsum'
65
+ });
66
+ t.is(unselectedLabel.text(), 'Lorem ipsum'); // should have a backgroundColor of '#F4F4F5' /* cm_grey_75 */
67
+
68
+ const unselectedBackground = unselectedAnswer.children().at(0);
69
+ t.true(unselectedBackground.exists());
70
+ t.deepEqual(unselectedBackground.props().style, {
71
+ backgroundColor: '#F4F4F5'
72
+ }); // selected
73
+ // should have box-shadow color based on primary
74
+
75
+ const selectedAnswer = answers.at(2);
76
+ t.true(selectedAnswer.exists());
77
+ t.deepEqual(selectedAnswer.props().style, {
78
+ boxShadow: '0 4px 16px rgba(0, 122, 179, 0.25)'
79
+ }); // should not have any prop in label style
80
+
81
+ const selectedLabel = selectedAnswer.children().at(1);
82
+ t.true(selectedLabel.exists());
83
+ t.falsy(selectedLabel.props().style); // check dangerouslySetInnerHTML
84
+
85
+ t.deepEqual(selectedLabel.props().dangerouslySetInnerHTML, {
86
+ __html: 'Lorem'
87
+ });
88
+ t.is(selectedLabel.text(), 'Lorem'); // should have backgroundColor as expectedPrimaryColor (primary to be overlayed by the css)
89
+
90
+ const selectedBackground = selectedAnswer.children().at(0);
91
+ t.true(selectedBackground.exists());
92
+ t.deepEqual(selectedBackground.props().style, {
93
+ backgroundColor: expectedPrimaryColor
94
+ });
95
+ t.pass();
96
+ });
97
+ (0, _ava.default)('should set className to longAnswer if the answer is the longest of the set', t => {
98
+ const wrapper = (0, _enzyme.mount)( /*#__PURE__*/_react.default.createElement(_.default, _default.default.props));
99
+ const answer = wrapper.find('[data-name="answer"]'); // regular answer
100
+
101
+ t.true(answer.at(4).exists());
102
+ t.is(answer.at(4).props().className, 'qcm__answer label__innerHTML qcm__selectedAnswer'); // long answer
103
+
104
+ t.true(answer.at(5).exists());
105
+ t.is(answer.at(5).props().className, 'qcm__longestAnswer qcm__answer qcm__answer label__innerHTML qcm__unselectedAnswer');
106
+ t.pass();
107
+ });
108
+ (0, _ava.default)('should use title as default aria-label if no aria-label is provided', t => {
109
+ const wrapper = (0, _enzyme.mount)( /*#__PURE__*/_react.default.createElement(_.default, _noSelected.default.props));
110
+ const answers = wrapper.find('[data-name="answer"]');
111
+ t.is(answers.at(6).text(), 'Lorem ipsum dolor');
112
+ t.is(answers.at(6).props()['aria-label'], 'Lorem ipsum dolor');
113
+ t.pass();
114
+ });
115
+ //# sourceMappingURL=qcm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../src/molecule/questions/qcm/test/qcm.js"],"names":["adapter","Adapter","translate","t","answerWasClicked","defaultFixture","props","answers","onClick","wrapper","context","find","true","at","exists","is","simulate","pass","unselectedAnswer","expectedPrimaryColor","deepEqual","style","unselectedLabel","children","falsy","dangerouslySetInnerHTML","__html","text","unselectedBackground","backgroundColor","selectedAnswer","boxShadow","selectedLabel","selectedBackground","answer","className","noAriaLabelFixture"],"mappings":"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","sourcesContent":["import browserEnv from 'browser-env';\nimport test from 'ava';\nimport React from 'react';\nimport {shallow, mount, configure} from 'enzyme';\nimport {identity} from 'lodash/fp';\nimport Adapter from 'enzyme-adapter-react-16';\nimport Qcm from '..';\nimport defaultFixture from './fixtures/default';\nimport noAriaLabelFixture from './fixtures/no-selected';\n\nbrowserEnv();\nconfigure({adapter: new Adapter()});\nconst translate = identity;\n\ntest('onClick should be reachable, should match given aria-label', t => {\n let answerWasClicked = false;\n defaultFixture.props.answers[1] = {\n ...defaultFixture.props.answers[1],\n onClick: () => {\n answerWasClicked = true;\n }\n };\n const wrapper = shallow(<Qcm {...defaultFixture.props} />, {\n context: {translate}\n });\n const answers = wrapper.find('[data-name=\"answer\"]');\n t.true(answers.at(1).exists());\n t.is(answers.at(1).props()['aria-label'], 'aria Answer');\n answers.at(1).simulate('click', {});\n t.true(answerWasClicked);\n t.pass();\n});\n\ntest(\"should set: selected's background to Primary, unselected's no background\", t => {\n const wrapper = mount(<Qcm {...defaultFixture.props} />);\n const answers = wrapper.find('[data-name=\"answer\"]');\n const unselectedAnswer = answers.at(1);\n const expectedPrimaryColor = '#00B0FF';\n // ---- unselected ----\n // should not have styles on the wrapper\n t.true(unselectedAnswer.exists());\n t.deepEqual(unselectedAnswer.props().style, {});\n\n // should not have any styles (color should be picked from the css for unselected)\n const unselectedLabel = unselectedAnswer.children().at(1);\n t.true(unselectedLabel.exists());\n t.falsy(unselectedLabel.props().style);\n\n // check dangerouslySetInnerHTML\n t.deepEqual(unselectedLabel.props().dangerouslySetInnerHTML, {\n __html: 'Lorem ipsum'\n });\n t.is(unselectedLabel.text(), 'Lorem ipsum');\n\n // should have a backgroundColor of '#F4F4F5' /* cm_grey_75 */\n const unselectedBackground = unselectedAnswer.children().at(0);\n t.true(unselectedBackground.exists());\n t.deepEqual(unselectedBackground.props().style, {\n backgroundColor: '#F4F4F5'\n });\n\n // selected\n // should have box-shadow color based on primary\n const selectedAnswer = answers.at(2);\n t.true(selectedAnswer.exists());\n t.deepEqual(selectedAnswer.props().style, {\n boxShadow: '0 4px 16px rgba(0, 122, 179, 0.25)'\n });\n\n // should not have any prop in label style\n const selectedLabel = selectedAnswer.children().at(1);\n t.true(selectedLabel.exists());\n t.falsy(selectedLabel.props().style);\n\n // check dangerouslySetInnerHTML\n t.deepEqual(selectedLabel.props().dangerouslySetInnerHTML, {\n __html: 'Lorem'\n });\n\n t.is(selectedLabel.text(), 'Lorem');\n\n // should have backgroundColor as expectedPrimaryColor (primary to be overlayed by the css)\n const selectedBackground = selectedAnswer.children().at(0);\n t.true(selectedBackground.exists());\n t.deepEqual(selectedBackground.props().style, {\n backgroundColor: expectedPrimaryColor\n });\n\n t.pass();\n});\n\ntest('should set className to longAnswer if the answer is the longest of the set', t => {\n const wrapper = mount(<Qcm {...defaultFixture.props} />);\n const answer = wrapper.find('[data-name=\"answer\"]');\n // regular answer\n t.true(answer.at(4).exists());\n t.is(answer.at(4).props().className, 'qcm__answer label__innerHTML qcm__selectedAnswer');\n\n // long answer\n t.true(answer.at(5).exists());\n t.is(\n answer.at(5).props().className,\n 'qcm__longestAnswer qcm__answer qcm__answer label__innerHTML qcm__unselectedAnswer'\n );\n t.pass();\n});\n\ntest('should use title as default aria-label if no aria-label is provided', t => {\n const wrapper = mount(<Qcm {...noAriaLabelFixture.props} />);\n const answers = wrapper.find('[data-name=\"answer\"]');\n t.is(answers.at(6).text(), 'Lorem ipsum dolor');\n t.is(answers.at(6).props()['aria-label'], 'Lorem ipsum dolor');\n t.pass();\n});\n"],"file":"qcm.js"}
@@ -15,48 +15,65 @@ var _provider = _interopRequireDefault(require("../../../atom/provider"));
15
15
 
16
16
  var _style = require("../../../atom/label/style.css");
17
17
 
18
+ var _getShadowBoxColorFromPrimary = require("../../../util/get-shadow-box-color-from-primary");
19
+
18
20
  var _style2 = _interopRequireDefault(require("./style.css"));
19
21
 
20
22
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
21
23
 
24
+ function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
25
+
22
26
  const QCMImage = (props, context) => {
23
27
  const {
24
28
  answers
25
29
  } = props;
30
+ const {
31
+ skin
32
+ } = context;
33
+ const primarySkinColor = (0, _getOr2.default)('#00B0FF', 'common.primary', skin);
26
34
  const answersViews = answers.map((answer, key) => {
27
35
  const {
28
36
  onClick,
29
37
  title,
30
38
  selected,
31
- image
39
+ image,
40
+ ariaLabel
32
41
  } = answer;
33
- const {
34
- skin
35
- } = context;
36
- const primarySkinColor = (0, _getOr2.default)('#00B0FF', 'common.primary', skin);
37
- const selectedStyle = selected ? {
38
- backgroundColor: primarySkinColor,
39
- borderColor: primarySkinColor
40
- } : null;
41
42
  return /*#__PURE__*/_react.default.createElement("div", {
42
- className: selected ? _style2.default.selected : _style2.default.answer,
43
43
  onClick: onClick,
44
44
  "data-selected": selected,
45
- style: selectedStyle,
45
+ "data-name": "answerGraphic",
46
+ style: _extends({}, selected && {
47
+ boxShadow: `0 4px 16px ${(0, _getShadowBoxColorFromPrimary.getShadowBoxColorFromPrimary)(primarySkinColor)}`
48
+ }),
49
+ className: selected ? _style2.default.selected : _style2.default.answer,
46
50
  key: key
51
+ }, /*#__PURE__*/_react.default.createElement("div", {
52
+ "data-name": "answerBackground",
53
+ style: {
54
+ backgroundColor: selected ? primarySkinColor : '#F4F4F5'
55
+ },
56
+ className: _style2.default.background
57
+ }), /*#__PURE__*/_react.default.createElement("div", {
58
+ "data-name": "answerContent",
59
+ className: _style2.default.content
47
60
  }, /*#__PURE__*/_react.default.createElement("div", {
48
61
  className: _style2.default.imageWrapper,
49
- "data-name": "answerGraphic",
62
+ "data-name": "answerImage",
63
+ "aria-label": ariaLabel || title,
50
64
  style: {
51
65
  backgroundImage: `url(${image})`
52
66
  }
53
67
  }), /*#__PURE__*/_react.default.createElement("div", {
54
- className: (0, _classnames.default)(_style2.default.titleWrapper, _style.innerHTML) // eslint-disable-next-line react/no-danger
68
+ "data-name": "answerText",
69
+ className: _style2.default.titleWrapper
70
+ }, /*#__PURE__*/_react.default.createElement("div", {
71
+ className: (0, _classnames.default)(_style2.default.title, _style.innerHTML) // eslint-disable-next-line react/no-danger
55
72
  ,
56
73
  dangerouslySetInnerHTML: {
57
74
  __html: title
58
75
  }
59
- }));
76
+ }))));
60
77
  });
61
78
  return /*#__PURE__*/_react.default.createElement("div", {
62
79
  "data-name": "qcm-graphic-wrapper",
@@ -72,7 +89,8 @@ QCMImage.propTypes = process.env.NODE_ENV !== "production" ? {
72
89
  title: _propTypes.default.string,
73
90
  selected: _propTypes.default.bool,
74
91
  onClick: _propTypes.default.func,
75
- image: _propTypes.default.string
92
+ image: _propTypes.default.string,
93
+ ariaLabel: _propTypes.default.string
76
94
  }))
77
95
  } : {};
78
96
  var _default = QCMImage;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/molecule/questions/qcm-graphic/index.js"],"names":["QCMImage","props","context","answers","answersViews","map","answer","key","onClick","title","selected","image","skin","primarySkinColor","selectedStyle","backgroundColor","borderColor","style","imageWrapper","backgroundImage","titleWrapper","innerHTML","__html","wrapper","contextTypes","Provider","childContextTypes","propTypes","PropTypes","arrayOf","shape","string","bool","func"],"mappings":";;;;;;;AAAA;;AACA;;AAEA;;AACA;;AACA;;AACA;;;;AAEA,MAAMA,QAAQ,GAAG,CAACC,KAAD,EAAQC,OAAR,KAAoB;AACnC,QAAM;AAACC,IAAAA;AAAD,MAAYF,KAAlB;AAEA,QAAMG,YAAY,GAAGD,OAAO,CAACE,GAAR,CAAY,CAACC,MAAD,EAASC,GAAT,KAAiB;AAChD,UAAM;AAACC,MAAAA,OAAD;AAAUC,MAAAA,KAAV;AAAiBC,MAAAA,QAAjB;AAA2BC,MAAAA;AAA3B,QAAoCL,MAA1C;AACA,UAAM;AAACM,MAAAA;AAAD,QAASV,OAAf;AAEA,UAAMW,gBAAgB,GAAG,qBAAM,SAAN,EAAiB,gBAAjB,EAAmCD,IAAnC,CAAzB;AACA,UAAME,aAAa,GAAGJ,QAAQ,GAC1B;AAACK,MAAAA,eAAe,EAAEF,gBAAlB;AAAoCG,MAAAA,WAAW,EAAEH;AAAjD,KAD0B,GAE1B,IAFJ;AAGA,wBACE;AACE,MAAA,SAAS,EAAEH,QAAQ,GAAGO,gBAAMP,QAAT,GAAoBO,gBAAMX,MAD/C;AAEE,MAAA,OAAO,EAAEE,OAFX;AAGE,uBAAeE,QAHjB;AAIE,MAAA,KAAK,EAAEI,aAJT;AAKE,MAAA,GAAG,EAAEP;AALP,oBAOE;AACE,MAAA,SAAS,EAAEU,gBAAMC,YADnB;AAEE,mBAAU,eAFZ;AAGE,MAAA,KAAK,EAAE;AACLC,QAAAA,eAAe,EAAG,OAAMR,KAAM;AADzB;AAHT,MAPF,eAcE;AACE,MAAA,SAAS,EAAE,yBAAWM,gBAAMG,YAAjB,EAA+BC,gBAA/B,CADb,CAEE;AAFF;AAGE,MAAA,uBAAuB,EAAE;AAACC,QAAAA,MAAM,EAAEb;AAAT;AAH3B,MAdF,CADF;AAsBD,GA9BoB,CAArB;AAgCA,sBACE;AAAK,iBAAU,qBAAf;AAAqC,IAAA,SAAS,EAAEQ,gBAAMM;AAAtD,KACGnB,YADH,CADF;AAKD,CAxCD;;AA0CAJ,QAAQ,CAACwB,YAAT,GAAwB;AACtBZ,EAAAA,IAAI,EAAEa,kBAASC,iBAAT,CAA2Bd;AADX,CAAxB;AAIAZ,QAAQ,CAAC2B,SAAT,2CAAqB;AACnBxB,EAAAA,OAAO,EAAEyB,mBAAUC,OAAV,CACPD,mBAAUE,KAAV,CAAgB;AACdrB,IAAAA,KAAK,EAAEmB,mBAAUG,MADH;AAEdrB,IAAAA,QAAQ,EAAEkB,mBAAUI,IAFN;AAGdxB,IAAAA,OAAO,EAAEoB,mBAAUK,IAHL;AAIdtB,IAAAA,KAAK,EAAEiB,mBAAUG;AAJH,GAAhB,CADO;AADU,CAArB;eAWe/B,Q","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport {getOr} from 'lodash/fp';\nimport classnames from 'classnames';\nimport Provider from '../../../atom/provider';\nimport {innerHTML} from '../../../atom/label/style.css';\nimport style from './style.css';\n\nconst QCMImage = (props, context) => {\n const {answers} = props;\n\n const answersViews = answers.map((answer, key) => {\n const {onClick, title, selected, image} = answer;\n const {skin} = context;\n\n const primarySkinColor = getOr('#00B0FF', 'common.primary', skin);\n const selectedStyle = selected\n ? {backgroundColor: primarySkinColor, borderColor: primarySkinColor}\n : null;\n return (\n <div\n className={selected ? style.selected : style.answer}\n onClick={onClick}\n data-selected={selected}\n style={selectedStyle}\n key={key}\n >\n <div\n className={style.imageWrapper}\n data-name=\"answerGraphic\"\n style={{\n backgroundImage: `url(${image})`\n }}\n />\n <div\n className={classnames(style.titleWrapper, innerHTML)}\n // eslint-disable-next-line react/no-danger\n dangerouslySetInnerHTML={{__html: title}}\n />\n </div>\n );\n });\n\n return (\n <div data-name=\"qcm-graphic-wrapper\" className={style.wrapper}>\n {answersViews}\n </div>\n );\n};\n\nQCMImage.contextTypes = {\n skin: Provider.childContextTypes.skin\n};\n\nQCMImage.propTypes = {\n answers: PropTypes.arrayOf(\n PropTypes.shape({\n title: PropTypes.string,\n selected: PropTypes.bool,\n onClick: PropTypes.func,\n image: PropTypes.string\n })\n )\n};\n\nexport default QCMImage;\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../../../../src/molecule/questions/qcm-graphic/index.js"],"names":["QCMImage","props","context","answers","skin","primarySkinColor","answersViews","map","answer","key","onClick","title","selected","image","ariaLabel","boxShadow","style","backgroundColor","background","content","imageWrapper","backgroundImage","titleWrapper","innerHTML","__html","wrapper","contextTypes","Provider","childContextTypes","propTypes","PropTypes","arrayOf","shape","string","bool","func"],"mappings":";;;;;;;AAAA;;AACA;;AAEA;;AACA;;AACA;;AACA;;AACA;;;;;;AAEA,MAAMA,QAAQ,GAAG,CAACC,KAAD,EAAQC,OAAR,KAAoB;AACnC,QAAM;AAACC,IAAAA;AAAD,MAAYF,KAAlB;AACA,QAAM;AAACG,IAAAA;AAAD,MAASF,OAAf;AACA,QAAMG,gBAAgB,GAAG,qBAAM,SAAN,EAAiB,gBAAjB,EAAmCD,IAAnC,CAAzB;AAEA,QAAME,YAAY,GAAGH,OAAO,CAACI,GAAR,CAAY,CAACC,MAAD,EAASC,GAAT,KAAiB;AAChD,UAAM;AAACC,MAAAA,OAAD;AAAUC,MAAAA,KAAV;AAAiBC,MAAAA,QAAjB;AAA2BC,MAAAA,KAA3B;AAAkCC,MAAAA;AAAlC,QAA+CN,MAArD;AAEA,wBACE;AACE,MAAA,OAAO,EAAEE,OADX;AAEE,uBAAeE,QAFjB;AAGE,mBAAU,eAHZ;AAIE,MAAA,KAAK,eACCA,QAAQ,IAAI;AACdG,QAAAA,SAAS,EAAG,cAAa,gEAA6BV,gBAA7B,CAA+C;AAD1D,OADb,CAJP;AASE,MAAA,SAAS,EAAEO,QAAQ,GAAGI,gBAAMJ,QAAT,GAAoBI,gBAAMR,MAT/C;AAUE,MAAA,GAAG,EAAEC;AAVP,oBAYE;AACE,mBAAU,kBADZ;AAEE,MAAA,KAAK,EAAE;AACLQ,QAAAA,eAAe,EAAEL,QAAQ,GAAGP,gBAAH,GAAsB;AAD1C,OAFT;AAKE,MAAA,SAAS,EAAEW,gBAAME;AALnB,MAZF,eAmBE;AAAK,mBAAU,eAAf;AAA+B,MAAA,SAAS,EAAEF,gBAAMG;AAAhD,oBACE;AACE,MAAA,SAAS,EAAEH,gBAAMI,YADnB;AAEE,mBAAU,aAFZ;AAGE,oBAAYN,SAAS,IAAIH,KAH3B;AAIE,MAAA,KAAK,EAAE;AACLU,QAAAA,eAAe,EAAG,OAAMR,KAAM;AADzB;AAJT,MADF,eASE;AAAK,mBAAU,YAAf;AAA4B,MAAA,SAAS,EAAEG,gBAAMM;AAA7C,oBACE;AACE,MAAA,SAAS,EAAE,yBAAWN,gBAAML,KAAjB,EAAwBY,gBAAxB,CADb,CAEE;AAFF;AAGE,MAAA,uBAAuB,EAAE;AAACC,QAAAA,MAAM,EAAEb;AAAT;AAH3B,MADF,CATF,CAnBF,CADF;AAuCD,GA1CoB,CAArB;AA4CA,sBACE;AAAK,iBAAU,qBAAf;AAAqC,IAAA,SAAS,EAAEK,gBAAMS;AAAtD,KACGnB,YADH,CADF;AAKD,CAtDD;;AAwDAN,QAAQ,CAAC0B,YAAT,GAAwB;AACtBtB,EAAAA,IAAI,EAAEuB,kBAASC,iBAAT,CAA2BxB;AADX,CAAxB;AAIAJ,QAAQ,CAAC6B,SAAT,2CAAqB;AACnB1B,EAAAA,OAAO,EAAE2B,mBAAUC,OAAV,CACPD,mBAAUE,KAAV,CAAgB;AACdrB,IAAAA,KAAK,EAAEmB,mBAAUG,MADH;AAEdrB,IAAAA,QAAQ,EAAEkB,mBAAUI,IAFN;AAGdxB,IAAAA,OAAO,EAAEoB,mBAAUK,IAHL;AAIdtB,IAAAA,KAAK,EAAEiB,mBAAUG,MAJH;AAKdnB,IAAAA,SAAS,EAAEgB,mBAAUG;AALP,GAAhB,CADO;AADU,CAArB;eAYejC,Q","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport {getOr} from 'lodash/fp';\nimport classnames from 'classnames';\nimport Provider from '../../../atom/provider';\nimport {innerHTML} from '../../../atom/label/style.css';\nimport {getShadowBoxColorFromPrimary} from '../../../util/get-shadow-box-color-from-primary';\nimport style from './style.css';\n\nconst QCMImage = (props, context) => {\n const {answers} = props;\n const {skin} = context;\n const primarySkinColor = getOr('#00B0FF', 'common.primary', skin);\n\n const answersViews = answers.map((answer, key) => {\n const {onClick, title, selected, image, ariaLabel} = answer;\n\n return (\n <div\n onClick={onClick}\n data-selected={selected}\n data-name=\"answerGraphic\"\n style={{\n ...(selected && {\n boxShadow: `0 4px 16px ${getShadowBoxColorFromPrimary(primarySkinColor)}`\n })\n }}\n className={selected ? style.selected : style.answer}\n key={key}\n >\n <div\n data-name=\"answerBackground\"\n style={{\n backgroundColor: selected ? primarySkinColor : '#F4F4F5'\n }}\n className={style.background}\n />\n <div data-name=\"answerContent\" className={style.content}>\n <div\n className={style.imageWrapper}\n data-name=\"answerImage\"\n aria-label={ariaLabel || title}\n style={{\n backgroundImage: `url(${image})`\n }}\n />\n <div data-name=\"answerText\" className={style.titleWrapper}>\n <div\n className={classnames(style.title, innerHTML)}\n // eslint-disable-next-line react/no-danger\n dangerouslySetInnerHTML={{__html: title}}\n />\n </div>\n </div>\n </div>\n );\n });\n\n return (\n <div data-name=\"qcm-graphic-wrapper\" className={style.wrapper}>\n {answersViews}\n </div>\n );\n};\n\nQCMImage.contextTypes = {\n skin: Provider.childContextTypes.skin\n};\n\nQCMImage.propTypes = {\n answers: PropTypes.arrayOf(\n PropTypes.shape({\n title: PropTypes.string,\n selected: PropTypes.bool,\n onClick: PropTypes.func,\n image: PropTypes.string,\n ariaLabel: PropTypes.string\n })\n )\n};\n\nexport default QCMImage;\n"],"file":"index.js"}
@@ -2,9 +2,10 @@
2
2
  @value mobile from breakpoints;
3
3
  @value colors: "../../../variables/colors.css";
4
4
  @value white from colors;
5
- @value xtraLightGrey from colors;
6
- @value light from colors;
7
5
  @value black from colors;
6
+ @value cm_grey_75 from colors;
7
+ @value cm_primary_blue from colors;
8
+ @value cm_blue_900 from colors;
8
9
 
9
10
  .wrapper {
10
11
  display: flex;
@@ -15,16 +16,34 @@
15
16
  }
16
17
 
17
18
  .answer {
18
- color: black;
19
+ position: relative;
20
+ color: cm_blue_900;
19
21
  background-color: white;
20
- border: 1px solid color(black lightness(85%));
21
- border-radius: 3px;
22
22
  box-sizing: border-box;
23
23
  cursor: pointer;
24
24
  padding: 8px;
25
25
  width: 200px;
26
26
  min-height: 245px;
27
27
  margin: 0 4px 8px;
28
+ box-shadow: 0px 4px 16px rgba(0, 0, 0, 0.12);
29
+ border-radius: 16px;
30
+ transition: background-color 0.25s linear;
31
+ }
32
+
33
+ .background {
34
+ top: 0;
35
+ left: 0;
36
+ position: absolute;
37
+ border-radius: 16px;
38
+ height: 100%;
39
+ width: 100%;
40
+ transition: opacity 0.25s linear, background-color 0.25s linear;
41
+ }
42
+
43
+ .content {
44
+ height: 100%;
45
+ width: 100%;
46
+ position: relative;
28
47
  }
29
48
 
30
49
  .imageWrapper {
@@ -33,12 +52,21 @@
33
52
  align-items: center;
34
53
  height: 110px;
35
54
  margin-bottom: 16px;
36
- background-size: contain;
55
+ background-size: cover;
37
56
  background-repeat: no-repeat;
38
57
  background-position: center center;
58
+ border-radius: 12px;
39
59
  }
40
60
 
41
61
  .titleWrapper {
62
+ display: flex;
63
+ height: calc(100% - 126px);
64
+ width: 100%;
65
+ align-items: center;
66
+ justify-content: center;
67
+ }
68
+
69
+ .title {
42
70
  font-family: 'Gilroy';
43
71
  font-size: 17px;
44
72
  line-height: 20px;
@@ -49,7 +77,16 @@
49
77
  }
50
78
 
51
79
  .answer:hover {
52
- background-color: xtraLightGrey;
80
+ background: cm_grey_75;
81
+ box-shadow: 0px 4px 16px rgba(0, 0, 0, 0.12);
82
+ }
83
+
84
+ .answer .background{
85
+ opacity: 0;
86
+ }
87
+
88
+ .answer:hover .background{
89
+ opacity: 1;
53
90
  }
54
91
 
55
92
  .selected {
@@ -57,10 +94,23 @@
57
94
  color: white;
58
95
  }
59
96
 
97
+ .selected .background{
98
+ opacity: 1;
99
+ }
100
+
101
+ .selected:hover .background{
102
+ opacity: 0.8;
103
+ }
104
+
105
+ .selected.answer:hover {
106
+ background-color: black;
107
+ }
108
+
60
109
  @media mobile {
61
110
  .wrapper {
62
111
  flex-direction: column;
63
- align-items: stretch;
112
+ display: flex;
113
+ align-items: center;
64
114
  width: 100%;
65
115
  padding-bottom: 0;
66
116
  }
@@ -69,17 +119,18 @@
69
119
  display: flex;
70
120
  align-items: center;
71
121
  flex-flow: row nowrap;
72
- width: 100%;
122
+ width: calc(100% - 45px);
73
123
  min-height: 82px;
74
124
  height: inherit;
75
125
  margin: 0 0 8px;
76
126
  overflow: hidden;
77
127
  }
78
128
 
79
- .answer:hover {
80
- background-color: white;
129
+ .content {
130
+ display: flex;
131
+ align-items: center;
81
132
  }
82
-
133
+
83
134
  .answer:last-child {
84
135
  margin-bottom: 0;
85
136
  }
@@ -96,7 +147,7 @@
96
147
  white-space: wrap;
97
148
  overflow: hidden;
98
149
  padding: 0;
99
- text-align: left;
150
+ justify-content: left;
100
151
  font-size: 15px;
101
152
  }
102
153
  }
@@ -0,0 +1,76 @@
1
+ "use strict";
2
+
3
+ var _identity2 = _interopRequireDefault(require("lodash/fp/identity"));
4
+
5
+ var _browserEnv = _interopRequireDefault(require("browser-env"));
6
+
7
+ var _ava = _interopRequireDefault(require("ava"));
8
+
9
+ var _react = _interopRequireDefault(require("react"));
10
+
11
+ var _enzyme = require("enzyme");
12
+
13
+ var _enzymeAdapterReact = _interopRequireDefault(require("enzyme-adapter-react-16"));
14
+
15
+ var _ = _interopRequireDefault(require(".."));
16
+
17
+ var _default = _interopRequireDefault(require("./fixtures/default"));
18
+
19
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
20
+
21
+ function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
22
+
23
+ (0, _browserEnv.default)();
24
+ (0, _enzyme.configure)({
25
+ adapter: new _enzymeAdapterReact.default()
26
+ });
27
+ const translate = _identity2.default;
28
+ (0, _ava.default)('onClick should be reachable, should match given aria-label', t => {
29
+ let answerWasClicked = false;
30
+ _default.default.props.answers[1] = _extends(_extends({}, _default.default.props.answers[1]), {}, {
31
+ onClick: () => {
32
+ answerWasClicked = true;
33
+ }
34
+ });
35
+ const wrapper = (0, _enzyme.shallow)( /*#__PURE__*/_react.default.createElement(_.default, _default.default.props), {
36
+ context: {
37
+ translate
38
+ }
39
+ });
40
+ const answersImages = wrapper.find('[data-name="answerImage"]');
41
+ t.true(answersImages.at(1).exists());
42
+ t.is(answersImages.at(1).props()['aria-label'], 'Lorem ipsum');
43
+ const answers = wrapper.find('[data-name="answerGraphic"]');
44
+ answers.at(1).simulate('click');
45
+ t.true(answerWasClicked);
46
+ t.pass();
47
+ });
48
+ (0, _ava.default)("should set: selected's background to Primary, unselected's no background", t => {
49
+ const wrapper = (0, _enzyme.shallow)( /*#__PURE__*/_react.default.createElement(_.default, _default.default.props), {
50
+ context: {
51
+ translate
52
+ }
53
+ });
54
+ const answers = wrapper.find('[data-name="answerGraphic"]');
55
+ const firstAnswer = answers.at(0);
56
+ t.true(firstAnswer.exists());
57
+ t.deepEqual(firstAnswer.props().style, {});
58
+ const unselectedBackgroundAnswer = firstAnswer.children().at(0);
59
+ t.true(unselectedBackgroundAnswer.exists());
60
+ t.deepEqual(unselectedBackgroundAnswer.props().style, {
61
+ backgroundColor: '#F4F4F5'
62
+ });
63
+ const firstAnswerText = firstAnswer.children().at(1).children().at(1).children().at(0);
64
+ t.true(firstAnswerText.exists());
65
+ const thirdAnswer = answers.at(2);
66
+ t.true(thirdAnswer.exists());
67
+ t.deepEqual(thirdAnswer.props().style, {
68
+ boxShadow: '0 4px 16px rgba(0, 122, 179, 0.25)'
69
+ });
70
+ const selectedBackgroundAnswer = thirdAnswer.children().at(0);
71
+ t.true(selectedBackgroundAnswer.exists());
72
+ t.deepEqual(selectedBackgroundAnswer.props().style, {
73
+ backgroundColor: '#00B0FF'
74
+ });
75
+ });
76
+ //# sourceMappingURL=qcm-graphic.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../src/molecule/questions/qcm-graphic/test/qcm-graphic.js"],"names":["adapter","Adapter","translate","t","answerWasClicked","defaultFixture","props","answers","onClick","wrapper","context","answersImages","find","true","at","exists","is","simulate","pass","firstAnswer","deepEqual","style","unselectedBackgroundAnswer","children","backgroundColor","firstAnswerText","thirdAnswer","boxShadow","selectedBackgroundAnswer"],"mappings":"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","sourcesContent":["import browserEnv from 'browser-env';\nimport test from 'ava';\nimport React from 'react';\nimport {shallow, configure} from 'enzyme';\nimport {identity} from 'lodash/fp';\nimport Adapter from 'enzyme-adapter-react-16';\nimport QCMImage from '..';\nimport defaultFixture from './fixtures/default';\n\nbrowserEnv();\nconfigure({adapter: new Adapter()});\nconst translate = identity;\n\ntest('onClick should be reachable, should match given aria-label', t => {\n let answerWasClicked = false;\n defaultFixture.props.answers[1] = {\n ...defaultFixture.props.answers[1],\n onClick: () => {\n answerWasClicked = true;\n }\n };\n\n const wrapper = shallow(<QCMImage {...defaultFixture.props} />, {\n context: {translate}\n });\n\n const answersImages = wrapper.find('[data-name=\"answerImage\"]');\n t.true(answersImages.at(1).exists());\n t.is(answersImages.at(1).props()['aria-label'], 'Lorem ipsum');\n\n const answers = wrapper.find('[data-name=\"answerGraphic\"]');\n answers.at(1).simulate('click');\n t.true(answerWasClicked);\n t.pass();\n});\n\ntest(\"should set: selected's background to Primary, unselected's no background\", t => {\n const wrapper = shallow(<QCMImage {...defaultFixture.props} />, {\n context: {translate}\n });\n const answers = wrapper.find('[data-name=\"answerGraphic\"]');\n\n const firstAnswer = answers.at(0);\n t.true(firstAnswer.exists());\n t.deepEqual(firstAnswer.props().style, {});\n const unselectedBackgroundAnswer = firstAnswer.children().at(0);\n t.true(unselectedBackgroundAnswer.exists());\n t.deepEqual(unselectedBackgroundAnswer.props().style, {backgroundColor: '#F4F4F5'});\n const firstAnswerText = firstAnswer.children().at(1).children().at(1).children().at(0);\n t.true(firstAnswerText.exists());\n\n const thirdAnswer = answers.at(2);\n t.true(thirdAnswer.exists());\n t.deepEqual(thirdAnswer.props().style, {boxShadow: '0 4px 16px rgba(0, 122, 179, 0.25)'});\n const selectedBackgroundAnswer = thirdAnswer.children().at(0);\n t.true(selectedBackgroundAnswer.exists());\n t.deepEqual(selectedBackgroundAnswer.props().style, {backgroundColor: '#00B0FF'});\n});\n"],"file":"qcm-graphic.js"}
@@ -14,6 +14,7 @@
14
14
  justify-content: space-between;
15
15
  padding: 0 24px 0 48px;
16
16
  box-sizing: border-box;
17
+ border-radius: 7px;
17
18
  }
18
19
 
19
20
  .title {
@@ -3,11 +3,11 @@
3
3
  exports.__esModule = true;
4
4
  exports.default = void 0;
5
5
 
6
- var _react = _interopRequireWildcard(require("react"));
6
+ var _react = _interopRequireDefault(require("react"));
7
7
 
8
8
  var _propTypes = _interopRequireDefault(require("prop-types"));
9
9
 
10
- var _draggable = _interopRequireDefault(require("../draggable"));
10
+ var _draggableList = _interopRequireDefault(require("../draggable-list"));
11
11
 
12
12
  var _setupSection = _interopRequireDefault(require("../setup-section"));
13
13
 
@@ -17,12 +17,6 @@ var _style = _interopRequireDefault(require("./style.css"));
17
17
 
18
18
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
19
19
 
20
- function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
21
-
22
- function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
23
-
24
- function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
25
-
26
20
  const Loading = () => /*#__PURE__*/_react.default.createElement("div", {
27
21
  className: _style.default.loading
28
22
  }, /*#__PURE__*/_react.default.createElement(_loader.default, null));
@@ -32,36 +26,12 @@ const SetupSections = ({
32
26
  loading,
33
27
  onDrop
34
28
  }) => {
35
- const [dragTo, setDragTo] = (0, _react.useState)(null);
36
- const [dragFrom, setDragFrom] = (0, _react.useState)(null);
37
- const dragStartHandler = (0, _react.useCallback)(id => {
38
- setDragFrom(id);
39
- }, [setDragFrom]);
40
- const dragOverHandler = (0, _react.useCallback)(id => {
41
- if (dragTo === id) return;
42
- setDragTo(id);
43
- }, [dragTo, setDragTo]);
44
- const dragLeaveHandler = (0, _react.useCallback)(id => {
45
- setDragTo(null);
46
- }, [setDragTo]);
47
- const dropHandler = (0, _react.useCallback)(id => {
48
- if (onDrop && dragFrom) onDrop(dragFrom, id);
49
- setDragTo(null);
50
- setDragFrom(null);
51
- }, [onDrop, setDragTo, setDragFrom, dragFrom]);
52
29
  if (loading) return /*#__PURE__*/_react.default.createElement(Loading, null);
53
- const sectionsView = sections.map(section => /*#__PURE__*/_react.default.createElement(_draggable.default, {
54
- key: section.id,
55
- id: section.id,
56
- dragging: dragTo === section.id,
57
- onDragStart: dragStartHandler,
58
- onDragOver: dragOverHandler,
59
- onDragLeave: dragLeaveHandler,
60
- onDrop: dropHandler
61
- }, /*#__PURE__*/_react.default.createElement(_setupSection.default, _extends({}, section, {
62
- key: section.id
63
- }))));
64
- return /*#__PURE__*/_react.default.createElement("div", null, sectionsView);
30
+ return /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement(_draggableList.default, {
31
+ itemType: "setup-section",
32
+ items: sections,
33
+ onDrop: onDrop
34
+ }));
65
35
  };
66
36
 
67
37
  SetupSections.propTypes = process.env.NODE_ENV !== "production" ? {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/molecule/setup-sections/index.js"],"names":["Loading","style","loading","SetupSections","sections","onDrop","dragTo","setDragTo","dragFrom","setDragFrom","dragStartHandler","id","dragOverHandler","dragLeaveHandler","dropHandler","sectionsView","map","section","propTypes","PropTypes","arrayOf","shape","SetupSection","bool","func"],"mappings":";;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;;;;;;;AAEA,MAAMA,OAAO,GAAG,mBACd;AAAK,EAAA,SAAS,EAAEC,eAAMC;AAAtB,gBACE,6BAAC,eAAD,OADF,CADF;;AAMA,MAAMC,aAAa,GAAG,CAAC;AAACC,EAAAA,QAAD;AAAWF,EAAAA,OAAX;AAAoBG,EAAAA;AAApB,CAAD,KAAiC;AACrD,QAAM,CAACC,MAAD,EAASC,SAAT,IAAsB,qBAAS,IAAT,CAA5B;AACA,QAAM,CAACC,QAAD,EAAWC,WAAX,IAA0B,qBAAS,IAAT,CAAhC;AAEA,QAAMC,gBAAgB,GAAG,wBACvBC,EAAE,IAAI;AACJF,IAAAA,WAAW,CAACE,EAAD,CAAX;AACD,GAHsB,EAIvB,CAACF,WAAD,CAJuB,CAAzB;AAOA,QAAMG,eAAe,GAAG,wBACtBD,EAAE,IAAI;AACJ,QAAIL,MAAM,KAAKK,EAAf,EAAmB;AACnBJ,IAAAA,SAAS,CAACI,EAAD,CAAT;AACD,GAJqB,EAKtB,CAACL,MAAD,EAASC,SAAT,CALsB,CAAxB;AAQA,QAAMM,gBAAgB,GAAG,wBACvBF,EAAE,IAAI;AACJJ,IAAAA,SAAS,CAAC,IAAD,CAAT;AACD,GAHsB,EAIvB,CAACA,SAAD,CAJuB,CAAzB;AAOA,QAAMO,WAAW,GAAG,wBAClBH,EAAE,IAAI;AACJ,QAAIN,MAAM,IAAIG,QAAd,EAAwBH,MAAM,CAACG,QAAD,EAAWG,EAAX,CAAN;AAExBJ,IAAAA,SAAS,CAAC,IAAD,CAAT;AACAE,IAAAA,WAAW,CAAC,IAAD,CAAX;AACD,GANiB,EAOlB,CAACJ,MAAD,EAASE,SAAT,EAAoBE,WAApB,EAAiCD,QAAjC,CAPkB,CAApB;AAUA,MAAIN,OAAJ,EAAa,oBAAO,6BAAC,OAAD,OAAP;AAEb,QAAMa,YAAY,GAAGX,QAAQ,CAACY,GAAT,CAAaC,OAAO,iBACvC,6BAAC,kBAAD;AACE,IAAA,GAAG,EAAEA,OAAO,CAACN,EADf;AAEE,IAAA,EAAE,EAAEM,OAAO,CAACN,EAFd;AAGE,IAAA,QAAQ,EAAEL,MAAM,KAAKW,OAAO,CAACN,EAH/B;AAIE,IAAA,WAAW,EAAED,gBAJf;AAKE,IAAA,UAAU,EAAEE,eALd;AAME,IAAA,WAAW,EAAEC,gBANf;AAOE,IAAA,MAAM,EAAEC;AAPV,kBASE,6BAAC,qBAAD,eAAkBG,OAAlB;AAA2B,IAAA,GAAG,EAAEA,OAAO,CAACN;AAAxC,KATF,CADmB,CAArB;AAaA,sBAAO,0CAAMI,YAAN,CAAP;AACD,CApDD;;AAsDAZ,aAAa,CAACe,SAAd,2CAA0B;AACxBd,EAAAA,QAAQ,EAAEe,mBAAUC,OAAV,CAAkBD,mBAAUE,KAAV,CAAgBC,sBAAaJ,SAA7B,CAAlB,CADc;AAExBhB,EAAAA,OAAO,EAAEiB,mBAAUI,IAFK;AAGxBlB,EAAAA,MAAM,EAAEc,mBAAUK;AAHM,CAA1B;eAMerB,a","sourcesContent":["import React, {useState, useCallback} from 'react';\nimport PropTypes from 'prop-types';\nimport Draggable from '../draggable';\nimport SetupSection from '../setup-section';\nimport Loader from '../../atom/loader';\nimport style from './style.css';\n\nconst Loading = () => (\n <div className={style.loading}>\n <Loader />\n </div>\n);\n\nconst SetupSections = ({sections, loading, onDrop}) => {\n const [dragTo, setDragTo] = useState(null);\n const [dragFrom, setDragFrom] = useState(null);\n\n const dragStartHandler = useCallback(\n id => {\n setDragFrom(id);\n },\n [setDragFrom]\n );\n\n const dragOverHandler = useCallback(\n id => {\n if (dragTo === id) return;\n setDragTo(id);\n },\n [dragTo, setDragTo]\n );\n\n const dragLeaveHandler = useCallback(\n id => {\n setDragTo(null);\n },\n [setDragTo]\n );\n\n const dropHandler = useCallback(\n id => {\n if (onDrop && dragFrom) onDrop(dragFrom, id);\n\n setDragTo(null);\n setDragFrom(null);\n },\n [onDrop, setDragTo, setDragFrom, dragFrom]\n );\n\n if (loading) return <Loading />;\n\n const sectionsView = sections.map(section => (\n <Draggable\n key={section.id}\n id={section.id}\n dragging={dragTo === section.id}\n onDragStart={dragStartHandler}\n onDragOver={dragOverHandler}\n onDragLeave={dragLeaveHandler}\n onDrop={dropHandler}\n >\n <SetupSection {...section} key={section.id} />\n </Draggable>\n ));\n return <div>{sectionsView}</div>;\n};\n\nSetupSections.propTypes = {\n sections: PropTypes.arrayOf(PropTypes.shape(SetupSection.propTypes)),\n loading: PropTypes.bool,\n onDrop: PropTypes.func\n};\n\nexport default SetupSections;\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../../../src/molecule/setup-sections/index.js"],"names":["Loading","style","loading","SetupSections","sections","onDrop","propTypes","PropTypes","arrayOf","shape","SetupSection","bool","func"],"mappings":";;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;AAEA,MAAMA,OAAO,GAAG,mBACd;AAAK,EAAA,SAAS,EAAEC,eAAMC;AAAtB,gBACE,6BAAC,eAAD,OADF,CADF;;AAMA,MAAMC,aAAa,GAAG,CAAC;AAACC,EAAAA,QAAD;AAAWF,EAAAA,OAAX;AAAoBG,EAAAA;AAApB,CAAD,KAAiC;AACrD,MAAIH,OAAJ,EAAa,oBAAO,6BAAC,OAAD,OAAP;AAEb,sBACE,uDACE,6BAAC,sBAAD;AAAe,IAAA,QAAQ,EAAC,eAAxB;AAAwC,IAAA,KAAK,EAAEE,QAA/C;AAAyD,IAAA,MAAM,EAAEC;AAAjE,IADF,CADF;AAKD,CARD;;AAUAF,aAAa,CAACG,SAAd,2CAA0B;AACxBF,EAAAA,QAAQ,EAAEG,mBAAUC,OAAV,CAAkBD,mBAAUE,KAAV,CAAgBC,sBAAaJ,SAA7B,CAAlB,CADc;AAExBJ,EAAAA,OAAO,EAAEK,mBAAUI,IAFK;AAGxBN,EAAAA,MAAM,EAAEE,mBAAUK;AAHM,CAA1B;eAMeT,a","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport DraggableList from '../draggable-list';\nimport SetupSection from '../setup-section';\nimport Loader from '../../atom/loader';\nimport style from './style.css';\n\nconst Loading = () => (\n <div className={style.loading}>\n <Loader />\n </div>\n);\n\nconst SetupSections = ({sections, loading, onDrop}) => {\n if (loading) return <Loading />;\n\n return (\n <div>\n <DraggableList itemType=\"setup-section\" items={sections} onDrop={onDrop} />\n </div>\n );\n};\n\nSetupSections.propTypes = {\n sections: PropTypes.arrayOf(PropTypes.shape(SetupSection.propTypes)),\n loading: PropTypes.bool,\n onDrop: PropTypes.func\n};\n\nexport default SetupSections;\n"],"file":"index.js"}