From bbc784d9c91095e2fd2dc4a278aea51ab3092958 Mon Sep 17 00:00:00 2001 From: Alex Date: Mon, 6 Jan 2025 13:29:51 -0600 Subject: [PATCH] make Jsf generic on `data` --- packages/form/src/json-schema-form.def.ts | 2 +- packages/form/src/json-schema-form.ts | 7 ++++--- packages/form/src/triage/array-primitive.ts | 2 +- packages/form/src/triage/array.ts | 4 ++-- packages/form/src/triage/object.ts | 2 +- packages/form/src/triage/primitive.ts | 4 ++-- packages/shoelace/src/form.def.ts | 2 +- packages/shoelace/src/form.ts | 2 +- packages/types/src/form.ts | 4 ++-- 9 files changed, 15 insertions(+), 14 deletions(-) diff --git a/packages/form/src/json-schema-form.def.ts b/packages/form/src/json-schema-form.def.ts index 26adb68..9c5664e 100644 --- a/packages/form/src/json-schema-form.def.ts +++ b/packages/form/src/json-schema-form.def.ts @@ -4,6 +4,6 @@ customElements.define('json-schema-form', Jsf); declare global { interface HTMLElementTagNameMap { - 'json-schema-form': Jsf; + 'json-schema-form': Jsf; } } diff --git a/packages/form/src/json-schema-form.ts b/packages/form/src/json-schema-form.ts index fd43534..ed99737 100644 --- a/packages/form/src/json-schema-form.ts +++ b/packages/form/src/json-schema-form.ts @@ -33,16 +33,17 @@ import type { JSONSchema7, } from '@jsfe/types'; -export class Jsf extends LitElement { +export class Jsf extends LitElement { @property({ type: Object }) public schema: JSONSchema7 = {}; - @property({ type: Object }) public data: unknown = {}; + // @ts-expect-error TData might not extend {}, but we can't fix until the next breaking change + @property({ type: Object }) public data: TData = {}; @property({ type: Object }) public uiSchema: UiSchema = {}; public submitCallback: OnFormSubmit = () => {}; - public dataChangeCallback: DataChangeCallback = () => {}; + public dataChangeCallback: DataChangeCallback = () => {}; @property({ type: Object }) public widgets: Widgets = {}; diff --git a/packages/form/src/triage/array-primitive.ts b/packages/form/src/triage/array-primitive.ts index 29e7707..f277e55 100644 --- a/packages/form/src/triage/array-primitive.ts +++ b/packages/form/src/triage/array-primitive.ts @@ -10,7 +10,7 @@ export const fieldArrayPrimitive = ( uiState: unknown, uiOptions: UiSchema, required: boolean, - handleChange: Jsf['_handleChange'], + handleChange: Jsf['_handleChange'], // dig: Jsf['_dig'], schemaPath: Path, widgets: Widgets, diff --git a/packages/form/src/triage/array.ts b/packages/form/src/triage/array.ts index 91ac8b0..71229ef 100644 --- a/packages/form/src/triage/array.ts +++ b/packages/form/src/triage/array.ts @@ -12,8 +12,8 @@ export const fieldArray = ( path: Path, uiState: unknown, uiOptions: UiSchema, - handleChange: Jsf['_handleChange'], - dig: Jsf['_dig'], + handleChange: Jsf['_handleChange'], + dig: Jsf['_dig'], schemaPath: Path, widgets: Widgets, required = false, diff --git a/packages/form/src/triage/object.ts b/packages/form/src/triage/object.ts index 9d13bc1..27a674b 100644 --- a/packages/form/src/triage/object.ts +++ b/packages/form/src/triage/object.ts @@ -8,7 +8,7 @@ export const fieldObject = ( path: Path, uiState: unknown, uiSchema: UiSchema, - dig: Jsf['_dig'], + dig: Jsf['_dig'], schemaPath: Path, widgets: Widgets, level = 0, diff --git a/packages/form/src/triage/primitive.ts b/packages/form/src/triage/primitive.ts index 0566931..ab10396 100644 --- a/packages/form/src/triage/primitive.ts +++ b/packages/form/src/triage/primitive.ts @@ -14,8 +14,8 @@ export const fieldPrimitive = ( path: Path, uiOptions: UiSchema, required: boolean, - handleChange: Jsf['_handleChange'], - handleKeydown: Jsf['_handleKeydown'], + handleChange: Jsf['_handleChange'], + handleKeydown: Jsf['_handleKeydown'], schemaPath: Path, widgets: Widgets, diff --git a/packages/shoelace/src/form.def.ts b/packages/shoelace/src/form.def.ts index 2f6c77c..75ac5d7 100644 --- a/packages/shoelace/src/form.def.ts +++ b/packages/shoelace/src/form.def.ts @@ -4,6 +4,6 @@ customElements.define('jsf-shoelace', JsfShoelace); declare global { interface HTMLElementTagNameMap { - 'jsf-shoelace': JsfShoelace; + 'jsf-shoelace': JsfShoelace; } } diff --git a/packages/shoelace/src/form.ts b/packages/shoelace/src/form.ts index 1185927..5864fac 100644 --- a/packages/shoelace/src/form.ts +++ b/packages/shoelace/src/form.ts @@ -2,7 +2,7 @@ import { Jsf } from '@jsfe/form'; import * as widgets from './widgets/index.js'; import { styles } from './styles.js'; -export class JsfShoelace extends Jsf { +export class JsfShoelace extends Jsf { public widgets = widgets; public styleSheets = [styles]; diff --git a/packages/types/src/form.ts b/packages/types/src/form.ts index aed33a3..4448e8e 100644 --- a/packages/types/src/form.ts +++ b/packages/types/src/form.ts @@ -16,8 +16,8 @@ export interface FeatureFlags { additionalProperties?: boolean; } -export type DataChangeCallback = ( - newData: unknown, +export type DataChangeCallback = ( + newData: TData, path: Path, value: unknown, schemaPath: Path,