tuix-webcomponents 0.93.0 → 0.95.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.
@@ -17,7 +17,7 @@ export { TuixCheckbox } from './tuix-checkbox/TuixCheckbox.js';
17
17
  export { TuixRadioButton } from './tuix-radio-button/TuixRadioButton.js';
18
18
  export { TuixToggleButton } from './tuix-toggle-button/TuixToggleButton.js';
19
19
  export { TuixTable } from './tuix-table/TuixTable.js';
20
- export type { IDataTableHeader, PaginationEventDetail, ThreeDotsLoaderConfig, TuixPaginationEvent, TuixTableElement, } from './tuix-table/interfaces/tuix-table.interface.js';
20
+ export type { IDataTableHeader, PaginationEventDetail, SortDirection, SortEventDetail, ThreeDotsLoaderConfig, TuixPaginationEvent, TuixSortEvent, TuixTableElement, } from './tuix-table/interfaces/tuix-table.interface.js';
21
21
  export { TuixToast } from './tuix-toast/TuixToast.js';
22
22
  export { TuixModal } from './tuix-modal/TuixModal.js';
23
23
  export { ToastType } from './tuix-toast/enums/tuix-toast.enums.js';
@@ -1,6 +1,6 @@
1
1
  import { type EventName } from '@lit/react';
2
2
  import { TuixText as WrappedTuixText, TuixIcon as WrappedTuixIcon, TuixButton as WrappedTuixButton, TuixPaper as WrappedTuixPaper, TuixIconButton as WrappedTuixIconButton, TuixLink as WrappedTuixLink, TuixInput as WrappedTuixInput, TuixDropdown as WrappedTuixDropdown, TuixCheckbox as WrappedTuixCheckbox, TuixRadioButton as WrappedTuixRadioButton, TuixToggleButton as WrappedTuixToggleButton, TuixTable as WrappedTuixTable, TuixToast as WrappedTuixToast, TuixModal as WrappedTuixModal } from '../index.js';
3
- import type { DetailValue, DetailValueCheckbox, PaginationEventDetail, TuixDropdownPlainOption } from '../index.js';
3
+ import type { DetailValue, DetailValueCheckbox, PaginationEventDetail, SortEventDetail, TuixDropdownPlainOption } from '../index.js';
4
4
  export declare const TuixText: import("@lit/react").ReactWebComponent<WrappedTuixText, {}>;
5
5
  export declare const TuixIcon: import("@lit/react").ReactWebComponent<WrappedTuixIcon, {}>;
6
6
  export declare const TuixButton: import("@lit/react").ReactWebComponent<WrappedTuixButton, {
@@ -33,6 +33,7 @@ export declare const TuixTable: import("@lit/react").ReactWebComponent<WrappedTu
33
33
  onNextPage: EventName<CustomEvent<PaginationEventDetail>>;
34
34
  onPreviousPage: EventName<CustomEvent<PaginationEventDetail>>;
35
35
  onPageSizeChange: EventName<CustomEvent<PaginationEventDetail>>;
36
+ onSort: EventName<CustomEvent<SortEventDetail>>;
36
37
  }>;
37
38
  export declare const TuixToast: import("@lit/react").ReactWebComponent<WrappedTuixToast, {
38
39
  onClose: EventName<CustomEvent<undefined>>;
@@ -94,6 +94,7 @@ export const TuixTable = createComponent({
94
94
  onNextPage: 'next-page',
95
95
  onPreviousPage: 'previous-page',
96
96
  onPageSizeChange: 'page-size-change',
97
+ onSort: 'sort',
97
98
  },
98
99
  });
