dify/web/features/deployments/create-release/ui/actions.tsx
Stephen Zhou a84c2d36a3
style: format with vp fmt (#38803)
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2026-07-12 15:57:46 +00:00

62 lines
2.1 KiB
TypeScript

'use client'
import { Button } from '@langgenius/dify-ui/button'
import { useAtomValue, useSetAtom } from 'jotai'
import { useTranslation } from 'react-i18next'
import {
createReleaseContentReadyAtom,
createReleaseFormIsSubmittingAtom,
createReleaseHasNameConflictAtom,
createReleaseNameFieldAtom,
isCheckingCreateReleaseContentAtom,
requestCloseCreateReleaseDialogAtom,
} from '../state'
export function CreateReleaseActions() {
const { t } = useTranslation('deployments')
const requestCloseDialog = useSetAtom(requestCloseCreateReleaseDialogAtom)
const isSubmitting = useAtomValue(createReleaseFormIsSubmittingAtom)
const releaseContentReady = useAtomValue(createReleaseContentReadyAtom)
const isCheckingReleaseContent = useAtomValue(isCheckingCreateReleaseContentAtom)
const hasReleaseNameConflict = useAtomValue(createReleaseHasNameConflictAtom)
const releaseNameField = useAtomValue(createReleaseNameFieldAtom)
const hasReleaseName = Boolean(releaseNameField.value.trim())
return (
<div className="flex items-center justify-end gap-4 border-t border-divider-subtle bg-background-default-subtle px-6 py-4">
<div className="flex shrink-0 justify-end gap-2">
<Button
type="button"
variant="secondary"
disabled={isSubmitting}
onPointerDown={(event) => {
event.preventDefault()
event.stopPropagation()
requestCloseDialog()
}}
onClick={(event) => {
event.preventDefault()
event.stopPropagation()
requestCloseDialog()
}}
>
{t(($) => $['versions.cancelCreate'])}
</Button>
<Button
type="submit"
variant="primary"
className="min-w-22"
disabled={!hasReleaseName || !releaseContentReady || hasReleaseNameConflict}
loading={isSubmitting}
>
{isSubmitting
? t(($) => $['versions.creating'])
: isCheckingReleaseContent
? t(($) => $['versions.checkingReleaseContent'])
: t(($) => $['versions.create'])}
</Button>
</div>
</div>
)
}