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'defaultdefault mesure la largeur réelle du builder, ajuste automatiquement les deux panneaux et bascule en overlay lorsque le canvas ne peut plus rester lisible. desktop et mobile restent des forçages explicites.
labelsPartial<FormBuilderLabels>{}Surcharges ciblées des libellés historiques de toolbar.
localeQFormBuilderLocaleCodefrLocale UI active. Les locales intégrées sont fr et en.
localesQFormBuilderLocaleRegistry{}Surcharges profondes ou locales supplémentaires fournies par l’application hôte.
catalogQFormBuilderCatalog[]Éléments personnalisés ajoutés ou utilisés en remplacement du catalogue Community.
catalog-mode'append' | 'replace'appendFusionne le catalogue ou le remplace entièrement.
templatesQFormBuilderTemplateRegistry[]Modèles personnalisés fusionnés avec le registre Community.
template-mode'append' | 'replace'appendFusionne les modèles personnalisés ou remplace le registre Community.
config-panelsQFormBuilderConfigPanelRegistry[]Registre public de panneaux de propriétés fournis par l’application hôte.
validation-rulesQFormBuilderValidationRuleRegistry[]Registre runtime des règles métier personnalisées et de leurs messages localisés.
history-openbooleanfalseContrôle l’ouverture du panneau d’historique.
history-depthnumber50Nombre maximal d’états conservés, borné entre 2 et 500.
history-shortcutsbooleantrueActive les raccourcis undo/redo sécurisés.
themeQFormBuilderThemeInputEnterpriseThème contrôlé partagé par le builder et le viewer.
theme-openbooleanfalseContrôle l’ouverture du Theme Builder.

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-model:history-open="historyOpen"
  v-model:history-depth="historyDepth"
  v-model:theme="theme"
  v-model:theme-open="themeOpen"
/>

É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, fromTarget?, toTarget?, schema }Champ déplacé, y compris entre conteneurs imbriqués.
schema-importschemaSchéma importé via API publique.
schema-exportschemaSchéma historique exporté via API publique.
document-importQFormBuilderDocumentImportEventDocument importé avec source, versions, migrations, avertissements et groupes appliqués.
document-exportQFormBuilderDocumentExportEventDocument canonique versionné exporté.
template-applyQFormBuilderTemplateApplyEventModèle appliqué avec mode, schéma, valeurs, réglages et table de renommage.
history-changeQFormBuilderHistoryChangeEventTimeline, pointeur ou profondeur modifiés.
history-undoQFormBuilderHistoryNavigationEventUndo appliqué avec succès.
history-redoQFormBuilderHistoryNavigationEventRedo appliqué avec succès.
history-restoreQFormBuilderHistoryNavigationEventRestauration explicite appliquée.
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[]
  importDocument: (input: unknown, options?: QFormBuilderDocumentImportOptions) => QFormBuilderMigrationResult | null
  exportDocument: (options?: QFormBuilderDocumentCreateOptions) => QFormBuilderDocument
  getHistory: () => QFormBuilderHistorySnapshot
  undo: () => QFormBuilderHistoryEntry | null
  redo: () => QFormBuilderHistoryEntry | null
  restoreHistoryEntry: (entryId: string) => QFormBuilderHistoryEntry | null
  clearHistory: () => void
  setHistoryDepth: (depth: number) => number
  openHistory: () => void
  closeHistory: () => void
  setTheme: (theme: QFormBuilderThemeInput) => QFormBuilderThemeConfig
  getTheme: () => QFormBuilderThemeConfig
  openTheme: () => void
  closeTheme: () => void
  getTemplates: () => QFormBuilderTemplateRegistry
  applyTemplate: (
    templateKey: string,
    options?: QFormBuilderTemplateApplyOptions,
  ) => QFormBuilderTemplateApplyEvent | null
}

FormViewer

Props

PropTypeDéfautDescription
form-fieldsFormKitSchemaDefinition[]requisSchéma à rendre.
readonlybooleanfalseBloque les modifications et la soumission.
localeQFormBuilderLocaleCodefrLocale des composants runtime.
localesQFormBuilderLocaleRegistry{}Surcharges profondes ou locales supplémentaires.
validation-rulesQFormBuilderValidationRuleRegistry[]Même registre runtime que celui utilisé pour construire le schéma.
themeQFormBuilderThemeInputEnterpriseApplique les mêmes design tokens que le builder.

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 publics