99
100
  export const TuixToast = createComponent({
@@ -410,5 +410,16 @@ export const iconContentMap = {
410
410
  <path d="M17 20a3 3 0 1 0 0-6 3 3 0 0 0 0 6M7 21a3 3 0 1 0 0-6 3 3 0 0 0 0 6M21 7a3 3 0 1 0-6 0 3 3 0 0 0 6 0M10.5 10.5l4 4" stroke="#121212" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
411
411
  <rect width="8" height="8" x="3" y="3" rx="2" stroke="#121212" stroke-width="2"/>
412
412
  <path d="M7 12v3M12 7h3" stroke="#121212" stroke-width="2" stroke-linecap="round"/>
413
+ </svg>`,
414
+ [IconName.PLAY_OUTLINE]: `<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
415
+ <path d="M5 3L19 12L5 21V3Z" stroke="#121212" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
416
+ </svg>`,
417
+ [IconName.REFRESH]: `<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
418
+ <path d="M23 4V10H17" stroke="#121212" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
419
+ <path d="M1 20V14H7" stroke="#121212" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
420
+ <path d="M3.506 8.998C4.013 7.564 4.875 6.283 6.012 5.273C7.148 4.263 8.522 3.557 10.004 3.222C11.487 2.886 13.031 2.932 14.491 3.354C15.952 3.777 17.281 4.562 18.356 5.638L23 10M1 14L5.636 18.358C6.711 19.433 8.04 20.218 9.501 20.641C10.961 21.063 12.505 21.109 13.988 20.773C15.471 20.438 16.844 19.732 17.981 18.722C19.117 17.712 19.979 16.431 20.486 14.998" stroke="#121212" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
421
+ </svg>`,
422
+ [IconName.SHIELD]: `<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
423
+ <path d="M12 22C12 22 20 18 20 12V5L12 2L4 5V12C4 18 12 22 12 22Z" stroke="#121212" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
413
424
  </svg>`,
414
425
  };
@@ -90,5 +90,8 @@ export declare enum IconName {
90
90
  FILE_TEXT = "file-text",
91
91
  HIGHLIGHT = "highlight",
92
92
  MCP_LOGO = "mcp-logo",
93
- ENDPOINTS = "endpoints"
93
+ ENDPOINTS = "endpoints",
94
+ PLAY_OUTLINE = "play-outline",
95
+ REFRESH = "refresh",
96
+ SHIELD = "shield"
94
97
  }
@@ -98,4 +98,7 @@ export var IconName;
98
98
  IconName["HIGHLIGHT"] = "highlight";
99
99
  IconName["MCP_LOGO"] = "mcp-logo";
100
100
  IconName["ENDPOINTS"] = "endpoints";
101
+ IconName["PLAY_OUTLINE"] = "play-outline";
102
+ IconName["REFRESH"] = "refresh";
103
+ IconName["SHIELD"] = "shield";
101
104
  })(IconName || (IconName = {}));
@@ -1,9 +1,10 @@
1
1
  import { LitElement } from 'lit';
2
2
  import '../tuix-icon/TuixIcon.js';
3
3
  import '../tuix-text/TuixText.js';
4
- import type { IDataTableHeader, ThreeDotsLoaderConfig } from './interfaces/tuix-table.interface.js';
4
+ import type { IDataTableHeader, SortDirection, ThreeDotsLoaderConfig } from './interfaces/tuix-table.interface.js';
5
5
  export declare class TuixTable extends LitElement {
6
6
  static styles: import("lit").CSSResult[];
7
+ dark: boolean;
7
8
  paginated: boolean;
8
9
  disableMobileTable: boolean;
9
10
  showMobileTableInTablet: boolean;
@@ -15,6 +16,8 @@ export declare class TuixTable extends LitElement {
15
16
  currentPage?: number;
16
17
  currentSize?: number;
17
18
  isLoadingData: boolean;
19
+ sortBy?: string;
20
+ sortDirection: SortDirection;
18
21
  private _isTabletView;
19
22
  private _isMobileView;
20
23
  private _headerPercents;
@@ -32,9 +35,13 @@ export declare class TuixTable extends LitElement {
32
35
  private _nextPage;
33
36
  private _prevPage;
34
37
  private _setPageSize;
38
+ private _sort;
35
39
  private _computeHeaderPercents;
36
- private _cellStyleString;
40
+ private _cellBackgroundColor;
37
41
  private _textVariantColor;
42
+ private _renderSortIcons;
43
+ private _ariaSort;
44
+ private _onHeaderKeyDown;
38
45
  private _renderHeaderCells;
39
46
  private _renderCell;
40
47
  private _renderRows;
@@ -43,6 +50,7 @@ export declare class TuixTable extends LitElement {
43
50
  private _renderSpinner;
44
51
  private _renderPagination;
45
52
  private _renderTable;
53
+ private _renderCard;
46
54
  private _renderCards;
47
55
  render(): import("lit-html").TemplateResult<1>;
48
56
  }
@@ -1,18 +1,21 @@
1
1
  import { __decorate } from "tslib";
2
- import { LitElement, html } from 'lit';
2
+ import { LitElement, html, nothing } from 'lit';
3
3
  import { customElement, property, state } from 'lit/decorators.js';
4
4
  import { styleMap } from 'lit/directives/style-map.js';
5
+ import { classMap } from 'lit/directives/class-map.js';
5
6
  import { repeat } from 'lit/directives/repeat.js';
6
7
  import '../tuix-icon/TuixIcon.js';
7
8
  import '../tuix-text/TuixText.js';
8
- import { tableStyles, threeDots } from './TuixTable.styles';
9
+ import { tableHostStyles, tableStyles, threeDots } from './TuixTable.styles';
9
10
  import { TextSize, TextVariant } from '../tuix-text/enums/tuix-text.enums';
10
- import { IconName } from '../tuix-icon/enums/tuix-icon.enums.js';
11
+ import { IconName, IconSizeVariant, } from '../tuix-icon/enums/tuix-icon.enums.js';
11
12
  import { Palette } from '../utils/colors';
13
+ import { DarkPalette } from '../utils/darkColors';
12
14
  import { ScreenSizes } from '../utils/screenSizes.enum';
13
15
  let TuixTable = class TuixTable extends LitElement {
14
16
  constructor() {
15
17
  super(...arguments);
18
+ this.dark = false;
16
19
  this.paginated = false;
17
20
  this.disableMobileTable = false;
18
21
  this.showMobileTableInTablet = false;
@@ -20,6 +23,7 @@ let TuixTable = class TuixTable extends LitElement {
20
23
  this.headers = [];
21
24
  this.pageSizeOptions = [5, 10, 20];
22
25
  this.isLoadingData = false;
26
+ this.sortDirection = 'asc';
23
27
  this._isTabletView = false;
24
28
  this._isMobileView = false;
25
29
  this._headerPercents = [];
@@ -28,7 +32,7 @@ let TuixTable = class TuixTable extends LitElement {
28
32
  this._isMobileView = !!this._mqMobile?.matches;
29
33
  };
30
34
  this._nextPage = () => {
31
- if (this.currentPage === this.totalPages)
35
+ if (this._effectiveCurrentPage >= this.totalPages)
32
36
  return;
33
37
  const next = Math.min(this.totalPages, this._effectiveCurrentPage + 1);
34
38
  const detail = {
@@ -42,7 +46,7 @@ let TuixTable = class TuixTable extends LitElement {
42
46
  }));
43
47
  };
44
48
  this._prevPage = () => {
45
- if (this.currentPage === 1)
49
+ if (this._effectiveCurrentPage <= 1)
46
50
  return;
47
51
  const prev = Math.max(1, this._effectiveCurrentPage - 1);
48
52
  const detail = {
@@ -66,7 +70,7 @@ let TuixTable = class TuixTable extends LitElement {
66
70
  }));
67
71
  };
68
72
  }
69
- static { this.styles = [tableStyles, threeDots]; }
73
+ static { this.styles = [tableHostStyles, tableStyles, threeDots]; }
70
74
  connectedCallback() {
71
75
  super.connectedCallback();
72
76
  this._mqTablet = window.matchMedia(`(max-width:${ScreenSizes.TABLET}px)`);
@@ -115,8 +119,21 @@ let TuixTable = class TuixTable extends LitElement {
115
119
  onPreviousPage: this._prevPage,
116
120
  onItemsPerPageChange: this._setPageSize,
117
121
  isLoading: this.isLoadingData,
122
+ stickyInTablet: this.showMobileTableInTablet,
118
123
  };
119
124
  }
125
+ _sort(sortKey) {
126
+ const isActive = this.sortBy === sortKey;
127
+ const detail = {
128
+ sortKey,
129
+ sortDirection: isActive && this.sortDirection === 'asc' ? 'desc' : 'asc',
130
+ };
131
+ this.dispatchEvent(new CustomEvent('sort', {
132
+ detail,
133
+ bubbles: true,
134
+ composed: true,
135
+ }));
136
+ }
120
137
  _computeHeaderPercents() {
121
138
  const total = this.headers.reduce((acum, header) => acum + header.width, 0);
122
139
  this._headerPercents =
@@ -124,42 +141,90 @@ let TuixTable = class TuixTable extends LitElement {
124
141
  ? this.headers.map(() => 100 / this.headers.length)
125
142
  : this.headers.map(header => (header.width / total) * 100);
126
143
  }
127
- _cellStyleString() {
128
- return `border-bottom:1px solid ${Palette.NEUTRAL_200};`;
144
+ _cellBackgroundColor(header, row) {
145
+ return header.cellBackgroundColor?.(row) || '';
129
146
  }
130
147
  _textVariantColor(header, row) {
131
- const color = header.cellColor
132
- ? header.cellColor(row)
133
- : TextVariant.PRIMARY;
134
- return color;
148
+ return header.cellColor?.(row) ?? TextVariant.PRIMARY;
149
+ }
150
+ _renderSortIcons(header) {
151
+ if (!header.sortKey)
152
+ return nothing;
153
+ const isActive = this.sortBy === header.sortKey;
154
+ return html `<span class="sort-icons" aria-hidden="true">
155
+ <tuix-icon
156
+ ?dark=${this.dark}
157
+ name=${IconName.CHEVRON_UP}
158
+ size=${IconSizeVariant.MEDIUM}
159
+ color=${isActive && this.sortDirection === 'asc'
160
+ ? TextVariant.SECTION
161
+ : TextVariant.STROKE}
162
+ ></tuix-icon>
163
+ <tuix-icon
164
+ ?dark=${this.dark}
165
+ name=${IconName.CHEVRON_DOWN}
166
+ size=${IconSizeVariant.MEDIUM}
167
+ color=${isActive && this.sortDirection === 'desc'
168
+ ? TextVariant.SECTION
169
+ : TextVariant.STROKE}
170
+ ></tuix-icon>
171
+ </span>`;
172
+ }
173
+ _ariaSort(header) {
174
+ if (!this.sortBy || this.sortBy !== header.sortKey)
175
+ return nothing;
176
+ return this.sortDirection === 'asc' ? 'ascending' : 'descending';
177
+ }
178
+ _onHeaderKeyDown(event, sortKey) {
179
+ if (event.key !== 'Enter' && event.key !== ' ')
180
+ return;
181
+ event.preventDefault();
182
+ this._sort(sortKey);
135
183
  }
136
184
  _renderHeaderCells() {
137
185
  return html `<tr>
138
- ${this.headers.map((header, idx) => html `<th
139
- style=${styleMap({
140
- width: `${this._headerPercents[idx]}%`,
141
- color: Palette.WHITE,
142
- })}
186
+ ${this.headers.map((header, idx) => {
187
+ const sortKey = header.sortKey;
188
+ return html `<th
189
+ class=${classMap({ sortable: !!sortKey })}
190
+ style=${styleMap({ width: `${this._headerPercents[idx]}%` })}
191
+ tabindex=${sortKey ? 0 : nothing}
192
+ aria-sort=${this._ariaSort(header)}
193
+ @click=${sortKey ? () => this._sort(sortKey) : nothing}
194
+ @keydown=${sortKey
195
+ ? (event) => this._onHeaderKeyDown(event, sortKey)
196
+ : nothing}
143
197
  >
144
- <tuix-text size=${TextSize.Body1} color=${TextVariant.SECONDARY}
145
- >${header.name}</tuix-text
146
- >
147
- </th>`)}
198
+ <span class="header-cell">
199
+ <tuix-text
200
+ class="header-name"
201
+ ?dark=${this.dark}
202
+ size=${TextSize.Body1}
203
+ color=${TextVariant.SECTION}
204
+ >${header.name}</tuix-text
205
+ >
206
+ ${this._renderSortIcons(header)}
207
+ </span>
208
+ </th>`;
209
+ })}
148
210
  </tr>`;
149
211
  }
150
212
  _renderCell(header, row) {
213
+ const cellStyle = styleMap({
214
+ backgroundColor: this._cellBackgroundColor(header, row) || undefined,
215
+ });
151
216
  if (header.isSlot) {
152
217
  const slotName = `${header.slotName}-${row.id}`;
153
- return html `<td style="${this._cellStyleString()}">
218
+ return html `<td style=${cellStyle}>
154
219
  <slot name=${slotName}></slot>
155
220
  </td>`;
156
221
  }
157
- const content = row[header.dataKey];
158
- return html `<td style="${this._cellStyleString()}">
222
+ return html `<td style=${cellStyle}>
159
223
  <tuix-text
160
- size=${TextSize.Body1}
224
+ ?dark=${this.dark}
225
+ size=${TextSize.Body2}
161
226
  color=${this._textVariantColor(header, row)}
162
- >${content}</tuix-text
227
+ >${row[header.dataKey]}</tuix-text
163
228
  >
164
229
  </td>`;
165
230
  }
@@ -179,7 +244,7 @@ let TuixTable = class TuixTable extends LitElement {
179
244
  _renderSpinner() {
180
245
  const threeDotsConfiguration = {
181
246
  size: '14px',
182
- color: Palette.MAIN,
247
+ color: this.dark ? DarkPalette.MAIN : Palette.MAIN,
183
248
  visible: true,
184
249
  ariaLabel: 'Loading',
185
250
  wrapperStyle: {
@@ -213,17 +278,18 @@ let TuixTable = class TuixTable extends LitElement {
213
278
  </div>`;
214
279
  }
