-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Description
Context
After analyzing a production React application with ~12 CRUD domains, we identified the field types, renderers, and core features that Ybyra needs to fully cover real-world form scenarios.
The target application uses react-hook-form, zod, shadcn/ui, and manual state management. Ybyra can already replace most of this — but several new components are required.
Current Coverage
With the existing field types (text, number, currency, date, datetime, select, toggle, checkbox, file), Ybyra can already handle 3 out of 9 CRUD domains without any changes (Coordinator, Manager, Participant). Adding the critical items below would unlock 4 more domains, and the advanced items would cover the remaining 2.
🔴 Critical — Block simple domain migration
1. Text.Password kind
- What: A new kind for
TextFieldDefinitionthat renders a password input (masked characters, optional toggle visibility) - Where it is needed: User management (password field)
- Scope: Core (
fields/text.ts— add toTextenum) + renderer implementations
2. TextareaFieldDefinition
- What: A multi-line text field (rendered as
<textarea>) withrows()and optionallymaxLength()configuration - Alternative: Could be a
Text.Multilinekind instead of a separate field type - Where it is needed: Journey (description), Template (body/sample fallback), bulk imports
- Scope: Core (new field definition or new kind) + renderer implementations
🟡 Important — Block medium-complexity domain migration
3. TimeFieldDefinition
- What: A time-only input field (HH:MM format), without date component
- Where it is needed: Workflow steps (scheduled execution time)
- Scope: Core (new field type in
fields/) + renderer implementations
4. MultiSelectFieldDefinition
- What: A select field that allows choosing multiple values, with search/filter and checkbox-based selection
- Where it is needed: Group management (member assignment with search modal, multi-checkbox selection)
- Scope: Core (new field type) + renderer implementations (modal with checkboxes, tag display for selected items)
5. Code Editor Renderer
- What: A custom renderer (not a new field type) that renders a code editor with syntax highlighting (e.g., CodeMirror or Monaco)
- Where it is needed: Template management (Handlebars template body, JSON sample data)
- Scope: Renderer only — can be registered as a custom renderer in consumer apps. Consider providing a reference implementation or documentation for integrating CodeMirror/Monaco as a Ybyra renderer.
6. Bulk Import Scope/Action Pattern
- What: A reusable pattern (scope or action) for importing records via multi-line textarea (e.g.,
email,nameper line) - Where it is needed: Coordinator, Manager, Participant, Enrollment (all have "bulk add" tabs)
- Scope: Could be a dedicated scope (
Scope.import) or a specialized action. Needs documentation/example of how to implement tabbed add forms (individual vs. bulk).
🟠 Advanced — Block complex domain migration
7. ListFieldDefinition (sortable item list)
- What: A field that manages an ordered list of complex objects, with add/edit/remove operations via modal dialogs
- Where it is needed: Workflow (steps list), Journey (contents list)
- Key features:
- Add item → opens modal with nested form
- Edit item → opens modal pre-populated
- Remove item → confirms and removes
- Reorder items (drag-and-drop or move up/down buttons)
- Auto-recalculate
orderproperty on changes
- Scope: Core (new field type) + React package (modal integration, state management for nested items)
8. Nested Form / Sub-Schema Support
- What: Ability to define a sub-schema that renders inside a modal dialog when adding/editing items in a
ListFieldDefinition - Where it is needed: Workflow (StepForm with trigger/day/when/time/resource/options), Journey (ContentForm with type/name/description/content)
- Key features:
- Sub-schema with its own fields, validation, and events
- Conditional field visibility within the sub-form (e.g., trigger type changes which fields are visible)
- Parent form state is preserved while sub-form is open
- Scope: Core (schema composition) + React package (modal rendering, state isolation)
9. TreeFieldDefinition (hierarchical nested list)
- What: Extension of
ListFieldDefinitionthat supports recursive nesting (items can contain sub-items) - Where it is needed: Journey (contents with phases → phases contain sub-contents)
- Key features:
- Recursive add/edit/remove at any nesting level
- Type-based restrictions (e.g., only "phase" type items can have children)
- Expand/collapse for nested sections
- Drag-and-drop reordering within and across levels
- Scope: Core (field definition with recursion support) + React package (tree renderer)
🔧 Core System Enhancements
10. Row-Level Conditional Actions
- What: Actions in data tables that change their
disabled/hiddenstate based on the current row's data - Example: "Resend invitation" action only enabled when
status === 'pending'; "Invalidate" only wheninvalidated === false - Where it is needed: Enrollment list, Entry list
- Scope: React package (
useDataTableaction resolution) — may already be partially supported via action handlers
11. Derived/Auto-Generated Fields
- What: A field whose value is automatically computed from another field's value (e.g.,
slugauto-generated fromdescriptionusing a transform function) - Where it is needed: Template (slug from description)
- Scope: Core (field configuration for derived values) or achievable via field events (
onChangeof source field updates target field)
Implementation Priority
| Phase | Items | Domains Unlocked |
|---|---|---|
| Phase 1 — Quick wins | Text.Password, TextareaFieldDefinition |
Coordinator, Manager, User, Participant |
| Phase 2 — Medium | TimeField, MultiSelect, Code Editor, Bulk Import |
Template, Enrollment |
| Phase 3 — Advanced | ListField, Nested Forms, TreeField, Conditional Actions |
Workflow, Group, Journey |
Summary
| Category | Count |
|---|---|
| New field types needed | 6 (textarea, password kind, time, multiselect, list, tree) |
| New renderers needed | 1 (code editor — reference impl) |
| Core enhancements needed | 4 (bulk import pattern, conditional actions, derived fields, nested forms) |
| Domains unlockable | 9 out of 12 |
| Specialized pages (keep custom) | 12 |
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels