@warp-ds/elements 2.10.0-next.15 → 2.10.0-next.17

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 (594) hide show
  1. package/dist/.storybook/utilities.js +4 -4
  2. package/dist/api.js.map +2 -2
  3. package/dist/custom-elements.json +68 -56
  4. package/dist/docs/affix/affix.md +2 -2
  5. package/dist/docs/affix/api.md +2 -2
  6. package/dist/docs/alert/alert.md +4 -4
  7. package/dist/docs/alert/api.md +4 -4
  8. package/dist/docs/attention/api.md +2 -2
  9. package/dist/docs/attention/attention.md +2 -2
  10. package/dist/docs/badge/api.md +50 -4
  11. package/dist/docs/badge/badge.md +50 -4
  12. package/dist/docs/box/api.md +2 -2
  13. package/dist/docs/box/box.md +2 -2
  14. package/dist/docs/checkbox/api.md +2 -2
  15. package/dist/docs/checkbox/checkbox.md +176 -2
  16. package/dist/docs/checkbox/styling.md +173 -0
  17. package/dist/docs/checkbox-group/checkbox-group.md +43 -30
  18. package/dist/docs/checkbox-group/styling.md +31 -29
  19. package/dist/docs/combobox/api.md +12 -12
  20. package/dist/docs/combobox/combobox.md +12 -12
  21. package/dist/docs/datepicker/api.md +6 -6
  22. package/dist/docs/datepicker/datepicker.md +6 -6
  23. package/dist/docs/icon/api.md +3 -3
  24. package/dist/docs/icon/icon.md +3 -3
  25. package/dist/docs/index.md +1 -1
  26. package/dist/docs/radio-group/api.md +4 -4
  27. package/dist/docs/radio-group/radio-group.md +183 -68
  28. package/dist/docs/radio-group/styling.md +179 -64
  29. package/dist/docs/snackbar/api.md +1 -1
  30. package/dist/docs/snackbar/snackbar.md +1 -1
  31. package/dist/docs/snackbar-item/api.md +2 -2
  32. package/dist/docs/snackbar-item/snackbar-item.md +2 -2
  33. package/dist/index.d.ts +24 -2
  34. package/dist/packages/affix/affix.d.ts +4 -4
  35. package/dist/packages/affix/affix.hydration.test.d.ts +1 -1
  36. package/dist/packages/affix/affix.hydration.test.js +15 -15
  37. package/dist/packages/affix/affix.js +345 -315
  38. package/dist/packages/affix/affix.js.map +2 -2
  39. package/dist/packages/affix/affix.react.stories.d.ts +2 -2
  40. package/dist/packages/affix/affix.react.stories.js +3 -3
  41. package/dist/packages/affix/affix.react.test.js +5 -3
  42. package/dist/packages/affix/affix.stories.d.ts +3 -3
  43. package/dist/packages/affix/affix.stories.js +10 -10
  44. package/dist/packages/affix/affix.test.d.ts +1 -1
  45. package/dist/packages/affix/affix.test.js +10 -10
  46. package/dist/packages/affix/react.d.ts +2 -2
  47. package/dist/packages/affix/react.js +6 -6
  48. package/dist/packages/affix/styles.js +1 -1
  49. package/dist/packages/alert/alert.d.ts +3 -3
  50. package/dist/packages/alert/alert.hydration.test.d.ts +1 -1
  51. package/dist/packages/alert/alert.hydration.test.js +21 -21
  52. package/dist/packages/alert/alert.js +344 -319
  53. package/dist/packages/alert/alert.js.map +2 -2
  54. package/dist/packages/alert/alert.react.stories.d.ts +2 -2
  55. package/dist/packages/alert/alert.react.stories.js +13 -13
  56. package/dist/packages/alert/alert.stories.d.ts +4 -4
  57. package/dist/packages/alert/alert.stories.js +29 -27
  58. package/dist/packages/alert/alert.test.d.ts +1 -1
  59. package/dist/packages/alert/alert.test.js +34 -21
  60. package/dist/packages/alert/react.d.ts +1 -1
  61. package/dist/packages/alert/react.js +4 -4
  62. package/dist/packages/alert/styles.js +1 -1
  63. package/dist/packages/attention/attention.d.ts +7 -7
  64. package/dist/packages/attention/attention.hydration.test.d.ts +1 -1
  65. package/dist/packages/attention/attention.hydration.test.js +29 -29
  66. package/dist/packages/attention/attention.js +1725 -1683
  67. package/dist/packages/attention/attention.js.map +2 -2
  68. package/dist/packages/attention/attention.react.stories.d.ts +3 -3
  69. package/dist/packages/attention/attention.react.stories.js +13 -13
  70. package/dist/packages/attention/attention.react.test.js +11 -7
  71. package/dist/packages/attention/attention.stories.d.ts +4 -4
  72. package/dist/packages/attention/attention.stories.js +126 -117
  73. package/dist/packages/attention/attention.test.d.ts +1 -1
  74. package/dist/packages/attention/attention.test.js +18 -10
  75. package/dist/packages/attention/layout-styles.js +900 -900
  76. package/dist/packages/attention/react.d.ts +4 -4
  77. package/dist/packages/attention/react.js +13 -11
  78. package/dist/packages/attention/styles.js +1 -1
  79. package/dist/packages/badge/badge.d.ts +3 -3
  80. package/dist/packages/badge/badge.hydration.test.d.ts +1 -1
  81. package/dist/packages/badge/badge.hydration.test.js +25 -25
  82. package/dist/packages/badge/badge.js +276 -276
  83. package/dist/packages/badge/badge.js.map +2 -2
  84. package/dist/packages/badge/badge.react.stories.d.ts +3 -3
  85. package/dist/packages/badge/badge.react.stories.js +17 -17
  86. package/dist/packages/badge/badge.stories.d.ts +3 -3
  87. package/dist/packages/badge/badge.stories.js +22 -20
  88. package/dist/packages/badge/badge.test.d.ts +1 -1
  89. package/dist/packages/badge/badge.test.js +13 -11
  90. package/dist/packages/badge/react.d.ts +1 -1
  91. package/dist/packages/badge/react.js +4 -4
  92. package/dist/packages/badge/styles.js +1 -1
  93. package/dist/packages/box/box.d.ts +1 -1
  94. package/dist/packages/box/box.hydration.test.d.ts +1 -1
  95. package/dist/packages/box/box.hydration.test.js +14 -14
  96. package/dist/packages/box/box.js +283 -283
  97. package/dist/packages/box/box.js.map +2 -2
  98. package/dist/packages/box/box.react.stories.d.ts +3 -3
  99. package/dist/packages/box/box.react.stories.js +8 -8
  100. package/dist/packages/box/box.stories.d.ts +3 -3
  101. package/dist/packages/box/box.stories.js +25 -19
  102. package/dist/packages/box/box.test.d.ts +1 -1
  103. package/dist/packages/box/box.test.js +6 -6
  104. package/dist/packages/box/react.d.ts +1 -1
  105. package/dist/packages/box/react.js +4 -4
  106. package/dist/packages/box/slot.test.d.ts +1 -1
  107. package/dist/packages/box/slot.test.js +6 -6
  108. package/dist/packages/box/styles.js +1 -1
  109. package/dist/packages/breadcrumbs/breadcrumbs.d.ts +1 -1
  110. package/dist/packages/breadcrumbs/breadcrumbs.hydration.test.d.ts +1 -1
  111. package/dist/packages/breadcrumbs/breadcrumbs.hydration.test.js +55 -49
  112. package/dist/packages/breadcrumbs/breadcrumbs.js +284 -278
  113. package/dist/packages/breadcrumbs/breadcrumbs.js.map +2 -2
  114. package/dist/packages/breadcrumbs/breadcrumbs.react.stories.d.ts +3 -3
  115. package/dist/packages/breadcrumbs/breadcrumbs.react.stories.js +6 -6
  116. package/dist/packages/breadcrumbs/breadcrumbs.stories.d.ts +3 -3
  117. package/dist/packages/breadcrumbs/breadcrumbs.stories.js +27 -26
  118. package/dist/packages/breadcrumbs/breadcrumbs.test.d.ts +1 -1
  119. package/dist/packages/breadcrumbs/breadcrumbs.test.js +19 -17
  120. package/dist/packages/breadcrumbs/react.d.ts +1 -1
  121. package/dist/packages/breadcrumbs/react.js +4 -4
  122. package/dist/packages/breadcrumbs/styles.js +1 -1
  123. package/dist/packages/button/button.d.ts +5 -5
  124. package/dist/packages/button/button.hydration.test.d.ts +1 -1
  125. package/dist/packages/button/button.hydration.test.js +19 -19
  126. package/dist/packages/button/button.js +741 -715
  127. package/dist/packages/button/button.js.map +2 -2
  128. package/dist/packages/button/button.react.stories.d.ts +3 -3
  129. package/dist/packages/button/button.react.stories.js +30 -30
  130. package/dist/packages/button/button.react.test.js +13 -13
  131. package/dist/packages/button/button.stories.d.ts +4 -4
  132. package/dist/packages/button/button.stories.js +276 -167
  133. package/dist/packages/button/button.test.d.ts +1 -1
  134. package/dist/packages/button/button.test.js +36 -34
  135. package/dist/packages/button/react.d.ts +2 -2
  136. package/dist/packages/button/react.js +7 -7
  137. package/dist/packages/button/styles.js +373 -347
  138. package/dist/packages/card/card.d.ts +1 -1
  139. package/dist/packages/card/card.hydration.test.d.ts +1 -1
  140. package/dist/packages/card/card.hydration.test.js +14 -14
  141. package/dist/packages/card/card.js +305 -290
  142. package/dist/packages/card/card.js.map +2 -2
  143. package/dist/packages/card/card.react.stories.d.ts +3 -3
  144. package/dist/packages/card/card.react.stories.js +11 -11
  145. package/dist/packages/card/card.stories.d.ts +3 -3
  146. package/dist/packages/card/card.stories.js +36 -24
  147. package/dist/packages/card/card.test.d.ts +1 -1
  148. package/dist/packages/card/card.test.js +6 -6
  149. package/dist/packages/card/react.d.ts +1 -1
  150. package/dist/packages/card/react.js +4 -4
  151. package/dist/packages/card/styles.js +1 -1
  152. package/dist/packages/checkbox/checkbox.a11y.test.d.ts +1 -1
  153. package/dist/packages/checkbox/checkbox.a11y.test.js +47 -33
  154. package/dist/packages/checkbox/checkbox.d.ts +2 -2
  155. package/dist/packages/checkbox/checkbox.hydration.test.d.ts +1 -1
  156. package/dist/packages/checkbox/checkbox.hydration.test.js +21 -21
  157. package/dist/packages/checkbox/checkbox.js +475 -424
  158. package/dist/packages/checkbox/checkbox.js.map +2 -2
  159. package/dist/packages/checkbox/checkbox.react.stories.d.ts +2 -2
  160. package/dist/packages/checkbox/checkbox.react.stories.js +3 -3
  161. package/dist/packages/checkbox/checkbox.stories.d.ts +4 -4
  162. package/dist/packages/checkbox/checkbox.stories.js +99 -91
  163. package/dist/packages/checkbox/checkbox.test.d.ts +1 -1
  164. package/dist/packages/checkbox/checkbox.test.js +64 -64
  165. package/dist/packages/checkbox/react.d.ts +1 -1
  166. package/dist/packages/checkbox/react.js +6 -6
  167. package/dist/packages/checkbox/styles.js +183 -132
  168. package/dist/packages/checkbox-group/checkbox-group.a11y.test.d.ts +2 -2
  169. package/dist/packages/checkbox-group/checkbox-group.a11y.test.js +83 -73
  170. package/dist/packages/checkbox-group/checkbox-group.d.ts +16 -2
  171. package/dist/packages/checkbox-group/checkbox-group.hydration.test.d.ts +2 -2
  172. package/dist/packages/checkbox-group/checkbox-group.hydration.test.js +36 -19
  173. package/dist/packages/checkbox-group/checkbox-group.js +60 -55
  174. package/dist/packages/checkbox-group/checkbox-group.js.map +2 -2
  175. package/dist/packages/checkbox-group/checkbox-group.react.test.js +4 -4
  176. package/dist/packages/checkbox-group/checkbox-group.test.d.ts +2 -2
  177. package/dist/packages/checkbox-group/checkbox-group.test.js +96 -90
  178. package/dist/packages/checkbox-group/react.d.ts +2 -2
  179. package/dist/packages/checkbox-group/react.js +6 -6
  180. package/dist/packages/combobox/combobox.a11y.test.d.ts +2 -2
  181. package/dist/packages/combobox/combobox.a11y.test.js +72 -49
  182. package/dist/packages/combobox/combobox.d.ts +2 -2
  183. package/dist/packages/combobox/combobox.hydration.test.d.ts +1 -1
  184. package/dist/packages/combobox/combobox.hydration.test.js +45 -45
  185. package/dist/packages/combobox/combobox.js +332 -332
  186. package/dist/packages/combobox/combobox.js.map +3 -3
  187. package/dist/packages/combobox/combobox.react.stories.d.ts +3 -3
  188. package/dist/packages/combobox/combobox.react.stories.js +29 -29
  189. package/dist/packages/combobox/combobox.react.test.js +8 -8
  190. package/dist/packages/combobox/combobox.stories.d.ts +4 -4
  191. package/dist/packages/combobox/combobox.stories.js +100 -94
  192. package/dist/packages/combobox/combobox.test.d.ts +2 -2
  193. package/dist/packages/combobox/combobox.test.js +148 -133
  194. package/dist/packages/combobox/react.d.ts +2 -2
  195. package/dist/packages/combobox/react.js +14 -14
  196. package/dist/packages/combobox/styles.js +1 -1
  197. package/dist/packages/datepicker/DatePicker.test.d.ts +2 -2
  198. package/dist/packages/datepicker/DatePicker.test.js +46 -41
  199. package/dist/packages/datepicker/datepicker.d.ts +3 -3
  200. package/dist/packages/datepicker/datepicker.hydration.test.d.ts +1 -1
  201. package/dist/packages/datepicker/datepicker.hydration.test.js +21 -21
  202. package/dist/packages/datepicker/datepicker.js +665 -625
  203. package/dist/packages/datepicker/datepicker.js.map +3 -3
  204. package/dist/packages/datepicker/datepicker.react.stories.d.ts +3 -3
  205. package/dist/packages/datepicker/datepicker.react.stories.js +9 -9
  206. package/dist/packages/datepicker/datepicker.react.test.js +6 -6
  207. package/dist/packages/datepicker/datepicker.stories.d.ts +4 -4
  208. package/dist/packages/datepicker/datepicker.stories.js +32 -32
  209. package/dist/packages/datepicker/datepicker.test.d.ts +2 -2
  210. package/dist/packages/datepicker/datepicker.test.js +77 -79
  211. package/dist/packages/datepicker/react.d.ts +2 -2
  212. package/dist/packages/datepicker/react.js +16 -14
  213. package/dist/packages/datepicker/styles/w-datepicker-calendar.styles.js +13 -12
  214. package/dist/packages/datepicker/styles/w-datepicker-day.styles.js +58 -55
  215. package/dist/packages/datepicker/styles/w-datepicker-month.styles.js +60 -57
  216. package/dist/packages/datepicker/styles/w-datepicker.styles.js +87 -87
  217. package/dist/packages/datepicker/utils.d.ts +1 -1
  218. package/dist/packages/datepicker/utils.js +25 -19
  219. package/dist/packages/datepicker/utils.test.js +20 -20
  220. package/dist/packages/expandable/expandable.d.ts +4 -4
  221. package/dist/packages/expandable/expandable.hydration.test.d.ts +1 -1
  222. package/dist/packages/expandable/expandable.hydration.test.js +21 -21
  223. package/dist/packages/expandable/expandable.js +353 -326
  224. package/dist/packages/expandable/expandable.js.map +2 -2
  225. package/dist/packages/expandable/expandable.react.stories.d.ts +3 -3
  226. package/dist/packages/expandable/expandable.react.stories.js +7 -7
  227. package/dist/packages/expandable/expandable.react.test.js +15 -7
  228. package/dist/packages/expandable/expandable.stories.d.ts +5 -5
  229. package/dist/packages/expandable/expandable.stories.js +51 -45
  230. package/dist/packages/expandable/expandable.test.d.ts +1 -1
  231. package/dist/packages/expandable/expandable.test.js +19 -17
  232. package/dist/packages/expandable/react.d.ts +2 -2
  233. package/dist/packages/expandable/react.js +9 -9
  234. package/dist/packages/expandable/styles.js +1 -1
  235. package/dist/packages/global.js +2 -2
  236. package/dist/packages/i18n.d.ts +1 -1
  237. package/dist/packages/i18n.js +37 -29
  238. package/dist/packages/icon/icon.d.ts +3 -3
  239. package/dist/packages/icon/icon.hydration.test.d.ts +1 -1
  240. package/dist/packages/icon/icon.hydration.test.js +25 -25
  241. package/dist/packages/icon/icon.js +30 -25
  242. package/dist/packages/icon/icon.js.map +2 -2
  243. package/dist/packages/icon/icon.react.stories.d.ts +1 -1
  244. package/dist/packages/icon/icon.react.stories.js +283 -284
  245. package/dist/packages/icon/icon.stories.d.ts +3 -3
  246. package/dist/packages/icon/icon.stories.js +299 -298
  247. package/dist/packages/icon/icon.test.d.ts +1 -1
  248. package/dist/packages/icon/icon.test.js +36 -28
  249. package/dist/packages/icon/react.d.ts +1 -1
  250. package/dist/packages/icon/react.js +4 -4
  251. package/dist/packages/icon/style.js +24 -25
  252. package/dist/packages/interaction-type-detection.js +9 -9
  253. package/dist/packages/link/link.d.ts +2 -2
  254. package/dist/packages/link/link.hydration.test.d.ts +1 -1
  255. package/dist/packages/link/link.hydration.test.js +27 -27
  256. package/dist/packages/link/link.js +709 -683
  257. package/dist/packages/link/link.js.map +2 -2
  258. package/dist/packages/link/link.react.stories.d.ts +3 -3
  259. package/dist/packages/link/link.react.stories.js +42 -42
  260. package/dist/packages/link/link.react.test.js +5 -3
  261. package/dist/packages/link/link.stories.d.ts +3 -3
  262. package/dist/packages/link/link.stories.js +51 -51
  263. package/dist/packages/link/link.test.d.ts +1 -1
  264. package/dist/packages/link/link.test.js +11 -7
  265. package/dist/packages/link/react.d.ts +2 -2
  266. package/dist/packages/link/react.js +6 -6
  267. package/dist/packages/link/styles.js +57 -57
  268. package/dist/packages/modal/index.d.ts +7 -7
  269. package/dist/packages/modal/index.js +7 -7
  270. package/dist/packages/modal/modal.d.ts +1 -1
  271. package/dist/packages/modal/modal.hydration.test.d.ts +1 -1
  272. package/dist/packages/modal/modal.hydration.test.js +12 -12
  273. package/dist/packages/modal/modal.js +404 -404
  274. package/dist/packages/modal/modal.js.map +2 -2
  275. package/dist/packages/modal/modal.react.stories.d.ts +3 -3
  276. package/dist/packages/modal/modal.react.stories.js +7 -6
  277. package/dist/packages/modal/modal.react.test.js +5 -5
  278. package/dist/packages/modal/modal.stories.d.ts +6 -6
  279. package/dist/packages/modal/modal.stories.js +253 -238
  280. package/dist/packages/modal/react.d.ts +4 -4
  281. package/dist/packages/modal/react.js +13 -13
  282. package/dist/packages/modal/util.js +2 -2
  283. package/dist/packages/modal-footer/modal-footer.d.ts +1 -1
  284. package/dist/packages/modal-footer/modal-footer.js +291 -291
  285. package/dist/packages/modal-footer/modal-footer.js.map +2 -2
  286. package/dist/packages/modal-footer/react.d.ts +1 -1
  287. package/dist/packages/modal-footer/react.js +4 -4
  288. package/dist/packages/modal-header/modal-header.d.ts +2 -2
  289. package/dist/packages/modal-header/modal-header.js +437 -416
  290. package/dist/packages/modal-header/modal-header.js.map +2 -2
  291. package/dist/packages/modal-header/modal-header.react.test.js +5 -3
  292. package/dist/packages/modal-header/react.d.ts +2 -2
  293. package/dist/packages/modal-header/react.js +8 -8
  294. package/dist/packages/page-indicator/page-indicator.d.ts +1 -1
  295. package/dist/packages/page-indicator/page-indicator.hydration.test.d.ts +1 -1
  296. package/dist/packages/page-indicator/page-indicator.hydration.test.js +22 -22
  297. package/dist/packages/page-indicator/page-indicator.js +26 -26
  298. package/dist/packages/page-indicator/page-indicator.js.map +2 -2
  299. package/dist/packages/page-indicator/page-indicator.react.stories.d.ts +3 -3
  300. package/dist/packages/page-indicator/page-indicator.react.stories.js +11 -11
  301. package/dist/packages/page-indicator/page-indicator.react.test.js +5 -5
  302. package/dist/packages/page-indicator/page-indicator.stories.d.ts +3 -3
  303. package/dist/packages/page-indicator/page-indicator.stories.js +56 -27
  304. package/dist/packages/page-indicator/page-indicator.test.d.ts +1 -1
  305. package/dist/packages/page-indicator/page-indicator.test.js +110 -70
  306. package/dist/packages/page-indicator/react.d.ts +2 -2
  307. package/dist/packages/page-indicator/react.js +7 -7
  308. package/dist/packages/page-indicator/style.js +21 -21
  309. package/dist/packages/pagination/pagination.a11y.test.d.ts +1 -1
  310. package/dist/packages/pagination/pagination.a11y.test.js +59 -25
  311. package/dist/packages/pagination/pagination.d.ts +3 -3
  312. package/dist/packages/pagination/pagination.hydration.test.d.ts +1 -1
  313. package/dist/packages/pagination/pagination.hydration.test.js +19 -19
  314. package/dist/packages/pagination/pagination.js +380 -349
  315. package/dist/packages/pagination/pagination.js.map +2 -2
  316. package/dist/packages/pagination/pagination.react.stories.d.ts +5 -5
  317. package/dist/packages/pagination/pagination.react.stories.js +8 -8
  318. package/dist/packages/pagination/pagination.react.test.js +6 -6
  319. package/dist/packages/pagination/pagination.stories.d.ts +3 -3
  320. package/dist/packages/pagination/pagination.stories.js +18 -18
  321. package/dist/packages/pagination/pagination.test.d.ts +1 -1
  322. package/dist/packages/pagination/pagination.test.js +146 -69
  323. package/dist/packages/pagination/react.d.ts +3 -3
  324. package/dist/packages/pagination/react.js +12 -10
  325. package/dist/packages/pagination/styles.js +1 -1
  326. package/dist/packages/pill/pill.d.ts +2 -2
  327. package/dist/packages/pill/pill.hydration.test.d.ts +1 -1
  328. package/dist/packages/pill/pill.hydration.test.js +14 -14
  329. package/dist/packages/pill/pill.js +331 -308
  330. package/dist/packages/pill/pill.js.map +2 -2
  331. package/dist/packages/pill/pill.react.stories.d.ts +3 -3
  332. package/dist/packages/pill/pill.react.stories.js +3 -3
  333. package/dist/packages/pill/pill.react.test.js +8 -8
  334. package/dist/packages/pill/pill.stories.d.ts +3 -3
  335. package/dist/packages/pill/pill.stories.js +8 -8
  336. package/dist/packages/pill/pill.test.d.ts +1 -1
  337. package/dist/packages/pill/pill.test.js +17 -15
  338. package/dist/packages/pill/react.d.ts +2 -2
  339. package/dist/packages/pill/react.js +18 -14
  340. package/dist/packages/pill/styles.js +1 -1
  341. package/dist/packages/radio/base-element.d.ts +3 -3
  342. package/dist/packages/radio/base-element.js +3 -3
  343. package/dist/packages/radio/custom-error-validator.d.ts +1 -1
  344. package/dist/packages/radio/custom-error-validator.js +3 -3
  345. package/dist/packages/radio/form-associated-element.d.ts +8 -8
  346. package/dist/packages/radio/form-associated-element.js +27 -26
  347. package/dist/packages/radio/host-styles.js +9 -9
  348. package/dist/packages/radio/invalid.d.ts +1 -1
  349. package/dist/packages/radio/invalid.js +1 -1
  350. package/dist/packages/radio/radio-styles.js +199 -160
  351. package/dist/packages/radio/radio.a11y.test.d.ts +2 -2
  352. package/dist/packages/radio/radio.a11y.test.js +60 -58
  353. package/dist/packages/radio/radio.d.ts +3 -3
  354. package/dist/packages/radio/radio.hydration.test.d.ts +1 -1
  355. package/dist/packages/radio/radio.hydration.test.js +23 -14
  356. package/dist/packages/radio/radio.js +485 -446
  357. package/dist/packages/radio/radio.js.map +3 -3
  358. package/dist/packages/radio/radio.react.stories.d.ts +2 -2
  359. package/dist/packages/radio/radio.react.stories.js +3 -3
  360. package/dist/packages/radio/radio.stories.d.ts +4 -4
  361. package/dist/packages/radio/radio.stories.js +152 -136
  362. package/dist/packages/radio/radio.test.d.ts +1 -1
  363. package/dist/packages/radio/radio.test.js +74 -73
  364. package/dist/packages/radio/react.d.ts +1 -1
  365. package/dist/packages/radio/react.js +4 -4
  366. package/dist/packages/radio/required-validator.d.ts +1 -1
  367. package/dist/packages/radio/required-validator.js +12 -7
  368. package/dist/packages/radio/slot.d.ts +1 -1
  369. package/dist/packages/radio/slot.js +11 -8
  370. package/dist/packages/radio/watch.d.ts +1 -1
  371. package/dist/packages/radio/watch.js +3 -1
  372. package/dist/packages/radio-group/radio-group-styles.js +121 -88
  373. package/dist/packages/radio-group/radio-group.a11y.test.d.ts +2 -2
  374. package/dist/packages/radio-group/radio-group.a11y.test.js +81 -79
  375. package/dist/packages/radio-group/radio-group.d.ts +14 -5
  376. package/dist/packages/radio-group/radio-group.hydration.test.d.ts +2 -2
  377. package/dist/packages/radio-group/radio-group.hydration.test.js +29 -18
  378. package/dist/packages/radio-group/radio-group.js +648 -560
  379. package/dist/packages/radio-group/radio-group.js.map +3 -3
  380. package/dist/packages/radio-group/radio-group.react.test.js +4 -4
  381. package/dist/packages/radio-group/radio-group.test.d.ts +2 -2
  382. package/dist/packages/radio-group/radio-group.test.js +234 -229
  383. package/dist/packages/radio-group/react.d.ts +2 -2
  384. package/dist/packages/radio-group/react.js +10 -10
  385. package/dist/packages/select/react.d.ts +2 -2
  386. package/dist/packages/select/react.js +11 -11
  387. package/dist/packages/select/select.a11y.test.d.ts +1 -1
  388. package/dist/packages/select/select.a11y.test.js +98 -91
  389. package/dist/packages/select/select.d.ts +4 -4
  390. package/dist/packages/select/select.hydration.test.d.ts +1 -1
  391. package/dist/packages/select/select.hydration.test.js +16 -16
  392. package/dist/packages/select/select.js +348 -329
  393. package/dist/packages/select/select.js.map +2 -2
  394. package/dist/packages/select/select.react.stories.d.ts +3 -3
  395. package/dist/packages/select/select.react.stories.js +7 -7
  396. package/dist/packages/select/select.react.test.js +6 -6
  397. package/dist/packages/select/select.stories.d.ts +3 -3
  398. package/dist/packages/select/select.stories.js +51 -48
  399. package/dist/packages/select/select.test.d.ts +1 -1
  400. package/dist/packages/select/select.test.js +175 -178
  401. package/dist/packages/select/styles.js +1 -1
  402. package/dist/packages/slider/Slider.d.ts +1 -1
  403. package/dist/packages/slider/Slider.js +4 -4
  404. package/dist/packages/slider/index.d.ts +2 -2
  405. package/dist/packages/slider/index.js +2 -2
  406. package/dist/packages/slider/react.d.ts +3 -3
  407. package/dist/packages/slider/react.js +9 -9
  408. package/dist/packages/slider/slider.d.ts +3 -3
  409. package/dist/packages/slider/slider.hydration.test.d.ts +1 -1
  410. package/dist/packages/slider/slider.hydration.test.js +39 -20
  411. package/dist/packages/slider/slider.js +480 -462
  412. package/dist/packages/slider/slider.js.map +2 -2
  413. package/dist/packages/slider/slider.react.stories.d.ts +3 -3
  414. package/dist/packages/slider/slider.react.stories.js +31 -34
  415. package/dist/packages/slider/slider.react.test.js +6 -6
  416. package/dist/packages/slider/slider.stories.d.ts +7 -7
  417. package/dist/packages/slider/slider.stories.js +332 -340
  418. package/dist/packages/slider/slider.test.d.ts +5 -5
  419. package/dist/packages/slider/slider.test.js +367 -334
  420. package/dist/packages/slider/styles/w-slider.styles.js +166 -148
  421. package/dist/packages/slider/styles.js +1 -1
  422. package/dist/packages/slider-thumb/SliderThumb.d.ts +1 -1
  423. package/dist/packages/slider-thumb/SliderThumb.js +4 -4
  424. package/dist/packages/slider-thumb/oddbird-css-anchor-positioning.d.ts +1 -1
  425. package/dist/packages/slider-thumb/oddbird-css-anchor-positioning.js +1 -1
  426. package/dist/packages/slider-thumb/react.d.ts +3 -3
  427. package/dist/packages/slider-thumb/react.js +11 -9
  428. package/dist/packages/slider-thumb/slider-thumb.d.ts +3 -3
  429. package/dist/packages/slider-thumb/slider-thumb.hydration.test.d.ts +1 -1
  430. package/dist/packages/slider-thumb/slider-thumb.hydration.test.js +26 -17
  431. package/dist/packages/slider-thumb/slider-thumb.js +545 -548
  432. package/dist/packages/slider-thumb/slider-thumb.js.map +3 -3
  433. package/dist/packages/slider-thumb/slider-thumb.react.test.js +9 -5
  434. package/dist/packages/slider-thumb/styles/w-slider-thumb.styles.js +189 -188
  435. package/dist/packages/slider-thumb/styles.js +1 -1
  436. package/dist/packages/snackbar/react.d.ts +1 -1
  437. package/dist/packages/snackbar/react.js +4 -4
  438. package/dist/packages/snackbar/snackbar.d.ts +3 -3
  439. package/dist/packages/snackbar/snackbar.hydration.test.d.ts +1 -1
  440. package/dist/packages/snackbar/snackbar.hydration.test.js +6 -6
  441. package/dist/packages/snackbar/snackbar.js +487 -468
  442. package/dist/packages/snackbar/snackbar.js.map +2 -2
  443. package/dist/packages/snackbar/snackbar.react.stories.js +3 -3
  444. package/dist/packages/snackbar/snackbar.stories.d.ts +11 -11
  445. package/dist/packages/snackbar/snackbar.stories.js +253 -181
  446. package/dist/packages/snackbar/snackbar.test.d.ts +4 -4
  447. package/dist/packages/snackbar/snackbar.test.js +11 -11
  448. package/dist/packages/snackbar/styles.js +29 -29
  449. package/dist/packages/snackbar-item/react.d.ts +2 -2
  450. package/dist/packages/snackbar-item/react.js +6 -5
  451. package/dist/packages/snackbar-item/snackbar-item.d.ts +4 -4
  452. package/dist/packages/snackbar-item/snackbar-item.js +454 -435
  453. package/dist/packages/snackbar-item/snackbar-item.js.map +2 -2
  454. package/dist/packages/snackbar-item/snackbar-item.react.test.js +4 -4
  455. package/dist/packages/snackbar-item/styles.js +130 -108
  456. package/dist/packages/step/react.d.ts +1 -1
  457. package/dist/packages/step/react.js +4 -4
  458. package/dist/packages/step/step.d.ts +2 -2
  459. package/dist/packages/step/step.hydration.test.d.ts +1 -1
  460. package/dist/packages/step/step.hydration.test.js +10 -10
  461. package/dist/packages/step/step.js +330 -308
  462. package/dist/packages/step/step.js.map +2 -2
  463. package/dist/packages/step-indicator/index.d.ts +2 -2
  464. package/dist/packages/step-indicator/index.js +2 -2
  465. package/dist/packages/step-indicator/react.d.ts +2 -2
  466. package/dist/packages/step-indicator/react.js +5 -5
  467. package/dist/packages/step-indicator/step-indicator.a11y.test.d.ts +2 -2
  468. package/dist/packages/step-indicator/step-indicator.a11y.test.js +48 -46
  469. package/dist/packages/step-indicator/step-indicator.d.ts +1 -1
  470. package/dist/packages/step-indicator/step-indicator.hydration.test.d.ts +1 -1
  471. package/dist/packages/step-indicator/step-indicator.hydration.test.js +10 -10
  472. package/dist/packages/step-indicator/step-indicator.js +280 -276
  473. package/dist/packages/step-indicator/step-indicator.js.map +2 -2
  474. package/dist/packages/step-indicator/stepindicator.react.stories.d.ts +2 -2
  475. package/dist/packages/step-indicator/stepindicator.react.stories.js +3 -3
  476. package/dist/packages/step-indicator/stepindicator.stories.d.ts +3 -3
  477. package/dist/packages/step-indicator/stepindicator.stories.js +129 -129
  478. package/dist/packages/step-indicator/styles.js +1 -1
  479. package/dist/packages/styles.js +274 -274
  480. package/dist/packages/switch/react.d.ts +1 -1
  481. package/dist/packages/switch/react.js +6 -6
  482. package/dist/packages/switch/styles.js +1 -1
  483. package/dist/packages/switch/switch.a11y.test.d.ts +1 -1
  484. package/dist/packages/switch/switch.a11y.test.js +46 -38
  485. package/dist/packages/switch/switch.d.ts +1 -1
  486. package/dist/packages/switch/switch.hydration.test.d.ts +1 -1
  487. package/dist/packages/switch/switch.hydration.test.js +23 -23
  488. package/dist/packages/switch/switch.js +299 -299
  489. package/dist/packages/switch/switch.js.map +2 -2
  490. package/dist/packages/switch/switch.react.stories.d.ts +2 -2
  491. package/dist/packages/switch/switch.react.stories.js +2 -2
  492. package/dist/packages/switch/switch.stories.d.ts +2 -2
  493. package/dist/packages/switch/switch.stories.js +42 -37
  494. package/dist/packages/switch/switch.test.d.ts +1 -1
  495. package/dist/packages/switch/switch.test.js +30 -35
  496. package/dist/packages/tab/react.d.ts +6 -4
  497. package/dist/packages/tab/react.js +11 -10
  498. package/dist/packages/tab/styles.d.ts +1 -0
  499. package/dist/packages/tab/styles.js +2 -0
  500. package/dist/packages/tab/tab.d.ts +5 -5
  501. package/dist/packages/tab/tab.hydration.test.d.ts +1 -1
  502. package/dist/packages/tab/tab.hydration.test.js +18 -12
  503. package/dist/packages/tab/tab.js +305 -304
  504. package/dist/packages/tab/tab.js.map +3 -3
  505. package/dist/packages/tab/tab.react.test.js +5 -3
  506. package/dist/packages/tab-panel/react.d.ts +3 -2
  507. package/dist/packages/tab-panel/react.js +11 -5
  508. package/dist/packages/tab-panel/tab-panel.d.ts +3 -3
  509. package/dist/packages/tab-panel/tab-panel.hydration.test.d.ts +1 -1
  510. package/dist/packages/tab-panel/tab-panel.hydration.test.js +13 -10
  511. package/dist/packages/tab-panel/tab-panel.js +289 -287
  512. package/dist/packages/tab-panel/tab-panel.js.map +2 -2
  513. package/dist/packages/tabs/index.d.ts +4 -4
  514. package/dist/packages/tabs/index.js +3 -3
  515. package/dist/packages/tabs/react.d.ts +27 -8
  516. package/dist/packages/tabs/react.js +30 -9
  517. package/dist/packages/tabs/styles.js +1 -1
  518. package/dist/packages/tabs/tabs.a11y.test.d.ts +3 -3
  519. package/dist/packages/tabs/tabs.a11y.test.js +188 -169
  520. package/dist/packages/tabs/tabs.d.ts +3 -3
  521. package/dist/packages/tabs/tabs.hydration.test.d.ts +3 -1
  522. package/dist/packages/tabs/tabs.hydration.test.js +22 -8
  523. package/dist/packages/tabs/tabs.js +289 -282
  524. package/dist/packages/tabs/tabs.js.map +2 -2
  525. package/dist/packages/tabs/tabs.react.stories.d.ts +12 -10
  526. package/dist/packages/tabs/tabs.react.stories.js +28 -28
  527. package/dist/packages/tabs/tabs.stories.d.ts +4 -4
  528. package/dist/packages/tabs/tabs.stories.js +101 -95
  529. package/dist/packages/tabs/tabs.test.d.ts +3 -3
  530. package/dist/packages/tabs/tabs.test.js +136 -122
  531. package/dist/packages/textarea/react.d.ts +2 -2
  532. package/dist/packages/textarea/react.js +17 -17
  533. package/dist/packages/textarea/styles.js +1 -1
  534. package/dist/packages/textarea/textarea.a11y.test.d.ts +1 -1
  535. package/dist/packages/textarea/textarea.a11y.test.js +89 -57
  536. package/dist/packages/textarea/textarea.d.ts +1 -1
  537. package/dist/packages/textarea/textarea.hydration.test.d.ts +1 -1
  538. package/dist/packages/textarea/textarea.hydration.test.js +19 -19
  539. package/dist/packages/textarea/textarea.js +300 -298
  540. package/dist/packages/textarea/textarea.js.map +2 -2
  541. package/dist/packages/textarea/textarea.react.stories.d.ts +3 -3
  542. package/dist/packages/textarea/textarea.react.stories.js +13 -13
  543. package/dist/packages/textarea/textarea.react.test.js +7 -7
  544. package/dist/packages/textarea/textarea.stories.d.ts +3 -3
  545. package/dist/packages/textarea/textarea.stories.js +44 -42
  546. package/dist/packages/textarea/textarea.test.d.ts +1 -1
  547. package/dist/packages/textarea/textarea.test.js +124 -88
  548. package/dist/packages/textfield/react.d.ts +2 -2
  549. package/dist/packages/textfield/react.js +17 -17
  550. package/dist/packages/textfield/styles/w-textfield.styles.js +60 -58
  551. package/dist/packages/textfield/styles.js +1 -1
  552. package/dist/packages/textfield/textfield.d.ts +3 -3
  553. package/dist/packages/textfield/textfield.hydration.test.d.ts +1 -1
  554. package/dist/packages/textfield/textfield.hydration.test.js +19 -19
  555. package/dist/packages/textfield/textfield.js +376 -368
  556. package/dist/packages/textfield/textfield.js.map +3 -3
  557. package/dist/packages/textfield/textfield.react.stories.d.ts +3 -3
  558. package/dist/packages/textfield/textfield.react.stories.js +31 -31
  559. package/dist/packages/textfield/textfield.react.test.js +7 -7
  560. package/dist/packages/textfield/textfield.stories.d.ts +4 -4
  561. package/dist/packages/textfield/textfield.stories.js +107 -89
  562. package/dist/packages/textfield/textfield.test.d.ts +2 -2
  563. package/dist/packages/textfield/textfield.test.js +103 -71
  564. package/dist/packages/toast/api.d.ts +1 -1
  565. package/dist/packages/toast/api.js +3 -3
  566. package/dist/packages/toast/index.d.ts +5 -5
  567. package/dist/packages/toast/index.js +5 -5
  568. package/dist/packages/toast/toast.d.ts +4 -4
  569. package/dist/packages/toast/toast.js +343 -314
  570. package/dist/packages/toast/toast.js.map +2 -2
  571. package/dist/packages/toast/toast.stories.d.ts +4 -4
  572. package/dist/packages/toast/toast.stories.js +37 -16
  573. package/dist/packages/toast/toast.test.d.ts +1 -1
  574. package/dist/packages/toast/toast.test.js +48 -31
  575. package/dist/packages/toast/types.d.ts +1 -1
  576. package/dist/packages/toast-container/styles.js +1 -1
  577. package/dist/packages/toast-container/toast-container.d.ts +2 -2
  578. package/dist/packages/toast-container/toast-container.js +291 -290
  579. package/dist/packages/toast-container/toast-container.js.map +2 -2
  580. package/dist/packages/utils/element-collapse.js +38 -28
  581. package/dist/packages/utils/expand-transition.d.ts +1 -1
  582. package/dist/packages/utils/expand-transition.js +12 -10
  583. package/dist/packages/utils/unstyled-heading.d.ts +1 -1
  584. package/dist/packages/utils/unstyled-heading.js +4 -4
  585. package/dist/packages/utils/window-exists.js +1 -1
  586. package/dist/packages/utils.js +2 -2
  587. package/dist/setup-tests.d.ts +3 -3
  588. package/dist/setup-tests.js +16 -13
  589. package/dist/tests/react-hydration.js +29 -30
  590. package/dist/tests/react-ssr-attributes.d.ts +1 -1
  591. package/dist/tests/react-ssr-attributes.js +4 -4
  592. package/dist/web-types.json +25 -22
  593. package/eik/index.js +9 -9
  594. package/package.json +11 -16