215
280
  _renderPagination() {
216
- const { totalItems, startItem, endItem, itemsPerPage, isLoading } = this._paginationProps;
281
+ const { totalItems, startItem, endItem, itemsPerPage, isLoading, stickyInTablet, } = this._paginationProps;
282
+ const iconSize = this._isMobileView
283
+ ? IconSizeVariant.SMALL
284
+ : IconSizeVariant.MEDIUM;
217
285
  return html `<footer
218
- style="background-color:${Palette.SECTION_BG};"
219
- class="table_footer sticky"
286
+ class=${classMap({ table_footer: true, sticky: !!stickyInTablet })}
220
287
  >
221
288
  <div class="items-per-page">
222
- <tuix-text size=${TextSize.Body2}>Items per page</tuix-text>
223
- <div
224
- style="outline: 1px solid ${Palette.NEUTRAL_200};"
225
- class="dropdown_container"
289
+ <tuix-text ?dark=${this.dark} size=${TextSize.Body2}
290
+ >Items per page</tuix-text
226
291
  >
292
+ <div class="dropdown_container">
227
293
  <select
228
294
  class="items-per-page-dropdown"
229
295
  .value=${String(itemsPerPage)}
@@ -234,81 +300,90 @@ let TuixTable = class TuixTable extends LitElement {
234
300
  </select>
235
301
  <tuix-icon
236
302
  class="arrow-icon"
303
+ ?dark=${this.dark}
237
304
  name=${IconName.CHEVRON_DOWN}
238
305
  ></tuix-icon>
239
306
  </div>
240
307
  </div>
241
308
 
242
309
  <div class="navigation">
243
- <tuix-text size=${TextSize.Body2}
310
+ <tuix-text ?dark=${this.dark} size=${TextSize.Body2}
244
311
  >${startItem} - ${endItem} of ${totalItems}</tuix-text
245
312
  >
246
313
  <div class="buttons">
247
314
  <tuix-icon
248
- class="arrow-icon"
315
+ class="arrow"
316
+ ?dark=${this.dark}
249
317
  name=${IconName.CHEVRON_LEFT}
250
- @click=${this._prevPage}
318
+ size=${iconSize}
319
+ @click=${startItem > 1 ? this._prevPage : nothing}
251
320
  ></tuix-icon>
252
321
  <tuix-icon
253
- class="arrow-icon"
322
+ class="arrow"
323
+ ?dark=${this.dark}
254
324
  name=${IconName.CHEVRON_RIGHT}
255
- @click=${this._nextPage}
325
+ size=${iconSize}
326
+ @click=${totalItems !== endItem ? this._nextPage : nothing}
256
327
  ></tuix-icon>
257
328
  </div>
258
329
  </div>
259
330
  </footer>`;
260
331
  }
