@k2b/ui 0.29.0 → 0.30.0

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 (173) hide show
  1. package/README.md +1 -1
  2. package/dist/base.css +2 -2
  3. package/dist/browser/actions/Dropdown.js +6 -3
  4. package/dist/browser/actions/Dropdown.js.map +1 -1
  5. package/dist/browser/actions/FilterChip.js +137 -7
  6. package/dist/browser/actions/FilterChip.js.map +1 -1
  7. package/dist/browser/actions/SegmentedControl.js +5 -9
  8. package/dist/browser/actions/SegmentedControl.js.map +1 -1
  9. package/dist/browser/actions/SpotlightSearch.js +6 -3
  10. package/dist/browser/actions/SpotlightSearch.js.map +1 -1
  11. package/dist/browser/actions/Tabs.js +5 -2
  12. package/dist/browser/actions/Tabs.js.map +1 -1
  13. package/dist/browser/actions/ViewTabs.js +294 -0
  14. package/dist/browser/actions/ViewTabs.js.map +1 -0
  15. package/dist/browser/actions/filter-messages.js +6 -2
  16. package/dist/browser/actions/filter-messages.js.map +1 -1
  17. package/dist/browser/actions/index.js +2 -1
  18. package/dist/browser/actions/index.js.map +1 -1
  19. package/dist/browser/chat/ChatComposer.js +1108 -604
  20. package/dist/browser/chat/ChatComposer.js.map +1 -1
  21. package/dist/browser/chat/ChatDecision.js +120 -84
  22. package/dist/browser/chat/ChatDecision.js.map +1 -1
  23. package/dist/browser/chat/ChatPrimitives.js +292 -159
  24. package/dist/browser/chat/ChatPrimitives.js.map +1 -1
  25. package/dist/browser/chat/chat-messages.js +8 -0
  26. package/dist/browser/chat/chat-messages.js.map +1 -1
  27. package/dist/browser/chat/command-search.js +26 -15
  28. package/dist/browser/chat/command-search.js.map +1 -1
  29. package/dist/browser/chat/index.js +4 -2
  30. package/dist/browser/chat/index.js.map +1 -1
  31. package/dist/browser/content/Calendar.js +143 -116
  32. package/dist/browser/content/Calendar.js.map +1 -1
  33. package/dist/browser/content/CalendarWeekView.js +291 -266
  34. package/dist/browser/content/CalendarWeekView.js.map +1 -1
  35. package/dist/browser/content/DataTable.js +224 -155
  36. package/dist/browser/content/DataTable.js.map +1 -1
  37. package/dist/browser/content/data-table-messages.js +4 -2
  38. package/dist/browser/content/data-table-messages.js.map +1 -1
  39. package/dist/browser/feedback/MovedHint.js +197 -0
  40. package/dist/browser/feedback/MovedHint.js.map +1 -0
  41. package/dist/browser/feedback/dialog-core.js +66 -9
  42. package/dist/browser/feedback/dialog-core.js.map +1 -1
  43. package/dist/browser/feedback/index.js +1 -0
  44. package/dist/browser/feedback/index.js.map +1 -1
  45. package/dist/browser/feedback/prompts.js +6 -1
  46. package/dist/browser/feedback/prompts.js.map +1 -1
  47. package/dist/browser/inputs/DatePicker.js +337 -212
  48. package/dist/browser/inputs/DatePicker.js.map +1 -1
  49. package/dist/browser/inputs/date-picker.js +59 -5
  50. package/dist/browser/inputs/date-picker.js.map +1 -1
  51. package/dist/browser/intl/messages.js +12 -0
  52. package/dist/browser/intl/messages.js.map +1 -1
  53. package/dist/browser/intl/weekend.js +39 -0
  54. package/dist/browser/intl/weekend.js.map +1 -0
  55. package/dist/browser/layout/AppOverview.js +0 -1
  56. package/dist/browser/layout/AppOverview.js.map +1 -1
  57. package/dist/browser/layout/AppWorkspace.js +688 -471
  58. package/dist/browser/layout/AppWorkspace.js.map +1 -1
  59. package/dist/browser/layout/PageTitle.js +3 -2
  60. package/dist/browser/layout/PageTitle.js.map +1 -1
  61. package/dist/browser/layout/SettingsModal.js +2 -2
  62. package/dist/browser/layout/SettingsModal.js.map +1 -1
  63. package/dist/browser/layout/SidebarSwitcher.js +13 -12
  64. package/dist/browser/layout/SidebarSwitcher.js.map +1 -1
  65. package/dist/browser/layout/TabBar.js +1 -1
  66. package/dist/browser/layout/TabBar.js.map +1 -1
  67. package/dist/browser/layout/app-host-width.js +44 -0
  68. package/dist/browser/layout/app-host-width.js.map +1 -0
  69. package/dist/browser/layout/app-workspace-controller.js +219 -39
  70. package/dist/browser/layout/app-workspace-controller.js.map +1 -1
  71. package/dist/browser/layout/index.js +1 -0
  72. package/dist/browser/layout/index.js.map +1 -1
  73. package/dist/browser/surfaces/Placeholder.js +36 -13
  74. package/dist/browser/surfaces/Placeholder.js.map +1 -1
  75. package/dist/ssr/actions/Dropdown.js +5 -2
  76. package/dist/ssr/actions/Dropdown.js.map +1 -1
  77. package/dist/ssr/actions/FilterChip.js +59 -7
  78. package/dist/ssr/actions/FilterChip.js.map +1 -1
  79. package/dist/ssr/actions/SegmentedControl.js +1 -2
  80. package/dist/ssr/actions/SegmentedControl.js.map +1 -1
  81. package/dist/ssr/actions/SpotlightSearch.js +2 -2
  82. package/dist/ssr/actions/SpotlightSearch.js.map +1 -1
  83. package/dist/ssr/actions/Tabs.js +2 -2
  84. package/dist/ssr/actions/Tabs.js.map +1 -1
  85. package/dist/ssr/actions/ViewTabs.js +211 -0
  86. package/dist/ssr/actions/ViewTabs.js.map +1 -0
  87. package/dist/ssr/actions/filter-messages.js +6 -2
  88. package/dist/ssr/actions/filter-messages.js.map +1 -1
  89. package/dist/ssr/actions/index.js +2 -1
  90. package/dist/ssr/actions/index.js.map +1 -1
  91. package/dist/ssr/chat/ChatComposer.js +546 -131
  92. package/dist/ssr/chat/ChatComposer.js.map +1 -1
  93. package/dist/ssr/chat/ChatDecision.js +33 -19
  94. package/dist/ssr/chat/ChatDecision.js.map +1 -1
  95. package/dist/ssr/chat/ChatPrimitives.js +95 -24
  96. package/dist/ssr/chat/ChatPrimitives.js.map +1 -1
  97. package/dist/ssr/chat/chat-messages.js +8 -0
  98. package/dist/ssr/chat/chat-messages.js.map +1 -1
  99. package/dist/ssr/chat/command-search.js +26 -15
  100. package/dist/ssr/chat/command-search.js.map +1 -1
  101. package/dist/ssr/chat/index.js +4 -2
  102. package/dist/ssr/chat/index.js.map +1 -1
  103. package/dist/ssr/content/Calendar.js +109 -100
  104. package/dist/ssr/content/Calendar.js.map +1 -1
  105. package/dist/ssr/content/CalendarWeekView.js +42 -28
  106. package/dist/ssr/content/CalendarWeekView.js.map +1 -1
  107. package/dist/ssr/content/DataTable.js +78 -31
  108. package/dist/ssr/content/DataTable.js.map +1 -1
  109. package/dist/ssr/content/data-table-messages.js +4 -2
  110. package/dist/ssr/content/data-table-messages.js.map +1 -1
  111. package/dist/ssr/feedback/MovedHint.js +166 -0
  112. package/dist/ssr/feedback/MovedHint.js.map +1 -0
  113. package/dist/ssr/feedback/dialog-core.js +66 -9
  114. package/dist/ssr/feedback/dialog-core.js.map +1 -1
  115. package/dist/ssr/feedback/index.js +1 -0
  116. package/dist/ssr/feedback/index.js.map +1 -1
  117. package/dist/ssr/feedback/prompts.js +6 -1
  118. package/dist/ssr/feedback/prompts.js.map +1 -1
  119. package/dist/ssr/inputs/DatePicker.js +138 -69
  120. package/dist/ssr/inputs/DatePicker.js.map +1 -1
  121. package/dist/ssr/inputs/date-picker.js +59 -5
  122. package/dist/ssr/inputs/date-picker.js.map +1 -1
  123. package/dist/ssr/intl/messages.js +12 -0
  124. package/dist/ssr/intl/messages.js.map +1 -1
  125. package/dist/ssr/intl/weekend.js +39 -0
  126. package/dist/ssr/intl/weekend.js.map +1 -0
  127. package/dist/ssr/layout/AppOverview.js +0 -1
  128. package/dist/ssr/layout/AppOverview.js.map +1 -1
  129. package/dist/ssr/layout/AppWorkspace.js +203 -39
  130. package/dist/ssr/layout/AppWorkspace.js.map +1 -1
  131. package/dist/ssr/layout/PageTitle.js +3 -2
  132. package/dist/ssr/layout/PageTitle.js.map +1 -1
  133. package/dist/ssr/layout/SettingsModal.js +2 -2
  134. package/dist/ssr/layout/SettingsModal.js.map +1 -1
  135. package/dist/ssr/layout/SidebarSwitcher.js +13 -12
  136. package/dist/ssr/layout/SidebarSwitcher.js.map +1 -1
  137. package/dist/ssr/layout/TabBar.js +1 -1
  138. package/dist/ssr/layout/TabBar.js.map +1 -1
  139. package/dist/ssr/layout/app-host-width.js +44 -0
  140. package/dist/ssr/layout/app-host-width.js.map +1 -0
  141. package/dist/ssr/layout/app-workspace-controller.js +219 -39
  142. package/dist/ssr/layout/app-workspace-controller.js.map +1 -1
  143. package/dist/ssr/layout/index.js +1 -0
  144. package/dist/ssr/layout/index.js.map +1 -1
  145. package/dist/ssr/surfaces/Placeholder.js +24 -7
  146. package/dist/ssr/surfaces/Placeholder.js.map +1 -1
  147. package/dist/styles.css +1 -1
  148. package/dist/types/actions/Dropdown.d.ts +4 -0
  149. package/dist/types/actions/FilterChip.d.ts +22 -0
  150. package/dist/types/actions/ViewTabs.d.ts +30 -0
  151. package/dist/types/actions/filter-messages.d.ts +2 -0
  152. package/dist/types/actions/index.d.ts +4 -2
  153. package/dist/types/chat/ChatComposer.d.ts +52 -0
  154. package/dist/types/chat/ChatDecision.d.ts +18 -2
  155. package/dist/types/chat/ChatPrimitives.d.ts +10 -0
  156. package/dist/types/chat/chat-messages.d.ts +4 -0
  157. package/dist/types/chat/command-search.d.ts +2 -0
  158. package/dist/types/chat/index.d.ts +9 -8
  159. package/dist/types/content/DataTable.d.ts +3 -0
  160. package/dist/types/content/data-table-messages.d.ts +1 -0
  161. package/dist/types/feedback/MovedHint.d.ts +25 -0
  162. package/dist/types/feedback/dialog-core.d.ts +5 -2
  163. package/dist/types/feedback/index.d.ts +2 -0
  164. package/dist/types/feedback/prompts.d.ts +2 -0
  165. package/dist/types/inputs/DatePicker.d.ts +7 -0
  166. package/dist/types/inputs/date-picker.d.ts +25 -1
  167. package/dist/types/intl/messages.d.ts +6 -0
  168. package/dist/types/intl/weekend.d.ts +12 -0
  169. package/dist/types/layout/AppWorkspace.d.ts +43 -7
  170. package/dist/types/layout/app-host-width.d.ts +6 -0
  171. package/dist/types/layout/index.d.ts +2 -1
  172. package/dist/types/surfaces/Placeholder.d.ts +2 -1
  173. package/package.json +4 -4
