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:
parent
392c7f74b8
commit
e66dea44e3
111 changed files with 1330 additions and 1562 deletions
74
app/react/components/modals/SwitchPrompt.tsx
Normal file
74
app/react/components/modals/SwitchPrompt.tsx
Normal 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,
|
||||
});
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue