@public-ui/components 2.0.5 → 2.0.6

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 (588) hide show
  1. package/custom-elements.json +1 -1
  2. package/dist/cjs/{align-floating-elements-c80675c1.js → align-floating-elements-a2defb7a.js} +1 -1
  3. package/dist/cjs/{align-floating-elements-c80675c1.js.map → align-floating-elements-a2defb7a.js.map} +1 -1
  4. package/dist/cjs/app-globals-199449c5.js +4 -0
  5. package/dist/cjs/app-globals-199449c5.js.map +1 -0
  6. package/dist/cjs/associated.controller-9ab5fcdd.js +4 -0
  7. package/dist/cjs/associated.controller-9ab5fcdd.js.map +1 -0
  8. package/dist/cjs/{controller-00f1a46a.js → controller-35af34ae.js} +1 -1
  9. package/dist/cjs/{controller-00f1a46a.js.map → controller-35af34ae.js.map} +1 -1
  10. package/dist/cjs/controller-3e0a6924.js +4 -0
  11. package/dist/cjs/controller-3e0a6924.js.map +1 -0
  12. package/dist/cjs/{controller-58519c88.js → controller-3ebac0f5.js} +1 -1
  13. package/dist/cjs/{controller-58519c88.js.map → controller-3ebac0f5.js.map} +1 -1
  14. package/dist/cjs/{controller-f6115fd9.js → controller-abce4008.js} +1 -1
  15. package/dist/cjs/{controller-f6115fd9.js.map → controller-abce4008.js.map} +1 -1
  16. package/dist/cjs/controller-e3bbc6e9.js +4 -0
  17. package/dist/cjs/controller-e3bbc6e9.js.map +1 -0
  18. package/dist/cjs/{controller-icon-7f3f5230.js → controller-icon-fbbc139a.js} +1 -1
  19. package/dist/cjs/{controller-icon-7f3f5230.js.map → controller-icon-fbbc139a.js.map} +1 -1
  20. package/dist/cjs/dev.utils-0c521af5.js +4 -0
  21. package/dist/cjs/dev.utils-0c521af5.js.map +1 -0
  22. package/dist/cjs/devtools-51056247.js +4 -0
  23. package/dist/cjs/devtools-51056247.js.map +1 -0
  24. package/dist/cjs/form-field-msg-e7415486.js +4 -0
  25. package/dist/cjs/form-field-msg-e7415486.js.map +1 -0
  26. package/dist/cjs/{i18n-ff67b74c.js → i18n-411431b1.js} +1 -1
  27. package/dist/cjs/{i18n-ff67b74c.js.map → i18n-411431b1.js.map} +1 -1
  28. package/dist/cjs/index-7215e5f8.js +4 -0
  29. package/dist/cjs/index-7215e5f8.js.map +1 -0
  30. package/dist/cjs/{index-fcb5b16c.js → index-d6d9ba30.js} +1 -1
  31. package/dist/cjs/{index-fcb5b16c.js.map → index-d6d9ba30.js.map} +1 -1
  32. package/dist/cjs/index.cjs.js +1 -1
  33. package/dist/cjs/kol-abbr.cjs.entry.js +1 -1
  34. package/dist/cjs/kol-abbr.cjs.entry.js.map +1 -1
  35. package/dist/cjs/kol-accordion.cjs.entry.js +1 -1
  36. package/dist/cjs/kol-accordion.cjs.entry.js.map +1 -1
  37. package/dist/cjs/kol-alert-wc_3.cjs.entry.js +1 -1
  38. package/dist/cjs/kol-alert-wc_3.cjs.entry.js.map +1 -1
  39. package/dist/cjs/kol-alert.cjs.entry.js +1 -1
  40. package/dist/cjs/kol-alert.cjs.entry.js.map +1 -1
  41. package/dist/cjs/kol-avatar-wc.cjs.entry.js +1 -1
  42. package/dist/cjs/kol-avatar.cjs.entry.js +1 -1
  43. package/dist/cjs/kol-avatar.cjs.entry.js.map +1 -1
  44. package/dist/cjs/kol-badge.cjs.entry.js +1 -1
  45. package/dist/cjs/kol-badge.cjs.entry.js.map +1 -1
  46. package/dist/cjs/kol-breadcrumb.cjs.entry.js +1 -1
  47. package/dist/cjs/kol-breadcrumb.cjs.entry.js.map +1 -1
  48. package/dist/cjs/kol-button-group.cjs.entry.js +1 -1
  49. package/dist/cjs/kol-button-group.cjs.entry.js.map +1 -1
  50. package/dist/cjs/kol-button-link.cjs.entry.js +1 -1
  51. package/dist/cjs/kol-button.cjs.entry.js +1 -1
  52. package/dist/cjs/kol-button.cjs.entry.js.map +1 -1
  53. package/dist/cjs/kol-card.cjs.entry.js +1 -1
  54. package/dist/cjs/kol-card.cjs.entry.js.map +1 -1
  55. package/dist/cjs/kol-details.cjs.entry.js +1 -1
  56. package/dist/cjs/kol-details.cjs.entry.js.map +1 -1
  57. package/dist/cjs/kol-form.cjs.entry.js +1 -1
  58. package/dist/cjs/kol-heading.cjs.entry.js +1 -1
  59. package/dist/cjs/kol-heading.cjs.entry.js.map +1 -1
  60. package/dist/cjs/kol-icon.cjs.entry.js +1 -1
  61. package/dist/cjs/kol-image.cjs.entry.js +1 -1
  62. package/dist/cjs/kol-indented-text.cjs.entry.js +1 -1
  63. package/dist/cjs/kol-indented-text.cjs.entry.js.map +1 -1
  64. package/dist/cjs/kol-input-checkbox.cjs.entry.js +1 -1
  65. package/dist/cjs/kol-input-checkbox.cjs.entry.js.map +1 -1
  66. package/dist/cjs/kol-input-color.cjs.entry.js +1 -1
  67. package/dist/cjs/kol-input-color.cjs.entry.js.map +1 -1
  68. package/dist/cjs/kol-input-date.cjs.entry.js +1 -1
  69. package/dist/cjs/kol-input-date.cjs.entry.js.map +1 -1
  70. package/dist/cjs/kol-input-email.cjs.entry.js +1 -1
  71. package/dist/cjs/kol-input-email.cjs.entry.js.map +1 -1
  72. package/dist/cjs/kol-input-file.cjs.entry.js +1 -1
  73. package/dist/cjs/kol-input-file.cjs.entry.js.map +1 -1
  74. package/dist/cjs/kol-input-number.cjs.entry.js +1 -1
  75. package/dist/cjs/kol-input-number.cjs.entry.js.map +1 -1
  76. package/dist/cjs/kol-input-password.cjs.entry.js +1 -1
  77. package/dist/cjs/kol-input-password.cjs.entry.js.map +1 -1
  78. package/dist/cjs/kol-input-radio.cjs.entry.js +1 -1
  79. package/dist/cjs/kol-input-radio.cjs.entry.js.map +1 -1
  80. package/dist/cjs/kol-input-range.cjs.entry.js +1 -1
  81. package/dist/cjs/kol-input-range.cjs.entry.js.map +1 -1
  82. package/dist/cjs/kol-input-text.cjs.entry.js +1 -1
  83. package/dist/cjs/kol-input-text.cjs.entry.js.map +1 -1
  84. package/dist/cjs/kol-input.cjs.entry.js +1 -1
  85. package/dist/cjs/kol-input.cjs.entry.js.map +1 -1
  86. package/dist/cjs/kol-kolibri.cjs.entry.js +1 -1
  87. package/dist/cjs/kol-kolibri.cjs.entry.js.map +1 -1
  88. package/dist/cjs/kol-link-button.cjs.entry.js +1 -1
  89. package/dist/cjs/kol-link-button.cjs.entry.js.map +1 -1
  90. package/dist/cjs/kol-link-group.cjs.entry.js +1 -1
  91. package/dist/cjs/kol-link-group.cjs.entry.js.map +1 -1
  92. package/dist/cjs/kol-link-wc.cjs.entry.js +1 -1
  93. package/dist/cjs/kol-link.cjs.entry.js +1 -1
  94. package/dist/cjs/kol-logo.cjs.entry.js +1 -1
  95. package/dist/cjs/kol-logo.cjs.entry.js.map +1 -1
  96. package/dist/cjs/kol-modal.cjs.entry.js +1 -1
  97. package/dist/cjs/kol-modal.cjs.entry.js.map +1 -1
  98. package/dist/cjs/kol-nav.cjs.entry.js +1 -1
  99. package/dist/cjs/kol-nav.cjs.entry.js.map +1 -1
  100. package/dist/cjs/kol-pagination.cjs.entry.js +1 -1
  101. package/dist/cjs/kol-pagination.cjs.entry.js.map +1 -1
  102. package/dist/cjs/kol-popover-wc.cjs.entry.js +1 -1
  103. package/dist/cjs/kol-popover-wc.cjs.entry.js.map +1 -1
  104. package/dist/cjs/kol-progress.cjs.entry.js +1 -1
  105. package/dist/cjs/kol-progress.cjs.entry.js.map +1 -1
  106. package/dist/cjs/kol-quote.cjs.entry.js +1 -1
  107. package/dist/cjs/kol-quote.cjs.entry.js.map +1 -1
  108. package/dist/cjs/kol-select.cjs.entry.js +1 -1
  109. package/dist/cjs/kol-select.cjs.entry.js.map +1 -1
  110. package/dist/cjs/kol-skip-nav.cjs.entry.js +1 -1
  111. package/dist/cjs/kol-skip-nav.cjs.entry.js.map +1 -1
  112. package/dist/cjs/kol-span-wc_2.cjs.entry.js +1 -1
  113. package/dist/cjs/kol-span-wc_2.cjs.entry.js.map +1 -1
  114. package/dist/cjs/kol-span.cjs.entry.js +1 -1
  115. package/dist/cjs/kol-span.cjs.entry.js.map +1 -1
  116. package/dist/cjs/kol-spin.cjs.entry.js +1 -1
  117. package/dist/cjs/kol-spin.cjs.entry.js.map +1 -1
  118. package/dist/cjs/kol-split-button.cjs.entry.js +1 -1
  119. package/dist/cjs/kol-split-button.cjs.entry.js.map +1 -1
  120. package/dist/cjs/kol-symbol.cjs.entry.js +1 -1
  121. package/dist/cjs/kol-table.cjs.entry.js +1 -1
  122. package/dist/cjs/kol-table.cjs.entry.js.map +1 -1
  123. package/dist/cjs/kol-tabs.cjs.entry.js +1 -1
  124. package/dist/cjs/kol-tabs.cjs.entry.js.map +1 -1
  125. package/dist/cjs/kol-textarea.cjs.entry.js +1 -1
  126. package/dist/cjs/kol-textarea.cjs.entry.js.map +1 -1
  127. package/dist/cjs/kol-toast-container.cjs.entry.js +1 -1
  128. package/dist/cjs/kol-tree-item-wc.cjs.entry.js +1 -1
  129. package/dist/cjs/kol-tree-wc.cjs.entry.js +1 -1
  130. package/dist/cjs/kol-tree.cjs.entry.js +1 -1
  131. package/dist/cjs/kol-tree.cjs.entry.js.map +1 -1
  132. package/dist/cjs/kol-version.cjs.entry.js +1 -1
  133. package/dist/cjs/kol-version.cjs.entry.js.map +1 -1
  134. package/dist/cjs/kolibri.cjs.js +1 -1
  135. package/dist/cjs/loader.cjs.js +1 -1
  136. package/dist/cjs/{validation-6757487a.js → validation-e44562d8.js} +1 -1
  137. package/dist/cjs/{validation-6757487a.js.map → validation-e44562d8.js.map} +1 -1
  138. package/dist/cjs/{validation-215445d0.js → validation-ea46d26d.js} +1 -1
  139. package/dist/cjs/{validation-215445d0.js.map → validation-ea46d26d.js.map} +1 -1
  140. package/dist/components/component11.js +1 -1
  141. package/dist/components/component11.js.map +1 -1
  142. package/dist/components/component12.js +1 -1
  143. package/dist/components/component12.js.map +1 -1
  144. package/dist/components/component13.js +1 -1
  145. package/dist/components/component13.js.map +1 -1
  146. package/dist/components/component14.js +1 -1
  147. package/dist/components/component14.js.map +1 -1
  148. package/dist/components/component16.js +1 -1
  149. package/dist/components/component2.js +1 -1
  150. package/dist/components/component3.js +1 -1
  151. package/dist/components/component3.js.map +1 -1
  152. package/dist/components/component4.js +1 -1
  153. package/dist/components/component5.js +1 -1
  154. package/dist/components/component5.js.map +1 -1
  155. package/dist/components/component6.js +1 -1
  156. package/dist/components/component6.js.map +1 -1
  157. package/dist/components/component7.js +1 -1
  158. package/dist/components/component8.js +1 -1
  159. package/dist/components/component8.js.map +1 -1
  160. package/dist/components/component9.js +1 -1
  161. package/dist/components/controller-icon.js +1 -1
  162. package/dist/components/controller.js +1 -1
  163. package/dist/components/controller2.js +1 -1
  164. package/dist/components/controller2.js.map +1 -1
  165. package/dist/components/controller3.js +1 -1
  166. package/dist/components/controller4.js +1 -1
  167. package/dist/components/dev.utils.js +1 -1
  168. package/dist/components/dev.utils.js.map +1 -1
  169. package/dist/components/devtools.js +1 -1
  170. package/dist/components/devtools.js.map +1 -1
  171. package/dist/components/index.js +1 -1
  172. package/dist/components/index.js.map +1 -1
  173. package/dist/components/index2.js +1 -1
  174. package/dist/components/index2.js.map +1 -1
  175. package/dist/components/kol-abbr.js +1 -1
  176. package/dist/components/kol-abbr.js.map +1 -1
  177. package/dist/components/kol-accordion.js +1 -1
  178. package/dist/components/kol-accordion.js.map +1 -1
  179. package/dist/components/kol-avatar.js +1 -1
  180. package/dist/components/kol-avatar.js.map +1 -1
  181. package/dist/components/kol-breadcrumb.js +1 -1
  182. package/dist/components/kol-breadcrumb.js.map +1 -1
  183. package/dist/components/kol-button-group.js +1 -1
  184. package/dist/components/kol-button-group.js.map +1 -1
  185. package/dist/components/kol-button-link.js +1 -1
  186. package/dist/components/kol-card.js +1 -1
  187. package/dist/components/kol-card.js.map +1 -1
  188. package/dist/components/kol-details.js +1 -1
  189. package/dist/components/kol-details.js.map +1 -1
  190. package/dist/components/kol-form.js +1 -1
  191. package/dist/components/kol-heading.js +1 -1
  192. package/dist/components/kol-heading.js.map +1 -1
  193. package/dist/components/kol-image.js +1 -1
  194. package/dist/components/kol-input-checkbox.js +1 -1
  195. package/dist/components/kol-input-checkbox.js.map +1 -1
  196. package/dist/components/kol-input-color.js +1 -1
  197. package/dist/components/kol-input-color.js.map +1 -1
  198. package/dist/components/kol-input-date.js +1 -1
  199. package/dist/components/kol-input-date.js.map +1 -1
  200. package/dist/components/kol-input-email.js +1 -1
  201. package/dist/components/kol-input-email.js.map +1 -1
  202. package/dist/components/kol-input-file.js +1 -1
  203. package/dist/components/kol-input-file.js.map +1 -1
  204. package/dist/components/kol-input-number.js +1 -1
  205. package/dist/components/kol-input-number.js.map +1 -1
  206. package/dist/components/kol-input-password.js +1 -1
  207. package/dist/components/kol-input-password.js.map +1 -1
  208. package/dist/components/kol-input-radio.js +1 -1
  209. package/dist/components/kol-input-radio.js.map +1 -1
  210. package/dist/components/kol-input-range.js +1 -1
  211. package/dist/components/kol-input-range.js.map +1 -1
  212. package/dist/components/kol-input-text.js +1 -1
  213. package/dist/components/kol-input-text.js.map +1 -1
  214. package/dist/components/kol-kolibri.js +1 -1
  215. package/dist/components/kol-kolibri.js.map +1 -1
  216. package/dist/components/kol-link-button.js +1 -1
  217. package/dist/components/kol-link-button.js.map +1 -1
  218. package/dist/components/kol-link-group.js +1 -1
  219. package/dist/components/kol-link-group.js.map +1 -1
  220. package/dist/components/kol-logo.js +1 -1
  221. package/dist/components/kol-logo.js.map +1 -1
  222. package/dist/components/kol-modal.js +1 -1
  223. package/dist/components/kol-modal.js.map +1 -1
  224. package/dist/components/kol-nav.js +1 -1
  225. package/dist/components/kol-nav.js.map +1 -1
  226. package/dist/components/kol-popover-wc.js +1 -1
  227. package/dist/components/kol-popover-wc.js.map +1 -1
  228. package/dist/components/kol-progress.js +1 -1
  229. package/dist/components/kol-progress.js.map +1 -1
  230. package/dist/components/kol-quote.js +1 -1
  231. package/dist/components/kol-quote.js.map +1 -1
  232. package/dist/components/kol-skip-nav.js +1 -1
  233. package/dist/components/kol-skip-nav.js.map +1 -1
  234. package/dist/components/kol-span.js +1 -1
  235. package/dist/components/kol-span.js.map +1 -1
  236. package/dist/components/kol-spin.js +1 -1
  237. package/dist/components/kol-spin.js.map +1 -1
  238. package/dist/components/kol-split-button.js +1 -1
  239. package/dist/components/kol-split-button.js.map +1 -1
  240. package/dist/components/kol-table.js +1 -1
  241. package/dist/components/kol-table.js.map +1 -1
  242. package/dist/components/kol-tabs.js +1 -1
  243. package/dist/components/kol-tabs.js.map +1 -1
  244. package/dist/components/kol-textarea.js +1 -1
  245. package/dist/components/kol-textarea.js.map +1 -1
  246. package/dist/components/kol-tree.js +1 -1
  247. package/dist/components/kol-tree.js.map +1 -1
  248. package/dist/components/kol-version.js +1 -1
  249. package/dist/components/kol-version.js.map +1 -1
  250. package/dist/components/shadow.js +1 -1
  251. package/dist/components/shadow.js.map +1 -1
  252. package/dist/components/shadow2.js +1 -1
  253. package/dist/components/shadow3.js +1 -1
  254. package/dist/components/shadow3.js.map +1 -1
  255. package/dist/components/validation.js +1 -1
  256. package/dist/esm/{align-floating-elements-7330ec1c.js → align-floating-elements-f3802656.js} +1 -1
  257. package/dist/esm/{align-floating-elements-7330ec1c.js.map → align-floating-elements-f3802656.js.map} +1 -1
  258. package/dist/esm/app-globals-2acbdec3.js +4 -0
  259. package/dist/esm/app-globals-2acbdec3.js.map +1 -0
  260. package/dist/esm/associated.controller-1c0a6905.js +4 -0
  261. package/dist/esm/associated.controller-1c0a6905.js.map +1 -0
  262. package/dist/esm/controller-1dd244e1.js +4 -0
  263. package/dist/esm/{controller-7616f4f3.js.map → controller-1dd244e1.js.map} +1 -1
  264. package/dist/esm/{controller-cf349d3e.js → controller-a5087ab9.js} +1 -1
  265. package/dist/esm/{controller-cf349d3e.js.map → controller-a5087ab9.js.map} +1 -1
  266. package/dist/esm/controller-af0e42cc.js +4 -0
  267. package/dist/esm/{controller-763ec1d2.js.map → controller-af0e42cc.js.map} +1 -1
  268. package/dist/esm/controller-b7dcc094.js +4 -0
  269. package/dist/{cjs/controller-54fbb9a1.js.map → esm/controller-b7dcc094.js.map} +1 -1
  270. package/dist/esm/controller-fd4e097d.js +4 -0
  271. package/dist/esm/controller-fd4e097d.js.map +1 -0
  272. package/dist/esm/controller-icon-1883d4c6.js +4 -0
  273. package/dist/esm/{controller-icon-c3e3a4bf.js.map → controller-icon-1883d4c6.js.map} +1 -1
  274. package/dist/esm/dev.utils-c7d151c6.js +4 -0
  275. package/dist/esm/dev.utils-c7d151c6.js.map +1 -0
  276. package/dist/esm/devtools-4bcff5b1.js +4 -0
  277. package/dist/esm/devtools-4bcff5b1.js.map +1 -0
  278. package/dist/esm/form-field-msg-fc7cec72.js +4 -0
  279. package/dist/esm/form-field-msg-fc7cec72.js.map +1 -0
  280. package/dist/esm/{i18n-e3260ea2.js → i18n-73edd5e1.js} +1 -1
  281. package/dist/esm/{i18n-e3260ea2.js.map → i18n-73edd5e1.js.map} +1 -1
  282. package/dist/esm/index-c3ae175d.js +4 -0
  283. package/dist/esm/index-c3ae175d.js.map +1 -0
  284. package/dist/esm/{index-4391c04d.js → index-eb50dd62.js} +1 -1
  285. package/dist/esm/{index-4391c04d.js.map → index-eb50dd62.js.map} +1 -1
  286. package/dist/esm/index.js +1 -1
  287. package/dist/esm/kol-abbr.entry.js +1 -1
  288. package/dist/esm/kol-abbr.entry.js.map +1 -1
  289. package/dist/esm/kol-accordion.entry.js +1 -1
  290. package/dist/esm/kol-accordion.entry.js.map +1 -1
  291. package/dist/esm/kol-alert-wc_3.entry.js +1 -1
  292. package/dist/esm/kol-alert-wc_3.entry.js.map +1 -1
  293. package/dist/esm/kol-alert.entry.js +1 -1
  294. package/dist/esm/kol-alert.entry.js.map +1 -1
  295. package/dist/esm/kol-avatar-wc.entry.js +1 -1
  296. package/dist/esm/kol-avatar.entry.js +1 -1
  297. package/dist/esm/kol-avatar.entry.js.map +1 -1
  298. package/dist/esm/kol-badge.entry.js +1 -1
  299. package/dist/esm/kol-badge.entry.js.map +1 -1
  300. package/dist/esm/kol-breadcrumb.entry.js +1 -1
  301. package/dist/esm/kol-breadcrumb.entry.js.map +1 -1
  302. package/dist/esm/kol-button-group.entry.js +1 -1
  303. package/dist/esm/kol-button-group.entry.js.map +1 -1
  304. package/dist/esm/kol-button-link.entry.js +1 -1
  305. package/dist/esm/kol-button.entry.js +1 -1
  306. package/dist/esm/kol-button.entry.js.map +1 -1
  307. package/dist/esm/kol-card.entry.js +1 -1
  308. package/dist/esm/kol-card.entry.js.map +1 -1
  309. package/dist/esm/kol-details.entry.js +1 -1
  310. package/dist/esm/kol-details.entry.js.map +1 -1
  311. package/dist/esm/kol-form.entry.js +1 -1
  312. package/dist/esm/kol-heading.entry.js +1 -1
  313. package/dist/esm/kol-heading.entry.js.map +1 -1
  314. package/dist/esm/kol-icon.entry.js +1 -1
  315. package/dist/esm/kol-image.entry.js +1 -1
  316. package/dist/esm/kol-indented-text.entry.js +1 -1
  317. package/dist/esm/kol-indented-text.entry.js.map +1 -1
  318. package/dist/esm/kol-input-checkbox.entry.js +1 -1
  319. package/dist/esm/kol-input-checkbox.entry.js.map +1 -1
  320. package/dist/esm/kol-input-color.entry.js +1 -1
  321. package/dist/esm/kol-input-color.entry.js.map +1 -1
  322. package/dist/esm/kol-input-date.entry.js +1 -1
  323. package/dist/esm/kol-input-date.entry.js.map +1 -1
  324. package/dist/esm/kol-input-email.entry.js +1 -1
  325. package/dist/esm/kol-input-email.entry.js.map +1 -1
  326. package/dist/esm/kol-input-file.entry.js +1 -1
  327. package/dist/esm/kol-input-file.entry.js.map +1 -1
  328. package/dist/esm/kol-input-number.entry.js +1 -1
  329. package/dist/esm/kol-input-number.entry.js.map +1 -1
  330. package/dist/esm/kol-input-password.entry.js +1 -1
  331. package/dist/esm/kol-input-password.entry.js.map +1 -1
  332. package/dist/esm/kol-input-radio.entry.js +1 -1
  333. package/dist/esm/kol-input-radio.entry.js.map +1 -1
  334. package/dist/esm/kol-input-range.entry.js +1 -1
  335. package/dist/esm/kol-input-range.entry.js.map +1 -1
  336. package/dist/esm/kol-input-text.entry.js +1 -1
  337. package/dist/esm/kol-input-text.entry.js.map +1 -1
  338. package/dist/esm/kol-input.entry.js +1 -1
  339. package/dist/esm/kol-input.entry.js.map +1 -1
  340. package/dist/esm/kol-kolibri.entry.js +1 -1
  341. package/dist/esm/kol-kolibri.entry.js.map +1 -1
  342. package/dist/esm/kol-link-button.entry.js +1 -1
  343. package/dist/esm/kol-link-button.entry.js.map +1 -1
  344. package/dist/esm/kol-link-group.entry.js +1 -1
  345. package/dist/esm/kol-link-group.entry.js.map +1 -1
  346. package/dist/esm/kol-link-wc.entry.js +1 -1
  347. package/dist/esm/kol-link.entry.js +1 -1
  348. package/dist/esm/kol-logo.entry.js +1 -1
  349. package/dist/esm/kol-logo.entry.js.map +1 -1
  350. package/dist/esm/kol-modal.entry.js +1 -1
  351. package/dist/esm/kol-modal.entry.js.map +1 -1
  352. package/dist/esm/kol-nav.entry.js +1 -1
  353. package/dist/esm/kol-nav.entry.js.map +1 -1
  354. package/dist/esm/kol-pagination.entry.js +1 -1
  355. package/dist/esm/kol-pagination.entry.js.map +1 -1
  356. package/dist/esm/kol-popover-wc.entry.js +1 -1
  357. package/dist/esm/kol-popover-wc.entry.js.map +1 -1
  358. package/dist/esm/kol-progress.entry.js +1 -1
  359. package/dist/esm/kol-progress.entry.js.map +1 -1
  360. package/dist/esm/kol-quote.entry.js +1 -1
  361. package/dist/esm/kol-quote.entry.js.map +1 -1
  362. package/dist/esm/kol-select.entry.js +1 -1
  363. package/dist/esm/kol-select.entry.js.map +1 -1
  364. package/dist/esm/kol-skip-nav.entry.js +1 -1
  365. package/dist/esm/kol-skip-nav.entry.js.map +1 -1
  366. package/dist/esm/kol-span-wc_2.entry.js +1 -1
  367. package/dist/esm/kol-span-wc_2.entry.js.map +1 -1
  368. package/dist/esm/kol-span.entry.js +1 -1
  369. package/dist/esm/kol-span.entry.js.map +1 -1
  370. package/dist/esm/kol-spin.entry.js +1 -1
  371. package/dist/esm/kol-spin.entry.js.map +1 -1
  372. package/dist/esm/kol-split-button.entry.js +1 -1
  373. package/dist/esm/kol-split-button.entry.js.map +1 -1
  374. package/dist/esm/kol-symbol.entry.js +1 -1
  375. package/dist/esm/kol-table.entry.js +1 -1
  376. package/dist/esm/kol-table.entry.js.map +1 -1
  377. package/dist/esm/kol-tabs.entry.js +1 -1
  378. package/dist/esm/kol-tabs.entry.js.map +1 -1
  379. package/dist/esm/kol-textarea.entry.js +1 -1
  380. package/dist/esm/kol-textarea.entry.js.map +1 -1
  381. package/dist/esm/kol-toast-container.entry.js +1 -1
  382. package/dist/esm/kol-tree-item-wc.entry.js +1 -1
  383. package/dist/esm/kol-tree-wc.entry.js +1 -1
  384. package/dist/esm/kol-tree.entry.js +1 -1
  385. package/dist/esm/kol-tree.entry.js.map +1 -1
  386. package/dist/esm/kol-version.entry.js +1 -1
  387. package/dist/esm/kol-version.entry.js.map +1 -1
  388. package/dist/esm/kolibri.js +1 -1
  389. package/dist/esm/loader.js +1 -1
  390. package/dist/esm/validation-005508b2.js +4 -0
  391. package/dist/esm/{validation-e897e36e.js.map → validation-005508b2.js.map} +1 -1
  392. package/dist/esm/validation-f540005c.js +4 -0
  393. package/dist/esm/{validation-5ab0a1be.js.map → validation-f540005c.js.map} +1 -1
  394. package/dist/kolibri/{align-floating-elements-7330ec1c.js → align-floating-elements-f3802656.js} +1 -1
  395. package/dist/kolibri/app-globals-2acbdec3.js +4 -0
  396. package/dist/kolibri/app-globals-2acbdec3.js.map +1 -0
  397. package/dist/kolibri/associated.controller-1c0a6905.js +4 -0
  398. package/dist/kolibri/associated.controller-1c0a6905.js.map +1 -0
  399. package/dist/kolibri/controller-1dd244e1.js +4 -0
  400. package/dist/kolibri/{controller-7616f4f3.js.map → controller-1dd244e1.js.map} +1 -1
  401. package/dist/kolibri/controller-a5087ab9.js +4 -0
  402. package/dist/kolibri/{controller-cf349d3e.js.map → controller-a5087ab9.js.map} +1 -1
  403. package/dist/kolibri/controller-af0e42cc.js +4 -0
  404. package/dist/kolibri/{controller-763ec1d2.js.map → controller-af0e42cc.js.map} +1 -1
  405. package/dist/kolibri/controller-b7dcc094.js +4 -0
  406. package/dist/kolibri/controller-b7dcc094.js.map +1 -0
  407. package/dist/kolibri/controller-fd4e097d.js +4 -0
  408. package/dist/kolibri/controller-fd4e097d.js.map +1 -0
  409. package/dist/kolibri/controller-icon-1883d4c6.js +4 -0
  410. package/dist/kolibri/{controller-icon-c3e3a4bf.js.map → controller-icon-1883d4c6.js.map} +1 -1
  411. package/dist/kolibri/dev.utils-c7d151c6.js +4 -0
  412. package/dist/kolibri/dev.utils-c7d151c6.js.map +1 -0
  413. package/dist/kolibri/devtools-4bcff5b1.js +4 -0
  414. package/dist/kolibri/devtools-4bcff5b1.js.map +1 -0
  415. package/dist/kolibri/form-field-msg-fc7cec72.js +4 -0
  416. package/dist/kolibri/form-field-msg-fc7cec72.js.map +1 -0
  417. package/dist/kolibri/{i18n-e3260ea2.js → i18n-73edd5e1.js} +1 -1
  418. package/dist/kolibri/index-c3ae175d.js +4 -0
  419. package/dist/kolibri/index-c3ae175d.js.map +1 -0
  420. package/dist/kolibri/{index-4391c04d.js → index-eb50dd62.js} +1 -1
  421. package/dist/kolibri/index.esm.js +1 -1
  422. package/dist/kolibri/kol-abbr.entry.js +1 -1
  423. package/dist/kolibri/kol-abbr.entry.js.map +1 -1
  424. package/dist/kolibri/kol-accordion.entry.js +1 -1
  425. package/dist/kolibri/kol-accordion.entry.js.map +1 -1
  426. package/dist/kolibri/kol-alert-wc_3.entry.js +1 -1
  427. package/dist/kolibri/kol-alert-wc_3.entry.js.map +1 -1
  428. package/dist/kolibri/kol-alert.entry.js +1 -1
  429. package/dist/kolibri/kol-alert.entry.js.map +1 -1
  430. package/dist/kolibri/kol-avatar-wc.entry.js +1 -1
  431. package/dist/kolibri/kol-avatar.entry.js +1 -1
  432. package/dist/kolibri/kol-avatar.entry.js.map +1 -1
  433. package/dist/kolibri/kol-badge.entry.js +1 -1
  434. package/dist/kolibri/kol-badge.entry.js.map +1 -1
  435. package/dist/kolibri/kol-breadcrumb.entry.js +1 -1
  436. package/dist/kolibri/kol-breadcrumb.entry.js.map +1 -1
  437. package/dist/kolibri/kol-button-group.entry.js +1 -1
  438. package/dist/kolibri/kol-button-group.entry.js.map +1 -1
  439. package/dist/kolibri/kol-button-link.entry.js +1 -1
  440. package/dist/kolibri/kol-button.entry.js +1 -1
  441. package/dist/kolibri/kol-button.entry.js.map +1 -1
  442. package/dist/kolibri/kol-card.entry.js +1 -1
  443. package/dist/kolibri/kol-card.entry.js.map +1 -1
  444. package/dist/kolibri/kol-details.entry.js +1 -1
  445. package/dist/kolibri/kol-details.entry.js.map +1 -1
  446. package/dist/kolibri/kol-form.entry.js +1 -1
  447. package/dist/kolibri/kol-heading.entry.js +1 -1
  448. package/dist/kolibri/kol-heading.entry.js.map +1 -1
  449. package/dist/kolibri/kol-icon.entry.js +1 -1
  450. package/dist/kolibri/kol-image.entry.js +1 -1
  451. package/dist/kolibri/kol-indented-text.entry.js +1 -1
  452. package/dist/kolibri/kol-indented-text.entry.js.map +1 -1
  453. package/dist/kolibri/kol-input-checkbox.entry.js +1 -1
  454. package/dist/kolibri/kol-input-checkbox.entry.js.map +1 -1
  455. package/dist/kolibri/kol-input-color.entry.js +1 -1
  456. package/dist/kolibri/kol-input-color.entry.js.map +1 -1
  457. package/dist/kolibri/kol-input-date.entry.js +1 -1
  458. package/dist/kolibri/kol-input-date.entry.js.map +1 -1
  459. package/dist/kolibri/kol-input-email.entry.js +1 -1
  460. package/dist/kolibri/kol-input-email.entry.js.map +1 -1
  461. package/dist/kolibri/kol-input-file.entry.js +1 -1
  462. package/dist/kolibri/kol-input-file.entry.js.map +1 -1
  463. package/dist/kolibri/kol-input-number.entry.js +1 -1
  464. package/dist/kolibri/kol-input-number.entry.js.map +1 -1
  465. package/dist/kolibri/kol-input-password.entry.js +1 -1
  466. package/dist/kolibri/kol-input-password.entry.js.map +1 -1
  467. package/dist/kolibri/kol-input-radio.entry.js +1 -1
  468. package/dist/kolibri/kol-input-radio.entry.js.map +1 -1
  469. package/dist/kolibri/kol-input-range.entry.js +1 -1
  470. package/dist/kolibri/kol-input-range.entry.js.map +1 -1
  471. package/dist/kolibri/kol-input-text.entry.js +1 -1
  472. package/dist/kolibri/kol-input-text.entry.js.map +1 -1
  473. package/dist/kolibri/kol-input.entry.js +1 -1
  474. package/dist/kolibri/kol-input.entry.js.map +1 -1
  475. package/dist/kolibri/kol-kolibri.entry.js +1 -1
  476. package/dist/kolibri/kol-kolibri.entry.js.map +1 -1
  477. package/dist/kolibri/kol-link-button.entry.js +1 -1
  478. package/dist/kolibri/kol-link-button.entry.js.map +1 -1
  479. package/dist/kolibri/kol-link-group.entry.js +1 -1
  480. package/dist/kolibri/kol-link-group.entry.js.map +1 -1
  481. package/dist/kolibri/kol-link-wc.entry.js +1 -1
  482. package/dist/kolibri/kol-link.entry.js +1 -1
  483. package/dist/kolibri/kol-logo.entry.js +1 -1
  484. package/dist/kolibri/kol-logo.entry.js.map +1 -1
  485. package/dist/kolibri/kol-modal.entry.js +1 -1
  486. package/dist/kolibri/kol-modal.entry.js.map +1 -1
  487. package/dist/kolibri/kol-nav.entry.js +1 -1
  488. package/dist/kolibri/kol-nav.entry.js.map +1 -1
  489. package/dist/kolibri/kol-pagination.entry.js +1 -1
  490. package/dist/kolibri/kol-pagination.entry.js.map +1 -1
  491. package/dist/kolibri/kol-popover-wc.entry.js +1 -1
  492. package/dist/kolibri/kol-popover-wc.entry.js.map +1 -1
  493. package/dist/kolibri/kol-progress.entry.js +1 -1
  494. package/dist/kolibri/kol-progress.entry.js.map +1 -1
  495. package/dist/kolibri/kol-quote.entry.js +1 -1
  496. package/dist/kolibri/kol-quote.entry.js.map +1 -1
  497. package/dist/kolibri/kol-select.entry.js +1 -1
  498. package/dist/kolibri/kol-select.entry.js.map +1 -1
  499. package/dist/kolibri/kol-skip-nav.entry.js +1 -1
  500. package/dist/kolibri/kol-skip-nav.entry.js.map +1 -1
  501. package/dist/kolibri/kol-span-wc_2.entry.js +1 -1
  502. package/dist/kolibri/kol-span-wc_2.entry.js.map +1 -1
  503. package/dist/kolibri/kol-span.entry.js +1 -1
  504. package/dist/kolibri/kol-span.entry.js.map +1 -1
  505. package/dist/kolibri/kol-spin.entry.js +1 -1
  506. package/dist/kolibri/kol-spin.entry.js.map +1 -1
  507. package/dist/kolibri/kol-split-button.entry.js +1 -1
  508. package/dist/kolibri/kol-split-button.entry.js.map +1 -1
  509. package/dist/kolibri/kol-symbol.entry.js +1 -1
  510. package/dist/kolibri/kol-table.entry.js +1 -1
  511. package/dist/kolibri/kol-table.entry.js.map +1 -1
  512. package/dist/kolibri/kol-tabs.entry.js +1 -1
  513. package/dist/kolibri/kol-tabs.entry.js.map +1 -1
  514. package/dist/kolibri/kol-textarea.entry.js +1 -1
  515. package/dist/kolibri/kol-textarea.entry.js.map +1 -1
  516. package/dist/kolibri/kol-toast-container.entry.js +1 -1
  517. package/dist/kolibri/kol-toast-container.entry.js.map +1 -1
  518. package/dist/kolibri/kol-tree-item-wc.entry.js +1 -1
  519. package/dist/kolibri/kol-tree-wc.entry.js +1 -1
  520. package/dist/kolibri/kol-tree.entry.js +1 -1
  521. package/dist/kolibri/kol-tree.entry.js.map +1 -1
  522. package/dist/kolibri/kol-version.entry.js +1 -1
  523. package/dist/kolibri/kol-version.entry.js.map +1 -1
  524. package/dist/kolibri/kolibri.esm.js +1 -1
  525. package/dist/kolibri/validation-005508b2.js +4 -0
  526. package/dist/kolibri/{validation-5ab0a1be.js → validation-f540005c.js} +1 -1
  527. package/dist/types/components/@shared/form-field-msg.d.ts +10 -0
  528. package/dist/types/components/input-adapter-leanup/associated.controller.d.ts +1 -0
  529. package/dist/types/components/input-radio/controller.d.ts +1 -0
  530. package/dist/types/components/select/controller.d.ts +1 -0
  531. package/dist/types/utils/dev.utils.d.ts +0 -22
  532. package/package.json +1 -1
  533. package/dist/cjs/app-globals-6806b726.js +0 -4
  534. package/dist/cjs/app-globals-6806b726.js.map +0 -1
  535. package/dist/cjs/associated.controller-0fcef7e4.js +0 -4
  536. package/dist/cjs/associated.controller-0fcef7e4.js.map +0 -1
  537. package/dist/cjs/controller-54fbb9a1.js +0 -4
  538. package/dist/cjs/controller-dc2a0b4e.js +0 -4
  539. package/dist/cjs/controller-dc2a0b4e.js.map +0 -1
  540. package/dist/cjs/dev.utils-10dd7df2.js +0 -4
  541. package/dist/cjs/dev.utils-10dd7df2.js.map +0 -1
  542. package/dist/cjs/devtools-316976e4.js +0 -4
  543. package/dist/cjs/devtools-316976e4.js.map +0 -1
  544. package/dist/cjs/index-860e8291.js +0 -4
  545. package/dist/cjs/index-860e8291.js.map +0 -1
  546. package/dist/esm/app-globals-4842fd96.js +0 -4
  547. package/dist/esm/app-globals-4842fd96.js.map +0 -1
  548. package/dist/esm/associated.controller-4d3dd80f.js +0 -4
  549. package/dist/esm/associated.controller-4d3dd80f.js.map +0 -1
  550. package/dist/esm/controller-7616f4f3.js +0 -4
  551. package/dist/esm/controller-763ec1d2.js +0 -4
  552. package/dist/esm/controller-837f5a71.js +0 -4
  553. package/dist/esm/controller-837f5a71.js.map +0 -1
  554. package/dist/esm/controller-f3ba85b8.js +0 -4
  555. package/dist/esm/controller-f3ba85b8.js.map +0 -1
  556. package/dist/esm/controller-icon-c3e3a4bf.js +0 -4
  557. package/dist/esm/dev.utils-44a0a914.js +0 -4
  558. package/dist/esm/dev.utils-44a0a914.js.map +0 -1
  559. package/dist/esm/devtools-f30684b8.js +0 -4
  560. package/dist/esm/devtools-f30684b8.js.map +0 -1
  561. package/dist/esm/index-836a963f.js +0 -4
  562. package/dist/esm/index-836a963f.js.map +0 -1
  563. package/dist/esm/validation-5ab0a1be.js +0 -4
  564. package/dist/esm/validation-e897e36e.js +0 -4
  565. package/dist/kolibri/app-globals-4842fd96.js +0 -4
  566. package/dist/kolibri/app-globals-4842fd96.js.map +0 -1
  567. package/dist/kolibri/associated.controller-4d3dd80f.js +0 -4
  568. package/dist/kolibri/associated.controller-4d3dd80f.js.map +0 -1
  569. package/dist/kolibri/controller-7616f4f3.js +0 -4
  570. package/dist/kolibri/controller-763ec1d2.js +0 -4
  571. package/dist/kolibri/controller-837f5a71.js +0 -4
  572. package/dist/kolibri/controller-837f5a71.js.map +0 -1
  573. package/dist/kolibri/controller-cf349d3e.js +0 -4
  574. package/dist/kolibri/controller-f3ba85b8.js +0 -4
  575. package/dist/kolibri/controller-f3ba85b8.js.map +0 -1
  576. package/dist/kolibri/controller-icon-c3e3a4bf.js +0 -4
  577. package/dist/kolibri/dev.utils-44a0a914.js +0 -4
  578. package/dist/kolibri/dev.utils-44a0a914.js.map +0 -1
  579. package/dist/kolibri/devtools-f30684b8.js +0 -4
  580. package/dist/kolibri/devtools-f30684b8.js.map +0 -1
  581. package/dist/kolibri/index-836a963f.js +0 -4
  582. package/dist/kolibri/index-836a963f.js.map +0 -1
  583. package/dist/kolibri/validation-e897e36e.js +0 -4
  584. /package/dist/kolibri/{align-floating-elements-7330ec1c.js.map → align-floating-elements-f3802656.js.map} +0 -0
  585. /package/dist/kolibri/{i18n-e3260ea2.js.map → i18n-73edd5e1.js.map} +0 -0
  586. /package/dist/kolibri/{index-4391c04d.js.map → index-eb50dd62.js.map} +0 -0
  587. /package/dist/kolibri/{validation-e897e36e.js.map → validation-005508b2.js.map} +0 -0
  588. /package/dist/kolibri/{validation-5ab0a1be.js.map → validation-f540005c.js.map} +0 -0
