@eunomia/elements 1.0.0-beta.6 → 1.0.0-beta.8

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 (327) hide show
  1. package/README.md +1 -1
  2. package/dist/cdn/components/chunks/{chunk-KDN4O5W2.js → chunk-32L2QYWQ.js} +5 -5
  3. package/dist/cdn/components/chunks/{chunk-JYIIWN2P.js → chunk-36KLGY6U.js} +8 -8
  4. package/dist/cdn/components/chunks/chunk-3BMACIDO.js +1 -0
  5. package/dist/cdn/components/chunks/{chunk-2Y2EU2CI.js → chunk-3UUZM7X2.js} +1 -1
  6. package/dist/cdn/components/chunks/chunk-55PUDL7D.js +109 -0
  7. package/dist/cdn/components/chunks/chunk-5LA5DQMP.js +1 -0
  8. package/dist/cdn/components/chunks/chunk-5LXGJVJR.js +1 -0
  9. package/dist/cdn/components/chunks/{chunk-ZKZV2YG5.js → chunk-5XPOGBPL.js} +1 -1
  10. package/dist/cdn/components/chunks/{chunk-LMVW522V.js → chunk-62RLISRD.js} +1 -1
  11. package/dist/cdn/components/chunks/{chunk-PMPSJG5V.js → chunk-6FYW5TQU.js} +3 -3
  12. package/dist/cdn/components/chunks/chunk-6TIEBY34.js +1 -0
  13. package/dist/cdn/components/chunks/{chunk-MOMYII3P.js → chunk-AH2SKZ7T.js} +14 -1
  14. package/dist/cdn/components/chunks/chunk-AK2DIJX7.js +1 -0
  15. package/dist/cdn/components/chunks/chunk-B5XMGWM7.js +10 -0
  16. package/dist/cdn/components/chunks/chunk-GVS6IUKC.js +1 -0
  17. package/dist/cdn/components/chunks/chunk-GWLD2I3P.js +8 -0
  18. package/dist/cdn/components/chunks/{chunk-UDVB4LAE.js → chunk-I4ERDXSM.js} +5 -3
  19. package/dist/cdn/components/chunks/{chunk-QZ5SHR3I.js → chunk-J3SZBXM6.js} +2 -2
  20. package/dist/cdn/components/chunks/chunk-JAGZL7JH.js +1 -0
  21. package/dist/cdn/components/chunks/{chunk-VYFR364B.js → chunk-LD35BFNK.js} +18 -17
  22. package/dist/cdn/components/chunks/{chunk-XDPRWUKN.js → chunk-MQQJ6DID.js} +1 -1
  23. package/dist/cdn/components/chunks/chunk-P6LGU3FT.js +1 -0
  24. package/dist/cdn/components/chunks/chunk-QL5GSW2A.js +1 -0
  25. package/dist/cdn/components/chunks/{chunk-UYZR4JXZ.js → chunk-QSZO4GIH.js} +45 -9
  26. package/dist/cdn/components/chunks/{chunk-7KKWYPHY.js → chunk-QXQ25SQS.js} +21 -19
  27. package/dist/cdn/components/chunks/{chunk-SZYEBMG6.js → chunk-QYB6Z6FG.js} +5 -5
  28. package/dist/cdn/components/chunks/{chunk-RIFF2D2F.js → chunk-RGC3I6MK.js} +1 -1
  29. package/dist/cdn/components/chunks/{chunk-L2ADCEN7.js → chunk-SVGWCKWT.js} +1 -1
  30. package/dist/cdn/components/chunks/{chunk-N6ZW5CDN.js → chunk-TCSB2MLU.js} +1 -1
  31. package/dist/cdn/components/chunks/{chunk-MQQ4BGVJ.js → chunk-TFTRCIIK.js} +7 -6
  32. package/dist/cdn/components/chunks/chunk-TLBXTBMM.js +46 -0
  33. package/dist/cdn/components/chunks/chunk-UVHVQRPT.js +1 -0
  34. package/dist/cdn/components/chunks/chunk-WIUERJII.js +1 -0
  35. package/dist/cdn/components/chunks/chunk-WW4BTWMH.js +1 -0
  36. package/dist/cdn/components/eun-alert.js +13 -6
  37. package/dist/cdn/components/eun-animate.js +6 -6
  38. package/dist/cdn/components/eun-badge.js +1 -1
  39. package/dist/cdn/components/eun-button.js +1 -1
  40. package/dist/cdn/components/eun-calendar.js +2 -2
  41. package/dist/cdn/components/eun-card.js +4 -4
  42. package/dist/cdn/components/eun-carousel.js +26 -22
  43. package/dist/cdn/components/eun-check-card.js +1 -1
  44. package/dist/cdn/components/eun-checkbox-list.js +11 -8
  45. package/dist/cdn/components/eun-checkbox.js +1 -1
  46. package/dist/cdn/components/eun-chip.js +17 -11
  47. package/dist/cdn/components/eun-collapse.js +1 -1
  48. package/dist/cdn/components/eun-color-picker.js +74 -69
  49. package/dist/cdn/components/eun-counter.js +16 -14
  50. package/dist/cdn/components/eun-date-picker.js +67 -63
  51. package/dist/cdn/components/eun-description-list.js +2 -2
  52. package/dist/cdn/components/eun-divider.js +3 -3
  53. package/dist/cdn/components/eun-drawer.js +21 -22
  54. package/dist/cdn/components/eun-dropdown-button.js +1 -1
  55. package/dist/cdn/components/eun-dropdown-item.js +3 -3
  56. package/dist/cdn/components/eun-fab.js +2 -2
  57. package/dist/cdn/components/eun-icon.js +1 -1
  58. package/dist/cdn/components/eun-image-card.js +1 -1
  59. package/dist/cdn/components/eun-image-carousel.js +10 -10
  60. package/dist/cdn/components/eun-infinite-list.js +1 -1
  61. package/dist/cdn/components/eun-input-file.js +21 -21
  62. package/dist/cdn/components/eun-input-phone.js +16 -12
  63. package/dist/cdn/components/eun-input.js +1 -1
  64. package/dist/cdn/components/eun-link.js +59 -13
  65. package/dist/cdn/components/eun-loader.js +1 -1
  66. package/dist/cdn/components/eun-modal.js +33 -23
  67. package/dist/cdn/components/eun-pagination.js +16 -16
  68. package/dist/cdn/components/eun-password-strength.js +14 -10
  69. package/dist/cdn/components/eun-radio-card.js +1 -1
  70. package/dist/cdn/components/eun-radio-list.js +11 -8
  71. package/dist/cdn/components/eun-radio.js +1 -1
  72. package/dist/cdn/components/eun-rating.js +276 -0
  73. package/dist/cdn/components/eun-scheduler-event-editor.js +11 -11
  74. package/dist/cdn/components/eun-scheduler-event.js +1 -1
  75. package/dist/cdn/components/eun-scheduler.js +28 -28
  76. package/dist/cdn/components/eun-search.js +36 -32
  77. package/dist/cdn/components/eun-select.js +27 -27
  78. package/dist/cdn/components/eun-sidebar.js +73 -26
  79. package/dist/cdn/components/eun-skeleton.js +1 -1
  80. package/dist/cdn/components/eun-slider.js +3 -3
  81. package/dist/cdn/components/eun-sliding-card.js +1 -1
  82. package/dist/cdn/components/eun-step.js +5 -4
  83. package/dist/cdn/components/eun-stepper.js +30 -30
  84. package/dist/cdn/components/eun-switch.js +1 -1
  85. package/dist/cdn/components/eun-tab-group.js +4 -4
  86. package/dist/cdn/components/eun-tab-panel.js +1 -1
  87. package/dist/cdn/components/eun-tab.js +1 -1
  88. package/dist/cdn/components/eun-table-action-bar.js +1 -1
  89. package/dist/cdn/components/eun-table.js +2 -2
  90. package/dist/cdn/components/eun-tag.js +3 -3
  91. package/dist/cdn/components/eun-textarea.js +36 -28
  92. package/dist/cdn/components/eun-time-picker.js +31 -28
  93. package/dist/cdn/components/eun-toast.js +24 -15
  94. package/dist/cdn/components/eun-toggle-group.js +75 -37
  95. package/dist/cdn/components/eun-toggle-item.js +9 -9
  96. package/dist/cdn/components/eun-toggle.js +2 -2
  97. package/dist/cdn/components/eun-toolbar.js +22 -22
  98. package/dist/cdn/components/eun-tooltip.js +6 -6
  99. package/dist/cdn/styles/eunomia-themes.css +1 -1
  100. package/dist/cdn/styles/themes/mixins/eunomia-neutrals.mixin.scss +6 -2
  101. package/dist/cdn/styles/themes/prebuilt-themes/eunomia/eunomia-dark.mixin.scss +6 -2
  102. package/dist/cdn/styles/themes/prebuilt-themes/eunomia/eunomia.theme.css +1 -1
  103. package/dist/cdn/styles/themes/prebuilt-themes/fire/eunomia-fire-dark.mixin.scss +6 -2
  104. package/dist/cdn/styles/themes/prebuilt-themes/fire/eunomia-fire.theme.css +1 -1
  105. package/dist/cdn/styles/themes/prebuilt-themes/forest/eunomia-forest-dark.mixin.scss +6 -2
  106. package/dist/cdn/styles/themes/prebuilt-themes/forest/eunomia-forest.theme.css +1 -1
  107. package/dist/cdn/styles/themes/prebuilt-themes/gold/eunomia-gold-dark.mixin.scss +6 -2
  108. package/dist/cdn/styles/themes/prebuilt-themes/gold/eunomia-gold.theme.css +1 -1
  109. package/dist/cdn/styles/themes/prebuilt-themes/ocean/eunomia-ocean-dark.mixin.scss +6 -2
  110. package/dist/cdn/styles/themes/prebuilt-themes/ocean/eunomia-ocean.theme.css +1 -1
  111. package/dist/cdn/styles/themes/prebuilt-themes/salmon/eunomia-salmon-dark.mixin.scss +6 -2
  112. package/dist/cdn/styles/themes/prebuilt-themes/salmon/eunomia-salmon.theme.css +1 -1
  113. package/dist/cdn/styles/themes/prebuilt-themes/violet/eunomia-violet-dark.mixin.scss +6 -2
  114. package/dist/cdn/styles/themes/prebuilt-themes/violet/eunomia-violet.theme.css +1 -1
  115. package/dist/components/action/button/button.d.ts +4 -3
  116. package/dist/components/action/button/button.js +6 -9
  117. package/dist/components/action/button/button.styles.js +13 -8
  118. package/dist/components/action/dropdown-button/dropdown-button.d.ts +4 -6
  119. package/dist/components/action/dropdown-button/dropdown-button.js +16 -13
  120. package/dist/components/action/dropdown-button/dropdown-item.d.ts +10 -2
  121. package/dist/components/action/dropdown-button/dropdown-item.js +24 -9
  122. package/dist/components/action/link/link.d.ts +10 -1
  123. package/dist/components/action/link/link.js +13 -1
  124. package/dist/components/action/link/link.styles.js +50 -3
  125. package/dist/components/action/toggle/toggle-group.d.ts +12 -2
  126. package/dist/components/action/toggle/toggle-group.js +18 -3
  127. package/dist/components/action/toggle/toggle-group.styles.js +58 -20
  128. package/dist/components/action/toggle/toggle-item.js +1 -3
  129. package/dist/components/action/toggle/toggle-item.styles.js +7 -7
  130. package/dist/components/action/toggle/toggle.js +1 -1
  131. package/dist/components/alert/alert/alert.d.ts +9 -7
  132. package/dist/components/alert/alert/alert.js +11 -14
  133. package/dist/components/alert/alert/alert.styles.js +9 -2
  134. package/dist/components/alert/drawer/drawer.d.ts +30 -5
  135. package/dist/components/alert/drawer/drawer.js +48 -13
  136. package/dist/components/alert/drawer/drawer.styles.js +7 -7
  137. package/dist/components/alert/modal/modal.d.ts +35 -10
  138. package/dist/components/alert/modal/modal.js +55 -28
  139. package/dist/components/alert/modal/modal.styles.js +17 -6
  140. package/dist/components/alert/toast/toast.d.ts +7 -5
  141. package/dist/components/alert/toast/toast.js +12 -15
  142. package/dist/components/alert/toast/toast.styles.js +18 -9
  143. package/dist/components/content/badge/badge.js +2 -2
  144. package/dist/components/content/card/card.js +1 -1
  145. package/dist/components/content/card/card.styles.js +2 -2
  146. package/dist/components/content/chip/chip.d.ts +4 -4
  147. package/dist/components/content/chip/chip.js +11 -10
  148. package/dist/components/content/chip/chip.styles.js +9 -3
  149. package/dist/components/content/description-list/description-list.js +3 -3
  150. package/dist/components/content/icon/icon.d.ts +3 -0
  151. package/dist/components/content/icon/icon.js +3 -0
  152. package/dist/components/content/icon/icon.style.d.ts +2 -0
  153. package/dist/components/content/icon/icon.style.js +4 -0
  154. package/dist/components/content/image-carousel/image-carousel.d.ts +12 -12
  155. package/dist/components/content/image-carousel/image-carousel.js +29 -28
  156. package/dist/components/content/password-strength/password-strength.d.ts +21 -6
  157. package/dist/components/content/password-strength/password-strength.js +37 -16
  158. package/dist/components/content/password-strength/password-strength.styles.js +4 -0
  159. package/dist/components/content/tag/tag.js +2 -2
  160. package/dist/components/content/tooltip/tooltip.d.ts +16 -9
  161. package/dist/components/content/tooltip/tooltip.js +31 -15
  162. package/dist/components/content/tooltip/tooltip.styles.js +1 -1
  163. package/dist/components/form/checkbox/check-card.d.ts +1 -0
  164. package/dist/components/form/checkbox/check-card.js +1 -0
  165. package/dist/components/form/checkbox/checkbox-list.d.ts +17 -0
  166. package/dist/components/form/checkbox/checkbox-list.js +39 -10
  167. package/dist/components/form/checkbox/checkbox.d.ts +1 -0
  168. package/dist/components/form/checkbox/checkbox.js +3 -1
  169. package/dist/components/form/checkbox/checkbox.styles.js +3 -2
  170. package/dist/components/form/color-picker/color-picker.d.ts +47 -28
  171. package/dist/components/form/color-picker/color-picker.js +73 -51
  172. package/dist/components/form/color-picker/color-picker.styles.js +14 -1
  173. package/dist/components/form/counter/counter.d.ts +24 -18
  174. package/dist/components/form/counter/counter.js +61 -61
  175. package/dist/components/form/counter/counter.styles.js +6 -4
  176. package/dist/components/form/date-picker/date-picker.d.ts +33 -7
  177. package/dist/components/form/date-picker/date-picker.js +82 -56
  178. package/dist/components/form/date-picker/date-picker.styles.js +9 -6
  179. package/dist/components/form/input/input.d.ts +43 -39
  180. package/dist/components/form/input/input.js +91 -110
  181. package/dist/components/form/input-file/input-file.d.ts +26 -13
  182. package/dist/components/form/input-file/input-file.js +35 -35
  183. package/dist/components/form/input-file/input-file.styles.js +4 -4
  184. package/dist/components/form/input-phone/input-phone.d.ts +28 -5
  185. package/dist/components/form/input-phone/input-phone.js +47 -13
  186. package/dist/components/form/input-phone/input-phone.styles.js +6 -3
  187. package/dist/components/form/radio/radio-card.d.ts +1 -0
  188. package/dist/components/form/radio/radio-card.js +1 -0
  189. package/dist/components/form/radio/radio-list.d.ts +23 -7
  190. package/dist/components/form/radio/radio-list.js +47 -22
  191. package/dist/components/form/radio/radio.d.ts +1 -0
  192. package/dist/components/form/radio/radio.js +1 -0
  193. package/dist/components/form/rating/rating.d.ts +349 -0
  194. package/dist/components/form/rating/rating.js +665 -0
  195. package/dist/components/form/rating/rating.styles.d.ts +1 -0
  196. package/dist/components/form/rating/rating.styles.js +213 -0
  197. package/dist/components/form/search/search.d.ts +72 -18
  198. package/dist/components/form/search/search.js +135 -72
  199. package/dist/components/form/search/search.styles.js +2 -0
  200. package/dist/components/form/select/select.d.ts +29 -10
  201. package/dist/components/form/select/select.js +65 -41
  202. package/dist/components/form/shared-styles/field.styles.js +45 -8
  203. package/dist/components/form/shared-styles/listbox.styles.js +15 -1
  204. package/dist/components/form/slider/slider.d.ts +7 -8
  205. package/dist/components/form/slider/slider.js +9 -12
  206. package/dist/components/form/switch/switch.d.ts +1 -0
  207. package/dist/components/form/switch/switch.js +1 -0
  208. package/dist/components/form/textarea/textarea.d.ts +90 -23
  209. package/dist/components/form/textarea/textarea.js +194 -44
  210. package/dist/components/form/textarea/textarea.styles.js +3 -0
  211. package/dist/components/form/time-picker/time-picker-columns.d.ts +2 -2
  212. package/dist/components/form/time-picker/time-picker-columns.js +8 -8
  213. package/dist/components/form/time-picker/time-picker.d.ts +30 -9
  214. package/dist/components/form/time-picker/time-picker.js +66 -40
  215. package/dist/components/form/time-picker/time-picker.styles.js +7 -5
  216. package/dist/components/layout/animate/animate.js +3 -2
  217. package/dist/components/layout/animate/animate.styles.js +2 -2
  218. package/dist/components/layout/divider/divider.js +1 -1
  219. package/dist/components/layout/divider/divider.styles.js +1 -1
  220. package/dist/components/loader/loader/loader.js +2 -2
  221. package/dist/components/loader/loader/loader.styles.js +14 -12
  222. package/dist/components/loader/skeleton/skeleton.js +1 -1
  223. package/dist/components/navigation/carousel/carousel.d.ts +32 -9
  224. package/dist/components/navigation/carousel/carousel.js +88 -41
  225. package/dist/components/navigation/carousel/carousel.styles.js +10 -6
  226. package/dist/components/navigation/pagination/pagination.d.ts +23 -21
  227. package/dist/components/navigation/pagination/pagination.js +30 -53
  228. package/dist/components/navigation/sidebar/sidebar.d.ts +113 -65
  229. package/dist/components/navigation/sidebar/sidebar.js +161 -118
  230. package/dist/components/navigation/sidebar/sidebar.styles.d.ts +1 -1
  231. package/dist/components/navigation/sidebar/sidebar.styles.js +74 -24
  232. package/dist/components/navigation/stepper/step.js +9 -8
  233. package/dist/components/navigation/stepper/stepper.d.ts +1 -3
  234. package/dist/components/navigation/stepper/stepper.js +15 -26
  235. package/dist/components/navigation/tabs/tab-group/tab-group.js +2 -2
  236. package/dist/components/navigation/tabs/tab-group/tab-group.styles.js +2 -2
  237. package/dist/components/navigation/toolbar/toolbar.d.ts +23 -13
  238. package/dist/components/navigation/toolbar/toolbar.js +28 -35
  239. package/dist/components/navigation/toolbar/toolbar.styles.js +18 -17
  240. package/dist/events/select.event.d.ts +3 -2
  241. package/dist/events/select.event.js +2 -1
  242. package/dist/features/scheduler/calendar/calendar.js +1 -1
  243. package/dist/features/scheduler/scheduler/scheduler.d.ts +7 -7
  244. package/dist/features/scheduler/scheduler/scheduler.js +15 -24
  245. package/dist/features/scheduler/scheduler-event/scheduler-event.js +3 -3
  246. package/dist/features/scheduler/scheduler-event/scheduler-event.styles.js +1 -1
  247. package/dist/features/scheduler/scheduler-event-editor/scheduler-event-editor.d.ts +6 -4
  248. package/dist/features/scheduler/scheduler-event-editor/scheduler-event-editor.js +7 -8
  249. package/dist/features/table/table/table.js +1 -1
  250. package/dist/features/table/table-action-bar/table-action-bar.js +2 -2
  251. package/dist/i18n/en.d.ts +68 -0
  252. package/dist/i18n/en.js +68 -0
  253. package/dist/i18n/fr.js +68 -2
  254. package/dist/index.d.ts +3 -0
  255. package/dist/index.js +1 -0
  256. package/dist/mixins/button.mixin.d.ts +1 -1
  257. package/dist/mixins/button.mixin.js +9 -6
  258. package/dist/mixins/check.mixin.js +11 -10
  259. package/dist/mixins/dialog-surface.mixin.d.ts +8 -0
  260. package/dist/mixins/disabled.mixin.d.ts +5 -0
  261. package/dist/mixins/disabled.mixin.js +21 -1
  262. package/dist/mixins/editable.mixin.js +28 -5
  263. package/dist/mixins/field-appearance.mixin.js +3 -2
  264. package/dist/mixins/field-size.mixin.d.ts +19 -0
  265. package/dist/mixins/field-size.mixin.js +33 -0
  266. package/dist/mixins/form.mixin.d.ts +4 -0
  267. package/dist/mixins/form.mixin.js +87 -13
  268. package/dist/mixins/localizable.mixin.d.ts +1 -1
  269. package/dist/mixins/localizable.mixin.js +1 -1
  270. package/dist/mixins/radio.mixin.js +11 -10
  271. package/dist/mixins/readonly.mixin.d.ts +2 -1
  272. package/dist/mixins/readonly.mixin.js +10 -3
  273. package/dist/mixins/rounded.mixin.d.ts +18 -0
  274. package/dist/mixins/rounded.mixin.js +32 -0
  275. package/dist/ssr/alert-ssr.css +187 -0
  276. package/dist/ssr/badge-ssr.css +67 -0
  277. package/dist/ssr/breadcrumb-ssr.css +41 -0
  278. package/dist/ssr/button-ssr.css +5 -5
  279. package/dist/ssr/card-ssr.css +27 -15
  280. package/dist/ssr/carousel-ssr.css +247 -0
  281. package/dist/ssr/checkbox-ssr.css +67 -0
  282. package/dist/ssr/chip-ssr.css +250 -0
  283. package/dist/ssr/collapse-ssr.css +180 -0
  284. package/dist/ssr/field-ssr.css +202 -0
  285. package/dist/ssr/icon-ssr.css +266 -0
  286. package/dist/ssr/image-carousel-ssr.css +34 -0
  287. package/dist/ssr/links-ssr.css +44 -1
  288. package/dist/ssr/pagination-ssr.css +4 -0
  289. package/dist/ssr/rating-ssr.css +254 -0
  290. package/dist/ssr/sidebar-ssr.css +102 -3
  291. package/dist/ssr/skeleton-ssr.css +63 -0
  292. package/dist/ssr/tabs-ssr.css +129 -0
  293. package/dist/ssr/toggle-group-ssr.css +233 -0
  294. package/dist/ssr/toolbar-ssr.css +81 -2
  295. package/dist/types/variant.type.d.ts +4 -1
  296. package/dist/utils/boolean.utils.d.ts +14 -0
  297. package/dist/utils/boolean.utils.js +20 -0
  298. package/dist/utils/dropdown-menu.utils.d.ts +1 -1
  299. package/dist/utils/focusable-elements.utils.d.ts +12 -0
  300. package/dist/utils/focusable-elements.utils.js +26 -0
  301. package/dist/utils/implicit-submission.utils.d.ts +18 -0
  302. package/dist/utils/implicit-submission.utils.js +79 -0
  303. package/dist/utils/input-modality.utils.d.ts +13 -0
  304. package/dist/utils/input-modality.utils.js +34 -0
  305. package/dist/utils/listbox-options.utils.d.ts +11 -0
  306. package/dist/utils/listbox-options.utils.js +41 -3
  307. package/dist/utils/theme-generator.utils.d.ts +8 -2
  308. package/dist/utils/theme-generator.utils.js +30 -9
  309. package/package.json +26 -7
  310. package/styles/themes/mixins/eunomia-neutrals.mixin.scss +6 -2
  311. package/styles/themes/prebuilt-themes/eunomia/eunomia-dark.mixin.scss +6 -2
  312. package/styles/themes/prebuilt-themes/fire/eunomia-fire-dark.mixin.scss +6 -2
  313. package/styles/themes/prebuilt-themes/forest/eunomia-forest-dark.mixin.scss +6 -2
  314. package/styles/themes/prebuilt-themes/gold/eunomia-gold-dark.mixin.scss +6 -2
  315. package/styles/themes/prebuilt-themes/ocean/eunomia-ocean-dark.mixin.scss +6 -2
  316. package/styles/themes/prebuilt-themes/salmon/eunomia-salmon-dark.mixin.scss +6 -2
  317. package/styles/themes/prebuilt-themes/violet/eunomia-violet-dark.mixin.scss +6 -2
  318. package/dist/cdn/components/chunks/chunk-4PI6RDUS.js +0 -1
  319. package/dist/cdn/components/chunks/chunk-6VK6SHCG.js +0 -1
  320. package/dist/cdn/components/chunks/chunk-A3X4KD2X.js +0 -1
  321. package/dist/cdn/components/chunks/chunk-BQFJR2UP.js +0 -110
  322. package/dist/cdn/components/chunks/chunk-G5SBDQQ3.js +0 -1
  323. package/dist/cdn/components/chunks/chunk-KSZRQRN4.js +0 -1
  324. package/dist/cdn/components/chunks/chunk-PE4DAXHQ.js +0 -3
  325. package/dist/cdn/components/chunks/chunk-RS7TWEMQ.js +0 -1
  326. package/dist/cdn/components/chunks/chunk-UDOZRIJZ.js +0 -1
  327. package/dist/cdn/components/chunks/chunk-VOTRXBDS.js +0 -38
