@@ -13,10 +13,17 @@ import {
1313} from "@mui/material" ;
1414import { Numbers , Subject , Close } from "@mui/icons-material" ;
1515import IOSSwitch from "../../common/form/IOSSwitch" ;
16+ import {
17+ Activity ,
18+ isTextInputActivity ,
19+ TextInputActivity ,
20+ } from "../../../types/CourseTypes" ;
1621
1722interface TextInputEditorSidebarProps {
1823 mode : "short_answer" | "numeric_range" ;
1924 setMode : ( value : "short_answer" | "numeric_range" ) => void ;
25+ activity : TextInputActivity ;
26+ setActivity : React . Dispatch < React . SetStateAction < Activity | undefined > > ;
2027 hasImage : boolean ;
2128 setHasImage : ( value : boolean ) => void ;
2229 hasAdditionalContext : boolean ;
@@ -25,11 +32,15 @@ interface TextInputEditorSidebarProps {
2532 setHint : ( value : string ) => void ;
2633 correctAnswers : string [ ] ;
2734 setCorrectAnswers : ( value : string [ ] ) => void ;
35+ units ?: string ;
36+ setUnits : ( value ?: string ) => void ;
2837}
2938
3039export default function TextInputEditorSidebar ( {
3140 mode,
3241 setMode,
42+ activity,
43+ setActivity,
3344 hasImage,
3445 setHasImage,
3546 hasAdditionalContext,
@@ -38,11 +49,12 @@ export default function TextInputEditorSidebar({
3849 setHint,
3950 correctAnswers,
4051 setCorrectAnswers,
52+ units,
53+ setUnits,
4154} : TextInputEditorSidebarProps ) {
4255 const boxHeight = "calc(100vh - 68px)" ;
4356 const theme = useTheme ( ) ;
4457 const [ currentAnswer , setCurrentAnswer ] = useState ( "" ) ;
45- const [ hasUnits , setHasUnits ] = useState ( false ) ;
4658
4759 const handleAddAnswer = ( ev : React . FormEvent ) => {
4860 ev . preventDefault ( ) ;
@@ -237,13 +249,15 @@ export default function TextInputEditorSidebar({
237249 >
238250 < Typography variant = "bodySmall" > Units</ Typography >
239251 < IOSSwitch
240- checked = { hasUnits }
241- onChange = { ( ev ) => setHasUnits ( ev . target . checked ) }
252+ checked = { units !== undefined }
253+ onChange = { ( ev ) => setUnits ( ev . target . checked ? "" : undefined ) }
242254 />
243255 </ Box >
244- { hasUnits && (
256+ { units !== undefined && (
245257 < TextField
246258 placeholder = "Unit - ex. dollars, coins, etc."
259+ defaultValue = { units }
260+ onChange = { ( e ) => setUnits ( e . target . value ) }
247261 sx = { { width : "100%" } }
248262 />
249263 ) }
@@ -343,8 +357,42 @@ export default function TextInputEditorSidebar({
343357 Set a number range for correct answers
344358 </ Typography >
345359 < Stack direction = "row" alignItems = "center" gap = "16px" >
346- < TextField type = "number" label = "Min" sx = { { width : "100%" } } />
347- < TextField type = "number" label = "Max" sx = { { width : "100%" } } />
360+ < TextField
361+ type = "number"
362+ label = "Min"
363+ defaultValue = { activity . validation . min }
364+ sx = { { width : "100%" } }
365+ onChange = { ( ev ) =>
366+ setActivity ( ( prev ) => {
367+ if ( ! prev || ! isTextInputActivity ( prev ) ) return prev ;
368+ return {
369+ ...prev ,
370+ validation : {
371+ ...prev . validation ,
372+ min : Number ( ev . target . value ) ,
373+ } ,
374+ } ;
375+ } )
376+ }
377+ />
378+ < TextField
379+ type = "number"
380+ label = "Max"
381+ defaultValue = { activity . validation . max }
382+ sx = { { width : "100%" } }
383+ onChange = { ( ev ) =>
384+ setActivity ( ( prev ) => {
385+ if ( ! prev || ! isTextInputActivity ( prev ) ) return prev ;
386+ return {
387+ ...prev ,
388+ validation : {
389+ ...prev . validation ,
390+ max : Number ( ev . target . value ) ,
391+ } ,
392+ } ;
393+ } )
394+ }
395+ />
348396 </ Stack >
349397 </ >
350398 ) }
0 commit comments