@furystack/shades-common-components 12.3.0 → 12.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,35 @@
1
1
  # Changelog
2
2
 
3
+ ## [12.4.0] - 2026-02-22
4
+
5
+ ### ✨ Features
6
+
7
+ ### Async form submission support
8
+
9
+ The `Form` component's `onSubmit` callback now accepts async functions (`() => void | Promise<void>`). New observables on `FormService`: `isSubmitting` tracks whether a submission is in progress, and `submitError` captures any error thrown during submission. When the `disableOnSubmit` prop is enabled, the form element becomes inert during submission, preventing duplicate submits.
10
+
11
+ **Usage:**
12
+
13
+ ```typescript
14
+ <Form
15
+ validate={myValidator}
16
+ onSubmit={async (data) => {
17
+ await saveToServer(data)
18
+ }}
19
+ disableOnSubmit
20
+ >
21
+ {/* form fields */}
22
+ </Form>
23
+ ```
24
+
25
+ ### ♻️ Refactoring
26
+
27
+ - Changed the `validate` prop type from `any` to `unknown` for stricter type safety
28
+
29
+ ### 🧪 Tests
30
+
31
+ - Added tests for async `onSubmit` behavior, `isSubmitting` state tracking, `disableOnSubmit` inert toggling, and error handling during async submission
32
+
3
33
  ## [12.3.0] - 2026-02-19
4
34
 
5
35
  ### ✨ Features
@@ -25,13 +25,16 @@ export declare class FormService<T> {
25
25
  } | undefined;
26
26
  }>;
27
27
  inputs: Set<HTMLInputElement>;
28
+ isSubmitting: ObservableValue<boolean>;
29
+ submitError: ObservableValue<unknown>;
28
30
  setFieldState: (key: keyof T, validationResult: InputValidationResult, validity: ValidityState) => void;
29
31
  [Symbol.dispose](): void;
30
32
  }
31
33
  type FormProps<T> = {
32
- onSubmit: (formData: T) => void;
34
+ onSubmit: (formData: T) => void | Promise<void>;
33
35
  onReset?: () => void;
34
- validate: (formData: any) => formData is T;
36
+ validate: (formData: unknown) => formData is T;
37
+ disableOnSubmit?: boolean;
35
38
  } & PartialElement<Omit<HTMLFormElement, 'onsubmit' | 'onchange' | 'onreset'>>;
36
39
  export declare const Form: <T>(props: FormProps<T>, children: ChildrenList) => JSX.Element;
