@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
@@ -1,106 +1,130 @@
1
1
  import { LitElement, PropertyValues, TemplateResult } from "lit";
2
2
  import { EunomiaTableAction, EunomiaTableColumnDef, EunomiaTableRowActionDef } from "./table.types.js";
3
- import "../table-skeleton-row/table-skeleton-row.js";
3
+ import "../../../components/form/checkbox/checkbox.js";
4
+ import "../../../components/action/button/button.js";
5
+ import "../../../components/action/dropdown-button/dropdown-button.js";
6
+ import "../../../components/content/icon/icon.js";
4
7
  import "../../../components/loader/loader/loader.js";
8
+ import "../../../components/loader/skeleton/skeleton.js";
5
9
  /**
6
10
  * Tag name of the table component.
7
11
  */
8
12
  export declare const EunomiaTableTagName = "eun-table";
9
- declare const EunomiaTable_base: import("../../../utils/constructor.type.js").Constructor<import("../../../mixins/load-more-sentinel.mixin.js").LoadMoreSentinelMixinInterface> & typeof LitElement;
13
+ declare const EunomiaTable_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;
10
14
  /**
11
- * A row-and-column-based grid (`<eun-table>`), usable two ways, both
12
- * producing the exact same DOM, CSS, and behavior underneath, since the
13
- * second is just a generator for the first :
15
+ * A data table built on a native `<table>` (`<eun-table><table>…</table></eun-table>`).
16
+ * The table keeps its native semantics (`table`, `row`, `columnheader`,
17
+ * `rowheader`, `cell`), renders before any script runs, and holds any
18
+ * content: tags, icons, buttons, dropdown buttons, links.
14
19
  *
15
- * Every row shares one set of column tracks via CSS Subgrid : `eun-table`'s
16
- * own shadow root is `display: grid` with a bare `<slot>` (no wrapper), per
17
- * the flat-tree slotting model, a slot's assigned nodes render as if they
18
- * were direct children of the host, so `eun-table-header`/`eun-table-item`
19
- * become direct items of this grid despite living in separate shadow
20
- * roots. Each of those, in turn, sets `grid-template-columns: subgrid` on
21
- * its own `:host`, inheriting the exact same tracks the browser computed
22
- * once for the whole grid: this is what keeps `auto`/flexible columns
23
- * pixel-aligned across every row with zero JS measurement. The track list
24
- * itself (from `eun-table-column`'s `width`, plus a select/action track
25
- * when relevant) is computed in `updateColumnsTemplate` and applied as the
26
- * `--_columns` custom property `table.styles.ts`'s `:host` reads.
20
+ * `eun-table` styles the slotted table from the light DOM and layers the
21
+ * optional behaviors on top: row selection with a checkbox column it
22
+ * generates and a floating action bar, row end actions revealed on hover
23
+ * (cells marked `data-table-action`), clickable rows, sticky header,
24
+ * footer, and columns, loading placeholders, and scroll-driven pagination.
25
+ * Without any of those, it's a plain, read-only table.
27
26
  *
28
- * Selection, sticky flags, and row-to-row keyboard navigation are all
29
- * pushed down onto the header/items imperatively (the same "poke state onto
30
- * slotted children" pattern `eun-toggle-group` uses for its own
31
- * `eun-toggle-item`s) rather than those elements pulling state from a
32
- * shared config object, since they're consumer-authored tags, not
33
- * data-driven renders.
27
+ * A row click follows the link marked `data-table-row-link` in that row,
28
+ * which stays the keyboard way to reach it. Rows are identified by their
29
+ * `data-row-key` attribute. A `<tfoot>` holds
30
+ * summary rows, kept out of the selection. A `<caption>` stays in the
31
+ * table for its semantics, and shows above the table's frame.
34
32
  *
35
- * @slot [default] - One `eun-table-header` followed by any number of `eun-table-item`s
36
- * @prop {boolean} [selectable=false] - Enables row selection (checkboxes, select-all, the floating action bar)
37
- * @prop {boolean} [checkboxAlwaysVisible=false] - Keeps every row's own checkbox visible at all times instead of only on hover/focus/selection ; the header's own select-all checkbox is already always visible regardless of this (see `stickyHeader`)
33
+ * @slot [default] - A native `<table>`, with a `<thead>`, a `<tbody>`, and an optional `<caption>` and `<tfoot>`
34
+ * @csspart frame - The bordered scroll container around the table
35
+ * @prop {boolean} [selectable=false] - Enables row selection (generated checkbox column, select-all, the floating action bar)
36
+ * @prop {boolean} [checkboxAlwaysVisible=false] - Keeps every row's own checkbox visible at all times instead of only on hover/focus/selection
38
37
  * @attr {boolean} [checkbox-always-visible=false] - Keeps every row's own checkbox visible at all times instead of only on hover/focus/selection
39
- * @prop {boolean} [actionAlwaysVisible=false] - Keeps every row's own row-end action (`slot="action"`, or a `rowAction`-generated one) visible at all times instead of only on hover/focus ; still cedes to the floating action bar once a row is selected, same as the hover-only default
40
- * @attr {boolean} [action-always-visible=false] - Keeps every row's own row-end action visible at all times instead of only on hover/focus
41
- * @prop {boolean} [stickyHeader=false] - Pins the header to the top of the table's own scroll container ; once pinned, the header never renders the select-all checkbox (even while `selectable`) or any hover styling, since it stays permanently visible rather than only appearing on hover/focus
38
+ * @prop {boolean} [actionAlwaysVisible=false] - Keeps every row end action (a `data-table-action` cell's content) visible at all times instead of only on hover/focus ; still hidden while rows are selected
39
+ * @attr {boolean} [action-always-visible=false] - Keeps every row end action visible at all times instead of only on hover/focus
40
+ * @prop {boolean} [stickyHeader=false] - Pins the `<thead>` to the top of the table's own scroll container
42
41
  * @attr {boolean} [sticky-header=false] - Pins the header to the top
42
+ * @prop {boolean} [stickyFooter=false] - Pins the `<tfoot>` to the bottom of the table's own scroll container
43
+ * @attr {boolean} [sticky-footer=false] - Pins the footer to the bottom
43
44
  * @prop {boolean} [stickyFirstColumn=false] - Pins the first data column to the start edge
44
45
  * @attr {boolean} [sticky-first-column=false] - Pins the first data column to the start edge
45
- * @prop {boolean} [stickyLastColumn=false] - Pins the last data column to the end edge
46
+ * @prop {boolean} [stickyLastColumn=false] - Pins the last data column, and the row end action column, to the end edge
46
47
  * @attr {boolean} [sticky-last-column=false] - Pins the last data column to the end edge
47
- * @prop {boolean} [clearOnEscape=false] - Whether `Escape` clears the selection while the action bar is shown ; off by default so it never fights a consumer's own global `Escape` handling
48
+ * @prop {boolean} [clearOnEscape=false] - Whether `Escape` clears the selection while the action bar is shown
48
49
  * @attr {boolean} [clear-on-escape=false] - Whether `Escape` clears the selection while the action bar is shown
49
- * @prop {Array<string>} [selectedKeys=[]] - The currently selected rows' keys ; settable from outside for a "controlled" table, always reflecting the live selection either way
50
+ * @prop {Array<string>} [selectedKeys=[]] - The currently selected rows' keys ; settable from outside for a "controlled" table
50
51
  * @prop {Array<import('./table.types.js').EunomiaTableAction>} [actions=[]] - Custom actions rendered in the floating action bar's center region
51
- * @prop {string} [selectedLabel='selected'] - Text shown after the count in the action bar's badge
52
+ * @prop {string} [selectedLabel='selected'] - Text shown after the count in the action bar's badge ; translated from `locale` while unset
52
53
  * @attr {string} [selected-label='selected'] - Text shown after the count in the action bar's badge
53
- * @prop {string} [selectAllLabel='Select all'] - Label of the action bar's select-all button while not every row is selected
54
+ * @prop {string} [selectAllLabel='Select all'] - Label of the action bar's select-all button while not every row is selected ; translated from `locale` while unset
54
55
  * @attr {string} [select-all-label='Select all'] - Label of the action bar's select-all button
55
- * @prop {string} [deselectAllLabel='Deselect all'] - Label of the action bar's select-all button once every row is selected
56
+ * @prop {string} [deselectAllLabel='Deselect all'] - Label of the action bar's select-all button once every row is selected ; translated from `locale` while unset
56
57
  * @attr {string} [deselect-all-label='Deselect all'] - Label of the action bar's select-all button once every row is selected
57
- * @prop {string} [selectAllAriaLabel='Select all rows'] - Accessible label for the header's select-all checkbox while not every row is selected
58
+ * @prop {string} [selectAllAriaLabel='Select all rows'] - Accessible label for the header's select-all checkbox while not every row is selected ; translated from `locale` while unset
58
59
  * @attr {string} [select-all-aria-label='Select all rows'] - Accessible label for the header's select-all checkbox
59
- * @prop {string} [deselectAllAriaLabel='Deselect all rows'] - Accessible label for the header's select-all checkbox once every row is selected
60
+ * @prop {string} [deselectAllAriaLabel='Deselect all rows'] - Accessible label for the header's select-all checkbox once every row is selected ; translated from `locale` while unset
60
61
  * @attr {string} [deselect-all-aria-label='Deselect all rows'] - Accessible label for the header's select-all checkbox
61
- * @prop {string} [selectRowAriaLabel='Select row'] - Accessible label prefix for each row's own checkbox (its 1-based row number is appended)
62
+ * @prop {string} [selectRowAriaLabel='Select row'] - Accessible label prefix for each row's own checkbox, followed by the row header's text, or its 1-based row number without one ; translated from `locale` while unset
62
63
  * @attr {string} [select-row-aria-label='Select row'] - Accessible label prefix for each row's own checkbox
63
- * @prop {string} [toolbarAriaLabel='Selection actions'] - Accessible label for the floating action bar itself
64
+ * @prop {string} [toolbarAriaLabel='Selection actions'] - Accessible label for the floating action bar itself ; translated from `locale` while unset
64
65
  * @attr {string} [toolbar-aria-label='Selection actions'] - Accessible label for the floating action bar itself
65
- * @prop {string} [closeActionBarAriaLabel='Clear selection'] - Accessible label for the action bar's close button
66
+ * @prop {string} [closeActionBarAriaLabel='Clear selection'] - Accessible label for the action bar's close button ; translated from `locale` while unset
66
67
  * @attr {string} [close-action-bar-aria-label='Clear selection'] - Accessible label for the action bar's close button
67
- * @prop {Array<import('./table.types.js').EunomiaTableColumnDef<T>>} [columns] - Programmatic alternative to hand-authoring `eun-table-header`/`eun-table-column` : when set, `eun-table` generates that exact markup itself from `columns`/`data`. Setting this puts the table in "managed" mode: it owns its own light DOM from then on ; don't also hand-author `eun-table-header`/`eun-table-item` children
68
+ * @prop {Array<import('./table.types.js').EunomiaTableColumnDef<T>>} [columns] - Programmatic alternative to authoring the `<table>` : when set, `eun-table` renders the native table itself from `columns`/`data`, and owns its light DOM from then on
68
69
  * @prop {Array<T>} [data=[]] - The rows to render, in "managed" mode (see `columns`)
69
- * @prop {import('./table.types.js').EunomiaTableRowActionDef<T>} [rowAction] - A single row-end action (button or dropdown), in "managed" mode: the data-driven equivalent of a `slot="action"` element
70
- * @prop {(row: T, index: number) => string} [rowKey] - Computes each row's stable key, in "managed" mode ; defaults to a DOM-order fallback, same caveat as `eun-table-item`'s own `row-key`
71
- * @fires {TableSelectionChangeEvent} euntableselectionchange - Emitted whenever the selection changes, from any source
72
- * @fires {TableActionEvent} euntableaction - Emitted when a floating action bar action is activated
73
- * @prop {boolean} [loading=false] - Shows `skeletonRows` shimmering placeholder rows in place of the real ones: the header stays visible, only `eun-table-item`s are hidden ; set back to `false` once real data has arrived
70
+ * @prop {import('./table.types.js').EunomiaTableRowActionDef<T>} [rowAction] - A single row end action (button or dropdown), in "managed" mode
71
+ * @prop {(row: T, index: number) => string} [rowKey] - Computes each row's stable key, in "managed" mode ; defaults to a DOM-order fallback
72
+ * @prop {boolean} [loading=false] - Shows `skeletonRows` placeholder rows in place of the body rows ; the header stays visible
74
73
  * @prop {number} [skeletonRows=6] - Number of placeholder rows rendered while `loading`
75
74
  * @attr {number} [skeleton-rows=6] - Number of placeholder rows rendered while `loading`
76
- * @prop {boolean} [syncing=false] - Shows a shimmering overlay sweeping across every already-visible `eun-table-item`, without hiding any of them (unlike `loading`) : for a background refresh of data the user can already see, rather than an initial load with nothing to show yet. Reflects `aria-busy` on the table itself while set
77
- * @prop {boolean} [clickable=false] - Shows a pointer cursor on a row while it has no row-end action content of its own ; purely visual; a row click already fires `euntablerowclick` regardless of this or any row-end action (see `eun-table-item`)
78
- * @attr {boolean} [clickable=false] - Shows a pointer cursor on a row while it has no row-end action content of its own
79
- * @prop {boolean} [infinite=false] - Enables scroll-triggered pagination : dispatches `eunloadmore` once the user scrolls near the end of the table's own scroll container and `hasMore` is `true`, showing a trailing `eun-loader` while `loadingMore` is `true`. Independent of `virtualize`: combine both for `eun-infinite-list` parity, or use `infinite` alone to paginate without detaching any DOM
80
- * @prop {boolean} [virtualize=false] - Detaches `eun-table-item` pages far from the current scroll position once the known row count exceeds `virtualizeThreshold`, replacing each with a single full-width spacer sized to its last measured height, the same mechanism `eun-infinite-list` uses for its own items, adapted to this table's CSS Subgrid rows. Independent of `infinite`: useful on its own for a very large, already-fully-loaded dataset
81
- * @prop {number} [pageSize=20] - Number of rows per page: both the unit `eunloadmore` requests are made in, and the chunk size `virtualize` mounts/unmounts as a whole
75
+ * @prop {boolean} [syncing=false] - Sweeps a shimmer across every visible body row without hiding any, for a background refresh. Sets `aria-busy` on the table while set
76
+ * @prop {boolean} [clickable=false] - Shows a pointer cursor on body rows ; a row click fires `euntablerowclick` and follows the row's `data-table-row-link` link regardless, which stays the keyboard way to do the same
77
+ * @prop {boolean} [infinite=false] - Enables scroll-triggered pagination : dispatches `eunloadmore` once the user scrolls near the end of the table's own scroll container and `hasMore` is `true`
78
+ * @prop {boolean} [virtualize=false] - Detaches body row pages far from the current scroll position once the row count exceeds `virtualizeThreshold`, each replaced by a spacer row of the same height
79
+ * @prop {number} [pageSize=20] - Number of rows per page, for both `eunloadmore` and `virtualize`
82
80
  * @attr {number} [page-size=20] - Number of rows per page
83
- * @prop {number} [virtualizeThreshold=100] - Total known row count above which `virtualize` actually starts detaching pages
84
- * @attr {number} [virtualize-threshold=100] - Total known row count above which `virtualize` actually starts detaching pages
85
- * @prop {number} [bufferPages=1] - Number of extra pages kept mounted before and after the page currently in view
86
- * @attr {number} [buffer-pages=1] - Number of extra pages kept mounted before and after the page currently in view
87
- * @prop {boolean} [hasMore=false] - Whether more rows can still be obtained ; the `infinite` sentinel never fires `eunloadmore` while this is `false`
81
+ * @prop {number} [virtualizeThreshold=100] - Row count above which `virtualize` starts detaching pages
82
+ * @attr {number} [virtualize-threshold=100] - Row count above which `virtualize` starts detaching pages
83
+ * @prop {number} [bufferPages=1] - Number of extra pages kept mounted before and after the page in view
84
+ * @attr {number} [buffer-pages=1] - Number of extra pages kept mounted before and after the page in view
85
+ * @prop {boolean} [hasMore=false] - Whether more rows can still be obtained
88
86
  * @attr {boolean} [has-more=false] - Whether more rows can still be obtained
89
- * @prop {boolean} [loadingMore=false] - Whether a `eunloadmore` request is currently in flight ; set to `true` right before dispatching the event, left to the consumer to reset once new rows are appended
90
- * @attr {boolean} [loading-more=false] - Whether a `eunloadmore` request is currently in flight
91
- * @prop {string} [rootMargin='400px'] - How far before the physical end of the table `eunloadmore` triggers, as a CSS-like margin
92
- * @attr {string} [root-margin='400px'] - How far before the physical end of the table `eunloadmore` triggers
93
- * @prop {string} [loadingMoreLabel='Loading more rows…'] - Accessible label passed to the trailing `eun-loader`
87
+ * @prop {boolean} [loadingMore=false] - Whether a `eunloadmore` request is in flight ; set to `true` right before the event fires, reset by the consumer once rows are appended
88
+ * @attr {boolean} [loading-more=false] - Whether a `eunloadmore` request is in flight
89
+ * @prop {string} [rootMargin='400px'] - How far before the end of the table `eunloadmore` triggers, as a CSS-like margin
90
+ * @attr {string} [root-margin='400px'] - How far before the end of the table `eunloadmore` triggers
91
+ * @prop {string} [loadingMoreLabel='Loading more rows…'] - Accessible label passed to the trailing `eun-loader` ; translated from `locale` while unset
94
92
  * @attr {string} [loading-more-label='Loading more rows…'] - Accessible label passed to the trailing `eun-loader`
95
- * @fires {LoadMoreEvent} eunloadmore - Dispatched when `infinite` is set, more rows are needed, and `hasMore` is `true` ; `loadingMore` is already `true` by the time this fires
96
- * @cssprop [--table-border-color] - Set a custom border color
97
- * @cssprop [--table-background] - Set a custom background color
98
- * @cssprop [--table-max-height] - Set a custom max height (with scroll) ; `none` by default
99
- * @cssprop [--table-skeleton-stagger] - Delay between each skeleton row's entrance animation, as a CSS time (e.g. `60ms`)
100
- * @cssprop [--table-skeleton-duration] - Duration of each skeleton row's own entrance animation, as a CSS time (e.g. `320ms`)
101
- * @cssprop [--table-loader-color] - Set a custom color for the trailing `eun-loader` shown while `loadingMore` (an `infinite` table)
102
- * @cssprop [--table-sync-overlay-color] - Set a custom highlight color for the shimmer sweep shown while `syncing`
103
- * @cssprop [--table-sync-duration] - Set a custom duration for the `syncing` shimmer sweep, as a CSS time (default `1.6s`)
93
+ * @fires {TableSelectionChangeEvent} euntableselectionchange - Emitted whenever the selection changes, from any source
94
+ * @fires {TableActionEvent} euntableaction - Emitted when a floating action bar action is activated
95
+ * @fires {TableRowClickEvent} euntablerowclick - Emitted on a body row click outside its checkbox, its action cell, and any interactive content, while no row is selected ; cancelable, `preventDefault()` keeps the row's `data-table-row-link` link from being followed
96
+ * @fires {LoadMoreEvent} eunloadmore - Dispatched when `infinite` is set, more rows are needed, and `hasMore` is `true`
97
+ * @cssprop [--table-border-color] - Sets the border color of the frame and the rows
98
+ * @cssprop [--table-background] - Sets the background color of the frame
99
+ * @cssprop [--table-max-height] - Sets a max height, scrolling past it ; `none` by default
100
+ * @cssprop [--table-caption-color] - Sets the text color of the `<caption>`
101
+ * @cssprop [--table-caption-font-size] - Sets the font size of the `<caption>`
102
+ * @cssprop [--table-caption-font-weight] - Sets the font weight of the `<caption>`
103
+ * @cssprop [--table-header-background] - Sets the background color of the header cells
104
+ * @cssprop [--table-footer-background] - Sets the background color of the footer cells
105
+ * @cssprop [--table-row-background] - Sets the background color of the body cells
106
+ * @cssprop [--table-row-hover-background] - Sets the tint of a hovered or focused body row
107
+ * @cssprop [--table-row-selected-background] - Sets the tint of a selected body row
108
+ * @cssprop [--table-row-dragging-background] - Sets the tint of a row being reordered with `createDragReorder`
109
+ * @cssprop [--table-row-transition-duration] - Sets the duration of the hover and selection tint transitions
110
+ * @cssprop [--table-column-color] - Sets the text color of the header cells
111
+ * @cssprop [--table-column-font-weight] - Sets the font weight of the header cells
112
+ * @cssprop [--table-cell-color] - Sets the text color of the cells
113
+ * @cssprop [--table-column-border-color] - Sets the color of a vertical divider between columns ; transparent by default
114
+ * @cssprop [--table-sticky-column-background] - Sets the background color of a sticky column's cells, and of the selection column
115
+ * @cssprop [--table-sticky-row-background] - Sets the background color of the footer cells while `stickyFooter`
116
+ * @cssprop [--table-sticky-border-color] - Sets the color of the edges of a sticky header, footer, or column
117
+ * @cssprop [--table-checkbox-background] - Sets the background color of an unchecked selection checkbox
118
+ * @cssprop [--table-checkbox-border-color] - Sets the border color of an unchecked selection checkbox
119
+ * @cssprop [--table-checkbox-hover] - Sets the background color of an unchecked selection checkbox while hovered
120
+ * @cssprop [--table-action-color] - Sets the text and icon color of a row end action
121
+ * @cssprop [--eun-table-select-col-width] - Sets the width of the selection column ; 40px by default
122
+ * @cssprop [--eun-table-action-col-width] - Sets the width of the row end action column, which stays fixed so a sticky last column lines up with it ; 56px by default, enough for an icon-only button
123
+ * @cssprop [--table-skeleton-stagger] - Delay between each placeholder row's entrance animation, as a CSS time (e.g. `60ms`)
124
+ * @cssprop [--table-skeleton-duration] - Duration of each placeholder row's entrance animation, as a CSS time (e.g. `320ms`)
125
+ * @cssprop [--table-loader-color] - Sets the color of the trailing `eun-loader` shown while `loadingMore`
126
+ * @cssprop [--table-sync-overlay-color] - Sets the highlight color of the `syncing` shimmer sweep
127
+ * @cssprop [--table-sync-duration] - Sets the duration of the `syncing` shimmer sweep, as a CSS time (default `1.6s`)
104
128
  * @element eun-table
105
129
  * @template T Shape of a data row, in "managed" `columns`/`data` mode.
106
130
  */