@@ -16,13 +16,16 @@ import { FormMixin } from "../../../mixins/form.mixin.js";
16
16
  import { FormLabelMixin, } from "../../../mixins/form-label.mixin.js";
17
17
  import { EditableMixin, } from "../../../mixins/editable.mixin.js";
18
18
  import { FieldAppearanceMixin, } from "../../../mixins/field-appearance.mixin.js";
19
+ import { RoundedMixin, } from "../../../mixins/rounded.mixin.js";
20
+ import { FieldSizeMixin, } from "../../../mixins/field-size.mixin.js";
19
21
  import { AnchorPositionMixin, } from "../../../mixins/anchor-position.mixin.js";
20
22
  import { ChangeEvent } from "../../../events/change.event.js";
21
23
  import { formLabelsStyles } from "../shared-styles/form-labels.styles.js";
22
24
  import { selectStyles } from "./select.styles.js";
23
25
  import { isWebKit } from "../../../utils/browser.utils.js";
24
- import { parseListboxOptions, renderHighlightedLabel, } from "../../../utils/listbox-options.utils.js";
26
+ import { parseListboxOptions, renderHighlightedLabel, renderListboxRows, } from "../../../utils/listbox-options.utils.js";
25
27
  import { resolveDurationMs, resolveEasing, } from "../../../utils/motion.utils.js";