37
40
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"form.d.ts","sourceRoot":"","sources":["../../src/components/form.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAErE,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAClD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAA;AAE9D,KAAK,2BAA2B,GAAG;IAAE,OAAO,EAAE,IAAI,CAAA;CAAE,CAAA;AAEpD,KAAK,yBAAyB,GAAG;IAAE,OAAO,EAAE,IAAI,CAAA;CAAE,CAAA;AAElD,KAAK,2BAA2B,GAAG;IACjC,OAAO,EAAE,KAAK,CAAA;IACd,MAAM,EAAE,mBAAmB,GAAG,yBAAyB,GAAG,SAAS,CAAA;CACpE,CAAA;AAED,KAAK,oBAAoB,GAAG,yBAAyB,GAAG,2BAA2B,GAAG,2BAA2B,CAAA;AAEjH,qBACa,WAAW,CAAC,CAAC;IACjB,iBAAiB,4BAAsC;IAEvD,WAAW;;cAAwE;IAEnF,gBAAgB,wCAA+D;IAE/E,WAAW;;8BACoB,qBAAqB;sBAAY,aAAa;;OAC9E;IAEC,MAAM,wBAA8B;IAEpC,aAAa,GAAI,KAAK,MAAM,CAAC,EAAE,kBAAkB,qBAAqB,EAAE,UAAU,aAAa,UAErG;IAEM,CAAC,MAAM,CAAC,OAAO,CAAC;CAKxB;AAED,KAAK,SAAS,CAAC,CAAC,IAAI;IAClB,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,IAAI,CAAA;IAC/B,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;IACpB,QAAQ,EAAE,CAAC,QAAQ,EAAE,GAAG,KAAK,QAAQ,IAAI,CAAC,CAAA;CAC3C,GAAG,cAAc,CAAC,IAAI,CAAC,eAAe,EAAE,UAAU,GAAG,UAAU,GAAG,SAAS,CAAC,CAAC,CAAA;AAE9E,eAAO,MAAM,IAAI,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,YAAY,KAAK,GAAG,CAAC,OA6DzE,CAAA"}
1
+ {"version":3,"file":"form.d.ts","sourceRoot":"","sources":["../../src/components/form.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAErE,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAClD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAA;AAE9D,KAAK,2BAA2B,GAAG;IAAE,OAAO,EAAE,IAAI,CAAA;CAAE,CAAA;AAEpD,KAAK,yBAAyB,GAAG;IAAE,OAAO,EAAE,IAAI,CAAA;CAAE,CAAA;AAElD,KAAK,2BAA2B,GAAG;IACjC,OAAO,EAAE,KAAK,CAAA;IACd,MAAM,EAAE,mBAAmB,GAAG,yBAAyB,GAAG,SAAS,CAAA;CACpE,CAAA;AAED,KAAK,oBAAoB,GAAG,yBAAyB,GAAG,2BAA2B,GAAG,2BAA2B,CAAA;AAEjH,qBACa,WAAW,CAAC,CAAC;IACjB,iBAAiB,4BAAsC;IAEvD,WAAW;;cAAwE;IAEnF,gBAAgB,wCAA+D;IAE/E,WAAW;;8BACoB,qBAAqB;sBAAY,aAAa;;OAC9E;IAEC,MAAM,wBAA8B;IAEpC,YAAY,2BAAsC;IAElD,WAAW,2BAA0C;IAErD,aAAa,GAAI,KAAK,MAAM,CAAC,EAAE,kBAAkB,qBAAqB,EAAE,UAAU,aAAa,UAErG;IAEM,CAAC,MAAM,CAAC,OAAO,CAAC;CAQxB;AAED,KAAK,SAAS,CAAC,CAAC,IAAI;IAClB,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC/C,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;IACpB,QAAQ,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,QAAQ,IAAI,CAAC,CAAA;IAC9C,eAAe,CAAC,EAAE,OAAO,CAAA;CAC1B,GAAG,cAAc,CAAC,IAAI,CAAC,eAAe,EAAE,UAAU,GAAG,UAAU,GAAG,SAAS,CAAC,CAAC,CAAA;AAE9E,eAAO,MAAM,IAAI,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,YAAY,KAAK,GAAG,CAAC,OA4EzE,CAAA"}
@@ -13,6 +13,8 @@ let FormService = class FormService {
13
13
  validationResult = new ObservableValue({ isValid: null });
14
14
  fieldErrors = new ObservableValue({});
15
15
  inputs = new Set();
16
+ isSubmitting = new ObservableValue(false);
17
+ submitError = new ObservableValue(undefined);
16
18
  setFieldState = (key, validationResult, validity) => {
17
19
  this.fieldErrors.setValue({ ...this.fieldErrors.getValue(), [key]: { validationResult, validity } });
18
20
  };
@@ -20,6 +22,9 @@ let FormService = class FormService {
20
22
  this.validatedFormData[Symbol.dispose]();
21
23
  this.rawFormData[Symbol.dispose]();
22
24
  this.validationResult[Symbol.dispose]();
25
+ this.fieldErrors[Symbol.dispose]();
26
+ this.isSubmitting[Symbol.dispose]();
27
+ this.submitError[Symbol.dispose]();
23
28
  }
24
29
  };
25
30
  FormService = __decorate([
@@ -39,13 +44,14 @@ export const Form = Shade({
39
44
  // assigns object values as properties on the host element, which sets the
40
45
  // `injector` setter defined on the Shade base class.
41
46
  useHostProps({ injector: formInjector });
42
- const changeHandler = (ev, shouldSubmit) => {
47
+ const changeHandler = async (ev, shouldSubmit) => {
43
48
  formService.inputs.forEach((i) => {
44
49
  const e = document.createEvent('FocusEvent');
45
50
  e.initEvent('blur', true, true);
46
51
  i.dispatchEvent(e);
47
52
  });
48
- const formData = Object.fromEntries(new FormData(ev.currentTarget).entries());
53
+ const formElement = ev.currentTarget;
54
+ const formData = Object.fromEntries(new FormData(formElement).entries());
49
55
  formService.rawFormData.setValue(formData);
50
56
  const currentFieldErrors = formService.fieldErrors.getValue();
51
57
  if (Object.values(currentFieldErrors).some((v) => v?.validationResult.isValid === false) ||
@@ -56,7 +62,23 @@ export const Form = Shade({
56
62
  formService.validationResult.setValue({ isValid: true });
57
63
  formService.validatedFormData.setValue(formData);
58
64
  if (shouldSubmit) {
59
- props.onSubmit(formData);
65
+ formService.isSubmitting.setValue(true);
66
+ formService.submitError.setValue(undefined);
67
+ if (props.disableOnSubmit) {
68
+ formElement.inert = true;
69
+ }
70
+ try {
71
+ await props.onSubmit(formData);
72
+ }
73
+ catch (error) {
74
+ formService.submitError.setValue(error);
75
+ }
76
+ finally {
77
+ formService.isSubmitting.setValue(false);
78
+ if (props.disableOnSubmit) {
79
+ formElement.inert = false;
80
+ }
81
+ }
60
82
  }
61
83
  }
62
84
  else {
@@ -65,14 +87,14 @@ export const Form = Shade({
65
87
  };
66
88
  useHostProps({
67
89
  oninvalid: (ev) => {
68
- changeHandler(ev);
90
+ void changeHandler(ev);
69
91
  },
70
92
  onsubmit: (ev) => {
71
93
  ev.preventDefault();
72
- changeHandler(ev, true);
94
+ void changeHandler(ev, true);
73
95
  },
74
96
  onchange: (ev) => {
75
- changeHandler(ev);
97
+ void changeHandler(ev);
76
98
  },
77
99
  onreset: () => {
78
100
  formService.rawFormData.setValue(null);
@@ -1 +1 @@
1
- {"version":3,"file":"form.js","sourceRoot":"","sources":["../../src/components/form.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"form.js","sourceRoot":"","sources":["../../src/components/form.tsx"],"names":[],"mappings":"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"}
@@ -30,6 +30,16 @@ describe('FormService', () => {
30
30
  expect(service.inputs.size).toBe(0);
31
31
  });
32
32
  });
33
+ it('should initialize isSubmitting as false', () => {
34
+ using(new FormService(), (service) => {
35
+ expect(service.isSubmitting.getValue()).toBe(false);
36
+ });
37
+ });
38
+ it('should initialize submitError as undefined', () => {
39
+ using(new FormService(), (service) => {
40
+ expect(service.submitError.getValue()).toBeUndefined();
41
+ });
42
+ });
33
43
  });
34
44
  describe('setFieldState', () => {
35
45
  it('should update field errors with valid result', () => {
@@ -68,10 +78,16 @@ describe('FormService', () => {
68
78
  const validatedFormDataDisposeSpy = vi.spyOn(service.validatedFormData, Symbol.dispose);
69
79
  const rawFormDataDisposeSpy = vi.spyOn(service.rawFormData, Symbol.dispose);
70
80
  const validationResultDisposeSpy = vi.spyOn(service.validationResult, Symbol.dispose);
81
+ const fieldErrorsDisposeSpy = vi.spyOn(service.fieldErrors, Symbol.dispose);
82
+ const isSubmittingDisposeSpy = vi.spyOn(service.isSubmitting, Symbol.dispose);
83
+ const submitErrorDisposeSpy = vi.spyOn(service.submitError, Symbol.dispose);
71
84
  service[Symbol.dispose]();
72
85
  expect(validatedFormDataDisposeSpy).toHaveBeenCalled();
73
86
  expect(rawFormDataDisposeSpy).toHaveBeenCalled();
74
87
  expect(validationResultDisposeSpy).toHaveBeenCalled();
88
+ expect(fieldErrorsDisposeSpy).toHaveBeenCalled();
89
+ expect(isSubmittingDisposeSpy).toHaveBeenCalled();
90
+ expect(submitErrorDisposeSpy).toHaveBeenCalled();
75
91
  });
76
92
  });
77
93
  });
@@ -320,5 +336,196 @@ describe('Form component', () => {
320
336
  await sleepAsync(50);
321
337
  });
322
338
  });
339
+ it('should set isSubmitting during async onSubmit and reset after', async () => {
340
+ await usingAsync(new Injector(), async (injector) => {
341
+ const rootElement = document.getElementById('root');
342
+ let resolveSubmit;
343
+ const submitPromise = new Promise((resolve) => {
344
+ resolveSubmit = resolve;
345
+ });
346
+ initializeShadeRoot({
347
+ injector,
348
+ rootElement,
349
+ jsxElement: (createComponent(Form, { onSubmit: () => submitPromise, validate: (data) => {
350
+ const d = data;
351
+ return typeof d.name === 'string';
352
+ } },
353
+ createComponent("input", { name: "name", type: "text" }),
354
+ createComponent("button", { type: "submit" }, "Submit"))),
355
+ });
356
+ await sleepAsync(50);
357
+ const form = document.querySelector('form[is="shade-form"]');
358
+ const input = form.querySelector('input[name="name"]');
359
+ input.value = 'Test';
360
+ const formInjector = form.injector;
361
+ const formService = formInjector.getInstance(FormService);
362
+ expect(formService.isSubmitting.getValue()).toBe(false);
363
+ const submitEvent = new Event('submit', { bubbles: true, cancelable: true });
364
+ form.dispatchEvent(submitEvent);
365
+ await sleepAsync(50);
366
+ expect(formService.isSubmitting.getValue()).toBe(true);
367
+ resolveSubmit();
368
+ await sleepAsync(50);
369
+ expect(formService.isSubmitting.getValue()).toBe(false);
370
+ });
371
+ });
372
+ it('should reset isSubmitting to false and set submitError when onSubmit throws', async () => {
373
+ await usingAsync(new Injector(), async (injector) => {
374
+ const rootElement = document.getElementById('root');
375
+ const submitError = new Error('Submit failed');
376
+ initializeShadeRoot({
377
+ injector,
378
+ rootElement,
379
+ jsxElement: (createComponent(Form, { onSubmit: async () => {
380
+ throw submitError;
381
+ }, validate: (data) => {
382
+ const d = data;
383
+ return typeof d.name === 'string';
384
+ } },
385
+ createComponent("input", { name: "name", type: "text" }),
386
+ createComponent("button", { type: "submit" }, "Submit"))),
387
+ });
388
+ await sleepAsync(50);
389
+ const form = document.querySelector('form[is="shade-form"]');
390
+ const input = form.querySelector('input[name="name"]');
391
+ input.value = 'Test';
392
+ const formInjector = form.injector;
393
+ const formService = formInjector.getInstance(FormService);
394
+ const submitEvent = new Event('submit', { bubbles: true, cancelable: true });
395
+ form.dispatchEvent(submitEvent);
396
+ await sleepAsync(50);
397
+ expect(formService.isSubmitting.getValue()).toBe(false);
398
+ expect(formService.submitError.getValue()).toBe(submitError);
399
+ });
400
+ });
401
+ it('should clear submitError before a new submission', async () => {
402
+ await usingAsync(new Injector(), async (injector) => {
403
+ const rootElement = document.getElementById('root');
404
+ let shouldThrow = true;
405
+ let resolveSubmit;
406
+ initializeShadeRoot({
407
+ injector,
408
+ rootElement,
409
+ jsxElement: (createComponent(Form, { onSubmit: async () => {
410
+ if (shouldThrow) {
411
+ throw new Error('First submit fails');
412
+ }
413
+ return new Promise((resolve) => {
414
+ resolveSubmit = resolve;
415
+ });
416
+ }, validate: (data) => {
417
+ const d = data;
418
+ return typeof d.name === 'string';
419
+ } },
420
+ createComponent("input", { name: "name", type: "text" }),
421
+ createComponent("button", { type: "submit" }, "Submit"))),
422
+ });
423
+ await sleepAsync(50);
424
+ const form = document.querySelector('form[is="shade-form"]');
425
+ const input = form.querySelector('input[name="name"]');
426
+ input.value = 'Test';
427
+ const formInjector = form.injector;
428
+ const formService = formInjector.getInstance(FormService);
429
+ form.dispatchEvent(new Event('submit', { bubbles: true, cancelable: true }));
430
+ await sleepAsync(50);
431
+ expect(formService.submitError.getValue()).toBeInstanceOf(Error);
432
+ shouldThrow = false;
433
+ form.dispatchEvent(new Event('submit', { bubbles: true, cancelable: true }));
434
+ await sleepAsync(50);
435
+ expect(formService.submitError.getValue()).toBeUndefined();
436
+ expect(formService.isSubmitting.getValue()).toBe(true);
437
+ resolveSubmit();
438
+ await sleepAsync(50);
439
+ expect(formService.isSubmitting.getValue()).toBe(false);
440
+ });
441
+ });
442
+ it('should set inert on form element when disableOnSubmit is true during async submit', async () => {
443
+ await usingAsync(new Injector(), async (injector) => {
444
+ const rootElement = document.getElementById('root');
445
+ let resolveSubmit;
446
+ const submitPromise = new Promise((resolve) => {
447
+ resolveSubmit = resolve;
448
+ });
449
+ initializeShadeRoot({
450
+ injector,
451
+ rootElement,
452
+ jsxElement: (createComponent(Form, { onSubmit: () => submitPromise, disableOnSubmit: true, validate: (data) => {
453
+ const d = data;
454
+ return typeof d.name === 'string';
455
+ } },
456
+ createComponent("input", { name: "name", type: "text" }),
457
+ createComponent("button", { type: "submit" }, "Submit"))),
458
+ });
459
+ await sleepAsync(50);
460
+ const form = document.querySelector('form[is="shade-form"]');
461
+ const input = form.querySelector('input[name="name"]');
462
+ input.value = 'Test';
463
+ expect(form.inert).toBeFalsy();
464
+ const submitEvent = new Event('submit', { bubbles: true, cancelable: true });
465
+ form.dispatchEvent(submitEvent);
466
+ await sleepAsync(50);
467
+ expect(form.inert).toBe(true);
468
+ resolveSubmit();
469
+ await sleepAsync(50);
470
+ expect(form.inert).toBe(false);
471
+ });
472
+ });
473
+ it('should not set inert when disableOnSubmit is not provided', async () => {
474
+ await usingAsync(new Injector(), async (injector) => {
475
+ const rootElement = document.getElementById('root');
476
+ let resolveSubmit;
477
+ const submitPromise = new Promise((resolve) => {
478
+ resolveSubmit = resolve;
479
+ });
480
+ initializeShadeRoot({
481
+ injector,
482
+ rootElement,
483
+ jsxElement: (createComponent(Form, { onSubmit: () => submitPromise, validate: (data) => {
484
+ const d = data;
485
+ return typeof d.name === 'string';
486
+ } },
487
+ createComponent("input", { name: "name", type: "text" }),
488
+ createComponent("button", { type: "submit" }, "Submit"))),
489
+ });
490
+ await sleepAsync(50);
491
+ const form = document.querySelector('form[is="shade-form"]');
492
+ const input = form.querySelector('input[name="name"]');
493
+ input.value = 'Test';
494
+ const submitEvent = new Event('submit', { bubbles: true, cancelable: true });
495
+ form.dispatchEvent(submitEvent);
496
+ await sleepAsync(50);
497
+ expect(form.inert).toBeFalsy();
498
+ resolveSubmit();
499
+ await sleepAsync(50);
500
+ });
501
+ });
502
+ it('should remove inert even if onSubmit throws when disableOnSubmit is true', async () => {
503
+ await usingAsync(new Injector(), async (injector) => {
504
+ const rootElement = document.getElementById('root');
505
+ initializeShadeRoot({
506
+ injector,
507
+ rootElement,
508
+ jsxElement: (createComponent(Form, { onSubmit: async () => {
509
+ throw new Error('Submit failed');
510
+ }, disableOnSubmit: true, validate: (data) => {
511
+ const d = data;
512
+ return typeof d.name === 'string';
513
+ } },
514
+ createComponent("input", { name: "name", type: "text" }),
515
+ createComponent("button", { type: "submit" }, "Submit"))),
516
+ });
517
+ await sleepAsync(50);
518
+ const form = document.querySelector('form[is="shade-form"]');
519
+ const input = form.querySelector('input[name="name"]');
520
+ input.value = 'Test';
521
+ const submitEvent = new Event('submit', { bubbles: true, cancelable: true });
522
+ form.dispatchEvent(submitEvent);
523
+ await sleepAsync(50);
524
+ expect(form.inert).toBe(false);
525
+ const formInjector = form.injector;
526
+ const formService = formInjector.getInstance(FormService);
527
+ expect(formService.isSubmitting.getValue()).toBe(false);
528
+ });
529
+ });
323
530
  });
324
531
  //# sourceMappingURL=form.spec.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"form.spec.js","sourceRoot":"","sources":["../../src/components/form.spec.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"form.spec.js","sourceRoot":"","sources":["../../src/components/form.spec.tsx"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@furystack/shades-common-components",
3
- "version": "12.3.0",
3
+ "version": "12.4.0",
4
4
  "description": "Common UI components for FuryStack Shades",
5
5
  "type": "module",
6
6
  "scripts": {
@@ -47,7 +47,7 @@
47
47
  "@furystack/cache": "^6.0.0",
48
48
  "@furystack/core": "^15.1.0",
49
49
  "@furystack/inject": "^12.0.30",
50
- "@furystack/shades": "^12.1.0",
50
+ "@furystack/shades": "^12.2.0",
51
51
  "@furystack/utils": "^8.1.10",
52
52
  "path-to-regexp": "^8.3.0"
53
53
  },
@@ -35,6 +35,18 @@ describe('FormService', () => {
35
35
  expect(service.inputs.size).toBe(0)
36
36
  })
37
37
  })
38
+
39
+ it('should initialize isSubmitting as false', () => {
40
+ using(new FormService(), (service) => {
41
+ expect(service.isSubmitting.getValue()).toBe(false)
42
+ })
43
+ })
44
+
45
+ it('should initialize submitError as undefined', () => {
46
+ using(new FormService(), (service) => {
47
+ expect(service.submitError.getValue()).toBeUndefined()
48
+ })
49
+ })
38
50
  })
39
51
 
40
52
  describe('setFieldState', () => {
@@ -84,12 +96,18 @@ describe('FormService', () => {
84
96
  const validatedFormDataDisposeSpy = vi.spyOn(service.validatedFormData, Symbol.dispose)
85
97
  const rawFormDataDisposeSpy = vi.spyOn(service.rawFormData, Symbol.dispose)
86
98
  const validationResultDisposeSpy = vi.spyOn(service.validationResult, Symbol.dispose)
99
+ const fieldErrorsDisposeSpy = vi.spyOn(service.fieldErrors, Symbol.dispose)
100
+ const isSubmittingDisposeSpy = vi.spyOn(service.isSubmitting, Symbol.dispose)
101
+ const submitErrorDisposeSpy = vi.spyOn(service.submitError, Symbol.dispose)
87
102
 
88
103
  service[Symbol.dispose]()
89
104
 
90
105
  expect(validatedFormDataDisposeSpy).toHaveBeenCalled()
91
106
  expect(rawFormDataDisposeSpy).toHaveBeenCalled()
92
107
  expect(validationResultDisposeSpy).toHaveBeenCalled()
108
+ expect(fieldErrorsDisposeSpy).toHaveBeenCalled()
109
+ expect(isSubmittingDisposeSpy).toHaveBeenCalled()
110
+ expect(submitErrorDisposeSpy).toHaveBeenCalled()
93
111
  })
94
112
  })
95
113
  })
@@ -488,4 +506,295 @@ describe('Form component', () => {
488
506
  await sleepAsync(50)
489
507
  })
490
508
  })