@@ -1 +1 @@
1
- {"version":3,"names":["defaultStyleCss","KolTableDefaultStyle0","PAGINATION_OPTIONS","CELL_REFS","Map","paginationValidator","value","KolTable","this","horizontal","sortDirections","sortData","showPagination","pageStartSlice","pageEndSlice","disableSort","sortedColumnHead","label","key","sortDirection","setSortDirection","sort","direction","clear","set","sortFunction","handlePagination","onClick","event","page","_a","state","_pagination","_on","setState","Object","assign","_page","onChangePage","onChangePageSize","pageSize","_pageSize","updateSortedData","cell","_data","sortedData","length","a","b","index","data","result","compareFn","get","reverse","renderTableRow","row","rowIndex","h","map","col","colIndex","renderTableCell","asTd","headerCell","undefined","shortSortDirection","sortButtonIcon","find","scope","rowSpan","colSpan","style","textAlign","width","class","exportparts","_icons","_hideLabel","_label","translate","placeholders","colLabel","changeCellSort","_variant","ref","render","el","cellRender","renderFoot","rows","createDataField","_dataFoot","_headers","_allowMultiSort","vertical","_max","_sortedData","_paginationPosition","validateAllowMultiSort","watchValidator","Set","defaultValue","validateData","emptyStringByArrayHandler","objectObjectHandler","parseJson","e","Array","isArray","dataTupel","afterPatch","setTimeout","validateDataFoot","validatePaginationPosition","findIndex","settings","splice","push","validateHeaders","hooks","beforePatch","nextValue","applySort","headers","hasSortedCells","forEach","_b","_c","_d","devHint","validateLabel","required","validateMinWidth","watchString","validatePagination","componentDidRender","checkDivElementScrollbar","componentDidLoad","tableDivElement","ResizeObserver","tableDivElementResizeObserver","bind","observe","disconnectedCallback","disconnect","tableDivElementHasScrollbar","scrollWidth","clientWidth","componentWillLoad","_minWidth","getNumberOfCols","horizontalHeaders","max","count","getNumberOfRows","verticalHeaders","filterHeaderKeys","primaryHeader","cells","getPrimaryHeader","isFoot","maxCols","maxRows","startRow","dataField","rowCount","rowSpans","_row","i","dataRow","headerCells","rowsTotal","k","j","colspan","rowspan","emptyCell","Math","selectDisplayedData","slice","clearTimeout","html","textContent","renderPagination","start","toString","end","total","_boundaryCount","_customClass","_pageSizeOptions","_siblingCount","_tooltipAlign","displayedData","paginationTop","paginationBottom","Host","element","tabindex","onMouseDown","preventDefault","minWidth","cols","right"],"sources":["src/components/table/style.css?tag=kol-table&mode=default&encapsulation=shadow","src/components/table/component.tsx"],"sourcesContent":["@import url(../style.css);\n@import url(../host-display-block.css);\n@layer kol-component {\n\t:host {\n\t\tdisplay: grid;\n\t}\n\n\t:host > div.table {\n\t\tmax-width: 100%;\n\t\toverflow-x: auto;\n\t\toverflow-y: hidden;\n\t}\n\n\t:host > div.table table {\n\t\twidth: 100%;\n\t}\n\n\tcaption {\n\t\ttext-align: start;\n\t}\n\tcaption:focus {\n\t\toutline: 0 !important;\n\t}\n\n\t.table:has(caption:focus) {\n\t\t/* @see https://remysharp.com/til/css/focus-ring-default-styles */\n\t\toutline: 5px auto Highlight;\n\t\toutline: 5px auto -webkit-focus-ring-color;\n\t\toutline-offset: 2px;\n\t}\n\n\t.table-sort-button .button {\n\t\tcolor: inherit;\n\t}\n\n\tth.align-left {\n\t\ttext-align: left;\n\t\t& .table-sort-button .button-inner {\n\t\t\tjustify-items: start;\n\t\t}\n\t}\n\tth.align-center {\n\t\ttext-align: center;\n\t\t& .table-sort-button .button-inner {\n\t\t\tjustify-items: center;\n\t\t}\n\t}\n\tth.align-right {\n\t\ttext-align: right;\n\t\t& .table-sort-button .button-inner {\n\t\t\tjustify-items: end;\n\t\t}\n\t}\n\n\tdiv.pagination kol-pagination {\n\t\tdisplay: flex;\n\t\tflex-wrap: wrap;\n\t}\n\n\tdiv.pagination,\n\tdiv.pagination > div:last-child {\n\t\tdisplay: grid;\n\t\tplace-items: center;\n\t}\n\n\t@media (max-width: 1024px) {\n\t\tdiv.pagination kol-pagination {\n\t\t\tflex-direction: column;\n\t\t}\n\t}\n\n\t@media (min-width: 1024px) {\n\t\tdiv.pagination,\n\t\tdiv.pagination > div:last-child {\n\t\t\tgrid-auto-flow: column;\n\t\t}\n\n\t\tdiv.pagination kol-pagination {\n\t\t\tdisplay: flex;\n\t\t}\n\t}\n}\n","/* eslint-disable jsx-a11y/no-noninteractive-tabindex */\nimport { devHint, emptyStringByArrayHandler, objectObjectHandler, parseJson, setState, validateLabel, watchString, watchValidator } from '@public-ui/schema';\nimport type { JSX } from '@stencil/core';\nimport { Component, Host, Prop, State, Watch, h } from '@stencil/core';\n\nimport { translate } from '../../i18n';\n\nimport type {\n\tKoliBriDataCompareFn,\n\tKoliBriPaginationButtonCallbacks,\n\tKoliBriSortDirection,\n\tKoliBriSortFunction,\n\tKoliBriTableCell,\n\tKoliBriTableDataType,\n\tKoliBriTableHeaderCell,\n\tKoliBriTableHeaderCellAndData,\n\tKoliBriTableHeaders,\n\tKoliBriTablePaginationProps,\n\tKoliBriTableRender,\n\tKoliBriTableSelectedHead,\n\tLabelPropType,\n\tPaginationPositionPropType,\n\tStringified,\n\tTableAPI,\n\tTableStates,\n} from '@public-ui/schema';\nimport { validatePaginationPosition } from '@public-ui/schema';\nconst PAGINATION_OPTIONS = [10, 20, 50, 100];\n\nconst CELL_REFS = new Map<HTMLElement, ReturnType<typeof setTimeout>>();\n\nconst paginationValidator = (value: unknown) => value === true || value === '' /* true */ || (typeof value === 'object' && value !== null);\n\ntype SortData = {\n\tlabel: string;\n\tkey: string;\n\tcompareFn: KoliBriDataCompareFn;\n\tdirection: KoliBriSortDirection;\n};\n\n@Component({\n\ttag: 'kol-table',\n\tstyleUrls: {\n\t\tdefault: './style.css',\n\t},\n\tshadow: true,\n})\nexport class KolTable implements TableAPI {\n\tprivate horizontal = true;\n\t/**\n\t * @deprecated only for backward compatibility\n\t */\n\tprivate sortFunction?: KoliBriSortFunction;\n\t/**\n\t * @deprecated only for backward compatibility\n\t */\n\tprivate sortDirections: Map<KoliBriSortFunction, KoliBriSortDirection> = new Map();\n\tprivate sortData: SortData[] = [];\n\tprivate showPagination = false;\n\tprivate pageStartSlice = 0;\n\tprivate pageEndSlice = 10;\n\tprivate disableSort = false;\n\tprivate tableDivElement?: HTMLDivElement;\n\tprivate tableDivElementResizeObserver?: ResizeObserver;\n\n\t@State()\n\tprivate tableDivElementHasScrollbar = false;\n\n\t/**\n\t * @deprecated only for backward compatibility\n\t */\n\tprivate sortedColumnHead: KoliBriTableSelectedHead = { label: '', key: '', sortDirection: 'NOS' };\n\n\t/**\n\t * Defines whether to allow multi sort.\n\t */\n\t@Prop() public _allowMultiSort?: boolean;\n\n\t/**\n\t * Defines the primary table data.\n\t */\n\t@Prop() public _data!: Stringified<KoliBriTableDataType[]>;\n\n\t/**\n\t * Defines the data for the table footer.\n\t */\n\t@Prop() public _dataFoot?: Stringified<KoliBriTableDataType[]>;\n\n\t/**\n\t * Defines the horizontal and vertical table headers.\n\t */\n\t@Prop() public _headers!: Stringified<KoliBriTableHeaders>;\n\n\t/**\n\t * Defines the visible or semantic label of the component (e.g. aria-label, label, headline, caption, summary, etc.).\n\t */\n\t@Prop() public _label!: string;\n\n\t/**\n\t * Defines the table min-width.\n\t */\n\t@Prop() public _minWidth?: string;\n\n\t/**\n\t * Defines whether to show the data distributed over multiple pages.\n\t */\n\t@Prop() public _pagination?: boolean | Stringified<KoliBriTablePaginationProps>;\n\t/**\n\t * Controls the position of the pagination.\n\t */\n\t@Prop() public _paginationPosition?: PaginationPositionPropType = 'bottom';\n\n\t@State() public state: TableStates = {\n\t\t_allowMultiSort: false,\n\t\t_data: [],\n\t\t_dataFoot: [],\n\t\t_headers: {\n\t\t\thorizontal: [],\n\t\t\tvertical: [],\n\t\t},\n\t\t_label: '', // ⚠ required\n\t\t_pagination: {\n\t\t\t_page: 1,\n\t\t\t_pageSize: 10,\n\t\t\t_max: 0,\n\t\t},\n\t\t_sortedData: [],\n\t\t_paginationPosition: 'bottom',\n\t};\n\n\t@Watch('_allowMultiSort')\n\tpublic validateAllowMultiSort(value?: boolean): void {\n\t\twatchValidator(this, '_allowMultiSort', () => true, new Set(['boolean']), value, {\n\t\t\tdefaultValue: false,\n\t\t});\n\t}\n\n\t@Watch('_data')\n\tpublic validateData(value?: Stringified<KoliBriTableDataType[]>): void {\n\t\temptyStringByArrayHandler(value, () => {\n\t\t\tobjectObjectHandler(value, () => {\n\t\t\t\tif (typeof value === 'undefined') {\n\t\t\t\t\tvalue = [];\n\t\t\t\t}\n\t\t\t\ttry {\n\t\t\t\t\tvalue = parseJson<KoliBriTableDataType[]>(value);\n\t\t\t\t\t// eslint-disable-next-line no-empty\n\t\t\t\t} catch (e) {\n\t\t\t\t\t// value behält den ursprünglichen Wert\n\t\t\t\t}\n\t\t\t\tif (Array.isArray(value) && value.find((dataTupel: KoliBriTableDataType) => !(typeof dataTupel === 'object' && dataTupel !== null)) === undefined) {\n\t\t\t\t\tsetState(this, '_data', value, {\n\t\t\t\t\t\tafterPatch: () => {\n\t\t\t\t\t\t\t// TODO: kein guter Hack (endless loop)\n\t\t\t\t\t\t\tsetTimeout(this.updateSortedData);\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n\n\t@Watch('_dataFoot')\n\tpublic validateDataFoot(value?: Stringified<KoliBriTableDataType[]>): void {\n\t\temptyStringByArrayHandler(value, () => {\n\t\t\tobjectObjectHandler(value, () => {\n\t\t\t\tif (typeof value === 'undefined') {\n\t\t\t\t\tvalue = [];\n\t\t\t\t}\n\t\t\t\ttry {\n\t\t\t\t\tvalue = parseJson<KoliBriTableDataType[]>(value);\n\t\t\t\t\t// eslint-disable-next-line no-empty\n\t\t\t\t} catch (e) {\n\t\t\t\t\t// value behält den ursprünglichen Wert\n\t\t\t\t}\n\t\t\t\tif (Array.isArray(value) && value.find((dataTupel: KoliBriTableDataType) => !(typeof dataTupel === 'object' && dataTupel !== null)) === undefined) {\n\t\t\t\t\tsetState(this, '_dataFoot', value, {\n\t\t\t\t\t\tafterPatch: () => {\n\t\t\t\t\t\t\tsetTimeout(this.updateSortedData);\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n\n\t@Watch('_paginationPosition')\n\tpublic validatePaginationPosition(value?: PaginationPositionPropType): void {\n\t\tvalidatePaginationPosition(this, value);\n\t}\n\n\t/**\n\t * @deprecated only for backward compatibility\n\t */\n\tprivate setSortDirection = (sort: KoliBriSortFunction, direction: KoliBriSortDirection) => {\n\t\t/**\n\t\t * Durch des Clearen, ist es nicht möglich eine Mehr-Spalten-Sortierung\n\t\t * darzustellen. Das wäre der Fall, wenn man ggf. Daten in außerhalb der\n\t\t * Komponente sortiert und diese sortiert von außen rein gibt und der\n\t\t * Sortierungsalgorithmus mehrere Spalten zusammen sortierte.\n\t\t *\n\t\t * Beachte auch col.sort !== this.sortFunction\n\t\t */\n\t\tthis.sortDirections.clear();\n\t\tthis.sortDirections.set(sort, direction);\n\t\tthis.sortFunction = sort;\n\t};\n\n\tprivate changeCellSort(headerCell: KoliBriTableHeaderCell) {\n\t\tif (typeof headerCell.compareFn === 'function') {\n\t\t\tif (!this.state._allowMultiSort && headerCell.key != this.sortData[0]?.key) {\n\t\t\t\t// clear when another column is sorted and multi sort is not allowed\n\t\t\t\tthis.sortData = [];\n\t\t\t}\n\n\t\t\tconst index = this.sortData.findIndex((value) => value.key === headerCell.key);\n\t\t\tif (index >= 0) {\n\t\t\t\tconst settings = this.sortData[index];\n\t\t\t\tswitch (settings.direction) {\n\t\t\t\t\tcase 'ASC':\n\t\t\t\t\t\tsettings.direction = 'DESC';\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'DESC':\n\t\t\t\t\t\tthis.sortData.splice(index, 1);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tsettings.direction = 'ASC';\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t} else if (headerCell.key) {\n\t\t\t\tthis.sortData.push({\n\t\t\t\t\tlabel: headerCell.label,\n\t\t\t\t\tkey: headerCell.key,\n\t\t\t\t\tcompareFn: headerCell.compareFn,\n\t\t\t\t\tdirection: 'ASC',\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tthis.updateSortedData(headerCell as KoliBriTableSelectedHead);\n\t\t} else if (typeof headerCell.sort === 'function') {\n\t\t\tthis.sortFunction = headerCell.sort;\n\t\t\tswitch (this.sortDirections.get(this.sortFunction)) {\n\t\t\t\tcase 'ASC':\n\t\t\t\t\tthis.setSortDirection(this.sortFunction, 'DESC');\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'DESC':\n\t\t\t\t\tthis.setSortDirection(this.sortFunction, 'NOS');\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tthis.setSortDirection(this.sortFunction, 'ASC');\n\t\t\t}\n\t\t\tthis.updateSortedData(headerCell as KoliBriTableSelectedHead);\n\t\t}\n\t}\n\n\t@Watch('_headers')\n\tpublic validateHeaders(value?: Stringified<KoliBriTableHeaders>): void {\n\t\t/**\n\t\t * - es darf maximal ein Header als primary markiert werden (last win)\n\t\t * - der primary-Header entscheidet implizit über _order und _orientation\n\t\t * - primary-Headers müssen das key-Property setzen\n\t\t * - nicht primary-Headers müssen das key-Property nicht setzen (wird ignoriert)\n\t\t * - _order: wird durch den primary-Header geregelt\n\t\t * - _orientation: wird durch den primary-Header geregelt\n\t\t * - sobald ein Header sortierbar ist, darf es nur noch entweder horizontale\n\t\t * oder vertikale Header geben, aber nicht mehr beides\n\t\t */\n\t\temptyStringByArrayHandler(value, () => {\n\t\t\tobjectObjectHandler(value, () => {\n\t\t\t\ttry {\n\t\t\t\t\tvalue = parseJson<KoliBriTableHeaders>(value);\n\t\t\t\t\t// eslint-disable-next-line no-empty\n\t\t\t\t} catch (e) {\n\t\t\t\t\t// value behält den ursprünglichen Wert\n\t\t\t\t}\n\t\t\t\twatchValidator(this, '_headers', (value): boolean => typeof value === 'object' && value !== null, new Set(['KoliBriTableHeaders']), value, {\n\t\t\t\t\thooks: {\n\t\t\t\t\t\tbeforePatch: (nextValue: unknown) => {\n\t\t\t\t\t\t\tconst applySort = (headers: KoliBriTableHeaderCell[]) => {\n\t\t\t\t\t\t\t\tlet hasSortedCells = false;\n\t\t\t\t\t\t\t\theaders.forEach((cell) => {\n\t\t\t\t\t\t\t\t\tconst key = cell.key;\n\t\t\t\t\t\t\t\t\tif (!key) {\n\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tconst sortDirection = cell.sortDirection;\n\t\t\t\t\t\t\t\t\tif (sortDirection === 'ASC' || sortDirection === 'DESC') {\n\t\t\t\t\t\t\t\t\t\tif (typeof cell.compareFn === 'function') {\n\t\t\t\t\t\t\t\t\t\t\tif (this.state._allowMultiSort || this.sortData.length === 0) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis.sortData.push({ label: cell.label, key, compareFn: cell.compareFn, direction: sortDirection });\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\thasSortedCells = true;\n\t\t\t\t\t\t\t\t\t\t} else if (typeof cell.sort === 'function') {\n\t\t\t\t\t\t\t\t\t\t\tthis.setSortDirection(cell.sort, sortDirection);\n\t\t\t\t\t\t\t\t\t\t\tsetTimeout(() => this.updateSortedData({ key, label: cell.label, sortDirection }));\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tif (hasSortedCells) {\n\t\t\t\t\t\t\t\t\tsetTimeout(() => this.updateSortedData());\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\tconst headers: KoliBriTableHeaders = nextValue as KoliBriTableHeaders;\n\t\t\t\t\t\t\theaders.horizontal?.forEach(applySort);\n\t\t\t\t\t\t\theaders.vertical?.forEach(applySort);\n\n\t\t\t\t\t\t\tif (headers.horizontal && headers.vertical && headers.horizontal?.length > 0 && headers.vertical?.length > 0) {\n\t\t\t\t\t\t\t\tthis.disableSort = true;\n\t\t\t\t\t\t\t\tdevHint(\n\t\t\t\t\t\t\t\t\t`Table: You can not sort the table data, if horizontal and vertical headers are defined at the same time. (https://github.com/public-ui/kolibri/issues/2372)`\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t});\n\t\t});\n\t}\n\n\t@Watch('_label')\n\tpublic validateLabel(value?: LabelPropType): void {\n\t\tvalidateLabel(this, value, {\n\t\t\trequired: true,\n\t\t});\n\t}\n\n\t@Watch('_minWidth')\n\tpublic validateMinWidth(value?: string): void {\n\t\twatchString(this, '_minWidth', value, {\n\t\t\tdefaultValue: undefined,\n\t\t});\n\t}\n\n\tprivate readonly handlePagination: KoliBriPaginationButtonCallbacks = {\n\t\tonClick: (event: Event, page: number) => {\n\t\t\tif (typeof this.state._pagination._on?.onClick === 'function') {\n\t\t\t\tthis.state._pagination._on.onClick(event, page);\n\t\t\t}\n\t\t\tsetState(this, '_pagination', {\n\t\t\t\t...this.state._pagination,\n\t\t\t\t_page: page,\n\t\t\t});\n\t\t},\n\t\tonChangePage: (event: Event, page: number) => {\n\t\t\tif (typeof this.state._pagination._on?.onChangePage === 'function') {\n\t\t\t\tthis.state._pagination._on.onChangePage(event, page);\n\t\t\t}\n\t\t\tsetState(this, '_pagination', {\n\t\t\t\t...this.state._pagination,\n\t\t\t\t_page: page,\n\t\t\t});\n\t\t},\n\t\tonChangePageSize: (event: Event, pageSize: number) => {\n\t\t\tif (typeof this.state._pagination._on?.onChangePageSize === 'function') {\n\t\t\t\tthis.state._pagination._on.onChangePageSize(event, pageSize);\n\t\t\t}\n\t\t\tsetState(this, '_pagination', {\n\t\t\t\t...this.state._pagination,\n\t\t\t\t_pageSize: pageSize,\n\t\t\t});\n\t\t\tsetState(this, '_pageSize', pageSize);\n\t\t},\n\t};\n\n\t@Watch('_pagination')\n\tpublic validatePagination(value?: boolean | Stringified<KoliBriTablePaginationProps>): void {\n\t\ttry {\n\t\t\tvalue = parseJson<boolean | KoliBriTablePaginationProps>(value);\n\t\t\t// eslint-disable-next-line no-empty\n\t\t} catch (e) {\n\t\t\t// value behält den ursprünglichen Wert\n\t\t}\n\n\t\tthis.showPagination = paginationValidator(value);\n\n\t\twatchValidator<boolean | Stringified<KoliBriTablePaginationProps>>(\n\t\t\tthis,\n\t\t\t'_pagination',\n\t\t\tpaginationValidator,\n\t\t\tnew Set(['boolean', 'KoliBriTablePagination']),\n\t\t\tvalue,\n\t\t\t{\n\t\t\t\tdefaultValue: {\n\t\t\t\t\t_page: 1,\n\t\t\t\t\t_pageSize: 10,\n\t\t\t\t\t_max: 0,\n\t\t\t\t},\n\t\t\t}\n\t\t);\n\t}\n\n\tpublic componentDidRender(): void {\n\t\tthis.checkDivElementScrollbar();\n\t}\n\n\tpublic componentDidLoad() {\n\t\tif (this.tableDivElement && ResizeObserver) {\n\t\t\tthis.tableDivElementResizeObserver = new ResizeObserver(this.checkDivElementScrollbar.bind(this));\n\t\t\tthis.tableDivElementResizeObserver.observe(this.tableDivElement);\n\t\t}\n\t}\n\n\tpublic disconnectedCallback() {\n\t\tthis.tableDivElementResizeObserver?.disconnect();\n\t}\n\n\tprivate checkDivElementScrollbar() {\n\t\tif (this.tableDivElement) {\n\t\t\tthis.tableDivElementHasScrollbar = this.tableDivElement.scrollWidth > this.tableDivElement.clientWidth;\n\t\t}\n\t}\n\n\tpublic componentWillLoad(): void {\n\t\tthis.validateAllowMultiSort(this._allowMultiSort);\n\t\tthis.validateData(this._data);\n\t\tthis.validateDataFoot(this._dataFoot);\n\t\tthis.validateHeaders(this._headers);\n\t\tthis.validateLabel(this._label);\n\t\tthis.validateMinWidth(this._minWidth);\n\t\tthis.validatePagination(this._pagination);\n\t\tthis.validatePaginationPosition(this._paginationPosition);\n\t}\n\n\tprivate getNumberOfCols(horizontalHeaders: KoliBriTableHeaderCell[][], data: KoliBriTableDataType[]): number {\n\t\tlet max = 0;\n\t\thorizontalHeaders.forEach((row) => {\n\t\t\tlet count = 0;\n\t\t\trow.forEach((col) => (count += col.colSpan ?? 1));\n\t\t\tif (max < count) {\n\t\t\t\tmax = count;\n\t\t\t}\n\t\t});\n\t\tif (max === 0) {\n\t\t\tmax = data.length;\n\t\t}\n\t\treturn max;\n\t}\n\n\tprivate getNumberOfRows(verticalHeaders: KoliBriTableHeaderCell[][], data: KoliBriTableDataType[]): number {\n\t\tlet max = 0;\n\t\tverticalHeaders.forEach((col) => {\n\t\t\tlet count = 0;\n\t\t\tcol.forEach((row) => (count += row.rowSpan ?? 1));\n\t\t\tif (max < count) {\n\t\t\t\tmax = count;\n\t\t\t}\n\t\t});\n\t\tif (max === 0) {\n\t\t\tmax = data.length;\n\t\t} else {\n\t\t\tmax -= this.state._dataFoot.length;\n\t\t}\n\t\treturn max;\n\t}\n\n\tprivate filterHeaderKeys(headers: KoliBriTableHeaderCell[][]): KoliBriTableHeaderCell[] {\n\t\tconst primaryHeader: KoliBriTableHeaderCell[] = [];\n\t\theaders.forEach((cells) => {\n\t\t\tcells.forEach((cell) => {\n\t\t\t\tif (typeof cell.key === 'string') {\n\t\t\t\t\tprimaryHeader.push(cell);\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t\treturn primaryHeader;\n\t}\n\n\tprivate getPrimaryHeader(headers: KoliBriTableHeaders): KoliBriTableHeaderCell[] {\n\t\tlet primaryHeader: KoliBriTableHeaderCell[] = this.filterHeaderKeys(headers.horizontal ?? []);\n\t\tthis.horizontal = true;\n\t\tif (primaryHeader.length === 0) {\n\t\t\tprimaryHeader = this.filterHeaderKeys(headers.vertical ?? []);\n\t\t\tif (primaryHeader.length > 0) {\n\t\t\t\tthis.horizontal = false;\n\t\t\t}\n\t\t}\n\t\treturn primaryHeader;\n\t}\n\n\tprivate createDataField(data: KoliBriTableDataType[], headers: KoliBriTableHeaders, isFoot?: boolean): KoliBriTableCell[][] {\n\t\theaders.horizontal = Array.isArray(headers?.horizontal) ? headers.horizontal : [];\n\t\theaders.vertical = Array.isArray(headers?.vertical) ? headers.vertical : [];\n\t\tconst primaryHeader = this.getPrimaryHeader(headers);\n\t\tconst maxCols = this.getNumberOfCols(headers.horizontal, data);\n\t\tlet maxRows = this.getNumberOfRows(headers.vertical, data);\n\t\tlet startRow = 0;\n\t\tif (isFoot) {\n\t\t\tstartRow = maxRows;\n\t\t\tmaxRows += this.state._dataFoot.length;\n\t\t}\n\t\tconst dataField: KoliBriTableCell[][] = [];\n\n\t\tconst rowCount: number[] = [];\n\t\tconst rowSpans: number[][] = [];\n\t\theaders.vertical.forEach((_row, index) => {\n\t\t\trowCount[index] = 0;\n\t\t\trowSpans[index] = [];\n\t\t});\n\n\t\tfor (let i = startRow; i < maxRows; i++) {\n\t\t\tconst dataRow: KoliBriTableHeaderCellAndData[] = [];\n\t\t\theaders.vertical.forEach((headerCells, index) => {\n\t\t\t\tlet rowsTotal = 0;\n\t\t\t\trowSpans[index].forEach((value) => (rowsTotal += value));\n\t\t\t\tif (rowsTotal <= i) {\n\t\t\t\t\tconst rows = headerCells[i - rowsTotal + rowCount[index]];\n\t\t\t\t\tif (typeof rows === 'object') {\n\t\t\t\t\t\tdataRow.push({\n\t\t\t\t\t\t\t...rows,\n\t\t\t\t\t\t\tasTd: false,\n\t\t\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n\t\t\t\t\t\t\tdata: {} as KoliBriTableDataType,\n\t\t\t\t\t\t});\n\t\t\t\t\t\tlet rowSpan = 1;\n\t\t\t\t\t\tif (typeof rows.rowSpan === 'number' && rows.rowSpan > 1) {\n\t\t\t\t\t\t\trowSpan = rows.rowSpan;\n\t\t\t\t\t\t}\n\t\t\t\t\t\trowSpans[index].push(rowSpan);\n\t\t\t\t\t\tif (typeof rows.colSpan === 'number' && rows.colSpan > 1) {\n\t\t\t\t\t\t\tfor (let k = 1; k < rows.colSpan; k++) {\n\t\t\t\t\t\t\t\trowSpans[index + k].push(rowSpan);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\trowCount[index]++;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t\tfor (let j = 0; j < maxCols; j++) {\n\t\t\t\tif (this.horizontal === true) {\n\t\t\t\t\tconst row = isFoot ? this.state._dataFoot[i - startRow] : data[i];\n\t\t\t\t\tif (\n\t\t\t\t\t\ttypeof primaryHeader[j] === 'object' &&\n\t\t\t\t\t\tprimaryHeader[j] !== null &&\n\t\t\t\t\t\ttypeof primaryHeader[j].key === 'string' &&\n\t\t\t\t\t\ttypeof row === 'object' &&\n\t\t\t\t\t\trow !== null\n\t\t\t\t\t) {\n\t\t\t\t\t\tdataRow.push({\n\t\t\t\t\t\t\t...primaryHeader[j],\n\t\t\t\t\t\t\tcolSpan: undefined,\n\t\t\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n\t\t\t\t\t\t\tdata: row,\n\t\t\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n\t\t\t\t\t\t\tlabel: row[primaryHeader[j].key as unknown as string] as string,\n\t\t\t\t\t\t\trowSpan: undefined,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif (\n\t\t\t\t\t\ttypeof primaryHeader[i] === 'object' &&\n\t\t\t\t\t\tprimaryHeader[i] !== null &&\n\t\t\t\t\t\ttypeof primaryHeader[i].key === 'string' &&\n\t\t\t\t\t\ttypeof data[j] === 'object' &&\n\t\t\t\t\t\tdata[j] !== null\n\t\t\t\t\t) {\n\t\t\t\t\t\tdataRow.push({\n\t\t\t\t\t\t\t...primaryHeader[i],\n\t\t\t\t\t\t\tcolSpan: undefined,\n\t\t\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n\t\t\t\t\t\t\tdata: data[j],\n\t\t\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n\t\t\t\t\t\t\tlabel: data[j][primaryHeader[i].key as unknown as number] as string,\n\t\t\t\t\t\t\trowSpan: undefined,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tdataField.push(dataRow);\n\t\t}\n\t\tif (data.length === 0) {\n\t\t\tlet colspan = 0;\n\t\t\tlet rowspan = 0;\n\t\t\tif (Array.isArray(headers.horizontal) && headers.horizontal.length > 0) {\n\t\t\t\theaders.horizontal[0].forEach((col) => {\n\t\t\t\t\tcolspan += col.colSpan || 1;\n\t\t\t\t});\n\t\t\t}\n\t\t\tif (Array.isArray(headers.vertical) && headers.vertical.length > 0) {\n\t\t\t\tcolspan -= headers.vertical.length;\n\t\t\t\theaders.vertical[0].forEach((row) => {\n\t\t\t\t\trowspan += row.rowSpan || 1;\n\t\t\t\t});\n\t\t\t}\n\t\t\tconst emptyCell = {\n\t\t\t\tcolSpan: colspan,\n\t\t\t\tlabel: translate('kol-no-entries'),\n\t\t\t\trender: undefined,\n\t\t\t\trowSpan: Math.max(rowspan, 1),\n\t\t\t};\n\t\t\tif (dataField.length === 0) {\n\t\t\t\tdataField.push([emptyCell]);\n\t\t\t} else {\n\t\t\t\tdataField[0].push(emptyCell);\n\t\t\t}\n\t\t}\n\t\treturn dataField;\n\t}\n\n\tprivate selectDisplayedData(data: KoliBriTableDataType[], pageSize: number, page: number): KoliBriTableDataType[] {\n\t\tif (typeof pageSize === 'number' && pageSize > 0 && typeof page === 'number' && page > 0) {\n\t\t\tthis.pageStartSlice = pageSize * (page - 1);\n\t\t\tthis.pageEndSlice = pageSize * page > data.length ? data.length : pageSize * page;\n\t\t\treturn data.slice(this.pageStartSlice, this.pageEndSlice);\n\t\t} else {\n\t\t\tthis.pageStartSlice = 0;\n\t\t\tthis.pageEndSlice = data.length;\n\t\t\treturn data;\n\t\t}\n\t}\n\n\tprivate cellRender(col: KoliBriTableHeaderCellAndData & { render: KoliBriTableRender }, el?: HTMLElement): void {\n\t\tif (el /* SSR instanceof HTMLElement */) {\n\t\t\tclearTimeout(CELL_REFS.get(el));\n\t\t\tCELL_REFS.set(\n\t\t\t\tel,\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tclearTimeout(CELL_REFS.get(el));\n\t\t\t\t\tconst html = col.render(\n\t\t\t\t\t\tel,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tasTd: col.asTd,\n\t\t\t\t\t\t\tlabel: col.label,\n\t\t\t\t\t\t\ttextAlign: col.textAlign,\n\t\t\t\t\t\t\twidth: col.width,\n\t\t\t\t\t\t} as KoliBriTableHeaderCell,\n\t\t\t\t\t\tcol.data,\n\t\t\t\t\t\tthis.state._data\n\t\t\t\t\t);\n\t\t\t\t\tif (typeof html === 'string') {\n\t\t\t\t\t\tel.textContent = html;\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t);\n\t\t}\n\t}\n\n\t/**\n\t *\n\t * @param cell only used for old single sort. Can be removed when sort is removed.\n\t */\n\tprivate updateSortedData = (cell: KoliBriTableSelectedHead = this.sortedColumnHead) => {\n\t\tif (this.disableSort) {\n\t\t\tsetState(this, '_sortedData', this.state._data);\n\t\t\treturn;\n\t\t}\n\n\t\tlet sortedData: KoliBriTableDataType[] = this.state._data;\n\t\tif (this.sortData.length > 0) {\n\t\t\tsortedData = this.state._data.sort((a: KoliBriTableDataType, b: KoliBriTableDataType) => {\n\t\t\t\tfor (let index = 0; index < this.sortData.length; index++) {\n\t\t\t\t\tconst data = this.sortData[index];\n\t\t\t\t\tconst result = data.compareFn(a, b);\n\t\t\t\t\tif (result !== 0) {\n\t\t\t\t\t\treturn data.direction === 'ASC' ? result : -result;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn 0;\n\t\t\t});\n\t\t} else if (typeof this.sortFunction === 'function') {\n\t\t\tswitch (this.sortDirections.get(this.sortFunction)) {\n\t\t\t\tcase 'ASC':\n\t\t\t\t\tsortedData = this.sortFunction([...this.state._data]);\n\t\t\t\t\tthis.sortedColumnHead = { label: cell.label, key: cell.key, sortDirection: 'ASC' };\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'DESC':\n\t\t\t\t\tsortedData = this.sortFunction([...this.state._data]).reverse();\n\t\t\t\t\tthis.sortedColumnHead = { label: cell.label, key: cell.key, sortDirection: 'DESC' };\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'NOS':\n\t\t\t\tdefault:\n\t\t\t\t\tsortedData = [...this.state._data];\n\t\t\t\t\tthis.sortedColumnHead = { label: '', key: '', sortDirection: 'NOS' };\n\t\t\t}\n\t\t}\n\t\tsetState(this, '_sortedData', sortedData);\n\t};\n\n\tprivate readonly renderTableRow = (row: KoliBriTableCell[], rowIndex: number): JSX.Element => {\n\t\treturn <tr key={`tbody-${rowIndex}`}>{row.map((col, colIndex) => this.renderTableCell(col, rowIndex, colIndex))}</tr>;\n\t};\n\tprivate readonly renderTableCell = (cell: KoliBriTableCell, rowIndex: number, colIndex: number): JSX.Element => {\n\t\tif (cell.asTd === false) {\n\t\t\tconst headerCell: KoliBriTableHeaderCell = cell;\n\t\t\tlet sortDirection = undefined;\n\t\t\tlet shortSortDirection: KoliBriSortDirection = 'NOS';\n\t\t\tlet sortButtonIcon = 'codicon codicon-fold';\n\t\t\tif (!this.disableSort) {\n\t\t\t\tif (headerCell.key) {\n\t\t\t\t\tconst data = this.sortData.find((value) => value.key === headerCell.key);\n\t\t\t\t\tif (data) {\n\t\t\t\t\t\tshortSortDirection = data.direction;\n\t\t\t\t\t\tswitch (data.direction) {\n\t\t\t\t\t\t\tcase 'ASC':\n\t\t\t\t\t\t\t\tsortButtonIcon = 'codicon codicon-chevron-up';\n\t\t\t\t\t\t\t\tsortDirection = 'ascending';\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 'DESC':\n\t\t\t\t\t\t\t\tsortButtonIcon = 'codicon codicon-chevron-down';\n\t\t\t\t\t\t\t\tsortDirection = 'descending';\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (headerCell.key === this.sortedColumnHead.key) {\n\t\t\t\t\tshortSortDirection = this.sortedColumnHead.sortDirection;\n\t\t\t\t\tswitch (this.sortedColumnHead.sortDirection) {\n\t\t\t\t\t\tcase 'ASC':\n\t\t\t\t\t\t\tsortButtonIcon = 'codicon codicon-chevron-up';\n\t\t\t\t\t\t\tsortDirection = 'ascending';\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'DESC':\n\t\t\t\t\t\t\tsortButtonIcon = 'codicon codicon-chevron-down';\n\t\t\t\t\t\t\tsortDirection = 'descending';\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn (\n\t\t\t\t<th // role=\"rowheader\"\n\t\t\t\t\tkey={`tbody-${rowIndex}-${colIndex}-${headerCell.label}`}\n\t\t\t\t\tscope={typeof headerCell.rowSpan === 'number' && headerCell.rowSpan > 1 ? 'rowgroup' : 'row'}\n\t\t\t\t\tcolSpan={headerCell.colSpan}\n\t\t\t\t\trowSpan={headerCell.rowSpan}\n\t\t\t\t\tstyle={{\n\t\t\t\t\t\ttextAlign: headerCell.textAlign,\n\t\t\t\t\t\twidth: headerCell.width,\n\t\t\t\t\t}}\n\t\t\t\t\taria-sort={sortDirection}\n\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\t\t\t\tdata-sort={`sort-${shortSortDirection}`}\n\t\t\t\t>\n\t\t\t\t\t<div class=\"w-full flex gap-1 items-center\">\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclass={{\n\t\t\t\t\t\t\t\t'w-full': true,\n\t\t\t\t\t\t\t\t[headerCell.textAlign as string]: typeof headerCell.textAlign === 'string' && headerCell.textAlign.length > 0,\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\tstyle={{ textAlign: headerCell.textAlign }}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{headerCell.label}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t{!this.disableSort && (typeof headerCell.compareFn === 'function' || typeof headerCell.sort === 'function') && (\n\t\t\t\t\t\t\t<kol-button\n\t\t\t\t\t\t\t\texportparts=\"icon\"\n\t\t\t\t\t\t\t\t_icons={sortButtonIcon}\n\t\t\t\t\t\t\t\t_hideLabel\n\t\t\t\t\t\t\t\t_label={translate('kol-change-order', { placeholders: { colLabel: headerCell.label } })}\n\t\t\t\t\t\t\t\t_on={{\n\t\t\t\t\t\t\t\t\tonClick: () => this.changeCellSort(headerCell),\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t_variant=\"ghost\"\n\t\t\t\t\t\t\t></kol-button>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</div>\n\t\t\t\t</th>\n\t\t\t);\n\t\t} else {\n\t\t\treturn (\n\t\t\t\t<td // role=\"gridcell\"\n\t\t\t\t\tkey={`tbody-${rowIndex}-${colIndex}-${cell.label}`}\n\t\t\t\t\tclass={{\n\t\t\t\t\t\t[cell.textAlign as string]: typeof cell.textAlign === 'string' && cell.textAlign.length > 0,\n\t\t\t\t\t}}\n\t\t\t\t\tcolSpan={cell.colSpan}\n\t\t\t\t\trowSpan={cell.rowSpan}\n\t\t\t\t\tstyle={{\n\t\t\t\t\t\ttextAlign: cell.textAlign,\n\t\t\t\t\t\twidth: cell.width,\n\t\t\t\t\t}}\n\t\t\t\t\tref={\n\t\t\t\t\t\ttypeof cell.render === 'function'\n\t\t\t\t\t\t\t? (el) => {\n\t\t\t\t\t\t\t\t\tthis.cellRender(cell as KoliBriTableHeaderCellAndData & { render: KoliBriTableRender }, el);\n\t\t\t\t\t\t\t }\n\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t}\n\t\t\t\t>\n\t\t\t\t\t{typeof cell.render !== 'function' ? cell.label : ''}\n\t\t\t\t</td>\n\t\t\t);\n\t\t}\n\t};\n\n\tprivate readonly renderFoot = (): JSX.Element => {\n\t\tconst rows: KoliBriTableCell[][] = this.createDataField(this.state._dataFoot, this.state._headers, true);\n\t\treturn <tfoot>{rows.map(this.renderTableRow)}</tfoot>;\n\t};\n\n\tprivate renderPagination(): JSX.Element {\n\t\treturn (\n\t\t\t<div class=\"pagination\">\n\t\t\t\t<span>\n\t\t\t\t\t{translate('kol-table-visible-range', {\n\t\t\t\t\t\tplaceholders: {\n\t\t\t\t\t\t\tstart: this.pageEndSlice > 0 ? (this.pageStartSlice + 1).toString() : '0',\n\t\t\t\t\t\t\tend: this.pageEndSlice.toString(),\n\t\t\t\t\t\t\ttotal:\n\t\t\t\t\t\t\t\tthis.state._pagination && this.state._pagination._max > 0\n\t\t\t\t\t\t\t\t\t? this.state._pagination._max.toString()\n\t\t\t\t\t\t\t\t\t: Array.isArray(this.state._data)\n\t\t\t\t\t\t\t\t\t? this.state._data.length.toString()\n\t\t\t\t\t\t\t\t\t: '0',\n\t\t\t\t\t\t},\n\t\t\t\t\t})}\n\t\t\t\t</span>\n\t\t\t\t<div>\n\t\t\t\t\t<kol-pagination\n\t\t\t\t\t\t_boundaryCount={this.state._pagination._boundaryCount}\n\t\t\t\t\t\t_customClass={this.state._pagination._customClass}\n\t\t\t\t\t\t_on={this.handlePagination}\n\t\t\t\t\t\t_page={this.state._pagination._page}\n\t\t\t\t\t\t_pageSize={this.state._pagination._pageSize}\n\t\t\t\t\t\t_pageSizeOptions={this.state._pagination._pageSizeOptions || PAGINATION_OPTIONS}\n\t\t\t\t\t\t_siblingCount={this.state._pagination._siblingCount}\n\t\t\t\t\t\t_tooltipAlign=\"bottom\"\n\t\t\t\t\t\t_max={this.state._pagination._max || this.state._pagination._max || this.state._data.length}\n\t\t\t\t\t\t_label={translate('kol-table-pagination-label', { placeholders: { label: this.state._label } })}\n\t\t\t\t\t></kol-pagination>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t);\n\t}\n\n\tpublic render(): JSX.Element {\n\t\tconst displayedData: KoliBriTableDataType[] = this.selectDisplayedData(\n\t\t\tthis.state._sortedData,\n\t\t\tthis.showPagination ? this.state._pagination?._pageSize ?? 10 : this.state._sortedData.length,\n\t\t\tthis.state._pagination._page || 1\n\t\t);\n\t\tconst dataField = this.createDataField(displayedData, this.state._headers);\n\t\tconst paginationTop = this._paginationPosition === 'top' || this._paginationPosition === 'both' ? this.renderPagination() : null;\n\t\tconst paginationBottom = this._paginationPosition === 'bottom' || this._paginationPosition === 'both' ? this.renderPagination() : null;\n\n\t\treturn (\n\t\t\t<Host>\n\t\t\t\t{this.pageEndSlice > 0 && this.showPagination && paginationTop}\n\n\t\t\t\t{/* Firefox automatically makes the following div focusable when it has a scrollbar. We implement a similar behavior cross-browser by allowing the\n\t\t\t\t * <caption> to receive focus. Hence, we disable focus for the div to avoid having two focusable elements:\n\t\t\t\t * tabindex=\"-1\" prevents keyboard-focus,\n\t\t\t\t * catching the mouseDown event prevents click-focus\n\t\t\t\t */}\n\t\t\t\t{/* eslint-disable-next-line jsx-a11y/no-static-element-interactions */}\n\t\t\t\t<div\n\t\t\t\t\tref={(element) => (this.tableDivElement = element)}\n\t\t\t\t\tclass=\"table\"\n\t\t\t\t\ttabindex=\"-1\"\n\t\t\t\t\tonMouseDown={(event) => {\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t<table\n\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\tminWidth: this.state._minWidth,\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t<caption tabindex={this.tableDivElementHasScrollbar ? '0' : undefined}>{this.state._label}</caption>\n\t\t\t\t\t\t{Array.isArray(this.state._headers.horizontal) && (\n\t\t\t\t\t\t\t<thead>\n\t\t\t\t\t\t\t\t{this.state._headers.horizontal.map((cols, rowIndex) => (\n\t\t\t\t\t\t\t\t\t<tr key={`thead-${rowIndex}`}>\n\t\t\t\t\t\t\t\t\t\t{cols.map((col, colIndex) => {\n\t\t\t\t\t\t\t\t\t\t\tif (col.asTd === true) {\n\t\t\t\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t\t\t\t<td // role=\"gridcell\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tkey={`thead-${rowIndex}-${colIndex}-${col.label}`}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tclass={{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[col.textAlign as string]: typeof col.textAlign === 'string' && col.textAlign.length > 0,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tcolSpan={col.colSpan}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\trowSpan={col.rowSpan}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttextAlign: col.textAlign,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\twidth: col.width,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tref={\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttypeof col.render === 'function'\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t? (el) => {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis.cellRender(col as KoliBriTableHeaderCellAndData & { render: KoliBriTableRender }, el);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t }\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{typeof col.render !== 'function' ? col.label : ''}\n\t\t\t\t\t\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\tconst headerCell: KoliBriTableHeaderCell = col;\n\t\t\t\t\t\t\t\t\t\t\t\tlet sortDirection = undefined;\n\t\t\t\t\t\t\t\t\t\t\t\tlet shortSortDirection: KoliBriSortDirection = 'NOS';\n\t\t\t\t\t\t\t\t\t\t\t\tlet sortButtonIcon = 'codicon codicon-fold';\n\t\t\t\t\t\t\t\t\t\t\t\tif (headerCell.key) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tconst data = this.sortData.find((value) => value.key === headerCell.key);\n\t\t\t\t\t\t\t\t\t\t\t\t\tif (data) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tshortSortDirection = data.direction;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tswitch (data.direction) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcase 'ASC':\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsortButtonIcon = 'codicon codicon-chevron-up';\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsortDirection = 'ascending';\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcase 'DESC':\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsortButtonIcon = 'codicon codicon-chevron-down';\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsortDirection = 'descending';\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tif (headerCell.key === this.sortedColumnHead.key) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tshortSortDirection = this.sortedColumnHead.sortDirection;\n\t\t\t\t\t\t\t\t\t\t\t\t\tswitch (this.sortedColumnHead.sortDirection) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tcase 'ASC':\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsortButtonIcon = 'codicon codicon-chevron-up';\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsortDirection = 'ascending';\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tcase 'DESC':\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsortButtonIcon = 'codicon codicon-chevron-down';\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsortDirection = 'descending';\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t\t\t\t<th\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tclass={col.textAlign ? `align-${col.textAlign}` : undefined}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tkey={`thead-${rowIndex}-${colIndex}-${headerCell.label}`}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tscope={typeof headerCell.colSpan === 'number' && headerCell.colSpan > 1 ? 'colgroup' : 'col'}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tcolSpan={headerCell.colSpan}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\trowSpan={headerCell.rowSpan}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\twidth: col.width,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\taria-sort={sortDirection}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tdata-sort={`sort-${shortSortDirection}`}\n\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{!this.disableSort && (typeof headerCell.compareFn === 'function' || typeof headerCell.sort === 'function') ? (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<kol-button-wc\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tclass=\"table-sort-button\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\texportparts=\"icon\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t_icons={{ right: sortButtonIcon }}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t_label={col.label}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t_on={{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tonClick: () => this.changeCellSort(headerCell),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t></kol-button-wc>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcol.label\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t</th>\n\t\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t</thead>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t<tbody>{dataField.map(this.renderTableRow)}</tbody>\n\t\t\t\t\t\t{this.state._dataFoot.length > 0 ? this.renderFoot() : ''}\n\t\t\t\t\t</table>\n\t\t\t\t</div>\n\t\t\t\t{this.pageEndSlice > 0 && this.showPagination && paginationBottom}\n\t\t\t</Host>\n\t\t);\n\t}\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["defaultStyleCss","KolTableDefaultStyle0","PAGINATION_OPTIONS","CELL_REFS","Map","paginationValidator","value","KolTable","this","horizontal","sortDirections","sortData","showPagination","pageStartSlice","pageEndSlice","disableSort","sortedColumnHead","label","key","sortDirection","setSortDirection","sort","direction","clear","set","sortFunction","handlePagination","onClick","event","page","_a","state","_pagination","_on","setState","Object","assign","_page","onChangePage","onChangePageSize","pageSize","_pageSize","updateSortedData","cell","_data","sortedData","length","a","b","index","data","result","compareFn","get","reverse","renderTableRow","row","rowIndex","h","map","col","colIndex","renderTableCell","asTd","headerCell","undefined","shortSortDirection","sortButtonIcon","find","scope","rowSpan","colSpan","style","textAlign","width","class","exportparts","_icons","_hideLabel","_label","translate","placeholders","colLabel","changeCellSort","_variant","ref","render","el","cellRender","renderFoot","rows","createDataField","_dataFoot","_headers","_allowMultiSort","vertical","_max","_sortedData","_paginationPosition","validateAllowMultiSort","watchValidator","Set","defaultValue","validateData","emptyStringByArrayHandler","objectObjectHandler","parseJson","e","Array","isArray","dataTupel","afterPatch","setTimeout","validateDataFoot","validatePaginationPosition","findIndex","settings","splice","push","validateHeaders","hooks","beforePatch","nextValue","applySort","headers","hasSortedCells","forEach","_b","_c","_d","devHint","validateLabel","required","validateMinWidth","watchString","validatePagination","componentDidRender","checkDivElementScrollbar","componentDidLoad","tableDivElement","ResizeObserver","tableDivElementResizeObserver","bind","observe","disconnectedCallback","disconnect","tableDivElementHasScrollbar","scrollWidth","clientWidth","componentWillLoad","_minWidth","getNumberOfCols","horizontalHeaders","max","count","getNumberOfRows","verticalHeaders","filterHeaderKeys","primaryHeader","cells","getPrimaryHeader","isFoot","maxCols","maxRows","startRow","dataField","rowCount","rowSpans","_row","i","dataRow","headerCells","rowsTotal","k","j","colspan","rowspan","emptyCell","Math","selectDisplayedData","slice","clearTimeout","html","textContent","renderPagination","start","toString","end","total","_boundaryCount","_customClass","_pageSizeOptions","_siblingCount","_tooltipAlign","displayedData","paginationTop","paginationBottom","Host","element","tabindex","onMouseDown","preventDefault","minWidth","cols","right"],"sources":["src/components/table/style.css?tag=kol-table&mode=default&encapsulation=shadow","src/components/table/component.tsx"],"sourcesContent":["@import url(../style.css);\n@import url(../host-display-block.css);\n@layer kol-component {\n\t:host {\n\t\tdisplay: grid;\n\t}\n\n\t:host > div.table {\n\t\tmax-width: 100%;\n\t\toverflow-x: auto;\n\t\toverflow-y: hidden;\n\t}\n\n\t:host > div.table table {\n\t\twidth: 100%;\n\t}\n\n\tcaption {\n\t\ttext-align: start;\n\t}\n\tcaption:focus {\n\t\toutline: 0 !important;\n\t}\n\n\t.table:has(caption:focus) {\n\t\t/* @see https://remysharp.com/til/css/focus-ring-default-styles */\n\t\toutline: 5px auto Highlight;\n\t\toutline: 5px auto -webkit-focus-ring-color;\n\t\toutline-offset: 2px;\n\t}\n\n\t.table-sort-button .button {\n\t\tcolor: inherit;\n\t}\n\n\tth.align-left {\n\t\ttext-align: left;\n\t\t& .table-sort-button .button-inner {\n\t\t\tjustify-items: start;\n\t\t}\n\t}\n\tth.align-center {\n\t\ttext-align: center;\n\t\t& .table-sort-button .button-inner {\n\t\t\tjustify-items: center;\n\t\t}\n\t}\n\tth.align-right {\n\t\ttext-align: right;\n\t\t& .table-sort-button .button-inner {\n\t\t\tjustify-items: end;\n\t\t}\n\t}\n\n\tdiv.pagination kol-pagination {\n\t\tdisplay: flex;\n\t\tflex-wrap: wrap;\n\t}\n\n\tdiv.pagination,\n\tdiv.pagination > div:last-child {\n\t\tdisplay: grid;\n\t\tplace-items: center;\n\t}\n\n\t@media (max-width: 1024px) {\n\t\tdiv.pagination kol-pagination {\n\t\t\tflex-direction: column;\n\t\t}\n\t}\n\n\t@media (min-width: 1024px) {\n\t\tdiv.pagination,\n\t\tdiv.pagination > div:last-child {\n\t\t\tgrid-auto-flow: column;\n\t\t}\n\n\t\tdiv.pagination kol-pagination {\n\t\t\tdisplay: flex;\n\t\t}\n\t}\n}\n","/* eslint-disable jsx-a11y/no-noninteractive-tabindex */\nimport { devHint, emptyStringByArrayHandler, objectObjectHandler, parseJson, setState, validateLabel, watchString, watchValidator } from '@public-ui/schema';\nimport type { JSX } from '@stencil/core';\nimport { Component, Host, Prop, State, Watch, h } from '@stencil/core';\n\nimport { translate } from '../../i18n';\n\nimport type {\n\tKoliBriDataCompareFn,\n\tKoliBriPaginationButtonCallbacks,\n\tKoliBriSortDirection,\n\tKoliBriSortFunction,\n\tKoliBriTableCell,\n\tKoliBriTableDataType,\n\tKoliBriTableHeaderCell,\n\tKoliBriTableHeaderCellAndData,\n\tKoliBriTableHeaders,\n\tKoliBriTablePaginationProps,\n\tKoliBriTableRender,\n\tKoliBriTableSelectedHead,\n\tLabelPropType,\n\tPaginationPositionPropType,\n\tStringified,\n\tTableAPI,\n\tTableStates,\n} from '@public-ui/schema';\nimport { validatePaginationPosition } from '@public-ui/schema';\nconst PAGINATION_OPTIONS = [10, 20, 50, 100];\n\nconst CELL_REFS = new Map<HTMLElement, ReturnType<typeof setTimeout>>();\n\nconst paginationValidator = (value: unknown) => value === true || value === '' /* true */ || (typeof value === 'object' && value !== null);\n\ntype SortData = {\n\tlabel: string;\n\tkey: string;\n\tcompareFn: KoliBriDataCompareFn;\n\tdirection: KoliBriSortDirection;\n};\n\n@Component({\n\ttag: 'kol-table',\n\tstyleUrls: {\n\t\tdefault: './style.css',\n\t},\n\tshadow: true,\n})\nexport class KolTable implements TableAPI {\n\tprivate horizontal = true;\n\t/**\n\t * @deprecated only for backward compatibility\n\t */\n\tprivate sortFunction?: KoliBriSortFunction;\n\t/**\n\t * @deprecated only for backward compatibility\n\t */\n\tprivate sortDirections: Map<KoliBriSortFunction, KoliBriSortDirection> = new Map();\n\tprivate sortData: SortData[] = [];\n\tprivate showPagination = false;\n\tprivate pageStartSlice = 0;\n\tprivate pageEndSlice = 10;\n\tprivate disableSort = false;\n\tprivate tableDivElement?: HTMLDivElement;\n\tprivate tableDivElementResizeObserver?: ResizeObserver;\n\n\t@State()\n\tprivate tableDivElementHasScrollbar = false;\n\n\t/**\n\t * @deprecated only for backward compatibility\n\t */\n\tprivate sortedColumnHead: KoliBriTableSelectedHead = { label: '', key: '', sortDirection: 'NOS' };\n\n\t/**\n\t * Defines whether to allow multi sort.\n\t */\n\t@Prop() public _allowMultiSort?: boolean;\n\n\t/**\n\t * Defines the primary table data.\n\t */\n\t@Prop() public _data!: Stringified<KoliBriTableDataType[]>;\n\n\t/**\n\t * Defines the data for the table footer.\n\t */\n\t@Prop() public _dataFoot?: Stringified<KoliBriTableDataType[]>;\n\n\t/**\n\t * Defines the horizontal and vertical table headers.\n\t */\n\t@Prop() public _headers!: Stringified<KoliBriTableHeaders>;\n\n\t/**\n\t * Defines the visible or semantic label of the component (e.g. aria-label, label, headline, caption, summary, etc.).\n\t */\n\t@Prop() public _label!: string;\n\n\t/**\n\t * Defines the table min-width.\n\t */\n\t@Prop() public _minWidth?: string;\n\n\t/**\n\t * Defines whether to show the data distributed over multiple pages.\n\t */\n\t@Prop() public _pagination?: boolean | Stringified<KoliBriTablePaginationProps>;\n\t/**\n\t * Controls the position of the pagination.\n\t */\n\t@Prop() public _paginationPosition?: PaginationPositionPropType = 'bottom';\n\n\t@State() public state: TableStates = {\n\t\t_allowMultiSort: false,\n\t\t_data: [],\n\t\t_dataFoot: [],\n\t\t_headers: {\n\t\t\thorizontal: [],\n\t\t\tvertical: [],\n\t\t},\n\t\t_label: '', // ⚠ required\n\t\t_pagination: {\n\t\t\t_page: 1,\n\t\t\t_pageSize: 10,\n\t\t\t_max: 0,\n\t\t},\n\t\t_sortedData: [],\n\t\t_paginationPosition: 'bottom',\n\t};\n\n\t@Watch('_allowMultiSort')\n\tpublic validateAllowMultiSort(value?: boolean): void {\n\t\twatchValidator(this, '_allowMultiSort', () => true, new Set(['boolean']), value, {\n\t\t\tdefaultValue: false,\n\t\t});\n\t}\n\n\t@Watch('_data')\n\tpublic validateData(value?: Stringified<KoliBriTableDataType[]>): void {\n\t\temptyStringByArrayHandler(value, () => {\n\t\t\tobjectObjectHandler(value, () => {\n\t\t\t\tif (typeof value === 'undefined') {\n\t\t\t\t\tvalue = [];\n\t\t\t\t}\n\t\t\t\ttry {\n\t\t\t\t\tvalue = parseJson<KoliBriTableDataType[]>(value);\n\t\t\t\t\t// eslint-disable-next-line no-empty\n\t\t\t\t} catch (e) {\n\t\t\t\t\t// value behält den ursprünglichen Wert\n\t\t\t\t}\n\t\t\t\tif (Array.isArray(value) && value.find((dataTupel: KoliBriTableDataType) => !(typeof dataTupel === 'object' && dataTupel !== null)) === undefined) {\n\t\t\t\t\tsetState(this, '_data', value, {\n\t\t\t\t\t\tafterPatch: () => {\n\t\t\t\t\t\t\t// TODO: kein guter Hack (endless loop)\n\t\t\t\t\t\t\tsetTimeout(this.updateSortedData);\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n\n\t@Watch('_dataFoot')\n\tpublic validateDataFoot(value?: Stringified<KoliBriTableDataType[]>): void {\n\t\temptyStringByArrayHandler(value, () => {\n\t\t\tobjectObjectHandler(value, () => {\n\t\t\t\tif (typeof value === 'undefined') {\n\t\t\t\t\tvalue = [];\n\t\t\t\t}\n\t\t\t\ttry {\n\t\t\t\t\tvalue = parseJson<KoliBriTableDataType[]>(value);\n\t\t\t\t\t// eslint-disable-next-line no-empty\n\t\t\t\t} catch (e) {\n\t\t\t\t\t// value behält den ursprünglichen Wert\n\t\t\t\t}\n\t\t\t\tif (Array.isArray(value) && value.find((dataTupel: KoliBriTableDataType) => !(typeof dataTupel === 'object' && dataTupel !== null)) === undefined) {\n\t\t\t\t\tsetState(this, '_dataFoot', value, {\n\t\t\t\t\t\tafterPatch: () => {\n\t\t\t\t\t\t\tsetTimeout(this.updateSortedData);\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n\n\t@Watch('_paginationPosition')\n\tpublic validatePaginationPosition(value?: PaginationPositionPropType): void {\n\t\tvalidatePaginationPosition(this, value);\n\t}\n\n\t/**\n\t * @deprecated only for backward compatibility\n\t */\n\tprivate setSortDirection = (sort: KoliBriSortFunction, direction: KoliBriSortDirection) => {\n\t\t/**\n\t\t * Durch des Clearen, ist es nicht möglich eine Mehr-Spalten-Sortierung\n\t\t * darzustellen. Das wäre der Fall, wenn man ggf. Daten in außerhalb der\n\t\t * Komponente sortiert und diese sortiert von außen rein gibt und der\n\t\t * Sortierungsalgorithmus mehrere Spalten zusammen sortierte.\n\t\t *\n\t\t * Beachte auch col.sort !== this.sortFunction\n\t\t */\n\t\tthis.sortDirections.clear();\n\t\tthis.sortDirections.set(sort, direction);\n\t\tthis.sortFunction = sort;\n\t};\n\n\tprivate changeCellSort(headerCell: KoliBriTableHeaderCell) {\n\t\tif (typeof headerCell.compareFn === 'function') {\n\t\t\tif (!this.state._allowMultiSort && headerCell.key != this.sortData[0]?.key) {\n\t\t\t\t// clear when another column is sorted and multi sort is not allowed\n\t\t\t\tthis.sortData = [];\n\t\t\t}\n\n\t\t\tconst index = this.sortData.findIndex((value) => value.key === headerCell.key);\n\t\t\tif (index >= 0) {\n\t\t\t\tconst settings = this.sortData[index];\n\t\t\t\tswitch (settings.direction) {\n\t\t\t\t\tcase 'ASC':\n\t\t\t\t\t\tsettings.direction = 'DESC';\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'DESC':\n\t\t\t\t\t\tthis.sortData.splice(index, 1);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tsettings.direction = 'ASC';\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t} else if (headerCell.key) {\n\t\t\t\tthis.sortData.push({\n\t\t\t\t\tlabel: headerCell.label,\n\t\t\t\t\tkey: headerCell.key,\n\t\t\t\t\tcompareFn: headerCell.compareFn,\n\t\t\t\t\tdirection: 'ASC',\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tthis.updateSortedData(headerCell as KoliBriTableSelectedHead);\n\t\t} else if (typeof headerCell.sort === 'function') {\n\t\t\tthis.sortFunction = headerCell.sort;\n\t\t\tswitch (this.sortDirections.get(this.sortFunction)) {\n\t\t\t\tcase 'ASC':\n\t\t\t\t\tthis.setSortDirection(this.sortFunction, 'DESC');\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'DESC':\n\t\t\t\t\tthis.setSortDirection(this.sortFunction, 'NOS');\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tthis.setSortDirection(this.sortFunction, 'ASC');\n\t\t\t}\n\t\t\tthis.updateSortedData(headerCell as KoliBriTableSelectedHead);\n\t\t}\n\t}\n\n\t@Watch('_headers')\n\tpublic validateHeaders(value?: Stringified<KoliBriTableHeaders>): void {\n\t\t/**\n\t\t * - es darf maximal ein Header als primary markiert werden (last win)\n\t\t * - der primary-Header entscheidet implizit über _order und _orientation\n\t\t * - primary-Headers müssen das key-Property setzen\n\t\t * - nicht primary-Headers müssen das key-Property nicht setzen (wird ignoriert)\n\t\t * - _order: wird durch den primary-Header geregelt\n\t\t * - _orientation: wird durch den primary-Header geregelt\n\t\t * - sobald ein Header sortierbar ist, darf es nur noch entweder horizontale\n\t\t * oder vertikale Header geben, aber nicht mehr beides\n\t\t */\n\t\temptyStringByArrayHandler(value, () => {\n\t\t\tobjectObjectHandler(value, () => {\n\t\t\t\ttry {\n\t\t\t\t\tvalue = parseJson<KoliBriTableHeaders>(value);\n\t\t\t\t\t// eslint-disable-next-line no-empty\n\t\t\t\t} catch (e) {\n\t\t\t\t\t// value behält den ursprünglichen Wert\n\t\t\t\t}\n\t\t\t\twatchValidator(this, '_headers', (value): boolean => typeof value === 'object' && value !== null, new Set(['KoliBriTableHeaders']), value, {\n\t\t\t\t\thooks: {\n\t\t\t\t\t\tbeforePatch: (nextValue: unknown) => {\n\t\t\t\t\t\t\tconst applySort = (headers: KoliBriTableHeaderCell[]) => {\n\t\t\t\t\t\t\t\tlet hasSortedCells = false;\n\t\t\t\t\t\t\t\theaders.forEach((cell) => {\n\t\t\t\t\t\t\t\t\tconst key = cell.key;\n\t\t\t\t\t\t\t\t\tif (!key) {\n\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tconst sortDirection = cell.sortDirection;\n\t\t\t\t\t\t\t\t\tif (sortDirection === 'ASC' || sortDirection === 'DESC') {\n\t\t\t\t\t\t\t\t\t\tif (typeof cell.compareFn === 'function') {\n\t\t\t\t\t\t\t\t\t\t\tif (this.state._allowMultiSort || this.sortData.length === 0) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis.sortData.push({ label: cell.label, key, compareFn: cell.compareFn, direction: sortDirection });\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\thasSortedCells = true;\n\t\t\t\t\t\t\t\t\t\t} else if (typeof cell.sort === 'function') {\n\t\t\t\t\t\t\t\t\t\t\tthis.setSortDirection(cell.sort, sortDirection);\n\t\t\t\t\t\t\t\t\t\t\tsetTimeout(() => this.updateSortedData({ key, label: cell.label, sortDirection }));\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tif (hasSortedCells) {\n\t\t\t\t\t\t\t\t\tsetTimeout(() => this.updateSortedData());\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\tconst headers: KoliBriTableHeaders = nextValue as KoliBriTableHeaders;\n\t\t\t\t\t\t\theaders.horizontal?.forEach(applySort);\n\t\t\t\t\t\t\theaders.vertical?.forEach(applySort);\n\n\t\t\t\t\t\t\tif (headers.horizontal && headers.vertical && headers.horizontal?.length > 0 && headers.vertical?.length > 0) {\n\t\t\t\t\t\t\t\tthis.disableSort = true;\n\t\t\t\t\t\t\t\tdevHint(\n\t\t\t\t\t\t\t\t\t`Table: You can not sort the table data, if horizontal and vertical headers are defined at the same time. (https://github.com/public-ui/kolibri/issues/2372)`\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t});\n\t\t});\n\t}\n\n\t@Watch('_label')\n\tpublic validateLabel(value?: LabelPropType): void {\n\t\tvalidateLabel(this, value, {\n\t\t\trequired: true,\n\t\t});\n\t}\n\n\t@Watch('_minWidth')\n\tpublic validateMinWidth(value?: string): void {\n\t\twatchString(this, '_minWidth', value, {\n\t\t\tdefaultValue: undefined,\n\t\t});\n\t}\n\n\tprivate readonly handlePagination: KoliBriPaginationButtonCallbacks = {\n\t\tonClick: (event: Event, page: number) => {\n\t\t\tif (typeof this.state._pagination._on?.onClick === 'function') {\n\t\t\t\tthis.state._pagination._on.onClick(event, page);\n\t\t\t}\n\t\t\tsetState(this, '_pagination', {\n\t\t\t\t...this.state._pagination,\n\t\t\t\t_page: page,\n\t\t\t});\n\t\t},\n\t\tonChangePage: (event: Event, page: number) => {\n\t\t\tif (typeof this.state._pagination._on?.onChangePage === 'function') {\n\t\t\t\tthis.state._pagination._on.onChangePage(event, page);\n\t\t\t}\n\t\t\tsetState(this, '_pagination', {\n\t\t\t\t...this.state._pagination,\n\t\t\t\t_page: page,\n\t\t\t});\n\t\t},\n\t\tonChangePageSize: (event: Event, pageSize: number) => {\n\t\t\tif (typeof this.state._pagination._on?.onChangePageSize === 'function') {\n\t\t\t\tthis.state._pagination._on.onChangePageSize(event, pageSize);\n\t\t\t}\n\t\t\tsetState(this, '_pagination', {\n\t\t\t\t...this.state._pagination,\n\t\t\t\t_pageSize: pageSize,\n\t\t\t});\n\t\t\tsetState(this, '_pageSize', pageSize);\n\t\t},\n\t};\n\n\t@Watch('_pagination')\n\tpublic validatePagination(value?: boolean | Stringified<KoliBriTablePaginationProps>): void {\n\t\ttry {\n\t\t\tvalue = parseJson<boolean | KoliBriTablePaginationProps>(value);\n\t\t\t// eslint-disable-next-line no-empty\n\t\t} catch (e) {\n\t\t\t// value behält den ursprünglichen Wert\n\t\t}\n\n\t\tthis.showPagination = paginationValidator(value);\n\n\t\twatchValidator<boolean | Stringified<KoliBriTablePaginationProps>>(\n\t\t\tthis,\n\t\t\t'_pagination',\n\t\t\tpaginationValidator,\n\t\t\tnew Set(['boolean', 'KoliBriTablePagination']),\n\t\t\tvalue,\n\t\t\t{\n\t\t\t\tdefaultValue: {\n\t\t\t\t\t_page: 1,\n\t\t\t\t\t_pageSize: 10,\n\t\t\t\t\t_max: 0,\n\t\t\t\t},\n\t\t\t}\n\t\t);\n\t}\n\n\tpublic componentDidRender(): void {\n\t\tthis.checkDivElementScrollbar();\n\t}\n\n\tpublic componentDidLoad() {\n\t\tif (this.tableDivElement && ResizeObserver) {\n\t\t\tthis.tableDivElementResizeObserver = new ResizeObserver(this.checkDivElementScrollbar.bind(this));\n\t\t\tthis.tableDivElementResizeObserver.observe(this.tableDivElement);\n\t\t}\n\t}\n\n\tpublic disconnectedCallback() {\n\t\tthis.tableDivElementResizeObserver?.disconnect();\n\t}\n\n\tprivate checkDivElementScrollbar() {\n\t\tif (this.tableDivElement) {\n\t\t\tthis.tableDivElementHasScrollbar = this.tableDivElement.scrollWidth > this.tableDivElement.clientWidth;\n\t\t}\n\t}\n\n\tpublic componentWillLoad(): void {\n\t\tthis.validateAllowMultiSort(this._allowMultiSort);\n\t\tthis.validateData(this._data);\n\t\tthis.validateDataFoot(this._dataFoot);\n\t\tthis.validateHeaders(this._headers);\n\t\tthis.validateLabel(this._label);\n\t\tthis.validateMinWidth(this._minWidth);\n\t\tthis.validatePagination(this._pagination);\n\t\tthis.validatePaginationPosition(this._paginationPosition);\n\t}\n\n\tprivate getNumberOfCols(horizontalHeaders: KoliBriTableHeaderCell[][], data: KoliBriTableDataType[]): number {\n\t\tlet max = 0;\n\t\thorizontalHeaders.forEach((row) => {\n\t\t\tlet count = 0;\n\t\t\trow.forEach((col) => (count += col.colSpan ?? 1));\n\t\t\tif (max < count) {\n\t\t\t\tmax = count;\n\t\t\t}\n\t\t});\n\t\tif (max === 0) {\n\t\t\tmax = data.length;\n\t\t}\n\t\treturn max;\n\t}\n\n\tprivate getNumberOfRows(verticalHeaders: KoliBriTableHeaderCell[][], data: KoliBriTableDataType[]): number {\n\t\tlet max = 0;\n\t\tverticalHeaders.forEach((col) => {\n\t\t\tlet count = 0;\n\t\t\tcol.forEach((row) => (count += row.rowSpan ?? 1));\n\t\t\tif (max < count) {\n\t\t\t\tmax = count;\n\t\t\t}\n\t\t});\n\t\tif (max === 0) {\n\t\t\tmax = data.length;\n\t\t} else {\n\t\t\tmax -= this.state._dataFoot.length;\n\t\t}\n\t\treturn max;\n\t}\n\n\tprivate filterHeaderKeys(headers: KoliBriTableHeaderCell[][]): KoliBriTableHeaderCell[] {\n\t\tconst primaryHeader: KoliBriTableHeaderCell[] = [];\n\t\theaders.forEach((cells) => {\n\t\t\tcells.forEach((cell) => {\n\t\t\t\tif (typeof cell.key === 'string') {\n\t\t\t\t\tprimaryHeader.push(cell);\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t\treturn primaryHeader;\n\t}\n\n\tprivate getPrimaryHeader(headers: KoliBriTableHeaders): KoliBriTableHeaderCell[] {\n\t\tlet primaryHeader: KoliBriTableHeaderCell[] = this.filterHeaderKeys(headers.horizontal ?? []);\n\t\tthis.horizontal = true;\n\t\tif (primaryHeader.length === 0) {\n\t\t\tprimaryHeader = this.filterHeaderKeys(headers.vertical ?? []);\n\t\t\tif (primaryHeader.length > 0) {\n\t\t\t\tthis.horizontal = false;\n\t\t\t}\n\t\t}\n\t\treturn primaryHeader;\n\t}\n\n\tprivate createDataField(data: KoliBriTableDataType[], headers: KoliBriTableHeaders, isFoot?: boolean): KoliBriTableCell[][] {\n\t\theaders.horizontal = Array.isArray(headers?.horizontal) ? headers.horizontal : [];\n\t\theaders.vertical = Array.isArray(headers?.vertical) ? headers.vertical : [];\n\t\tconst primaryHeader = this.getPrimaryHeader(headers);\n\t\tconst maxCols = this.getNumberOfCols(headers.horizontal, data);\n\t\tlet maxRows = this.getNumberOfRows(headers.vertical, data);\n\t\tlet startRow = 0;\n\t\tif (isFoot) {\n\t\t\tstartRow = maxRows;\n\t\t\tmaxRows += this.state._dataFoot.length;\n\t\t}\n\t\tconst dataField: KoliBriTableCell[][] = [];\n\n\t\tconst rowCount: number[] = [];\n\t\tconst rowSpans: number[][] = [];\n\t\theaders.vertical.forEach((_row, index) => {\n\t\t\trowCount[index] = 0;\n\t\t\trowSpans[index] = [];\n\t\t});\n\n\t\tfor (let i = startRow; i < maxRows; i++) {\n\t\t\tconst dataRow: KoliBriTableHeaderCellAndData[] = [];\n\t\t\theaders.vertical.forEach((headerCells, index) => {\n\t\t\t\tlet rowsTotal = 0;\n\t\t\t\trowSpans[index].forEach((value) => (rowsTotal += value));\n\t\t\t\tif (rowsTotal <= i) {\n\t\t\t\t\tconst rows = headerCells[i - rowsTotal + rowCount[index]];\n\t\t\t\t\tif (typeof rows === 'object') {\n\t\t\t\t\t\tdataRow.push({\n\t\t\t\t\t\t\t...rows,\n\t\t\t\t\t\t\tasTd: false,\n\t\t\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n\t\t\t\t\t\t\tdata: {} as KoliBriTableDataType,\n\t\t\t\t\t\t});\n\t\t\t\t\t\tlet rowSpan = 1;\n\t\t\t\t\t\tif (typeof rows.rowSpan === 'number' && rows.rowSpan > 1) {\n\t\t\t\t\t\t\trowSpan = rows.rowSpan;\n\t\t\t\t\t\t}\n\t\t\t\t\t\trowSpans[index].push(rowSpan);\n\t\t\t\t\t\tif (typeof rows.colSpan === 'number' && rows.colSpan > 1) {\n\t\t\t\t\t\t\tfor (let k = 1; k < rows.colSpan; k++) {\n\t\t\t\t\t\t\t\trowSpans[index + k].push(rowSpan);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\trowCount[index]++;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t\tfor (let j = 0; j < maxCols; j++) {\n\t\t\t\tif (this.horizontal === true) {\n\t\t\t\t\tconst row = isFoot ? this.state._dataFoot[i - startRow] : data[i];\n\t\t\t\t\tif (\n\t\t\t\t\t\ttypeof primaryHeader[j] === 'object' &&\n\t\t\t\t\t\tprimaryHeader[j] !== null &&\n\t\t\t\t\t\ttypeof primaryHeader[j].key === 'string' &&\n\t\t\t\t\t\ttypeof row === 'object' &&\n\t\t\t\t\t\trow !== null\n\t\t\t\t\t) {\n\t\t\t\t\t\tdataRow.push({\n\t\t\t\t\t\t\t...primaryHeader[j],\n\t\t\t\t\t\t\tcolSpan: undefined,\n\t\t\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n\t\t\t\t\t\t\tdata: row,\n\t\t\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n\t\t\t\t\t\t\tlabel: row[primaryHeader[j].key as unknown as string] as string,\n\t\t\t\t\t\t\trowSpan: undefined,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif (\n\t\t\t\t\t\ttypeof primaryHeader[i] === 'object' &&\n\t\t\t\t\t\tprimaryHeader[i] !== null &&\n\t\t\t\t\t\ttypeof primaryHeader[i].key === 'string' &&\n\t\t\t\t\t\ttypeof data[j] === 'object' &&\n\t\t\t\t\t\tdata[j] !== null\n\t\t\t\t\t) {\n\t\t\t\t\t\tdataRow.push({\n\t\t\t\t\t\t\t...primaryHeader[i],\n\t\t\t\t\t\t\tcolSpan: undefined,\n\t\t\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n\t\t\t\t\t\t\tdata: data[j],\n\t\t\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n\t\t\t\t\t\t\tlabel: data[j][primaryHeader[i].key as unknown as number] as string,\n\t\t\t\t\t\t\trowSpan: undefined,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tdataField.push(dataRow);\n\t\t}\n\t\tif (data.length === 0) {\n\t\t\tlet colspan = 0;\n\t\t\tlet rowspan = 0;\n\t\t\tif (Array.isArray(headers.horizontal) && headers.horizontal.length > 0) {\n\t\t\t\theaders.horizontal[0].forEach((col) => {\n\t\t\t\t\tcolspan += col.colSpan || 1;\n\t\t\t\t});\n\t\t\t}\n\t\t\tif (Array.isArray(headers.vertical) && headers.vertical.length > 0) {\n\t\t\t\tcolspan -= headers.vertical.length;\n\t\t\t\theaders.vertical[0].forEach((row) => {\n\t\t\t\t\trowspan += row.rowSpan || 1;\n\t\t\t\t});\n\t\t\t}\n\t\t\tconst emptyCell = {\n\t\t\t\tcolSpan: colspan,\n\t\t\t\tlabel: translate('kol-no-entries'),\n\t\t\t\trender: undefined,\n\t\t\t\trowSpan: Math.max(rowspan, 1),\n\t\t\t};\n\t\t\tif (dataField.length === 0) {\n\t\t\t\tdataField.push([emptyCell]);\n\t\t\t} else {\n\t\t\t\tdataField[0].push(emptyCell);\n\t\t\t}\n\t\t}\n\t\treturn dataField;\n\t}\n\n\tprivate selectDisplayedData(data: KoliBriTableDataType[], pageSize: number, page: number): KoliBriTableDataType[] {\n\t\tif (typeof pageSize === 'number' && pageSize > 0 && typeof page === 'number' && page > 0) {\n\t\t\tthis.pageStartSlice = pageSize * (page - 1);\n\t\t\tthis.pageEndSlice = pageSize * page > data.length ? data.length : pageSize * page;\n\t\t\treturn data.slice(this.pageStartSlice, this.pageEndSlice);\n\t\t} else {\n\t\t\tthis.pageStartSlice = 0;\n\t\t\tthis.pageEndSlice = data.length;\n\t\t\treturn data;\n\t\t}\n\t}\n\n\tprivate cellRender(col: KoliBriTableHeaderCellAndData & { render: KoliBriTableRender }, el?: HTMLElement): void {\n\t\tif (el /* SSR instanceof HTMLElement */) {\n\t\t\tclearTimeout(CELL_REFS.get(el));\n\t\t\tCELL_REFS.set(\n\t\t\t\tel,\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tclearTimeout(CELL_REFS.get(el));\n\t\t\t\t\tconst html = col.render(\n\t\t\t\t\t\tel,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tasTd: col.asTd,\n\t\t\t\t\t\t\tlabel: col.label,\n\t\t\t\t\t\t\ttextAlign: col.textAlign,\n\t\t\t\t\t\t\twidth: col.width,\n\t\t\t\t\t\t} as KoliBriTableHeaderCell,\n\t\t\t\t\t\tcol.data,\n\t\t\t\t\t\tthis.state._data\n\t\t\t\t\t);\n\t\t\t\t\tif (typeof html === 'string') {\n\t\t\t\t\t\tel.textContent = html;\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t);\n\t\t}\n\t}\n\n\t/**\n\t *\n\t * @param cell only used for old single sort. Can be removed when sort is removed.\n\t */\n\tprivate updateSortedData = (cell: KoliBriTableSelectedHead = this.sortedColumnHead) => {\n\t\tif (this.disableSort) {\n\t\t\tsetState(this, '_sortedData', this.state._data);\n\t\t\treturn;\n\t\t}\n\n\t\tlet sortedData: KoliBriTableDataType[] = this.state._data;\n\t\tif (this.sortData.length > 0) {\n\t\t\tsortedData = this.state._data.sort((a: KoliBriTableDataType, b: KoliBriTableDataType) => {\n\t\t\t\tfor (let index = 0; index < this.sortData.length; index++) {\n\t\t\t\t\tconst data = this.sortData[index];\n\t\t\t\t\tconst result = data.compareFn(a, b);\n\t\t\t\t\tif (result !== 0) {\n\t\t\t\t\t\treturn data.direction === 'ASC' ? result : -result;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn 0;\n\t\t\t});\n\t\t} else if (typeof this.sortFunction === 'function') {\n\t\t\tswitch (this.sortDirections.get(this.sortFunction)) {\n\t\t\t\tcase 'ASC':\n\t\t\t\t\tsortedData = this.sortFunction([...this.state._data]);\n\t\t\t\t\tthis.sortedColumnHead = { label: cell.label, key: cell.key, sortDirection: 'ASC' };\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'DESC':\n\t\t\t\t\tsortedData = this.sortFunction([...this.state._data]).reverse();\n\t\t\t\t\tthis.sortedColumnHead = { label: cell.label, key: cell.key, sortDirection: 'DESC' };\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'NOS':\n\t\t\t\tdefault:\n\t\t\t\t\tsortedData = [...this.state._data];\n\t\t\t\t\tthis.sortedColumnHead = { label: '', key: '', sortDirection: 'NOS' };\n\t\t\t}\n\t\t}\n\t\tsetState(this, '_sortedData', sortedData);\n\t};\n\n\tprivate readonly renderTableRow = (row: KoliBriTableCell[], rowIndex: number): JSX.Element => {\n\t\treturn <tr key={`tbody-${rowIndex}`}>{row.map((col, colIndex) => this.renderTableCell(col, rowIndex, colIndex))}</tr>;\n\t};\n\tprivate readonly renderTableCell = (cell: KoliBriTableCell, rowIndex: number, colIndex: number): JSX.Element => {\n\t\tif (cell.asTd === false) {\n\t\t\tconst headerCell: KoliBriTableHeaderCell = cell;\n\t\t\tlet sortDirection = undefined;\n\t\t\tlet shortSortDirection: KoliBriSortDirection = 'NOS';\n\t\t\tlet sortButtonIcon = 'codicon codicon-fold';\n\t\t\tif (!this.disableSort) {\n\t\t\t\tif (headerCell.key) {\n\t\t\t\t\tconst data = this.sortData.find((value) => value.key === headerCell.key);\n\t\t\t\t\tif (data) {\n\t\t\t\t\t\tshortSortDirection = data.direction;\n\t\t\t\t\t\tswitch (data.direction) {\n\t\t\t\t\t\t\tcase 'ASC':\n\t\t\t\t\t\t\t\tsortButtonIcon = 'codicon codicon-chevron-up';\n\t\t\t\t\t\t\t\tsortDirection = 'ascending';\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tcase 'DESC':\n\t\t\t\t\t\t\t\tsortButtonIcon = 'codicon codicon-chevron-down';\n\t\t\t\t\t\t\t\tsortDirection = 'descending';\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (headerCell.key === this.sortedColumnHead.key) {\n\t\t\t\t\tshortSortDirection = this.sortedColumnHead.sortDirection;\n\t\t\t\t\tswitch (this.sortedColumnHead.sortDirection) {\n\t\t\t\t\t\tcase 'ASC':\n\t\t\t\t\t\t\tsortButtonIcon = 'codicon codicon-chevron-up';\n\t\t\t\t\t\t\tsortDirection = 'ascending';\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'DESC':\n\t\t\t\t\t\t\tsortButtonIcon = 'codicon codicon-chevron-down';\n\t\t\t\t\t\t\tsortDirection = 'descending';\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn (\n\t\t\t\t<th // role=\"rowheader\"\n\t\t\t\t\tkey={`tbody-${rowIndex}-${colIndex}-${headerCell.label}`}\n\t\t\t\t\tscope={typeof headerCell.rowSpan === 'number' && headerCell.rowSpan > 1 ? 'rowgroup' : 'row'}\n\t\t\t\t\tcolSpan={headerCell.colSpan}\n\t\t\t\t\trowSpan={headerCell.rowSpan}\n\t\t\t\t\tstyle={{\n\t\t\t\t\t\ttextAlign: headerCell.textAlign,\n\t\t\t\t\t\twidth: headerCell.width,\n\t\t\t\t\t}}\n\t\t\t\t\taria-sort={sortDirection}\n\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\t\t\t\tdata-sort={`sort-${shortSortDirection}`}\n\t\t\t\t>\n\t\t\t\t\t<div class=\"w-full flex gap-1 items-center\">\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclass={{\n\t\t\t\t\t\t\t\t'w-full': true,\n\t\t\t\t\t\t\t\t[headerCell.textAlign as string]: typeof headerCell.textAlign === 'string' && headerCell.textAlign.length > 0,\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\tstyle={{ textAlign: headerCell.textAlign }}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{headerCell.label}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t{!this.disableSort && (typeof headerCell.compareFn === 'function' || typeof headerCell.sort === 'function') && (\n\t\t\t\t\t\t\t<kol-button\n\t\t\t\t\t\t\t\texportparts=\"icon\"\n\t\t\t\t\t\t\t\t_icons={sortButtonIcon}\n\t\t\t\t\t\t\t\t_hideLabel\n\t\t\t\t\t\t\t\t_label={translate('kol-change-order', { placeholders: { colLabel: headerCell.label } })}\n\t\t\t\t\t\t\t\t_on={{\n\t\t\t\t\t\t\t\t\tonClick: () => this.changeCellSort(headerCell),\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t_variant=\"ghost\"\n\t\t\t\t\t\t\t></kol-button>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</div>\n\t\t\t\t</th>\n\t\t\t);\n\t\t} else {\n\t\t\treturn (\n\t\t\t\t<td // role=\"gridcell\"\n\t\t\t\t\tkey={`tbody-${rowIndex}-${colIndex}-${cell.label}`}\n\t\t\t\t\tclass={{\n\t\t\t\t\t\t[cell.textAlign as string]: typeof cell.textAlign === 'string' && cell.textAlign.length > 0,\n\t\t\t\t\t}}\n\t\t\t\t\tcolSpan={cell.colSpan}\n\t\t\t\t\trowSpan={cell.rowSpan}\n\t\t\t\t\tstyle={{\n\t\t\t\t\t\ttextAlign: cell.textAlign,\n\t\t\t\t\t\twidth: cell.width,\n\t\t\t\t\t}}\n\t\t\t\t\tref={\n\t\t\t\t\t\ttypeof cell.render === 'function'\n\t\t\t\t\t\t\t? (el) => {\n\t\t\t\t\t\t\t\t\tthis.cellRender(cell as KoliBriTableHeaderCellAndData & { render: KoliBriTableRender }, el);\n\t\t\t\t\t\t\t }\n\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t}\n\t\t\t\t>\n\t\t\t\t\t{typeof cell.render !== 'function' ? cell.label : ''}\n\t\t\t\t</td>\n\t\t\t);\n\t\t}\n\t};\n\n\tprivate readonly renderFoot = (): JSX.Element => {\n\t\tconst rows: KoliBriTableCell[][] = this.createDataField(this.state._dataFoot, this.state._headers, true);\n\t\treturn <tfoot>{rows.map(this.renderTableRow)}</tfoot>;\n\t};\n\n\tprivate renderPagination(): JSX.Element {\n\t\treturn (\n\t\t\t<div class=\"pagination\">\n\t\t\t\t<span>\n\t\t\t\t\t{translate('kol-table-visible-range', {\n\t\t\t\t\t\tplaceholders: {\n\t\t\t\t\t\t\tstart: this.pageEndSlice > 0 ? (this.pageStartSlice + 1).toString() : '0',\n\t\t\t\t\t\t\tend: this.pageEndSlice.toString(),\n\t\t\t\t\t\t\ttotal:\n\t\t\t\t\t\t\t\tthis.state._pagination && this.state._pagination._max > 0\n\t\t\t\t\t\t\t\t\t? this.state._pagination._max.toString()\n\t\t\t\t\t\t\t\t\t: Array.isArray(this.state._data)\n\t\t\t\t\t\t\t\t\t? this.state._data.length.toString()\n\t\t\t\t\t\t\t\t\t: '0',\n\t\t\t\t\t\t},\n\t\t\t\t\t})}\n\t\t\t\t</span>\n\t\t\t\t<div>\n\t\t\t\t\t<kol-pagination\n\t\t\t\t\t\t_boundaryCount={this.state._pagination._boundaryCount}\n\t\t\t\t\t\t_customClass={this.state._pagination._customClass}\n\t\t\t\t\t\t_on={this.handlePagination}\n\t\t\t\t\t\t_page={this.state._pagination._page}\n\t\t\t\t\t\t_pageSize={this.state._pagination._pageSize}\n\t\t\t\t\t\t_pageSizeOptions={this.state._pagination._pageSizeOptions || PAGINATION_OPTIONS}\n\t\t\t\t\t\t_siblingCount={this.state._pagination._siblingCount}\n\t\t\t\t\t\t_tooltipAlign=\"bottom\"\n\t\t\t\t\t\t_max={this.state._pagination._max || this.state._pagination._max || this.state._data.length}\n\t\t\t\t\t\t_label={translate('kol-table-pagination-label', { placeholders: { label: this.state._label } })}\n\t\t\t\t\t></kol-pagination>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t);\n\t}\n\n\tpublic render(): JSX.Element {\n\t\tconst displayedData: KoliBriTableDataType[] = this.selectDisplayedData(\n\t\t\tthis.state._sortedData,\n\t\t\tthis.showPagination ? this.state._pagination?._pageSize ?? 10 : this.state._sortedData.length,\n\t\t\tthis.state._pagination._page || 1\n\t\t);\n\t\tconst dataField = this.createDataField(displayedData, this.state._headers);\n\t\tconst paginationTop = this._paginationPosition === 'top' || this._paginationPosition === 'both' ? this.renderPagination() : null;\n\t\tconst paginationBottom = this._paginationPosition === 'bottom' || this._paginationPosition === 'both' ? this.renderPagination() : null;\n\n\t\treturn (\n\t\t\t<Host>\n\t\t\t\t{this.pageEndSlice > 0 && this.showPagination && paginationTop}\n\n\t\t\t\t{/* Firefox automatically makes the following div focusable when it has a scrollbar. We implement a similar behavior cross-browser by allowing the\n\t\t\t\t * <caption> to receive focus. Hence, we disable focus for the div to avoid having two focusable elements:\n\t\t\t\t * tabindex=\"-1\" prevents keyboard-focus,\n\t\t\t\t * catching the mouseDown event prevents click-focus\n\t\t\t\t */}\n\t\t\t\t{/* eslint-disable-next-line jsx-a11y/no-static-element-interactions */}\n\t\t\t\t<div\n\t\t\t\t\tref={(element) => (this.tableDivElement = element)}\n\t\t\t\t\tclass=\"table\"\n\t\t\t\t\ttabindex=\"-1\"\n\t\t\t\t\tonMouseDown={(event) => {\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t<table\n\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\tminWidth: this.state._minWidth,\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t<caption tabindex={this.tableDivElementHasScrollbar ? '0' : undefined}>{this.state._label}</caption>\n\t\t\t\t\t\t{Array.isArray(this.state._headers.horizontal) && (\n\t\t\t\t\t\t\t<thead>\n\t\t\t\t\t\t\t\t{this.state._headers.horizontal.map((cols, rowIndex) => (\n\t\t\t\t\t\t\t\t\t<tr key={`thead-${rowIndex}`}>\n\t\t\t\t\t\t\t\t\t\t{cols.map((col, colIndex) => {\n\t\t\t\t\t\t\t\t\t\t\tif (col.asTd === true) {\n\t\t\t\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t\t\t\t<td // role=\"gridcell\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tkey={`thead-${rowIndex}-${colIndex}-${col.label}`}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tclass={{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[col.textAlign as string]: typeof col.textAlign === 'string' && col.textAlign.length > 0,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tcolSpan={col.colSpan}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\trowSpan={col.rowSpan}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttextAlign: col.textAlign,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\twidth: col.width,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tref={\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttypeof col.render === 'function'\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t? (el) => {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis.cellRender(col as KoliBriTableHeaderCellAndData & { render: KoliBriTableRender }, el);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t }\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{typeof col.render !== 'function' ? col.label : ''}\n\t\t\t\t\t\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\tconst headerCell: KoliBriTableHeaderCell = col;\n\t\t\t\t\t\t\t\t\t\t\t\tlet sortDirection = undefined;\n\t\t\t\t\t\t\t\t\t\t\t\tlet shortSortDirection: KoliBriSortDirection = 'NOS';\n\t\t\t\t\t\t\t\t\t\t\t\tlet sortButtonIcon = 'codicon codicon-fold';\n\t\t\t\t\t\t\t\t\t\t\t\tif (headerCell.key) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tconst data = this.sortData.find((value) => value.key === headerCell.key);\n\t\t\t\t\t\t\t\t\t\t\t\t\tif (data) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tshortSortDirection = data.direction;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tswitch (data.direction) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcase 'ASC':\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsortButtonIcon = 'codicon codicon-chevron-up';\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsortDirection = 'ascending';\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcase 'DESC':\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsortButtonIcon = 'codicon codicon-chevron-down';\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsortDirection = 'descending';\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tif (headerCell.key === this.sortedColumnHead.key) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tshortSortDirection = this.sortedColumnHead.sortDirection;\n\t\t\t\t\t\t\t\t\t\t\t\t\tswitch (this.sortedColumnHead.sortDirection) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tcase 'ASC':\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsortButtonIcon = 'codicon codicon-chevron-up';\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsortDirection = 'ascending';\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tcase 'DESC':\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsortButtonIcon = 'codicon codicon-chevron-down';\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsortDirection = 'descending';\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t\t\t\t<th\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tclass={col.textAlign ? `align-${col.textAlign}` : undefined}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tkey={`thead-${rowIndex}-${colIndex}-${headerCell.label}`}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tscope={typeof headerCell.colSpan === 'number' && headerCell.colSpan > 1 ? 'colgroup' : 'col'}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tcolSpan={headerCell.colSpan}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\trowSpan={headerCell.rowSpan}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\twidth: col.width,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\taria-sort={sortDirection}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tdata-sort={`sort-${shortSortDirection}`}\n\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{!this.disableSort && (typeof headerCell.compareFn === 'function' || typeof headerCell.sort === 'function') ? (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<kol-button-wc\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tclass=\"table-sort-button\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\texportparts=\"icon\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t_icons={{ right: sortButtonIcon }}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t_label={col.label}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t_on={{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tonClick: () => this.changeCellSort(headerCell),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t></kol-button-wc>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcol.label\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t\t\t</th>\n\t\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t</thead>\n\t\t\t\t\t\t)}\n\t\t\t\t\t\t<tbody>{dataField.map(this.renderTableRow)}</tbody>\n\t\t\t\t\t\t{this.state._dataFoot.length > 0 ? this.renderFoot() : ''}\n\t\t\t\t\t</table>\n\t\t\t\t</div>\n\t\t\t\t{this.pageEndSlice > 0 && this.showPagination && paginationBottom}\n\t\t\t</Host>\n\t\t);\n\t}\n}\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
1
  /*!
2
2
  * KoliBri - The accessible HTML-Standard
3
3
  */
4
- import{r as t,h as n,H as i,g as e}from"./index-a5e15b1e.js";import{d as o,aj as s,v as a,f as l,ak as r,s as d,Z as h,m as u,u as b,al as c}from"./index-836a963f.js";import{a as p}from"./i18n-e3260ea2.js";import"./index-4391c04d.js";import"./dev.utils-44a0a914.js";const f="/*\n * This file contains all rules for accessibility.\n */\n@layer kol-global {\n\t:host {\n\t\t/*\n\t\t * Minimum size of interactive elements.\n\t\t */\n\t\t--a11y-min-size: 44px;\n\t\t/*\n\t\t * No element should be used without a background and font color whose contrast ratio has\n\t\t * not been checked. By initially setting the background color to white and the font color\n\t\t * to black, the contrast ratio is ensured and explicit adjustment is forced.\n\t\t */\n\t\tbackground-color: white;\n\t\tcolor: black;\n\t\t/*\n\t\t * Verdana is an accessible font that can be used without requiring additional loading time.\n\t\t */\n\t\tfont-family: Verdana;\n\t}\n\n\t* {\n\t\t/*\n\t\t * This rule enables the word dividing for all texts. That is important for high zoom levels.\n\t\t */\n\t\thyphens: auto;\n\t\t/*\n\t\t * Letter spacing is required for all texts.\n\t\t */\n\t\tletter-spacing: inherit;\n\t\t/*\n\t\t * This rule enables the word dividing for all texts. That is important for high zoom levels.\n\t\t */\n\t\tword-break: break-word;\n\t\t/*\n\t\t * Word spacing is required for all texts.\n\t\t */\n\t\tword-spacing: inherit;\n\t}\n\n\t/*\n\t * All interactive elements should have a minimum size of 44px.\n\t */\n\t/* input:not([type='checkbox'], [type='radio'], [type='range']), */\n\t/* option, */\n\t/* select, */\n\t/* textarea, */\n\t[role='button'],\n\tbutton:not([role='link']),\n\tkol-input .input {\n\t\tmin-height: var(--a11y-min-size);\n\t\tmin-width: var(--a11y-min-size);\n\t}\n\n\t/*\n\t * Some interactive elements should not inherit the font-family and font-size.\n\t */\n\ta,\n\tbutton,\n\th1,\n\th2,\n\th3,\n\th4,\n\th5,\n\th6,\n\tinput,\n\toption,\n\tselect,\n\ttextarea {\n\t\t/*\n\t\t * All elements should inherit the font family from his parent element.\n\t\t */\n\t\tfont-family: inherit;\n\t\t/*\n\t\t * All elements should inherit the font size from his parent element.\n\t\t */\n\t\tfont-size: inherit;\n\t}\n}\n\n/**\n * Sometimes we need the semantic element for accessibility reasons,\n * but we don't want to show it.\n *\n * - https://www.a11yproject.com/posts/how-to-hide-content/\n */\n.visually-hidden {\n\tclip: rect(0 0 0 0);\n\tclip-path: inset(50%);\n\theight: 1px;\n\toverflow: hidden;\n\tposition: absolute;\n\twhite-space: nowrap;\n\twidth: 1px;\n}\n\n@layer kol-global {\n\t/*\n\t * Dieses CSS stellt sicher, dass der Standard-Style\n\t * von A und Button resettet werden.\n\t */\n\t:is(a, button) {\n\t\tbackground-color: transparent;\n\t\tborder: none;\n\t\tmargin: 0;\n\t\tpadding: 0;\n\t\twidth: 100%; /* 100% needed for custom width from outside */\n\t}\n\n\t/*\n\t * Ensure elements with hidden attribute to be actually not visible\n\t * @see https://meowni.ca/hidden.is.a.lie.html\n\t */\n\t[hidden] {\n\t\tdisplay: none !important;\n\t}\n}\n\n@layer kol-global {\n\t:host {\n\t\t/*\n\t\t * The max-width is needed to prevent the table from overflowing the\n\t\t * parent node, if the table is wider than the parent node.\n\t\t */\n\t\tmax-width: 100%;\n\t}\n\n\t* {\n\t\t/*\n\t\t * We prefer to box-sizing: border-box for all elements.\n\t\t */\n\t\tbox-sizing: border-box;\n\t}\n\n\t/* KolSpan is a layout component with icons in all directions and a label text in the middle. */\n\tkol-span-wc {\n\t\tdisplay: grid;\n\t\tplace-items: center;\n\t}\n\n\t/* The sub span in KolSpan is the horizontal span with icon left and right and the label text in the middle. */\n\tkol-span-wc > span {\n\t\tdisplay: flex;\n\t\tplace-items: center;\n\t}\n\n\ta,\n\tbutton {\n\t\tcursor: pointer;\n\t}\n\n\t/* This is the text label. */\n\t.hide-label > kol-span-wc > span > span {\n\t\tdisplay: none;\n\t}\n\n\t.disabled label,\n\t[aria-disabled='true'],\n\t[disabled] {\n\t\tcursor: not-allowed;\n\t\topacity: 0.5;\n\t\toutline: none;\n\t}\n}\n\n@layer kol-component {\n\t:host {\n\t\tdisplay: block;\n\t}\n}\n\n@layer kol-component {\n\tkol-button-group-wc {\n\t\tdisplay: inline-flex;\n\t\tflex-wrap: wrap;\n\t}\n\n\tkol-button-group-wc button {\n\t\tborder-bottom-color: transparent;\n\t\tborder-bottom-style: solid;\n\t\tdisplay: block;\n\t}\n\n\tdiv.grid,\n\tdiv[role='tabpanel'] {\n\t\theight: 100%;\n\t}\n\n\t:host > .tabs-align-right {\n\t\tdisplay: grid;\n\t\tgrid-template-columns: 1fr auto;\n\t}\n\n\t:host > .tabs-align-right kol-button-group-wc {\n\t\tdisplay: grid;\n\t\torder: 2;\n\t}\n\n\t:host > .tabs-align-left {\n\t\tdisplay: grid;\n\t\tgrid-template-columns: auto 1fr;\n\t}\n\n\t:host > .tabs-align-left kol-button-group-wc {\n\t\tdisplay: grid;\n\t\torder: 0;\n\t}\n\n\t:host > .tabs-align-bottom {\n\t\tdisplay: grid;\n\t\tgrid-template-rows: 1fr auto;\n\t}\n\n\t:host > .tabs-align-bottom kol-button-group-wc {\n\t\torder: 2;\n\t}\n\n\t:host > .tabs-align-bottom kol-button-group-wc > div {\n\t\tdisplay: flex;\n\t}\n\n\t:host > .tabs-align-bottom > kol-button-group-wc > div > div:first-child {\n\t\tmargin: 0 1em 0 0;\n\t}\n\n\t:host > .tabs-align-bottom > kol-button-group-wc > div > div {\n\t\tmargin: 0 1em;\n\t}\n\n\t:host > .tabs-align-top {\n\t\tdisplay: grid;\n\t\tgrid-template-rows: auto 1fr;\n\t}\n\n\t:host > .tabs-align-top kol-button-group-wc {\n\t\torder: 0;\n\t}\n\n\t:host > .tabs-align-top kol-button-group-wc > div {\n\t\tdisplay: flex;\n\t}\n\n\t:host > .tabs-align-top > kol-button-group-wc > div > div:first-child {\n\t\tmargin: 0 1em 0 0;\n\t}\n\n\t:host > .tabs-align-top > kol-button-group-wc > div > div {\n\t\tmargin: 0 1em;\n\t}\n\n\t:host > div {\n\t\tdisplay: grid;\n\t}\n\n\t:host > .tabs-align-left kol-button-group-wc,\n\t:host > .tabs-align-top kol-button-group-wc {\n\t\torder: 0;\n\t}\n\n\t:host > .tabs-align-bottom kol-button-group-wc,\n\t:host > .tabs-align-right kol-button-group-wc {\n\t\torder: 1;\n\t}\n\n\t:host > div.tabs-align-left kol-button-group-wc > div,\n\t:host > div.tabs-align-left kol-button-group-wc > div > div,\n\t:host > div.tabs-align-right kol-button-group-wc > div,\n\t:host > div.tabs-align-right kol-button-group-wc > div > div {\n\t\tdisplay: grid;\n\t}\n\n\t:host > div.tabs-align-left kol-button-group-wc > div > div kol-button-wc,\n\t:host > div.tabs-align-right kol-button-group-wc > div > div kol-button-wc {\n\t\twidth: 100%;\n\t}\n\n\t:host > div.tabs-align-bottom kol-button-group-wc div,\n\t:host > div.tabs-align-top kol-button-group-wc div {\n\t\tdisplay: flex;\n\t\tflex-wrap: wrap;\n\t}\n}\n",g=f,m=class{constructor(n){t(this,n),this.onCreateLabel=`${p("kol-new")} …`,this.showCreateTab=!1,this.nextPossibleTabIndex=(t,n,e)=>{if(e>0){if(n+e<t.length)return t[n+e]._disabled?this.nextPossibleTabIndex(t,n,e+1):n+e}else if(e<0&&n+e>=0)return t[n+e]._disabled?this.nextPossibleTabIndex(t,n,e-1):n+e;return n},this.onKeyDown=t=>{const n=setTimeout((()=>{clearTimeout(n);let e=null;switch(t.key){case"ArrowRight":e=this.nextPossibleTabIndex(this.state._tabs,this.state._selected,1);break;case"ArrowLeft":e=this.nextPossibleTabIndex(this.state._tabs,this.state._selected,-1)}null!==e&&this.onSelect(t,e,!0)}),250)},this.onClickSelect=(t,n)=>{this.onSelect(t,n,!0)},this.onMouseDown=t=>{t.preventDefault(),t.stopPropagation()},this.callbacks={onClick:this.onClickSelect,onMouseDown:this.onMouseDown},this.catchTabPanelHost=t=>{this.tabPanelHost=t},this.selectNextNotDisabledTab=(t,n,e=!0,i)=>{if(t>n.length-1&&(t=n.length-1),t<0&&(t=0),Array.isArray(n)&&n[t]&&n[t]._disabled){if(!0===e){if(t<n.length-1)return this.selectNextNotDisabledTab(t+1,n,!0,i||t);t=i||t,e=!1}if(!1===e){if(t>0)return this.selectNextNotDisabledTab(t-1,n,!1,i||t);o("[KolTabs] Alle Tabs sind deaktiviert und somit kann kein Tab angezeigt werden.")}}return t},this.syncSelectedAndTabs=(t,n,e,i)=>{let a,o;a="_selected"===i?t:this.state._selected,o="_tabs"===i?t:this.state._tabs,o.length>0&&n.set("_selected",this.selectNextNotDisabledTab(a,o))},this.handleTabPanels=()=>{var t,n,e;if(this.tabPanelHost instanceof HTMLDivElement)for(let i=this.tabPanelHost.children.length;i<this.state._tabs.length;i++){const a=document.createElement("div");a.setAttribute("aria-labelledby",`${this.state._label.replace(/\s/g,"-")}-tab-${i}`),a.setAttribute("id",`tabpanel-${i}`),a.setAttribute("role","tabpanel"),a.setAttribute("hidden","");const o=document.createElement("slot");o.setAttribute("name",`tabpanel-slot-${i}`),a.appendChild(o),this.tabPanelHost.appendChild(a),(null===(t=this.host)||void 0===t?void 0:t.children)instanceof HTMLCollection&&(null===(n=this.host)||void 0===n?void 0:n.children[i])&&(null===(e=this.host)||void 0===e||e.children[i].setAttribute("slot",`tabpanel-slot-${i}`))}},this.onCreate=t=>{var n,e;t.preventDefault(),t.stopPropagation(),"function"==typeof(null===(n=this.state._on)||void 0===n?void 0:n.onCreate)&&(null===(e=this.state._on)||void 0===e||e.onCreate(t))},this._align="top",this._label=void 0,this._on=void 0,this._selected=0,this._tabs=void 0,this.state={_align:"top",_label:"",_selected:0,_tabs:[]}}renderButtonGroup(){return n("kol-button-group-wc",{class:"tabs-button-group",role:"tablist","aria-label":this.state._label,onKeyDown:this.onKeyDown},this.state._tabs.map(((t,e)=>n("kol-button-wc",{_disabled:t._disabled,_icons:t._icons,_hideLabel:t._hideLabel,_label:t._label,_on:this.callbacks,_tabIndex:this.state._selected===e?0:-1,_tooltipAlign:t._tooltipAlign,_variant:this.state._selected===e?"custom":void 0,_customClass:this.state._selected===e?"selected":void 0,_ariaControls:`tabpanel-${e}`,_ariaSelected:this.state._selected===e,_id:`${this.state._label.replace(/\s/g,"-")}-tab-${e}`,_role:"tab",_value:e}))),this.showCreateTab&&n("kol-button-wc",{class:"create-button",_label:this.onCreateLabel,_on:{onClick:this.onCreate}}))}render(){return n(i,null,n("div",{ref:t=>{this.tabPanelsElement=t},class:{[`tabs-align-${this.state._align}`]:!0}},this.renderButtonGroup(),n("div",{class:"tabs-content",ref:this.catchTabPanelHost})))}validateAlign(t){s(this,t)}validateLabel(t){a(this,t,{required:!0})}validateOn(t){if("object"==typeof t&&null!==t){l("[KolTabs] Prüfen, wie man auch einen EventCallback einzeln ändern kann.");const n={};"function"!=typeof t.onCreate&&"object"!=typeof t.onCreate||("object"==typeof t.onCreate?("string"==typeof t.onCreate.label&&t.onCreate.label.length>0?this.onCreateLabel=t.onCreate.label:r.debug("[KolTabs] Der Label-Text für Neu in {\n onCreate: {\n label: string (!),\n callback: Function\n }\n} ist nicht korrekt gesetzt."),"function"==typeof t.onCreate.callback?n.onCreate=t.onCreate.callback:r.debug("[KolTabs] Die onCreate-Callback-Funktion für Neu in {\n onCreate: {\n label: string,\n callback: Function (!)\n }\n} ist nicht korrekt gesetzt.")):n.onCreate=t.onCreate,this.showCreateTab="function"==typeof n.onCreate),"function"==typeof t.onSelect&&(n.onSelect=t.onSelect),d(this,"_on",n)}}validateSelected(t){h(this,"_selected",t,{hooks:{beforePatch:this.syncSelectedAndTabs}})}validateTabs(t){u(this,"_tabs",(t=>"object"==typeof t&&null!==t&&"string"==typeof t._label&&t._label.length>0),t,void 0,{hooks:{beforePatch:this.syncSelectedAndTabs}}),b("KolTabs",this.state._tabs.length)}componentWillLoad(){this.validateAlign(this._align),this.validateLabel(this._label),this.validateOn(this._on),this.validateSelected(this._selected),this.validateTabs(this._tabs)}componentDidRender(){if(this.handleTabPanels(),this.tabPanelHost instanceof HTMLDivElement)for(let t=0;t<this.tabPanelHost.children.length;t++)t!==this.state._selected?this.tabPanelHost.children[t].setAttribute("hidden",""):this.tabPanelHost.children[t].removeAttribute("hidden")}onSelect(t,n,e=!1){var i,a;this._selected=n,"function"==typeof(null===(i=this._on)||void 0===i?void 0:i.onSelect)&&(null===(a=this._on)||void 0===a||a.onSelect(t,n)),!0===e&&(this.selectedTimeout=setTimeout((()=>{if(clearTimeout(this.selectedTimeout),this.tabPanelsElement){const t=c(`button#${this.state._label.replace(/\s/g,"-")}-tab-${n}`,this.tabPanelsElement);null==t||t.focus()}}),250))}get host(){return e(this)}static get watchers(){return{_align:["validateAlign"],_label:["validateLabel"],_on:["validateOn"],_selected:["validateSelected"],_tabs:["validateTabs"]}}};m.style={default:g};export{m as kol_tabs};
4
+ import{r as t,h as n,H as i,g as e}from"./index-a5e15b1e.js";import{h as o,as as s,v as a,j as l,L as r,m as d,a7 as h,y as u,z as b,at as c}from"./index-c3ae175d.js";import{a as p}from"./i18n-73edd5e1.js";import"./index-eb50dd62.js";import"./dev.utils-c7d151c6.js";const f="/*\n * This file contains all rules for accessibility.\n */\n@layer kol-global {\n\t:host {\n\t\t/*\n\t\t * Minimum size of interactive elements.\n\t\t */\n\t\t--a11y-min-size: 44px;\n\t\t/*\n\t\t * No element should be used without a background and font color whose contrast ratio has\n\t\t * not been checked. By initially setting the background color to white and the font color\n\t\t * to black, the contrast ratio is ensured and explicit adjustment is forced.\n\t\t */\n\t\tbackground-color: white;\n\t\tcolor: black;\n\t\t/*\n\t\t * Verdana is an accessible font that can be used without requiring additional loading time.\n\t\t */\n\t\tfont-family: Verdana;\n\t}\n\n\t* {\n\t\t/*\n\t\t * This rule enables the word dividing for all texts. That is important for high zoom levels.\n\t\t */\n\t\thyphens: auto;\n\t\t/*\n\t\t * Letter spacing is required for all texts.\n\t\t */\n\t\tletter-spacing: inherit;\n\t\t/*\n\t\t * This rule enables the word dividing for all texts. That is important for high zoom levels.\n\t\t */\n\t\tword-break: break-word;\n\t\t/*\n\t\t * Word spacing is required for all texts.\n\t\t */\n\t\tword-spacing: inherit;\n\t}\n\n\t/*\n\t * All interactive elements should have a minimum size of 44px.\n\t */\n\t/* input:not([type='checkbox'], [type='radio'], [type='range']), */\n\t/* option, */\n\t/* select, */\n\t/* textarea, */\n\t[role='button'],\n\tbutton:not([role='link']),\n\tkol-input .input {\n\t\tmin-height: var(--a11y-min-size);\n\t\tmin-width: var(--a11y-min-size);\n\t}\n\n\t/*\n\t * Some interactive elements should not inherit the font-family and font-size.\n\t */\n\ta,\n\tbutton,\n\th1,\n\th2,\n\th3,\n\th4,\n\th5,\n\th6,\n\tinput,\n\toption,\n\tselect,\n\ttextarea {\n\t\t/*\n\t\t * All elements should inherit the font family from his parent element.\n\t\t */\n\t\tfont-family: inherit;\n\t\t/*\n\t\t * All elements should inherit the font size from his parent element.\n\t\t */\n\t\tfont-size: inherit;\n\t}\n}\n\n/**\n * Sometimes we need the semantic element for accessibility reasons,\n * but we don't want to show it.\n *\n * - https://www.a11yproject.com/posts/how-to-hide-content/\n */\n.visually-hidden {\n\tclip: rect(0 0 0 0);\n\tclip-path: inset(50%);\n\theight: 1px;\n\toverflow: hidden;\n\tposition: absolute;\n\twhite-space: nowrap;\n\twidth: 1px;\n}\n\n@layer kol-global {\n\t/*\n\t * Dieses CSS stellt sicher, dass der Standard-Style\n\t * von A und Button resettet werden.\n\t */\n\t:is(a, button) {\n\t\tbackground-color: transparent;\n\t\tborder: none;\n\t\tmargin: 0;\n\t\tpadding: 0;\n\t\twidth: 100%; /* 100% needed for custom width from outside */\n\t}\n\n\t/*\n\t * Ensure elements with hidden attribute to be actually not visible\n\t * @see https://meowni.ca/hidden.is.a.lie.html\n\t */\n\t[hidden] {\n\t\tdisplay: none !important;\n\t}\n}\n\n@layer kol-global {\n\t:host {\n\t\t/*\n\t\t * The max-width is needed to prevent the table from overflowing the\n\t\t * parent node, if the table is wider than the parent node.\n\t\t */\n\t\tmax-width: 100%;\n\t}\n\n\t* {\n\t\t/*\n\t\t * We prefer to box-sizing: border-box for all elements.\n\t\t */\n\t\tbox-sizing: border-box;\n\t}\n\n\t/* KolSpan is a layout component with icons in all directions and a label text in the middle. */\n\tkol-span-wc {\n\t\tdisplay: grid;\n\t\tplace-items: center;\n\t}\n\n\t/* The sub span in KolSpan is the horizontal span with icon left and right and the label text in the middle. */\n\tkol-span-wc > span {\n\t\tdisplay: flex;\n\t\tplace-items: center;\n\t}\n\n\ta,\n\tbutton {\n\t\tcursor: pointer;\n\t}\n\n\t.hidden {\n\t\tdisplay: none;\n\t\tvisibility: hidden;\n\t}\n\n\t/* This is the text label. */\n\t.hide-label > kol-span-wc > span > span {\n\t\tdisplay: none;\n\t}\n\n\t.disabled label,\n\t[aria-disabled='true'],\n\t[disabled] {\n\t\tcursor: not-allowed;\n\t\topacity: 0.5;\n\t\toutline: none;\n\t}\n}\n\n@layer kol-component {\n\t:host {\n\t\tdisplay: block;\n\t}\n}\n\n@layer kol-component {\n\tkol-button-group-wc {\n\t\tdisplay: inline-flex;\n\t\tflex-wrap: wrap;\n\t}\n\n\tkol-button-group-wc button {\n\t\tborder-bottom-color: transparent;\n\t\tborder-bottom-style: solid;\n\t\tdisplay: block;\n\t}\n\n\tdiv.grid,\n\tdiv[role='tabpanel'] {\n\t\theight: 100%;\n\t}\n\n\t:host > .tabs-align-right {\n\t\tdisplay: grid;\n\t\tgrid-template-columns: 1fr auto;\n\t}\n\n\t:host > .tabs-align-right kol-button-group-wc {\n\t\tdisplay: grid;\n\t\torder: 2;\n\t}\n\n\t:host > .tabs-align-left {\n\t\tdisplay: grid;\n\t\tgrid-template-columns: auto 1fr;\n\t}\n\n\t:host > .tabs-align-left kol-button-group-wc {\n\t\tdisplay: grid;\n\t\torder: 0;\n\t}\n\n\t:host > .tabs-align-bottom {\n\t\tdisplay: grid;\n\t\tgrid-template-rows: 1fr auto;\n\t}\n\n\t:host > .tabs-align-bottom kol-button-group-wc {\n\t\torder: 2;\n\t}\n\n\t:host > .tabs-align-bottom kol-button-group-wc > div {\n\t\tdisplay: flex;\n\t}\n\n\t:host > .tabs-align-bottom > kol-button-group-wc > div > div:first-child {\n\t\tmargin: 0 1em 0 0;\n\t}\n\n\t:host > .tabs-align-bottom > kol-button-group-wc > div > div {\n\t\tmargin: 0 1em;\n\t}\n\n\t:host > .tabs-align-top {\n\t\tdisplay: grid;\n\t\tgrid-template-rows: auto 1fr;\n\t}\n\n\t:host > .tabs-align-top kol-button-group-wc {\n\t\torder: 0;\n\t}\n\n\t:host > .tabs-align-top kol-button-group-wc > div {\n\t\tdisplay: flex;\n\t}\n\n\t:host > .tabs-align-top > kol-button-group-wc > div > div:first-child {\n\t\tmargin: 0 1em 0 0;\n\t}\n\n\t:host > .tabs-align-top > kol-button-group-wc > div > div {\n\t\tmargin: 0 1em;\n\t}\n\n\t:host > div {\n\t\tdisplay: grid;\n\t}\n\n\t:host > .tabs-align-left kol-button-group-wc,\n\t:host > .tabs-align-top kol-button-group-wc {\n\t\torder: 0;\n\t}\n\n\t:host > .tabs-align-bottom kol-button-group-wc,\n\t:host > .tabs-align-right kol-button-group-wc {\n\t\torder: 1;\n\t}\n\n\t:host > div.tabs-align-left kol-button-group-wc > div,\n\t:host > div.tabs-align-left kol-button-group-wc > div > div,\n\t:host > div.tabs-align-right kol-button-group-wc > div,\n\t:host > div.tabs-align-right kol-button-group-wc > div > div {\n\t\tdisplay: grid;\n\t}\n\n\t:host > div.tabs-align-left kol-button-group-wc > div > div kol-button-wc,\n\t:host > div.tabs-align-right kol-button-group-wc > div > div kol-button-wc {\n\t\twidth: 100%;\n\t}\n\n\t:host > div.tabs-align-bottom kol-button-group-wc div,\n\t:host > div.tabs-align-top kol-button-group-wc div {\n\t\tdisplay: flex;\n\t\tflex-wrap: wrap;\n\t}\n}\n",g=f,m=class{constructor(n){t(this,n),this.onCreateLabel=`${p("kol-new")} …`,this.showCreateTab=!1,this.nextPossibleTabIndex=(t,n,e)=>{if(e>0){if(n+e<t.length)return t[n+e]._disabled?this.nextPossibleTabIndex(t,n,e+1):n+e}else if(e<0&&n+e>=0)return t[n+e]._disabled?this.nextPossibleTabIndex(t,n,e-1):n+e;return n},this.onKeyDown=t=>{const n=setTimeout((()=>{clearTimeout(n);let e=null;switch(t.key){case"ArrowRight":e=this.nextPossibleTabIndex(this.state._tabs,this.state._selected,1);break;case"ArrowLeft":e=this.nextPossibleTabIndex(this.state._tabs,this.state._selected,-1)}null!==e&&this.onSelect(t,e,!0)}),250)},this.onClickSelect=(t,n)=>{this.onSelect(t,n,!0)},this.onMouseDown=t=>{t.preventDefault(),t.stopPropagation()},this.callbacks={onClick:this.onClickSelect,onMouseDown:this.onMouseDown},this.catchTabPanelHost=t=>{this.tabPanelHost=t},this.selectNextNotDisabledTab=(t,n,e=!0,i)=>{if(t>n.length-1&&(t=n.length-1),t<0&&(t=0),Array.isArray(n)&&n[t]&&n[t]._disabled){if(!0===e){if(t<n.length-1)return this.selectNextNotDisabledTab(t+1,n,!0,i||t);t=i||t,e=!1}if(!1===e){if(t>0)return this.selectNextNotDisabledTab(t-1,n,!1,i||t);o("[KolTabs] Alle Tabs sind deaktiviert und somit kann kein Tab angezeigt werden.")}}return t},this.syncSelectedAndTabs=(t,n,e,i)=>{let o,a;o="_selected"===i?t:this.state._selected,a="_tabs"===i?t:this.state._tabs,a.length>0&&n.set("_selected",this.selectNextNotDisabledTab(o,a))},this.handleTabPanels=()=>{var t,n,e;if(this.tabPanelHost instanceof HTMLDivElement)for(let i=this.tabPanelHost.children.length;i<this.state._tabs.length;i++){const o=document.createElement("div");o.setAttribute("aria-labelledby",`${this.state._label.replace(/\s/g,"-")}-tab-${i}`),o.setAttribute("id",`tabpanel-${i}`),o.setAttribute("role","tabpanel"),o.setAttribute("hidden","");const a=document.createElement("slot");a.setAttribute("name",`tabpanel-slot-${i}`),o.appendChild(a),this.tabPanelHost.appendChild(o),(null===(t=this.host)||void 0===t?void 0:t.children)instanceof HTMLCollection&&(null===(n=this.host)||void 0===n?void 0:n.children[i])&&(null===(e=this.host)||void 0===e||e.children[i].setAttribute("slot",`tabpanel-slot-${i}`))}},this.onCreate=t=>{var n,e;t.preventDefault(),t.stopPropagation(),"function"==typeof(null===(n=this.state._on)||void 0===n?void 0:n.onCreate)&&(null===(e=this.state._on)||void 0===e||e.onCreate(t))},this._align="top",this._label=void 0,this._on=void 0,this._selected=0,this._tabs=void 0,this.state={_align:"top",_label:"",_selected:0,_tabs:[]}}renderButtonGroup(){return n("kol-button-group-wc",{class:"tabs-button-group",role:"tablist","aria-label":this.state._label,onKeyDown:this.onKeyDown},this.state._tabs.map(((t,e)=>n("kol-button-wc",{_disabled:t._disabled,_icons:t._icons,_hideLabel:t._hideLabel,_label:t._label,_on:this.callbacks,_tabIndex:this.state._selected===e?0:-1,_tooltipAlign:t._tooltipAlign,_variant:this.state._selected===e?"custom":void 0,_customClass:this.state._selected===e?"selected":void 0,_ariaControls:`tabpanel-${e}`,_ariaSelected:this.state._selected===e,_id:`${this.state._label.replace(/\s/g,"-")}-tab-${e}`,_role:"tab",_value:e}))),this.showCreateTab&&n("kol-button-wc",{class:"create-button",_label:this.onCreateLabel,_on:{onClick:this.onCreate}}))}render(){return n(i,null,n("div",{ref:t=>{this.tabPanelsElement=t},class:{[`tabs-align-${this.state._align}`]:!0}},this.renderButtonGroup(),n("div",{class:"tabs-content",ref:this.catchTabPanelHost})))}validateAlign(t){s(this,t)}validateLabel(t){a(this,t,{required:!0})}validateOn(t){if("object"==typeof t&&null!==t){l("[KolTabs] Prüfen, wie man auch einen EventCallback einzeln ändern kann.");const n={};"function"!=typeof t.onCreate&&"object"!=typeof t.onCreate||("object"==typeof t.onCreate?("string"==typeof t.onCreate.label&&t.onCreate.label.length>0?this.onCreateLabel=t.onCreate.label:r.debug("[KolTabs] Der Label-Text für Neu in {\n onCreate: {\n label: string (!),\n callback: Function\n }\n} ist nicht korrekt gesetzt."),"function"==typeof t.onCreate.callback?n.onCreate=t.onCreate.callback:r.debug("[KolTabs] Die onCreate-Callback-Funktion für Neu in {\n onCreate: {\n label: string,\n callback: Function (!)\n }\n} ist nicht korrekt gesetzt.")):n.onCreate=t.onCreate,this.showCreateTab="function"==typeof n.onCreate),"function"==typeof t.onSelect&&(n.onSelect=t.onSelect),d(this,"_on",n)}}validateSelected(t){h(this,"_selected",t,{hooks:{beforePatch:this.syncSelectedAndTabs}})}validateTabs(t){u(this,"_tabs",(t=>"object"==typeof t&&null!==t&&"string"==typeof t._label&&t._label.length>0),t,void 0,{hooks:{beforePatch:this.syncSelectedAndTabs}}),b("KolTabs",this.state._tabs.length)}componentWillLoad(){this.validateAlign(this._align),this.validateLabel(this._label),this.validateOn(this._on),this.validateSelected(this._selected),this.validateTabs(this._tabs)}componentDidRender(){if(this.handleTabPanels(),this.tabPanelHost instanceof HTMLDivElement)for(let t=0;t<this.tabPanelHost.children.length;t++)t!==this.state._selected?this.tabPanelHost.children[t].setAttribute("hidden",""):this.tabPanelHost.children[t].removeAttribute("hidden")}onSelect(t,n,e=!1){var i,o;this._selected=n,"function"==typeof(null===(i=this._on)||void 0===i?void 0:i.onSelect)&&(null===(o=this._on)||void 0===o||o.onSelect(t,n)),!0===e&&(this.selectedTimeout=setTimeout((()=>{if(clearTimeout(this.selectedTimeout),this.tabPanelsElement){const t=c(`button#${this.state._label.replace(/\s/g,"-")}-tab-${n}`,this.tabPanelsElement);null==t||t.focus()}}),250))}get host(){return e(this)}static get watchers(){return{_align:["validateAlign"],_label:["validateLabel"],_on:["validateOn"],_selected:["validateSelected"],_tabs:["validateTabs"]}}};m.style={default:g};export{m as kol_tabs};
@@ -1 +1 @@
1
- {"version":3,"names":["defaultStyleCss","KolTabsDefaultStyle0","KolTabs","this","onCreateLabel","translate","showCreateTab","nextPossibleTabIndex","tabs","offset","step","length","_disabled","onKeyDown","event","timeout","setTimeout","clearTimeout","selectedIndex","key","state","_tabs","_selected","onSelect","onClickSelect","index","onMouseDown","preventDefault","stopPropagation","callbacks","onClick","catchTabPanelHost","el","tabPanelHost","selectNextNotDisabledTab","selected","upOrDown","initialSelected","Array","isArray","devHint","syncSelectedAndTabs","nextValue","nextState","_component","set","handleTabPanels","HTMLDivElement","i","children","div","document","createElement","setAttribute","_label","replace","slot","appendChild","_a","host","HTMLCollection","_b","_c","onCreate","_on","_align","renderButtonGroup","h","class","role","map","button","_icons","_hideLabel","_tabIndex","_tooltipAlign","_variant","undefined","_customClass","_ariaControls","_ariaSelected","_id","_role","_value","render","Host","ref","tabPanelsElement","validateAlign","value","validateLabel","required","validateOn","featureHint","label","Log","debug","callback","setState","validateSelected","watchNumber","hooks","beforePatch","validateTabs","watchJsonArrayString","item","uiUxHintMillerscheZahl","componentWillLoad","componentDidRender","removeAttribute","focus","selectedTimeout","koliBriQuerySelector"],"sources":["src/components/tabs/style.css?tag=kol-tabs&mode=default&encapsulation=shadow","src/components/tabs/component.tsx"],"sourcesContent":["@import url(../style.css);\n@import url(../host-display-block.css);\n@layer kol-component {\n\tkol-button-group-wc {\n\t\tdisplay: inline-flex;\n\t\tflex-wrap: wrap;\n\t}\n\n\tkol-button-group-wc button {\n\t\tborder-bottom-color: transparent;\n\t\tborder-bottom-style: solid;\n\t\tdisplay: block;\n\t}\n\n\tdiv.grid,\n\tdiv[role='tabpanel'] {\n\t\theight: 100%;\n\t}\n\n\t:host > .tabs-align-right {\n\t\tdisplay: grid;\n\t\tgrid-template-columns: 1fr auto;\n\t}\n\n\t:host > .tabs-align-right kol-button-group-wc {\n\t\tdisplay: grid;\n\t\torder: 2;\n\t}\n\n\t:host > .tabs-align-left {\n\t\tdisplay: grid;\n\t\tgrid-template-columns: auto 1fr;\n\t}\n\n\t:host > .tabs-align-left kol-button-group-wc {\n\t\tdisplay: grid;\n\t\torder: 0;\n\t}\n\n\t:host > .tabs-align-bottom {\n\t\tdisplay: grid;\n\t\tgrid-template-rows: 1fr auto;\n\t}\n\n\t:host > .tabs-align-bottom kol-button-group-wc {\n\t\torder: 2;\n\t}\n\n\t:host > .tabs-align-bottom kol-button-group-wc > div {\n\t\tdisplay: flex;\n\t}\n\n\t:host > .tabs-align-bottom > kol-button-group-wc > div > div:first-child {\n\t\tmargin: 0 1em 0 0;\n\t}\n\n\t:host > .tabs-align-bottom > kol-button-group-wc > div > div {\n\t\tmargin: 0 1em;\n\t}\n\n\t:host > .tabs-align-top {\n\t\tdisplay: grid;\n\t\tgrid-template-rows: auto 1fr;\n\t}\n\n\t:host > .tabs-align-top kol-button-group-wc {\n\t\torder: 0;\n\t}\n\n\t:host > .tabs-align-top kol-button-group-wc > div {\n\t\tdisplay: flex;\n\t}\n\n\t:host > .tabs-align-top > kol-button-group-wc > div > div:first-child {\n\t\tmargin: 0 1em 0 0;\n\t}\n\n\t:host > .tabs-align-top > kol-button-group-wc > div > div {\n\t\tmargin: 0 1em;\n\t}\n\n\t:host > div {\n\t\tdisplay: grid;\n\t}\n\n\t:host > .tabs-align-left kol-button-group-wc,\n\t:host > .tabs-align-top kol-button-group-wc {\n\t\torder: 0;\n\t}\n\n\t:host > .tabs-align-bottom kol-button-group-wc,\n\t:host > .tabs-align-right kol-button-group-wc {\n\t\torder: 1;\n\t}\n\n\t:host > div.tabs-align-left kol-button-group-wc > div,\n\t:host > div.tabs-align-left kol-button-group-wc > div > div,\n\t:host > div.tabs-align-right kol-button-group-wc > div,\n\t:host > div.tabs-align-right kol-button-group-wc > div > div {\n\t\tdisplay: grid;\n\t}\n\n\t:host > div.tabs-align-left kol-button-group-wc > div > div kol-button-wc,\n\t:host > div.tabs-align-right kol-button-group-wc > div > div kol-button-wc {\n\t\twidth: 100%;\n\t}\n\n\t:host > div.tabs-align-bottom kol-button-group-wc div,\n\t:host > div.tabs-align-top kol-button-group-wc div {\n\t\tdisplay: flex;\n\t\tflex-wrap: wrap;\n\t}\n}\n","import type {\n\tAlignPropType,\n\tButtonCallbacksPropType,\n\tKoliBriTabsCallbacks,\n\tLabelPropType,\n\tStencilUnknown,\n\tStringified,\n\tTabButtonProps,\n\tTabsAPI,\n\tTabsStates,\n} from '@public-ui/schema';\nimport {\n\tdevHint,\n\tfeatureHint,\n\tkoliBriQuerySelector,\n\tLog,\n\tsetState,\n\tuiUxHintMillerscheZahl,\n\tvalidateAlign,\n\tvalidateLabel,\n\twatchJsonArrayString,\n\twatchNumber,\n} from '@public-ui/schema';\nimport { Component, Element, h, Host, Prop, State, Watch } from '@stencil/core';\n\nimport { translate } from '../../i18n';\n\nimport type { JSX } from '@stencil/core';\nimport type { Generic } from 'adopted-style-sheets';\n// https://www.w3.org/TR/wai-aria-practices-1.1/examples/tabs/tabs-2/tabs.html\n\n@Component({\n\ttag: 'kol-tabs',\n\tstyleUrls: {\n\t\tdefault: './style.css',\n\t},\n\tshadow: true,\n})\nexport class KolTabs implements TabsAPI {\n\t@Element() private readonly host?: HTMLKolTabsElement;\n\tprivate tabPanelsElement?: HTMLElement;\n\tprivate onCreateLabel = `${translate('kol-new')} …`;\n\tprivate showCreateTab = false;\n\tprivate selectedTimeout?: ReturnType<typeof setTimeout>;\n\n\tprivate nextPossibleTabIndex = (tabs: TabButtonProps[], offset: number, step: number): number => {\n\t\tif (step > 0) {\n\t\t\tif (offset + step < tabs.length) {\n\t\t\t\tif (tabs[offset + step]._disabled) {\n\t\t\t\t\treturn this.nextPossibleTabIndex(tabs, offset, step + 1);\n\t\t\t\t}\n\t\t\t\treturn offset + step;\n\t\t\t}\n\t\t} else if (step < 0) {\n\t\t\tif (offset + step >= 0) {\n\t\t\t\tif (tabs[offset + step]._disabled) {\n\t\t\t\t\treturn this.nextPossibleTabIndex(tabs, offset, step - 1);\n\t\t\t\t}\n\t\t\t\treturn offset + step;\n\t\t\t}\n\t\t}\n\t\treturn offset;\n\t};\n\n\tprivate onKeyDown = (event: KeyboardEvent) => {\n\t\tconst timeout = setTimeout(() => {\n\t\t\tclearTimeout(timeout);\n\t\t\tlet selectedIndex: number | null = null;\n\t\t\tswitch (event.key) {\n\t\t\t\tcase 'ArrowRight':\n\t\t\t\t\tselectedIndex = this.nextPossibleTabIndex(this.state._tabs, this.state._selected, 1);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'ArrowLeft':\n\t\t\t\t\tselectedIndex = this.nextPossibleTabIndex(this.state._tabs, this.state._selected, -1);\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (selectedIndex !== null) {\n\t\t\t\tthis.onSelect(event, selectedIndex, true);\n\t\t\t}\n\t\t}, 250);\n\t};\n\n\tprivate readonly onClickSelect = (event: MouseEvent, index: number): void => {\n\t\tthis.onSelect(event, index, true);\n\t};\n\n\t// private readonly onClickClose = (event: Event, button: TabButtonProps, index: number) => {\n\t// \tevent.preventDefault();\n\t// \tevent.stopPropagation();\n\t// \tthis.onClose(button, event, index);\n\t// };\n\n\tprivate readonly onMouseDown = (event: Event): void => {\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\t};\n\n\tprivate readonly callbacks: ButtonCallbacksPropType<number> = {\n\t\tonClick: this.onClickSelect,\n\t\tonMouseDown: this.onMouseDown,\n\t};\n\n\tprivate renderButtonGroup() {\n\t\treturn (\n\t\t\t<kol-button-group-wc class=\"tabs-button-group\" role=\"tablist\" aria-label={this.state._label} onKeyDown={this.onKeyDown}>\n\t\t\t\t{this.state._tabs.map((button: TabButtonProps, index: number) => (\n\t\t\t\t\t<kol-button-wc\n\t\t\t\t\t\t_disabled={button._disabled}\n\t\t\t\t\t\t_icons={button._icons}\n\t\t\t\t\t\t_hideLabel={button._hideLabel}\n\t\t\t\t\t\t_label={button._label} // TODO: ariaLabel-Konzept prüfen\n\t\t\t\t\t\t_on={this.callbacks as ButtonCallbacksPropType<StencilUnknown>}\n\t\t\t\t\t\t_tabIndex={this.state._selected === index ? 0 : -1}\n\t\t\t\t\t\t_tooltipAlign={button._tooltipAlign}\n\t\t\t\t\t\t_variant={this.state._selected === index ? 'custom' : undefined}\n\t\t\t\t\t\t_customClass={this.state._selected === index ? 'selected' : undefined}\n\t\t\t\t\t\t_ariaControls={`tabpanel-${index}`}\n\t\t\t\t\t\t_ariaSelected={this.state._selected === index}\n\t\t\t\t\t\t_id={`${this.state._label.replace(/\\s/g, '-')}-tab-${index}`}\n\t\t\t\t\t\t_role=\"tab\"\n\t\t\t\t\t\t_value={index}\n\t\t\t\t\t></kol-button-wc>\n\t\t\t\t))}\n\t\t\t\t{this.showCreateTab && (\n\t\t\t\t\t<kol-button-wc\n\t\t\t\t\t\tclass=\"create-button\"\n\t\t\t\t\t\t_label={this.onCreateLabel}\n\t\t\t\t\t\t_on={{\n\t\t\t\t\t\t\tonClick: this.onCreate,\n\t\t\t\t\t\t}}\n\t\t\t\t\t></kol-button-wc>\n\t\t\t\t)}\n\t\t\t</kol-button-group-wc>\n\t\t);\n\t}\n\n\tprivate tabPanelHost?: HTMLDivElement;\n\n\tprivate readonly catchTabPanelHost = (el?: HTMLDivElement) => {\n\t\tthis.tabPanelHost = el;\n\t};\n\n\tpublic render(): JSX.Element {\n\t\treturn (\n\t\t\t<Host>\n\t\t\t\t<div\n\t\t\t\t\tref={(el) => {\n\t\t\t\t\t\tthis.tabPanelsElement = el as HTMLElement;\n\t\t\t\t\t}}\n\t\t\t\t\tclass={{\n\t\t\t\t\t\t[`tabs-align-${this.state._align}`]: true,\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t{this.renderButtonGroup()}\n\t\t\t\t\t<div class=\"tabs-content\" ref={this.catchTabPanelHost}>\n\t\t\t\t\t\t{/* <slot /> */}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</Host>\n\t\t);\n\t}\n\n\t/**\n\t * Defines the position of the tab captions.\n\t */\n\t@Prop() public _align?: AlignPropType = 'top';\n\n\t/**\n\t * Defines the visible or semantic label of the component (e.g. aria-label, label, headline, caption, summary, etc.).\n\t */\n\t@Prop() public _label!: LabelPropType;\n\n\t/**\n\t * Gibt die Liste der Callback-Funktionen an, die auf Events aufgerufen werden sollen.\n\t */\n\t@Prop() public _on?: KoliBriTabsCallbacks;\n\n\t/**\n\t * Defines which tab is active.\n\t */\n\t@Prop({ mutable: true, reflect: true }) public _selected?: number = 0;\n\n\t/**\n\t * Defines the tab captions.\n\t */\n\t@Prop() public _tabs!: Stringified<TabButtonProps[]>;\n\n\t@State() public state: TabsStates = {\n\t\t_align: 'top',\n\t\t_label: '', // ⚠ required\n\t\t_selected: 0,\n\t\t_tabs: [],\n\t};\n\n\tprivate selectNextNotDisabledTab = (selected: number, tabs: TabButtonProps[], upOrDown = true, initialSelected?: number): number => {\n\t\tif (selected > tabs.length - 1) {\n\t\t\tselected = tabs.length - 1;\n\t\t}\n\t\tif (selected < 0) {\n\t\t\tselected = 0;\n\t\t}\n\t\tif (Array.isArray(tabs) && tabs[selected]) {\n\t\t\tif (tabs[selected]._disabled) {\n\t\t\t\tif (upOrDown === true) {\n\t\t\t\t\tif (selected < tabs.length - 1) {\n\t\t\t\t\t\treturn this.selectNextNotDisabledTab(selected + 1, tabs, true, initialSelected || selected);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tselected = initialSelected || selected;\n\t\t\t\t\t\tupOrDown = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (upOrDown === false) {\n\t\t\t\t\tif (selected > 0) {\n\t\t\t\t\t\treturn this.selectNextNotDisabledTab(selected - 1, tabs, false, initialSelected || selected);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdevHint(`[KolTabs] Alle Tabs sind deaktiviert und somit kann kein Tab angezeigt werden.`);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn selected;\n\t};\n\n\tprivate syncSelectedAndTabs = (nextValue: unknown, nextState: Map<string, unknown>, _component: Generic.Element.Component, key: string) => {\n\t\tlet selected: number;\n\t\tif (key === '_selected') {\n\t\t\tselected = nextValue as number;\n\t\t} else {\n\t\t\tselected = this.state._selected;\n\t\t}\n\t\tlet tabs: TabButtonProps[];\n\t\tif (key === '_tabs') {\n\t\t\ttabs = nextValue as TabButtonProps[];\n\t\t} else {\n\t\t\ttabs = this.state._tabs;\n\t\t}\n\t\tif (tabs.length > 0) {\n\t\t\tnextState.set('_selected', this.selectNextNotDisabledTab(selected, tabs));\n\t\t}\n\t};\n\n\t@Watch('_align')\n\tpublic validateAlign(value?: AlignPropType) {\n\t\tvalidateAlign(this, value);\n\t}\n\n\t@Watch('_label')\n\tpublic validateLabel(value?: LabelPropType): void {\n\t\tvalidateLabel(this, value, {\n\t\t\trequired: true,\n\t\t});\n\t}\n\n\t@Watch('_on')\n\tpublic validateOn(value?: KoliBriTabsCallbacks): void {\n\t\tif (typeof value === 'object' && value !== null) {\n\t\t\tfeatureHint('[KolTabs] Prüfen, wie man auch einen EventCallback einzeln ändern kann.');\n\t\t\tconst callbacks: KoliBriTabsCallbacks = {};\n\t\t\tif (typeof value.onCreate === 'function' || typeof value.onCreate === 'object') {\n\t\t\t\tif (typeof value.onCreate === 'object') {\n\t\t\t\t\tif (typeof value.onCreate.label === 'string' && value.onCreate.label.length > 0) {\n\t\t\t\t\t\tthis.onCreateLabel = value.onCreate.label;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tLog.debug(\n\t\t\t\t\t\t\t`[KolTabs] Der Label-Text für Neu in {\n onCreate: {\n label: string (!),\n callback: Function\n }\n} ist nicht korrekt gesetzt.`\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\tif (typeof value.onCreate.callback === 'function') {\n\t\t\t\t\t\tcallbacks.onCreate = value.onCreate.callback;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tLog.debug(\n\t\t\t\t\t\t\t`[KolTabs] Die onCreate-Callback-Funktion für Neu in {\n onCreate: {\n label: string,\n callback: Function (!)\n }\n} ist nicht korrekt gesetzt.`\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tcallbacks.onCreate = value.onCreate;\n\t\t\t\t}\n\t\t\t\tthis.showCreateTab = typeof callbacks.onCreate === 'function';\n\t\t\t}\n\t\t\tif (typeof value.onSelect === 'function') {\n\t\t\t\tcallbacks.onSelect = value.onSelect;\n\t\t\t}\n\t\t\tsetState<KoliBriTabsCallbacks>(this, '_on', callbacks);\n\t\t}\n\t}\n\n\t@Watch('_selected')\n\tpublic validateSelected(value?: number): void {\n\t\twatchNumber(this, '_selected', value, {\n\t\t\thooks: {\n\t\t\t\tbeforePatch: this.syncSelectedAndTabs,\n\t\t\t},\n\t\t});\n\t}\n\n\t@Watch('_tabs')\n\tpublic validateTabs(value?: Stringified<TabButtonProps[]>): void {\n\t\twatchJsonArrayString(\n\t\t\tthis,\n\t\t\t'_tabs',\n\t\t\t(item: TabButtonProps) => typeof item === 'object' && item !== null && typeof item._label === 'string' && item._label.length > 0,\n\t\t\tvalue,\n\t\t\tundefined,\n\t\t\t{\n\t\t\t\thooks: {\n\t\t\t\t\tbeforePatch: this.syncSelectedAndTabs,\n\t\t\t\t},\n\t\t\t}\n\t\t);\n\t\tuiUxHintMillerscheZahl('KolTabs', this.state._tabs.length);\n\t}\n\n\tpublic componentWillLoad(): void {\n\t\tthis.validateAlign(this._align);\n\t\tthis.validateLabel(this._label);\n\t\tthis.validateOn(this._on);\n\t\tthis.validateSelected(this._selected);\n\t\tthis.validateTabs(this._tabs);\n\t}\n\n\tprivate readonly handleTabPanels = () => {\n\t\tif (this.tabPanelHost instanceof HTMLDivElement) {\n\t\t\tfor (let i = this.tabPanelHost.children.length; i < this.state._tabs.length; i++) {\n\t\t\t\tconst div = document.createElement('div');\n\t\t\t\tdiv.setAttribute('aria-labelledby', `${this.state._label.replace(/\\s/g, '-')}-tab-${i}`);\n\t\t\t\tdiv.setAttribute('id', `tabpanel-${i}`);\n\t\t\t\tdiv.setAttribute('role', 'tabpanel');\n\t\t\t\tdiv.setAttribute('hidden', '');\n\t\t\t\tconst slot = document.createElement('slot');\n\t\t\t\tslot.setAttribute('name', `tabpanel-slot-${i}`);\n\t\t\t\tdiv.appendChild(slot);\n\t\t\t\tthis.tabPanelHost.appendChild(div);\n\t\t\t\tif (this.host?.children instanceof HTMLCollection && this.host?.children[i] /* SSR instanceof HTMLElement */) {\n\t\t\t\t\t// div.appendChild(this.host?.children[0]);\n\t\t\t\t\tthis.host?.children[i].setAttribute('slot', `tabpanel-slot-${i}`);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\n\tpublic componentDidRender(): void {\n\t\tthis.handleTabPanels();\n\t\tif (this.tabPanelHost instanceof HTMLDivElement) {\n\t\t\tfor (let i = 0; i < this.tabPanelHost.children.length; i++) {\n\t\t\t\tif (i !== this.state._selected) {\n\t\t\t\t\tthis.tabPanelHost.children[i].setAttribute('hidden', '');\n\t\t\t\t} else {\n\t\t\t\t\tthis.tabPanelHost.children[i].removeAttribute('hidden');\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate onSelect(event: CustomEvent | KeyboardEvent | MouseEvent | PointerEvent, index: number, focus = false): void {\n\t\tthis._selected = index;\n\t\tif (typeof this._on?.onSelect === 'function') {\n\t\t\tthis._on?.onSelect(event, index);\n\t\t}\n\t\tif (focus === true) {\n\t\t\t// TODO: prüfen, ob hier noch was offen ist\n\t\t\t// devHint('[KolTabs] Tab-Fokus-verschieben geht im Moment nicht.');\n\t\t\tthis.selectedTimeout = setTimeout(() => {\n\t\t\t\tclearTimeout(this.selectedTimeout);\n\t\t\t\tif (this.tabPanelsElement /* SSR instanceof HTMLElement */) {\n\t\t\t\t\tconst button: HTMLElement | null = koliBriQuerySelector(`button#${this.state._label.replace(/\\s/g, '-')}-tab-${index}`, this.tabPanelsElement);\n\t\t\t\t\tbutton?.focus();\n\t\t\t\t}\n\t\t\t}, 250);\n\t\t}\n\t}\n\n\tprivate onCreate = (event: Event) => {\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\t\tif (typeof this.state._on?.onCreate === 'function') {\n\t\t\tthis.state._on?.onCreate(event);\n\t\t}\n\t};\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["defaultStyleCss","KolTabsDefaultStyle0","KolTabs","this","onCreateLabel","translate","showCreateTab","nextPossibleTabIndex","tabs","offset","step","length","_disabled","onKeyDown","event","timeout","setTimeout","clearTimeout","selectedIndex","key","state","_tabs","_selected","onSelect","onClickSelect","index","onMouseDown","preventDefault","stopPropagation","callbacks","onClick","catchTabPanelHost","el","tabPanelHost","selectNextNotDisabledTab","selected","upOrDown","initialSelected","Array","isArray","devHint","syncSelectedAndTabs","nextValue","nextState","_component","set","handleTabPanels","HTMLDivElement","i","children","div","document","createElement","setAttribute","_label","replace","slot","appendChild","_a","host","HTMLCollection","_b","_c","onCreate","_on","_align","renderButtonGroup","h","class","role","map","button","_icons","_hideLabel","_tabIndex","_tooltipAlign","_variant","undefined","_customClass","_ariaControls","_ariaSelected","_id","_role","_value","render","Host","ref","tabPanelsElement","validateAlign","value","validateLabel","required","validateOn","featureHint","label","Log","debug","callback","setState","validateSelected","watchNumber","hooks","beforePatch","validateTabs","watchJsonArrayString","item","uiUxHintMillerscheZahl","componentWillLoad","componentDidRender","removeAttribute","focus","selectedTimeout","koliBriQuerySelector"],"sources":["src/components/tabs/style.css?tag=kol-tabs&mode=default&encapsulation=shadow","src/components/tabs/component.tsx"],"sourcesContent":["@import url(../style.css);\n@import url(../host-display-block.css);\n@layer kol-component {\n\tkol-button-group-wc {\n\t\tdisplay: inline-flex;\n\t\tflex-wrap: wrap;\n\t}\n\n\tkol-button-group-wc button {\n\t\tborder-bottom-color: transparent;\n\t\tborder-bottom-style: solid;\n\t\tdisplay: block;\n\t}\n\n\tdiv.grid,\n\tdiv[role='tabpanel'] {\n\t\theight: 100%;\n\t}\n\n\t:host > .tabs-align-right {\n\t\tdisplay: grid;\n\t\tgrid-template-columns: 1fr auto;\n\t}\n\n\t:host > .tabs-align-right kol-button-group-wc {\n\t\tdisplay: grid;\n\t\torder: 2;\n\t}\n\n\t:host > .tabs-align-left {\n\t\tdisplay: grid;\n\t\tgrid-template-columns: auto 1fr;\n\t}\n\n\t:host > .tabs-align-left kol-button-group-wc {\n\t\tdisplay: grid;\n\t\torder: 0;\n\t}\n\n\t:host > .tabs-align-bottom {\n\t\tdisplay: grid;\n\t\tgrid-template-rows: 1fr auto;\n\t}\n\n\t:host > .tabs-align-bottom kol-button-group-wc {\n\t\torder: 2;\n\t}\n\n\t:host > .tabs-align-bottom kol-button-group-wc > div {\n\t\tdisplay: flex;\n\t}\n\n\t:host > .tabs-align-bottom > kol-button-group-wc > div > div:first-child {\n\t\tmargin: 0 1em 0 0;\n\t}\n\n\t:host > .tabs-align-bottom > kol-button-group-wc > div > div {\n\t\tmargin: 0 1em;\n\t}\n\n\t:host > .tabs-align-top {\n\t\tdisplay: grid;\n\t\tgrid-template-rows: auto 1fr;\n\t}\n\n\t:host > .tabs-align-top kol-button-group-wc {\n\t\torder: 0;\n\t}\n\n\t:host > .tabs-align-top kol-button-group-wc > div {\n\t\tdisplay: flex;\n\t}\n\n\t:host > .tabs-align-top > kol-button-group-wc > div > div:first-child {\n\t\tmargin: 0 1em 0 0;\n\t}\n\n\t:host > .tabs-align-top > kol-button-group-wc > div > div {\n\t\tmargin: 0 1em;\n\t}\n\n\t:host > div {\n\t\tdisplay: grid;\n\t}\n\n\t:host > .tabs-align-left kol-button-group-wc,\n\t:host > .tabs-align-top kol-button-group-wc {\n\t\torder: 0;\n\t}\n\n\t:host > .tabs-align-bottom kol-button-group-wc,\n\t:host > .tabs-align-right kol-button-group-wc {\n\t\torder: 1;\n\t}\n\n\t:host > div.tabs-align-left kol-button-group-wc > div,\n\t:host > div.tabs-align-left kol-button-group-wc > div > div,\n\t:host > div.tabs-align-right kol-button-group-wc > div,\n\t:host > div.tabs-align-right kol-button-group-wc > div > div {\n\t\tdisplay: grid;\n\t}\n\n\t:host > div.tabs-align-left kol-button-group-wc > div > div kol-button-wc,\n\t:host > div.tabs-align-right kol-button-group-wc > div > div kol-button-wc {\n\t\twidth: 100%;\n\t}\n\n\t:host > div.tabs-align-bottom kol-button-group-wc div,\n\t:host > div.tabs-align-top kol-button-group-wc div {\n\t\tdisplay: flex;\n\t\tflex-wrap: wrap;\n\t}\n}\n","import type {\n\tAlignPropType,\n\tButtonCallbacksPropType,\n\tKoliBriTabsCallbacks,\n\tLabelPropType,\n\tStencilUnknown,\n\tStringified,\n\tTabButtonProps,\n\tTabsAPI,\n\tTabsStates,\n} from '@public-ui/schema';\nimport {\n\tdevHint,\n\tfeatureHint,\n\tkoliBriQuerySelector,\n\tLog,\n\tsetState,\n\tuiUxHintMillerscheZahl,\n\tvalidateAlign,\n\tvalidateLabel,\n\twatchJsonArrayString,\n\twatchNumber,\n} from '@public-ui/schema';\nimport { Component, Element, h, Host, Prop, State, Watch } from '@stencil/core';\n\nimport { translate } from '../../i18n';\n\nimport type { JSX } from '@stencil/core';\nimport type { Generic } from 'adopted-style-sheets';\n// https://www.w3.org/TR/wai-aria-practices-1.1/examples/tabs/tabs-2/tabs.html\n\n@Component({\n\ttag: 'kol-tabs',\n\tstyleUrls: {\n\t\tdefault: './style.css',\n\t},\n\tshadow: true,\n})\nexport class KolTabs implements TabsAPI {\n\t@Element() private readonly host?: HTMLKolTabsElement;\n\tprivate tabPanelsElement?: HTMLElement;\n\tprivate onCreateLabel = `${translate('kol-new')} …`;\n\tprivate showCreateTab = false;\n\tprivate selectedTimeout?: ReturnType<typeof setTimeout>;\n\n\tprivate nextPossibleTabIndex = (tabs: TabButtonProps[], offset: number, step: number): number => {\n\t\tif (step > 0) {\n\t\t\tif (offset + step < tabs.length) {\n\t\t\t\tif (tabs[offset + step]._disabled) {\n\t\t\t\t\treturn this.nextPossibleTabIndex(tabs, offset, step + 1);\n\t\t\t\t}\n\t\t\t\treturn offset + step;\n\t\t\t}\n\t\t} else if (step < 0) {\n\t\t\tif (offset + step >= 0) {\n\t\t\t\tif (tabs[offset + step]._disabled) {\n\t\t\t\t\treturn this.nextPossibleTabIndex(tabs, offset, step - 1);\n\t\t\t\t}\n\t\t\t\treturn offset + step;\n\t\t\t}\n\t\t}\n\t\treturn offset;\n\t};\n\n\tprivate onKeyDown = (event: KeyboardEvent) => {\n\t\tconst timeout = setTimeout(() => {\n\t\t\tclearTimeout(timeout);\n\t\t\tlet selectedIndex: number | null = null;\n\t\t\tswitch (event.key) {\n\t\t\t\tcase 'ArrowRight':\n\t\t\t\t\tselectedIndex = this.nextPossibleTabIndex(this.state._tabs, this.state._selected, 1);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'ArrowLeft':\n\t\t\t\t\tselectedIndex = this.nextPossibleTabIndex(this.state._tabs, this.state._selected, -1);\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (selectedIndex !== null) {\n\t\t\t\tthis.onSelect(event, selectedIndex, true);\n\t\t\t}\n\t\t}, 250);\n\t};\n\n\tprivate readonly onClickSelect = (event: MouseEvent, index: number): void => {\n\t\tthis.onSelect(event, index, true);\n\t};\n\n\t// private readonly onClickClose = (event: Event, button: TabButtonProps, index: number) => {\n\t// \tevent.preventDefault();\n\t// \tevent.stopPropagation();\n\t// \tthis.onClose(button, event, index);\n\t// };\n\n\tprivate readonly onMouseDown = (event: Event): void => {\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\t};\n\n\tprivate readonly callbacks: ButtonCallbacksPropType<number> = {\n\t\tonClick: this.onClickSelect,\n\t\tonMouseDown: this.onMouseDown,\n\t};\n\n\tprivate renderButtonGroup() {\n\t\treturn (\n\t\t\t<kol-button-group-wc class=\"tabs-button-group\" role=\"tablist\" aria-label={this.state._label} onKeyDown={this.onKeyDown}>\n\t\t\t\t{this.state._tabs.map((button: TabButtonProps, index: number) => (\n\t\t\t\t\t<kol-button-wc\n\t\t\t\t\t\t_disabled={button._disabled}\n\t\t\t\t\t\t_icons={button._icons}\n\t\t\t\t\t\t_hideLabel={button._hideLabel}\n\t\t\t\t\t\t_label={button._label} // TODO: ariaLabel-Konzept prüfen\n\t\t\t\t\t\t_on={this.callbacks as ButtonCallbacksPropType<StencilUnknown>}\n\t\t\t\t\t\t_tabIndex={this.state._selected === index ? 0 : -1}\n\t\t\t\t\t\t_tooltipAlign={button._tooltipAlign}\n\t\t\t\t\t\t_variant={this.state._selected === index ? 'custom' : undefined}\n\t\t\t\t\t\t_customClass={this.state._selected === index ? 'selected' : undefined}\n\t\t\t\t\t\t_ariaControls={`tabpanel-${index}`}\n\t\t\t\t\t\t_ariaSelected={this.state._selected === index}\n\t\t\t\t\t\t_id={`${this.state._label.replace(/\\s/g, '-')}-tab-${index}`}\n\t\t\t\t\t\t_role=\"tab\"\n\t\t\t\t\t\t_value={index}\n\t\t\t\t\t></kol-button-wc>\n\t\t\t\t))}\n\t\t\t\t{this.showCreateTab && (\n\t\t\t\t\t<kol-button-wc\n\t\t\t\t\t\tclass=\"create-button\"\n\t\t\t\t\t\t_label={this.onCreateLabel}\n\t\t\t\t\t\t_on={{\n\t\t\t\t\t\t\tonClick: this.onCreate,\n\t\t\t\t\t\t}}\n\t\t\t\t\t></kol-button-wc>\n\t\t\t\t)}\n\t\t\t</kol-button-group-wc>\n\t\t);\n\t}\n\n\tprivate tabPanelHost?: HTMLDivElement;\n\n\tprivate readonly catchTabPanelHost = (el?: HTMLDivElement) => {\n\t\tthis.tabPanelHost = el;\n\t};\n\n\tpublic render(): JSX.Element {\n\t\treturn (\n\t\t\t<Host>\n\t\t\t\t<div\n\t\t\t\t\tref={(el) => {\n\t\t\t\t\t\tthis.tabPanelsElement = el as HTMLElement;\n\t\t\t\t\t}}\n\t\t\t\t\tclass={{\n\t\t\t\t\t\t[`tabs-align-${this.state._align}`]: true,\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t{this.renderButtonGroup()}\n\t\t\t\t\t<div class=\"tabs-content\" ref={this.catchTabPanelHost}>\n\t\t\t\t\t\t{/* <slot /> */}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</Host>\n\t\t);\n\t}\n\n\t/**\n\t * Defines the position of the tab captions.\n\t */\n\t@Prop() public _align?: AlignPropType = 'top';\n\n\t/**\n\t * Defines the visible or semantic label of the component (e.g. aria-label, label, headline, caption, summary, etc.).\n\t */\n\t@Prop() public _label!: LabelPropType;\n\n\t/**\n\t * Gibt die Liste der Callback-Funktionen an, die auf Events aufgerufen werden sollen.\n\t */\n\t@Prop() public _on?: KoliBriTabsCallbacks;\n\n\t/**\n\t * Defines which tab is active.\n\t */\n\t@Prop({ mutable: true, reflect: true }) public _selected?: number = 0;\n\n\t/**\n\t * Defines the tab captions.\n\t */\n\t@Prop() public _tabs!: Stringified<TabButtonProps[]>;\n\n\t@State() public state: TabsStates = {\n\t\t_align: 'top',\n\t\t_label: '', // ⚠ required\n\t\t_selected: 0,\n\t\t_tabs: [],\n\t};\n\n\tprivate selectNextNotDisabledTab = (selected: number, tabs: TabButtonProps[], upOrDown = true, initialSelected?: number): number => {\n\t\tif (selected > tabs.length - 1) {\n\t\t\tselected = tabs.length - 1;\n\t\t}\n\t\tif (selected < 0) {\n\t\t\tselected = 0;\n\t\t}\n\t\tif (Array.isArray(tabs) && tabs[selected]) {\n\t\t\tif (tabs[selected]._disabled) {\n\t\t\t\tif (upOrDown === true) {\n\t\t\t\t\tif (selected < tabs.length - 1) {\n\t\t\t\t\t\treturn this.selectNextNotDisabledTab(selected + 1, tabs, true, initialSelected || selected);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tselected = initialSelected || selected;\n\t\t\t\t\t\tupOrDown = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (upOrDown === false) {\n\t\t\t\t\tif (selected > 0) {\n\t\t\t\t\t\treturn this.selectNextNotDisabledTab(selected - 1, tabs, false, initialSelected || selected);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdevHint(`[KolTabs] Alle Tabs sind deaktiviert und somit kann kein Tab angezeigt werden.`);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn selected;\n\t};\n\n\tprivate syncSelectedAndTabs = (nextValue: unknown, nextState: Map<string, unknown>, _component: Generic.Element.Component, key: string) => {\n\t\tlet selected: number;\n\t\tif (key === '_selected') {\n\t\t\tselected = nextValue as number;\n\t\t} else {\n\t\t\tselected = this.state._selected;\n\t\t}\n\t\tlet tabs: TabButtonProps[];\n\t\tif (key === '_tabs') {\n\t\t\ttabs = nextValue as TabButtonProps[];\n\t\t} else {\n\t\t\ttabs = this.state._tabs;\n\t\t}\n\t\tif (tabs.length > 0) {\n\t\t\tnextState.set('_selected', this.selectNextNotDisabledTab(selected, tabs));\n\t\t}\n\t};\n\n\t@Watch('_align')\n\tpublic validateAlign(value?: AlignPropType) {\n\t\tvalidateAlign(this, value);\n\t}\n\n\t@Watch('_label')\n\tpublic validateLabel(value?: LabelPropType): void {\n\t\tvalidateLabel(this, value, {\n\t\t\trequired: true,\n\t\t});\n\t}\n\n\t@Watch('_on')\n\tpublic validateOn(value?: KoliBriTabsCallbacks): void {\n\t\tif (typeof value === 'object' && value !== null) {\n\t\t\tfeatureHint('[KolTabs] Prüfen, wie man auch einen EventCallback einzeln ändern kann.');\n\t\t\tconst callbacks: KoliBriTabsCallbacks = {};\n\t\t\tif (typeof value.onCreate === 'function' || typeof value.onCreate === 'object') {\n\t\t\t\tif (typeof value.onCreate === 'object') {\n\t\t\t\t\tif (typeof value.onCreate.label === 'string' && value.onCreate.label.length > 0) {\n\t\t\t\t\t\tthis.onCreateLabel = value.onCreate.label;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tLog.debug(\n\t\t\t\t\t\t\t`[KolTabs] Der Label-Text für Neu in {\n onCreate: {\n label: string (!),\n callback: Function\n }\n} ist nicht korrekt gesetzt.`\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\tif (typeof value.onCreate.callback === 'function') {\n\t\t\t\t\t\tcallbacks.onCreate = value.onCreate.callback;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tLog.debug(\n\t\t\t\t\t\t\t`[KolTabs] Die onCreate-Callback-Funktion für Neu in {\n onCreate: {\n label: string,\n callback: Function (!)\n }\n} ist nicht korrekt gesetzt.`\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tcallbacks.onCreate = value.onCreate;\n\t\t\t\t}\n\t\t\t\tthis.showCreateTab = typeof callbacks.onCreate === 'function';\n\t\t\t}\n\t\t\tif (typeof value.onSelect === 'function') {\n\t\t\t\tcallbacks.onSelect = value.onSelect;\n\t\t\t}\n\t\t\tsetState<KoliBriTabsCallbacks>(this, '_on', callbacks);\n\t\t}\n\t}\n\n\t@Watch('_selected')\n\tpublic validateSelected(value?: number): void {\n\t\twatchNumber(this, '_selected', value, {\n\t\t\thooks: {\n\t\t\t\tbeforePatch: this.syncSelectedAndTabs,\n\t\t\t},\n\t\t});\n\t}\n\n\t@Watch('_tabs')\n\tpublic validateTabs(value?: Stringified<TabButtonProps[]>): void {\n\t\twatchJsonArrayString(\n\t\t\tthis,\n\t\t\t'_tabs',\n\t\t\t(item: TabButtonProps) => typeof item === 'object' && item !== null && typeof item._label === 'string' && item._label.length > 0,\n\t\t\tvalue,\n\t\t\tundefined,\n\t\t\t{\n\t\t\t\thooks: {\n\t\t\t\t\tbeforePatch: this.syncSelectedAndTabs,\n\t\t\t\t},\n\t\t\t}\n\t\t);\n\t\tuiUxHintMillerscheZahl('KolTabs', this.state._tabs.length);\n\t}\n\n\tpublic componentWillLoad(): void {\n\t\tthis.validateAlign(this._align);\n\t\tthis.validateLabel(this._label);\n\t\tthis.validateOn(this._on);\n\t\tthis.validateSelected(this._selected);\n\t\tthis.validateTabs(this._tabs);\n\t}\n\n\tprivate readonly handleTabPanels = () => {\n\t\tif (this.tabPanelHost instanceof HTMLDivElement) {\n\t\t\tfor (let i = this.tabPanelHost.children.length; i < this.state._tabs.length; i++) {\n\t\t\t\tconst div = document.createElement('div');\n\t\t\t\tdiv.setAttribute('aria-labelledby', `${this.state._label.replace(/\\s/g, '-')}-tab-${i}`);\n\t\t\t\tdiv.setAttribute('id', `tabpanel-${i}`);\n\t\t\t\tdiv.setAttribute('role', 'tabpanel');\n\t\t\t\tdiv.setAttribute('hidden', '');\n\t\t\t\tconst slot = document.createElement('slot');\n\t\t\t\tslot.setAttribute('name', `tabpanel-slot-${i}`);\n\t\t\t\tdiv.appendChild(slot);\n\t\t\t\tthis.tabPanelHost.appendChild(div);\n\t\t\t\tif (this.host?.children instanceof HTMLCollection && this.host?.children[i] /* SSR instanceof HTMLElement */) {\n\t\t\t\t\t// div.appendChild(this.host?.children[0]);\n\t\t\t\t\tthis.host?.children[i].setAttribute('slot', `tabpanel-slot-${i}`);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\n\tpublic componentDidRender(): void {\n\t\tthis.handleTabPanels();\n\t\tif (this.tabPanelHost instanceof HTMLDivElement) {\n\t\t\tfor (let i = 0; i < this.tabPanelHost.children.length; i++) {\n\t\t\t\tif (i !== this.state._selected) {\n\t\t\t\t\tthis.tabPanelHost.children[i].setAttribute('hidden', '');\n\t\t\t\t} else {\n\t\t\t\t\tthis.tabPanelHost.children[i].removeAttribute('hidden');\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate onSelect(event: CustomEvent | KeyboardEvent | MouseEvent | PointerEvent, index: number, focus = false): void {\n\t\tthis._selected = index;\n\t\tif (typeof this._on?.onSelect === 'function') {\n\t\t\tthis._on?.onSelect(event, index);\n\t\t}\n\t\tif (focus === true) {\n\t\t\t// TODO: prüfen, ob hier noch was offen ist\n\t\t\t// devHint('[KolTabs] Tab-Fokus-verschieben geht im Moment nicht.');\n\t\t\tthis.selectedTimeout = setTimeout(() => {\n\t\t\t\tclearTimeout(this.selectedTimeout);\n\t\t\t\tif (this.tabPanelsElement /* SSR instanceof HTMLElement */) {\n\t\t\t\t\tconst button: HTMLElement | null = koliBriQuerySelector(`button#${this.state._label.replace(/\\s/g, '-')}-tab-${index}`, this.tabPanelsElement);\n\t\t\t\t\tbutton?.focus();\n\t\t\t\t}\n\t\t\t}, 250);\n\t\t}\n\t}\n\n\tprivate onCreate = (event: Event) => {\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\t\tif (typeof this.state._on?.onCreate === 'function') {\n\t\t\tthis.state._on?.onCreate(event);\n\t\t}\n\t};\n}\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
1
  /*!
2
2
  * KoliBri - The accessible HTML-Standard
3
3
  */
4
- import{h as t,F as e,H as n,r as i,g as a}from"./index-a5e15b1e.js";import{q as s,Z as l,r as o,w as h,am as r,ae as d,b as c,s as u,D as p}from"./index-836a963f.js";import{n as f}from"./dev.utils-44a0a914.js";import{I as m,g as y}from"./controller-cf349d3e.js";import{I as v}from"./InternalUnderlinedAccessKey-af163f50.js";import"./events-29e84d75.js";import"./associated.controller-4d3dd80f.js";class b extends m{constructor(t,e,n){super(t,e,n),this.afterSyncCharCounter=()=>{"string"==typeof this.component._value&&this.component._value.length>0&&(this.component.state._currentLength=this.component._value.length)},this.component=t}validateHasCounter(t){s(this.component,"_hasCounter",t,{hooks:{afterPatch:this.afterSyncCharCounter}})}validateMaxLength(t){l(this.component,"_maxLength",t,{hooks:{afterPatch:this.afterSyncCharCounter},min:0})}validatePlaceholder(t){o(this.component,"_placeholder",t)}validateReadOnly(t){s(this.component,"_readOnly",t)}validateResize(t){h(this.component,"_resize",(t=>"string"==typeof t&&r.includes(t)),new Set(`String {${r.join(", ")}`),t)}validateRequired(t){s(this.component,"_required",t)}validateRows(t){d(this.component,t)}validateValue(t){o(this.component,"_value",t,{hooks:{afterPatch:this.afterSyncCharCounter}}),this.setFormAssociatedValue(this.component._value)}componentWillLoad(){super.componentWillLoad(),this.validateHasCounter(this.component._hasCounter),this.validateMaxLength(this.component._maxLength),this.validatePlaceholder(this.component._placeholder),this.validateReadOnly(this.component._readOnly),this.validateResize(this.component._resize),this.validateRequired(this.component._required),this.validateRows(this.component._rows),this.validateValue(this.component._value)}}const g="/*\n * This file contains all rules for accessibility.\n */\n@layer kol-global {\n\t:host {\n\t\t/*\n\t\t * Minimum size of interactive elements.\n\t\t */\n\t\t--a11y-min-size: 44px;\n\t\t/*\n\t\t * No element should be used without a background and font color whose contrast ratio has\n\t\t * not been checked. By initially setting the background color to white and the font color\n\t\t * to black, the contrast ratio is ensured and explicit adjustment is forced.\n\t\t */\n\t\tbackground-color: white;\n\t\tcolor: black;\n\t\t/*\n\t\t * Verdana is an accessible font that can be used without requiring additional loading time.\n\t\t */\n\t\tfont-family: Verdana;\n\t}\n\n\t* {\n\t\t/*\n\t\t * This rule enables the word dividing for all texts. That is important for high zoom levels.\n\t\t */\n\t\thyphens: auto;\n\t\t/*\n\t\t * Letter spacing is required for all texts.\n\t\t */\n\t\tletter-spacing: inherit;\n\t\t/*\n\t\t * This rule enables the word dividing for all texts. That is important for high zoom levels.\n\t\t */\n\t\tword-break: break-word;\n\t\t/*\n\t\t * Word spacing is required for all texts.\n\t\t */\n\t\tword-spacing: inherit;\n\t}\n\n\t/*\n\t * All interactive elements should have a minimum size of 44px.\n\t */\n\t/* input:not([type='checkbox'], [type='radio'], [type='range']), */\n\t/* option, */\n\t/* select, */\n\t/* textarea, */\n\t[role='button'],\n\tbutton:not([role='link']),\n\tkol-input .input {\n\t\tmin-height: var(--a11y-min-size);\n\t\tmin-width: var(--a11y-min-size);\n\t}\n\n\t/*\n\t * Some interactive elements should not inherit the font-family and font-size.\n\t */\n\ta,\n\tbutton,\n\th1,\n\th2,\n\th3,\n\th4,\n\th5,\n\th6,\n\tinput,\n\toption,\n\tselect,\n\ttextarea {\n\t\t/*\n\t\t * All elements should inherit the font family from his parent element.\n\t\t */\n\t\tfont-family: inherit;\n\t\t/*\n\t\t * All elements should inherit the font size from his parent element.\n\t\t */\n\t\tfont-size: inherit;\n\t}\n}\n\n/**\n * Sometimes we need the semantic element for accessibility reasons,\n * but we don't want to show it.\n *\n * - https://www.a11yproject.com/posts/how-to-hide-content/\n */\n.visually-hidden {\n\tclip: rect(0 0 0 0);\n\tclip-path: inset(50%);\n\theight: 1px;\n\toverflow: hidden;\n\tposition: absolute;\n\twhite-space: nowrap;\n\twidth: 1px;\n}\n\n@layer kol-global {\n\t/*\n\t * Dieses CSS stellt sicher, dass der Standard-Style\n\t * von A und Button resettet werden.\n\t */\n\t:is(a, button) {\n\t\tbackground-color: transparent;\n\t\tborder: none;\n\t\tmargin: 0;\n\t\tpadding: 0;\n\t\twidth: 100%; /* 100% needed for custom width from outside */\n\t}\n\n\t/*\n\t * Ensure elements with hidden attribute to be actually not visible\n\t * @see https://meowni.ca/hidden.is.a.lie.html\n\t */\n\t[hidden] {\n\t\tdisplay: none !important;\n\t}\n}\n\n@layer kol-global {\n\t:host {\n\t\t/*\n\t\t * The max-width is needed to prevent the table from overflowing the\n\t\t * parent node, if the table is wider than the parent node.\n\t\t */\n\t\tmax-width: 100%;\n\t}\n\n\t* {\n\t\t/*\n\t\t * We prefer to box-sizing: border-box for all elements.\n\t\t */\n\t\tbox-sizing: border-box;\n\t}\n\n\t/* KolSpan is a layout component with icons in all directions and a label text in the middle. */\n\tkol-span-wc {\n\t\tdisplay: grid;\n\t\tplace-items: center;\n\t}\n\n\t/* The sub span in KolSpan is the horizontal span with icon left and right and the label text in the middle. */\n\tkol-span-wc > span {\n\t\tdisplay: flex;\n\t\tplace-items: center;\n\t}\n\n\ta,\n\tbutton {\n\t\tcursor: pointer;\n\t}\n\n\t/* This is the text label. */\n\t.hide-label > kol-span-wc > span > span {\n\t\tdisplay: none;\n\t}\n\n\t.disabled label,\n\t[aria-disabled='true'],\n\t[disabled] {\n\t\tcursor: not-allowed;\n\t\topacity: 0.5;\n\t\toutline: none;\n\t}\n}\n\n@layer kol-component {\n\t.required label > span::after,\n\t.required legend > span::after {\n\t\tcontent: '*';\n\t}\n}\n\n@layer kol-component {\n\t:host {\n\t\tdisplay: block;\n\t}\n}\n\n@layer kol-component {\n\tinput,\n\ttextarea {\n\t\tcursor: text;\n\t}\n\n\tinput[type='checkbox'],\n\tinput[type='color'],\n\tinput[type='file'],\n\tinput[type='radio'],\n\tinput[type='range'],\n\tlabel,\n\toption,\n\tselect {\n\t\tcursor: pointer;\n\t}\n\n\t/* input[type='checkbox'], */\n\t/* input[type='radio'], */\n\t/* input[type='range'], */\n\tinput[type='color'],\n\tinput[type='date'],\n\tinput[type='datetime-local'],\n\tinput[type='email'],\n\tinput[type='file'],\n\tinput[type='month'],\n\tinput[type='number'],\n\tinput[type='password'],\n\tinput[type='search'],\n\tinput[type='tel'],\n\tinput[type='text'],\n\tinput[type='time'],\n\tinput[type='url'],\n\tinput[type='week'],\n\tselect,\n\tselect[multiple] option,\n\ttextarea {\n\t\tfont-size: 1rem;\n\t\twidth: 100%;\n\t}\n\n\t/* needed hack for vertical alignment */\n\tinput[type='file'] {\n\t\tpadding: calc((var(--a11y-min-size) - 1rem) / 10) 0.5em;\n\t}\n\n\t/* needed hack for vertical alignment */\n\tselect[multiple] option {\n\t\tpadding: calc((var(--a11y-min-size) - 1rem) / 2) 0.5em;\n\t}\n}\n\n@layer kol-component {\n\tkol-input {\n\t\tdisplay: grid;\n\t}\n\n\tkol-input .input-slot {\n\t\tflex-grow: 1;\n\t}\n\n\tinput:not([type='checkbox'], [type='radio']),\n\tselect:not([multiple], [size]) {\n\t\theight: 2.75em;\n\t}\n\n\tinput:focus,\n\toption:focus,\n\tselect:focus,\n\ttextarea:focus {\n\t\toutline: 0;\n\t}\n\n\t.input {\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t}\n\n\t.input > kol-icon {\n\t\tdisplay: grid;\n\t\theight: var(--a11y-min-size);\n\t\tplace-items: center;\n\t}\n\n\tkol-input.required .input-tooltip .span-label::after {\n\t\tcontent: '*';\n\t}\n}\n\n@layer kol-component {\n\t.error.hidden {\n\t\tdisplay: none;\n\t}\n}\n",_=g,x=t=>{t.style.overflow="hidden";const e=t.rows,n=t.clientHeight/e;t.rows=1;const a=Math.round(t.scrollHeight/n);return t.rows=e,a},w=class{async getValue(){var t;return null===(t=this.ref)||void 0===t?void 0:t.value}render(){const{ariaDescribedBy:a}=y(this.state),i=p(this.state._label);return t(n,{class:{"has-value":this.state._hasValue}},t("kol-input",{class:{textarea:!0,"hide-label":!!this.state._hideLabel,"has-counter":!!this.state._hasCounter},_accessKey:this.state._accessKey,_alert:this.state._alert,_currentLength:this.state._currentLength,_disabled:this.state._disabled,_error:this.state._error,_hideError:this.state._hideError,_hasCounter:this.state._hasCounter,_hideLabel:this.state._hideLabel,_hint:this.state._hint,_id:this.state._id,_label:this.state._label,_maxLength:this.state._maxLength,_readOnly:this.state._readOnly,_required:this.state._required,_tooltipAlign:this._tooltipAlign,_touched:this.state._touched,onClick:()=>{var t;return null===(t=this.ref)||void 0===t?void 0:t.focus()},role:"presentation"},t("span",{slot:"label"},i?t("slot",{name:"expert"}):"string"==typeof this.state._accessKey?t(e,null,t(v,{accessKey:this.state._accessKey,label:this.state._label})," ",t("span",{class:"access-key-hint","aria-hidden":"true"},this.state._accessKey)):t("span",null,this.state._label)),t("div",{slot:"input"},t("textarea",Object.assign({ref:this.catchRef,title:"",accessKey:this.state._accessKey,"aria-describedby":a.length>0?a.join(" "):void 0,"aria-label":this.state._hideLabel&&"string"==typeof this.state._label?this.state._label:void 0,autoCapitalize:"off",autoCorrect:"off",disabled:this.state._disabled,id:this.state._id,maxlength:this.state._maxLength,name:this.state._name,readOnly:this.state._readOnly,required:this.state._required,rows:this.state._rows,placeholder:this.state._placeholder,spellcheck:"false"},this.controller.onFacade,{onInput:this.onInput,style:{resize:this.state._resize},value:this.state._value})))))}constructor(t){i(this,t),this.catchRef=t=>{this.ref=t,c(this.host,this.ref)},this.onInput=()=>{this.ref instanceof HTMLTextAreaElement&&(u(this,"_currentLength",this.ref.value.length),this.state._adjustHeight&&(this._rows=x(this.ref)))},this._accessKey=void 0,this._adjustHeight=!1,this._alert=!0,this._disabled=!1,this._error=void 0,this._hasCounter=!1,this._hideError=!1,this._hideLabel=!1,this._hint="",this._id=void 0,this._label=void 0,this._maxLength=void 0,this._name=void 0,this._on=void 0,this._placeholder=void 0,this._readOnly=!1,this._resize="vertical",this._required=!1,this._rows=void 0,this._syncValueBySelector=void 0,this._tabIndex=void 0,this._tooltipAlign="top",this._touched=!1,this._value=void 0,this.state={_adjustHeight:!1,_currentLength:0,_hasValue:!1,_hideError:!1,_id:`id-${f()}`,_label:"",_resize:"vertical"},this.controller=new b(this,"textarea",this.host)}validateAccessKey(t){this.controller.validateAccessKey(t)}validateAdjustHeight(t){this.controller.validateAdjustHeight(t)}validateAlert(t){this.controller.validateAlert(t)}validateDisabled(t){this.controller.validateDisabled(t)}validateError(t){this.controller.validateError(t)}validateHasCounter(t){this.controller.validateHasCounter(t)}validateHideError(t){this.controller.validateHideError(t)}validateHideLabel(t){this.controller.validateHideLabel(t)}validateHint(t){this.controller.validateHint(t)}validateId(t){this.controller.validateId(t)}validateLabel(t){this.controller.validateLabel(t)}validateMaxLength(t){this.controller.validateMaxLength(t)}validateName(t){this.controller.validateName(t)}validateOn(t){this.controller.validateOn(t)}validatePlaceholder(t){this.controller.validatePlaceholder(t)}validateReadOnly(t){this.controller.validateReadOnly(t)}validateResize(t){this.controller.validateResize(t)}validateRequired(t){this.controller.validateRequired(t)}validateRows(t){this.controller.validateRows(t)}validateSyncValueBySelector(t){this.controller.validateSyncValueBySelector(t)}validateTabIndex(t){this.controller.validateTabIndex(t)}validateTouched(t){this.controller.validateTouched(t)}validateValue(t){this.controller.validateValue(t)}componentDidLoad(){setTimeout((()=>{var t;this.ref&&(this._rows=(null===(t=this.state)||void 0===t?void 0:t._rows)&&this.state._rows>x(this.ref)?this.state._rows:x(this.ref))}),0)}componentWillLoad(){this._alert=!0===this._alert,this._touched=!0===this._touched,this.controller.componentWillLoad(),this.state._hasValue=!!this.state._value,this.controller.addValueChangeListener((t=>this.state._hasValue=!!t))}get host(){return a(this)}static get watchers(){return{_accessKey:["validateAccessKey"],_adjustHeight:["validateAdjustHeight"],_alert:["validateAlert"],_disabled:["validateDisabled"],_error:["validateError"],_hasCounter:["validateHasCounter"],_hideError:["validateHideError"],_hideLabel:["validateHideLabel"],_hint:["validateHint"],_id:["validateId"],_label:["validateLabel"],_maxLength:["validateMaxLength"],_name:["validateName"],_on:["validateOn"],_placeholder:["validatePlaceholder"],_readOnly:["validateReadOnly"],_resize:["validateResize"],_required:["validateRequired"],_rows:["validateRows"],_syncValueBySelector:["validateSyncValueBySelector"],_tabIndex:["validateTabIndex"],_touched:["validateTouched"],_value:["validateValue"]}}};w.style={default:_};export{w as kol_textarea};
4
+ import{h as t,F as e,H as n,r as i,g as a}from"./index-a5e15b1e.js";import{B as s,a7 as l,C as o,w as h,au as r,an as d,k as c,m as u,M as p}from"./index-c3ae175d.js";import{n as m}from"./dev.utils-c7d151c6.js";import{I as f,g as y}from"./controller-a5087ab9.js";import{I as v}from"./InternalUnderlinedAccessKey-af163f50.js";import"./events-29e84d75.js";import"./associated.controller-1c0a6905.js";class b extends f{constructor(t,e,n){super(t,e,n),this.afterSyncCharCounter=()=>{"string"==typeof this.component._value&&this.component._value.length>0&&(this.component.state._currentLength=this.component._value.length)},this.component=t}validateHasCounter(t){s(this.component,"_hasCounter",t,{hooks:{afterPatch:this.afterSyncCharCounter}})}validateMaxLength(t){l(this.component,"_maxLength",t,{hooks:{afterPatch:this.afterSyncCharCounter},min:0})}validatePlaceholder(t){o(this.component,"_placeholder",t)}validateReadOnly(t){s(this.component,"_readOnly",t)}validateResize(t){h(this.component,"_resize",(t=>"string"==typeof t&&r.includes(t)),new Set(`String {${r.join(", ")}`),t)}validateRequired(t){s(this.component,"_required",t)}validateRows(t){d(this.component,t)}validateValue(t){o(this.component,"_value",t,{hooks:{afterPatch:this.afterSyncCharCounter}}),this.setFormAssociatedValue(this.component._value)}componentWillLoad(){super.componentWillLoad(),this.validateHasCounter(this.component._hasCounter),this.validateMaxLength(this.component._maxLength),this.validatePlaceholder(this.component._placeholder),this.validateReadOnly(this.component._readOnly),this.validateResize(this.component._resize),this.validateRequired(this.component._required),this.validateRows(this.component._rows),this.validateValue(this.component._value)}}const g="/*\n * This file contains all rules for accessibility.\n */\n@layer kol-global {\n\t:host {\n\t\t/*\n\t\t * Minimum size of interactive elements.\n\t\t */\n\t\t--a11y-min-size: 44px;\n\t\t/*\n\t\t * No element should be used without a background and font color whose contrast ratio has\n\t\t * not been checked. By initially setting the background color to white and the font color\n\t\t * to black, the contrast ratio is ensured and explicit adjustment is forced.\n\t\t */\n\t\tbackground-color: white;\n\t\tcolor: black;\n\t\t/*\n\t\t * Verdana is an accessible font that can be used without requiring additional loading time.\n\t\t */\n\t\tfont-family: Verdana;\n\t}\n\n\t* {\n\t\t/*\n\t\t * This rule enables the word dividing for all texts. That is important for high zoom levels.\n\t\t */\n\t\thyphens: auto;\n\t\t/*\n\t\t * Letter spacing is required for all texts.\n\t\t */\n\t\tletter-spacing: inherit;\n\t\t/*\n\t\t * This rule enables the word dividing for all texts. That is important for high zoom levels.\n\t\t */\n\t\tword-break: break-word;\n\t\t/*\n\t\t * Word spacing is required for all texts.\n\t\t */\n\t\tword-spacing: inherit;\n\t}\n\n\t/*\n\t * All interactive elements should have a minimum size of 44px.\n\t */\n\t/* input:not([type='checkbox'], [type='radio'], [type='range']), */\n\t/* option, */\n\t/* select, */\n\t/* textarea, */\n\t[role='button'],\n\tbutton:not([role='link']),\n\tkol-input .input {\n\t\tmin-height: var(--a11y-min-size);\n\t\tmin-width: var(--a11y-min-size);\n\t}\n\n\t/*\n\t * Some interactive elements should not inherit the font-family and font-size.\n\t */\n\ta,\n\tbutton,\n\th1,\n\th2,\n\th3,\n\th4,\n\th5,\n\th6,\n\tinput,\n\toption,\n\tselect,\n\ttextarea {\n\t\t/*\n\t\t * All elements should inherit the font family from his parent element.\n\t\t */\n\t\tfont-family: inherit;\n\t\t/*\n\t\t * All elements should inherit the font size from his parent element.\n\t\t */\n\t\tfont-size: inherit;\n\t}\n}\n\n/**\n * Sometimes we need the semantic element for accessibility reasons,\n * but we don't want to show it.\n *\n * - https://www.a11yproject.com/posts/how-to-hide-content/\n */\n.visually-hidden {\n\tclip: rect(0 0 0 0);\n\tclip-path: inset(50%);\n\theight: 1px;\n\toverflow: hidden;\n\tposition: absolute;\n\twhite-space: nowrap;\n\twidth: 1px;\n}\n\n@layer kol-global {\n\t/*\n\t * Dieses CSS stellt sicher, dass der Standard-Style\n\t * von A und Button resettet werden.\n\t */\n\t:is(a, button) {\n\t\tbackground-color: transparent;\n\t\tborder: none;\n\t\tmargin: 0;\n\t\tpadding: 0;\n\t\twidth: 100%; /* 100% needed for custom width from outside */\n\t}\n\n\t/*\n\t * Ensure elements with hidden attribute to be actually not visible\n\t * @see https://meowni.ca/hidden.is.a.lie.html\n\t */\n\t[hidden] {\n\t\tdisplay: none !important;\n\t}\n}\n\n@layer kol-global {\n\t:host {\n\t\t/*\n\t\t * The max-width is needed to prevent the table from overflowing the\n\t\t * parent node, if the table is wider than the parent node.\n\t\t */\n\t\tmax-width: 100%;\n\t}\n\n\t* {\n\t\t/*\n\t\t * We prefer to box-sizing: border-box for all elements.\n\t\t */\n\t\tbox-sizing: border-box;\n\t}\n\n\t/* KolSpan is a layout component with icons in all directions and a label text in the middle. */\n\tkol-span-wc {\n\t\tdisplay: grid;\n\t\tplace-items: center;\n\t}\n\n\t/* The sub span in KolSpan is the horizontal span with icon left and right and the label text in the middle. */\n\tkol-span-wc > span {\n\t\tdisplay: flex;\n\t\tplace-items: center;\n\t}\n\n\ta,\n\tbutton {\n\t\tcursor: pointer;\n\t}\n\n\t.hidden {\n\t\tdisplay: none;\n\t\tvisibility: hidden;\n\t}\n\n\t/* This is the text label. */\n\t.hide-label > kol-span-wc > span > span {\n\t\tdisplay: none;\n\t}\n\n\t.disabled label,\n\t[aria-disabled='true'],\n\t[disabled] {\n\t\tcursor: not-allowed;\n\t\topacity: 0.5;\n\t\toutline: none;\n\t}\n}\n\n@layer kol-component {\n\t.required label > span::after,\n\t.required legend > span::after {\n\t\tcontent: '*';\n\t}\n}\n\n@layer kol-component {\n\t:host {\n\t\tdisplay: block;\n\t}\n}\n\n@layer kol-component {\n\tinput,\n\ttextarea {\n\t\tcursor: text;\n\t}\n\n\tinput[type='checkbox'],\n\tinput[type='color'],\n\tinput[type='file'],\n\tinput[type='radio'],\n\tinput[type='range'],\n\tlabel,\n\toption,\n\tselect {\n\t\tcursor: pointer;\n\t}\n\n\t/* input[type='checkbox'], */\n\t/* input[type='radio'], */\n\t/* input[type='range'], */\n\tinput[type='color'],\n\tinput[type='date'],\n\tinput[type='datetime-local'],\n\tinput[type='email'],\n\tinput[type='file'],\n\tinput[type='month'],\n\tinput[type='number'],\n\tinput[type='password'],\n\tinput[type='search'],\n\tinput[type='tel'],\n\tinput[type='text'],\n\tinput[type='time'],\n\tinput[type='url'],\n\tinput[type='week'],\n\tselect,\n\tselect[multiple] option,\n\ttextarea {\n\t\tfont-size: 1rem;\n\t\twidth: 100%;\n\t}\n\n\t/* needed hack for vertical alignment */\n\tinput[type='file'] {\n\t\tpadding: calc((var(--a11y-min-size) - 1rem) / 10) 0.5em;\n\t}\n\n\t/* needed hack for vertical alignment */\n\tselect[multiple] option {\n\t\tpadding: calc((var(--a11y-min-size) - 1rem) / 2) 0.5em;\n\t}\n}\n\n@layer kol-component {\n\tkol-input {\n\t\tdisplay: grid;\n\t}\n\n\tkol-input .input-slot {\n\t\tflex-grow: 1;\n\t}\n\n\tinput:not([type='checkbox'], [type='radio']),\n\tselect:not([multiple], [size]) {\n\t\theight: 2.75em;\n\t}\n\n\tinput:focus,\n\toption:focus,\n\tselect:focus,\n\ttextarea:focus {\n\t\toutline: 0;\n\t}\n\n\t.input {\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t}\n\n\t.input > kol-icon {\n\t\tdisplay: grid;\n\t\theight: var(--a11y-min-size);\n\t\tplace-items: center;\n\t}\n\n\tkol-input.required .input-tooltip .span-label::after {\n\t\tcontent: '*';\n\t}\n}\n\n@layer kol-component {\n}\n",_=g,x=t=>{t.style.overflow="hidden";const e=t.rows,n=t.clientHeight/e;t.rows=1;const a=Math.round(t.scrollHeight/n);return t.rows=e,a},w=class{async getValue(){var t;return null===(t=this.ref)||void 0===t?void 0:t.value}render(){const{ariaDescribedBy:a}=y(this.state),i=p(this.state._label);return t(n,{class:{"has-value":this.state._hasValue}},t("kol-input",{class:{textarea:!0,"hide-label":!!this.state._hideLabel,"has-counter":!!this.state._hasCounter},_accessKey:this.state._accessKey,_alert:this.state._alert,_currentLength:this.state._currentLength,_disabled:this.state._disabled,_error:this.state._error,_hideError:this.state._hideError,_hasCounter:this.state._hasCounter,_hideLabel:this.state._hideLabel,_hint:this.state._hint,_id:this.state._id,_label:this.state._label,_maxLength:this.state._maxLength,_readOnly:this.state._readOnly,_required:this.state._required,_tooltipAlign:this._tooltipAlign,_touched:this.state._touched,onClick:()=>{var t;return null===(t=this.ref)||void 0===t?void 0:t.focus()},role:"presentation"},t("span",{slot:"label"},i?t("slot",{name:"expert"}):"string"==typeof this.state._accessKey?t(e,null,t(v,{accessKey:this.state._accessKey,label:this.state._label})," ",t("span",{class:"access-key-hint","aria-hidden":"true"},this.state._accessKey)):t("span",null,this.state._label)),t("div",{slot:"input"},t("textarea",Object.assign({ref:this.catchRef,title:"",accessKey:this.state._accessKey,"aria-describedby":a.length>0?a.join(" "):void 0,"aria-label":this.state._hideLabel&&"string"==typeof this.state._label?this.state._label:void 0,autoCapitalize:"off",autoCorrect:"off",disabled:this.state._disabled,id:this.state._id,maxlength:this.state._maxLength,name:this.state._name,readOnly:this.state._readOnly,required:this.state._required,rows:this.state._rows,placeholder:this.state._placeholder,spellcheck:"false"},this.controller.onFacade,{onInput:this.onInput,style:{resize:this.state._resize},value:this.state._value})))))}constructor(t){i(this,t),this.catchRef=t=>{this.ref=t,c(this.host,this.ref)},this.onInput=()=>{this.ref instanceof HTMLTextAreaElement&&(u(this,"_currentLength",this.ref.value.length),this.state._adjustHeight&&(this._rows=x(this.ref)))},this._accessKey=void 0,this._adjustHeight=!1,this._alert=!0,this._disabled=!1,this._error=void 0,this._hasCounter=!1,this._hideError=!1,this._hideLabel=!1,this._hint="",this._id=void 0,this._label=void 0,this._maxLength=void 0,this._name=void 0,this._on=void 0,this._placeholder=void 0,this._readOnly=!1,this._resize="vertical",this._required=!1,this._rows=void 0,this._syncValueBySelector=void 0,this._tabIndex=void 0,this._tooltipAlign="top",this._touched=!1,this._value=void 0,this.state={_adjustHeight:!1,_currentLength:0,_hasValue:!1,_hideError:!1,_id:`id-${m()}`,_label:"",_resize:"vertical"},this.controller=new b(this,"textarea",this.host)}validateAccessKey(t){this.controller.validateAccessKey(t)}validateAdjustHeight(t){this.controller.validateAdjustHeight(t)}validateAlert(t){this.controller.validateAlert(t)}validateDisabled(t){this.controller.validateDisabled(t)}validateError(t){this.controller.validateError(t)}validateHasCounter(t){this.controller.validateHasCounter(t)}validateHideError(t){this.controller.validateHideError(t)}validateHideLabel(t){this.controller.validateHideLabel(t)}validateHint(t){this.controller.validateHint(t)}validateId(t){this.controller.validateId(t)}validateLabel(t){this.controller.validateLabel(t)}validateMaxLength(t){this.controller.validateMaxLength(t)}validateName(t){this.controller.validateName(t)}validateOn(t){this.controller.validateOn(t)}validatePlaceholder(t){this.controller.validatePlaceholder(t)}validateReadOnly(t){this.controller.validateReadOnly(t)}validateResize(t){this.controller.validateResize(t)}validateRequired(t){this.controller.validateRequired(t)}validateRows(t){this.controller.validateRows(t)}validateSyncValueBySelector(t){this.controller.validateSyncValueBySelector(t)}validateTabIndex(t){this.controller.validateTabIndex(t)}validateTouched(t){this.controller.validateTouched(t)}validateValue(t){this.controller.validateValue(t)}componentDidLoad(){setTimeout((()=>{var t;this.ref&&(this._rows=(null===(t=this.state)||void 0===t?void 0:t._rows)&&this.state._rows>x(this.ref)?this.state._rows:x(this.ref))}),0)}componentWillLoad(){this._alert=!0===this._alert,this._touched=!0===this._touched,this.controller.componentWillLoad(),this.state._hasValue=!!this.state._value,this.controller.addValueChangeListener((t=>this.state._hasValue=!!t))}get host(){return a(this)}static get watchers(){return{_accessKey:["validateAccessKey"],_adjustHeight:["validateAdjustHeight"],_alert:["validateAlert"],_disabled:["validateDisabled"],_error:["validateError"],_hasCounter:["validateHasCounter"],_hideError:["validateHideError"],_hideLabel:["validateHideLabel"],_hint:["validateHint"],_id:["validateId"],_label:["validateLabel"],_maxLength:["validateMaxLength"],_name:["validateName"],_on:["validateOn"],_placeholder:["validatePlaceholder"],_readOnly:["validateReadOnly"],_resize:["validateResize"],_required:["validateRequired"],_rows:["validateRows"],_syncValueBySelector:["validateSyncValueBySelector"],_tabIndex:["validateTabIndex"],_touched:["validateTouched"],_value:["validateValue"]}}};w.style={default:_};export{w as kol_textarea};