Shared frontend composition

Field Form

Demo controlled renderer, nested group/repeater, schema Builder và adapter React Hook Form. Demo này không lưu dữ liệu và không phụ thuộc Post, Product hay route nghiệp vụ.

Controlled renderer

Nhập liệu trực tiếp ngoài RHF, xem value bất biến và lỗi client theo nested path.

Một primitive text field dùng được trong bất kỳ consumer nào.

Group giữ value dưới dạng một object và hỗ trợ nested field.

Radio group dùng control Radio và RadioGroup có sẵn.
Number field dùng InputNumber với stepper và validation.

Sections

Repeater row có _rowId ổn định, nested field và thao tác reorder.

Keep at least 1 row.
Value hiện tại
{
  "title": "Trang giới thiệu",
  "seo": {
    "metaTitle": "ChillCMS — Field Form",
    "noIndex": false
  },
  "contentType": "article",
  "readingTime": 5,
  "sections": [
    {
      "_rowId": "row_intro",
      "heading": "Giới thiệu",
      "body": "Một row có identity ổn định và có thể chỉnh sửa độc lập."
    }
  ]
}
Client validation

Schema value hợp lệ.

Field Builder

Chỉnh sửa schema controlled, thêm field lồng nhau, duplicate, xóa, undo và reorder.

Field schema

Schema is valid.

Validation

Presentation

Conditional Logic

No conditions. Conditions are evaluated by immutable field key.

Advanced

Field key: title (read-only)

Validation

Presentation

Conditional Logic

No conditions. Conditions are evaluated by immutable field key.

Advanced

Field key: seo (read-only)
Nested fields
Drop a field here to nest it

Validation

Presentation

Conditional Logic

No conditions. Conditions are evaluated by immutable field key.

Advanced

Field key: metaTitle (read-only)

Validation

Presentation

Conditional Logic

No conditions. Conditions are evaluated by immutable field key.

Advanced

Field key: noIndex (read-only)

Validation

Presentation

Conditional Logic

No conditions. Conditions are evaluated by immutable field key.

Advanced

Field key: contentType (read-only)

Validation

Presentation

Conditional Logic

No conditions. Conditions are evaluated by immutable field key.

Advanced

Field key: readingTime (read-only)

Validation

Presentation

Conditional Logic

No conditions. Conditions are evaluated by immutable field key.

Advanced

Field key: sections (read-only)
Nested fields
Drop a field here to nest it

Validation

Presentation

Conditional Logic

No conditions. Conditions are evaluated by immutable field key.

Advanced

Field key: heading (read-only)

Validation

Presentation

Conditional Logic

No conditions. Conditions are evaluated by immutable field key.

Advanced

Field key: body (read-only)
Thay đổi cuối: Chưa có thay đổi schema

React Hook Form adapter

Cùng schema được bind qua RemixFieldForm mà UI core không import RHF.

Một primitive text field dùng được trong bất kỳ consumer nào.

Group giữ value dưới dạng một object và hỗ trợ nested field.

Radio group dùng control Radio và RadioGroup có sẵn.
Number field dùng InputNumber với stepper và validation.

Sections

Repeater row có _rowId ổn định, nested field và thao tác reorder.

Keep at least 1 row.

Adapter chỉ bind value/error vào RHF; submit và persistence vẫn thuộc consumer.

Contract overview

Các consumer khác nhau chỉ sở hữu schema/value lifecycle; Field Form chỉ sở hữu render và interaction.

UI core

Renderer, group, repeater, builder, validation UX.

Adapter

RHF binding, field state và error mapping.

Consumer

Load/save, server validation, authorization và persistence.

© 2026. FlatVn All rights reserved. Version 4.3.40