@@ -17,21 +17,25 @@ var _tmpl$ = /*#__PURE__*/_$template(`<span class=k2b-data-table__header-title>`
17
17
  _tmpl$4 = /*#__PURE__*/_$template(`<a class="k2b-data-table__header-content k2b-data-table__sort">`),
18
18
  _tmpl$5 = /*#__PURE__*/_$template(`<button type=button class="k2b-data-table__header-content k2b-data-table__sort">`),
19
19
  _tmpl$6 = /*#__PURE__*/_$template(`<div class=k2b-data-table__header-content>`),
20
- _tmpl$7 = /*#__PURE__*/_$template(`<tr aria-hidden=true><td class=k2b-data-table__fill>`),
21
- _tmpl$8 = /*#__PURE__*/_$template(`<div class=k2b-data-table__sentinel aria-hidden=true>`),
22
- _tmpl$9 = /*#__PURE__*/_$template(`<div role=region tabindex=0><table><thead class=k2b-data-table__head><tr class=k2b-data-table__head-row></tr></thead><tbody></tbody><!$><!/></table><!$><!/>`),
23
- _tmpl$0 = /*#__PURE__*/_$template(`<th scope=col>`),
24
- _tmpl$1 = /*#__PURE__*/_$template(`<tr><td class=k2b-data-table__empty>`),
25
- _tmpl$10 = /*#__PURE__*/_$template(`<tr>`),
26
- _tmpl$11 = /*#__PURE__*/_$template(`<td><div>`),
27
- _tmpl$12 = /*#__PURE__*/_$template(`<tfoot class=k2b-data-table__foot data-sticky=true><tr class=k2b-data-table__foot-row>`),
28
- _tmpl$13 = /*#__PURE__*/_$template(`<td class=k2b-data-table__footer-cell>`),
29
- _tmpl$14 = /*#__PURE__*/_$template(`<div class=k2b-data-table__scrollbar aria-hidden=true><span>`),
30
- _tmpl$15 = /*#__PURE__*/_$template(`<div>`),
31
- _tmpl$16 = /*#__PURE__*/_$template(`<span>`),
32
- _tmpl$17 = /*#__PURE__*/_$template(`<footer>`);
33
- import { createContext, createEffect, createMemo, createSignal, createUniqueId, For, Match, onCleanup, onMount, Show, Switch, useContext } from "solid-js";
20
+ _tmpl$7 = /*#__PURE__*/_$template(`<caption class=k2b-sr-only>`),
21
+ _tmpl$8 = /*#__PURE__*/_$template(`<tr aria-hidden=true><td class=k2b-data-table__fill>`),
22
+ _tmpl$9 = /*#__PURE__*/_$template(`<div class=k2b-data-table__sentinel aria-hidden=true>`),
23
+ _tmpl$0 = /*#__PURE__*/_$template(`<div role=region tabindex=0><table><!$><!/><thead class=k2b-data-table__head><tr class=k2b-data-table__head-row></tr></thead><tbody></tbody><!$><!/></table><!$><!/>`),
24
+ _tmpl$1 = /*#__PURE__*/_$template(`<th scope=col>`),
25
+ _tmpl$10 = /*#__PURE__*/_$template(`<tr><td class=k2b-data-table__empty>`),
26
+ _tmpl$11 = /*#__PURE__*/_$template(`<tr class=k2b-data-table__row data-loading=true aria-hidden=true>`),
27
+ _tmpl$12 = /*#__PURE__*/_$template(`<td><span class=k2b-data-table__skeleton>`),
28
+ _tmpl$13 = /*#__PURE__*/_$template(`<tr>`),
29
+ _tmpl$14 = /*#__PURE__*/_$template(`<td><div>`),
30
+ _tmpl$15 = /*#__PURE__*/_$template(`<tfoot class=k2b-data-table__foot data-sticky=true><tr class=k2b-data-table__foot-row>`),
31
+ _tmpl$16 = /*#__PURE__*/_$template(`<td class=k2b-data-table__footer-cell>`),
32
+ _tmpl$17 = /*#__PURE__*/_$template(`<div class=k2b-data-table__scrollbar aria-hidden=true><span>`),
33
+ _tmpl$18 = /*#__PURE__*/_$template(`<div>`),
34
+ _tmpl$19 = /*#__PURE__*/_$template(`<span>`),
35
+ _tmpl$20 = /*#__PURE__*/_$template(`<footer>`);
36
+ import { createContext, createEffect, createMemo, createSignal, createUniqueId, For, Match, on, onCleanup, onMount, Show, Switch, useContext } from "solid-js";
34
37
  import { Dynamic } from "solid-js/web";
38
+ import { announce } from "../feedback/announce";
35
39
  import { suppressTextSelection } from "../internal/text-selection";
36
40
  import { useLocale } from "../intl/locale";
37
41
  import { useUiMessages } from "../intl/messages";
@@ -39,6 +43,7 @@ import { PanelHeader } from "../layout/PanelHeader";
39
43
  import { Paper } from "../surfaces/Paper";
40
44
  import Placeholder from "../surfaces/Placeholder";
41
45
  import { useDataTableMessages } from "./data-table-messages";
46
+ const WIDE_TABLE_COLUMNS = 8;
42
47
  const DataTablePanelContext = createContext();
43
48
  const defaultRender = (value, locale, messages) => {
44
49
  if (value === null || value === undefined || value === "") return "—";
@@ -105,6 +110,7 @@ function DataTableRoot(props) {
105
110
  let previousRowsLength = props.rows.length;
106
111
  let previousLoadingMore = !!props.loadingMore;
107
112
  let previousHasMore = !!props.hasMore;
113
+ const loadingRows = () => Math.min(50, Math.max(1, Math.trunc(Number.isNaN(props.loadingRows) ? 5 : props.loadingRows ?? 5)));
108
114
  const rowId = row => props.getRowId?.(row);
109
115
  const isInteractive = () => !!props.selection || !!props.onRowClick || !!props.onRowDoubleClick;
110
116
  const shouldHoverRows = () => props.hoverRows ?? isInteractive();
@@ -372,6 +378,11 @@ function DataTableRoot(props) {
372
378
  if (scrollingTimeout !== undefined) clearTimeout(scrollingTimeout);
373
379
  });
374
380
  });
