Skip to content

Commit 8fc6067

Browse files
committed
Add form remember, dirty and reset functionality to playgrounds
1 parent 7130c42 commit 8fc6067

File tree

4 files changed

+26
-6
lines changed

4 files changed

+26
-6
lines changed

playgrounds/react/resources/js/Pages/Form.tsx

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,11 @@ const Form = () => {
1818
<Head title="Form" />
1919
<h1 className="text-3xl">Form</h1>
2020
<form onSubmit={submit} className="mt-6 max-w-md space-y-4">
21+
{form.isDirty && (
22+
<div className="my-5 rounded border border-amber-100 bg-amber-50 p-3 text-amber-800">
23+
There are unsaved changes!
24+
</div>
25+
)}
2126
<div>
2227
<label className="block" htmlFor="name">
2328
Name:
@@ -61,10 +66,13 @@ const Form = () => {
6166
</select>
6267
{form.errors.role && <div className="mt-2 text-sm text-red-600">{form.errors.role}</div>}
6368
</div>
64-
<div>
69+
<div className="flex gap-4">
6570
<button type="submit" disabled={form.processing} className="rounded bg-slate-800 px-6 py-2 text-white">
6671
Submit
6772
</button>
73+
<button type="button" onClick={() => form.reset()}>
74+
Reset
75+
</button>
6876
</div>
6977
</form>
7078
</>

playgrounds/svelte/resources/js/Pages/Form.svelte

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,9 @@
2323
<h1 class="text-3xl">Form</h1>
2424

2525
<form on:submit|preventDefault={submit} class="mt-6 max-w-md space-y-4">
26+
{#if $form.isDirty}
27+
<div class="my-5 rounded border border-amber-100 bg-amber-50 p-3 text-amber-800">There are unsaved changes!</div>
28+
{/if}
2629
<div>
2730
<label class="block" for="name">Name:</label>
2831
<input
@@ -59,9 +62,10 @@
5962
<div class="mt-2 text-sm text-red-600">{$form.errors.role}</div>
6063
{/if}
6164
</div>
62-
<div>
65+
<div class="flex gap-4">
6366
<button type="submit" disabled={$form.processing} class="rounded bg-slate-800 px-6 py-2 text-white">
6467
Submit
6568
</button>
69+
<button type="button" on:click={() => $form.reset()}>Reset</button>
6670
</div>
6771
</form>

playgrounds/vue2/resources/js/Pages/Form.vue

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ export default { layout: Layout }
66
<script setup>
77
import { Head, useForm } from '@inertiajs/vue2'
88
9-
const form = useForm({
9+
const form = useForm('NewUser', {
1010
name: '',
1111
company: '',
1212
role: '',
@@ -18,6 +18,9 @@ const form = useForm({
1818
<Head title="Form" />
1919
<h1 class="text-3xl">Form</h1>
2020
<form @submit.prevent="form.post('/user')" class="mt-6 max-w-md space-y-4">
21+
<div v-if="form.isDirty" class="my-5 rounded border border-amber-100 bg-amber-50 p-3 text-amber-800">
22+
There are unsaved changes!
23+
</div>
2124
<div>
2225
<label class="block" for="name">Name:</label>
2326
<input
@@ -48,10 +51,11 @@ const form = useForm({
4851
</select>
4952
<div v-if="form.errors.role" class="mt-2 text-sm text-red-600">{{ form.errors.role }}</div>
5053
</div>
51-
<div>
54+
<div class="flex gap-4">
5255
<button type="submit" :disabled="form.processing" class="rounded bg-slate-800 px-6 py-2 text-white">
5356
Submit
5457
</button>
58+
<button type="button" @click="form.reset()">Reset</button>
5559
</div>
5660
</form>
5761
</div>

playgrounds/vue3/resources/js/Pages/Form.vue

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ export default { layout: Layout }
66
<script setup lang="ts">
77
import { Head, useForm } from '@inertiajs/vue3'
88
9-
const form = useForm({
9+
const form = useForm('NewUser', {
1010
name: '',
1111
company: '',
1212
role: '',
@@ -17,6 +17,9 @@ const form = useForm({
1717
<Head title="Form" />
1818
<h1 class="text-3xl">Form</h1>
1919
<form @submit.prevent="form.post('/user')" class="mt-6 max-w-md space-y-4">
20+
<div v-if="form.isDirty" class="my-5 rounded border border-amber-100 bg-amber-50 p-3 text-amber-800">
21+
There are unsaved changes!
22+
</div>
2023
<div>
2124
<label class="block" for="name">Name:</label>
2225
<input
@@ -47,10 +50,11 @@ const form = useForm({
4750
</select>
4851
<div v-if="form.errors.role" class="mt-2 text-sm text-red-600">{{ form.errors.role }}</div>
4952
</div>
50-
<div>
53+
<div class="flex gap-4">
5154
<button type="submit" :disabled="form.processing" class="rounded bg-slate-800 px-6 py-2 text-white">
5255
Submit
5356
</button>
57+
<button type="button" @click="form.reset()">Reset</button>
5458
</div>
5559
</form>
5660
</template>

0 commit comments

Comments
 (0)