@tartaguti/ui-components 0.1.0 → 0.3.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 (213) hide show
  1. package/CHANGELOG.md +43 -0
  2. package/README.md +12 -0
  3. package/custom-elements.json +2887 -823
  4. package/dist/accordion/tt-accordion-item.d.ts.map +1 -1
  5. package/dist/accordion/tt-accordion-item.js +5 -2
  6. package/dist/accordion/tt-accordion-item.js.map +1 -1
  7. package/dist/bento/tt-bento-item.d.ts.map +1 -1
  8. package/dist/bento/tt-bento-item.js +7 -13
  9. package/dist/bento/tt-bento-item.js.map +1 -1
  10. package/dist/docs.d.ts +7 -0
  11. package/dist/docs.d.ts.map +1 -0
  12. package/dist/docs.js +15 -0
  13. package/dist/docs.js.map +1 -0
  14. package/dist/index.d.ts +4 -6
  15. package/dist/index.d.ts.map +1 -1
  16. package/dist/index.js +8 -7
  17. package/dist/index.js.map +1 -1
  18. package/dist/sidebar/tt-menu-group.d.ts.map +1 -1
  19. package/dist/sidebar/tt-menu-group.js +16 -5
  20. package/dist/sidebar/tt-menu-group.js.map +1 -1
  21. package/dist/sidebar/tt-menu-item.d.ts.map +1 -1
  22. package/dist/sidebar/tt-menu-item.js +24 -11
  23. package/dist/sidebar/tt-menu-item.js.map +1 -1
  24. package/dist/sidebar/tt-sidebar-footer.d.ts.map +1 -1
  25. package/dist/sidebar/tt-sidebar-footer.js +7 -3
  26. package/dist/sidebar/tt-sidebar-footer.js.map +1 -1
  27. package/dist/sidebar/tt-sidebar.d.ts +8 -3
  28. package/dist/sidebar/tt-sidebar.d.ts.map +1 -1
  29. package/dist/sidebar/tt-sidebar.js +196 -44
  30. package/dist/sidebar/tt-sidebar.js.map +1 -1
  31. package/dist/strings.d.ts +64 -0
  32. package/dist/strings.d.ts.map +1 -0
  33. package/dist/strings.js +68 -0
  34. package/dist/strings.js.map +1 -0
  35. package/dist/tokens.css +30 -6
  36. package/dist/tt-alert.d.ts.map +1 -1
  37. package/dist/tt-alert.js +5 -2
  38. package/dist/tt-alert.js.map +1 -1
  39. package/dist/tt-auth.d.ts +5 -1
  40. package/dist/tt-auth.d.ts.map +1 -1
  41. package/dist/tt-auth.js +72 -10
  42. package/dist/tt-auth.js.map +1 -1
  43. package/dist/tt-breadcrumbs.d.ts.map +1 -1
  44. package/dist/tt-breadcrumbs.js +6 -3
  45. package/dist/tt-breadcrumbs.js.map +1 -1
  46. package/dist/tt-button-group.d.ts.map +1 -1
  47. package/dist/tt-button-group.js +7 -1
  48. package/dist/tt-button-group.js.map +1 -1
  49. package/dist/tt-button.d.ts.map +1 -1
  50. package/dist/tt-button.js +37 -28
  51. package/dist/tt-button.js.map +1 -1
  52. package/dist/tt-card.d.ts.map +1 -1
  53. package/dist/tt-card.js +9 -6
  54. package/dist/tt-card.js.map +1 -1
  55. package/dist/tt-chart.d.ts +10 -2
  56. package/dist/tt-chart.d.ts.map +1 -1
  57. package/dist/tt-chart.js +167 -29
  58. package/dist/tt-chart.js.map +1 -1
  59. package/dist/tt-checkbox.d.ts.map +1 -1
  60. package/dist/tt-checkbox.js +5 -2
  61. package/dist/tt-checkbox.js.map +1 -1
  62. package/dist/tt-code-block.d.ts +4 -5
  63. package/dist/tt-code-block.d.ts.map +1 -1
  64. package/dist/tt-code-block.js +53 -17
  65. package/dist/tt-code-block.js.map +1 -1
  66. package/dist/tt-combobox.d.ts +14 -0
  67. package/dist/tt-combobox.d.ts.map +1 -1
  68. package/dist/tt-combobox.js +234 -31
  69. package/dist/tt-combobox.js.map +1 -1
  70. package/dist/tt-company-card.d.ts +18 -0
  71. package/dist/tt-company-card.d.ts.map +1 -1
  72. package/dist/tt-company-card.js +73 -4
  73. package/dist/tt-company-card.js.map +1 -1
  74. package/dist/tt-comparison-table.d.ts.map +1 -1
  75. package/dist/tt-comparison-table.js +6 -3
  76. package/dist/tt-comparison-table.js.map +1 -1
  77. package/dist/tt-component-doc.d.ts.map +1 -1
  78. package/dist/tt-component-doc.js +6 -3
  79. package/dist/tt-component-doc.js.map +1 -1
  80. package/dist/tt-contact-list.d.ts +17 -2
  81. package/dist/tt-contact-list.d.ts.map +1 -1
  82. package/dist/tt-contact-list.js +68 -10
  83. package/dist/tt-contact-list.js.map +1 -1
  84. package/dist/tt-copy-button.d.ts.map +1 -1
  85. package/dist/tt-copy-button.js +6 -3
  86. package/dist/tt-copy-button.js.map +1 -1
  87. package/dist/tt-data-table.d.ts +32 -1
  88. package/dist/tt-data-table.d.ts.map +1 -1
  89. package/dist/tt-data-table.js +302 -16
  90. package/dist/tt-data-table.js.map +1 -1
  91. package/dist/tt-dock-item.d.ts +53 -0
  92. package/dist/tt-dock-item.d.ts.map +1 -0
  93. package/dist/tt-dock-item.js +270 -0
  94. package/dist/tt-dock-item.js.map +1 -0
  95. package/dist/tt-dock.d.ts +59 -0
  96. package/dist/tt-dock.d.ts.map +1 -0
  97. package/dist/tt-dock.js +337 -0
  98. package/dist/tt-dock.js.map +1 -0
  99. package/dist/tt-drawer.d.ts +4 -0
  100. package/dist/tt-drawer.d.ts.map +1 -1
  101. package/dist/tt-drawer.js +14 -4
  102. package/dist/tt-drawer.js.map +1 -1
  103. package/dist/tt-dropdown-menu.d.ts +5 -0
  104. package/dist/tt-dropdown-menu.d.ts.map +1 -1
  105. package/dist/tt-dropdown-menu.js +34 -8
  106. package/dist/tt-dropdown-menu.js.map +1 -1
  107. package/dist/tt-file-upload.d.ts +35 -0
  108. package/dist/tt-file-upload.d.ts.map +1 -1
  109. package/dist/tt-file-upload.js +210 -21
  110. package/dist/tt-file-upload.js.map +1 -1
  111. package/dist/tt-filter.d.ts.map +1 -1
  112. package/dist/tt-filter.js +10 -5
  113. package/dist/tt-filter.js.map +1 -1
  114. package/dist/tt-form.d.ts +25 -1
  115. package/dist/tt-form.d.ts.map +1 -1
  116. package/dist/tt-form.js +151 -12
  117. package/dist/tt-form.js.map +1 -1
  118. package/dist/tt-grid.d.ts +10 -1
  119. package/dist/tt-grid.d.ts.map +1 -1
  120. package/dist/tt-grid.js +38 -9
  121. package/dist/tt-grid.js.map +1 -1
  122. package/dist/tt-icon.d.ts.map +1 -1
  123. package/dist/tt-icon.js +5 -0
  124. package/dist/tt-icon.js.map +1 -1
  125. package/dist/tt-inbox.d.ts +4 -0
  126. package/dist/tt-inbox.d.ts.map +1 -1
  127. package/dist/tt-inbox.js +13 -3
  128. package/dist/tt-inbox.js.map +1 -1
  129. package/dist/tt-input.d.ts.map +1 -1
  130. package/dist/tt-input.js +15 -5
  131. package/dist/tt-input.js.map +1 -1
  132. package/dist/tt-key-values.d.ts +2 -0
  133. package/dist/tt-key-values.d.ts.map +1 -1
  134. package/dist/tt-key-values.js +45 -2
  135. package/dist/tt-key-values.js.map +1 -1
  136. package/dist/tt-layout.d.ts +53 -2
  137. package/dist/tt-layout.d.ts.map +1 -1
  138. package/dist/tt-layout.js +233 -27
  139. package/dist/tt-layout.js.map +1 -1
  140. package/dist/tt-modal.d.ts +4 -0
  141. package/dist/tt-modal.d.ts.map +1 -1
  142. package/dist/tt-modal.js +14 -4
  143. package/dist/tt-modal.js.map +1 -1
  144. package/dist/tt-navbar.d.ts +4 -0
  145. package/dist/tt-navbar.d.ts.map +1 -1
  146. package/dist/tt-navbar.js +42 -7
  147. package/dist/tt-navbar.js.map +1 -1
  148. package/dist/tt-pagination.d.ts +4 -0
  149. package/dist/tt-pagination.d.ts.map +1 -1
  150. package/dist/tt-pagination.js +8 -1
  151. package/dist/tt-pagination.js.map +1 -1
  152. package/dist/tt-product.d.ts +67 -15
  153. package/dist/tt-product.d.ts.map +1 -1
  154. package/dist/tt-product.js +447 -366
  155. package/dist/tt-product.js.map +1 -1
  156. package/dist/tt-progress.d.ts +1 -0
  157. package/dist/tt-progress.d.ts.map +1 -1
  158. package/dist/tt-progress.js +26 -7
  159. package/dist/tt-progress.js.map +1 -1
  160. package/dist/tt-quantity.d.ts.map +1 -1
  161. package/dist/tt-quantity.js +5 -2
  162. package/dist/tt-quantity.js.map +1 -1
  163. package/dist/tt-radio-group.d.ts.map +1 -1
  164. package/dist/tt-radio-group.js +5 -2
  165. package/dist/tt-radio-group.js.map +1 -1
  166. package/dist/tt-scroller.d.ts +76 -0
  167. package/dist/tt-scroller.d.ts.map +1 -0
  168. package/dist/tt-scroller.js +525 -0
  169. package/dist/tt-scroller.js.map +1 -0
  170. package/dist/tt-search.d.ts.map +1 -1
  171. package/dist/tt-search.js +10 -5
  172. package/dist/tt-search.js.map +1 -1
  173. package/dist/tt-select.d.ts +9 -0
  174. package/dist/tt-select.d.ts.map +1 -1
  175. package/dist/tt-select.js +99 -14
  176. package/dist/tt-select.js.map +1 -1
  177. package/dist/tt-slider.d.ts.map +1 -1
  178. package/dist/tt-slider.js +13 -2
  179. package/dist/tt-slider.js.map +1 -1
  180. package/dist/tt-social-links.d.ts.map +1 -1
  181. package/dist/tt-social-links.js +7 -4
  182. package/dist/tt-social-links.js.map +1 -1
  183. package/dist/tt-switcher.d.ts +2 -0
  184. package/dist/tt-switcher.d.ts.map +1 -1
  185. package/dist/tt-switcher.js +24 -76
  186. package/dist/tt-switcher.js.map +1 -1
  187. package/dist/tt-table-row.d.ts.map +1 -1
  188. package/dist/tt-table-row.js +5 -2
  189. package/dist/tt-table-row.js.map +1 -1
  190. package/dist/tt-table.d.ts.map +1 -1
  191. package/dist/tt-table.js +5 -2
  192. package/dist/tt-table.js.map +1 -1
  193. package/dist/tt-tabs.d.ts.map +1 -1
  194. package/dist/tt-tabs.js +5 -2
  195. package/dist/tt-tabs.js.map +1 -1
  196. package/dist/tt-tag-list.d.ts.map +1 -1
  197. package/dist/tt-tag-list.js +6 -3
  198. package/dist/tt-tag-list.js.map +1 -1
  199. package/dist/tt-textarea.d.ts.map +1 -1
  200. package/dist/tt-textarea.js +5 -2
  201. package/dist/tt-textarea.js.map +1 -1
  202. package/dist/tt-toast.d.ts +4 -1
  203. package/dist/tt-toast.d.ts.map +1 -1
  204. package/dist/tt-toast.js +40 -6
  205. package/dist/tt-toast.js.map +1 -1
  206. package/dist/tt-toggle-group.d.ts.map +1 -1
  207. package/dist/tt-toggle-group.js +7 -1
  208. package/dist/tt-toggle-group.js.map +1 -1
  209. package/dist/tt-toggle.d.ts.map +1 -1
  210. package/dist/tt-toggle.js +14 -9
  211. package/dist/tt-toggle.js.map +1 -1
  212. package/package.json +1 -1
  213. package/vscode.html-custom-data.json +241 -66