28
+ import { LocalizableMixin, } from "../../../mixins/localizable.mixin.js";
26
29
  /**
27
30
  * Tag name of the select component.
28
31
  */
@@ -32,7 +35,7 @@ export const EunomiaSelectTagName = "eun-select";
32
35
  * @internal
33
36
  */
34
37
  const Base = DisabledMixin(ValidatorsMixin(LitElement));
35
- const EunomiaSelectMixinBase = AnchorPositionMixin(FieldAppearanceMixin(FormLabelMixin(ReadonlyMixin(EditableMixin(FormMixin(Base))))));
38
+ const EunomiaSelectMixinBase = LocalizableMixin(AnchorPositionMixin(RoundedMixin(FieldSizeMixin(FieldAppearanceMixin(FormLabelMixin(ReadonlyMixin(EditableMixin(FormMixin(Base)))))))));
36
39
  /**
37
40
  * A field that picks one or more values from a list of option and optgroup
38
41
  * children. Set searchable to let the field also filter that list as the
@@ -59,6 +62,8 @@ const EunomiaSelectMixinBase = AnchorPositionMixin(FieldAppearanceMixin(FormLabe
59
62
  * @prop {boolean} [native=false] - Renders the field as a real select, using the browser's own dropdown instead of the listbox panel. Takes priority over searchable and multiple, neither of which a native dropdown can support
60
63
  * @prop {boolean} [multiple=false] - Whether more than one option can be picked at once. Each option then renders a checkbox, and picking one toggles it without closing the dropdown, so value becomes an array of every picked option's value. Ignored while native is set
61
64
  * @prop {'outline' | 'flat' | 'underline'} [appearance='outline'] - How the field's surface is drawn: a bordered box, a muted background with no border, or a bottom border only
65
+ * @prop {boolean} [rounded=false] - Whether the field is fully rounded, as a pill. A custom border radius still wins over it
66
+ * @prop {'xs' | 's' | 'm' | 'l' | 'xl'} [size='m'] - The field size. A field and a button of the same size share the same height
62
67
  * @prop {string} label - The title label of the field, rendered through the label component
63
68
  * @prop {string} instructions - Instructions displayed below the label
64
69
  * @prop {string} name - The field name
@@ -69,6 +74,7 @@ const EunomiaSelectMixinBase = AnchorPositionMixin(FieldAppearanceMixin(FormLabe
69
74
  * @prop {boolean} [readonly=false] - Whether the field is read only
70
75
  * @prop {boolean} [required=false] - Whether a selection is required
71
76
  * @prop {boolean} [hideError=false] - Whether the errors are hidden. The hint stays visible
77
+ * @prop {boolean} [invalid=false] - Shows the field as invalid without any message, for an error displayed elsewhere
72
78
  * @prop {string} [error] - An error computed outside the field, by the form or by the server. While set, the field is invalid and shows this message right away
73
79
  * @prop {Array<Validators<string | string[]>>} validators - The list of validation rules applied to the field value
74
80
  * @prop {EunomiaIconName} icon - An optional leading icon
@@ -79,10 +85,10 @@ const EunomiaSelectMixinBase = AnchorPositionMixin(FieldAppearanceMixin(FormLabe
79
85
  * @attr {string} [select-placeholder='Select…'] - The fallback for placeholder when searchable isn't set
80
86
  * @prop {boolean} [readonlyAvailable=false] - Whether the field can switch between a static display and an editable one
81
87
  * @attr {boolean} [readonly-available=false] - Whether the field can switch between a static display and an editable one
82
- * @prop {string} [emptyValueLabel='No value set'] - Text displayed in place of the value when readonly and empty
88
+ * @prop {string} [emptyValueLabel] - Text displayed in place of the value when readonly and empty. Defaults to the localized string for the current locale (English: "No value set")
83
89
  * @prop {string} [noResultsLabel='No results'] - Text displayed in the dropdown when no option matches the search
84
- * @prop {string} [confirmLabel='Confirm'] - The label of the confirm button, shown while editing in readonlyAvailable mode or while multiple and the dropdown is open. Set to an empty string to hide the button entirely
85
- * @attr {string} [confirm-label='Confirm'] - The label of the confirm button, shown while editing in readonlyAvailable mode or while multiple and the dropdown is open. Set to an empty string to hide the button entirely
90
+ * @prop {string} [confirmLabel] - The label of the confirm button, shown while editing in readonlyAvailable mode or while multiple and the dropdown is open. Set to an empty string to hide the button entirely. Defaults to the localized string for the current locale (English: "Confirm")
91
+ * @attr {string} [confirm-label] - The label of the confirm button, shown while editing in readonlyAvailable mode or while multiple and the dropdown is open. Set to an empty string to hide the button entirely. Defaults to the localized string for the current locale (English: "Confirm")
86
92
  * @prop {boolean} [noAnimation=false] - Disables the dropdown panel's open and close height transition, on top of the automatic reduced motion handling
87
93
  * @prop {boolean} [loading=false] - Whether options are currently being fetched. Shows a spinning loading indicator in place of the dropdown arrow, and a single disabled loading row instead of the option list. Has no effect while native, beyond the arrow swap
88
94
  * @prop {string} [loadingLabel='Loading…'] - The accessible label announced by the loading indicator while loading is set
@@ -111,10 +117,12 @@ const EunomiaSelectMixinBase = AnchorPositionMixin(FieldAppearanceMixin(FormLabe
111
117
  * @cssprop [--field-confirm-link-color] - Sets the color of the confirm slot's link, while editing in readonlyAvailable mode
112
118
  * @cssprop [--field-confirm-link-color-hover] - Sets the hover color of the confirm slot's link
113
119
  * @cssprop [--field-listbox-max-height=260px] - Sets the maximum height of the dropdown panel, past which it scrolls
120
+ * @cssprop [--field-listbox-border-radius] - Sets the corner radius of the dropdown panel, independent of the field's own radius
114
121
  * @cssprop [--field-listbox-transition-duration=200ms] - Sets the duration of the dropdown panel's open and close height transition, disabled entirely by the no-animation attribute or reduced motion settings
115
122
  * @cssprop [--eun-viewport-inset-top] - Reserves space, such as a page's sticky header height, that the dropdown panel keeps clear of at the top of the viewport. Set on the root or an ancestor rather than on the field itself
116
123
  * @cssprop [--eun-viewport-inset-bottom] - The same as eun-viewport-inset-top, reserved at the bottom of the viewport, such as for a sticky footer
117
124
  * @cssprop [--field-font-size] - Sets the font size of the field's value and placeholder
125
+ * @cssprop [--field-line-height] - Sets the line height of the field's value and placeholder
118
126
  * @cssprop [--field-label-font-size] - Sets the font size of the label
119
127
  * @cssprop [--field-message-font-size] - Sets the font size of the hint, error messages and instructions
120
128
  * @element eun-select
@@ -122,6 +130,11 @@ const EunomiaSelectMixinBase = AnchorPositionMixin(FieldAppearanceMixin(FormLabe
122
130
  let EunomiaSelect = EunomiaSelect_1 = class EunomiaSelect extends EunomiaSelectMixinBase {
123
131
  constructor() {
124
132
  super(...arguments);
133
+ /**
134
+ * Every change is a complete choice, so its error shows right away.
135
+ * @internal
136
+ */
137
+ this.errorOnChange = true;
125
138
  /**
126
139
  * Indicates whether the field filters its options as the user types.
127
140
  * When false, the field is read-only and driven by Arrow keys, `Enter`,
@@ -165,27 +178,11 @@ let EunomiaSelect = EunomiaSelect_1 = class EunomiaSelect extends EunomiaSelectM
165
178
  * @default Select…
166
179
  */
