1
0
Fork 0
mirror of https://github.com/portainer/portainer.git synced 2025-07-19 13:29:41 +02:00

refactor(ui/modals): replace bootbox with react solution [EE-4541] (#8010)

This commit is contained in:
Chaim Lev-Ari 2023-02-14 13:49:41 +05:30 committed by GitHub
parent 392c7f74b8
commit e66dea44e3
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
111 changed files with 1330 additions and 1562 deletions

View file

@ -0,0 +1,74 @@
import { ReactNode, useState } from 'react';
import { SwitchField } from '@@/form-components/SwitchField';
import { ModalType, type ButtonOptions } from './types';
import { openModal } from './open-modal';
import { OnSubmit } from './Modal/types';
import { Dialog } from './Dialog';
import { buildCancelButton, buildConfirmButton } from './utils';
function SwitchPrompt({
onSubmit,
title,
confirmButton = buildConfirmButton('OK'),
switchLabel,
modalType,
message,
defaultValue = false,
}: {
onSubmit: OnSubmit<{ value: boolean }>;
title: string;
switchLabel: string;
confirmButton?: ButtonOptions<true>;
modalType?: ModalType;
message?: ReactNode;
defaultValue?: boolean;
}) {
const [value, setValue] = useState(defaultValue);
return (
<Dialog
modalType={modalType}
title={title}
message={
<>
{message && <div className="mb-3">{message}</div>}
<SwitchField
name="value"
label={switchLabel}
checked={value}
onChange={setValue}
/>
</>
}
onSubmit={(confirm) => onSubmit(confirm ? { value } : undefined)}
buttons={[buildCancelButton(), confirmButton]}
/>
);
}
export async function openSwitchPrompt(
title: string,
switchLabel: string,
{
confirmButton,
modalType,
message,
defaultValue,
}: {
confirmButton?: ButtonOptions<true>;
modalType?: ModalType;
message?: ReactNode;
defaultValue?: boolean;
} = {}
) {
return openModal(SwitchPrompt, {
confirmButton,
title,
switchLabel,
modalType,
message,
defaultValue,
});
}