@coorpacademy/components 10.22.8 → 10.22.11

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 (90) hide show
  1. package/README.md +1 -0
  2. package/es/atom/choice/index.native.js +6 -3
  3. package/es/atom/choice/index.native.js.map +1 -1
  4. package/es/molecule/cm-popin/index.js +4 -2
  5. package/es/molecule/cm-popin/index.js.map +1 -1
  6. package/es/molecule/questions/mobile/draggable/index.native.js +144 -0
  7. package/es/molecule/questions/mobile/draggable/index.native.js.map +1 -0
  8. package/es/molecule/questions/mobile/slide/index.native.js +119 -0
  9. package/es/molecule/questions/mobile/slide/index.native.js.map +1 -0
  10. package/es/molecule/review-correction-popin/prop-types.js +0 -1
  11. package/es/molecule/review-correction-popin/prop-types.js.map +1 -1
  12. package/es/organism/review-congrats/style.css +1 -1
  13. package/es/organism/review-slide/index.js +194 -0
  14. package/es/organism/review-slide/index.js.map +1 -0
  15. package/es/organism/review-slide/prop-types.js +39 -0
  16. package/es/organism/review-slide/prop-types.js.map +1 -0
  17. package/es/organism/review-slide/style.css +173 -0
  18. package/es/organism/review-stacked-slides/index.js +74 -0
  19. package/es/organism/review-stacked-slides/index.js.map +1 -0
  20. package/es/organism/review-stacked-slides/prop-types.js +15 -0
  21. package/es/organism/review-stacked-slides/prop-types.js.map +1 -0
  22. package/es/organism/review-stacked-slides/style.css +174 -0
  23. package/es/template/app-review/index.js +7 -8
  24. package/es/template/app-review/index.js.map +1 -1
  25. package/es/template/app-review/index.native.js +6 -10
  26. package/es/template/app-review/index.native.js.map +1 -1
  27. package/es/template/app-review/player/index.js +36 -0
  28. package/es/template/app-review/player/index.js.map +1 -0
  29. package/es/template/app-review/{slides → player}/index.native.js +15 -13
  30. package/es/template/app-review/player/index.native.js.map +1 -0
  31. package/es/template/app-review/player/prop-types.js +12 -0
  32. package/es/template/app-review/player/prop-types.js.map +1 -0
  33. package/es/template/app-review/player/style.css +41 -0
  34. package/es/template/app-review/prop-types.js +3 -3
  35. package/es/template/app-review/prop-types.js.map +1 -1
  36. package/es/types/styles.d.js +2 -0
  37. package/es/types/styles.d.js.map +1 -0
  38. package/es/variables/shadow.js +13 -0
  39. package/es/variables/shadow.js.map +1 -0
  40. package/lib/atom/choice/index.native.js +6 -3
  41. package/lib/atom/choice/index.native.js.map +1 -1
  42. package/lib/molecule/cm-popin/index.js +4 -2
  43. package/lib/molecule/cm-popin/index.js.map +1 -1
  44. package/lib/molecule/questions/mobile/draggable/index.native.js +161 -0
  45. package/lib/molecule/questions/mobile/draggable/index.native.js.map +1 -0
  46. package/lib/molecule/questions/mobile/slide/index.native.js +136 -0
  47. package/lib/molecule/questions/mobile/slide/index.native.js.map +1 -0
  48. package/lib/molecule/review-correction-popin/prop-types.js +0 -1
  49. package/lib/molecule/review-correction-popin/prop-types.js.map +1 -1
  50. package/lib/organism/review-congrats/style.css +1 -1
  51. package/lib/organism/review-slide/index.js +217 -0
  52. package/lib/organism/review-slide/index.js.map +1 -0
  53. package/lib/organism/review-slide/prop-types.js +52 -0
  54. package/lib/organism/review-slide/prop-types.js.map +1 -0
  55. package/lib/organism/review-slide/style.css +173 -0
  56. package/lib/organism/review-stacked-slides/index.js +90 -0
  57. package/lib/organism/review-stacked-slides/index.js.map +1 -0
  58. package/lib/organism/review-stacked-slides/prop-types.js +29 -0
  59. package/lib/organism/review-stacked-slides/prop-types.js.map +1 -0
  60. package/lib/organism/review-stacked-slides/style.css +174 -0
  61. package/lib/template/app-review/index.js +6 -8
  62. package/lib/template/app-review/index.js.map +1 -1
  63. package/lib/template/app-review/index.native.js +6 -11
  64. package/lib/template/app-review/index.native.js.map +1 -1
  65. package/lib/template/app-review/player/index.js +51 -0
  66. package/lib/template/app-review/player/index.js.map +1 -0
  67. package/lib/template/app-review/{slides → player}/index.native.js +14 -12
  68. package/lib/template/app-review/player/index.native.js.map +1 -0
  69. package/lib/template/app-review/player/prop-types.js +25 -0
  70. package/lib/template/app-review/player/prop-types.js.map +1 -0
  71. package/lib/template/app-review/player/style.css +41 -0
  72. package/lib/template/app-review/prop-types.js +3 -3
  73. package/lib/template/app-review/prop-types.js.map +1 -1
  74. package/lib/types/styles.d.js +2 -0
  75. package/lib/types/styles.d.js.map +1 -0
  76. package/lib/variables/shadow.js +18 -0
  77. package/lib/variables/shadow.js.map +1 -0
  78. package/package.json +3 -2
  79. package/es/template/app-review/slides/index.js +0 -352
  80. package/es/template/app-review/slides/index.js.map +0 -1
  81. package/es/template/app-review/slides/index.native.js.map +0 -1
  82. package/es/template/app-review/slides/prop-types.js +0 -111
  83. package/es/template/app-review/slides/prop-types.js.map +0 -1
  84. package/es/template/app-review/slides/style.css +0 -409
  85. package/lib/template/app-review/slides/index.js +0 -385
  86. package/lib/template/app-review/slides/index.js.map +0 -1
  87. package/lib/template/app-review/slides/index.native.js.map +0 -1
  88. package/lib/template/app-review/slides/prop-types.js +0 -131
  89. package/lib/template/app-review/slides/prop-types.js.map +0 -1
  90. package/lib/template/app-review/slides/style.css +0 -409
