@@ -18,7 +18,8 @@ import {
1818 Radio ,
1919 RadioGroup ,
2020 Tab ,
21- TabList
21+ TabList ,
22+ Tooltip
2223} from '@fluentui/react-components' ;
2324import {
2425 ChevronUpDown16Regular ,
@@ -61,7 +62,14 @@ const TeamSelector: React.FC<TeamSelectorProps> = ({
6162 const [ selectionLoading , setSelectionLoading ] = useState ( false ) ;
6263 const [ uploadedTeam , setUploadedTeam ] = useState < TeamConfig | null > ( null ) ;
6364 const [ uploadSuccessMessage , setUploadSuccessMessage ] = useState < string | null > ( null ) ;
64-
65+ // Helper function to check if a team is a default team
66+ const isDefaultTeam = ( team : TeamConfig ) : boolean => {
67+ const defaultTeamIds = [ 'team-1' , 'team-2' , 'team-3' ] ;
68+ const defaultTeamNames = [ 'Human Resources Team' , 'Product Marketing Team' , 'Retail Customer Success Team' ] ;
69+
70+ return defaultTeamIds . includes ( team . team_id ) ||
71+ defaultTeamNames . includes ( team . name ) ;
72+ } ;
6573 const loadTeams = async ( ) => {
6674 setLoading ( true ) ;
6775 setError ( null ) ;
@@ -113,7 +121,7 @@ const TeamSelector: React.FC<TeamSelectorProps> = ({
113121
114122 // For existing teams, do the normal selection process
115123 const result = await TeamService . selectTeam ( tempSelectedTeam . team_id ) ;
116-
124+
117125 if ( result . success ) {
118126 console . log ( 'Team selected:' , result . data ) ;
119127 onTeamSelect ?.( tempSelectedTeam ) ;
@@ -171,7 +179,7 @@ const TeamSelector: React.FC<TeamSelectorProps> = ({
171179
172180 try {
173181 const success = await TeamService . deleteTeam ( teamToDelete . team_id ) ;
174-
182+
175183 if ( success ) {
176184 setDeleteConfirmOpen ( false ) ;
177185 setTeamToDelete ( null ) ;
@@ -193,7 +201,7 @@ const TeamSelector: React.FC<TeamSelectorProps> = ({
193201 }
194202 } catch ( err : any ) {
195203 let errorMessage = 'Failed to delete team configuration. Please try again.' ;
196-
204+
197205 if ( err . response ?. status === 404 ) {
198206 errorMessage = 'Team not found. It may have already been deleted.' ;
199207 } else if ( err . response ?. status === 403 ) {
@@ -261,11 +269,11 @@ const TeamSelector: React.FC<TeamSelectorProps> = ({
261269 if ( result . team ) {
262270 // Set success message with team name
263271 setUploadSuccessMessage ( `${ result . team . name } was uploaded` ) ;
264-
272+
265273 setTeams ( currentTeams => [ result . team ! , ...currentTeams ] ) ;
266274 setUploadedTeam ( result . team ) ;
267275 setTempSelectedTeam ( result . team ) ;
268-
276+
269277 setTimeout ( ( ) => {
270278 setUploadSuccessMessage ( null ) ;
271279 } , 15000 ) ;
@@ -313,7 +321,7 @@ const TeamSelector: React.FC<TeamSelectorProps> = ({
313321 event . stopPropagation ( ) ;
314322
315323 event . currentTarget . classList . remove ( styles . dropZoneHover ) ;
316-
324+
317325 const files = event . dataTransfer . files ;
318326 if ( files . length === 0 ) return ;
319327
@@ -362,11 +370,11 @@ const TeamSelector: React.FC<TeamSelectorProps> = ({
362370 if ( result . team ) {
363371 // Set success message with team name
364372 setUploadSuccessMessage ( `${ result . team . name } was uploaded and selected` ) ;
365-
373+
366374 setTeams ( currentTeams => [ result . team ! , ...currentTeams ] ) ;
367375 setUploadedTeam ( result . team ) ;
368376 setTempSelectedTeam ( result . team ) ;
369-
377+
370378 // Clear success message after 15 seconds if user doesn't act
371379 setTimeout ( ( ) => {
372380 setUploadSuccessMessage ( null ) ;
@@ -399,7 +407,7 @@ const TeamSelector: React.FC<TeamSelectorProps> = ({
399407
400408 const renderTeamCard = ( team : TeamConfig , index ?: number ) => {
401409 const isSelected = tempSelectedTeam ?. team_id === team . team_id ;
402-
410+ const isDefault = isDefaultTeam ( team ) ;
403411 return (
404412 < div
405413 key = { team . team_id || `team-${ index } ` }
@@ -452,13 +460,32 @@ const TeamSelector: React.FC<TeamSelectorProps> = ({
452460 </ div >
453461
454462 { /* Three-dot Menu Button */ }
455- < Button
456- icon = { < MoreHorizontal20Regular /> }
457- appearance = "subtle"
458- size = "small"
459- onClick = { ( e ) => handleDeleteTeam ( team , e ) }
460- className = { styles . moreButton }
461- />
463+ { isDefault ? (
464+ < Tooltip
465+ content = "Default teams cannot be deleted."
466+ relationship = "label"
467+ positioning = "above-start"
468+ withArrow
469+ mountNode = { document . querySelector ( '[role="dialog"]' ) || undefined }
470+ >
471+ < Button
472+ icon = { < MoreHorizontal20Regular /> }
473+ appearance = "subtle"
474+ size = "small"
475+ disabled = { true }
476+ className = { `${ styles . moreButton } ${ styles . moreButtonDisabled || '' } ` }
477+ onClick = { ( e ) => e . stopPropagation ( ) }
478+ />
479+ </ Tooltip >
480+ ) : (
481+ < Button
482+ icon = { < MoreHorizontal20Regular /> }
483+ appearance = "subtle"
484+ size = "small"
485+ onClick = { ( e ) => handleDeleteTeam ( team , e ) }
486+ className = { styles . moreButton }
487+ />
488+ ) }
462489 </ div >
463490 ) ;
464491 } ;
0 commit comments