Files
speckle-server/packages/frontend-2/lib/automate/composables/jsonSchema.ts
T
2024-06-10 16:54:30 +02:00

38 lines
1002 B
TypeScript

import type { JsonSchema } from '@jsonforms/core'
import type { JsonFormsChangeEvent } from '@jsonforms/vue'
import type { MaybeNullOrUndefined } from '@speckle/shared'
import { formatJsonFormSchemaInputs } from '~/lib/automate/helpers/jsonSchema'
export const hasJsonFormErrors = (event?: JsonFormsChangeEvent) =>
(event?.errors?.length || 0) > 0
export const useJsonFormsChangeHandler = (params: {
schema: MaybeRef<MaybeNullOrUndefined<JsonSchema>>
}) => {
const { schema } = params
const event = ref<JsonFormsChangeEvent>()
const value = computed(() =>
// eslint-disable-next-line @typescript-eslint/no-unsafe-argument
formatJsonFormSchemaInputs(event.value?.data, unref(schema))
)
const hasErrors = computed(() =>
event.value ? hasJsonFormErrors(event.value) : false
)
const handler = (e: JsonFormsChangeEvent) => {
event.value = e
}
const reset = () => {
event.value = undefined
}
return {
value,
hasErrors,
handler,
reset
}
}