feat(18.1-01): task 1 taglist field in array mode end to end

- cabana: core type taglist (mode string|array, separator, customTags,
  options as a list of tags), column type gate, save-time normalisation
  (trim, drop empties, dedupe) and taglist.invalid 422, record hydration
- FormField gains separator and customTags (omitempty); OpenAPI and
  schema.d.ts regenerated
- admin: TaglistField chip input with suggestions, registry entry, vitest
- acme.catalog fixture with TestTaglistFieldCompile and TestTaglistFieldSmoke
- docs: forms.md Taglist section, cabana README; rebuilt dist
This commit is contained in:
Jakub Zych
2026-10-14 15:47:30 +02:00
parent 43d2fdd54a
commit 349bad5596
30 changed files with 1089 additions and 29 deletions

View File

@@ -5608,6 +5608,11 @@ export interface components {
* money field's currency code; the admin follows that field's value.
*/
currencyFrom?: string;
/**
* @description CustomTags is a taglist field's customTags as fields.yaml declares it;
* nil means the default, true. With false only the options are accepted.
*/
customTags?: boolean;
default?: components["schemas"]["cabana.jsonScalar"];
/**
* @description Deferrable is true on a relation-manager field whose relation can be
@@ -5675,8 +5680,9 @@ export interface components {
minItems?: number;
/**
* @description Mode is the fileupload mode (image or file, default file), the
* datepicker mode (date, datetime or time, default datetime) or the
* permissioneditor mode (radio or checkbox).
* datepicker mode (date, datetime or time, default datetime), the
* permissioneditor mode (radio or checkbox) or the taglist mode (string,
* the default, or array).
*/
mode?: string;
multiple?: boolean;
@@ -5716,6 +5722,11 @@ export interface components {
* (default 4). A value with more digits is refused, never rounded.
*/
scale?: number;
/**
* @description Separator joins the tags of a `type: taglist` field in string mode:
* comma (the default) or space. Empty in array mode.
*/
separator?: string;
size?: string;
span?: string;
tab?: string;