509
+
510
+ it('should set isSubmitting during async onSubmit and reset after', async () => {
511
+ await usingAsync(new Injector(), async (injector) => {
512
+ const rootElement = document.getElementById('root') as HTMLDivElement
513
+
514
+ let resolveSubmit: () => void
515
+ const submitPromise = new Promise<void>((resolve) => {
516
+ resolveSubmit = resolve
517
+ })
518
+
519
+ type FormData = { name: string }
520
+
521
+ initializeShadeRoot({
522
+ injector,
523
+ rootElement,
524
+ jsxElement: (
525
+ <Form<FormData>
526
+ onSubmit={() => submitPromise}
527
+ validate={(data): data is FormData => {
528
+ const d = data as Record<string, unknown>
529
+ return typeof d.name === 'string'
530
+ }}
531
+ >
532
+ <input name="name" type="text" />
533
+ <button type="submit">Submit</button>
534
+ </Form>
535
+ ),
536
+ })
537
+
538
+ await sleepAsync(50)
539
+
540
+ const form = document.querySelector('form[is="shade-form"]') as HTMLFormElement
541
+ const input = form.querySelector('input[name="name"]') as HTMLInputElement
542
+ input.value = 'Test'
543
+
544
+ const formInjector = (form as unknown as { injector: Injector }).injector
545
+ const formService = formInjector.getInstance(FormService)
546
+
547
+ expect(formService.isSubmitting.getValue()).toBe(false)
548
+
549
+ const submitEvent = new Event('submit', { bubbles: true, cancelable: true })
550
+ form.dispatchEvent(submitEvent)
551
+
552
+ await sleepAsync(50)
553
+ expect(formService.isSubmitting.getValue()).toBe(true)
554
+
555
+ resolveSubmit!()
556
+ await sleepAsync(50)
557
+ expect(formService.isSubmitting.getValue()).toBe(false)
558
+ })
559
+ })
560
+
561
+ it('should reset isSubmitting to false and set submitError when onSubmit throws', async () => {
562
+ await usingAsync(new Injector(), async (injector) => {
563
+ const rootElement = document.getElementById('root') as HTMLDivElement
564
+
565
+ type FormData = { name: string }
566
+
567
+ const submitError = new Error('Submit failed')
568
+
569
+ initializeShadeRoot({
570
+ injector,
571
+ rootElement,
572
+ jsxElement: (
573
+ <Form<FormData>
574
+ onSubmit={async () => {
575
+ throw submitError
576
+ }}
577
+ validate={(data): data is FormData => {
578
+ const d = data as Record<string, unknown>
579
+ return typeof d.name === 'string'
580
+ }}
581
+ >
582
+ <input name="name" type="text" />
583
+ <button type="submit">Submit</button>
584
+ </Form>
585
+ ),
586
+ })
587
+
588
+ await sleepAsync(50)
589
+
590
+ const form = document.querySelector('form[is="shade-form"]') as HTMLFormElement
591
+ const input = form.querySelector('input[name="name"]') as HTMLInputElement
592
+ input.value = 'Test'
593
+
594
+ const formInjector = (form as unknown as { injector: Injector }).injector
595
+ const formService = formInjector.getInstance(FormService)
596
+
597
+ const submitEvent = new Event('submit', { bubbles: true, cancelable: true })
598
+ form.dispatchEvent(submitEvent)
599
+
600
+ await sleepAsync(50)
601
+ expect(formService.isSubmitting.getValue()).toBe(false)
602
+ expect(formService.submitError.getValue()).toBe(submitError)
603
+ })
604
+ })
605
+
606
+ it('should clear submitError before a new submission', async () => {
607
+ await usingAsync(new Injector(), async (injector) => {
608
+ const rootElement = document.getElementById('root') as HTMLDivElement
609
+
610
+ let shouldThrow = true
611
+ let resolveSubmit: () => void
612
+
613
+ type FormData = { name: string }
614
+
615
+ initializeShadeRoot({
616
+ injector,
617
+ rootElement,
618
+ jsxElement: (
619
+ <Form<FormData>
620
+ onSubmit={async () => {
621
+ if (shouldThrow) {
622
+ throw new Error('First submit fails')
623
+ }
624
+ return new Promise<void>((resolve) => {
625
+ resolveSubmit = resolve
626
+ })
627
+ }}
628
+ validate={(data): data is FormData => {
629
+ const d = data as Record<string, unknown>
630
+ return typeof d.name === 'string'
631
+ }}
632
+ >
633
+ <input name="name" type="text" />
634
+ <button type="submit">Submit</button>
635
+ </Form>
636
+ ),
637
+ })
638
+
639
+ await sleepAsync(50)
640
+
641
+ const form = document.querySelector('form[is="shade-form"]') as HTMLFormElement
642
+ const input = form.querySelector('input[name="name"]') as HTMLInputElement
643
+ input.value = 'Test'
644
+
645
+ const formInjector = (form as unknown as { injector: Injector }).injector
646
+ const formService = formInjector.getInstance(FormService)
647
+
648
+ form.dispatchEvent(new Event('submit', { bubbles: true, cancelable: true }))
649
+ await sleepAsync(50)
650
+ expect(formService.submitError.getValue()).toBeInstanceOf(Error)
651
+
652
+ shouldThrow = false
653
+ form.dispatchEvent(new Event('submit', { bubbles: true, cancelable: true }))
654
+ await sleepAsync(50)
655
+ expect(formService.submitError.getValue()).toBeUndefined()
656
+ expect(formService.isSubmitting.getValue()).toBe(true)
657
+
658
+ resolveSubmit!()
659
+ await sleepAsync(50)
660
+ expect(formService.isSubmitting.getValue()).toBe(false)
661
+ })
662
+ })
663
+
664
+ it('should set inert on form element when disableOnSubmit is true during async submit', async () => {
665
+ await usingAsync(new Injector(), async (injector) => {
666
+ const rootElement = document.getElementById('root') as HTMLDivElement
667
+
668
+ let resolveSubmit: () => void
669
+ const submitPromise = new Promise<void>((resolve) => {
670
+ resolveSubmit = resolve
671
+ })
672
+
673
+ type FormData = { name: string }
674
+
675
+ initializeShadeRoot({
676
+ injector,
677
+ rootElement,
678
+ jsxElement: (
679
+ <Form<FormData>
680
+ onSubmit={() => submitPromise}
681
+ disableOnSubmit
682
+ validate={(data): data is FormData => {
683
+ const d = data as Record<string, unknown>
684
+ return typeof d.name === 'string'
685
+ }}
686
+ >
687
+ <input name="name" type="text" />
688
+ <button type="submit">Submit</button>
689
+ </Form>
690
+ ),
691
+ })
692
+
693
+ await sleepAsync(50)
694
+
695
+ const form = document.querySelector('form[is="shade-form"]') as HTMLFormElement
696
+ const input = form.querySelector('input[name="name"]') as HTMLInputElement
697
+ input.value = 'Test'
698
+
699
+ expect(form.inert).toBeFalsy()
700
+
701
+ const submitEvent = new Event('submit', { bubbles: true, cancelable: true })
702
+ form.dispatchEvent(submitEvent)
703
+
704
+ await sleepAsync(50)
705
+ expect(form.inert).toBe(true)
706
+
707
+ resolveSubmit!()
708
+ await sleepAsync(50)
709
+ expect(form.inert).toBe(false)
710
+ })
711
+ })
712
+
713
+ it('should not set inert when disableOnSubmit is not provided', async () => {
714
+ await usingAsync(new Injector(), async (injector) => {
715
+ const rootElement = document.getElementById('root') as HTMLDivElement
716
+
717
+ let resolveSubmit: () => void
718
+ const submitPromise = new Promise<void>((resolve) => {
719
+ resolveSubmit = resolve
720
+ })
721
+
722
+ type FormData = { name: string }
723
+
724
+ initializeShadeRoot({
725
+ injector,
726
+ rootElement,
727
+ jsxElement: (
728
+ <Form<FormData>
729
+ onSubmit={() => submitPromise}
730
+ validate={(data): data is FormData => {
731
+ const d = data as Record<string, unknown>
732
+ return typeof d.name === 'string'
733
+ }}
734
+ >
735
+ <input name="name" type="text" />
736
+ <button type="submit">Submit</button>
737
+ </Form>
738
+ ),
739
+ })
740
+
741
+ await sleepAsync(50)
742
+
743
+ const form = document.querySelector('form[is="shade-form"]') as HTMLFormElement
744
+ const input = form.querySelector('input[name="name"]') as HTMLInputElement
745
+ input.value = 'Test'
746
+
747
+ const submitEvent = new Event('submit', { bubbles: true, cancelable: true })
748
+ form.dispatchEvent(submitEvent)
749
+
750
+ await sleepAsync(50)
751
+ expect(form.inert).toBeFalsy()
752
+
753
+ resolveSubmit!()
754
+ await sleepAsync(50)
755
+ })
756
+ })
757
+
758
+ it('should remove inert even if onSubmit throws when disableOnSubmit is true', async () => {
759
+ await usingAsync(new Injector(), async (injector) => {
760
+ const rootElement = document.getElementById('root') as HTMLDivElement
761
+
762
+ type FormData = { name: string }
763
+
764
+ initializeShadeRoot({
765
+ injector,
766
+ rootElement,
767
+ jsxElement: (
768
+ <Form<FormData>
769
+ onSubmit={async () => {
770
+ throw new Error('Submit failed')
771
+ }}
772
+ disableOnSubmit
773
+ validate={(data): data is FormData => {
774
+ const d = data as Record<string, unknown>
775
+ return typeof d.name === 'string'
776
+ }}
777
+ >
778
+ <input name="name" type="text" />
779
+ <button type="submit">Submit</button>
780
+ </Form>
781
+ ),
782
+ })
783
+
784
+ await sleepAsync(50)
785
+
786
+ const form = document.querySelector('form[is="shade-form"]') as HTMLFormElement
787
+ const input = form.querySelector('input[name="name"]') as HTMLInputElement
788
+ input.value = 'Test'
789
+
790
+ const submitEvent = new Event('submit', { bubbles: true, cancelable: true })
791
+ form.dispatchEvent(submitEvent)
792
+
793
+ await sleepAsync(50)
794
+ expect(form.inert).toBe(false)
795
+ const formInjector = (form as unknown as { injector: Injector }).injector
796
+ const formService = formInjector.getInstance(FormService)
797
+ expect(formService.isSubmitting.getValue()).toBe(false)
798
+ })
799
+ })
491
800
  })