@@ -1,246 +1,261 @@
1
- import { html } from 'lit';
2
- import { expect, test } from 'vitest';
3
- import { render } from 'vitest-browser-lit';
4
- import '../textfield/textfield.js';
5
- import './combobox.js';
1
+ import { html } from "lit";
2
+ import { expect, test } from "vitest";
3
+ import { render } from "vitest-browser-lit";
4
+ import "../textfield/textfield.js";
5
+ import "./combobox.js";
6
6
  test('renders with autocomplete="off" on inner textfield when attribute not provided', async () => {
7
7
  const component = html `<w-combobox data-testid="combobox"></w-combobox>`;
8
8
  const page = render(component);
9
- const locator = page.getByTestId('combobox');
9
+ const locator = page.getByTestId("combobox");
10
10
  await expect.element(locator).toBeVisible();
11
11
  const el = (await locator.element());
12
12
  // The autocomplete attribute is not reflected on the outer element to avoid hydration mismatches
13
13
  // Instead, check that the inner textfield receives the correct default value
14
- const textfield = el.shadowRoot?.querySelector('w-textfield');
15
- expect(textfield?.autocomplete).toBe('off');
14
+ const textfield = el.shadowRoot?.querySelector("w-textfield");
15
+ expect(textfield?.autocomplete).toBe("off");
16
16
  });