381
+
382
+ // Announced once per wait, outside the region that `aria-busy` keeps quiet.
383
+ createEffect(on(() => !!props.loading && props.rows.length === 0, waiting => {
384
+ if (waiting) announce(dataTableMessages().loadingRows);
385
+ }));
375
386
  createEffect(() => {
376
387
  const rowsLength = props.rows.length;
377
388
  const nextHasMore = !!props.hasMore;
@@ -429,28 +440,40 @@ function DataTableRoot(props) {
429
440
  onMouseLeave: () => setHoveredColumn(null),
430
441
  get children() {
431
442
  return [(() => {
432
- var _el$0 = _$getNextElement(_tmpl$9),
443
+ var _el$0 = _$getNextElement(_tmpl$0),
433
444
  _el$1 = _el$0.firstChild,
434
- _el$10 = _el$1.firstChild,
435
- _el$11 = _el$10.firstChild,
436
- _el$12 = _el$10.nextSibling,
437
- _el$15 = _el$12.nextSibling,
438
- [_el$16, _co$2] = _$getNextMarker(_el$15.nextSibling),
439
- _el$18 = _el$1.nextSibling,
440
- [_el$19, _co$3] = _$getNextMarker(_el$18.nextSibling);
445
+ _el$16 = _el$1.firstChild,
446
+ [_el$17, _co$2] = _$getNextMarker(_el$16.nextSibling),
447
+ _el$11 = _el$17.nextSibling,
448
+ _el$12 = _el$11.firstChild,
449
+ _el$13 = _el$11.nextSibling,
450
+ _el$18 = _el$13.nextSibling,
451
+ [_el$19, _co$3] = _$getNextMarker(_el$18.nextSibling),
452
+ _el$21 = _el$1.nextSibling,
453
+ [_el$22, _co$4] = _$getNextMarker(_el$21.nextSibling);
441
454
  _el$0.addEventListener("scroll", onScroll);
442
455
  var _ref$ = scrollRef;
443
456
  typeof _ref$ === "function" ? _$use(_ref$, _el$0) : scrollRef = _el$0;
444
457
  var _ref$2 = tableRef;
445
458
  typeof _ref$2 === "function" ? _$use(_ref$2, _el$1) : tableRef = _el$1;
446
- _$insert(_el$11, _$createComponent(For, {
459
+ _$insert(_el$1, _$createComponent(Show, {
460
+ get when() {
461
+ return props.loading;
462
+ },
463
+ get children() {
464
+ var _el$10 = _$getNextElement(_tmpl$7);
465
+ _$insert(_el$10, () => dataTableMessages().loadingRows);
466
+ return _el$10;
467
+ }
468
+ }), _el$17, _co$2);
469
+ _$insert(_el$12, _$createComponent(For, {
447
470
  get each() {
448
471
  return props.columns;
449
472
  },
450
473
  children: (col, index) => (() => {
451
- var _el$20 = _$getNextElement(_tmpl$0);
452
- _el$20.addEventListener("mouseenter", () => setHoveredColumnIfEnabled(index()));
453
- _$insert(_el$20, (() => {
474
+ var _el$23 = _$getNextElement(_tmpl$1);
475
+ _el$23.addEventListener("mouseenter", () => setHoveredColumnIfEnabled(index()));
476
+ _$insert(_el$23, (() => {
454
477
  var _c$ = _$memo(() => !!props.renderHeader);
455
478
  return () => _c$() ? props.renderHeader({
456
479
  col,
@@ -458,14 +481,14 @@ function DataTableRoot(props) {
458
481
  }) : renderHeaderDefault(col);
459
482
  })());
460
483
  _$effect(_p$ => {
461
- var _v$13 = `${col.headerClass ?? ""} ${col.class ?? ""}`,
462
- _v$14 = alignAttr(col),
463
- _v$15 = columnHighlighted(index()),
464
- _v$16 = ariaSortFor(col);
465
- _v$13 !== _p$.e && _$className(_el$20, _p$.e = _v$13);
466
- _v$14 !== _p$.t && _$setAttribute(_el$20, "data-align", _p$.t = _v$14);
467
- _v$15 !== _p$.a && _$setAttribute(_el$20, "data-highlighted", _p$.a = _v$15);
468
- _v$16 !== _p$.o && _$setAttribute(_el$20, "aria-sort", _p$.o = _v$16);
484
+ var _v$15 = `${col.headerClass ?? ""} ${col.class ?? ""}`,
485
+ _v$16 = alignAttr(col),
486
+ _v$17 = columnHighlighted(index()),
487
+ _v$18 = ariaSortFor(col);
488
+ _v$15 !== _p$.e && _$className(_el$23, _p$.e = _v$15);
489
+ _v$16 !== _p$.t && _$setAttribute(_el$23, "data-align", _p$.t = _v$16);
490
+ _v$17 !== _p$.a && _$setAttribute(_el$23, "data-highlighted", _p$.a = _v$17);
491
+ _v$18 !== _p$.o && _$setAttribute(_el$23, "aria-sort", _p$.o = _v$18);
469
492
  return _p$;
470
493
  }, {
471
494
  e: undefined,
@@ -473,25 +496,65 @@ function DataTableRoot(props) {
473
496
  a: undefined,
474
497
  o: undefined
475
498
  });
476
- return _el$20;
499
+ return _el$23;
477
500
  })()
478
501
  }));
479
- _$insert(_el$12, _$createComponent(Show, {
502
+ _$insert(_el$13, _$createComponent(Show, {
480
503
  get when() {
481
504
  return props.rows.length > 0;
482
505
  },
483
506
  get fallback() {
484
- return (() => {
485
- var _el$21 = _$getNextElement(_tmpl$1),
486
- _el$22 = _el$21.firstChild;
487
- _$insert(_el$22, _$createComponent(Placeholder, {
488
- get description() {
489
- return _$memo(() => props.empty ?? dataTableMessages().noRecords);
490
- }
491
- }));
492
- _$effect(() => _$setAttribute(_el$22, "colspan", props.columns.length));
493
- return _el$21;
494
- })();
507
+ return _$createComponent(Show, {
508
+ get when() {
509
+ return props.loading;
510
+ },
511
+ get fallback() {
512
+ return (() => {
513
+ var _el$26 = _$getNextElement(_tmpl$10),
514
+ _el$27 = _el$26.firstChild;
515
+ _$insert(_el$27, _$createComponent(Placeholder, {
516
+ get description() {
517
+ return _$memo(() => props.empty ?? dataTableMessages().noRecords);
518
+ }
519
+ }));
520
+ _$effect(() => _$setAttribute(_el$27, "colspan", props.columns.length));
521
+ return _el$26;
522
+ })();
523
+ },
524
+ get children() {
525
+ return [_$createComponent(For, {
526
+ get each() {
527
+ return Array.from({
528
+ length: loadingRows()
529
+ });
530
+ },
531
+ children: () => (() => {
532
+ var _el$28 = _$getNextElement(_tmpl$11);
533
+ _$insert(_el$28, _$createComponent(For, {
534
+ get each() {
535
+ return props.columns;
536
+ },
537
+ children: col => (() => {
538
+ var _el$29 = _$getNextElement(_tmpl$12);
539
+ _$effect(() => _$setAttribute(_el$29, "data-align", alignAttr(col)));
540
+ return _el$29;
541
+ })()
542
+ }));
543
+ return _el$28;
544
+ })()
545
+ }), _$createComponent(Show, {
546
+ get when() {
547
+ return props.fillHeight;
548
+ },
549
+ get children() {
550
+ var _el$24 = _$getNextElement(_tmpl$8),
551
+ _el$25 = _el$24.firstChild;
552
+ _$effect(() => _$setAttribute(_el$25, "colspan", props.columns.length));
553
+ return _el$24;
554
+ }
555
+ })];
556
+ }
557
+ });
495
558
  },
496
559
  get children() {
497
560
  return [_$createComponent(For, {
@@ -502,30 +565,30 @@ function DataTableRoot(props) {
502
565
  const id = () => rowId(row);
503
566
  const isSelected = () => props.selection ? props.selection.selected().has(id() ?? "") : props.selectedRowId && id() === props.selectedRowId;
504
567
  return (() => {
505
- var _el$23 = _$getNextElement(_tmpl$10);
506
- _el$23.$$keydown = e => onRowKeyDown(e, row);
507
- _el$23.$$contextmenu = () => props.onRowContextMenu?.(row);
508
- _el$23.$$dblclick = event => onRowDoubleClick(event, row);
509
- _el$23.$$click = event => onRowClick(event, row);
510
- _el$23.addEventListener("focus", () => {
568
+ var _el$30 = _$getNextElement(_tmpl$13);
569
+ _el$30.$$keydown = e => onRowKeyDown(e, row);
570
+ _el$30.$$contextmenu = () => props.onRowContextMenu?.(row);
571
+ _el$30.$$dblclick = event => onRowDoubleClick(event, row);
572
+ _el$30.$$click = event => onRowClick(event, row);
573
+ _el$30.addEventListener("focus", () => {
511
574
  const key = id();
512
575
  if (key !== undefined) props.selection?.markFocused(key);
513
576
  });
514
577
  _$use(element => {
515
578
  const key = id();
516
579
  if (key !== undefined) props.selection?.register(key, element);
517
- }, _el$23);
518
- _$insert(_el$23, _$createComponent(For, {
580
+ }, _el$30);
581
+ _$insert(_el$30, _$createComponent(For, {
519
582
  get each() {
520
583
  return props.columns;
521
584
  },
522
585
  children: (col, index) => {
523
586
  const value = () => valueOf(row, col);
524
587
  return (() => {
525
- var _el$24 = _$getNextElement(_tmpl$11),
526
- _el$25 = _el$24.firstChild;
527
- _el$24.addEventListener("mouseenter", () => setHoveredColumnIfEnabled(index()));
528
- _$insert(_el$25, (() => {
588
+ var _el$31 = _$getNextElement(_tmpl$14),
589
+ _el$32 = _el$31.firstChild;
590
+ _el$31.addEventListener("mouseenter", () => setHoveredColumnIfEnabled(index()));
591
+ _$insert(_el$32, (() => {
529
592
  var _c$2 = _$memo(() => !!props.renderCell);
530
593
  return () => _c$2() ? props.renderCell({
531
594
  row,
@@ -538,18 +601,18 @@ function DataTableRoot(props) {
538
601
  }) : renderValueDefault(value());
539
602
  })());
540
603
  _$effect(_p$ => {
541
- var _v$23 = `${col.cellClass ?? ""} ${col.class ?? ""}`,
542
- _v$24 = nowrapAttr(col),
543
- _v$25 = alignAttr(col),
544
- _v$26 = props.verticalAlign && props.verticalAlign !== "middle" ? props.verticalAlign : undefined,
545
- _v$27 = columnHighlighted(index()),
546
- _v$28 = cellContentClass();
547
- _v$23 !== _p$.e && _$className(_el$24, _p$.e = _v$23);
548
- _v$24 !== _p$.t && _$setAttribute(_el$24, "data-nowrap", _p$.t = _v$24);
549
- _v$25 !== _p$.a && _$setAttribute(_el$24, "data-align", _p$.a = _v$25);
550
- _v$26 !== _p$.o && _$setAttribute(_el$24, "data-valign", _p$.o = _v$26);
551
- _v$27 !== _p$.i && _$setAttribute(_el$24, "data-highlighted", _p$.i = _v$27);
552
- _v$28 !== _p$.n && _$className(_el$25, _p$.n = _v$28);
604
+ var _v$25 = `${col.cellClass ?? ""} ${col.class ?? ""}`,
605
+ _v$26 = nowrapAttr(col),
606
+ _v$27 = alignAttr(col),
607
+ _v$28 = props.verticalAlign && props.verticalAlign !== "middle" ? props.verticalAlign : undefined,
608
+ _v$29 = columnHighlighted(index()),
609
+ _v$30 = cellContentClass();
610
+ _v$25 !== _p$.e && _$className(_el$31, _p$.e = _v$25);
611
+ _v$26 !== _p$.t && _$setAttribute(_el$31, "data-nowrap", _p$.t = _v$26);
612
+ _v$27 !== _p$.a && _$setAttribute(_el$31, "data-align", _p$.a = _v$27);
613
+ _v$28 !== _p$.o && _$setAttribute(_el$31, "data-valign", _p$.o = _v$28);
614
+ _v$29 !== _p$.i && _$setAttribute(_el$31, "data-highlighted", _p$.i = _v$29);
615
+ _v$30 !== _p$.n && _$className(_el$32, _p$.n = _v$30);
553
616
  return _p$;
554
617
  }, {
555
618
  e: undefined,
@@ -559,23 +622,23 @@ function DataTableRoot(props) {
559
622
  i: undefined,
560
623
  n: undefined
561
624
  });
562
- return _el$24;
625
+ return _el$31;
563
626
  })();
564
627
  }
565
628
  }));
566
629
  _$effect(_p$ => {
567
- var _v$17 = `k2b-data-table__row ${rowClass(row)}`,
568
- _v$18 = shouldHoverRows() ? "true" : undefined,
569
- _v$19 = shouldHoverRows() && isInteractive() ? "true" : undefined,
570
- _v$20 = isSelected() ? "true" : undefined,
571
- _v$21 = props.selection ? !!isSelected() : undefined,
572
- _v$22 = props.selection ? props.selection.focused() === id() ? 0 : -1 : isInteractive() ? 0 : undefined;
573
- _v$17 !== _p$.e && _$className(_el$23, _p$.e = _v$17);
574
- _v$18 !== _p$.t && _$setAttribute(_el$23, "data-hover", _p$.t = _v$18);
575
- _v$19 !== _p$.a && _$setAttribute(_el$23, "data-clickable", _p$.a = _v$19);
576
- _v$20 !== _p$.o && _$setAttribute(_el$23, "data-selected", _p$.o = _v$20);
577
- _v$21 !== _p$.i && _$setAttribute(_el$23, "aria-selected", _p$.i = _v$21);
578
- _v$22 !== _p$.n && _$setAttribute(_el$23, "tabindex", _p$.n = _v$22);
630
+ var _v$19 = `k2b-data-table__row ${rowClass(row)}`,
631
+ _v$20 = shouldHoverRows() ? "true" : undefined,
632
+ _v$21 = shouldHoverRows() && isInteractive() ? "true" : undefined,
633
+ _v$22 = isSelected() ? "true" : undefined,
634
+ _v$23 = props.selection ? !!isSelected() : undefined,
635
+ _v$24 = props.selection ? props.selection.focused() === id() ? 0 : -1 : isInteractive() ? 0 : undefined;
636
+ _v$19 !== _p$.e && _$className(_el$30, _p$.e = _v$19);
637
+ _v$20 !== _p$.t && _$setAttribute(_el$30, "data-hover", _p$.t = _v$20);
638
+ _v$21 !== _p$.a && _$setAttribute(_el$30, "data-clickable", _p$.a = _v$21);
639
+ _v$22 !== _p$.o && _$setAttribute(_el$30, "data-selected", _p$.o = _v$22);
640
+ _v$23 !== _p$.i && _$setAttribute(_el$30, "aria-selected", _p$.i = _v$23);
641
+ _v$24 !== _p$.n && _$setAttribute(_el$30, "tabindex", _p$.n = _v$24);
579
642
  return _p$;
580
643
  }, {
581
644
  e: undefined,
@@ -586,7 +649,7 @@ function DataTableRoot(props) {
586
649
  n: undefined
587
650
  });
588
651
  _$runHydrationEvents();
589
- return _el$23;
652
+ return _el$30;
590
653
  })();
591
654
  }
592
655
  }), _$createComponent(Show, {
@@ -594,10 +657,10 @@ function DataTableRoot(props) {
594
657
  return props.fillHeight;
595
658
  },
596
659
  get children() {
597
- var _el$13 = _$getNextElement(_tmpl$7),
598
- _el$14 = _el$13.firstChild;
599
- _$effect(() => _$setAttribute(_el$14, "colspan", props.columns.length));
600
- return _el$13;
660
+ var _el$14 = _$getNextElement(_tmpl$8),
661
+ _el$15 = _el$14.firstChild;
662
+ _$effect(() => _$setAttribute(_el$15, "colspan", props.columns.length));
663
+ return _el$14;
601
664
  }
602
665
  })];
603
666
  }
@@ -607,18 +670,18 @@ function DataTableRoot(props) {
607
670
  return props.footer;
608
671
  },
609
672
  children: footer => (() => {
610
- var _el$26 = _$getNextElement(_tmpl$12),
611
- _el$27 = _el$26.firstChild;
612
- _$insert(_el$27, _$createComponent(For, {
673
+ var _el$33 = _$getNextElement(_tmpl$15),
674
+ _el$34 = _el$33.firstChild;
675
+ _$insert(_el$34, _$createComponent(For, {
613
676
  get each() {
614
677
  return props.columns;
615
678
  },
616
679
  children: (col, index) => {
617
680
  const value = () => footer().values?.[col.id];
618
681
  return (() => {
619
- var _el$28 = _$getNextElement(_tmpl$13);
620
- _el$28.addEventListener("mouseenter", () => setHoveredColumnIfEnabled(index()));
621
- _$insert(_el$28, (() => {
682
+ var _el$35 = _$getNextElement(_tmpl$16);
683
+ _el$35.addEventListener("mouseenter", () => setHoveredColumnIfEnabled(index()));
684
+ _$insert(_el$35, (() => {
622
685
  var _c$3 = _$memo(() => !!footer().renderCell);
623
686
  return () => _c$3() ? footer().renderCell({
624
687
  col,
@@ -627,57 +690,61 @@ function DataTableRoot(props) {
627
690
  }) : renderValueDefault(value());
628
691
  })());
629
692
  _$effect(_p$ => {
630
- var _v$29 = nowrapAttr(col),
631
- _v$30 = alignAttr(col),
632
- _v$31 = columnHighlighted(index());
633
- _v$29 !== _p$.e && _$setAttribute(_el$28, "data-nowrap", _p$.e = _v$29);
634
- _v$30 !== _p$.t && _$setAttribute(_el$28, "data-align", _p$.t = _v$30);
635
- _v$31 !== _p$.a && _$setAttribute(_el$28, "data-highlighted", _p$.a = _v$31);
693
+ var _v$31 = nowrapAttr(col),
694
+ _v$32 = alignAttr(col),
695
+ _v$33 = columnHighlighted(index());
696
+ _v$31 !== _p$.e && _$setAttribute(_el$35, "data-nowrap", _p$.e = _v$31);
697
+ _v$32 !== _p$.t && _$setAttribute(_el$35, "data-align", _p$.t = _v$32);
698
+ _v$33 !== _p$.a && _$setAttribute(_el$35, "data-highlighted", _p$.a = _v$33);
636
699
  return _p$;
637
700
  }, {
638
701
  e: undefined,
639
702
  t: undefined,
640
703
  a: undefined
641
704
  });
642
- return _el$28;
705
+ return _el$35;
643
706
  })();
644
707
  }
645
708
  }));
646
- return _el$26;
709
+ return _el$33;
647
710
  })()
648
- }), _el$16, _co$2);
711
+ }), _el$19, _co$3);
649
712
  _$insert(_el$0, _$createComponent(Show, {
650
713
  get when() {
651
714
  return shouldRenderLoadMoreSentinel();
652
715
  },
653
716
  get children() {
654
- var _el$17 = _$getNextElement(_tmpl$8);
717
+ var _el$20 = _$getNextElement(_tmpl$9);
655
718
  var _ref$3 = loadMoreRef;
656
- typeof _ref$3 === "function" ? _$use(_ref$3, _el$17) : loadMoreRef = _el$17;
657
- return _el$17;
719
+ typeof _ref$3 === "function" ? _$use(_ref$3, _el$20) : loadMoreRef = _el$20;
720
+ return _el$20;
658
721
  }
659
- }), _el$19, _co$3);
722
+ }), _el$22, _co$4);
660
723
  _$effect(_p$ => {
661
724
  var _v$5 = labelledBy() ? undefined : props.ariaLabel ?? dataTableMessages().dataTable,
662
725
  _v$6 = labelledBy(),
663
- _v$7 = `k2b-table-wrap${props.scrollClass ? ` ${props.scrollClass}` : ""}`,
664
- _v$8 = props.density === "compact" ? "compact" : undefined,
665
- _v$9 = props.footer ? "true" : undefined,
666
- _v$0 = surface(),
667
- _v$1 = props.scrollPreserveKey || undefined,
668
- _v$10 = tableClass(),
669
- _v$11 = props.fillHeight ? "true" : undefined,
670
- _v$12 = props.stickyHeader === false ? undefined : "true";
726
+ _v$7 = props.loading ? "true" : undefined,
727
+ _v$8 = `k2b-table-wrap${props.scrollClass ? ` ${props.scrollClass}` : ""}`,
728
+ _v$9 = props.density === "compact" ? "compact" : undefined,
729
+ _v$0 = props.footer ? "true" : undefined,
730
+ _v$1 = surface(),
731
+ _v$10 = props.scrollPreserveKey || undefined,
732
+ _v$11 = tableClass(),
733
+ _v$12 = props.fillHeight ? "true" : undefined,
734
+ _v$13 = props.columns.length > WIDE_TABLE_COLUMNS ? "true" : undefined,
735
+ _v$14 = props.stickyHeader === false ? undefined : "true";
671
736
  _v$5 !== _p$.e && _$setAttribute(_el$0, "aria-label", _p$.e = _v$5);
672
737
  _v$6 !== _p$.t && _$setAttribute(_el$0, "aria-labelledby", _p$.t = _v$6);
673
- _v$7 !== _p$.a && _$className(_el$0, _p$.a = _v$7);
674
- _v$8 !== _p$.o && _$setAttribute(_el$0, "data-density", _p$.o = _v$8);
675
- _v$9 !== _p$.i && _$setAttribute(_el$0, "data-has-footer", _p$.i = _v$9);
676
- _v$0 !== _p$.n && _$setAttribute(_el$0, "data-surface", _p$.n = _v$0);
677
- _v$1 !== _p$.s && _$setAttribute(_el$0, "data-scroll-preserve", _p$.s = _v$1);
678
- _v$10 !== _p$.h && _$className(_el$1, _p$.h = _v$10);
679
- _v$11 !== _p$.r && _$setAttribute(_el$1, "data-fill", _p$.r = _v$11);
680
- _v$12 !== _p$.d && _$setAttribute(_el$10, "data-sticky", _p$.d = _v$12);
738
+ _v$7 !== _p$.a && _$setAttribute(_el$0, "aria-busy", _p$.a = _v$7);
739
+ _v$8 !== _p$.o && _$className(_el$0, _p$.o = _v$8);
740
+ _v$9 !== _p$.i && _$setAttribute(_el$0, "data-density", _p$.i = _v$9);
741
+ _v$0 !== _p$.n && _$setAttribute(_el$0, "data-has-footer", _p$.n = _v$0);
742
+ _v$1 !== _p$.s && _$setAttribute(_el$0, "data-surface", _p$.s = _v$1);
743
+ _v$10 !== _p$.h && _$setAttribute(_el$0, "data-scroll-preserve", _p$.h = _v$10);
744
+ _v$11 !== _p$.r && _$className(_el$1, _p$.r = _v$11);
745
+ _v$12 !== _p$.d && _$setAttribute(_el$1, "data-fill", _p$.d = _v$12);
746
+ _v$13 !== _p$.l && _$setAttribute(_el$1, "data-wide", _p$.l = _v$13);
747
+ _v$14 !== _p$.u && _$setAttribute(_el$11, "data-sticky", _p$.u = _v$14);
681
748
  return _p$;
682
749
  }, {
683
750
  e: undefined,
@@ -689,28 +756,30 @@ function DataTableRoot(props) {
689
756
  s: undefined,
690
757
  h: undefined,
691
758
  r: undefined,
692
- d: undefined
759
+ d: undefined,
760
+ l: undefined,
761
+ u: undefined
693
762
  });
694
763
  return _el$0;
695
764
  })(), _$createComponent(For, {
696
765
  each: ["y", "x"],
697
766
  children: axis => (() => {
698
- var _el$29 = _$getNextElement(_tmpl$14),
699
- _el$30 = _el$29.firstChild;
700
- _el$29.addEventListener("pointercancel", event => event.currentTarget.releasePointerCapture(event.pointerId));
701
- _el$29.$$pointerup = event => event.currentTarget.releasePointerCapture(event.pointerId);
702
- _el$29.$$pointermove = event => {
767
+ var _el$36 = _$getNextElement(_tmpl$17),
768
+ _el$37 = _el$36.firstChild;
769
+ _el$36.addEventListener("pointercancel", event => event.currentTarget.releasePointerCapture(event.pointerId));
770
+ _el$36.$$pointerup = event => event.currentTarget.releasePointerCapture(event.pointerId);
771
+ _el$36.$$pointermove = event => {
703
772
  if (event.currentTarget.hasPointerCapture(event.pointerId)) scrollFromPointer(event, axis);
704
773
  };
705
- _el$29.$$pointerdown = event => startScrollbarDrag(event, axis);
706
- _$setAttribute(_el$29, "data-axis", axis);
774
+ _el$36.$$pointerdown = event => startScrollbarDrag(event, axis);
775
+ _$setAttribute(_el$36, "data-axis", axis);
707
776
  _$effect(_p$ => {
708
- var _v$32 = scrollbars()[axis].overflow ? "true" : undefined,
709
- _v$33 = `${scrollbars()[axis].offset}px`,
710
- _v$34 = `${scrollbars()[axis].size}px`;
711
- _v$32 !== _p$.e && _$setAttribute(_el$29, "data-overflow", _p$.e = _v$32);
712
- _v$33 !== _p$.t && _$setStyleProperty(_el$30, "--k2b-data-table-scroll-offset", _p$.t = _v$33);
713
- _v$34 !== _p$.a && _$setStyleProperty(_el$30, "--k2b-data-table-scroll-size", _p$.a = _v$34);
777
+ var _v$34 = scrollbars()[axis].overflow ? "true" : undefined,
778
+ _v$35 = `${scrollbars()[axis].offset}px`,
779
+ _v$36 = `${scrollbars()[axis].size}px`;
780
+ _v$34 !== _p$.e && _$setAttribute(_el$36, "data-overflow", _p$.e = _v$34);
781
+ _v$35 !== _p$.t && _$setStyleProperty(_el$37, "--k2b-data-table-scroll-offset", _p$.t = _v$35);
782
+ _v$36 !== _p$.a && _$setStyleProperty(_el$37, "--k2b-data-table-scroll-size", _p$.a = _v$36);
714
783
  return _p$;
715
784
  }, {
716
785
  e: undefined,
@@ -718,7 +787,7 @@ function DataTableRoot(props) {
718
787
  a: undefined
719
788
  });
720
789
  _$runHydrationEvents();
721
- return _el$29;
790
+ return _el$36;
722
791
  })()
723
792
  })];
724
793
  }
@@ -753,14 +822,14 @@ const DataTableHeader = props => {
753
822
  const panel = useContext(DataTablePanelContext);
754
823
  panel?.registerHeading();
755
824
  return (() => {
756
- var _el$31 = _$getNextElement(_tmpl$15);
757
- _$insert(_el$31, _$createComponent(PanelHeader, {
825
+ var _el$38 = _$getNextElement(_tmpl$18);
826
+ _$insert(_el$38, _$createComponent(PanelHeader, {
758
827
  get title() {
759
828
  return (() => {
760
- var _el$32 = _$getNextElement(_tmpl$16);
761
- _$insert(_el$32, () => props.title);
762
- _$effect(() => _$setAttribute(_el$32, "id", panel?.headingId));
763
- return _el$32;
829
+ var _el$39 = _$getNextElement(_tmpl$19);
830
+ _$insert(_el$39, () => props.title);
831
+ _$effect(() => _$setAttribute(_el$39, "id", panel?.headingId));
832
+ return _el$39;
764
833
  })();
765
834
  },
766
835
  get subtitle() {
@@ -776,21 +845,21 @@ const DataTableHeader = props => {
776
845
  return props.size;
777
846
  }
778
847
  }));
779
- _$effect(() => _$className(_el$31, `k2b-data-panel__header ${props.class ?? ""}`));
780
- return _el$31;
848
+ _$effect(() => _$className(_el$38, `k2b-data-panel__header ${props.class ?? ""}`));
849
+ return _el$38;
781
850
  })();
782
851
  };
783
852
  const DataTableControls = props => (() => {
784
- var _el$33 = _$getNextElement(_tmpl$15);
785
- _$insert(_el$33, () => props.children);
786
- _$effect(() => _$className(_el$33, `k2b-data-panel__controls ${props.class ?? ""}`));
787
- return _el$33;
853
+ var _el$40 = _$getNextElement(_tmpl$18);
854
+ _$insert(_el$40, () => props.children);
855
+ _$effect(() => _$className(_el$40, `k2b-data-panel__controls ${props.class ?? ""}`));
856
+ return _el$40;
788
857
  })();
789
858
  const DataTablePanelFooter = props => (() => {
790
- var _el$34 = _$getNextElement(_tmpl$17);
791
- _$insert(_el$34, () => props.children);
792
- _$effect(() => _$className(_el$34, `k2b-data-panel__footer ${props.class ?? ""}`));
793
- return _el$34;
859
+ var _el$41 = _$getNextElement(_tmpl$20);
860
+ _$insert(_el$41, () => props.children);
861
+ _$effect(() => _$className(_el$41, `k2b-data-panel__footer ${props.class ?? ""}`));
862
+ return _el$41;
794
863
  })();
795
864
  const DataTable = DataTableRoot;
796
865
  DataTable.Panel = DataTablePanel;