@ukic/web-components 2.34.0 → 2.35.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (129) hide show
  1. package/README.md +1 -0
  2. package/dist/cjs/core.cjs.js +1 -1
  3. package/dist/cjs/ic-dialog.cjs.entry.js +16 -3
  4. package/dist/cjs/ic-dialog.cjs.entry.js.map +1 -1
  5. package/dist/cjs/ic-navigation-item.cjs.entry.js +1 -1
  6. package/dist/cjs/ic-navigation-item.cjs.entry.js.map +1 -1
  7. package/dist/cjs/ic-radio-group.cjs.entry.js +21 -18
  8. package/dist/cjs/ic-radio-group.cjs.entry.js.map +1 -1
  9. package/dist/cjs/ic-radio-option.cjs.entry.js +11 -3
  10. package/dist/cjs/ic-radio-option.cjs.entry.js.map +1 -1
  11. package/dist/cjs/ic-search-bar.cjs.entry.js +2 -1
  12. package/dist/cjs/ic-search-bar.cjs.entry.js.map +1 -1
  13. package/dist/cjs/ic-toast.cjs.entry.js +2 -2
  14. package/dist/cjs/ic-toast.cjs.entry.js.map +1 -1
  15. package/dist/cjs/loader.cjs.js +1 -1
  16. package/dist/collection/collection-manifest.json +1 -1
  17. package/dist/collection/components/ic-accordion/ic-accordion.stories.js +635 -0
  18. package/dist/collection/components/ic-alert/ic-alert.stories.js +257 -0
  19. package/dist/collection/components/ic-back-to-top/ic-back-to-top.stories.js +162 -0
  20. package/dist/collection/components/ic-badge/ic-badge.stories.js +1082 -0
  21. package/dist/collection/components/ic-breadcrumb-group/ic-breadcrumb-group.stories.js +502 -0
  22. package/dist/collection/components/ic-button/ic-button.stories.js +2218 -0
  23. package/dist/collection/components/ic-card/ic-card.stories.js +1034 -0
  24. package/dist/collection/components/ic-checkbox-group/ic-checkbox-group.stories.js +687 -0
  25. package/dist/collection/components/ic-chip/ic-chip.stories.js +670 -0
  26. package/dist/collection/components/ic-classification-banner/ic-classification-banner.stories.js +131 -0
  27. package/dist/collection/components/ic-data-entity/ic-data-entity.stories.js +487 -0
  28. package/dist/collection/components/ic-dialog/ic-dialog.js +16 -3
  29. package/dist/collection/components/ic-dialog/ic-dialog.js.map +1 -1
  30. package/dist/collection/components/ic-dialog/ic-dialog.stories.js +1256 -0
  31. package/dist/collection/components/ic-dialog/test/basic/ic-dialog.spec.js +27 -7
  32. package/dist/collection/components/ic-dialog/test/basic/ic-dialog.spec.js.map +1 -1
  33. package/dist/collection/components/ic-empty-state/ic-empty-state.stories.js +397 -0
  34. package/dist/collection/components/ic-footer/ic-footer.stories.js +383 -0
  35. package/dist/collection/components/ic-hero/ic-hero.stories.js +489 -0
  36. package/dist/collection/components/ic-link/ic-link.stories.js +114 -0
  37. package/dist/collection/components/ic-loading-indicator/ic-loading-indicator.stories.js +416 -0
  38. package/dist/collection/components/ic-navigation-item/ic-navigation-item.css +7 -35
  39. package/dist/collection/components/ic-page-header/ic-page-header.stories.js +557 -0
  40. package/dist/collection/components/ic-pagination/ic-pagination.stories.js +125 -0
  41. package/dist/collection/components/ic-popover-menu/ic-popover-menu.stories.js +486 -0
  42. package/dist/collection/components/ic-radio-group/ic-radio-group.js +21 -18
  43. package/dist/collection/components/ic-radio-group/ic-radio-group.js.map +1 -1
  44. package/dist/collection/components/ic-radio-group/ic-radio-group.stories.js +450 -0
  45. package/dist/collection/components/ic-radio-group/test/basic/ic-radio-group.spec.js +4 -1
  46. package/dist/collection/components/ic-radio-group/test/basic/ic-radio-group.spec.js.map +1 -1
  47. package/dist/collection/components/ic-radio-option/ic-radio-option.css +2 -1
  48. package/dist/collection/components/ic-radio-option/ic-radio-option.js +16 -2
  49. package/dist/collection/components/ic-radio-option/ic-radio-option.js.map +1 -1
  50. package/dist/collection/components/ic-search-bar/ic-search-bar.js +2 -1
  51. package/dist/collection/components/ic-search-bar/ic-search-bar.js.map +1 -1
  52. package/dist/collection/components/ic-search-bar/ic-search-bar.stories.js +591 -0
  53. package/dist/collection/components/ic-section-container/ic-section-container.stories.js +62 -0
  54. package/dist/collection/components/ic-select/ic-select-searchable.stories.js +953 -0
  55. package/dist/collection/components/ic-select/ic-select-single.stories.js +780 -0
  56. package/dist/collection/components/ic-side-navigation/ic-side-navigation.stories.js +2526 -0
  57. package/dist/collection/components/ic-skeleton/ic-skeleton.stories.js +141 -0
  58. package/dist/collection/components/ic-status-tag/ic-status-tag.stories.js +161 -0
  59. package/dist/collection/components/ic-stepper/ic-stepper.stories.js +327 -0
  60. package/dist/collection/components/ic-switch/ic-switch.stories.js +171 -0
  61. package/dist/collection/components/ic-tab-context/ic-tabs.stories.js +388 -0
  62. package/dist/collection/components/ic-text-field/ic-text-field.stories.js +1083 -0
  63. package/dist/collection/components/ic-theme/ic-theme.stories.js +171 -0
  64. package/dist/collection/components/ic-toast/ic-toast.js +2 -2
  65. package/dist/collection/components/ic-toast/ic-toast.js.map +1 -1
  66. package/dist/collection/components/ic-toast/ic-toast.stories.js +413 -0
  67. package/dist/collection/components/ic-toast/test/basic/ic-toast.spec.js +3 -3
  68. package/dist/collection/components/ic-toast/test/basic/ic-toast.spec.js.map +1 -1
  69. package/dist/collection/components/ic-toggle-button/ic-toggle-button.stories.js +537 -0
  70. package/dist/collection/components/ic-toggle-button-group/ic-toggle-button-group.stories.js +610 -0
  71. package/dist/collection/components/ic-tooltip/ic-tooltip.stories.js +356 -0
  72. package/dist/collection/components/ic-top-navigation/ic-top-navigation.stories.js +1083 -0
  73. package/dist/collection/components/ic-typography/ic-typography.stories.js +437 -0
  74. package/dist/collection/patterns/top-nav-content-footer.stories.js +109 -0
  75. package/dist/collection/patterns/z-index.stories.js +474 -0
  76. package/dist/components/ic-dialog.js +16 -3
  77. package/dist/components/ic-dialog.js.map +1 -1
  78. package/dist/components/ic-navigation-item.js +1 -1
  79. package/dist/components/ic-navigation-item.js.map +1 -1
  80. package/dist/components/ic-radio-group.js +21 -18
  81. package/dist/components/ic-radio-group.js.map +1 -1
  82. package/dist/components/ic-radio-option.js +12 -4
  83. package/dist/components/ic-radio-option.js.map +1 -1
  84. package/dist/components/ic-search-bar.js +2 -1
  85. package/dist/components/ic-search-bar.js.map +1 -1
  86. package/dist/components/ic-toast.js +2 -2
  87. package/dist/components/ic-toast.js.map +1 -1
  88. package/dist/core/core.esm.js +1 -1
  89. package/dist/core/core.esm.js.map +1 -1
  90. package/dist/core/p-3e8023ff.entry.js +2 -0
  91. package/dist/core/p-3e8023ff.entry.js.map +1 -0
  92. package/dist/core/p-a32016ff.entry.js +2 -0
  93. package/dist/core/p-a32016ff.entry.js.map +1 -0
  94. package/dist/core/{p-7e8a4abd.entry.js → p-bfaa257c.entry.js} +2 -2
  95. package/dist/core/{p-7e8a4abd.entry.js.map → p-bfaa257c.entry.js.map} +1 -1
  96. package/dist/core/p-e1ab5945.entry.js +2 -0
  97. package/dist/core/p-e1ab5945.entry.js.map +1 -0
  98. package/dist/core/p-e668390c.entry.js +2 -0
  99. package/dist/core/p-e668390c.entry.js.map +1 -0
  100. package/dist/core/{p-2cd1a601.entry.js → p-f4382f1f.entry.js} +2 -2
  101. package/dist/core/p-f4382f1f.entry.js.map +1 -0
  102. package/dist/esm/core.js +1 -1
  103. package/dist/esm/ic-dialog.entry.js +16 -3
  104. package/dist/esm/ic-dialog.entry.js.map +1 -1
  105. package/dist/esm/ic-navigation-item.entry.js +1 -1
  106. package/dist/esm/ic-navigation-item.entry.js.map +1 -1
  107. package/dist/esm/ic-radio-group.entry.js +21 -18
  108. package/dist/esm/ic-radio-group.entry.js.map +1 -1
  109. package/dist/esm/ic-radio-option.entry.js +11 -3
  110. package/dist/esm/ic-radio-option.entry.js.map +1 -1
  111. package/dist/esm/ic-search-bar.entry.js +2 -1
  112. package/dist/esm/ic-search-bar.entry.js.map +1 -1
  113. package/dist/esm/ic-toast.entry.js +2 -2
  114. package/dist/esm/ic-toast.entry.js.map +1 -1
  115. package/dist/esm/loader.js +1 -1
  116. package/dist/types/components/ic-dialog/ic-dialog.d.ts +1 -0
  117. package/dist/types/components/ic-radio-group/ic-radio-group.d.ts +1 -1
  118. package/dist/types/components/ic-radio-option/ic-radio-option.d.ts +1 -0
  119. package/hydrate/index.js +54 -29
  120. package/package.json +15 -11
  121. package/dist/core/p-2cd1a601.entry.js.map +0 -1
  122. package/dist/core/p-922036e8.entry.js +0 -2
  123. package/dist/core/p-922036e8.entry.js.map +0 -1
  124. package/dist/core/p-afa78488.entry.js +0 -2
  125. package/dist/core/p-afa78488.entry.js.map +0 -1
  126. package/dist/core/p-dfb3e76e.entry.js +0 -2
  127. package/dist/core/p-dfb3e76e.entry.js.map +0 -1
  128. package/dist/core/p-f4a29c16.entry.js +0 -2
  129. package/dist/core/p-f4a29c16.entry.js.map +0 -1
