ionbase-ui 0.76.0 → 0.81.1
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/dist/components/Card.d.ts +61 -0
- package/dist/components/Card.d.ts.map +1 -0
- package/dist/components/Card.js +37 -0
- package/dist/components/Card.js.map +1 -0
- package/dist/components/CommandPalette.d.ts +76 -0
- package/dist/components/CommandPalette.d.ts.map +1 -0
- package/dist/components/CommandPalette.js +194 -0
- package/dist/components/CommandPalette.js.map +1 -0
- package/dist/components/DateField.d.ts +14 -0
- package/dist/components/DateField.d.ts.map +1 -1
- package/dist/components/DateField.js +1 -1
- package/dist/components/DateField.js.map +1 -1
- package/dist/components/DatePicker.d.ts +1 -1
- package/dist/components/DatePicker.d.ts.map +1 -1
- package/dist/components/DatePicker.js +14 -6
- package/dist/components/DatePicker.js.map +1 -1
- package/dist/components/DateRangePicker.d.ts +1 -1
- package/dist/components/DateRangePicker.d.ts.map +1 -1
- package/dist/components/DateRangePicker.js +14 -6
- package/dist/components/DateRangePicker.js.map +1 -1
- package/dist/components/Kbd.d.ts +45 -0
- package/dist/components/Kbd.d.ts.map +1 -0
- package/dist/components/Kbd.js +45 -0
- package/dist/components/Kbd.js.map +1 -0
- package/dist/components/Table.d.ts +18 -0
- package/dist/components/Table.d.ts.map +1 -1
- package/dist/components/Table.js +14 -3
- package/dist/components/Table.js.map +1 -1
- package/dist/components/TagGroup.d.ts +51 -0
- package/dist/components/TagGroup.d.ts.map +1 -0
- package/dist/components/TagGroup.js +84 -0
- package/dist/components/TagGroup.js.map +1 -0
- package/dist/components/TimeField.d.ts +72 -0
- package/dist/components/TimeField.d.ts.map +1 -0
- package/dist/components/TimeField.js +102 -0
- package/dist/components/TimeField.js.map +1 -0
- package/dist/components/index.d.ts +14 -1
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/index.js +6 -0
- package/dist/components/index.js.map +1 -1
- package/dist/components/iso-time.d.ts +23 -0
- package/dist/components/iso-time.d.ts.map +1 -0
- package/dist/components/iso-time.js +34 -0
- package/dist/components/iso-time.js.map +1 -0
- package/dist/components/shortcut.d.ts +19 -0
- package/dist/components/shortcut.d.ts.map +1 -0
- package/dist/components/shortcut.js +122 -0
- package/dist/components/shortcut.js.map +1 -0
- package/dist/components/use-table-sort.d.ts +38 -0
- package/dist/components/use-table-sort.d.ts.map +1 -0
- package/dist/components/use-table-sort.js +33 -0
- package/dist/components/use-table-sort.js.map +1 -0
- package/dist/figma-descriptions.json +103 -68
- package/dist/figma-map.json +343 -2
- package/dist/meta/Card.json +153 -0
- package/dist/meta/Checkbox.json +2 -2
- package/dist/meta/CommandPalette.json +178 -0
- package/dist/meta/DatePicker.json +5 -4
- package/dist/meta/DateRangePicker.json +3 -2
- package/dist/meta/Kbd.json +97 -0
- package/dist/meta/Radio.json +2 -2
- package/dist/meta/RadioGroup.json +2 -2
- package/dist/meta/Table.json +4 -1
- package/dist/meta/TableBody.json +3 -0
- package/dist/meta/TableCell.json +49 -5
- package/dist/meta/TableHead.json +3 -0
- package/dist/meta/TableRow.json +3 -0
- package/dist/meta/Tag.json +54 -0
- package/dist/meta/TagGroup.json +211 -0
- package/dist/meta/TimeField.json +224 -0
- package/dist/meta/Toggle.json +2 -2
- package/dist/meta/components.json +1014 -38
- package/dist/meta/contrast.json +1133 -6
- package/dist/meta/index.json +86 -12
- package/dist/meta/patterns/DataTable.json +27 -3
- package/dist/meta/patterns/PageShell.json +15 -2
- package/dist/meta/patterns/index.json +7 -3
- package/dist/styles/agent-activity.css +4 -2
- package/dist/styles/approval-gate.css +4 -3
- package/dist/styles/card.css +75 -0
- package/dist/styles/citation.css +4 -2
- package/dist/styles/command-palette.css +250 -0
- package/dist/styles/confidence-indicator.css +2 -2
- package/dist/styles/index.css +5 -0
- package/dist/styles/kbd.css +47 -0
- package/dist/styles/streaming-text.css +3 -2
- package/dist/styles/table.css +51 -0
- package/dist/styles/tag-group.css +172 -0
- package/dist/styles/time-field.css +31 -0
- package/llms.txt +2 -2
- package/package.json +1 -1
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "TagGroup",
|
|
3
|
+
"source": "src/components/TagGroup.tsx",
|
|
4
|
+
"propsType": "TagGroupProps",
|
|
5
|
+
"description": "TagGroup — labels a person applied and can take away: active filters, the\nlabels on a record, the recipients of a message.\n\nNOT A BADGE\n\nA Badge reports a state the system decided — Failing, Paid. A Tag is a\nchoice someone made, which is why it is removable and why it is neutral:\ncolouring tags by intent would make \"Status: Failing\" as a filter look like\nthe agent is failing.\n\nWHAT REACT ARIA GIVES IT\n\n`useTagGroup` makes the group one tab stop with arrow keys between tags, a\nremove button per tag named \"Remove <tag>\", and Delete / Backspace to remove\nthe focused one. When a tag goes, focus moves to its neighbour. The one case\nReact Aria leaves open is the last tag: focus would fall to <body>, so the\ngroup takes it instead and reads out `emptyLabel`.\n\nNo selection: a chip that toggles on and off is a SegmentedControl or a\nCheckbox, which already say \"selected\" the way a screen reader expects.",
|
|
6
|
+
"import": "import { TagGroup } from 'ionbase-ui';",
|
|
7
|
+
"status": "stable",
|
|
8
|
+
"since": "0.79.0",
|
|
9
|
+
"summary": "Labels a person applied and can take away: active filters, the labels on a record, recipients. Neutral and removable, unlike Badge.",
|
|
10
|
+
"useWhen": [
|
|
11
|
+
"showing which filters are applied, each removable on its own",
|
|
12
|
+
"the labels or categories someone attached to a record",
|
|
13
|
+
"a set of chosen values — recipients, assignees — shown after they are picked"
|
|
14
|
+
],
|
|
15
|
+
"useInstead": [
|
|
16
|
+
{
|
|
17
|
+
"when": "it is a status the system reports — Failing, Paid, Draft",
|
|
18
|
+
"use": "Badge"
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
"when": "the chips toggle on and off rather than being removed",
|
|
22
|
+
"use": "SegmentedControl"
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"when": "several options can be switched on at once from a fixed list",
|
|
26
|
+
"use": "Checkbox"
|
|
27
|
+
}
|
|
28
|
+
],
|
|
29
|
+
"composition": {
|
|
30
|
+
"order": [
|
|
31
|
+
"TagGroup",
|
|
32
|
+
"Tag"
|
|
33
|
+
],
|
|
34
|
+
"note": "Tag is react-stately's collection Item: `key` identifies it and is what `onRemove` hands back, children are its label. Pass `items` and a render function for a list that changes.",
|
|
35
|
+
"example": "<TagGroup label=\"Active filters\" onRemove={(keys) => drop(keys)}><Tag key=\"status\">Status: Failing</Tag><Tag key=\"team\">Team: Finance</Tag></TagGroup>"
|
|
36
|
+
},
|
|
37
|
+
"variants": {
|
|
38
|
+
"size": {
|
|
39
|
+
"sm": {
|
|
40
|
+
"use": "the default — filter rows, table toolbars, dense record headers"
|
|
41
|
+
},
|
|
42
|
+
"md": {
|
|
43
|
+
"use": "a group that is the main content of its area, or sits beside md controls"
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
},
|
|
47
|
+
"a11y": {
|
|
48
|
+
"guarantees": [
|
|
49
|
+
"the group is one tab stop; arrow keys move between tags",
|
|
50
|
+
"each remove button is named \"Remove\" plus the tag's label, so a screen reader hears which one",
|
|
51
|
+
"Delete or Backspace on a focused tag removes it, and focus moves to its neighbour",
|
|
52
|
+
"removing the last tag moves focus to the group, which reads `emptyLabel`, instead of dropping it to the page"
|
|
53
|
+
],
|
|
54
|
+
"requires": [
|
|
55
|
+
"a `label` or `aria-label` — it names the group, so \"Remove Finance\" is heard as a filter being removed",
|
|
56
|
+
"`textValue` on a Tag whose children are not plain text",
|
|
57
|
+
"`onRemove` to drop the keys from your own list; the group removes nothing itself"
|
|
58
|
+
],
|
|
59
|
+
"notes": [
|
|
60
|
+
"No selection. A chip that toggles is a SegmentedControl or a Checkbox, which already announce \"selected\" the way screen readers expect."
|
|
61
|
+
]
|
|
62
|
+
},
|
|
63
|
+
"antiPatterns": [
|
|
64
|
+
{
|
|
65
|
+
"dont": "using a TagGroup for statuses",
|
|
66
|
+
"why": "tags are neutral and removable; a status is neither — use Badge"
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
"dont": "`onRemove` that does not remove the tag",
|
|
70
|
+
"why": "the button says \"Remove\", focus moves on, and the tag is still there — the one thing the control promised did not happen"
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
"dont": "a filter row with no way to clear everything at once",
|
|
74
|
+
"why": "removing six filters one by one is six targets; pair the group with a \"Clear filters\" Button"
|
|
75
|
+
}
|
|
76
|
+
],
|
|
77
|
+
"stylesheet": "src/styles/tag-group.css",
|
|
78
|
+
"tokens": [
|
|
79
|
+
"--border-disabled",
|
|
80
|
+
"--border-subtle",
|
|
81
|
+
"--border-width-default",
|
|
82
|
+
"--border-width-thick",
|
|
83
|
+
"--font-family-sans",
|
|
84
|
+
"--font-weight-medium",
|
|
85
|
+
"--icon-default",
|
|
86
|
+
"--icon-disabled",
|
|
87
|
+
"--icon-secondary",
|
|
88
|
+
"--icon-size-2xs",
|
|
89
|
+
"--ion-duration-base",
|
|
90
|
+
"--ion-ease-out",
|
|
91
|
+
"--radius-md",
|
|
92
|
+
"--radius-sm",
|
|
93
|
+
"--radius-xs",
|
|
94
|
+
"--ring-focus",
|
|
95
|
+
"--spacing-12",
|
|
96
|
+
"--spacing-16",
|
|
97
|
+
"--spacing-20",
|
|
98
|
+
"--spacing-24",
|
|
99
|
+
"--spacing-32",
|
|
100
|
+
"--spacing-4",
|
|
101
|
+
"--spacing-6",
|
|
102
|
+
"--spacing-8",
|
|
103
|
+
"--surface-disabled",
|
|
104
|
+
"--surface-hover",
|
|
105
|
+
"--surface-subtle",
|
|
106
|
+
"--text-default",
|
|
107
|
+
"--text-disabled",
|
|
108
|
+
"--text-secondary",
|
|
109
|
+
"--text-tertiary",
|
|
110
|
+
"--type-body",
|
|
111
|
+
"--type-body-line-height",
|
|
112
|
+
"--type-body-sm",
|
|
113
|
+
"--type-body-sm-line-height"
|
|
114
|
+
],
|
|
115
|
+
"props": {
|
|
116
|
+
"onRemove": {
|
|
117
|
+
"type": "((keys: Set<Key>) => void) | undefined",
|
|
118
|
+
"required": false,
|
|
119
|
+
"origin": "own",
|
|
120
|
+
"description": "Called with the keys of the tags to remove — from a tag's × button, or\nDelete / Backspace on a focused tag. Pass it and every tag shows a remove\nbutton; leave it out and the tags are read-only labels. The group does\nnot remove anything itself: drop the keys from your own list."
|
|
121
|
+
},
|
|
122
|
+
"size": {
|
|
123
|
+
"type": "TagGroupSize | undefined",
|
|
124
|
+
"required": false,
|
|
125
|
+
"origin": "own",
|
|
126
|
+
"description": "Figma's `Size`. Set once here, so every tag in a group matches.",
|
|
127
|
+
"values": [
|
|
128
|
+
"sm",
|
|
129
|
+
"md"
|
|
130
|
+
],
|
|
131
|
+
"default": "sm"
|
|
132
|
+
},
|
|
133
|
+
"emptyLabel": {
|
|
134
|
+
"type": "React.ReactNode",
|
|
135
|
+
"required": false,
|
|
136
|
+
"origin": "own",
|
|
137
|
+
"description": "Shown in place of the tags when there are none — \"No filters applied\".\nWithout it an empty group renders nothing but its label."
|
|
138
|
+
},
|
|
139
|
+
"className": {
|
|
140
|
+
"type": "string | undefined",
|
|
141
|
+
"required": false,
|
|
142
|
+
"origin": "own"
|
|
143
|
+
},
|
|
144
|
+
"id": {
|
|
145
|
+
"type": "string | undefined",
|
|
146
|
+
"required": false,
|
|
147
|
+
"origin": "aria",
|
|
148
|
+
"description": "The element's unique identifier. See\n[MDN](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/id)."
|
|
149
|
+
},
|
|
150
|
+
"aria-describedby": {
|
|
151
|
+
"type": "string | undefined",
|
|
152
|
+
"required": false,
|
|
153
|
+
"origin": "aria",
|
|
154
|
+
"description": "Identifies the element (or elements) that describes the object."
|
|
155
|
+
},
|
|
156
|
+
"aria-details": {
|
|
157
|
+
"type": "string | undefined",
|
|
158
|
+
"required": false,
|
|
159
|
+
"origin": "aria",
|
|
160
|
+
"description": "Identifies the element (or elements) that provide a detailed, extended description for the\nobject."
|
|
161
|
+
},
|
|
162
|
+
"aria-label": {
|
|
163
|
+
"type": "string | undefined",
|
|
164
|
+
"required": false,
|
|
165
|
+
"origin": "aria",
|
|
166
|
+
"description": "Defines a string value that labels the current element."
|
|
167
|
+
},
|
|
168
|
+
"aria-labelledby": {
|
|
169
|
+
"type": "string | undefined",
|
|
170
|
+
"required": false,
|
|
171
|
+
"origin": "aria",
|
|
172
|
+
"description": "Identifies the element (or elements) that labels the current element."
|
|
173
|
+
},
|
|
174
|
+
"children": {
|
|
175
|
+
"type": "CollectionChildren<T>",
|
|
176
|
+
"required": true,
|
|
177
|
+
"origin": "aria",
|
|
178
|
+
"description": "The contents of the collection."
|
|
179
|
+
},
|
|
180
|
+
"description": {
|
|
181
|
+
"type": "ReactNode",
|
|
182
|
+
"required": false,
|
|
183
|
+
"origin": "aria",
|
|
184
|
+
"description": "A description for the field. Provides a hint such as specific requirements for what to choose."
|
|
185
|
+
},
|
|
186
|
+
"label": {
|
|
187
|
+
"type": "ReactNode",
|
|
188
|
+
"required": false,
|
|
189
|
+
"origin": "aria",
|
|
190
|
+
"description": "The content to display as the label."
|
|
191
|
+
},
|
|
192
|
+
"items": {
|
|
193
|
+
"type": "Iterable<T> | undefined",
|
|
194
|
+
"required": false,
|
|
195
|
+
"origin": "aria",
|
|
196
|
+
"description": "Item objects in the collection."
|
|
197
|
+
},
|
|
198
|
+
"disabledKeys": {
|
|
199
|
+
"type": "Iterable<Key> | undefined",
|
|
200
|
+
"required": false,
|
|
201
|
+
"origin": "aria",
|
|
202
|
+
"description": "The item keys that are disabled. These items cannot be selected, focused, or otherwise\ninteracted with."
|
|
203
|
+
}
|
|
204
|
+
},
|
|
205
|
+
"propCounts": {
|
|
206
|
+
"own": 4,
|
|
207
|
+
"aria": 10,
|
|
208
|
+
"dom": 0,
|
|
209
|
+
"other": 0
|
|
210
|
+
}
|
|
211
|
+
}
|
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "TimeField",
|
|
3
|
+
"source": "src/components/TimeField.tsx",
|
|
4
|
+
"propsType": "TimeFieldProps",
|
|
5
|
+
"description": "TimeField — a time of day, typed into segments.\n\nDatePicker's text half, for times: hour, minute and, where the locale uses\none, AM/PM — each a spinbutton that takes digits or arrow keys. The order,\nthe separator and the 12 or 24-hour clock come from the reader's locale, so\n\"2:30 PM\" and \"14:30\" are the same field and the same value.\n\nWHY NOT A TEXT INPUT OR `<input type=\"time\">`\n\nFree text means guessing whether \"2:30\" is afternoon. The native control\ncannot be styled to match the other fields, and Safari's has no picker at\nall. Segments cannot hold a time that does not exist, and every browser\ndraws them the same.\n\nNo dropdown of times. A list of 96 quarter-hours is slower to scan than two\ndigits are to type, and it makes 09:07 impossible. Where only a few times\nare allowed, that is a Select, not a TimeField.",
|
|
6
|
+
"import": "import { TimeField } from 'ionbase-ui';",
|
|
7
|
+
"status": "stable",
|
|
8
|
+
"since": "0.80.0",
|
|
9
|
+
"summary": "A time of day typed into hour, minute and AM/PM segments in the reader's own format, taking and returning a 24-hour HH:MM string.",
|
|
10
|
+
"useWhen": [
|
|
11
|
+
"the user sets a time of day — a schedule, a reminder, the start of a window",
|
|
12
|
+
"any minute is allowed, so a list of choices would be long or would leave times out",
|
|
13
|
+
"beside a DatePicker when the value is a date and a time; the two sit side by side and share one box"
|
|
14
|
+
],
|
|
15
|
+
"useInstead": [
|
|
16
|
+
{
|
|
17
|
+
"when": "only a handful of times are allowed — delivery slots, office hours",
|
|
18
|
+
"use": "Select",
|
|
19
|
+
"why": "picking from four slots is a choice from a list, and a field that accepts any minute invites times the product will refuse"
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
"when": "the value is a duration — 30 minutes, 2 hours",
|
|
23
|
+
"use": "NumberInput",
|
|
24
|
+
"why": "a duration is an amount, not a time of day; 02:00 as a length reads as two in the morning"
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"when": "the value is a calendar date",
|
|
28
|
+
"use": "DatePicker"
|
|
29
|
+
}
|
|
30
|
+
],
|
|
31
|
+
"variants": {
|
|
32
|
+
"size": {
|
|
33
|
+
"sm": {
|
|
34
|
+
"use": "dense forms, table filters"
|
|
35
|
+
},
|
|
36
|
+
"md": {
|
|
37
|
+
"use": "the default"
|
|
38
|
+
},
|
|
39
|
+
"lg": {
|
|
40
|
+
"use": "prominent single-field forms"
|
|
41
|
+
}
|
|
42
|
+
},
|
|
43
|
+
"granularity": {
|
|
44
|
+
"hour": {
|
|
45
|
+
"use": "on-the-hour schedules — the minute segment is not shown"
|
|
46
|
+
},
|
|
47
|
+
"minute": {
|
|
48
|
+
"use": "the default — almost every time of day a person sets"
|
|
49
|
+
},
|
|
50
|
+
"second": {
|
|
51
|
+
"use": "logs and precise triggers; the value becomes HH:MM:SS"
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
},
|
|
55
|
+
"a11y": {
|
|
56
|
+
"guarantees": [
|
|
57
|
+
"each segment is a spinbutton that announces its own name, value and bounds — 'hour, 2, minimum 1, maximum 12' — and takes digits or arrow keys",
|
|
58
|
+
"each editable segment is its own tab stop, like DatePicker and the native time input; the separator is not",
|
|
59
|
+
"the 12 or 24-hour clock, the separator and the AM/PM wording come from the reader's locale, so '2:30 PM' and '14:30' are the same field and the same value",
|
|
60
|
+
"the segments sit in one labelled group, so the name is announced once on entry",
|
|
61
|
+
"a time that does not exist cannot be typed",
|
|
62
|
+
"a time outside `minValue`/`maxValue` turns the field invalid and names the bound in the reader's own format, without `isInvalid` — the value is kept, not silently clamped"
|
|
63
|
+
],
|
|
64
|
+
"requires": [
|
|
65
|
+
"`label`, or `aria-label` when no visible label is rendered",
|
|
66
|
+
"a `description` saying which timezone the time is in, whenever the reader could be in a different one from the thing being scheduled"
|
|
67
|
+
],
|
|
68
|
+
"notes": [
|
|
69
|
+
"`value` is a wall-clock time with no date and no zone. Keep the timezone as its own field or setting; a time pinned to a `Date` drifts an hour at every daylight-saving change.",
|
|
70
|
+
"The clock icon is decorative. There is no dropdown of times: two digits are faster to type than 96 quarter-hours are to scan, and a list makes 09:07 impossible."
|
|
71
|
+
]
|
|
72
|
+
},
|
|
73
|
+
"antiPatterns": [
|
|
74
|
+
{
|
|
75
|
+
"dont": "passing a Date, a timestamp or a locale-formatted string such as \"2:30 PM\" as `value`",
|
|
76
|
+
"why": "the value is 24-hour HH:MM. A malformed value throws with the prop name rather than rendering an empty field"
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
"dont": "forcing `hourCycle={12}` for everyone",
|
|
80
|
+
"why": "a reader whose locale uses 24 hours has to translate every value, which is the misreading the segments exist to prevent. Leave it to the locale"
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
"dont": "a schedule time with no timezone anywhere on the form",
|
|
84
|
+
"why": "\"09:00\" is nine o'clock somewhere; if the reader and the workspace are in different zones, they will each assume their own"
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
"dont": "using `minValue` and `maxValue` for a window that crosses midnight",
|
|
88
|
+
"why": "22:00 to 02:00 has a minimum later than its maximum, so every time is refused; validate the window yourself and set `isInvalid`"
|
|
89
|
+
}
|
|
90
|
+
],
|
|
91
|
+
"stylesheet": "src/styles/time-field.css",
|
|
92
|
+
"tokens": [],
|
|
93
|
+
"props": {
|
|
94
|
+
"label": {
|
|
95
|
+
"type": "React.ReactNode",
|
|
96
|
+
"required": false,
|
|
97
|
+
"origin": "own",
|
|
98
|
+
"description": "Field label. Required for a usable control — see `a11y.requires`."
|
|
99
|
+
},
|
|
100
|
+
"aria-label": {
|
|
101
|
+
"type": "string | undefined",
|
|
102
|
+
"required": false,
|
|
103
|
+
"origin": "own",
|
|
104
|
+
"description": "Names the field when there is no visible `label`."
|
|
105
|
+
},
|
|
106
|
+
"description": {
|
|
107
|
+
"type": "React.ReactNode",
|
|
108
|
+
"required": false,
|
|
109
|
+
"origin": "own",
|
|
110
|
+
"description": "Helper text below the field — \"In the workspace's timezone\"."
|
|
111
|
+
},
|
|
112
|
+
"errorMessage": {
|
|
113
|
+
"type": "React.ReactNode",
|
|
114
|
+
"required": false,
|
|
115
|
+
"origin": "own",
|
|
116
|
+
"description": "Replaces the helper text while the field is invalid — `isInvalid`, or its own bounds check."
|
|
117
|
+
},
|
|
118
|
+
"isInvalid": {
|
|
119
|
+
"type": "boolean | undefined",
|
|
120
|
+
"required": false,
|
|
121
|
+
"origin": "own"
|
|
122
|
+
},
|
|
123
|
+
"isDisabled": {
|
|
124
|
+
"type": "boolean | undefined",
|
|
125
|
+
"required": false,
|
|
126
|
+
"origin": "own"
|
|
127
|
+
},
|
|
128
|
+
"isReadOnly": {
|
|
129
|
+
"type": "boolean | undefined",
|
|
130
|
+
"required": false,
|
|
131
|
+
"origin": "own"
|
|
132
|
+
},
|
|
133
|
+
"isRequired": {
|
|
134
|
+
"type": "boolean | undefined",
|
|
135
|
+
"required": false,
|
|
136
|
+
"origin": "own"
|
|
137
|
+
},
|
|
138
|
+
"size": {
|
|
139
|
+
"type": "TimeFieldSize | undefined",
|
|
140
|
+
"required": false,
|
|
141
|
+
"origin": "own",
|
|
142
|
+
"description": "Matches Input's `Size` variant: Small, Medium, Large.",
|
|
143
|
+
"values": [
|
|
144
|
+
"sm",
|
|
145
|
+
"md",
|
|
146
|
+
"lg"
|
|
147
|
+
]
|
|
148
|
+
},
|
|
149
|
+
"value": {
|
|
150
|
+
"type": "string | null | undefined",
|
|
151
|
+
"required": false,
|
|
152
|
+
"origin": "own",
|
|
153
|
+
"description": "The time as `HH:MM` (or `HH:MM:SS`), 24-hour, whatever the reader sees.\n`null` means no time is chosen. A wall-clock reading — no date, no\ntimezone. A malformed value throws rather than rendering an empty field."
|
|
154
|
+
},
|
|
155
|
+
"defaultValue": {
|
|
156
|
+
"type": "string | undefined",
|
|
157
|
+
"required": false,
|
|
158
|
+
"origin": "own",
|
|
159
|
+
"description": "The initial time, for an uncontrolled field."
|
|
160
|
+
},
|
|
161
|
+
"onChange": {
|
|
162
|
+
"type": "((value: IsoTime | null) => void) | undefined",
|
|
163
|
+
"required": false,
|
|
164
|
+
"origin": "own",
|
|
165
|
+
"description": "Fires with `HH:MM` (`HH:MM:SS` at second granularity), or `null` when cleared."
|
|
166
|
+
},
|
|
167
|
+
"minValue": {
|
|
168
|
+
"type": "string | undefined",
|
|
169
|
+
"required": false,
|
|
170
|
+
"origin": "own",
|
|
171
|
+
"description": "Earliest allowed time, `HH:MM`. Later is not wrapped past midnight."
|
|
172
|
+
},
|
|
173
|
+
"maxValue": {
|
|
174
|
+
"type": "string | undefined",
|
|
175
|
+
"required": false,
|
|
176
|
+
"origin": "own",
|
|
177
|
+
"description": "Latest allowed time, `HH:MM`."
|
|
178
|
+
},
|
|
179
|
+
"granularity": {
|
|
180
|
+
"type": "TimeFieldGranularity | undefined",
|
|
181
|
+
"required": false,
|
|
182
|
+
"origin": "own",
|
|
183
|
+
"description": "Defaults to `minute`. `second` adds a seconds segment and value.",
|
|
184
|
+
"values": [
|
|
185
|
+
"hour",
|
|
186
|
+
"minute",
|
|
187
|
+
"second"
|
|
188
|
+
]
|
|
189
|
+
},
|
|
190
|
+
"hourCycle": {
|
|
191
|
+
"type": "12 | 24 | undefined",
|
|
192
|
+
"required": false,
|
|
193
|
+
"origin": "own",
|
|
194
|
+
"description": "12 or 24-hour display. Leave it out: the reader's locale already knows,\nand forcing 12-hour on a 24-hour reader is the misreading this field\nexists to prevent. The value is 24-hour either way."
|
|
195
|
+
},
|
|
196
|
+
"name": {
|
|
197
|
+
"type": "string | undefined",
|
|
198
|
+
"required": false,
|
|
199
|
+
"origin": "own",
|
|
200
|
+
"description": "Posts the value under this name, for an uncontrolled form."
|
|
201
|
+
},
|
|
202
|
+
"className": {
|
|
203
|
+
"type": "string | undefined",
|
|
204
|
+
"required": false,
|
|
205
|
+
"origin": "own"
|
|
206
|
+
},
|
|
207
|
+
"wrapperClassName": {
|
|
208
|
+
"type": "string | undefined",
|
|
209
|
+
"required": false,
|
|
210
|
+
"origin": "own"
|
|
211
|
+
},
|
|
212
|
+
"id": {
|
|
213
|
+
"type": "string | undefined",
|
|
214
|
+
"required": false,
|
|
215
|
+
"origin": "own"
|
|
216
|
+
}
|
|
217
|
+
},
|
|
218
|
+
"propCounts": {
|
|
219
|
+
"own": 20,
|
|
220
|
+
"aria": 0,
|
|
221
|
+
"dom": 0,
|
|
222
|
+
"other": 0
|
|
223
|
+
}
|
|
224
|
+
}
|