@elice/material-assignment 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 (48) hide show
  1. package/README.md +3 -0
  2. package/cjs/components/index.d.ts +2 -0
  3. package/cjs/components/material-assignment/MaterialAssignment.d.ts +9 -0
  4. package/cjs/components/material-assignment/MaterialAssignment.js +40 -0
  5. package/cjs/components/material-assignment/MaterialAssignmentContent.d.ts +7 -0
  6. package/cjs/components/material-assignment/MaterialAssignmentContent.js +397 -0
  7. package/cjs/components/material-assignment/MaterialAssignmentUploadModal.d.ts +9 -0
  8. package/cjs/components/material-assignment/MaterialAssignmentUploadModal.js +201 -0
  9. package/cjs/components/material-assignment/index.d.ts +2 -0
  10. package/cjs/components/material-assignment/locales.d.ts +39 -0
  11. package/cjs/components/material-assignment/locales.js +83 -0
  12. package/cjs/components/material-assignment-admin/MaterialAssignmentAdmin.d.ts +14 -0
  13. package/cjs/components/material-assignment-admin/MaterialAssignmentAdmin.js +64 -0
  14. package/cjs/components/material-assignment-admin/MaterialAssignmentAdmin.styled.d.ts +13 -0
  15. package/cjs/components/material-assignment-admin/MaterialAssignmentAdmin.styled.js +41 -0
  16. package/cjs/components/material-assignment-admin/MaterialAssignmentAdminContent.d.ts +12 -0
  17. package/cjs/components/material-assignment-admin/MaterialAssignmentAdminContent.js +815 -0
  18. package/cjs/components/material-assignment-admin/MaterialAssignmentAdminContentTa.d.ts +8 -0
  19. package/cjs/components/material-assignment-admin/MaterialAssignmentAdminContentTa.js +479 -0
  20. package/cjs/components/material-assignment-admin/index.d.ts +3 -0
  21. package/cjs/components/shared/MaterialAssignmentContainer.d.ts +6 -0
  22. package/cjs/components/shared/MaterialAssignmentContainer.js +34 -0
  23. package/cjs/index.d.ts +1 -0
  24. package/cjs/index.js +11 -0
  25. package/es/components/index.d.ts +2 -0
  26. package/es/components/material-assignment/MaterialAssignment.d.ts +9 -0
  27. package/es/components/material-assignment/MaterialAssignment.js +33 -0
  28. package/es/components/material-assignment/MaterialAssignmentContent.d.ts +7 -0
  29. package/es/components/material-assignment/MaterialAssignmentContent.js +391 -0
  30. package/es/components/material-assignment/MaterialAssignmentUploadModal.d.ts +9 -0
  31. package/es/components/material-assignment/MaterialAssignmentUploadModal.js +194 -0
  32. package/es/components/material-assignment/index.d.ts +2 -0
  33. package/es/components/material-assignment/locales.d.ts +39 -0
  34. package/es/components/material-assignment/locales.js +78 -0
  35. package/es/components/material-assignment-admin/MaterialAssignmentAdmin.d.ts +14 -0
  36. package/es/components/material-assignment-admin/MaterialAssignmentAdmin.js +57 -0
  37. package/es/components/material-assignment-admin/MaterialAssignmentAdmin.styled.d.ts +13 -0
  38. package/es/components/material-assignment-admin/MaterialAssignmentAdmin.styled.js +27 -0
  39. package/es/components/material-assignment-admin/MaterialAssignmentAdminContent.d.ts +12 -0
  40. package/es/components/material-assignment-admin/MaterialAssignmentAdminContent.js +808 -0
  41. package/es/components/material-assignment-admin/MaterialAssignmentAdminContentTa.d.ts +8 -0
  42. package/es/components/material-assignment-admin/MaterialAssignmentAdminContentTa.js +472 -0
  43. package/es/components/material-assignment-admin/index.d.ts +3 -0
  44. package/es/components/shared/MaterialAssignmentContainer.d.ts +6 -0
  45. package/es/components/shared/MaterialAssignmentContainer.js +27 -0
  46. package/es/index.d.ts +1 -0
  47. package/es/index.js +2 -0
  48. package/package.json +70 -0