@@ -5,17 +5,29 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
5
5
  return c > 3 && r && Object.defineProperty(target, key, r), r;
6
6
  };
7
7
  import { LitElement, html, css } from "lit";
8
- import { customElement, property } from "lit/decorators.js";
8
+ import { customElement, property, query, state } from "lit/decorators.js";
9
9
  import { ifDefined } from "lit/directives/if-defined.js";
10
+ import { repeat } from "lit/directives/repeat.js";
10
11
  import "./tt-checkbox.js";
11
12
  import "./tt-skeleton.js";
12
13
  import "./tt-empty-state.js";
13
14
  import "./tt-dropdown-menu.js";
14
15
  import "./tt-icon.js";
15
16
  import { srOnly } from "./sr-only.js";
17
+ import { StringsController } from "./strings.js";
18
+ /*
19
+ Rows kept in the page above and below the visible ones while
20
+ virtualized, so a fast scroll or a Tab to the next row lands on a row
21
+ that already exists instead of a blank.
22
+ */
23
+ const OVERSCAN = 5;
24
+ /** A row's height before the first one is measured: the default density. */
25
+ const ROW_ESTIMATE = 49;
16
26
  /**
17
27
  * Working table: sorting, selection, row actions, sticky header, and
18
- * loading and empty states.
28
+ * loading and empty states. With visible-rows it is virtualized: a box
29
+ * that many rows tall, holding only the rows in view, so ten thousand
30
+ * rows scroll as smoothly as ten.
19
31
  *
20
32
  * It owns nothing. Sort state and selection come in as properties and
21
33
  * changes go out as events, so the page stays the single source of truth
@@ -25,6 +37,9 @@ import { srOnly } from "./sr-only.js";
25
37
  let TTDataTable = class TTDataTable extends LitElement {
26
38
  constructor() {
27
39
  super(...arguments);
40
+ /** This component's own text, over setStrings() (see strings.ts). */
41
+ this.strings = {};
42
+ this.text = new StringsController(this);
28
43
  this.columns = [];
