overview-components 1.0.3 → 1.0.5

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 (61) hide show
  1. package/dist/components/lit-data-grid-tanstack.d.ts +25 -11
  2. package/dist/components/lit-data-grid-tanstack.d.ts.map +1 -1
  3. package/dist/components/lit-data-grid-tanstack.js +206 -173
  4. package/dist/components/lit-data-grid-tanstack.js.map +1 -1
  5. package/dist/components/lit-filter-modal.d.ts +82 -0
  6. package/dist/components/lit-filter-modal.d.ts.map +1 -0
  7. package/dist/components/lit-filter-modal.js +495 -0
  8. package/dist/components/lit-filter-modal.js.map +1 -0
  9. package/dist/components/react-wrappers/filter-modal.d.ts +3 -0
  10. package/dist/components/react-wrappers/filter-modal.d.ts.map +1 -0
  11. package/dist/components/react-wrappers/filter-modal.js +9 -0
  12. package/dist/components/react-wrappers/filter-modal.js.map +1 -0
  13. package/dist/index.d.ts +4 -0
  14. package/dist/index.d.ts.map +1 -1
  15. package/dist/index.js +4 -0
  16. package/dist/index.js.map +1 -1
  17. package/dist/shared/filter-inputs.d.ts +9 -3
  18. package/dist/shared/filter-inputs.d.ts.map +1 -1
  19. package/dist/shared/filter-inputs.js +89 -46
  20. package/dist/shared/filter-inputs.js.map +1 -1
  21. package/dist/shared/lit-checkbox.js +1 -1
  22. package/dist/shared/lit-custom-popper.d.ts +7 -1
  23. package/dist/shared/lit-custom-popper.d.ts.map +1 -1
  24. package/dist/shared/lit-custom-popper.js +253 -59
  25. package/dist/shared/lit-custom-popper.js.map +1 -1
  26. package/dist/shared/lit-data-grid-row-actions.d.ts.map +1 -1
  27. package/dist/shared/lit-data-grid-row-actions.js +27 -23
  28. package/dist/shared/lit-data-grid-row-actions.js.map +1 -1
  29. package/dist/shared/lit-date-picker.d.ts +5 -1
  30. package/dist/shared/lit-date-picker.d.ts.map +1 -1
  31. package/dist/shared/lit-date-picker.js +26 -4
  32. package/dist/shared/lit-date-picker.js.map +1 -1
  33. package/dist/shared/lit-input.d.ts +25 -0
  34. package/dist/shared/lit-input.d.ts.map +1 -0
  35. package/dist/shared/lit-input.js +137 -0
  36. package/dist/shared/lit-input.js.map +1 -0
  37. package/dist/shared/lit-menu-item.js +1 -1
  38. package/dist/shared/lit-menu-item.js.map +1 -1
  39. package/dist/shared/lit-modal.d.ts +29 -0
  40. package/dist/shared/lit-modal.d.ts.map +1 -0
  41. package/dist/shared/lit-modal.js +154 -0
  42. package/dist/shared/lit-modal.js.map +1 -0
  43. package/dist/shared/lit-select.d.ts +7 -4
  44. package/dist/shared/lit-select.d.ts.map +1 -1
  45. package/dist/shared/lit-select.js +108 -37
  46. package/dist/shared/lit-select.js.map +1 -1
  47. package/dist/shared/simple-popper.d.ts.map +1 -1
  48. package/dist/shared/simple-popper.js +2 -1
  49. package/dist/shared/simple-popper.js.map +1 -1
  50. package/dist/shared/simple-tooltip.d.ts.map +1 -1
  51. package/dist/shared/simple-tooltip.js +2 -1
  52. package/dist/shared/simple-tooltip.js.map +1 -1
  53. package/dist/utils/custom-filters.d.ts +2 -1
  54. package/dist/utils/custom-filters.d.ts.map +1 -1
  55. package/dist/utils/custom-filters.js +61 -6
  56. package/dist/utils/custom-filters.js.map +1 -1
  57. package/dist/utils/date.d.ts +1 -1
  58. package/dist/utils/date.d.ts.map +1 -1
  59. package/dist/utils/date.js +4 -1
  60. package/dist/utils/date.js.map +1 -1
  61. package/package.json +1 -1
@@ -5,6 +5,7 @@ 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 { css, html, LitElement } from 'lit';
8
+ import _ from 'lodash';
8
9
  import { msg } from '@lit/localize';
