24
Composables

Management, Categories, and Responses

Admin composables for forms, categories, and submission moderation.

useFormForgeManagement

const management = useFormForgeManagement({
  scope: 'user'
})

const formsList = await management.listForms(false, {
  filters: {
    category: 'survey',
    search: 'contact'
  }
})

await formsList.refresh()

Methods:

  • listForms(includeDeleted?, options?)
  • listFormRoute(routeKey, options?)
  • refreshForms() / refresh() (global fallback list refresh)
  • createForm(input, options?)
  • patchForm(key, input, options?)
  • publishForm(key, options?)
  • unpublishForm(key, options?)
  • deleteForm(key, options?)
  • getRevisions(key, includeDeleted?, options?)
  • getDiff(key, fromVersion, toVersion, options?)

State:

  • forms
  • loading
  • error
  • clientError
  • fieldErrors
  • businessErrorCode
  • hasCategoryValidationError

listForms() and listFormRoute() return:

  • data: FormForgeManagementForm[]
  • refresh(): re-run the same list request context

Auto-publish payload support

createForm and patchForm accept both:

  • auto_publish
  • autoPublish

Outgoing payloads are normalized to auto_publish.

Create example (POST /forms with auto_publish: true):

await management.createForm({
  title: 'Contact',
  fields: [
    { type: 'text', name: 'full_name', required: true }
  ],
  autoPublish: true
})

Patch example (PATCH /forms/{key} with auto_publish: true):

await management.patchForm('form-key', {
  title: 'Contact v2',
  auto_publish: true
})

useFormForgeCategory

const categories = useFormForgeCategory({
  immediate: true,
  initialQuery: {
    per_page: 20,
    is_active: true
  }
})

Methods:

  • listCategories(query?, options?)
  • listCategoryRoute(routeKey, query?, options?)
  • getCategory(categoryKey, options?)
  • createCategory(input, options?)
  • patchCategory(categoryKey, input, options?)
  • deleteCategory(categoryKey, options?)
  • refresh(options?)

useFormForgeCategoryOptions

Transforms categories into sorted select options:

  • label
  • value
  • disabled

useFormForgeResponses

const responses = useFormForgeResponses({
  key: 'contact',
  immediate: true,
  querySync: {
    enabled: true,
    pageKey: 'page',
    perPageKey: 'per_page',
    extraKeys: ['search', 'sort']
  }
})

Methods:

  • listResponses(query?, options?)
  • getResponse(submissionId, options?)
  • deleteResponse(submissionId, options?)
  • refresh(options?)

State:

  • list
  • current
  • lastMeta
  • loading
  • error