@elice/material-quiz 1.240709.0 → 1.240711.0
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/cjs/components/material-quiz/MaterialQuiz.js +32 -12
- package/cjs/components/material-quiz/MaterialQuizInfo.js +57 -12
- package/cjs/components/material-quiz/MaterialQuizSelectMultiple.js +12 -5
- package/cjs/components/material-quiz/MaterialQuizSelectMultipleOrder.js +11 -5
- package/cjs/components/material-quiz/MaterialQuizSelectOne.js +12 -5
- package/cjs/components/material-quiz/MaterialQuizText.js +11 -5
- package/cjs/components/material-quiz/context/MaterialQuizContext.d.ts +2 -0
- package/cjs/components/material-quiz/context/MaterialQuizContext.js +14 -2
- package/cjs/components/material-quiz/locales/en.json.js +1 -1
- package/cjs/components/material-quiz/locales/ja.json.js +1 -1
- package/cjs/components/material-quiz/locales/ko.json.js +1 -1
- package/cjs/components/material-quiz/locales/th.json.js +1 -1
- package/cjs/components/material-quiz/material-quiz-group/MaterialQuizGroup.js +23 -30
- package/cjs/components/shared/QuestionBox.js +57 -37
- package/cjs/components/shared/utils/mergeRefs.d.ts +2 -0
- package/cjs/components/shared/utils/mergeRefs.js +11 -0
- package/cjs/hooks/useCaculatePassage.js +11 -3
- package/es/components/material-quiz/MaterialQuiz.js +32 -12
- package/es/components/material-quiz/MaterialQuizInfo.js +58 -13
- package/es/components/material-quiz/MaterialQuizSelectMultiple.js +14 -7
- package/es/components/material-quiz/MaterialQuizSelectMultipleOrder.js +12 -6
- package/es/components/material-quiz/MaterialQuizSelectOne.js +13 -6
- package/es/components/material-quiz/MaterialQuizText.js +12 -6
- package/es/components/material-quiz/context/MaterialQuizContext.d.ts +2 -0
- package/es/components/material-quiz/context/MaterialQuizContext.js +15 -3
- package/es/components/material-quiz/locales/en.json.js +1 -1
- package/es/components/material-quiz/locales/ja.json.js +1 -1
- package/es/components/material-quiz/locales/ko.json.js +1 -1
- package/es/components/material-quiz/locales/th.json.js +1 -1
- package/es/components/material-quiz/material-quiz-group/MaterialQuizGroup.js +24 -31
- package/es/components/shared/QuestionBox.js +57 -37
- package/es/components/shared/utils/mergeRefs.d.ts +2 -0
- package/es/components/shared/utils/mergeRefs.js +9 -0
- package/es/hooks/useCaculatePassage.js +12 -4
- package/package.json +5 -4
|
@@ -6,7 +6,9 @@ var React = require('react');
|
|
|
6
6
|
var reactUse = require('react-use');
|
|
7
7
|
var designTokens = require('@elice/design-tokens');
|
|
8
8
|
var intl = require('@elice/intl');
|
|
9
|
+
var muiSystem = require('@elice/mui-system');
|
|
9
10
|
var types = require('@elice/types');
|
|
11
|
+
var material = require('@mui/material');
|
|
10
12
|
var styled = require('styled-components');
|
|
11
13
|
var element = require('../../constant/element.js');
|
|
12
14
|
var MaterialQuizContext = require('./context/MaterialQuizContext.js');
|
|
@@ -15,27 +17,39 @@ var ko = require('./locales/ko.json.js');
|
|
|
15
17
|
var MaterialQuizShimmer = require('./MaterialQuizShimmer.js');
|
|
16
18
|
var MaterialQuizInfo = require('./MaterialQuizInfo.js');
|
|
17
19
|
|
|
20
|
+
const eliceTheme = muiSystem.createEliceTheme({
|
|
21
|
+
paletteMode: 'dark',
|
|
22
|
+
paletteName: 'purple'
|
|
23
|
+
});
|
|
18
24
|
const AsyncMaterialQuizSelectMultiple = React.lazy(() => Promise.resolve().then(function () { return require('./MaterialQuizSelectMultiple.js'); }));
|
|
19
25
|
const AsyncMaterialQuizSelectMultipleOrder = React.lazy(() => Promise.resolve().then(function () { return require('./MaterialQuizSelectMultipleOrder.js'); }));
|
|
20
26
|
const AsyncMaterialQuizText = React.lazy(() => Promise.resolve().then(function () { return require('./MaterialQuizText.js'); }));
|
|
21
27
|
const AsyncMaterialQuizSelectOne = React.lazy(() => Promise.resolve().then(function () { return require('./MaterialQuizSelectOne.js'); }));
|
|
22
28
|
const AsyncMaterialQuizGroup = React.lazy(() => Promise.resolve().then(function () { return require('./material-quiz-group/index.js'); }));
|
|
29
|
+
// 746px
|
|
30
|
+
const MAX_CONTENT_WIDTH = '46.625rem';
|
|
23
31
|
const StyledMaterialQuizInfo = styled.div.withConfig({
|
|
24
32
|
componentId: "sc-1eyn8fb-0"
|
|
25
33
|
})([""]);
|
|
26
34
|
const StyledMaterialQuizContent = styled.div.withConfig({
|
|
27
35
|
componentId: "sc-1eyn8fb-1"
|
|
28
|
-
})(["min-width:0;margin:", ";height:100%;"], ({
|
|
36
|
+
})(["position:relative;z-index:0;min-width:0;margin:", ";height:100%;"], ({
|
|
29
37
|
vertical
|
|
30
38
|
}) => vertical ? 'unset' : 'auto');
|
|
31
|
-
const
|
|
39
|
+
const LoadingContainer = styled.div.withConfig({
|
|
32
40
|
componentId: "sc-1eyn8fb-2"
|
|
33
|
-
})(["
|
|
41
|
+
})(["position:absolute;width:100%;height:100%;top:0;left:0;z-index:1;max-width:none !important;background-color:", ";"], designTokens.base.color.navy8);
|
|
42
|
+
const StyledMaterialQuizWrapper = styled.div.withConfig({
|
|
43
|
+
componentId: "sc-1eyn8fb-3"
|
|
44
|
+
})(["-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;display:flex;width:100%;height:100%;flex-direction:", ";position:relative;& > *{flex:", ";max-width:", ";}gap:1rem;", "{height:", ";overflow-y:", ";& > div{max-height:unset;}}"], ({
|
|
34
45
|
vertical
|
|
35
46
|
}) => vertical ? 'column' : 'row', ({
|
|
47
|
+
vertical
|
|
48
|
+
}) => vertical ? 'auto' : '1', ({
|
|
36
49
|
vertical,
|
|
37
|
-
isQuizGroupType
|
|
38
|
-
|
|
50
|
+
isQuizGroupType,
|
|
51
|
+
isLongPassage
|
|
52
|
+
}) => !isLongPassage && !vertical && !isQuizGroupType ? `${MAX_CONTENT_WIDTH}` : 'unset', StyledMaterialQuizInfo, ({
|
|
39
53
|
vertical
|
|
40
54
|
}) => vertical ? 'auto' : '100%', ({
|
|
41
55
|
vertical
|
|
@@ -45,7 +59,8 @@ const MaterialQuiz = () => {
|
|
|
45
59
|
materialQuiz,
|
|
46
60
|
vertical,
|
|
47
61
|
course,
|
|
48
|
-
isLongPassage
|
|
62
|
+
isLongPassage,
|
|
63
|
+
isInitialLoading
|
|
49
64
|
} = MaterialQuizContext.useMaterialQuizState();
|
|
50
65
|
const {
|
|
51
66
|
setVertical
|
|
@@ -54,7 +69,9 @@ const MaterialQuiz = () => {
|
|
|
54
69
|
width
|
|
55
70
|
}] = reactUse.useMeasure();
|
|
56
71
|
const isQuizGroupType = Boolean((materialQuiz === null || materialQuiz === void 0 ? void 0 : materialQuiz.optionType) === types.enums.QuizOptionType.Group);
|
|
57
|
-
const
|
|
72
|
+
const isFetchingData = !materialQuiz || !course;
|
|
73
|
+
const isLoadingLayout = isFetchingData || isInitialLoading;
|
|
74
|
+
const isVisibleSideBySide = !vertical && isLongPassage;
|
|
58
75
|
const isRenderQuestionWithPassage = (vertical || !isLongPassage || isQuizGroupType) && !!materialQuiz;
|
|
59
76
|
React.useEffect(() => {
|
|
60
77
|
if (width > 0) {
|
|
@@ -62,8 +79,8 @@ const MaterialQuiz = () => {
|
|
|
62
79
|
}
|
|
63
80
|
}, [width, setVertical]);
|
|
64
81
|
const renderQuestionOption = () => {
|
|
65
|
-
if (
|
|
66
|
-
return
|
|
82
|
+
if (isFetchingData) {
|
|
83
|
+
return null;
|
|
67
84
|
}
|
|
68
85
|
switch (materialQuiz.optionType) {
|
|
69
86
|
case types.enums.QuizOptionType.SelectOne:
|
|
@@ -91,8 +108,9 @@ const MaterialQuiz = () => {
|
|
|
91
108
|
}, React.createElement(StyledMaterialQuizWrapper, {
|
|
92
109
|
ref: ref,
|
|
93
110
|
vertical: vertical,
|
|
94
|
-
isQuizGroupType: isQuizGroupType
|
|
95
|
-
|
|
111
|
+
isQuizGroupType: isQuizGroupType,
|
|
112
|
+
isLongPassage: isLongPassage
|
|
113
|
+
}, isLoadingLayout && React.createElement(LoadingContainer, null, React.createElement(MaterialQuizShimmer.default, null)), isVisibleSideBySide && React.createElement(StyledMaterialQuizInfo, null, React.createElement(MaterialQuizInfo.default, null)), React.createElement(StyledMaterialQuizContent, {
|
|
96
114
|
id: element.MATERIAL_QUIZ_CONTAINER_ID,
|
|
97
115
|
vertical: vertical
|
|
98
116
|
}, renderQuestionOption())));
|
|
@@ -107,13 +125,15 @@ const MaterialQuizContainer = ({
|
|
|
107
125
|
}) => {
|
|
108
126
|
return React.createElement(intl.RawEliceIntlProvider, {
|
|
109
127
|
value: __intl
|
|
128
|
+
}, React.createElement(material.ThemeProvider, {
|
|
129
|
+
theme: eliceTheme
|
|
110
130
|
}, React.createElement(MaterialQuizContext.MaterialQuizProvider, {
|
|
111
131
|
materialQuizId: materialQuizId,
|
|
112
132
|
userId: userId,
|
|
113
133
|
onDirty: onDirty,
|
|
114
134
|
onSubmit: onSubmit,
|
|
115
135
|
onNext: onNext
|
|
116
|
-
}, React.createElement(MaterialQuiz, null)));
|
|
136
|
+
}, React.createElement(MaterialQuiz, null))));
|
|
117
137
|
};
|
|
118
138
|
var MaterialQuiz$1 = new intl.IntlComponentBuilder(MaterialQuizContainer).add('en', en.default).add('ko', ko.default).addAsync('th', Promise.resolve().then(function () { return require('./locales/th.json.js'); })).addAsync('ja', Promise.resolve().then(function () { return require('./locales/ja.json.js'); })).build();
|
|
119
139
|
|
|
@@ -3,15 +3,15 @@
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
5
|
var React = require('react');
|
|
6
|
+
var reactUse = require('react-use');
|
|
6
7
|
var blocks = require('@elice/blocks');
|
|
7
|
-
var designTokens = require('@elice/design-tokens');
|
|
8
8
|
var icons = require('@elice/icons');
|
|
9
9
|
var markdown = require('@elice/markdown');
|
|
10
10
|
var material = require('@mui/material');
|
|
11
11
|
var styled = require('styled-components');
|
|
12
12
|
var QuestionBox = require('../shared/QuestionBox.js');
|
|
13
|
+
var mergeRefs = require('../shared/utils/mergeRefs.js');
|
|
13
14
|
var MaterialQuizContext = require('./context/MaterialQuizContext.js');
|
|
14
|
-
var MaterialQuizAnswerExplanation = require('./MaterialQuizAnswerExplanation.js');
|
|
15
15
|
|
|
16
16
|
//
|
|
17
17
|
//
|
|
@@ -24,23 +24,51 @@ const StyledMarkdownSSR = styled(markdown.MarkdownSSR).withConfig({
|
|
|
24
24
|
//
|
|
25
25
|
const IMAGE_CONTAINER_CLASSNAME = 'markdown-zoomable-image-container';
|
|
26
26
|
const ZOOM_ICON_CLASSNAME = 'markdown-zoom-icon';
|
|
27
|
-
const MarkdownContainer = styled
|
|
28
|
-
|
|
29
|
-
|
|
27
|
+
const MarkdownContainer = material.styled('div')`
|
|
28
|
+
.${IMAGE_CONTAINER_CLASSNAME} {
|
|
29
|
+
position: relative;
|
|
30
|
+
|
|
31
|
+
span.${ZOOM_ICON_CLASSNAME} {
|
|
32
|
+
cursor: pointer;
|
|
33
|
+
|
|
34
|
+
position: absolute;
|
|
35
|
+
top: 0;
|
|
36
|
+
right: ${({
|
|
37
|
+
vertical
|
|
38
|
+
}) => vertical ? '0!important' : '0'};
|
|
39
|
+
|
|
40
|
+
width: 2rem;
|
|
41
|
+
aspect-ratio: 1;
|
|
42
|
+
background-color: ${({
|
|
43
|
+
theme
|
|
44
|
+
}) => theme.palette.inverse.main};
|
|
45
|
+
margin: 0.5rem;
|
|
46
|
+
border-radius: 50%;
|
|
47
|
+
|
|
48
|
+
display: flex;
|
|
49
|
+
align-items: center;
|
|
50
|
+
justify-content: center;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
`;
|
|
30
54
|
const MaterialQuizInfo = ({
|
|
31
55
|
renderWithBox = true
|
|
32
56
|
}) => {
|
|
33
57
|
const {
|
|
34
|
-
materialQuiz
|
|
58
|
+
materialQuiz,
|
|
59
|
+
vertical
|
|
35
60
|
} = MaterialQuizContext.useMaterialQuizState();
|
|
36
61
|
const [isRenderFinish, setIsRenderFinish] = React.useState(false);
|
|
37
62
|
const containerRef = React.useRef(null);
|
|
63
|
+
const [markdownMeasueRef, {
|
|
64
|
+
width
|
|
65
|
+
}] = reactUse.useMeasure();
|
|
66
|
+
const ref = mergeRefs.mergeRefs(containerRef, markdownMeasueRef);
|
|
38
67
|
const [zoomImageUrl, setZoomImageUrl] = React.useState('');
|
|
39
68
|
React.useEffect(() => {
|
|
40
69
|
if (!(materialQuiz === null || materialQuiz === void 0 ? void 0 : materialQuiz.questionDescription) || !isRenderFinish || !containerRef.current) return;
|
|
41
|
-
const images = containerRef.current.querySelectorAll('img');
|
|
42
70
|
// append zoom icon for image html render by MarkdownSSR
|
|
43
|
-
|
|
71
|
+
containerRef.current.querySelectorAll('img').forEach(img => {
|
|
44
72
|
const parent = img.parentElement;
|
|
45
73
|
const zoomIconStr = `
|
|
46
74
|
<svg width="25" height="25" viewBox="0 0 25 25" fill="white" xmlns="http://www.w3.org/2000/svg">
|
|
@@ -48,27 +76,44 @@ const MaterialQuizInfo = ({
|
|
|
48
76
|
</svg>
|
|
49
77
|
`;
|
|
50
78
|
if (parent) {
|
|
79
|
+
const imageRect = img.getBoundingClientRect();
|
|
80
|
+
const parentRect = parent.getBoundingClientRect();
|
|
81
|
+
const zoomIcons = parent.querySelectorAll(`.${ZOOM_ICON_CLASSNAME}`);
|
|
82
|
+
const totalImages = Array.from(parent.querySelectorAll(`img`));
|
|
83
|
+
const idx = totalImages.findIndex(item => item === img);
|
|
84
|
+
// restyle the zoom position when chaging the width instead of recreate it
|
|
85
|
+
if (zoomIcons.length === totalImages.length && idx !== -1) {
|
|
86
|
+
zoomIcons[idx].style.top = `${imageRect.top - parentRect.top}px`;
|
|
87
|
+
zoomIcons[idx].style.right = `${parentRect.right - imageRect.right}px`;
|
|
88
|
+
return;
|
|
89
|
+
}
|
|
51
90
|
parent.classList.add(IMAGE_CONTAINER_CLASSNAME);
|
|
52
91
|
parent.style.position = 'relative';
|
|
53
92
|
const span = document.createElement('span');
|
|
54
93
|
span.innerHTML = zoomIconStr;
|
|
55
94
|
span.classList.add(ZOOM_ICON_CLASSNAME);
|
|
95
|
+
span.style.top = `${imageRect.top - parentRect.top}px`;
|
|
96
|
+
span.style.right = `${parentRect.right - imageRect.right}px`;
|
|
56
97
|
span.onclick = () => {
|
|
57
98
|
setZoomImageUrl(img.src);
|
|
58
99
|
};
|
|
59
100
|
parent.appendChild(span);
|
|
60
101
|
}
|
|
61
102
|
});
|
|
62
|
-
}, [materialQuiz === null || materialQuiz === void 0 ? void 0 : materialQuiz.questionDescription, isRenderFinish]);
|
|
103
|
+
}, [materialQuiz === null || materialQuiz === void 0 ? void 0 : materialQuiz.questionDescription, isRenderFinish, width]);
|
|
63
104
|
const onCloseImageModal = () => {
|
|
64
105
|
setZoomImageUrl('');
|
|
65
106
|
};
|
|
66
107
|
const _renderQuiz = () => {
|
|
67
108
|
return React.createElement(React.Fragment, null, materialQuiz ? React.createElement(MarkdownContainer, {
|
|
68
|
-
ref:
|
|
109
|
+
ref: ref,
|
|
110
|
+
vertical: vertical
|
|
69
111
|
}, React.createElement(StyledMarkdownSSR, {
|
|
70
112
|
onRender: () => {
|
|
71
|
-
|
|
113
|
+
// set timeout for waiting time to the image can render
|
|
114
|
+
setTimeout(() => {
|
|
115
|
+
setIsRenderFinish(true);
|
|
116
|
+
}, 300);
|
|
72
117
|
},
|
|
73
118
|
children: materialQuiz === null || materialQuiz === void 0 ? void 0 : materialQuiz.questionDescription,
|
|
74
119
|
dark: true,
|
|
@@ -141,7 +186,7 @@ const MaterialQuizInfo = ({
|
|
|
141
186
|
top: '-10%'
|
|
142
187
|
},
|
|
143
188
|
onClick: onCloseImageModal
|
|
144
|
-
})))
|
|
189
|
+
}))));
|
|
145
190
|
};
|
|
146
191
|
if (renderWithBox) return React.createElement(QuestionBox.default, null, _renderQuiz());
|
|
147
192
|
return React.createElement(React.Fragment, null, _renderQuiz());
|
|
@@ -4,6 +4,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
4
4
|
|
|
5
5
|
var React = require('react');
|
|
6
6
|
var apiClient = require('@elice/api-client');
|
|
7
|
+
var designTokens = require('@elice/design-tokens');
|
|
7
8
|
var intl = require('@elice/intl');
|
|
8
9
|
var material = require('@mui/material');
|
|
9
10
|
var element = require('../../constant/element.js');
|
|
@@ -18,6 +19,7 @@ var QuestionCheckboxOption = require('../shared/question-checkbox/QuestionCheckb
|
|
|
18
19
|
var QuestionBox = require('../shared/QuestionBox.js');
|
|
19
20
|
var StyledMarkdown = require('../shared/StyledMarkdown.js');
|
|
20
21
|
var MaterialQuizContext = require('./context/MaterialQuizContext.js');
|
|
22
|
+
var MaterialQuizAnswerExplanation = require('./MaterialQuizAnswerExplanation.js');
|
|
21
23
|
var MaterialQuizInfo = require('./MaterialQuizInfo.js');
|
|
22
24
|
var QuizResultBadge = require('./QuizResultBadge.js');
|
|
23
25
|
var QuizSubmitStatusText = require('./QuizSubmitStatusText.js');
|
|
@@ -38,6 +40,7 @@ const MaterialQuizSelectMultiple = ({
|
|
|
38
40
|
refreshOrgMaterialQuiz,
|
|
39
41
|
onDirty
|
|
40
42
|
} = MaterialQuizContext.useMaterialQuizDispatch();
|
|
43
|
+
const theme = material.useTheme();
|
|
41
44
|
// state
|
|
42
45
|
const intl$1 = intl.useRawEliceIntl();
|
|
43
46
|
const [selectedAnswer, setSelectedAnswer] = React.useState([]);
|
|
@@ -51,6 +54,7 @@ const MaterialQuizSelectMultiple = ({
|
|
|
51
54
|
const [isActive, setIsActive] = React.useState(false);
|
|
52
55
|
const [hasSubmitted, setHasSubmitted] = React.useState(false);
|
|
53
56
|
const isNextActive = hasSubmitted && typeof onNext === 'function';
|
|
57
|
+
const isDisabled = selectedAnswer.length === 0 || index.checkUserLectureTestEnded(lecture) || !!userId;
|
|
54
58
|
// answer select handler
|
|
55
59
|
const handleAnswerSelect = index$1 => {
|
|
56
60
|
if (index.checkUserLectureTestEnded(lecture) || !!userId) {
|
|
@@ -162,16 +166,19 @@ const MaterialQuizSelectMultiple = ({
|
|
|
162
166
|
}),
|
|
163
167
|
bodyContainerRef: containerRef,
|
|
164
168
|
footerActions: [{
|
|
165
|
-
border:
|
|
166
|
-
disabled:
|
|
169
|
+
border: false,
|
|
170
|
+
disabled: isDisabled,
|
|
167
171
|
loading: submitStatus === 'pending',
|
|
168
172
|
tabIndex: 0,
|
|
169
173
|
transparent: false,
|
|
170
|
-
role: isNextActive ? 'secondary' : 'lightpurple',
|
|
171
174
|
onClick: handleSubmit,
|
|
172
175
|
children: intl$1.formatMessage({
|
|
173
176
|
id: isNextActive ? 'materialQuiz.resubmit' : 'materialQuiz.submit'
|
|
174
|
-
})
|
|
177
|
+
}),
|
|
178
|
+
customStyles: {
|
|
179
|
+
backgroundColor: isNextActive ? theme.palette.secondary.main : isDisabled ? designTokens.base.color.gray6 : theme.palette.primary.main,
|
|
180
|
+
color: isNextActive ? theme.palette.secondary.contrastText : isDisabled ? designTokens.base.color.gray3 : theme.palette.primary.contrastText
|
|
181
|
+
}
|
|
175
182
|
}]
|
|
176
183
|
}, React.createElement(material.Stack, {
|
|
177
184
|
height: "100%",
|
|
@@ -214,7 +221,7 @@ const MaterialQuizSelectMultiple = ({
|
|
|
214
221
|
paddingy: 0,
|
|
215
222
|
dark: true
|
|
216
223
|
}) : option === null || option === void 0 ? void 0 : option.content);
|
|
217
|
-
}) : null))));
|
|
224
|
+
}) : null), React.createElement(MaterialQuizAnswerExplanation.default, null))));
|
|
218
225
|
};
|
|
219
226
|
|
|
220
227
|
exports.default = MaterialQuizSelectMultiple;
|
|
@@ -19,6 +19,7 @@ var QuizDraggbleDroppedOption = require('../shared/QuizDraggbleDroppedOption.js'
|
|
|
19
19
|
var QuizDraggbleDummyOption = require('../shared/QuizDraggbleDummyOption.js');
|
|
20
20
|
var QuizDraggbleOption = require('../shared/QuizDraggbleOption.js');
|
|
21
21
|
var MaterialQuizContext = require('./context/MaterialQuizContext.js');
|
|
22
|
+
var MaterialQuizAnswerExplanation = require('./MaterialQuizAnswerExplanation.js');
|
|
22
23
|
var MaterialQuizInfo = require('./MaterialQuizInfo.js');
|
|
23
24
|
var QuizResultBadge = require('./QuizResultBadge.js');
|
|
24
25
|
var QuizSubmitStatusText = require('./QuizSubmitStatusText.js');
|
|
@@ -76,6 +77,7 @@ const MaterialQuizSelectMultipleOrder = ({
|
|
|
76
77
|
refreshOrgMaterialQuiz,
|
|
77
78
|
onDirty
|
|
78
79
|
} = MaterialQuizContext.useMaterialQuizDispatch();
|
|
80
|
+
const theme = material.useTheme();
|
|
79
81
|
// state
|
|
80
82
|
const intl$1 = intl.useRawEliceIntl();
|
|
81
83
|
const [materialQuizResponse, setMaterialQuizResponse] = React.useState();
|
|
@@ -90,6 +92,7 @@ const MaterialQuizSelectMultipleOrder = ({
|
|
|
90
92
|
const [correctAnswerList, setCorrectAnswerList] = React.useState([]);
|
|
91
93
|
const [hasSubmitted, setHasSubmitted] = React.useState(false);
|
|
92
94
|
const isNextActive = hasSubmitted && typeof onNext === 'function';
|
|
95
|
+
const isDisabled = (materialQuiz === null || materialQuiz === void 0 ? void 0 : materialQuiz.correctOptionCount) !== answerList.filter(answer => answer.order !== null).length || !!userId;
|
|
93
96
|
// ref
|
|
94
97
|
const optionBoxRef = React.useRef(null);
|
|
95
98
|
// to make jquery touchable
|
|
@@ -418,16 +421,19 @@ const MaterialQuizSelectMultipleOrder = ({
|
|
|
418
421
|
}),
|
|
419
422
|
bodyContainerRef: containerRef,
|
|
420
423
|
footerActions: [{
|
|
421
|
-
border:
|
|
422
|
-
disabled:
|
|
424
|
+
border: false,
|
|
425
|
+
disabled: isDisabled,
|
|
423
426
|
loading: submitStatus === 'pending',
|
|
424
427
|
tabIndex: 0,
|
|
425
428
|
transparent: false,
|
|
426
|
-
role: isNextActive ? 'secondary' : 'lightpurple',
|
|
427
429
|
onClick: handleSubmit,
|
|
428
430
|
children: intl$1.formatMessage({
|
|
429
431
|
id: isNextActive ? 'materialQuiz.resubmit' : 'materialQuiz.submit'
|
|
430
|
-
})
|
|
432
|
+
}),
|
|
433
|
+
customStyles: {
|
|
434
|
+
backgroundColor: isNextActive ? theme.palette.secondary.main : isDisabled ? designTokens.base.color.gray6 : theme.palette.primary.main,
|
|
435
|
+
color: isNextActive ? theme.palette.secondary.contrastText : isDisabled ? designTokens.base.color.gray3 : theme.palette.primary.contrastText
|
|
436
|
+
}
|
|
431
437
|
}]
|
|
432
438
|
}, React.createElement(material.Stack, {
|
|
433
439
|
height: "100%",
|
|
@@ -472,7 +478,7 @@ const MaterialQuizSelectMultipleOrder = ({
|
|
|
472
478
|
indexOrder: index + 1,
|
|
473
479
|
isMarkdown: !!(course === null || course === void 0 ? void 0 : course.preference.renderMarkdownInQuizOptions)
|
|
474
480
|
});
|
|
475
|
-
}))) : null)));
|
|
481
|
+
}))) : null, React.createElement(MaterialQuizAnswerExplanation.default, null))));
|
|
476
482
|
};
|
|
477
483
|
|
|
478
484
|
exports.default = MaterialQuizSelectMultipleOrder;
|
|
@@ -4,6 +4,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
4
4
|
|
|
5
5
|
var React = require('react');
|
|
6
6
|
var apiClient = require('@elice/api-client');
|
|
7
|
+
var designTokens = require('@elice/design-tokens');
|
|
7
8
|
var intl = require('@elice/intl');
|
|
8
9
|
var material = require('@mui/material');
|
|
9
10
|
var element = require('../../constant/element.js');
|
|
@@ -18,6 +19,7 @@ require('../shared/question-checkbox/QuestionCheckboxOption.js');
|
|
|
18
19
|
var QuestionBox = require('../shared/QuestionBox.js');
|
|
19
20
|
var StyledMarkdown = require('../shared/StyledMarkdown.js');
|
|
20
21
|
var MaterialQuizContext = require('./context/MaterialQuizContext.js');
|
|
22
|
+
var MaterialQuizAnswerExplanation = require('./MaterialQuizAnswerExplanation.js');
|
|
21
23
|
var MaterialQuizInfo = require('./MaterialQuizInfo.js');
|
|
22
24
|
var QuizResultBadge = require('./QuizResultBadge.js');
|
|
23
25
|
var QuizSubmitStatusText = require('./QuizSubmitStatusText.js');
|
|
@@ -38,6 +40,7 @@ const MaterialQuizSelectOne = ({
|
|
|
38
40
|
refreshOrgMaterialQuiz,
|
|
39
41
|
onDirty
|
|
40
42
|
} = MaterialQuizContext.useMaterialQuizDispatch();
|
|
43
|
+
const theme = material.useTheme();
|
|
41
44
|
// state
|
|
42
45
|
const intl$1 = intl.useRawEliceIntl();
|
|
43
46
|
const [selectedAnswer, setSelectedAnswer] = React.useState();
|
|
@@ -51,6 +54,7 @@ const MaterialQuizSelectOne = ({
|
|
|
51
54
|
const [isActive, setIsActive] = React.useState(false);
|
|
52
55
|
const [hasSubmitted, setHasSubmitted] = React.useState(false);
|
|
53
56
|
const isNextActive = hasSubmitted && typeof onNext === 'function';
|
|
57
|
+
const isDisabled = selectedAnswer === undefined || index.checkUserLectureTestEnded(lecture) || !!userId;
|
|
54
58
|
// answer select handler
|
|
55
59
|
const handleAnswerSelect = index$1 => {
|
|
56
60
|
if (index.checkUserLectureTestEnded(lecture) || !!userId) {
|
|
@@ -153,16 +157,19 @@ const MaterialQuizSelectOne = ({
|
|
|
153
157
|
}),
|
|
154
158
|
bodyContainerRef: containerRef,
|
|
155
159
|
footerActions: [{
|
|
156
|
-
border:
|
|
157
|
-
disabled:
|
|
160
|
+
border: false,
|
|
161
|
+
disabled: isDisabled,
|
|
158
162
|
loading: submitStatus === 'pending',
|
|
159
163
|
tabIndex: 0,
|
|
160
164
|
transparent: false,
|
|
161
|
-
role: isNextActive ? 'secondary' : 'lightpurple',
|
|
162
165
|
onClick: handleSubmit,
|
|
163
166
|
children: intl$1.formatMessage({
|
|
164
167
|
id: isNextActive ? 'materialQuiz.resubmit' : 'materialQuiz.submit'
|
|
165
|
-
})
|
|
168
|
+
}),
|
|
169
|
+
customStyles: {
|
|
170
|
+
backgroundColor: isNextActive ? theme.palette.secondary.main : isDisabled ? designTokens.base.color.gray6 : theme.palette.primary.main,
|
|
171
|
+
color: isNextActive ? theme.palette.secondary.contrastText : isDisabled ? designTokens.base.color.gray3 : theme.palette.primary.contrastText
|
|
172
|
+
}
|
|
166
173
|
}]
|
|
167
174
|
}, React.createElement(material.Stack, {
|
|
168
175
|
height: "100%",
|
|
@@ -205,7 +212,7 @@ const MaterialQuizSelectOne = ({
|
|
|
205
212
|
paddingy: 0,
|
|
206
213
|
dark: true
|
|
207
214
|
}) : option === null || option === void 0 ? void 0 : option.content);
|
|
208
|
-
}) : null)) : null));
|
|
215
|
+
}) : null), React.createElement(MaterialQuizAnswerExplanation.default, null)) : null));
|
|
209
216
|
};
|
|
210
217
|
|
|
211
218
|
exports.default = MaterialQuizSelectOne;
|
|
@@ -14,6 +14,7 @@ var index = require('../../helpers/index.js');
|
|
|
14
14
|
var useCaculatePassage = require('../../hooks/useCaculatePassage.js');
|
|
15
15
|
var QuestionBox = require('../shared/QuestionBox.js');
|
|
16
16
|
var MaterialQuizContext = require('./context/MaterialQuizContext.js');
|
|
17
|
+
var MaterialQuizAnswerExplanation = require('./MaterialQuizAnswerExplanation.js');
|
|
17
18
|
var MaterialQuizInfo = require('./MaterialQuizInfo.js');
|
|
18
19
|
var QuizResultBadge = require('./QuizResultBadge.js');
|
|
19
20
|
var QuizSubmitStatusText = require('./QuizSubmitStatusText.js');
|
|
@@ -41,6 +42,7 @@ const MaterialQuizText = ({
|
|
|
41
42
|
refreshOrgMaterialQuiz,
|
|
42
43
|
onDirty
|
|
43
44
|
} = MaterialQuizContext.useMaterialQuizDispatch();
|
|
45
|
+
const theme = material.useTheme();
|
|
44
46
|
// state
|
|
45
47
|
const intl$1 = intl.useRawEliceIntl();
|
|
46
48
|
const [materialQuizResponse, setMaterialQuizResponse] = React.useState();
|
|
@@ -52,6 +54,7 @@ const MaterialQuizText = ({
|
|
|
52
54
|
const [answer, setAnswer] = React.useState('');
|
|
53
55
|
const [hasSubmitted, setHasSubmitted] = React.useState(false);
|
|
54
56
|
const isNextActive = hasSubmitted && typeof onNext === 'function';
|
|
57
|
+
const isDisabled = answer.length === 0 || index.checkUserLectureTestEnded(lecture) || !!userId;
|
|
55
58
|
// quiz response fetcher
|
|
56
59
|
React.useEffect(() => {
|
|
57
60
|
if (!userId && (materialQuiz === null || materialQuiz === void 0 ? void 0 : materialQuiz.lastQuizResponseId)) {
|
|
@@ -155,16 +158,19 @@ const MaterialQuizText = ({
|
|
|
155
158
|
isNextActive: isNextActive,
|
|
156
159
|
bodyContainerRef: containerRef,
|
|
157
160
|
footerActions: [{
|
|
158
|
-
border:
|
|
161
|
+
border: false,
|
|
159
162
|
children: intl$1.formatMessage({
|
|
160
163
|
id: isNextActive ? 'materialQuiz.resubmit' : 'materialQuiz.submit'
|
|
161
164
|
}),
|
|
162
|
-
disabled:
|
|
165
|
+
disabled: isDisabled,
|
|
163
166
|
loading: submitStatus === 'pending',
|
|
164
167
|
tabIndex: 0,
|
|
165
168
|
transparent: false,
|
|
166
|
-
|
|
167
|
-
|
|
169
|
+
onClick: handleSubmit,
|
|
170
|
+
customStyles: {
|
|
171
|
+
backgroundColor: isNextActive ? theme.palette.secondary.main : isDisabled ? designTokens.base.color.gray6 : theme.palette.primary.main,
|
|
172
|
+
color: isNextActive ? theme.palette.secondary.contrastText : isDisabled ? designTokens.base.color.gray3 : theme.palette.primary.contrastText
|
|
173
|
+
}
|
|
168
174
|
}]
|
|
169
175
|
}, React.createElement(material.Stack, {
|
|
170
176
|
height: "100%",
|
|
@@ -195,7 +201,7 @@ const MaterialQuizText = ({
|
|
|
195
201
|
id: "quiz-text-submitted-answer",
|
|
196
202
|
disabled: true,
|
|
197
203
|
value: typeof (materialQuiz === null || materialQuiz === void 0 ? void 0 : materialQuiz.answerInfo) === 'string' ? materialQuiz.answerInfo : ''
|
|
198
|
-
})) : null)));
|
|
204
|
+
})) : null), React.createElement(MaterialQuizAnswerExplanation.default, null)));
|
|
199
205
|
};
|
|
200
206
|
|
|
201
207
|
exports.default = MaterialQuizText;
|
|
@@ -9,6 +9,7 @@ export interface State {
|
|
|
9
9
|
userId?: number;
|
|
10
10
|
initStatus: APIStatus;
|
|
11
11
|
isLongPassage: boolean;
|
|
12
|
+
isInitialLoading: boolean;
|
|
12
13
|
}
|
|
13
14
|
export type MaterialQuizProps = {
|
|
14
15
|
materialQuizId: number;
|
|
@@ -28,6 +29,7 @@ interface DispatchContextType {
|
|
|
28
29
|
setVertical: React.Dispatch<React.SetStateAction<boolean>>;
|
|
29
30
|
onNext?: () => void;
|
|
30
31
|
setIsLongPassage: React.Dispatch<React.SetStateAction<boolean>>;
|
|
32
|
+
setIsInitialLoading: React.Dispatch<React.SetStateAction<boolean>>;
|
|
31
33
|
}
|
|
32
34
|
declare function MaterialQuizProvider({ materialQuizId, userId, onSubmit, onDirty, onNext, children, }: MaterialQuizProviderProps): React.JSX.Element;
|
|
33
35
|
declare function useMaterialQuizState(): State;
|
|
@@ -22,7 +22,12 @@ function MaterialQuizProvider({
|
|
|
22
22
|
const [initStatus, setInitStatus] = React.useState('idle');
|
|
23
23
|
const [vertical, setVertical] = React.useState(false);
|
|
24
24
|
const [isLongPassage, setIsLongPassage] = React.useState(false);
|
|
25
|
+
const [isInitialLoading, setIsInitialLoading] = React.useState(true);
|
|
25
26
|
const canInit = materialSharedUtils.useMaterialConfigApiClientUpdate(apiClient.config.init);
|
|
27
|
+
const resetLayout = () => {
|
|
28
|
+
setIsInitialLoading(true);
|
|
29
|
+
setIsLongPassage(false);
|
|
30
|
+
};
|
|
26
31
|
const {
|
|
27
32
|
materialQuiz,
|
|
28
33
|
materialLecturePage,
|
|
@@ -75,6 +80,11 @@ function MaterialQuizProvider({
|
|
|
75
80
|
}
|
|
76
81
|
return () => controller.abort();
|
|
77
82
|
}, [materialLecturePage]);
|
|
83
|
+
React.useEffect(() => {
|
|
84
|
+
if (materialQuizId) {
|
|
85
|
+
resetLayout();
|
|
86
|
+
}
|
|
87
|
+
}, [materialQuizId]);
|
|
78
88
|
React.useEffect(() => {
|
|
79
89
|
if (canInit && materialLecturePage) {
|
|
80
90
|
void init();
|
|
@@ -88,7 +98,8 @@ function MaterialQuizProvider({
|
|
|
88
98
|
userId,
|
|
89
99
|
vertical,
|
|
90
100
|
initStatus,
|
|
91
|
-
isLongPassage
|
|
101
|
+
isLongPassage,
|
|
102
|
+
isInitialLoading
|
|
92
103
|
}
|
|
93
104
|
}, React.createElement(DispatchContext.Provider, {
|
|
94
105
|
value: {
|
|
@@ -97,7 +108,8 @@ function MaterialQuizProvider({
|
|
|
97
108
|
onNext,
|
|
98
109
|
refreshOrgMaterialQuiz,
|
|
99
110
|
setVertical,
|
|
100
|
-
setIsLongPassage
|
|
111
|
+
setIsLongPassage,
|
|
112
|
+
setIsInitialLoading
|
|
101
113
|
}
|
|
102
114
|
}, children));
|
|
103
115
|
}
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
var messageEn = {"materialQuiz.anchorLabel.question":"
|
|
5
|
+
var messageEn = {"materialQuiz.anchorLabel.question":"Passage","materialQuiz.anchorLabel.answer":"Answer","materialQuiz.error":"Failed to fetch quiz","materialQuiz.submit":"Submit","materialQuiz.resubmit":"Resubmit","materialQuiz.submittedAnswer":"Submitted Answer","materialQuiz.answer":"Answer","materialQuiz.next":"Next question >","materialQuiz.selectOne.answer.title":"Choose from the views below.","materialQuiz.selectMultiple.answer.title":"Choose from the views below. (Redundant selections available)","materialQuiz.selectMultipleOrder.answer.title":"Drag and drop your answers.","materialQuiz.text.answer.title":"Please fill out the answer.","materialQuiz.empty.title":"Quiz is now preparing.","materialQuiz.empty.description":"Please check again after quiz posting!","materialQuiz.survey.empty.title":"Survey is now preparing.","materialQuiz.survey.empty.description":"Please check again after survey posting!","materialQuiz.submitStatus.success":"Submitted","materialQuiz.submitStatus.failure":"Failed to submit","materialQuiz.resultStatus.correct":"Correct","materialQuiz.resultStatus.wrong":"Wrong","materialQuiz.resultStatus.submitted":"Submitted","materialQuiz.explanation.close":"close quiz explanations","materialQuiz.explanation.show":"show quiz explanations","materialQuiz.explanation.empty":"no explanations","materialQuiz.text.placeholder":"please fill the answer","materialQuiz.text.correct":"that's correct!","materialQuiz.text.wrong":"that's wrong. try it again!","materialQuiz.order.answerEmpty":"You could move the options back here","materialQuiz.bottomSheet.title":"Options","materialQuiz.bottomSheet.optionEmpty":"All views have been placed in the group.","materialQuiz.dropzone.desktop.answerEmpty":"Drag the view into the area.","materialQuiz.dropzone.mobile.answerEmpty":"Click here to add a view.","materialQuiz.dropzone.optionEmpty":"Option","materialQuiz.dropzone.optionReset":"Answer Reset"};
|
|
6
6
|
|
|
7
7
|
exports.default = messageEn;
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
var ja = {"materialQuiz.anchorLabel.question":"
|
|
5
|
+
var ja = {"materialQuiz.anchorLabel.question":"文章","materialQuiz.anchorLabel.answer":"回答","materialQuiz.error":"クイズの取得に失敗しました。","materialQuiz.submit":"提出","materialQuiz.resubmit":"再送信","materialQuiz.submittedAnswer":"提出された回答","materialQuiz.answer":"回答","materialQuiz.next":"次の質問 >","materialQuiz.selectOne.answer.title":"以下から選択してください。","materialQuiz.selectMultiple.answer.title":"以下から選択してください。 (冗長な選択肢も利用可能)","materialQuiz.selectMultipleOrder.answer.title":"ドラッグして回答をドロップしてください。","materialQuiz.text.answer.title":"回答を記入してください。","materialQuiz.empty.title":"クイズは今準備中です。","materialQuiz.empty.description":"クイズの投稿後にもう一度確認してください!","materialQuiz.survey.empty.title":"調査は現在準備中です。","materialQuiz.survey.empty.description":"調査投稿後にもう一度ご確認ください!","materialQuiz.submitStatus.success":"提出済","materialQuiz.submitStatus.failure":"提出に失敗しました。","materialQuiz.resultStatus.correct":"正しい","materialQuiz.resultStatus.wrong":"間違った","materialQuiz.resultStatus.submitted":"提出済","materialQuiz.explanation.close":"クイズの説明を閉じる","materialQuiz.explanation.show":"クイズの説明を表示します","materialQuiz.explanation.empty":"いいです。","materialQuiz.text.placeholder":"回答を入力してください","materialQuiz.text.correct":"その通りです!","materialQuiz.text.wrong":"それは間違っています。もう一度やってみてください!","materialQuiz.order.answerEmpty":"オプションをここに戻すことができます。","materialQuiz.bottomSheet.title":"オプション","materialQuiz.bottomSheet.optionEmpty":"すべてのビューがグループに配置されました。","materialQuiz.dropzone.desktop.answerEmpty":"ビューをエリアにドラッグしてください。","materialQuiz.dropzone.mobile.answerEmpty":"ここをクリックしてビューを追加してください。","materialQuiz.dropzone.optionEmpty":"オプション","materialQuiz.dropzone.optionReset":"回答をリセットします"};
|
|
6
6
|
|
|
7
7
|
exports.default = ja;
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
var messageKo = {"materialQuiz.anchorLabel.question":"지문","materialQuiz.anchorLabel.answer":"
|
|
5
|
+
var messageKo = {"materialQuiz.anchorLabel.question":"지문","materialQuiz.anchorLabel.answer":"답안","materialQuiz.error":"퀴즈를 불러오는데 실패했습니다.\n잠시 후 다시 시도해주세요.","materialQuiz.submit":"제출","materialQuiz.resubmit":"다시 제출","materialQuiz.submittedAnswer":"제출한 답","materialQuiz.answer":"정답","materialQuiz.next":"다음 문제로 이동 >","materialQuiz.selectOne.answer.title":"아래 보기에서 골라주세요.","materialQuiz.selectMultiple.answer.title":"아래 보기에서 골라주세요. (중복 선택 가능)","materialQuiz.selectMultipleOrder.answer.title":"답안을 드래그 앤 드롭하세요.","materialQuiz.text.answer.title":"답안을 작성해 주세요.","materialQuiz.empty.title":"퀴즈가 준비 중 입니다.","materialQuiz.empty.description":"퀴즈 게시 후 다시 확인해주세요!","materialQuiz.survey.empty.title":"설문조사 준비 중 입니다.","materialQuiz.survey.empty.description":"설문지 게시 후 다시 확인해주세요!","materialQuiz.submitStatus.success":"제출되었습니다.","materialQuiz.submitStatus.failure":"제출에 실패하였습니다.","materialQuiz.resultStatus.correct":"정답","materialQuiz.resultStatus.wrong":"오답","materialQuiz.resultStatus.submitted":"제출완료","materialQuiz.explanation.close":"퀴즈해설 닫기","materialQuiz.explanation.show":"퀴즈 해설 보기","materialQuiz.explanation.empty":"작성된 해설이 없습니다.","materialQuiz.text.placeholder":"답안을 작성해 주세요.","materialQuiz.text.correct":"정답입니다.","materialQuiz.text.wrong":"오답입니다. 다시 답안을 제출해보세요.","materialQuiz.order.answerEmpty":"항목을 다시 이곳으로 옮길 수 있습니다.","materialQuiz.bottomSheet.title":"보기","materialQuiz.bottomSheet.optionEmpty":"모든 보기를 그룹에 배치하였습니다.","materialQuiz.dropzone.desktop.answerEmpty":"보기를 영역에 끌어 넣어주세요.","materialQuiz.dropzone.mobile.answerEmpty":"이곳을 클릭하여 보기를 넣어주세요.","materialQuiz.dropzone.optionEmpty":"보기","materialQuiz.dropzone.optionReset":"답안 초기화"};
|
|
6
6
|
|
|
7
7
|
exports.default = messageKo;
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
var th = {"materialQuiz.anchorLabel.question":"
|
|
5
|
+
var th = {"materialQuiz.anchorLabel.question":"ทางเดิน","materialQuiz.anchorLabel.answer":"ดคำตอบ","materialQuiz.error":"ไม่สามารถดึงควิซได้","materialQuiz.submit":"ส่งใบสมัคร","materialQuiz.resubmit":"ส่งอีกครั้ง","materialQuiz.submittedAnswer":"ฉันสามารถตอบคำถามเช่นนี้ได้","materialQuiz.answer":"ตอบ","materialQuiz.next":"คำถามถัดไป >","materialQuiz.selectOne.answer.title":"เลือกจากมุมมองด้านล่างนี้","materialQuiz.selectMultiple.answer.title":"เลือกจากรายการด้านล่าง (มีการเลือกที่ซ้ำซ้อน)","materialQuiz.selectMultipleOrder.answer.title":"ลากและวางคำตอบของคุณ","materialQuiz.text.answer.title":"กรุณากรอกคำตอบ","materialQuiz.empty.title":"ควิซกำลังเตรียมอยู่ตอนนี้","materialQuiz.empty.description":"โปรดตรวจสอบอีกครั้งหลังจากโพสต์ควิซ!","materialQuiz.survey.empty.title":"การสำรวจกำลังเตรียมการอยู่ค่ะ","materialQuiz.survey.empty.description":"โปรดตรวจสอบอีกครั้งหลังจากโพสต์แบบสำรวจ!","materialQuiz.submitStatus.success":"เสนอ","materialQuiz.submitStatus.failure":"การส่งล้มเหลว","materialQuiz.resultStatus.correct":"ถูกต้อง","materialQuiz.resultStatus.wrong":"ผิด","materialQuiz.resultStatus.submitted":"เสนอ","materialQuiz.explanation.close":"ปิดคำอธิบายควิซ","materialQuiz.explanation.show":"แสดงคำอธิบายของควิซ","materialQuiz.explanation.empty":"ไม่ให้อธิบาย","materialQuiz.text.placeholder":"กรุณากรอกคำตอบ","materialQuiz.text.correct":"ถูกต้อง!","materialQuiz.text.wrong":"นั่นผิด ลองอีกครั้ง!","materialQuiz.order.answerEmpty":"คุณสามารถย้ายตัวเลือกกลับมาที่นี่ได้","materialQuiz.bottomSheet.title":"ตัวเลือก","materialQuiz.bottomSheet.optionEmpty":"ทุกมุมมองได้ถูกวางไว้ในกลุ่มแล้ว","materialQuiz.dropzone.desktop.answerEmpty":"ลากมุมมองเข้าสู่พื้นที่","materialQuiz.dropzone.mobile.answerEmpty":"คลิกที่นี่เพื่อเพิ่มมุมมอง","materialQuiz.dropzone.optionEmpty":"ตัวเลือก","materialQuiz.dropzone.optionReset":"รีเซ็ตคำตอบ"};
|
|
6
6
|
|
|
7
7
|
exports.default = th;
|