1
0
Fork 0
mirror of https://github.com/portainer/portainer.git synced 2025-07-22 14:59:41 +02:00
portainer/app/react/docker/containers/ItemView/ConfirmRecreationModal.tsx
Ali d38085a560
Some checks are pending
ci / build_images (map[arch:amd64 platform:linux version:]) (push) Waiting to run
ci / build_images (map[arch:amd64 platform:windows version:1809]) (push) Waiting to run
ci / build_images (map[arch:amd64 platform:windows version:ltsc2022]) (push) Waiting to run
ci / build_images (map[arch:arm platform:linux version:]) (push) Waiting to run
ci / build_images (map[arch:arm64 platform:linux version:]) (push) Waiting to run
ci / build_images (map[arch:ppc64le platform:linux version:]) (push) Waiting to run
ci / build_images (map[arch:s390x platform:linux version:]) (push) Waiting to run
ci / build_manifests (push) Blocked by required conditions
/ triage (push) Waiting to run
Lint / Run linters (push) Waiting to run
Test / test-client (push) Waiting to run
Test / test-server (map[arch:amd64 platform:linux]) (push) Waiting to run
Test / test-server (map[arch:amd64 platform:windows version:1809]) (push) Waiting to run
Test / test-server (map[arch:amd64 platform:windows version:ltsc2022]) (push) Waiting to run
Test / test-server (map[arch:arm64 platform:linux]) (push) Waiting to run
chore(data-cy): require data-cy attributes [EE-6880] (#11453)
2024-04-11 12:11:38 +12:00

71 lines
2 KiB
TypeScript

import { useState } from 'react';
import { Modal, OnSubmit, ModalType, openModal } from '@@/modals';
import { Button } from '@@/buttons';
import { SwitchField } from '@@/form-components/SwitchField';
import { TextTip } from '@@/Tip/TextTip';
interface Props {
onSubmit: OnSubmit<{ pullLatest: boolean }>;
cannotPullImage: boolean;
}
function ConfirmRecreationModal({ onSubmit, cannotPullImage }: Props) {
const [pullLatest, setPullLatest] = useState(false);
return (
<Modal
onDismiss={() => onSubmit()}
aria-label="confirm recreate container modal"
>
<Modal.Header title="Are you sure?" modalType={ModalType.Destructive} />
<Modal.Body>
<p>
You&apos;re about to recreate this container and any non-persisted
data will be lost. This container will be removed and another one will
be created using the same configuration.
</p>
<SwitchField
name="pullLatest"
data-cy="recreate-pull-latest-switch"
label="Re-pull image"
checked={pullLatest}
onChange={setPullLatest}
disabled={cannotPullImage}
/>
{cannotPullImage && (
<div className="mt-1 text-sm">
<TextTip color="orange">
Cannot re-pull as the image is inaccessible - either it no longer
exists or the tag or name is no longer correct.
</TextTip>
</div>
)}
</Modal.Body>
<Modal.Footer>
<Button
onClick={() => onSubmit()}
color="default"
data-cy="cancel-recreate"
>
Cancel
</Button>
<Button
onClick={() => onSubmit({ pullLatest })}
color="danger"
data-cy="confirm-recreate"
>
Recreate
</Button>
</Modal.Footer>
</Modal>
);
}
export async function confirmContainerRecreation(cannotPullImage: boolean) {
return openModal(ConfirmRecreationModal, {
cannotPullImage,
});
}