29
44
  this.rows = [];
30
45
  /*
@@ -43,6 +58,45 @@ let TTDataTable = class TTDataTable extends LitElement {
43
58
  this.emptyDescription = "";
44
59
  // Rows respond to clicks. Only set this when there is somewhere to go.
45
60
  this.clickableRows = false;
61
+ /*
62
+ How many rows tall the table is, as a box that scrolls. Only the rows
63
+ in view (plus a few spare) exist in the page, so the cost of a scroll
64
+ stays the same at 10,000 rows as at 10. 0, the default, shows every
65
+ row as a plain table.
66
+
67
+ Virtualized rows need one height each, so their cells stay on one
68
+ line and long values end in an ellipsis.
69
+ */
70
+ this.visibleRows = 0;
71
+ // The row at the top of the scroll box, from its scroll position.
72
+ this.firstInView = 0;
73
+ // Measured from the rendered page, so density, touch and themes all count.
74
+ this.rowHeight = 0;
75
+ this.headerHeight = 0;
76
+ /*
77
+ Column widths, measured once and then fixed. A table sizes columns
78
+ from the rows it holds, and a virtualized one holds different rows at
79
+ every scroll, so unfixed columns would jump sideways while scrolling.
80
+
81
+ A table that fits its box keeps them as shares (%), so it still fits
82
+ when the box narrows. One wider than its box keeps pixels and scrolls
83
+ sideways, as the plain table does, rather than squeezing every column
84
+ into an ellipsis on a phone.
85
+ */
86
+ this.columnWidths = [];
87
+ this.widthUnit = "%";
88
+ this.frame = 0;
89
+ this.wrapWidth = 0;
90
+ this.lastRange = "";
91
+ this.handleScroll = () => {
92
+ if (!this.virtual || this.frame)
93
+ return;
94
+ this.frame = requestAnimationFrame(() => {
95
+ this.frame = 0;
96
+ this.syncToScroll();
97
+ this.announceRange();
98
+ });
99
+ };
46
100
  }
