fix sandbox template Form components

- for Vue, Vue3, HTML, Svelte, Preact, HTML and Angular
This commit is contained in:
Yann Braga 2023-06-19 21:10:36 +02:00
parent 91c4339838
commit de35e3eb05
7 changed files with 22 additions and 20 deletions

View File

@ -47,7 +47,7 @@ export const Callback = {
await fireEvent.click(canvas.getByRole('button'));
});
await expect(args.onSuccess).toHaveBeenCalled();
await expect(args.onSuccess).toHaveBeenCalledWith('test');
},
};
@ -113,7 +113,7 @@ export const UserEventSetup = {
await user.keyboard('{enter}');
const submitButton = await canvas.findByRole('button');
await expect(submitButton).toHaveFocus();
await expect(args.onSuccess).toHaveBeenCalled();
await expect(args.onSuccess).toHaveBeenCalledWith('Pasting: foobar');
});
},
};

View File

@ -6,7 +6,7 @@ import { Component, Output, EventEmitter } from '@angular/core';
<form id="interaction-test-form" (submit)="handleSubmit($event)">
<label>
Enter Value
<input type="text" data-testid="value" [value]="value" required />
<input type="text" data-testid="value" [(ngModel)]="value" required />
</label>
<button type="submit">Submit</button>
<p *ngIf="complete">Completed!!</p>

View File

@ -2,30 +2,32 @@
export const Form = ({ onSuccess }) => {
const container = document.createElement('div');
const getInnerHTML = ({ complete }) => `
const getInnerHTML = ({ complete, value }) => `
<form id="interaction-test-form">
<label>
Enter Value
<input type="text" data-testid="value" required />
<input type="text" data-testid="value" value="${value}" required />
</label>
<button type="submit">Submit</button>
${complete ? '<p>Completed!!</p>' : ''}
</form>
`;
container.innerHTML = getInnerHTML({ complete: false });
container.innerHTML = getInnerHTML({ complete: false, value: '' });
const form = container.querySelector('form');
form.addEventListener('submit', (e) => {
e.preventDefault();
const { value } = form.querySelector('input'); // Store the current value
setTimeout(() => {
container.innerHTML = getInnerHTML({ complete: true });
container.innerHTML = getInnerHTML({ complete: true, value });
}, 500);
setTimeout(() => {
container.innerHTML = getInnerHTML({ complete: false });
container.innerHTML = getInnerHTML({ complete: false, value });
}, 1500);
onSuccess(e);
onSuccess(value);
});
return container;

View File

@ -24,7 +24,7 @@ export const Form = ({ onSuccess }) => {
data-testid="value"
value={value}
required
onChange={(event) => setValue(event.target.value)}
onInput={(event) => setValue(event.target.value)}
/>
</label>
<button type="submit">Submit</button>

View File

@ -26,8 +26,8 @@
<form id="interaction-test-form" on:submit|preventDefault={handleSubmit}>
<label>
Enter Value
<input type="text" data-testid="value" {value} required on:click={handleClick} />
<input type="text" data-testid="value" bind:value required on:click={handleClick} />
</label>
<button type="submit">Submit</button>
{#if complete}<p>Completed!!</p>{/if}
</form>
</form>

View File

@ -2,7 +2,13 @@
<form id="interaction-test-form" @submit.prevent="onSubmit">
<label>
Enter Value
<input type="text" data-testid="value" :value="value" required @click="setValue" />
<input
type="text"
data-testid="value"
:value="value"
@input="value = $event.target.value"
required
/>
</label>
<button type="submit">Submit</button>
<p v-if="complete">Completed!!</p>
@ -27,9 +33,6 @@ export default {
},
methods: {
setValue(event) {
this.value = event.target.value;
},
onSubmit() {
this.onSuccess(this.value);
setTimeout(() => {

View File

@ -2,7 +2,7 @@
<form id="interaction-test-form" @submit.prevent="onSubmit">
<label>
Enter Value
<input type="text" data-testid="value" :value="value" required @click="setValue" />
<input type="text" data-testid="value" v-model="value" required />
</label>
<button type="submit">Submit</button>
<p v-if="complete">Completed!!</p>
@ -27,9 +27,6 @@ export default {
},
methods: {
setValue(event) {
this.value = event.target.value;
},
onSubmit() {
this.onSuccess(this.value);
setTimeout(() => {