Skip to content

Commit

Permalink
feat(Designer): Hide side panel when no node is selected and we are s…
Browse files Browse the repository at this point in the history
…uppressing default node click functionality (#4653)

Empty panel is now hidden when we suppress default node select functionality

Co-authored-by: Riley Evans <rileyevans@microsoft.com>
  • Loading branch information
rllyy97 and Riley Evans committed Apr 19, 2024
1 parent 6648d7c commit 24f8794
Show file tree
Hide file tree
Showing 9 changed files with 36 additions and 2 deletions.
Expand Up @@ -82,6 +82,7 @@ const DesignerEditor = () => {
hostOptions,
showConnectionsPanel,
showPerformanceDebug,
suppressDefaultNodeSelect,
} = useSelector((state: RootState) => state.workflowLoader);

const workflowName = workflowId.split('/').splice(-1)[0];
Expand Down Expand Up @@ -306,6 +307,7 @@ const DesignerEditor = () => {
isDarkMode,
readOnly: isReadOnly,
isMonitoringView,
suppressDefaultNodeSelectFunctionality: suppressDefaultNodeSelect,
hostOptions: {
...hostOptions,
recurrenceInterval: { interval: 1, frequency: 'Minute' },
Expand Down
Expand Up @@ -67,6 +67,7 @@ const DesignerEditorConsumption = () => {
showChatBot,
hostOptions,
showConnectionsPanel,
suppressDefaultNodeSelect,
showPerformanceDebug,
language,
} = useSelector((state: RootState) => state.workflowLoader);
Expand Down Expand Up @@ -219,6 +220,7 @@ const DesignerEditorConsumption = () => {
isMonitoringView,
useLegacyWorkflowParameters: true,
showConnectionsPanel,
suppressDefaultNodeSelectFunctionality: suppressDefaultNodeSelect,
hostOptions: {
...hostOptions,
recurrenceInterval: Constants.RECURRENCE_OPTIONS.CONSUMPTION,
Expand Down
Expand Up @@ -165,6 +165,7 @@ export const LocalDesigner = () => {
areCustomEditorsEnabled,
showConnectionsPanel,
hostOptions,
suppressDefaultNodeSelect,
} = useSelector((state: RootState) => state.workflowLoader);
editorService.areCustomEditorsEnabled = !!areCustomEditorsEnabled;
connectionParameterEditorService.areCustomEditorsEnabled = !!areCustomEditorsEnabled;
Expand All @@ -189,6 +190,7 @@ export const LocalDesigner = () => {
isDarkMode,
useLegacyWorkflowParameters: isConsumption,
showConnectionsPanel,
suppressDefaultNodeSelectFunctionality: suppressDefaultNodeSelect,
hostOptions,
};

Expand Down
Expand Up @@ -7,6 +7,7 @@ import {
useShowConnectionsPanel,
useHostOptions,
useShowPerformanceDebug,
useSuppressDefaultNodeSelect,
} from '../../state/workflowLoadingSelectors';
import {
setDarkMode,
Expand All @@ -18,6 +19,7 @@ import {
setShowConnectionsPanel,
setHostOptions,
setShowPerformanceDebug,
setSuppressDefaultNodeSelect,
} from '../../state/workflowLoadingSlice';
import { Checkbox } from '@fluentui/react';
import { useCallback } from 'react';
Expand All @@ -29,6 +31,7 @@ const ContextSettings = () => {
const isDarkMode = useIsDarkMode();
const showConnectionsPanel = useShowConnectionsPanel();
const areCustomEditorsEnabled = useAreCustomEditorsEnabled();
const suppressDefaultNodeSelect = useSuppressDefaultNodeSelect();
const hostOptions = useHostOptions();
const showPerformanceDebug = useShowPerformanceDebug();
const dispatch = useDispatch<AppDispatch>();
Expand Down Expand Up @@ -74,6 +77,11 @@ const ContextSettings = () => {
checked={hostOptions.forceEnableSplitOn}
onChange={(_, checked) => dispatch(setHostOptions({ forceEnableSplitOn: !!checked }))}
/>
<Checkbox
label="Suppress default node click"
checked={suppressDefaultNodeSelect}
onChange={(_, checked) => dispatch(setSuppressDefaultNodeSelect(!!checked))}
/>
<Checkbox
label="Show Performance Debug"
checked={showPerformanceDebug}
Expand Down
Expand Up @@ -53,6 +53,10 @@ export const useAreCustomEditorsEnabled = () => {
return useSelector((state: RootState) => state.workflowLoader.areCustomEditorsEnabled);
};

export const useSuppressDefaultNodeSelect = () => {
return useSelector((state: RootState) => state.workflowLoader.suppressDefaultNodeSelect);
};

export const useShowPerformanceDebug = () => {
return useSelector((state: RootState) => state.workflowLoader.showPerformanceDebug);
};
6 changes: 6 additions & 0 deletions apps/Standalone/src/designer/state/workflowLoadingSlice.ts
Expand Up @@ -24,6 +24,7 @@ export interface WorkflowLoadingState {
workflowKind?: string;
language: string;
areCustomEditorsEnabled?: boolean;
suppressDefaultNodeSelect?: boolean;
hostOptions: {
displayRuntimeInfo: boolean; // show info about where the action is run(i.e. InApp/Shared/Custom)
forceEnableSplitOn?: boolean; // force enable split on for all actions
Expand All @@ -47,6 +48,7 @@ const initialState: WorkflowLoadingState = {
workflowKind: 'stateful',
language: 'en',
areCustomEditorsEnabled: false,
suppressDefaultNodeSelect: false,
hostOptions: {
displayRuntimeInfo: true,
},
Expand Down Expand Up @@ -163,6 +165,9 @@ export const workflowLoadingSlice = createSlice({
setAreCustomEditorsEnabled: (state, action: PayloadAction<boolean>) => {
state.areCustomEditorsEnabled = action.payload;
},
setSuppressDefaultNodeSelect: (state, action: PayloadAction<boolean>) => {
state.suppressDefaultNodeSelect = action.payload;
},
setHostOptions: (state, action: PayloadAction<Partial<WorkflowLoadingState['hostOptions']>>) => {
state.hostOptions = { ...state.hostOptions, ...action.payload };
},
Expand Down Expand Up @@ -209,6 +214,7 @@ export const {
setLanguage,
loadLastWorkflow,
setAreCustomEditorsEnabled,
setSuppressDefaultNodeSelect,
setHostOptions,
setShowPerformanceDebug,
} = workflowLoadingSlice.actions;
Expand Down
4 changes: 4 additions & 0 deletions libs/designer-ui/src/lib/panel/panelcontainer.tsx
Expand Up @@ -44,6 +44,7 @@ export type PanelContainerProps = {
errorMessage?: string;
isLoading?: boolean;
panelScope: PanelScope;
suppressDefaultNodeSelectFunctionality?: boolean;
pivotDisabled?: boolean;
headerMenuItems: JSX.Element[];
selectedTab?: string;
Expand Down Expand Up @@ -75,6 +76,7 @@ export const PanelContainer = ({
errorMessage,
isLoading,
panelScope,
suppressDefaultNodeSelectFunctionality,
headerMenuItems,
selectedTab,
selectTab,
Expand Down Expand Up @@ -109,6 +111,7 @@ export const PanelContainer = ({
showCommentBox={showCommentBox}
noNodeSelected={noNodeSelected}
panelScope={panelScope}
suppressDefaultNodeSelectFunctionality={suppressDefaultNodeSelectFunctionality}
headerMenuItems={headerMenuItems}
readOnlyMode={readOnlyMode}
titleId={headerTextId}
Expand All @@ -134,6 +137,7 @@ export const PanelContainer = ({
showCommentBox,
noNodeSelected,
panelScope,
suppressDefaultNodeSelectFunctionality,
headerMenuItems,
readOnlyMode,
title,
Expand Down
5 changes: 4 additions & 1 deletion libs/designer-ui/src/lib/panel/panelheader/panelheader.tsx
Expand Up @@ -32,6 +32,7 @@ export interface PanelHeaderProps {
headerMenuItems: JSX.Element[];
noNodeSelected?: boolean;
panelScope: PanelScope;
suppressDefaultNodeSelectFunctionality?: boolean;
readOnlyMode?: boolean;
renameTitleDisabled?: boolean;
showCommentBox?: boolean;
Expand Down Expand Up @@ -59,6 +60,7 @@ export const PanelHeader = ({
isError,
isLoading,
panelScope,
suppressDefaultNodeSelectFunctionality,
titleId,
headerMenuItems,
readOnlyMode,
Expand Down Expand Up @@ -92,6 +94,7 @@ export const PanelHeader = ({
const isRight = headerLocation === PanelLocation.Right;

const noNodeOnCardLevel = noNodeSelected && panelScope === PanelScope.CardLevel;
const shouldHideCollapseButton = noNodeOnCardLevel && suppressDefaultNodeSelectFunctionality;

// collapsed -> loading -> connector icon -> error -> backup loading
const iconComponent = useMemo(
Expand Down Expand Up @@ -169,7 +172,7 @@ export const PanelHeader = ({

return (
<div className="msla-panel-header" id={noNodeOnCardLevel ? titleId : title}>
<CollapseButton />
{shouldHideCollapseButton ? undefined : <CollapseButton />}
{!noNodeOnCardLevel && !isCollapsed ? (
<>
<div className={'msla-panel-card-header'} style={isRight ? {} : { paddingLeft: horizontalPadding }}>
Expand Down
Expand Up @@ -10,7 +10,7 @@ import {
validateParameter,
} from '../../../core';
import { renameCustomCode } from '../../../core/state/customcode/customcodeSlice';
import { useReadOnly } from '../../../core/state/designerOptions/designerOptionsSelectors';
import { useReadOnly, useSuppressDefaultNodeSelectFunctionality } from '../../../core/state/designerOptions/designerOptionsSelectors';
import { setShowDeleteModal } from '../../../core/state/designerView/designerViewSlice';
import { ErrorLevel, updateParameterEditorViewModel } from '../../../core/state/operation/operationMetadataSlice';
import { useIconUri, useOperationErrorInfo } from '../../../core/state/operation/operationSelector';
Expand Down Expand Up @@ -67,6 +67,8 @@ export const NodeDetailsPanel = (props: CommonPanelProps): JSX.Element => {
let showCommentBox = !isNullOrUndefined(comment);
const errorInfo = useOperationErrorInfo(selectedNode);

const suppressDefaultNodeSelectFunctionality = useSuppressDefaultNodeSelectFunctionality();

useEffect(() => {
collapsed ? setWidth(PanelSize.Auto) : setWidth(PanelSize.Medium);
}, [collapsed]);
Expand Down Expand Up @@ -200,6 +202,7 @@ export const NodeDetailsPanel = (props: CommonPanelProps): JSX.Element => {
errorMessage={errorInfo?.message}
isLoading={isLoading}
panelScope={PanelScope.CardLevel}
suppressDefaultNodeSelectFunctionality={suppressDefaultNodeSelectFunctionality}
headerMenuItems={headerMenuItems}
showCommentBox={showCommentBox}
tabs={panelTabs}
Expand Down

0 comments on commit 24f8794

Please sign in to comment.