@atlaskit/quiz-widget 2.0.1 → 2.0.4
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.
- package/CHANGELOG.md +19 -0
- package/build/tsconfig.json +10 -3
- package/dist/cjs/components/QuizWidget/index.js +120 -64
- package/dist/cjs/components/QuizWidget/styled.js +53 -16
- package/dist/cjs/components/QuizWidget/types.js +4 -2
- package/dist/cjs/index.js +14 -4
- package/dist/cjs/styled.js +16 -6
- package/dist/cjs/version.json +1 -1
- package/dist/es2019/components/QuizWidget/index.js +76 -54
- package/dist/es2019/components/QuizWidget/styled.js +11 -12
- package/dist/es2019/components/QuizWidget/types.js +1 -1
- package/dist/es2019/index.js +1 -2
- package/dist/es2019/styled.js +2 -3
- package/dist/es2019/version.json +1 -1
- package/dist/esm/components/QuizWidget/index.js +88 -55
- package/dist/esm/components/QuizWidget/styled.js +14 -13
- package/dist/esm/components/QuizWidget/types.js +1 -1
- package/dist/esm/index.js +1 -2
- package/dist/esm/styled.js +5 -4
- package/dist/esm/version.json +1 -1
- package/dist/types/components/QuizWidget/index.d.ts +1 -0
- package/dist/types/components/QuizWidget/styled.d.ts +10 -10
- package/dist/types/styled.d.ts +1 -1
- package/package.json +12 -9
- package/dist/cjs/components/QuizWidget/index.js.map +0 -1
- package/dist/cjs/components/QuizWidget/styled.js.map +0 -1
- package/dist/cjs/components/QuizWidget/types.js.map +0 -1
- package/dist/cjs/index.js.map +0 -1
- package/dist/cjs/styled.js.map +0 -1
- package/dist/es2019/components/QuizWidget/index.d.ts +0 -14
- package/dist/es2019/components/QuizWidget/index.js.map +0 -1
- package/dist/es2019/components/QuizWidget/styled.d.ts +0 -11
- package/dist/es2019/components/QuizWidget/styled.js.map +0 -1
- package/dist/es2019/components/QuizWidget/types.d.ts +0 -10
- package/dist/es2019/components/QuizWidget/types.js.map +0 -1
- package/dist/es2019/index.d.ts +0 -1
- package/dist/es2019/index.js.map +0 -1
- package/dist/es2019/styled.d.ts +0 -2
- package/dist/es2019/styled.js.map +0 -1
- package/dist/esm/components/QuizWidget/index.d.ts +0 -14
- package/dist/esm/components/QuizWidget/index.js.map +0 -1
- package/dist/esm/components/QuizWidget/styled.d.ts +0 -11
- package/dist/esm/components/QuizWidget/styled.js.map +0 -1
- package/dist/esm/components/QuizWidget/types.d.ts +0 -10
- package/dist/esm/components/QuizWidget/types.js.map +0 -1
- package/dist/esm/index.d.ts +0 -1
- package/dist/esm/index.js.map +0 -1
- package/dist/esm/styled.d.ts +0 -2
- package/dist/esm/styled.js.map +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,24 @@
|
|
|
1
1
|
# @atlaskit/quiz-widget
|
|
2
2
|
|
|
3
|
+
## 2.0.4
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [`cb2392f6d33`](https://bitbucket.org/atlassian/atlassian-frontend/commits/cb2392f6d33) - Upgrade to TypeScript 4.2.4
|
|
8
|
+
- Updated dependencies
|
|
9
|
+
|
|
10
|
+
## 2.0.3
|
|
11
|
+
|
|
12
|
+
### Patch Changes
|
|
13
|
+
|
|
14
|
+
- Updated dependencies
|
|
15
|
+
|
|
16
|
+
## 2.0.2
|
|
17
|
+
|
|
18
|
+
### Patch Changes
|
|
19
|
+
|
|
20
|
+
- [`d3265f19be`](https://bitbucket.org/atlassian/atlassian-frontend/commits/d3265f19be) - Transpile packages using babel rather than tsc
|
|
21
|
+
|
|
3
22
|
## 2.0.1
|
|
4
23
|
|
|
5
24
|
### Patch Changes
|
package/build/tsconfig.json
CHANGED
|
@@ -4,6 +4,13 @@
|
|
|
4
4
|
"target": "es5",
|
|
5
5
|
"paths": {}
|
|
6
6
|
},
|
|
7
|
-
"include": [
|
|
8
|
-
|
|
9
|
-
|
|
7
|
+
"include": [
|
|
8
|
+
"../src/**/*.ts",
|
|
9
|
+
"../src/**/*.tsx"
|
|
10
|
+
],
|
|
11
|
+
"exclude": [
|
|
12
|
+
"../src/**/__tests__/*",
|
|
13
|
+
"../src/**/*.test.*",
|
|
14
|
+
"../src/**/test.*"
|
|
15
|
+
]
|
|
16
|
+
}
|
|
@@ -1,66 +1,122 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
var
|
|
4
|
-
|
|
5
|
-
var
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
var
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
6
|
+
|
|
7
|
+
Object.defineProperty(exports, "__esModule", {
|
|
8
|
+
value: true
|
|
9
|
+
});
|
|
10
|
+
exports.default = void 0;
|
|
11
|
+
|
|
12
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
13
|
+
|
|
14
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
15
|
+
|
|
16
|
+
var _button = _interopRequireDefault(require("@atlaskit/button"));
|
|
17
|
+
|
|
18
|
+
var _check = _interopRequireDefault(require("@atlaskit/icon/glyph/check"));
|
|
19
|
+
|
|
20
|
+
var _chevronLeftLarge = _interopRequireDefault(require("@atlaskit/icon/glyph/chevron-left-large"));
|
|
21
|
+
|
|
22
|
+
var _chevronRightLarge = _interopRequireDefault(require("@atlaskit/icon/glyph/chevron-right-large"));
|
|
23
|
+
|
|
24
|
+
var _cross = _interopRequireDefault(require("@atlaskit/icon/glyph/cross"));
|
|
25
|
+
|
|
26
|
+
var _radio = require("@atlaskit/radio");
|
|
27
|
+
|
|
28
|
+
var _spinner = _interopRequireDefault(require("@atlaskit/spinner"));
|
|
29
|
+
|
|
30
|
+
var _styled = require("./styled");
|
|
31
|
+
|
|
32
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
33
|
+
|
|
34
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
35
|
+
|
|
36
|
+
var QuizWidget = function QuizWidget(props) {
|
|
37
|
+
var _useState = (0, _react.useState)(1),
|
|
38
|
+
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
|
|
39
|
+
currentQuestionNumber = _useState2[0],
|
|
40
|
+
setCurrentQuestionNumber = _useState2[1];
|
|
41
|
+
|
|
42
|
+
var _useState3 = (0, _react.useState)(new Map()),
|
|
43
|
+
_useState4 = (0, _slicedToArray2.default)(_useState3, 2),
|
|
44
|
+
checkedAnswers = _useState4[0],
|
|
45
|
+
setCheckedAnswers = _useState4[1];
|
|
46
|
+
|
|
47
|
+
var _onChange = function onChange(e, index) {
|
|
48
|
+
var value = e.currentTarget.value;
|
|
49
|
+
!props.score ? setCheckedAnswers(function (prevState) {
|
|
50
|
+
return new Map(prevState).set(index, value);
|
|
51
|
+
}) : setCheckedAnswers(checkedAnswers);
|
|
52
|
+
};
|
|
53
|
+
|
|
54
|
+
var handlePrevClick = function handlePrevClick() {
|
|
55
|
+
setCurrentQuestionNumber(currentQuestionNumber - 1);
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
var handleNextClick = function handleNextClick() {
|
|
59
|
+
props.onNextButtonClick && props.onNextButtonClick();
|
|
60
|
+
setCurrentQuestionNumber(currentQuestionNumber + 1);
|
|
61
|
+
};
|
|
62
|
+
|
|
63
|
+
var onSubmitButtonClick = function onSubmitButtonClick() {
|
|
64
|
+
var chosenQuizAnswers = Array.from(checkedAnswers.values());
|
|
65
|
+
props.onSubmitButtonClick && props.onSubmitButtonClick(chosenQuizAnswers);
|
|
66
|
+
setCurrentQuestionNumber(currentQuestionNumber + 1);
|
|
67
|
+
};
|
|
68
|
+
|
|
69
|
+
var questionsNumber = Object.keys(props.quizContent.questions).length;
|
|
70
|
+
var isLastSlide = currentQuestionNumber === questionsNumber + 1;
|
|
71
|
+
var isLastQuestion = currentQuestionNumber === questionsNumber;
|
|
72
|
+
var isDisabledSubmit = checkedAnswers.size !== questionsNumber;
|
|
73
|
+
return /*#__PURE__*/_react.default.createElement(_styled.Quiz, null, /*#__PURE__*/_react.default.createElement(_styled.Header, null, /*#__PURE__*/_react.default.createElement(_styled.QuizName, null, props.quizContent.name)), /*#__PURE__*/_react.default.createElement(_styled.QuizBlock, null, !isLastSlide ? /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_styled.Question, null, props.quizContent.questions[currentQuestionNumber]), props.quizContent.answers[currentQuestionNumber].map(function (answer, index) {
|
|
74
|
+
var checkedAnswer = checkedAnswers && checkedAnswers.get(currentQuestionNumber);
|
|
75
|
+
var correctAnswer = props.correctAnswers && props.correctAnswers[currentQuestionNumber];
|
|
76
|
+
return /*#__PURE__*/_react.default.createElement(_styled.Answer, {
|
|
77
|
+
key: index
|
|
78
|
+
}, /*#__PURE__*/_react.default.createElement(_radio.Radio, {
|
|
79
|
+
value: answer,
|
|
80
|
+
label: answer,
|
|
81
|
+
name: answer,
|
|
82
|
+
isChecked: answer === checkedAnswer //error TS7006: Parameter 'e' implicitly has an 'any' type.
|
|
83
|
+
//@fixme TypeScript 4.2.4 upgrade
|
|
84
|
+
,
|
|
85
|
+
onChange: function onChange(e) {
|
|
86
|
+
return _onChange(e, currentQuestionNumber);
|
|
87
|
+
}
|
|
88
|
+
}), props.score && correctAnswer && /*#__PURE__*/_react.default.createElement("span", null, answer === correctAnswer ? /*#__PURE__*/_react.default.createElement(_check.default, {
|
|
89
|
+
label: "right",
|
|
90
|
+
primaryColor: "green"
|
|
91
|
+
}) : answer === checkedAnswer && /*#__PURE__*/_react.default.createElement(_cross.default, {
|
|
92
|
+
label: "wrong",
|
|
93
|
+
primaryColor: "red"
|
|
94
|
+
})));
|
|
95
|
+
})) : !props.score ? /*#__PURE__*/_react.default.createElement(_spinner.default, null) : /*#__PURE__*/_react.default.createElement(_styled.Score, null, /*#__PURE__*/_react.default.createElement("span", null, "".concat(props.score, " / ").concat(questionsNumber, " Correct")), props.score >= questionsNumber / 2 ? /*#__PURE__*/_react.default.createElement("span", null, "Great job!") : /*#__PURE__*/_react.default.createElement("span", null, "Not bad!"))), /*#__PURE__*/_react.default.createElement(_styled.Footer, null, /*#__PURE__*/_react.default.createElement(_styled.NavQuiz, {
|
|
96
|
+
style: {
|
|
97
|
+
visibility: currentQuestionNumber !== 1 ? 'visible' : 'hidden'
|
|
98
|
+
},
|
|
99
|
+
onClick: handlePrevClick
|
|
100
|
+
}, /*#__PURE__*/_react.default.createElement(_chevronLeftLarge.default, {
|
|
101
|
+
label: "prev",
|
|
102
|
+
primaryColor: "#5e6c84",
|
|
103
|
+
size: "large"
|
|
104
|
+
}), /*#__PURE__*/_react.default.createElement(_styled.NavAction, null, isLastSlide && props.score ? 'Review' : 'Previous')), isLastQuestion && !props.score ? /*#__PURE__*/_react.default.createElement(_button.default, {
|
|
105
|
+
appearance: "primary",
|
|
106
|
+
onClick: onSubmitButtonClick,
|
|
107
|
+
isDisabled: isDisabledSubmit
|
|
108
|
+
}, "Submit") : isLastSlide ? /*#__PURE__*/_react.default.createElement(_styled.NavQuiz, null, /*#__PURE__*/_react.default.createElement(_styled.NavAction, null, "Learn More"), /*#__PURE__*/_react.default.createElement(_chevronRightLarge.default, {
|
|
109
|
+
label: "next",
|
|
110
|
+
primaryColor: "#5e6c84",
|
|
111
|
+
size: "large"
|
|
112
|
+
})) : /*#__PURE__*/_react.default.createElement(_styled.NavQuiz, {
|
|
113
|
+
onClick: handleNextClick
|
|
114
|
+
}, /*#__PURE__*/_react.default.createElement(_styled.NavAction, null, "Next"), /*#__PURE__*/_react.default.createElement(_chevronRightLarge.default, {
|
|
115
|
+
label: "next",
|
|
116
|
+
primaryColor: "#5e6c84",
|
|
117
|
+
size: "large"
|
|
118
|
+
}))));
|
|
64
119
|
};
|
|
65
|
-
|
|
66
|
-
|
|
120
|
+
|
|
121
|
+
var _default = QuizWidget;
|
|
122
|
+
exports.default = _default;
|
|
@@ -1,17 +1,54 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
exports.
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
var
|
|
17
|
-
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.Score = exports.QuizName = exports.QuizBlock = exports.Quiz = exports.Question = exports.NavQuiz = exports.NavAction = exports.Header = exports.Footer = exports.Answer = void 0;
|
|
9
|
+
|
|
10
|
+
var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
|
|
11
|
+
|
|
12
|
+
var _styled = _interopRequireDefault(require("@emotion/styled"));
|
|
13
|
+
|
|
14
|
+
var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10;
|
|
15
|
+
|
|
16
|
+
var Quiz = _styled.default.div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n display: flex;\n flex-direction: column;\n font-size: 16px;\n width: 100%;\n padding: 20px 30px 20px 0;\n border: 1px solid grey;\n border-radius: 28px;\n min-width: 300px;\n max-width: 380px;\n"])));
|
|
17
|
+
|
|
18
|
+
exports.Quiz = Quiz;
|
|
19
|
+
|
|
20
|
+
var QuizName = _styled.default.div(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2.default)(["\n margin: 3px 0;\n font-size: 24px;\n font-weight: 500;\n padding-left: 20px;\n"])));
|
|
21
|
+
|
|
22
|
+
exports.QuizName = QuizName;
|
|
23
|
+
|
|
24
|
+
var Header = _styled.default.div(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2.default)(["\n display: flex;\n align-items: start;\n flex-direction: column;\n"])));
|
|
25
|
+
|
|
26
|
+
exports.Header = Header;
|
|
27
|
+
|
|
28
|
+
var QuizBlock = _styled.default.ul(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2.default)(["\n padding-left: 15px;\n margin-bottom: 15px;\n margin-top: 0;\n min-height: 105px;\n"])));
|
|
29
|
+
|
|
30
|
+
exports.QuizBlock = QuizBlock;
|
|
31
|
+
|
|
32
|
+
var Footer = _styled.default.div(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2.default)(["\n padding-left: 8px;\n display: flex;\n justify-content: space-between;\n align-items: center;\n max-height: 32px;\n"])));
|
|
33
|
+
|
|
34
|
+
exports.Footer = Footer;
|
|
35
|
+
|
|
36
|
+
var Question = _styled.default.div(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2.default)(["\n padding-left: 6px;\n margin-bottom: 10px;\n font-size: 14px;\n color: #707070;\n text-align: left;\n"])));
|
|
37
|
+
|
|
38
|
+
exports.Question = Question;
|
|
39
|
+
|
|
40
|
+
var NavQuiz = _styled.default.div(_templateObject7 || (_templateObject7 = (0, _taggedTemplateLiteral2.default)(["\n display: flex;\n align-content: center;\n justify-content: center;\n padding: 0 0 0 3px;\n :hover {\n color: grey;\n }\n"])));
|
|
41
|
+
|
|
42
|
+
exports.NavQuiz = NavQuiz;
|
|
43
|
+
|
|
44
|
+
var NavAction = _styled.default.span(_templateObject8 || (_templateObject8 = (0, _taggedTemplateLiteral2.default)(["\n font-size: 14px;\n font-weight: 500;\n display: flex;\n align-items: center;\n"])));
|
|
45
|
+
|
|
46
|
+
exports.NavAction = NavAction;
|
|
47
|
+
|
|
48
|
+
var Score = _styled.default.div(_templateObject9 || (_templateObject9 = (0, _taggedTemplateLiteral2.default)(["\n margin-top: 10px;\n padding-left: 6px;\n display: flex;\n flex-direction: column;\n text-align: start;\n font-weight: 400;\n gap: 5px;\n"])));
|
|
49
|
+
|
|
50
|
+
exports.Score = Score;
|
|
51
|
+
|
|
52
|
+
var Answer = _styled.default.div(_templateObject10 || (_templateObject10 = (0, _taggedTemplateLiteral2.default)(["\n display: flex;\n align-items: flex-end;\n max-height: 25px;\n"])));
|
|
53
|
+
|
|
54
|
+
exports.Answer = Answer;
|
package/dist/cjs/index.js
CHANGED
|
@@ -1,5 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
var
|
|
4
|
-
|
|
5
|
-
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
Object.defineProperty(exports, "QuizWidget", {
|
|
9
|
+
enumerable: true,
|
|
10
|
+
get: function get() {
|
|
11
|
+
return _QuizWidget.default;
|
|
12
|
+
}
|
|
13
|
+
});
|
|
14
|
+
|
|
15
|
+
var _QuizWidget = _interopRequireDefault(require("./components/QuizWidget"));
|
package/dist/cjs/styled.js
CHANGED
|
@@ -1,8 +1,18 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
3
8
|
exports.QuizWrapper = void 0;
|
|
4
|
-
|
|
5
|
-
var
|
|
6
|
-
|
|
7
|
-
var
|
|
8
|
-
|
|
9
|
+
|
|
10
|
+
var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
|
|
11
|
+
|
|
12
|
+
var _styled = _interopRequireDefault(require("@emotion/styled"));
|
|
13
|
+
|
|
14
|
+
var _templateObject;
|
|
15
|
+
|
|
16
|
+
var QuizWrapper = _styled.default.div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n display: flex;\n justify-content: center;\n margin: 20px;\n"])));
|
|
17
|
+
|
|
18
|
+
exports.QuizWrapper = QuizWrapper;
|
package/dist/cjs/version.json
CHANGED
|
@@ -6,58 +6,80 @@ import ChevronRightLargeIcon from '@atlaskit/icon/glyph/chevron-right-large';
|
|
|
6
6
|
import CrossIcon from '@atlaskit/icon/glyph/cross';
|
|
7
7
|
import { Radio } from '@atlaskit/radio';
|
|
8
8
|
import Spinner from '@atlaskit/spinner';
|
|
9
|
-
import { Answer, Footer, Header, NavQuiz, Question, Quiz, QuizBlock, QuizName, Score, NavAction
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
9
|
+
import { Answer, Footer, Header, NavQuiz, Question, Quiz, QuizBlock, QuizName, Score, NavAction } from './styled';
|
|
10
|
+
|
|
11
|
+
const QuizWidget = props => {
|
|
12
|
+
const [currentQuestionNumber, setCurrentQuestionNumber] = useState(1);
|
|
13
|
+
const [checkedAnswers, setCheckedAnswers] = useState(new Map());
|
|
14
|
+
|
|
15
|
+
const onChange = (e, index) => {
|
|
16
|
+
const value = e.currentTarget.value;
|
|
17
|
+
!props.score ? setCheckedAnswers(prevState => new Map(prevState).set(index, value)) : setCheckedAnswers(checkedAnswers);
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
const handlePrevClick = () => {
|
|
21
|
+
setCurrentQuestionNumber(currentQuestionNumber - 1);
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
const handleNextClick = () => {
|
|
25
|
+
props.onNextButtonClick && props.onNextButtonClick();
|
|
26
|
+
setCurrentQuestionNumber(currentQuestionNumber + 1);
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
const onSubmitButtonClick = () => {
|
|
30
|
+
const chosenQuizAnswers = Array.from(checkedAnswers.values());
|
|
31
|
+
props.onSubmitButtonClick && props.onSubmitButtonClick(chosenQuizAnswers);
|
|
32
|
+
setCurrentQuestionNumber(currentQuestionNumber + 1);
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
const questionsNumber = Object.keys(props.quizContent.questions).length;
|
|
36
|
+
const isLastSlide = currentQuestionNumber === questionsNumber + 1;
|
|
37
|
+
const isLastQuestion = currentQuestionNumber === questionsNumber;
|
|
38
|
+
const isDisabledSubmit = checkedAnswers.size !== questionsNumber;
|
|
39
|
+
return /*#__PURE__*/React.createElement(Quiz, null, /*#__PURE__*/React.createElement(Header, null, /*#__PURE__*/React.createElement(QuizName, null, props.quizContent.name)), /*#__PURE__*/React.createElement(QuizBlock, null, !isLastSlide ? /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Question, null, props.quizContent.questions[currentQuestionNumber]), props.quizContent.answers[currentQuestionNumber].map((answer, index) => {
|
|
40
|
+
const checkedAnswer = checkedAnswers && checkedAnswers.get(currentQuestionNumber);
|
|
41
|
+
const correctAnswer = props.correctAnswers && props.correctAnswers[currentQuestionNumber];
|
|
42
|
+
return /*#__PURE__*/React.createElement(Answer, {
|
|
43
|
+
key: index
|
|
44
|
+
}, /*#__PURE__*/React.createElement(Radio, {
|
|
45
|
+
value: answer,
|
|
46
|
+
label: answer,
|
|
47
|
+
name: answer,
|
|
48
|
+
isChecked: answer === checkedAnswer //error TS7006: Parameter 'e' implicitly has an 'any' type.
|
|
49
|
+
//@fixme TypeScript 4.2.4 upgrade
|
|
50
|
+
,
|
|
51
|
+
onChange: e => onChange(e, currentQuestionNumber)
|
|
52
|
+
}), props.score && correctAnswer && /*#__PURE__*/React.createElement("span", null, answer === correctAnswer ? /*#__PURE__*/React.createElement(CheckIcon, {
|
|
53
|
+
label: "right",
|
|
54
|
+
primaryColor: "green"
|
|
55
|
+
}) : answer === checkedAnswer && /*#__PURE__*/React.createElement(CrossIcon, {
|
|
56
|
+
label: "wrong",
|
|
57
|
+
primaryColor: "red"
|
|
58
|
+
})));
|
|
59
|
+
})) : !props.score ? /*#__PURE__*/React.createElement(Spinner, null) : /*#__PURE__*/React.createElement(Score, null, /*#__PURE__*/React.createElement("span", null, `${props.score} / ${questionsNumber} Correct`), props.score >= questionsNumber / 2 ? /*#__PURE__*/React.createElement("span", null, "Great job!") : /*#__PURE__*/React.createElement("span", null, "Not bad!"))), /*#__PURE__*/React.createElement(Footer, null, /*#__PURE__*/React.createElement(NavQuiz, {
|
|
60
|
+
style: {
|
|
61
|
+
visibility: currentQuestionNumber !== 1 ? 'visible' : 'hidden'
|
|
62
|
+
},
|
|
63
|
+
onClick: handlePrevClick
|
|
64
|
+
}, /*#__PURE__*/React.createElement(ChevronLeftLargeIcon, {
|
|
65
|
+
label: "prev",
|
|
66
|
+
primaryColor: "#5e6c84",
|
|
67
|
+
size: "large"
|
|
68
|
+
}), /*#__PURE__*/React.createElement(NavAction, null, isLastSlide && props.score ? 'Review' : 'Previous')), isLastQuestion && !props.score ? /*#__PURE__*/React.createElement(Button, {
|
|
69
|
+
appearance: "primary",
|
|
70
|
+
onClick: onSubmitButtonClick,
|
|
71
|
+
isDisabled: isDisabledSubmit
|
|
72
|
+
}, "Submit") : isLastSlide ? /*#__PURE__*/React.createElement(NavQuiz, null, /*#__PURE__*/React.createElement(NavAction, null, "Learn More"), /*#__PURE__*/React.createElement(ChevronRightLargeIcon, {
|
|
73
|
+
label: "next",
|
|
74
|
+
primaryColor: "#5e6c84",
|
|
75
|
+
size: "large"
|
|
76
|
+
})) : /*#__PURE__*/React.createElement(NavQuiz, {
|
|
77
|
+
onClick: handleNextClick
|
|
78
|
+
}, /*#__PURE__*/React.createElement(NavAction, null, "Next"), /*#__PURE__*/React.createElement(ChevronRightLargeIcon, {
|
|
79
|
+
label: "next",
|
|
80
|
+
primaryColor: "#5e6c84",
|
|
81
|
+
size: "large"
|
|
82
|
+
}))));
|
|
61
83
|
};
|
|
62
|
-
|
|
63
|
-
|
|
84
|
+
|
|
85
|
+
export default QuizWidget;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import styled from '@emotion/styled';
|
|
2
|
-
export const Quiz = styled.div
|
|
2
|
+
export const Quiz = styled.div`
|
|
3
3
|
display: flex;
|
|
4
4
|
flex-direction: column;
|
|
5
5
|
font-size: 16px;
|
|
@@ -10,38 +10,38 @@ export const Quiz = styled.div `
|
|
|
10
10
|
min-width: 300px;
|
|
11
11
|
max-width: 380px;
|
|
12
12
|
`;
|
|
13
|
-
export const QuizName = styled.div
|
|
13
|
+
export const QuizName = styled.div`
|
|
14
14
|
margin: 3px 0;
|
|
15
15
|
font-size: 24px;
|
|
16
16
|
font-weight: 500;
|
|
17
17
|
padding-left: 20px;
|
|
18
18
|
`;
|
|
19
|
-
export const Header = styled.div
|
|
19
|
+
export const Header = styled.div`
|
|
20
20
|
display: flex;
|
|
21
21
|
align-items: start;
|
|
22
22
|
flex-direction: column;
|
|
23
23
|
`;
|
|
24
|
-
export const QuizBlock = styled.ul
|
|
24
|
+
export const QuizBlock = styled.ul`
|
|
25
25
|
padding-left: 15px;
|
|
26
26
|
margin-bottom: 15px;
|
|
27
27
|
margin-top: 0;
|
|
28
28
|
min-height: 105px;
|
|
29
29
|
`;
|
|
30
|
-
export const Footer = styled.div
|
|
30
|
+
export const Footer = styled.div`
|
|
31
31
|
padding-left: 8px;
|
|
32
32
|
display: flex;
|
|
33
33
|
justify-content: space-between;
|
|
34
34
|
align-items: center;
|
|
35
35
|
max-height: 32px;
|
|
36
36
|
`;
|
|
37
|
-
export const Question = styled.div
|
|
37
|
+
export const Question = styled.div`
|
|
38
38
|
padding-left: 6px;
|
|
39
39
|
margin-bottom: 10px;
|
|
40
40
|
font-size: 14px;
|
|
41
41
|
color: #707070;
|
|
42
42
|
text-align: left;
|
|
43
43
|
`;
|
|
44
|
-
export const NavQuiz = styled.div
|
|
44
|
+
export const NavQuiz = styled.div`
|
|
45
45
|
display: flex;
|
|
46
46
|
align-content: center;
|
|
47
47
|
justify-content: center;
|
|
@@ -50,13 +50,13 @@ export const NavQuiz = styled.div `
|
|
|
50
50
|
color: grey;
|
|
51
51
|
}
|
|
52
52
|
`;
|
|
53
|
-
export const NavAction = styled.span
|
|
53
|
+
export const NavAction = styled.span`
|
|
54
54
|
font-size: 14px;
|
|
55
55
|
font-weight: 500;
|
|
56
56
|
display: flex;
|
|
57
57
|
align-items: center;
|
|
58
58
|
`;
|
|
59
|
-
export const Score = styled.div
|
|
59
|
+
export const Score = styled.div`
|
|
60
60
|
margin-top: 10px;
|
|
61
61
|
padding-left: 6px;
|
|
62
62
|
display: flex;
|
|
@@ -65,9 +65,8 @@ export const Score = styled.div `
|
|
|
65
65
|
font-weight: 400;
|
|
66
66
|
gap: 5px;
|
|
67
67
|
`;
|
|
68
|
-
export const Answer = styled.div
|
|
68
|
+
export const Answer = styled.div`
|
|
69
69
|
display: flex;
|
|
70
70
|
align-items: flex-end;
|
|
71
71
|
max-height: 25px;
|
|
72
|
-
`;
|
|
73
|
-
//# sourceMappingURL=styled.js.map
|
|
72
|
+
`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
export {};
|
package/dist/es2019/index.js
CHANGED
|
@@ -1,2 +1 @@
|
|
|
1
|
-
export { default as QuizWidget } from './components/QuizWidget';
|
|
2
|
-
//# sourceMappingURL=index.js.map
|
|
1
|
+
export { default as QuizWidget } from './components/QuizWidget';
|
package/dist/es2019/styled.js
CHANGED
package/dist/es2019/version.json
CHANGED