47
101
  /*
48
102
  What a row's selection checkbox is called.
@@ -66,6 +120,124 @@ let TTDataTable = class TTDataTable extends LitElement {
66
120
  const value = first ? row[first.key] : undefined;
67
121
  return typeof value === "string" || typeof value === "number" ? String(value) : "";
68
122
  }
123
+ get virtual() {
124
+ return this.visibleRows > 0 && !this.loading && this.rows.length > 0;
125
+ }
126
+ /** The slice of rows in the page: the ones in view plus OVERSCAN each side. */
127
+ get inPage() {
128
+ const count = this.rows.length;
129
+ if (!this.virtual)
130
+ return { start: 0, end: count };
131
+ // Clamped, because rows can shrink while the box is scrolled far down.
132
+ const first = Math.max(0, Math.min(this.firstInView, count - this.visibleRows));
133
+ return {
134
+ start: Math.max(0, first - OVERSCAN),
135
+ end: Math.min(count, first + this.visibleRows + OVERSCAN),
136
+ };
137
+ }
138
+ connectedCallback() {
139
+ super.connectedCallback();
140
+ // Measured again after the first render (firstUpdated) or a reconnect.
141
+ if (this.hasUpdated)
142
+ this.observeWidth();
143
+ }
144
+ disconnectedCallback() {
145
+ super.disconnectedCallback();
146
+ cancelAnimationFrame(this.frame);
147
+ this.frame = 0;
148
+ this.resizeObserver?.disconnect();
149
+ }
150
+ firstUpdated() {
151
+ this.observeWidth();
152
+ }
153
+ updated() {
154
+ if (this.virtual)
155
+ this.measureSoon();
156
+ else if (this.columnWidths.length > 0)
157
+ this.columnWidths = [];
158
+ }
159
+ /* A new width makes the fixed column widths wrong: measure them again. */
160
+ observeWidth() {
161
+ if (typeof ResizeObserver === "undefined" || !this.wrap)
162
+ return;
163
+ this.resizeObserver?.disconnect();
164
+ this.resizeObserver = new ResizeObserver(([entry]) => {
165
+ const width = Math.round(entry.contentRect.width);
166
+ if (width === this.wrapWidth)
167
+ return;
168
+ this.wrapWidth = width;
169
+ if (this.columnWidths.length > 0)
170
+ this.columnWidths = [];
171
+ });
172
+ this.resizeObserver.observe(this.wrap);
173
+ }
174
+ /*
175
+ Measuring happens a frame after rendering, never inside updated():
176
+ each measurement can change state, and a change during an update
177
+ would schedule another update straight away.
178
+ */
179
+ measureSoon() {
180
+ if (this.frame)
181
+ return;
182
+ this.frame = requestAnimationFrame(() => {
183
+ this.frame = 0;
184
+ this.measure();
185
+ });
186
+ }
187
+ measure() {
188
+ if (!this.virtual)
189
+ return;
190
+ const changed = (a, b) => Math.abs(a - b) > 0.5;
191
+ const row = this.renderRoot.querySelector("tbody tr.row");
192
+ const rowHeight = row?.getBoundingClientRect().height ?? 0;
193
+ if (rowHeight > 0 && changed(rowHeight, this.rowHeight))
194
+ this.rowHeight = rowHeight;
195
+ const header = this.renderRoot.querySelector("thead tr");
196
+ const headerHeight = header?.getBoundingClientRect().height ?? 0;
197
+ if (headerHeight > 0 && changed(headerHeight, this.headerHeight))
198
+ this.headerHeight = headerHeight;
199
+ if (this.columnWidths.length === 0) {
200
+ const widths = [...this.renderRoot.querySelectorAll("thead th")].map((cell) => cell.getBoundingClientRect().width);
201
+ const total = widths.reduce((sum, width) => sum + width, 0);
202
+ if (widths.length > 0 && widths.every((width) => width > 0)) {
203
+ const fits = total <= (this.wrap?.clientWidth ?? 0) + 1;
204
+ this.widthUnit = fits ? "%" : "px";
205
+ this.columnWidths = fits ? widths.map((width) => (width / total) * 100) : widths;
206
+ }
207
+ }
208
+ // The scroll position can move without a scroll the table hears
209
+ // about: rows shrinking under it clamp it.
210
+ this.syncToScroll();
211
+ this.announceRange();
212
+ }
213
+ syncToScroll() {
214
+ if (!this.wrap)
215
+ return;
216
+ // Half a pixel of slack: scrollTop is rounded, rows are not, and 300
217
+ // rows down must not read as 299.
218
+ const first = Math.floor((this.wrap.scrollTop + 0.5) / (this.rowHeight || ROW_ESTIMATE));
219
+ if (first !== this.firstInView)
220
+ this.firstInView = first;
221
+ }
222
+ /*
223
+ Which rows are in view, as indexes into rows (end excluded), each time
224
+ that changes. Enough to fetch the next page from a server before the
225
+ person scrolls into it.
226
+ */
227
+ announceRange() {
228
+ const count = this.rows.length;
229
+ const start = Math.max(0, Math.min(this.firstInView, count - this.visibleRows));
230
+ const end = Math.min(count, start + this.visibleRows);
231
+ const key = `${start}:${end}:${count}`;
232
+ if (key === this.lastRange)
233
+ return;
234
+ this.lastRange = key;
235
+ this.dispatchEvent(new CustomEvent("tt-range-change", {
236
+ detail: { start, end, total: count },
237
+ bubbles: true,
238
+ composed: true,
239
+ }));
240
+ }
69
241
  get hasActions() {
70
242
  return this.rowActions.length > 0;
71
243
  }
@@ -239,8 +411,11 @@ let TTDataTable = class TTDataTable extends LitElement {
239
411
  transition: background var(--tt-duration-fast) var(--tt-ease);
240
412
  }
241
413
 
