@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.
Files changed (128) hide show
  1. package/README.md +2 -2
  2. package/custom-elements.json +305 -66
  3. package/dist/components/components.js +1007 -218
  4. package/dist/components/content/image/image.d.ts +23 -3
  5. package/dist/components/content/image/image.d.ts.map +1 -1
  6. package/dist/components/content/image/image.js +74 -17
  7. package/dist/components/content/image/image.js.map +1 -1
  8. package/dist/components/content/image/image.template.js +1 -1
  9. package/dist/components/content/image/image.template.js.map +1 -1
  10. package/dist/components/{dist-LX8LuMac.js → dist-BLaE_n_F.js} +1 -1
  11. package/dist/components/{dist-CX3DK4i7.js → dist-BeymuiGt.js} +3 -3
  12. package/dist/components/{dist-CbCO0WCd.js → dist-CENYEz7C.js} +1 -1
  13. package/dist/components/{dist-B_Mnmrj4.js → dist-CYLM5ciE.js} +1 -1
  14. package/dist/components/{dist-fIxe0l7k.js → dist-DHA-0RyT.js} +91 -34
  15. package/dist/components/{dist-CgDuh26K.js → dist-D_ckX1sK.js} +1 -1
  16. package/dist/components/{dist-eVFegyjM.js → dist-Dh_b9r4M.js} +1 -1
  17. package/dist/components/{dist-DXZ-cFAl.js → dist-DkZlotgT.js} +2 -2
  18. package/dist/components/{dist-CSrO_mYe.js → dist-TCqV9dho.js} +1 -1
  19. package/dist/components/{dist-ByH8hQze.js → dist-Y54Lma86.js} +2 -2
  20. package/dist/components/{dist-CRwuSgMM.js → dist-yyE8P2O6.js} +2 -2
  21. package/dist/components/inputs/radio-button/radio-button.d.ts +58 -18
  22. package/dist/components/inputs/radio-button/radio-button.d.ts.map +1 -1
  23. package/dist/components/inputs/radio-button/radio-button.js +136 -29
  24. package/dist/components/inputs/radio-button/radio-button.js.map +1 -1
  25. package/dist/components/inputs/radio-button/radio-button.styles.d.ts.map +1 -1
  26. package/dist/components/inputs/radio-button/radio-button.styles.js +17 -23
  27. package/dist/components/inputs/radio-button/radio-button.styles.js.map +1 -1
  28. package/dist/components/inputs/radio-button/radio-button.template.d.ts.map +1 -1
  29. package/dist/components/inputs/radio-button/radio-button.template.js +13 -10
  30. package/dist/components/inputs/radio-button/radio-button.template.js.map +1 -1
  31. package/dist/components/inputs/radio-button-field/radio-button-field.d.ts +65 -18
  32. package/dist/components/inputs/radio-button-field/radio-button-field.d.ts.map +1 -1
  33. package/dist/components/inputs/radio-button-field/radio-button-field.js +151 -29
  34. package/dist/components/inputs/radio-button-field/radio-button-field.js.map +1 -1
  35. package/dist/components/inputs/radio-button-field/radio-button-field.styles.d.ts.map +1 -1
  36. package/dist/components/inputs/radio-button-field/radio-button-field.styles.js +17 -0
  37. package/dist/components/inputs/radio-button-field/radio-button-field.styles.js.map +1 -1
  38. package/dist/components/inputs/radio-button-field/radio-button-field.template.d.ts.map +1 -1
  39. package/dist/components/inputs/radio-button-field/radio-button-field.template.js +21 -12
  40. package/dist/components/inputs/radio-button-field/radio-button-field.template.js.map +1 -1
  41. package/dist/components/inputs/radio-button-group/radio-button-group.d.ts +3 -0
  42. package/dist/components/inputs/radio-button-group/radio-button-group.d.ts.map +1 -1
  43. package/dist/components/inputs/radio-button-group/radio-button-group.js +16 -4
  44. package/dist/components/inputs/radio-button-group/radio-button-group.js.map +1 -1
  45. package/dist/components/inputs/segmented-control/segmented-control.d.ts +46 -13
  46. package/dist/components/inputs/segmented-control/segmented-control.d.ts.map +1 -1
  47. package/dist/components/inputs/segmented-control/segmented-control.js +145 -16
  48. package/dist/components/inputs/segmented-control/segmented-control.js.map +1 -1
  49. package/dist/components/inputs/segmented-control/segmented-control.styles.d.ts.map +1 -1
  50. package/dist/components/inputs/segmented-control/segmented-control.styles.js +16 -0
  51. package/dist/components/inputs/segmented-control/segmented-control.styles.js.map +1 -1
  52. package/dist/components/inputs/segmented-control/segmented-control.template.d.ts.map +1 -1
  53. package/dist/components/inputs/segmented-control/segmented-control.template.js +47 -24
  54. package/dist/components/inputs/segmented-control/segmented-control.template.js.map +1 -1
  55. package/dist/components/inputs/text-editor/text-editor.cursor.d.ts.map +1 -1
  56. package/dist/components/inputs/text-editor/text-editor.cursor.js +14 -1
  57. package/dist/components/inputs/text-editor/text-editor.cursor.js.map +1 -1
  58. package/dist/components/inputs/text-editor/text-editor.mentions.d.ts.map +1 -1
  59. package/dist/components/inputs/text-editor/text-editor.mentions.js +3 -1
  60. package/dist/components/inputs/text-editor/text-editor.mentions.js.map +1 -1
  61. package/dist/components/inputs/toggle-button/toggle-button.d.ts +36 -2
  62. package/dist/components/inputs/toggle-button/toggle-button.d.ts.map +1 -1
  63. package/dist/components/inputs/toggle-button/toggle-button.js +116 -3
  64. package/dist/components/inputs/toggle-button/toggle-button.js.map +1 -1
  65. package/dist/components/inputs/toggle-button/toggle-button.styles.d.ts.map +1 -1
  66. package/dist/components/inputs/toggle-button/toggle-button.styles.js +17 -1
  67. package/dist/components/inputs/toggle-button/toggle-button.styles.js.map +1 -1
  68. package/dist/components/inputs/toggle-button/toggle-button.template.d.ts.map +1 -1
  69. package/dist/components/inputs/toggle-button/toggle-button.template.js +25 -2
  70. package/dist/components/inputs/toggle-button/toggle-button.template.js.map +1 -1
  71. package/dist/components/inputs/toggle-button-group/toggle-button-group.d.ts +4 -0
  72. package/dist/components/inputs/toggle-button-group/toggle-button-group.d.ts.map +1 -1
  73. package/dist/components/inputs/toggle-button-group/toggle-button-group.js +21 -2
  74. package/dist/components/inputs/toggle-button-group/toggle-button-group.js.map +1 -1
  75. package/dist/components/layout/page/page.d.ts +23 -5
  76. package/dist/components/layout/page/page.d.ts.map +1 -1
  77. package/dist/components/layout/page/page.js +39 -34
  78. package/dist/components/layout/page/page.js.map +1 -1
  79. package/dist/components/layout/page/page.styles.d.ts.map +1 -1
  80. package/dist/components/layout/page/page.styles.js +2 -0
  81. package/dist/components/layout/page/page.styles.js.map +1 -1
  82. package/dist/components/layout/sheet/sheet.template.d.ts.map +1 -1
  83. package/dist/components/layout/sheet/sheet.template.js +3 -0
  84. package/dist/components/layout/sheet/sheet.template.js.map +1 -1
  85. package/dist/components/layout/window/window.template.d.ts.map +1 -1
  86. package/dist/components/layout/window/window.template.js +3 -0
  87. package/dist/components/layout/window/window.template.js.map +1 -1
  88. package/dist/components/lists-and-tables/list/list.d.ts +1 -1
  89. package/dist/components/lists-and-tables/list/list.d.ts.map +1 -1
  90. package/dist/components/lists-and-tables/list/list.js +4 -3
  91. package/dist/components/lists-and-tables/list/list.js.map +1 -1
  92. package/dist/components/lists-and-tables/list/list.template.d.ts.map +1 -1
  93. package/dist/components/lists-and-tables/list/list.template.js +15 -10
  94. package/dist/components/lists-and-tables/list/list.template.js.map +1 -1
  95. package/dist/components/navigation/menu-bar/menu-bar.d.ts +4 -2
  96. package/dist/components/navigation/menu-bar/menu-bar.d.ts.map +1 -1
  97. package/dist/components/navigation/menu-bar/menu-bar.js +4 -2
  98. package/dist/components/navigation/menu-bar/menu-bar.js.map +1 -1
  99. package/dist/components/status-and-feedback/modal-dialog/modal-dialog.template.d.ts.map +1 -1
  100. package/dist/components/status-and-feedback/modal-dialog/modal-dialog.template.js +3 -0
  101. package/dist/components/status-and-feedback/modal-dialog/modal-dialog.template.js.map +1 -1
  102. package/dist/components/status-and-feedback/notification/notification-region.d.ts +4 -0
  103. package/dist/components/status-and-feedback/notification/notification-region.d.ts.map +1 -1
  104. package/dist/components/status-and-feedback/notification/notification-region.js +161 -19
  105. package/dist/components/status-and-feedback/notification/notification-region.js.map +1 -1
  106. package/dist/components/status-and-feedback/notification/notification.d.ts +17 -0
  107. package/dist/components/status-and-feedback/notification/notification.d.ts.map +1 -1
  108. package/dist/components/status-and-feedback/notification/notification.js +33 -0
  109. package/dist/components/status-and-feedback/notification/notification.js.map +1 -1
  110. package/dist/components/status-and-feedback/notification/notification.styles.d.ts.map +1 -1
  111. package/dist/components/status-and-feedback/notification/notification.styles.js +6 -0
  112. package/dist/components/status-and-feedback/notification/notification.styles.js.map +1 -1
  113. package/dist/css/variables.css +2 -2
  114. package/dist/nldd.min.js +629 -540
  115. package/dist/types/vue.d.ts +24 -20
  116. package/dist/utilities/described-by-mixin.d.ts +2 -2
  117. package/dist/utilities/described-by-mixin.d.ts.map +1 -1
  118. package/dist/utilities/described-by-mixin.js +11 -6
  119. package/dist/utilities/described-by-mixin.js.map +1 -1
  120. package/dist/utilities/radio-grouping.d.ts +66 -0
  121. package/dist/utilities/radio-grouping.d.ts.map +1 -0
  122. package/dist/utilities/radio-grouping.js +133 -0
  123. package/dist/utilities/radio-grouping.js.map +1 -0
  124. package/dist/utilities/radio-position.d.ts +20 -0
  125. package/dist/utilities/radio-position.d.ts.map +1 -0
  126. package/dist/utilities/radio-position.js +11 -0
  127. package/dist/utilities/radio-position.js.map +1 -0
  128. 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
