mirror of
				https://github.com/Unleash/unleash.git
				synced 2025-10-27 11:02:16 +01:00 
			
		
		
		
	feat: Bulk enable hints (#3802)
This commit is contained in:
		
							parent
							
								
									980332a074
								
							
						
					
					
						commit
						92ffc387f3
					
				| @ -1,5 +1,5 @@ | ||||
| import { useState } from 'react'; | ||||
| import { Box, styled, Typography } from '@mui/material'; | ||||
| import React, { useState } from 'react'; | ||||
| import { Alert, Box, styled, Typography } from '@mui/material'; | ||||
| import { Dialogue } from 'component/common/Dialogue/Dialogue'; | ||||
| import GeneralSelect from 'component/common/GeneralSelect/GeneralSelect'; | ||||
| import useToast from 'hooks/useToast'; | ||||
| @ -11,10 +11,11 @@ import useProject from 'hooks/api/getters/useProject/useProject'; | ||||
| import { useChangeRequestsEnabled } from 'hooks/useChangeRequestsEnabled'; | ||||
| import { useChangeRequestApi } from 'hooks/api/actions/useChangeRequestApi/useChangeRequestApi'; | ||||
| import { usePendingChangeRequests } from 'hooks/api/getters/usePendingChangeRequests/usePendingChangeRequests'; | ||||
| import { ConditionallyRender } from 'component/common/ConditionallyRender/ConditionallyRender'; | ||||
| 
 | ||||
| interface IExportDialogProps { | ||||
|     showExportDialog: boolean; | ||||
|     data: Pick<FeatureSchema, 'name'>[]; | ||||
|     data: Pick<FeatureSchema, 'name' | 'environments'>[]; | ||||
|     onClose: () => void; | ||||
|     onConfirm?: () => void; | ||||
|     environments: string[]; | ||||
| @ -22,8 +23,13 @@ interface IExportDialogProps { | ||||
| } | ||||
| 
 | ||||
| const StyledSelect = styled(GeneralSelect)(({ theme }) => ({ | ||||
|     minWidth: '250px', | ||||
|     minWidth: '450px', | ||||
|     marginTop: theme.spacing(2), | ||||
|     marginBottom: theme.spacing(1.5), | ||||
| })); | ||||
| 
 | ||||
| const SpacedAlert = styled(Alert)(({ theme }) => ({ | ||||
|     marginBottom: theme.spacing(1.5), | ||||
| })); | ||||
| 
 | ||||
| export const BulkDisableDialog = ({ | ||||
| @ -42,6 +48,12 @@ export const BulkDisableDialog = ({ | ||||
|     const { isChangeRequestConfigured } = useChangeRequestsEnabled(projectId); | ||||
|     const { refetch: refetchChangeRequests } = | ||||
|         usePendingChangeRequests(projectId); | ||||
|     const alreadyDisabledCount = data.filter( | ||||
|         feature => | ||||
|             feature.environments?.find( | ||||
|                 environment => selected === environment.name | ||||
|             )?.enabled === false | ||||
|     ).length; | ||||
| 
 | ||||
|     const getOptions = () => | ||||
|         environments.map(env => ({ | ||||
| @ -113,6 +125,26 @@ export const BulkDisableDialog = ({ | ||||
|                     value={selected} | ||||
|                     onChange={(option: string) => setSelected(option)} | ||||
|                 /> | ||||
|                 <ConditionallyRender | ||||
|                     condition={isChangeRequestConfigured(selected)} | ||||
|                     show={ | ||||
|                         <SpacedAlert severity="warning"> | ||||
|                             Change requests are enabled for this environment. | ||||
|                         </SpacedAlert> | ||||
|                     } | ||||
|                 /> | ||||
|                 <ConditionallyRender | ||||
|                     condition={alreadyDisabledCount > 0} | ||||
|                     show={ | ||||
|                         <SpacedAlert severity="info"> | ||||
|                             {alreadyDisabledCount} feature{' '} | ||||
|                             {alreadyDisabledCount > 1 | ||||
|                                 ? 'toggles are ' | ||||
|                                 : 'toggle is '} | ||||
|                             already disabled. | ||||
|                         </SpacedAlert> | ||||
|                     } | ||||
|                 /> | ||||
|             </Box> | ||||
|         </Dialogue> | ||||
|     ); | ||||
|  | ||||
| @ -1,5 +1,5 @@ | ||||
| import { useState } from 'react'; | ||||
| import { Box, styled, Typography } from '@mui/material'; | ||||
| import React, { useState } from 'react'; | ||||
| import { Alert, Box, styled, Typography } from '@mui/material'; | ||||
| import { Dialogue } from 'component/common/Dialogue/Dialogue'; | ||||
| import GeneralSelect from 'component/common/GeneralSelect/GeneralSelect'; | ||||
| import useToast from 'hooks/useToast'; | ||||
| @ -11,10 +11,11 @@ import useProject from 'hooks/api/getters/useProject/useProject'; | ||||
| import { useChangeRequestsEnabled } from 'hooks/useChangeRequestsEnabled'; | ||||
| import { useChangeRequestApi } from 'hooks/api/actions/useChangeRequestApi/useChangeRequestApi'; | ||||
| import { usePendingChangeRequests } from 'hooks/api/getters/usePendingChangeRequests/usePendingChangeRequests'; | ||||
| import { ConditionallyRender } from 'component/common/ConditionallyRender/ConditionallyRender'; | ||||
| 
 | ||||
| interface IExportDialogProps { | ||||
|     showExportDialog: boolean; | ||||
|     data: Pick<FeatureSchema, 'name'>[]; | ||||
|     data: Pick<FeatureSchema, 'name' | 'environments'>[]; | ||||
|     onClose: () => void; | ||||
|     onConfirm?: () => void; | ||||
|     environments: string[]; | ||||
| @ -22,8 +23,13 @@ interface IExportDialogProps { | ||||
| } | ||||
| 
 | ||||
| const StyledSelect = styled(GeneralSelect)(({ theme }) => ({ | ||||
|     minWidth: '250px', | ||||
|     minWidth: '450px', | ||||
|     marginTop: theme.spacing(2), | ||||
|     marginBottom: theme.spacing(1.5), | ||||
| })); | ||||
| 
 | ||||
| const SpacedAlert = styled(Alert)(({ theme }) => ({ | ||||
|     marginBottom: theme.spacing(1.5), | ||||
| })); | ||||
| 
 | ||||
| export const BulkEnableDialog = ({ | ||||
| @ -42,6 +48,12 @@ export const BulkEnableDialog = ({ | ||||
|     const { isChangeRequestConfigured } = useChangeRequestsEnabled(projectId); | ||||
|     const { refetch: refetchChangeRequests } = | ||||
|         usePendingChangeRequests(projectId); | ||||
|     const alreadyEnabledCount = data.filter( | ||||
|         feature => | ||||
|             feature.environments?.find( | ||||
|                 environment => selected === environment.name | ||||
|             )?.enabled === true | ||||
|     ).length; | ||||
| 
 | ||||
|     const getOptions = () => | ||||
|         environments.map(env => ({ | ||||
| @ -114,6 +126,26 @@ export const BulkEnableDialog = ({ | ||||
|                     value={selected} | ||||
|                     onChange={(option: string) => setSelected(option)} | ||||
|                 /> | ||||
|                 <ConditionallyRender | ||||
|                     condition={isChangeRequestConfigured(selected)} | ||||
|                     show={ | ||||
|                         <SpacedAlert severity="warning"> | ||||
|                             Change requests are enabled for this environment. | ||||
|                         </SpacedAlert> | ||||
|                     } | ||||
|                 /> | ||||
|                 <ConditionallyRender | ||||
|                     condition={alreadyEnabledCount > 0} | ||||
|                     show={ | ||||
|                         <SpacedAlert severity="info"> | ||||
|                             {alreadyEnabledCount} feature{' '} | ||||
|                             {alreadyEnabledCount > 1 | ||||
|                                 ? 'toggles are ' | ||||
|                                 : 'toggle is '} | ||||
|                             already enabled. | ||||
|                         </SpacedAlert> | ||||
|                     } | ||||
|                 /> | ||||
|             </Box> | ||||
|         </Dialogue> | ||||
|     ); | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user