add save button to config bottom

This commit is contained in:
mbecker20
2025-02-10 23:45:25 -08:00
parent 53fcd899a4
commit 1cc967f215
2 changed files with 46 additions and 18 deletions

View File

@@ -61,24 +61,25 @@ export const ConfigLayout = <
)}
{selector}
{changesMade && (
<Button
variant="outline"
onClick={onReset}
disabled={disabled || !changesMade}
className="flex items-center gap-2"
>
<History className="w-4 h-4" />
Reset
</Button>
)}
{changesMade && (
<ConfirmUpdate
previous={original}
content={update}
onConfirm={async () => onConfirm()}
disabled={disabled}
file_contents_language={file_contents_language}
/>
<>
<Button
variant="outline"
onClick={onReset}
disabled={disabled || !changesMade}
className="flex items-center gap-2"
>
<History className="w-4 h-4" />
Reset
</Button>
<ConfirmUpdate
previous={original}
content={update}
onConfirm={async () => onConfirm()}
disabled={disabled}
file_contents_language={file_contents_language}
key_listener
/>
</>
)}
</div>
}
@@ -309,6 +310,30 @@ export const Config = <T,>({
</div>
)
)}
{changesMade && (
<div className="flex gap-2 justify-end">
<div className="text-muted-foreground flex items-center gap-2">
<AlertTriangle className="w-4 h-4" /> Unsaved changes
<AlertTriangle className="w-4 h-4" />
</div>
<Button
variant="outline"
onClick={onReset}
disabled={disabled}
className="flex items-center gap-2"
>
<History className="w-4 h-4" />
Reset
</Button>
<ConfirmUpdate
previous={original}
content={update}
onConfirm={onConfirm}
disabled={disabled}
file_contents_language={file_contents_language}
/>
</div>
)}
</div>
</div>
</ConfigLayout>

View File

@@ -600,6 +600,7 @@ interface ConfirmUpdateProps<T> {
disabled: boolean;
language?: MonacoLanguage;
file_contents_language?: MonacoLanguage;
key_listener?: boolean;
}
export function ConfirmUpdate<T>({
@@ -610,9 +611,11 @@ export function ConfirmUpdate<T>({
disabled,
language,
file_contents_language,
key_listener = false,
}: ConfirmUpdateProps<T>) {
const [open, set] = useState(false);
useCtrlKeyListener("Enter", () => {
if (!key_listener) return;
if (open) {
onConfirm();
} else {