@@ -122,6 +146,8 @@ export declare class EunomiaTable<T extends object = Record<string, unknown>> ex
122
146
  /** @default false */
123
147
  stickyHeader: boolean;
124
148
  /** @default false */
149
+ stickyFooter: boolean;
150
+ /** @default false */
125
151
  stickyFirstColumn: boolean;
126
152
  /** @default false */
127
153
  stickyLastColumn: boolean;
@@ -151,31 +177,56 @@ export declare class EunomiaTable<T extends object = Record<string, unknown>> ex
151
177
  loadingMore: boolean;
152
178
  /** @default 400px */
153
179
  rootMargin: string;
154
- /** @default Loading more rows… */
155
- loadingMoreLabel: string;
180
+ /**
181
+ * Translated from `locale` while unset.
182
+ * @default Loading more rows…
183
+ */
184
+ loadingMoreLabel?: string;
156
185
  /** @default [] */
157
186
  actions: EunomiaTableAction[];
158
- /** @default selected */
159
- selectedLabel: string;
160
- /** @default Select all */
161
- selectAllLabel: string;
162
- /** @default Deselect all */
163
- deselectAllLabel: string;
164
- /** @default Select all rows */
165
- selectAllAriaLabel: string;
166
- /** @default Deselect all rows */
167
- deselectAllAriaLabel: string;
168
- /** @default Select row */
169
- selectRowAriaLabel: string;
170
- /** @default Selection actions */
171
- toolbarAriaLabel: string;
172
- /** @default Clear selection */
173
- closeActionBarAriaLabel: string;
174
- /**
175
- * Programmatic alternative to hand-authoring `eun-table-header`/
176
- * `eun-table-column` — see the class doc's "Programmatic `columns`/`data`"
177
- * section. Setting this (even to an empty array) puts the table in
178
- * "managed" mode.
187
+ /**
188
+ * Translated from `locale` while unset.
189
+ * @default selected
190
+ */
191
+ selectedLabel?: string;
192
+ /**
193
+ * Translated from `locale` while unset.
194
+ * @default Select all
195
+ */
196
+ selectAllLabel?: string;
197
+ /**
198
+ * Translated from `locale` while unset.
199
+ * @default Deselect all
200
+ */
201
+ deselectAllLabel?: string;
202
+ /**
203
+ * Translated from `locale` while unset.
204
+ * @default Select all rows
205
+ */
206
+ selectAllAriaLabel?: string;
207
+ /**
208
+ * Translated from `locale` while unset.
209
+ * @default Deselect all rows
210
+ */
211
+ deselectAllAriaLabel?: string;
212
+ /**
213
+ * Translated from `locale` while unset.
214
+ * @default Select row
215
+ */
216
+ selectRowAriaLabel?: string;
217
+ /**
218
+ * Translated from `locale` while unset.
219
+ * @default Selection actions
220
+ */
221
+ toolbarAriaLabel?: string;
222
+ /**
223
+ * Translated from `locale` while unset.
224
+ * @default Clear selection
225
+ */
226
+ closeActionBarAriaLabel?: string;
227
+ /**
228
+ * Programmatic alternative to authoring the `<table>`. Setting this
229
+ * (even to an empty array) puts the table in "managed" mode.
179
230
  */
