Update confirmation dialog UI
- This chaneset aligns our confirmation dialog with: https://screenshot.googleplex.com/9yZCX636LzpMrgc - Primary changes include having custom indicators for confirmation options that align with our coloring / scheme Fixes https://b.corp.google.com/issues/412607128
This commit is contained in:
parent
80b04dc505
commit
5c5c470671
|
@ -61,14 +61,14 @@ export const ToolConfirmationMessage: React.FC<
|
||||||
question = `Apply this change?`;
|
question = `Apply this change?`;
|
||||||
options.push(
|
options.push(
|
||||||
{
|
{
|
||||||
label: '1. Yes, apply change',
|
label: 'Yes',
|
||||||
value: ToolConfirmationOutcome.ProceedOnce,
|
value: ToolConfirmationOutcome.ProceedOnce,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: '2. Yes, always apply file edits',
|
label: 'Yes (always allow)',
|
||||||
value: ToolConfirmationOutcome.ProceedAlways,
|
value: ToolConfirmationOutcome.ProceedAlways,
|
||||||
},
|
},
|
||||||
{ label: '3. No (esc)', value: ToolConfirmationOutcome.Cancel },
|
{ label: 'No (esc)', value: ToolConfirmationOutcome.Cancel },
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
const executionProps =
|
const executionProps =
|
||||||
|
@ -89,17 +89,17 @@ export const ToolConfirmationMessage: React.FC<
|
||||||
);
|
);
|
||||||
|
|
||||||
question = `Allow execution?`;
|
question = `Allow execution?`;
|
||||||
const alwaysLabel = `2. Yes, always allow '${executionProps.rootCommand}' commands`;
|
const alwaysLabel = `Yes (always allow '${executionProps.rootCommand}' commands)`;
|
||||||
options.push(
|
options.push(
|
||||||
{
|
{
|
||||||
label: '1. Yes, allow once',
|
label: 'Yes',
|
||||||
value: ToolConfirmationOutcome.ProceedOnce,
|
value: ToolConfirmationOutcome.ProceedOnce,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: alwaysLabel,
|
label: alwaysLabel,
|
||||||
value: ToolConfirmationOutcome.ProceedAlways,
|
value: ToolConfirmationOutcome.ProceedAlways,
|
||||||
},
|
},
|
||||||
{ label: '3. No (esc)', value: ToolConfirmationOutcome.Cancel },
|
{ label: 'No (esc)', value: ToolConfirmationOutcome.Cancel },
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -118,8 +118,32 @@ export const ToolConfirmationMessage: React.FC<
|
||||||
|
|
||||||
{/* Select Input for Options */}
|
{/* Select Input for Options */}
|
||||||
<Box flexShrink={0}>
|
<Box flexShrink={0}>
|
||||||
<SelectInput items={options} onSelect={handleSelect} />
|
<SelectInput
|
||||||
|
indicatorComponent={Indicator}
|
||||||
|
itemComponent={Item}
|
||||||
|
items={options}
|
||||||
|
onSelect={handleSelect}
|
||||||
|
/>
|
||||||
</Box>
|
</Box>
|
||||||
</Box>
|
</Box>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
function Indicator({ isSelected = false }): React.JSX.Element {
|
||||||
|
return (
|
||||||
|
<Text color={isSelected ? Colors.AccentGreen : Colors.Gray}>
|
||||||
|
{isSelected ? '◉ ' : '○ '}
|
||||||
|
</Text>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
export type ItemProps = {
|
||||||
|
readonly isSelected?: boolean;
|
||||||
|
readonly label: string;
|
||||||
|
};
|
||||||
|
|
||||||
|
function Item({ isSelected = false, label }: ItemProps): React.JSX.Element {
|
||||||
|
return (
|
||||||
|
<Text color={isSelected ? Colors.AccentGreen : Colors.Gray}>{label}</Text>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue