@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.
Files changed (49) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/build/tsconfig.json +10 -3
  3. package/dist/cjs/components/QuizWidget/index.js +120 -64
  4. package/dist/cjs/components/QuizWidget/styled.js +53 -16
  5. package/dist/cjs/components/QuizWidget/types.js +4 -2
  6. package/dist/cjs/index.js +14 -4
  7. package/dist/cjs/styled.js +16 -6
  8. package/dist/cjs/version.json +1 -1
  9. package/dist/es2019/components/QuizWidget/index.js +76 -54
  10. package/dist/es2019/components/QuizWidget/styled.js +11 -12
  11. package/dist/es2019/components/QuizWidget/types.js +1 -1
  12. package/dist/es2019/index.js +1 -2
  13. package/dist/es2019/styled.js +2 -3
  14. package/dist/es2019/version.json +1 -1
  15. package/dist/esm/components/QuizWidget/index.js +88 -55
  16. package/dist/esm/components/QuizWidget/styled.js +14 -13
  17. package/dist/esm/components/QuizWidget/types.js +1 -1
  18. package/dist/esm/index.js +1 -2
  19. package/dist/esm/styled.js +5 -4
  20. package/dist/esm/version.json +1 -1
  21. package/dist/types/components/QuizWidget/index.d.ts +1 -0
  22. package/dist/types/components/QuizWidget/styled.d.ts +10 -10
  23. package/dist/types/styled.d.ts +1 -1
  24. package/package.json +12 -9
  25. package/dist/cjs/components/QuizWidget/index.js.map +0 -1
  26. package/dist/cjs/components/QuizWidget/styled.js.map +0 -1
  27. package/dist/cjs/components/QuizWidget/types.js.map +0 -1
  28. package/dist/cjs/index.js.map +0 -1
  29. package/dist/cjs/styled.js.map +0 -1
  30. package/dist/es2019/components/QuizWidget/index.d.ts +0 -14
  31. package/dist/es2019/components/QuizWidget/index.js.map +0 -1
  32. package/dist/es2019/components/QuizWidget/styled.d.ts +0 -11
  33. package/dist/es2019/components/QuizWidget/styled.js.map +0 -1
  34. package/dist/es2019/components/QuizWidget/types.d.ts +0 -10
  35. package/dist/es2019/components/QuizWidget/types.js.map +0 -1
  36. package/dist/es2019/index.d.ts +0 -1
  37. package/dist/es2019/index.js.map +0 -1
  38. package/dist/es2019/styled.d.ts +0 -2
  39. package/dist/es2019/styled.js.map +0 -1
  40. package/dist/esm/components/QuizWidget/index.d.ts +0 -14
  41. package/dist/esm/components/QuizWidget/index.js.map +0 -1
  42. package/dist/esm/components/QuizWidget/styled.d.ts +0 -11
  43. package/dist/esm/components/QuizWidget/styled.js.map +0 -1
  44. package/dist/esm/components/QuizWidget/types.d.ts +0 -10
  45. package/dist/esm/components/QuizWidget/types.js.map +0 -1
  46. package/dist/esm/index.d.ts +0 -1
  47. package/dist/esm/index.js.map +0 -1
  48. package/dist/esm/styled.d.ts +0 -2
  49. 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
@@ -4,6 +4,13 @@
4
4
  "target": "es5",
5
5
  "paths": {}
6
6
  },