180
231
  columns?: EunomiaTableColumnDef<T>[];
181
232
  /**
@@ -184,96 +235,98 @@ export declare class EunomiaTable<T extends object = Record<string, unknown>> ex
184
235
  */
185
236
  data: T[];
186
237
  /**
187
- * A single row-end action (button or dropdown), in "managed" mode — the
188
- * data-driven equivalent of a `slot="action"` element.
238
+ * A single row end action (button or dropdown), in "managed" mode.
189
239
  */
190
240
  rowAction?: EunomiaTableRowActionDef<T>;
191
241
  /**
192
- * Computes each row's stable key, in "managed" mode ; defaults to a
193
- * DOM-order fallback, same caveat as `eun-table-item`'s own `row-key`.
242
+ * Computes each row's stable key, in "managed" mode.
194
243
  */
195
244
  rowKey?: (row: T, index: number) => string;
196
245
  /**
197
- * The current selection, as a `Set` internally — the source of truth
198
- * `selectedKeys` reads/writes through. A `@state()`, not a `@property()` :
199
- * external reads/writes go through the `selectedKeys` accessor, which
200
- * handles change detection and event dispatch explicitly.
246
+ * The current selection, the source of truth `selectedKeys` reads and
247
+ * writes through.
201
248
  * @internal
202
249
  */