@@ -0,0 +1,194 @@
1
+ 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); }
2
+
3
+ import React, { useMemo } from 'react';
4
+ import PropTypes from 'prop-types';
5
+ import classnames from 'classnames';
6
+ import get from 'lodash/fp/get';
7
+ import getOr from 'lodash/fp/getOr';
8
+ import Answer from '../../molecule/answer';
9
+ import ButtonLink from '../../atom/button-link';
10
+ import Loader from '../../atom/loader';
11
+ import Provider from '../../atom/provider';
12
+ import ReviewCorrectionPopin from '../../molecule/review-correction-popin';
13
+ import propTypes from './prop-types';
14
+ import style from './style.css';
15
+
16
+ const CorrectionPopin = ({
17
+ correctionPopinProps,
18
+ slideIndex,
19
+ showCorrectionPopin,
20
+ animateCorrectionPopin
21
+ }) => {
22
+ if (!showCorrectionPopin) return null;
23
+ const klf = getOr({}, 'klf', correctionPopinProps);
24
+ const information = getOr({
25
+ label: '',
26
+ message: ''
27
+ }, 'information', correctionPopinProps);
28
+ const next = get('next', correctionPopinProps);
29
+ const _correctionPopinProps = {
30
+ next: {
31
+ onClick: () => {
32
+ // eslint-disable-next-line no-console
33
+ console.log('Next Slide');
34
+ },
35
+ label: next && next.label,
36
+ 'data-name': `next-question-button-${slideIndex}`,
37
+ 'aria-label': next && next['aria-label']
38
+ },
39
+ klf,
40
+ information,
41
+ type: correctionPopinProps.type,
42
+ resultLabel: correctionPopinProps.resultLabel
43
+ };
44
+ return /*#__PURE__*/React.createElement("div", {
45
+ className: classnames(style.correctionPopinWrapper, animateCorrectionPopin ? style.popinAnimation : null)
46
+ }, /*#__PURE__*/React.createElement(ReviewCorrectionPopin, _correctionPopinProps));
47
+ };
48
+
49
+ CorrectionPopin.propTypes = process.env.NODE_ENV !== "production" ? {
50
+ slideIndex: PropTypes.string,
51
+ showCorrectionPopin: PropTypes.bool,
52
+ animateCorrectionPopin: PropTypes.bool,
53
+ correctionPopinProps: propTypes.correctionPopinProps
54
+ } : {};
55
+
56
+ const ValidateButton = ({
57
+ slideIndex,
58
+ validateButton,
59
+ primarySkinColor
60
+ }) => {
61
+ const {
62
+ label,
63
+ onClick,
64
+ disabled
65
+ } = validateButton;
66
+ const validateButtonProps = {
67
+ type: 'primary',
68
+ label,
69
+ 'aria-label': label,
70
+ 'data-name': `slide-validate-button-${slideIndex}`,
71
+ onClick,
72
+ disabled,
73
+ className: style.validateButton,
74
+ customStyle: {
75
+ backgroundColor: primarySkinColor
76
+ }
77
+ /*
78
+ slide validation action, this will trigger the correction popin
79
+ (with the useEffect that fires the dispatchers, if there is a nextContent content,
80
+ it will be loaded here) but will not trigger any animations unless the endReview
81
+ signal is received (all slide will disappear, also fired in a useEffect),
82
+ if it is the last slide and the content needs to be different, then that update will
83
+ be handled on the next slide logic but the content will be carried from here.
84
+ onClick: async () => {
85
+ // endReview based on nextContent ref exit node values: 'successExitNode' : 'failExitNode'
86
+ await validateSlide();
87
+ },
88
+ */
89
+
90
+ };
91
+ return /*#__PURE__*/React.createElement("div", {
92
+ key: "button-wrapper",
93
+ className: style.validateButtonWrapper
94
+ }, /*#__PURE__*/React.createElement(ButtonLink, validateButtonProps));
95
+ };
96
+
97
+ ValidateButton.propTypes = process.env.NODE_ENV !== "production" ? {
98
+ slideIndex: PropTypes.string,
99
+ validateButton: propTypes.validateButton,
100
+ primarySkinColor: PropTypes.string
101
+ } : {};
102
+
103
+ const QuestionContainer = props => {
104
+ const {
105
+ answerUI,
106
+ questionText,
107
+ questionOrigin
108
+ } = props;
109
+ if (!answerUI || !questionText) return null;
110
+ const answerProps = get(['model', 'choices'], answerUI) ?
111
+ /* istanbul ignore next */
112
+ _extends(_extends({}, answerUI), {}, {
113
+ model: _extends(_extends({}, answerUI.model), {}, {
114
+ answers: answerUI.model.choices
115
+ })
116
+ }) : answerUI;
117
+ return /*#__PURE__*/React.createElement("div", {
118
+ key: "content-container",
119
+ className: style.slideContentContainer
120
+ }, /*#__PURE__*/React.createElement("div", {
121
+ key: "from-course",
122
+ className: style.questionOrigin
123
+ }, questionOrigin), /*#__PURE__*/React.createElement("div", {
124
+ key: "title",
125
+ className: style.question
126
+ }, questionText), /*#__PURE__*/React.createElement("div", {
127
+ key: "help",
128
+ className: style.help
129
+ }, get('help', answerUI)), /*#__PURE__*/React.createElement("div", {
130
+ key: "answer-container",
131
+ className: style.answerContainer
132
+ }, /*#__PURE__*/React.createElement(Answer, _extends({}, answerProps, {
133
+ key: "answer"
134
+ }))));
135
+ };
136
+
137
+ QuestionContainer.propTypes = process.env.NODE_ENV !== "production" ? {
138
+ answerUI: PropTypes.shape(propTypes.slide.answerUI),
139
+ questionText: PropTypes.string,
140
+ questionOrigin: PropTypes.string
141
+ } : {};
142
+
143
+ const Slide = (props, context) => {
144
+ const {
145
+ slide,
146
+ validateButton,
147
+ correctionPopinProps,
148
+ slideIndex = '0'
149
+ } = props;
150
+ const {
151
+ skin
152
+ } = context;
153
+ const primarySkinColor = useMemo(() => getOr('#00B0FF', 'common.primary', skin), [skin]);
154
+ const {
155
+ loading,
156
+ loadingAriaLabel,
157
+ parentContentTitle,
158
+ questionText,
159
+ answerUI,
160
+ showCorrectionPopin,
161
+ animateCorrectionPopin
162
+ } = slide;
163
+ return /*#__PURE__*/React.createElement("div", {
164
+ "data-name": `slide-container`,
165
+ className: style.slide
166
+ }, loading ? /*#__PURE__*/React.createElement(Loader, {
167
+ className: style.loader,
168
+ theme: "default",
169
+ "aria-label": loadingAriaLabel
170
+ }) : [/*#__PURE__*/React.createElement(QuestionContainer, {
171
+ questionOrigin: parentContentTitle,
172
+ questionText: questionText,
173
+ answerUI: answerUI,
174
+ key: "question-container"
175
+ }), /*#__PURE__*/React.createElement(ValidateButton, {
176
+ slideIndex: slideIndex,
177
+ validateButton: validateButton,
178
+ primarySkinColor: primarySkinColor,
179
+ key: "validate-button"
180
+ }), /*#__PURE__*/React.createElement(CorrectionPopin, {
181
+ correctionPopinProps: correctionPopinProps,
182
+ slideIndex: slideIndex,
183
+ showCorrectionPopin: showCorrectionPopin,
184
+ animateCorrectionPopin: animateCorrectionPopin,
185
+ key: "correction-popin"
186
+ })]);
187
+ };
188
+
189
+ Slide.propTypes = process.env.NODE_ENV !== "production" ? propTypes : {};
190
+ Slide.contextTypes = {
191
+ skin: Provider.childContextTypes.skin
192
+ };
193
+ export default Slide;
194
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/organism/review-slide/index.js"],"names":["React","useMemo","PropTypes","classnames","get","getOr","Answer","ButtonLink","Loader","Provider","ReviewCorrectionPopin","propTypes","style","CorrectionPopin","correctionPopinProps","slideIndex","showCorrectionPopin","animateCorrectionPopin","klf","information","label","message","next","_correctionPopinProps","onClick","console","log","type","resultLabel","correctionPopinWrapper","popinAnimation","string","bool","ValidateButton","validateButton","primarySkinColor","disabled","validateButtonProps","className","customStyle","backgroundColor","validateButtonWrapper","QuestionContainer","props","answerUI","questionText","questionOrigin","answerProps","model","answers","choices","slideContentContainer","question","help","answerContainer","shape","slide","Slide","context","skin","loading","loadingAriaLabel","parentContentTitle","loader","contextTypes","childContextTypes"],"mappings":"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","sourcesContent":["import React, {useMemo} from 'react';\nimport PropTypes from 'prop-types';\nimport classnames from 'classnames';\nimport get from 'lodash/fp/get';\nimport getOr from 'lodash/fp/getOr';\nimport Answer from '../../molecule/answer';\nimport ButtonLink from '../../atom/button-link';\nimport Loader from '../../atom/loader';\nimport Provider from '../../atom/provider';\nimport ReviewCorrectionPopin from '../../molecule/review-correction-popin';\nimport propTypes from './prop-types';\nimport style from './style.css';\n\nconst CorrectionPopin = ({\n correctionPopinProps,\n slideIndex,\n showCorrectionPopin,\n animateCorrectionPopin\n}) => {\n if (!showCorrectionPopin) return null;\n\n const klf = getOr({}, 'klf', correctionPopinProps);\n const information = getOr({label: '', message: ''}, 'information', correctionPopinProps);\n const next = get('next', correctionPopinProps);\n\n const _correctionPopinProps = {\n next: {\n onClick: () => {\n // eslint-disable-next-line no-console\n console.log('Next Slide');\n },\n label: next && next.label,\n 'data-name': `next-question-button-${slideIndex}`,\n 'aria-label': next && next['aria-label']\n },\n klf,\n information,\n type: correctionPopinProps.type,\n resultLabel: correctionPopinProps.resultLabel\n };\n\n return (\n <div\n className={classnames(\n style.correctionPopinWrapper,\n animateCorrectionPopin ? style.popinAnimation : null\n )}\n >\n <ReviewCorrectionPopin {..._correctionPopinProps} />\n </div>\n );\n};\n\nCorrectionPopin.propTypes = {\n slideIndex: PropTypes.string,\n showCorrectionPopin: PropTypes.bool,\n animateCorrectionPopin: PropTypes.bool,\n correctionPopinProps: propTypes.correctionPopinProps\n};\n\nconst ValidateButton = ({slideIndex, validateButton, primarySkinColor}) => {\n const {label, onClick, disabled} = validateButton;\n const validateButtonProps = {\n type: 'primary',\n label,\n 'aria-label': label,\n 'data-name': `slide-validate-button-${slideIndex}`,\n onClick,\n disabled,\n className: style.validateButton,\n customStyle: {\n backgroundColor: primarySkinColor\n }\n /*\n slide validation action, this will trigger the correction popin\n (with the useEffect that fires the dispatchers, if there is a nextContent content,\n it will be loaded here) but will not trigger any animations unless the endReview\n signal is received (all slide will disappear, also fired in a useEffect),\n\n if it is the last slide and the content needs to be different, then that update will\n be handled on the next slide logic but the content will be carried from here.\n onClick: async () => {\n // endReview based on nextContent ref exit node values: 'successExitNode' : 'failExitNode'\n await validateSlide();\n },\n */\n };\n\n return (\n <div key=\"button-wrapper\" className={style.validateButtonWrapper}>\n <ButtonLink {...validateButtonProps} />\n </div>\n );\n};\n\nValidateButton.propTypes = {\n slideIndex: PropTypes.string,\n validateButton: propTypes.validateButton,\n primarySkinColor: PropTypes.string\n};\n\nconst QuestionContainer = props => {\n const {answerUI, questionText, questionOrigin} = props;\n if (!answerUI || !questionText) return null;\n\n const answerProps = get(['model', 'choices'], answerUI)\n ? /* istanbul ignore next */ {\n ...answerUI,\n model: {\n ...answerUI.model,\n answers: answerUI.model.choices\n }\n }\n : answerUI;\n\n return (\n <div key=\"content-container\" className={style.slideContentContainer}>\n <div key=\"from-course\" className={style.questionOrigin}>\n {questionOrigin}\n </div>\n <div key=\"title\" className={style.question}>\n {questionText}\n </div>\n <div key=\"help\" className={style.help}>\n {get('help', answerUI)}\n </div>\n <div key=\"answer-container\" className={style.answerContainer}>\n <Answer {...answerProps} key=\"answer\" />\n </div>\n </div>\n );\n};\n\nQuestionContainer.propTypes = {\n answerUI: PropTypes.shape(propTypes.slide.answerUI),\n questionText: PropTypes.string,\n questionOrigin: PropTypes.string\n};\n\nconst Slide = (props, context) => {\n const {slide, validateButton, correctionPopinProps, slideIndex = '0'} = props;\n\n const {skin} = context;\n const primarySkinColor = useMemo(() => getOr('#00B0FF', 'common.primary', skin), [skin]);\n const {\n loading,\n loadingAriaLabel,\n parentContentTitle,\n questionText,\n answerUI,\n showCorrectionPopin,\n animateCorrectionPopin\n } = slide;\n\n return (\n <div data-name={`slide-container`} className={style.slide}>\n {loading ? (\n <Loader className={style.loader} theme=\"default\" aria-label={loadingAriaLabel} />\n ) : (\n [\n <QuestionContainer\n questionOrigin={parentContentTitle}\n questionText={questionText}\n answerUI={answerUI}\n key=\"question-container\"\n />,\n <ValidateButton\n slideIndex={slideIndex}\n validateButton={validateButton}\n primarySkinColor={primarySkinColor}\n key=\"validate-button\"\n />,\n <CorrectionPopin\n correctionPopinProps={correctionPopinProps}\n slideIndex={slideIndex}\n showCorrectionPopin={showCorrectionPopin}\n animateCorrectionPopin={animateCorrectionPopin}\n key=\"correction-popin\"\n />\n ]\n )}\n </div>\n );\n};\n\nSlide.propTypes = propTypes;\n\nSlide.contextTypes = {\n skin: Provider.childContextTypes.skin\n};\n\nexport default Slide;\n"],"file":"index.js"}
@@ -0,0 +1,39 @@
1
+ import PropTypes from 'prop-types';
2
+ import ReviewCorrectionPopinPropTypes from '../../molecule/review-correction-popin/prop-types';
3
+ import AnswerPropTypes from '../../molecule/answer/prop-types';
4
+ export const SlideProp = PropTypes.shape({
5
+ hidden: PropTypes.bool,
6
+ position: PropTypes.number,
7
+ loading: PropTypes.bool,
8
+ loadingAriaLabel: PropTypes.string,
9
+ animationType: PropTypes.string,
10
+ // 'unstack' | 'restack'
11
+ isCorrect: PropTypes.bool,
12
+ animateCorrectionPopin: PropTypes.bool,
13
+ showCorrectionPopin: PropTypes.bool,
14
+ parentContentTitle: PropTypes.string,
15
+ questionText: PropTypes.string,
16
+ answerUI: PropTypes.shape(AnswerPropTypes)
17
+ });
18
+ export default {
19
+ slideIndex: PropTypes.string,
20
+ slide: SlideProp,
21
+ validateButton: PropTypes.shape({
22
+ label: PropTypes.string.isRequired,
23
+ onClick: PropTypes.func.isRequired,
24
+ disabled: PropTypes.bool
25
+ }),
26
+ correctionPopinProps: PropTypes.shape({
27
+ klf: ReviewCorrectionPopinPropTypes.klf,
28
+ information: ReviewCorrectionPopinPropTypes.information,
29
+ next: PropTypes.shape({
30
+ label: PropTypes.string,
31
+ 'aria-label': PropTypes.string // Pourquoi le onClick du next n'est pas ici !
32
+ // updateSlidesOnNext: PropTypes.func.isRequired ???
33
+
34
+ }),
35
+ resultLabel: ReviewCorrectionPopinPropTypes.resultLabel,
36
+ type: ReviewCorrectionPopinPropTypes.type
37
+ })
38
+ };
39
+ //# sourceMappingURL=prop-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/organism/review-slide/prop-types.js"],"names":["PropTypes","ReviewCorrectionPopinPropTypes","AnswerPropTypes","SlideProp","shape","hidden","bool","position","number","loading","loadingAriaLabel","string","animationType","isCorrect","animateCorrectionPopin","showCorrectionPopin","parentContentTitle","questionText","answerUI","slideIndex","slide","validateButton","label","isRequired","onClick","func","disabled","correctionPopinProps","klf","information","next","resultLabel","type"],"mappings":"AAAA,OAAOA,SAAP,MAAsB,YAAtB;AACA,OAAOC,8BAAP,MAA2C,mDAA3C;AACA,OAAOC,eAAP,MAA4B,kCAA5B;AAEA,OAAO,MAAMC,SAAS,GAAGH,SAAS,CAACI,KAAV,CAAgB;AACvCC,EAAAA,MAAM,EAAEL,SAAS,CAACM,IADqB;AAEvCC,EAAAA,QAAQ,EAAEP,SAAS,CAACQ,MAFmB;AAGvCC,EAAAA,OAAO,EAAET,SAAS,CAACM,IAHoB;AAIvCI,EAAAA,gBAAgB,EAAEV,SAAS,CAACW,MAJW;AAKvCC,EAAAA,aAAa,EAAEZ,SAAS,CAACW,MALc;AAKN;AACjCE,EAAAA,SAAS,EAAEb,SAAS,CAACM,IANkB;AAOvCQ,EAAAA,sBAAsB,EAAEd,SAAS,CAACM,IAPK;AAQvCS,EAAAA,mBAAmB,EAAEf,SAAS,CAACM,IARQ;AASvCU,EAAAA,kBAAkB,EAAEhB,SAAS,CAACW,MATS;AAUvCM,EAAAA,YAAY,EAAEjB,SAAS,CAACW,MAVe;AAWvCO,EAAAA,QAAQ,EAAElB,SAAS,CAACI,KAAV,CAAgBF,eAAhB;AAX6B,CAAhB,CAAlB;AAcP,eAAe;AACbiB,EAAAA,UAAU,EAAEnB,SAAS,CAACW,MADT;AAEbS,EAAAA,KAAK,EAAEjB,SAFM;AAGbkB,EAAAA,cAAc,EAAErB,SAAS,CAACI,KAAV,CAAgB;AAC9BkB,IAAAA,KAAK,EAAEtB,SAAS,CAACW,MAAV,CAAiBY,UADM;AAE9BC,IAAAA,OAAO,EAAExB,SAAS,CAACyB,IAAV,CAAeF,UAFM;AAG9BG,IAAAA,QAAQ,EAAE1B,SAAS,CAACM;AAHU,GAAhB,CAHH;AAQbqB,EAAAA,oBAAoB,EAAE3B,SAAS,CAACI,KAAV,CAAgB;AACpCwB,IAAAA,GAAG,EAAE3B,8BAA8B,CAAC2B,GADA;AAEpCC,IAAAA,WAAW,EAAE5B,8BAA8B,CAAC4B,WAFR;AAGpCC,IAAAA,IAAI,EAAE9B,SAAS,CAACI,KAAV,CAAgB;AACpBkB,MAAAA,KAAK,EAAEtB,SAAS,CAACW,MADG;AAEpB,oBAAcX,SAAS,CAACW,MAFJ,CAEW;AAC/B;;AAHoB,KAAhB,CAH8B;AAQpCoB,IAAAA,WAAW,EAAE9B,8BAA8B,CAAC8B,WARR;AASpCC,IAAAA,IAAI,EAAE/B,8BAA8B,CAAC+B;AATD,GAAhB;AART,CAAf","sourcesContent":["import PropTypes from 'prop-types';\nimport ReviewCorrectionPopinPropTypes from '../../molecule/review-correction-popin/prop-types';\nimport AnswerPropTypes from '../../molecule/answer/prop-types';\n\nexport const SlideProp = PropTypes.shape({\n hidden: PropTypes.bool,\n position: PropTypes.number,\n loading: PropTypes.bool,\n loadingAriaLabel: PropTypes.string,\n animationType: PropTypes.string, // 'unstack' | 'restack'\n isCorrect: PropTypes.bool,\n animateCorrectionPopin: PropTypes.bool,\n showCorrectionPopin: PropTypes.bool,\n parentContentTitle: PropTypes.string,\n questionText: PropTypes.string,\n answerUI: PropTypes.shape(AnswerPropTypes)\n});\n\nexport default {\n slideIndex: PropTypes.string,\n slide: SlideProp,\n validateButton: PropTypes.shape({\n label: PropTypes.string.isRequired,\n onClick: PropTypes.func.isRequired,\n disabled: PropTypes.bool\n }),\n correctionPopinProps: PropTypes.shape({\n klf: ReviewCorrectionPopinPropTypes.klf,\n information: ReviewCorrectionPopinPropTypes.information,\n next: PropTypes.shape({\n label: PropTypes.string,\n 'aria-label': PropTypes.string // Pourquoi le onClick du next n'est pas ici !\n // updateSlidesOnNext: PropTypes.func.isRequired ???\n }),\n resultLabel: ReviewCorrectionPopinPropTypes.resultLabel,\n type: ReviewCorrectionPopinPropTypes.type\n })\n};\n"],"file":"prop-types.js"}
@@ -0,0 +1,173 @@
1
+ @value colors: "../../variables/colors.css";
2
+ @value black from colors;
3
+ @value white from colors;
4
+ @value cm_blue_900 from colors;
5
+ @value cm_grey_400 from colors;
6
+ @value breakpoints: "../../variables/breakpoints.css";
7
+ @value mobile from breakpoints;
8
+ @value tablet from breakpoints;
9
+
10
+ .fontBase {
11
+ font-family: "Gilroy";
12
+ user-select: none;
13
+ }
14
+
15
+ .slide{
16
+ align-items: center;
17
+ display: flex;
18
+ flex-direction: column;
19
+ justify-content: flex-start;
20
+ }
21
+
22
+ .slideContentContainer {
23
+ margin-top: 15px;
24
+ height: 563px;
25
+ display: flex;
26
+ justify-items: center;
27
+ align-items: center;
28
+ flex-direction: column;
29
+ overflow-y: auto;
30
+ position: relative;
31
+ width: 100%;
32
+ }
33
+
34
+ .validateButtonWrapper {
35
+ position: absolute;
36
+ bottom: 64px;
37
+ background-color: black;
38
+ border-radius: 7px;
39
+ min-width: 250px;
40
+ width: min-content;
41
+ }
42
+
43
+ /* ie fallback */
44
+ _:-ms-fullscreen, :root .validateButtonWrapper {
45
+ width: 300px;
46
+ left: 40%;
47
+ right: 40%;
48
+ }
49
+
50
+ .answerContainer {
51
+ max-width: 95%;
52
+ display: flex;
53
+ justify-content: center;
54
+ height: 100%;
55
+ /*
56
+ To break wrappers layout (to enclose large answers in the scroll bar), works like
57
+ display: contents for this use case but w ie11 support
58
+ */
59
+ display: grid;
60
+ }
61
+
62
+ .question {
63
+ composes: fontBase;
64
+ font-size: 20px;
65
+ font-weight: bold;
66
+ color: cm_blue_900;
67
+ text-align: center;
68
+ margin: 24px 0 4px;
69
+ max-width: 85%;
70
+ box-sizing: border-box;
71
+ }
72
+
73
+ .questionOrigin {
74
+ composes: fontBase;
75
+ font-size: 15px;
76
+ color: cm_blue_900;
77
+ margin-top: 49px;
78
+ text-align: center;
79
+ max-width: 95%;
80
+ }
81
+
82
+ .questionOrigin:empty:after {
83
+ content: "\a0";
84
+ }
85
+
86
+ .help {
87
+ composes: fontBase;
88
+ font-size: 15px;
89
+ color: cm_grey_400;
90
+ flex-grow: 0.1;
91
+ margin: 4px 0 10px;
92
+ text-align: center;
93
+ max-width: 95%;
94
+ }
95
+
96
+ /* to keep the content space even if the help label is empty */
97
+ .help:empty:after {
98
+ content: "\a0";
99
+ }
100
+
101
+ @keyframes popInAnimation {
102
+ from {
103
+ transform: translate3d(0, 200px, 0);
104
+ }
105
+ to {
106
+ transform: translate3d(0, 0, 0);
107
+ }
108
+ }
109
+
110
+ .correctionPopinWrapper {
111
+ position: absolute;
112
+ bottom: 0px;
113
+ border-radius: 7px;
114
+ margin: 0 15px 40px;
115
+ width: 95%;
116
+ }
117
+
118
+ .popinAnimation {
119
+ animation: popInAnimation 0.5s ease-out forwards;
120
+ }
121
+
122
+ /* ie fallback */
123
+ _:-ms-fullscreen, :root .correctionPopinWrapper {
124
+ left: 15px;
125
+ }
126
+
127
+ .validateButton {
128
+ color: white;
129
+ transition: opacity 0.25s ease-in;
130
+ }
131
+
132
+ .validateButton:hover {
133
+ opacity: 0.8;
134
+ }
135
+
136
+ .loader {
137
+ height: 60px;
138
+ width: 60px;
139
+ }
140
+
141
+ @media tablet {
142
+ .slideContentContainer {
143
+ height: 473px;
144
+ }
145
+
146
+ @keyframes popInAnimation {
147
+ from {
148
+ transform: translate3d(0, 400px, 0);
149
+ }
150
+ to {
151
+ transform: translate3d(0, 0, 0);
152
+ }
153
+ }
154
+ }
155
+
156
+ @media mobile {
157
+ .slideContentContainer {
158
+ height: 511px;
159
+ }
160
+
161
+ .questionOrigin, .question, .help, .answerContainer {
162
+ max-width: 90%;
163
+ }
164
+
165
+ @keyframes popInAnimation {
166
+ from {
167
+ transform: translate3d(0, 500px, 0);
168
+ }
169
+ to {
170
+ transform: translate3d(0, 0, 0);
171
+ }
172
+ }
173
+ }
@@ -0,0 +1,74 @@
1
+ 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); }
2
+
3
+ import React from 'react';
4
+ import classnames from 'classnames';
5
+ import _toString from 'lodash/fp/toString';
6
+ import ReviewSlide from '../review-slide';
7
+ import propTypes from './prop-types';
8
+ import style from './style.css';
9
+ export const TOTAL_SLIDES_STACK = 5;
10
+ const stylesByPosition = {
11
+ 0: style.position0,
12
+ 1: style.position1,
13
+ 2: style.position2,
14
+ 3: style.position3,
15
+ 4: style.position4
16
+ };
17
+
18
+ const getSlideAnimation = (action, position, hidden) => {
19
+ switch (action) {
20
+ case 'unstack':
21
+ return style.slideOutHideAndIn;
22
+
23
+ case 'restack':
24
+ return style.slideOutAndIn;
25
+
26
+ default:
27
+ return hidden ? style.hiddenSlide : stylesByPosition[position];
28
+ }
29
+ };
30
+
31
+ const StackedSlides = ({
32
+ slides,
33
+ endReview,
34
+ validateButton,
35
+ correctionPopinProps
36
+ }) => {
37
+ const stackedSlides = []; // eslint-disable-next-line fp/no-loops
38
+
39
+ for (let slideIndex = 0; slideIndex < TOTAL_SLIDES_STACK; slideIndex++) {
40
+ const slide = slides[_toString(slideIndex)];
41
+
42
+ const {
43
+ animationType,
44
+ hidden,
45
+ position
46
+ } = slide;
47
+ const slideView = /*#__PURE__*/React.createElement("div", {
48
+ key: `slide-${slideIndex}`,
49
+ "data-name": `slide-${slideIndex}`,
50
+ className: classnames(style.slideBase, getSlideAnimation(animationType, position, hidden), endReview ? style.endReview : null)
51
+ }, /*#__PURE__*/React.createElement(ReviewSlide, _extends({
52
+ slideIndex: _toString(slideIndex),
53
+ slide,
54
+ validateButton,
55
+ correctionPopinProps
56
+ }, {
57
+ key: slideIndex
58
+ })));
59
+ stackedSlides.push(slideView);
60
+ }
61
+
62
+ return /*#__PURE__*/React.createElement("div", {
63
+ key: "stacked-slides-container-y-overflow",
64
+ className: style.stackedSlidesYAxisOverflowContainer
65
+ }, /*#__PURE__*/React.createElement("div", {
66
+ key: "stacked-slides-container",
67
+ "data-name": "stacked-slides-container",
68
+ className: style.stackedSlidesContainer
69
+ }, stackedSlides));
70
+ };
71
+
72
+ StackedSlides.propTypes = process.env.NODE_ENV !== "production" ? propTypes : {};
73
+ export default StackedSlides;
74
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/organism/review-stacked-slides/index.js"],"names":["React","classnames","_toString","ReviewSlide","propTypes","style","TOTAL_SLIDES_STACK","stylesByPosition","position0","position1","position2","position3","position4","getSlideAnimation","action","position","hidden","slideOutHideAndIn","slideOutAndIn","hiddenSlide","StackedSlides","slides","endReview","validateButton","correctionPopinProps","stackedSlides","slideIndex","slide","animationType","slideView","slideBase","push","stackedSlidesYAxisOverflowContainer","stackedSlidesContainer"],"mappings":";;AAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,OAAOC,UAAP,MAAuB,YAAvB;AACA,OAAOC,SAAP,MAAsB,oBAAtB;AACA,OAAOC,WAAP,MAAwB,iBAAxB;AACA,OAAOC,SAAP,MAAsB,cAAtB;AACA,OAAOC,KAAP,MAAkB,aAAlB;AAEA,OAAO,MAAMC,kBAAkB,GAAG,CAA3B;AAEP,MAAMC,gBAAgB,GAAG;AACvB,KAAGF,KAAK,CAACG,SADc;AAEvB,KAAGH,KAAK,CAACI,SAFc;AAGvB,KAAGJ,KAAK,CAACK,SAHc;AAIvB,KAAGL,KAAK,CAACM,SAJc;AAKvB,KAAGN,KAAK,CAACO;AALc,CAAzB;;AAQA,MAAMC,iBAAiB,GAAG,CAACC,MAAD,EAASC,QAAT,EAAmBC,MAAnB,KAA8B;AACtD,UAAQF,MAAR;AACE,SAAK,SAAL;AACE,aAAOT,KAAK,CAACY,iBAAb;;AACF,SAAK,SAAL;AACE,aAAOZ,KAAK,CAACa,aAAb;;AACF;AACE,aAAOF,MAAM,GAAGX,KAAK,CAACc,WAAT,GAAuBZ,gBAAgB,CAACQ,QAAD,CAApD;AANJ;AAQD,CATD;;AAWA,MAAMK,aAAa,GAAG,CAAC;AAACC,EAAAA,MAAD;AAASC,EAAAA,SAAT;AAAoBC,EAAAA,cAApB;AAAoCC,EAAAA;AAApC,CAAD,KAA+D;AACnF,QAAMC,aAAa,GAAG,EAAtB,CADmF,CAEnF;;AACA,OAAK,IAAIC,UAAU,GAAG,CAAtB,EAAyBA,UAAU,GAAGpB,kBAAtC,EAA0DoB,UAAU,EAApE,EAAwE;AACtE,UAAMC,KAAK,GAAGN,MAAM,CAACnB,SAAS,CAACwB,UAAD,CAAV,CAApB;;AACA,UAAM;AAACE,MAAAA,aAAD;AAAgBZ,MAAAA,MAAhB;AAAwBD,MAAAA;AAAxB,QAAoCY,KAA1C;AAEA,UAAME,SAAS,gBACb;AACE,MAAA,GAAG,EAAG,SAAQH,UAAW,EAD3B;AAEE,mBAAY,SAAQA,UAAW,EAFjC;AAGE,MAAA,SAAS,EAAEzB,UAAU,CACnBI,KAAK,CAACyB,SADa,EAEnBjB,iBAAiB,CAACe,aAAD,EAAgBb,QAAhB,EAA0BC,MAA1B,CAFE,EAGnBM,SAAS,GAAGjB,KAAK,CAACiB,SAAT,GAAqB,IAHX;AAHvB,oBASE,oBAAC,WAAD,WACM;AACFI,MAAAA,UAAU,EAAExB,SAAS,CAACwB,UAAD,CADnB;AAEFC,MAAAA,KAFE;AAGFJ,MAAAA,cAHE;AAIFC,MAAAA;AAJE,KADN;AAOE,MAAA,GAAG,EAAEE;AAPP,OATF,CADF;AAqBAD,IAAAA,aAAa,CAACM,IAAd,CAAmBF,SAAnB;AACD;;AAED,sBACE;AACE,IAAA,GAAG,EAAC,qCADN;AAEE,IAAA,SAAS,EAAExB,KAAK,CAAC2B;AAFnB,kBAIE;AACE,IAAA,GAAG,EAAC,0BADN;AAEE,iBAAU,0BAFZ;AAGE,IAAA,SAAS,EAAE3B,KAAK,CAAC4B;AAHnB,KAKGR,aALH,CAJF,CADF;AAcD,CA7CD;;AA+CAL,aAAa,CAAChB,SAAd,2CAA0BA,SAA1B;AAEA,eAAegB,aAAf","sourcesContent":["import React from 'react';\nimport classnames from 'classnames';\nimport _toString from 'lodash/fp/toString';\nimport ReviewSlide from '../review-slide';\nimport propTypes from './prop-types';\nimport style from './style.css';\n\nexport const TOTAL_SLIDES_STACK = 5;\n\nconst stylesByPosition = {\n 0: style.position0,\n 1: style.position1,\n 2: style.position2,\n 3: style.position3,\n 4: style.position4\n};\n\nconst getSlideAnimation = (action, position, hidden) => {\n switch (action) {\n case 'unstack':\n return style.slideOutHideAndIn;\n case 'restack':\n return style.slideOutAndIn;\n default:\n return hidden ? style.hiddenSlide : stylesByPosition[position];\n }\n};\n\nconst StackedSlides = ({slides, endReview, validateButton, correctionPopinProps}) => {\n const stackedSlides = [];\n // eslint-disable-next-line fp/no-loops\n for (let slideIndex = 0; slideIndex < TOTAL_SLIDES_STACK; slideIndex++) {\n const slide = slides[_toString(slideIndex)];\n const {animationType, hidden, position} = slide;\n\n const slideView = (\n <div\n key={`slide-${slideIndex}`}\n data-name={`slide-${slideIndex}`}\n className={classnames(\n style.slideBase,\n getSlideAnimation(animationType, position, hidden),\n endReview ? style.endReview : null\n )}\n >\n <ReviewSlide\n {...{\n slideIndex: _toString(slideIndex),\n slide,\n validateButton,\n correctionPopinProps\n }}\n key={slideIndex}\n />\n </div>\n );\n stackedSlides.push(slideView);\n }\n\n return (\n <div\n key=\"stacked-slides-container-y-overflow\"\n className={style.stackedSlidesYAxisOverflowContainer}\n >\n <div\n key=\"stacked-slides-container\"\n data-name=\"stacked-slides-container\"\n className={style.stackedSlidesContainer}\n >\n {stackedSlides}\n </div>\n </div>\n );\n};\n\nStackedSlides.propTypes = propTypes;\n\nexport default StackedSlides;\n"],"file":"index.js"}
@@ -0,0 +1,15 @@
1
+ import PropTypes from 'prop-types';
2
+ import ReviewSlideProps, { SlideProp } from '../review-slide/prop-types';
3
+ export default {
4
+ validateButton: ReviewSlideProps.validateButton,
5
+ correctionPopinProps: ReviewSlideProps.correctionPopinProps,
6
+ slides: PropTypes.shape({
7
+ '0': SlideProp,
8
+ '1': SlideProp,
9
+ '2': SlideProp,
10
+ '3': SlideProp,
11
+ '4': SlideProp
12
+ }),
13
+ endReview: PropTypes.bool
14
+ };
15
+ //# sourceMappingURL=prop-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/organism/review-stacked-slides/prop-types.js"],"names":["PropTypes","ReviewSlideProps","SlideProp","validateButton","correctionPopinProps","slides","shape","endReview","bool"],"mappings":"AAAA,OAAOA,SAAP,MAAsB,YAAtB;AACA,OAAOC,gBAAP,IAA0BC,SAA1B,QAA0C,4BAA1C;AAEA,eAAe;AACbC,EAAAA,cAAc,EAAEF,gBAAgB,CAACE,cADpB;AAEbC,EAAAA,oBAAoB,EAAEH,gBAAgB,CAACG,oBAF1B;AAGbC,EAAAA,MAAM,EAAEL,SAAS,CAACM,KAAV,CAAgB;AACtB,SAAKJ,SADiB;AAEtB,SAAKA,SAFiB;AAGtB,SAAKA,SAHiB;AAItB,SAAKA,SAJiB;AAKtB,SAAKA;AALiB,GAAhB,CAHK;AAUbK,EAAAA,SAAS,EAAEP,SAAS,CAACQ;AAVR,CAAf","sourcesContent":["import PropTypes from 'prop-types';\nimport ReviewSlideProps, {SlideProp} from '../review-slide/prop-types';\n\nexport default {\n validateButton: ReviewSlideProps.validateButton,\n correctionPopinProps: ReviewSlideProps.correctionPopinProps,\n slides: PropTypes.shape({\n '0': SlideProp,\n '1': SlideProp,\n '2': SlideProp,\n '3': SlideProp,\n '4': SlideProp\n }),\n endReview: PropTypes.bool\n};\n"],"file":"prop-types.js"}