@eunomia/elements 1.0.0-beta.5 → 1.0.0-beta.7

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 (516) hide show
  1. package/README.md +2 -2
  2. package/dist/breakpoints.d.ts +37 -10
  3. package/dist/breakpoints.js +38 -10
  4. package/dist/cdn/components/chunks/{chunk-MMLIPCOY.js → chunk-22D3SRFR.js} +1 -1
  5. package/dist/cdn/components/chunks/chunk-36KLGY6U.js +209 -0
  6. package/dist/cdn/components/chunks/chunk-3BMACIDO.js +1 -0
  7. package/dist/cdn/components/chunks/{chunk-IDKZKLJR.js → chunk-3PNGQEG4.js} +24 -11
  8. package/dist/cdn/components/chunks/{chunk-NBIENHLV.js → chunk-5XPOGBPL.js} +18 -18
  9. package/dist/cdn/components/chunks/chunk-624VJYNA.js +1 -0
  10. package/dist/cdn/components/chunks/chunk-62RLISRD.js +1 -0
  11. package/dist/cdn/components/chunks/{chunk-6ETDXUH2.js → chunk-6FYW5TQU.js} +7 -7
  12. package/dist/cdn/components/chunks/chunk-AK2DIJX7.js +1 -0
  13. package/dist/cdn/components/chunks/chunk-B5XMGWM7.js +10 -0
  14. package/dist/cdn/components/chunks/chunk-BKZGTCMF.js +1 -0
  15. package/dist/cdn/components/chunks/{chunk-GW3VP2L7.js → chunk-BO3JOEWM.js} +1 -1
  16. package/dist/cdn/components/chunks/chunk-BVASCT2V.js +109 -0
  17. package/dist/cdn/components/chunks/{chunk-DKOPI7QA.js → chunk-DGI7TKCU.js} +83 -68
  18. package/dist/cdn/components/chunks/chunk-EUWUDCBZ.js +1 -0
  19. package/dist/cdn/components/chunks/{chunk-P32B7BFD.js → chunk-FF3I7C3C.js} +15 -15
  20. package/dist/cdn/components/chunks/{chunk-74AOAB4X.js → chunk-FOILAXLL.js} +6 -5
  21. package/dist/cdn/components/chunks/{chunk-LGLQ36QB.js → chunk-GDBPWZN6.js} +1 -1
  22. package/dist/cdn/components/chunks/chunk-GVS6IUKC.js +1 -0
  23. package/dist/cdn/components/chunks/chunk-GWLD2I3P.js +8 -0
  24. package/dist/cdn/components/chunks/{chunk-JRGM3W7I.js → chunk-I4ERDXSM.js} +9 -4
  25. package/dist/cdn/components/chunks/{chunk-AIS3UICU.js → chunk-J3SZBXM6.js} +11 -7
  26. package/dist/cdn/components/chunks/{chunk-5XJGYXW7.js → chunk-LVKMAHMU.js} +11 -1
  27. package/dist/cdn/components/chunks/{chunk-SD2WHGPF.js → chunk-MQQJ6DID.js} +1 -1
  28. package/dist/cdn/components/chunks/{chunk-A4EQSU36.js → chunk-O7PHBLH2.js} +1 -1
  29. package/dist/cdn/components/chunks/chunk-PD62MBOJ.js +1 -0
  30. package/dist/cdn/components/chunks/{chunk-5EVP7YNE.js → chunk-PPCHQG7P.js} +1 -1
  31. package/dist/cdn/components/chunks/{chunk-MPQP4R54.js → chunk-PXF554MD.js} +10 -9
  32. package/dist/cdn/components/chunks/chunk-QL5GSW2A.js +1 -0
  33. package/dist/cdn/components/chunks/{chunk-5XJLIHAU.js → chunk-QXQ25SQS.js} +24 -20
  34. package/dist/cdn/components/chunks/chunk-SMTIDNGW.js +1 -0
  35. package/dist/cdn/components/chunks/{chunk-PED5ATYN.js → chunk-SVGWCKWT.js} +2 -2
  36. package/dist/cdn/components/chunks/{chunk-2XASWWKR.js → chunk-TFTRCIIK.js} +9 -8
  37. package/dist/cdn/components/chunks/chunk-TLBXTBMM.js +46 -0
  38. package/dist/cdn/components/chunks/chunk-UVHVQRPT.js +1 -0
  39. package/dist/cdn/components/chunks/{chunk-L65WUTXM.js → chunk-UYZR4JXZ.js} +12 -7
  40. package/dist/cdn/components/chunks/chunk-VG6NAAIV.js +1 -0
  41. package/dist/cdn/components/chunks/chunk-VJCNHMQZ.js +10 -0
  42. package/dist/cdn/components/chunks/chunk-WW4BTWMH.js +1 -0
  43. package/dist/cdn/components/chunks/{chunk-XH6NREVZ.js → chunk-YITWLCD3.js} +1 -1
  44. package/dist/cdn/components/chunks/{chunk-OW7XKDCH.js → chunk-Z3OFIE7S.js} +16 -16
  45. package/dist/cdn/components/chunks/{chunk-BQHYZB2W.js → chunk-ZBN4HTWP.js} +1 -1
  46. package/dist/cdn/components/eun-alert.js +33 -18
  47. package/dist/cdn/components/eun-animate.js +14 -10
  48. package/dist/cdn/components/eun-badge.js +2 -2
  49. package/dist/cdn/components/eun-breadcrumb.js +25 -41
  50. package/dist/cdn/components/eun-button.js +1 -1
  51. package/dist/cdn/components/eun-calendar.js +67 -65
  52. package/dist/cdn/components/eun-card.js +34 -19
  53. package/dist/cdn/components/eun-carousel.js +76 -42
  54. package/dist/cdn/components/eun-check-card.js +13 -6
  55. package/dist/cdn/components/eun-checkbox-list.js +11 -8
  56. package/dist/cdn/components/eun-checkbox.js +1 -1
  57. package/dist/cdn/components/eun-chip.js +3 -3
  58. package/dist/cdn/components/eun-collapse.js +56 -27
  59. package/dist/cdn/components/eun-color-picker.js +79 -86
  60. package/dist/cdn/components/eun-counter.js +16 -15
  61. package/dist/cdn/components/eun-date-picker.js +71 -67
  62. package/dist/cdn/components/eun-description-list.js +152 -0
  63. package/dist/cdn/components/eun-divider.js +3 -3
  64. package/dist/cdn/components/eun-drawer.js +34 -20
  65. package/dist/cdn/components/eun-dropdown-button.js +1 -1
  66. package/dist/cdn/components/eun-dropdown-item.js +6 -5
  67. package/dist/cdn/components/eun-fab.js +17 -16
  68. package/dist/cdn/components/eun-icon.js +1 -1
  69. package/dist/cdn/components/eun-image-card.js +79 -22
  70. package/dist/cdn/components/eun-image-carousel.js +92 -47
  71. package/dist/cdn/components/eun-infinite-list.js +23 -11
  72. package/dist/cdn/components/eun-input-file.js +20 -19
  73. package/dist/cdn/components/eun-input-phone.js +17 -16
  74. package/dist/cdn/components/eun-input.js +1 -1
  75. package/dist/cdn/components/eun-label.js +4 -4
  76. package/dist/cdn/components/eun-link.js +78 -29
  77. package/dist/cdn/components/eun-loader.js +1 -1
  78. package/dist/cdn/components/eun-modal.js +27 -20
  79. package/dist/cdn/components/eun-pagination.js +24 -19
  80. package/dist/cdn/components/eun-password-strength.js +19 -11
  81. package/dist/cdn/components/eun-progress-bar.js +13 -5
  82. package/dist/cdn/components/eun-radio-card.js +16 -9
  83. package/dist/cdn/components/eun-radio-list.js +12 -9
  84. package/dist/cdn/components/eun-radio.js +1 -1
  85. package/dist/cdn/components/eun-rating.js +276 -0
  86. package/dist/cdn/components/eun-scheduler-event-editor.js +10 -10
  87. package/dist/cdn/components/eun-scheduler-event.js +1 -1
  88. package/dist/cdn/components/eun-scheduler.js +27 -27
  89. package/dist/cdn/components/eun-search.js +24 -25
  90. package/dist/cdn/components/eun-select.js +32 -31
  91. package/dist/cdn/components/eun-sidebar.js +40 -24
  92. package/dist/cdn/components/eun-skeleton.js +1 -1
  93. package/dist/cdn/components/eun-slider.js +15 -14
  94. package/dist/cdn/components/eun-sliding-card.js +8 -4
  95. package/dist/cdn/components/eun-step.js +22 -10
  96. package/dist/cdn/components/eun-stepper.js +41 -30
  97. package/dist/cdn/components/eun-switch.js +10 -8
  98. package/dist/cdn/components/eun-tab-group.js +24 -19
  99. package/dist/cdn/components/eun-tab-panel.js +11 -3
  100. package/dist/cdn/components/eun-tab.js +1 -1
  101. package/dist/cdn/components/eun-table-action-bar.js +1 -1
  102. package/dist/cdn/components/eun-table.js +572 -31
  103. package/dist/cdn/components/eun-tag.js +13 -7
  104. package/dist/cdn/components/eun-textarea.js +34 -29
  105. package/dist/cdn/components/eun-time-picker.js +24 -21
  106. package/dist/cdn/components/eun-toast.js +51 -22
  107. package/dist/cdn/components/eun-toggle-group.js +57 -36
  108. package/dist/cdn/components/eun-toggle-item.js +16 -15
  109. package/dist/cdn/components/eun-toggle.js +12 -10
  110. package/dist/cdn/components/eun-toolbar.js +64 -54
  111. package/dist/cdn/components/eun-tooltip.js +30 -14
  112. package/dist/cdn/styles/breakpoints.scss +8 -0
  113. package/dist/cdn/styles/eunomia-grid.scss +6 -0
  114. package/dist/cdn/styles/eunomia-themes.css +1 -1
  115. package/dist/cdn/styles/themes/eunomia-theme.css +1 -1
  116. package/dist/cdn/styles/themes/eunomia-theme.scss +4 -3
  117. package/dist/cdn/styles/themes/mixins/eunomia-a11y-color.mixin.scss +34 -1
  118. package/dist/cdn/styles/themes/mixins/eunomia-neutrals.mixin.scss +4 -0
  119. package/dist/cdn/styles/themes/mixins/eunomia-states.mixin.scss +36 -12
  120. package/dist/cdn/styles/themes/prebuilt-themes/eunomia/eunomia-dark.mixin.scss +10 -10
  121. package/dist/cdn/styles/themes/prebuilt-themes/eunomia/eunomia.mixin.scss +10 -10
  122. package/dist/cdn/styles/themes/prebuilt-themes/eunomia/eunomia.theme.css +1 -1
  123. package/dist/cdn/styles/themes/prebuilt-themes/eunomia/eunomia.theme.scss +3 -2
  124. package/dist/cdn/styles/themes/prebuilt-themes/fire/eunomia-fire-dark.mixin.scss +10 -10
  125. package/dist/cdn/styles/themes/prebuilt-themes/fire/eunomia-fire.mixin.scss +10 -10
  126. package/dist/cdn/styles/themes/prebuilt-themes/fire/eunomia-fire.theme.css +1 -1
  127. package/dist/cdn/styles/themes/prebuilt-themes/fire/eunomia-fire.theme.scss +3 -2
  128. package/dist/cdn/styles/themes/prebuilt-themes/forest/eunomia-forest-dark.mixin.scss +10 -10
  129. package/dist/cdn/styles/themes/prebuilt-themes/forest/eunomia-forest.mixin.scss +10 -10
  130. package/dist/cdn/styles/themes/prebuilt-themes/forest/eunomia-forest.theme.css +1 -1
  131. package/dist/cdn/styles/themes/prebuilt-themes/forest/eunomia-forest.theme.scss +3 -2
  132. package/dist/cdn/styles/themes/prebuilt-themes/gold/eunomia-gold-dark.mixin.scss +10 -10
  133. package/dist/cdn/styles/themes/prebuilt-themes/gold/eunomia-gold.mixin.scss +10 -10
  134. package/dist/cdn/styles/themes/prebuilt-themes/gold/eunomia-gold.theme.css +1 -1
  135. package/dist/cdn/styles/themes/prebuilt-themes/gold/eunomia-gold.theme.scss +3 -2
  136. package/dist/cdn/styles/themes/prebuilt-themes/ocean/eunomia-ocean-dark.mixin.scss +10 -10
  137. package/dist/cdn/styles/themes/prebuilt-themes/ocean/eunomia-ocean.mixin.scss +10 -10
  138. package/dist/cdn/styles/themes/prebuilt-themes/ocean/eunomia-ocean.theme.css +1 -1
  139. package/dist/cdn/styles/themes/prebuilt-themes/ocean/eunomia-ocean.theme.scss +3 -2
  140. package/dist/cdn/styles/themes/prebuilt-themes/salmon/eunomia-salmon-dark.mixin.scss +10 -10
  141. package/dist/cdn/styles/themes/prebuilt-themes/salmon/eunomia-salmon.mixin.scss +10 -10
  142. package/dist/cdn/styles/themes/prebuilt-themes/salmon/eunomia-salmon.theme.css +1 -1
  143. package/dist/cdn/styles/themes/prebuilt-themes/salmon/eunomia-salmon.theme.scss +3 -2
  144. package/dist/cdn/styles/themes/prebuilt-themes/violet/eunomia-violet-dark.mixin.scss +10 -10
  145. package/dist/cdn/styles/themes/prebuilt-themes/violet/eunomia-violet.mixin.scss +10 -10
  146. package/dist/cdn/styles/themes/prebuilt-themes/violet/eunomia-violet.theme.css +1 -1
  147. package/dist/cdn/styles/themes/prebuilt-themes/violet/eunomia-violet.theme.scss +3 -2
  148. package/dist/cdn/styles/tools/indexes/eunomia-media-queries.index.scss +1 -3
  149. package/dist/cdn/styles/tools/indexes/eunomia-tools.index.scss +1 -0
  150. package/dist/cdn/styles/tools/mixins/layout/eunomia-grid.mixin.scss +117 -53
  151. package/dist/cdn/styles/tools/mixins/media-queries/eunomia-media-queries.mixin.scss +69 -0
  152. package/dist/cdn/styles/tools/mixins/settings/eunomia-alpha.mixin.scss +28 -4
  153. package/dist/cdn/styles/tools/mixins/settings/eunomia-motion.mixin.scss +9 -0
  154. package/dist/cdn/styles/tools/variables/eunomia.breakpoints.scss +4 -0
  155. package/dist/components/action/button/button.d.ts +9 -3
  156. package/dist/components/action/button/button.js +10 -4
  157. package/dist/components/action/button/button.styles.js +61 -41
  158. package/dist/components/action/dropdown-button/dropdown-button.d.ts +2 -2
  159. package/dist/components/action/dropdown-button/dropdown-button.js +21 -15
  160. package/dist/components/action/dropdown-button/dropdown-button.styles.js +3 -2
  161. package/dist/components/action/dropdown-button/dropdown-item.js +5 -6
  162. package/dist/components/action/dropdown-button/dropdown-item.styles.js +3 -2
  163. package/dist/components/action/fab/fab.styles.js +14 -13
  164. package/dist/components/action/link/link.d.ts +7 -3
  165. package/dist/components/action/link/link.js +11 -7
  166. package/dist/components/action/link/link.styles.js +66 -15
  167. package/dist/components/action/shared-styles/button-palette.styles.js +15 -15
  168. package/dist/components/action/toggle/toggle-group.d.ts +2 -0
  169. package/dist/components/action/toggle/toggle-group.js +6 -4
  170. package/dist/components/action/toggle/toggle-group.styles.d.ts +2 -0
  171. package/dist/components/action/toggle/toggle-group.styles.js +46 -23
  172. package/dist/components/action/toggle/toggle-item.styles.js +13 -12
  173. package/dist/components/action/toggle/toggle.d.ts +2 -0
  174. package/dist/components/action/toggle/toggle.js +3 -1
  175. package/dist/components/action/toggle/toggle.styles.d.ts +2 -0
  176. package/dist/components/action/toggle/toggle.styles.js +12 -8
  177. package/dist/components/alert/alert/alert.d.ts +11 -7
  178. package/dist/components/alert/alert/alert.js +13 -14
  179. package/dist/components/alert/alert/alert.styles.js +32 -15
  180. package/dist/components/alert/drawer/drawer.d.ts +8 -6
  181. package/dist/components/alert/drawer/drawer.js +12 -14
  182. package/dist/components/alert/drawer/drawer.styles.js +26 -10
  183. package/dist/components/alert/modal/modal.d.ts +13 -11
  184. package/dist/components/alert/modal/modal.js +17 -27
  185. package/dist/components/alert/modal/modal.styles.js +16 -7
  186. package/dist/components/alert/toast/toast.d.ts +9 -5
  187. package/dist/components/alert/toast/toast.js +11 -13
  188. package/dist/components/alert/toast/toast.styles.js +49 -18
  189. package/dist/components/content/badge/badge.js +2 -2
  190. package/dist/components/content/card/card.d.ts +7 -3
  191. package/dist/components/content/card/card.js +8 -4
  192. package/dist/components/content/card/card.styles.js +28 -13
  193. package/dist/components/content/card/image-card.d.ts +60 -6
  194. package/dist/components/content/card/image-card.js +120 -11
  195. package/dist/components/content/card/image-card.styles.js +66 -15
  196. package/dist/components/content/card/sliding-card.d.ts +2 -0
  197. package/dist/components/content/card/sliding-card.js +2 -0
  198. package/dist/components/content/card/sliding-card.styles.js +5 -1
  199. package/dist/components/content/chip/chip.d.ts +4 -4
  200. package/dist/components/content/chip/chip.js +8 -8
  201. package/dist/components/content/collapse/collapse.d.ts +10 -1
  202. package/dist/components/content/collapse/collapse.js +12 -2
  203. package/dist/components/content/collapse/collapse.styles.d.ts +10 -1
  204. package/dist/components/content/collapse/collapse.styles.js +56 -18
  205. package/dist/components/content/description-list/description-list.d.ts +87 -0
  206. package/dist/components/content/description-list/description-list.js +107 -0
  207. package/dist/components/content/description-list/description-list.styles.d.ts +1 -0
  208. package/dist/components/content/description-list/description-list.styles.js +185 -0
  209. package/dist/components/content/icon/icon.d.ts +5 -0
  210. package/dist/components/content/icon/icon.js +5 -0
  211. package/dist/components/content/icon/icon.style.d.ts +2 -0
  212. package/dist/components/content/icon/icon.style.js +8 -1
  213. package/dist/components/content/image-carousel/image-carousel.d.ts +30 -19
  214. package/dist/components/content/image-carousel/image-carousel.js +58 -55
  215. package/dist/components/content/image-carousel/image-carousel.styles.js +69 -30
  216. package/dist/components/content/password-strength/password-strength.d.ts +21 -6
  217. package/dist/components/content/password-strength/password-strength.js +37 -16
  218. package/dist/components/content/password-strength/password-strength.styles.js +9 -1
  219. package/dist/components/content/progress-bar/progress-bar.styles.js +12 -4
  220. package/dist/components/content/shared-styles/card-link.styles.js +4 -3
  221. package/dist/components/content/shared-styles/tone-surface.styles.d.ts +5 -0
  222. package/dist/components/content/shared-styles/tone-surface.styles.js +19 -14
  223. package/dist/components/content/tag/tag.d.ts +4 -0
  224. package/dist/components/content/tag/tag.js +6 -2
  225. package/dist/components/content/tag/tag.styles.js +14 -4
  226. package/dist/components/content/tooltip/tooltip.d.ts +3 -2
  227. package/dist/components/content/tooltip/tooltip.js +12 -19
  228. package/dist/components/content/tooltip/tooltip.styles.js +25 -7
  229. package/dist/components/form/checkbox/check-card.d.ts +5 -1
  230. package/dist/components/form/checkbox/check-card.js +5 -1
  231. package/dist/components/form/checkbox/check-card.styles.js +13 -4
  232. package/dist/components/form/checkbox/checkbox-list.d.ts +21 -1
  233. package/dist/components/form/checkbox/checkbox-list.js +50 -17
  234. package/dist/components/form/checkbox/checkbox.d.ts +5 -1
  235. package/dist/components/form/checkbox/checkbox.js +7 -2
  236. package/dist/components/form/checkbox/checkbox.styles.js +5 -4
  237. package/dist/components/form/color-picker/color-picker.d.ts +48 -29
  238. package/dist/components/form/color-picker/color-picker.js +85 -71
  239. package/dist/components/form/color-picker/color-picker.styles.js +7 -6
  240. package/dist/components/form/counter/counter.d.ts +26 -19
  241. package/dist/components/form/counter/counter.js +64 -63
  242. package/dist/components/form/counter/counter.styles.js +5 -4
  243. package/dist/components/form/date-picker/date-picker.d.ts +64 -39
  244. package/dist/components/form/date-picker/date-picker.js +107 -96
  245. package/dist/components/form/date-picker/date-picker.styles.js +8 -5
  246. package/dist/components/form/input/input.d.ts +45 -40
  247. package/dist/components/form/input/input.js +93 -111
  248. package/dist/components/form/input-file/input-file.d.ts +30 -14
  249. package/dist/components/form/input-file/input-file.js +43 -40
  250. package/dist/components/form/input-file/input-file.styles.js +7 -6
  251. package/dist/components/form/input-phone/input-phone.d.ts +30 -7
  252. package/dist/components/form/input-phone/input-phone.js +54 -30
  253. package/dist/components/form/input-phone/input-phone.styles.js +4 -4
  254. package/dist/components/form/label/label.styles.js +3 -3
  255. package/dist/components/form/radio/radio-card.d.ts +6 -2
  256. package/dist/components/form/radio/radio-card.js +6 -2
  257. package/dist/components/form/radio/radio-card.styles.js +14 -5
  258. package/dist/components/form/radio/radio-list.d.ts +28 -9
  259. package/dist/components/form/radio/radio-list.js +61 -32
  260. package/dist/components/form/radio/radio.d.ts +6 -2
  261. package/dist/components/form/radio/radio.js +6 -2
  262. package/dist/components/form/radio/radio.styles.js +4 -4
  263. package/dist/components/form/rating/rating.d.ts +349 -0
  264. package/dist/components/form/rating/rating.js +665 -0
  265. package/dist/components/form/rating/rating.styles.d.ts +1 -0
  266. package/dist/components/form/rating/rating.styles.js +213 -0
  267. package/dist/components/form/search/search.d.ts +10 -9
  268. package/dist/components/form/search/search.js +29 -56
  269. package/dist/components/form/search/search.styles.js +5 -4
  270. package/dist/components/form/select/select.d.ts +32 -12
  271. package/dist/components/form/select/select.js +74 -59
  272. package/dist/components/form/select/select.styles.js +3 -2
  273. package/dist/components/form/shared-styles/card.styles.js +5 -4
  274. package/dist/components/form/shared-styles/field.styles.js +16 -6
  275. package/dist/components/form/shared-styles/form-labels.styles.js +1 -1
  276. package/dist/components/form/shared-styles/listbox.styles.js +10 -0
  277. package/dist/components/form/slider/slider.d.ts +11 -9
  278. package/dist/components/form/slider/slider.js +14 -14
  279. package/dist/components/form/slider/slider.styles.js +8 -7
  280. package/dist/components/form/switch/switch.d.ts +5 -1
  281. package/dist/components/form/switch/switch.js +5 -1
  282. package/dist/components/form/switch/switch.styles.js +7 -5
  283. package/dist/components/form/textarea/textarea.d.ts +96 -24
  284. package/dist/components/form/textarea/textarea.js +206 -51
  285. package/dist/components/form/time-picker/time-picker-columns.d.ts +2 -2
  286. package/dist/components/form/time-picker/time-picker-columns.js +8 -8
  287. package/dist/components/form/time-picker/time-picker-columns.styles.js +4 -2
  288. package/dist/components/form/time-picker/time-picker-list.styles.js +2 -1
  289. package/dist/components/form/time-picker/time-picker.d.ts +30 -10
  290. package/dist/components/form/time-picker/time-picker.js +81 -64
  291. package/dist/components/form/time-picker/time-picker.styles.js +4 -3
  292. package/dist/components/layout/animate/animate.d.ts +37 -15
  293. package/dist/components/layout/animate/animate.js +36 -16
  294. package/dist/components/layout/animate/animate.styles.js +11 -18
  295. package/dist/components/layout/divider/divider.js +1 -1
  296. package/dist/components/layout/divider/divider.styles.js +1 -1
  297. package/dist/components/layout/infinite-list/infinite-list.d.ts +33 -10
  298. package/dist/components/layout/infinite-list/infinite-list.js +115 -18
  299. package/dist/components/layout/infinite-list/infinite-list.styles.d.ts +3 -0
  300. package/dist/components/layout/infinite-list/infinite-list.styles.js +17 -5
  301. package/dist/components/loader/loader/loader.js +2 -2
  302. package/dist/components/loader/loader/loader.styles.js +17 -13
  303. package/dist/components/loader/skeleton/skeleton.js +1 -1
  304. package/dist/components/navigation/breadcrumb/breadcrumb.d.ts +31 -45
  305. package/dist/components/navigation/breadcrumb/breadcrumb.js +111 -77
  306. package/dist/components/navigation/breadcrumb/breadcrumb.styles.d.ts +3 -0
  307. package/dist/components/navigation/breadcrumb/breadcrumb.styles.js +22 -26
  308. package/dist/components/navigation/carousel/carousel.d.ts +55 -11
  309. package/dist/components/navigation/carousel/carousel.js +101 -43
  310. package/dist/components/navigation/carousel/carousel.styles.js +65 -22
  311. package/dist/components/navigation/pagination/pagination.d.ts +23 -21
  312. package/dist/components/navigation/pagination/pagination.js +30 -53
  313. package/dist/components/navigation/pagination/pagination.styles.js +8 -3
  314. package/dist/components/navigation/sidebar/sidebar.d.ts +17 -13
  315. package/dist/components/navigation/sidebar/sidebar.js +23 -33
  316. package/dist/components/navigation/sidebar/sidebar.styles.js +32 -14
  317. package/dist/components/navigation/stepper/step.js +9 -8
  318. package/dist/components/navigation/stepper/step.styles.js +16 -5
  319. package/dist/components/navigation/stepper/stepper.js +12 -5
  320. package/dist/components/navigation/stepper/stepper.styles.js +16 -5
  321. package/dist/components/navigation/tabs/tab/tab.d.ts +11 -0
  322. package/dist/components/navigation/tabs/tab/tab.js +11 -0
  323. package/dist/components/navigation/tabs/tab/tab.styles.js +22 -16
  324. package/dist/components/navigation/tabs/tab-group/tab-group.js +9 -10
  325. package/dist/components/navigation/tabs/tab-group/tab-group.styles.js +21 -16
  326. package/dist/components/navigation/tabs/tab-panel/tab-panel.d.ts +4 -0
  327. package/dist/components/navigation/tabs/tab-panel/tab-panel.js +4 -0
  328. package/dist/components/navigation/tabs/tab-panel/tab-panel.styles.js +18 -1
  329. package/dist/components/navigation/toolbar/toolbar.d.ts +30 -62
  330. package/dist/components/navigation/toolbar/toolbar.js +43 -105
  331. package/dist/components/navigation/toolbar/toolbar.styles.js +59 -36
  332. package/dist/events/table-row-click.event.d.ts +5 -4
  333. package/dist/events/table-row-click.event.js +10 -5
  334. package/dist/features/scheduler/calendar/calendar.d.ts +6 -6
  335. package/dist/features/scheduler/calendar/calendar.js +7 -6
  336. package/dist/features/scheduler/calendar/calendar.styles.js +8 -6
  337. package/dist/features/scheduler/scheduler/scheduler.d.ts +8 -8
  338. package/dist/features/scheduler/scheduler/scheduler.js +24 -47
  339. package/dist/features/scheduler/scheduler/scheduler.styles.js +6 -4
  340. package/dist/features/scheduler/scheduler-event/scheduler-event.d.ts +2 -0
  341. package/dist/features/scheduler/scheduler-event/scheduler-event.js +5 -3
  342. package/dist/features/scheduler/scheduler-event/scheduler-event.styles.js +11 -5
  343. package/dist/features/scheduler/scheduler-event-editor/scheduler-event-editor.d.ts +6 -4
  344. package/dist/features/scheduler/scheduler-event-editor/scheduler-event-editor.js +6 -7
  345. package/dist/features/scheduler/shared/scheduler-hour-grid.styles.js +3 -3
  346. package/dist/features/scheduler/shared/scheduler-month-view.styles.js +2 -2
  347. package/dist/features/scheduler/shared/scheduler-year-view.styles.js +2 -2
  348. package/dist/features/table/table/table-native.styles.d.ts +28 -0
  349. package/dist/features/table/table/table-native.styles.js +502 -0
  350. package/dist/features/table/table/table.d.ts +342 -294
  351. package/dist/features/table/table/table.js +820 -546
  352. package/dist/features/table/table/table.styles.js +31 -17
  353. package/dist/features/table/table/table.types.d.ts +11 -20
  354. package/dist/features/table/table/table.utils.d.ts +6 -36
  355. package/dist/features/table/table/table.utils.js +16 -65
  356. package/dist/features/table/table-action-bar/table-action-bar.d.ts +33 -16
  357. package/dist/features/table/table-action-bar/table-action-bar.js +15 -22
  358. package/dist/features/table/table-action-bar/table-action-bar.styles.js +15 -3
  359. package/dist/i18n/en.d.ts +99 -0
  360. package/dist/i18n/en.js +99 -0
  361. package/dist/i18n/fr.js +103 -2
  362. package/dist/index.d.ts +6 -10
  363. package/dist/index.js +7 -10
  364. package/dist/mixins/button.mixin.js +3 -2
  365. package/dist/mixins/check.mixin.js +15 -15
  366. package/dist/mixins/disabled.mixin.d.ts +5 -0
  367. package/dist/mixins/disabled.mixin.js +21 -1
  368. package/dist/mixins/editable.mixin.js +28 -5
  369. package/dist/mixins/field-appearance.mixin.js +3 -2
  370. package/dist/mixins/form.mixin.d.ts +21 -1
  371. package/dist/mixins/form.mixin.js +156 -27
  372. package/dist/mixins/localizable.mixin.d.ts +1 -1
  373. package/dist/mixins/localizable.mixin.js +1 -1
  374. package/dist/mixins/radio.mixin.js +15 -15
  375. package/dist/mixins/readonly.mixin.d.ts +2 -1
  376. package/dist/mixins/readonly.mixin.js +10 -3
  377. package/dist/mixins/validators.mixin.d.ts +7 -1
  378. package/dist/mixins/validators.mixin.js +36 -17
  379. package/dist/ssr/alert-ssr.css +187 -0
  380. package/dist/ssr/animate-ssr.css +3 -2
  381. package/dist/ssr/badge-ssr.css +67 -0
  382. package/dist/ssr/breadcrumb-ssr.css +41 -0
  383. package/dist/ssr/button-ssr.css +319 -0
  384. package/dist/ssr/card-ssr.css +196 -0
  385. package/dist/ssr/carousel-ssr.css +238 -0
  386. package/dist/ssr/checkbox-ssr.css +67 -0
  387. package/dist/ssr/chip-ssr.css +242 -0
  388. package/dist/ssr/collapse-ssr.css +151 -0
  389. package/dist/ssr/description-list-ssr.css +150 -0
  390. package/dist/ssr/field-ssr.css +163 -0
  391. package/dist/ssr/icon-ssr.css +266 -0
  392. package/dist/ssr/image-carousel-ssr.css +24 -0
  393. package/dist/ssr/links-ssr.css +8 -2
  394. package/dist/ssr/pagination-ssr.css +4 -0
  395. package/dist/ssr/rating-ssr.css +254 -0
  396. package/dist/ssr/sidebar-ssr.css +9 -1
  397. package/dist/ssr/skeleton-ssr.css +63 -0
  398. package/dist/ssr/table-ssr.css +472 -0
  399. package/dist/ssr/tabs-ssr.css +129 -0
  400. package/dist/ssr/tag-ssr.css +197 -0
  401. package/dist/ssr/toggle-group-ssr.css +182 -0
  402. package/dist/ssr/toolbar-ssr.css +34 -1
  403. package/dist/utils/drag-drop.utils.js +18 -2
  404. package/dist/utils/dropdown-menu.utils.d.ts +2 -2
  405. package/dist/utils/dropdown-menu.utils.js +4 -14
  406. package/dist/utils/implicit-submission.utils.d.ts +18 -0
  407. package/dist/utils/implicit-submission.utils.js +79 -0
  408. package/dist/utils/light-dom-styles.utils.d.ts +14 -0
  409. package/dist/utils/light-dom-styles.utils.js +37 -0
  410. package/dist/utils/listbox-options.utils.d.ts +11 -0
  411. package/dist/utils/listbox-options.utils.js +41 -3
  412. package/dist/utils/media.styles.d.ts +19 -0
  413. package/dist/utils/media.styles.js +23 -0
  414. package/dist/utils/motion.utils.d.ts +40 -0
  415. package/dist/utils/motion.utils.js +51 -0
  416. package/dist/utils/theme-generator.utils.d.ts +6 -1
  417. package/dist/utils/theme-generator.utils.js +59 -20
  418. package/package.json +39 -31
  419. package/styles/breakpoints.scss +8 -0
  420. package/styles/eunomia-grid.scss +6 -0
  421. package/styles/themes/eunomia-theme.scss +4 -3
  422. package/styles/themes/mixins/eunomia-a11y-color.mixin.scss +34 -1
  423. package/styles/themes/mixins/eunomia-neutrals.mixin.scss +4 -0
  424. package/styles/themes/mixins/eunomia-states.mixin.scss +36 -12
  425. package/styles/themes/prebuilt-themes/eunomia/eunomia-dark.mixin.scss +10 -10
  426. package/styles/themes/prebuilt-themes/eunomia/eunomia.mixin.scss +10 -10
  427. package/styles/themes/prebuilt-themes/eunomia/eunomia.theme.scss +3 -2
  428. package/styles/themes/prebuilt-themes/fire/eunomia-fire-dark.mixin.scss +10 -10
  429. package/styles/themes/prebuilt-themes/fire/eunomia-fire.mixin.scss +10 -10
  430. package/styles/themes/prebuilt-themes/fire/eunomia-fire.theme.scss +3 -2
  431. package/styles/themes/prebuilt-themes/forest/eunomia-forest-dark.mixin.scss +10 -10
  432. package/styles/themes/prebuilt-themes/forest/eunomia-forest.mixin.scss +10 -10
  433. package/styles/themes/prebuilt-themes/forest/eunomia-forest.theme.scss +3 -2
  434. package/styles/themes/prebuilt-themes/gold/eunomia-gold-dark.mixin.scss +10 -10
  435. package/styles/themes/prebuilt-themes/gold/eunomia-gold.mixin.scss +10 -10
  436. package/styles/themes/prebuilt-themes/gold/eunomia-gold.theme.scss +3 -2
  437. package/styles/themes/prebuilt-themes/ocean/eunomia-ocean-dark.mixin.scss +10 -10
  438. package/styles/themes/prebuilt-themes/ocean/eunomia-ocean.mixin.scss +10 -10
  439. package/styles/themes/prebuilt-themes/ocean/eunomia-ocean.theme.scss +3 -2
  440. package/styles/themes/prebuilt-themes/salmon/eunomia-salmon-dark.mixin.scss +10 -10
  441. package/styles/themes/prebuilt-themes/salmon/eunomia-salmon.mixin.scss +10 -10
  442. package/styles/themes/prebuilt-themes/salmon/eunomia-salmon.theme.scss +3 -2
  443. package/styles/themes/prebuilt-themes/violet/eunomia-violet-dark.mixin.scss +10 -10
  444. package/styles/themes/prebuilt-themes/violet/eunomia-violet.mixin.scss +10 -10
  445. package/styles/themes/prebuilt-themes/violet/eunomia-violet.theme.scss +3 -2
  446. package/styles/tools/indexes/eunomia-media-queries.index.scss +1 -3
  447. package/styles/tools/indexes/eunomia-tools.index.scss +1 -0
  448. package/styles/tools/mixins/layout/eunomia-grid.mixin.scss +117 -53
  449. package/styles/tools/mixins/media-queries/eunomia-media-queries.mixin.scss +69 -0
  450. package/styles/tools/mixins/settings/eunomia-alpha.mixin.scss +28 -4
  451. package/styles/tools/mixins/settings/eunomia-motion.mixin.scss +9 -0
  452. package/styles/tools/variables/eunomia.breakpoints.scss +4 -0
  453. package/dist/cdn/components/chunks/chunk-32DTNR52.js +0 -1
  454. package/dist/cdn/components/chunks/chunk-A6KGFALA.js +0 -132
  455. package/dist/cdn/components/chunks/chunk-CEDHJUUH.js +0 -1
  456. package/dist/cdn/components/chunks/chunk-D2M4BV5Y.js +0 -328
  457. package/dist/cdn/components/chunks/chunk-E4IS25H7.js +0 -1
  458. package/dist/cdn/components/chunks/chunk-E74CM7UG.js +0 -66
  459. package/dist/cdn/components/chunks/chunk-EAKYD33D.js +0 -110
  460. package/dist/cdn/components/chunks/chunk-EST3M4AO.js +0 -1
  461. package/dist/cdn/components/chunks/chunk-GU6BVMFJ.js +0 -1
  462. package/dist/cdn/components/chunks/chunk-KBH5PCUO.js +0 -3
  463. package/dist/cdn/components/chunks/chunk-KVYUNKUO.js +0 -27
  464. package/dist/cdn/components/chunks/chunk-LFCXUVDO.js +0 -1
  465. package/dist/cdn/components/chunks/chunk-OAULRKHQ.js +0 -38
  466. package/dist/cdn/components/chunks/chunk-PCM7D3YF.js +0 -84
  467. package/dist/cdn/components/chunks/chunk-S2UCEWNG.js +0 -207
  468. package/dist/cdn/components/chunks/chunk-SJWRE6PW.js +0 -1
  469. package/dist/cdn/components/chunks/chunk-T4PTHUYF.js +0 -10
  470. package/dist/cdn/components/chunks/chunk-VRGRCYIO.js +0 -1
  471. package/dist/cdn/components/chunks/chunk-X2AUBZD2.js +0 -30
  472. package/dist/cdn/components/eun-breadcrumb-item.js +0 -93
  473. package/dist/cdn/components/eun-table-cell.js +0 -1
  474. package/dist/cdn/components/eun-table-column.js +0 -1
  475. package/dist/cdn/components/eun-table-header.js +0 -1
  476. package/dist/cdn/components/eun-table-item.js +0 -1
  477. package/dist/cdn/components/eun-table-skeleton-row.js +0 -1
  478. package/dist/cdn/styles/tools/mixins/media-queries/eunomia-device.mixin.scss +0 -14
  479. package/dist/cdn/styles/tools/mixins/media-queries/eunomia-gte.mixin.scss +0 -26
  480. package/dist/cdn/styles/tools/mixins/media-queries/eunomia-lte.mixin.scss +0 -26
  481. package/dist/components/navigation/breadcrumb/breadcrumb-item.d.ts +0 -77
  482. package/dist/components/navigation/breadcrumb/breadcrumb-item.js +0 -130
  483. package/dist/components/navigation/breadcrumb/breadcrumb-item.styles.d.ts +0 -6
  484. package/dist/components/navigation/breadcrumb/breadcrumb-item.styles.js +0 -78
  485. package/dist/features/table/native-table.css +0 -276
  486. package/dist/features/table/shared-styles/table-row.styles.d.ts +0 -7
  487. package/dist/features/table/shared-styles/table-row.styles.js +0 -47
  488. package/dist/features/table/shared-styles/table-shared.styles.d.ts +0 -23
  489. package/dist/features/table/shared-styles/table-shared.styles.js +0 -33
  490. package/dist/features/table/table-cell/table-cell.d.ts +0 -59
  491. package/dist/features/table/table-cell/table-cell.js +0 -73
  492. package/dist/features/table/table-cell/table-cell.styles.d.ts +0 -1
  493. package/dist/features/table/table-cell/table-cell.styles.js +0 -46
  494. package/dist/features/table/table-column/table-column.d.ts +0 -73
  495. package/dist/features/table/table-column/table-column.js +0 -89
  496. package/dist/features/table/table-column/table-column.styles.d.ts +0 -1
  497. package/dist/features/table/table-column/table-column.styles.js +0 -51
  498. package/dist/features/table/table-header/table-header.d.ts +0 -102
  499. package/dist/features/table/table-header/table-header.js +0 -165
  500. package/dist/features/table/table-header/table-header.styles.d.ts +0 -1
  501. package/dist/features/table/table-header/table-header.styles.js +0 -147
  502. package/dist/features/table/table-item/table-item.d.ts +0 -179
  503. package/dist/features/table/table-item/table-item.js +0 -291
  504. package/dist/features/table/table-item/table-item.styles.d.ts +0 -1
  505. package/dist/features/table/table-item/table-item.styles.js +0 -404
  506. package/dist/features/table/table-managed/table-managed.d.ts +0 -19
  507. package/dist/features/table/table-managed/table-managed.js +0 -128
  508. package/dist/features/table/table-skeleton-row/table-skeleton-row.d.ts +0 -46
  509. package/dist/features/table/table-skeleton-row/table-skeleton-row.js +0 -110
  510. package/dist/features/table/table-skeleton-row/table-skeleton-row.styles.d.ts +0 -12
  511. package/dist/features/table/table-skeleton-row/table-skeleton-row.styles.js +0 -65
  512. package/dist/mixins/table-row.mixin.d.ts +0 -37
  513. package/dist/mixins/table-row.mixin.js +0 -103
  514. package/styles/tools/mixins/media-queries/eunomia-device.mixin.scss +0 -14
  515. package/styles/tools/mixins/media-queries/eunomia-gte.mixin.scss +0 -26
  516. package/styles/tools/mixins/media-queries/eunomia-lte.mixin.scss +0 -26