- * for keyboard navigation and group semantics. The group sets the name.
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
- * Form-associated: the checked field submits its `value` under `name` (the
8
- * inner nldd-radio-button sits in the shadow root and never joins the
9
- * consumer's form; the field submits on its behalf). Unchecking siblings is
10
- * the group's job, so exactly one value per group reaches the form.
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, forwarded to the inner nldd-radio-button. Set automatically by nldd-radio-button-group.
17
- * @attr {boolean} required - Required state, forwarded to the inner nldd-radio-button. Set automatically by nldd-radio-button-group.
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
- _handleLabelClick(e: Event): void;
59
- _handleChange(e: Event): void;
60
- /**
61
- * Delegates focus to the inner `<nldd-radio-button>`, which in turn focuses
62
- * its native input. Lets consumers call `radioFieldEl.focus()` without
63
- * reaching into shadow DOM.
64
- */
65
- focus(options?: FocusOptions): void;
66
- /** The radio button it renders knows which element inside itself is the control. */
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;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,KAAK,CAAC;AAEjC,OAAO,EAAkB,KAAK,SAAS,EAAE,MAAM,6CAA6C,CAAC;;AAO7F,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;IAEP,YAAY,IAAI,IAAI;IAI7B;;8EAE0E;IACjE,SAAS,IAAI,SAAS;IAI/B,iBAAiB,IAAI,IAAI;IAKzB,wBAAwB,CAAC,KAAK,EAAE,IAAI,GAAG,MAAM,GAAG,QAAQ,GAAG,IAAI,GAAG,IAAI;IAI/D,iBAAiB,CAAC,CAAC,EAAE,KAAK,GAAG,IAAI;IAOjC,aAAa,CAAC,CAAC,EAAE,KAAK,GAAG,IAAI;IAUpC;;;;OAIG;IACM,KAAK,CAAC,OAAO,CAAC,EAAE,YAAY,GAAG,IAAI;IAI5C,oFAAoF;IAC3E,eAAe,IAAI,OAAO,GAAG,IAAI;IAIjC,MAAM;CAGf;AAED,OAAO,CAAC,MAAM,CAAC;IACd,UAAU,qBAAqB;QAC9B,yBAAyB,EAAE,oBAAoB,CAAC;KAChD;CACD"}
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
- * for keyboard navigation and group semantics. The group sets the name.
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
- * Form-associated: the checked field submits its `value` under `name` (the
14
- * inner nldd-radio-button sits in the shadow root and never joins the
15
- * consumer's form; the field submits on its behalf). Unchecking siblings is
16
- * the group's job, so exactly one value per group reaches the form.
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, forwarded to the inner nldd-radio-button. Set automatically by nldd-radio-button-group.
23
- * @attr {boolean} required - Required state, forwarded to the inner nldd-radio-button. Set automatically by nldd-radio-button-group.
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
- _handleLabelClick(e) {
76
- if (this.disabled)
77
- return;
78
- if (e.target.closest?.('nldd-radio-button'))
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
- const radioButton = this.shadowRoot?.querySelector('nldd-radio-button');
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: this.checked, value: this.value },
207
+ detail: { checked: true, value: this.value },
88
208
  bubbles: true,
89
209
  composed: true,
90
210
  }));
