@elice/material-survey 1.220803.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.
Files changed (118) hide show
  1. package/README.md +3 -0
  2. package/cjs/components/material-survey/MaterialSurvey.d.ts +4 -0
  3. package/cjs/components/material-survey/MaterialSurvey.i18n.d.ts +16 -0
  4. package/cjs/components/material-survey/MaterialSurvey.i18n.js +37 -0
  5. package/cjs/components/material-survey/MaterialSurvey.js +109 -0
  6. package/cjs/components/material-survey/MaterialSurveyError.d.ts +3 -0
  7. package/cjs/components/material-survey/MaterialSurveyInfo.d.ts +3 -0
  8. package/cjs/components/material-survey/MaterialSurveyInfo.js +73 -0
  9. package/cjs/components/material-survey/MaterialSurveySelectMultiple.d.ts +3 -0
  10. package/cjs/components/material-survey/MaterialSurveySelectMultiple.js +184 -0
  11. package/cjs/components/material-survey/MaterialSurveySelectOne.d.ts +3 -0
  12. package/cjs/components/material-survey/MaterialSurveySelectOne.js +164 -0
  13. package/cjs/components/material-survey/MaterialSurveyShimmer.d.ts +3 -0
  14. package/cjs/components/material-survey/MaterialSurveyShimmer.js +61 -0
  15. package/cjs/components/material-survey/MaterialSurveyText.d.ts +3 -0
  16. package/cjs/components/material-survey/MaterialSurveyText.js +159 -0
  17. package/cjs/components/material-survey/SurveyResultBadge.d.ts +7 -0
  18. package/cjs/components/material-survey/SurveyResultBadge.js +32 -0
  19. package/cjs/components/material-survey/SurveySubmitStatusText.d.ts +7 -0
  20. package/cjs/components/material-survey/SurveySubmitStatusText.js +38 -0
  21. package/cjs/components/material-survey/context/MaterialSurveyContext.d.ts +31 -0
  22. package/cjs/components/material-survey/context/MaterialSurveyContext.js +134 -0
  23. package/cjs/components/material-survey/index.d.ts +3 -0
  24. package/cjs/components/material-survey-edit/MaterialSurveyEdit.d.ts +25 -0
  25. package/cjs/components/material-survey-edit/MaterialSurveyEdit.js +91 -0
  26. package/cjs/components/material-survey-edit/MaterialSurveyEditContent.d.ts +3 -0
  27. package/cjs/components/material-survey-edit/MaterialSurveyEditContent.js +235 -0
  28. package/cjs/components/material-survey-edit/MaterialSurveyEditOptionSelect.d.ts +3 -0
  29. package/cjs/components/material-survey-edit/MaterialSurveyEditOptionSelect.js +132 -0
  30. package/cjs/components/material-survey-edit/context.d.ts +6 -0
  31. package/cjs/components/material-survey-edit/context.js +15 -0
  32. package/cjs/components/material-survey-edit/index.d.ts +2 -0
  33. package/cjs/components/material-survey-edit/locales.d.ts +20 -0
  34. package/cjs/components/material-survey-edit/locales.js +45 -0
  35. package/cjs/components/material-survey-edit/utils/editValue.d.ts +19 -0
  36. package/cjs/components/material-survey-edit/utils/editValue.js +46 -0
  37. package/cjs/components/material-survey-edit/utils/randomId.d.ts +4 -0
  38. package/cjs/components/material-survey-edit/utils/randomId.js +12 -0
  39. package/cjs/components/shared/StyledMarkdown.d.ts +3 -0
  40. package/cjs/components/shared/StyledMarkdown.js +14 -0
  41. package/cjs/components/shared/SurveyContentBox.d.ts +15 -0
  42. package/cjs/components/shared/SurveyContentBox.js +108 -0
  43. package/cjs/components/shared/index.d.ts +4 -0
  44. package/cjs/components/shared/question-checkbox/QuestionCheckbox.d.ts +8 -0
  45. package/cjs/components/shared/question-checkbox/QuestionCheckbox.js +26 -0
  46. package/cjs/components/shared/question-checkbox/QuestionCheckboxContext.d.ts +9 -0
  47. package/cjs/components/shared/question-checkbox/QuestionCheckboxContext.js +42 -0
  48. package/cjs/components/shared/question-checkbox/QuestionCheckboxOption.d.ts +9 -0
  49. package/cjs/components/shared/question-checkbox/QuestionCheckboxOption.js +226 -0
  50. package/cjs/components/shared/question-radio/QuestionRadio.d.ts +8 -0
  51. package/cjs/components/shared/question-radio/QuestionRadio.js +26 -0
  52. package/cjs/components/shared/question-radio/QuestionRadioContext.d.ts +9 -0
  53. package/cjs/components/shared/question-radio/QuestionRadioContext.js +42 -0
  54. package/cjs/components/shared/question-radio/QuestionRadioOption.d.ts +9 -0
  55. package/cjs/components/shared/question-radio/QuestionRadioOption.js +187 -0
  56. package/cjs/helpers/index.d.ts +22 -0
  57. package/cjs/helpers/index.js +26 -0
  58. package/cjs/index.d.ts +3 -0
  59. package/cjs/index.js +21 -0
  60. package/es/components/material-survey/MaterialSurvey.d.ts +4 -0
  61. package/es/components/material-survey/MaterialSurvey.i18n.d.ts +16 -0
  62. package/es/components/material-survey/MaterialSurvey.i18n.js +32 -0
  63. package/es/components/material-survey/MaterialSurvey.js +101 -0
  64. package/es/components/material-survey/MaterialSurveyError.d.ts +3 -0
  65. package/es/components/material-survey/MaterialSurveyInfo.d.ts +3 -0
  66. package/es/components/material-survey/MaterialSurveyInfo.js +67 -0
  67. package/es/components/material-survey/MaterialSurveySelectMultiple.d.ts +3 -0
  68. package/es/components/material-survey/MaterialSurveySelectMultiple.js +178 -0
  69. package/es/components/material-survey/MaterialSurveySelectOne.d.ts +3 -0
  70. package/es/components/material-survey/MaterialSurveySelectOne.js +158 -0
  71. package/es/components/material-survey/MaterialSurveyShimmer.d.ts +3 -0
  72. package/es/components/material-survey/MaterialSurveyShimmer.js +54 -0
  73. package/es/components/material-survey/MaterialSurveyText.d.ts +3 -0
  74. package/es/components/material-survey/MaterialSurveyText.js +152 -0
  75. package/es/components/material-survey/SurveyResultBadge.d.ts +7 -0
  76. package/es/components/material-survey/SurveyResultBadge.js +26 -0
  77. package/es/components/material-survey/SurveySubmitStatusText.d.ts +7 -0
  78. package/es/components/material-survey/SurveySubmitStatusText.js +32 -0
  79. package/es/components/material-survey/context/MaterialSurveyContext.d.ts +31 -0
  80. package/es/components/material-survey/context/MaterialSurveyContext.js +124 -0
  81. package/es/components/material-survey/index.d.ts +3 -0
  82. package/es/components/material-survey-edit/MaterialSurveyEdit.d.ts +25 -0
  83. package/es/components/material-survey-edit/MaterialSurveyEdit.js +86 -0
  84. package/es/components/material-survey-edit/MaterialSurveyEditContent.d.ts +3 -0
  85. package/es/components/material-survey-edit/MaterialSurveyEditContent.js +228 -0
  86. package/es/components/material-survey-edit/MaterialSurveyEditOptionSelect.d.ts +3 -0
  87. package/es/components/material-survey-edit/MaterialSurveyEditOptionSelect.js +125 -0
  88. package/es/components/material-survey-edit/context.d.ts +6 -0
  89. package/es/components/material-survey-edit/context.js +6 -0
  90. package/es/components/material-survey-edit/index.d.ts +2 -0
  91. package/es/components/material-survey-edit/locales.d.ts +20 -0
  92. package/es/components/material-survey-edit/locales.js +40 -0
  93. package/es/components/material-survey-edit/utils/editValue.d.ts +19 -0
  94. package/es/components/material-survey-edit/utils/editValue.js +41 -0
  95. package/es/components/material-survey-edit/utils/randomId.d.ts +4 -0
  96. package/es/components/material-survey-edit/utils/randomId.js +8 -0
  97. package/es/components/shared/StyledMarkdown.d.ts +3 -0
  98. package/es/components/shared/StyledMarkdown.js +8 -0
  99. package/es/components/shared/SurveyContentBox.d.ts +15 -0
  100. package/es/components/shared/SurveyContentBox.js +98 -0
  101. package/es/components/shared/index.d.ts +4 -0
  102. package/es/components/shared/question-checkbox/QuestionCheckbox.d.ts +8 -0
  103. package/es/components/shared/question-checkbox/QuestionCheckbox.js +19 -0
  104. package/es/components/shared/question-checkbox/QuestionCheckboxContext.d.ts +9 -0
  105. package/es/components/shared/question-checkbox/QuestionCheckboxContext.js +33 -0
  106. package/es/components/shared/question-checkbox/QuestionCheckboxOption.d.ts +9 -0
  107. package/es/components/shared/question-checkbox/QuestionCheckboxOption.js +219 -0
  108. package/es/components/shared/question-radio/QuestionRadio.d.ts +8 -0
  109. package/es/components/shared/question-radio/QuestionRadio.js +19 -0
  110. package/es/components/shared/question-radio/QuestionRadioContext.d.ts +9 -0
  111. package/es/components/shared/question-radio/QuestionRadioContext.js +33 -0
  112. package/es/components/shared/question-radio/QuestionRadioOption.d.ts +9 -0
  113. package/es/components/shared/question-radio/QuestionRadioOption.js +180 -0
  114. package/es/helpers/index.d.ts +22 -0
  115. package/es/helpers/index.js +21 -0
  116. package/es/index.d.ts +3 -0
  117. package/es/index.js +7 -0
  118. package/package.json +71 -0
