Files
econom/resources/js/components/CreateTeamModal.vue
brusnitsyn fb2e6c58e3
Some checks failed
linter / quality (push) Has been cancelled
tests / ci (8.3) (push) Has been cancelled
tests / ci (8.4) (push) Has been cancelled
tests / ci (8.5) (push) Has been cancelled
first commit
2026-04-06 00:06:00 +09:00

81 lines
2.3 KiB
Vue

<script setup lang="ts">
import { Form } from '@inertiajs/vue3';
import { ref } from 'vue';
import InputError from '@/components/InputError.vue';
import { Button } from '@/components/ui/button';
import {
Dialog,
DialogClose,
DialogContent,
DialogDescription,
DialogFooter,
DialogHeader,
DialogTitle,
DialogTrigger,
} from '@/components/ui/dialog';
import { Input } from '@/components/ui/input';
import { Label } from '@/components/ui/label';
import { store } from '@/routes/teams';
const open = ref(false);
const formKey = ref(0);
function handleOpenChange(value: boolean) {
open.value = value;
if (!value) {
formKey.value++;
}
}
</script>
<template>
<Dialog :open="open" @update:open="handleOpenChange">
<DialogTrigger as-child>
<slot />
</DialogTrigger>
<DialogContent>
<Form
:key="formKey"
v-bind="store.form()"
class="space-y-6"
v-slot="{ errors, processing }"
@success="open = false"
>
<DialogHeader>
<DialogTitle>Create a new team</DialogTitle>
<DialogDescription>
Create a new team to collaborate with others.
</DialogDescription>
</DialogHeader>
<div class="grid gap-2">
<Label for="name">Team name</Label>
<Input
id="name"
name="name"
data-test="create-team-name"
placeholder="My team"
required
/>
<InputError :message="errors.name" />
</div>
<DialogFooter class="gap-2">
<DialogClose as-child>
<Button variant="secondary"> Cancel </Button>
</DialogClose>
<Button
type="submit"
data-test="create-team-submit"
:disabled="processing"
>
Create team
</Button>
</DialogFooter>
</Form>
</DialogContent>
</Dialog>
</template>