Les types sont exportés par le package :

ts
import type {
  FormBuilderPublicApi,
  FormBuilderSavePayload,
  FormBuilderSchema,
  FormBuilderValues,
  QFormBuilderDocument,
  QFormBuilderDocumentImportEvent,
  QFormBuilderMigrationResult,
  QFormBuilderLocale,
  QFormBuilderLocaleCode,
  QFormBuilderLocaleOverrides,
  QFormBuilderLocaleRegistry,
  QFormBuilderCatalog,
  QFormBuilderCatalogMode,
  QFormBuilderElementDefinition,
  QFormBuilderConfigPanelDefinition,
  QFormBuilderConfigPanelProps,
  QFormBuilderConfigPanelRegistry,
  QFormBuilderValidationRuleDefinition,
  QFormBuilderValidationRuleRegistry,
  QFormBuilderValidationMessages,
  QFormBuilderHistoryAction,
  QFormBuilderHistoryEntry,
  QFormBuilderHistorySnapshot,
  QFormBuilderHistoryChangeEvent,
  QFormBuilderHistoryNavigationEvent,
  QFormBuilderThemeConfig,
  QFormBuilderThemePresetKey,
  QFormBuilderTemplateDefinition,
  QFormBuilderTemplateSettings,
  QFormBuilderTemplateRegistry,
  QFormBuilderTemplateApplyMode,
  QFormBuilderTemplateApplyOptions,
  QFormBuilderTemplateApplyEvent,
  QFormBuilderAccessibilityApi,
  QFormBuilderAccessibilityAnnouncementOptions,
} from '@vevedh/qform-builder-layer/types'

Édition des colonnes imbriquées

Les colonnes de q-columns sont des nœuds de configuration internes, pas des composants publics séparés. Leur sélection et leur édition mettent à jour v-model:schema comme toute autre modification du builder. Le contrat de données est exposé par QFormBuilderColumnDefinition.

Validation publique des imports

ts
import {
  parseQFormBuilderSchema,
  sanitizeQFormBuilderSchema,
} from '@vevedh/qform-builder-layer/schema-transfer'

Le sous-chemin schema-transfer fournit le même contrôle de taille, de structure et de contenu actif que l’interface d’import du builder.

Helpers de validation publique

ts
import {
  parseQFormBuilderValidation,
  resolveQFormBuilderValidationRegistry,
  validateQFormBuilderRegex,
} from '@vevedh/qform-builder-layer/validation'

Voir Validation avancée pour le contrat de registre, les regex et les comparaisons entre champs.

Helpers publics d’historique

ts
import {
  appendQFormBuilderHistory,
  createQFormBuilderHistoryState,
  formatQFormBuilderHistoryLabel,
  normalizeQFormBuilderHistoryDepth,
  restoreQFormBuilderHistory,
} from '@vevedh/qform-builder-layer/history'

Voir Historique visible et restauration.

Helpers publics de modèles

ts
import {
  applyQFormBuilderTemplate,
  canAppendQFormBuilderTemplate,
  createCommunityTemplates,
  defineQFormTemplate,
  mergeQFormBuilderTemplates,
} from '@vevedh/qform-builder-layer/templates'

Voir Modèles de formulaires pour les modes replace/append, le renommage des collisions et le registre personnalisé.

Helpers publics de thème

ts
import {
  applyQFormBuilderThemePreset,
  createQFormBuilderTheme,
  mergeQFormBuilderTheme,
  normalizeQFormBuilderTheme,
  qFormBuilderThemeToCssVariables,
} from '@vevedh/qform-builder-layer/theme'

Voir Theme Builder et champ couleur Quasar.

API d’accessibilité imbriquée

Un composant ou panneau personnalisé rendu sous FormBuilder peut utiliser le composable auto-importé :

ts
const accessibility = useFormBuilderAccessibility()

accessibility.announce('Configuration appliquée')
await accessibility.focusField('email')

Le composable est isolé par instance et fournit un repli sans effet hors builder. Voir Accessibilité, clavier et audit axe.

QForm Builder — layer Nuxt 4, Quasar et FormKit pour formulaires dynamiques.