167
180
  this.selectPlaceholder = "Select…";
168
- /**
169
- * Text displayed in place of the value when readonly and empty.
170
- * @default No value set
171
- */
172
- this.emptyValueLabel = "No value set";
173
181
  /**
174
182
  * Text displayed in the dropdown when no option matches the search.
175
183
  * @default No results
176
184
  */
177
185
  this.noResultsLabel = "No results";
178
- /**
179
- * Label of the confirm button — shown while editing in `readonlyAvailable`
180
- * mode, or while `multiple` and the dropdown is open (see the class doc).
181
- * Slot content into `confirm` instead for anything richer than plain text
182
- * (an icon, for instance) ; slotted content, when present, overrides this.
183
- * Set to an empty string to hide the button entirely — e.g. for a
184
- * `readonlyAvailable` field where picking an option is already confirmation
185
- * enough on its own, and the extra button would just be clutter.
186
- * @default Confirm
187
- */
188
- this.confirmLabel = "Confirm";
189
186
  /**
190
187
  * Indicates whether options are currently being fetched (e.g. a
191
188
  * server-filtered `searchable` field). Shows a spinning `eun-loader` in
@@ -515,7 +512,8 @@ let EunomiaSelect = EunomiaSelect_1 = class EunomiaSelect extends EunomiaSelectM
515
512
  * @internal
516
513
  */