17
- test('renders with autocomplete attribute when provided', async () => {
18
- const component = html `<w-combobox data-testid="combobox" autocomplete="on"></w-combobox>`;
17
+ test("renders with autocomplete attribute when provided", async () => {
18
+ const component = html `<w-combobox
19
+ data-testid="combobox"
20
+ autocomplete="on"
21
+ ></w-combobox>`;
19
22
  const page = render(component);
20
- const locator = page.getByTestId('combobox');
23
+ const locator = page.getByTestId("combobox");
21
24
  await expect.element(locator).toBeVisible();
22
25
  const el = (await locator.element());
23
- expect(el.getAttribute('autocomplete')).toBe('on');
26
+ expect(el.getAttribute("autocomplete")).toBe("on");
24
27
  });
25
- test('displays initial value correctly when value prop is set', async () => {
28
+ test("displays initial value correctly when value prop is set", async () => {
26
29
  const options = [
27
- { value: 'apple', label: 'Apple' },
28
- { value: 'banana', label: 'Banana' },
30
+ { value: "apple", label: "Apple" },
31
+ { value: "banana", label: "Banana" },
29
32
  ];
30
33
  const component = html `<w-combobox
31
- data-testid="combobox"
32
- value="apple"
33
- .options="${options}"
34
- ></w-combobox>`;
34
+ data-testid="combobox"
35
+ value="apple"
36
+ .options="${options}"
37
+ ></w-combobox>`;
35
38
  const page = render(component);
36
- const locator = page.getByTestId('combobox');
39
+ const locator = page.getByTestId("combobox");
37
40
  await expect.element(locator).toBeVisible();
38
41
  const el = (await locator.element());
39
42
  // Get the textfield's input element
40
- const textfield = el.shadowRoot?.querySelector('w-textfield');
41
- const input = textfield?.shadowRoot?.querySelector('input');
43
+ const textfield = el.shadowRoot?.querySelector("w-textfield");
44
+ const input = textfield?.shadowRoot?.querySelector("input");
42
45
  // Verify the displayed text shows the label "Apple", not the value "apple"
43
- expect(input?.value).toBe('Apple');
46
+ expect(input?.value).toBe("Apple");
44
47
  // Verify the combobox value is "apple"
45
- expect(el.value).toBe('apple');
48
+ expect(el.value).toBe("apple");
46
49
  });
47
- test('filters options by label, not value', async () => {
50
+ test("filters options by label, not value", async () => {
48
51
  const options = [
49
- { value: 'us', label: 'United States' },
50
- { value: 'uk', label: 'United Kingdom' },
51
- { value: 'no', label: 'Norway' },
52
+ { value: "us", label: "United States" },
53
+ { value: "uk", label: "United Kingdom" },
54
+ { value: "no", label: "Norway" },
52
55
  ];
53
56
  const component = html `<w-combobox
54
- data-testid="combobox"
55
- open-on-focus
56
- .options="${options}"
57
- ></w-combobox>`;
57
+ data-testid="combobox"
58
+ open-on-focus
59
+ .options="${options}"
60
+ ></w-combobox>`;
58
61
  const page = render(component);
59
- const locator = page.getByTestId('combobox');
62
+ const locator = page.getByTestId("combobox");
60
63
  await expect.element(locator).toBeVisible();
61
64
  const el = (await locator.element());
62
65
  // Get the textfield's input element
63
- const textfield = el.shadowRoot?.querySelector('w-textfield');
64
- const input = textfield?.shadowRoot?.querySelector('input');
66
+ const textfield = el.shadowRoot?.querySelector("w-textfield");
67
+ const input = textfield?.shadowRoot?.querySelector("input");
65
68
  // Type "United" which should match labels "United States" and "United Kingdom"
66
69
  // but NOT match any values (us, uk, no)
67
70
  input?.focus();
68
- input.value = 'United';
69
- input.dispatchEvent(new InputEvent('input', { bubbles: true, composed: true }));
71
+ input.value = "United";
72
+ input.dispatchEvent(new InputEvent("input", { bubbles: true, composed: true }));
70
73
  await new Promise((resolve) => setTimeout(resolve, 100));
71
74
  // Check that the dropdown shows the matching options
72
75
  const listbox = el.shadowRoot?.querySelector('[role="listbox"]');
73
76
  const visibleOptions = listbox?.querySelectorAll('[role="option"]');
74
77
  // Should show 2 options: "United States" and "United Kingdom"
75
78
  expect(visibleOptions?.length).toBe(2);
76
- const optionTexts = Array.from(visibleOptions || []).map((opt) => opt.textContent?.trim());
77
- expect(optionTexts).toContain('United States');
78
- expect(optionTexts).toContain('United Kingdom');
79
- expect(optionTexts).not.toContain('Norway');
79
+ const optionTexts = Array.from(visibleOptions || [], (opt) => opt.textContent?.trim());
80
+ expect(optionTexts).toContain("United States");
81
+ expect(optionTexts).toContain("United Kingdom");
82
+ expect(optionTexts).not.toContain("Norway");
80
83
  });
81
- test('displays option label in textfield but stores option value', async () => {
84
+ test("displays option label in textfield but stores option value", async () => {
82
85
  const optionsWithDifferentLabelAndValue = [
83
- { value: 'us', label: 'United States' },
84
- { value: 'uk', label: 'United Kingdom' },
85
- { value: 'no', label: 'Norway' },
86
+ { value: "us", label: "United States" },
87
+ { value: "uk", label: "United Kingdom" },
88
+ { value: "no", label: "Norway" },
86
89
  ];
87
90
  const component = html `<w-combobox
88
- data-testid="combobox"
89
- open-on-focus
90
- .options="${optionsWithDifferentLabelAndValue}"
91
- ></w-combobox>`;
91
+ data-testid="combobox"
92
+ open-on-focus
93
+ .options="${optionsWithDifferentLabelAndValue}"
94
+ ></w-combobox>`;
92
95
  const page = render(component);
93
- const locator = page.getByTestId('combobox');
96
+ const locator = page.getByTestId("combobox");
94
97
  await expect.element(locator).toBeVisible();
95
98
  const el = (await locator.element());
96
99
  // Get the textfield's input element
97
- const textfield = el.shadowRoot?.querySelector('w-textfield');
98
- const input = textfield?.shadowRoot?.querySelector('input');
100
+ const textfield = el.shadowRoot?.querySelector("w-textfield");
101
+ const input = textfield?.shadowRoot?.querySelector("input");
99
102
  // Focus to open the dropdown
100
103
  input?.focus();
101
104
  await new Promise((resolve) => setTimeout(resolve, 100));
102
105
  // Find and click the "Norway" option (which has value "no")
103
106
  const listbox = el.shadowRoot?.querySelector('[role="listbox"]');
104
107
  const options = listbox?.querySelectorAll('[role="option"]');
105
- const norwayOption = Array.from(options || []).find((opt) => opt.textContent?.trim() === 'Norway');
108
+ const norwayOption = [...(options || [])].find((opt) => opt.textContent?.trim() === "Norway");
106
109
  expect(norwayOption).toBeDefined();
107
110
  // Simulate mousedown on the option
108
- norwayOption?.dispatchEvent(new MouseEvent('mousedown', { bubbles: true }));
111
+ norwayOption?.dispatchEvent(new MouseEvent("mousedown", { bubbles: true }));
109
112
  await new Promise((resolve) => setTimeout(resolve, 100));
110
113
  // Verify the displayed text is the label "Norway", not the value "no"
111
- expect(input?.value).toBe('Norway');
114
+ expect(input?.value).toBe("Norway");
112
115
  // Verify the combobox value is "no", not "Norway"
113
- expect(el.value).toBe('no');
116
+ expect(el.value).toBe("no");
114
117
  });
115
- test('announces suggestion count when opened on focus with empty input', async () => {
118
+ test("announces suggestion count when opened on focus with empty input", async () => {
116
119
  const options = [
117
- { value: 'apple', label: 'Apple' },
118
- { value: 'banana', label: 'Banana' },
119
- { value: 'orange', label: 'Orange' },
120
+ { value: "apple", label: "Apple" },
121
+ { value: "banana", label: "Banana" },
122
+ { value: "orange", label: "Orange" },
120
123
  ];
121
124
  const component = html `<w-combobox
122
- data-testid="combobox"
123
- open-on-focus
124
- .options="${options}"
125
- ></w-combobox>`;
125
+ data-testid="combobox"
126
+ open-on-focus
127
+ .options="${options}"
128
+ ></w-combobox>`;
126
129
  const page = render(component);
127
- const locator = page.getByTestId('combobox');
130
+ const locator = page.getByTestId("combobox");
128
131
  await expect.element(locator).toBeVisible();
129
132
  const el = (await locator.element());
130
- const textfield = el.shadowRoot?.querySelector('w-textfield');
131
- const input = textfield?.shadowRoot?.querySelector('input');
133
+ const textfield = el.shadowRoot?.querySelector("w-textfield");
134
+ const input = textfield?.shadowRoot?.querySelector("input");
132
135
  input?.focus();
133
136
  await new Promise((resolve) => setTimeout(resolve, 100));
134
- const statusText = el.shadowRoot?.querySelector('[role="status"]')?.textContent?.trim();
135
- expect(statusText).toBe('3 suggestions');
137
+ const statusText = el.shadowRoot
138
+ ?.querySelector('[role="status"]')
139
+ ?.textContent?.trim();
140
+ expect(statusText).toBe("3 suggestions");
136
141
  });
137
- test('renders light-DOM option children in the generated popup', async () => {
142
+ test("renders light-DOM option children in the generated popup", async () => {
138
143
  const component = html `
139
- <w-combobox data-testid="combobox" open-on-focus>
140
- <option value="no">Norway</option>
141
- <option value="se">Sweden</option>
142
- <option value="dk">Denmark</option>
143
- </w-combobox>
144
- `;
144
+ <w-combobox data-testid="combobox" open-on-focus>
145
+ <option value="no">Norway</option>
146
+ <option value="se">Sweden</option>
147
+ <option value="dk">Denmark</option>
148
+ </w-combobox>
149
+ `;
145
150
  const page = render(component);
146
- const locator = page.getByTestId('combobox');
151
+ const locator = page.getByTestId("combobox");
147
152
  await expect.element(locator).toBeVisible();
148
153
  const el = (await locator.element());
149
- const input = el.shadowRoot?.querySelector('w-textfield')?.shadowRoot?.querySelector('input');
154
+ const input = el.shadowRoot
155
+ ?.querySelector("w-textfield")
156
+ ?.shadowRoot?.querySelector("input");
150
157
  input?.focus();
151
158
  await new Promise((resolve) => setTimeout(resolve, 100));
152
159
  const visibleOptions = el.shadowRoot?.querySelectorAll('[role="listbox"] [role="option"]');
153
- const optionTexts = Array.from(visibleOptions || []).map((opt) => opt.textContent?.trim());
154
- expect(optionTexts).toEqual(['Norway', 'Sweden', 'Denmark']);
160
+ const optionTexts = Array.from(visibleOptions || [], (opt) => opt.textContent?.trim());
161
+ expect(optionTexts).toEqual(["Norway", "Sweden", "Denmark"]);
155
162
  });
156
- test('filters light-DOM options by label attribute and stores option value on select', async () => {
163
+ test("filters light-DOM options by label attribute and stores option value on select", async () => {
157
164
  const component = html `
158
- <w-combobox data-testid="combobox" open-on-focus>
159
- <option value="us" label="United States">US</option>
160
- <option value="uk" label="United Kingdom">UK</option>
161
- <option value="no">Norway</option>
162
- </w-combobox>
163
- `;
165
+ <w-combobox data-testid="combobox" open-on-focus>
166
+ <option value="us" label="United States">US</option>
167
+ <option value="uk" label="United Kingdom">UK</option>
168
+ <option value="no">Norway</option>
169
+ </w-combobox>
170
+ `;
164
171
  const page = render(component);
165
- const locator = page.getByTestId('combobox');
172
+ const locator = page.getByTestId("combobox");
166
173
  await expect.element(locator).toBeVisible();
167
174
  const el = (await locator.element());
168
- const input = el.shadowRoot?.querySelector('w-textfield')?.shadowRoot?.querySelector('input');
175
+ const input = el.shadowRoot
176
+ ?.querySelector("w-textfield")
177
+ ?.shadowRoot?.querySelector("input");
169
178
  const selectEvents = [];
170
- el.addEventListener('select', (event) => selectEvents.push(event));
179
+ el.addEventListener("select", (event) => selectEvents.push(event));
171
180
  input.focus();
172
- input.value = 'United';
173
- input.dispatchEvent(new InputEvent('input', { bubbles: true, composed: true }));
181
+ input.value = "United";
182
+ input.dispatchEvent(new InputEvent("input", { bubbles: true, composed: true }));
174
183
  await new Promise((resolve) => setTimeout(resolve, 100));
175
184
  const visibleOptions = el.shadowRoot?.querySelectorAll('[role="listbox"] [role="option"]');
176
- const optionTexts = Array.from(visibleOptions || []).map((opt) => opt.textContent?.trim());
177
- expect(optionTexts).toEqual(['United States', 'United Kingdom']);
178
- visibleOptions?.[1]?.dispatchEvent(new MouseEvent('mousedown', { bubbles: true }));
185
+ const optionTexts = Array.from(visibleOptions || [], (opt) => opt.textContent?.trim());
186
+ expect(optionTexts).toEqual(["United States", "United Kingdom"]);
187
+ visibleOptions?.[1]?.dispatchEvent(new MouseEvent("mousedown", { bubbles: true }));
179
188
  await new Promise((resolve) => setTimeout(resolve, 100));
180
- expect(input.value).toBe('United Kingdom');
181
- expect(el.value).toBe('uk');
182
- expect(selectEvents.at(-1)?.detail).toEqual({ value: 'uk' });
189
+ expect(input.value).toBe("United Kingdom");
190
+ expect(el.value).toBe("uk");
191
+ expect(selectEvents.at(-1)?.detail).toEqual({ value: "uk" });
183
192
  });
184
- test('uses light-DOM options to display an initial value label', async () => {
193
+ test("uses light-DOM options to display an initial value label", async () => {
185
194
  const component = html `
186
- <w-combobox data-testid="combobox" value="no">
187
- <option value="se">Sweden</option>
188
- <option value="no">Norway</option>
189
- </w-combobox>
190
- `;
195
+ <w-combobox data-testid="combobox" value="no">
196
+ <option value="se">Sweden</option>
197
+ <option value="no">Norway</option>
198
+ </w-combobox>
199
+ `;
191
200
  const page = render(component);
192
- const locator = page.getByTestId('combobox');
201
+ const locator = page.getByTestId("combobox");
193
202
  await expect.element(locator).toBeVisible();
194
203
  const el = (await locator.element());
195
- const input = el.shadowRoot?.querySelector('w-textfield')?.shadowRoot?.querySelector('input');
196
- expect(input.value).toBe('Norway');
197
- expect(el.value).toBe('no');
204
+ const input = el.shadowRoot
205
+ ?.querySelector("w-textfield")
206
+ ?.shadowRoot?.querySelector("input");
207
+ expect(input.value).toBe("Norway");
208
+ expect(el.value).toBe("no");
198
209
  });
199
- test('syncs dynamic light-DOM option child changes', async () => {
210
+ test("syncs dynamic light-DOM option child changes", async () => {
200
211
  const component = html `
201
- <w-combobox data-testid="combobox" open-on-focus>
202
- <option value="no">Norway</option>
203
- <option value="se">Sweden</option>
204
- </w-combobox>
205
- `;
212
+ <w-combobox data-testid="combobox" open-on-focus>
213
+ <option value="no">Norway</option>
214
+ <option value="se">Sweden</option>
215
+ </w-combobox>
216
+ `;
206
217
  const page = render(component);
207
- const locator = page.getByTestId('combobox');
218
+ const locator = page.getByTestId("combobox");
208
219
  await expect.element(locator).toBeVisible();
209
220
  const el = (await locator.element());
210
- const input = el.shadowRoot?.querySelector('w-textfield')?.shadowRoot?.querySelector('input');
211
- const denmark = document.createElement('option');
212
- denmark.value = 'dk';
213
- denmark.textContent = 'Denmark';
221
+ const input = el.shadowRoot
222
+ ?.querySelector("w-textfield")
223
+ ?.shadowRoot?.querySelector("input");
224
+ const denmark = document.createElement("option");
225
+ denmark.value = "dk";
226
+ denmark.textContent = "Denmark";
214
227
  el.appendChild(denmark);
215
228
  const sweden = el.querySelector('option[value="se"]');
216
229
  sweden?.remove();
217
230
  const norway = el.querySelector('option[value="no"]');
218
- norway?.setAttribute('value', 'nor');
231
+ norway?.setAttribute("value", "nor");
219
232
  if (norway) {
220
- norway.textContent = 'Norge';
233
+ norway.textContent = "Norge";
221
234
  }
222
235
  await new Promise((resolve) => setTimeout(resolve, 100));
223
236
  input.focus();
224
237
  await new Promise((resolve) => setTimeout(resolve, 100));
225
238
  const visibleOptions = el.shadowRoot?.querySelectorAll('[role="listbox"] [role="option"]');
226
- const optionTexts = Array.from(visibleOptions || []).map((opt) => opt.textContent?.trim());
227
- expect(optionTexts).toEqual(['Norge', 'Denmark']);
239
+ const optionTexts = Array.from(visibleOptions || [], (opt) => opt.textContent?.trim());
240
+ expect(optionTexts).toEqual(["Norge", "Denmark"]);
228
241
  });
229
- test('non-empty options property takes precedence over light-DOM option children', async () => {
230
- const options = [{ value: 'apple', label: 'Apple' }];
242
+ test("non-empty options property takes precedence over light-DOM option children", async () => {
243
+ const options = [{ value: "apple", label: "Apple" }];
231
244
  const component = html `
232
- <w-combobox data-testid="combobox" open-on-focus .options="${options}">
233
- <option value="banana">Banana</option>
234
- </w-combobox>
235
- `;
245
+ <w-combobox data-testid="combobox" open-on-focus .options="${options}">
246
+ <option value="banana">Banana</option>
247
+ </w-combobox>
248
+ `;
236
249
  const page = render(component);
237
- const locator = page.getByTestId('combobox');
250
+ const locator = page.getByTestId("combobox");
238
251
  await expect.element(locator).toBeVisible();
239
252
  const el = (await locator.element());
240
- const input = el.shadowRoot?.querySelector('w-textfield')?.shadowRoot?.querySelector('input');
253
+ const input = el.shadowRoot
254
+ ?.querySelector("w-textfield")
255
+ ?.shadowRoot?.querySelector("input");
241
256
  input.focus();
242
257
  await new Promise((resolve) => setTimeout(resolve, 100));
243
258
  const visibleOptions = el.shadowRoot?.querySelectorAll('[role="listbox"] [role="option"]');
244
- const optionTexts = Array.from(visibleOptions || []).map((opt) => opt.textContent?.trim());
245
- expect(optionTexts).toEqual(['Apple']);
259
+ const optionTexts = Array.from(visibleOptions || [], (opt) => opt.textContent?.trim());
260
+ expect(optionTexts).toEqual(["Apple"]);
246
261
  });
@@ -1,5 +1,5 @@
1
- import React from 'react';
2
- import { WarpCombobox } from './combobox.js';
1
+ import React from "react";
2
+ import { WarpCombobox } from "./combobox.js";
3
3
  export declare const Combobox: React.ForwardRefExoticComponent<Omit<Omit<Omit<React.HTMLAttributes<WarpCombobox>, "value" | "form" | "label" | "name" | "autocomplete" | "disabled" | "invalid" | "helpText" | "placeholder" | "required" | "renderRoot" | "isUpdatePending" | "hasUpdated" | "addController" | "removeController" | "connectedCallback" | "disconnectedCallback" | "attributeChangedCallback" | "requestUpdate" | "updateComplete" | "onchange" | "onselect" | "updated" | "firstUpdated" | "resetFormControl" | "render" | "validationTarget" | "internals" | "showError" | "validationMessage" | "validity" | "validationComplete" | "checkValidity" | "formResetCallback" | "valueChangedCallback" | "validityCallback" | "validationMessageCallback" | "setValue" | "shouldFormValueUpdate" | "renderOptions" | "onChange" | "onSelect" | "optional" | "options" | "openOnFocus" | "selectOnBlur" | "matchTextSegments" | "disableStaticFiltering"> & {
4
4
  onSelect?: ((e: CustomEvent<{
5
5
  value: string;
@@ -1,27 +1,27 @@
1
- import { createComponent } from '@lit/react';
2
- import { LitElement } from 'lit';
3
- import React from 'react';
1
+ import { createComponent } from "@lit/react";
2
+ import { LitElement } from "lit";
3
+ import React from "react";
4
4
  // decouple from CDN by providing a dummy class
5
5
  class Component extends LitElement {
6
6
  }
7
7
  const BaseCombobox = createComponent({
8
- tagName: 'w-combobox',
8
+ tagName: "w-combobox",
9
9
  elementClass: Component,
10
10
  react: React,
11
11
  events: {
12
- onSelect: 'select',
13
- onselect: 'select',
14
- onChange: 'change',
15
- onchange: 'change',
12
+ onSelect: "select",
13
+ onselect: "select",
14
+ onChange: "change",
15
+ onchange: "change",
16
16
  },
17
17
  });
18
18
  export const Combobox = React.forwardRef(({ openOnFocus, selectOnBlur, matchTextSegments, disableStaticFiltering, helpText, ...props }, ref) => React.createElement(BaseCombobox, {
19
19
  ...props,
20
- ...(openOnFocus ? { 'open-on-focus': true } : {}),
21
- ...(selectOnBlur ? { 'select-on-blur': true } : {}),
22
- ...(matchTextSegments ? { 'match-text-segments': true } : {}),
23
- ...(disableStaticFiltering ? { 'disable-static-filtering': true } : {}),
24
- ...(helpText !== undefined ? { 'help-text': helpText } : {}),
20
+ ...(openOnFocus ? { "open-on-focus": true } : {}),
21
+ ...(selectOnBlur ? { "select-on-blur": true } : {}),
22
+ ...(matchTextSegments ? { "match-text-segments": true } : {}),
23
+ ...(disableStaticFiltering ? { "disable-static-filtering": true } : {}),
24
+ ...(helpText !== undefined ? { "help-text": helpText } : {}),
25
25
  ref,
26
26
  }));
27
- Combobox.displayName = 'Combobox';
27
+ Combobox.displayName = "Combobox";
@@ -1,2 +1,2 @@
1
- import { unsafeCSS } from 'lit';
1
+ import { unsafeCSS } from "lit";
2
2
  export const styles = unsafeCSS("*,:before,:after{--w-rotate:0;--w-rotate-x:0;--w-rotate-y:0;--w-rotate-z:0;--w-scale-x:1;--w-scale-y:1;--w-scale-z:1;--w-skew-x:0;--w-skew-y:0;--w-translate-x:0;--w-translate-y:0;--w-translate-z:0}.rounded-8{border-radius:8px}.block{display:block}.overflow-hidden{overflow:hidden}.list-none{list-style-type:none}.left-0{left:0}.right-0{right:0}.absolute{position:absolute}.relative{position:relative}.static{position:static}.z-0{z-index:0}.z-20{z-index:20}.s-bg{background-color:var(--w-s-color-background)}.s-bg-selected{background-color:var(--w-s-color-background-selected)}.hover\\:s-bg-hover:hover{background-color:var(--w-s-color-background-hover)}.hover\\:s-bg-selected-hover:hover{background-color:var(--w-s-color-background-selected-hover)}.shadow-m{box-shadow:var(--w-shadow-m)}.m-0{margin:0}.p-0{padding:0}.p-8{padding:.8rem}.pb-4{padding-bottom:.4rem}.visible{visibility:visible}.cursor-pointer{cursor:pointer}.font-bold{font-weight:700}.sr-only{clip:rect(0,0,0,0);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.select-none{-webkit-user-select:none;user-select:none}");
@@ -1,2 +1,2 @@
1
- import '../button/button.js';
2
- import './datepicker.js';
1
+ import "../button/button.js";
2
+ import "./datepicker.js";
@@ -1,58 +1,62 @@
1
- import React, { useState } from 'react';
2
- import { expect, test, vi } from 'vitest';
3
- import { server, userEvent } from 'vitest/browser';
4
- import { render } from 'vitest-browser-react';
5
- import '../button/button.js';
6
- import './datepicker.js';
7
- import { DatePicker } from './react.js';
8
- test('renders the date picker component', async () => {
1
+ import React, { useState } from "react";
2
+ import { expect, test, vi } from "vitest";
3
+ import { server, userEvent } from "vitest/browser";
4
+ import { render } from "vitest-browser-react";
5
+ import "../button/button.js";
6
+ import "./datepicker.js";
7
+ import { DatePicker } from "./react.js";
8
+ test("renders the date picker component", async () => {
9
9
  const page = await render(React.createElement("form", null,
10
10
  React.createElement(DatePicker, { label: "From date" })));
11
- await expect.element(page.getByLabelText('From date')).toBeVisible();
11
+ await expect.element(page.getByLabelText("From date")).toBeVisible();
12
12
  });
13
- test('can pick a date using a pointer', async () => {
13
+ test("can pick a date using a pointer", async () => {
14
14
  const page = await render(React.createElement("form", { "data-testid": "flight" },
15
15
  React.createElement(DatePicker, { label: "From date", name: "from" })));
16
- await expect.element(page.getByLabelText('From date')).not.toHaveValue();
17
- await page.getByRole('button').click({ force: true });
18
- await page.getByRole('gridcell').nth(15).click();
19
- await expect.element(page.getByLabelText('From date')).toHaveValue();
20
- const formData = new FormData(page.getByTestId('flight').element());
21
- expect(formData.get('from')).toBeTruthy();
16
+ await expect.element(page.getByLabelText("From date")).not.toHaveValue();
17
+ await page.getByRole("button").click({ force: true });
18
+ await page.getByRole("gridcell").nth(15).click();
19
+ await expect.element(page.getByLabelText("From date")).toHaveValue();
20
+ const formData = new FormData(page.getByTestId("flight").element());
21
+ expect(formData.get("from")).toBeTruthy();
22
22
  });
23
- test.skipIf(server.browser === 'firefox')('can pick a date using keyboard', async () => {
23
+ test.skipIf(server.browser === "firefox")("can pick a date using keyboard", async () => {
24
24
  const page = await render(React.createElement("form", { "data-testid": "flight" },
25
25
  React.createElement(DatePicker, { label: "From date", name: "from" })));
26
- await expect.element(page.getByLabelText('From date')).not.toHaveValue();
27
- await expect.element(page.getByTestId('calendar').query()).not.toBeVisible();
28
- const toggle = page.getByRole('button').element();
26
+ await expect.element(page.getByLabelText("From date")).not.toHaveValue();
27
+ await expect
28
+ .element(page.getByTestId("calendar").query())
29
+ .not.toBeVisible();
30
+ const toggle = page.getByRole("button").element();
29
31
  toggle.focus();
30
- await userEvent.keyboard('[Enter]');
31
- await expect.element(page.getByTestId('calendar')).toBeVisible();
32
- page.getByRole('gridcell').nth(15).element().focus();
33
- await userEvent.keyboard('[Enter]');
32
+ await userEvent.keyboard("[Enter]");
33
+ await expect.element(page.getByTestId("calendar")).toBeVisible();
34
+ page.getByRole("gridcell").nth(15).element().focus();
35
+ await userEvent.keyboard("[Enter]");
34
36
  await expect
35
- .element(page.getByTestId('calendar').query(), { message: 'expected calendar to close after clicking a date' })
37
+ .element(page.getByTestId("calendar").query(), {
38
+ message: "expected calendar to close after clicking a date",
39
+ })
36
40
  .not.toBeVisible();
37
- await expect.element(page.getByLabelText('From date')).toHaveValue();
38
- const formData = new FormData(page.getByTestId('flight').element());
39
- expect(formData.get('from')).toBeTruthy();
41
+ await expect.element(page.getByLabelText("From date")).toHaveValue();
42
+ const formData = new FormData(page.getByTestId("flight").element());
43
+ expect(formData.get("from")).toBeTruthy();
40
44
  });
41
- test('can pick a date by typing in the input field', async () => {
45
+ test("can pick a date by typing in the input field", async () => {
42
46
  const page = await render(React.createElement("form", { "data-testid": "flight" },
43
47
  React.createElement(DatePicker, { label: "From date", name: "from" })));
44
- await expect.element(page.getByLabelText('From date')).not.toHaveValue();
45
- const toggle = page.getByLabelText('From date').element();
48
+ await expect.element(page.getByLabelText("From date")).not.toHaveValue();
49
+ const toggle = page.getByLabelText("From date").element();
46
50
  toggle.focus();
47
- await page.getByLabelText('From date').fill('2025-01-01');
48
- await expect.element(page.getByLabelText('From date')).toHaveValue();
49
- const formData = new FormData(page.getByTestId('flight').element());
50
- expect(formData.get('from')).toBeTruthy();
51
+ await page.getByLabelText("From date").fill("2025-01-01");
52
+ await expect.element(page.getByLabelText("From date")).toHaveValue();
53
+ const formData = new FormData(page.getByTestId("flight").element());
54
+ expect(formData.get("from")).toBeTruthy();
51
55
  });
52
- test('allows for the controlled component pattern', async () => {
56
+ test("allows for the controlled component pattern", async () => {
53
57
  const spy = vi.fn();
54
58
  const TestComponent = () => {
55
- const [value, setValue] = useState('');
59
+ const [value, setValue] = useState("");
56
60
  return (React.createElement("form", { "data-testid": "flight" },
57
61
  React.createElement(DatePicker, { label: "From date", name: "from", value: value, onChange: (e) => {
58
62
  const nextValue = e.target.value;
@@ -61,11 +65,12 @@ test('allows for the controlled component pattern', async () => {
61
65
  } })));
62
66
  };
63
67
  const page = await render(React.createElement(TestComponent, null));
64
- await page.getByRole('button').click({ force: true });
65
- await page.getByRole('gridcell').nth(15).click();
66
- await expect.element(page.getByLabelText('From date')).toHaveValue();
68
+ await page.getByRole("button").click({ force: true });
69
+ await page.getByRole("gridcell").nth(15).click();
70
+ await expect.element(page.getByLabelText("From date")).toHaveValue();
67
71
  // Controlled consumers should receive the ISO value, even when the visible input text is localized.
68
72
  const selectedValue = spy.mock.calls.at(-1)?.[0];
69
73
  expect(selectedValue).toMatch(/^\d{4}-\d{2}-\d{2}$/);
70
- expect(document.querySelector('w-datepicker').value).toBe(selectedValue);
74
+ expect(document.querySelector("w-datepicker")
75
+ .value).toBe(selectedValue);
71
76
  });
@@ -1,6 +1,6 @@
1
- import { Locale } from 'date-fns';
2
- import { LitElement } from 'lit';
3
- import '../icon/icon.js';
1
+ import { Locale } from "date-fns";
2
+ import { LitElement } from "lit";
3
+ import "../icon/icon.js";
4
4
  declare const WarpDatepicker_base: import("@open-wc/form-control").Constructor<import("@open-wc/form-control").FormControlInterface> & typeof LitElement;
5
5
  /**
6
6
  * An input for dates.
@@ -1 +1 @@
1
- import './datepicker.js';
1
+ import "./datepicker.js";