diff --git a/packages/scratch-gui/src/components/classroom-modal/classroom-modal.css b/packages/scratch-gui/src/components/classroom-modal/classroom-modal.css index 44075ba0a0d..5967fcb102e 100644 --- a/packages/scratch-gui/src/components/classroom-modal/classroom-modal.css +++ b/packages/scratch-gui/src/components/classroom-modal/classroom-modal.css @@ -559,6 +559,19 @@ margin-top: 1.5rem; } +/* フッター右側のグループ(例: アーカイブ + 保存 を右寄せで並べる)。 */ +.footer-right-group { + display: flex; + align-items: center; + gap: 0.5rem; +} + +/* 評価画面: キャンセルをアクションボタン行の左端に置く(右寄せの他ボタンと + 同じ行で左に離す。レビュー指摘)。 */ +.eval-cancel { + margin-right: auto; +} + /* 共有設定ステップ(#1109): 公開範囲の選択カード + 合言葉の表示。 */ .share-mode-row { display: flex; @@ -2924,21 +2937,29 @@ button.detail-tabs-download-urgent:hover:not(:disabled) { overflow-y: auto; } +/* クラス名を独立行にしたので、ヘッダーはアクションボタンの折り返し行にする + (左寄せ・省略しない。レビュー指摘 #1108)。 */ .board-header { display: flex; + flex-wrap: wrap; align-items: center; - justify-content: space-between; - gap: 1rem; + gap: 0.5rem; + margin-bottom: 0.75rem; } .board-title { - flex: 1; - margin: 0; + margin: 0.25rem 0 0.25rem; font-size: 1.3rem; + font-weight: bold; color: #575e75; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; +} + +/* 課題一覧(ボード)の簡単な説明。 */ +.board-hint { + font-size: 0.85rem; + color: #888; + line-height: 1.5; + margin: 0 0 0.75rem; } .board-year { diff --git a/packages/scratch-gui/src/components/classroom-modal/shared-assignment-catalog.jsx b/packages/scratch-gui/src/components/classroom-modal/shared-assignment-catalog.jsx index 73f89e5a798..e4847c06596 100644 --- a/packages/scratch-gui/src/components/classroom-modal/shared-assignment-catalog.jsx +++ b/packages/scratch-gui/src/components/classroom-modal/shared-assignment-catalog.jsx @@ -4,6 +4,7 @@ * manage the caller's own posts (unlist / republish). Supplement URLs open * behind an explicit confirmation that names the external domain (D4). */ +import classNames from 'classnames'; import PropTypes from 'prop-types'; import React, { useCallback, useState } from 'react'; import { FormattedMessage, defineMessages, useIntl } from 'react-intl'; @@ -390,8 +391,8 @@ const SharedAssignmentCatalog = ({ group, isLoading, shared }) => { @@ -399,7 +400,9 @@ const SharedAssignmentCatalog = ({ group, isLoading, shared }) => {
- {onDownloadClassAll ? ( - - ) : null} + {/* 並び順(レビュー指摘): 作る → 再利用 → みんなの課題からさがす → + 合言葉で取り込み → 全課題の提出物をダウンロード。 */} {shared ? ( ) : null} + {onDownloadClassAll ? ( + + ) : null}
+ )} {shared && shared.lastImported ? ( @@ -522,64 +606,91 @@ const TeacherAssignmentBoard = ({ /> ) : shared && shared.showCatalog ? ( - ) : ( - - {showInlineCreate ? ( + ) : showInlineCreate ? ( + // 課題を作る(#1108: popover → 画面遷移。フッター キャンセル左/作成右)
- - - + +
+ + +
- ) : null} - {showReuse ? ( -
-
+ ) : showReuse ? ( + // 課題を再利用(#1108: popover → 画面遷移。コピーは候補ごと、キャンセル左) +
+
+ +
+

+

+
-
    {reuseCandidates.map((c) => ( @@ -637,8 +736,24 @@ const TeacherAssignmentBoard = ({ ))}
+
+ + +
- ) : null} + ) : ( +
{topics.map((topic) => ( { />

) : null} -
- + {/* フッター(レビュー指摘): 通常は キャンセル左 / アーカイブ・保存 右 + (アーカイブは保存の左)。アーカイブ押下中は キャンセル・保存を隠し + 「アーカイブしない / アーカイブする」のみ表示。 */} +
{confirmingArchive ? ( - - ) : null} - - - + + + + + ) : ( + + +
+ + +
+
+ )}
); @@ -425,19 +444,22 @@ const ClassCard = ({ /> )} - + {/* アーカイブ済みは「元に戻す」だけ。設定ボタンは出さない(レビュー指摘)。 */} + {isArchived ? null : ( + + )} ); }; @@ -522,68 +544,49 @@ const TeacherClassList = ({ // migration failed). They must never be hidden — list them directly. const knownGroupIds = new Set(groups.map((g) => g.groupId)); const ungrouped = classrooms.filter((c) => !c.groupId || !knownGroupIds.has(c.groupId)); + const settingsGroup = groups.find((g) => g.groupId === settingsGroupId); - return ( -
- -

- -

-

- -

- - - {onShowGoogleCourses ? ( - - ) : null} - {showCreateForm ? ( -
+ +
+ {/* 設定画面と同じ枠付きフォーム(.class-settings-form)に揃える。 */} +
+ +
+ - - - +

+
+ + +
+ +
+
+ ); + } + + // クラス設定(#1108: インラインカード → 画面遷移) + if (settingsGroup) { + return ( +
+ + +
+
{formatClassLabel(settingsGroup)}
+ +
+
+ ); + } + + return ( +
+ +

+ +

+

+ +

+ + + {onShowGoogleCourses ? ( + ) : null} - {activeGroups.length === 0 && !showCreateForm ? ( + {activeGroups.length === 0 ? (

) : null}

    - {activeGroups.map((group) => - settingsGroupId === group.groupId ? ( -
  • - -
  • - ) : ( - - ), - )} + {activeGroups.map((group) => ( + + ))}
{archivedGroups.length > 0 ? (
@@ -764,29 +856,18 @@ const TeacherClassList = ({ {showArchived ? (
    - {archivedGroups.map((group) => - settingsGroupId === group.groupId ? ( -
  • - -
  • - ) : ( - - ), - )} + {archivedGroups.map((group) => ( + + ))}
) : null}
diff --git a/packages/scratch-gui/src/components/classroom-modal/teacher-evaluation.jsx b/packages/scratch-gui/src/components/classroom-modal/teacher-evaluation.jsx index 351d9dc8fda..7bcd634fbf2 100644 --- a/packages/scratch-gui/src/components/classroom-modal/teacher-evaluation.jsx +++ b/packages/scratch-gui/src/components/classroom-modal/teacher-evaluation.jsx @@ -353,8 +353,20 @@ const TeacherEvaluation = ({
)} - {/* Actions */} + {/* Actions(左端にキャンセル、他ボタンは右寄せ。レビュー指摘で同一行に揃える) */}
+