7
- "include": ["../src/**/*.ts", "../src/**/*.tsx"],
8
- "exclude": ["../src/**/__tests__/*"]
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
- Object.defineProperty(exports, "__esModule", { value: true });
3
- var tslib_1 = require("tslib");
4
- var react_1 = tslib_1.__importStar(require("react"));
5
- var button_1 = tslib_1.__importDefault(require("@atlaskit/button"));
6
- var check_1 = tslib_1.__importDefault(require("@atlaskit/icon/glyph/check"));
7
- var chevron_left_large_1 = tslib_1.__importDefault(require("@atlaskit/icon/glyph/chevron-left-large"));
8
- var chevron_right_large_1 = tslib_1.__importDefault(require("@atlaskit/icon/glyph/chevron-right-large"));
9
- var cross_1 = tslib_1.__importDefault(require("@atlaskit/icon/glyph/cross"));
10
- var radio_1 = require("@atlaskit/radio");
11
- var spinner_1 = tslib_1.__importDefault(require("@atlaskit/spinner"));
12
- var styled_1 = require("./styled");
13
- var QuizWidget = function (props) {
14
- var _a = tslib_1.__read(react_1.useState(1), 2), currentQuestionNumber = _a[0], setCurrentQuestionNumber = _a[1];
15
- var _b = tslib_1.__read(react_1.useState(new Map()), 2), checkedAnswers = _b[0], setCheckedAnswers = _b[1];
16
- var onChange = function (e, index) {
17
- var value = e.currentTarget.value;
18
- !props.score
19
- ? setCheckedAnswers(function (prevState) { return new Map(prevState).set(index, value); })
20
- : setCheckedAnswers(checkedAnswers);
21
- };
22
- var handlePrevClick = function () {
23
- setCurrentQuestionNumber(currentQuestionNumber - 1);
24
- };
25
- var handleNextClick = function () {
26
- props.onNextButtonClick && props.onNextButtonClick();
27
- setCurrentQuestionNumber(currentQuestionNumber + 1);
28
- };
29
- var onSubmitButtonClick = function () {
30
- var chosenQuizAnswers = Array.from(checkedAnswers.values());
31
- props.onSubmitButtonClick && props.onSubmitButtonClick(chosenQuizAnswers);
32
- setCurrentQuestionNumber(currentQuestionNumber + 1);
33
- };
34
- var questionsNumber = Object.keys(props.quizContent.questions).length;
35
- var isLastSlide = currentQuestionNumber === questionsNumber + 1;
36
- var isLastQuestion = currentQuestionNumber === questionsNumber;
37
- var isDisabledSubmit = checkedAnswers.size !== questionsNumber;
38
- return (react_1.default.createElement(styled_1.Quiz, null,
39
- react_1.default.createElement(styled_1.Header, null,
40
- react_1.default.createElement(styled_1.QuizName, null, props.quizContent.name)),
41
- react_1.default.createElement(styled_1.QuizBlock, null, !isLastSlide ? (react_1.default.createElement(react_1.default.Fragment, null,
42
- react_1.default.createElement(styled_1.Question, null, props.quizContent.questions[currentQuestionNumber]),
43
- props.quizContent.answers[currentQuestionNumber].map(function (answer, index) {
44
- var checkedAnswer = checkedAnswers && checkedAnswers.get(currentQuestionNumber);
45
- var correctAnswer = props.correctAnswers &&
46
- props.correctAnswers[currentQuestionNumber];
47
- return (react_1.default.createElement(styled_1.Answer, { key: index },
48
- react_1.default.createElement(radio_1.Radio, { value: answer, label: answer, name: answer, isChecked: answer === checkedAnswer, onChange: function (e) { return onChange(e, currentQuestionNumber); } }),
49
- props.score && correctAnswer && (react_1.default.createElement("span", null, answer === correctAnswer ? (react_1.default.createElement(check_1.default, { label: "right", primaryColor: "green" })) : (answer === checkedAnswer && (react_1.default.createElement(cross_1.default, { label: "wrong", primaryColor: "red" })))))));
50
- }))) : !props.score ? (react_1.default.createElement(spinner_1.default, null)) : (react_1.default.createElement(styled_1.Score, null,
51
- react_1.default.createElement("span", null, props.score + " / " + questionsNumber + " Correct"),
52
- props.score >= questionsNumber / 2 ? (react_1.default.createElement("span", null, "Great job!")) : (react_1.default.createElement("span", null, "Not bad!"))))),
53
- react_1.default.createElement(styled_1.Footer, null,
54
- react_1.default.createElement(styled_1.NavQuiz, { style: {
55
- visibility: currentQuestionNumber !== 1 ? 'visible' : 'hidden',
56
- }, onClick: handlePrevClick },
57
- react_1.default.createElement(chevron_left_large_1.default, { label: "prev", primaryColor: "#5e6c84", size: "large" }),
58
- react_1.default.createElement(styled_1.NavAction, null, isLastSlide && props.score ? 'Review' : 'Previous')),
59
- isLastQuestion && !props.score ? (react_1.default.createElement(button_1.default, { appearance: "primary", onClick: onSubmitButtonClick, isDisabled: isDisabledSubmit }, "Submit")) : isLastSlide ? (react_1.default.createElement(styled_1.NavQuiz, null,
60
- react_1.default.createElement(styled_1.NavAction, null, "Learn More"),
61
- react_1.default.createElement(chevron_right_large_1.default, { label: "next", primaryColor: "#5e6c84", size: "large" }))) : (react_1.default.createElement(styled_1.NavQuiz, { onClick: handleNextClick },
62
- react_1.default.createElement(styled_1.NavAction, null, "Next"),
63
- react_1.default.createElement(chevron_right_large_1.default, { label: "next", primaryColor: "#5e6c84", size: "large" }))))));
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
- exports.default = QuizWidget;
66
- //# sourceMappingURL=index.js.map
120
+
121
+ var _default = QuizWidget;
122
+ exports.default = _default;
@@ -1,17 +1,54 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Answer = exports.Score = exports.NavAction = exports.NavQuiz = exports.Question = exports.Footer = exports.QuizBlock = exports.Header = exports.QuizName = exports.Quiz = void 0;
4
- var tslib_1 = require("tslib");
5
- var styled_1 = tslib_1.__importDefault(require("@emotion/styled"));
6
- exports.Quiz = styled_1.default.div(templateObject_1 || (templateObject_1 = tslib_1.__makeTemplateObject(["\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"], ["\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"])));
7
- exports.QuizName = styled_1.default.div(templateObject_2 || (templateObject_2 = tslib_1.__makeTemplateObject(["\n margin: 3px 0;\n font-size: 24px;\n font-weight: 500;\n padding-left: 20px;\n"], ["\n margin: 3px 0;\n font-size: 24px;\n font-weight: 500;\n padding-left: 20px;\n"])));
8
- exports.Header = styled_1.default.div(templateObject_3 || (templateObject_3 = tslib_1.__makeTemplateObject(["\n display: flex;\n align-items: start;\n flex-direction: column;\n"], ["\n display: flex;\n align-items: start;\n flex-direction: column;\n"])));
9
- exports.QuizBlock = styled_1.default.ul(templateObject_4 || (templateObject_4 = tslib_1.__makeTemplateObject(["\n padding-left: 15px;\n margin-bottom: 15px;\n margin-top: 0;\n min-height: 105px;\n"], ["\n padding-left: 15px;\n margin-bottom: 15px;\n margin-top: 0;\n min-height: 105px;\n"])));
10
- exports.Footer = styled_1.default.div(templateObject_5 || (templateObject_5 = tslib_1.__makeTemplateObject(["\n padding-left: 8px;\n display: flex;\n justify-content: space-between;\n align-items: center;\n max-height: 32px;\n"], ["\n padding-left: 8px;\n display: flex;\n justify-content: space-between;\n align-items: center;\n max-height: 32px;\n"])));
11
- exports.Question = styled_1.default.div(templateObject_6 || (templateObject_6 = tslib_1.__makeTemplateObject(["\n padding-left: 6px;\n margin-bottom: 10px;\n font-size: 14px;\n color: #707070;\n text-align: left;\n"], ["\n padding-left: 6px;\n margin-bottom: 10px;\n font-size: 14px;\n color: #707070;\n text-align: left;\n"])));
12
- exports.NavQuiz = styled_1.default.div(templateObject_7 || (templateObject_7 = tslib_1.__makeTemplateObject(["\n display: flex;\n align-content: center;\n justify-content: center;\n padding: 0 0 0 3px;\n :hover {\n color: grey;\n }\n"], ["\n display: flex;\n align-content: center;\n justify-content: center;\n padding: 0 0 0 3px;\n :hover {\n color: grey;\n }\n"])));
13
- exports.NavAction = styled_1.default.span(templateObject_8 || (templateObject_8 = tslib_1.__makeTemplateObject(["\n font-size: 14px;\n font-weight: 500;\n display: flex;\n align-items: center;\n"], ["\n font-size: 14px;\n font-weight: 500;\n display: flex;\n align-items: center;\n"])));
14
- exports.Score = styled_1.default.div(templateObject_9 || (templateObject_9 = tslib_1.__makeTemplateObject(["\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"], ["\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"])));
15
- exports.Answer = styled_1.default.div(templateObject_10 || (templateObject_10 = tslib_1.__makeTemplateObject(["\n display: flex;\n align-items: flex-end;\n max-height: 25px;\n"], ["\n display: flex;\n align-items: flex-end;\n max-height: 25px;\n"])));
16
- var templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5, templateObject_6, templateObject_7, templateObject_8, templateObject_9, templateObject_10;
17
- //# sourceMappingURL=styled.js.map
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;
@@ -1,3 +1,5 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=types.js.map
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
package/dist/cjs/index.js CHANGED
@@ -1,5 +1,15 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- var QuizWidget_1 = require("./components/QuizWidget");
4
- Object.defineProperty(exports, "QuizWidget", { enumerable: true, get: function () { return QuizWidget_1.default; } });
5
- //# sourceMappingURL=index.js.map
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"));
@@ -1,8 +1,18 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
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
- var tslib_1 = require("tslib");
5
- var styled_1 = tslib_1.__importDefault(require("@emotion/styled"));
6
- exports.QuizWrapper = styled_1.default.div(templateObject_1 || (templateObject_1 = tslib_1.__makeTemplateObject(["\n display: flex;\n justify-content: center;\n margin: 20px;\n"], ["\n display: flex;\n justify-content: center;\n margin: 20px;\n"])));
7
- var templateObject_1;
8
- //# sourceMappingURL=styled.js.map
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;
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "@atlaskit/quiz-widget",
3
- "version": "2.0.1",
3
+ "version": "2.0.4",
4
4
  "sideEffects": false
5
5
  }