203
250
  private internalSelection;
204
251
  /**
205
- * Whether any row currently has action content — computed by scanning
206
- * every item's `slot="action"` content, not author-set.
252
+ * The zero-size marker observed to detect the end of the rows, rendered
253
+ * only while `infinite` is set.
207
254
  * @internal
255
+ * @readonly
208
256
  */
209
- private hasAction;
257
+ private readonly sentinelEl?;
210
258
  /**
211
- * The header assigned to the default slot, if any.
259
+ * The framed scroll container wrapping the slotted table. A sticky
260
+ * header, column, or footer sticks relative to it.
212
261
  * @internal
213
262
  * @readonly
214
263
  */
215
- private readonly headerEls;
264
+ private readonly frameEl?;
216
265
  /**
217
- * Every `eun-table-item` assigned to the default slot, in order.
266
+ * Watches the table's `<caption>` size, which this element reserves
267
+ * above the frame.
218
268
  * @internal
219
- * @readonly
220
269
  */
221
- private readonly itemEls;
270
+ private captionObserver?;
222
271
  /**
223
- * Watches the header's own `eun-table-column` children — additions,
224
- * removals, and `width` changes — none of which a `slotchange` on this
225
- * component's own slot would catch (that only fires when the *assigned*
226
- * nodes themselves change, not their descendants).
272
+ * The `<caption>` currently watched by {@link captionObserver}.
227
273
  * @internal
228
274
  */
