From 0167b7e032ca016295b16fc6e54731cdf671af3f Mon Sep 17 00:00:00 2001 From: Duane Nykamp Date: Mon, 22 Jul 2024 19:09:13 -0500 Subject: [PATCH] Backport of preventing checkwork tab stops when disabled Backport of PR #222 to 0.6 branch --- package-lock.json | 4 +- .../src/components/abstract/BaseComponent.js | 4 +- packages/doenetml/package.json | 2 +- .../doenetml/src/Viewer/renderers/answer.jsx | 28 +++++- .../src/Viewer/renderers/booleanInput.jsx | 28 +++++- .../src/Viewer/renderers/choiceInput.jsx | 71 ++++++++++++-- .../src/Viewer/renderers/mathInput.jsx | 28 +++++- .../src/Viewer/renderers/matrixInput.jsx | 34 +++++-- .../doenetml/src/Viewer/renderers/section.jsx | 98 ++++++++++++++----- .../src/Viewer/renderers/textInput.jsx | 28 +++++- packages/standalone/package.json | 2 +- 11 files changed, 264 insertions(+), 63 deletions(-) diff --git a/package-lock.json b/package-lock.json index 5466a41e3..7e64f2a14 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15060,7 +15060,7 @@ }, "packages/doenetml": { "name": "@doenet/doenetml", - "version": "0.6.6", + "version": "0.6.8", "license": "AGPL-3.0-or-later", "dependencies": { "@chakra-ui/icons": "^2.0.19", @@ -15289,7 +15289,7 @@ }, "packages/standalone": { "name": "@doenet/standalone", - "version": "0.6.6", + "version": "0.6.8", "license": "AGPL-3.0-or-later", "devDependencies": { "vite": "^4.5.0" diff --git a/packages/doenetml-worker/src/components/abstract/BaseComponent.js b/packages/doenetml-worker/src/components/abstract/BaseComponent.js index 92c9dc3ad..27b637100 100644 --- a/packages/doenetml-worker/src/components/abstract/BaseComponent.js +++ b/packages/doenetml-worker/src/components/abstract/BaseComponent.js @@ -529,7 +529,9 @@ export default class BaseComponent { if (!usedDefault.disabledPreliminary) { return { setValue: { - disabled: dependencyValues.disabledPreliminary, + disabled: Boolean( + dependencyValues.disabledPreliminary, + ), }, }; } diff --git a/packages/doenetml/package.json b/packages/doenetml/package.json index 2bc3a9b35..929c1db1f 100644 --- a/packages/doenetml/package.json +++ b/packages/doenetml/package.json @@ -2,7 +2,7 @@ "name": "@doenet/doenetml", "type": "module", "description": "Semantic markup for building interactive web activities", - "version": "0.6.6", + "version": "0.6.8", "license": "AGPL-3.0-or-later", "homepage": "https://github.com/Doenet/DoenetML#readme", "private": true, diff --git a/packages/doenetml/src/Viewer/renderers/answer.jsx b/packages/doenetml/src/Viewer/renderers/answer.jsx index 651986ce0..d87ffb80d 100644 --- a/packages/doenetml/src/Viewer/renderers/answer.jsx +++ b/packages/doenetml/src/Viewer/renderers/answer.jsx @@ -87,12 +87,14 @@ export default React.memo(function Answer(props) { padding: "1px 6px 1px 6px", }; + let checkWorkTabIndex = "0"; if (disabled) { checkWorkStyle.backgroundColor = getComputedStyle( document.documentElement, ).getPropertyValue("--mainGray"); checkWorkStyle.color = "black"; checkWorkStyle.cursor = "not-allowed"; + checkWorkTabIndex = "-1"; } let checkWorkText = SVs.submitLabel; @@ -102,7 +104,7 @@ export default React.memo(function Answer(props) { let checkworkComponent = ( @@ -143,7 +149,11 @@ export default React.memo(function Answer(props) { document.documentElement, ).getPropertyValue("--mainRed"); checkworkComponent = ( - @@ -154,7 +164,11 @@ export default React.memo(function Answer(props) { let partialCreditContents = `${percent}% Correct`; checkworkComponent = ( - ); @@ -164,7 +178,11 @@ export default React.memo(function Answer(props) { if (validationState !== "unvalidated") { checkWorkStyle.backgroundColor = "rgb(74, 3, 217)"; checkworkComponent = ( - diff --git a/packages/doenetml/src/Viewer/renderers/booleanInput.jsx b/packages/doenetml/src/Viewer/renderers/booleanInput.jsx index f28584560..ece67095f 100644 --- a/packages/doenetml/src/Viewer/renderers/booleanInput.jsx +++ b/packages/doenetml/src/Viewer/renderers/booleanInput.jsx @@ -468,6 +468,7 @@ export default React.memo(function BooleanInput(props) { cursor: "pointer", padding: "1px 6px 1px 6px", }; + let checkWorkTabIndex = "0"; if (disabled) { // Disable the checkWorkButton @@ -476,6 +477,7 @@ export default React.memo(function BooleanInput(props) { ).getPropertyValue("--mainGray"); checkWorkStyle.color = "black"; checkWorkStyle.cursor = "not-allowed"; + checkWorkTabIndex = "-1"; } //Assume we don't have a check work button @@ -497,7 +499,7 @@ export default React.memo(function BooleanInput(props) { checkWorkButton = ( ); @@ -550,7 +556,11 @@ export default React.memo(function BooleanInput(props) { checkWorkStyle.backgroundColor = "#efab34"; checkWorkButton = ( - ); @@ -560,7 +570,11 @@ export default React.memo(function BooleanInput(props) { document.documentElement, ).getPropertyValue("--mainRed"); checkWorkButton = ( - ); @@ -570,7 +584,11 @@ export default React.memo(function BooleanInput(props) { checkWorkStyle.backgroundColor = "rgb(74, 3, 217)"; checkWorkStyle.padding = "1px 8px 1px 4px"; // To center the faCloud icon checkWorkButton = ( - ); diff --git a/packages/doenetml/src/Viewer/renderers/choiceInput.jsx b/packages/doenetml/src/Viewer/renderers/choiceInput.jsx index 815379a5e..941e34a52 100644 --- a/packages/doenetml/src/Viewer/renderers/choiceInput.jsx +++ b/packages/doenetml/src/Viewer/renderers/choiceInput.jsx @@ -154,6 +154,23 @@ export default React.memo(function ChoiceInput(props) { padding: "1px 6px 1px 6px", width: "24px", }; + let checkWorkTabIndex = "0"; + + let selectStyle = {}; + + if (disabled) { + // Disable the checkWorkButton + checkWorkStyle.backgroundColor = getComputedStyle( + document.documentElement, + ).getPropertyValue("--mainGray"); + checkWorkStyle.color = "black"; + checkWorkStyle.cursor = "not-allowed"; + checkWorkTabIndex = "-1"; + selectStyle.cursor = "not-allowed"; + selectStyle.borderColor = getComputedStyle( + document.documentElement, + ).getPropertyValue("--mainGray"); + } //Assume we don't have a check work button let checkWorkButton = null; @@ -168,7 +185,7 @@ export default React.memo(function ChoiceInput(props) { ); @@ -215,7 +236,11 @@ export default React.memo(function ChoiceInput(props) { checkWorkStyle.backgroundColor = "#efab34"; checkWorkButton = ( - ); @@ -228,6 +253,7 @@ export default React.memo(function ChoiceInput(props) { @@ -238,7 +264,11 @@ export default React.memo(function ChoiceInput(props) { checkWorkStyle.backgroundColor = "rgb(74, 3, 217)"; checkWorkStyle.padding = "1px 8px 1px 4px"; // To center the faCloud icon checkWorkButton = ( - ); @@ -311,6 +341,7 @@ export default React.memo(function ChoiceInput(props) { value={value} disabled={disabled} multiple={SVs.selectMultiple} + style={selectStyle} >