242
- tbody tr:hover {
243
- background: var(--tt-accent);
414
+ /* Only where a pointer can hover: a tap would leave this on. */
415
+ @media (hover: hover) {
416
+ tbody tr:hover {
417
+ background: var(--tt-accent);
418
+ }
244
419
  }
245
420
 
246
421
  tbody tr.clickable {
@@ -253,8 +428,10 @@ let TTDataTable = class TTDataTable extends LitElement {
253
428
  background: color-mix(in srgb, var(--tt-primary) 8%, transparent);
254
429
  }
255
430
 
256
- tbody tr.selected:hover {
257
- background: color-mix(in srgb, var(--tt-primary) 14%, transparent);
431
+ @media (hover: hover) {
432
+ tbody tr.selected:hover {
433
+ background: color-mix(in srgb, var(--tt-primary) 14%, transparent);
434
+ }
258
435
  }
259
436
 
260
437
  tbody tr:focus-visible {
@@ -283,8 +460,10 @@ let TTDataTable = class TTDataTable extends LitElement {
283
460
  cursor: pointer;
284
461
  }
285
462
 
286
- .sort:hover {
287
- color: var(--tt-foreground);
463
+ @media (hover: hover) {
464
+ .sort:hover {
465
+ color: var(--tt-foreground);
466
+ }
288
467
  }
289
468
 
290
469
  .sort:focus-visible {
@@ -329,12 +508,55 @@ let TTDataTable = class TTDataTable extends LitElement {
329
508
  padding: var(--tt-space-6);
330
509
  }
331
510
 
511
+ /* Virtualized: a box that scrolls on its own, and does not hand the
512
+ scroll on to the page when it reaches an end. */
513
+ .wrap.virtual {
514
+ overflow-y: auto;
515
+ overscroll-behavior: contain;
516
+ }
517
+
518
+ table.fixed {
519
+ table-layout: fixed;
520
+ }
521
+
522
+ /* One line per cell, so every row is the one height the window math
523
+ assumes. Data cells only: the checkbox and menu keep their focus
524
+ rings. */
525
+ .virtual td.cell {
526
+ overflow: hidden;
527
+ text-overflow: ellipsis;
528
+ white-space: nowrap;
529
+ }
530
+
531
+ tr.spacer td {
532
+ padding: 0;
533
+ border: 0;
534
+ }
535
+
536
+ /* Tighter sides on phones: a third column fits instead of scrolling. */
537
+ @media (max-width: 480px) {
538
+ thead th,
539
+ td {
540
+ padding-inline: var(--tt-space-3);
541
+ }
542
+
543
+ tr.spacer td {
544
+ padding: 0;
545
+ }
546
+ }
547
+
548
+ @media (hover: hover) {
549
+ tbody tr.spacer:hover {
550
+ background: transparent;
551
+ }
552
+ }
553
+
332
554
  `,
333
555
  ]; }
334
556
  renderHeader() {
335
557
  return html `
336
558
  <thead>
337
- <tr>
559
+ <tr aria-rowindex=${ifDefined(this.virtual ? 1 : undefined)}>
338
560
  ${this.selectable
339
561
  ? html `
340
562
  <th class="select-cell">
@@ -413,13 +635,14 @@ let TTDataTable = class TTDataTable extends LitElement {
413
635
  </tbody>
414
636
  `;
415
637
  }
416
- renderRow(row) {
638
+ renderRow(row, index) {
417
639
  const isSelected = this.selected.includes(row.id);
418
640
  return html `
419
641
  <tr
420
- class="${this.clickableRows ? "clickable" : ""} ${isSelected
642
+ class="row ${this.clickableRows ? "clickable" : ""} ${isSelected
421
643
  ? "selected"
422
644
  : ""}"
645
+ aria-rowindex=${ifDefined(this.virtual ? index + 2 : undefined)}
423
646
  tabindex=${ifDefined(this.clickableRows ? 0 : undefined)}
424
647
  @click=${() => this.clickRow(row)}
425
648
  @keydown=${(e) => {
@@ -448,7 +671,7 @@ let TTDataTable = class TTDataTable extends LitElement {
448
671
  `
449
672
  : ""}
450
673
  ${this.columns.map((column) => html `
451
- <td class=${column.align === "end" ? "end" : ""}>
674
+ <td class="cell ${column.align === "end" ? "end" : ""}">
452
675
  ${row[column.key] ?? ""}
453
676
  </td>
454
677
  `)}
@@ -460,7 +683,7 @@ let TTDataTable = class TTDataTable extends LitElement {
460
683
  >
461
684
  <tt-dropdown-menu
462
685
  .items=${this.rowActions}
463
- label=${this.rowName(row) ? `Actions for ${this.rowName(row)}` : "Actions"}
686
+ label=${this.rowName(row) ? this.text.get("actionsFor", { name: this.rowName(row) }) : this.text.get("actions")}
464
687
  @tt-menu-select=${(e) => this.chooseAction(row, e)}
465
688
  ></tt-dropdown-menu>
466
689
  </td>
@@ -469,10 +692,49 @@ let TTDataTable = class TTDataTable extends LitElement {
469
692
  </tr>
470
693
  `;
471
694
  }
695
+ /*
696
+ The rows in view, with a spacer row above and below standing in for
697
+ the rest, so the scrollbar is as long as the whole table. Keyed by id,
698
+ so a row keeps its element (and its focus, its open menu) while the
699
+ window slides over it.
700
+ */
701
+ renderRows() {
702
+ const { start, end } = this.inPage;
703
+ const height = this.rowHeight || ROW_ESTIMATE;
704
+ const spacer = (rows) => rows > 0
705
+ ? html `<tr class="spacer" aria-hidden="true" style="height: ${rows * height}px">
706
+ <td colspan=${this.columnCount}></td>
707
+ </tr>`
708
+ : "";
709
+ return html `
710
+ ${spacer(start)}
711
+ ${repeat(this.rows.slice(start, end), (row) => row.id, (row, offset) => this.renderRow(row, start + offset))}
712
+ ${spacer(this.rows.length - end)}
713
+ `;
714
+ }
472
715
  render() {
716
+ const virtual = this.virtual;
717
+ const fixed = virtual && this.columnWidths.length > 0;
718
+ // The header, the rows in view and the two borders of .wrap.
719
+ const boxHeight = (this.headerHeight || ROW_ESTIMATE) + this.visibleRows * (this.rowHeight || ROW_ESTIMATE) + 2;
473
720
  return html `
474
- <div class="wrap" part="wrap">
475
- <table part="table" aria-label=${ifDefined(this.label || undefined)}>
721
+ <div
722
+ class="wrap ${virtual ? "virtual" : ""}"
723
+ part="wrap"
724
+ style=${ifDefined(virtual ? `max-height: ${boxHeight}px` : undefined)}
725
+ @scroll=${this.handleScroll}
726
+ >
727
+ <table
728
+ part="table"
729
+ class=${fixed ? "fixed" : ""}
730
+ aria-label=${ifDefined(this.label || undefined)}
731
+ aria-rowcount=${ifDefined(virtual ? this.rows.length + 1 : undefined)}
732
+ >
733
+ ${fixed
734
+ ? html `<colgroup>
735
+ ${this.columnWidths.map((width) => html `<col style="width: ${width}${this.widthUnit}" />`)}
736
+ </colgroup>`
737
+ : ""}
476
738
  ${this.renderHeader()}
477
739
  ${this.loading
478
740
  ? this.renderLoading()
@@ -491,7 +753,7 @@ let TTDataTable = class TTDataTable extends LitElement {
491
753
  </td>
492
754
  </tr>
493
755
  `
494
- : this.rows.map((row) => this.renderRow(row))}
756
+ : this.renderRows()}
495
757
  </tbody>
496
758
  `}
497
759
  </table>
@@ -499,6 +761,9 @@ let TTDataTable = class TTDataTable extends LitElement {
499
761
  `;
500
762
  }
501
763
  };
764
+ __decorate([
765
+ property({ attribute: false })
766
+ ], TTDataTable.prototype, "strings", void 0);
502
767
  __decorate([
503
768
  property({ type: Array })
504
769
  ], TTDataTable.prototype, "columns", void 0);
@@ -535,6 +800,27 @@ __decorate([
535
800
  __decorate([
536
801
  property({ type: Boolean, attribute: "clickable-rows" })
537
802
  ], TTDataTable.prototype, "clickableRows", void 0);
803
+ __decorate([
804
+ property({ type: Number, attribute: "visible-rows" })
805
+ ], TTDataTable.prototype, "visibleRows", void 0);
806
+ __decorate([
807
+ state()
808
+ ], TTDataTable.prototype, "firstInView", void 0);
809
+ __decorate([
810
+ state()
811
+ ], TTDataTable.prototype, "rowHeight", void 0);
812
+ __decorate([
813
+ state()
814
+ ], TTDataTable.prototype, "headerHeight", void 0);
815
+ __decorate([
816
+ state()
817
+ ], TTDataTable.prototype, "columnWidths", void 0);
818
+ __decorate([
819
+ state()
820
+ ], TTDataTable.prototype, "widthUnit", void 0);
821
+ __decorate([
822
+ query(".wrap")
823
+ ], TTDataTable.prototype, "wrap", void 0);
538
824
  TTDataTable = __decorate([
539
825
  customElement("tt-data-table")
540
826
  ], TTDataTable);
@@ -1 +1 @@
1
- {"version":3,"file":"tt-data-table.js","sourceRoot":"","sources":["../src/tt-data-table.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE5C,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAEzD,OAAO,kBAAkB,CAAC;AAC1B,OAAO,kBAAkB,CAAC;AAC1B,OAAO,qBAAqB,CAAC;AAC7B,OAAO,uBAAuB,CAAC;AAC/B,OAAO,cAAc,CAAC;AAEtB,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAwBtC;;;;;;;;GAQG;AAEI,IAAM,WAAW,GAAjB,MAAM,WAAY,SAAQ,UAAU;IAApC;;QACsB,YAAO,GAAiB,EAAE,CAAC;QAE3B,SAAI,GAAc,EAAE,CAAC;QAEhD;;;;UAIE;QAC0B,UAAK,GAAG,EAAE,CAAC;QA4BV,eAAU,GAAG,KAAK,CAAC;QAErB,aAAQ,GAAa,EAAE,CAAC;QAEnD,6DAA6D;QACR,eAAU,GAAiB,EAAE,CAAC;QAEtD,YAAO,GAAG,KAAK,CAAC;QAEU,gBAAW,GAAG,CAAC,CAAC;QAEf,iBAAY,GAAG,kBAAkB,CAAC;QAE9B,qBAAgB,GAAG,EAAE,CAAC;QAElF,uEAAuE;QACb,kBAAa,GAAG,KAAK,CAAC;IAgelF,CAAC;IA1gBC;;;;;;;MAOE;IACM,QAAQ,CAAC,GAAY;QAC3B,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC/B,OAAO,IAAI,CAAC,CAAC,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC;IAChD,CAAC;IAED;;;;MAIE;IACM,OAAO,CAAC,GAAY;QAC1B,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC9B,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACjD,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACrF,CAAC;IAsBD,IAAY,UAAU;QACpB,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC;IACpC,CAAC;IAED,IAAY,WAAW;QACrB,OAAO,CACL,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAC5E,CAAC;IACJ,CAAC;IAED;;;;;;;MAOE;IACF,IAAY,WAAW;QACrB,OAAO,CACL,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC;YACpB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CACzD,CAAC;IACJ,CAAC;IAED,IAAY,YAAY;QACtB,OAAO,CACL,CAAC,IAAI,CAAC,WAAW;YACjB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CACxD,CAAC;IACJ,CAAC;IAEO,aAAa,CAAC,IAAc;QAClC,IAAI,CAAC,aAAa,CAChB,IAAI,WAAW,CAAC,qBAAqB,EAAE;YACrC,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;YAC1B,OAAO,EAAE,IAAI;YACb,QAAQ,EAAE,IAAI;SACf,CAAC,CACH,CAAC;IACJ,CAAC;IAEO,SAAS,CAAC,KAAY;QAC5B,sEAAsE;QACtE,oEAAoE;QACpE,KAAK,CAAC,eAAe,EAAE,CAAC;QAExB;;;;;UAKE;QACF,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAE3C,IAAI,CAAC,aAAa,CAChB,IAAI,CAAC,WAAW;YACd,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YACrD,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAC/E,CAAC;IACJ,CAAC;IAEO,SAAS,CAAC,EAAU,EAAE,KAAY;QACxC,KAAK,CAAC,eAAe,EAAE,CAAC;QAExB,IAAI,CAAC,aAAa,CAChB,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YACxB,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;YACvC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC,CAC3B,CAAC;IACJ,CAAC;IAED;;;;MAIE;IACM,UAAU,CAAC,MAAkB;QACnC,IAAI,CAAC,MAAM,CAAC,QAAQ;YAAE,OAAO;QAE7B,IAAI,IAA2B,CAAC;QAEhC,IAAI,IAAI,CAAC,IAAI,EAAE,GAAG,KAAK,MAAM,CAAC,GAAG,EAAE,CAAC;YAClC,IAAI,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;QAC/C,CAAC;aAAM,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,KAAK,KAAK,EAAE,CAAC;YACzC,IAAI,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC;QAChD,CAAC;aAAM,CAAC;YACN,IAAI,GAAG,SAAS,CAAC;QACnB,CAAC;QAED,IAAI,CAAC,aAAa,CAChB,IAAI,WAAW,CAAC,SAAS,EAAE;YACzB,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE;YACtB,OAAO,EAAE,IAAI;YACb,QAAQ,EAAE,IAAI;SACf,CAAC,CACH,CAAC;IACJ,CAAC;IAEO,QAAQ,CAAC,GAAY;QAC3B,IAAI,CAAC,IAAI,CAAC,aAAa;YAAE,OAAO;QAEhC,IAAI,CAAC,aAAa,CAChB,IAAI,WAAW,CAAC,cAAc,EAAE;YAC9B,MAAM,EAAE,EAAE,GAAG,EAAE;YACf,OAAO,EAAE,IAAI;YACb,QAAQ,EAAE,IAAI;SACf,CAAC,CACH,CAAC;IACJ,CAAC;IAEO,YAAY,CAAC,GAAY,EAAE,KAAY;QAC7C,yEAAyE;QACzE,0CAA0C;QAC1C,KAAK,CAAC,eAAe,EAAE,CAAC;QAExB,MAAM,EAAE,KAAK,EAAE,GAAI,KAAwC,CAAC,MAAM,CAAC;QAEnE,IAAI,CAAC,aAAa,CAChB,IAAI,WAAW,CAAC,eAAe,EAAE;YAC/B,MAAM,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE;YAC9B,OAAO,EAAE,IAAI;YACb,QAAQ,EAAE,IAAI;SACf,CAAC,CACH,CAAC;IACJ,CAAC;aAEM,WAAM,GAAG;QACd,MAAM;QACN,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuKJ;KACA,AA1KY,CA0KX;IAEM,YAAY;QAClB,OAAO,IAAI,CAAA;;;YAGH,IAAI,CAAC,UAAU;YACf,CAAC,CAAC,IAAI,CAAA;;;;;;;;;;;;;+BAaa,IAAI,CAAC,WAAW;qCACV,IAAI,CAAC,YAAY;iCACrB,IAAI,CAAC,SAAS;;;eAGhC;YACH,CAAC,CAAC,EAAE;YACJ,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;YAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,EAAE,GAAG,KAAK,MAAM,CAAC,GAAG,CAAC;YAC/C,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC;YAEvC,OAAO,IAAI,CAAA;;wBAEC,MAAM,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;wBACnC,SAAS,CACf,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CACnD;4BACW,SAAS,CACnB,CAAC,MAAM,CAAC,QAAQ;gBACd,CAAC,CAAC,SAAS;gBACX,CAAC,CAAC,CAAC,QAAQ;oBACT,CAAC,CAAC,MAAM;oBACR,CAAC,CAAC,SAAS,KAAK,KAAK;wBACnB,CAAC,CAAC,WAAW;wBACb,CAAC,CAAC,YAAY,CACrB;;kBAEC,MAAM,CAAC,QAAQ;gBACf,CAAC,CAAC,IAAI,CAAA;;sCAEc,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;;iCAE7B,GAAG,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;;0BAEpC,MAAM,CAAC,KAAK;;;mCAGH,SAAS,KAAK,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,UAAU;;;;;qBAK9D;gBACH,CAAC,CAAC,MAAM,CAAC,KAAK;;aAEnB,CAAC;QACJ,CAAC,CAAC;YACA,IAAI,CAAC,UAAU;YACf,CAAC,CAAC,IAAI,CAAA;;oBAEE;YACR,CAAC,CAAC,EAAE;;;KAGX,CAAC;IACJ,CAAC;IAEO,aAAa;QACnB,OAAO,IAAI,CAAA;;UAEL,KAAK,CAAC,IAAI,CACV,EAAE,MAAM,EAAE,IAAI,CAAC,WAAW,EAAE,EAC5B,GAAG,EAAE,CAAC,IAAI,CAAA;;4BAEQ,IAAI,CAAC,WAAW;;;;WAIjC,CACF;;KAEJ,CAAC;IACJ,CAAC;IAEO,SAAS,CAAC,GAAY;QAC5B,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAElD,OAAO,IAAI,CAAA;;iBAEE,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,IAAI,UAAU;YAC1D,CAAC,CAAC,UAAU;YACZ,CAAC,CAAC,EAAE;mBACK,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;iBAC/C,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;mBACtB,CAAC,CAAgB,EAAE,EAAE;YAC9B;;;;;cAKE;YACF,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,aAAa;gBAAE,OAAO;YACzC,IAAI,IAAI,CAAC,aAAa,IAAI,CAAC,CAAC,GAAG,KAAK,OAAO;gBAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QAClE,CAAC;;UAEC,IAAI,CAAC,UAAU;YACf,CAAC,CAAC,IAAI,CAAA;+CAC+B,CAAC,CAAQ,EAAE,EAAE,CAAC,CAAC,CAAC,eAAe,EAAE;;2BAErD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;;6BAEhB,UAAU;+BACR,CAAC,CAAQ,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;;;aAGzD;YACH,CAAC,CAAC,EAAE;UACJ,IAAI,CAAC,OAAO,CAAC,GAAG,CAChB,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAA;wBACF,MAAM,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;gBAC3C,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE;;WAE1B,CACF;UACC,IAAI,CAAC,UAAU;YACf,CAAC,CAAC,IAAI,CAAA;;;yBAGS,CAAC,CAAQ,EAAE,EAAE,CAAC,CAAC,CAAC,eAAe,EAAE;;;2BAG/B,IAAI,CAAC,UAAU;0BAChB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,eAAe,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS;oCACxD,CAAC,CAAQ,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC;;;aAG9D;YACH,CAAC,CAAC,EAAE;;KAET,CAAC;IACJ,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAA;;yCAE0B,SAAS,CAAC,IAAI,CAAC,KAAK,IAAI,SAAS,CAAC;YAC/D,IAAI,CAAC,YAAY,EAAE;YACnB,IAAI,CAAC,OAAO;YACZ,CAAC,CAAC,IAAI,CAAC,aAAa,EAAE;YACtB,CAAC,CAAC,IAAI,CAAA;;oBAEE,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC;gBACtB,CAAC,CAAC,IAAI,CAAA;;sDAE4B,IAAI,CAAC,WAAW;;wCAE9B,IAAI,CAAC,YAAY;4CACb,IAAI,CAAC,gBAAgB;;;;;;uBAM1C;gBACH,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;;eAElD;;;KAGV,CAAC;IACJ,CAAC;;AAphB0B;IAA1B,QAAQ,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;4CAA4B;AAE3B;IAA1B,QAAQ,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;yCAAsB;AAOpB;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;0CAAY;AA0BX;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;yCAAkB;AAEhB;IAA5B,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;+CAAoB;AAErB;IAA1B,QAAQ,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;6CAAyB;AAGE;IAApD,QAAQ,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,CAAC;+CAA+B;AAEtD;IAA5B,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;4CAAiB;AAEU;IAAtD,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,cAAc,EAAE,CAAC;gDAAiB;AAEf;IAAvD,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,eAAe,EAAE,CAAC;iDAAmC;AAE9B;IAA3D,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,mBAAmB,EAAE,CAAC;qDAAuB;AAGxB;IAAzD,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC;kDAAuB;AAtDrE,WAAW;IADvB,aAAa,CAAC,eAAe,CAAC;GAClB,WAAW,CAshBvB"}
1
+ {"version":3,"file":"tt-data-table.js","sourceRoot":"","sources":["../src/tt-data-table.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,53 @@
1
+ import { LitElement } from "lit";
2
+ /** What `tt-dock-select` carries: the chosen item's value. */
3
+ export interface DockSelectDetail {
4
+ value: string;
5
+ }
6
+ /**
7
+ * One target in a tt-dock: an icon over a short label, a link or a button.
8
+ *
9
+ * ---------------------------------------------------------------------
10
+ * THE DOCK KEEPS THE STATE, THE ITEM ONLY ASKS.
11
+ *
12
+ * A click sends `tt-dock-select` and changes nothing here. The dock
13
+ * hears it, moves `active` (the current page) and sends its own
14
+ * `tt-dock-select`. Only the
15
+ * dock can know that choosing one item un-chooses another, the same
16
+ * reason tt-accordion owns its items' open state.
17
+ *
18
+ * ---------------------------------------------------------------------
19
+ * HOW THE DOCK STYLES IT.
20
+ *
21
+ * The dock decides the shape (a bar, a floating pill, a column) and
22
+ * whether labels show. It says so through inherited custom properties
23
+ * (`--tt-dock-item-*`, `--tt-dock-label-*`), read below with the
24
+ * bar's values as fallbacks, so an item has no props for any of it and
25
+ * one used outside a dock still looks right.
26
+ */
27
+ export declare class TTDockItem extends LitElement {
28
+ /**
29
+ * The current page, announced as aria-current="page". The dock moves
30
+ * it when an item is chosen; set it for the start.
31
+ */
32
+ active: boolean;
33
+ disabled: boolean;
34
+ /** Makes the item a link. Empty: a button that tells your app it was chosen. */
35
+ href: string;
36
+ /** Names this item in `tt-dock-select`. Empty: the label text is sent. */
37
+ value: string;
38
+ private control?;
39
+ private labelEl?;
40
+ /** Focuses the link or button inside. */
41
+ focus(options?: FocusOptions): void;
42
+ private get text();
43
+ private onClick;
44
+ private onPointerEnter;
45
+ static styles: import("lit").CSSResult;
46
+ render(): import("lit-html").TemplateResult<1>;
47
+ }
48
+ declare global {
49
+ interface HTMLElementTagNameMap {
50
+ "tt-dock-item": TTDockItem;
51
+ }
52
+ }
53
+ //# sourceMappingURL=tt-dock-item.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tt-dock-item.d.ts","sourceRoot":"","sources":["../src/tt-dock-item.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAa,MAAM,KAAK,CAAC;AAM5C,8DAA8D;AAC9D,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,qBACa,UAAW,SAAQ,UAAU;IACxC;;;OAGG;IACyC,MAAM,UAAS;IAEf,QAAQ,UAAS;IAE7D,gFAAgF;IACpD,IAAI,SAAM;IAEtC,0EAA0E;IAC9C,KAAK,SAAM;IAEvB,OAAO,CAAC,OAAO,CAAC,CAAc;IAC7B,OAAO,CAAC,OAAO,CAAC,CAAc;IAE/C,yCAAyC;IAChC,KAAK,CAAC,OAAO,CAAC,EAAE,YAAY;IAIrC,OAAO,KAAK,IAAI,GAEf;IAED,OAAO,CAAC,OAAO;IAwBf,OAAO,CAAC,cAAc;IAStB,MAAM,CAAC,MAAM,0BA2HX;IAEF,MAAM;CA2CP;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,cAAc,EAAE,UAAU,CAAC;KAC5B;CACF"}