Skip to main content

Pages, Form Containers, and CRUD

Page containers, form-driven dialogs, table abstractions, and the CRUD stack all live in @vef-framework-react/components. They used to be exported from starter; in current versions they have been consolidated here.

Page

Primary container for regular business pages.

Recommended for:

  • monitoring pages
  • settings pages
  • dashboards
  • left / right split panels

Key props:

PropTypePurpose
marginbooleanenable page-level margin
gapLengthspacing between main areas
leftAside / rightAsideReactNodeleft and right side panels
leftAsideWidth / rightAsideWidthAsideWidthside width or resizable config
header / footerReactNodeheader and footer slots
headerPosition / footerPosition"inside" | "outside"header/footer placement
scrollablebooleanwhether the content area scrolls
scrollMarginbooleanauto pad the scroll area

Related export: useViewportHeight.

FlexCard

A semantic card-style container, useful for split layouts such as list + detail or tree + form.

FormModal

Combines Modal, form state, mutation behavior, and submit actions.

Recommended for:

  • standard create / edit dialogs
  • form dialogs that benefit from a unified default footer

Key props:

PropTypePurpose
openbooleancontrols visibility
titleReactNodemodal title
widthModalProps["width"]modal width
draggablebooleanenable dragging
defaultValuesTValuesinitial form values
mutationFnMutationFunctionsubmit mutation
renderActions(formApi) => ReactNodecustom footer area
beforeSubmit / afterSubmitcallbackssubmit lifecycle hooks

FormDrawer

Same form pattern as FormModal, but inside a drawer.

Key props mirror FormModal plus:

PropTypePurpose
placementDrawerProps["placement"]drawer placement
resizablebooleanallow drawer resizing
widthLengthdrawer width

ProSearch

Search-form container for:

  • basic search area
  • advanced search area
  • search and reset actions

Key props:

PropTypePurpose
defaultValuesTValuesinitial search values
basicSearchReactNodebasic search area
advancedSearchReactNodeadvanced search area
extraReactNodeleft-side extra content
onSearch(values) => voidsearch callback
onReset(defaultValues) => voidreset callback
defaultAdvancedSearchVisiblebooleaninitial advanced visibility
advancedSearchVisiblebooleancontrolled advanced visibility

ProTable

Page-level table abstraction with support for:

  • query functions
  • pagination
  • row selection
  • column settings
  • operation columns
  • header and footer slots

Related exports:

  • ProTableSubscriber
  • OperationButtonGroup
  • ParamsWithPagination
  • ParamsWithSort
  • RowSelectionConfig
  • ProTableRef
  • ProTableState

Crud

Combines ProSearch, ProTable, scene forms, and delete-related mutations into one CRUD state model.

CrudPage

The standard page-level CRUD abstraction, built from Page + Crud.

Behavior notes:

  • after delete or deleteMany succeed, CrudPage clears the internal selection state automatically — toolbar buttons that depend on selectedRows will re-disable on their own
  • the renderForm(scene, defaults) and per-scene action renderers receive a defaults argument exposing the framework's default submitButton / resetButton so that custom action layouts can keep the standard buttons when needed

Key props:

PropTypePurpose
tableColumnsArray<TableColumn<TRow>>table columns
queryFnQueryFunctionlist query
basicSearch / advancedSearchReactNodesearch areas
renderForm(scene) => ReactNodescene-driven form rendering
formMutationFnsCrudFormMutationFnssubmit functions per scene
renderFormActionsCrudFormActionsRenderersoptional per-scene action renderers, receive (formApi, defaults)
deleteMutationFnMutationFunctionsingle-row delete
deleteManyMutationFnMutationFunctionbatch delete
toolbarActionsReactNodetoolbar slot
operationColumnOperationColumnConfigrow action column
sceneDefaultFormValuesPartialDeep<TSceneFormValues>defaults per scene
formMode"modal" | "drawer"form container mode
formDrawerConfigCrudFormDrawerConfigdrawer-specific overrides

createCrudKit

Fixes a page's TRow, TSearchValues, and TSceneFormValues generics into a reusable local toolkit.

Returned helpers:

HelperPurpose
useCrudStoreread CRUD-internal state
useSearchValuesread current search values
useSelectedRowsread currently selected rows
ActionButtonGrouptoolbar-level button group
OperationButtonGrouprow-level operation button group

CRUD Types

TypePurpose
CrudBasicFormScenebasic scene literal ("create" | "update")
CrudFormScenescene key type
CrudBasicSceneFormValuesbasic scene values map
CrudFormMutationFnssubmit-fn map per scene
CrudFormActionsRenderersaction renderer map per scene
CrudFormMode / CrudFormDrawerConfigform container mode / drawer config
CrudProps / CrudPagePropsCRUD component props
CrudKitreturn type of createCrudKit()