@@ -0,0 +1,8 @@
1
+ import React from 'react';
2
+ interface MaterialAssignmentAdminContentTaProps {
3
+ materialAssignmentId: number;
4
+ userId: number;
5
+ adminUserId: number;
6
+ }
7
+ declare const MaterialAssignmentAdminContentTa: React.FC<MaterialAssignmentAdminContentTaProps>;
8
+ export default MaterialAssignmentAdminContentTa;
@@ -0,0 +1,479 @@
1
+ 'use strict';
2
+
3
+ var React = require('react');
4
+ var reactHookForm = require('react-hook-form');
5
+ var reactIntl = require('react-intl');
6
+ var apiClient = require('@elice/api-client');
7
+ var blocks = require('@elice/blocks');
8
+ var designTokens = require('@elice/design-tokens');
9
+ var icons = require('@elice/icons');
10
+ var materialSharedUtils = require('@elice/material-shared-utils');
11
+ var dayjs = require('dayjs');
12
+ var MaterialAssignmentContainer = require('../shared/MaterialAssignmentContainer.js');
13
+ var MaterialAssignmentAdmin_styled = require('./MaterialAssignmentAdmin.styled.js');
14
+
15
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
16
+
17
+ var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
18
+ var dayjs__default = /*#__PURE__*/_interopDefaultLegacy(dayjs);
19
+
20
+ const MaterialAssignmentAdminContentTa = ({
21
+ materialAssignmentId,
22
+ userId,
23
+ adminUserId
24
+ }) => {
25
+ var _a; // Form
26
+
27
+
28
+ const gradeEditFormMethods = reactHookForm.useForm({
29
+ defaultValues: {
30
+ score: 0,
31
+ comment: ''
32
+ },
33
+ mode: 'onChange'
34
+ }); // State related with component
35
+
36
+ const [showGradeEditModal, setShowGradeEditModal] = React__default["default"].useState(false); // State related with api
37
+
38
+ const [user, setUser] = React__default["default"].useState(null);
39
+ const [materialAssignment, setMaterialAssignment] = React__default["default"].useState(null);
40
+ const [userSubmission, setUserSubmission] = React__default["default"].useState(null);
41
+ const [gradeResult, setGradeResult] = React__default["default"].useState(null);
42
+ const [myGrade, setMyGrade] = React__default["default"].useState(null);
43
+ const isAssignmentClosed = dayjs__default["default"]().isAfter(dayjs__default["default"](materialAssignment === null || materialAssignment === void 0 ? void 0 : materialAssignment.closeDatetime));
44
+ const isScoreFinalized = Boolean(materialAssignment === null || materialAssignment === void 0 ? void 0 : materialAssignment.scoreFinalizedDatetime);
45
+ const isUserSubmitted = Boolean(userSubmission); // API Status
46
+
47
+ const isReady = materialSharedUtils.useMaterialConfigApiClientUpdate(apiClient.config.init);
48
+ const [submissionListGetStatus, setSubmissionListGetStatus] = React__default["default"].useState('idle');
49
+ const fetchUserGet = React__default["default"].useCallback(() => {
50
+ void apiClient.getOrgUserGet({
51
+ userId
52
+ }).then(res => res.user).then(setUser);
53
+ }, [userId]);
54
+ const fetchMaterialAssignmentGet = React__default["default"].useCallback(() => {
55
+ void apiClient.getOrgMaterialAssignmentGet({
56
+ materialAssignmentId
57
+ }).then(res => res.materialAssignment).then(setMaterialAssignment);
58
+ }, [materialAssignmentId]);
59
+ const fetchSubmissionList = React__default["default"].useCallback(() => {
60
+ setSubmissionListGetStatus('pending');
61
+ void apiClient.getOrgMaterialAssignmentSubmissionList({
62
+ materialAssignmentId,
63
+ offset: 0,
64
+ count: 1,
65
+ filterConditions: {
66
+ isLast: true,
67
+ userIds: [userId]
68
+ }
69
+ }).then(res => res.materialAssignmentSubmissions[0]).then(submission => {
70
+ setUserSubmission(submission !== null && submission !== void 0 ? submission : null);
71
+ setSubmissionListGetStatus('resolved');
72
+ }).catch(err => {
73
+ console.error(err);
74
+ setSubmissionListGetStatus('rejected');
75
+ });
76
+ }, [materialAssignmentId, userId]);
77
+ const fetchGradeResult = React__default["default"].useCallback(() => {
78
+ void apiClient.getOrgMaterialAssignmentGradeResultGet({
79
+ materialAssignmentId,
80
+ userId
81
+ }).then(res => res.materialAssignmentGradeResult).then(setGradeResult).catch(() => {
82
+ setGradeResult(null);
83
+ });
84
+ }, [materialAssignmentId, userId]);
85
+ const fetchMyGrade = React__default["default"].useCallback(() => {
86
+ void apiClient.getOrgMaterialAssignmentGradeList({
87
+ materialAssignmentId,
88
+ offset: 0,
89
+ count: 1,
90
+ filterConditions: {
91
+ userId,
92
+ gradeUserId: adminUserId
93
+ }
94
+ }).then(res => res.materialAssignmentGrades[0]).then(grade => setMyGrade(grade !== null && grade !== void 0 ? grade : null));
95
+ }, [adminUserId, materialAssignmentId, userId]);
96
+
97
+ const handleGradeEditClick = () => {
98
+ var _a, _b;
99
+
100
+ setShowGradeEditModal(true);
101
+ gradeEditFormMethods.reset({
102
+ score: (_a = myGrade === null || myGrade === void 0 ? void 0 : myGrade.score) !== null && _a !== void 0 ? _a : 0,
103
+ comment: (_b = myGrade === null || myGrade === void 0 ? void 0 : myGrade.comment) !== null && _b !== void 0 ? _b : ''
104
+ });
105
+ };
106
+
107
+ const handleGradeEditSubmit = gradeEditFormMethods.handleSubmit(async ({
108
+ score,
109
+ comment
110
+ }) => {
111
+ try {
112
+ await apiClient.postOrgMaterialAssignmentGradeEdit({
113
+ materialAssignmentGradeId: myGrade === null || myGrade === void 0 ? void 0 : myGrade.id,
114
+ materialAssignmentId,
115
+ userId,
116
+ score,
117
+ comment
118
+ });
119
+ fetchMyGrade();
120
+ blocks.Notification.success('저장되었습니다');
121
+ } catch (err) {
122
+ console.error(err);
123
+ blocks.Notification.error('오류가 발생했습니다.');
124
+ } finally {
125
+ setShowGradeEditModal(false);
126
+ }
127
+ });
128
+ React__default["default"].useEffect(() => {
129
+ if (!isReady) {
130
+ return;
131
+ }
132
+
133
+ fetchUserGet();
134
+ fetchMyGrade();
135
+ fetchGradeResult();
136
+ fetchSubmissionList();
137
+ fetchMaterialAssignmentGet();
138
+ }, [isReady, fetchUserGet, fetchMyGrade, fetchGradeResult, fetchSubmissionList, fetchMaterialAssignmentGet]);
139
+
140
+ const renderHeader = () => {
141
+ var _a;
142
+
143
+ return React__default["default"].createElement(MaterialAssignmentAdmin_styled.StyledMaterialAssignmentAdminHeader, {
144
+ align: "center",
145
+ padding: "1rem",
146
+ width: "100%"
147
+ }, React__default["default"].createElement(blocks.Flex, {
148
+ auto: true,
149
+ align: "center"
150
+ }, React__default["default"].createElement(blocks.ProfileImage, {
151
+ src: (_a = user === null || user === void 0 ? void 0 : user.profileUrl) !== null && _a !== void 0 ? _a : '',
152
+ width: "2.5rem",
153
+ height: "2.5rem"
154
+ }), React__default["default"].createElement(blocks.Hspace, {
155
+ width: 1
156
+ }), React__default["default"].createElement(blocks.Text, {
157
+ size: "small",
158
+ role: "warmwhite"
159
+ }, user === null || user === void 0 ? void 0 : user.fullname)), React__default["default"].createElement(MaterialAssignmentAdmin_styled.StyledMaterialAssignmentAdminHeaderCell, null, React__default["default"].createElement(blocks.Text, {
160
+ size: "tiny",
161
+ role: "gray4"
162
+ }, "\uC810\uC218"), React__default["default"].createElement(blocks.Text, {
163
+ size: "small",
164
+ role: "white"
165
+ }, (gradeResult === null || gradeResult === void 0 ? void 0 : gradeResult.score) && isScoreFinalized ? `${gradeResult.score}점(공개됨)` : '--')), React__default["default"].createElement(MaterialAssignmentAdmin_styled.StyledMaterialAssignmentAdminHeaderCell, null, React__default["default"].createElement(blocks.Text, {
166
+ size: "tiny",
167
+ role: "gray4"
168
+ }, "\uC81C\uCD9C \uC77C\uC2DC"), React__default["default"].createElement(blocks.Text, {
169
+ size: "small",
170
+ role: "white"
171
+ }, userSubmission ? React__default["default"].createElement(reactIntl.FormattedDate, {
172
+ value: userSubmission.createdDatetime,
173
+ dateStyle: "medium",
174
+ timeStyle: "short",
175
+ hour12: false
176
+ }) : '--')));
177
+ };
178
+
179
+ const renderGradeResult = () => {
180
+ return React__default["default"].createElement(MaterialAssignmentAdmin_styled.StyledMaterialAssignmentAdminGradeWrapper, {
181
+ wrap: true,
182
+ width: "100%",
183
+ align: "center"
184
+ }, React__default["default"].createElement(blocks.Flex, {
185
+ auto: true,
186
+ align: "center"
187
+ }, React__default["default"].createElement(blocks.Text, {
188
+ role: "navy1",
189
+ size: "small",
190
+ lineHeight: "1.375rem"
191
+ }, user ? `${user.fullname} 님의 점수` : null), React__default["default"].createElement(blocks.Hspace, {
192
+ width: 0.25
193
+ }), React__default["default"].createElement(blocks.Tooltip, {
194
+ useMaxWidth: true,
195
+ placement: "top",
196
+ title: '최종 점수는 관리자가 모든 채점자의 점수를 고려하여 반영한 후 공개됩니다.'
197
+ }, React__default["default"].createElement(blocks.Icon, {
198
+ icon: icons.eilStatusInfo,
199
+ color: designTokens.base.color.navy1
200
+ })), React__default["default"].createElement(blocks.Hspace, {
201
+ width: 0.75
202
+ }), React__default["default"].createElement(blocks.Text, {
203
+ bold: true,
204
+ role: "white"
205
+ }, (gradeResult === null || gradeResult === void 0 ? void 0 : gradeResult.score) && isScoreFinalized ? `${gradeResult.score}점(공개됨)` : '--')));
206
+ };
207
+
208
+ const renderSubmissionInfo = () => {
209
+ const statusText = (() => {
210
+ if (submissionListGetStatus === 'pending') {
211
+ return null;
212
+ }
213
+
214
+ switch (true) {
215
+ case !isUserSubmitted && isAssignmentClosed:
216
+ return React__default["default"].createElement(blocks.Text, {
217
+ bold: true,
218
+ role: "danger",
219
+ size: "small"
220
+ }, "\uC81C\uCD9C \uAE30\uD55C \uB9CC\uB8CC");
221
+
222
+ case isScoreFinalized:
223
+ return React__default["default"].createElement(blocks.Text, {
224
+ bold: true,
225
+ role: "lightpurple",
226
+ size: "small"
227
+ }, "\uCC44\uC810 \uC644\uB8CC");
228
+
229
+ case isUserSubmitted:
230
+ return React__default["default"].createElement(blocks.Text, {
231
+ bold: true,
232
+ role: "success",
233
+ size: "small"
234
+ }, "\uC81C\uCD9C\uB428");
235
+
236
+ case !isUserSubmitted:
237
+ return React__default["default"].createElement(blocks.Text, {
238
+ bold: true,
239
+ role: "warning",
240
+ size: "small"
241
+ }, "\uBBF8\uC81C\uCD9C");
242
+ }
243
+ })();
244
+
245
+ const submissionAttachment = (() => {
246
+ if (!userSubmission) {
247
+ return '--';
248
+ }
249
+
250
+ if (userSubmission.assignmentFileUrl) {
251
+ const assignmentFilename = decodeURIComponent(userSubmission.assignmentFileUrl && new URL(userSubmission.assignmentFileUrl).pathname.split('/').pop() || '');
252
+ return React__default["default"].createElement("a", {
253
+ href: userSubmission.assignmentFileUrl,
254
+ download: assignmentFilename,
255
+ target: "_blank",
256
+ rel: "noopener noreferrer"
257
+ }, React__default["default"].createElement(blocks.Text, {
258
+ hoverable: true,
259
+ underline: true,
260
+ role: "white",
261
+ size: "small"
262
+ }, assignmentFilename));
263
+ }
264
+
265
+ if (userSubmission === null || userSubmission === void 0 ? void 0 : userSubmission.assignmentUrl) {
266
+ return React__default["default"].createElement("a", {
267
+ href: userSubmission.assignmentUrl,
268
+ target: "_blank",
269
+ rel: "noopener noreferrer"
270
+ }, React__default["default"].createElement(blocks.Text, {
271
+ hoverable: true,
272
+ underline: true,
273
+ role: "white",
274
+ size: "small"
275
+ }, userSubmission.assignmentUrl));
276
+ }
277
+ })();
278
+
279
+ return React__default["default"].createElement(blocks.InfoTable, {
280
+ dark: true
281
+ }, React__default["default"].createElement("tbody", null, React__default["default"].createElement("tr", null, React__default["default"].createElement("td", null, "\uC0C1\uD0DC"), React__default["default"].createElement("td", null, statusText)), React__default["default"].createElement("tr", null, React__default["default"].createElement("td", null, "\uACFC\uC81C \uC81C\uCD9C \uAE30\uD55C"), React__default["default"].createElement("td", null, React__default["default"].createElement(reactIntl.FormattedDate, {
282
+ value: materialAssignment === null || materialAssignment === void 0 ? void 0 : materialAssignment.closeDatetime,
283
+ dateStyle: "medium",
284
+ timeStyle: "short",
285
+ hour12: false
286
+ }))), React__default["default"].createElement("tr", null, React__default["default"].createElement("td", null, "\uC81C\uCD9C \uC77C\uC2DC"), React__default["default"].createElement("td", null, userSubmission ? React__default["default"].createElement(reactIntl.FormattedDate, {
287
+ value: userSubmission.createdDatetime,
288
+ dateStyle: "medium",
289
+ timeStyle: "short",
290
+ hour12: false
291
+ }) : '--')), React__default["default"].createElement("tr", null, React__default["default"].createElement("td", null, "\uC5C5\uB85C\uB4DC\uB41C \uACFC\uC81C"), React__default["default"].createElement("td", null, submissionAttachment))));
292
+ };
293
+
294
+ const renderGrade = () => {
295
+ const isGradeEditDisabled = !isAssignmentClosed || !isUserSubmitted || isScoreFinalized;
296
+
297
+ const tooltipTitle = (() => {
298
+ switch (true) {
299
+ case isScoreFinalized:
300
+ return '공개 이후 채점이 불가합니다.';
301
+
302
+ case !isAssignmentClosed:
303
+ return '제출 기한이 지난 이후 채점할 수 있습니다.';
304
+
305
+ case !isUserSubmitted:
306
+ return '미제출인 경우 채점할 수 없습니다.';
307
+ }
308
+ })();
309
+
310
+ return React__default["default"].createElement(blocks.Flex, {
311
+ column: true,
312
+ align: "center"
313
+ }, React__default["default"].createElement(blocks.Flex, {
314
+ align: "center",
315
+ width: "100%"
316
+ }, React__default["default"].createElement(blocks.Flex, {
317
+ column: true,
318
+ auto: true
319
+ }, React__default["default"].createElement(blocks.Text, {
320
+ block: true,
321
+ bold: true,
322
+ role: "white",
323
+ lineHeight: 1.375
324
+ }, "\uB0B4 \uCC44\uC810"), React__default["default"].createElement(blocks.Text, {
325
+ block: true,
326
+ size: "tiny",
327
+ role: "navy3",
328
+ lineHeight: 1.6
329
+ }, "\uB0B4\uAC00 \uB9E4\uAE34 \uD3C9\uAC00\uC640 \uAD00\uB828\uB41C \uC815\uBCF4\uB97C \uBCFC \uC218 \uC788\uC2B5\uB2C8\uB2E4.")), React__default["default"].createElement(blocks.Tooltip, {
330
+ placement: "top",
331
+ title: tooltipTitle,
332
+ visible: isGradeEditDisabled ? undefined : false
333
+ }, React__default["default"].createElement("span", null, React__default["default"].createElement(blocks.Button, {
334
+ size: "small",
335
+ role: "lightpurple",
336
+ disabled: isGradeEditDisabled,
337
+ onClick: handleGradeEditClick
338
+ }, Boolean(myGrade) ? '내 채점 수정' : '내 채점 시작')))), React__default["default"].createElement(blocks.Vspace, {
339
+ height: 0.75
340
+ }), React__default["default"].createElement(blocks.TableNext, {
341
+ dark: true,
342
+ emptyMessage: "\uC544\uC9C1 \uCC44\uC810\uC744 \uC2DC\uC791\uD558\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4.",
343
+ columns: [{
344
+ Header: '채점자명',
345
+ accessor: 'fullname'
346
+ }, {
347
+ Header: '과제 점수',
348
+ accessor: 'grade'
349
+ }, {
350
+ Header: '채점 일시',
351
+ accessor: 'created',
352
+ textAlign: 'left'
353
+ }],
354
+ data: myGrade ? [{
355
+ fullname: React__default["default"].createElement(blocks.Flex, {
356
+ paddingy: "0.25rem"
357
+ }, React__default["default"].createElement(blocks.Text, {
358
+ noWrap: true,
359
+ role: "navy0",
360
+ size: "small"
361
+ }, myGrade.gradeUser.fullname), React__default["default"].createElement(blocks.Hspace, {
362
+ width: 0.25
363
+ }), React__default["default"].createElement(blocks.Text, {
364
+ ellipsis: true,
365
+ role: "navy3",
366
+ size: "small"
367
+ }, myGrade.gradeUser.email)),
368
+ grade: myGrade.score,
369
+ created: React__default["default"].createElement(reactIntl.FormattedDate, {
370
+ value: myGrade.createdDatetime,
371
+ dateStyle: "medium",
372
+ timeStyle: "short",
373
+ hour12: false
374
+ })
375
+ }] : []
376
+ }));
377
+ };
378
+
379
+ const renderGradeEditModal = () => {
380
+ if (!showGradeEditModal) {
381
+ return null;
382
+ }
383
+
384
+ return React__default["default"].createElement(blocks.Modal, {
385
+ title: Boolean(myGrade) ? '내 채점 수정' : '과제 채점',
386
+ footerButtons: [{
387
+ label: '확인',
388
+ size: 'small',
389
+ role: 'primary',
390
+ loading: gradeEditFormMethods.formState.isSubmitting,
391
+ disabled: gradeEditFormMethods.formState.isSubmitting || !gradeEditFormMethods.formState.isValid,
392
+ onClick: handleGradeEditSubmit
393
+ }, {
394
+ label: '취소',
395
+ size: 'small',
396
+ role: 'gray1',
397
+ onClick: () => {
398
+ setShowGradeEditModal(false);
399
+ }
400
+ }],
401
+ onHide: () => {
402
+ setShowGradeEditModal(false);
403
+ }
404
+ }, React__default["default"].createElement(blocks.Label, {
405
+ bold: true,
406
+ block: true,
407
+ required: true
408
+ }, "\uC810\uC218"), React__default["default"].createElement(blocks.Vspace, {
409
+ height: 0.5
410
+ }), React__default["default"].createElement(blocks.Flex, {
411
+ align: "center"
412
+ }, React__default["default"].createElement(reactHookForm.Controller, {
413
+ control: gradeEditFormMethods.control,
414
+ name: "score",
415
+ rules: {
416
+ required: true,
417
+ min: 0,
418
+ max: 100
419
+ },
420
+ render: ({
421
+ field,
422
+ fieldState
423
+ }) => React__default["default"].createElement(blocks.Input, Object.assign({}, field, {
424
+ invalid: fieldState.invalid,
425
+ size: "small",
426
+ width: "xsmall",
427
+ type: "number"
428
+ }))
429
+ }), React__default["default"].createElement(blocks.Hspace, {
430
+ width: 0.5
431
+ }), React__default["default"].createElement(blocks.Text, {
432
+ bold: true,
433
+ role: "gray9",
434
+ size: "small"
435
+ }, "\uC810"), React__default["default"].createElement(blocks.Text, {
436
+ role: "gray6",
437
+ size: "small"
438
+ }, ' / 100점 만점')), React__default["default"].createElement(blocks.Vspace, {
439
+ height: 1.25
440
+ }), React__default["default"].createElement(blocks.Label, {
441
+ bold: true,
442
+ block: true
443
+ }, "\uD53C\uB4DC\uBC31"), React__default["default"].createElement(blocks.Vspace, {
444
+ height: 0.5
445
+ }), React__default["default"].createElement(reactHookForm.Controller, {
446
+ control: gradeEditFormMethods.control,
447
+ name: "comment",
448
+ rules: {
449
+ maxLength: 1000
450
+ },
451
+ render: ({
452
+ field
453
+ }) => React__default["default"].createElement(blocks.Textarea, {
454
+ value: field.value,
455
+ wordLimit: 1000,
456
+ rows: 8,
457
+ onChange: field.onChange
458
+ })
459
+ }));
460
+ };
461
+
462
+ return React__default["default"].createElement(React__default["default"].Fragment, null, renderHeader(), React__default["default"].createElement(blocks.Flex, {
463
+ column: true,
464
+ auto: true,
465
+ padding: "3.625rem",
466
+ width: "100%",
467
+ height: "100%",
468
+ overflow: "hidden",
469
+ align: "center"
470
+ }, React__default["default"].createElement(MaterialAssignmentContainer, {
471
+ title: (_a = materialAssignment === null || materialAssignment === void 0 ? void 0 : materialAssignment.title) !== null && _a !== void 0 ? _a : ''
472
+ }, renderGradeResult(), React__default["default"].createElement(blocks.Vspace, {
473
+ height: 1.25
474
+ }), renderSubmissionInfo(), React__default["default"].createElement(blocks.Vspace, {
475
+ height: 1.5
476
+ }), renderGrade())), renderGradeEditModal());
477
+ };
478
+
479
+ module.exports = MaterialAssignmentAdminContentTa;
@@ -0,0 +1,3 @@
1
+ export { default as MaterialAssignmentAdmin } from './MaterialAssignmentAdmin';
2
+ export type { MaterialAssignmentAdminProps } from './MaterialAssignmentAdmin';
3
+ export type { MaterialAssignmentAdminApis } from './MaterialAssignmentAdminContent';
@@ -0,0 +1,6 @@
1
+ import React from 'react';
2
+ interface MaterialAssignmentContainerProps {
3
+ title: string;
4
+ }
5
+ declare const MaterialAssignmentContainer: React.FC<MaterialAssignmentContainerProps>;
6
+ export default MaterialAssignmentContainer;
@@ -0,0 +1,34 @@
1
+ 'use strict';
2
+
3
+ var React = require('react');
4
+ var blocks = require('@elice/blocks');
5
+ var designTokens = require('@elice/design-tokens');
6
+ var styled = require('styled-components');
7
+
8
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
9
+
10
+ var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
11
+ var styled__default = /*#__PURE__*/_interopDefaultLegacy(styled);
12
+
13
+ const StyledMaterialAssignmentContainer = styled__default["default"].div.withConfig({
14
+ componentId: "sc-sdhlog-0"
15
+ })(["height:100%;width:100%;max-width:55rem;border-radius:0.5rem;overflow:hidden;"]);
16
+ const StyledMaterialAssignmentContainerHeader = styled__default["default"].div.withConfig({
17
+ componentId: "sc-sdhlog-1"
18
+ })(["padding:1rem 1.5rem;height:3.5rem;display:flex;align-items:center;background-color:", ";"], designTokens.base.color.navy7);
19
+ const StyledMaterialAssignmentContainerContent = styled__default["default"].div.withConfig({
20
+ componentId: "sc-sdhlog-2"
21
+ })(["padding:1.5rem;overflow-y:auto;height:calc(100% - 3.5rem);background-color:", ";"], designTokens.base.color.navy8);
22
+
23
+ const MaterialAssignmentContainer = ({
24
+ title,
25
+ children
26
+ }) => {
27
+ return React__default["default"].createElement(StyledMaterialAssignmentContainer, null, React__default["default"].createElement(StyledMaterialAssignmentContainerHeader, null, React__default["default"].createElement(blocks.Text, {
28
+ bold: true,
29
+ role: "navy0",
30
+ size: "small"
31
+ }, title)), React__default["default"].createElement(StyledMaterialAssignmentContainerContent, null, children));
32
+ };
33
+
34
+ module.exports = MaterialAssignmentContainer;
package/cjs/index.d.ts ADDED
@@ -0,0 +1 @@
1
+ export * from './components';
package/cjs/index.js ADDED
@@ -0,0 +1,11 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var MaterialAssignmentAdmin = require('./components/material-assignment-admin/MaterialAssignmentAdmin.js');
6
+ var MaterialAssignment = require('./components/material-assignment/MaterialAssignment.js');
7
+
8
+
9
+
10
+ exports.MaterialAssignmentAdmin = MaterialAssignmentAdmin;
11
+ exports.MaterialAssignment = MaterialAssignment;
@@ -0,0 +1,2 @@
1
+ export * from './material-assignment-admin';
2
+ export * from './material-assignment';
@@ -0,0 +1,9 @@
1
+ import React from 'react';
2
+ export interface MaterialAssignmentProps {
3
+ materialAssignmentId: number;
4
+ userId: number;
5
+ className?: string;
6
+ locale?: string;
7
+ }
8
+ declare const MaterialAssignment: React.FC<MaterialAssignmentProps>;
9
+ export default MaterialAssignment;
@@ -0,0 +1,33 @@
1
+ import React from 'react';
2
+ import { IntlProvider } from 'react-intl';
3
+ import { base } from '@elice/design-tokens';
4
+ import classnames from 'classnames';
5
+ import styled from 'styled-components';
6
+ import * as locales from './locales.js';
7
+ import { en } from './locales.js';
8
+ import MaterialAssignmentContent from './MaterialAssignmentContent.js';
9
+
10
+ const StyledMaterialAssignmentWrapper = styled.div.withConfig({
11
+ componentId: "sc-1kcyh7u-0"
12
+ })(["display:flex;flex-direction:column;align-items:center;justify-content:center;width:100%;height:100%;padding:3.625rem;background-color:", ";"], base.color.navy9);
13
+
14
+ const MaterialAssignment = ({
15
+ className,
16
+ materialAssignmentId,
17
+ userId,
18
+ locale = 'en'
19
+ }) => {
20
+ const prefixCls = 'em-material-assignment';
21
+ return React.createElement(StyledMaterialAssignmentWrapper, {
22
+ className: classnames(prefixCls, className)
23
+ }, React.createElement(IntlProvider, {
24
+ locale: locale,
25
+ defaultLocale: "en",
26
+ messages: locale in locales ? locales[locale] : en
27
+ }, React.createElement(MaterialAssignmentContent, {
28
+ materialAssignmentId: materialAssignmentId,
29
+ userId: userId
30
+ })));
31
+ };
32
+
33
+ export { MaterialAssignment as default };
@@ -0,0 +1,7 @@
1
+ import React from 'react';
2
+ interface MaterialAssignmentContentProps {
3
+ materialAssignmentId: number;
4
+ userId: number;
5
+ }
6
+ declare const MaterialAssignmentContent: React.FC<MaterialAssignmentContentProps>;
7
+ export default MaterialAssignmentContent;