@@ -7,6 +7,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
7
7
  import { customElement, property } from "lit/decorators.js";
8
8
  import { html, LitElement, nothing } from "lit";
9
9
  import { animateStyles } from "./animate.styles.js";
10
+ import { mediaBelow } from "../../../breakpoints.js";
10
11
  /**
11
12
  * Tag name of the animate component.
12
13
  */
@@ -31,14 +32,19 @@ const IN_VIEW_ATTR = "in-view";
31
32
  *
32
33
  * @slot [default] - The content to animate on scroll. Always present in the DOM and readable by assistive technology, regardless of viewport intersection
33
34
  * @prop {EunomiaAnimateAnimation} [animation='fade'] - Which transition to apply. None renders the content immediately, with no transition
34
- * @prop {number} [duration=600] - The transition duration, in milliseconds
35
+ * @prop {number} [duration=1000] - The transition duration, in milliseconds. Left unset, it follows --animate-duration
35
36
  * @prop {number} [delay=0] - The transition delay, in milliseconds
37
+ * @prop {number} [tabletDelay] - Overrides `delay` below the tablet breakpoint (width < 768px)
38
+ * @attr {number} [tablet-delay] - Overrides `delay` below the tablet breakpoint (width < 768px)
39
+ * @prop {number} [mobileDelay] - Overrides `delay` (and `tabletDelay`, if also set) below the mobile breakpoint (width < 600px)
40
+ * @attr {number} [mobile-delay] - Overrides `delay` (and `tabletDelay`, if also set) below the mobile breakpoint (width < 600px)
36
41
  * @prop {boolean} [once=true] - Whether the animation plays only the first time it enters the viewport, or replays every time it re-enters