261
332
  _renderTable() {
262
- return html `<table>
263
- <thead style="background-color: ${Palette.MAIN}">
264
- ${this._renderHeaderCells()}
265
- </thead>
266
- ${this.isLoadingData
333
+ return html `<div class="table_wrapper">
334
+ <table>
335
+ <thead>
336
+ ${this._renderHeaderCells()}
337
+ </thead>
338
+ ${this.isLoadingData
267
339
  ? html `<tbody>
268
- <tr>
269
- <td colspan=${this.headers.length}>${this._renderSpinner()}</td>
270
- </tr>
271
- </tbody>`
340
+ <tr>
341
+ <td colspan=${this.headers.length}>
342
+ ${this._renderSpinner()}
343
+ </td>
344
+ </tr>
345
+ </tbody>`
272
346
  : html `<tbody>
273
- ${this._renderRows()}
274
- </tbody>`}
275
- </table>
347
+ ${this._renderRows()}
348
+ </tbody>`}
349
+ </table>
350
+ </div>
276
351
  ${this.paginated ? this._renderPagination() : null}`;
277
352
  }
353
+ _renderCard(row) {
354
+ return html `<div class="table_entity">
355
+ ${this.headers.map(header => html `<div
356
+ class="table_row"
357
+ style=${styleMap({
358
+ backgroundColor: this._cellBackgroundColor(header, row) || undefined,
359
+ })}
360
+ >
361
+ <div class="header">
362
+ <tuix-text
363
+ ?dark=${this.dark}
364
+ size=${TextSize.Body1}
365
+ color=${TextVariant.PRIMARY}
366
+ >${header.name}</tuix-text
367
+ >
368
+ </div>
369
+ <div class="content">
370
+ ${header.isSlot
371
+ ? html `<slot name="${header.slotName}-${row.id}"></slot>`
372
+ : html `<tuix-text
373
+ ?dark=${this.dark}
374
+ size=${TextSize.Body2}
375
+ color=${this._textVariantColor(header, row)}
376
+ >${row[header.dataKey]}</tuix-text
377
+ >`}
378
+ </div>
379
+ </div>`)}
380
+ </div>`;
381
+ }
278
382
  _renderCards() {
279
- const rows = this.data;
280
383
  return html `<div class="mobile_table">
281
384
  ${this.isLoadingData
282
385
  ? this._renderSpinner()
283
- : rows.map(row => html `<div
284
- style="border-bottom: 2px solid ${Palette.MAIN};"
285
- class="table_entity"
286
- >
287
- ${this.headers.map(header => html `<div
288
- class="table_row"
289
- style="border-bottom:1px solid ${Palette.NEUTRAL_200};"
290
- >
291
- <div
292
- class="header"
293
- style="background-color:${Palette.SECTION_BG};"
294
- >
295
- <tuix-text
296
- size=${TextSize.Body1}
297
- color=${TextVariant.PRIMARY}
298
- >${header.name}</tuix-text
299
- >
300
- </div>
301
- <div class="content">
302
- ${header.isSlot
303
- ? html `<slot
304
- name="${header.slotName}-${row.id}"
305
- ></slot>`
306
- : html `<tuix-text size=${TextSize.Body1}
307
- >${row[header.dataKey]}</tuix-text
308
- >`}
309
- </div>
310
- </div>`)}
311
- </div>`)}
386
+ : this.data.map(row => this._renderCard(row))}
312
387
  </div>