229
- private headerObserver?;
275
+ private observedCaption?;
230
276
  /**
231
- * The header currently wired to {@link headerObserver}, so it's only
232
- * recreated when the header itself actually changes.
277
+ * Watches the light DOM for structural changes (rows, cells, sections)
278
+ * so generated cells and row state stay in sync.
233
279
  * @internal
234
280
  */
235
- private observedHeader?;
281
+ private mutationObserver?;
236
282
  /**
237
- * The body-portaled action bar, while mounted.
283
+ * The resolved key of every body row known at the last sync.
238
284
  * @internal
239
285
  */
240
- private actionBarEl?;
286
+ private rowKeys;
287
+ /**
288
+ * Whether `aria-rowcount`/`aria-rowindex` were set for `virtualize`, so
289
+ * they're only ever removed by this component.
290
+ * @internal
291
+ */
292
+ private ariaRowsApplied;
293
+ /**
294
+ * The body row count when the last `eunloadmore` fired, to announce how
295
+ * many rows it added once they arrive.
296
+ * @internal
297
+ */
298
+ private rowCountBeforeLoad?;
241
299
  /**
242
- * The zero-size marker observed to detect "user reached the end of what's
243
- * currently known", rendered directly in this component's own shadow root
244
- * (a sibling of the default `<slot>`) only while `infinite` is set — see
245
- * `eun-infinite-list`'s own `#sentinel` for the same pattern.
300
+ * The polite live region announcing rows loaded by `infinite`.
246
301
  * @internal
247
302
  * @readonly
248
303
  */
249
- private readonly sentinelEl?;
304
+ private readonly announcerEl?;
250
305
  /**
251
- * Every logical `eun-table-item`, mounted or currently virtualized-out
252
- * (replaced by a `TABLE_ROW_SPACER_CLASS` placeholder), in document
253
- * order — only kept up to date while `virtualize` is set ; `itemEls`
254
- * alone (mounted-only) is used otherwise. Reconstructed on every
255
- * legitimate `slotchange` (see {@link syncLogicalItems}) by threading each
256
- * spacer's cached nodes back into their position, the same reconciliation
257
- * `eun-infinite-list`'s own `syncItemsFromLightDom` performs.
306
+ * The body-portaled action bar, while mounted.
307
+ * @internal
308
+ */
309
+ private actionBarEl?;
310
+ /**
311
+ * Every body row, mounted or virtualized-out, in document order ; only
312
+ * kept up to date while `virtualize` is set.
258
313
  * @internal
259
314
  */
260
- private logicalItems;
315
+ private logicalRows;
261
316
  /**
262
- * Page indices currently mounted (their rows are real children of this
263
- * host, not replaced by a spacer).
317
+ * Page indices currently mounted.
264
318
  * @internal
265
319
  */
266
320
  private mountedPages;