@@ -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, } from './styled';
10
- const QuizWidget = (props) => {
11
- const [currentQuestionNumber, setCurrentQuestionNumber] = useState(1);
12
- const [checkedAnswers, setCheckedAnswers] = useState(new Map());
13
- const onChange = (e, index) => {
14
- const value = e.currentTarget.value;
15
- !props.score
16
- ? setCheckedAnswers(prevState => new Map(prevState).set(index, value))
17
- : setCheckedAnswers(checkedAnswers);
18
- };
19
- const handlePrevClick = () => {
20
- setCurrentQuestionNumber(currentQuestionNumber - 1);
21
- };
22
- const handleNextClick = () => {
23
- props.onNextButtonClick && props.onNextButtonClick();
24
- setCurrentQuestionNumber(currentQuestionNumber + 1);
25
- };
26
- const onSubmitButtonClick = () => {
27
- const chosenQuizAnswers = Array.from(checkedAnswers.values());
28
- props.onSubmitButtonClick && props.onSubmitButtonClick(chosenQuizAnswers);
29
- setCurrentQuestionNumber(currentQuestionNumber + 1);
30
- };
31
- const questionsNumber = Object.keys(props.quizContent.questions).length;
32
- const isLastSlide = currentQuestionNumber === questionsNumber + 1;
33
- const isLastQuestion = currentQuestionNumber === questionsNumber;
34
- const isDisabledSubmit = checkedAnswers.size !== questionsNumber;
35
- return (React.createElement(Quiz, null,
36
- React.createElement(Header, null,
37
- React.createElement(QuizName, null, props.quizContent.name)),
38
- React.createElement(QuizBlock, null, !isLastSlide ? (React.createElement(React.Fragment, null,
39
- React.createElement(Question, null, props.quizContent.questions[currentQuestionNumber]),
40
- props.quizContent.answers[currentQuestionNumber].map((answer, index) => {
41
- const checkedAnswer = checkedAnswers && checkedAnswers.get(currentQuestionNumber);
42
- const correctAnswer = props.correctAnswers &&
43
- props.correctAnswers[currentQuestionNumber];
44
- return (React.createElement(Answer, { key: index },
45
- React.createElement(Radio, { value: answer, label: answer, name: answer, isChecked: answer === checkedAnswer, onChange: e => onChange(e, currentQuestionNumber) }),
46
- props.score && correctAnswer && (React.createElement("span", null, answer === correctAnswer ? (React.createElement(CheckIcon, { label: "right", primaryColor: "green" })) : (answer === checkedAnswer && (React.createElement(CrossIcon, { label: "wrong", primaryColor: "red" })))))));
47
- }))) : !props.score ? (React.createElement(Spinner, null)) : (React.createElement(Score, null,
48
- React.createElement("span", null, `${props.score} / ${questionsNumber} Correct`),
49
- props.score >= questionsNumber / 2 ? (React.createElement("span", null, "Great job!")) : (React.createElement("span", null, "Not bad!"))))),
50
- React.createElement(Footer, null,
51
- React.createElement(NavQuiz, { style: {
52
- visibility: currentQuestionNumber !== 1 ? 'visible' : 'hidden',
53
- }, onClick: handlePrevClick },
54
- React.createElement(ChevronLeftLargeIcon, { label: "prev", primaryColor: "#5e6c84", size: "large" }),
55
- React.createElement(NavAction, null, isLastSlide && props.score ? 'Review' : 'Previous')),
56
- isLastQuestion && !props.score ? (React.createElement(Button, { appearance: "primary", onClick: onSubmitButtonClick, isDisabled: isDisabledSubmit }, "Submit")) : isLastSlide ? (React.createElement(NavQuiz, null,
57
- React.createElement(NavAction, null, "Learn More"),
58
- React.createElement(ChevronRightLargeIcon, { label: "next", primaryColor: "#5e6c84", size: "large" }))) : (React.createElement(NavQuiz, { onClick: handleNextClick },
59
- React.createElement(NavAction, null, "Next"),
60
- React.createElement(ChevronRightLargeIcon, { label: "next", primaryColor: "#5e6c84", size: "large" }))))));
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
- export default QuizWidget;
63
- //# sourceMappingURL=index.js.map
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
- //# sourceMappingURL=types.js.map
1
+ export {};
@@ -1,2 +1 @@
1
- export { default as QuizWidget } from './components/QuizWidget';
2
- //# sourceMappingURL=index.js.map
1
+ export { default as QuizWidget } from './components/QuizWidget';
@@ -1,7 +1,6 @@
1
1
  import styled from '@emotion/styled';
2
- export const QuizWrapper = styled.div `
2
+ export const QuizWrapper = styled.div`
3
3
  display: flex;
4
4
  justify-content: center;
5
5
  margin: 20px;
6
- `;
7
- //# sourceMappingURL=styled.js.map
6
+ `;
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "@atlaskit/quiz-widget",
3
- "version": "2.0.1",
3
+ "version": "2.0.4",
4
4
  "sideEffects": false
5
5
  }