37
42
  * @prop {number} [threshold=0.1] - The ratio of the element, from 0 to 1, that must be visible before the animation triggers
38
43
  * @prop {string} [rootMargin='0px'] - The margin applied around the viewport before threshold is evaluated, accepting CSS-like values such as -50px 0px
39
- * @prop {EunomiaAnimateAnimation} [tabletAnimation] - Overrides `animation` at tablet-width viewports and narrower (max-width: 768px). Left unset, the viewport keeps using `animation`
40
- * @prop {EunomiaAnimateAnimation} [mobileAnimation] - Overrides `animation` (and `tabletAnimation`, if also set) at mobile-width viewports and narrower (max-width: 600px)
44
+ * @prop {EunomiaAnimateAnimation} [tabletAnimation] - Overrides `animation` below the tablet breakpoint (width < 768px). Left unset, the viewport keeps using `animation`
45
+ * @prop {EunomiaAnimateAnimation} [mobileAnimation] - Overrides `animation` (and `tabletAnimation`, if also set) below the mobile breakpoint (width < 600px)
41
46
  * @cssprop [--animate-distance] - Sets the travel distance for the scroll and faded-scroll animations
47
+ * @cssprop [--animate-duration=1000ms] - Sets the transition duration of every animate that has no duration of its own, for example once for the whole site
42
48
  * @element eun-animate