267
321
  /**
268
- * Cached row nodes for each currently-virtualized-out page, keyed by page
269
- * index — reattached as-is once a page remounts, so no consumer
270
- * state/listeners inside them are ever lost.
322
+ * Cached rows of each virtualized-out page, reattached as-is once the
323
+ * page remounts.
271
324
  * @internal
272
325
  */
273
326
  private readonly detachedByPage;
274
327
  /**
275
328
  * Measured height (px) of each page, filled in the first time it's
276
- * unmounted ; used instead of {@link avgRowHeight} once known.
329
+ * unmounted.
277
330
  * @internal
278
331
  */
279
332
  private pageHeights;
@@ -283,35 +336,12 @@ export declare class EunomiaTable<T extends object = Record<string, unknown>> ex
283
336
  */
284
337
  private avgRowHeight;
285
338
  /**
286
- * Set while this component is itself inserting/removing light DOM
287
- * children for `virtualize` (mount/unmount), so the resulting
288
- * `slotchange` isn't misread as a consumer-driven content change.
289
- * @internal
290
- */
291
- private mutatingSlot;
292
- /**
293
- * Count of `eunloadmore` events dispatched so far ; becomes the event's
294
- * own `page` field.
339
+ * Count of `eunloadmore` events dispatched so far.
295
340
  * @internal
296
341
  */
297
342
  private requestedPages;
298
343
  /** @internal */
299
344
  private resizeObserver?;
300
- /**
301
- * The row that last received focus somewhere within it (its own leading
302
- * stop, or any of its content) — tracked so focus can be restored nearby
303
- * if that exact row later disconnects (a removal, or `managed` mode's
304
- * full re-render via `replaceChildren`) while it's what still holds
305
- * focus. Cleared once consumed by {@link restoreFocusIfLost}.
306
- * @internal
307
- */
308
- private lastFocusedRow?;
309
- /**
310
- * {@link lastFocusedRow}'s row index at the time it was last focused,
311
- * used to refocus whatever row now sits in that same slot.
312
- * @internal
313
- */
314
- private lastFocusedRowIndex;
315
345
  connectedCallback(): void;
316
346
  disconnectedCallback(): void;
317
347
  protected firstUpdated(changed: PropertyValues): void;
@@ -323,236 +353,254 @@ export declare class EunomiaTable<T extends object = Record<string, unknown>> ex
323
353
  get selectedKeys(): string[];
324
354
  set selectedKeys(keys: string[]);
325
355
  /**
326
- * Regenerates this table's own light DOM from `columns`/`data`/
327
- * `rowAction`/`rowKey` — see the class doc's "Programmatic `columns`/
328
- * `data`" section. A no-op unless `columns` is set (light-DOM-authored
329
- * tables never call this). Previously-selected keys that still exist
330
- * among the regenerated rows stay selected ; ones that don't (a row was
331
- * removed from `data`) drop out of the selection.
356
+ * The slotted native table.
332
357
  * @private
333
358
  */
334
- private regenerateManagedChildren;
359
+ private get tableEl();
335
360
  /**
336
- * Every `eun-table-item` this table currently knows about — the full
337
- * logical set (including virtualized-out pages) while `virtualize` is
338
- * set, the mounted-only `itemEls` otherwise.
361
+ * Whether any body row is currently selected.
339
362
  * @private
340
363
  */
341
- private currentItems;
364
+ private get selectionActive();
342
365
  /**
343
- * Tracks {@link lastFocusedRow}/{@link lastFocusedRowIndex} from any
344
- * `focusin` landing on a row's own leading stop or its content —
345
- * `event.target` is that row itself either way, whether directly focused
346
- * or retargeted through its own shadow root ; slotted content (an
347
- * `action` button, ...) instead needs `closest`, since it's a light-DOM
348
- * descendant rather than something the shadow boundary retargets.
366
+ * Every visible or accessible text the table renders: its own property
367
+ * when set, else the `locale` dictionary's.
349
368
  * @private
350
369
  */
351
- private readonly handleFocusIn;
370
+ private get labels();
352
371
  /**
353
- * Refocuses whatever row now sits at {@link lastFocusedRowIndex} once
354
- * {@link lastFocusedRow} itself has disconnected (removed outright, or
355
- * recreated wholesale by `regenerateManagedChildren`) while focus was
356
- * still on it or its content — otherwise that focus would just silently
357
- * fall back to the document body. Left alone if focus already landed
358
- * somewhere else on its own (the consumer moved it deliberately before
359
- * the removal), detected by the document's active element no longer
360
- * being the body.
372
+ * Re-syncs on structural light DOM changes only: added or removed rows,
373
+ * cells, or sections, and a changed `data-row-key`. A change deeper
374
+ * inside a cell's own content is ignored.
361
375
  * @private
362
376
  */
363
- private restoreFocusIfLost;
377
+ private readonly handleMutations;
364
378
  /**
365
- * Re-scans the slotted header/items and pushes every derived/config value
366
- * down onto them — called after structural changes (`slotchange`, the
367
- * header's own `MutationObserver`, {@link regenerateManagedChildren}) and
368
- * whenever a reactive property that affects children changes (see
369
- * {@link updated}).
379
+ * Every body row this table currently knows about: the full logical set
380
+ * (including virtualized-out pages) while `virtualize` is set, the
381
+ * mounted rows otherwise.
370
382
  * @private
371
383
  */
372
- private syncChildren;
373
- /** @private */
374
- private readonly handleSlotChange;
384
+ private currentRows;
375
385
  /**
376
- * (Re)installs {@link headerObserver} on `header`, only when it's actually
377
- * a different element than last time.
386
+ * The body section `virtualize` operates on.
378
387
  * @private
379
388
  */
380
- private watchHeaderColumns;
389
+ private get bodyEl();
381
390
  /**
382
- * Rebuilds the shared `grid-template-columns` track list from the
383
- * header's own `eun-table-column` children's `width`s, and whether any
384
- * item currently has action content — see the class doc's CSS Subgrid
385
- * section.
391
+ * Pushes the selection and configuration state down onto the slotted
392
+ * table: generated selection cells, row state, action cells, the
393
+ * loading placeholder body, and the action bar. Its own mutations are
394
+ * dropped from the observer queue so they never trigger another sync.
386
395
  * @private
387
396
  */