@@ -29,6 +29,10 @@ export class FormService<T> {
29
29
 
30
30
  public inputs = new Set<HTMLInputElement>()
31
31
 
32
+ public isSubmitting = new ObservableValue<boolean>(false)
33
+
34
+ public submitError = new ObservableValue<unknown>(undefined)
35
+
32
36
  public setFieldState = (key: keyof T, validationResult: InputValidationResult, validity: ValidityState) => {
33
37
  this.fieldErrors.setValue({ ...this.fieldErrors.getValue(), [key]: { validationResult, validity } })
34
38
  }
@@ -37,13 +41,17 @@ export class FormService<T> {
37
41
  this.validatedFormData[Symbol.dispose]()
38
42
  this.rawFormData[Symbol.dispose]()
39
43
  this.validationResult[Symbol.dispose]()
44
+ this.fieldErrors[Symbol.dispose]()
45
+ this.isSubmitting[Symbol.dispose]()
46
+ this.submitError[Symbol.dispose]()
40
47
  }
41
48
  }
42
49
 
43
50
  type FormProps<T> = {
44
- onSubmit: (formData: T) => void
51
+ onSubmit: (formData: T) => void | Promise<void>
45
52
  onReset?: () => void
46
- validate: (formData: any) => formData is T
53
+ validate: (formData: unknown) => formData is T
54
+ disableOnSubmit?: boolean
47
55
  } & PartialElement<Omit<HTMLFormElement, 'onsubmit' | 'onchange' | 'onreset'>>