43
49
  */
44
50
  let EunomiaAnimate = class EunomiaAnimate extends LitElement {
@@ -51,11 +57,6 @@ let EunomiaAnimate = class EunomiaAnimate extends LitElement {
51
57
  * @default fade
52
58
  */
53
59
  this.animation = "fade";
54
- /**
55
- * Transition duration, in milliseconds.
56
- * @default 600
57
- */
58
- this.duration = 600;
59
60
  /**
60
61
  * Transition delay, in milliseconds.
61
62
  * @default 0
@@ -150,20 +151,33 @@ let EunomiaAnimate = class EunomiaAnimate extends LitElement {
150
151
  this.observer = undefined;
151
152
  }
152
153
  /**
153
- * Forwards `duration`/`delay` to the host's transition through a
154
- * shadow-internal `<style>`, only when they differ from the stylesheet's
155
- * own defaults : an inline style on the host would be a hydration
156
- * mismatch for an SSR framework, since the server never renders it.
154
+ * Forwards `duration`, `delay` and the per-breakpoint delays to the
155
+ * host's transition through a shadow-internal `<style>`, only when they
156
+ * differ from the stylesheet's own defaults : an inline style on the host
157
+ * would be a hydration mismatch for an SSR framework, since the server
158
+ * never renders it. The breakpoints match {@link tabletAnimation} and
159
+ * {@link mobileAnimation}.
157
160
  * @private
158
161
  */
159
162
  renderTiming() {
160
- const rules = [
161
- this.duration !== 600 ? `--_duration: ${Number(this.duration)}ms;` : "",
163
+ const host = [
164
+ this.duration !== undefined
165
+ ? `--_duration: ${Number(this.duration)}ms;`
166
+ : "",
162
167
  this.delay !== 0 ? `--_delay: ${Number(this.delay)}ms;` : "",
163
168
  ].join("");
169
+ const rules = [
170
+ host ? `:host { ${host} }` : "",
171
+ this.tabletDelay !== undefined
172
+ ? `@media ${mediaBelow("tablet")} { :host { --_delay: ${Number(this.tabletDelay)}ms; } }`
173
+ : "",
174
+ this.mobileDelay !== undefined
175
+ ? `@media ${mediaBelow("mobile")} { :host { --_delay: ${Number(this.mobileDelay)}ms; } }`
176
+ : "",
177
+ ].join("");
164
178
  return rules
165
179
  ? html `<style>
166
- :host { ${rules} }
180
+ ${rules}
167
181
  </style>`
168
182
  : nothing;
169
183
  }
@@ -180,7 +194,7 @@ let EunomiaAnimate = class EunomiaAnimate extends LitElement {
180
194
  */
181
195
  EunomiaAnimate.styles = animateStyles;
182
196
  __decorate([
183
- property({ reflect: true })
197
+ property({ reflect: true, useDefault: true })
184
198
  ], EunomiaAnimate.prototype, "animation", void 0);
185
199
  __decorate([
186
200
  property({ type: Number })
@@ -188,6 +202,12 @@ __decorate([
188
202
  __decorate([
189
203
  property({ type: Number })
190
204
  ], EunomiaAnimate.prototype, "delay", void 0);
205
+ __decorate([
206
+ property({ type: Number, attribute: "tablet-delay" })
207
+ ], EunomiaAnimate.prototype, "tabletDelay", void 0);
208
+ __decorate([
209
+ property({ type: Number, attribute: "mobile-delay" })
210
+ ], EunomiaAnimate.prototype, "mobileDelay", void 0);
191
211
  __decorate([
192
212
  property({ type: Boolean })
193
213
  ], EunomiaAnimate.prototype, "once", void 0);
@@ -1,24 +1,30 @@
1
1
  import { css } from "lit";
2
+ import { cssBelow } from "../../../utils/media.styles.js";
2
3
  /**
3
4
  * Base style for the animate component.
4
5
  *
5
6
  * Custom css variables:
6
7
  * [--animate-distance] - Set a custom travel distance for the scroll and faded-scroll animations
8
+ * [--animate-duration] - Set a custom transition duration for every animate without a duration of its own
7
9
  */
8
10
  const base = css `
9
11
  :host {
10
12
  display: block;
11
13
  --_distance: var(--animate-distance, 80px);
12
- transition-duration: var(--_duration, 600ms);
14
+ transition-duration: var(--_duration, var(--animate-duration, 1000ms));
13
15
  transition-delay: var(--_delay, 0ms);
14
16
  transition-timing-function: ease-in-out;
15
17
  }
16
18
 
17
- :host([animation="fade"]) {
19
+ :host([animation="none"]) {
20
+ transition-property: none;
21
+ }
22
+
23
+ :host(:is([animation="fade"], :not([animation]))) {
18
24
  opacity: 0;
19
25
  transition-property: opacity;
20
26
  }
21
- :host([animation="fade"][in-view]) {
27
+ :host(:is([animation="fade"], :not([animation]))[in-view]) {
22
28
  opacity: 1;
23
29
  }
24
30
 
@@ -100,21 +106,8 @@ const base = css `
100
106
  }
101
107
  }
102
108
  `;
103
- /**
104
- * \`tablet-animation\`/\`mobile-animation\` overrides — pure CSS \`@media\`
105
- * switches, mirroring \`base\` above per animation value, so no JS ever
106
- * needs to read the actual viewport width (see \`animate.ts\`'s own
107
- * \`tabletAnimation\`/\`mobileAnimation\` doc comments). Placed after \`base\`
108
- * so equal-specificity ties (e.g. both \`animation="fade"\` and
109
- * \`tablet-animation="none"\` present at once) resolve in the narrower
110
- * breakpoint's favor by source order, once its \`@media\` condition is true.
111
- *
112
- * \`max-width\` values match \`EUNOMIA_BREAKPOINTS.tablet\`/\`.mobile\`
113
- * (\`breakpoints.ts\`) — hardcoded here since a plain CSS \`@media\` query
114
- * can't read a JS constant.
115
- */
116
109
  const breakpoints = css `
117
- @media (max-width: 768px) {
110
+ @media ${cssBelow("tablet")} {
118
111
  :host([tablet-animation="none"]) {
119
112
  opacity: 1;
120
113
  transform: none;
@@ -202,7 +195,7 @@ const breakpoints = css `
202
195
  }
203
196
  }
204
197
 
205
- @media (max-width: 600px) {
198
+ @media ${cssBelow("mobile")} {
206
199
  :host([mobile-animation="none"]) {
207
200
  opacity: 1;
208
201
  transform: none;
@@ -64,7 +64,7 @@ let EunomiaDivider = class EunomiaDivider extends LitElement {
64
64
  */
65
65
  EunomiaDivider.styles = dividerStyles;
66
66
  __decorate([
67
- property({ reflect: true })
67
+ property({ reflect: true, useDefault: true })
68
68
  ], EunomiaDivider.prototype, "orientation", void 0);
69
69
  EunomiaDivider = __decorate([
70
70
  customElement(EunomiaDividerTagName)
@@ -13,7 +13,7 @@ const base = css `
13
13
  display: block;
14
14
  }
15
15
 
16
- :host([orientation="horizontal"]) {
16
+ :host(:is([orientation="horizontal"], :not([orientation]))) {
17
17
  width: 100%;
18
18
  height: 0;
19
19
  margin-block: var(--_spacing);
@@ -4,7 +4,13 @@ import "../../loader/loader/loader.js";
4
4
  * Tag name of the infinite list component.
5
5
  */
6
6
  export declare const EunomiaInfiniteListTagName = "eun-infinite-list";
7
- declare const EunomiaInfiniteList_base: import("../../../utils/constructor.type.js").Constructor<import("../../../mixins/load-more-sentinel.mixin.js").LoadMoreSentinelMixinInterface> & typeof LitElement;
7
+ /**
8
+ * How the list puts its items in the tab order: `roving` keeps the active
9
+ * item as the single Tab stop of the list, `none` leaves every item out of
10
+ * it, for items that already hold their own link or button.
11
+ */
12
+ export type InfiniteListItemTabStop = "roving" | "none";
13
+ declare const EunomiaInfiniteList_base: import("../../../utils/constructor.type.js").Constructor<import("../../../mixins/localizable.mixin.js").LocalizableMixinInterface> & import("../../../utils/constructor.type.js").Constructor<import("../../../mixins/load-more-sentinel.mixin.js").LoadMoreSentinelMixinInterface> & typeof LitElement;
8
14
  /**
9
15
  * Wraps a slotted list of items with scroll-triggered pagination: it
10
16
  * reveals or fetches more as the user nears the end, shows a loading
@@ -32,21 +38,26 @@ declare const EunomiaInfiniteList_base: import("../../../utils/constructor.type.
32
38
  * @slot [end] - Shown once hasMore is false, its own default, and every item has been slotted at least once. Empty by default, rendering nothing until you provide content
33
39
  * @slot [empty] - Shown while there are zero items and loading is false
34
40
  * @prop {number} [pageSize=20] - The number of items per page, both the unit the load-more event requests are made in, and the chunk size virtualization mounts and unmounts as a whole
35
- * @prop {boolean} [virtualize=true] - Detaches pages far from the current scroll position once the list exceeds virtualizeThreshold, replacing each with a single sized spacer. Sound for a single-column, block or flex-column layout, not for a CSS grid of items
41
+ * @prop {boolean} [virtualize=false] - Detaches pages far from the current scroll position once the list exceeds virtualizeThreshold, replacing each with a single sized spacer. Ignored while --infinite-list-columns is above 1, and best left off when a framework renders the items
36
42
  * @prop {number} [virtualizeThreshold=100] - The total known item count above which virtualize actually starts detaching pages. Below it, every page stays mounted, since the bookkeeping isn't worth it for a short list
37
43
  * @prop {number} [bufferPages=1] - The number of extra pages kept mounted before and after the page currently in view, so a small scroll doesn't immediately re-trigger a mount or unmount
38
44
  * @prop {boolean} [loading=false] - Whether a load-more request is in flight. The list sets this to true itself right before dispatching the event, since only it can detect the scroll trigger. Setting it back to false once the new items are appended, or there aren't any, is your own responsibility, exactly like the search and select components' own loading
39
45
  * @prop {boolean} [hasMore=false] - Whether more items can still be obtained, from local unrevealed children or a future load-more page. Defaults to false, so the zero-config, no script needed static case is the default, and API-paginated consumers opt in explicitly. Set it back to false once you've exhausted your dataset, or it keeps requesting empty pages forever
40
- * @prop {string} [loadingLabel='Loading more items…'] - The accessible label passed to the trailing loading indicator
46
+ * @prop {string} [loadingLabel] - The accessible label passed to the trailing loading indicator. Defaults to the localized string for the current locale (English: "Loading more items…")
47
+ * @prop {'roving' | 'none'} [itemTabStop='roving'] - How items enter the tab order. With roving, the active item is the list's single Tab stop. With none, no item is a Tab stop, so Tab only reaches the links and buttons inside them, while the arrow, Page Up/Down, Home and End keys still move between items
41
48
  * @prop {string} [label] - The accessible name for the feed region. Strongly recommended
42
49
  * @prop {string} [rootMargin='400px'] - How far before the physical end of the list the load-more event triggers, as a CSS-like margin. The default preloads a page before the user actually hits the bottom, so the loading indicator rarely shows for long
43
50
  * @fires {LoadMoreEvent} eunloadmore - Fired when more items are needed and hasMore is true. Loading is already true by the time this fires
44
51
  * @cssprop [--infinite-list-height] - Sets a fixed height, past which the list scrolls internally instead of the surrounding page. Unset, the default, the list grows with its content and the page scrolls it like any other block
52
+ * @cssprop [--infinite-list-columns] - Sets the number of columns items are laid out in, as a grid. Above 1, virtualization is turned off
45
53
  * @cssprop [--infinite-list-gap] - Sets the gap between items
46
54
  * @cssprop [--infinite-list-padding] - Sets the padding around the scrollable area
55
+ * @cssprop [--infinite-list-padding-block] - Sets the vertical padding, as one length applied to both sides. Ignored when --infinite-list-padding is set
56
+ * @cssprop [--infinite-list-padding-inline] - Sets the horizontal padding, as one length applied to both sides. Ignored when --infinite-list-padding is set
47
57
  * @cssprop [--infinite-list-loading-padding] - Sets the padding around the trailing loading indicator
48
58
  * @cssprop [--infinite-list-end-color] - Sets the color of the default end and empty slot area
49
59
  * @cssprop [--infinite-list-focus-outline-color] - Sets a fallback focus outline color applied to slotted items that don't set their own
60
+ * @csspart feed - The element wrapping the items, laid out as a grid
50
61
  * @element eun-infinite-list
51
62
  */
52
63
  export declare class EunomiaInfiniteList extends EunomiaInfiniteList_base {
@@ -66,8 +77,10 @@ export declare class EunomiaInfiniteList extends EunomiaInfiniteList_base {
66
77
  pageSize: number;
67
78
  /**
68
79
  * Detaches pages far from the current scroll position once the list
69
- * exceeds `virtualizeThreshold`.
70
- * @default true
80
+ * exceeds `virtualizeThreshold`. Off by default, so a framework that
81
+ * renders the items (and can only set attributes before the element
82
+ * upgrades) never has to turn it off.
83
+ * @default false
71
84
  */
72
85
  virtualize: boolean;
73
86
  /**
@@ -98,10 +111,18 @@ export declare class EunomiaInfiniteList extends EunomiaInfiniteList_base {
98
111
  */
99
112
  hasMore: boolean;
100
113
  /**
101
- * Accessible label passed to the trailing `eun-loader`.
102
- * @default Loading more items…
114
+ * Accessible label passed to the trailing `eun-loader`. Falls back to
115
+ * `this.dictionary.infiniteList.loadingMore` (see `LocalizableMixin`)
116
+ * when unset.
117
+ */
118
+ loadingLabel?: string;
119
+ /**
120
+ * How items enter the tab order : `roving` keeps the active item as the
121
+ * list's single Tab stop, `none` leaves them all out of it, for items
122
+ * that already hold their own link or button.
123
+ * @default roving
103
124
  */
104
- loadingLabel: string;
125
+ itemTabStop: InfiniteListItemTabStop;
105
126
  /**
106
127
  * Accessible name for the feed region.
107
128
  */
@@ -119,8 +140,9 @@ export declare class EunomiaInfiniteList extends EunomiaInfiniteList_base {
119
140
  */
120
141
  private itemCount;
121
142
  /**
122
- * The scrollable container, used as the `IntersectionObserver` root and
123
- * to read/react to scroll position.
143
+ * The container wrapping the feed, which scrolls internally (and becomes
144
+ * the `IntersectionObserver` root) only once `--infinite-list-height`
145
+ * bounds it.
124
146
  * @internal
125
147
  * @readonly
126
148
  */
@@ -139,6 +161,7 @@ export declare class EunomiaInfiniteList extends EunomiaInfiniteList_base {
139
161
  * @readonly
140
162
  */
141
163
  private readonly announcerEl?;
164
+ connectedCallback(): void;
142
165
  disconnectedCallback(): void;
143
166
  protected firstUpdated(): void;
144
167
  protected updated(changed: PropertyValues): void;
@@ -15,13 +15,14 @@ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (
15
15
  if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
16
16
  return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
17
17
  };
18
- var _EunomiaInfiniteList_instances, _EunomiaInfiniteList_items, _EunomiaInfiniteList_mountedPages, _EunomiaInfiniteList_detachedByPage, _EunomiaInfiniteList_pageHeights, _EunomiaInfiniteList_avgItemHeight, _EunomiaInfiniteList_activeIndex, _EunomiaInfiniteList_mutatingSlot, _EunomiaInfiniteList_requestedPages, _EunomiaInfiniteList_resizeObserver, _EunomiaInfiniteList_applyItemAttributes, _EunomiaInfiniteList_handleScroll, _EunomiaInfiniteList_syncPages, _EunomiaInfiniteList_estimateCenterPage, _EunomiaInfiniteList_estimatePageHeight, _EunomiaInfiniteList_mountPage, _EunomiaInfiniteList_unmountPage, _EunomiaInfiniteList_setupLoadObserver, _EunomiaInfiniteList_maybeLoadMore, _EunomiaInfiniteList_focusItem, _EunomiaInfiniteList_focusOutside, _EunomiaInfiniteList_handleKeydown, _EunomiaInfiniteList_handleFocusIn, _EunomiaInfiniteList_handleSlotChange;
18
+ var _EunomiaInfiniteList_instances, _EunomiaInfiniteList_items, _EunomiaInfiniteList_mountedPages, _EunomiaInfiniteList_detachedByPage, _EunomiaInfiniteList_pageHeights, _EunomiaInfiniteList_avgItemHeight, _EunomiaInfiniteList_activeIndex, _EunomiaInfiniteList_mutatingSlot, _EunomiaInfiniteList_requestedPages, _EunomiaInfiniteList_resizeObserver, _EunomiaInfiniteList_contained, _EunomiaInfiniteList_columns, _EunomiaInfiniteList_applyItemAttributes, _EunomiaInfiniteList_syncLayout, _EunomiaInfiniteList_handleScroll, _EunomiaInfiniteList_handleWindowScroll, _EunomiaInfiniteList_syncPages, _EunomiaInfiniteList_estimateCenterPage, _EunomiaInfiniteList_estimatePageHeight, _EunomiaInfiniteList_mountPage, _EunomiaInfiniteList_unmountPage, _EunomiaInfiniteList_setupLoadObserver, _EunomiaInfiniteList_maybeLoadMore, _EunomiaInfiniteList_focusItem, _EunomiaInfiniteList_focusOutside, _EunomiaInfiniteList_handleKeydown, _EunomiaInfiniteList_handleFocusIn, _EunomiaInfiniteList_handleFocusOut, _EunomiaInfiniteList_handleSlotChange;
19
19
  import { customElement, property, query, state } from "lit/decorators.js";
20
20
  import { html, LitElement } from "lit";
21
21
  import { ifDefined } from "lit/directives/if-defined.js";
22
22
  import { infiniteListStyles } from "./infinite-list.styles.js";
23
23
  import { LoadMoreEvent } from "../../../events/loadmore.event.js";
24
24
  import { LoadMoreSentinelMixin } from "../../../mixins/load-more-sentinel.mixin.js";
25
+ import { LocalizableMixin } from "../../../mixins/localizable.mixin.js";
25
26
  import "../../loader/loader/loader.js";
26
27
  /**
27
28
  * Tag name of the infinite list component.
@@ -72,24 +73,29 @@ const FOCUSABLE_SELECTOR = 'a[href], button:not([disabled]), input:not([disabled
72
73
  * @slot [end] - Shown once hasMore is false, its own default, and every item has been slotted at least once. Empty by default, rendering nothing until you provide content
73
74
  * @slot [empty] - Shown while there are zero items and loading is false
74
75
  * @prop {number} [pageSize=20] - The number of items per page, both the unit the load-more event requests are made in, and the chunk size virtualization mounts and unmounts as a whole
75
- * @prop {boolean} [virtualize=true] - Detaches pages far from the current scroll position once the list exceeds virtualizeThreshold, replacing each with a single sized spacer. Sound for a single-column, block or flex-column layout, not for a CSS grid of items
76
+ * @prop {boolean} [virtualize=false] - Detaches pages far from the current scroll position once the list exceeds virtualizeThreshold, replacing each with a single sized spacer. Ignored while --infinite-list-columns is above 1, and best left off when a framework renders the items
76
77
  * @prop {number} [virtualizeThreshold=100] - The total known item count above which virtualize actually starts detaching pages. Below it, every page stays mounted, since the bookkeeping isn't worth it for a short list
77
78
  * @prop {number} [bufferPages=1] - The number of extra pages kept mounted before and after the page currently in view, so a small scroll doesn't immediately re-trigger a mount or unmount
78
79
  * @prop {boolean} [loading=false] - Whether a load-more request is in flight. The list sets this to true itself right before dispatching the event, since only it can detect the scroll trigger. Setting it back to false once the new items are appended, or there aren't any, is your own responsibility, exactly like the search and select components' own loading
79
80
  * @prop {boolean} [hasMore=false] - Whether more items can still be obtained, from local unrevealed children or a future load-more page. Defaults to false, so the zero-config, no script needed static case is the default, and API-paginated consumers opt in explicitly. Set it back to false once you've exhausted your dataset, or it keeps requesting empty pages forever
80
- * @prop {string} [loadingLabel='Loading more items…'] - The accessible label passed to the trailing loading indicator
81
+ * @prop {string} [loadingLabel] - The accessible label passed to the trailing loading indicator. Defaults to the localized string for the current locale (English: "Loading more items…")
82
+ * @prop {'roving' | 'none'} [itemTabStop='roving'] - How items enter the tab order. With roving, the active item is the list's single Tab stop. With none, no item is a Tab stop, so Tab only reaches the links and buttons inside them, while the arrow, Page Up/Down, Home and End keys still move between items
81
83
  * @prop {string} [label] - The accessible name for the feed region. Strongly recommended
82
84
  * @prop {string} [rootMargin='400px'] - How far before the physical end of the list the load-more event triggers, as a CSS-like margin. The default preloads a page before the user actually hits the bottom, so the loading indicator rarely shows for long
83
85
  * @fires {LoadMoreEvent} eunloadmore - Fired when more items are needed and hasMore is true. Loading is already true by the time this fires
84
86
  * @cssprop [--infinite-list-height] - Sets a fixed height, past which the list scrolls internally instead of the surrounding page. Unset, the default, the list grows with its content and the page scrolls it like any other block
87
+ * @cssprop [--infinite-list-columns] - Sets the number of columns items are laid out in, as a grid. Above 1, virtualization is turned off
85
88
  * @cssprop [--infinite-list-gap] - Sets the gap between items
86
89
  * @cssprop [--infinite-list-padding] - Sets the padding around the scrollable area
90
+ * @cssprop [--infinite-list-padding-block] - Sets the vertical padding, as one length applied to both sides. Ignored when --infinite-list-padding is set
91
+ * @cssprop [--infinite-list-padding-inline] - Sets the horizontal padding, as one length applied to both sides. Ignored when --infinite-list-padding is set
87
92
  * @cssprop [--infinite-list-loading-padding] - Sets the padding around the trailing loading indicator
88
93
  * @cssprop [--infinite-list-end-color] - Sets the color of the default end and empty slot area
89
94
  * @cssprop [--infinite-list-focus-outline-color] - Sets a fallback focus outline color applied to slotted items that don't set their own
95
+ * @csspart feed - The element wrapping the items, laid out as a grid
90
96
  * @element eun-infinite-list
91
97
  */
92
- let EunomiaInfiniteList = class EunomiaInfiniteList extends LoadMoreSentinelMixin(LitElement) {
98
+ let EunomiaInfiniteList = class EunomiaInfiniteList extends LocalizableMixin(LoadMoreSentinelMixin(LitElement)) {
93
99
  constructor() {
94
100
  super(...arguments);
95
101
  _EunomiaInfiniteList_instances.add(this);
@@ -100,10 +106,12 @@ let EunomiaInfiniteList = class EunomiaInfiniteList extends LoadMoreSentinelMixi
100
106
  this.pageSize = 20;
101
107
  /**
102
108
  * Detaches pages far from the current scroll position once the list
103
- * exceeds `virtualizeThreshold`.
104
- * @default true
109
+ * exceeds `virtualizeThreshold`. Off by default, so a framework that
110
+ * renders the items (and can only set attributes before the element
111
+ * upgrades) never has to turn it off.
112
+ * @default false
105
113
  */
106
- this.virtualize = true;
114
+ this.virtualize = false;
107
115
  /**
108
116
  * Total known item count above which `virtualize` actually starts
109
117
  * detaching pages.
@@ -132,10 +140,12 @@ let EunomiaInfiniteList = class EunomiaInfiniteList extends LoadMoreSentinelMixi
132
140
  */
133
141
  this.hasMore = false;
134
142
  /**
135
- * Accessible label passed to the trailing `eun-loader`.
136
- * @default Loading more items…
143
+ * How items enter the tab order : `roving` keeps the active item as the
144
+ * list's single Tab stop, `none` leaves them all out of it, for items
145
+ * that already hold their own link or button.
146
+ * @default roving
137
147
  */
138
- this.loadingLabel = "Loading more items…";
148
+ this.itemTabStop = "roving";
139
149
  /**
140
150
  * How far before the physical end of the list `eunloadmore` triggers.
141
151
  * @default 400px
@@ -205,9 +215,25 @@ let EunomiaInfiniteList = class EunomiaInfiniteList extends LoadMoreSentinelMixi
205
215
  * @internal
206
216
  */
207
217
  _EunomiaInfiniteList_resizeObserver.set(this, void 0);
218
+ /**
219
+ * Whether `--infinite-list-height` bounds {@link scrollerEl}, so the list
220
+ * scrolls internally instead of the page.
221
+ * @internal
222
+ */
223
+ _EunomiaInfiniteList_contained.set(this, false);
224
+ /**
225
+ * Column count read from `--infinite-list-columns`.
226
+ * @internal
227
+ */
228
+ _EunomiaInfiniteList_columns.set(this, 1);
208
229
  _EunomiaInfiniteList_handleScroll.set(this, () => {
209
230
  this.scheduleAnimationFrame(() => __classPrivateFieldGet(this, _EunomiaInfiniteList_instances, "m", _EunomiaInfiniteList_syncPages).call(this));
210
231
  });
232
+ _EunomiaInfiniteList_handleWindowScroll.set(this, () => {
233
+ if (!__classPrivateFieldGet(this, _EunomiaInfiniteList_contained, "f")) {
234
+ __classPrivateFieldGet(this, _EunomiaInfiniteList_handleScroll, "f").call(this);
235
+ }
236
+ });
211
237
  _EunomiaInfiniteList_handleKeydown.set(this, (event) => {
212
238
  if (event.defaultPrevented) {
213
239
  return;
@@ -257,19 +283,47 @@ let EunomiaInfiniteList = class EunomiaInfiniteList extends LoadMoreSentinelMixi
257
283
  __classPrivateFieldSet(this, _EunomiaInfiniteList_activeIndex, index, "f");
258
284
  __classPrivateFieldGet(this, _EunomiaInfiniteList_instances, "m", _EunomiaInfiniteList_applyItemAttributes).call(this);
259
285
  });
286
+ /**
287
+ * Drops the `tabindex` an item only got to take focus from the keyboard
288
+ * (`itemTabStop` set to `none`) once focus leaves it.
289
+ * @private
290
+ */
291
+ _EunomiaInfiniteList_handleFocusOut.set(this, (event) => {
292
+ const target = event.target;
293
+ if (this.itemTabStop === "none" &&
294
+ target instanceof HTMLElement &&
295
+ __classPrivateFieldGet(this, _EunomiaInfiniteList_items, "f").includes(target)) {
296
+ target.removeAttribute("tabindex");
297
+ }
298
+ });
260
299
  _EunomiaInfiniteList_handleSlotChange.set(this, () => {
261
300
  this.syncItemsFromLightDom();
262
301
  });
263
302
  }
303
+ connectedCallback() {
304
+ super.connectedCallback();
305
+ window.addEventListener("scroll", __classPrivateFieldGet(this, _EunomiaInfiniteList_handleWindowScroll, "f"), {
306
+ passive: true,
307
+ });
308
+ if (this.hasUpdated && this.scrollerEl) {
309
+ __classPrivateFieldGet(this, _EunomiaInfiniteList_resizeObserver, "f")?.observe(this.scrollerEl);
310
+ __classPrivateFieldGet(this, _EunomiaInfiniteList_instances, "m", _EunomiaInfiniteList_setupLoadObserver).call(this);
311
+ }
312
+ }
264
313
  disconnectedCallback() {
265
314
  this.teardownLoadMoreSentinel();
266
315
  __classPrivateFieldGet(this, _EunomiaInfiniteList_resizeObserver, "f")?.disconnect();
316
+ window.removeEventListener("scroll", __classPrivateFieldGet(this, _EunomiaInfiniteList_handleWindowScroll, "f"));
267
317
  super.disconnectedCallback();
268
318
  }
269
319
  firstUpdated() {
320
+ __classPrivateFieldGet(this, _EunomiaInfiniteList_instances, "m", _EunomiaInfiniteList_syncLayout).call(this);
270
321
  this.syncItemsFromLightDom();
271
322
  __classPrivateFieldGet(this, _EunomiaInfiniteList_instances, "m", _EunomiaInfiniteList_setupLoadObserver).call(this);
272
- __classPrivateFieldSet(this, _EunomiaInfiniteList_resizeObserver, new ResizeObserver(() => this.scheduleAnimationFrame(() => __classPrivateFieldGet(this, _EunomiaInfiniteList_instances, "m", _EunomiaInfiniteList_syncPages).call(this))), "f");
323
+ __classPrivateFieldSet(this, _EunomiaInfiniteList_resizeObserver, new ResizeObserver(() => this.scheduleAnimationFrame(() => {
324
+ __classPrivateFieldGet(this, _EunomiaInfiniteList_instances, "m", _EunomiaInfiniteList_syncLayout).call(this);
325
+ __classPrivateFieldGet(this, _EunomiaInfiniteList_instances, "m", _EunomiaInfiniteList_syncPages).call(this);
326
+ })), "f");
273
327
  if (this.scrollerEl) {
274
328
  __classPrivateFieldGet(this, _EunomiaInfiniteList_resizeObserver, "f").observe(this.scrollerEl);
275
329
  this.scrollerEl.addEventListener("scroll", __classPrivateFieldGet(this, _EunomiaInfiniteList_handleScroll, "f"), {
@@ -278,13 +332,14 @@ let EunomiaInfiniteList = class EunomiaInfiniteList extends LoadMoreSentinelMixi
278
332
  }
279
333
  this.addEventListener("keydown", __classPrivateFieldGet(this, _EunomiaInfiniteList_handleKeydown, "f"));
280
334
  this.addEventListener("focusin", __classPrivateFieldGet(this, _EunomiaInfiniteList_handleFocusIn, "f"));
335
+ this.addEventListener("focusout", __classPrivateFieldGet(this, _EunomiaInfiniteList_handleFocusOut, "f"));
281
336
  }
282
337
  updated(changed) {
283
338
  super.updated(changed);
284
339
  if (changed.has("rootMargin")) {
285
340
  __classPrivateFieldGet(this, _EunomiaInfiniteList_instances, "m", _EunomiaInfiniteList_setupLoadObserver).call(this);
286
341
  }
287
- if (changed.has("hasMore")) {
342
+ if (changed.has("hasMore") || changed.has("itemTabStop")) {
288
343
  __classPrivateFieldGet(this, _EunomiaInfiniteList_instances, "m", _EunomiaInfiniteList_applyItemAttributes).call(this);
289
344
  }
290
345
  if (changed.has("virtualize") ||
@@ -346,7 +401,8 @@ let EunomiaInfiniteList = class EunomiaInfiniteList extends LoadMoreSentinelMixi
346
401
  __classPrivateFieldSet(this, _EunomiaInfiniteList_mountedPages, mountedPages, "f");
347
402
  __classPrivateFieldGet(this, _EunomiaInfiniteList_instances, "m", _EunomiaInfiniteList_applyItemAttributes).call(this);
348
403
  if (isAppend && addedCount > 0 && this.announcerEl) {
349
- this.announcerEl.textContent = `${addedCount} more item${addedCount > 1 ? "s" : ""} loaded`;
404
+ this.announcerEl.textContent =
405
+ this.dictionary.infiniteList.itemsLoaded(addedCount);
350
406
  }
351
407
  this.scheduleAnimationFrame(() => __classPrivateFieldGet(this, _EunomiaInfiniteList_instances, "m", _EunomiaInfiniteList_syncPages).call(this));
352
408
  this.reobserveSentinel(this.sentinelEl);
@@ -358,6 +414,7 @@ let EunomiaInfiniteList = class EunomiaInfiniteList extends LoadMoreSentinelMixi
358
414
  <div id="scroller">
359
415
  <div
360
416
  id="feed"
417
+ part="feed"
361
418
  role="feed"
362
419
  aria-label=${ifDefined(this.label)}
363
420
  aria-busy=${this.loading ? "true" : "false"}
@@ -366,7 +423,10 @@ let EunomiaInfiniteList = class EunomiaInfiniteList extends LoadMoreSentinelMixi
366
423
  </div>
367
424
  <div id="sentinel" aria-hidden="true"></div>
368
425
  <div id="loading-row" ?hidden=${!this.loading}>
369
- <eun-loader label=${this.loadingLabel}></eun-loader>
426
+ <eun-loader
427
+ label=${this.loadingLabel ??
428
+ this.dictionary.infiniteList.loadingMore}
429
+ ></eun-loader>
370
430
  </div>
371
431
  <div id="end" ?hidden=${!showEnd}><slot name="end"></slot></div>
372
432
  <div id="empty" ?hidden=${!showEmpty}><slot name="empty"></slot></div>
@@ -389,13 +449,18 @@ _EunomiaInfiniteList_activeIndex = new WeakMap();
389
449
  _EunomiaInfiniteList_mutatingSlot = new WeakMap();
390
450
  _EunomiaInfiniteList_requestedPages = new WeakMap();
391
451
  _EunomiaInfiniteList_resizeObserver = new WeakMap();
452
+ _EunomiaInfiniteList_contained = new WeakMap();
453
+ _EunomiaInfiniteList_columns = new WeakMap();
392
454
  _EunomiaInfiniteList_handleScroll = new WeakMap();
455
+ _EunomiaInfiniteList_handleWindowScroll = new WeakMap();
393
456
  _EunomiaInfiniteList_handleKeydown = new WeakMap();
394
457
  _EunomiaInfiniteList_handleFocusIn = new WeakMap();
458
+ _EunomiaInfiniteList_handleFocusOut = new WeakMap();
395
459
  _EunomiaInfiniteList_handleSlotChange = new WeakMap();
396
460
  _EunomiaInfiniteList_instances = new WeakSet();
397
461
  _EunomiaInfiniteList_applyItemAttributes = function _EunomiaInfiniteList_applyItemAttributes() {
398
462
  const setSize = this.hasMore ? -1 : __classPrivateFieldGet(this, _EunomiaInfiniteList_items, "f").length;
463
+ const roving = this.itemTabStop !== "none";
399
464
  __classPrivateFieldGet(this, _EunomiaInfiniteList_items, "f").forEach((item, index) => {
400
465
  if (!item.isConnected) {
401
466
  return;
@@ -405,16 +470,40 @@ _EunomiaInfiniteList_applyItemAttributes = function _EunomiaInfiniteList_applyIt
405
470
  }
406
471
  item.setAttribute("aria-posinset", String(index + 1));
407
472
  item.setAttribute("aria-setsize", String(setSize));
408
- item.tabIndex = index === __classPrivateFieldGet(this, _EunomiaInfiniteList_activeIndex, "f") ? 0 : -1;
473
+ if (roving && index === __classPrivateFieldGet(this, _EunomiaInfiniteList_activeIndex, "f")) {
474
+ item.tabIndex = 0;
475
+ }
476
+ else if (!item.matches(":focus")) {
477
+ item.removeAttribute("tabindex");
478
+ }
409
479
  });
410
480
  };
481
+ _EunomiaInfiniteList_syncLayout = function _EunomiaInfiniteList_syncLayout() {
482
+ const scroller = this.scrollerEl;
483
+ if (!scroller) {
484
+ return;
485
+ }
486
+ const columns = Number.parseInt(getComputedStyle(this).getPropertyValue("--infinite-list-columns"), 10);
487
+ __classPrivateFieldSet(this, _EunomiaInfiniteList_columns, columns > 0 ? columns : 1, "f");
488
+ const contained = getComputedStyle(scroller).maxBlockSize !== "none";
489
+ if (contained === __classPrivateFieldGet(this, _EunomiaInfiniteList_contained, "f")) {
490
+ return;
491
+ }
492
+ __classPrivateFieldSet(this, _EunomiaInfiniteList_contained, contained, "f");
493
+ scroller.classList.toggle("contained", contained);
494
+ if (this.loadObserver) {
495
+ __classPrivateFieldGet(this, _EunomiaInfiniteList_instances, "m", _EunomiaInfiniteList_setupLoadObserver).call(this);
496
+ }
497
+ };
411
498
  _EunomiaInfiniteList_syncPages = function _EunomiaInfiniteList_syncPages() {
412
499
  const totalItems = __classPrivateFieldGet(this, _EunomiaInfiniteList_items, "f").length;
413
500
  if (totalItems === 0) {
414
501
  return;
415
502
  }
416
503
  const totalPages = Math.ceil(totalItems / this.pageSize);
417
- if (!this.virtualize || totalItems <= this.virtualizeThreshold) {
504
+ if (!this.virtualize ||
505
+ __classPrivateFieldGet(this, _EunomiaInfiniteList_columns, "f") > 1 ||
506
+ totalItems <= this.virtualizeThreshold) {
418
507
  for (let page = 0; page < totalPages; page++) {
419
508
  __classPrivateFieldGet(this, _EunomiaInfiniteList_instances, "m", _EunomiaInfiniteList_mountPage).call(this, page);
420
509
  }
@@ -440,7 +529,9 @@ _EunomiaInfiniteList_estimateCenterPage = function _EunomiaInfiniteList_estimate
440
529
  if (!scroller) {
441
530
  return 0;
442
531
  }
443
- const target = scroller.scrollTop + scroller.clientHeight / 2;
532
+ const target = __classPrivateFieldGet(this, _EunomiaInfiniteList_contained, "f")
533
+ ? scroller.scrollTop + scroller.clientHeight / 2
534
+ : window.innerHeight / 2 - scroller.getBoundingClientRect().top;
444
535
  let offset = 0;
445
536
  for (let page = 0; page < totalPages; page++) {
446
537
  const height = __classPrivateFieldGet(this, _EunomiaInfiniteList_pageHeights, "f")[page] ?? __classPrivateFieldGet(this, _EunomiaInfiniteList_instances, "m", _EunomiaInfiniteList_estimatePageHeight).call(this, page);
@@ -523,7 +614,7 @@ _EunomiaInfiniteList_unmountPage = function _EunomiaInfiniteList_unmountPage(pag
523
614
  __classPrivateFieldGet(this, _EunomiaInfiniteList_mountedPages, "f").delete(page);
524
615
  };
525
616
  _EunomiaInfiniteList_setupLoadObserver = function _EunomiaInfiniteList_setupLoadObserver() {
526
- this.setupLoadObserver(this.sentinelEl, this.scrollerEl ?? null, this.rootMargin, () => __classPrivateFieldGet(this, _EunomiaInfiniteList_instances, "m", _EunomiaInfiniteList_maybeLoadMore).call(this));
617
+ this.setupLoadObserver(this.sentinelEl, __classPrivateFieldGet(this, _EunomiaInfiniteList_contained, "f") ? (this.scrollerEl ?? null) : null, this.rootMargin, () => __classPrivateFieldGet(this, _EunomiaInfiniteList_instances, "m", _EunomiaInfiniteList_maybeLoadMore).call(this));
527
618
  };
528
619
  _EunomiaInfiniteList_maybeLoadMore = function _EunomiaInfiniteList_maybeLoadMore() {
529
620
  if (this.loading || !this.hasMore) {
@@ -542,6 +633,9 @@ _EunomiaInfiniteList_focusItem = function _EunomiaInfiniteList_focusItem(index)
542
633
  __classPrivateFieldSet(this, _EunomiaInfiniteList_activeIndex, index, "f");
543
634
  __classPrivateFieldGet(this, _EunomiaInfiniteList_instances, "m", _EunomiaInfiniteList_applyItemAttributes).call(this);
544
635
  const target = __classPrivateFieldGet(this, _EunomiaInfiniteList_items, "f")[index];
636
+ if (this.itemTabStop === "none") {
637
+ target.tabIndex = 0;
638
+ }
545
639
  target.focus();
546
640
  target.scrollIntoView({ block: "nearest" });
547
641
  };
@@ -587,6 +681,9 @@ __decorate([
587
681
  __decorate([
588
682
  property({ attribute: "loading-label" })
589
683
  ], EunomiaInfiniteList.prototype, "loadingLabel", void 0);
684
+ __decorate([
685
+ property({ attribute: "item-tab-stop" })
686
+ ], EunomiaInfiniteList.prototype, "itemTabStop", void 0);
590
687
  __decorate([
591
688
  property()
592
689
  ], EunomiaInfiniteList.prototype, "label", void 0);
@@ -3,8 +3,11 @@
3
3
  *
4
4
  * Custom css variables:
5
5
  * [--infinite-list-height] - Set a custom fixed height, past which the list scrolls internally instead of the surrounding page ; unset (the default), the list grows with its content and the page scrolls it like any other block
6
+ * [--infinite-list-columns] - Set the number of columns items are laid out in, as a grid
6
7
  * [--infinite-list-gap] - Set a custom gap between items
7
8
  * [--infinite-list-padding] - Set a custom padding around the scrollable area
9
+ * [--infinite-list-padding-block] - Set a custom vertical padding, as one length applied to both sides. Ignored when --infinite-list-padding is set
10
+ * [--infinite-list-padding-inline] - Set a custom horizontal padding, as one length applied to both sides. Ignored when --infinite-list-padding is set
8
11
  * [--infinite-list-loading-padding] - Set a custom padding around the trailing loading indicator
9
12
  * [--infinite-list-end-color] - Set a custom color for the "end" slot's default position
10
13
  * [--infinite-list-focus-outline-color] - Set a custom focus outline color applied to slotted items