388
- private updateColumnsTemplate;
389
- /** @private */
390
- private wireHeader;
397
+ private sync;
398
+ /**
399
+ * Reserves the height of the table's `<caption>` above the frame, where
400
+ * the light DOM sheet positions it, and keeps it up to date as the
401
+ * caption resizes.
402
+ * @private
403
+ */
404
+ private watchCaption;
405
+ /**
406
+ * Adds the selection column's leading cell to `row` if missing, and
407
+ * returns it.
408
+ * @private
409
+ */
410
+ private ensureSelectCell;
391
411
  /** @private */
392
- private wireItems;
412
+ private removeSelectCell;
413
+ /**
414
+ * Returns the checkbox inside a selection cell, creating it if missing.
415
+ * @private
416
+ */
417
+ private ensureCheckbox;
418
+ /**
419
+ * Adds or removes the header's selection cell, holding the select-all
420
+ * checkbox.
421
+ * @private
422
+ */
423
+ private syncHeader;
424
+ /**
425
+ * Keeps footer rows aligned with an empty selection cell.
426
+ * @private
427
+ */
428
+ private syncFooter;
429
+ /**
430
+ * Resolves each body row's key and pushes its selection and action cell
431
+ * state.
432
+ * @private
433
+ */
434
+ private syncRows;
393
435
  /**
394
- * Every row, header first — the space `ArrowUp`/`ArrowDown`/`Ctrl+Home`/
395
- * `Ctrl+End` move across. Excludes every `eun-table-item` while `loading`
396
- * is set, since they're hidden (`display: none`) and shouldn't be
397
- * reachable ; otherwise the full logical set (mounted or virtualized-out)
398
- * while `virtualize` is on, so `Ctrl+End`/`ArrowDown` math stays correct
399
- * regardless of what's currently mounted (see {@link ensureRowMounted}).
436
+ * The name of a body row: the text of its row header (`<th scope="row">`,
437
+ * or else its first `<th>`), used to label its checkbox.
400
438
  * @private
401
439
  */
402
- private allRows;
440
+ private rowName;
441
+ /**
442
+ * Gives every row its position and the table its total row count while
443
+ * `virtualize` is set, so assistive technology announces the real size
444
+ * of the table even though only part of its rows are in the DOM. The
445
+ * count is `-1` (unknown) while `infinite` can still load more.
446
+ * @private
447
+ */
448
+ private syncAriaRows;
449
+ /**
450
+ * Announces how many rows the last `eunloadmore` added, once they're in.
451
+ * @private
452
+ */
453
+ private announceLoadedRows;
454
+ /**
455
+ * Adds the placeholder body while `loading`, shaped after the header's
456
+ * own cells so its columns line up, and removes it otherwise.
457
+ * @private
458
+ */
459
+ private syncSkeleton;
403
460
  /** @private */
404
- private rowIndexOf;
461
+ private createSkeleton;
405
462
  /**
406
- * Moves focus to the row before/after `rowIndex` — `ArrowUp`/`ArrowDown`
407
- * delegated up from a row's own `TableRowMixin`. Every row is always its
408
- * own permanent `Tab` stop (see `TableRowMixin`'s own class doc), so this
409
- * only ever needs to resolve *which* row and hand it a plain `.focus()`,
410
- * no column bookkeeping of any kind.
463
+ * The body row `target` belongs to, if any.
411
464
  * @private
412
465
  */
413
- private moveFocus;
466
+ private bodyRowOf;
414
467
  /**
415
- * Moves focus to the header (`Ctrl+Home`) or the last row (`Ctrl+End`).
468
+ * Whether the click went to interactive content of `row` (a link, a
469
+ * button, an input, a nested eunomia control) rather than to the row.
416
470
  * @private
417
471
  */
418
- private moveToGridEdge;
472
+ private isInteractiveClick;
419
473
  /**
420
- * Moves focus to `rows[rowIndex]`, clamped to the grid's own bounds,
421
- * mounting its page first if it's currently virtualized-out.
474
+ * Toggles a row while rows are selected, otherwise fires
475
+ * {@link TableRowClickEvent}.
422
476
  * @private
423
477
  */
424
- private focusRowAt;
478
+ private activateRow;
425
479
  /**
426
- * Mounts `rows[rowIndex]`'s page first if it's a `eun-table-item`
427
- * currently virtualized-out — the same "mount before focusing" fix
428
- * `eun-infinite-list`'s own `#focusItem` applies, needed because
429
- * `Ctrl+End`/a long `ArrowDown` run can target a row several pages away
430
- * from what's currently mounted.
480
+ * Follows the row's `data-table-row-link` link, if any, keeping the
481
+ * modifier keys so a `Ctrl`/`Cmd` click still opens a new tab. The link
482
+ * stays the row's one keyboard-reachable way to do the same.
431
483
  * @private
432
484
  */
433
- private ensureRowMounted;
485
+ private followRowLink;
486
+ /** @private */
487
+ private readonly handleClick;
488
+ /** @private */
489
+ private readonly handleCheckboxChange;
434
490
  /** @private */
435
491
  private toggleRow;
436
492
  /** @private */
437
493
  private toggleSelectAll;
438
494
  /**
439
- * Applies a new selection and fires {@link TableSelectionChangeEvent} —
440
- * the single path both internal interactions (a checkbox, select-all) and
441
- * an external `selectedKeys` assignment funnel through, so the event
442
- * fires consistently either way (the same "always fires, whatever the
443
- * source" convention `eun-scheduler`'s own `eunperiodchange` uses for its
444
- * controlled `view`/`displayedDate`).
495
+ * Applies a new selection and fires {@link TableSelectionChangeEvent},
496
+ * whatever the source.
445
497
  * @private
446
498
  */
447
499
  private setSelection;
448
500
  /**
449
- * Creates the body-portaled action bar the first time it's needed.
501
+ * Creates the action bar the first time it's needed, right after the
502
+ * table so it comes next in the `Tab` order, and shows it as a manual
503
+ * popover so it renders above the page whatever the table's ancestors
504
+ * clip or transform.
450
505
  * @private
451
506
  */
452
507
  private ensureActionBar;
453
508
  /**
454
- * Tears down the body-portaled action bar. If focus is currently inside
455
- * it (the close button, most often), removing it would otherwise drop
456
- * focus to the document body the same way removing a focused row would
457
- * (see {@link restoreFocusIfLost}) — except the bar lives outside this
458
- * component's own DOM subtree entirely, so that row-focused mechanism
459
- * can't see it ; this restores focus back onto the grid itself (its
460
- * header, or its first row absent one) instead.
509
+ * Tears down the action bar. If focus was inside it, it
510
+ * moves back to the table's first selection checkbox rather than
511
+ * falling to the document body.
461
512
  * @private
462
513
  */