313
388
  ${this.paginated ? this._renderPagination() : null}`;
314
389
  }
@@ -321,6 +396,9 @@ let TuixTable = class TuixTable extends LitElement {
321
396
  : html `${this._renderTable()}`;
322
397
  }
323
398
  };
399
+ __decorate([
400
+ property({ type: Boolean, reflect: true })
401
+ ], TuixTable.prototype, "dark", void 0);
324
402
  __decorate([
325
403
  property({ type: Boolean })
326
404
  ], TuixTable.prototype, "paginated", void 0);
@@ -354,6 +432,12 @@ __decorate([
354
432
  __decorate([
355
433
  property({ type: Boolean })
356
434
  ], TuixTable.prototype, "isLoadingData", void 0);
435
+ __decorate([
436
+ property({ type: String })
437
+ ], TuixTable.prototype, "sortBy", void 0);
438
+ __decorate([
439
+ property({ type: String })
440
+ ], TuixTable.prototype, "sortDirection", void 0);
357
441
  __decorate([
358
442
  state()
359
443
  ], TuixTable.prototype, "_isTabletView", void 0);
@@ -1,2 +1,3 @@
1
+ export declare const tableHostStyles: import("lit").CSSResult;
1
2
  export declare const tableStyles: import("lit").CSSResult;
2
3
  export declare const threeDots: import("lit").CSSResult;