User support for every feature
This catalog matches the Field Manager UI in Core v1.2.0. Types live in config/dynamic-fields.php under field_types. Rows marked Pro appear in the dropdown with a PRO badge until you license Pro.
Field types at a glance
| Type key | Admin label | Tier | Filament control | Notes |
|---|---|---|---|---|
text | Text | Core | TextInput | Default type |
email | Core | TextInput email | Use for extra addresses; login email stays on users.email | |
phone | Phone | Core | TextInput tel | |
url | URL | Core | TextInput url | |
number | Number | Core | numeric TextInput | Stored as integer |
textarea | Textarea | Core (plain) / Pro (editor) | Textarea or RichEditor | Core always uses Textarea; RichEditor is Pro |
select | Select | Core | Select, non-native | Needs options |
radio | Radio | Core | Radio | Needs options |
multi_select | Multi-select | Pro | Select multiple + searchable | JSON array; min/max selections |
tags | Tags | Pro | TagsInput | Colored badges; suggestions from options |
date | Date | Core | DatePicker | |
datetime | Date & Time | Core | DateTimePicker | |
boolean | Boolean | Core | Toggle | Icon column / infolist |
toggle | Toggle | Core | Toggle | Same storage as boolean |
file | File | Pro | SpatieMediaLibraryFileUpload | Requires HasMedia host + Pro |
Textarea and optional RichEditor
Plain textarea is the Core default. In Textarea options:
- Use built-in text editor — Pro. Sets
meta.use_editor. Without Pro, Core always mapstextareato FilamentTextarea. - Rows — only shown when the editor is off; default 3.
Existing fields stay plain until you enable the editor. Infolists render rich values as HTML. HTML is stored as given in EAV (this is an authenticated Filament form, not a public page).
Extended seed field: about_html (editor on). Standard seed field: bio (plain, 4 rows).
Select, radio, multi-select
All four option types (including tags) use the Options repeater.
Select
Single value. Table/infolist show the option label when the stored value matches an option key.
Radio
Same data as select; different control.
Multi-select
Pro. Filament Select with multiple(), searchable. Stored as a JSON array of option values. Optional meta.min_selections / max_selections map to minItems / maxItems. Table/infolist show colored badges. Extended seed: skills (min 1, max 5).
Tags and colored badges
Pro. Core shows Tags in the type dropdown with a PRO badge.
- TagsInput with suggestions from option labels and values, reorderable, split on Tab and Enter.
- Min/max selections become array min/max validation rules.
- Each option can set Badge color (Filament theme names: primary, success, warning, danger, info, gray, and a wider palette in config). Empty color auto-assigns by sort index.
- Hex colors are supported in the theme helper if you set them in data; the admin select lists named theme colors.
- The input’s Filament color uses the first named option color when present.
- Lists render
fi-badge fi-color-{name}HTML (or inline style for hex).
Palette is configurable under dynamic-fields.tags.colors. Extended seed: interests with explicit colors per option.
Boolean and toggle
Both types render as a Filament Toggle and store boolean. Tables and infolists use boolean icon columns/entries. Use whichever label fits the UX; behavior is the same. Standard seed: marketing_opt_in (boolean). Extended: beta_access (toggle).
File uploads (Pro — Spatie Media Library)
Pro. The Field Manager section File upload is shown for upsell; drivers bind only with a Pro license. Bytes are not stored in EAV. Controls:
| Control | Meta key | Behavior |
|---|---|---|
| Allow multiple files | multiple | Multi upload; collection is not single-file |
| Storage disk | disk | Any disk from filesystems.disks, plus “Default”. S3 works when the disk is configured |
| Media collection | collection | Blank → custom_field_{name} |
| Directory hint | directory | Custom property only; Spatie still organizes by media id |
| Accepted MIME types | accepted_mime_types | Tags; also applied to the Spatie collection |
| Max size (KB) | max_size_kb | Filament maxSize |
| Min / max files | min_files, max_files | Only when multiple is on |
| Images only | image_only | Image upload + optional dimension rules |
| Min/max width/height | image_min_width etc. | Laravel dimensions: rule when images only |
| Enable image editor | image_editor | Filament image editor |
| Downloadable / openable / previewable | defaults true | Filament file UI |
| Reorderable | default true when multiple | Drag order of files |
| Optimize file names | default true | e.g. my-resume-a1b2c3d4.pdf |
| Image conversions | conversions[] | name, width, height; registered on the host via HasCustomFieldMedia; first conversion name used for table/infolist image display |
If conversions are empty but the field is image-only or has the editor, the trait registers a default thumb 150×150 (requires GD or Imagick). Conversions run nonQueued().
Extended seed: profile_documents — multiple, public disk, 5 MB, PDF/JPEG/PNG/WebP/text, thumb conversion, reorder/preview/download.
Dates, numbers, contact types
- Date / Date & Time — non-native pickers; stored via Carbon; table shows
Y-m-dorY-m-d H:i. - Number — numeric input; integer storage.
- Email / Phone / URL / Text — matching HTML input modes plus optional extra rules.
Builder UI (Field Manager)
- Collapsed option rows show the option label so you can scan a long list without expanding every row. Repeaters are collapsible, reorderable, and deletable.
- Conversion repeater on file fields uses the conversion name as the collapsed item label.
- Create redirects to the index after save (not the edit screen).
- Definition form is a two-column section: target model, name, label, type (live), required, sort order, validation tags, hint, placeholder, group, visibility pair.
- List columns: label, name (badge), type (badge), model basename (tooltip = FQCN), required icon, options count, hidden sort/updated toggles.
Conditional visibility
Pro. Set Visible when field to another field’s internal name and Visible when value to the expected value (compared as strings). Nested meta.visible_when = { field, value } is also honored by the Pro mapper. Without Pro, Core intercepts these fields with an upsell.
Other manager capabilities
- Clone action with confirmation — Pro (Core shows Clone · PRO and an upsell). Copies options including colors.
- Bulk delete on the table.
- Model discovery for the target dropdown — configure extra paths or exclude classes.
- Validation rules as a TagsInput of Laravel rule strings, stored as JSON on the definition.
- Group meta is stored for your seeders/layout; the default mapper does not auto-split sections by group (wrap mapper output yourself if you want grouped sections).