9
10
  import { customElement, property, state } from 'lit/decorators.js';
10
11
  import { unsafeHTML } from 'lit/directives/unsafe-html.js';
@@ -31,7 +32,7 @@ import '../shared/lit-checkbox.js';
31
32
  import '../shared/lit-overflow-tooltip.js';
32
33
  // utils
33
34
  import { formatDate } from '../utils/date.js';
34
- import { dateFilterFn, multiselectFilterFn } from '../utils/custom-filters.js';
35
+ import { dateFilterFn, multiselectFilterFn, dateRangeFilterFn } from '../utils/custom-filters.js';
35
36
  import { setLocale, getLocale } from '../utils/localization.js';
36
37
  let LitDataGridTanstack = class LitDataGridTanstack extends LitElement {
37
38
  constructor() {
@@ -54,29 +55,30 @@ let LitDataGridTanstack = class LitDataGridTanstack extends LitElement {
54
55
  this.dateFormat = null;
55
56
  this.isLoading = false;
56
57
  this.onColumnResize = () => { };
57
- this.onColumnFiltersChanged = (filterModel) => { };
58
+ this.onColumnFiltersChanged = (table, filterModel) => { };
58
59
  this.onColumnSortChanged = (table, sortModel) => { };
59
60
  this.onRowSelectionChanged = (table, selectedRows) => { };
60
- this.enableRowSelectionOnClick = false;
61
+ this.enableRowSelection = false;
61
62
  this.initialFiltering = [];
62
63
  this.server = false;
63
64
  this.scrollEndThreshold = 100;
64
65
  this.rowDensity = 'standard';
65
- this.checkboxSelection = false;
66
+ this.enableMultiRowSelection = false;
67
+ this.minFilterCharacters = 3;
68
+ this.localizeDate = true;
69
+ this.rowsSelected = {};
66
70
  this.rowsCount = 0;
67
- this.selectedRowId = null;
68
71
  this.isScrollable = false;
69
72
  this.disableScrollLeft = true;
70
73
  this.disableScrollRight = false;
71
74
  this.filters = [];
72
75
  this.sorting = [];
73
76
  this.rowHeight = 31;
74
- this._rowSelection = {};
75
- this._columnSizing = {};
76
77
  this.scrollToEnd = false;
77
78
  this.tableContainerRef = createRef();
78
79
  this.scrollInterval = null;
79
80
  this.currentScrollTop = 0;
81
+ this.lastSelectedIndex = null;
80
82
  this.getCellBackgroundColor = (cell) => {
81
83
  if (cell.getIsGrouped()) {
82
84
  return this.columnGroupedColor ?? `var(--color-primary-light, #f0fadf)`;
@@ -147,9 +149,6 @@ let LitDataGridTanstack = class LitDataGridTanstack extends LitElement {
147
149
  this.initTable();
148
150
  this.requestUpdate();
149
151
  }
150
- if (changedProperties.has('columnSizing')) {
151
- this._columnSizing = this.columnSizing;
152
- }
153
152
  }
154
153
  firstUpdated() {
155
154
  const grid = this.tableContainerRef.value;
@@ -253,56 +252,26 @@ let LitDataGridTanstack = class LitDataGridTanstack extends LitElement {
253
252
  }
254
253
  // scroll by keyboard arrows
255
254
  handleKeyDown(event) {
256
- // if (event.key === 'Tab') {
257
- // // Získajte aktuálne fokusovaný element v shadow DOM
258
- // const active = this.shadowRoot?.activeElement;
259
- // // Ak nie je focusovaný element v rámci filter-inputs
260
- // if (!active || !active.closest('filter-inputs')) {
261
- // const grid = this.shadowRoot?.querySelector('.grid') as HTMLElement;
262
- // // Ak grid nie je úplne scrollnutý na začiatok, najprv scrollnite na začiatok
263
- // if (grid && grid.scrollLeft !== 0) {
264
- // grid.scrollLeft = 0;
265
- // // Po krátkej oneskorení, kým sa scroll dokončí, zvoľte prvý filter
266
- // setTimeout(() => {
267
- // const firstFilter = this.shadowRoot?.querySelector('filter-inputs');
268
- // if (firstFilter) {
269
- // event.preventDefault();
270
- // (firstFilter as HTMLElement).focus();
271
- // }
272
- // }, 0);
273
- // } else {
274
- // const firstFilter = this.shadowRoot?.querySelector('filter-inputs');
275
- // if (firstFilter) {
276
- // event.preventDefault();
277
- // (firstFilter as HTMLElement).focus();
278
- // }
279
- // }
280
- // }
281
- // }
282
- if (!this.enableRowSelectionOnClick)
255
+ if (_.isEmpty(this.rowsSelected) && this.enableMultiRowSelection)
283
256
  return;
284
257
  const rows = this.table.getRowModel().rows;
285
- const currentIndex = rows.findIndex((row) => row.id === this.selectedRowId);
258
+ const selectedRowId = Object.keys(this.rowsSelected).find((key) => this.rowsSelected[key]);
259
+ const currentIndex = selectedRowId
260
+ ? this.table.getSelectedRowModel().rowsById[selectedRowId].index
261
+ : {};
286
262
  if (event.key === 'ArrowDown') {
287
- if (!this.selectedRowId) {
288
- // this.selectedRowId = rows[0]?.id; // Select first row if none selected
289
- return;
290
- }
291
263
  const nextIndex = Math.min(currentIndex + 1, (rows.length ?? 0) - 1);
292
- this.selectedRowId = rows[nextIndex].id;
264
+ this.rowsSelected = { [rows[nextIndex].id]: true };
265
+ this.lastSelectedIndex = nextIndex;
293
266
  }
294
267
  else if (event.key === 'ArrowUp') {
295
- if (!this.selectedRowId) {
296
- // this.selectedRowId = rows[0]?.id; // Select first row if none selected
297
- return;
298
- }
299
268
  const prevIndex = Math.max(currentIndex - 1, 0);
300
- this.selectedRowId = rows[prevIndex].id;
269
+ this.rowsSelected = { [rows[prevIndex].id]: true };
270
+ this.lastSelectedIndex = prevIndex;
301
271
  }
302
- else if (event.key === 'Enter' && this.selectedRowId) {
303
- const selectedRow = rows.find((row) => row.id === this.selectedRowId);
304
- if (selectedRow) {
305
- this.handleRowDoubleClick(selectedRow);
272
+ else if (event.key === 'Enter' && this.rowsSelected) {
273
+ if (selectedRowId) {
274
+ this.handleRowDoubleClick(this.table.getSelectedRowModel().rowsById[selectedRowId].original);
306
275
  }
307
276
  }
308
277
  }
@@ -328,19 +297,33 @@ let LitDataGridTanstack = class LitDataGridTanstack extends LitElement {
328
297
  overscan: 5,
329
298
  });
330
299
  }
331
- handleRowClick(row) {
332
- if (this.onRowClick && !this.checkboxSelection) {
300
+ handleRowClick(event, row) {
301
+ const isShiftPressed = event.shiftKey;
302
+ if (this.onRowClick) {
333
303
  this.onRowClick(this.table, row);
334
304
  }
335
- if (this.enableRowSelectionOnClick && !this.checkboxSelection) {
336
- this.selectedRowId = row.id;
305
+ if (this.enableRowSelection && !this.enableMultiRowSelection) {
306
+ this.rowsSelected = { [row.id]: true };
337
307
  }
338
- if (this.checkboxSelection) {
339
- row.toggleSelected();
308
+ if (this.enableMultiRowSelection && this.enableRowSelection) {
309
+ if (isShiftPressed && this.lastSelectedIndex !== null) {
310
+ const selectedRows = this.table
311
+ .getRowModel()
312
+ .rows.slice(Math.min(this.lastSelectedIndex, row.index), Math.max(this.lastSelectedIndex, row.index) + 1);
313
+ const selectedRowsIds = selectedRows.map((r) => r.id);
314
+ this.rowsSelected = {
315
+ ...this.rowsSelected,
316
+ ...selectedRowsIds.reduce((acc, id) => ({ ...acc, [id]: true }), {}),
317
+ };
318
+ }
319
+ else {
320
+ row.toggleSelected();
321
+ this.lastSelectedIndex = row.index;
322
+ }
340
323
  }
341
324
  }
342
325
  handleRowDoubleClick(row) {
343
- if (this.onRowDoubleClick && !this.checkboxSelection) {
326
+ if (this.onRowDoubleClick) {
344
327
  this.onRowDoubleClick(this.table, row);
345
328
  }
346
329
  }
@@ -349,31 +332,25 @@ let LitDataGridTanstack = class LitDataGridTanstack extends LitElement {
349
332
  return {
350
333
  id: column.field,
351
334
  accessorKey: column.field,
352
- accessorFn: column.accessorFn ?? ((originalRow) => originalRow[column.field]),
335
+ accessorFn: (originalRow) => (column.type === 'date' ||
336
+ column.type === 'dateTime' ||
337
+ column.type === 'dateTimeRange' ||
338
+ column.type === 'dateRange') &&
339
+ this.localizeDate
340
+ ? column.accessorFn
341
+ ? formatDate(column.accessorFn(originalRow), this.userLang || 'cs', column.type === 'date' || column.type === 'dateRange'
342
+ ? undefined
343
+ : true, this.dateFormat)
344
+ : formatDate(originalRow[column.field], this.userLang || 'cs', column.type === 'date' || column.type === 'dateRange'
345
+ ? undefined
346
+ : true, this.dateFormat)
347
+ : column.accessorFn
348
+ ? column.accessorFn(originalRow)
349
+ : originalRow[column.field],
353
350
  type: column.type,
354
351
  header: column.headerName,
355
352
  cell: (props) => {
356
353
  const value = props.getValue();
357
- const isGrouped = props.row.getIsGrouped?.();
358
- const isAggregated = props.row.getIsAggregated?.();
359
- if (isGrouped) {
360
- if (column.type === 'date' && !this.server) {
361
- return formatDate(value, this.userLang || 'cs', undefined, this.dateFormat);
362
- }
363
- if (column.type === 'dateTime' && !this.server) {
364
- return formatDate(value, this.userLang || 'cs', true, this.dateFormat);
365
- }
366
- return value;
367
- }
368
- if (isAggregated) {
369
- return value;
370
- }
371
- if (column.type === 'date' && value && !this.server) {
372
- return formatDate(value, this.userLang || 'cs', undefined, this.dateFormat);
373
- }
374
- if (column.type === 'dateTime' && value && !this.server) {
375
- return formatDate(value, this.userLang || 'cs', true, this.dateFormat);
376
- }
377
354
  if (column.type === 'actions') {
378
355
  return html `
379
356
  <lit-data-grid-row-actions
@@ -385,7 +362,7 @@ let LitDataGridTanstack = class LitDataGridTanstack extends LitElement {
385
362
  },
386
363
  filterFn: (() => {
387
364
  switch (column.type) {
388
- case 'range':
365
+ case 'numberRange':
389
366
  return filterFns.inNumberRange;
390
367
  case 'select':
391
368
  return filterFns.weakEquals;
@@ -393,6 +370,9 @@ let LitDataGridTanstack = class LitDataGridTanstack extends LitElement {
393
370
  return multiselectFilterFn;
394
371
  case 'number':
395
372
  return filterFns.weakEquals;
373
+ case 'dateRange':
374
+ case 'dateTimeRange':
375
+ return dateRangeFilterFn;
396
376
  case 'date':
397
377
  case 'dateTime':
398
378
  return dateFilterFn;
@@ -401,12 +381,14 @@ let LitDataGridTanstack = class LitDataGridTanstack extends LitElement {
401
381
  return filterFns.includesString;
402
382
  }
403
383
  })(),
384
+ enableSorting: column.enableSorting ?? true,
404
385
  enableColumnFilter: this.enableFiltering && (column.enableFilter ?? true),
405
386
  size: column.size || this.columnDefaultSize || undefined,
406
387
  maxSize: column.maxSize || this.columnDefaultMaxSize || 500,
407
388
  minSize: column.minSize || this.columnDefaultMinSize || 100,
408
389
  meta: {
409
390
  filterVariant: column.type ?? 'string',
391
+ valueOptions: column.valueOptions,
410
392
  },
411
393
  aggregationFn: column.columnAggregation ?? undefined,
412
394
  enableGrouping: column.enableGrouping ?? true,
@@ -464,7 +446,7 @@ let LitDataGridTanstack = class LitDataGridTanstack extends LitElement {
464
446
  }
465
447
  return ''; // Ostatné stĺpce v skupinovom riadku prázdne
466
448
  }
467
- const value = accessor ? row.original?.[accessor] || '' : ''; // Získanie hodnoty pre normálny riadok
449
+ const value = row.getValue?.(accessor) || ''; // Získanie hodnoty pre normálny riadok
468
450
  return typeof value === 'string'
469
451
  ? `"${value.replace(/"/g, '""')}"` // Ošetrenie dvojitých úvodzoviek
470
452
  : value;
@@ -512,8 +494,7 @@ let LitDataGridTanstack = class LitDataGridTanstack extends LitElement {
512
494
  }
513
495
  else if (accessor) {
514
496
  // Normálny riadok
515
- formattedRow[columnName] =
516
- row.original?.[accessor] || row.getValue?.(accessor) || '';
497
+ formattedRow[columnName] = row.getValue?.(accessor) || '';
517
498
  }
518
499
  });
519
500
  return formattedRow;
@@ -582,7 +563,7 @@ let LitDataGridTanstack = class LitDataGridTanstack extends LitElement {
582
563
  }
583
564
  }
584
565
  render() {
585
- const checkboxColumn = this.checkboxSelection
566
+ const checkboxColumn = this.enableMultiRowSelection
586
567
  ? [
587
568
  {
588
569
  id: 'checkbox',
@@ -602,13 +583,15 @@ let LitDataGridTanstack = class LitDataGridTanstack extends LitElement {
602
583
  </div>
603
584
  `,
604
585
  cell: ({ row }) => html `
605
- <lit-checkbox
606
- type="checkbox"
607
- .onChange="${row.getToggleSelectedHandler()}"
608
- .checked="${row.getIsSelected()}"
609
- ?disabled="${!row.getCanSelect()}"
610
- .indeterminate="${row.getIsSomeSelected()}"
611
- ></lit-checkbox>
586
+ <div style="padding: 0.1875rem 0px 0px 0px">
587
+ <lit-checkbox
588
+ type="checkbox"
589
+ .onChange="${row.getToggleSelectedHandler()}"
590
+ .checked="${row.getIsSelected()}"
591
+ ?disabled="${!row.getCanSelect()}"
592
+ .indeterminate="${row.getIsSomeSelected()}"
593
+ ></lit-checkbox>
594
+ </div>
612
595
  `,
613
596
  },
614
597
  ]
@@ -639,20 +622,22 @@ let LitDataGridTanstack = class LitDataGridTanstack extends LitElement {
639
622
  state: {
640
623
  columnFilters: this.filters,
641
624
  sorting: this.sorting,
642
- rowSelection: this._rowSelection,
643
- columnSizing: this._columnSizing,
625
+ rowSelection: this.rowsSelected,
626
+ columnSizing: this.columnSizing,
644
627
  },
645
628
  filterFns: {
629
+ dateRangeFilterFn: dateRangeFilterFn,
646
630
  dateFilterFn: dateFilterFn,
647
631
  multiselectFilterFn: multiselectFilterFn,
648
632
  },
649
633
  // debugTable: true,
650
- enableRowSelection: this.checkboxSelection,
634
+ enableRowSelection: this.enableRowSelection,
635
+ enableMultiRowSelection: this.enableMultiRowSelection,
651
636
  enableColumnPinning: this.enableColumnPinning,
652
637
  enableGrouping: this.enableGrouping,
653
638
  manualFiltering: this.server,
654
639
  manualSorting: this.server,
655
- getRowId: (row, index) => index.toString(),
640
+ getRowId: (row, index) => this.getRowId ? this.getRowId(row, index) : index.toString(),
656
641
  // groupedColumnMode: 'reorder',
657
642
  getCoreRowModel: getCoreRowModel(),
658
643
  getSortedRowModel: getSortedRowModel(),
@@ -690,10 +675,12 @@ let LitDataGridTanstack = class LitDataGridTanstack extends LitElement {
690
675
  }
691
676
  },
692
677
  onRowSelectionChange: (updaterOrValue) => {
693
- const rowSelection = typeof updaterOrValue === 'function'
694
- ? updaterOrValue(this._rowSelection)
695
- : updaterOrValue;
696
- this._rowSelection = rowSelection;
678
+ const rowSelection = this.enableRowSelection && this.enableMultiRowSelection
679
+ ? typeof updaterOrValue === 'function'
680
+ ? updaterOrValue(this.rowsSelected)
681
+ : updaterOrValue
682
+ : this.rowsSelected;
683
+ this.rowsSelected = rowSelection;
697
684
  if (this.onRowSelectionChanged) {
698
685
  this.onRowSelectionChanged(this.table, rowSelection);
699
686
  }
@@ -702,7 +689,7 @@ let LitDataGridTanstack = class LitDataGridTanstack extends LitElement {
702
689
  const columnSizingState = typeof updaterOrValue === 'function'
703
690
  ? updaterOrValue(this.table.getState().columnSizing)
704
691
  : updaterOrValue;
705
- this._columnSizing = columnSizingState;
692
+ this.columnSizing = columnSizingState;
706
693
  if (this.onColumnResize) {
707
694
  this.onColumnResize(this.table, columnSizingState);
708
695
  }
@@ -832,9 +819,7 @@ let LitDataGridTanstack = class LitDataGridTanstack extends LitElement {
832
819
  0)}px)`
833
820
  : ''}"
834
821
  >
835
- <div
836
- style="display: flex; align-items: center; height: 100%;"
837
- >
822
+ <div class="header">
838
823
  <div
839
824
  class="column-header"
840
825
  @click=${header.column.getToggleSortingHandler()}
@@ -855,24 +840,36 @@ let LitDataGridTanstack = class LitDataGridTanstack extends LitElement {
855
840
  <div
856
841
  class="icons-group-pin"
857
842
  >
858
- ${header.column.getIsSorted()
859
- ? header.column.getIsSorted() ===
860
- 'asc'
861
- ? html `<slot
862
- name="iconSortUp"
863
- ><lit-icon
864
- size="0.75rem"
865
- icon="chevronUpFilled"
866
- ></lit-icon
867
- ></slot>`
868
- : html `<slothea
869
- name="iconSortDown"
843
+ ${header.column.getCanSort()
844
+ ? header.column.getIsSorted()
845
+ ? header.column.getIsSorted() ===
846
+ 'asc'
847
+ ? html `<slot
848
+ name="iconSortUp"
849
+ ><lit-icon
850
+ @click=${header.column.getToggleSortingHandler()}
851
+ size="0.75rem"
852
+ icon="chevronUpFilled"
853
+ ></lit-icon
854
+ ></slot>`
855
+ : html `<slot
856
+ name="iconSortDown"
857
+ >
858
+ <lit-icon
859
+ @click=${header.column.getToggleSortingHandler()}
860
+ size="0.75rem"
861
+ icon="chevronDownFilled"
862
+ ></lit-icon>
863
+ </slot>`
864
+ : html `<div
865
+ class="sortFilled"
870
866
  >
871
867
  <lit-icon
868
+ @click=${header.column.getToggleSortingHandler()}
872
869
  size="0.75rem"
873
- icon="chevronDownFilled"
870
+ icon="sortFilled"
874
871
  ></lit-icon>
875
- </slothea>`
872
+ </div>`
876
873
  : html `<div></div>`}
877
874
  <div class="flex">
878
875
  ${!this
@@ -933,6 +930,8 @@ let LitDataGridTanstack = class LitDataGridTanstack extends LitElement {
933
930
  ? html `
934
931
  <div>
935
932
  <filter-inputs
933
+ .minFilterCharacters=${this
934
+ .minFilterCharacters}
936
935
  .column=${header.column}
937
936
  .dateFormat=${this
938
937
  .dateFormat}
@@ -940,6 +939,8 @@ let LitDataGridTanstack = class LitDataGridTanstack extends LitElement {
940
939
  .userLang}
941
940
  @filter-tab=${this
942
941
  .handleFilterTabNavigation}
942
+ .server=${this
943
+ .server}
943
944
  ></filter-inputs>
944
945
  </div>
945
946
  `
@@ -1013,13 +1014,14 @@ let LitDataGridTanstack = class LitDataGridTanstack extends LitElement {
1013
1014
  return row
1014
1015
  ? html `
1015
1016
  <tr
1016
- class="${this.selectedRowId === row.id ||
1017
- this._rowSelection[row.id]
1017
+ class="${this.rowsSelected[row.id]
1018
1018
  ? 'selected body'
1019
1019
  : 'body'}"
1020
1020
  data-index="${item.index}"
1021
- @click="${() => this.handleRowClick(row)}"
1022
- @dblclick="${() => this.handleRowDoubleClick(row)}"
1021
+ @click="${row.getIsGrouped()
1022
+ ? row.getToggleExpandedHandler()
1023
+ : (e) => this.handleRowClick(e, row)}"
1024
+ @dblclick="${() => this.handleRowDoubleClick(row.original)}"
1023
1025
  style="${styleMap(rowStyle)}"
1024
1026
  ${ref((node) => {
1025
1027
  if (node &&
@@ -1057,40 +1059,33 @@ let LitDataGridTanstack = class LitDataGridTanstack extends LitElement {
1057
1059
  return html `
1058
1060
  <td style="${styleMap(style)}">
1059
1061
  ${cell.getIsGrouped()
1060
- ? html `
1061
- <lit-button
1062
- @click="${row.getToggleExpandedHandler()}"
1063
- variant="inherit"
1064
- size="${buttonSize}"
1065
- count="${row
1066
- .subRows
1067
- .length}"
1068
- label="${flexRender(cell
1069
- .column
1070
- .columnDef
1071
- .cell, cell.getContext())}"
1062
+ ? html `<div
1063
+ class="grouped-column"
1064
+ >
1065
+ <lit-icon
1066
+ class="grouped-column--icon-button"
1067
+ size="1.25rem"
1072
1068
  icon="${row.getIsExpanded()
1073
1069
  ? 'chevronDownFilled'
1074
1070
  : 'chevron'}"
1071
+ ></lit-icon>
1072
+ <div
1073
+ class="grouped-column--label"
1075
1074
  >
1076
- <!-- ${row.getIsExpanded()
1077
- ? html `<slot
1078
- name="groupedIcon-expanded"
1079
- slot="start-icon"
1080
- ></slot>`
1081
- : html `<slot
1082
- name="groupedIcon"
1083
- slot="start-icon"
1084
- ></slot>`} -->
1085
- }
1086
- ${row.subRows
1087
- .length}
1088
- ${flexRender(cell
1089
- .column
1090
- .columnDef
1091
- .cell, cell.getContext())}
1092
- </lit-button>
1093
- `
1075
+ <lit-overflow-tooltip
1076
+ label=${cell.getValue()}
1077
+ >
1078
+ ${cell.getValue()}
1079
+ </lit-overflow-tooltip>
1080
+ </div>
1081
+ <lit-pill
1082
+ class="grouped-column--pill"
1083
+ style="margin-left: 0.5rem"
1084
+ count="${row
1085
+ .subRows
1086
+ .length}"
1087
+ ></lit-pill>
1088
+ </div> `
1094
1089
  : cell.getIsAggregated()
1095
1090
  ? html `
1096
1091
  <div
@@ -1110,10 +1105,7 @@ let LitDataGridTanstack = class LitDataGridTanstack extends LitElement {
1110
1105
  ? null
1111
1106
  : html `<lit-overflow-tooltip
1112
1107
  placement="right"
1113
- label=${flexRender(cell
1114
- .column
1115
- .columnDef
1116
- .cell, cell.getContext())}
1108
+ label=${cell.getValue()}
1117
1109
  >${flexRender(cell
1118
1110
  .column
1119
1111
  .columnDef
@@ -1143,13 +1135,15 @@ let LitDataGridTanstack = class LitDataGridTanstack extends LitElement {
1143
1135
  ${this.server
1144
1136
  ? this.totalNumberRows
1145
1137
  ? this.totalNumberRows
1146
- : html ` ?<lit-icon-button
1147
- icon="reload"
1148
- size="small"
1149
- variant="text"
1150
- @click="${() => this.handleGetTotalNumber()}"
1151
- ></lit-icon-button>`
1138
+ : '?'
1152
1139
  : this.table.getRowModel().rows.length}
1140
+ ${this.server &&
1141
+ html `<lit-icon-button
1142
+ icon="reload"
1143
+ size="small"
1144
+ variant="text"
1145
+ @click="${() => this.handleGetTotalNumber()}"
1146
+ ></lit-icon-button>`}
1153
1147
  </div>
1154
1148
  <div class="right-actions">
1155
1149
  <lit-data-grid-density-popover
@@ -1288,6 +1282,8 @@ LitDataGridTanstack.styles = [
1288
1282
  font-weight: 500;
1289
1283
  font-size: 12px;
1290
1284
  color: var(--text-primary, #111827);
1285
+ display: flex;
1286
+ align-items: center;
1291
1287
  }
1292
1288
 
1293
1289
  .column-header {
@@ -1411,6 +1407,40 @@ LitDataGridTanstack.styles = [
1411
1407
  .selected {
1412
1408
  background-color: var(--color-primary-light, #f0fadf);
1413
1409
  }
1410
+
1411
+ .sortFilled {
1412
+ visibility: hidden;
1413
+ }
1414
+ .header {
1415
+ display: flex;
1416
+ align-items: center;
1417
+ height: 100%;
1418
+ }
1419
+ .header:hover .sortFilled {
1420
+ visibility: visible;
1421
+ }
1422
+ .grouped-column {
1423
+ display: flex;
1424
+ align-items: center;
1425
+ justify-content: space-between;
1426
+ width: 100%;
1427
+ gap: 0.25rem;
1428
+ }
1429
+ .grouped-column--icon-button {
1430
+ display: flex;
1431
+ align-items: center;
1432
+ position: relative;
1433
+ top: -1.5px;
1434
+ }
1435
+ .grouped-column--label {
1436
+ display: flex;
1437
+ align-items: center;
1438
+ overflow: hidden;
1439
+ flex-grow: 1;
1440
+ }
1441
+ .grouped-column--pill {
1442
+ margin-left: 0.5rem;
1443
+ }
1414
1444
  `,
1415
1445
  ];
1416
1446
  __decorate([
@@ -1520,7 +1550,7 @@ __decorate([
1520
1550
  ], LitDataGridTanstack.prototype, "exportCsvFn", void 0);
1521
1551
  __decorate([
1522
1552
  property({ type: Boolean })
1523
- ], LitDataGridTanstack.prototype, "enableRowSelectionOnClick", void 0);
1553
+ ], LitDataGridTanstack.prototype, "enableRowSelection", void 0);
1524
1554
  __decorate([
1525
1555
  property({ type: Array })
1526
1556
  ], LitDataGridTanstack.prototype, "initialFiltering", void 0);
@@ -1535,7 +1565,7 @@ __decorate([
1535
1565
  ], LitDataGridTanstack.prototype, "rowDensity", void 0);
1536
1566
  __decorate([
1537
1567
  property({ type: Boolean })
1538
- ], LitDataGridTanstack.prototype, "checkboxSelection", void 0);
1568
+ ], LitDataGridTanstack.prototype, "enableMultiRowSelection", void 0);
1539
1569
  __decorate([
1540
1570
  property({ type: Function })
1541
1571
  ], LitDataGridTanstack.prototype, "getTotalNumberFn", void 0);
@@ -1543,11 +1573,20 @@ __decorate([
1543
1573
  property({ type: Number })
1544
1574
  ], LitDataGridTanstack.prototype, "totalNumberRows", void 0);
1545
1575
  __decorate([
1546
- state()
1547
- ], LitDataGridTanstack.prototype, "rowsCount", void 0);
1576
+ property({ type: Number })
1577
+ ], LitDataGridTanstack.prototype, "minFilterCharacters", void 0);
1578
+ __decorate([
1579
+ property({ type: Boolean })
1580
+ ], LitDataGridTanstack.prototype, "localizeDate", void 0);
1581
+ __decorate([
1582
+ property({ type: Boolean })
1583
+ ], LitDataGridTanstack.prototype, "rowsSelected", void 0);
1584
+ __decorate([
1585
+ property({ type: Function })
1586
+ ], LitDataGridTanstack.prototype, "getRowId", void 0);
1548
1587
  __decorate([
1549
1588
  state()
1550
- ], LitDataGridTanstack.prototype, "selectedRowId", void 0);
1589
+ ], LitDataGridTanstack.prototype, "rowsCount", void 0);
1551
1590
  __decorate([
1552
1591
  state()
1553
1592
  ], LitDataGridTanstack.prototype, "isScrollable", void 0);
@@ -1569,12 +1608,6 @@ __decorate([
1569
1608
  __decorate([
1570
1609
  state()
1571
1610
  ], LitDataGridTanstack.prototype, "rowHeight", void 0);
1572
- __decorate([
1573
- state()
1574
- ], LitDataGridTanstack.prototype, "_rowSelection", void 0);
1575
- __decorate([
1576
- state()
1577
- ], LitDataGridTanstack.prototype, "_columnSizing", void 0);
1578
1611
  LitDataGridTanstack = __decorate([
1579
1612
  customElement('lit-data-grid-tanstack')
1580
1613
  ], LitDataGridTanstack);