Skip to content

Référence FormBuilder et FormViewer

FormBuilder

Props

PropTypeDéfautDescription
builder-idstringdefaultIdentifiant stable de l’instance. Isole le store, l’historique et l’autosave.
schemaFormKitSchemaDefinition[][]Schéma contrôlé via v-model:schema.
valuesRecord<string, unknown>{}Valeurs contrôlées via v-model:values.
settingsPartial<FormBuilderSettings>interneParamètres du builder.
readonlybooleanfalseForce le mode lecture seule.
disabledbooleanfalseDésactive les actions utilisateur.
autosavebooleanfalseActive la sauvegarde locale automatique.
storage-keystringcalculéeClé localStorage utilisée par l’autosave.
titlestringConstructeur de formulairesTitre affiché dans la toolbar.
subtitlestringtexte interneSous-titre affiché dans la toolbar.
heightstring100vhHauteur du shell du builder.
left-drawer-openbooleaninterneContrôle le panneau gauche.
right-drawer-openbooleaninterneContrôle le panneau droit.
preview-mode'editing' | 'previewing'interneMode courant.
drawer-behavior'default' | 'desktop' | 'mobile'desktopComportement des drawers Quasar.
labelsPartial<FormBuilderLabels>{}Libellés personnalisés.

v-model

vue
<FormBuilder
  v-model:schema="schema"
  v-model:values="values"
  v-model:settings="settings"
  v-model:left-drawer-open="leftDrawerOpen"
  v-model:right-drawer-open="rightDrawerOpen"
  v-model:preview-mode="previewMode"
/>

Événements

ÉvénementPayloadDescription
save{ builderId, schema, values, settings }Déclenché par le bouton sauvegarder ou save().
resetaucunDéclenché après réinitialisation.
cancelaucunRéservé pour usage hôte.
submitvaluesDéclenché lors de la soumission en preview.
field-add{ field, index, schema }Champ ajouté.
field-update{ field, index, schema }Champ modifié.
field-remove{ field, index, schema }Champ supprimé.
field-copy{ field, index, schema }Champ copié.
field-select{ field, index, schema }Champ sélectionné.
field-move{ field, from, to, schema }Champ déplacé.
schema-importschemaSchéma importé via API publique.
schema-exportschemaSchéma exporté via API publique.
error{ code, message, cause? }Erreur contrôlée du builder.

API exposée par ref

ts
export type FormBuilderPublicApi = {
  getBuilderId: () => string
  save: () => {
    builderId: string
    schema: FormKitSchemaDefinition[]
    values: Record<string, unknown>
    settings: Record<string, unknown>
  }
  reset: () => void
  setSchema: (schema: FormKitSchemaDefinition[]) => void
  getSchema: () => FormKitSchemaDefinition[]
  setValues: (values: Record<string, unknown>) => void
  getValues: () => Record<string, unknown>
  setSettings: (settings: Record<string, unknown>) => void
  getSettings: () => Record<string, unknown>
  importSchema: (schema: FormKitSchemaDefinition[]) => void
  exportSchema: () => FormKitSchemaDefinition[]
}

FormViewer

Props

PropTypeDéfautDescription
form-fieldsFormKitSchemaDefinition[]requisSchéma à rendre.
readonlybooleanfalseBloque les modifications et la soumission.

v-model

vue
<FormViewer
  v-model="values"
  :form-fields="schema"
/>

Le modèle correspond aux valeurs du formulaire :

ts
const values = ref<Record<string, unknown>>({})

Événement submit

vue
<FormViewer
  v-model="values"
  :form-fields="schema"
  @submit="handleSubmit"
/>
ts
function handleSubmit(data: Record<string, unknown>) {
  console.log(data)
}

Types pratiques à copier dans une app hôte

Tant que le package ne fournit pas encore d’export public de types, tu peux définir ces alias dans ton application :

ts
// app/types/qform-builder.ts
import type { FormKitSchemaDefinition } from '@formkit/core'

export type QFormBuilderSchema = FormKitSchemaDefinition[]
export type QFormBuilderValues = Record<string, unknown>

export type QFormBuilderSavePayload = {
  builderId: string
  schema: QFormBuilderSchema
  values: QFormBuilderValues
  settings: Record<string, unknown>
}

QForm Builder — couche Nuxt 4 / Quasar / FormKit réutilisable.