package/README.md ADDED
@@ -0,0 +1,3 @@
1
+ # elice-material-survey
2
+
3
+ User view and editing components of Elice material survey.
@@ -0,0 +1,4 @@
1
+ import React from 'react';
2
+ import type { MaterialSurveyProps } from './context/MaterialSurveyContext';
3
+ declare const MaterialSurveyContainer: React.FC<MaterialSurveyProps>;
4
+ export default MaterialSurveyContainer;
@@ -0,0 +1,16 @@
1
+ export declare const en: {
2
+ 'materialSurvey.error': string;
3
+ 'materialSurvey.submit': string;
4
+ 'materialSurvey.submittedAnswer': string;
5
+ 'materialSurvey.next': string;
6
+ 'materialSurvey.myAnswer': string;
7
+ 'materialSurvey.empty.title': string;
8
+ 'materialSurvey.empty.description': string;
9
+ 'materialSurvey.survey.empty.title': string;
10
+ 'materialSurvey.survey.empty.description': string;
11
+ 'materialSurvey.submitStatus.success': string;
12
+ 'materialSurvey.submitStatus.failure': string;
13
+ 'materialSurvey.resultStatus.submitted': string;
14
+ 'materialSurvey.text.placeholder': string;
15
+ };
16
+ export declare const ko: typeof en;
@@ -0,0 +1,37 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ const en = {
6
+ 'materialSurvey.error': 'Failed to fetch survey',
7
+ 'materialSurvey.submit': 'Submit',
8
+ 'materialSurvey.submittedAnswer': 'Submitted Answer',
9
+ 'materialSurvey.next': 'Next question >',
10
+ 'materialSurvey.myAnswer': 'My answer',
11
+ 'materialSurvey.empty.title': 'Survey is now preparing.',
12
+ 'materialSurvey.empty.description': 'Please check again after survey posting!',
13
+ 'materialSurvey.survey.empty.title': 'Survey is now preparing.',
14
+ 'materialSurvey.survey.empty.description': 'Please check again after survey posting!',
15
+ 'materialSurvey.submitStatus.success': 'Submitted',
16
+ 'materialSurvey.submitStatus.failure': 'Failed to submit',
17
+ 'materialSurvey.resultStatus.submitted': 'Submitted',
18
+ 'materialSurvey.text.placeholder': 'please fill the answer'
19
+ };
20
+ const ko = {
21
+ 'materialSurvey.error': '설문조사를 불러오는데 실패했습니다.\n잠시 후 다시 시도해주세요.',
22
+ 'materialSurvey.submit': '제출',
23
+ 'materialSurvey.submittedAnswer': '제출한 답',
24
+ 'materialSurvey.next': '다음으로 이동 >',
25
+ 'materialSurvey.myAnswer': '내 답변',
26
+ 'materialSurvey.empty.title': '설문조사가 준비 중 입니다.',
27
+ 'materialSurvey.empty.description': '설문조사 게시 후 다시 확인해주세요!',
28
+ 'materialSurvey.survey.empty.title': '설문조사가 준비 중 입니다.',
29
+ 'materialSurvey.survey.empty.description': '설문지 게시 후 다시 확인해주세요!',
30
+ 'materialSurvey.submitStatus.success': '제출되었습니다.',
31
+ 'materialSurvey.submitStatus.failure': '제출에 실패하였습니다.',
32
+ 'materialSurvey.resultStatus.submitted': '제출완료',
33
+ 'materialSurvey.text.placeholder': '답변을 입력하세요.'
34
+ };
35
+
36
+ exports.en = en;
37
+ exports.ko = ko;
@@ -0,0 +1,109 @@
1
+ 'use strict';
2
+
3
+ var React = require('react');
4
+ var reactIntl = require('react-intl');
5
+ var reactUse = require('react-use');
6
+ var designTokens = require('@elice/design-tokens');
7
+ var types = require('@elice/types');
8
+ var styled = require('styled-components');
9
+ var MaterialSurveyContext = require('./context/MaterialSurveyContext.js');
10
+ var MaterialSurveyShimmer = require('./MaterialSurveyShimmer.js');
11
+ var MaterialSurveyInfo = require('./MaterialSurveyInfo.js');
12
+ var MaterialSurvey_i18n = require('./MaterialSurvey.i18n.js');
13
+
14
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
15
+
16
+ function _interopNamespaceDefaultOnly (e) { return Object.freeze({ __proto__: null, 'default': e }); }
17
+
18
+ var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
19
+ var styled__default = /*#__PURE__*/_interopDefaultLegacy(styled);
20
+
21
+ const AsyncMaterialSurveySelectMultiple = React__default["default"].lazy(() => Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespaceDefaultOnly(require('./MaterialSurveySelectMultiple.js')); }));
22
+ const AsyncMaterialSurveyText = React__default["default"].lazy(() => Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespaceDefaultOnly(require('./MaterialSurveyText.js')); }));
23
+ const AsyncMaterialSurveySelectOne = React__default["default"].lazy(() => Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespaceDefaultOnly(require('./MaterialSurveySelectOne.js')); }));
24
+ const StyledMaterialSurveyInfo = styled__default["default"].div.withConfig({
25
+ componentId: "sc-1fyzkvm-0"
26
+ })([""]);
27
+ const StyledMaterialSurveyContent = styled__default["default"].div.withConfig({
28
+ componentId: "sc-1fyzkvm-1"
29
+ })([""]);
30
+ const StyledMaterialSurveyWrapper = styled__default["default"].div.withConfig({
31
+ componentId: "sc-1fyzkvm-2"
32
+ })(["display:flex;height:100%;flex-direction:", ";& > *{flex:", ";}& > *:first-child{margin-right:", ";margin-bottom:", ";}", "{height:", ";overflow-y:", ";}"], ({
33
+ vertical
34
+ }) => vertical ? 'column' : 'row', ({
35
+ vertical
36
+ }) => vertical ? 'auto' : '1 0 calc(50% - 1rem);', ({
37
+ vertical
38
+ }) => vertical ? '0' : '1rem', ({
39
+ vertical
40
+ }) => vertical ? '1rem' : '0', StyledMaterialSurveyInfo, ({
41
+ vertical
42
+ }) => vertical ? 'auto' : '100%', ({
43
+ vertical
44
+ }) => vertical ? 'intial' : 'auto');
45
+
46
+ const MaterialSurvey = () => {
47
+ const {
48
+ materialSurvey,
49
+ vertical
50
+ } = MaterialSurveyContext.useMaterialSurveyState();
51
+ const {
52
+ setVertical
53
+ } = MaterialSurveyContext.useMaterialSurveyDispatch();
54
+ const [ref, {
55
+ width
56
+ }] = reactUse.useMeasure();
57
+ React__default["default"].useEffect(() => {
58
+ if (width > 0) {
59
+ setVertical(width <= designTokens.base.screen.medium);
60
+ }
61
+ }, [width, setVertical]);
62
+ let Component = null;
63
+
64
+ switch (materialSurvey === null || materialSurvey === void 0 ? void 0 : materialSurvey.questionInfoList[0].optionType) {
65
+ case types.enums.SurveyOptionType.SelectOne:
66
+ Component = React__default["default"].createElement(AsyncMaterialSurveySelectOne, null);
67
+ break;
68
+
69
+ case types.enums.SurveyOptionType.SelectMultiple:
70
+ Component = React__default["default"].createElement(AsyncMaterialSurveySelectMultiple, null);
71
+ break;
72
+
73
+ case types.enums.SurveyOptionType.Text:
74
+ Component = React__default["default"].createElement(AsyncMaterialSurveyText, null);
75
+ break;
76
+
77
+ default:
78
+ Component = React__default["default"].createElement(MaterialSurveyShimmer, null);
79
+ break;
80
+ }
81
+
82
+ return React__default["default"].createElement(React__default["default"].Suspense, {
83
+ fallback: null
84
+ }, React__default["default"].createElement(StyledMaterialSurveyWrapper, {
85
+ ref: ref,
86
+ vertical: vertical
87
+ }, React__default["default"].createElement(StyledMaterialSurveyInfo, null, React__default["default"].createElement(MaterialSurveyInfo, null)), React__default["default"].createElement(StyledMaterialSurveyContent, null, Component)));
88
+ };
89
+
90
+ const MaterialSurveyContainer = ({
91
+ materialSurveyId,
92
+ userId,
93
+ locale = 'en',
94
+ onSubmit,
95
+ onNext
96
+ }) => {
97
+ return React__default["default"].createElement(reactIntl.IntlProvider, {
98
+ locale: locale,
99
+ defaultLocale: "en",
100
+ messages: locale in MaterialSurvey_i18n ? MaterialSurvey_i18n[locale] : MaterialSurvey_i18n.en
101
+ }, React__default["default"].createElement(MaterialSurveyContext.MaterialSurveyProvider, {
102
+ materialSurveyId: materialSurveyId,
103
+ userId: userId,
104
+ onSubmit: onSubmit,
105
+ onNext: onNext
106
+ }, React__default["default"].createElement(MaterialSurvey, null)));
107
+ };
108
+
109
+ module.exports = MaterialSurveyContainer;
@@ -0,0 +1,3 @@
1
+ import React from 'react';
2
+ declare const MaterialSurveyError: React.FC;
3
+ export default MaterialSurveyError;
@@ -0,0 +1,3 @@
1
+ import React from 'react';
2
+ declare const MaterialSurveyInfo: React.FC;
3
+ export default MaterialSurveyInfo;
@@ -0,0 +1,73 @@
1
+ 'use strict';
2
+
3
+ var React = require('react');
4
+ var blocks = require('@elice/blocks');
5
+ var designTokens = require('@elice/design-tokens');
6
+ var markdown = require('@elice/markdown');
7
+ var SurveyContentBox = require('../shared/SurveyContentBox.js');
8
+ var MaterialSurveyContext = require('./context/MaterialSurveyContext.js');
9
+
10
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
11
+
12
+ var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
13
+
14
+ const MaterialSurveyInfo = () => {
15
+ const {
16
+ materialSurvey
17
+ } = MaterialSurveyContext.useMaterialSurveyState();
18
+ return React__default["default"].createElement(SurveyContentBox["default"], {
19
+ title: materialSurvey === null || materialSurvey === void 0 ? void 0 : materialSurvey.title
20
+ }, materialSurvey ? React__default["default"].createElement(blocks.Flex, null, React__default["default"].createElement(blocks.Text, {
21
+ bold: true,
22
+ size: "large",
23
+ customStyles: {
24
+ color: designTokens.base.color.primary3,
25
+ marginRight: '0.5rem'
26
+ }
27
+ }, 'Q.'), React__default["default"].createElement(blocks.Text, {
28
+ bold: true,
29
+ role: "white",
30
+ size: "large",
31
+ wordBreak: "break-word"
32
+ }, materialSurvey.questionInfoList[0].questionTitle)) : React__default["default"].createElement(blocks.Shimmer, {
33
+ dark: true,
34
+ borderRadius: '4px',
35
+ width: "80%",
36
+ height: '40px'
37
+ }), React__default["default"].createElement(blocks.Vspace, {
38
+ height: 1
39
+ }), materialSurvey ? React__default["default"].createElement(markdown.MarkdownSSR, {
40
+ children: materialSurvey.questionInfoList[0].questionDescription,
41
+ dark: true,
42
+ paddingx: 0,
43
+ paddingy: 0
44
+ }) : React__default["default"].createElement(React__default["default"].Fragment, null, React__default["default"].createElement(blocks.Shimmer, {
45
+ dark: true,
46
+ borderRadius: '4px',
47
+ width: "80%",
48
+ height: '40px'
49
+ }), React__default["default"].createElement(blocks.Vspace, {
50
+ height: 1
51
+ }), React__default["default"].createElement(blocks.Shimmer, {
52
+ dark: true,
53
+ borderRadius: '4px',
54
+ width: "100%",
55
+ height: '40px'
56
+ }), React__default["default"].createElement(blocks.Vspace, {
57
+ height: 1
58
+ }), React__default["default"].createElement(blocks.Shimmer, {
59
+ dark: true,
60
+ borderRadius: '4px',
61
+ width: "100%",
62
+ height: '40px'
63
+ }), React__default["default"].createElement(blocks.Vspace, {
64
+ height: 1
65
+ }), React__default["default"].createElement(blocks.Shimmer, {
66
+ dark: true,
67
+ borderRadius: '4px',
68
+ width: "100%",
69
+ height: '40px'
70
+ })));
71
+ };
72
+
73
+ module.exports = MaterialSurveyInfo;
@@ -0,0 +1,3 @@
1
+ import React from 'react';
2
+ declare const MaterialSurveySelectMultiple: React.FC;
3
+ export default MaterialSurveySelectMultiple;
@@ -0,0 +1,184 @@
1
+ 'use strict';
2
+
3
+ var React = require('react');
4
+ var reactIntl = require('react-intl');
5
+ var apiClient = require('@elice/api-client');
6
+ var index = require('../../helpers/index.js');
7
+ require('../shared/question-radio/QuestionRadio.js');
8
+ require('../shared/question-radio/QuestionRadioOption.js');
9
+ var QuestionCheckbox = require('../shared/question-checkbox/QuestionCheckbox.js');
10
+ var QuestionCheckboxOption = require('../shared/question-checkbox/QuestionCheckboxOption.js');
11
+ var StyledMarkdown = require('../shared/StyledMarkdown.js');
12
+ var SurveyContentBox = require('../shared/SurveyContentBox.js');
13
+ var MaterialSurveyContext = require('./context/MaterialSurveyContext.js');
14
+ var SurveyResultBadge = require('./SurveyResultBadge.js');
15
+ var SurveySubmitStatusText = require('./SurveySubmitStatusText.js');
16
+
17
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
18
+
19
+ var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
20
+
21
+ const MaterialSurveySelectMultiple = () => {
22
+ var _a; // context
23
+
24
+
25
+ const {
26
+ course,
27
+ lecture,
28
+ materialSurvey,
29
+ userId
30
+ } = MaterialSurveyContext.useMaterialSurveyState();
31
+ const {
32
+ onSubmit,
33
+ onNext,
34
+ refreshOrgMaterialSurvey
35
+ } = MaterialSurveyContext.useMaterialSurveyDispatch(); // state
36
+
37
+ const intl = reactIntl.useIntl();
38
+ const [selectedAnswer, setSelectedAnswer] = React__default["default"].useState([]);
39
+ const [materialSurveyResponse, setMaterialSurveyResponse] = React__default["default"].useState();
40
+ const [submitStatus, setSubmitStatus] = React__default["default"].useState('idle'); // survey response fetcher
41
+
42
+ React__default["default"].useEffect(() => {
43
+ if (!userId && (materialSurvey === null || materialSurvey === void 0 ? void 0 : materialSurvey.lastSurveyResponseId)) {
44
+ const controller = new AbortController();
45
+ const {
46
+ signal
47
+ } = controller;
48
+ apiClient.getOrgMaterialSurveyResponseGet({
49
+ surveyResponseId: materialSurvey.lastSurveyResponseId
50
+ }, {
51
+ signal
52
+ }).then(response => {
53
+ setMaterialSurveyResponse(response.surveyResponse);
54
+ setSelectedAnswer(response.surveyResponse.answers[0]);
55
+ }).catch(error => {
56
+ console.error(error);
57
+ });
58
+ return () => controller.abort();
59
+ }
60
+ }, [materialSurvey, userId]); // survey response fetcher
61
+
62
+ React__default["default"].useEffect(() => {
63
+ if (userId && materialSurvey) {
64
+ const controller = new AbortController();
65
+ const {
66
+ signal
67
+ } = controller;
68
+ apiClient.getOrgMaterialSurveyResponseList({
69
+ materialSurveyId: materialSurvey.id,
70
+ filterUserIds: [userId],
71
+ isContainOnlyLast: true,
72
+ isIncludeAnswer: true,
73
+ offset: 0,
74
+ count: 1
75
+ }, {
76
+ signal
77
+ }).then(response => {
78
+ const surveyResponse = response.surveyResponses[0];
79
+
80
+ const getAnswer = () => {
81
+ if (!surveyResponse) {
82
+ return [];
83
+ }
84
+
85
+ if (!Array.isArray(surveyResponse.answers)) {
86
+ return [];
87
+ }
88
+
89
+ if (typeof surveyResponse.answers[0] === 'string') {
90
+ return [];
91
+ }
92
+
93
+ return surveyResponse.answers[0];
94
+ };
95
+
96
+ setMaterialSurveyResponse(surveyResponse);
97
+ setSelectedAnswer(getAnswer());
98
+ }).catch(error => {
99
+ console.error(error);
100
+ });
101
+ return () => controller.abort();
102
+ }
103
+ }, [materialSurvey, userId]); // submit handler
104
+
105
+ const handleSubmit = async () => {
106
+ if (!materialSurvey) {
107
+ return;
108
+ }
109
+
110
+ setSubmitStatus('pending');
111
+
112
+ try {
113
+ const {
114
+ surveyResponseId
115
+ } = await apiClient.postOrgMaterialSurveyResponseAdd({
116
+ materialSurveyId: materialSurvey.id,
117
+ answers: [selectedAnswer]
118
+ });
119
+ const {
120
+ surveyResponse
121
+ } = await apiClient.getOrgMaterialSurveyResponseGet({
122
+ surveyResponseId
123
+ });
124
+ setMaterialSurveyResponse(surveyResponse);
125
+ void refreshOrgMaterialSurvey();
126
+ onSubmit(true);
127
+ setSubmitStatus('resolved');
128
+ } catch (error) {
129
+ console.error(error);
130
+ onSubmit(false);
131
+ setSubmitStatus('rejected');
132
+ }
133
+ };
134
+
135
+ return React__default["default"].createElement(SurveyContentBox["default"], {
136
+ title: intl.formatMessage({
137
+ id: 'materialSurvey.myAnswer'
138
+ }),
139
+ onNext: onNext,
140
+ submitResult: React__default["default"].createElement(SurveyResultBadge, {
141
+ materialSurveyResponse: materialSurveyResponse
142
+ }),
143
+ submitStatus: React__default["default"].createElement(SurveySubmitStatusText, {
144
+ status: submitStatus
145
+ }),
146
+ footerActions: [{
147
+ border: true,
148
+ disabled: selectedAnswer.length === 0 || index.checkUserLectureTestEnded(lecture) || !!userId,
149
+ loading: submitStatus === 'pending',
150
+ tabIndex: 0,
151
+ transparent: false,
152
+ role: 'primary',
153
+ onClick: handleSubmit,
154
+ children: intl.formatMessage({
155
+ id: 'materialSurvey.submit'
156
+ })
157
+ }]
158
+ }, React__default["default"].createElement(QuestionCheckbox, {
159
+ onSelect: index$1 => {
160
+ if (index.checkUserLectureTestEnded(lecture) || !!userId) {
161
+ return;
162
+ }
163
+
164
+ setSelectedAnswer(prevState => {
165
+ const newState = prevState.includes(index$1) ? prevState.filter(ident => ident !== index$1) : [...prevState, index$1];
166
+ return newState;
167
+ });
168
+ },
169
+ selectedOptions: selectedAnswer,
170
+ disabled: submitStatus === 'pending' || index.checkUserLectureTestEnded(lecture) || !!userId
171
+ }, (materialSurvey === null || materialSurvey === void 0 ? void 0 : materialSurvey.questionInfoList[0]) ? (_a = materialSurvey.questionInfoList[0].optionInfo) === null || _a === void 0 ? void 0 : _a.map((option, index) => {
172
+ return React__default["default"].createElement(QuestionCheckboxOption, {
173
+ key: index,
174
+ value: index
175
+ }, (course === null || course === void 0 ? void 0 : course.preference.renderMarkdownInSurveyOptions) ? React__default["default"].createElement(StyledMarkdown, {
176
+ dark: false,
177
+ children: option,
178
+ paddingx: 0,
179
+ paddingy: 0
180
+ }) : option);
181
+ }) : null));
182
+ };
183
+
184
+ module.exports = MaterialSurveySelectMultiple;
@@ -0,0 +1,3 @@
1
+ import React from 'react';
2
+ declare const MaterialSurveySelectOne: React.FC;
3
+ export default MaterialSurveySelectOne;
@@ -0,0 +1,164 @@
1
+ 'use strict';
2
+
3
+ var React = require('react');
4
+ var reactIntl = require('react-intl');
5
+ var apiClient = require('@elice/api-client');
6
+ var index = require('../../helpers/index.js');
7
+ var QuestionRadio = require('../shared/question-radio/QuestionRadio.js');
8
+ var QuestionRadioOption = require('../shared/question-radio/QuestionRadioOption.js');
9
+ require('../shared/question-checkbox/QuestionCheckbox.js');
10
+ require('../shared/question-checkbox/QuestionCheckboxOption.js');
11
+ var StyledMarkdown = require('../shared/StyledMarkdown.js');
12
+ var SurveyContentBox = require('../shared/SurveyContentBox.js');
13
+ var MaterialSurveyContext = require('./context/MaterialSurveyContext.js');
14
+ var SurveyResultBadge = require('./SurveyResultBadge.js');
15
+ var SurveySubmitStatusText = require('./SurveySubmitStatusText.js');
16
+
17
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
18
+
19
+ var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
20
+
21
+ const MaterialSurveySelectOne = () => {
22
+ // context
23
+ const {
24
+ course,
25
+ lecture,
26
+ materialSurvey,
27
+ userId
28
+ } = MaterialSurveyContext.useMaterialSurveyState();
29
+ const {
30
+ onSubmit,
31
+ onNext,
32
+ refreshOrgMaterialSurvey
33
+ } = MaterialSurveyContext.useMaterialSurveyDispatch(); // state
34
+
35
+ const intl = reactIntl.useIntl();
36
+ const [selectedAnswer, setSelectedAnswer] = React__default["default"].useState();
37
+ const [materialSurveyResponse, setMaterialSurveyResponse] = React__default["default"].useState();
38
+ const [submitStatus, setSubmitStatus] = React__default["default"].useState('idle'); // survey response fetcher
39
+
40
+ React__default["default"].useEffect(() => {
41
+ if (!userId && (materialSurvey === null || materialSurvey === void 0 ? void 0 : materialSurvey.lastSurveyResponseId)) {
42
+ const controller = new AbortController();
43
+ const {
44
+ signal
45
+ } = controller;
46
+ apiClient.getOrgMaterialSurveyResponseGet({
47
+ surveyResponseId: materialSurvey.lastSurveyResponseId
48
+ }, {
49
+ signal
50
+ }).then(response => {
51
+ setMaterialSurveyResponse(response.surveyResponse);
52
+ setSelectedAnswer(typeof response.surveyResponse.answers[0] === 'string' ? undefined : response.surveyResponse.answers[0][0]);
53
+ }).catch(error => {
54
+ console.error(error);
55
+ });
56
+ return () => controller.abort();
57
+ }
58
+ }, [materialSurvey, userId]); // survey response fetcher
59
+
60
+ React__default["default"].useEffect(() => {
61
+ if (userId && materialSurvey) {
62
+ const controller = new AbortController();
63
+ const {
64
+ signal
65
+ } = controller;
66
+ apiClient.getOrgMaterialSurveyResponseList({
67
+ materialSurveyId: materialSurvey.id,
68
+ filterUserIds: [userId],
69
+ isContainOnlyLast: true,
70
+ isIncludeAnswer: true,
71
+ offset: 0,
72
+ count: 1
73
+ }, {
74
+ signal
75
+ }).then(response => {
76
+ var _a;
77
+
78
+ const surveyResponse = response.surveyResponses[0];
79
+ setMaterialSurveyResponse(surveyResponse);
80
+ setSelectedAnswer(typeof (surveyResponse === null || surveyResponse === void 0 ? void 0 : surveyResponse.answers[0]) === 'string' ? undefined : (_a = surveyResponse === null || surveyResponse === void 0 ? void 0 : surveyResponse.answers[0][0]) !== null && _a !== void 0 ? _a : undefined);
81
+ }).catch(error => {
82
+ console.error(error);
83
+ });
84
+ return () => controller.abort();
85
+ }
86
+ }, [materialSurvey, userId]); // submit handler
87
+
88
+ const handleSubmit = async () => {
89
+ if (!materialSurvey) {
90
+ return;
91
+ }
92
+
93
+ setSubmitStatus('pending');
94
+
95
+ try {
96
+ const {
97
+ surveyResponseId
98
+ } = await apiClient.postOrgMaterialSurveyResponseAdd({
99
+ materialSurveyId: materialSurvey.id,
100
+ answers: [[selectedAnswer]]
101
+ });
102
+ const {
103
+ surveyResponse
104
+ } = await apiClient.getOrgMaterialSurveyResponseGet({
105
+ surveyResponseId
106
+ });
107
+ setMaterialSurveyResponse(surveyResponse);
108
+ void refreshOrgMaterialSurvey();
109
+ onSubmit(true);
110
+ setSubmitStatus('resolved');
111
+ } catch (error) {
112
+ console.error(error);
113
+ onSubmit(false);
114
+ setSubmitStatus('rejected');
115
+ }
116
+ };
117
+
118
+ return React__default["default"].createElement(SurveyContentBox["default"], {
119
+ title: intl.formatMessage({
120
+ id: 'materialSurvey.myAnswer'
121
+ }),
122
+ onNext: onNext,
123
+ submitStatus: React__default["default"].createElement(SurveySubmitStatusText, {
124
+ status: submitStatus
125
+ }),
126
+ submitResult: React__default["default"].createElement(SurveyResultBadge, {
127
+ materialSurveyResponse: materialSurveyResponse
128
+ }),
129
+ footerActions: [{
130
+ border: true,
131
+ disabled: selectedAnswer === undefined || index.checkUserLectureTestEnded(lecture) || !!userId,
132
+ loading: submitStatus === 'pending',
133
+ tabIndex: 0,
134
+ transparent: false,
135
+ role: 'primary',
136
+ onClick: handleSubmit,
137
+ children: intl.formatMessage({
138
+ id: 'materialSurvey.submit'
139
+ })
140
+ }]
141
+ }, React__default["default"].createElement(QuestionRadio, {
142
+ selectedValue: selectedAnswer,
143
+ onSelect: index$1 => {
144
+ if (index.checkUserLectureTestEnded(lecture) || !!userId) {
145
+ return;
146
+ }
147
+
148
+ setSelectedAnswer(index$1);
149
+ },
150
+ disabled: submitStatus === 'pending' || index.checkUserLectureTestEnded(lecture) || !!userId
151
+ }, (materialSurvey === null || materialSurvey === void 0 ? void 0 : materialSurvey.questionInfoList[0].optionInfo) ? materialSurvey.questionInfoList[0].optionInfo.map((option, index) => {
152
+ return React__default["default"].createElement(QuestionRadioOption, {
153
+ key: index,
154
+ value: index
155
+ }, (course === null || course === void 0 ? void 0 : course.preference.renderMarkdownInSurveyOptions) ? React__default["default"].createElement(StyledMarkdown, {
156
+ dark: false,
157
+ children: option,
158
+ paddingx: 0,
159
+ paddingy: 0
160
+ }) : option);
161
+ }) : null));
162
+ };
163
+
164
+ module.exports = MaterialSurveySelectOne;
@@ -0,0 +1,3 @@
1
+ import React from 'react';
2
+ declare const MaterialSurveyShimmer: React.FC;
3
+ export default MaterialSurveyShimmer;