@vaadin/radio-group 24.2.0-dev.f254716fe → 24.3.0-alpha2
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/package.json +9 -9
- package/src/vaadin-radio-button.js +5 -1
- package/src/vaadin-radio-group.js +22 -4
- package/web-types.json +392 -0
- package/web-types.lit.json +174 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vaadin/radio-group",
|
|
3
|
-
"version": "24.
|
|
3
|
+
"version": "24.3.0-alpha2",
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"access": "public"
|
|
6
6
|
},
|
|
@@ -38,21 +38,21 @@
|
|
|
38
38
|
],
|
|
39
39
|
"dependencies": {
|
|
40
40
|
"@polymer/polymer": "^3.0.0",
|
|
41
|
-
"@vaadin/a11y-base": "24.
|
|
42
|
-
"@vaadin/component-base": "24.
|
|
43
|
-
"@vaadin/field-base": "24.
|
|
44
|
-
"@vaadin/vaadin-lumo-styles": "24.
|
|
45
|
-
"@vaadin/vaadin-material-styles": "24.
|
|
46
|
-
"@vaadin/vaadin-themable-mixin": "24.
|
|
41
|
+
"@vaadin/a11y-base": "24.3.0-alpha2",
|
|
42
|
+
"@vaadin/component-base": "24.3.0-alpha2",
|
|
43
|
+
"@vaadin/field-base": "24.3.0-alpha2",
|
|
44
|
+
"@vaadin/vaadin-lumo-styles": "24.3.0-alpha2",
|
|
45
|
+
"@vaadin/vaadin-material-styles": "24.3.0-alpha2",
|
|
46
|
+
"@vaadin/vaadin-themable-mixin": "24.3.0-alpha2"
|
|
47
47
|
},
|
|
48
48
|
"devDependencies": {
|
|
49
49
|
"@esm-bundle/chai": "^4.3.4",
|
|
50
|
-
"@vaadin/testing-helpers": "^0.
|
|
50
|
+
"@vaadin/testing-helpers": "^0.5.0",
|
|
51
51
|
"sinon": "^13.0.2"
|
|
52
52
|
},
|
|
53
53
|
"web-types": [
|
|
54
54
|
"web-types.json",
|
|
55
55
|
"web-types.lit.json"
|
|
56
56
|
],
|
|
57
|
-
"gitHead": "
|
|
57
|
+
"gitHead": "0fd437292fa2a2f65e29b424d2456909ad2d684b"
|
|
58
58
|
}
|
|
@@ -7,6 +7,7 @@ import { html, PolymerElement } from '@polymer/polymer/polymer-element.js';
|
|
|
7
7
|
import { ActiveMixin } from '@vaadin/a11y-base/src/active-mixin.js';
|
|
8
8
|
import { DelegateFocusMixin } from '@vaadin/a11y-base/src/delegate-focus-mixin.js';
|
|
9
9
|
import { ControllerMixin } from '@vaadin/component-base/src/controller-mixin.js';
|
|
10
|
+
import { defineCustomElement } from '@vaadin/component-base/src/define.js';
|
|
10
11
|
import { ElementMixin } from '@vaadin/component-base/src/element-mixin.js';
|
|
11
12
|
import { CheckedMixin } from '@vaadin/field-base/src/checked-mixin.js';
|
|
12
13
|
import { InputController } from '@vaadin/field-base/src/input-controller.js';
|
|
@@ -49,6 +50,7 @@ import { ThemableMixin } from '@vaadin/vaadin-themable-mixin/vaadin-themable-mix
|
|
|
49
50
|
*
|
|
50
51
|
* @fires {CustomEvent} checked-changed - Fired when the `checked` property changes.
|
|
51
52
|
*
|
|
53
|
+
* @customElement
|
|
52
54
|
* @extends HTMLElement
|
|
53
55
|
* @mixes ControllerMixin
|
|
54
56
|
* @mixes ThemableMixin
|
|
@@ -118,6 +120,8 @@ class RadioButton extends LabelMixin(
|
|
|
118
120
|
margin: 0;
|
|
119
121
|
align-self: stretch;
|
|
120
122
|
-webkit-appearance: none;
|
|
123
|
+
width: initial;
|
|
124
|
+
height: initial;
|
|
121
125
|
}
|
|
122
126
|
|
|
123
127
|
@media (forced-colors: active) {
|
|
@@ -186,6 +190,6 @@ class RadioButton extends LabelMixin(
|
|
|
186
190
|
}
|
|
187
191
|
}
|
|
188
192
|
|
|
189
|
-
|
|
193
|
+
defineCustomElement(RadioButton);
|
|
190
194
|
|
|
191
195
|
export { RadioButton };
|
|
@@ -3,12 +3,13 @@
|
|
|
3
3
|
* Copyright (c) 2017 - 2023 Vaadin Ltd.
|
|
4
4
|
* This program is available under Apache License Version 2.0, available at https://vaadin.com/license/
|
|
5
5
|
*/
|
|
6
|
-
import { FlattenedNodesObserver } from '@polymer/polymer/lib/utils/flattened-nodes-observer.js';
|
|
7
6
|
import { html, PolymerElement } from '@polymer/polymer/polymer-element.js';
|
|
8
7
|
import { DisabledMixin } from '@vaadin/a11y-base/src/disabled-mixin.js';
|
|
9
8
|
import { FocusMixin } from '@vaadin/a11y-base/src/focus-mixin.js';
|
|
10
9
|
import { KeyboardMixin } from '@vaadin/a11y-base/src/keyboard-mixin.js';
|
|
10
|
+
import { defineCustomElement } from '@vaadin/component-base/src/define.js';
|
|
11
11
|
import { ElementMixin } from '@vaadin/component-base/src/element-mixin.js';
|
|
12
|
+
import { SlotObserver } from '@vaadin/component-base/src/slot-observer.js';
|
|
12
13
|
import { TooltipController } from '@vaadin/component-base/src/tooltip-controller.js';
|
|
13
14
|
import { generateUniqueId } from '@vaadin/component-base/src/unique-id-utils.js';
|
|
14
15
|
import { FieldMixin } from '@vaadin/field-base/src/field-mixin.js';
|
|
@@ -57,6 +58,7 @@ import { RadioButton } from './vaadin-radio-button.js';
|
|
|
57
58
|
* @fires {CustomEvent} value-changed - Fired when the `value` property changes.
|
|
58
59
|
* @fires {CustomEvent} validated - Fired whenever the field is validated.
|
|
59
60
|
*
|
|
61
|
+
* @customElement
|
|
60
62
|
* @extends HTMLElement
|
|
61
63
|
* @mixes ThemableMixin
|
|
62
64
|
* @mixes DisabledMixin
|
|
@@ -172,6 +174,19 @@ class RadioGroup extends FieldMixin(
|
|
|
172
174
|
this.__registerRadioButton = this.__registerRadioButton.bind(this);
|
|
173
175
|
this.__unregisterRadioButton = this.__unregisterRadioButton.bind(this);
|
|
174
176
|
this.__onRadioButtonCheckedChange = this.__onRadioButtonCheckedChange.bind(this);
|
|
177
|
+
|
|
178
|
+
this._tooltipController = new TooltipController(this);
|
|
179
|
+
this._tooltipController.addEventListener('tooltip-changed', (event) => {
|
|
180
|
+
const tooltip = event.detail.node;
|
|
181
|
+
if (tooltip && tooltip.isConnected) {
|
|
182
|
+
// Tooltip element has been added to the DOM
|
|
183
|
+
const inputs = this.__radioButtons.map((radio) => radio.inputElement);
|
|
184
|
+
this._tooltipController.setAriaTarget(inputs);
|
|
185
|
+
} else {
|
|
186
|
+
// Tooltip element is no longer connected
|
|
187
|
+
this._tooltipController.setAriaTarget([]);
|
|
188
|
+
}
|
|
189
|
+
});
|
|
175
190
|
}
|
|
176
191
|
|
|
177
192
|
/**
|
|
@@ -213,16 +228,19 @@ class RadioGroup extends FieldMixin(
|
|
|
213
228
|
|
|
214
229
|
this._fieldName = `${this.localName}-${generateUniqueId()}`;
|
|
215
230
|
|
|
216
|
-
|
|
231
|
+
const slot = this.shadowRoot.querySelector('slot:not([name])');
|
|
232
|
+
this._observer = new SlotObserver(slot, ({ addedNodes, removedNodes }) => {
|
|
217
233
|
// Registers the added radio buttons in the reverse order
|
|
218
234
|
// in order for the group to take the value of the most recent button.
|
|
219
235
|
this.__filterRadioButtons(addedNodes).reverse().forEach(this.__registerRadioButton);
|
|
220
236
|
|
|
221
237
|
// Unregisters the removed radio buttons.
|
|
222
238
|
this.__filterRadioButtons(removedNodes).forEach(this.__unregisterRadioButton);
|
|
239
|
+
|
|
240
|
+
const inputs = this.__radioButtons.map((radio) => radio.inputElement);
|
|
241
|
+
this._tooltipController.setAriaTarget(inputs);
|
|
223
242
|
});
|
|
224
243
|
|
|
225
|
-
this._tooltipController = new TooltipController(this);
|
|
226
244
|
this.addController(this._tooltipController);
|
|
227
245
|
}
|
|
228
246
|
|
|
@@ -510,6 +528,6 @@ class RadioGroup extends FieldMixin(
|
|
|
510
528
|
}
|
|
511
529
|
}
|
|
512
530
|
|
|
513
|
-
|
|
531
|
+
defineCustomElement(RadioGroup);
|
|
514
532
|
|
|
515
533
|
export { RadioGroup };
|
package/web-types.json
ADDED
|
@@ -0,0 +1,392 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json.schemastore.org/web-types",
|
|
3
|
+
"name": "@vaadin/radio-group",
|
|
4
|
+
"version": "24.3.0-alpha2",
|
|
5
|
+
"description-markup": "markdown",
|
|
6
|
+
"contributions": {
|
|
7
|
+
"html": {
|
|
8
|
+
"elements": [
|
|
9
|
+
{
|
|
10
|
+
"name": "vaadin-radio-button",
|
|
11
|
+
"description": "`<vaadin-radio-button>` is a web component representing a choice in a radio group.\nOnly one radio button in the group can be selected at the same time.\n\n```html\n<vaadin-radio-group label=\"Travel class\">\n <vaadin-radio-button value=\"economy\" label=\"Economy\"></vaadin-radio-button>\n <vaadin-radio-button value=\"business\" label=\"Business\"></vaadin-radio-button>\n <vaadin-radio-button value=\"firstClass\" label=\"First Class\"></vaadin-radio-button>\n</vaadin-radio-group>\n```\n\n### Styling\n\nThe following shadow DOM parts are available for styling:\n\nPart name | Description\n------------|----------------\n`radio` | The wrapper element that contains slotted `<input type=\"radio\">`.\n\nThe following state attributes are available for styling:\n\nAttribute | Description | Part name\n-------------|-------------|------------\n`active` | Set when the radio button is pressed down, either with a pointer or the keyboard. | `:host`\n`disabled` | Set when the radio button is disabled. | `:host`\n`focus-ring` | Set when the radio button is focused using the keyboard. | `:host`\n`focused` | Set when the radio button is focused. | `:host`\n`checked` | Set when the radio button is checked. | `:host`\n`has-label` | Set when the radio button has a label. | `:host`\n\nSee [Styling Components](https://vaadin.com/docs/latest/styling/styling-components) documentation.",
|
|
12
|
+
"attributes": [
|
|
13
|
+
{
|
|
14
|
+
"name": "disabled",
|
|
15
|
+
"description": "If true, the user cannot interact with this element.",
|
|
16
|
+
"value": {
|
|
17
|
+
"type": [
|
|
18
|
+
"boolean",
|
|
19
|
+
"null",
|
|
20
|
+
"undefined"
|
|
21
|
+
]
|
|
22
|
+
}
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"name": "value",
|
|
26
|
+
"description": "The value of the field.",
|
|
27
|
+
"value": {
|
|
28
|
+
"type": [
|
|
29
|
+
"string",
|
|
30
|
+
"null",
|
|
31
|
+
"undefined"
|
|
32
|
+
]
|
|
33
|
+
}
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
"name": "checked",
|
|
37
|
+
"description": "True if the element is checked.",
|
|
38
|
+
"value": {
|
|
39
|
+
"type": [
|
|
40
|
+
"boolean"
|
|
41
|
+
]
|
|
42
|
+
}
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
"name": "label",
|
|
46
|
+
"description": "The label text for the input node.\nWhen no light dom defined via [slot=label], this value will be used.",
|
|
47
|
+
"value": {
|
|
48
|
+
"type": [
|
|
49
|
+
"string",
|
|
50
|
+
"null",
|
|
51
|
+
"undefined"
|
|
52
|
+
]
|
|
53
|
+
}
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
"name": "name",
|
|
57
|
+
"description": "The name of the radio button.",
|
|
58
|
+
"value": {
|
|
59
|
+
"type": [
|
|
60
|
+
"string"
|
|
61
|
+
]
|
|
62
|
+
}
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
"name": "theme",
|
|
66
|
+
"description": "The theme variants to apply to the component.",
|
|
67
|
+
"value": {
|
|
68
|
+
"type": [
|
|
69
|
+
"string",
|
|
70
|
+
"null",
|
|
71
|
+
"undefined"
|
|
72
|
+
]
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
],
|
|
76
|
+
"js": {
|
|
77
|
+
"properties": [
|
|
78
|
+
{
|
|
79
|
+
"name": "disabled",
|
|
80
|
+
"description": "If true, the user cannot interact with this element.",
|
|
81
|
+
"value": {
|
|
82
|
+
"type": [
|
|
83
|
+
"boolean",
|
|
84
|
+
"null",
|
|
85
|
+
"undefined"
|
|
86
|
+
]
|
|
87
|
+
}
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
"name": "value",
|
|
91
|
+
"description": "The value of the field.",
|
|
92
|
+
"value": {
|
|
93
|
+
"type": [
|
|
94
|
+
"string",
|
|
95
|
+
"null",
|
|
96
|
+
"undefined"
|
|
97
|
+
]
|
|
98
|
+
}
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
"name": "checked",
|
|
102
|
+
"description": "True if the element is checked.",
|
|
103
|
+
"value": {
|
|
104
|
+
"type": [
|
|
105
|
+
"boolean"
|
|
106
|
+
]
|
|
107
|
+
}
|
|
108
|
+
},
|
|
109
|
+
{
|
|
110
|
+
"name": "label",
|
|
111
|
+
"description": "The label text for the input node.\nWhen no light dom defined via [slot=label], this value will be used.",
|
|
112
|
+
"value": {
|
|
113
|
+
"type": [
|
|
114
|
+
"string",
|
|
115
|
+
"null",
|
|
116
|
+
"undefined"
|
|
117
|
+
]
|
|
118
|
+
}
|
|
119
|
+
},
|
|
120
|
+
{
|
|
121
|
+
"name": "name",
|
|
122
|
+
"description": "The name of the radio button.",
|
|
123
|
+
"value": {
|
|
124
|
+
"type": [
|
|
125
|
+
"string"
|
|
126
|
+
]
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
],
|
|
130
|
+
"events": [
|
|
131
|
+
{
|
|
132
|
+
"name": "value-changed",
|
|
133
|
+
"description": "Fired when the `value` property changes."
|
|
134
|
+
},
|
|
135
|
+
{
|
|
136
|
+
"name": "checked-changed",
|
|
137
|
+
"description": "Fired when the `checked` property changes."
|
|
138
|
+
}
|
|
139
|
+
]
|
|
140
|
+
}
|
|
141
|
+
},
|
|
142
|
+
{
|
|
143
|
+
"name": "vaadin-radio-group",
|
|
144
|
+
"description": "`<vaadin-radio-group>` is a web component that allows the user to choose one item from a group of choices.\n\n```html\n<vaadin-radio-group label=\"Travel class\">\n <vaadin-radio-button value=\"economy\" label=\"Economy\"></vaadin-radio-button>\n <vaadin-radio-button value=\"business\" label=\"Business\"></vaadin-radio-button>\n <vaadin-radio-button value=\"firstClass\" label=\"First Class\"></vaadin-radio-button>\n</vaadin-radio-group>\n```\n\n### Styling\n\nThe following shadow DOM parts are available for styling:\n\nPart name | Description\n---------------------|----------------\n`label` | The slotted label element wrapper\n`group-field` | The radio button elements wrapper\n`helper-text` | The slotted helper text element wrapper\n`error-message` | The slotted error message element wrapper\n`required-indicator` | The `required` state indicator element\n\nThe following state attributes are available for styling:\n\nAttribute | Description | Part name\n--------------------|-------------------------------------------|------------\n`disabled` | Set when the element is disabled | :host\n`readonly` | Set when the element is readonly | :host\n`invalid` | Set when the element is invalid | :host\n`focused` | Set when the element is focused | :host\n`has-label` | Set when the element has a label | :host\n`has-value` | Set when the element has a value | :host\n`has-helper` | Set when the element has helper text | :host\n`has-error-message` | Set when the element has an error message | :host\n\nSee [Styling Components](https://vaadin.com/docs/latest/styling/styling-components) documentation.",
|
|
145
|
+
"attributes": [
|
|
146
|
+
{
|
|
147
|
+
"name": "disabled",
|
|
148
|
+
"description": "If true, the user cannot interact with this element.",
|
|
149
|
+
"value": {
|
|
150
|
+
"type": [
|
|
151
|
+
"boolean",
|
|
152
|
+
"null",
|
|
153
|
+
"undefined"
|
|
154
|
+
]
|
|
155
|
+
}
|
|
156
|
+
},
|
|
157
|
+
{
|
|
158
|
+
"name": "label",
|
|
159
|
+
"description": "The label text for the input node.\nWhen no light dom defined via [slot=label], this value will be used.",
|
|
160
|
+
"value": {
|
|
161
|
+
"type": [
|
|
162
|
+
"string",
|
|
163
|
+
"null",
|
|
164
|
+
"undefined"
|
|
165
|
+
]
|
|
166
|
+
}
|
|
167
|
+
},
|
|
168
|
+
{
|
|
169
|
+
"name": "invalid",
|
|
170
|
+
"description": "Set to true when the field is invalid.",
|
|
171
|
+
"value": {
|
|
172
|
+
"type": [
|
|
173
|
+
"boolean",
|
|
174
|
+
"null",
|
|
175
|
+
"undefined"
|
|
176
|
+
]
|
|
177
|
+
}
|
|
178
|
+
},
|
|
179
|
+
{
|
|
180
|
+
"name": "required",
|
|
181
|
+
"description": "Specifies that the user must fill in a value.",
|
|
182
|
+
"value": {
|
|
183
|
+
"type": [
|
|
184
|
+
"boolean",
|
|
185
|
+
"null",
|
|
186
|
+
"undefined"
|
|
187
|
+
]
|
|
188
|
+
}
|
|
189
|
+
},
|
|
190
|
+
{
|
|
191
|
+
"name": "error-message",
|
|
192
|
+
"description": "Error to show when the field is invalid.",
|
|
193
|
+
"value": {
|
|
194
|
+
"type": [
|
|
195
|
+
"string",
|
|
196
|
+
"null",
|
|
197
|
+
"undefined"
|
|
198
|
+
]
|
|
199
|
+
}
|
|
200
|
+
},
|
|
201
|
+
{
|
|
202
|
+
"name": "helper-text",
|
|
203
|
+
"description": "String used for the helper text.",
|
|
204
|
+
"value": {
|
|
205
|
+
"type": [
|
|
206
|
+
"string",
|
|
207
|
+
"null",
|
|
208
|
+
"undefined"
|
|
209
|
+
]
|
|
210
|
+
}
|
|
211
|
+
},
|
|
212
|
+
{
|
|
213
|
+
"name": "accessible-name",
|
|
214
|
+
"description": "String used to label the component to screen reader users.",
|
|
215
|
+
"value": {
|
|
216
|
+
"type": [
|
|
217
|
+
"string",
|
|
218
|
+
"null",
|
|
219
|
+
"undefined"
|
|
220
|
+
]
|
|
221
|
+
}
|
|
222
|
+
},
|
|
223
|
+
{
|
|
224
|
+
"name": "accessible-name-ref",
|
|
225
|
+
"description": "Id of the element used as label of the component to screen reader users.",
|
|
226
|
+
"value": {
|
|
227
|
+
"type": [
|
|
228
|
+
"string",
|
|
229
|
+
"null",
|
|
230
|
+
"undefined"
|
|
231
|
+
]
|
|
232
|
+
}
|
|
233
|
+
},
|
|
234
|
+
{
|
|
235
|
+
"name": "value",
|
|
236
|
+
"description": "The value of the radio group.",
|
|
237
|
+
"value": {
|
|
238
|
+
"type": [
|
|
239
|
+
"string"
|
|
240
|
+
]
|
|
241
|
+
}
|
|
242
|
+
},
|
|
243
|
+
{
|
|
244
|
+
"name": "readonly",
|
|
245
|
+
"description": "When present, the user cannot modify the value of the radio group.\nThe property works similarly to the `disabled` property.\nWhile the `disabled` property disables all radio buttons inside the group,\nthe `readonly` property disables only unchecked ones.",
|
|
246
|
+
"value": {
|
|
247
|
+
"type": [
|
|
248
|
+
"boolean"
|
|
249
|
+
]
|
|
250
|
+
}
|
|
251
|
+
},
|
|
252
|
+
{
|
|
253
|
+
"name": "theme",
|
|
254
|
+
"description": "The theme variants to apply to the component.",
|
|
255
|
+
"value": {
|
|
256
|
+
"type": [
|
|
257
|
+
"string",
|
|
258
|
+
"null",
|
|
259
|
+
"undefined"
|
|
260
|
+
]
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
],
|
|
264
|
+
"js": {
|
|
265
|
+
"properties": [
|
|
266
|
+
{
|
|
267
|
+
"name": "disabled",
|
|
268
|
+
"description": "If true, the user cannot interact with this element.",
|
|
269
|
+
"value": {
|
|
270
|
+
"type": [
|
|
271
|
+
"boolean",
|
|
272
|
+
"null",
|
|
273
|
+
"undefined"
|
|
274
|
+
]
|
|
275
|
+
}
|
|
276
|
+
},
|
|
277
|
+
{
|
|
278
|
+
"name": "label",
|
|
279
|
+
"description": "The label text for the input node.\nWhen no light dom defined via [slot=label], this value will be used.",
|
|
280
|
+
"value": {
|
|
281
|
+
"type": [
|
|
282
|
+
"string",
|
|
283
|
+
"null",
|
|
284
|
+
"undefined"
|
|
285
|
+
]
|
|
286
|
+
}
|
|
287
|
+
},
|
|
288
|
+
{
|
|
289
|
+
"name": "invalid",
|
|
290
|
+
"description": "Set to true when the field is invalid.",
|
|
291
|
+
"value": {
|
|
292
|
+
"type": [
|
|
293
|
+
"boolean",
|
|
294
|
+
"null",
|
|
295
|
+
"undefined"
|
|
296
|
+
]
|
|
297
|
+
}
|
|
298
|
+
},
|
|
299
|
+
{
|
|
300
|
+
"name": "required",
|
|
301
|
+
"description": "Specifies that the user must fill in a value.",
|
|
302
|
+
"value": {
|
|
303
|
+
"type": [
|
|
304
|
+
"boolean",
|
|
305
|
+
"null",
|
|
306
|
+
"undefined"
|
|
307
|
+
]
|
|
308
|
+
}
|
|
309
|
+
},
|
|
310
|
+
{
|
|
311
|
+
"name": "errorMessage",
|
|
312
|
+
"description": "Error to show when the field is invalid.",
|
|
313
|
+
"value": {
|
|
314
|
+
"type": [
|
|
315
|
+
"string",
|
|
316
|
+
"null",
|
|
317
|
+
"undefined"
|
|
318
|
+
]
|
|
319
|
+
}
|
|
320
|
+
},
|
|
321
|
+
{
|
|
322
|
+
"name": "helperText",
|
|
323
|
+
"description": "String used for the helper text.",
|
|
324
|
+
"value": {
|
|
325
|
+
"type": [
|
|
326
|
+
"string",
|
|
327
|
+
"null",
|
|
328
|
+
"undefined"
|
|
329
|
+
]
|
|
330
|
+
}
|
|
331
|
+
},
|
|
332
|
+
{
|
|
333
|
+
"name": "accessibleName",
|
|
334
|
+
"description": "String used to label the component to screen reader users.",
|
|
335
|
+
"value": {
|
|
336
|
+
"type": [
|
|
337
|
+
"string",
|
|
338
|
+
"null",
|
|
339
|
+
"undefined"
|
|
340
|
+
]
|
|
341
|
+
}
|
|
342
|
+
},
|
|
343
|
+
{
|
|
344
|
+
"name": "accessibleNameRef",
|
|
345
|
+
"description": "Id of the element used as label of the component to screen reader users.",
|
|
346
|
+
"value": {
|
|
347
|
+
"type": [
|
|
348
|
+
"string",
|
|
349
|
+
"null",
|
|
350
|
+
"undefined"
|
|
351
|
+
]
|
|
352
|
+
}
|
|
353
|
+
},
|
|
354
|
+
{
|
|
355
|
+
"name": "value",
|
|
356
|
+
"description": "The value of the radio group.",
|
|
357
|
+
"value": {
|
|
358
|
+
"type": [
|
|
359
|
+
"string"
|
|
360
|
+
]
|
|
361
|
+
}
|
|
362
|
+
},
|
|
363
|
+
{
|
|
364
|
+
"name": "readonly",
|
|
365
|
+
"description": "When present, the user cannot modify the value of the radio group.\nThe property works similarly to the `disabled` property.\nWhile the `disabled` property disables all radio buttons inside the group,\nthe `readonly` property disables only unchecked ones.",
|
|
366
|
+
"value": {
|
|
367
|
+
"type": [
|
|
368
|
+
"boolean"
|
|
369
|
+
]
|
|
370
|
+
}
|
|
371
|
+
}
|
|
372
|
+
],
|
|
373
|
+
"events": [
|
|
374
|
+
{
|
|
375
|
+
"name": "validated",
|
|
376
|
+
"description": "Fired whenever the field is validated."
|
|
377
|
+
},
|
|
378
|
+
{
|
|
379
|
+
"name": "value-changed",
|
|
380
|
+
"description": "Fired when the `value` property changes."
|
|
381
|
+
},
|
|
382
|
+
{
|
|
383
|
+
"name": "invalid-changed",
|
|
384
|
+
"description": "Fired when the `invalid` property changes."
|
|
385
|
+
}
|
|
386
|
+
]
|
|
387
|
+
}
|
|
388
|
+
}
|
|
389
|
+
]
|
|
390
|
+
}
|
|
391
|
+
}
|
|
392
|
+
}
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json.schemastore.org/web-types",
|
|
3
|
+
"name": "@vaadin/radio-group",
|
|
4
|
+
"version": "24.3.0-alpha2",
|
|
5
|
+
"description-markup": "markdown",
|
|
6
|
+
"framework": "lit",
|
|
7
|
+
"framework-config": {
|
|
8
|
+
"enable-when": {
|
|
9
|
+
"node-packages": [
|
|
10
|
+
"lit"
|
|
11
|
+
]
|
|
12
|
+
}
|
|
13
|
+
},
|
|
14
|
+
"contributions": {
|
|
15
|
+
"html": {
|
|
16
|
+
"elements": [
|
|
17
|
+
{
|
|
18
|
+
"name": "vaadin-radio-button",
|
|
19
|
+
"description": "`<vaadin-radio-button>` is a web component representing a choice in a radio group.\nOnly one radio button in the group can be selected at the same time.\n\n```html\n<vaadin-radio-group label=\"Travel class\">\n <vaadin-radio-button value=\"economy\" label=\"Economy\"></vaadin-radio-button>\n <vaadin-radio-button value=\"business\" label=\"Business\"></vaadin-radio-button>\n <vaadin-radio-button value=\"firstClass\" label=\"First Class\"></vaadin-radio-button>\n</vaadin-radio-group>\n```\n\n### Styling\n\nThe following shadow DOM parts are available for styling:\n\nPart name | Description\n------------|----------------\n`radio` | The wrapper element that contains slotted `<input type=\"radio\">`.\n\nThe following state attributes are available for styling:\n\nAttribute | Description | Part name\n-------------|-------------|------------\n`active` | Set when the radio button is pressed down, either with a pointer or the keyboard. | `:host`\n`disabled` | Set when the radio button is disabled. | `:host`\n`focus-ring` | Set when the radio button is focused using the keyboard. | `:host`\n`focused` | Set when the radio button is focused. | `:host`\n`checked` | Set when the radio button is checked. | `:host`\n`has-label` | Set when the radio button has a label. | `:host`\n\nSee [Styling Components](https://vaadin.com/docs/latest/styling/styling-components) documentation.",
|
|
20
|
+
"extension": true,
|
|
21
|
+
"attributes": [
|
|
22
|
+
{
|
|
23
|
+
"name": "?disabled",
|
|
24
|
+
"description": "If true, the user cannot interact with this element.",
|
|
25
|
+
"value": {
|
|
26
|
+
"kind": "expression"
|
|
27
|
+
}
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
"name": "?checked",
|
|
31
|
+
"description": "True if the element is checked.",
|
|
32
|
+
"value": {
|
|
33
|
+
"kind": "expression"
|
|
34
|
+
}
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
"name": ".value",
|
|
38
|
+
"description": "The value of the field.",
|
|
39
|
+
"value": {
|
|
40
|
+
"kind": "expression"
|
|
41
|
+
}
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
"name": ".label",
|
|
45
|
+
"description": "The label text for the input node.\nWhen no light dom defined via [slot=label], this value will be used.",
|
|
46
|
+
"value": {
|
|
47
|
+
"kind": "expression"
|
|
48
|
+
}
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
"name": ".name",
|
|
52
|
+
"description": "The name of the radio button.",
|
|
53
|
+
"value": {
|
|
54
|
+
"kind": "expression"
|
|
55
|
+
}
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
"name": "@value-changed",
|
|
59
|
+
"description": "Fired when the `value` property changes.",
|
|
60
|
+
"value": {
|
|
61
|
+
"kind": "expression"
|
|
62
|
+
}
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
"name": "@checked-changed",
|
|
66
|
+
"description": "Fired when the `checked` property changes.",
|
|
67
|
+
"value": {
|
|
68
|
+
"kind": "expression"
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
]
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
"name": "vaadin-radio-group",
|
|
75
|
+
"description": "`<vaadin-radio-group>` is a web component that allows the user to choose one item from a group of choices.\n\n```html\n<vaadin-radio-group label=\"Travel class\">\n <vaadin-radio-button value=\"economy\" label=\"Economy\"></vaadin-radio-button>\n <vaadin-radio-button value=\"business\" label=\"Business\"></vaadin-radio-button>\n <vaadin-radio-button value=\"firstClass\" label=\"First Class\"></vaadin-radio-button>\n</vaadin-radio-group>\n```\n\n### Styling\n\nThe following shadow DOM parts are available for styling:\n\nPart name | Description\n---------------------|----------------\n`label` | The slotted label element wrapper\n`group-field` | The radio button elements wrapper\n`helper-text` | The slotted helper text element wrapper\n`error-message` | The slotted error message element wrapper\n`required-indicator` | The `required` state indicator element\n\nThe following state attributes are available for styling:\n\nAttribute | Description | Part name\n--------------------|-------------------------------------------|------------\n`disabled` | Set when the element is disabled | :host\n`readonly` | Set when the element is readonly | :host\n`invalid` | Set when the element is invalid | :host\n`focused` | Set when the element is focused | :host\n`has-label` | Set when the element has a label | :host\n`has-value` | Set when the element has a value | :host\n`has-helper` | Set when the element has helper text | :host\n`has-error-message` | Set when the element has an error message | :host\n\nSee [Styling Components](https://vaadin.com/docs/latest/styling/styling-components) documentation.",
|
|
76
|
+
"extension": true,
|
|
77
|
+
"attributes": [
|
|
78
|
+
{
|
|
79
|
+
"name": "?disabled",
|
|
80
|
+
"description": "If true, the user cannot interact with this element.",
|
|
81
|
+
"value": {
|
|
82
|
+
"kind": "expression"
|
|
83
|
+
}
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
"name": "?invalid",
|
|
87
|
+
"description": "Set to true when the field is invalid.",
|
|
88
|
+
"value": {
|
|
89
|
+
"kind": "expression"
|
|
90
|
+
}
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
"name": "?required",
|
|
94
|
+
"description": "Specifies that the user must fill in a value.",
|
|
95
|
+
"value": {
|
|
96
|
+
"kind": "expression"
|
|
97
|
+
}
|
|
98
|
+
},
|
|
99
|
+
{
|
|
100
|
+
"name": "?readonly",
|
|
101
|
+
"description": "When present, the user cannot modify the value of the radio group.\nThe property works similarly to the `disabled` property.\nWhile the `disabled` property disables all radio buttons inside the group,\nthe `readonly` property disables only unchecked ones.",
|
|
102
|
+
"value": {
|
|
103
|
+
"kind": "expression"
|
|
104
|
+
}
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
"name": ".label",
|
|
108
|
+
"description": "The label text for the input node.\nWhen no light dom defined via [slot=label], this value will be used.",
|
|
109
|
+
"value": {
|
|
110
|
+
"kind": "expression"
|
|
111
|
+
}
|
|
112
|
+
},
|
|
113
|
+
{
|
|
114
|
+
"name": ".errorMessage",
|
|
115
|
+
"description": "Error to show when the field is invalid.",
|
|
116
|
+
"value": {
|
|
117
|
+
"kind": "expression"
|
|
118
|
+
}
|
|
119
|
+
},
|
|
120
|
+
{
|
|
121
|
+
"name": ".helperText",
|
|
122
|
+
"description": "String used for the helper text.",
|
|
123
|
+
"value": {
|
|
124
|
+
"kind": "expression"
|
|
125
|
+
}
|
|
126
|
+
},
|
|
127
|
+
{
|
|
128
|
+
"name": ".accessibleName",
|
|
129
|
+
"description": "String used to label the component to screen reader users.",
|
|
130
|
+
"value": {
|
|
131
|
+
"kind": "expression"
|
|
132
|
+
}
|
|
133
|
+
},
|
|
134
|
+
{
|
|
135
|
+
"name": ".accessibleNameRef",
|
|
136
|
+
"description": "Id of the element used as label of the component to screen reader users.",
|
|
137
|
+
"value": {
|
|
138
|
+
"kind": "expression"
|
|
139
|
+
}
|
|
140
|
+
},
|
|
141
|
+
{
|
|
142
|
+
"name": ".value",
|
|
143
|
+
"description": "The value of the radio group.",
|
|
144
|
+
"value": {
|
|
145
|
+
"kind": "expression"
|
|
146
|
+
}
|
|
147
|
+
},
|
|
148
|
+
{
|
|
149
|
+
"name": "@validated",
|
|
150
|
+
"description": "Fired whenever the field is validated.",
|
|
151
|
+
"value": {
|
|
152
|
+
"kind": "expression"
|
|
153
|
+
}
|
|
154
|
+
},
|
|
155
|
+
{
|
|
156
|
+
"name": "@value-changed",
|
|
157
|
+
"description": "Fired when the `value` property changes.",
|
|
158
|
+
"value": {
|
|
159
|
+
"kind": "expression"
|
|
160
|
+
}
|
|
161
|
+
},
|
|
162
|
+
{
|
|
163
|
+
"name": "@invalid-changed",
|
|
164
|
+
"description": "Fired when the `invalid` property changes.",
|
|
165
|
+
"value": {
|
|
166
|
+
"kind": "expression"
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
]
|
|
170
|
+
}
|
|
171
|
+
]
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
}
|