463
514
  private teardownActionBar;
464
515
  /**
465
- * Re-dispatches `euntableaction` from `eun-table` itself : the action bar
466
- * lives outside this component's own DOM tree entirely (portaled to
467
- * `document.body`), so its own `bubbles: true, composed: false` event
468
- * never reaches here on its own — the same reasoning `eun-scheduler`'s
469
- * `handleEditorCreate` documents for its own embedded (non-portaled but
470
- * still non-composed) editor.
516
+ * Re-dispatches `euntableaction` from `eun-table` itself, since the
517
+ * action bar is a sibling of this element, not a descendant.
471
518
  * @private
472
519
  */
473
520
  private readonly handlePortaledAction;
474
521
  /** @private */
475
522
  private readonly handleEscapeClear;
476
523
  /**
477
- * Mounts/updates/unmounts the floating action bar based on the current
478
- * selection.
524
+ * Mounts, updates, or unmounts the floating action bar based on the
525
+ * current selection.
479
526
  * @private
480
527
  */
481
528
  private syncActionBar;
482
529
  /**
483
- * Rebuilds {@link logicalItems} from the current light DOM, reconciling it
484
- * with whatever's still cached behind a spacer — the same reconciliation
485
- * `eun-infinite-list`'s own `syncItemsFromLightDom` performs, scoped here
486
- * to `eun-table-item` children only (the header is excluded, it's never
487
- * virtualized). Also recomputes {@link mountedPages} from the rebuilt
488
- * page count. A no-op unless `virtualize` is set.
530
+ * Renders the native table from `columns`/`data`/`rowAction`/`rowKey`
531
+ * into this element's light DOM. Previously selected keys that no
532
+ * longer match a row drop out of the selection.
489
533
  * @private
490
534
  */
491
- private syncLogicalItems;
535
+ private renderManagedTable;
536
+ /** @private */
537
+ private columnStyle;
538
+ /** @private */
539
+ private renderManagedCell;
540
+ /**
541
+ * Renders a row's `rowAction`: a `eun-dropdown-button` for
542
+ * `type: "dropdown"`, a `eun-button` otherwise.
543
+ * @private
544
+ */
545
+ private renderRowAction;
546
+ /**
547
+ * Rebuilds {@link logicalRows} from the body, threading each spacer's
548
+ * cached rows back into their position, and recomputes
549
+ * {@link mountedPages}.
550
+ * @private
551
+ */
552
+ private syncLogicalRows;
553
+ /**
554
+ * Remounts every virtualized-out page, before the light DOM gets
555
+ * re-rendered wholesale.
556
+ * @private
557
+ */
558
+ private mountAllPages;
492
559
  /** @private */
493
560
  private readonly handleTableScroll;
494
561
  /**
495
562
  * Mounts the page range around the current scroll position and
496
- * virtualizes everything outside it, once the known row count passes
497
- * `virtualizeThreshold` ; below that, every page simply stays mounted.
563
+ * virtualizes everything outside it, once the row count passes
564
+ * `virtualizeThreshold`.
498
565
  * @private
499
566
  */
500
567
  private syncPages;
501
568
  /**
502
- * Estimates which page the middle of the current viewport falls into, by
503
- * walking cumulative page heights — measured ones where known, an
504
- * average-based estimate otherwise. `this` is the scroll container itself
505
- * (`:host` sets `overflow: auto`, see table.styles.ts), so its own
506
- * `scrollTop`/`clientHeight` are read directly.
569
+ * Estimates which page the middle of the viewport falls into, from
570
+ * measured page heights where known, an average otherwise.
507
571
  * @private
508
572
  */
509
573
  private estimateCenterPage;
510
574
  /** @private */
511
575
  private estimatePageHeight;
512
576
  /**
513
- * Remounts a virtualized-out page by reattaching its cached nodes in
514
- * place of its spacer. Returns whether it actually did anything (a no-op
515
- * if already mounted), so {@link syncPages} only re-syncs children once
516
- * per batch rather than once per page.
577
+ * Remounts a virtualized-out page in place of its spacer. Returns
578
+ * whether it did anything.
517
579
  * @private
518
580
  */
519
581
  private mountPage;
520
582
  /**
521
- * Virtualizes out a mounted page : measures its current rendered height
522
- * (used both as its own spacer size and to refine {@link avgRowHeight}),
523
- * replaces its rows with a single full-width (`grid-column: 1 / -1`)
524
- * spacer of that height so the scrollbar/scroll position don't jump, and
525
- * caches the actual nodes for an exact reattach later. Returns whether it
526
- * actually did anything (a no-op if already virtualized-out, or if the
527
- * page can't be measured — not currently rendered with real layout).
583
+ * Replaces a mounted page's rows with a single spacer row of the same
584
+ * measured height, caching the rows for an exact reattach later.
585
+ * Returns whether it did anything.
528
586
  * @private
529
587
  */
530
588
  private unmountPage;
531
589
  /**
532
- * (Re)creates {@link resizeObserver}/the scroll listener once `virtualize`
590
+ * (Re)creates the resize observer and scroll listener once `virtualize`
533
591
  * is set, and tears them down once it's cleared.
534
592
  * @private
535
593
  */
536
594
  private ensureVirtualizeObservers;
537
595
  /**
538
596
  * Sets up (or re-creates, after `rootMargin` changes) the observer
539
- * driving {@link maybeLoadMore} — the sentinel lives in this component's
540
- * own shadow root (see {@link sentinelEl}), so `this` itself (the scroll
541
- * container) is used as the observer's `root`.
597
+ * driving {@link maybeLoadMore}, with the frame, the scroll container,
598
+ * as its root.
542
599
  * @private
543
600
  */
544
601
  private setupTableLoadObserver;
545
602
  /** @private */
546
603
  private maybeLoadMore;
547
- /**
548
- * Renders `skeletonRows` placeholder rows, each shaped like a real
549
- * `eun-table-item` (same select/data/action cell count, via CSS Subgrid)
550
- * so they align under the real header's columns. `--_row-index` drives
551
- * each row's own staggered entrance animation delay (see
552
- * table-skeleton-row.styles.ts).
553
- * @private
554
- */
555
- private renderSkeletonRows;
556
604
  render(): TemplateResult;
557
605
  }
558
606
  declare global {