diff --git a/library/src/skins/default/src/sass/modules/tool/rubrics/_rubrics.scss b/library/src/skins/default/src/sass/modules/tool/rubrics/_rubrics.scss index ae9a174803f3..887ebcbb76ad 100644 --- a/library/src/skins/default/src/sass/modules/tool/rubrics/_rubrics.scss +++ b/library/src/skins/default/src/sass/modules/tool/rubrics/_rubrics.scss @@ -476,6 +476,10 @@ sakai-rubric-student-comment { background-color: unset; } } + + div.rubric-comment-body { + min-width: 180px; + } } .rubric-criterion-comment-title { diff --git a/webcomponents/tool/src/main/frontend/packages/sakai-grader/src/SakaiGrader.js b/webcomponents/tool/src/main/frontend/packages/sakai-grader/src/SakaiGrader.js index 0bf2c4ccc969..60d7bf7f0550 100644 --- a/webcomponents/tool/src/main/frontend/packages/sakai-grader/src/SakaiGrader.js +++ b/webcomponents/tool/src/main/frontend/packages/sakai-grader/src/SakaiGrader.js @@ -173,17 +173,13 @@ export class SakaiGrader extends graderRenderingMixin(gradableDataMixin(SakaiEle document.getElementById("grader").addEventListener("hide.bs.offcanvas", e => { + this.querySelector("sakai-rubric-grading")?.closeCommentEditors(); + if (this.modified || this.querySelector("sakai-grader-file-picker")?.hasFiles()) { e.preventDefault(); this._save({ closeSidebarTimeout: 2000 }); } - }); - - document.getElementById("grader").addEventListener("hide.bs.offcanvas", () => { - this.querySelectorAll(".rubric-comment-trigger").forEach(trigger => { - bootstrap.Popover.getInstance(trigger).hide(); - }); }); document.getElementById("grader").addEventListener("hidden.bs.offcanvas", () => { @@ -237,17 +233,13 @@ export class SakaiGrader extends graderRenderingMixin(gradableDataMixin(SakaiEle this._rubricShowing = false; this.querySelector("sakai-rubric-grading")?.displayGradingTab(); - } - _doneWithRubric() { + this.updateComplete.then(() => { - this.querySelector("#grader-rubric-link").focus(); - - this.querySelector("sakai-rubric-grading-button").setHasEvaluation(); - this.querySelector("sakai-rubric-evaluation-remover").setHasEvaluation(); - this.requestUpdate(); - - this._closeRubric(); + this.querySelector("#grader-rubric-link").focus(); + this.querySelector("sakai-rubric-grading-button").setHasEvaluation(); + this.querySelector("sakai-rubric-evaluation-remover").setHasEvaluation(); + }); } _replaceWithEditor(id, changedCallback) { @@ -259,7 +251,7 @@ export class SakaiGrader extends graderRenderingMixin(gradableDataMixin(SakaiEle editor.on("change", e => { - changedCallback && changedCallback(e.editor.getData()); + changedCallback?.(e.editor.getData()); this.modified = true; }); @@ -640,7 +632,7 @@ export class SakaiGrader extends graderRenderingMixin(gradableDataMixin(SakaiEle filtered = filtered.filter(s => s.graded); } - if (this.currentGroups && this.currentGroups.length === 1 && this.currentGroups[0].includes("/group")) { + if (this.currentGroups?.length === 1 && this.currentGroups[0].includes("/group")) { const group = this.groups.find(g => g.reference === this.currentGroups[0]); filtered = filtered.filter(s => group.users.includes(s.firstSubmitterId)); } @@ -671,7 +663,7 @@ export class SakaiGrader extends graderRenderingMixin(gradableDataMixin(SakaiEle } _areSettingsInAction() { - return (this.currentGroups && this.currentGroups.length > 0 && this.currentGroups[0] !== `/site/${portal.siteId}`) || this._submittedOnly || this._ungradedOnly || this._gradedOnly; + return (this.currentGroups?.length > 0 && this.currentGroups[0] !== `/site/${portal.siteId}`) || this._submittedOnly || this._ungradedOnly || this._gradedOnly; } _getSubmitter(submission) { @@ -758,7 +750,7 @@ export class SakaiGrader extends graderRenderingMixin(gradableDataMixin(SakaiEle if (!confirm(this.i18n.confirm_remove_private_notes)) return false; this._submission.privateNotes = ""; - this.privateNotesEditor && this.privateNotesEditor.setData(""); + this.privateNotesEditor?.setData(""); this.modified = true; this._gradeOrCommentsModified = true; this._privateNotesRemoved = true; @@ -769,7 +761,7 @@ export class SakaiGrader extends graderRenderingMixin(gradableDataMixin(SakaiEle if (!confirm(this.i18n.confirm_remove_feedback_comment)) return false; this._submission.feedbackComment = ""; - this.feedbackCommentEditor && this.feedbackCommentEditor.setData(""); + this.feedbackCommentEditor?.setData(""); this.modified = true; this._gradeOrCommentsModified = true; this._feedbackCommentRemoved = true; diff --git a/webcomponents/tool/src/main/frontend/packages/sakai-grader/src/sakai-grader-rendering-mixin.js b/webcomponents/tool/src/main/frontend/packages/sakai-grader/src/sakai-grader-rendering-mixin.js index cecda64b6fa6..ba1067ce897b 100644 --- a/webcomponents/tool/src/main/frontend/packages/sakai-grader/src/sakai-grader-rendering-mixin.js +++ b/webcomponents/tool/src/main/frontend/packages/sakai-grader/src/sakai-grader-rendering-mixin.js @@ -401,41 +401,43 @@ export const graderRenderingMixin = Base => class extends Base { ${this._renderGradeInputs(this.i18n["gen.assign.gra"])} ${this.hasAssociatedRubric === "true" ? html` -