@coorpacademy/components 10.5.7-alpha.3 → 10.5.7-alpha.8

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 (119) hide show
  1. package/es/atom/range/handle.css +18 -2
  2. package/es/atom/range/handle.js +7 -3
  3. package/es/atom/range/handle.js.map +1 -1
  4. package/es/atom/range/style.css +2 -2
  5. package/es/atom/select/index.js +38 -20
  6. package/es/atom/select/index.js.map +1 -1
  7. package/es/atom/select/style.css +154 -42
  8. package/es/atom/select/test/fixtures/player.js +11 -0
  9. package/es/atom/select/test/fixtures/player.js.map +1 -0
  10. package/es/atom/select/test/fixtures.js +2 -0
  11. package/es/atom/select/test/fixtures.js.map +1 -1
  12. package/es/atom/select/test/select.js +49 -0
  13. package/es/atom/select/test/select.js.map +1 -0
  14. package/es/molecule/course-sections/test/fixtures.js +15 -0
  15. package/es/molecule/course-sections/test/fixtures.js.map +1 -0
  16. package/es/molecule/draggable-list/test/fixtures.js +2 -0
  17. package/es/molecule/draggable-list/test/fixtures.js.map +1 -1
  18. package/es/molecule/questions/drop-down/index.js +1 -6
  19. package/es/molecule/questions/drop-down/index.js.map +1 -1
  20. package/es/molecule/questions/free-text/index.js +35 -15
  21. package/es/molecule/questions/free-text/index.js.map +1 -1
  22. package/es/molecule/questions/free-text/style.css +39 -15
  23. package/es/molecule/questions/free-text/test/fixtures/default.js +1 -1
  24. package/es/molecule/questions/free-text/test/fixtures/default.js.map +1 -1
  25. package/es/molecule/questions/free-text/test/fixtures/with-value-on-change.js +9 -0
  26. package/es/molecule/questions/free-text/test/fixtures/with-value-on-change.js.map +1 -0
  27. package/es/molecule/questions/free-text/test/fixtures/{with-default-value.js → with-value.js} +2 -2
  28. package/es/molecule/questions/free-text/test/fixtures/with-value.js.map +1 -0
  29. package/es/molecule/questions/free-text/test/fixtures.js +4 -2
  30. package/es/molecule/questions/free-text/test/fixtures.js.map +1 -1
  31. package/es/molecule/questions/free-text/test/free-text.js +106 -0
  32. package/es/molecule/questions/free-text/test/free-text.js.map +1 -0
  33. package/es/molecule/questions/qcm/index.js +1 -4
  34. package/es/molecule/questions/qcm/index.js.map +1 -1
  35. package/es/molecule/questions/qcm/style.css +16 -2
  36. package/es/molecule/questions/qcm/test/qcm.js +4 -6
  37. package/es/molecule/questions/qcm/test/qcm.js.map +1 -1
  38. package/es/molecule/questions/qcm-drag/index.js +53 -21
  39. package/es/molecule/questions/qcm-drag/index.js.map +1 -1
  40. package/es/molecule/questions/qcm-drag/style.css +73 -22
  41. package/es/molecule/questions/qcm-graphic/index.js +2 -4
  42. package/es/molecule/questions/qcm-graphic/index.js.map +1 -1
  43. package/es/molecule/questions/qcm-graphic/style.css +21 -3
  44. package/es/molecule/questions/qcm-graphic/test/fixtures/default.js +1 -1
  45. package/es/molecule/questions/qcm-graphic/test/fixtures/default.js.map +1 -1
  46. package/es/molecule/questions/qcm-graphic/test/fixtures/no-selected.js +1 -1
  47. package/es/molecule/questions/qcm-graphic/test/fixtures/no-selected.js.map +1 -1
  48. package/es/molecule/questions/qcm-graphic/test/qcm-graphic.js +2 -2
  49. package/es/molecule/questions/qcm-graphic/test/qcm-graphic.js.map +1 -1
  50. package/es/molecule/questions/question-range/style.css +9 -8
  51. package/es/molecule/questions/template/index.js +13 -10
  52. package/es/molecule/questions/template/index.js.map +1 -1
  53. package/es/molecule/wizard-summary/test/fixtures.js +2 -0
  54. package/es/molecule/wizard-summary/test/fixtures.js.map +1 -1
  55. package/es/organism/wizard-contents/test/fixtures.js +2 -0
  56. package/es/organism/wizard-contents/test/fixtures.js.map +1 -1
  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/lib/atom/range/handle.css +18 -2
  60. package/lib/atom/range/handle.js +8 -3
  61. package/lib/atom/range/handle.js.map +1 -1
  62. package/lib/atom/range/style.css +2 -2
  63. package/lib/atom/select/index.js +40 -17
  64. package/lib/atom/select/index.js.map +1 -1
  65. package/lib/atom/select/style.css +154 -42
  66. package/lib/atom/select/test/fixtures/player.js +21 -0
  67. package/lib/atom/select/test/fixtures/player.js.map +1 -0
  68. package/lib/atom/select/test/fixtures.js +3 -0
  69. package/lib/atom/select/test/fixtures.js.map +1 -1
  70. package/lib/atom/select/test/select.js +62 -0
  71. package/lib/atom/select/test/select.js.map +1 -0
  72. package/lib/molecule/course-sections/test/fixtures.js +25 -0
  73. package/lib/molecule/course-sections/test/fixtures.js.map +1 -0
  74. package/lib/molecule/draggable-list/test/fixtures.js +3 -0
  75. package/lib/molecule/draggable-list/test/fixtures.js.map +1 -1
  76. package/lib/molecule/questions/drop-down/index.js +1 -5
  77. package/lib/molecule/questions/drop-down/index.js.map +1 -1
  78. package/lib/molecule/questions/free-text/index.js +32 -14
  79. package/lib/molecule/questions/free-text/index.js.map +1 -1
  80. package/lib/molecule/questions/free-text/style.css +39 -15
  81. package/lib/molecule/questions/free-text/test/fixtures/default.js +1 -1
  82. package/lib/molecule/questions/free-text/test/fixtures/default.js.map +1 -1
  83. package/lib/molecule/questions/free-text/test/fixtures/with-value-on-change.js +14 -0
  84. package/lib/molecule/questions/free-text/test/fixtures/with-value-on-change.js.map +1 -0
  85. package/lib/molecule/questions/free-text/test/fixtures/{with-default-value.js → with-value.js} +2 -2
  86. package/lib/molecule/questions/free-text/test/fixtures/with-value.js.map +1 -0
  87. package/lib/molecule/questions/free-text/test/fixtures.js +5 -2
  88. package/lib/molecule/questions/free-text/test/fixtures.js.map +1 -1
  89. package/lib/molecule/questions/free-text/test/free-text.js +119 -0
  90. package/lib/molecule/questions/free-text/test/free-text.js.map +1 -0
  91. package/lib/molecule/questions/qcm/index.js +1 -4
  92. package/lib/molecule/questions/qcm/index.js.map +1 -1
  93. package/lib/molecule/questions/qcm/style.css +16 -2
  94. package/lib/molecule/questions/qcm/test/qcm.js +4 -6
  95. package/lib/molecule/questions/qcm/test/qcm.js.map +1 -1
  96. package/lib/molecule/questions/qcm-drag/index.js +53 -21
  97. package/lib/molecule/questions/qcm-drag/index.js.map +1 -1
  98. package/lib/molecule/questions/qcm-drag/style.css +73 -22
  99. package/lib/molecule/questions/qcm-graphic/index.js +2 -4
  100. package/lib/molecule/questions/qcm-graphic/index.js.map +1 -1
  101. package/lib/molecule/questions/qcm-graphic/style.css +21 -3
  102. package/lib/molecule/questions/qcm-graphic/test/fixtures/default.js +1 -1
  103. package/lib/molecule/questions/qcm-graphic/test/fixtures/default.js.map +1 -1
  104. package/lib/molecule/questions/qcm-graphic/test/fixtures/no-selected.js +1 -1
  105. package/lib/molecule/questions/qcm-graphic/test/fixtures/no-selected.js.map +1 -1
  106. package/lib/molecule/questions/qcm-graphic/test/qcm-graphic.js +2 -2
  107. package/lib/molecule/questions/qcm-graphic/test/qcm-graphic.js.map +1 -1
  108. package/lib/molecule/questions/question-range/style.css +9 -8
  109. package/lib/molecule/questions/template/index.js +13 -10
  110. package/lib/molecule/questions/template/index.js.map +1 -1
  111. package/lib/molecule/wizard-summary/test/fixtures.js +3 -0
  112. package/lib/molecule/wizard-summary/test/fixtures.js.map +1 -1
  113. package/lib/organism/wizard-contents/test/fixtures.js +3 -0
  114. package/lib/organism/wizard-contents/test/fixtures.js.map +1 -1
  115. package/lib/template/back-office/brand-update/test/fixtures.js +3 -0
  116. package/lib/template/back-office/brand-update/test/fixtures.js.map +1 -1
  117. package/package.json +2 -2
  118. package/es/molecule/questions/free-text/test/fixtures/with-default-value.js.map +0 -1
  119. package/lib/molecule/questions/free-text/test/fixtures/with-default-value.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/molecule/questions/qcm/index.js"],"names":["React","useMemo","classnames","PropTypes","getOr","maxBy","Provider","innerHTML","getShadowBoxColorFromPrimary","style","QCM","props","context","answers","longestAnswer","title","length","skin","primarySkinColor","answersViews","map","answer","key","onClick","selected","ariaLabel","longAnswerClass","selectedAnswerClass","selectedAnswer","unselectedAnswer","boxShadow","backgroundColor","background","answerText","color","__html","wrapper","contextTypes","childContextTypes","propTypes","arrayOf","shape","string","bool","func"],"mappings":"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","sourcesContent":["import React, {useMemo} from 'react';\nimport classnames from 'classnames';\nimport PropTypes from 'prop-types';\nimport getOr from 'lodash/fp/getOr';\nimport maxBy from 'lodash/fp/maxBy';\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 QCM = (props, context) => {\n const {answers} = props;\n const longestAnswer = maxBy(({title}) => title.length, answers);\n const {skin} = context;\n const primarySkinColor = getOr('#00B0FF', 'common.primary', skin);\n\n const answersViews = useMemo(\n () =>\n answers.map((answer, key) => {\n const {onClick, title, selected, 'aria-label': ariaLabel} = answer;\n const longAnswerClass = longestAnswer.title === title ? style.longestAnswer : style.answer;\n const selectedAnswerClass = selected ? style.selectedAnswer : style.unselectedAnswer;\n\n return (\n <div\n data-name=\"answer\"\n aria-label={ariaLabel || title}\n className={classnames(longAnswerClass, innerHTML, selectedAnswerClass)}\n onClick={onClick}\n style={{\n ...(selected && {\n boxShadow: `0 4px 16px ${getShadowBoxColorFromPrimary(primarySkinColor)}`\n })\n }}\n data-selected={selected}\n key={key}\n >\n <div\n data-name=\"answer-background\"\n style={{backgroundColor: selected ? primarySkinColor : '#F4F4F5' /* cm_grey_75 */}}\n className={style.background}\n />\n <span\n data-name=\"answer-label\"\n className={style.answerText}\n style={{\n ...(selected && {color: primarySkinColor})\n }}\n // eslint-disable-next-line react/no-danger\n dangerouslySetInnerHTML={{__html: title}}\n />\n </div>\n );\n }),\n [answers, longestAnswer, primarySkinColor]\n );\n\n return (\n <div data-name=\"qcm\" className={style.wrapper}>\n {answersViews}\n </div>\n );\n};\n\nQCM.contextTypes = {\n skin: Provider.childContextTypes.skin\n};\n\nQCM.propTypes = {\n answers: PropTypes.arrayOf(\n PropTypes.shape({\n title: PropTypes.string,\n selected: PropTypes.bool,\n onClick: PropTypes.func,\n 'aria-label': PropTypes.string\n })\n )\n};\n\nexport default QCM;\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../../../../src/molecule/questions/qcm/index.js"],"names":["React","useMemo","classnames","PropTypes","getOr","maxBy","Provider","innerHTML","getShadowBoxColorFromPrimary","style","QCM","props","context","answers","longestAnswer","title","length","skin","primarySkinColor","answersViews","map","answer","key","onClick","selected","ariaLabel","longAnswerClass","selectedAnswerClass","selectedAnswer","unselectedAnswer","boxShadow","backgroundColor","background","answerText","__html","wrapper","contextTypes","childContextTypes","propTypes","arrayOf","shape","string","bool","func"],"mappings":"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","sourcesContent":["import React, {useMemo} from 'react';\nimport classnames from 'classnames';\nimport PropTypes from 'prop-types';\nimport getOr from 'lodash/fp/getOr';\nimport maxBy from 'lodash/fp/maxBy';\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 QCM = (props, context) => {\n const {answers} = props;\n const longestAnswer = maxBy(({title}) => title.length, answers);\n const {skin} = context;\n const primarySkinColor = getOr('#00B0FF', 'common.primary', skin);\n\n const answersViews = useMemo(\n () =>\n answers.map((answer, key) => {\n const {onClick, title, selected, 'aria-label': ariaLabel} = answer;\n const longAnswerClass = longestAnswer.title === title ? style.longestAnswer : style.answer;\n const selectedAnswerClass = selected ? style.selectedAnswer : style.unselectedAnswer;\n\n return (\n <div\n data-name=\"answer\"\n aria-label={ariaLabel || title}\n className={classnames(longAnswerClass, innerHTML, selectedAnswerClass)}\n onClick={onClick}\n style={{\n ...(selected && {\n boxShadow: `0 4px 16px ${getShadowBoxColorFromPrimary(primarySkinColor)}`\n })\n }}\n data-selected={selected}\n key={key}\n >\n <div\n data-name=\"answer-background\"\n style={{backgroundColor: selected ? primarySkinColor : '#F4F4F5' /* cm_grey_75 */}}\n className={style.background}\n />\n <span\n data-name=\"answer-label\"\n className={style.answerText}\n // eslint-disable-next-line react/no-danger\n dangerouslySetInnerHTML={{__html: title}}\n />\n </div>\n );\n }),\n [answers, longestAnswer, primarySkinColor]\n );\n\n return (\n <div data-name=\"qcm\" className={style.wrapper}>\n {answersViews}\n </div>\n );\n};\n\nQCM.contextTypes = {\n skin: Provider.childContextTypes.skin\n};\n\nQCM.propTypes = {\n answers: PropTypes.arrayOf(\n PropTypes.shape({\n title: PropTypes.string,\n selected: PropTypes.bool,\n onClick: PropTypes.func,\n 'aria-label': PropTypes.string\n })\n )\n};\n\nexport default QCM;\n"],"file":"index.js"}
@@ -2,6 +2,7 @@
2
2
  @value mobile from breakpoints;
3
3
  @value colors: "../../../variables/colors.css";
4
4
  @value white from colors;
5
+ @value black from colors;
5
6
  @value box_shadow_light_dark from colors;
6
7
  @value cm_blue_900 from colors;
7
8
 
@@ -47,15 +48,28 @@
47
48
  .answerText {
48
49
  position: relative;
49
50
  color: cm_blue_900;
51
+ hyphens: auto;
52
+ -ms-word-break: break-all;
53
+ word-break: break-all;
54
+ word-break: break-word;
55
+ }
56
+
57
+ .selectedAnswer .answerText {
58
+ color: white;
50
59
  }
51
60
 
52
61
  .selectedAnswer:hover .background{
53
- opacity: 0.1;
62
+ opacity: 0.8;
63
+ }
64
+
65
+ .selectedAnswer.answer:hover {
66
+ background-color: black;
54
67
  }
55
68
 
56
69
  .selectedAnswer .background{
57
- opacity: 0.05;
70
+ opacity: 1;
58
71
  }
72
+
59
73
  .selectedAnswer,
60
74
  .unselectedAnswer {
61
75
  position: relative;
@@ -34,7 +34,7 @@ test('onClick should be reachable, should match given aria-label', t => {
34
34
  t.true(answerWasClicked);
35
35
  t.pass();
36
36
  });
37
- test("should set: selected's background to Primary w/ alpha 5% && color to primary, unselected's no background && color to a nuance of primary", t => {
37
+ test("should set: selected's background to Primary, unselected's no background", t => {
38
38
  const wrapper = mount( /*#__PURE__*/React.createElement(Qcm, defaultFixture.props));
39
39
  const answers = wrapper.find('[data-name="answer"]');
40
40
  const unselectedAnswer = answers.at(1);
@@ -46,7 +46,7 @@ test("should set: selected's background to Primary w/ alpha 5% && color to prima
46
46
 
47
47
  const unselectedLabel = unselectedAnswer.children().at(1);
48
48
  t.true(unselectedLabel.exists());
49
- t.deepEqual(unselectedLabel.props().style, {}); // check dangerouslySetInnerHTML
49
+ t.falsy(unselectedLabel.props().style); // check dangerouslySetInnerHTML
50
50
 
51
51
  t.deepEqual(unselectedLabel.props().dangerouslySetInnerHTML, {
52
52
  __html: 'Lorem ipsum'
@@ -64,13 +64,11 @@ test("should set: selected's background to Primary w/ alpha 5% && color to prima
64
64
  t.true(selectedAnswer.exists());
65
65
  t.deepEqual(selectedAnswer.props().style, {
66
66
  boxShadow: '0 4px 16px rgba(0, 122, 179, 0.25)'
67
- }); // should have only color prop in label style, w/o transforming expectedPrimaryColor
67
+ }); // should not have any prop in label style
68
68
 
69
69
  const selectedLabel = selectedAnswer.children().at(1);
70
70
  t.true(selectedLabel.exists());
71
- t.deepEqual(selectedLabel.props().style, {
72
- color: expectedPrimaryColor
73
- }); // check dangerouslySetInnerHTML
71
+ t.falsy(selectedLabel.props().style); // check dangerouslySetInnerHTML
74
72
 
75
73
  t.deepEqual(selectedLabel.props().dangerouslySetInnerHTML, {
76
74
  __html: 'Lorem'
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/molecule/questions/qcm/test/qcm.js"],"names":["browserEnv","test","React","shallow","mount","configure","Adapter","Qcm","defaultFixture","noAriaLabelFixture","adapter","translate","t","answerWasClicked","props","answers","onClick","wrapper","context","find","true","at","exists","is","simulate","pass","unselectedAnswer","expectedPrimaryColor","deepEqual","style","unselectedLabel","children","dangerouslySetInnerHTML","__html","text","unselectedBackground","backgroundColor","selectedAnswer","boxShadow","selectedLabel","color","selectedBackground","answer","className"],"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 w/ alpha 5% && color to primary, unselected's no background && color to a nuance of primary\", 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.deepEqual(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 have only color prop in label style, w/o transforming expectedPrimaryColor\n const selectedLabel = selectedAnswer.children().at(1);\n t.true(selectedLabel.exists());\n t.deepEqual(selectedLabel.props().style, {\n color: expectedPrimaryColor\n });\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"}
1
+ {"version":3,"sources":["../../../../../src/molecule/questions/qcm/test/qcm.js"],"names":["browserEnv","test","React","shallow","mount","configure","Adapter","Qcm","defaultFixture","noAriaLabelFixture","adapter","translate","t","answerWasClicked","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"],"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"}
@@ -1,3 +1,4 @@
1
+ import _getOr from "lodash/fp/getOr";
1
2
  import _orderBy from "lodash/fp/orderBy";
2
3
  import _filter from "lodash/fp/filter";
3
4
  import _pipe from "lodash/fp/pipe";
@@ -6,6 +7,7 @@ import PropTypes from 'prop-types';
6
7
  import classnames from 'classnames';
7
8
  import Provider from '../../../atom/provider';
8
9
  import { innerHTML } from '../../../atom/label/style.css';
10
+ import { getShadowBoxColorFromPrimary } from '../../../util/get-shadow-box-color-from-primary';
9
11
  import style from './style.css';
10
12
  const AnswersPropTypes = process.env.NODE_ENV !== "production" ? PropTypes.arrayOf(PropTypes.shape({
11
13
  onClick: PropTypes.func,
@@ -38,7 +40,7 @@ const Choices = ({
38
40
  selected
39
41
  } = answer;
40
42
  return /*#__PURE__*/React.createElement("div", {
41
- className: classnames(selected ? style.invisibleAnswer : style.answer, innerHTML),
43
+ className: classnames(selected ? style.invisibleAnswer : style.unselected, innerHTML),
42
44
  "data-name": "answer",
43
45
  onClick: onClick,
44
46
  key: key // eslint-disable-next-line react/no-danger
@@ -49,7 +51,7 @@ const Choices = ({
49
51
  });
50
52
  });
51
53
  return /*#__PURE__*/React.createElement("div", {
52
- className: style.qcmDrag
54
+ className: style.choices
53
55
  }, answersViews);
54
56
  };
55
57
 
@@ -57,9 +59,10 @@ Choices.propTypes = process.env.NODE_ENV !== "production" ? {
57
59
  answers: AnswersPropTypes
58
60
  } : {};
59
61
 
60
- const SelectionBox = ({
62
+ const SelectedAnswerSections = ({
61
63
  answers,
62
- help
64
+ help,
65
+ backgroundColor
63
66
  }) => {
64
67
  const selectedAnswers = _pipe(_filter('selected'), _orderBy('order', 'asc'))(answers);
65
68
 
@@ -69,15 +72,31 @@ const SelectionBox = ({
69
72
  title
70
73
  } = answer;
71
74
  return /*#__PURE__*/React.createElement("div", {
72
- className: classnames(style.selectedAnswer, innerHTML),
73
75
  "data-selected": "true",
74
76
  onClick: onClick,
75
- key: key // eslint-disable-next-line react/no-danger
77
+ key: key,
78
+ "data-name": "selectedAnswer",
79
+ className: style.selected,
80
+ style: {
81
+ boxShadow: `0px 4px 16px ${getShadowBoxColorFromPrimary(backgroundColor)}`
82
+ }
83
+ }, /*#__PURE__*/React.createElement("div", {
84
+ "data-name": "answerBackground",
85
+ style: {
86
+ backgroundColor
87
+ },
88
+ className: style.background
89
+ }), /*#__PURE__*/React.createElement("div", {
90
+ className: style.content
91
+ }, /*#__PURE__*/React.createElement("span", {
92
+ "data-name": "answerContent",
93
+ className: classnames(style.selectedAnswerText, innerHTML),
94
+ title: title // eslint-disable-next-line react/no-danger
76
95
  ,
77
96
  dangerouslySetInnerHTML: {
78
97
  __html: title
79
98
  }
80
- });
99
+ })));
81
100
  });
82
101
 
83
102
  if (selectedAnswersViews.length > 0) {
@@ -93,29 +112,42 @@ const SelectionBox = ({
93
112
  }
94
113
  };
95
114
 
96
- SelectionBox.propTypes = process.env.NODE_ENV !== "production" ? {
115
+ SelectedAnswerSections.propTypes = process.env.NODE_ENV !== "production" ? {
97
116
  answers: AnswersPropTypes,
98
- help: EmptyView.propTypes.help
117
+ help: EmptyView.propTypes.help,
118
+ backgroundColor: PropTypes.string
99
119
  } : {};
100
120
 
101
121
  const QcmDrag = ({
102
122
  answers,
103
123
  help
104
- }, context) => /*#__PURE__*/React.createElement("div", {
105
- className: style.qcmDrag
106
- }, /*#__PURE__*/React.createElement(SelectionBox, {
107
- answers: answers,
108
- help: help
109
- }), /*#__PURE__*/React.createElement("div", {
110
- "data-name": "qcm-drag-answers",
111
- className: style.answers
112
- }, /*#__PURE__*/React.createElement(Choices, {
113
- answers: answers
114
- })));
124
+ }, context) => {
125
+ const {
126
+ skin
127
+ } = context;
128
+
129
+ const primarySkinColor = _getOr('#00B0FF', 'common.primary', skin);
130
+
131
+ return /*#__PURE__*/React.createElement("div", {
132
+ className: style.wrapper
133
+ }, /*#__PURE__*/React.createElement(SelectedAnswerSections, {
134
+ answers: answers,
135
+ help: help,
136
+ backgroundColor: primarySkinColor
137
+ }), /*#__PURE__*/React.createElement("div", {
138
+ "data-name": "qcm-drag-answers",
139
+ className: style.answers
140
+ }, /*#__PURE__*/React.createElement(Choices, {
141
+ answers: answers
142
+ })));
143
+ };
115
144
 
116
145
  QcmDrag.propTypes = process.env.NODE_ENV !== "production" ? {
117
146
  answers: AnswersPropTypes,
118
- help: SelectionBox.propTypes.help
147
+ help: SelectedAnswerSections.propTypes.help
119
148
  } : {};
149
+ QcmDrag.contextTypes = {
150
+ skin: Provider.childContextTypes.skin
151
+ };
120
152
  export default QcmDrag;
121
153
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/molecule/questions/qcm-drag/index.js"],"names":["React","PropTypes","classnames","Provider","innerHTML","style","AnswersPropTypes","arrayOf","shape","onClick","func","order","number","selected","bool","title","string","help","EmptyView","emptySpan","contextTypes","translate","childContextTypes","propTypes","Choices","answers","answersViews","map","answer","key","invisibleAnswer","__html","qcmDrag","SelectionBox","selectedAnswers","selectedAnswersViews","selectedAnswer","length","emptyAnswers","QcmDrag","context"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport {pipe, filter, orderBy} 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 AnswersPropTypes = PropTypes.arrayOf(\n PropTypes.shape({\n onClick: PropTypes.func,\n order: PropTypes.number,\n selected: PropTypes.bool,\n title: PropTypes.string,\n help: PropTypes.string\n })\n);\n\nconst EmptyView = ({help}) => <span className={style.emptySpan}>{help}</span>;\n\nEmptyView.contextTypes = {\n translate: Provider.childContextTypes.translate\n};\n\nEmptyView.propTypes = {\n help: PropTypes.string\n};\n\nconst Choices = ({answers}) => {\n const answersViews = answers.map((answer, key) => {\n const {onClick, title, selected} = answer;\n return (\n <div\n className={classnames(selected ? style.invisibleAnswer : style.answer, innerHTML)}\n data-name=\"answer\"\n onClick={onClick}\n key={key}\n // eslint-disable-next-line react/no-danger\n dangerouslySetInnerHTML={{__html: title}}\n />\n );\n });\n\n return <div className={style.qcmDrag}>{answersViews}</div>;\n};\n\nChoices.propTypes = {\n answers: AnswersPropTypes\n};\n\nconst SelectionBox = ({answers, help}) => {\n const selectedAnswers = pipe(filter('selected'), orderBy('order', 'asc'))(answers);\n const selectedAnswersViews = selectedAnswers.map((answer, key) => {\n const {onClick, title} = answer;\n return (\n <div\n className={classnames(style.selectedAnswer, innerHTML)}\n data-selected=\"true\"\n onClick={onClick}\n key={key}\n // eslint-disable-next-line react/no-danger\n dangerouslySetInnerHTML={{__html: title}}\n />\n );\n });\n\n if (selectedAnswersViews.length > 0) {\n return <div className={style.selectedAnswers}>{selectedAnswersViews}</div>;\n } else {\n return (\n <div className={style.emptyAnswers}>\n <EmptyView help={help} />\n </div>\n );\n }\n};\n\nSelectionBox.propTypes = {\n answers: AnswersPropTypes,\n help: EmptyView.propTypes.help\n};\n\nconst QcmDrag = ({answers, help}, context) => (\n <div className={style.qcmDrag}>\n <SelectionBox answers={answers} help={help} />\n <div data-name=\"qcm-drag-answers\" className={style.answers}>\n <Choices answers={answers} />\n </div>\n </div>\n);\n\nQcmDrag.propTypes = {\n answers: AnswersPropTypes,\n help: SelectionBox.propTypes.help\n};\n\nexport default QcmDrag;\n"],"file":"index.js"}
1
+ {"version":3,"sources":["../../../../src/molecule/questions/qcm-drag/index.js"],"names":["React","PropTypes","classnames","Provider","innerHTML","getShadowBoxColorFromPrimary","style","AnswersPropTypes","arrayOf","shape","onClick","func","order","number","selected","bool","title","string","help","EmptyView","emptySpan","contextTypes","translate","childContextTypes","propTypes","Choices","answers","answersViews","map","answer","key","invisibleAnswer","unselected","__html","choices","SelectedAnswerSections","backgroundColor","selectedAnswers","selectedAnswersViews","boxShadow","background","content","selectedAnswerText","length","emptyAnswers","QcmDrag","context","skin","primarySkinColor","wrapper"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport {pipe, filter, orderBy, 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 AnswersPropTypes = PropTypes.arrayOf(\n PropTypes.shape({\n onClick: PropTypes.func,\n order: PropTypes.number,\n selected: PropTypes.bool,\n title: PropTypes.string,\n help: PropTypes.string\n })\n);\n\nconst EmptyView = ({help}) => <span className={style.emptySpan}>{help}</span>;\n\nEmptyView.contextTypes = {\n translate: Provider.childContextTypes.translate\n};\n\nEmptyView.propTypes = {\n help: PropTypes.string\n};\n\nconst Choices = ({answers}) => {\n const answersViews = answers.map((answer, key) => {\n const {onClick, title, selected} = answer;\n return (\n <div\n className={classnames(selected ? style.invisibleAnswer : style.unselected, innerHTML)}\n data-name=\"answer\"\n onClick={onClick}\n key={key}\n // eslint-disable-next-line react/no-danger\n dangerouslySetInnerHTML={{__html: title}}\n />\n );\n });\n\n return <div className={style.choices}>{answersViews}</div>;\n};\n\nChoices.propTypes = {\n answers: AnswersPropTypes\n};\n\nconst SelectedAnswerSections = ({answers, help, backgroundColor}) => {\n const selectedAnswers = pipe(filter('selected'), orderBy('order', 'asc'))(answers);\n const selectedAnswersViews = selectedAnswers.map((answer, key) => {\n const {onClick, title} = answer;\n return (\n <div\n data-selected=\"true\"\n onClick={onClick}\n key={key}\n data-name=\"selectedAnswer\"\n className={style.selected}\n style={{\n boxShadow: `0px 4px 16px ${getShadowBoxColorFromPrimary(backgroundColor)}`\n }}\n >\n <div\n data-name=\"answerBackground\"\n style={{\n backgroundColor\n }}\n className={style.background}\n />\n <div className={style.content}>\n <span\n data-name=\"answerContent\"\n className={classnames(style.selectedAnswerText, innerHTML)}\n title={title}\n // eslint-disable-next-line react/no-danger\n dangerouslySetInnerHTML={{__html: title}}\n />\n </div>\n </div>\n );\n });\n\n if (selectedAnswersViews.length > 0) {\n return <div className={style.selectedAnswers}>{selectedAnswersViews}</div>;\n } else {\n return (\n <div className={style.emptyAnswers}>\n <EmptyView help={help} />\n </div>\n );\n }\n};\n\nSelectedAnswerSections.propTypes = {\n answers: AnswersPropTypes,\n help: EmptyView.propTypes.help,\n backgroundColor: PropTypes.string\n};\n\nconst QcmDrag = ({answers, help}, context) => {\n const {skin} = context;\n const primarySkinColor = getOr('#00B0FF', 'common.primary', skin);\n\n return (\n <div className={style.wrapper}>\n <SelectedAnswerSections answers={answers} help={help} backgroundColor={primarySkinColor} />\n <div data-name=\"qcm-drag-answers\" className={style.answers}>\n <Choices answers={answers} />\n </div>\n </div>\n );\n};\n\nQcmDrag.propTypes = {\n answers: AnswersPropTypes,\n help: SelectedAnswerSections.propTypes.help\n};\n\nQcmDrag.contextTypes = {\n skin: Provider.childContextTypes.skin\n};\n\nexport default QcmDrag;\n"],"file":"index.js"}
@@ -7,6 +7,16 @@
7
7
  @value black from colors;
8
8
  @value medium from colors;
9
9
  @value dark from colors;
10
+ @value cm_grey_75 from colors;
11
+ @value cm_grey_150 from colors;
12
+ @value cm_blue_900 from colors;
13
+
14
+ .wrapper {
15
+ width: 100%;
16
+ display: flex;
17
+ flex-wrap: wrap;
18
+ flex-basis: auto;
19
+ }
10
20
 
11
21
  .answers {
12
22
  width: 100%;
@@ -19,17 +29,17 @@
19
29
  padding: 0 24px 0 0;
20
30
  }
21
31
 
22
- .qcmDrag {
32
+ .choices {
23
33
  width: 100%;
24
34
  display: flex;
35
+ justify-content: center;
25
36
  flex-wrap: wrap;
26
37
  flex-basis: auto;
27
38
  }
28
39
 
29
40
  .selectedAnswers {
30
41
  composes: answers;
31
- border: 2px dashed color(dark lightness(85%));
32
- background-color: xtraLightGrey;
42
+ border-bottom: 2px solid cm_grey_150;
33
43
  padding: 16px 8px 8px 16px;
34
44
  margin: 0 0 24px;
35
45
  }
@@ -49,32 +59,77 @@
49
59
  color: medium;
50
60
  }
51
61
 
52
- .answer {
62
+ .choice {
53
63
  font-family: 'Gilroy';
54
- font-size: 13px;
55
- font-weight: 600;
56
- color: black;
57
- line-height: 22px;
58
- background-color: white;
59
- border: 1px solid color(dark lightness(85%));
64
+ font-size: 14px;
65
+ font-weight: 700;
66
+ line-height: 20px;
60
67
  box-sizing: border-box;
61
- margin-right: 8px;
62
- margin-bottom: 8px;
63
- border-radius: 3px;
68
+ border-radius: 8px;
64
69
  padding: 13px 16px;
65
70
  cursor: pointer;
71
+ margin-bottom: 8px;
72
+ margin-right: 8px;
73
+ overflow: hidden;
74
+ hyphens: auto;
75
+ -ms-word-break: break-all;
76
+ word-break: break-all;
77
+ word-break: break-word;
78
+ }
79
+
80
+ .unselected {
81
+ composes: choice;
82
+ color: cm_blue_900;
83
+ line-height: 20px;
84
+ background-color: white;
85
+ box-shadow: 0px 4px 16px rgba(0, 0, 0, 0.12);
66
86
  }
67
87
 
68
- .answer:hover {
69
- background-color: light;
88
+ .selected {
89
+ composes: choice;
90
+ position: relative;
91
+ border-radius: 8px;
70
92
  }
71
93
 
72
- .selectedAnswer {
73
- composes: answer;
94
+ .background {
95
+ top: 0;
96
+ left: 0;
97
+ position: absolute;
98
+ border-radius: 8px;
99
+ height: 100%;
100
+ width: 100%;
101
+ transition: opacity 0.25s linear, background-color 0.25s linear;
102
+ }
103
+
104
+ .selected .background{
105
+ opacity: 1;
106
+ }
107
+
108
+ .selected:hover {
109
+ background: black;
110
+ }
111
+
112
+ .selected:hover .background{
113
+ opacity: 0.8;
114
+ }
115
+
116
+ .content {
117
+ height: 100%;
118
+ width: 100%;
119
+ border-radius: 8px;
120
+ position: relative;
121
+ }
122
+
123
+ .unselected:hover {
124
+ background-color: cm_grey_75;
125
+ }
126
+
127
+ .selectedAnswerText {
128
+ color: white;
74
129
  }
75
130
 
76
131
  .invisibleAnswer {
77
- composes: answer;
132
+ composes: choice;
78
133
  display: none;
79
134
  }
80
135
 
@@ -82,8 +137,4 @@
82
137
  .selectedAnswers {
83
138
  min-height: auto;
84
139
  }
85
-
86
- .answer:hover {
87
- background-color: white;
88
- }
89
140
  }
@@ -57,10 +57,8 @@ const QCMImage = (props, context) => {
57
57
  "data-name": "answerText",
58
58
  className: style.titleWrapper
59
59
  }, /*#__PURE__*/React.createElement("div", {
60
- className: classnames(style.title, innerHTML),
61
- style: _extends({}, selected && {
62
- color: primarySkinColor
63
- }) // eslint-disable-next-line react/no-danger
60
+ title: title,
61
+ className: classnames(style.title, innerHTML) // eslint-disable-next-line react/no-danger
64
62
  ,
65
63
  dangerouslySetInnerHTML: {
66
64
  __html: title
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/molecule/questions/qcm-graphic/index.js"],"names":["React","PropTypes","classnames","Provider","innerHTML","getShadowBoxColorFromPrimary","style","QCMImage","props","context","answers","skin","primarySkinColor","answersViews","map","answer","key","onClick","title","selected","image","ariaLabel","boxShadow","backgroundColor","background","content","imageWrapper","backgroundImage","titleWrapper","color","__html","wrapper","contextTypes","childContextTypes","propTypes","arrayOf","shape","string","bool","func"],"mappings":"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","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 style={{\n ...(selected && {color: primarySkinColor})\n }}\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"}
1
+ {"version":3,"sources":["../../../../src/molecule/questions/qcm-graphic/index.js"],"names":["React","PropTypes","classnames","Provider","innerHTML","getShadowBoxColorFromPrimary","style","QCMImage","props","context","answers","skin","primarySkinColor","answersViews","map","answer","key","onClick","title","selected","image","ariaLabel","boxShadow","backgroundColor","background","content","imageWrapper","backgroundImage","titleWrapper","__html","wrapper","contextTypes","childContextTypes","propTypes","arrayOf","shape","string","bool","func"],"mappings":"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","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 title={title}\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,6 +2,7 @@
2
2
  @value mobile from breakpoints;
3
3
  @value colors: "../../../variables/colors.css";
4
4
  @value white from colors;
5
+ @value black from colors;
5
6
  @value cm_grey_75 from colors;
6
7
  @value cm_primary_blue from colors;
7
8
  @value cm_blue_900 from colors;
@@ -26,6 +27,7 @@
26
27
  margin: 0 4px 8px;
27
28
  box-shadow: 0px 4px 16px rgba(0, 0, 0, 0.12);
28
29
  border-radius: 16px;
30
+ transition: background-color 0.25s linear;
29
31
  }
30
32
 
31
33
  .background {
@@ -62,6 +64,11 @@
62
64
  width: 100%;
63
65
  align-items: center;
64
66
  justify-content: center;
67
+ overflow: hidden;
68
+ hyphens: auto;
69
+ -ms-word-break: break-all;
70
+ word-break: break-all;
71
+ word-break: break-word;
65
72
  }
66
73
 
67
74
  .title {
@@ -89,15 +96,19 @@
89
96
 
90
97
  .selected {
91
98
  composes: answer;
92
- color: cm_primary_blue;
99
+ color: white;
93
100
  }
94
101
 
95
102
  .selected .background{
96
- opacity: 0.05;
103
+ opacity: 1;
97
104
  }
98
105
 
99
106
  .selected:hover .background{
100
- opacity: 0.1;
107
+ opacity: 0.8;
108
+ }
109
+
110
+ .selected.answer:hover {
111
+ background-color: black;
101
112
  }
102
113
 
103
114
  @media mobile {
@@ -138,10 +149,17 @@
138
149
  }
139
150
 
140
151
  .titleWrapper {
152
+ height: 100%;
153
+ width: 100%;
154
+ display: flex;
141
155
  white-space: wrap;
142
156
  overflow: hidden;
143
157
  padding: 0;
144
158
  justify-content: left;
145
159
  font-size: 15px;
146
160
  }
161
+
162
+ .title {
163
+ text-align: left;
164
+ }
147
165
  }
@@ -6,7 +6,7 @@ export default {
6
6
  selected: false,
7
7
  image: 'https://images.unsplash.com/photo-1467890947394-8171244e5410?dpr=2&auto=format&fit=crop&w=1080&h=720&q=80&cs=tinysrgb&crop=&bg='
8
8
  }, {
9
- title: 'Lorem ipsum',
9
+ title: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sut labore et dolore magna aliqua.',
10
10
  onClick: () => {},
11
11
  selected: false,
12
12
  image: 'https://images.unsplash.com/photo-1494477920939-88c59ba76428?dpr=2&auto=format&fit=crop&w=1080&h=607&q=80&cs=tinysrgb&crop=&bg='
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../src/molecule/questions/qcm-graphic/test/fixtures/default.js"],"names":["props","answers","title","onClick","selected","image"],"mappings":"AAAA,eAAe;AACbA,EAAAA,KAAK,EAAE;AACLC,IAAAA,OAAO,EAAE,CACP;AACEC,MAAAA,KAAK,EAAE,iCADT;AAEEC,MAAAA,OAAO,EAAE,MAAM,CAAE,CAFnB;AAGEC,MAAAA,QAAQ,EAAE,KAHZ;AAIEC,MAAAA,KAAK,EACH;AALJ,KADO,EAQP;AACEH,MAAAA,KAAK,EAAE,aADT;AAEEC,MAAAA,OAAO,EAAE,MAAM,CAAE,CAFnB;AAGEC,MAAAA,QAAQ,EAAE,KAHZ;AAIEC,MAAAA,KAAK,EACH;AALJ,KARO,EAeP;AACEH,MAAAA,KAAK,EAAE,OADT;AAEEC,MAAAA,OAAO,EAAE,MAAM,CAAE,CAFnB;AAGEC,MAAAA,QAAQ,EAAE,IAHZ;AAIEC,MAAAA,KAAK,EACH;AALJ,KAfO,EAsBP;AACEH,MAAAA,KAAK,EAAE,6BADT;AAEEC,MAAAA,OAAO,EAAE,MAAM,CAAE,CAFnB;AAGEC,MAAAA,QAAQ,EAAE,KAHZ;AAIEC,MAAAA,KAAK,EACH;AALJ,KAtBO,EA6BP;AACEH,MAAAA,KAAK,EAAE,iCADT;AAEEC,MAAAA,OAAO,EAAE,MAAM,CAAE,CAFnB;AAGEC,MAAAA,QAAQ,EAAE,KAHZ;AAIEC,MAAAA,KAAK,EACH;AALJ,KA7BO,EAoCP;AACEH,MAAAA,KAAK,EAAE,aADT;AAEEC,MAAAA,OAAO,EAAE,MAAM,CAAE,CAFnB;AAGEC,MAAAA,QAAQ,EAAE,KAHZ;AAIEC,MAAAA,KAAK,EACH;AALJ,KApCO,EA2CP;AACEH,MAAAA,KAAK,EAAE,OADT;AAEEC,MAAAA,OAAO,EAAE,MAAM,CAAE,CAFnB;AAGEC,MAAAA,QAAQ,EAAE,IAHZ;AAIEC,MAAAA,KAAK,EACH;AALJ,KA3CO,EAkDP;AACEH,MAAAA,KAAK,EAAE,6BADT;AAEEC,MAAAA,OAAO,EAAE,MAAM,CAAE,CAFnB;AAGEC,MAAAA,QAAQ,EAAE,KAHZ;AAIEC,MAAAA,KAAK,EACH;AALJ,KAlDO;AADJ;AADM,CAAf","sourcesContent":["export default {\n props: {\n answers: [\n {\n title: 'There is no need for a password',\n onClick: () => {},\n selected: false,\n image:\n 'https://images.unsplash.com/photo-1467890947394-8171244e5410?dpr=2&auto=format&fit=crop&w=1080&h=720&q=80&cs=tinysrgb&crop=&bg='\n },\n {\n title: 'Lorem ipsum',\n onClick: () => {},\n selected: false,\n image:\n 'https://images.unsplash.com/photo-1494477920939-88c59ba76428?dpr=2&auto=format&fit=crop&w=1080&h=607&q=80&cs=tinysrgb&crop=&bg='\n },\n {\n title: 'Lorem',\n onClick: () => {},\n selected: true,\n image:\n 'https://images.unsplash.com/photo-1494416952682-200c9e760aac?dpr=2&auto=format&fit=crop&w=1080&h=607&q=80&cs=tinysrgb&crop=&bg='\n },\n {\n title: 'You need to have a password',\n onClick: () => {},\n selected: false,\n image:\n 'https://images.unsplash.com/photo-1493442043090-087540b34c1a?dpr=2&auto=format&fit=crop&w=1080&h=607&q=80&cs=tinysrgb&crop=&bg='\n },\n {\n title: 'There is no need for a password',\n onClick: () => {},\n selected: false,\n image:\n 'https://images.unsplash.com/photo-1467890947394-8171244e5410?dpr=2&auto=format&fit=crop&w=1080&h=720&q=80&cs=tinysrgb&crop=&bg='\n },\n {\n title: 'Lorem ipsum',\n onClick: () => {},\n selected: false,\n image:\n 'https://images.unsplash.com/photo-1494477920939-88c59ba76428?dpr=2&auto=format&fit=crop&w=1080&h=607&q=80&cs=tinysrgb&crop=&bg='\n },\n {\n title: 'Lorem',\n onClick: () => {},\n selected: true,\n image:\n 'https://images.unsplash.com/photo-1494416952682-200c9e760aac?dpr=2&auto=format&fit=crop&w=1080&h=607&q=80&cs=tinysrgb&crop=&bg='\n },\n {\n title: 'You need to have a password',\n onClick: () => {},\n selected: false,\n image:\n 'https://images.unsplash.com/photo-1493442043090-087540b34c1a?dpr=2&auto=format&fit=crop&w=1080&h=607&q=80&cs=tinysrgb&crop=&bg='\n }\n ]\n }\n};\n"],"file":"default.js"}
1
+ {"version":3,"sources":["../../../../../../src/molecule/questions/qcm-graphic/test/fixtures/default.js"],"names":["props","answers","title","onClick","selected","image"],"mappings":"AAAA,eAAe;AACbA,EAAAA,KAAK,EAAE;AACLC,IAAAA,OAAO,EAAE,CACP;AACEC,MAAAA,KAAK,EAAE,iCADT;AAEEC,MAAAA,OAAO,EAAE,MAAM,CAAE,CAFnB;AAGEC,MAAAA,QAAQ,EAAE,KAHZ;AAIEC,MAAAA,KAAK,EACH;AALJ,KADO,EAQP;AACEH,MAAAA,KAAK,EACH,6FAFJ;AAGEC,MAAAA,OAAO,EAAE,MAAM,CAAE,CAHnB;AAIEC,MAAAA,QAAQ,EAAE,KAJZ;AAKEC,MAAAA,KAAK,EACH;AANJ,KARO,EAgBP;AACEH,MAAAA,KAAK,EAAE,OADT;AAEEC,MAAAA,OAAO,EAAE,MAAM,CAAE,CAFnB;AAGEC,MAAAA,QAAQ,EAAE,IAHZ;AAIEC,MAAAA,KAAK,EACH;AALJ,KAhBO,EAuBP;AACEH,MAAAA,KAAK,EAAE,6BADT;AAEEC,MAAAA,OAAO,EAAE,MAAM,CAAE,CAFnB;AAGEC,MAAAA,QAAQ,EAAE,KAHZ;AAIEC,MAAAA,KAAK,EACH;AALJ,KAvBO,EA8BP;AACEH,MAAAA,KAAK,EAAE,iCADT;AAEEC,MAAAA,OAAO,EAAE,MAAM,CAAE,CAFnB;AAGEC,MAAAA,QAAQ,EAAE,KAHZ;AAIEC,MAAAA,KAAK,EACH;AALJ,KA9BO,EAqCP;AACEH,MAAAA,KAAK,EAAE,aADT;AAEEC,MAAAA,OAAO,EAAE,MAAM,CAAE,CAFnB;AAGEC,MAAAA,QAAQ,EAAE,KAHZ;AAIEC,MAAAA,KAAK,EACH;AALJ,KArCO,EA4CP;AACEH,MAAAA,KAAK,EAAE,OADT;AAEEC,MAAAA,OAAO,EAAE,MAAM,CAAE,CAFnB;AAGEC,MAAAA,QAAQ,EAAE,IAHZ;AAIEC,MAAAA,KAAK,EACH;AALJ,KA5CO,EAmDP;AACEH,MAAAA,KAAK,EAAE,6BADT;AAEEC,MAAAA,OAAO,EAAE,MAAM,CAAE,CAFnB;AAGEC,MAAAA,QAAQ,EAAE,KAHZ;AAIEC,MAAAA,KAAK,EACH;AALJ,KAnDO;AADJ;AADM,CAAf","sourcesContent":["export default {\n props: {\n answers: [\n {\n title: 'There is no need for a password',\n onClick: () => {},\n selected: false,\n image:\n 'https://images.unsplash.com/photo-1467890947394-8171244e5410?dpr=2&auto=format&fit=crop&w=1080&h=720&q=80&cs=tinysrgb&crop=&bg='\n },\n {\n title:\n 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sut labore et dolore magna aliqua.',\n onClick: () => {},\n selected: false,\n image:\n 'https://images.unsplash.com/photo-1494477920939-88c59ba76428?dpr=2&auto=format&fit=crop&w=1080&h=607&q=80&cs=tinysrgb&crop=&bg='\n },\n {\n title: 'Lorem',\n onClick: () => {},\n selected: true,\n image:\n 'https://images.unsplash.com/photo-1494416952682-200c9e760aac?dpr=2&auto=format&fit=crop&w=1080&h=607&q=80&cs=tinysrgb&crop=&bg='\n },\n {\n title: 'You need to have a password',\n onClick: () => {},\n selected: false,\n image:\n 'https://images.unsplash.com/photo-1493442043090-087540b34c1a?dpr=2&auto=format&fit=crop&w=1080&h=607&q=80&cs=tinysrgb&crop=&bg='\n },\n {\n title: 'There is no need for a password',\n onClick: () => {},\n selected: false,\n image:\n 'https://images.unsplash.com/photo-1467890947394-8171244e5410?dpr=2&auto=format&fit=crop&w=1080&h=720&q=80&cs=tinysrgb&crop=&bg='\n },\n {\n title: 'Lorem ipsum',\n onClick: () => {},\n selected: false,\n image:\n 'https://images.unsplash.com/photo-1494477920939-88c59ba76428?dpr=2&auto=format&fit=crop&w=1080&h=607&q=80&cs=tinysrgb&crop=&bg='\n },\n {\n title: 'Lorem',\n onClick: () => {},\n selected: true,\n image:\n 'https://images.unsplash.com/photo-1494416952682-200c9e760aac?dpr=2&auto=format&fit=crop&w=1080&h=607&q=80&cs=tinysrgb&crop=&bg='\n },\n {\n title: 'You need to have a password',\n onClick: () => {},\n selected: false,\n image:\n 'https://images.unsplash.com/photo-1493442043090-087540b34c1a?dpr=2&auto=format&fit=crop&w=1080&h=607&q=80&cs=tinysrgb&crop=&bg='\n }\n ]\n }\n};\n"],"file":"default.js"}
@@ -6,7 +6,7 @@ export default {
6
6
  selected: false,
7
7
  image: 'https://images.unsplash.com/photo-1467890947394-8171244e5410?dpr=2&auto=format&fit=crop&w=1080&h=720&q=80&cs=tinysrgb&crop=&bg='
8
8
  }, {
9
- title: 'Lorem ipsum',
9
+ title: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua tempor incididunt ut labore et dolore tempor incididunt ut labore et dolore magna aliqua tempor incididunt ut labore et dolore.',
10
10
  onClick: () => {},
11
11
  selected: false,
12
12
  image: 'https://images.unsplash.com/photo-1494477920939-88c59ba76428?dpr=2&auto=format&fit=crop&w=1080&h=607&q=80&cs=tinysrgb&crop=&bg='