@adia-ai/web-components 0.6.34 → 0.6.35
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +42 -0
- package/color/index.js +1 -1
- package/components/accordion/accordion-item.yaml +2 -2
- package/components/accordion/accordion.js +1 -1
- package/components/action-list/action-item.yaml +2 -2
- package/components/action-list/action-list.js +1 -1
- package/components/agent-artifact/{class.js → agent-artifact.class.js} +1 -1
- package/components/agent-artifact/agent-artifact.js +1 -1
- package/components/agent-feedback-bar/agent-feedback-bar.js +1 -1
- package/components/agent-questions/agent-questions.js +1 -1
- package/components/agent-reasoning/agent-reasoning.js +1 -1
- package/components/agent-suggestions/agent-suggestions.js +1 -1
- package/components/alert/alert.a2ui.json +64 -1
- package/components/alert/{class.js → alert.class.js} +189 -2
- package/components/alert/alert.css +78 -0
- package/components/alert/alert.d.ts +14 -0
- package/components/alert/alert.js +1 -1
- package/components/alert/alert.test.js +184 -0
- package/components/alert/alert.yaml +114 -1
- package/components/avatar/avatar-group.yaml +2 -2
- package/components/avatar/avatar.js +1 -1
- package/components/badge/badge.js +1 -1
- package/components/block/block.js +1 -1
- package/components/breadcrumb/breadcrumb.js +1 -1
- package/components/button/button.js +1 -1
- package/components/calendar-grid/calendar-grid.a2ui.json +10 -0
- package/components/calendar-grid/{class.js → calendar-grid.class.js} +30 -4
- package/components/calendar-grid/calendar-grid.css +20 -0
- package/components/calendar-grid/calendar-grid.d.ts +4 -0
- package/components/calendar-grid/calendar-grid.js +1 -1
- package/components/calendar-grid/calendar-grid.yaml +20 -0
- package/components/calendar-picker/calendar-picker.js +1 -1
- package/components/card/card.js +1 -1
- package/components/chart/chart.js +1 -1
- package/components/chart-legend/chart-legend.js +1 -1
- package/components/chat-thread/chat-input.a2ui.json +1 -1
- package/components/chat-thread/chat-input.js +6 -1
- package/components/chat-thread/chat-input.yaml +4 -1
- package/components/chat-thread/chat-thread.js +1 -1
- package/components/check/check.js +1 -1
- package/components/code/code.js +1 -1
- package/components/col/col.js +1 -1
- package/components/color-input/color-input.js +1 -1
- package/components/color-picker/color-picker.js +1 -1
- package/components/combobox/combobox.js +1 -1
- package/components/command/command.js +1 -1
- package/components/date-range-picker/{class.js → date-range-picker.class.js} +18 -2
- package/components/date-range-picker/date-range-picker.css +51 -5
- package/components/date-range-picker/date-range-picker.js +1 -1
- package/components/datetime-picker/{class.js → datetime-picker.class.js} +1 -1
- package/components/datetime-picker/datetime-picker.js +1 -1
- package/components/demo-toggle/demo-toggle.js +1 -1
- package/components/description-list/description-list.js +1 -1
- package/components/divider/divider.js +1 -1
- package/components/drawer/drawer.js +1 -1
- package/components/embed/embed.js +1 -1
- package/components/empty-state/empty-state.js +1 -1
- package/components/feed/feed.js +1 -1
- package/components/field/field.js +1 -1
- package/components/field/field.test.js +1 -1
- package/components/fields/fields.js +1 -1
- package/components/grid/grid.js +1 -1
- package/components/heatmap/heatmap.js +1 -1
- package/components/icon/icon.js +1 -1
- package/components/image/image.js +1 -1
- package/components/index.js +3 -0
- package/components/inline-message/inline-message.a2ui.json +143 -0
- package/components/inline-message/inline-message.class.js +169 -0
- package/components/inline-message/inline-message.css +75 -0
- package/components/inline-message/inline-message.d.ts +31 -0
- package/components/inline-message/inline-message.examples.md +19 -0
- package/components/inline-message/inline-message.js +17 -0
- package/components/inline-message/inline-message.test.js +203 -0
- package/components/inline-message/inline-message.yaml +205 -0
- package/components/input/input.css +1 -1
- package/components/input/input.js +1 -1
- package/components/input/input.yaml +5 -4
- package/components/inspector/inspector.js +1 -1
- package/components/integration-card/integration-card.js +1 -1
- package/components/kbd/kbd.js +1 -1
- package/components/link/link.js +1 -1
- package/components/list/list-item.yaml +2 -2
- package/components/list/list.js +1 -1
- package/components/list-window/list-window.js +1 -1
- package/components/loading-overlay/loading-overlay.a2ui.json +176 -0
- package/components/loading-overlay/loading-overlay.class.js +203 -0
- package/components/loading-overlay/loading-overlay.css +81 -0
- package/components/loading-overlay/loading-overlay.d.ts +24 -0
- package/components/loading-overlay/loading-overlay.examples.md +50 -0
- package/components/loading-overlay/loading-overlay.js +17 -0
- package/components/loading-overlay/loading-overlay.test.js +257 -0
- package/components/loading-overlay/loading-overlay.yaml +260 -0
- package/components/menu/menu-divider.yaml +1 -1
- package/components/menu/menu-item.yaml +1 -1
- package/components/menu/menu.a2ui.json +3 -0
- package/components/menu/menu.js +1 -1
- package/components/menu/menu.yaml +7 -0
- package/components/modal/{class.js → modal.class.js} +12 -1
- package/components/modal/modal.css +11 -1
- package/components/modal/modal.js +1 -1
- package/components/nav/nav.js +1 -1
- package/components/nav-group/nav-group.js +1 -1
- package/components/nav-item/nav-item.js +1 -1
- package/components/noodles/noodles.js +1 -1
- package/components/option-card/option-card.js +1 -1
- package/components/otp-input/otp-input.js +1 -1
- package/components/page/page.js +1 -1
- package/components/pagination/pagination.js +1 -1
- package/components/pane/pane.js +1 -1
- package/components/pipeline-status/pipeline-status.js +1 -1
- package/components/popover/popover.a2ui.json +8 -1
- package/components/popover/popover.js +1 -1
- package/components/popover/popover.yaml +14 -1
- package/components/progress/progress.js +1 -1
- package/components/progress-row/progress-row.js +1 -1
- package/components/radio/radio.js +1 -1
- package/components/range/range.js +1 -1
- package/components/rating/rating.js +1 -1
- package/components/richtext/richtext.js +1 -1
- package/components/row/row.js +1 -1
- package/components/search/search.js +1 -1
- package/components/segment/segment.js +1 -1
- package/components/segmented/segmented.js +1 -1
- package/components/select/select.a2ui.json +58 -4
- package/components/select/{class.js → select.class.js} +415 -6
- package/components/select/select.css +158 -0
- package/components/select/select.d.ts +31 -1
- package/components/select/select.js +1 -1
- package/components/select/select.test.js +202 -0
- package/components/select/select.yaml +126 -5
- package/components/skeleton/skeleton.js +1 -1
- package/components/slider/slider.js +1 -1
- package/components/spinner/spinner.a2ui.json +3 -2
- package/components/spinner/{class.js → spinner.class.js} +33 -3
- package/components/spinner/spinner.css +91 -35
- package/components/spinner/spinner.d.ts +2 -2
- package/components/spinner/spinner.js +1 -1
- package/components/spinner/spinner.test.js +49 -11
- package/components/spinner/spinner.yaml +9 -1
- package/components/stack/stack.js +1 -1
- package/components/step-progress/step-progress.js +1 -1
- package/components/stepper/stepper-item.yaml +1 -1
- package/components/stepper/stepper.js +1 -1
- package/components/stream/stream.js +1 -1
- package/components/swatch/swatch.js +1 -1
- package/components/swiper/swiper.js +1 -1
- package/components/switch/switch.js +1 -1
- package/components/table/table.css +1 -1
- package/components/table/table.js +1 -1
- package/components/table-toolbar/{class.js → table-toolbar.class.js} +1 -1
- package/components/table-toolbar/table-toolbar.js +1 -1
- package/components/tabs/tab.yaml +2 -2
- package/components/tabs/tabs.js +1 -1
- package/components/tag/tag.js +1 -1
- package/components/tags-input/tags-input.a2ui.json +337 -0
- package/components/tags-input/tags-input.class.js +776 -0
- package/components/tags-input/tags-input.css +201 -0
- package/components/tags-input/tags-input.d.ts +120 -0
- package/components/tags-input/tags-input.examples.md +92 -0
- package/components/tags-input/tags-input.js +17 -0
- package/components/tags-input/tags-input.test.js +368 -0
- package/components/tags-input/tags-input.yaml +367 -0
- package/components/text/text.js +1 -1
- package/components/textarea/textarea.a2ui.json +1 -1
- package/components/textarea/textarea.js +1 -1
- package/components/textarea/textarea.yaml +11 -8
- package/components/time-picker/time-picker.js +1 -1
- package/components/timeline/timeline-item.yaml +2 -2
- package/components/timeline/{class.js → timeline.class.js} +1 -1
- package/components/timeline/timeline.js +1 -1
- package/components/toast/toast.js +1 -1
- package/components/toggle-group/toggle-group.js +1 -1
- package/components/toggle-group/toggle-option.yaml +1 -1
- package/components/toggle-scheme/toggle-scheme.js +1 -1
- package/components/toolbar/toolbar-group.yaml +1 -1
- package/components/toolbar/toolbar.js +1 -1
- package/components/tooltip/tooltip.js +1 -1
- package/components/tree/tree-item.yaml +1 -1
- package/components/tree/tree.js +1 -1
- package/components/upload/upload.js +1 -1
- package/dist/web-components.min.css +1 -1
- package/dist/web-components.min.js +111 -90
- package/package.json +3 -3
- package/styles/components.css +3 -0
- /package/components/accordion/{class.js → accordion.class.js} +0 -0
- /package/components/action-list/{class.js → action-list.class.js} +0 -0
- /package/components/agent-feedback-bar/{class.js → agent-feedback-bar.class.js} +0 -0
- /package/components/agent-questions/{class.js → agent-questions.class.js} +0 -0
- /package/components/agent-reasoning/{class.js → agent-reasoning.class.js} +0 -0
- /package/components/agent-suggestions/{class.js → agent-suggestions.class.js} +0 -0
- /package/components/avatar/{class.js → avatar.class.js} +0 -0
- /package/components/badge/{class.js → badge.class.js} +0 -0
- /package/components/block/{class.js → block.class.js} +0 -0
- /package/components/breadcrumb/{class.js → breadcrumb.class.js} +0 -0
- /package/components/button/{class.js → button.class.js} +0 -0
- /package/components/calendar-picker/{class.js → calendar-picker.class.js} +0 -0
- /package/components/card/{class.js → card.class.js} +0 -0
- /package/components/chart/{class.js → chart.class.js} +0 -0
- /package/components/chart-legend/{class.js → chart-legend.class.js} +0 -0
- /package/components/chat-thread/{class.js → chat-thread.class.js} +0 -0
- /package/components/check/{class.js → check.class.js} +0 -0
- /package/components/code/{class.js → code.class.js} +0 -0
- /package/components/col/{class.js → col.class.js} +0 -0
- /package/components/color-input/{class.js → color-input.class.js} +0 -0
- /package/components/color-picker/{class.js → color-picker.class.js} +0 -0
- /package/components/combobox/{class.js → combobox.class.js} +0 -0
- /package/components/command/{class.js → command.class.js} +0 -0
- /package/components/demo-toggle/{class.js → demo-toggle.class.js} +0 -0
- /package/components/description-list/{class.js → description-list.class.js} +0 -0
- /package/components/divider/{class.js → divider.class.js} +0 -0
- /package/components/drawer/{class.js → drawer.class.js} +0 -0
- /package/components/embed/{class.js → embed.class.js} +0 -0
- /package/components/empty-state/{class.js → empty-state.class.js} +0 -0
- /package/components/feed/{class.js → feed.class.js} +0 -0
- /package/components/field/{class.js → field.class.js} +0 -0
- /package/components/fields/{class.js → fields.class.js} +0 -0
- /package/components/grid/{class.js → grid.class.js} +0 -0
- /package/components/heatmap/{class.js → heatmap.class.js} +0 -0
- /package/components/icon/{class.js → icon.class.js} +0 -0
- /package/components/image/{class.js → image.class.js} +0 -0
- /package/components/input/{class.js → input.class.js} +0 -0
- /package/components/inspector/{class.js → inspector.class.js} +0 -0
- /package/components/integration-card/{class.js → integration-card.class.js} +0 -0
- /package/components/kbd/{class.js → kbd.class.js} +0 -0
- /package/components/link/{class.js → link.class.js} +0 -0
- /package/components/list/{class.js → list.class.js} +0 -0
- /package/components/list-window/{class.js → list-window.class.js} +0 -0
- /package/components/menu/{class.js → menu.class.js} +0 -0
- /package/components/nav/{class.js → nav.class.js} +0 -0
- /package/components/nav-group/{class.js → nav-group.class.js} +0 -0
- /package/components/nav-item/{class.js → nav-item.class.js} +0 -0
- /package/components/noodles/{class.js → noodles.class.js} +0 -0
- /package/components/option-card/{class.js → option-card.class.js} +0 -0
- /package/components/otp-input/{class.js → otp-input.class.js} +0 -0
- /package/components/page/{class.js → page.class.js} +0 -0
- /package/components/pagination/{class.js → pagination.class.js} +0 -0
- /package/components/pane/{class.js → pane.class.js} +0 -0
- /package/components/pipeline-status/{class.js → pipeline-status.class.js} +0 -0
- /package/components/popover/{class.js → popover.class.js} +0 -0
- /package/components/progress/{class.js → progress.class.js} +0 -0
- /package/components/progress-row/{class.js → progress-row.class.js} +0 -0
- /package/components/radio/{class.js → radio.class.js} +0 -0
- /package/components/range/{class.js → range.class.js} +0 -0
- /package/components/rating/{class.js → rating.class.js} +0 -0
- /package/components/richtext/{class.js → richtext.class.js} +0 -0
- /package/components/row/{class.js → row.class.js} +0 -0
- /package/components/search/{class.js → search.class.js} +0 -0
- /package/components/segment/{class.js → segment.class.js} +0 -0
- /package/components/segmented/{class.js → segmented.class.js} +0 -0
- /package/components/skeleton/{class.js → skeleton.class.js} +0 -0
- /package/components/slider/{class.js → slider.class.js} +0 -0
- /package/components/stack/{class.js → stack.class.js} +0 -0
- /package/components/step-progress/{class.js → step-progress.class.js} +0 -0
- /package/components/stepper/{class.js → stepper.class.js} +0 -0
- /package/components/stream/{class.js → stream.class.js} +0 -0
- /package/components/swatch/{class.js → swatch.class.js} +0 -0
- /package/components/swiper/{class.js → swiper.class.js} +0 -0
- /package/components/switch/{class.js → switch.class.js} +0 -0
- /package/components/table/{class.js → table.class.js} +0 -0
- /package/components/tabs/{class.js → tabs.class.js} +0 -0
- /package/components/tag/{class.js → tag.class.js} +0 -0
- /package/components/text/{class.js → text.class.js} +0 -0
- /package/components/textarea/{class.js → textarea.class.js} +0 -0
- /package/components/time-picker/{class.js → time-picker.class.js} +0 -0
- /package/components/toast/{class.js → toast.class.js} +0 -0
- /package/components/toggle-group/{class.js → toggle-group.class.js} +0 -0
- /package/components/toggle-scheme/{class.js → toggle-scheme.class.js} +0 -0
- /package/components/toolbar/{class.js → toolbar.class.js} +0 -0
- /package/components/tooltip/{class.js → tooltip.class.js} +0 -0
- /package/components/tree/{class.js → tree.class.js} +0 -0
- /package/components/upload/{class.js → upload.class.js} +0 -0
|
@@ -0,0 +1,337 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://adiaui.dev/a2ui/v0_9/components/TagsInput.json",
|
|
4
|
+
"title": "TagsInput",
|
|
5
|
+
"description": "Free-form token input — type a value, press Enter (or the configured\ndelimiter) to commit it as a chip; Backspace from the empty inline\ninput removes the last chip. Distinct from <select-ui multiple>\n(SPEC-040), which is constrained to a fixed option list — tags-input\nis for OPEN sets (labels, email recipients, keyword inputs). Per\nADR-0025 the inline editor is a contenteditable surface (NO native\n`<input>` wrap). Form-bearing via UIFormElement + ElementInternals:\nthe form value is a JSON-serialized string array under `[name]`.\nEach rendered chip is a `<tag-ui removable>`; the `remove` event\ndelegates back to the host. Optional autocompletion: when\n`.suggestions` is non-empty, a popover renders below the field and\nthe host announces as a combobox per WAI-APG.\n",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"allOf": [
|
|
8
|
+
{
|
|
9
|
+
"$ref": "common_types.json#/$defs/ComponentCommon"
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
"$ref": "common_types.json#/$defs/CatalogComponentCommon"
|
|
13
|
+
}
|
|
14
|
+
],
|
|
15
|
+
"properties": {
|
|
16
|
+
"required": {
|
|
17
|
+
"description": "Required for form validation. Empty array fails `:invalid`.",
|
|
18
|
+
"type": "boolean",
|
|
19
|
+
"default": false
|
|
20
|
+
},
|
|
21
|
+
"component": {
|
|
22
|
+
"const": "TagsInput"
|
|
23
|
+
},
|
|
24
|
+
"delimiter": {
|
|
25
|
+
"description": "Inline character that commits the typed value as a chip. The\nsentinel `enter` disables in-line commit — only the Enter key\n(or programmatic `addToken`) commits. Default is `,`.",
|
|
26
|
+
"type": "string",
|
|
27
|
+
"default": ","
|
|
28
|
+
},
|
|
29
|
+
"disabled": {
|
|
30
|
+
"description": "Block all interaction; dim the field.",
|
|
31
|
+
"type": "boolean",
|
|
32
|
+
"default": false
|
|
33
|
+
},
|
|
34
|
+
"max": {
|
|
35
|
+
"description": "Maximum number of tokens. `0` (default) means unlimited.",
|
|
36
|
+
"type": "number",
|
|
37
|
+
"default": 0
|
|
38
|
+
},
|
|
39
|
+
"maxLength": {
|
|
40
|
+
"description": "Maximum per-token character count. `0` (default) means unlimited.",
|
|
41
|
+
"type": "number",
|
|
42
|
+
"default": 0
|
|
43
|
+
},
|
|
44
|
+
"min": {
|
|
45
|
+
"description": "Minimum required tokens for form validity.",
|
|
46
|
+
"type": "number",
|
|
47
|
+
"default": 0
|
|
48
|
+
},
|
|
49
|
+
"minLength": {
|
|
50
|
+
"description": "Minimum per-token character count after `transform` is applied.",
|
|
51
|
+
"type": "number",
|
|
52
|
+
"default": 1
|
|
53
|
+
},
|
|
54
|
+
"name": {
|
|
55
|
+
"description": "Form field name. Serializes the token list as JSON under this key.",
|
|
56
|
+
"type": "string",
|
|
57
|
+
"default": ""
|
|
58
|
+
},
|
|
59
|
+
"pasteSplit": {
|
|
60
|
+
"description": "Regex character-class fragment matched against pasted text to\nsplit it into multiple tokens. Default `,\\n` splits on commas\nand newlines. Use `\"\"` to disable paste-splitting entirely.",
|
|
61
|
+
"type": "string",
|
|
62
|
+
"default": ",\n"
|
|
63
|
+
},
|
|
64
|
+
"placeholder": {
|
|
65
|
+
"description": "Placeholder text for the inline input when no chips are committed.",
|
|
66
|
+
"type": "string",
|
|
67
|
+
"default": "Add tag…"
|
|
68
|
+
},
|
|
69
|
+
"readonly": {
|
|
70
|
+
"description": "Block edits; allow inspection (chips render without remove buttons).",
|
|
71
|
+
"type": "boolean",
|
|
72
|
+
"default": false
|
|
73
|
+
},
|
|
74
|
+
"size": {
|
|
75
|
+
"description": "Sizing scale via universal `[size]` attribute system. Matches\nInput + Combobox sizing tokens so a TagsInput rendered alongside\neither feels coherent in a form row.",
|
|
76
|
+
"type": "string",
|
|
77
|
+
"enum": [
|
|
78
|
+
"sm",
|
|
79
|
+
"md",
|
|
80
|
+
"lg"
|
|
81
|
+
],
|
|
82
|
+
"default": "md"
|
|
83
|
+
},
|
|
84
|
+
"suggestions": {
|
|
85
|
+
"description": "Optional autocomplete strings rendered in a popover below the\nfield. Suggestions are hints, not gates — the typed value still\nwins on commit. JS property only (array reflection skipped).",
|
|
86
|
+
"$ref": "common_types.json#/$defs/DynamicStringList"
|
|
87
|
+
},
|
|
88
|
+
"transform": {
|
|
89
|
+
"description": "Normalize tokens on commit. `lowercase` lowercases, `trim` strips\nleading + trailing whitespace, `strip-spaces` removes all\nwhitespace, `\"\"` (default) preserves the typed value.",
|
|
90
|
+
"type": "string",
|
|
91
|
+
"enum": [
|
|
92
|
+
"",
|
|
93
|
+
"lowercase",
|
|
94
|
+
"trim",
|
|
95
|
+
"strip-spaces"
|
|
96
|
+
],
|
|
97
|
+
"default": ""
|
|
98
|
+
},
|
|
99
|
+
"unique": {
|
|
100
|
+
"description": "Reject duplicate tokens silently (no `invalid` event for accidental dups).",
|
|
101
|
+
"type": "boolean",
|
|
102
|
+
"default": true
|
|
103
|
+
},
|
|
104
|
+
"validateFn": {
|
|
105
|
+
"description": "Per-token validator. Sync `(value, index) => boolean` rejects\nfalse synchronously; async `(value, index) => Promise<boolean>`\nflips the host into `[validating]` while pending. JS property\nonly — not serializable in A2UI JSON; wire post-mount.",
|
|
106
|
+
"type": "object",
|
|
107
|
+
"default": null
|
|
108
|
+
},
|
|
109
|
+
"value": {
|
|
110
|
+
"description": "Current token list (string array). Setting `.value = ['a','b']`\nreplaces the rendered chips. Reflection skipped — array values\ndo not round-trip through attribute strings.",
|
|
111
|
+
"$ref": "common_types.json#/$defs/DynamicStringList"
|
|
112
|
+
}
|
|
113
|
+
},
|
|
114
|
+
"required": [
|
|
115
|
+
"component"
|
|
116
|
+
],
|
|
117
|
+
"unevaluatedProperties": false,
|
|
118
|
+
"x-adiaui": {
|
|
119
|
+
"anti_patterns": [
|
|
120
|
+
{
|
|
121
|
+
"fix": "{\"component\": \"Select\", \"multiple\": true, \"options\": [{\"id\": \"a\", \"label\": \"A\"}]}\n",
|
|
122
|
+
"why": "TagsInput does NOT accept `options`. It is the OPEN-set primitive — any\ntyped string is valid. For closed option lists, use the multi-select\nprimitive with `multiple: true`.\n",
|
|
123
|
+
"wrong": "{\"component\": \"TagsInput\", \"options\": [{\"id\": \"a\", \"label\": \"A\"}]}\n"
|
|
124
|
+
},
|
|
125
|
+
{
|
|
126
|
+
"fix": "{\"component\": \"TagsInput\", \"value\": [\"bug\", \"high-priority\"]}\n",
|
|
127
|
+
"why": "Comma-separated string is invalid for `value`. The contract requires\na string array.\n",
|
|
128
|
+
"wrong": "{\"component\": \"TagsInput\", \"value\": \"bug,high-priority\"}\n"
|
|
129
|
+
},
|
|
130
|
+
{
|
|
131
|
+
"fix": "{\"component\": \"TagsInput\", \"value\": [\"Tag 1\"]}\n",
|
|
132
|
+
"why": "Chips are rendered automatically from `value`. Slotting Tag children\ndecouples the rendered DOM from the form value and breaks Backspace\nremoval + the `change` event payload.\n",
|
|
133
|
+
"wrong": "{\"component\": \"TagsInput\", \"children\": [\n {\"component\": \"Tag\", \"text\": \"Tag 1\"}\n]}\n"
|
|
134
|
+
}
|
|
135
|
+
],
|
|
136
|
+
"category": "input",
|
|
137
|
+
"composes": [
|
|
138
|
+
"tag-ui",
|
|
139
|
+
"icon-ui"
|
|
140
|
+
],
|
|
141
|
+
"events": {
|
|
142
|
+
"change": {
|
|
143
|
+
"description": "Fired after `value` changes (token added or removed).",
|
|
144
|
+
"detail": {
|
|
145
|
+
"added": {
|
|
146
|
+
"description": "Tokens added by this change (`[]` when only removals occurred).",
|
|
147
|
+
"type": "array"
|
|
148
|
+
},
|
|
149
|
+
"removed": {
|
|
150
|
+
"description": "Tokens removed by this change (`[]` when only additions occurred).",
|
|
151
|
+
"type": "array"
|
|
152
|
+
},
|
|
153
|
+
"value": {
|
|
154
|
+
"description": "Current token list (string array).",
|
|
155
|
+
"type": "array"
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
},
|
|
159
|
+
"commit": {
|
|
160
|
+
"description": "Fired immediately before a token is committed. Call\n`event.preventDefault()` to reject the candidate token.",
|
|
161
|
+
"detail": {
|
|
162
|
+
"accepted": {
|
|
163
|
+
"description": "True unless the consumer calls `preventDefault()`.",
|
|
164
|
+
"type": "boolean"
|
|
165
|
+
},
|
|
166
|
+
"value": {
|
|
167
|
+
"description": "Candidate token text (post-transform).",
|
|
168
|
+
"type": "string"
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
},
|
|
172
|
+
"input": {
|
|
173
|
+
"description": "Fired on each keystroke in the inline input (pre-commit).",
|
|
174
|
+
"detail": {
|
|
175
|
+
"query": {
|
|
176
|
+
"description": "Current typed text in the inline input.",
|
|
177
|
+
"type": "string"
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
},
|
|
181
|
+
"invalid": {
|
|
182
|
+
"description": "Fired when a candidate token is rejected. Reasons cover all\nbuilt-in validators and the user-supplied `validateFn`.",
|
|
183
|
+
"detail": {
|
|
184
|
+
"reason": {
|
|
185
|
+
"description": "One of `duplicate` / `too-short` / `too-long` / `validator` / `max`.",
|
|
186
|
+
"type": "string"
|
|
187
|
+
},
|
|
188
|
+
"value": {
|
|
189
|
+
"description": "Rejected token text.",
|
|
190
|
+
"type": "string"
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
},
|
|
195
|
+
"examples": [
|
|
196
|
+
{
|
|
197
|
+
"description": "Label input with lowercase normalization + max 10 tags + 2 pre-committed values.",
|
|
198
|
+
"a2ui": "[\n {\"id\": \"root\", \"component\": \"Card\", \"children\": [\"sec\"]},\n {\"id\": \"sec\", \"component\": \"Section\", \"children\": [\"field\"]},\n {\n \"id\": \"field\",\n \"component\": \"Field\",\n \"label\": \"Labels\",\n \"children\": [\"tags\"]\n },\n {\n \"id\": \"tags\",\n \"component\": \"TagsInput\",\n \"name\": \"labels\",\n \"placeholder\": \"Add a label, press Enter\",\n \"transform\": \"lowercase\",\n \"max\": 10,\n \"value\": [\"bug\", \"high-priority\"]\n }\n]",
|
|
199
|
+
"name": "canonical-labels"
|
|
200
|
+
},
|
|
201
|
+
{
|
|
202
|
+
"description": "Recipient picker with Enter-only commit (commas are legal in display names).",
|
|
203
|
+
"a2ui": "[\n {\n \"id\": \"to\",\n \"component\": \"TagsInput\",\n \"name\": \"to\",\n \"placeholder\": \"Email…\",\n \"delimiter\": \"enter\",\n \"transform\": \"trim\"\n }\n]",
|
|
204
|
+
"name": "email-recipients"
|
|
205
|
+
}
|
|
206
|
+
],
|
|
207
|
+
"keywords": [
|
|
208
|
+
"tags-input",
|
|
209
|
+
"tag-input",
|
|
210
|
+
"token-input",
|
|
211
|
+
"chips-input",
|
|
212
|
+
"chip-input",
|
|
213
|
+
"labels",
|
|
214
|
+
"recipients",
|
|
215
|
+
"keywords",
|
|
216
|
+
"tags",
|
|
217
|
+
"email-input",
|
|
218
|
+
"multi-value-input"
|
|
219
|
+
],
|
|
220
|
+
"name": "UITagsInput",
|
|
221
|
+
"related": [
|
|
222
|
+
"tag",
|
|
223
|
+
"select",
|
|
224
|
+
"combobox",
|
|
225
|
+
"field",
|
|
226
|
+
"input"
|
|
227
|
+
],
|
|
228
|
+
"slots": {
|
|
229
|
+
"chip": {
|
|
230
|
+
"description": "Custom chip template — receives `{value, index}` per token.\nWhen absent, each token renders as a default\n`<tag-ui removable text=\"<value>\">`."
|
|
231
|
+
}
|
|
232
|
+
},
|
|
233
|
+
"states": [
|
|
234
|
+
{
|
|
235
|
+
"description": "No tokens; no typed text.",
|
|
236
|
+
"name": "idle"
|
|
237
|
+
},
|
|
238
|
+
{
|
|
239
|
+
"description": "One or more tokens committed.",
|
|
240
|
+
"attribute": "populated",
|
|
241
|
+
"name": "populated"
|
|
242
|
+
},
|
|
243
|
+
{
|
|
244
|
+
"description": "User is typing into the inline input.",
|
|
245
|
+
"attribute": "editing",
|
|
246
|
+
"name": "editing"
|
|
247
|
+
},
|
|
248
|
+
{
|
|
249
|
+
"description": "Suggestion popover is open.",
|
|
250
|
+
"attribute": "suggesting",
|
|
251
|
+
"name": "suggesting"
|
|
252
|
+
},
|
|
253
|
+
{
|
|
254
|
+
"description": "Async `validateFn` is in flight.",
|
|
255
|
+
"attribute": "validating",
|
|
256
|
+
"name": "validating"
|
|
257
|
+
},
|
|
258
|
+
{
|
|
259
|
+
"description": "Non-interactive; dimmed.",
|
|
260
|
+
"attribute": "disabled",
|
|
261
|
+
"name": "disabled"
|
|
262
|
+
},
|
|
263
|
+
{
|
|
264
|
+
"description": "Read-only; chips render without remove affordance.",
|
|
265
|
+
"attribute": "readonly",
|
|
266
|
+
"name": "readonly"
|
|
267
|
+
}
|
|
268
|
+
],
|
|
269
|
+
"status": "experimental",
|
|
270
|
+
"synonyms": {
|
|
271
|
+
"chips-input": [
|
|
272
|
+
"tags-input",
|
|
273
|
+
"chip-input",
|
|
274
|
+
"token-input"
|
|
275
|
+
],
|
|
276
|
+
"labels": [
|
|
277
|
+
"tags",
|
|
278
|
+
"tag-input",
|
|
279
|
+
"labels-input"
|
|
280
|
+
],
|
|
281
|
+
"recipients": [
|
|
282
|
+
"email-input",
|
|
283
|
+
"tags-input",
|
|
284
|
+
"to-field"
|
|
285
|
+
],
|
|
286
|
+
"tags-input": [
|
|
287
|
+
"tag-input",
|
|
288
|
+
"chip-input",
|
|
289
|
+
"token-input",
|
|
290
|
+
"tokenizer"
|
|
291
|
+
],
|
|
292
|
+
"token-input": [
|
|
293
|
+
"tags-input",
|
|
294
|
+
"chip-input",
|
|
295
|
+
"tokenizer"
|
|
296
|
+
]
|
|
297
|
+
},
|
|
298
|
+
"tag": "tags-input-ui",
|
|
299
|
+
"tokens": {
|
|
300
|
+
"--tags-input-bg": {
|
|
301
|
+
"description": "Host background color."
|
|
302
|
+
},
|
|
303
|
+
"--tags-input-border": {
|
|
304
|
+
"description": "Host border color (idle)."
|
|
305
|
+
},
|
|
306
|
+
"--tags-input-border-hover": {
|
|
307
|
+
"description": "Host border color on hover."
|
|
308
|
+
},
|
|
309
|
+
"--tags-input-chip-bg-invalid": {
|
|
310
|
+
"description": "Chip background color when a chip is marked invalid (validator rejection echo)."
|
|
311
|
+
},
|
|
312
|
+
"--tags-input-fg": {
|
|
313
|
+
"description": "Host foreground (typed-text color)."
|
|
314
|
+
},
|
|
315
|
+
"--tags-input-focus-ring": {
|
|
316
|
+
"description": "Focus-ring box-shadow when the host is focus-within."
|
|
317
|
+
},
|
|
318
|
+
"--tags-input-gap": {
|
|
319
|
+
"description": "Gap between chips and the inline input."
|
|
320
|
+
},
|
|
321
|
+
"--tags-input-placeholder-fg": {
|
|
322
|
+
"description": "Placeholder color for the empty inline input."
|
|
323
|
+
},
|
|
324
|
+
"--tags-input-px": {
|
|
325
|
+
"description": "Horizontal padding inside the chip-cluster wrapper."
|
|
326
|
+
},
|
|
327
|
+
"--tags-input-py": {
|
|
328
|
+
"description": "Vertical padding inside the chip-cluster wrapper."
|
|
329
|
+
},
|
|
330
|
+
"--tags-input-radius": {
|
|
331
|
+
"description": "Host border radius."
|
|
332
|
+
}
|
|
333
|
+
},
|
|
334
|
+
"traits": [],
|
|
335
|
+
"version": 1
|
|
336
|
+
}
|
|
337
|
+
}
|