Merge pull request #141 from hehehai/hehehai/fix-env-editor-width-over

fix: env editor width overflow
This commit is contained in:
Mauricio Siu
2024-06-15 03:03:13 -06:00
committed by GitHub
18 changed files with 35 additions and 27 deletions

View File

@@ -19,7 +19,7 @@ import {
import { api } from "@/utils/api"; import { api } from "@/utils/api";
import { AlertBlock } from "@/components/shared/alert-block"; import { AlertBlock } from "@/components/shared/alert-block";
import { zodResolver } from "@hookform/resolvers/zod"; import { zodResolver } from "@hookform/resolvers/zod";
import { useEffect } from "react"; import { useEffect, useState } from "react";
import { useForm } from "react-hook-form"; import { useForm } from "react-hook-form";
import { toast } from "sonner"; import { toast } from "sonner";
import { z } from "zod"; import { z } from "zod";
@@ -58,6 +58,7 @@ export const validateAndFormatYAML = (yamlText: string) => {
}; };
export const UpdateTraefikConfig = ({ applicationId }: Props) => { export const UpdateTraefikConfig = ({ applicationId }: Props) => {
const [open, setOpen] = useState(false);
const { data, refetch } = api.application.readTraefikConfig.useQuery( const { data, refetch } = api.application.readTraefikConfig.useQuery(
{ {
applicationId, applicationId,
@@ -81,7 +82,7 @@ export const UpdateTraefikConfig = ({ applicationId }: Props) => {
traefikConfig: data || "", traefikConfig: data || "",
}); });
} }
}, [form, form.reset, data]); }, [data]);
const onSubmit = async (data: UpdateTraefikConfig) => { const onSubmit = async (data: UpdateTraefikConfig) => {
const { valid, error } = validateAndFormatYAML(data.traefikConfig); const { valid, error } = validateAndFormatYAML(data.traefikConfig);
@@ -100,6 +101,8 @@ export const UpdateTraefikConfig = ({ applicationId }: Props) => {
.then(async () => { .then(async () => {
toast.success("Traefik config Updated"); toast.success("Traefik config Updated");
refetch(); refetch();
setOpen(false);
form.reset();
}) })
.catch(() => { .catch(() => {
toast.error("Error to update the traefik config"); toast.error("Error to update the traefik config");
@@ -107,7 +110,12 @@ export const UpdateTraefikConfig = ({ applicationId }: Props) => {
}; };
return ( return (
<Dialog> <Dialog open={open} onOpenChange={(open) => {
setOpen(open)
if (!open) {
form.reset();
}
}}>
<DialogTrigger asChild> <DialogTrigger asChild>
<Button isLoading={isLoading}>Modify</Button> <Button isLoading={isLoading}>Modify</Button>
</DialogTrigger> </DialogTrigger>
@@ -122,7 +130,7 @@ export const UpdateTraefikConfig = ({ applicationId }: Props) => {
<form <form
id="hook-form-update-traefik-config" id="hook-form-update-traefik-config"
onSubmit={form.handleSubmit(onSubmit)} onSubmit={form.handleSubmit(onSubmit)}
className="grid w-full py-4 overflow-auto" className="w-full space-y-4 overflow-auto"
> >
<div className="flex flex-col"> <div className="flex flex-col">
<FormField <FormField

View File

@@ -189,7 +189,7 @@ export const AddVolumes = ({
/> />
<Label <Label
htmlFor="bind" htmlFor="bind"
className="flex flex-col items-center justify-between rounded-md border-2 border-muted bg-popover p-4 hover:bg-accent hover:text-accent-foreground peer-data-[state=checked]:border-primary [&:has([data-state=checked])]:border-primary" className="flex flex-col items-center justify-between rounded-md border-2 border-muted bg-popover p-4 hover:bg-accent hover:text-accent-foreground peer-data-[state=checked]:border-primary [&:has([data-state=checked])]:border-primary cursor-pointer"
> >
Bind Mount Bind Mount
</Label> </Label>
@@ -209,7 +209,7 @@ export const AddVolumes = ({
/> />
<Label <Label
htmlFor="volume" htmlFor="volume"
className="flex flex-col items-center justify-between rounded-md border-2 border-muted bg-popover p-4 hover:bg-accent hover:text-accent-foreground peer-data-[state=checked]:border-primary [&:has([data-state=checked])]:border-primary" className="flex flex-col items-center justify-between rounded-md border-2 border-muted bg-popover p-4 hover:bg-accent hover:text-accent-foreground peer-data-[state=checked]:border-primary [&:has([data-state=checked])]:border-primary cursor-pointer"
> >
Volume Mount Volume Mount
</Label> </Label>
@@ -233,7 +233,7 @@ export const AddVolumes = ({
/> />
<Label <Label
htmlFor="file" htmlFor="file"
className="flex flex-col items-center justify-between rounded-md border-2 border-muted bg-popover p-4 hover:bg-accent hover:text-accent-foreground peer-data-[state=checked]:border-primary [&:has([data-state=checked])]:border-primary" className="flex flex-col items-center justify-between rounded-md border-2 border-muted bg-popover p-4 hover:bg-accent hover:text-accent-foreground peer-data-[state=checked]:border-primary [&:has([data-state=checked])]:border-primary cursor-pointer"
> >
File Mount File Mount
</Label> </Label>

View File

@@ -124,7 +124,7 @@ export const ShowEnvironment = ({ applicationId }: Props) => {
<form <form
id="hook-form" id="hook-form"
onSubmit={form.handleSubmit(onSubmit)} onSubmit={form.handleSubmit(onSubmit)}
className="grid w-full gap-4 " className="w-full space-y-4"
> >
<FormField <FormField
control={form.control} control={form.control}

View File

@@ -124,7 +124,7 @@ export const ShowEnvironmentCompose = ({ composeId }: Props) => {
<form <form
id="hook-form" id="hook-form"
onSubmit={form.handleSubmit(onSubmit)} onSubmit={form.handleSubmit(onSubmit)}
className="grid w-full gap-4 " className="w-full space-y-4"
> >
<FormField <FormField
control={form.control} control={form.control}

View File

@@ -87,7 +87,7 @@ export const ComposeFileEditor = ({ composeId }: Props) => {
<Form {...form}> <Form {...form}>
<form <form
onSubmit={form.handleSubmit(onSubmit)} onSubmit={form.handleSubmit(onSubmit)}
className="grid w-full relative gap-4" className="w-full relative space-y-4"
> >
<FormField <FormField
control={form.control} control={form.control}
@@ -99,8 +99,8 @@ export const ComposeFileEditor = ({ composeId }: Props) => {
<CodeEditor <CodeEditor
// disabled // disabled
value={field.value} value={field.value}
className="font-mono min-h-[20rem] compose-file-editor" className="font-mono"
wrapperClassName="min-h-[20rem]" wrapperClassName="compose-file-editor"
placeholder={`version: '3' placeholder={`version: '3'
services: services:
web: web:

View File

@@ -90,7 +90,7 @@ export const ShowTraefikFile = ({ path }: Props) => {
<Form {...form}> <Form {...form}>
<form <form
onSubmit={form.handleSubmit(onSubmit)} onSubmit={form.handleSubmit(onSubmit)}
className="grid w-full relative z-[5]" className="w-full relative z-[5]"
> >
<div className="flex flex-col overflow-auto"> <div className="flex flex-col overflow-auto">
<FormField <FormField

View File

@@ -85,7 +85,7 @@ export const ShowMariadbEnvironment = ({ mariadbId }: Props) => {
<form <form
id="hook-form" id="hook-form"
onSubmit={form.handleSubmit(onSubmit)} onSubmit={form.handleSubmit(onSubmit)}
className="grid w-full gap-4 " className="w-full space-y-4"
> >
<FormField <FormField
control={form.control} control={form.control}

View File

@@ -85,7 +85,7 @@ export const ShowMongoEnvironment = ({ mongoId }: Props) => {
<form <form
id="hook-form" id="hook-form"
onSubmit={form.handleSubmit(onSubmit)} onSubmit={form.handleSubmit(onSubmit)}
className="grid w-full gap-4 " className="w-full space-y-4"
> >
<FormField <FormField
control={form.control} control={form.control}

View File

@@ -85,7 +85,7 @@ export const ShowMysqlEnvironment = ({ mysqlId }: Props) => {
<form <form
id="hook-form" id="hook-form"
onSubmit={form.handleSubmit(onSubmit)} onSubmit={form.handleSubmit(onSubmit)}
className="grid w-full gap-4 " className="w-full space-y-4"
> >
<FormField <FormField
control={form.control} control={form.control}

View File

@@ -85,7 +85,7 @@ export const ShowPostgresEnvironment = ({ postgresId }: Props) => {
<form <form
id="hook-form" id="hook-form"
onSubmit={form.handleSubmit(onSubmit)} onSubmit={form.handleSubmit(onSubmit)}
className="grid w-full gap-4 " className="w-full space-y-4"
> >
<FormField <FormField
control={form.control} control={form.control}

View File

@@ -85,7 +85,7 @@ export const ShowRedisEnvironment = ({ redisId }: Props) => {
<form <form
id="hook-form" id="hook-form"
onSubmit={form.handleSubmit(onSubmit)} onSubmit={form.handleSubmit(onSubmit)}
className="grid w-full gap-4 " className="w-full space-y-4"
> >
<FormField <FormField
control={form.control} control={form.control}

View File

@@ -194,7 +194,7 @@ export const WebServer = () => {
Space Space
</Button> </Button>
</DropdownMenuTrigger> </DropdownMenuTrigger>
<DropdownMenuContent className="w-56" align="start"> <DropdownMenuContent className="w-64" align="start">
<DropdownMenuLabel>Actions</DropdownMenuLabel> <DropdownMenuLabel>Actions</DropdownMenuLabel>
<DropdownMenuSeparator /> <DropdownMenuSeparator />
<DropdownMenuGroup> <DropdownMenuGroup>

View File

@@ -95,7 +95,7 @@ export const ShowMainTraefikConfig = ({ children }: Props) => {
<form <form
id="hook-form-update-main-traefik-config" id="hook-form-update-main-traefik-config"
onSubmit={form.handleSubmit(onSubmit)} onSubmit={form.handleSubmit(onSubmit)}
className="grid w-full py-4 relative" className="w-full space-y-4 relative"
> >
<div className="flex flex-col"> <div className="flex flex-col">
<FormField <FormField

View File

@@ -98,7 +98,7 @@ export const ShowServerMiddlewareConfig = ({ children }: Props) => {
<form <form
id="hook-form-update-server-traefik-config" id="hook-form-update-server-traefik-config"
onSubmit={form.handleSubmit(onSubmit)} onSubmit={form.handleSubmit(onSubmit)}
className="grid w-full py-4 relative overflow-auto" className="w-full space-y-4 relative overflow-auto"
> >
<div className="flex flex-col"> <div className="flex flex-col">
<FormField <FormField

View File

@@ -98,7 +98,7 @@ export const ShowServerTraefikConfig = ({ children }: Props) => {
<form <form
id="hook-form-update-server-traefik-config" id="hook-form-update-server-traefik-config"
onSubmit={form.handleSubmit(onSubmit)} onSubmit={form.handleSubmit(onSubmit)}
className="grid w-full py-4 relative overflow-auto" className="w-full space-y-4 relative overflow-auto"
> >
<div className="flex flex-col"> <div className="flex flex-col">
<FormField <FormField

View File

@@ -46,7 +46,7 @@ export const CodeEditor = ({
)} )}
/> />
{props.disabled && ( {props.disabled && (
<div className="absolute top-0 left-0 w-full h-full flex items-center justify-center z-[10] [background:var(--overlay)]" /> <div className="absolute top-0 rounded-md left-0 w-full h-full flex items-center justify-center z-[10] [background:var(--overlay)]" />
)} )}
</div> </div>
); );

View File

@@ -36,12 +36,14 @@ const DialogContent = React.forwardRef<
<DialogPrimitive.Content <DialogPrimitive.Content
ref={ref} ref={ref}
className={cn( className={cn(
"fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg", "fixed left-[50%] top-[50%] z-50 w-full max-w-lg translate-x-[-50%] translate-y-[-50%] border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg",
className, className,
)} )}
{...props} {...props}
> >
{children} <div className="space-y-4 w-full">
{children}
</div>
<DialogPrimitive.Close className="absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground"> <DialogPrimitive.Close className="absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground">
<X className="h-4 w-4" /> <X className="h-4 w-4" />
<span className="sr-only">Close</span> <span className="sr-only">Close</span>

View File

@@ -127,10 +127,8 @@
background-color: transparent; background-color: transparent;
} }
.compose-file-editor .cm-editor { .compose-file-editor .cm-editor {
@apply min-h-[25rem]; @apply min-h-[25rem];
} }