517
514
  get hasConfirmContent() {
518
- return this.hasConfirmSlot || !!this.confirmLabel;
515
+ return (this.hasConfirmSlot ||
516
+ !!(this.confirmLabel ?? this.dictionary.common.confirm));
519
517
  }
520
518
  /**
521
519
  * The normalised search query driving both filtering and highlighting.
@@ -608,9 +606,22 @@ let EunomiaSelect = EunomiaSelect_1 = class EunomiaSelect extends EunomiaSelectM
608
606
  }
609
607
  if (_changedProperties.has("readonly") ||
610
608
  _changedProperties.has("disabled")) {
611
- this.setAttribute("tabindex", this.disabled || this.readonly ? "-1" : "0");
609
+ if (this.disabled || this.readonly) {
610
+ this.setAttribute("tabindex", "-1");
611
+ }
612
+ else {
613
+ this.removeAttribute("tabindex");
614
+ }
612
615
  }
613
616
  }
617
+ /**
618
+ * The host is never a tab stop of its own : sequential navigation goes
619
+ * straight to the controls inside, in both directions, and
620
+ * {@link focus} covers a direct call on the host.
621
+ */
622
+ get hostTabStop() {
623
+ return false;
624
+ }
614
625
  /**
615
626
  * Returns the field element to focus/anchor on validation errors.
616
627
  *
@@ -929,6 +940,27 @@ let EunomiaSelect = EunomiaSelect_1 = class EunomiaSelect extends EunomiaSelectM
929
940
  }
930
941
  break;
931
942
  }
943
+ case " ": {
944
+ // Space opens the list, then picks the highlighted option, as in
945
+ // a select-only combobox, unless it continues a type-ahead search
946
+ // or is typed into the search text.
947
+ if (this.searchable || this.typeaheadBuffer) {
948
+ if (!this.searchable) {
949
+ this.handleTypeahead(event);
950
+ }
951
+ break;
952
+ }
953
+ event.preventDefault();
954
+ if (!this.isOpen) {
955
+ this.openListbox();
956
+ break;
957
+ }
958
+ const option = this.filteredOptions[this.highlightedIndex];
959
+ if (option) {
960
+ this.handleSelect(option);
961
+ }
962
+ break;
963
+ }
932
964
  default:
933
965
  if (!this.searchable) {
934
966
  this.handleTypeahead(event);
@@ -988,27 +1020,17 @@ let EunomiaSelect = EunomiaSelect_1 = class EunomiaSelect extends EunomiaSelectM
988
1020
  return renderHighlightedLabel(label, this.effectiveQuery);
989
1021
  }
990
1022
  /**
991
- * Renders the dropdown's option rows, inserting a non-interactive group
992
- * heading whenever an option's `group` differs from the previous row's.
1023
+ * Renders the dropdown's option rows, grouped under their `optgroup`
1024
+ * label (see {@link renderListboxRows}).
993
1025
  *
994
1026
  * @param options the options to render, already filtered.
995
1027
  * @returns the rendered rows.
996
1028
  * @private
997
1029
  */