@@ -0,0 +1,486 @@
1
+ import { html } from "lit-html";
2
+
3
+ const defaultArgs = {
4
+ open: true,
5
+ groupLabel: "View",
6
+ description: "",
7
+ disabled: false,
8
+ href: "/",
9
+ keyboardShortcut: "Cmd + C",
10
+ label: "Copy code",
11
+ variant: "default",
12
+ iconSlot: true,
13
+ };
14
+
15
+ export default {
16
+ title: "Web Components/Popover menu",
17
+ component: "Popover Menu",
18
+ };
19
+
20
+ export const Default = {
21
+ render: (args) => html`
22
+ <ic-button id="button-1" onclick="buttonClick()"
23
+ >Show/Hide popover</ic-button
24
+ >
25
+ <script>
26
+ var icPopover = document.querySelector("ic-popover-menu");
27
+ function buttonClick() {
28
+ icPopover.open = !icPopover.open;
29
+ }
30
+ icPopover.addEventListener("icPopoverClosed", handleClosed);
31
+ function handleClosed(event) {
32
+ console.log(event.detail);
33
+ }
34
+ </script>
35
+ <div>
36
+ <ic-popover-menu anchor="button-1" aria-label="popover">
37
+ <ic-menu-item label="Copy code" disabled="true"></ic-menu-item>
38
+ <ic-menu-group label="View">
39
+ <ic-menu-item label="Zoom in" keyboard-shortcut="Cmd+"></ic-menu-item>
40
+ <ic-menu-item
41
+ label="Zoom out"
42
+ keyboard-shortcut="Cmd-"
43
+ ></ic-menu-item>
44
+ </ic-menu-group>
45
+ <ic-menu-item label="Actions" submenu-trigger-for="abc"></ic-menu-item>
46
+ <ic-menu-item
47
+ label="Logout"
48
+ variant="destructive"
49
+ disabled="true"
50
+ ></ic-menu-item>
51
+ </ic-popover-menu>
52
+ <ic-popover-menu submenu-id="abc">
53
+ <ic-menu-item label="Edit"></ic-menu-item>
54
+ <ic-menu-item label="Find" submenu-trigger-for="abc123"></ic-menu-item>
55
+ <ic-menu-item label="Delete" variant="destructive"></ic-menu-item>
56
+ </ic-popover-menu>
57
+ <ic-popover-menu submenu-id="abc123">
58
+ <ic-menu-item
59
+ disabled="true"
60
+ label="Search the web"
61
+ description="This will search the web to find the thing you are looking for."
62
+ ></ic-menu-item>
63
+ <ic-menu-item label="Find..."></ic-menu-item>
64
+ <ic-menu-item label="Find icons">
65
+ <svg
66
+ slot="icon"
67
+ xmlns="http://www.w3.org/2000/svg"
68
+ height="24px"
69
+ viewBox="0 0 24 24"
70
+ width="24px"
71
+ >
72
+ <path d="M0 0h24v24H0V0z" fill="none" />
73
+ <path
74
+ d="M17.65 6.35C16.2 4.9 14.21 4 12 4c-4.42 0-7.99 3.58-7.99 8s3.57 8 7.99 8c3.73 0 6.84-2.55 7.73-6h-2.08c-.82 2.33-3.04 4-5.65 4-3.31 0-6-2.69-6-6s2.69-6 6-6c1.66 0 3.14.69 4.22 1.78L13 11h7V4l-2.35 2.35z"
75
+ />
76
+ </svg>
77
+ </ic-menu-item>
78
+ <ic-menu-item
79
+ label="Show found results"
80
+ variant="toggle"
81
+ ></ic-menu-item>
82
+ </ic-popover-menu>
83
+ </div>
84
+ `,
85
+
86
+ name: "Default",
87
+ };
88
+
89
+ export const MaxHeight = {
90
+ render: (args) => html`
91
+ <style>
92
+ ic-popover-menu {
93
+ --max-height: 100px;
94
+ }
95
+ </style>
96
+ <ic-button id="button-1" onclick="buttonClick()"
97
+ >Show/Hide popover</ic-button
98
+ >
99
+ <script>
100
+ var icPopover = document.querySelector("ic-popover-menu");
101
+ function buttonClick() {
102
+ icPopover.open = !icPopover.open;
103
+ }
104
+ </script>
105
+ <div>
106
+ <ic-popover-menu anchor="button-1" aria-label="popover">
107
+ <ic-menu-item label="Copy code" disabled="true"></ic-menu-item>
108
+ <ic-menu-group label="View">
109
+ <ic-menu-item label="Zoom in" keyboard-shortcut="Cmd+"></ic-menu-item>
110
+ <ic-menu-item
111
+ label="Zoom out"
112
+ keyboard-shortcut="Cmd-"
113
+ ></ic-menu-item>
114
+ </ic-menu-group>
115
+ <ic-menu-item label="Actions" submenu-trigger-for="abc"></ic-menu-item>
116
+ </ic-popover-menu>
117
+ <ic-popover-menu submenu-id="abc">
118
+ <ic-menu-item label="Edit"></ic-menu-item>
119
+ <ic-menu-item label="Find" submenu-trigger-for="abc123"></ic-menu-item>
120
+ <ic-menu-item label="Delete" variant="destructive"></ic-menu-item>
121
+ </ic-popover-menu>
122
+ <ic-popover-menu submenu-id="abc123">
123
+ <ic-menu-item
124
+ label="Search the web"
125
+ description="This will search the web to find the thing you are looking for."
126
+ ></ic-menu-item>
127
+ <ic-menu-item label="Find..."></ic-menu-item>
128
+ <ic-menu-item label="Find icons">
129
+ <svg
130
+ slot="icon"
131
+ xmlns="http://www.w3.org/2000/svg"
132
+ height="24px"
133
+ viewBox="0 0 24 24"
134
+ width="24px"
135
+ >
136
+ <path d="M0 0h24v24H0V0z" fill="none" />
137
+ <path
138
+ d="M17.65 6.35C16.2 4.9 14.21 4 12 4c-4.42 0-7.99 3.58-7.99 8s3.57 8 7.99 8c3.73 0 6.84-2.55 7.73-6h-2.08c-.82 2.33-3.04 4-5.65 4-3.31 0-6-2.69-6-6s2.69-6 6-6c1.66 0 3.14.69 4.22 1.78L13 11h7V4l-2.35 2.35z"
139
+ />
140
+ </svg>
141
+ </ic-menu-item>
142
+ <ic-menu-item
143
+ label="Show found results"
144
+ variant="toggle"
145
+ ></ic-menu-item>
146
+ </ic-popover-menu>
147
+ </div>
148
+ `,
149
+
150
+ name: "Max height",
151
+ };
152
+
153
+ export const LeftPlacement = {
154
+ render: (args) => html`
155
+ <div style="margin-left: 1000px">
156
+ <ic-button id="button-1" onclick="buttonClick()"
157
+ >Show/Hide popover</ic-button
158
+ >
159
+ <script>
160
+ var icPopover = document.querySelector("ic-popover-menu");
161
+ function buttonClick() {
162
+ icPopover.open = !icPopover.open;
163
+ }
164
+ </script>
165
+ <div>
166
+ <ic-popover-menu anchor="button-1" aria-label="popover">
167
+ <ic-menu-item label="Copy code" disabled="true"></ic-menu-item>
168
+ <ic-menu-group label="View">
169
+ <ic-menu-item
170
+ label="Zoom in"
171
+ keyboard-shortcut="Cmd+"
172
+ ></ic-menu-item>
173
+ <ic-menu-item
174
+ label="Zoom out"
175
+ keyboard-shortcut="Cmd-"
176
+ ></ic-menu-item>
177
+ </ic-menu-group>
178
+ <ic-menu-item
179
+ label="Actions"
180
+ submenu-trigger-for="abc"
181
+ ></ic-menu-item>
182
+ </ic-popover-menu>
183
+ <ic-popover-menu submenu-id="abc">
184
+ <ic-menu-item label="Edit"></ic-menu-item>
185
+ <ic-menu-item
186
+ label="Find"
187
+ submenu-trigger-for="abc123"
188
+ ></ic-menu-item>
189
+ <ic-menu-item label="Delete" variant="destructive"></ic-menu-item>
190
+ </ic-popover-menu>
191
+ <ic-popover-menu submenu-id="abc123">
192
+ <ic-menu-item
193
+ label="Search the web"
194
+ description="This will search the web to find the thing you are looking for."
195
+ ></ic-menu-item>
196
+ <ic-menu-item label="Find..."></ic-menu-item>
197
+ <ic-menu-item label="Find icons">
198
+ <svg
199
+ slot="icon"
200
+ xmlns="http://www.w3.org/2000/svg"
201
+ height="24px"
202
+ viewBox="0 0 24 24"
203
+ width="24px"
204
+ >
205
+ <path d="M0 0h24v24H0V0z" fill="none" />
206
+ <path
207
+ d="M17.65 6.35C16.2 4.9 14.21 4 12 4c-4.42 0-7.99 3.58-7.99 8s3.57 8 7.99 8c3.73 0 6.84-2.55 7.73-6h-2.08c-.82 2.33-3.04 4-5.65 4-3.31 0-6-2.69-6-6s2.69-6 6-6c1.66 0 3.14.69 4.22 1.78L13 11h7V4l-2.35 2.35z"
208
+ />
209
+ </svg>
210
+ </ic-menu-item>
211
+ <ic-menu-item
212
+ label="Show found results"
213
+ variant="toggle"
214
+ ></ic-menu-item>
215
+ </ic-popover-menu>
216
+ </div>
217
+ </div>
218
+ `,
219
+
220
+ name: "Left placement",
221
+ };
222
+
223
+ export const TopPlacement = {
224
+ render: (args) => html`
225
+ <div style="margin-top: 540px">
226
+ <ic-button id="button-1" onclick="buttonClick()"
227
+ >Show/Hide popover</ic-button
228
+ >
229
+ <script>
230
+ var icPopover = document.querySelector("ic-popover-menu");
231
+ function buttonClick() {
232
+ icPopover.open = !icPopover.open;
233
+ }
234
+ </script>
235
+ <div>
236
+ <ic-popover-menu anchor="button-1" aria-label="popover">
237
+ <ic-menu-item label="Copy code" disabled="true"></ic-menu-item>
238
+ <ic-menu-group label="View">
239
+ <ic-menu-item
240
+ label="Zoom in"
241
+ keyboard-shortcut="Cmd+"
242
+ ></ic-menu-item>
243
+ <ic-menu-item
244
+ label="Zoom out"
245
+ keyboard-shortcut="Cmd-"
246
+ ></ic-menu-item>
247
+ </ic-menu-group>
248
+ <ic-menu-item
249
+ label="Actions"
250
+ submenu-trigger-for="abc"
251
+ ></ic-menu-item>
252
+ </ic-popover-menu>
253
+ <ic-popover-menu submenu-id="abc">
254
+ <ic-menu-item label="Edit"></ic-menu-item>
255
+ <ic-menu-item
256
+ label="Find"
257
+ submenu-trigger-for="abc123"
258
+ ></ic-menu-item>
259
+ <ic-menu-item label="Delete" variant="destructive"></ic-menu-item>
260
+ </ic-popover-menu>
261
+ <ic-popover-menu submenu-id="abc123">
262
+ <ic-menu-item
263
+ label="Search the web"
264
+ description="This will search the web to find the thing you are looking for."
265
+ ></ic-menu-item>
266
+ <ic-menu-item label="Find..."></ic-menu-item>
267
+ <ic-menu-item label="Find icons">
268
+ <svg
269
+ slot="icon"
270
+ xmlns="http://www.w3.org/2000/svg"
271
+ height="24px"
272
+ viewBox="0 0 24 24"
273
+ width="24px"
274
+ >
275
+ <path d="M0 0h24v24H0V0z" fill="none" />
276
+ <path
277
+ d="M17.65 6.35C16.2 4.9 14.21 4 12 4c-4.42 0-7.99 3.58-7.99 8s3.57 8 7.99 8c3.73 0 6.84-2.55 7.73-6h-2.08c-.82 2.33-3.04 4-5.65 4-3.31 0-6-2.69-6-6s2.69-6 6-6c1.66 0 3.14.69 4.22 1.78L13 11h7V4l-2.35 2.35z"
278
+ />
279
+ </svg>
280
+ </ic-menu-item>
281
+ <ic-menu-item
282
+ label="Show found results"
283
+ variant="toggle"
284
+ ></ic-menu-item>
285
+ </ic-popover-menu>
286
+ </div>
287
+ </div>
288
+ `,
289
+
290
+ name: "Top placement",
291
+ };
292
+
293
+ export const MultiplePopoversOnPage = {
294
+ render: (args) =>
295
+ html` <ic-link href="/">Link1</ic-link>
296
+ <ic-button id="button-1" onclick="buttonClick(1)"
297
+ >Show/Hide popover</ic-button
298
+ >
299
+ <ic-link href="/">Link2</ic-link>
300
+ <ic-button id="button-2" onclick="buttonClick(2)"
301
+ >Show/Hide popover 2</ic-button
302
+ >
303
+ <ic-link href="/">Link3</ic-link>
304
+ <script>
305
+ function buttonClick(pos) {
306
+ var icPopover = document.querySelector("#popover" + pos);
307
+ icPopover.open = !icPopover.open;
308
+ }
309
+ </script>
310
+ <div>
311
+ <ic-popover-menu anchor="button-1" aria-label="popover" id="popover1">
312
+ <ic-menu-item label="Copy code" disabled="true"></ic-menu-item>
313
+ <ic-menu-group label="View">
314
+ <ic-menu-item
315
+ label="Zoom in"
316
+ keyboard-shortcut="Cmd+"
317
+ ></ic-menu-item>
318
+ <ic-menu-item
319
+ label="Zoom out"
320
+ keyboard-shortcut="Cmd-"
321
+ ></ic-menu-item>
322
+ </ic-menu-group>
323
+ <ic-menu-item
324
+ label="Actions"
325
+ submenu-trigger-for="abc"
326
+ ></ic-menu-item>
327
+ <ic-menu-item
328
+ label="Logout"
329
+ variant="destructive"
330
+ disabled="true"
331
+ ></ic-menu-item>
332
+ </ic-popover-menu>
333
+ <ic-popover-menu submenu-id="abc">
334
+ <ic-menu-item label="Edit"></ic-menu-item>
335
+ <ic-menu-item
336
+ label="Find"
337
+ submenu-trigger-for="abc123"
338
+ ></ic-menu-item>
339
+ <ic-menu-item label="Delete" variant="destructive"></ic-menu-item>
340
+ </ic-popover-menu>
341
+ <ic-popover-menu submenu-id="abc123">
342
+ <ic-menu-item
343
+ disabled="true"
344
+ label="Search the web"
345
+ description="This will search the web to find the thing you are looking for."
346
+ ></ic-menu-item>
347
+ <ic-menu-item label="Find..."></ic-menu-item>
348
+ <ic-menu-item label="Find icons">
349
+ <svg
350
+ slot="icon"
351
+ xmlns="http://www.w3.org/2000/svg"
352
+ height="24px"
353
+ viewBox="0 0 24 24"
354
+ width="24px"
355
+ >
356
+ <path d="M0 0h24v24H0V0z" fill="none" />
357
+ <path
358
+ d="M17.65 6.35C16.2 4.9 14.21 4 12 4c-4.42 0-7.99 3.58-7.99 8s3.57 8 7.99 8c3.73 0 6.84-2.55 7.73-6h-2.08c-.82 2.33-3.04 4-5.65 4-3.31 0-6-2.69-6-6s2.69-6 6-6c1.66 0 3.14.69 4.22 1.78L13 11h7V4l-2.35 2.35z"
359
+ />
360
+ </svg>
361
+ </ic-menu-item>
362
+ <ic-menu-item
363
+ label="Show found results"
364
+ variant="toggle"
365
+ ></ic-menu-item>
366
+ </ic-popover-menu>
367
+ <ic-popover-menu anchor="button-2" aria-label="popover" id="popover2">
368
+ <ic-menu-item label="Copy code" disabled="true"></ic-menu-item>
369
+ <ic-menu-group label="View">
370
+ <ic-menu-item
371
+ label="Zoom in"
372
+ keyboard-shortcut="Cmd+"
373
+ ></ic-menu-item>
374
+ <ic-menu-item
375
+ label="Zoom out"
376
+ keyboard-shortcut="Cmd-"
377
+ ></ic-menu-item>
378
+ </ic-menu-group>
379
+ <ic-menu-item
380
+ label="Actions"
381
+ submenu-trigger-for="def"
382
+ ></ic-menu-item>
383
+ </ic-popover-menu>
384
+ <ic-popover-menu submenu-id="def">
385
+ <ic-menu-item label="Edit"></ic-menu-item>
386
+ <ic-menu-item
387
+ label="Find"
388
+ submenu-trigger-for="def123"
389
+ ></ic-menu-item>
390
+ <ic-menu-item label="Delete" variant="destructive"></ic-menu-item>
391
+ </ic-popover-menu>
392
+ <ic-popover-menu submenu-id="def123">
393
+ <ic-menu-item
394
+ label="Search the web"
395
+ description="This will search the web to find the thing you are looking for."
396
+ ></ic-menu-item>
397
+ <ic-menu-item label="Find..."></ic-menu-item>
398
+ <ic-menu-item label="Find icons">
399
+ <svg
400
+ slot="icon"
401
+ xmlns="http://www.w3.org/2000/svg"
402
+ height="24px"
403
+ viewBox="0 0 24 24"
404
+ width="24px"
405
+ >
406
+ <path d="M0 0h24v24H0V0z" fill="none" />
407
+ <path
408
+ d="M17.65 6.35C16.2 4.9 14.21 4 12 4c-4.42 0-7.99 3.58-7.99 8s3.57 8 7.99 8c3.73 0 6.84-2.55 7.73-6h-2.08c-.82 2.33-3.04 4-5.65 4-3.31 0-6-2.69-6-6s2.69-6 6-6c1.66 0 3.14.69 4.22 1.78L13 11h7V4l-2.35 2.35z"
409
+ />
410
+ </svg>
411
+ </ic-menu-item>
412
+ <ic-menu-item
413
+ label="Show found results"
414
+ variant="toggle"
415
+ ></ic-menu-item>
416
+ </ic-popover-menu>
417
+ </div>`,
418
+
419
+ name: "Multiple popovers on page",
420
+ };
421
+
422
+ export const Playground = {
423
+ render: (args) =>
424
+ html`<div>
425
+ <ic-popover-menu
426
+ aria-label="popover"
427
+ open=${args.open}
428
+ id="popover-menu-playground"
429
+ >
430
+ <ic-menu-group label=${args.groupLabel}>
431
+ <ic-menu-item
432
+ description=${args.description}
433
+ disabled=${args.disabled}
434
+ href=${args.href}
435
+ keyboard-shortcut=${args.keyboardShortcut}
436
+ label=${args.label}
437
+ variant=${args.variant}
438
+ >
439
+ <svg
440
+ slot=${args.iconSlot}
441
+ xmlns="http://www.w3.org/2000/svg"
442
+ height="24px"
443
+ viewBox="0 0 24 24"
444
+ width="24px"
445
+ >
446
+ <path d="M0 0h24v24H0V0z" fill="none" />
447
+ <path
448
+ d="M17.65 6.35C16.2 4.9 14.21 4 12 4c-4.42 0-7.99 3.58-7.99 8s3.57 8 7.99 8c3.73 0 6.84-2.55 7.73-6h-2.08c-.82 2.33-3.04 4-5.65 4-3.31 0-6-2.69-6-6s2.69-6 6-6c1.66 0 3.14.69 4.22 1.78L13 11h7V4l-2.35 2.35z"
449
+ />
450
+ </svg>
451
+ </ic-menu-item>
452
+ <ic-menu-item
453
+ label="Zoom out"
454
+ keyboard-shortcut="Cmd-"
455
+ ></ic-menu-item>
456
+ </ic-menu-group>
457
+ <ic-menu-item label="Actions" submenu-trigger-for="abc"></ic-menu-item>
458
+ </ic-popover-menu>
459
+ <ic-popover-menu submenu-id="abc">
460
+ <ic-menu-item label="Edit"></ic-menu-item>
461
+ <ic-menu-item label="Find"></ic-menu-item>
462
+ <ic-menu-item label="Delete" variant="destructive"></ic-menu-item>
463
+ </ic-popover-menu>
464
+ </div>`,
465
+
466
+ args: defaultArgs,
467
+
468
+ argTypes: {
469
+ variant: {
470
+ options: ["default", "toggle", "destructive"],
471
+
472
+ control: {
473
+ type: "radio",
474
+ },
475
+ },
476
+
477
+ iconSlot: {
478
+ mapping: {
479
+ true: "icon",
480
+ false: "",
481
+ },
482
+ },
483
+ },
484
+
485
+ name: "Playground",
486
+ };
@@ -13,6 +13,7 @@ export class RadioGroup {
13
13
  this.resizeObserver.observe(this.el);
14
14
  };
