@nldd/design-system 0.8.87 → 0.8.89
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/README.md +2 -2
- package/custom-elements.json +305 -66
- package/dist/components/components.js +1007 -218
- package/dist/components/content/image/image.d.ts +23 -3
- package/dist/components/content/image/image.d.ts.map +1 -1
- package/dist/components/content/image/image.js +74 -17
- package/dist/components/content/image/image.js.map +1 -1
- package/dist/components/content/image/image.template.js +1 -1
- package/dist/components/content/image/image.template.js.map +1 -1
- package/dist/components/{dist-LX8LuMac.js → dist-BLaE_n_F.js} +1 -1
- package/dist/components/{dist-CX3DK4i7.js → dist-BeymuiGt.js} +3 -3
- package/dist/components/{dist-CbCO0WCd.js → dist-CENYEz7C.js} +1 -1
- package/dist/components/{dist-B_Mnmrj4.js → dist-CYLM5ciE.js} +1 -1
- package/dist/components/{dist-fIxe0l7k.js → dist-DHA-0RyT.js} +91 -34
- package/dist/components/{dist-CgDuh26K.js → dist-D_ckX1sK.js} +1 -1
- package/dist/components/{dist-eVFegyjM.js → dist-Dh_b9r4M.js} +1 -1
- package/dist/components/{dist-DXZ-cFAl.js → dist-DkZlotgT.js} +2 -2
- package/dist/components/{dist-CSrO_mYe.js → dist-TCqV9dho.js} +1 -1
- package/dist/components/{dist-ByH8hQze.js → dist-Y54Lma86.js} +2 -2
- package/dist/components/{dist-CRwuSgMM.js → dist-yyE8P2O6.js} +2 -2
- package/dist/components/inputs/radio-button/radio-button.d.ts +58 -18
- package/dist/components/inputs/radio-button/radio-button.d.ts.map +1 -1
- package/dist/components/inputs/radio-button/radio-button.js +136 -29
- package/dist/components/inputs/radio-button/radio-button.js.map +1 -1
- package/dist/components/inputs/radio-button/radio-button.styles.d.ts.map +1 -1
- package/dist/components/inputs/radio-button/radio-button.styles.js +17 -23
- package/dist/components/inputs/radio-button/radio-button.styles.js.map +1 -1
- package/dist/components/inputs/radio-button/radio-button.template.d.ts.map +1 -1
- package/dist/components/inputs/radio-button/radio-button.template.js +13 -10
- package/dist/components/inputs/radio-button/radio-button.template.js.map +1 -1
- package/dist/components/inputs/radio-button-field/radio-button-field.d.ts +65 -18
- package/dist/components/inputs/radio-button-field/radio-button-field.d.ts.map +1 -1
- package/dist/components/inputs/radio-button-field/radio-button-field.js +151 -29
- package/dist/components/inputs/radio-button-field/radio-button-field.js.map +1 -1
- package/dist/components/inputs/radio-button-field/radio-button-field.styles.d.ts.map +1 -1
- package/dist/components/inputs/radio-button-field/radio-button-field.styles.js +17 -0
- package/dist/components/inputs/radio-button-field/radio-button-field.styles.js.map +1 -1
- package/dist/components/inputs/radio-button-field/radio-button-field.template.d.ts.map +1 -1
- package/dist/components/inputs/radio-button-field/radio-button-field.template.js +21 -12
- package/dist/components/inputs/radio-button-field/radio-button-field.template.js.map +1 -1
- package/dist/components/inputs/radio-button-group/radio-button-group.d.ts +3 -0
- package/dist/components/inputs/radio-button-group/radio-button-group.d.ts.map +1 -1
- package/dist/components/inputs/radio-button-group/radio-button-group.js +16 -4
- package/dist/components/inputs/radio-button-group/radio-button-group.js.map +1 -1
- package/dist/components/inputs/segmented-control/segmented-control.d.ts +46 -13
- package/dist/components/inputs/segmented-control/segmented-control.d.ts.map +1 -1
- package/dist/components/inputs/segmented-control/segmented-control.js +145 -16
- package/dist/components/inputs/segmented-control/segmented-control.js.map +1 -1
- package/dist/components/inputs/segmented-control/segmented-control.styles.d.ts.map +1 -1
- package/dist/components/inputs/segmented-control/segmented-control.styles.js +16 -0
- package/dist/components/inputs/segmented-control/segmented-control.styles.js.map +1 -1
- package/dist/components/inputs/segmented-control/segmented-control.template.d.ts.map +1 -1
- package/dist/components/inputs/segmented-control/segmented-control.template.js +47 -24
- package/dist/components/inputs/segmented-control/segmented-control.template.js.map +1 -1
- package/dist/components/inputs/text-editor/text-editor.cursor.d.ts.map +1 -1
- package/dist/components/inputs/text-editor/text-editor.cursor.js +14 -1
- package/dist/components/inputs/text-editor/text-editor.cursor.js.map +1 -1
- package/dist/components/inputs/text-editor/text-editor.mentions.d.ts.map +1 -1
- package/dist/components/inputs/text-editor/text-editor.mentions.js +3 -1
- package/dist/components/inputs/text-editor/text-editor.mentions.js.map +1 -1
- package/dist/components/inputs/toggle-button/toggle-button.d.ts +36 -2
- package/dist/components/inputs/toggle-button/toggle-button.d.ts.map +1 -1
- package/dist/components/inputs/toggle-button/toggle-button.js +116 -3
- package/dist/components/inputs/toggle-button/toggle-button.js.map +1 -1
- package/dist/components/inputs/toggle-button/toggle-button.styles.d.ts.map +1 -1
- package/dist/components/inputs/toggle-button/toggle-button.styles.js +17 -1
- package/dist/components/inputs/toggle-button/toggle-button.styles.js.map +1 -1
- package/dist/components/inputs/toggle-button/toggle-button.template.d.ts.map +1 -1
- package/dist/components/inputs/toggle-button/toggle-button.template.js +25 -2
- package/dist/components/inputs/toggle-button/toggle-button.template.js.map +1 -1
- package/dist/components/inputs/toggle-button-group/toggle-button-group.d.ts +4 -0
- package/dist/components/inputs/toggle-button-group/toggle-button-group.d.ts.map +1 -1
- package/dist/components/inputs/toggle-button-group/toggle-button-group.js +21 -2
- package/dist/components/inputs/toggle-button-group/toggle-button-group.js.map +1 -1
- package/dist/components/layout/page/page.d.ts +23 -5
- package/dist/components/layout/page/page.d.ts.map +1 -1
- package/dist/components/layout/page/page.js +39 -34
- package/dist/components/layout/page/page.js.map +1 -1
- package/dist/components/layout/page/page.styles.d.ts.map +1 -1
- package/dist/components/layout/page/page.styles.js +2 -0
- package/dist/components/layout/page/page.styles.js.map +1 -1
- package/dist/components/layout/sheet/sheet.template.d.ts.map +1 -1
- package/dist/components/layout/sheet/sheet.template.js +3 -0
- package/dist/components/layout/sheet/sheet.template.js.map +1 -1
- package/dist/components/layout/window/window.template.d.ts.map +1 -1
- package/dist/components/layout/window/window.template.js +3 -0
- package/dist/components/layout/window/window.template.js.map +1 -1
- package/dist/components/lists-and-tables/list/list.d.ts +1 -1
- package/dist/components/lists-and-tables/list/list.d.ts.map +1 -1
- package/dist/components/lists-and-tables/list/list.js +4 -3
- package/dist/components/lists-and-tables/list/list.js.map +1 -1
- package/dist/components/lists-and-tables/list/list.template.d.ts.map +1 -1
- package/dist/components/lists-and-tables/list/list.template.js +15 -10
- package/dist/components/lists-and-tables/list/list.template.js.map +1 -1
- package/dist/components/navigation/menu-bar/menu-bar.d.ts +4 -2
- package/dist/components/navigation/menu-bar/menu-bar.d.ts.map +1 -1
- package/dist/components/navigation/menu-bar/menu-bar.js +4 -2
- package/dist/components/navigation/menu-bar/menu-bar.js.map +1 -1
- package/dist/components/status-and-feedback/modal-dialog/modal-dialog.template.d.ts.map +1 -1
- package/dist/components/status-and-feedback/modal-dialog/modal-dialog.template.js +3 -0
- package/dist/components/status-and-feedback/modal-dialog/modal-dialog.template.js.map +1 -1
- package/dist/components/status-and-feedback/notification/notification-region.d.ts +4 -0
- package/dist/components/status-and-feedback/notification/notification-region.d.ts.map +1 -1
- package/dist/components/status-and-feedback/notification/notification-region.js +161 -19
- package/dist/components/status-and-feedback/notification/notification-region.js.map +1 -1
- package/dist/components/status-and-feedback/notification/notification.d.ts +17 -0
- package/dist/components/status-and-feedback/notification/notification.d.ts.map +1 -1
- package/dist/components/status-and-feedback/notification/notification.js +33 -0
- package/dist/components/status-and-feedback/notification/notification.js.map +1 -1
- package/dist/components/status-and-feedback/notification/notification.styles.d.ts.map +1 -1
- package/dist/components/status-and-feedback/notification/notification.styles.js +6 -0
- package/dist/components/status-and-feedback/notification/notification.styles.js.map +1 -1
- package/dist/css/variables.css +2 -2
- package/dist/nldd.min.js +629 -540
- package/dist/types/vue.d.ts +24 -20
- package/dist/utilities/described-by-mixin.d.ts +2 -2
- package/dist/utilities/described-by-mixin.d.ts.map +1 -1
- package/dist/utilities/described-by-mixin.js +11 -6
- package/dist/utilities/described-by-mixin.js.map +1 -1
- package/dist/utilities/radio-grouping.d.ts +66 -0
- package/dist/utilities/radio-grouping.d.ts.map +1 -0
- package/dist/utilities/radio-grouping.js +133 -0
- package/dist/utilities/radio-grouping.js.map +1 -0
- package/dist/utilities/radio-position.d.ts +20 -0
- package/dist/utilities/radio-position.d.ts.map +1 -0
- package/dist/utilities/radio-position.js +11 -0
- package/dist/utilities/radio-position.js.map +1 -0
- package/package.json +10 -10
|
@@ -1,27 +1,37 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Nederlandse Digitale Dienst Radio Button Field Component (Lit + TypeScript)
|
|
3
3
|
*
|
|
4
|
-
* A radio button with an inline label. Use inside nldd-radio-button-group
|
|
5
|
-
*
|
|
4
|
+
* A radio button with an inline label. Use inside nldd-radio-button-group,
|
|
5
|
+
* which sets the name and labels the group.
|
|
6
6
|
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
7
|
+
* Fields that stand on their own group by name, the way native radios do:
|
|
8
|
+
* checking one unchecks the others, the arrow keys move between them and Tab
|
|
9
|
+
* stops at the group once. Put them in a container with role="radiogroup", or
|
|
10
|
+
* a screen reader has nothing to count them from.
|
|
11
|
+
*
|
|
12
|
+
* The field is the radio: it carries the role, the state, the label it is
|
|
13
|
+
* announced by and the focus, and the nldd-radio-button inside only draws the
|
|
14
|
+
* shape. A radio of its own in there would be a second control inside a
|
|
15
|
+
* control, and a group of one to count.
|
|
16
|
+
*
|
|
17
|
+
* Form-associated: the checked field submits its `value` under `name`.
|
|
18
|
+
* Unchecking siblings is the group's job, so exactly one value per group
|
|
19
|
+
* reaches the form.
|
|
11
20
|
*
|
|
12
21
|
* @element nldd-radio-button-field
|
|
13
22
|
* @attr {boolean} checked - Checked state
|
|
14
23
|
* @attr {boolean} disabled - Disabled state
|
|
15
24
|
* @attr {string} value - Value for form submission
|
|
16
|
-
* @attr {string} name - Radio group name for form submission
|
|
17
|
-
* @attr {boolean} required - Required state
|
|
25
|
+
* @attr {string} name - Radio group name for form submission; ties the fields of one group together. Set automatically by nldd-radio-button-group.
|
|
26
|
+
* @attr {boolean} required - Required state. What it asks is whether anything in the group is checked, as a native radio does. Set automatically by nldd-radio-button-group.
|
|
18
27
|
* @attr {string} label - Label text for the radio button
|
|
19
28
|
* @attr {boolean} invalid - Marks the control as invalid. Announced with aria-invalid; nothing is drawn for it.
|
|
20
29
|
*
|
|
21
30
|
* @fires change - When checked state changes; detail: { checked: boolean, value: string }
|
|
22
31
|
*/
|
|
23
|
-
import { LitElement } from 'lit';
|
|
32
|
+
import { LitElement, type PropertyValues } from 'lit';
|
|
24
33
|
import { type FormValue } from '../../../utilities/form-associated-mixin.js';
|
|
34
|
+
import type { RadioPosition } from '../../../utilities/radio-position.js';
|
|
25
35
|
declare const NLDDRadioButtonField_base: typeof LitElement & (abstract new (...args: any[]) => LitElement & import("../../../utilities/form-associated-mixin.js").FormAssociatedElement) & (abstract new (...args: any[]) => import("../../../utilities/described-by-mixin.js").DescribedElement);
|
|
26
36
|
export declare class NLDDRadioButtonField extends NLDDRadioButtonField_base {
|
|
27
37
|
static styles: import("lit").CSSResult;
|
|
@@ -48,22 +58,59 @@ export declare class NLDDRadioButtonField extends NLDDRadioButtonField_base {
|
|
|
48
58
|
* choosing not to show something is not a reason to keep quiet about it.
|
|
49
59
|
*/
|
|
50
60
|
invalid: boolean;
|
|
61
|
+
/** Set by nldd-radio-button-group: this field's place in the group, which it
|
|
62
|
+
* cannot count by itself. */
|
|
63
|
+
_groupPosition: RadioPosition | null;
|
|
64
|
+
/** Set by nldd-radio-button-group. What `required` asks of a radio is
|
|
65
|
+
* whether anything in the group is checked, not this one. */
|
|
66
|
+
_groupHasSelection: boolean;
|
|
67
|
+
/** Its place among the fields that share its name, for a field that stands
|
|
68
|
+
* outside an nldd-radio-button-group. The group wins where it is there. */
|
|
69
|
+
private _grouping;
|
|
70
|
+
/** The place it is announced with: from the group around it, or from the
|
|
71
|
+
* radios it shares a name with. */
|
|
72
|
+
get _position(): RadioPosition | null;
|
|
73
|
+
/** Whether anything in its group is checked. Either source saying so is
|
|
74
|
+
* enough: they answer for the same set of radios. */
|
|
75
|
+
get _answered(): boolean;
|
|
76
|
+
/** The aria-label this field wrote on itself, so it only takes back its own. */
|
|
77
|
+
private _appliedLabel;
|
|
78
|
+
/** The field holds the focus, the shape inside shows it. Only for the
|
|
79
|
+
* keyboard, as a focus ring is: a click does not draw one. */
|
|
80
|
+
_focusRing: boolean;
|
|
81
|
+
connectedCallback(): void;
|
|
82
|
+
disconnectedCallback(): void;
|
|
51
83
|
firstUpdated(): void;
|
|
84
|
+
/** Counting happens before the render, not after it: the place this field is
|
|
85
|
+
* given decides what `updated()` writes on it, and a count from there would
|
|
86
|
+
* ask for a second render of what was just drawn. */
|
|
87
|
+
willUpdate(changed: PropertyValues<this>): void;
|
|
88
|
+
updated(changed: PropertyValues<this>): void;
|
|
89
|
+
/**
|
|
90
|
+
* This element is the radio, label and all.
|
|
91
|
+
*
|
|
92
|
+
* A native radio in a shadow root of its own is a group of one, which a
|
|
93
|
+
* screen reader counts as "1 of 1" and Tab stops at one by one. The role on
|
|
94
|
+
* the element itself puts the whole group back in one tree, and the label it
|
|
95
|
+
* renders is the name it is announced by.
|
|
96
|
+
*/
|
|
97
|
+
private _syncHostAria;
|
|
52
98
|
/** An unchecked radio contributes nothing to the form. The group calls
|
|
53
99
|
* `commitFormValue()` on the siblings it unchecks, so a listener that reads
|
|
54
100
|
* the form while `change` is still propagating never sees two values. */
|
|
55
101
|
formValue(): FormValue;
|
|
56
102
|
formResetCallback(): void;
|
|
57
103
|
formStateRestoreCallback(state: File | string | FormData | null): void;
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
/** The
|
|
104
|
+
/** Checks this field, the way a click or the space bar does. The group hears
|
|
105
|
+
* the change and unchecks the others; without a group the fields that share
|
|
106
|
+
* its name are unchecked here. */
|
|
107
|
+
select(): void;
|
|
108
|
+
private _onClick;
|
|
109
|
+
private _onFocus;
|
|
110
|
+
private _onBlur;
|
|
111
|
+
private _onKeyDown;
|
|
112
|
+
/** The element assistive software meets is this one, so the description and
|
|
113
|
+
* the invalid state belong here rather than on the shape inside. */
|
|
67
114
|
describedTarget(): Element | null;
|
|
68
115
|
render(): import("lit-html").TemplateResult;
|
|
69
116
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"radio-button-field.d.ts","sourceRoot":"","sources":["../../../../src/components/inputs/radio-button-field/radio-button-field.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"radio-button-field.d.ts","sourceRoot":"","sources":["../../../../src/components/inputs/radio-button-field/radio-button-field.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,OAAO,EAAE,UAAU,EAAE,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAEtD,OAAO,EAAkB,KAAK,SAAS,EAAE,MAAM,6CAA6C,CAAC;AAK7F,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAC;;AAM1E,qBACa,oBAAqB,SAAQ,yBAAuC;IAEhF,OAAgB,MAAM,0BAA0B;IAEhD;wEACoE;IACpE,MAAM,CAAC,WAAW,UAAQ;IAG1B,OAAO,CAAC,eAAe,CAAS;IAGhC,OAAO,UAAS;IAGhB,QAAQ,UAAS;IAGjB,KAAK,SAAM;IAEX;;sCAEkC;IAElC,IAAI,SAAM;IAGV,QAAQ,UAAS;IAGjB,KAAK,SAAM;IAGX;;;;;;;;OAQG;IAEH,OAAO,UAAS;IAEhB;kCAC8B;IAE9B,cAAc,EAAE,aAAa,GAAG,IAAI,CAAQ;IAE5C;kEAC8D;IAE9D,kBAAkB,UAAS;IAE3B;gFAC4E;IAC5E,OAAO,CAAC,SAAS,CAA2B;IAE5C;wCACoC;IACpC,IAAI,SAAS,IAAI,aAAa,GAAG,IAAI,CAEpC;IAED;0DACsD;IACtD,IAAI,SAAS,IAAI,OAAO,CAEvB;IAED,gFAAgF;IAChF,OAAO,CAAC,aAAa,CAAuB;IAE5C;mEAC+D;IAE/D,UAAU,UAAS;IAEV,iBAAiB,IAAI,IAAI;IAQzB,oBAAoB,IAAI,IAAI;IAQ5B,YAAY,IAAI,IAAI;IAI7B;;0DAEsD;IAC7C,UAAU,CAAC,OAAO,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;IAM/C,OAAO,CAAC,OAAO,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;IAKrD;;;;;;;OAOG;IACH,OAAO,CAAC,aAAa;IAoBrB;;8EAE0E;IACjE,SAAS,IAAI,SAAS;IAI/B,iBAAiB,IAAI,IAAI;IAKzB,wBAAwB,CAAC,KAAK,EAAE,IAAI,GAAG,MAAM,GAAG,QAAQ,GAAG,IAAI,GAAG,IAAI;IAItE;;uCAEmC;IAC5B,MAAM,IAAI,IAAI;IAYrB,OAAO,CAAC,QAAQ,CAEd;IAEF,OAAO,CAAC,QAAQ,CAEd;IAEF,OAAO,CAAC,OAAO,CAEb;IAEF,OAAO,CAAC,UAAU,CAehB;IAEF;yEACqE;IAC5D,eAAe,IAAI,OAAO,GAAG,IAAI;IAIjC,MAAM;CAGf;AAED,OAAO,CAAC,MAAM,CAAC;IACd,UAAU,qBAAqB;QAC9B,yBAAyB,EAAE,oBAAoB,CAAC;KAChD;CACD"}
|
|
@@ -7,32 +7,45 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
7
7
|
/**
|
|
8
8
|
* Nederlandse Digitale Dienst Radio Button Field Component (Lit + TypeScript)
|
|
9
9
|
*
|
|
10
|
-
* A radio button with an inline label. Use inside nldd-radio-button-group
|
|
11
|
-
*
|
|
10
|
+
* A radio button with an inline label. Use inside nldd-radio-button-group,
|
|
11
|
+
* which sets the name and labels the group.
|
|
12
12
|
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
13
|
+
* Fields that stand on their own group by name, the way native radios do:
|
|
14
|
+
* checking one unchecks the others, the arrow keys move between them and Tab
|
|
15
|
+
* stops at the group once. Put them in a container with role="radiogroup", or
|
|
16
|
+
* a screen reader has nothing to count them from.
|
|
17
|
+
*
|
|
18
|
+
* The field is the radio: it carries the role, the state, the label it is
|
|
19
|
+
* announced by and the focus, and the nldd-radio-button inside only draws the
|
|
20
|
+
* shape. A radio of its own in there would be a second control inside a
|
|
21
|
+
* control, and a group of one to count.
|
|
22
|
+
*
|
|
23
|
+
* Form-associated: the checked field submits its `value` under `name`.
|
|
24
|
+
* Unchecking siblings is the group's job, so exactly one value per group
|
|
25
|
+
* reaches the form.
|
|
17
26
|
*
|
|
18
27
|
* @element nldd-radio-button-field
|
|
19
28
|
* @attr {boolean} checked - Checked state
|
|
20
29
|
* @attr {boolean} disabled - Disabled state
|
|
21
30
|
* @attr {string} value - Value for form submission
|
|
22
|
-
* @attr {string} name - Radio group name for form submission
|
|
23
|
-
* @attr {boolean} required - Required state
|
|
31
|
+
* @attr {string} name - Radio group name for form submission; ties the fields of one group together. Set automatically by nldd-radio-button-group.
|
|
32
|
+
* @attr {boolean} required - Required state. What it asks is whether anything in the group is checked, as a native radio does. Set automatically by nldd-radio-button-group.
|
|
24
33
|
* @attr {string} label - Label text for the radio button
|
|
25
34
|
* @attr {boolean} invalid - Marks the control as invalid. Announced with aria-invalid; nothing is drawn for it.
|
|
26
35
|
*
|
|
27
36
|
* @fires change - When checked state changes; detail: { checked: boolean, value: string }
|
|
28
37
|
*/
|
|
29
38
|
import { LitElement } from 'lit';
|
|
30
|
-
import { customElement, property } from 'lit/decorators.js';
|
|
39
|
+
import { customElement, property, state } from 'lit/decorators.js';
|
|
31
40
|
import { FormAssociated } from '../../../utilities/form-associated-mixin.js';
|
|
32
41
|
import { radioButtonFieldStyles } from './radio-button-field.styles.js';
|
|
33
42
|
import { radioButtonFieldTemplate } from './radio-button-field.template.js';
|
|
34
43
|
import { DescribedBy } from '../../../utilities/described-by-mixin.js';
|
|
35
44
|
import { reflectNonDefault } from '../../../utilities/reflect-non-default.js';
|
|
45
|
+
import { RadioGrouping } from '../../../utilities/radio-grouping.js';
|
|
46
|
+
import { setOwnedAttribute } from '../../../utilities/owned-attribute.js';
|
|
47
|
+
import { submitOnEnter } from '../../../utilities/implicit-submission.js';
|
|
48
|
+
import { isKeyboardMode } from '../../../utilities/input-modality.js';
|
|
36
49
|
let NLDDRadioButtonField = class NLDDRadioButtonField extends DescribedBy(FormAssociated(LitElement)) {
|
|
37
50
|
constructor() {
|
|
38
51
|
super(...arguments);
|
|
@@ -56,10 +69,119 @@ let NLDDRadioButtonField = class NLDDRadioButtonField extends DescribedBy(FormAs
|
|
|
56
69
|
* choosing not to show something is not a reason to keep quiet about it.
|
|
57
70
|
*/
|
|
58
71
|
this.invalid = false;
|
|
72
|
+
/** Set by nldd-radio-button-group: this field's place in the group, which it
|
|
73
|
+
* cannot count by itself. */
|
|
74
|
+
this._groupPosition = null;
|
|
75
|
+
/** Set by nldd-radio-button-group. What `required` asks of a radio is
|
|
76
|
+
* whether anything in the group is checked, not this one. */
|
|
77
|
+
this._groupHasSelection = false;
|
|
78
|
+
/** Its place among the fields that share its name, for a field that stands
|
|
79
|
+
* outside an nldd-radio-button-group. The group wins where it is there. */
|
|
80
|
+
this._grouping = new RadioGrouping(this);
|
|
81
|
+
/** The aria-label this field wrote on itself, so it only takes back its own. */
|
|
82
|
+
this._appliedLabel = null;
|
|
83
|
+
/** The field holds the focus, the shape inside shows it. Only for the
|
|
84
|
+
* keyboard, as a focus ring is: a click does not draw one. */
|
|
85
|
+
this._focusRing = false;
|
|
86
|
+
this._onClick = () => {
|
|
87
|
+
this.select();
|
|
88
|
+
};
|
|
89
|
+
this._onFocus = () => {
|
|
90
|
+
this._focusRing = isKeyboardMode();
|
|
91
|
+
};
|
|
92
|
+
this._onBlur = () => {
|
|
93
|
+
this._focusRing = false;
|
|
94
|
+
};
|
|
95
|
+
this._onKeyDown = (e) => {
|
|
96
|
+
if (this.disabled)
|
|
97
|
+
return;
|
|
98
|
+
// Space checks it and Enter submits the form, as with a native radio.
|
|
99
|
+
if (e.key === ' ') {
|
|
100
|
+
e.preventDefault();
|
|
101
|
+
this.select();
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
104
|
+
if (e.key === 'Enter') {
|
|
105
|
+
submitOnEnter(this, e);
|
|
106
|
+
return;
|
|
107
|
+
}
|
|
108
|
+
// The arrow keys are the group's, and a field that has none moves through
|
|
109
|
+
// the fields it shares a name with, as native radios do.
|
|
110
|
+
if (!this._groupPosition)
|
|
111
|
+
this._grouping.moveWithArrow(e);
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
/** The place it is announced with: from the group around it, or from the
|
|
115
|
+
* radios it shares a name with. */
|
|
116
|
+
get _position() {
|
|
117
|
+
return this._groupPosition ?? this._grouping.position;
|
|
118
|
+
}
|
|
119
|
+
/** Whether anything in its group is checked. Either source saying so is
|
|
120
|
+
* enough: they answer for the same set of radios. */
|
|
121
|
+
get _answered() {
|
|
122
|
+
return this._groupHasSelection || this._grouping.answered;
|
|
123
|
+
}
|
|
124
|
+
connectedCallback() {
|
|
125
|
+
super.connectedCallback();
|
|
126
|
+
this.addEventListener('click', this._onClick);
|
|
127
|
+
this.addEventListener('keydown', this._onKeyDown);
|
|
128
|
+
this.addEventListener('focus', this._onFocus);
|
|
129
|
+
this.addEventListener('blur', this._onBlur);
|
|
130
|
+
}
|
|
131
|
+
disconnectedCallback() {
|
|
132
|
+
super.disconnectedCallback();
|
|
133
|
+
this.removeEventListener('click', this._onClick);
|
|
134
|
+
this.removeEventListener('keydown', this._onKeyDown);
|
|
135
|
+
this.removeEventListener('focus', this._onFocus);
|
|
136
|
+
this.removeEventListener('blur', this._onBlur);
|
|
59
137
|
}
|
|
60
138
|
firstUpdated() {
|
|
61
139
|
this._initialChecked = this.checked;
|
|
62
140
|
}
|
|
141
|
+
/** Counting happens before the render, not after it: the place this field is
|
|
142
|
+
* given decides what `updated()` writes on it, and a count from there would
|
|
143
|
+
* ask for a second render of what was just drawn. */
|
|
144
|
+
willUpdate(changed) {
|
|
145
|
+
if (changed.has('checked') && this.checked)
|
|
146
|
+
this._grouping.uncheckOthers();
|
|
147
|
+
if (changed.has('name'))
|
|
148
|
+
this._grouping.regroup();
|
|
149
|
+
else if (changed.has('checked') || changed.has('disabled'))
|
|
150
|
+
this._grouping.refresh();
|
|
151
|
+
}
|
|
152
|
+
updated(changed) {
|
|
153
|
+
super.updated(changed);
|
|
154
|
+
this._syncHostAria();
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* This element is the radio, label and all.
|
|
158
|
+
*
|
|
159
|
+
* A native radio in a shadow root of its own is a group of one, which a
|
|
160
|
+
* screen reader counts as "1 of 1" and Tab stops at one by one. The role on
|
|
161
|
+
* the element itself puts the whole group back in one tree, and the label it
|
|
162
|
+
* renders is the name it is announced by.
|
|
163
|
+
*/
|
|
164
|
+
_syncHostAria() {
|
|
165
|
+
this.setAttribute('role', 'radio');
|
|
166
|
+
this.setAttribute('aria-checked', String(this.checked));
|
|
167
|
+
this._appliedLabel = setOwnedAttribute(this, 'aria-label', this.label, this._appliedLabel);
|
|
168
|
+
if (this.disabled)
|
|
169
|
+
this.setAttribute('aria-disabled', 'true');
|
|
170
|
+
else
|
|
171
|
+
this.removeAttribute('aria-disabled');
|
|
172
|
+
const position = this._position;
|
|
173
|
+
if (position) {
|
|
174
|
+
this.setAttribute('aria-posinset', String(position.posInSet));
|
|
175
|
+
this.setAttribute('aria-setsize', String(position.setSize));
|
|
176
|
+
}
|
|
177
|
+
else {
|
|
178
|
+
this.removeAttribute('aria-posinset');
|
|
179
|
+
this.removeAttribute('aria-setsize');
|
|
180
|
+
}
|
|
181
|
+
// A disabled radio is not in the tab order, as a native one is not.
|
|
182
|
+
const tabbable = !this.disabled && position?.tabbable !== false;
|
|
183
|
+
this.setAttribute('tabindex', tabbable ? '0' : '-1');
|
|
184
|
+
}
|
|
63
185
|
/** An unchecked radio contributes nothing to the form. The group calls
|
|
64
186
|
* `commitFormValue()` on the siblings it unchecks, so a listener that reads
|
|
65
187
|
* the form while `change` is still propagating never sees two values. */
|
|
@@ -72,34 +194,25 @@ let NLDDRadioButtonField = class NLDDRadioButtonField extends DescribedBy(FormAs
|
|
|
72
194
|
formStateRestoreCallback(state) {
|
|
73
195
|
this.checked = state !== null;
|
|
74
196
|
}
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
197
|
+
/** Checks this field, the way a click or the space bar does. The group hears
|
|
198
|
+
* the change and unchecks the others; without a group the fields that share
|
|
199
|
+
* its name are unchecked here. */
|
|
200
|
+
select() {
|
|
201
|
+
if (this.disabled || this.checked)
|
|
79
202
|
return;
|
|
80
|
-
|
|
81
|
-
radioButton?.select();
|
|
82
|
-
}
|
|
83
|
-
_handleChange(e) {
|
|
84
|
-
this.checked = e.detail.checked;
|
|
203
|
+
this.checked = true;
|
|
85
204
|
this.commitFormValue();
|
|
205
|
+
this._grouping.uncheckOthers();
|
|
86
206
|
this.dispatchEvent(new CustomEvent('change', {
|
|
87
|
-
detail: { checked:
|
|
207
|
+
detail: { checked: true, value: this.value },
|
|
88
208
|
bubbles: true,
|
|
89
209
|
composed: true,
|
|
90
210
|
}));
|
|
91
211
|
}
|
|
92
|
-
/**
|
|
93
|
-
*
|
|
94
|
-
* its native input. Lets consumers call `radioFieldEl.focus()` without
|
|
95
|
-
* reaching into shadow DOM.
|
|
96
|
-
*/
|
|
97
|
-
focus(options) {
|
|
98
|
-
this.shadowRoot?.querySelector('nldd-radio-button')?.focus(options);
|
|
99
|
-
}
|
|
100
|
-
/** The radio button it renders knows which element inside itself is the control. */
|
|
212
|
+
/** The element assistive software meets is this one, so the description and
|
|
213
|
+
* the invalid state belong here rather than on the shape inside. */
|
|
101
214
|
describedTarget() {
|
|
102
|
-
return this
|
|
215
|
+
return this;
|
|
103
216
|
}
|
|
104
217
|
render() {
|
|
105
218
|
return radioButtonFieldTemplate(this);
|
|
@@ -130,6 +243,15 @@ __decorate([
|
|
|
130
243
|
__decorate([
|
|
131
244
|
property({ type: Boolean, reflect: true })
|
|
132
245
|
], NLDDRadioButtonField.prototype, "invalid", void 0);
|
|
246
|
+
__decorate([
|
|
247
|
+
state()
|
|
248
|
+
], NLDDRadioButtonField.prototype, "_groupPosition", void 0);
|
|
249
|
+
__decorate([
|
|
250
|
+
state()
|
|
251
|
+
], NLDDRadioButtonField.prototype, "_groupHasSelection", void 0);
|
|
252
|
+
__decorate([
|
|
253
|
+
state()
|
|
254
|
+
], NLDDRadioButtonField.prototype, "_focusRing", void 0);
|
|
133
255
|
NLDDRadioButtonField = __decorate([
|
|
134
256
|
customElement('nldd-radio-button-field')
|
|
135
257
|
], NLDDRadioButtonField);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"radio-button-field.js","sourceRoot":"","sources":["../../../../src/components/inputs/radio-button-field/radio-button-field.ts"],"names":[],"mappings":";;;;;;AAAA
|
|
1
|
+
{"version":3,"file":"radio-button-field.js","sourceRoot":"","sources":["../../../../src/components/inputs/radio-button-field/radio-button-field.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"radio-button-field.styles.d.ts","sourceRoot":"","sources":["../../../../src/components/inputs/radio-button-field/radio-button-field.styles.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,sBAAsB,
|
|
1
|
+
{"version":3,"file":"radio-button-field.styles.d.ts","sourceRoot":"","sources":["../../../../src/components/inputs/radio-button-field/radio-button-field.styles.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,sBAAsB,yBAmElC,CAAC"}
|
|
@@ -11,12 +11,29 @@ export const radioButtonFieldStyles = css `
|
|
|
11
11
|
:host {
|
|
12
12
|
${inheritedTextReset}
|
|
13
13
|
display: block;
|
|
14
|
+
position: relative;
|
|
15
|
+
cursor: default;
|
|
16
|
+
-webkit-tap-highlight-color: transparent;
|
|
14
17
|
}
|
|
15
18
|
|
|
16
19
|
:host([hidden]) {
|
|
17
20
|
display: none;
|
|
18
21
|
}
|
|
19
22
|
|
|
23
|
+
:host(:focus-visible) {
|
|
24
|
+
outline: none;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
.radio-button-field__validation-input {
|
|
28
|
+
position: absolute;
|
|
29
|
+
inset: 0;
|
|
30
|
+
opacity: 0;
|
|
31
|
+
margin: 0;
|
|
32
|
+
pointer-events: none;
|
|
33
|
+
width: 100%;
|
|
34
|
+
height: 100%;
|
|
35
|
+
}
|
|
36
|
+
|
|
20
37
|
|
|
21
38
|
/* # Block */
|
|
22
39
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"radio-button-field.styles.js","sourceRoot":"","sources":["../../../../src/components/inputs/radio-button-field/radio-button-field.styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAC1B,OAAO,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AAE7E,MAAM,CAAC,MAAM,sBAAsB,GAAG,GAAG,CAAA;;;;;;;;;IASrC,kBAAkB
|
|
1
|
+
{"version":3,"file":"radio-button-field.styles.js","sourceRoot":"","sources":["../../../../src/components/inputs/radio-button-field/radio-button-field.styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAC1B,OAAO,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AAE7E,MAAM,CAAC,MAAM,sBAAsB,GAAG,GAAG,CAAA;;;;;;;;;IASrC,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0DrB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"radio-button-field.template.d.ts","sourceRoot":"","sources":["../../../../src/components/inputs/radio-button-field/radio-button-field.template.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"radio-button-field.template.d.ts","sourceRoot":"","sources":["../../../../src/components/inputs/radio-button-field/radio-button-field.template.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,cAAc,EAAE,MAAM,KAAK,CAAC;AAC3C,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,iCAAiC,CAAC;AAEzC,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,oBAAoB,GAAG,cAAc,CA8BxF"}
|
|
@@ -1,24 +1,33 @@
|
|
|
1
|
-
import { html
|
|
1
|
+
import { html } from 'lit';
|
|
2
2
|
import '../radio-button/radio-button.js';
|
|
3
|
-
/* eslint-disable lit-a11y/click-events-have-key-events -- label wrapper delegates to inner radio button */
|
|
4
3
|
export function radioButtonFieldTemplate(component) {
|
|
4
|
+
// The field itself is the radio: it carries the role, the state and the
|
|
5
|
+
// label it is announced by. The radio button inside only draws the shape,
|
|
6
|
+
// and the input only answers `required` for the form, which a radio asks of
|
|
7
|
+
// its whole group. The name is for the platform: a radio without one is in no
|
|
8
|
+
// group, and a radio in no group never reports a missing value.
|
|
5
9
|
return html `
|
|
6
|
-
<div class="radio-button-field"
|
|
7
|
-
|
|
8
|
-
|
|
10
|
+
<div class="radio-button-field">
|
|
11
|
+
<input class="radio-button-field__validation-input"
|
|
12
|
+
type="radio"
|
|
13
|
+
name="nldd-validation"
|
|
14
|
+
?required=${component.required}
|
|
15
|
+
?disabled=${component.disabled}
|
|
16
|
+
.checked=${component._answered}
|
|
17
|
+
tabindex="-1"
|
|
18
|
+
aria-hidden="true"
|
|
19
|
+
>
|
|
9
20
|
<div class="radio-button-field__control">
|
|
10
21
|
<nldd-radio-button
|
|
11
|
-
|
|
22
|
+
decorative
|
|
12
23
|
?checked=${component.checked}
|
|
13
24
|
?disabled=${component.disabled}
|
|
14
|
-
?
|
|
15
|
-
name=${component.name || ''}
|
|
16
|
-
value=${component.value}
|
|
17
|
-
accessible-label=${component.label || nothing}
|
|
18
|
-
@change=${component._handleChange}
|
|
25
|
+
?focus-ring=${component._focusRing}
|
|
19
26
|
></nldd-radio-button>
|
|
20
27
|
</div>
|
|
21
|
-
<span class="radio-button-field__label"
|
|
28
|
+
<span class="radio-button-field__label">
|
|
29
|
+
${component.label}
|
|
30
|
+
</span>
|
|
22
31
|
</div>
|
|
23
32
|
`;
|
|
24
33
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"radio-button-field.template.js","sourceRoot":"","sources":["../../../../src/components/inputs/radio-button-field/radio-button-field.template.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,
|
|
1
|
+
{"version":3,"file":"radio-button-field.template.js","sourceRoot":"","sources":["../../../../src/components/inputs/radio-button-field/radio-button-field.template.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAkB,MAAM,KAAK,CAAC;AAE3C,OAAO,iCAAiC,CAAC;AAEzC,MAAM,UAAU,wBAAwB,CAAC,SAA+B;IACvE,wEAAwE;IACxE,0EAA0E;IAC1E,4EAA4E;IAC5E,8EAA8E;IAC9E,gEAAgE;IAChE,OAAO,IAAI,CAAA;;;;;gBAKI,SAAS,CAAC,QAAQ;gBAClB,SAAS,CAAC,QAAQ;eACnB,SAAS,CAAC,SAAS;;;;;;;gBAOlB,SAAS,CAAC,OAAO;iBAChB,SAAS,CAAC,QAAQ;mBAChB,SAAS,CAAC,UAAU;;;;MAIjC,SAAS,CAAC,KAAK;;;EAGnB,CAAC;AACH,CAAC"}
|
|
@@ -48,6 +48,9 @@ export declare class NLDDRadioButtonGroup extends LitElement {
|
|
|
48
48
|
private _getFields;
|
|
49
49
|
private _getEnabledFields;
|
|
50
50
|
private _syncFields;
|
|
51
|
+
/** Each field its place in the group, and the group one stop for Tab. A
|
|
52
|
+
* field cannot count its siblings: it only sees itself. */
|
|
53
|
+
private _positionFields;
|
|
51
54
|
private _handleChange;
|
|
52
55
|
private _handleKeyDown;
|
|
53
56
|
_onSlotChange: () => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"radio-button-group.d.ts","sourceRoot":"","sources":["../../../../src/components/inputs/radio-button-group/radio-button-group.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"radio-button-group.d.ts","sourceRoot":"","sources":["../../../../src/components/inputs/radio-button-group/radio-button-group.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,KAAK,CAAC;AAQjC,qBACa,oBAAqB,SAAQ,UAAU;IACnD,OAAgB,MAAM,0BAA0B;IAEhD;wEACoE;IACpE,MAAM,CAAC,WAAW,UAAQ;IAG1B,IAAI,SAAM;IAGV,QAAQ,UAAS;IAGjB,QAAQ,UAAS;IAEjB,iEAAiE;IAEjE,eAAe,SAAM;IAGrB,mBAAmB,SAAM;IAEzB,8EAA8E;IAC9E,OAAO,CAAC,aAAa,CAAuB;IAG5C;;;;;;;;OAQG;IAEH,OAAO,UAAS;IAEP,iBAAiB,IAAI,IAAI;IAOzB,oBAAoB,IAAI,IAAI;IAM5B,YAAY,IAAI,IAAI;IAMpB,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,WAAW,EAAE,OAAO,CAAC,GAAG,IAAI;IA+B1D,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,WAAW;IAiBnB;gEAC4D;IAC5D,OAAO,CAAC,eAAe;IAUvB,OAAO,CAAC,aAAa,CAYnB;IAEF,OAAO,CAAC,cAAc,CAgCpB;IAEF,aAAa,QAAO,IAAI,CAEtB;IAEF;;;;;OAKG;IACM,KAAK,CAAC,OAAO,CAAC,EAAE,YAAY,GAAG,IAAI;IAKnC,MAAM;CAGf;AAED,OAAO,CAAC,MAAM,CAAC;IACd,UAAU,qBAAqB;QAC9B,yBAAyB,EAAE,oBAAoB,CAAC;KAChD;CACD"}
|
|
@@ -28,6 +28,7 @@ import { customElement, property } from 'lit/decorators.js';
|
|
|
28
28
|
import { radioButtonGroupStyles } from './radio-button-group.styles.js';
|
|
29
29
|
import { radioButtonGroupTemplate } from './radio-button-group.template.js';
|
|
30
30
|
import { setOwnedAttribute } from '../../../utilities/owned-attribute.js';
|
|
31
|
+
import { radioPositions } from '../../../utilities/radio-position.js';
|
|
31
32
|
let NLDDRadioButtonGroup = class NLDDRadioButtonGroup extends LitElement {
|
|
32
33
|
constructor() {
|
|
33
34
|
super(...arguments);
|
|
@@ -62,6 +63,7 @@ let NLDDRadioButtonGroup = class NLDDRadioButtonGroup extends LitElement {
|
|
|
62
63
|
// its listener would otherwise still see this field's old value.
|
|
63
64
|
field.commitFormValue?.();
|
|
64
65
|
});
|
|
66
|
+
this._positionFields();
|
|
65
67
|
};
|
|
66
68
|
this._handleKeyDown = (e) => {
|
|
67
69
|
if (e.key !== 'ArrowDown' && e.key !== 'ArrowUp' &&
|
|
@@ -84,10 +86,8 @@ let NLDDRadioButtonGroup = class NLDDRadioButtonGroup extends LitElement {
|
|
|
84
86
|
activeField.commitFormValue?.();
|
|
85
87
|
nextField.checked = true;
|
|
86
88
|
nextField.commitFormValue?.();
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
?.shadowRoot?.querySelector('input');
|
|
90
|
-
input?.focus();
|
|
89
|
+
this._positionFields();
|
|
90
|
+
nextField.focus();
|
|
91
91
|
nextField.dispatchEvent(new CustomEvent('change', {
|
|
92
92
|
detail: { checked: true, value: nextField.value },
|
|
93
93
|
bubbles: true,
|
|
@@ -169,6 +169,18 @@ let NLDDRadioButtonGroup = class NLDDRadioButtonGroup extends LitElement {
|
|
|
169
169
|
field.disabled = false;
|
|
170
170
|
}
|
|
171
171
|
});
|
|
172
|
+
this._positionFields();
|
|
173
|
+
}
|
|
174
|
+
/** Each field its place in the group, and the group one stop for Tab. A
|
|
175
|
+
* field cannot count its siblings: it only sees itself. */
|
|
176
|
+
_positionFields() {
|
|
177
|
+
const fields = this._getFields();
|
|
178
|
+
const answered = fields.some((field) => field.checked);
|
|
179
|
+
radioPositions(fields, (field) => field.checked, (field) => field.disabled)
|
|
180
|
+
.forEach((position, index) => {
|
|
181
|
+
fields[index]._groupPosition = position;
|
|
182
|
+
fields[index]._groupHasSelection = answered;
|
|
183
|
+
});
|
|
172
184
|
}
|
|
173
185
|
/**
|
|
174
186
|
* Delegates focus to the checked option, or to the first enabled one when
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"radio-button-group.js","sourceRoot":"","sources":["../../../../src/components/inputs/radio-button-group/radio-button-group.ts"],"names":[],"mappings":";;;;;;AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,KAAK,CAAC;AACjC,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAE5E,OAAO,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAC;
|
|
1
|
+
{"version":3,"file":"radio-button-group.js","sourceRoot":"","sources":["../../../../src/components/inputs/radio-button-group/radio-button-group.ts"],"names":[],"mappings":"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"}
|