48
56
 
49
57
  export const Form: <T>(props: FormProps<T>, children: ChildrenList) => JSX.Element = Shade({
@@ -61,13 +69,14 @@ export const Form: <T>(props: FormProps<T>, children: ChildrenList) => JSX.Eleme
61
69
  // `injector` setter defined on the Shade base class.
62
70
  useHostProps({ injector: formInjector })
63
71
 
64
- const changeHandler = (ev: Event, shouldSubmit?: boolean) => {
72
+ const changeHandler = async (ev: Event, shouldSubmit?: boolean) => {
65
73
  formService.inputs.forEach((i) => {
66
74
  const e = document.createEvent('FocusEvent')
67
75
  e.initEvent('blur', true, true)
68
76
  i.dispatchEvent(e)
69
77
  })
70
- const formData = Object.fromEntries(new FormData(ev.currentTarget as HTMLFormElement).entries())
78
+ const formElement = ev.currentTarget as HTMLFormElement
79
+ const formData = Object.fromEntries(new FormData(formElement).entries())
71
80
  formService.rawFormData.setValue(formData)
72
81
  const currentFieldErrors = formService.fieldErrors.getValue()
73
82
 
@@ -80,7 +89,21 @@ export const Form: <T>(props: FormProps<T>, children: ChildrenList) => JSX.Eleme
80
89
  formService.validationResult.setValue({ isValid: true })
81
90
  formService.validatedFormData.setValue(formData)
82
91
  if (shouldSubmit) {
83
- props.onSubmit(formData)
92
+ formService.isSubmitting.setValue(true)
93
+ formService.submitError.setValue(undefined)
94
+ if (props.disableOnSubmit) {
95
+ formElement.inert = true
96
+ }
97
+ try {
98
+ await props.onSubmit(formData)
99
+ } catch (error) {
100
+ formService.submitError.setValue(error)
101
+ } finally {
102
+ formService.isSubmitting.setValue(false)
103
+ if (props.disableOnSubmit) {
104
+ formElement.inert = false
105
+ }
106
+ }
84
107
  }
85
108
  } else {
86
109
  formService.validationResult.setValue({ isValid: false, reason: 'validation-failed' })
@@ -89,14 +112,14 @@ export const Form: <T>(props: FormProps<T>, children: ChildrenList) => JSX.Eleme
89
112
 
90
113
  useHostProps({
91
114
  oninvalid: (ev: Event) => {
92
- changeHandler(ev)
115
+ void changeHandler(ev)
93
116
  },
94
117
  onsubmit: (ev: SubmitEvent) => {
95
118
  ev.preventDefault()
96
- changeHandler(ev, true)
119
+ void changeHandler(ev, true)
97
120
  },
98
121
  onchange: (ev: Event) => {
99
- changeHandler(ev)
122
+ void changeHandler(ev)
100
123
  },
101
124
  onreset: () => {
102
125
  formService.rawFormData.setValue(null)