@@ -30,20 +30,30 @@ interface ChangeClassStatusModalProps {
3030 onStatusChanged : ( ) => void ;
3131}
3232
33- const STATUS_TRANSITIONS : Record < string , SelectedClassStatus [ ] > = {
34- [ SelectedClassStatus . Scheduled ] : [
35- SelectedClassStatus . Active ,
36- SelectedClassStatus . Cancelled
37- ] ,
38- [ SelectedClassStatus . Active ] : [
39- SelectedClassStatus . Paused ,
40- SelectedClassStatus . Completed
41- ] ,
42- [ SelectedClassStatus . Paused ] : [
43- SelectedClassStatus . Active ,
44- SelectedClassStatus . Cancelled
45- ]
46- } ;
33+ const ALL_STATUSES : SelectedClassStatus [ ] = [
34+ SelectedClassStatus . Active ,
35+ SelectedClassStatus . Scheduled ,
36+ SelectedClassStatus . Paused ,
37+ SelectedClassStatus . Completed ,
38+ SelectedClassStatus . Cancelled
39+ ] ;
40+
41+ function getStatusDescription ( status : SelectedClassStatus ) : string {
42+ switch ( status ) {
43+ case SelectedClassStatus . Active :
44+ return 'Class is currently running and accepting attendance.' ;
45+ case SelectedClassStatus . Scheduled :
46+ return 'Class is scheduled to begin in the future.' ;
47+ case SelectedClassStatus . Paused :
48+ return 'Class is temporarily paused and hidden from daily attendance.' ;
49+ case SelectedClassStatus . Completed :
50+ return 'Class has finished and is now archived.' ;
51+ case SelectedClassStatus . Cancelled :
52+ return 'Class has been cancelled and will not take place.' ;
53+ default :
54+ return '' ;
55+ }
56+ }
4757
4858export function ChangeClassStatusModal ( {
4959 open,
@@ -58,8 +68,6 @@ export function ChangeClassStatusModal({
5868 const [ newStatus , setNewStatus ] = useState < SelectedClassStatus > ( currentStatus ) ;
5969 const [ isSubmitting , setIsSubmitting ] = useState ( false ) ;
6070
61- const allowedStatuses = STATUS_TRANSITIONS [ currentStatus ] ?? [ ] ;
62-
6371 useEffect ( ( ) => {
6472 if ( open ) {
6573 setNewStatus ( currentStatus ) ;
@@ -109,16 +117,16 @@ export function ChangeClassStatusModal({
109117 < SelectValue />
110118 </ SelectTrigger >
111119 < SelectContent >
112- < SelectItem value = { currentStatus } >
113- { currentStatus } (current)
114- </ SelectItem >
115- { allowedStatuses . map ( ( s ) => (
120+ { ALL_STATUSES . map ( ( s ) => (
116121 < SelectItem key = { s } value = { s } >
117122 { s }
118123 </ SelectItem >
119124 ) ) }
120125 </ SelectContent >
121126 </ Select >
127+ < p className = "text-xs text-gray-500 mt-2" >
128+ { getStatusDescription ( newStatus ) }
129+ </ p >
122130 </ div >
123131 < div className = "flex gap-2 justify-end pt-4" >
124132 < Button
0 commit comments