@aurodesignsystem-dev/auro-formkit 0.0.0-pr1581.0 → 0.0.0-pr1582.0
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/components/checkbox/demo/customize.min.js +1 -1
- package/components/checkbox/demo/getting-started.min.js +1 -1
- package/components/checkbox/demo/index.min.js +1 -1
- package/components/checkbox/dist/index.js +1 -1
- package/components/checkbox/dist/registered.js +1 -1
- package/components/combobox/demo/customize.min.js +15 -6
- package/components/combobox/demo/getting-started.min.js +15 -6
- package/components/combobox/demo/index.min.js +15 -6
- package/components/combobox/dist/index.js +15 -6
- package/components/combobox/dist/registered.js +15 -6
- package/components/counter/demo/customize.min.js +2 -2
- package/components/counter/demo/index.min.js +2 -2
- package/components/counter/dist/index.js +2 -2
- package/components/counter/dist/registered.js +2 -2
- package/components/datepicker/demo/customize.min.js +15 -6
- package/components/datepicker/demo/index.min.js +15 -6
- package/components/datepicker/dist/index.js +15 -6
- package/components/datepicker/dist/registered.js +15 -6
- package/components/dropdown/demo/customize.min.js +1 -1
- package/components/dropdown/demo/getting-started.min.js +14 -5
- package/components/dropdown/demo/index.min.js +1 -1
- package/components/dropdown/dist/index.js +1 -1
- package/components/dropdown/dist/registered.js +1 -1
- package/components/form/demo/customize.min.js +49 -22
- package/components/form/demo/getting-started.min.js +49 -22
- package/components/form/demo/index.min.js +49 -22
- package/components/form/demo/registerDemoDeps.min.js +49 -22
- package/components/input/demo/api.md +1 -1
- package/components/input/demo/customize.md +1 -1
- package/components/input/demo/customize.min.js +13 -4
- package/components/input/demo/getting-started.min.js +13 -4
- package/components/input/demo/index.min.js +13 -4
- package/components/input/dist/base-input.d.ts +2 -0
- package/components/input/dist/index.js +13 -4
- package/components/input/dist/registered.js +13 -4
- package/components/radio/demo/customize.min.js +1 -1
- package/components/radio/demo/getting-started.min.js +1 -1
- package/components/radio/demo/index.min.js +1 -1
- package/components/radio/dist/index.js +1 -1
- package/components/radio/dist/registered.js +1 -1
- package/components/select/demo/customize.min.js +2 -2
- package/components/select/demo/getting-started.min.js +2 -2
- package/components/select/demo/index.min.js +2 -2
- package/components/select/dist/index.js +2 -2
- package/components/select/dist/registered.js +2 -2
- package/custom-elements.json +4 -4
- package/package.json +3 -6
- package/ai/README.md +0 -142
- package/ai/_a11y-baseline.md +0 -27
- package/ai/_authored/_defaults.overlay.yaml +0 -81
- package/ai/_authored/auro-checkbox.overlay.yaml +0 -22
- package/ai/_authored/auro-combobox.overlay.yaml +0 -37
- package/ai/_authored/auro-counter.overlay.yaml +0 -23
- package/ai/_authored/auro-datepicker.overlay.yaml +0 -44
- package/ai/_authored/auro-dropdown.overlay.yaml +0 -35
- package/ai/_authored/auro-form.overlay.yaml +0 -12
- package/ai/_authored/auro-input.overlay.yaml +0 -33
- package/ai/_authored/auro-menu.overlay.yaml +0 -21
- package/ai/_authored/auro-radio.overlay.yaml +0 -19
- package/ai/_authored/auro-select.overlay.yaml +0 -37
- package/ai/_prompt-template.md +0 -33
- package/ai/llms.txt +0 -26
- package/ai/specs/auro-checkbox.spec.yaml +0 -181
- package/ai/specs/auro-combobox.spec.yaml +0 -349
- package/ai/specs/auro-counter.spec.yaml +0 -215
- package/ai/specs/auro-datepicker.spec.yaml +0 -395
- package/ai/specs/auro-dropdown.spec.yaml +0 -295
- package/ai/specs/auro-form.spec.yaml +0 -148
- package/ai/specs/auro-input.spec.yaml +0 -392
- package/ai/specs/auro-menu.spec.yaml +0 -213
- package/ai/specs/auro-radio.spec.yaml +0 -184
- package/ai/specs/auro-select.spec.yaml +0 -324
|
@@ -1,295 +0,0 @@
|
|
|
1
|
-
# GENERATED by packages/build-tools/src/aiSpecGenerator.mjs — do not edit by hand.
|
|
2
|
-
# Authored inputs live in ai/_authored/auro-dropdown.overlay.yaml
|
|
3
|
-
component: auro-dropdown
|
|
4
|
-
version: 0.0.0
|
|
5
|
-
summary: Generic disclosure — a trigger that toggles a bib/panel of content. Native closest is <details>/<summary> or a <button> with aria-expanded controlling a region.
|
|
6
|
-
generatedFrom:
|
|
7
|
-
cem: custom-elements.json#auro-dropdown
|
|
8
|
-
cssRecipe: components/dropdown/demo/css-only.md
|
|
9
|
-
overlay: ai/_authored/auro-dropdown.overlay.yaml
|
|
10
|
-
sourceOfTruth:
|
|
11
|
-
component: components/dropdown/src/auro-dropdown.js
|
|
12
|
-
visual:
|
|
13
|
-
tokensImport: ./node_modules/@aurodesignsystem/design-tokens/dist/tokens/CSSCustomProperties.css
|
|
14
|
-
rule: NEVER hardcode a hex, px, rem, or font-family value. Every visual value MUST be an Auro --ds-* token via var(--ds-token, fallback). Literal values are allowed only as the second argument (fallback) of var().
|
|
15
|
-
css: |-
|
|
16
|
-
@import "./node_modules/@aurodesignsystem/design-tokens/dist/tokens/CSSCustomProperties.css";
|
|
17
|
-
|
|
18
|
-
.dropdown {
|
|
19
|
-
position: relative;
|
|
20
|
-
display: inline-block;
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
.dropdown > summary {
|
|
24
|
-
list-style: none;
|
|
25
|
-
cursor: pointer;
|
|
26
|
-
display: inline-flex;
|
|
27
|
-
align-items: center;
|
|
28
|
-
gap: var(--ds-size-100, 0.5rem);
|
|
29
|
-
padding: var(--ds-size-100, 0.5rem) var(--ds-size-150, 0.75rem);
|
|
30
|
-
border: 1px solid var(--ds-color-border-ui-default, #6e767f);
|
|
31
|
-
border-radius: var(--ds-border-radius, 4px);
|
|
32
|
-
background-color: var(--ds-color-container-primary-default, #ffffff);
|
|
33
|
-
color: var(--ds-color-text-primary-default, #1d1d1d);
|
|
34
|
-
font-family: var(--ds-font-family-default, sans-serif);
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
.dropdown > summary::-webkit-details-marker {
|
|
38
|
-
display: none;
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
.dropdown > summary::after {
|
|
42
|
-
content: "";
|
|
43
|
-
width: var(--ds-size-150, 0.75rem);
|
|
44
|
-
height: var(--ds-size-150, 0.75rem);
|
|
45
|
-
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%231d1d1d' stroke-width='2'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");
|
|
46
|
-
background-repeat: no-repeat;
|
|
47
|
-
background-position: center;
|
|
48
|
-
transition: transform 150ms ease;
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
.dropdown[open] > summary::after {
|
|
52
|
-
transform: rotate(180deg);
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
.dropdown > summary:focus-visible {
|
|
56
|
-
outline: 2px solid var(--ds-color-border-active-default, #01426a);
|
|
57
|
-
outline-offset: 2px;
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
.dropdown-bib {
|
|
61
|
-
position: absolute;
|
|
62
|
-
top: calc(100% + var(--ds-size-50, 0.25rem));
|
|
63
|
-
left: 0;
|
|
64
|
-
z-index: 1;
|
|
65
|
-
min-width: 100%;
|
|
66
|
-
padding: var(--ds-size-100, 0.5rem);
|
|
67
|
-
border: 1px solid var(--ds-color-border-ui-default, #6e767f);
|
|
68
|
-
border-radius: var(--ds-border-radius, 4px);
|
|
69
|
-
background-color: var(--ds-color-container-primary-default, #ffffff);
|
|
70
|
-
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
|
|
71
|
-
}
|
|
72
|
-
api:
|
|
73
|
-
attributes:
|
|
74
|
-
- name: appearance
|
|
75
|
-
tier: wc-only
|
|
76
|
-
default: '''default'''
|
|
77
|
-
description: Defines whether the component will be on lighter or darker backgrounds.
|
|
78
|
-
- name: autoPlacement
|
|
79
|
-
tier: wc-only
|
|
80
|
-
description: If declared, bib's position will be automatically calculated where to appear.
|
|
81
|
-
- name: desktopModal
|
|
82
|
-
tier: wc-only
|
|
83
|
-
description: If declared, the dropdown will behave as a modal dialog when in a desktop viewport size.
|
|
84
|
-
- name: disableEventShow
|
|
85
|
-
tier: wc-only
|
|
86
|
-
description: If declared, the dropdown will only show by calling the API .show() public method.
|
|
87
|
-
- name: simple
|
|
88
|
-
tier: wc-only
|
|
89
|
-
description: If declared, applies a border around the trigger slot.
|
|
90
|
-
- name: chevron
|
|
91
|
-
tier: enhanced
|
|
92
|
-
description: If declared, the dropdown displays a chevron on the right.
|
|
93
|
-
- name: disabled
|
|
94
|
-
tier: core
|
|
95
|
-
native: disabled
|
|
96
|
-
description: If declared, the dropdown is not interactive.
|
|
97
|
-
- name: disableKeyboardHandling
|
|
98
|
-
tier: wc-only
|
|
99
|
-
description: If declared, the dropdown will not handle keyboard events and will require the consumer to manage this behavior.
|
|
100
|
-
- name: dropdownWidth
|
|
101
|
-
tier: wc-only
|
|
102
|
-
- name: error
|
|
103
|
-
tier: wc-only
|
|
104
|
-
description: If declared, will apply error UI to the dropdown.
|
|
105
|
-
- name: errorMessage
|
|
106
|
-
tier: wc-only
|
|
107
|
-
default: undefined
|
|
108
|
-
description: Contains the help text message for the current validity error.
|
|
109
|
-
- name: focusShow
|
|
110
|
-
tier: wc-only
|
|
111
|
-
description: If declared, the bib will display when focus is applied to the trigger.
|
|
112
|
-
- name: open
|
|
113
|
-
tier: enhanced
|
|
114
|
-
default: 'false'
|
|
115
|
-
description: If true, the dropdown bib is displayed.
|
|
116
|
-
- name: isBibFullscreen
|
|
117
|
-
tier: wc-only
|
|
118
|
-
default: 'false'
|
|
119
|
-
description: If true, the dropdown bib is taking the fullscreen when it's open.
|
|
120
|
-
- name: hoverToggle
|
|
121
|
-
tier: wc-only
|
|
122
|
-
description: If declared, the trigger will toggle the dropdown on mouseover/mouseout.
|
|
123
|
-
- name: hasTriggerContent
|
|
124
|
-
tier: wc-only
|
|
125
|
-
- name: fullscreenBreakpoint
|
|
126
|
-
tier: wc-only
|
|
127
|
-
default: '''sm'''
|
|
128
|
-
description: Defines the screen size breakpoint at which the dropdown switches to fullscreen mode on mobile.
|
|
129
|
-
- name: layout
|
|
130
|
-
tier: wc-only
|
|
131
|
-
default: undefined
|
|
132
|
-
description: Sets the layout of the dropdown.
|
|
133
|
-
- name: parentBorder
|
|
134
|
-
tier: wc-only
|
|
135
|
-
default: 'false'
|
|
136
|
-
description: Defines if the trigger should size based on the parent element providing the border UI.
|
|
137
|
-
- name: matchWidth
|
|
138
|
-
tier: wc-only
|
|
139
|
-
default: 'false'
|
|
140
|
-
description: If declared, the popover and trigger will be set to the same width.
|
|
141
|
-
- name: noFlip
|
|
142
|
-
tier: wc-only
|
|
143
|
-
description: If declared, the bib will NOT flip to an alternate position when there isn't enough space in the specified `placement`.
|
|
144
|
-
- name: shift
|
|
145
|
-
tier: wc-only
|
|
146
|
-
description: If declared, the dropdown will shift its position to avoid being cut off by the viewport.
|
|
147
|
-
- name: noHideOnThisFocusLoss
|
|
148
|
-
tier: wc-only
|
|
149
|
-
default: 'false'
|
|
150
|
-
description: If declared, the dropdown will not hide when moving focus outside the element.
|
|
151
|
-
- name: noToggle
|
|
152
|
-
tier: wc-only
|
|
153
|
-
description: If declared, the trigger will only show the dropdown bib.
|
|
154
|
-
- name: offset
|
|
155
|
-
tier: wc-only
|
|
156
|
-
default: '0'
|
|
157
|
-
description: Gap between the trigger element and bib.
|
|
158
|
-
- name: onDark
|
|
159
|
-
tier: wc-only
|
|
160
|
-
description: DEPRECATED - use `appearance="inverse"` instead.
|
|
161
|
-
- name: onSlotChange
|
|
162
|
-
tier: enhanced
|
|
163
|
-
description: If declared, and a function is set, that function will execute when the slot content is updated.
|
|
164
|
-
- name: placement
|
|
165
|
-
tier: wc-only
|
|
166
|
-
default: '''bottom-start'''
|
|
167
|
-
description: Position where the bib should appear relative to the trigger.
|
|
168
|
-
- name: tabIndex
|
|
169
|
-
tier: enhanced
|
|
170
|
-
- name: shape
|
|
171
|
-
tier: wc-only
|
|
172
|
-
- name: size
|
|
173
|
-
tier: enhanced
|
|
174
|
-
- name: ondark
|
|
175
|
-
tier: wc-only
|
|
176
|
-
slots:
|
|
177
|
-
- name: (default)
|
|
178
|
-
tier: core
|
|
179
|
-
description: Default slot for the dropdown bib content.
|
|
180
|
-
- name: helpText
|
|
181
|
-
tier: core
|
|
182
|
-
description: Defines the content of the helpText.
|
|
183
|
-
- name: trigger
|
|
184
|
-
tier: core
|
|
185
|
-
description: Defines the content of the trigger.
|
|
186
|
-
events:
|
|
187
|
-
- name: auroDropdown-idAdded
|
|
188
|
-
tier: wc-only
|
|
189
|
-
description: Notifies consumers that the unique ID for the dropdown bib has been generated.
|
|
190
|
-
- name: auroDropdown-triggerClick
|
|
191
|
-
tier: wc-only
|
|
192
|
-
description: Notifies that the trigger has been clicked.
|
|
193
|
-
- name: auroDropdown-toggled
|
|
194
|
-
tier: wc-only
|
|
195
|
-
description: Notifies that the visibility of the dropdown bib has changed.
|
|
196
|
-
methods:
|
|
197
|
-
- name: hide
|
|
198
|
-
tier: wc-only
|
|
199
|
-
- name: show
|
|
200
|
-
tier: wc-only
|
|
201
|
-
- name: focus
|
|
202
|
-
tier: wc-only
|
|
203
|
-
- name: register
|
|
204
|
-
tier: wc-only
|
|
205
|
-
- name: exposeCssParts
|
|
206
|
-
tier: wc-only
|
|
207
|
-
- name: clearTriggerA11yAttributes
|
|
208
|
-
tier: wc-only
|
|
209
|
-
- name: resetShapeClasses
|
|
210
|
-
tier: wc-only
|
|
211
|
-
- name: resetLayoutClasses
|
|
212
|
-
tier: wc-only
|
|
213
|
-
- name: updateComponentArchitecture
|
|
214
|
-
tier: wc-only
|
|
215
|
-
behavior:
|
|
216
|
-
a11y:
|
|
217
|
-
- Every control MUST have a programmatically associated <label> (for/id or wrapping).
|
|
218
|
-
- Link help text via aria-describedby so it is announced after the label.
|
|
219
|
-
- Reflect invalid state with aria-invalid="true|false" on the control.
|
|
220
|
-
- Render validation errors with role="alert" aria-live="assertive" so they announce immediately.
|
|
221
|
-
- The trigger is a <button> with aria-expanded and aria-controls pointing to the panel id.
|
|
222
|
-
- The panel is a region whose visibility follows aria-expanded.
|
|
223
|
-
keyboard:
|
|
224
|
-
- All interactive affordances are real, focusable elements in DOM order.
|
|
225
|
-
- Enter/Space toggles the panel; Esc closes it and returns focus to the trigger.
|
|
226
|
-
validation: []
|
|
227
|
-
gaps:
|
|
228
|
-
- id: floating-ui-positioning
|
|
229
|
-
feature: Floating-UI positioning
|
|
230
|
-
guidance: auro-dropdown uses Floating UI to position the bib relative to the trigger and supports a placement attribute with twelve values (top, right, bottom, left, and their -start/-end variants).
|
|
231
|
-
- id: auto-placement-and-flip
|
|
232
|
-
feature: Auto-placement and flip
|
|
233
|
-
guidance: auro-dropdown exposes autoPlacement and the inverse noFlip option so the bib can automatically pick the side of the trigger with the most available space and flip when it would otherwise be clipped by the viewport.
|
|
234
|
-
- id: shift-to-stay-on-screen
|
|
235
|
-
feature: Shift to stay on-screen
|
|
236
|
-
guidance: auro-dropdown supports a shift attribute that nudges the bib along its axis so it remains fully visible inside the viewport.
|
|
237
|
-
- id: match-width-and-offset-control
|
|
238
|
-
feature: Match-width and offset control
|
|
239
|
-
guidance: auro-dropdown exposes matchWidth to size the bib to the trigger and a numeric offset for the gap between trigger and bib.
|
|
240
|
-
- id: mobile-fullscreen-behavior
|
|
241
|
-
feature: Mobile fullscreen behavior
|
|
242
|
-
guidance: auro-dropdown supports a fullscreenBreakpoint (defaulting to sm) that switches the bib into a fullscreen presentation on small viewports, and a desktopModal option for modal behavior on larger viewports.
|
|
243
|
-
- id: hover-trigger
|
|
244
|
-
feature: Hover trigger
|
|
245
|
-
guidance: auro-dropdown supports a hoverToggle attribute that opens the bib on mouseover and closes it on mouseout.
|
|
246
|
-
- id: focus-management
|
|
247
|
-
feature: Focus management
|
|
248
|
-
guidance: auro-dropdown provides a focus() method that moves focus to the first focusable element inside the bib when it is open, or to the trigger when it is closed.
|
|
249
|
-
- id: click-outside-and-focus-loss-dismissal
|
|
250
|
-
feature: Click-outside and focus-loss dismissal
|
|
251
|
-
guidance: auro-dropdown closes the bib when the user clicks outside the component or moves focus out of it, and exposes noHideOnThisFocusLoss to opt out.
|
|
252
|
-
- id: keyboard-handling
|
|
253
|
-
feature: Keyboard handling
|
|
254
|
-
guidance: auro-dropdown includes a keyboard strategy for arrow-key navigation, Escape to close, and Tab behavior coordinated with the bib contents, and lets consumers opt out via disableKeyboardHandling.
|
|
255
|
-
- id: aria-wiring
|
|
256
|
-
feature: ARIA wiring
|
|
257
|
-
guidance: auro-dropdown sets an a11yRole on the trigger, manages aria-expanded, and emits an auroDropdown-idAdded event so consumers can wire aria-controls to the generated bib ID.
|
|
258
|
-
- id: chevron-indicator
|
|
259
|
-
feature: Chevron indicator
|
|
260
|
-
guidance: auro-dropdown supports a chevron attribute that renders a collapsed/expanded indicator with the correct rotation and design-token color.
|
|
261
|
-
- id: error-and-help-text-presentation
|
|
262
|
-
feature: Error and help-text presentation
|
|
263
|
-
guidance: auro-dropdown exposes error, errorMessage, and a helpText slot that renders supporting text below the trigger with the correct error styling.
|
|
264
|
-
- id: imperative-show-hide-and-toggle-events
|
|
265
|
-
feature: Imperative show/hide and toggle events
|
|
266
|
-
guidance: auro-dropdown exposes show() and hide() methods, a disableEventShow option to lock it to programmatic control, and emits auroDropdown-toggled and auroDropdown-triggerClick events.
|
|
267
|
-
- id: multi-brand-theming
|
|
268
|
-
feature: Multi-brand theming
|
|
269
|
-
guidance: auro-dropdown consumes Auro design tokens through its component logic, so it automatically picks up brand-specific theming when token packages are swapped.
|
|
270
|
-
examples:
|
|
271
|
-
- id: basic-disclosure
|
|
272
|
-
html: |-
|
|
273
|
-
<details class="dropdown">
|
|
274
|
-
<summary>More options</summary>
|
|
275
|
-
<div class="dropdown-bib">
|
|
276
|
-
<p>Panel content goes here.</p>
|
|
277
|
-
</div>
|
|
278
|
-
</details>
|
|
279
|
-
- id: disclosure-with-a-list-of-actions
|
|
280
|
-
html: |-
|
|
281
|
-
<details class="dropdown">
|
|
282
|
-
<summary>Account</summary>
|
|
283
|
-
<div class="dropdown-bib">
|
|
284
|
-
<ul>
|
|
285
|
-
<li><a href="/profile">Profile</a></li>
|
|
286
|
-
<li><a href="/settings">Settings</a></li>
|
|
287
|
-
<li><a href="/logout">Log out</a></li>
|
|
288
|
-
</ul>
|
|
289
|
-
</div>
|
|
290
|
-
</details>
|
|
291
|
-
verify:
|
|
292
|
-
- every color, size, spacing, radius, and font value uses var(--ds-*)
|
|
293
|
-
- each control has an associated <label>
|
|
294
|
-
- controls with aria-invalid="true" have a role="alert" message referenced by aria-describedby
|
|
295
|
-
- 'axe: label, aria-valid-attr-value, color-contrast pass'
|
|
@@ -1,148 +0,0 @@
|
|
|
1
|
-
# GENERATED by packages/build-tools/src/aiSpecGenerator.mjs — do not edit by hand.
|
|
2
|
-
# Authored inputs live in ai/_authored/auro-form.overlay.yaml
|
|
3
|
-
component: auro-form
|
|
4
|
-
version: 0.0.0
|
|
5
|
-
summary: Form coordinator that validates and manages child fields. Native equivalent is the <form> element with native submit/reset and constraint validation.
|
|
6
|
-
generatedFrom:
|
|
7
|
-
cem: custom-elements.json#auro-form
|
|
8
|
-
cssRecipe: components/form/demo/css-only.md
|
|
9
|
-
overlay: ai/_authored/auro-form.overlay.yaml
|
|
10
|
-
sourceOfTruth:
|
|
11
|
-
component: components/form/src/auro-form.js
|
|
12
|
-
visual:
|
|
13
|
-
tokensImport: ./node_modules/@aurodesignsystem/design-tokens/dist/tokens/CSSCustomProperties.css
|
|
14
|
-
rule: NEVER hardcode a hex, px, rem, or font-family value. Every visual value MUST be an Auro --ds-* token via var(--ds-token, fallback). Literal values are allowed only as the second argument (fallback) of var().
|
|
15
|
-
css: |-
|
|
16
|
-
@import "./node_modules/@aurodesignsystem/design-tokens/dist/tokens/CSSCustomProperties.css";
|
|
17
|
-
|
|
18
|
-
.form {
|
|
19
|
-
display: flex;
|
|
20
|
-
flex-direction: column;
|
|
21
|
-
gap: var(--ds-size-300, 1.5rem);
|
|
22
|
-
padding: var(--ds-size-400, 2rem);
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
.form fieldset {
|
|
26
|
-
display: flex;
|
|
27
|
-
flex-direction: column;
|
|
28
|
-
gap: var(--ds-size-200, 1rem);
|
|
29
|
-
border: 0;
|
|
30
|
-
padding: 0;
|
|
31
|
-
margin: 0;
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
.form legend {
|
|
35
|
-
padding: 0;
|
|
36
|
-
margin-bottom: var(--ds-size-100, 0.5rem);
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
.form .actions {
|
|
40
|
-
display: flex;
|
|
41
|
-
gap: var(--ds-size-200, 1rem);
|
|
42
|
-
margin-top: var(--ds-size-200, 1rem);
|
|
43
|
-
}
|
|
44
|
-
api:
|
|
45
|
-
attributes: []
|
|
46
|
-
slots:
|
|
47
|
-
- name: default
|
|
48
|
-
tier: core
|
|
49
|
-
description: The default slot for form elements.
|
|
50
|
-
events:
|
|
51
|
-
- name: change
|
|
52
|
-
tier: core
|
|
53
|
-
description: Fires when a child form element's value changes or the form is initialized.
|
|
54
|
-
- name: reset
|
|
55
|
-
tier: core
|
|
56
|
-
description: Fires when the form is reset.
|
|
57
|
-
- name: submit
|
|
58
|
-
tier: core
|
|
59
|
-
description: Fires when the form is submitted.
|
|
60
|
-
- name: input
|
|
61
|
-
tier: core
|
|
62
|
-
description: Fires when a child form element receives user input.
|
|
63
|
-
methods:
|
|
64
|
-
- name: reset
|
|
65
|
-
tier: wc-only
|
|
66
|
-
- name: submit
|
|
67
|
-
tier: wc-only
|
|
68
|
-
- name: register
|
|
69
|
-
tier: wc-only
|
|
70
|
-
behavior:
|
|
71
|
-
a11y:
|
|
72
|
-
- Every control MUST have a programmatically associated <label> (for/id or wrapping).
|
|
73
|
-
- Link help text via aria-describedby so it is announced after the label.
|
|
74
|
-
- Reflect invalid state with aria-invalid="true|false" on the control.
|
|
75
|
-
- Render validation errors with role="alert" aria-live="assertive" so they announce immediately.
|
|
76
|
-
- Use a native <form>; group related fields in <fieldset>/<legend>; the submit control is a real <button type="submit">.
|
|
77
|
-
keyboard:
|
|
78
|
-
- All interactive affordances are real, focusable elements in DOM order.
|
|
79
|
-
- Enter in a text field submits the form (native).
|
|
80
|
-
validation:
|
|
81
|
-
- Use native constraint validation (required, pattern, min/max) surfaced on submit.
|
|
82
|
-
- auro-form's cross-field coordination and aggregated validity are wc-only — validate each field and aggregate in script.
|
|
83
|
-
gaps:
|
|
84
|
-
- id: child-element-registration
|
|
85
|
-
feature: Child element registration
|
|
86
|
-
guidance: auro-form automatically discovers and registers its named Auro form-element children (auro-input, auro-select, auro-datepicker, auro-combobox, auro-checkbox-group, auro-radio-group, auro-counter-group) on slot change and via a MutationObserver, so dynamically added or removed fields are tracked without manual wiring.
|
|
87
|
-
- id: aggregated-value-snapshot
|
|
88
|
-
feature: Aggregated value snapshot
|
|
89
|
-
guidance: auro-form exposes a value getter that returns a single key-value object of every named child's current value, including array values from range datepickers and grouped controls.
|
|
90
|
-
- id: aggregated-validity-state
|
|
91
|
-
feature: Aggregated validity state
|
|
92
|
-
guidance: auro-form exposes a single validity getter that returns 'valid', 'invalid', or null based on the validity of every required and interacted-with child.
|
|
93
|
-
- id: initial-state-tracking
|
|
94
|
-
feature: Initial-state tracking
|
|
95
|
-
guidance: auro-form tracks an isInitialState flag that is true until any child has been interacted with or had its value changed.
|
|
96
|
-
- id: auroformelement-validated-event-aggregation
|
|
97
|
-
feature: auroFormElement-validated event aggregation
|
|
98
|
-
guidance: auro-form listens for auroFormElement-validated events from every registered child and updates its aggregated validity state in response.
|
|
99
|
-
- id: submit-coordination
|
|
100
|
-
feature: Submit coordination
|
|
101
|
-
guidance: auro-form intercepts clicks on child submit buttons (<button type="submit"> or <auro-button type="submit">), forces validation on every registered child, waits for validation to settle, and only then fires a submit event with detail.value containing the full form snapshot.
|
|
102
|
-
- id: reset-coordination
|
|
103
|
-
feature: Reset coordination
|
|
104
|
-
guidance: auro-form intercepts clicks on child reset buttons, calls reset() on every registered child, reinitializes its state, and fires a reset event with detail.previousValue containing the values captured before the reset.
|
|
105
|
-
- id: submit-and-reset-button-disabling
|
|
106
|
-
feature: Submit and reset button disabling
|
|
107
|
-
guidance: auro-form automatically disables submit buttons while the form is in its initial state or invalid, and disables reset buttons while the form is in its initial state.
|
|
108
|
-
- id: enter-to-submit-handling
|
|
109
|
-
feature: Enter-to-submit handling
|
|
110
|
-
guidance: auro-form listens for the Enter key on its registered children and triggers a coordinated submit, while skipping textarea-style fields so they can accept newlines.
|
|
111
|
-
- id: mixed-auro-and-native-child-support
|
|
112
|
-
feature: Mixed Auro and native child support
|
|
113
|
-
guidance: auro-form recognizes its named Auro children and coordinates them as a single form, while still allowing native elements to live alongside them in markup.
|
|
114
|
-
- id: multi-brand-theming
|
|
115
|
-
feature: Multi-brand theming
|
|
116
|
-
guidance: auro-form consumes Auro design tokens through its component logic, so it automatically picks up brand-specific theming when token packages are swapped.
|
|
117
|
-
examples:
|
|
118
|
-
- id: basic-form
|
|
119
|
-
html: |-
|
|
120
|
-
<form class="form" action="/subscribe" method="post">
|
|
121
|
-
<label>
|
|
122
|
-
Email
|
|
123
|
-
<input type="email" name="email" required />
|
|
124
|
-
</label>
|
|
125
|
-
<div class="actions">
|
|
126
|
-
<button type="submit">Submit</button>
|
|
127
|
-
<button type="reset">Reset</button>
|
|
128
|
-
</div>
|
|
129
|
-
</form>
|
|
130
|
-
- id: form-with-grouped-fields
|
|
131
|
-
html: |-
|
|
132
|
-
<form class="form">
|
|
133
|
-
<fieldset>
|
|
134
|
-
<legend>Contact information</legend>
|
|
135
|
-
<label>First name <input type="text" name="firstName" required /></label>
|
|
136
|
-
<label>Last name <input type="text" name="lastName" required /></label>
|
|
137
|
-
<label>Email <input type="email" name="email" required /></label>
|
|
138
|
-
</fieldset>
|
|
139
|
-
<div class="actions">
|
|
140
|
-
<button type="submit">Submit</button>
|
|
141
|
-
<button type="reset">Reset</button>
|
|
142
|
-
</div>
|
|
143
|
-
</form>
|
|
144
|
-
verify:
|
|
145
|
-
- every color, size, spacing, radius, and font value uses var(--ds-*)
|
|
146
|
-
- each control has an associated <label>
|
|
147
|
-
- controls with aria-invalid="true" have a role="alert" message referenced by aria-describedby
|
|
148
|
-
- 'axe: label, aria-valid-attr-value, color-contrast pass'
|