15
15
  this.handleKeyDown = (event) => {
16
+ event.stopPropagation();
16
17
  switch (event.key) {
17
18
  case "ArrowDown":
18
19
  case "ArrowRight":
@@ -53,7 +54,7 @@ export class RadioGroup {
53
54
  this.setRadioOptions = () => {
54
55
  this.selectedChild = -1;
55
56
  this.checkedValue = "";
56
- this.radioOptions = Array.from(this.el.querySelectorAll("ic-radio-option"));
57
+ this.radioOptions = Array.from(this.el.children).filter((el) => el.tagName === "IC-RADIO-OPTION");
57
58
  if (this.radioOptions.length > 0) {
58
59
  this.radioOptions.forEach((radioOption, index) => {
59
60
  if (!radioOption.selected) {
@@ -123,25 +124,27 @@ export class RadioGroup {
123
124
  { prop: this.name, propName: "name" },
124
125
  ], "Radio Group");
125
126
  }
126
- selectHandler({ detail, target }) {
127
+ selectHandler(event) {
127
128
  var _a;
128
- this.checkedValue = detail.value;
129
- const selectedOption = target;
130
- this.icChange.emit({
131
- value: this.checkedValue,
132
- selectedOption: {
133
- radio: selectedOption,
134
- textFieldValue: (_a = selectedOption === null || selectedOption === void 0 ? void 0 : selectedOption.querySelector("ic-text-field")) === null || _a === void 0 ? void 0 : _a.value,
135
- },
136
- });
137
- if (this.radioOptions !== undefined) {
138
- this.radioOptions.forEach((radioOption, index) => {
139
- radioOption.selected = selectedOption === radioOption;
140
- if (radioOption.selected) {
141
- this.selectedChild = index;
142
- }
129
+ if (event.target.parentElement === this.el) {
130
+ this.checkedValue = event.detail.value;
131
+ const selectedOption = event.target;
132
+ this.icChange.emit({
133
+ value: this.checkedValue,
134
+ selectedOption: {
135
+ radio: selectedOption,
136
+ textFieldValue: (_a = selectedOption === null || selectedOption === void 0 ? void 0 : selectedOption.querySelector("ic-text-field")) === null || _a === void 0 ? void 0 : _a.value,
137
+ },
143
138
  });
144
- this.setFirstRadioOptionTabIndex(this.selectedChild > 0 ? -1 : 0);
139
+ if (this.radioOptions !== undefined) {
140
+ this.radioOptions.forEach((radioOption, index) => {
141
+ radioOption.selected = selectedOption === radioOption;
142
+ if (radioOption.selected) {
143
+ this.selectedChild = index;
144
+ }
145
+ });
146
+ this.setFirstRadioOptionTabIndex(this.selectedChild > 0 ? -1 : 0);
147
+ }
145
148
  }
146
149
  }
147
150
  changeHandler() {
@@ -1 +1 @@
1
- {"version":3,"file":"ic-radio-group.js","sourceRoot":"","sources":["../../../src/components/ic-radio-group/ic-radio-group.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n Host,\n h,\n Prop,\n State,\n Listen,\n Element,\n Event,\n EventEmitter,\n Watch,\n} from \"@stencil/core\";\nimport {\n hasValidationStatus,\n isSlotUsed,\n onComponentRequiredPropUndefined,\n removeDisabledFalse,\n renderHiddenInput,\n checkResizeObserver,\n} from \"../../utils/helpers\";\nimport {\n IcInformationStatusOrEmpty,\n IcOrientation,\n IcSizesNoLarge,\n IcValueEventDetail,\n} from \"../../utils/types\";\nimport { IcChangeEventDetail } from \"./ic-radio-group.types\";\n\n@Component({\n tag: \"ic-radio-group\",\n styleUrl: \"ic-radio-group.css\",\n shadow: true,\n})\nexport class RadioGroup {\n private radioContainer: HTMLDivElement;\n private radioOptions: HTMLIcRadioOptionElement[];\n private resizeObserver: ResizeObserver = null;\n private ADDITIONAL_FIELD = \"additional-field\";\n private RADIO_HORIZONTAL: IcOrientation = \"horizontal\";\n private RADIO_VERTICAL: IcOrientation = \"vertical\";\n\n @Element() el: HTMLIcRadioGroupElement;\n\n @State() checkedValue: string = \"\";\n @State() currentOrientation: IcOrientation;\n @State() initialOrientation: IcOrientation;\n @State() selectedChild: number = -1;\n\n /**\n * If `true`, the disabled state will be set.\n */\n @Prop() disabled: boolean = false;\n\n @Watch(\"disabled\")\n watchDisabledHandler(newValue: boolean): void {\n this.radioOptions.forEach(\n (radioOption) => (radioOption.disabled = newValue)\n );\n removeDisabledFalse(this.disabled, this.el);\n }\n\n /**\n * The helper text that will be displayed for additional field guidance.\n */\n @Prop() helperText: string;\n\n /**\n * If `true`, the label will be hidden and the required label value will be applied as an aria-label.\n */\n @Prop() hideLabel: boolean = false;\n\n /**\n * The label for the radio group to be displayed.\n */\n @Prop() label!: string;\n\n /**\n * The name for the radio group to differentiate from other groups.\n */\n @Prop() name!: string;\n\n /**\n * The orientation of the radio buttons in the radio group. If there are more than two radio buttons in a radio group or either of the radio buttons use the `additional-field` slot, then the orientation will always be vertical.\n */\n @Prop() orientation: IcOrientation = \"vertical\";\n\n /**\n * If `true`, the radio group will require a value.\n */\n @Prop() required: boolean = false;\n\n /**\n * The size of the radio group component.\n */\n @Prop() size?: IcSizesNoLarge = \"default\";\n\n /**\n * @deprecated This prop should not be used anymore. Set prop `size` to \"small\" instead.\n */\n @Prop() small?: boolean = false;\n\n /**\n * The validation status - e.g. 'error' | 'warning' | 'success'.\n */\n @Prop() validationStatus: IcInformationStatusOrEmpty = \"\";\n /**\n * The validation text - e.g. 'error' | 'warning' | 'success'.\n */\n @Prop() validationText: string = \"\";\n\n @Watch(\"orientation\")\n orientationChangeHandler(): void {\n this.initialOrientation = this.orientation;\n this.checkOrientation();\n }\n\n /**\n * Emitted when a user selects a radio.\n */\n @Event() icChange: EventEmitter<IcChangeEventDetail>;\n\n disconnectedCallback(): void {\n this.resizeObserver?.disconnect();\n this.radioContainer?.removeEventListener(\n \"slotchange\",\n this.setRadioOptions\n );\n }\n\n componentWillLoad(): void {\n removeDisabledFalse(this.disabled, this.el);\n\n this.orientationChangeHandler();\n this.currentOrientation = this.initialOrientation;\n }\n\n componentDidLoad(): void {\n this.setRadioOptions();\n checkResizeObserver(this.runResizeObserver);\n this.addSlotChangeListener();\n\n onComponentRequiredPropUndefined(\n [\n { prop: this.label, propName: \"label\" },\n { prop: this.name, propName: \"name\" },\n ],\n \"Radio Group\"\n );\n }\n\n @Listen(\"icCheck\")\n selectHandler({ detail, target }: CustomEvent<IcValueEventDetail>): void {\n this.checkedValue = detail.value;\n const selectedOption = target as HTMLIcRadioOptionElement;\n this.icChange.emit({\n value: this.checkedValue,\n selectedOption: {\n radio: selectedOption,\n textFieldValue: selectedOption?.querySelector(\"ic-text-field\")?.value,\n },\n });\n\n if (this.radioOptions !== undefined) {\n this.radioOptions.forEach((radioOption, index) => {\n radioOption.selected = selectedOption === radioOption;\n if (radioOption.selected) {\n this.selectedChild = index;\n }\n });\n this.setFirstRadioOptionTabIndex(this.selectedChild > 0 ? -1 : 0);\n }\n }\n\n @Listen(\"icSelectedChange\")\n changeHandler(): void {\n const selectedOption = this.radioOptions.findIndex(\n (radioOption) => radioOption.selected\n );\n if (selectedOption < 0) {\n this.setFirstRadioOptionTabIndex(0);\n this.selectedChild = selectedOption;\n }\n }\n\n private runResizeObserver = () => {\n this.resizeObserver = new ResizeObserver(() => {\n this.checkOrientation();\n });\n\n this.resizeObserver.observe(this.el);\n };\n\n private checkOrientation() {\n if (this.initialOrientation === this.RADIO_HORIZONTAL) {\n let totalWidth = 0;\n if (Array.isArray(this.radioOptions) && this.radioOptions.length > 0) {\n this.radioOptions.forEach(({ clientWidth }, i, arr) => {\n totalWidth += clientWidth;\n if (i < arr.length - 1) totalWidth += 40;\n });\n } else {\n totalWidth = 0;\n }\n\n if (this.initialOrientation == this.RADIO_HORIZONTAL) {\n if (\n this.radioOptions !== undefined &&\n (this.radioOptions.length > 2 ||\n (this.radioOptions.length === 2 &&\n (isSlotUsed(this.radioOptions[0], this.ADDITIONAL_FIELD) ||\n isSlotUsed(this.radioOptions[1], this.ADDITIONAL_FIELD))))\n ) {\n this.currentOrientation = this.RADIO_VERTICAL;\n } else {\n if (totalWidth >= this.radioContainer?.clientWidth) {\n this.currentOrientation = this.RADIO_VERTICAL;\n } else if (totalWidth < this.radioContainer?.clientWidth) {\n this.currentOrientation = this.RADIO_HORIZONTAL;\n }\n }\n }\n }\n }\n\n private handleKeyDown = (event: KeyboardEvent): void => {\n switch (event.key) {\n case \"ArrowDown\":\n case \"ArrowRight\":\n this.radioOptions[\n this.getNextItemToSelect(this.selectedChild, true)\n ].click();\n event.preventDefault();\n break;\n case \"ArrowUp\":\n case \"ArrowLeft\":\n this.radioOptions[\n this.getNextItemToSelect(this.selectedChild, false)\n ].click();\n event.preventDefault();\n }\n };\n\n private getNextItemToSelect = (\n currentItem: number,\n movingDown: boolean\n ): number => {\n const numRadios = this.radioOptions.length - 1;\n\n if (currentItem < 1) {\n currentItem = 0;\n }\n\n let nextItem = movingDown ? currentItem + 1 : currentItem - 1;\n\n //check if wrap around necessary\n if (nextItem < 0) {\n nextItem = numRadios;\n } else if (nextItem > numRadios) {\n nextItem = 0;\n }\n\n //if next item is disabled then find next\n if (this.radioOptions[nextItem].disabled) {\n nextItem = this.getNextItemToSelect(nextItem, movingDown);\n }\n\n return nextItem;\n };\n\n private addSlotChangeListener = () => {\n this.radioContainer.addEventListener(\"slotchange\", this.setRadioOptions);\n };\n\n private setFirstRadioOptionTabIndex = (value: number) => {\n this.radioOptions[0].setTabIndex(value);\n };\n\n private setRadioOptions = () => {\n this.selectedChild = -1;\n this.checkedValue = \"\";\n this.radioOptions = Array.from(this.el.querySelectorAll(\"ic-radio-option\"));\n if (this.radioOptions.length > 0) {\n this.radioOptions.forEach((radioOption, index) => {\n if (!radioOption.selected) {\n radioOption.selected = this.checkedValue === radioOption.value;\n }\n radioOption.name = this.name;\n radioOption.groupLabel = this.label;\n if (radioOption.selected) {\n this.selectedChild = index;\n this.checkedValue = radioOption.value;\n }\n if (this.disabled) {\n radioOption.disabled = true;\n }\n });\n this.setFirstRadioOptionTabIndex(this.selectedChild > 0 ? -1 : 0);\n\n if (\n this.initialOrientation === this.RADIO_HORIZONTAL &&\n this.radioOptions !== undefined &&\n (this.radioOptions.length > 2 ||\n (this.radioOptions.length === 2 &&\n (isSlotUsed(this.radioOptions[0], this.ADDITIONAL_FIELD) ||\n isSlotUsed(this.radioOptions[1], this.ADDITIONAL_FIELD))))\n ) {\n this.currentOrientation = this.RADIO_VERTICAL;\n }\n }\n };\n\n render() {\n renderHiddenInput(\n true,\n this.el,\n this.name,\n this.checkedValue,\n this.disabled\n );\n\n return (\n <Host\n onKeyDown={this.handleKeyDown}\n class={{ small: this.small || this.size === \"small\" }}\n >\n <div\n role=\"radiogroup\"\n aria-label={`${this.label}${this.required ? \", required\" : \"\"}`}\n >\n {!this.hideLabel && (\n <ic-input-label\n class={{ [`${this.validationStatus}`]: true }}\n label={this.label}\n helperText={this.helperText}\n required={this.required}\n disabled={this.disabled}\n ></ic-input-label>\n )}\n <div\n class={{\n \"radio-buttons-container\": true,\n horizontal: this.currentOrientation === this.RADIO_HORIZONTAL,\n }}\n ref={(el) => (this.radioContainer = el)}\n >\n <slot></slot>\n </div>\n </div>\n {hasValidationStatus(this.validationStatus, this.disabled) && (\n <ic-input-validation\n ariaLiveMode=\"polite\"\n status={this.validationStatus}\n message={this.validationText}\n ></ic-input-validation>\n )}\n </Host>\n );\n }\n}\n"]}
1
+ {"version":3,"file":"ic-radio-group.js","sourceRoot":"","sources":["../../../src/components/ic-radio-group/ic-radio-group.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n Host,\n h,\n Prop,\n State,\n Listen,\n Element,\n Event,\n EventEmitter,\n Watch,\n} from \"@stencil/core\";\nimport {\n hasValidationStatus,\n isSlotUsed,\n onComponentRequiredPropUndefined,\n removeDisabledFalse,\n renderHiddenInput,\n checkResizeObserver,\n} from \"../../utils/helpers\";\nimport {\n IcInformationStatusOrEmpty,\n IcOrientation,\n IcSizesNoLarge,\n IcValueEventDetail,\n} from \"../../utils/types\";\nimport { IcChangeEventDetail } from \"./ic-radio-group.types\";\n\n@Component({\n tag: \"ic-radio-group\",\n styleUrl: \"ic-radio-group.css\",\n shadow: true,\n})\nexport class RadioGroup {\n private radioContainer: HTMLDivElement;\n private radioOptions: HTMLIcRadioOptionElement[];\n private resizeObserver: ResizeObserver = null;\n private ADDITIONAL_FIELD = \"additional-field\";\n private RADIO_HORIZONTAL: IcOrientation = \"horizontal\";\n private RADIO_VERTICAL: IcOrientation = \"vertical\";\n\n @Element() el: HTMLIcRadioGroupElement;\n\n @State() checkedValue: string = \"\";\n @State() currentOrientation: IcOrientation;\n @State() initialOrientation: IcOrientation;\n @State() selectedChild: number = -1;\n\n /**\n * If `true`, the disabled state will be set.\n */\n @Prop() disabled: boolean = false;\n\n @Watch(\"disabled\")\n watchDisabledHandler(newValue: boolean): void {\n this.radioOptions.forEach(\n (radioOption) => (radioOption.disabled = newValue)\n );\n removeDisabledFalse(this.disabled, this.el);\n }\n\n /**\n * The helper text that will be displayed for additional field guidance.\n */\n @Prop() helperText: string;\n\n /**\n * If `true`, the label will be hidden and the required label value will be applied as an aria-label.\n */\n @Prop() hideLabel: boolean = false;\n\n /**\n * The label for the radio group to be displayed.\n */\n @Prop() label!: string;\n\n /**\n * The name for the radio group to differentiate from other groups.\n */\n @Prop() name!: string;\n\n /**\n * The orientation of the radio buttons in the radio group. If there are more than two radio buttons in a radio group or either of the radio buttons use the `additional-field` slot, then the orientation will always be vertical.\n */\n @Prop() orientation: IcOrientation = \"vertical\";\n\n /**\n * If `true`, the radio group will require a value.\n */\n @Prop() required: boolean = false;\n\n /**\n * The size of the radio group component.\n */\n @Prop() size?: IcSizesNoLarge = \"default\";\n\n /**\n * @deprecated This prop should not be used anymore. Set prop `size` to \"small\" instead.\n */\n @Prop() small?: boolean = false;\n\n /**\n * The validation status - e.g. 'error' | 'warning' | 'success'.\n */\n @Prop() validationStatus: IcInformationStatusOrEmpty = \"\";\n /**\n * The validation text - e.g. 'error' | 'warning' | 'success'.\n */\n @Prop() validationText: string = \"\";\n\n @Watch(\"orientation\")\n orientationChangeHandler(): void {\n this.initialOrientation = this.orientation;\n this.checkOrientation();\n }\n\n /**\n * Emitted when a user selects a radio.\n */\n @Event() icChange: EventEmitter<IcChangeEventDetail>;\n\n disconnectedCallback(): void {\n this.resizeObserver?.disconnect();\n this.radioContainer?.removeEventListener(\n \"slotchange\",\n this.setRadioOptions\n );\n }\n\n componentWillLoad(): void {\n removeDisabledFalse(this.disabled, this.el);\n\n this.orientationChangeHandler();\n this.currentOrientation = this.initialOrientation;\n }\n\n componentDidLoad(): void {\n this.setRadioOptions();\n checkResizeObserver(this.runResizeObserver);\n this.addSlotChangeListener();\n\n onComponentRequiredPropUndefined(\n [\n { prop: this.label, propName: \"label\" },\n { prop: this.name, propName: \"name\" },\n ],\n \"Radio Group\"\n );\n }\n\n @Listen(\"icCheck\")\n selectHandler(event: CustomEvent<IcValueEventDetail>): void {\n if ((event.target as HTMLElement).parentElement === this.el) {\n this.checkedValue = event.detail.value;\n const selectedOption = event.target as HTMLIcRadioOptionElement;\n this.icChange.emit({\n value: this.checkedValue,\n selectedOption: {\n radio: selectedOption,\n textFieldValue: selectedOption?.querySelector(\"ic-text-field\")?.value,\n },\n });\n\n if (this.radioOptions !== undefined) {\n this.radioOptions.forEach((radioOption, index) => {\n radioOption.selected = selectedOption === radioOption;\n if (radioOption.selected) {\n this.selectedChild = index;\n }\n });\n this.setFirstRadioOptionTabIndex(this.selectedChild > 0 ? -1 : 0);\n }\n }\n }\n\n @Listen(\"icSelectedChange\")\n changeHandler(): void {\n const selectedOption = this.radioOptions.findIndex(\n (radioOption) => radioOption.selected\n );\n if (selectedOption < 0) {\n this.setFirstRadioOptionTabIndex(0);\n this.selectedChild = selectedOption;\n }\n }\n\n private runResizeObserver = () => {\n this.resizeObserver = new ResizeObserver(() => {\n this.checkOrientation();\n });\n\n this.resizeObserver.observe(this.el);\n };\n\n private checkOrientation() {\n if (this.initialOrientation === this.RADIO_HORIZONTAL) {\n let totalWidth = 0;\n if (Array.isArray(this.radioOptions) && this.radioOptions.length > 0) {\n this.radioOptions.forEach(({ clientWidth }, i, arr) => {\n totalWidth += clientWidth;\n if (i < arr.length - 1) totalWidth += 40;\n });\n } else {\n totalWidth = 0;\n }\n\n if (this.initialOrientation == this.RADIO_HORIZONTAL) {\n if (\n this.radioOptions !== undefined &&\n (this.radioOptions.length > 2 ||\n (this.radioOptions.length === 2 &&\n (isSlotUsed(this.radioOptions[0], this.ADDITIONAL_FIELD) ||\n isSlotUsed(this.radioOptions[1], this.ADDITIONAL_FIELD))))\n ) {\n this.currentOrientation = this.RADIO_VERTICAL;\n } else {\n if (totalWidth >= this.radioContainer?.clientWidth) {\n this.currentOrientation = this.RADIO_VERTICAL;\n } else if (totalWidth < this.radioContainer?.clientWidth) {\n this.currentOrientation = this.RADIO_HORIZONTAL;\n }\n }\n }\n }\n }\n\n private handleKeyDown = (event: KeyboardEvent): void => {\n event.stopPropagation();\n switch (event.key) {\n case \"ArrowDown\":\n case \"ArrowRight\":\n this.radioOptions[\n this.getNextItemToSelect(this.selectedChild, true)\n ].click();\n event.preventDefault();\n break;\n case \"ArrowUp\":\n case \"ArrowLeft\":\n this.radioOptions[\n this.getNextItemToSelect(this.selectedChild, false)\n ].click();\n event.preventDefault();\n }\n };\n\n private getNextItemToSelect = (\n currentItem: number,\n movingDown: boolean\n ): number => {\n const numRadios = this.radioOptions.length - 1;\n\n if (currentItem < 1) {\n currentItem = 0;\n }\n\n let nextItem = movingDown ? currentItem + 1 : currentItem - 1;\n\n //check if wrap around necessary\n if (nextItem < 0) {\n nextItem = numRadios;\n } else if (nextItem > numRadios) {\n nextItem = 0;\n }\n\n //if next item is disabled then find next\n if (this.radioOptions[nextItem].disabled) {\n nextItem = this.getNextItemToSelect(nextItem, movingDown);\n }\n\n return nextItem;\n };\n\n private addSlotChangeListener = () => {\n this.radioContainer.addEventListener(\"slotchange\", this.setRadioOptions);\n };\n\n private setFirstRadioOptionTabIndex = (value: number) => {\n this.radioOptions[0].setTabIndex(value);\n };\n\n private setRadioOptions = () => {\n this.selectedChild = -1;\n this.checkedValue = \"\";\n this.radioOptions = Array.from(this.el.children).filter(\n (el) => el.tagName === \"IC-RADIO-OPTION\"\n ) as HTMLIcRadioOptionElement[];\n if (this.radioOptions.length > 0) {\n this.radioOptions.forEach((radioOption, index) => {\n if (!radioOption.selected) {\n radioOption.selected = this.checkedValue === radioOption.value;\n }\n radioOption.name = this.name;\n radioOption.groupLabel = this.label;\n if (radioOption.selected) {\n this.selectedChild = index;\n this.checkedValue = radioOption.value;\n }\n if (this.disabled) {\n radioOption.disabled = true;\n }\n });\n this.setFirstRadioOptionTabIndex(this.selectedChild > 0 ? -1 : 0);\n\n if (\n this.initialOrientation === this.RADIO_HORIZONTAL &&\n this.radioOptions !== undefined &&\n (this.radioOptions.length > 2 ||\n (this.radioOptions.length === 2 &&\n (isSlotUsed(this.radioOptions[0], this.ADDITIONAL_FIELD) ||\n isSlotUsed(this.radioOptions[1], this.ADDITIONAL_FIELD))))\n ) {\n this.currentOrientation = this.RADIO_VERTICAL;\n }\n }\n };\n\n render() {\n renderHiddenInput(\n true,\n this.el,\n this.name,\n this.checkedValue,\n this.disabled\n );\n\n return (\n <Host\n onKeyDown={this.handleKeyDown}\n class={{ small: this.small || this.size === \"small\" }}\n >\n <div\n role=\"radiogroup\"\n aria-label={`${this.label}${this.required ? \", required\" : \"\"}`}\n >\n {!this.hideLabel && (\n <ic-input-label\n class={{ [`${this.validationStatus}`]: true }}\n label={this.label}\n helperText={this.helperText}\n required={this.required}\n disabled={this.disabled}\n ></ic-input-label>\n )}\n <div\n class={{\n \"radio-buttons-container\": true,\n horizontal: this.currentOrientation === this.RADIO_HORIZONTAL,\n }}\n ref={(el) => (this.radioContainer = el)}\n >\n <slot></slot>\n </div>\n </div>\n {hasValidationStatus(this.validationStatus, this.disabled) && (\n <ic-input-validation\n ariaLiveMode=\"polite\"\n status={this.validationStatus}\n message={this.validationText}\n ></ic-input-validation>\n )}\n </Host>\n );\n }\n}\n"]}