91
211
  }
92
- /**
93
- * Delegates focus to the inner `<nldd-radio-button>`, which in turn focuses
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.shadowRoot?.querySelector('nldd-radio-button') ?? null;
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":"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"}
1
+ {"version":3,"file":"radio-button-field.js","sourceRoot":"","sources":["../../../../src/components/inputs/radio-button-field/radio-button-field.ts"],"names":[],"mappings":";;;;;;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,OAAO,EAAE,UAAU,EAAuB,MAAM,KAAK,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AACnE,OAAO,EAAE,cAAc,EAAkB,MAAM,6CAA6C,CAAC;AAC7F,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,EAAE,WAAW,EAAE,MAAM,0CAA0C,CAAC;AACvE,OAAO,EAAE,iBAAiB,EAAE,MAAM,2CAA2C,CAAC;AAE9E,OAAO,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAC;AACrE,OAAO,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAC;AAC1E,OAAO,EAAE,aAAa,EAAE,MAAM,2CAA2C,CAAC;AAC1E,OAAO,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAC;AAG/D,IAAM,oBAAoB,GAA1B,MAAM,oBAAqB,SAAQ,WAAW,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;IAA1E;;QASE,oBAAe,GAAG,KAAK,CAAC;QAGhC,YAAO,GAAG,KAAK,CAAC;QAGhB,aAAQ,GAAG,KAAK,CAAC;QAGjB,UAAK,GAAG,EAAE,CAAC;QAEX;;0CAEkC;QAElC,SAAI,GAAG,EAAE,CAAC;QAGV,aAAQ,GAAG,KAAK,CAAC;QAGjB,UAAK,GAAG,EAAE,CAAC;QAGX;;;;;;;;WAQG;QAEH,YAAO,GAAG,KAAK,CAAC;QAEhB;sCAC8B;QAE9B,mBAAc,GAAyB,IAAI,CAAC;QAE5C;sEAC8D;QAE9D,uBAAkB,GAAG,KAAK,CAAC;QAE3B;oFAC4E;QACpE,cAAS,GAAG,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC;QAc5C,gFAAgF;QACxE,kBAAa,GAAkB,IAAI,CAAC;QAE5C;uEAC+D;QAE/D,eAAU,GAAG,KAAK,CAAC;QA+FX,aAAQ,GAAG,GAAS,EAAE;YAC7B,IAAI,CAAC,MAAM,EAAE,CAAC;QACf,CAAC,CAAC;QAEM,aAAQ,GAAG,GAAS,EAAE;YAC7B,IAAI,CAAC,UAAU,GAAG,cAAc,EAAE,CAAC;QACpC,CAAC,CAAC;QAEM,YAAO,GAAG,GAAS,EAAE;YAC5B,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QACzB,CAAC,CAAC;QAEM,eAAU,GAAG,CAAC,CAAgB,EAAQ,EAAE;YAC/C,IAAI,IAAI,CAAC,QAAQ;gBAAE,OAAO;YAC1B,sEAAsE;YACtE,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,EAAE,CAAC;gBACnB,CAAC,CAAC,cAAc,EAAE,CAAC;gBACnB,IAAI,CAAC,MAAM,EAAE,CAAC;gBACd,OAAO;YACR,CAAC;YACD,IAAI,CAAC,CAAC,GAAG,KAAK,OAAO,EAAE,CAAC;gBACvB,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;gBACvB,OAAO;YACR,CAAC;YACD,0EAA0E;YAC1E,yDAAyD;YACzD,IAAI,CAAC,IAAI,CAAC,cAAc;gBAAE,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;QAC3D,CAAC,CAAC;IAWH,CAAC;IAvJA;wCACoC;IACpC,IAAI,SAAS;QACZ,OAAO,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;IACvD,CAAC;IAED;0DACsD;IACtD,IAAI,SAAS;QACZ,OAAO,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;IAC3D,CAAC;IAUQ,iBAAiB;QACzB,KAAK,CAAC,iBAAiB,EAAE,CAAC;QAC1B,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC9C,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QAClD,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC9C,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IAC7C,CAAC;IAEQ,oBAAoB;QAC5B,KAAK,CAAC,oBAAoB,EAAE,CAAC;QAC7B,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QACjD,IAAI,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QACrD,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QACjD,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IAChD,CAAC;IAEQ,YAAY;QACpB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC;IACrC,CAAC;IAED;;0DAEsD;IAC7C,UAAU,CAAC,OAA6B;QAChD,IAAI,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,OAAO;YAAE,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,CAAC;QAC3E,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC;YAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;aAC7C,IAAI,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC;YAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;IACtF,CAAC;IAEQ,OAAO,CAAC,OAA6B;QAC7C,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACvB,IAAI,CAAC,aAAa,EAAE,CAAC;IACtB,CAAC;IAED;;;;;;;OAOG;IACK,aAAa;QACpB,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACnC,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;QACxD,IAAI,CAAC,aAAa,GAAG,iBAAiB,CAAC,IAAI,EAAE,YAAY,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QAC3F,IAAI,IAAI,CAAC,QAAQ;YAAE,IAAI,CAAC,YAAY,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;;YACzD,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC,CAAC;QAE3C,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC;QAChC,IAAI,QAAQ,EAAE,CAAC;YACd,IAAI,CAAC,YAAY,CAAC,eAAe,EAAE,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;YAC9D,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;QAC7D,CAAC;aAAM,CAAC;YACP,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC,CAAC;YACtC,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,CAAC;QACtC,CAAC;QACD,oEAAoE;QACpE,MAAM,QAAQ,GAAG,CAAC,IAAI,CAAC,QAAQ,IAAI,QAAQ,EAAE,QAAQ,KAAK,KAAK,CAAC;QAChE,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACtD,CAAC;IAED;;8EAE0E;IACjE,SAAS;QACjB,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;IACzC,CAAC;IAED,iBAAiB;QAChB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC;IACrC,CAAC;IAGD,wBAAwB,CAAC,KAAsC;QAC9D,IAAI,CAAC,OAAO,GAAG,KAAK,KAAK,IAAI,CAAC;IAC/B,CAAC;IAED;;uCAEmC;IAC5B,MAAM;QACZ,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,OAAO;YAAE,OAAO;QAC1C,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,CAAC;QAC/B,IAAI,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,QAAQ,EAAE;YAC5C,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE;YAC5C,OAAO,EAAE,IAAI;YACb,QAAQ,EAAE,IAAI;SACd,CAAC,CAAC,CAAC;IACL,CAAC;IA+BD;yEACqE;IAC5D,eAAe;QACvB,OAAO,IAAI,CAAC;IACb,CAAC;IAEQ,MAAM;QACd,OAAO,wBAAwB,CAAC,IAAI,CAAC,CAAC;IACvC,CAAC;;AA/Me,2BAAM,GAAG,sBAAsB,AAAzB,CAA0B;AAEhD;oEACoE;AAC7D,gCAAW,GAAG,IAAI,AAAP,CAAQ;AAM1B;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;qDAC3B;AAGhB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;sDAC1B;AAGjB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;mDAChB;AAMX;IADC,QAAQ,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,iBAAiB,CAAC,EAAE,CAAC,EAAE,CAAC;kDACpD;AAGV;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;sDAC1B;AAGjB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;mDAChB;AAaX;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;qDAC3B;AAKhB;IADC,KAAK,EAAE;4DACoC;AAK5C;IADC,KAAK,EAAE;gEACmB;AAwB3B;IADC,KAAK,EAAE;wDACW;AA7EP,oBAAoB;IADhC,aAAa,CAAC,yBAAyB,CAAC;GAC5B,oBAAoB,CAkNhC"}
@@ -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,yBAkDlC,CAAC"}
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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyCrB,CAAC"}
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,EAAiB,cAAc,EAAE,MAAM,KAAK,CAAC;AACpD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,iCAAiC,CAAC;AAGzC,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,oBAAoB,GAAG,cAAc,CAoBxF"}
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, nothing } from 'lit';
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
- @click=${component._handleLabelClick}
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
- ?invalid=${component.invalid}
22
+ decorative
12
23
  ?checked=${component.checked}
13
24
  ?disabled=${component.disabled}
14
- ?required=${component.required}
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">${component.label}</span>
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,EAAE,OAAO,EAAkB,MAAM,KAAK,CAAC;AAEpD,OAAO,iCAAiC,CAAC;AAEzC,2GAA2G;AAC3G,MAAM,UAAU,wBAAwB,CAAC,SAA+B;IACvE,OAAO,IAAI,CAAA;;YAEA,SAAS,CAAC,iBAAiB;;;;gBAIvB,SAAS,CAAC,OAAO;gBACjB,SAAS,CAAC,OAAO;iBAChB,SAAS,CAAC,QAAQ;iBAClB,SAAS,CAAC,QAAQ;YACvB,SAAS,CAAC,IAAI,IAAI,EAAE;aACnB,SAAS,CAAC,KAAK;wBACJ,SAAS,CAAC,KAAK,IAAI,OAAO;eACnC,SAAS,CAAC,aAAa;;;6CAGO,SAAS,CAAC,KAAK;;EAE1D,CAAC;AACH,CAAC"}
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;AAOjC,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;IAgBnB,OAAO,CAAC,aAAa,CAWnB;IAEF,OAAO,CAAC,cAAc,CAkCpB;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"}
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
- const input = nextField.shadowRoot
88
- ?.querySelector('nldd-radio-button')
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":"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"}
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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"}