998
1030
  renderOptionRows(options) {
999
- const rows = [];
1000
- let lastGroup;
1001
- options.forEach((option, index) => {
1002
- if (option.group !== lastGroup) {
1003
- lastGroup = option.group;
1004
- if (option.group) {
1005
- rows.push(html `<li class="group-label" role="presentation">
1006
- ${option.group}
1007
- </li>`);
1008
- }
1009
- }
1031
+ return renderListboxRows(options, (option, index) => {
1010
1032
  const selected = this.isSelected(option);
1011
- rows.push(html `
1033
+ return html `
1012
1034
  <li
1013
1035
  id="listbox-option-${index}"
1014
1036
  role="option"
@@ -1034,9 +1056,8 @@ let EunomiaSelect = EunomiaSelect_1 = class EunomiaSelect extends EunomiaSelectM
1034
1056
  ? this.renderHighlighted(option.label)
1035
1057
  : option.label}
1036
1058
  </li>
1037
- `);
1059
+ `;
1038
1060
  });
1039
- return rows;
1040
1061
  }
1041
1062
  /**
1042
1063
  * Whether the confirm trigger should render at all right now — while
@@ -1089,7 +1110,9 @@ let EunomiaSelect = EunomiaSelect_1 = class EunomiaSelect extends EunomiaSelectM
1089
1110
  }
1090
1111
  return html `
1091
1112
  <button type="button" id="confirm-link" @click=${this.handleConfirmClick}>
1092
- <slot name="confirm">${this.confirmLabel}</slot>
1113
+ <slot name="confirm"
1114
+ >${this.confirmLabel ?? this.dictionary.common.confirm}</slot
1115
+ >
1093
1116
  </button>
1094
1117
  `;
1095
1118
  }
@@ -1112,7 +1135,8 @@ let EunomiaSelect = EunomiaSelect_1 = class EunomiaSelect extends EunomiaSelectM
1112
1135
  >
1113
1136
  <slot name="readonly-content">
1114
1137
  <span class=${classMap({ empty: !label })}
1115
- >${label || this.emptyValueLabel}</span
1138
+ >${label ||
1139
+ (this.emptyValueLabel ?? this.dictionary.common.noValue)}</span
1116
1140
  >
1117
1141
  </slot>
1118
1142
  </div>
@@ -16,7 +16,8 @@ import { css } from "lit";
16
16
  * [--field-icon-color] - Set a custom color to the leading icon and action buttons
17
17
  * [--field-error-color] - Set a custom color to the error state content
18
18
  * [--field-hint-color] - Set a custom color to the hint message
19
- * [--field-font-size] - Set a custom font size for the field's value and placeholder
19
+ * [--field-font-size] - Set a custom font size for the field's value and placeholder, for every size
20
+ * [--field-line-height] - Set a custom line height for the field's value and placeholder, for every size
20
21
  * [--field-label-font-size] - Set a custom font size for the label (see label.styles.ts)
21
22
  * [--field-message-font-size] - Set a custom font size for the hint, error and instructions (see form-labels.styles.ts)
22
23
  * [--field-focus-outline-color] - Set a custom color to the focus outline
@@ -43,22 +44,50 @@ const base = css `
43
44
  --field-focus-outline-color,
44
45
  var(--eun-color-primary-500, #3d6fff)
45
46
  );
46
- --_borderRadius: var(
47
- --field-border-radius,
48
- var(--eun-border-radius-m, 8px)
49
- );
47
+ --_defaultBorderRadius: var(--eun-border-radius-m, 8px);
48
+ --_borderRadius: var(--field-border-radius, var(--_defaultBorderRadius));
49
+ --_defaultPaddingInline: var(--eun-space-s, 8px);
50
+ --_defaultPaddingBlock: var(--eun-space-s, 8px);
51
+ --_defaultFontSize: var(--eun-font-size-s, 14px);
52
+ --_defaultLineHeight: 1rem;
53
+ --_paddingBlock: var(--field-padding-block, var(--_defaultPaddingBlock));
50
54
  --_padding: var(
51
55
  --field-padding,
52
- var(--field-padding-block, var(--eun-space-s, 8px))
53
- var(--field-padding-inline, var(--eun-space-s, 8px))
56
+ var(--_paddingBlock)
57
+ var(--field-padding-inline, var(--_defaultPaddingInline))
54
58
  );
59
+ --_lineHeight: var(--field-line-height, var(--_defaultLineHeight));
55
60
  --_shadow: var(--field-shadow, none);
56
61
  font-family: var(--eun-font-family, "Mulish", sans-serif);
57
- font-size: var(--field-font-size, var(--eun-font-size-s, 14px));
62
+ font-size: var(--field-font-size, var(--_defaultFontSize));
58
63
  display: block;
59
64
  width: 100%;
60
65
  outline: none;
61
66
  }
67
+ :host([rounded]) {
68
+ --_defaultBorderRadius: var(--eun-border-radius-xl, 999px);
69
+ --_defaultPaddingInline: var(--eun-space-m, 16px);
70
+ }
71
+ :host([size="xs"]) {
72
+ --_defaultFontSize: var(--eun-font-size-xs, 10px);
73
+ --_defaultPaddingBlock: var(--eun-space-xxs, 1.6px);
74
+ --_defaultLineHeight: 10px;
75
+ }
76
+ :host([size="s"]) {
77
+ --_defaultFontSize: var(--eun-font-size-xs, 10px);
78
+ --_defaultPaddingBlock: calc(var(--eun-space-s, 8px) / 2);
79
+ --_defaultLineHeight: 10px;
80
+ }
81
+ :host([size="l"]) {
82
+ --_defaultFontSize: var(--eun-font-size-m, 16px);
83
+ --_defaultPaddingBlock: calc(var(--eun-space-s, 8px) * 1.25);
84
+ --_defaultLineHeight: 1.1rem;
85
+ }
86
+ :host([size="xl"]) {
87
+ --_defaultFontSize: var(--eun-font-size-l, 1.3rem);
88
+ --_defaultPaddingBlock: calc(var(--eun-space-s, 8px) * 1.5);
89
+ --_defaultLineHeight: 1.3rem;
90
+ }
62
91
  #wrapper {
63
92
  display: flex;
64
93
  flex-direction: column;
@@ -77,6 +106,7 @@ const base = css `
77
106
  border: var(--eun-border-width-m, 1.5px) solid var(--_borderColor);
78
107
  border-radius: var(--_borderRadius);
79
108
  padding: var(--_padding);
109
+ line-height: var(--_lineHeight);
80
110
  outline: 1px solid transparent;
81
111
  box-shadow: var(--_shadow);
82
112
  box-sizing: border-box;
@@ -85,6 +115,12 @@ const base = css `
85
115
  outline-color var(--eun-duration-s, 150ms) var(--eun-easing-default, ease);
86
116
  appearance: none;
87
117
  }
118
+ input#field,
119
+ button#field {
120
+ box-sizing: content-box;
121
+ min-width: 0;
122
+ height: var(--_lineHeight);
123
+ }
88
124
  #field::placeholder {
89
125
  color: var(--_placeholderColor);
90
126
  }
@@ -181,6 +217,7 @@ const base = css `
181
217
  }
182
218
  #readonly-display {
183
219
  padding: var(--_padding);
220
+ line-height: var(--_lineHeight);
184
221
  border: var(--eun-border-width-m, 1.5px) solid transparent;
185
222
  border-radius: var(--_borderRadius);
186
223
  box-sizing: border-box;
@@ -18,6 +18,7 @@ import { css } from "lit";
18
18
  *
19
19
  * Custom css variables:
20
20
  * [--field-listbox-max-height=260px] - Set a custom maximum height for the dropdown panel, past which it scrolls
21
+ * [--field-listbox-border-radius] - Set a custom corner radius for the dropdown panel, independent of --field-border-radius
21
22
  * [--field-listbox-transition-duration=200ms] - Set a custom duration for the dropdown panel's open/close animation (played in JS — see each consumer's own `playListboxOpenAnimation`/`playListboxCloseAnimation`), disabled entirely by the `no-animation` attribute (`eun-select` only) or `prefers-reduced-motion: reduce`
22
23
  * [--field-match-color] - Set a custom color for the matched search substring, highlighted with `<mark>`
23
24
  * [--field-match-background] - Set a custom background for the matched search substring, none by default
@@ -43,7 +44,10 @@ const listbox = css `
43
44
  color: var(--_textColor);
44
45
  background: var(--eun-surface-color, #ffffff);
45
46
  border: var(--eun-border-width-m, 1.5px) solid var(--_borderColor);
46
- border-radius: var(--_borderRadius);
47
+ border-radius: var(
48
+ --field-listbox-border-radius,
49
+ var(--eun-border-radius-m, 8px)
50
+ );
47
51
  box-shadow: var(
48
52
  --eun-shadow-m,
49
53
  0 10px 15px -3px rgba(0, 0, 0, 0.1),
@@ -89,7 +93,17 @@ const listbox = css `
89
93
  text-align: center;
90
94
  color: var(--_placeholderColor);
91
95
  }
96
+ #listbox li.option-group {
97
+ padding: 0;
98
+ cursor: default;
99
+ }
100
+ #listbox .group-options {
101
+ margin: 0;
102
+ padding: 0;
103
+ list-style: none;
104
+ }
92
105
  #listbox .group-label {
106
+ padding: var(--eun-space-s, 8px) var(--eun-space-m, 16px);
93
107
  cursor: default;
94
108
  padding-block-end: var(--eun-space-xxs, 1.6px);
95
109
  font-size: var(--eun-font-size-xs, 12px);
@@ -46,6 +46,7 @@ declare const EunomiaSliderMixinBase: Constructor<EunomiaSliderBase>;
46
46
  * @prop {boolean} [readonly=false] - Whether the field is read only
47
47
  * @prop {boolean} [required=false] - Present for API consistency with every other field, but inert here, since a slider's value can never be empty the way a text field's can
48
48
  * @prop {boolean} [hideError=false] - Whether the errors are hidden. The hint stays visible
49
+ * @prop {boolean} [invalid=false] - Shows the field as invalid without any message, for an error displayed elsewhere
49
50
  * @prop {string} [error] - An error computed outside the field, by the form or by the server. While set, the field is invalid and shows this message right away
50
51
  * @attr {boolean} [hide-error=false] - Whether the errors are hidden
51
52
  * @prop {boolean} [hideTooltip=false] - Hides the floating value bubble that otherwise appears above the thumb while dragging or focused
@@ -178,14 +179,6 @@ export declare class EunomiaSlider extends EunomiaSliderMixinBase {
178
179
  private hasFocus;
179
180
  connectedCallback(): void;
180
181
  disconnectedCallback(): void;
181
- /**
182
- * Redirects focus to the native field whenever the host itself receives
183
- * it — the same pattern `eun-counter`/`eun-input` use, so the host stays
184
- * in the tab order (`DisabledMixin`) rather than excluded via
185
- * `tabindex="-1"`, which would break Tab from reaching the field at all.
186
- * @private
187
- */
188
- private readonly handleHostFocus;
189
182
  /**
190
183
  * The value a native `<input type="range">` with no `value` attribute
191
184
  * resolves to on its own.
@@ -243,6 +236,12 @@ export declare class EunomiaSlider extends EunomiaSliderMixinBase {
243
236
  * @private
244
237
  */
245
238
  private get tickValues();
239
+ /**
240
+ * The host is never a tab stop of its own : sequential navigation goes
241
+ * straight to the controls inside, in both directions, and
242
+ * {@link focus} covers a direct call on the host.
243
+ */
244
+ protected get hostTabStop(): boolean;
246
245
  /**
247
246
  * Returns the field element to focus/anchor on validation errors.
248
247
  *
@@ -58,6 +58,7 @@ const EunomiaSliderMixinBase = FormLabelMixin(ReadonlyMixin(FormMixin(Base)));
58
58
  * @prop {boolean} [readonly=false] - Whether the field is read only
59
59
  * @prop {boolean} [required=false] - Present for API consistency with every other field, but inert here, since a slider's value can never be empty the way a text field's can
60
60
  * @prop {boolean} [hideError=false] - Whether the errors are hidden. The hint stays visible
61
+ * @prop {boolean} [invalid=false] - Shows the field as invalid without any message, for an error displayed elsewhere
61
62
  * @prop {string} [error] - An error computed outside the field, by the form or by the server. While set, the field is invalid and shows this message right away
62
63
  * @attr {boolean} [hide-error=false] - Whether the errors are hidden
63
64
  * @prop {boolean} [hideTooltip=false] - Hides the floating value bubble that otherwise appears above the thumb while dragging or focused
@@ -133,16 +134,6 @@ let EunomiaSlider = class EunomiaSlider extends EunomiaSliderMixinBase {
133
134
  * @internal
134
135
  */
135
136
  this.hasFocus = false;
136
- /**
137
- * Redirects focus to the native field whenever the host itself receives
138
- * it — the same pattern `eun-counter`/`eun-input` use, so the host stays
139
- * in the tab order (`DisabledMixin`) rather than excluded via
140
- * `tabindex="-1"`, which would break Tab from reaching the field at all.
141
- * @private
142
- */
143
- this.handleHostFocus = () => {
144
- this.fieldEl?.focus();
145
- };
146
137
  /**
147
138
  * Updates the value from dragging or a keyboard-driven native step, and
148
139
  * notifies consumers — fires on every native `input` event, so live and
@@ -256,10 +247,8 @@ let EunomiaSlider = class EunomiaSlider extends EunomiaSliderMixinBase {
256
247
  connectedCallback() {
257
248
  super.connectedCallback?.();
258
249
  this.value ??= this.clamp(this.defaultRangeValue);
259
- this.addEventListener("focus", this.handleHostFocus);
260
250
  }
261
251
  disconnectedCallback() {
262
- this.removeEventListener("focus", this.handleHostFocus);
263
252
  window.removeEventListener("pointerup", this.handlePointerUp);
264
253
  window.removeEventListener("pointercancel", this.handlePointerUp);
265
254
  super.disconnectedCallback?.();
@@ -361,6 +350,14 @@ let EunomiaSlider = class EunomiaSlider extends EunomiaSliderMixinBase {
361
350
  values.push(this.max);
362
351
  return values;
363
352
  }
353
+ /**
354
+ * The host is never a tab stop of its own : sequential navigation goes
355
+ * straight to the controls inside, in both directions, and
356
+ * {@link focus} covers a direct call on the host.
357
+ */
358
+ get hostTabStop() {
359
+ return false;
360
+ }
364
361
  /**
365
362
  * Returns the field element to focus/anchor on validation errors.
366
363
  *
@@ -39,6 +39,7 @@ declare const EunomiaSwitchMixinBase: Constructor<EunomiaSwitchBase>;
39
39
  * @prop {boolean} [hideIcon=false] - Whether the icon inside the thumb is hidden
40
40
  * @attr {boolean} [hide-icon=false] - Whether the icon inside the thumb is hidden
41
41
  * @prop {boolean} [hideError=false] - Whether the errors are hidden. The hint stays visible
42
+ * @prop {boolean} [invalid=false] - Shows the field as invalid without any message, for an error displayed elsewhere
42
43
  * @prop {string} [error] - An error computed outside the field, by the form or by the server. While set, the field is invalid and shows this message right away
43
44
  * @attr {boolean} [hide-error=false] - Whether the error message is hidden
44
45
  * @prop {boolean} [required=false] - Whether the switch must be turned on to be valid
@@ -44,6 +44,7 @@ const EunomiaSwitchMixinBase = CheckMixin(ReadonlyMixin(FormMixin(DisabledMixin(
44
44
  * @prop {boolean} [hideIcon=false] - Whether the icon inside the thumb is hidden
45
45
  * @attr {boolean} [hide-icon=false] - Whether the icon inside the thumb is hidden
46
46
  * @prop {boolean} [hideError=false] - Whether the errors are hidden. The hint stays visible
47
+ * @prop {boolean} [invalid=false] - Shows the field as invalid without any message, for an error displayed elsewhere
47
48
  * @prop {string} [error] - An error computed outside the field, by the form or by the server. While set, the field is invalid and shows this message right away
48
49
  * @attr {boolean} [hide-error=false] - Whether the error message is hidden
49
50
  * @prop {boolean} [required=false] - Whether the switch must be turned on to be valid