overview-components 0.1.4 → 0.1.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. package/dist/assets/generated/locales/de.d.ts +8 -0
  2. package/dist/assets/generated/locales/de.d.ts.map +1 -1
  3. package/dist/assets/generated/locales/de.js +8 -0
  4. package/dist/assets/generated/locales/de.js.map +1 -1
  5. package/dist/assets/generated/locales/en.d.ts +16 -8
  6. package/dist/assets/generated/locales/en.d.ts.map +1 -1
  7. package/dist/assets/generated/locales/en.js +17 -9
  8. package/dist/assets/generated/locales/en.js.map +1 -1
  9. package/dist/assets/generated/locales/pl.d.ts +8 -0
  10. package/dist/assets/generated/locales/pl.d.ts.map +1 -1
  11. package/dist/assets/generated/locales/pl.js +8 -0
  12. package/dist/assets/generated/locales/pl.js.map +1 -1
  13. package/dist/assets/generated/locales/sk.d.ts +8 -0
  14. package/dist/assets/generated/locales/sk.d.ts.map +1 -1
  15. package/dist/assets/generated/locales/sk.js +8 -0
  16. package/dist/assets/generated/locales/sk.js.map +1 -1
  17. package/dist/components/lit-attachments-tab.d.ts +11 -10
  18. package/dist/components/lit-attachments-tab.d.ts.map +1 -1
  19. package/dist/components/lit-attachments-tab.js +295 -259
  20. package/dist/components/lit-attachments-tab.js.map +1 -1
  21. package/dist/components/lit-chart.d.ts +25 -0
  22. package/dist/components/lit-chart.d.ts.map +1 -0
  23. package/dist/components/lit-chart.js +161 -0
  24. package/dist/components/lit-chart.js.map +1 -0
  25. package/dist/components/lit-data-grid-tanstack.d.ts +39 -3
  26. package/dist/components/lit-data-grid-tanstack.d.ts.map +1 -1
  27. package/dist/components/lit-data-grid-tanstack.js +739 -547
  28. package/dist/components/lit-data-grid-tanstack.js.map +1 -1
  29. package/dist/components/lit-tabs-overview.d.ts.map +1 -1
  30. package/dist/components/lit-tabs-overview.js +77 -62
  31. package/dist/components/lit-tabs-overview.js.map +1 -1
  32. package/dist/components/react-wrappers/chart.d.ts +3 -0
  33. package/dist/components/react-wrappers/chart.d.ts.map +1 -0
  34. package/dist/components/react-wrappers/chart.js +9 -0
  35. package/dist/components/react-wrappers/chart.js.map +1 -0
  36. package/dist/scripts/translate-locales.js +1 -0
  37. package/dist/scripts/translate-locales.js.map +1 -1
  38. package/dist/shared/filter-inputs.d.ts +1 -0
  39. package/dist/shared/filter-inputs.d.ts.map +1 -1
  40. package/dist/shared/filter-inputs.js +29 -0
  41. package/dist/shared/filter-inputs.js.map +1 -1
  42. package/dist/shared/lit-button.js +2 -2
  43. package/dist/shared/lit-data-grid-density-popover.d.ts +17 -0
  44. package/dist/shared/lit-data-grid-density-popover.d.ts.map +1 -0
  45. package/dist/shared/lit-data-grid-density-popover.js +97 -0
  46. package/dist/shared/lit-data-grid-density-popover.js.map +1 -0
  47. package/dist/shared/lit-data-grid-export-popover.d.ts +2 -0
  48. package/dist/shared/lit-data-grid-export-popover.d.ts.map +1 -1
  49. package/dist/shared/lit-data-grid-export-popover.js +35 -46
  50. package/dist/shared/lit-data-grid-export-popover.js.map +1 -1
  51. package/dist/shared/lit-menu-item.d.ts +24 -0
  52. package/dist/shared/lit-menu-item.d.ts.map +1 -0
  53. package/dist/shared/lit-menu-item.js +64 -0
  54. package/dist/shared/lit-menu-item.js.map +1 -0
  55. package/dist/shared/lit-menu.d.ts +6 -0
  56. package/dist/shared/lit-menu.d.ts.map +1 -0
  57. package/dist/shared/lit-menu.js +38 -0
  58. package/dist/shared/lit-menu.js.map +1 -0
  59. package/package.json +2 -1
@@ -24,6 +24,7 @@ import '../shared/lit-data-grid-export-popover.js';
24
24
  import '../shared/lit-data-grid-action-buttons-popover.js';
25
25
  import '../assets/ilustration/not-found.js';
26
26
  import '../shared/lit-overflow-tooltip.js';
27
+ import '../shared/lit-data-grid-density-popover.js';
27
28
  // utils
28
29
  import { formatDate } from '../utils/date.js';
29
30
  import { dateFilterFn } from './custom-filters.js';
@@ -47,11 +48,21 @@ let LitDataGridTanstack = class LitDataGridTanstack extends LitElement {
47
48
  this.userLang = 'cs';
48
49
  this.dateFormat = null;
49
50
  this.isLoading = false;
51
+ this.disableRowSelectionOnClick = false;
52
+ this.initialFiltering = [];
53
+ this.server = false;
54
+ this.onColumnFiltersChanged = (filterModel) => { };
55
+ this.onColumnSortChanged = (sortModel) => { };
56
+ this.rowBufferPx = 100;
57
+ this.rowDensity = 'standard';
50
58
  this.rowsCount = 0;
59
+ this.selectedRowId = null;
51
60
  this.isScrollable = false;
52
61
  this.disableScrollLeft = true;
53
62
  this.disableScrollRight = false;
54
- this.tableController = new TableController(this);
63
+ this.filters = [];
64
+ this.sorting = [];
65
+ this.rowHeight = 31;
55
66
  this.tableContainerRef = createRef();
56
67
  this.scrollInterval = null;
57
68
  this.getCellBackgroundColor = (cell) => {
@@ -79,24 +90,123 @@ let LitDataGridTanstack = class LitDataGridTanstack extends LitElement {
79
90
  }
80
91
  };
81
92
  }
93
+ get rows() {
94
+ return [...(this.row || [])];
95
+ }
96
+ // lifecycle
82
97
  connectedCallback() {
98
+ super.connectedCallback();
83
99
  this.initRowVirtualizer();
84
100
  this.initColumnVirtualizer();
85
- super.connectedCallback();
101
+ this.initTable();
86
102
  window.addEventListener('resize', this.updateScrollState);
103
+ document.addEventListener('keydown', this.handleKeyDown.bind(this));
87
104
  }
88
105
  disconnectedCallback() {
89
106
  super.disconnectedCallback();
90
107
  window.removeEventListener('resize', this.updateScrollState);
108
+ document.removeEventListener('keydown', this.handleKeyDown.bind(this));
109
+ }
110
+ updated(changedProperties) {
111
+ if ((changedProperties.has('rowsCount') || changedProperties.has('rowDensity')) &&
112
+ this.enableRowVirtualization) {
113
+ this.initRowVirtualizer();
114
+ this.requestUpdate();
115
+ }
116
+ if (changedProperties.has('columns') && this.enableColumnVirtualization) {
117
+ this.initColumnVirtualizer();
118
+ this.requestUpdate();
119
+ }
120
+ if (changedProperties.has('initialFiltering')) {
121
+ this.filters = [...(this.initialFiltering || [])];
122
+ }
123
+ if (changedProperties.has('initialSorting')) {
124
+ this.sorting = [...(this.initialSorting || [])];
125
+ }
126
+ if (changedProperties.has('rowDensity')) {
127
+ this.rowHeight = this.getRowHeight();
128
+ }
129
+ if (changedProperties.has('row') || changedProperties.has('columns')) {
130
+ this.initTable();
131
+ this.requestUpdate();
132
+ }
133
+ }
134
+ firstUpdated() {
135
+ const grid = this.tableContainerRef.value;
136
+ if (grid) {
137
+ grid.addEventListener('scroll', this.updateScrollState);
138
+ }
139
+ this.updateScrollState();
140
+ }
141
+ // row density
142
+ getRowHeight() {
143
+ switch (this.rowDensity) {
144
+ case 'compact':
145
+ return 31;
146
+ case 'standard':
147
+ return 38;
148
+ case 'comfort':
149
+ return 50;
150
+ default:
151
+ return 38;
152
+ }
153
+ }
154
+ getButtonSize() {
155
+ switch (this.rowDensity) {
156
+ case 'compact':
157
+ return 'small';
158
+ case 'standard':
159
+ return 'medium';
160
+ case 'comfort':
161
+ return 'large';
162
+ default:
163
+ return 'medium';
164
+ }
165
+ }
166
+ handleSetDensity(density) {
167
+ this.rowDensity = density;
168
+ }
169
+ // scroll by keyboard arrows
170
+ handleKeyDown(event) {
171
+ if (this.disableRowSelectionOnClick)
172
+ return;
173
+ const rows = this.table.getRowModel().rows;
174
+ const currentIndex = rows.findIndex((row) => row.id === this.selectedRowId);
175
+ if (event.key === 'ArrowDown') {
176
+ if (!this.selectedRowId) {
177
+ this.selectedRowId = rows[0]?.id; // Select first row if none selected
178
+ return;
179
+ }
180
+ const nextIndex = Math.min(currentIndex + 1, (rows.length ?? 0) - 1);
181
+ this.selectedRowId = rows[nextIndex].id;
182
+ }
183
+ else if (event.key === 'ArrowUp') {
184
+ if (!this.selectedRowId) {
185
+ this.selectedRowId = rows[0]?.id; // Select first row if none selected
186
+ return;
187
+ }
188
+ const prevIndex = Math.max(currentIndex - 1, 0);
189
+ this.selectedRowId = rows[prevIndex].id;
190
+ }
191
+ else if (event.key === 'Enter' && this.selectedRowId) {
192
+ const selectedRow = rows.find((row) => row.id === this.selectedRowId);
193
+ if (selectedRow) {
194
+ this.handleRowDoubleClick(selectedRow);
195
+ }
196
+ }
91
197
  }
198
+ // virtualization
92
199
  initRowVirtualizer() {
93
200
  this.rowVirtualizerController = new VirtualizerController(this, {
94
201
  count: this.table?.getRowModel()?.rows.length || this.row?.length || 1,
95
202
  getScrollElement: () => this.tableContainerRef.value,
96
- estimateSize: () => 38,
203
+ estimateSize: () => this.rowHeight,
97
204
  overscan: 5,
98
205
  });
99
206
  }
207
+ initTable() {
208
+ this.tableController = new TableController(this);
209
+ }
100
210
  initColumnVirtualizer() {
101
211
  this.columnVirtualizerController = new VirtualizerController(this, {
102
212
  horizontal: true,
@@ -106,14 +216,17 @@ let LitDataGridTanstack = class LitDataGridTanstack extends LitElement {
106
216
  overscan: 5,
107
217
  });
108
218
  }
109
- updated(changedProperties) {
110
- if (changedProperties.has('rowsCount') && this.enableRowVirtualization) {
111
- this.initRowVirtualizer();
112
- this.requestUpdate();
219
+ handleRowClick(row) {
220
+ if (this.onRowClick) {
221
+ this.onRowClick(row);
113
222
  }
114
- if (changedProperties.has('columns') && this.enableColumnVirtualization) {
115
- this.initColumnVirtualizer();
116
- this.requestUpdate();
223
+ if (this.disableRowSelectionOnClick)
224
+ return;
225
+ this.selectedRowId = row.id;
226
+ }
227
+ handleRowDoubleClick(row) {
228
+ if (this.onRowDoubleClick) {
229
+ this.onRowDoubleClick(row);
117
230
  }
118
231
  }
119
232
  getTanstackColumns(columns) {
@@ -189,6 +302,7 @@ let LitDataGridTanstack = class LitDataGridTanstack extends LitElement {
189
302
  header.column.pin('left'); // Pripnutie doľava
190
303
  }
191
304
  }
305
+ // export to excel and csv
192
306
  exportDataToCsv() {
193
307
  const rows = this.getAllRowsIncludingGrouped(this.table.getRowModel().rows); // Získanie všetkých riadkov vrátane skupín
194
308
  if (!rows || rows.length === 0) {
@@ -292,13 +406,6 @@ let LitDataGridTanstack = class LitDataGridTanstack extends LitElement {
292
406
  });
293
407
  return allRows.filter((row, index, self) => index === self.findIndex((r) => r.id === row.id));
294
408
  }
295
- firstUpdated() {
296
- const grid = this.tableContainerRef.value;
297
- if (grid) {
298
- grid.addEventListener('scroll', this.updateScrollState);
299
- }
300
- this.updateScrollState();
301
- }
302
409
  startScroll(direction) {
303
410
  const grid = this.tableContainerRef.value;
304
411
  if (!grid)
@@ -317,12 +424,21 @@ let LitDataGridTanstack = class LitDataGridTanstack extends LitElement {
317
424
  this.scrollInterval = null;
318
425
  }
319
426
  }
427
+ handleScroll(event) {
428
+ const container = event.target;
429
+ if (container.scrollTop + container.clientHeight >=
430
+ container.scrollHeight - (this.rowBufferPx || 100)) {
431
+ if (this.onRowsScrollEnd) {
432
+ this.onRowsScrollEnd();
433
+ }
434
+ }
435
+ }
320
436
  render() {
321
437
  if (getLocale() !== this.userLang) {
322
438
  setLocale(this.userLang || 'cs');
323
439
  }
324
440
  this.table = this.tableController.table({
325
- data: this.row || [],
441
+ data: this.rows || [],
326
442
  columns: this.getTanstackColumns(this.columns),
327
443
  columnResizeMode: 'onChange',
328
444
  columnResizeDirection: 'ltr',
@@ -332,6 +448,7 @@ let LitDataGridTanstack = class LitDataGridTanstack extends LitElement {
332
448
  maxSize: this.columnDefaultMaxSize || 500, //enforced during column resizing
333
449
  },
334
450
  initialState: {
451
+ // columnFilters: [...(this.initialFiltering || [])],
335
452
  sorting: [...(this.initialSorting || [])],
336
453
  grouping: [...(this.initialGroups || [])],
337
454
  columnVisibility: { ...this.initialColumnVisibility },
@@ -340,11 +457,17 @@ let LitDataGridTanstack = class LitDataGridTanstack extends LitElement {
340
457
  right: [...(this.rightPinnedColumns || [])],
341
458
  },
342
459
  },
460
+ state: {
461
+ columnFilters: this.filters,
462
+ sorting: this.sorting,
463
+ },
343
464
  filterFns: {
344
465
  dateFilterFn: dateFilterFn,
345
466
  },
467
+ debugTable: true,
346
468
  enableColumnPinning: this.enableColumnPinning,
347
469
  enableGrouping: this.enableGrouping,
470
+ manualFiltering: this.server,
348
471
  // groupedColumnMode: 'reorder',
349
472
  getCoreRowModel: getCoreRowModel(),
350
473
  getSortedRowModel: getSortedRowModel(),
@@ -353,7 +476,24 @@ let LitDataGridTanstack = class LitDataGridTanstack extends LitElement {
353
476
  getGroupedRowModel: getGroupedRowModel(),
354
477
  getExpandedRowModel: getExpandedRowModel(),
355
478
  getFacetedUniqueValues: getFacetedUniqueValues(),
356
- // onColumnFiltersChange: () => rowVirtualizer?.measure(),
479
+ onColumnFiltersChange: (updaterOrValue) => {
480
+ const filtersState = typeof updaterOrValue === 'function'
481
+ ? updaterOrValue(this.table.getState().columnFilters)
482
+ : updaterOrValue;
483
+ this.filters = filtersState;
484
+ if (this.onColumnFiltersChanged) {
485
+ this.onColumnFiltersChanged(filtersState);
486
+ }
487
+ },
488
+ onSortingChange: (updaterOrValue) => {
489
+ const sortingState = typeof updaterOrValue === 'function'
490
+ ? updaterOrValue(this.table.getState().sorting)
491
+ : updaterOrValue;
492
+ this.sorting = sortingState;
493
+ if (this.onColumnSortChanged) {
494
+ this.onColumnSortChanged(sortingState);
495
+ }
496
+ },
357
497
  });
358
498
  this.rowsCount = this.table.getRowModel().rows.length;
359
499
  // Ak virtualizácia nie je povolená, použijeme celý zoznam riadkov alebo stĺpcov
@@ -372,9 +512,9 @@ let LitDataGridTanstack = class LitDataGridTanstack extends LitElement {
372
512
  : rows.map((_, index) => ({
373
513
  key: index,
374
514
  index,
375
- start: index * 38,
376
- end: (index + 1) * 38,
377
- size: 38,
515
+ start: index * this.rowHeight,
516
+ end: (index + 1) * this.rowHeight,
517
+ size: this.rowHeight,
378
518
  lane: 0,
379
519
  }));
380
520
  // console.log('rowItems', rowItems);
@@ -388,37 +528,37 @@ let LitDataGridTanstack = class LitDataGridTanstack extends LitElement {
388
528
  (virtualColumns[virtualColumns.length - 1]?.end ?? 0);
389
529
  }
390
530
  let isMobile = window.matchMedia('(max-width: 600px)').matches;
391
- return html `
392
- <div class="data-grid__wrapper">
531
+ return html `
532
+ <div class="data-grid__wrapper">
393
533
  ${this.isScrollable && !isMobile
394
- ? html `
395
- <lit-icon-button
396
- class="scroll-button left"
397
- .disabled="${this.disableScrollLeft}"
398
- @pointerdown="${() => this.startScroll('left')}"
399
- @pointerup="${this.stopScroll}"
400
- @pointerleave="${this.stopScroll}"
401
- size="small"
402
- variant="contained"
403
- icon="arrowLeft"
404
- >
405
- </lit-icon-button>
406
- <lit-icon-button
407
- class="scroll-button right"
408
- .disabled="${this.disableScrollRight}"
409
- @pointerdown="${() => this.startScroll('right')}"
410
- @pointerup="${this.stopScroll}"
411
- @pointerleave="${this.stopScroll}"
412
- size="small"
413
- variant="contained"
414
- icon="arrowRight"
415
- >
416
- </lit-icon-button>
534
+ ? html `
535
+ <lit-icon-button
536
+ class="scroll-button left"
537
+ .disabled="${this.disableScrollLeft}"
538
+ @pointerdown="${() => this.startScroll('left')}"
539
+ @pointerup="${this.stopScroll}"
540
+ @pointerleave="${this.stopScroll}"
541
+ size="small"
542
+ variant="contained"
543
+ icon="arrowLeft"
544
+ >
545
+ </lit-icon-button>
546
+ <lit-icon-button
547
+ class="scroll-button right"
548
+ .disabled="${this.disableScrollRight}"
549
+ @pointerdown="${() => this.startScroll('right')}"
550
+ @pointerup="${this.stopScroll}"
551
+ @pointerleave="${this.stopScroll}"
552
+ size="small"
553
+ variant="contained"
554
+ icon="arrowRight"
555
+ >
556
+ </lit-icon-button>
417
557
  `
418
- : null}
419
- <div class='grid' ${ref(this.tableContainerRef)}>
420
- <table style="width: ${this.table.getCenterTotalSize()}px">
421
- <thead style="height: ${this.enableFiltering ? '4rem' : '1.625rem'};">
558
+ : null}
559
+ <div class="grid" ${ref(this.tableContainerRef)} @scroll="${this.handleScroll}">
560
+ <table style="width: ${this.table.getCenterTotalSize()}px">
561
+ <thead style="height: ${this.enableFiltering ? '4rem' : '1.625rem'};">
422
562
  ${repeat(this.table.getHeaderGroups(), (headerGroup) => headerGroup.id, (headerGroup) => {
423
563
  const headerColumns = this.enableColumnVirtualization
424
564
  ? virtualColumns.map((vc) => headerGroup.headers[vc.index])
@@ -429,15 +569,15 @@ let LitDataGridTanstack = class LitDataGridTanstack extends LitElement {
429
569
  ...headerColumns.filter((hc) => !hc.column.getIsPinned()),
430
570
  ]
431
571
  : headerColumns;
432
- return html `
433
- <tr class="head" data-index="${headerGroup.id}">
572
+ return html `
573
+ <tr class="head" data-index="${headerGroup.id}">
434
574
  ${virtualPaddingLeft
435
- ? html `
436
- <th
437
- style=" display: flex; width: ${virtualPaddingLeft}px;"
438
- ></th>
575
+ ? html `
576
+ <th
577
+ style=" display: flex; width: ${virtualPaddingLeft}px;"
578
+ ></th>
439
579
  `
440
- : ''}
580
+ : ''}
441
581
  ${repeat(newHeaderColumns, (header) => header.id, (header, index) => {
442
582
  const column = header.column;
443
583
  const style = {
@@ -445,22 +585,22 @@ let LitDataGridTanstack = class LitDataGridTanstack extends LitElement {
445
585
  width: `${column.getSize()}px`,
446
586
  flexGrow: `${column.columnDef.size === undefined ? 1 : 'unset'}`,
447
587
  };
448
- return html `
449
- <th
450
- class="head"
451
- style="${styleMap(style)}"
452
- colspan="${header.colSpan}"
453
- data-index="${header.id}"
454
- >
588
+ return html `
589
+ <th
590
+ class="head"
591
+ style="${styleMap(style)}"
592
+ colspan="${header.colSpan}"
593
+ data-index="${header.id}"
594
+ >
455
595
  ${header.isPlaceholder
456
596
  ? ''
457
- : html `
458
- <div
597
+ : html `
598
+ <div
459
599
  class="resizer ${this
460
600
  .table.options
461
601
  .columnResizeDirection} ${header.column.getIsResizing()
462
602
  ? 'is-resizing'
463
- : ''}"
603
+ : ''}"
464
604
  style="transform: ${this
465
605
  .table.options
466
606
  .columnResizeMode ===
@@ -476,167 +616,167 @@ let LitDataGridTanstack = class LitDataGridTanstack extends LitElement {
476
616
  .columnSizingInfo
477
617
  .deltaOffset ??
478
618
  0)}px)`
479
- : ''}"
480
- >
481
- <div
482
- style="display: flex; align-items: center; height: 100%;"
483
- >
484
- <div
485
- class="column-header"
486
- @click=${header.column.getToggleSortingHandler()}
487
- >
488
- <lit-overflow-tooltip
619
+ : ''}"
620
+ >
621
+ <div
622
+ style="display: flex; align-items: center; height: 100%;"
623
+ >
624
+ <div
625
+ class="column-header"
626
+ @click=${header.column.getToggleSortingHandler()}
627
+ >
628
+ <lit-overflow-tooltip
489
629
  label="${header
490
630
  .column
491
631
  .columnDef
492
- .header}"
493
- >
632
+ .header}"
633
+ >
494
634
  ${header
495
635
  .column
496
636
  .columnDef
497
- .header}
498
- </lit-overflow-tooltip>
499
- </div>
500
-
501
- <div
502
- class="icons-group-pin"
503
- >
637
+ .header}
638
+ </lit-overflow-tooltip>
639
+ </div>
640
+
641
+ <div
642
+ class="icons-group-pin"
643
+ >
504
644
  ${header.column.getIsSorted()
505
645
  ? header.column.getIsSorted() ===
506
646
  'asc'
507
- ? html `<slot
508
- name="iconSortUp"
509
- ><lit-icon
510
- size="0.75rem"
511
- icon="chevronUpFilled"
512
- ></lit-icon
647
+ ? html `<slot
648
+ name="iconSortUp"
649
+ ><lit-icon
650
+ size="0.75rem"
651
+ icon="chevronUpFilled"
652
+ ></lit-icon
513
653
  ></slot>`
514
- : html `<slothea
515
- name="iconSortDown"
516
- >
517
- <lit-icon
518
- size="0.75rem"
519
- icon="chevronDownFilled"
520
- ></lit-icon>
654
+ : html `<slothea
655
+ name="iconSortDown"
656
+ >
657
+ <lit-icon
658
+ size="0.75rem"
659
+ icon="chevronDownFilled"
660
+ ></lit-icon>
521
661
  </slothea>`
522
- : html `<div></div>`}
523
- <div class="flex">
662
+ : html `<div></div>`}
663
+ <div class="flex">
524
664
  ${!this
525
665
  .actionButtonsInMenu
526
- ? html `
666
+ ? html `
527
667
  ${header.column.getCanPin()
528
- ? html `
529
- <lit-tooltip
668
+ ? html `
669
+ <lit-tooltip
530
670
  label="${header.column.getIsPinned()
531
671
  ? msg('Zrušit připnutí sloupce')
532
- : msg('Připnout sloupec vlevo')}"
533
- variant="bottom"
534
- >
535
- <lit-icon-button
536
- @click="${() => this.togglePin(header)}"
537
- size="small"
538
- variant="text"
539
- icon="pin"
540
- .active="${header.column.getIsPinned()}"
541
- >
542
- </lit-icon-button>
543
- </lit-tooltip>
672
+ : msg('Připnout sloupec vlevo')}"
673
+ variant="bottom"
674
+ >
675
+ <lit-icon-button
676
+ @click="${() => this.togglePin(header)}"
677
+ size="small"
678
+ variant="text"
679
+ icon="pin"
680
+ .active="${header.column.getIsPinned()}"
681
+ >
682
+ </lit-icon-button>
683
+ </lit-tooltip>
544
684
  `
545
- : ''}
685
+ : ''}
546
686
  ${header.column.getCanGroup()
547
- ? html `
548
- <lit-tooltip
687
+ ? html `
688
+ <lit-tooltip
549
689
  label="${header.column.getIsGrouped()
550
690
  ? msg('Zrušit seskupení')
551
- : msg('Seskupit sloupec')}"
552
- variant="bottom"
553
- >
554
- <lit-icon-button
555
- @click="${header.column.getToggleGroupingHandler()}"
556
- size="small"
557
- variant="text"
558
- .active="${header.column.getIsGrouped()}"
559
- icon="agregation"
560
- >
561
- </lit-icon-button>
562
- </lit-tooltip>
691
+ : msg('Seskupit sloupec')}"
692
+ variant="bottom"
693
+ >
694
+ <lit-icon-button
695
+ @click="${header.column.getToggleGroupingHandler()}"
696
+ size="small"
697
+ variant="text"
698
+ .active="${header.column.getIsGrouped()}"
699
+ icon="agregation"
700
+ >
701
+ </lit-icon-button>
702
+ </lit-tooltip>
563
703
  `
564
- : ''}
704
+ : ''}
565
705
  `
566
- : html `
567
- <lit-data-grid-action-buttons-popover
568
- .group="${header.column.getToggleGroupingHandler()}"
569
- .pin="${() => this.togglePin(header)}"
570
- .header="${header}"
706
+ : html `
707
+ <lit-data-grid-action-buttons-popover
708
+ .group="${header.column.getToggleGroupingHandler()}"
709
+ .pin="${() => this.togglePin(header)}"
710
+ .header="${header}"
571
711
  .table="${this
572
- .table}"
573
- ></lit-data-grid-action-buttons-popover>
574
- `}
575
- </div>
576
- </div>
577
- </div>
578
- </div>
712
+ .table}"
713
+ ></lit-data-grid-action-buttons-popover>
714
+ `}
715
+ </div>
716
+ </div>
717
+ </div>
718
+ </div>
579
719
  ${header.column.getCanFilter()
580
- ? html `
581
- <div>
582
- <filter-inputs
583
- .column=${header.column}
720
+ ? html `
721
+ <div>
722
+ <filter-inputs
723
+ .column=${header.column}
584
724
  .dateFormat=${this
585
- .dateFormat}
725
+ .dateFormat}
586
726
  .userLang=${this
587
- .userLang}
588
- ></filter-inputs>
589
- </div>
727
+ .userLang}
728
+ ></filter-inputs>
729
+ </div>
590
730
  `
591
- : null}
592
- `}
593
- <div
594
- class="resize-handle"
731
+ : null}
732
+ `}
733
+ <div
734
+ class="resize-handle"
595
735
  @dblclick="${(event) => {
596
736
  if (event.target.classList.contains('resize-handle')) {
597
737
  header.column.resetSize();
598
738
  }
599
- }}"
739
+ }}"
600
740
  @mousedown="${(event) => {
601
741
  if (event.target.classList.contains('resize-handle')) {
602
742
  header.getResizeHandler()(event);
603
743
  }
604
- }}"
744
+ }}"
605
745
  @touchstart="${(event) => {
606
746
  if (event.target.classList.contains('resize-handle')) {
607
747
  header.getResizeHandler()(event);
608
748
  }
609
- }}"
610
- ></div>
611
- </th>
749
+ }}"
750
+ ></div>
751
+ </th>
612
752
  `;
613
- })}
753
+ })}
614
754
  ${virtualPaddingRight
615
- ? html `
616
- <th
617
- style=" display: flex; width: ${virtualPaddingRight}px;"
618
- ></th>
755
+ ? html `
756
+ <th
757
+ style=" display: flex; width: ${virtualPaddingRight}px;"
758
+ ></th>
619
759
  `
620
- : ''}
621
- </tr>
760
+ : ''}
761
+ </tr>
622
762
  `;
623
- })}
763
+ })}
624
764
  ${this.isLoading
625
- ? html `
626
- <div class="progress-root">
627
- <div class="bar bar1Indeterminate"></div>
628
- <div class="bar bar2Indeterminate"></div>
629
- </div>
765
+ ? html `
766
+ <div class="progress-root">
767
+ <div class="bar bar1Indeterminate"></div>
768
+ <div class="bar bar2Indeterminate"></div>
769
+ </div>
630
770
  `
631
- : ''}
632
- </thead>
633
-
634
- <tbody
771
+ : ''}
772
+ </thead>
773
+
774
+ <tbody
635
775
  style="height: ${rowVirtualizer &&
636
776
  this.table.getRowModel().rows.length > 0
637
777
  ? rowVirtualizer.getTotalSize() + 'px'
638
- : 'auto'};"
639
- >
778
+ : 'auto'};"
779
+ >
640
780
  ${rows.length > 0
641
781
  ? repeat(rowItems, (item) => item.key, (item) => {
642
782
  const row = rows[item.index];
@@ -649,20 +789,24 @@ let LitDataGridTanstack = class LitDataGridTanstack extends LitElement {
649
789
  const newBodyColumns = this.enableColumnVirtualization
650
790
  ? [...new Set([...pinnedColumns, ...bodyColumns])]
651
791
  : bodyColumns;
652
- const tbodyStyle = {
792
+ const rowStyle = {
653
793
  transform: rowVirtualizer
654
794
  ? `translateY(${item.start}px)`
655
795
  : 'none',
656
- height: '38px',
657
- lineHeight: '38px',
796
+ height: `${this.rowHeight}px`,
797
+ lineHeight: `${this.rowHeight}px`,
658
798
  position: rowVirtualizer ? 'absolute' : 'relative',
659
799
  };
660
800
  return row
661
- ? html `
662
- <tr
663
- class="body"
664
- data-index="${item.index}"
665
- style="${styleMap(tbodyStyle)}"
801
+ ? html `
802
+ <tr
803
+ class="${this.selectedRowId === row.id
804
+ ? 'selected body'
805
+ : 'body'}"
806
+ data-index="${item.index}"
807
+ @click="${() => this.handleRowClick(row)}"
808
+ @dblclick="${() => this.handleRowDoubleClick(row)}"
809
+ style="${styleMap(rowStyle)}"
666
810
  ${ref((node) => {
667
811
  if (node &&
668
812
  this.enableRowVirtualization &&
@@ -670,66 +814,68 @@ let LitDataGridTanstack = class LitDataGridTanstack extends LitElement {
670
814
  // Only measure element if virtualization is enabled
671
815
  rowVirtualizer.measureElement(node);
672
816
  }
673
- })}
674
- >
817
+ })}
818
+ >
675
819
  ${virtualPaddingLeft
676
- ? html `
677
- <th
678
- style=" display: flex; width: ${virtualPaddingLeft}px;"
679
- ></th>
820
+ ? html `
821
+ <th
822
+ style=" display: flex; width: ${virtualPaddingLeft}px;"
823
+ ></th>
680
824
  `
681
- : ''}
682
- <!-- Cells for each row -->
825
+ : ''}
826
+ <!-- Cells for each row -->
683
827
  ${repeat(newBodyColumns, (cell) => cell.key, (cell) => {
828
+ const buttonSize = this.getButtonSize();
684
829
  const { column } = cell;
685
830
  const style = {
686
831
  ...this.getCommonPinningStyles(cell.column),
687
832
  width: `${cell.column.getSize()}px`,
688
833
  flexGrow: `${column.columnDef.size === undefined ? 1 : 'unset'}`,
689
834
  background: this.getCellBackgroundColor(cell),
690
- lineHeight: '2.3125rem', // správny zápis reťazca
835
+ lineHeight: `${this.rowHeight}px`,
691
836
  };
692
- return html `
693
- <td style="${styleMap(style)}">
837
+ return html `
838
+ <td style="${styleMap(style)}">
694
839
  ${cell.getIsGrouped()
695
- ? html `
696
- <lit-button
697
- @click="${row.getToggleExpandedHandler()}"
698
- variant="inherit"
840
+ ? html `
841
+ <lit-button
842
+ @click="${row.getToggleExpandedHandler()}"
843
+ variant="inherit"
844
+ size="${buttonSize}"
699
845
  count="${row
700
846
  .subRows
701
- .length}"
847
+ .length}"
702
848
  label="${flexRender(cell
703
849
  .column
704
850
  .columnDef
705
- .cell, cell.getContext())}"
851
+ .cell, cell.getContext())}"
706
852
  icon="${row.getIsExpanded()
707
853
  ? 'chevronDownFilled'
708
- : 'chevron'}"
709
- >
854
+ : 'chevron'}"
855
+ >
710
856
  <!-- ${row.getIsExpanded()
711
- ? html `<slot
712
- name="groupedIcon-expanded"
713
- slot="start-icon"
857
+ ? html `<slot
858
+ name="groupedIcon-expanded"
859
+ slot="start-icon"
714
860
  ></slot>`
715
- : html `<slot
716
- name="groupedIcon"
717
- slot="start-icon"
718
- ></slot>`} -->
719
- }
861
+ : html `<slot
862
+ name="groupedIcon"
863
+ slot="start-icon"
864
+ ></slot>`} -->
865
+ }
720
866
  ${row.subRows
721
- .length}
867
+ .length}
722
868
  ${flexRender(cell
723
869
  .column
724
870
  .columnDef
725
- .cell, cell.getContext())}
726
- </lit-button>
871
+ .cell, cell.getContext())}
872
+ </lit-button>
727
873
  `
728
874
  : cell.getIsAggregated()
729
- ? html `
730
- <div
731
- style="display: flex; flex-direction: row; align-items: center;"
732
- >
875
+ ? html `
876
+ <div
877
+ style="display: flex; flex-direction: row; align-items: center;"
878
+ >
733
879
  ${flexRender(cell
734
880
  .column
735
881
  .columnDef
@@ -737,350 +883,351 @@ let LitDataGridTanstack = class LitDataGridTanstack extends LitElement {
737
883
  cell
738
884
  .column
739
885
  .columnDef
740
- .cell, cell.getContext())}
741
- </div>
886
+ .cell, cell.getContext())}
887
+ </div>
742
888
  `
743
889
  : cell.getIsPlaceholder()
744
890
  ? null
745
891
  : flexRender(cell.column
746
892
  .columnDef
747
- .cell, cell.getContext())}
748
- </td>
893
+ .cell, cell.getContext())}
894
+ </td>
749
895
  `;
750
- })}
896
+ })}
751
897
  ${virtualPaddingRight
752
- ? html `
753
- <th
754
- style=" display: flex; width: ${virtualPaddingRight}px;"
755
- ></th>
898
+ ? html `
899
+ <th
900
+ style=" display: flex; width: ${virtualPaddingRight}px;"
901
+ ></th>
756
902
  `
757
- : ''}
758
- </tr>
903
+ : ''}
904
+ </tr>
759
905
  `
760
906
  : null;
761
907
  })
762
- : null}
763
- </tbody>
764
- </table>
765
- <div class="footer-container">
766
- <span class="numberCount">
767
- ${msg('Počet záznamů')}: ${this.table.getRowModel().rows.length}
768
- </span>
769
- <div class="right-actions">
770
- <lit-responsive-button
771
- size="small"
772
- variant="text"
773
- label=${msg('Přizpůsobit sloupce')}
774
- icon="columns"
775
- @click=${() => this.table.resetColumnSizing()}
776
- ></lit-responsive-button>
908
+ : null}
909
+ </tbody>
910
+ </table>
911
+ <div class="footer-container">
912
+ <span class="numberCount">
913
+ ${msg('Počet záznamů')}: ${this.table.getRowModel().rows.length}
914
+ </span>
915
+ <div class="right-actions">
916
+ <lit-data-grid-density-popover
917
+ .setDensity="${(density) => this.handleSetDensity(density)}"
918
+ >
919
+ </lit-data-grid-density-popover>
920
+ <lit-responsive-button
921
+ size="small"
922
+ variant="text"
923
+ label=${msg('Přizpůsobit sloupce')}
924
+ icon="columns"
925
+ @click=${() => this.table.resetColumnSizing()}
926
+ ></lit-responsive-button>
777
927
  ${this.exportData
778
- ? html `
779
- <lit-data-grid-export-popover
780
- .exportToCsv="${() => this.exportDataToCsv()}"
781
- .exportToExcel="${() => this.exportDataToExcel()}"
782
- >
783
- <slot slot="iconExcel" name="iconExcel"
784
- ><lit-icon icon="csv"></lit-icon
785
- ></slot>
786
- <slot slot="iconCsv" name="iconCsv"
787
- ><lit-icon icon="csv"></lit-icon
788
- ></slot>
789
- </lit-data-grid-export-popover>
928
+ ? html `
929
+ <lit-data-grid-export-popover
930
+ .exportToCsv="${() => this.exportDataToCsv()}"
931
+ .exportToExcel="${() => this.exportDataToExcel()}"
932
+ >
933
+ </lit-data-grid-export-popover>
790
934
  `
791
- : null}
792
- </div>
793
- </div>
794
- </div>
935
+ : null}
936
+ </div>
937
+ </div>
938
+ </div>
795
939
  ${this.table.getRowModel().rows.length < 1
796
- ? html ` <div class="data-grid__empty">
797
- <div style="max-height: 7.125rem; max-width: 7.125rem">
798
- <not-found></not-found>
799
- </div>
800
- ${msg('Nic dalšího tu není')}
940
+ ? html ` <div class="data-grid__empty">
941
+ <div style="max-height: 7.125rem; max-width: 7.125rem">
942
+ <not-found></not-found>
943
+ </div>
944
+ ${msg('Nic dalšího tu není')}
801
945
  </div>`
802
- : null}
803
- </div>
946
+ : null}
947
+ </div>
804
948
  `;
805
949
  }
806
950
  };
807
951
  LitDataGridTanstack.styles = [
808
952
  // styles,
809
- css `
810
- *,
811
- *::before,
812
- *::after {
813
- margin: 0;
814
- padding: 0;
815
- box-sizing: border-box;
816
- }
817
-
818
- display: block;
819
- font-family: 'Inter', sans-serif;
820
- box-sizing: border-box;
821
-
822
- td {
823
- padding: 0px;
824
- }
825
-
826
- .data-grid__wrapper {
827
- position: relative;
828
- background-color: var(--background-paper, #fff);
829
- height: 100%;
830
- z-index: 1;
831
-
832
- }
833
-
834
- .grid {
835
- overflow: auto;
836
- position: relative;
837
- height: 100%;;
838
- }
839
-
840
- .data-grid__empty {
841
- position: absolute;
842
- top: 30%;
843
- left: 50%;
844
- transform: translate(-50%, -50%);
845
- font-size: 0.875rem;
846
- text-align: center;
847
- }
848
-
849
- table {
850
- border-collapse: collapse;
851
- border-spacing: 0;
852
- width: 100% !important;
853
- height: calc(100% - 38px);
854
- }
855
-
856
- thead {
857
- display: flex;
858
- position: sticky;
859
- top: 0;
860
- z-index: 10;
861
- background-color: var(--background-paper, #fff);
862
- border-bottom: 1px solid var(--color-divider, #d0d3db);
863
- }
864
-
865
- tr.head {
866
- display: flex;
867
- width: 100%;
868
- }
869
-
870
- th.head {
871
- display: block;
872
- position: relative;
873
- padding: 0px 6px;
874
- gap: 0.25rem;
875
- //z-index: auto !important;
876
- }
877
-
878
- tbody {
879
- display: grid;
880
- position: relative;
881
- }
882
-
883
- tr.body {
884
- width: 100%;
885
- border-bottom: 1px solid var(--color-divider, #d0d3db);
886
- display: flex;
887
- }
888
-
889
- tr.body:hover {
890
- cursor: pointer;
891
- background-color: var(--background-default, #eff3f4);
892
- }
893
-
894
- td {
895
- display: table-cell;
896
- white-space: nowrap;
897
- overflow: hidden;
898
- padding: 0px 14px;
899
- font-weight: 500;
900
- font-size: 13px;
901
- color: var(--text-primary, #111827);
902
- }
903
-
904
- .column-header {
905
- font-size: 11px;
906
- font-weight: 600;
907
- color: var(--text-secondary, #5d6371);
908
- cursor: pointer;
909
- gap: 0.25rem;
910
- justify-content: center;
911
- align-items: center;
912
- margin: 0 0.25rem;
913
- overflow: hidden;
914
- white-space: nowrap;
915
- text-overflow: ellipsis;
916
- height: inherit;
917
- display: flex;
918
- }
919
-
920
- .ellipsis {
921
- overflow: hidden;
922
- white-space: nowrap;
923
- text-overflow: ellipsis;
924
- }
925
-
926
- .icons-group-pin {
927
- display: flex;
928
- height: 100%;
929
- justify-content: space-between;
930
- flex-grow: 1;
931
- }
932
-
933
- .flex {
934
- display: flex;
935
- }
936
-
937
- .resizer {
938
- height: 23px;
939
- padding: 0 0 0 6px;
940
- text-align: start;
941
- //cursor: col-resize;
942
- user-select: none;
943
- touch-action: none;
944
- }
945
-
946
- .resize-handle {
947
- position: absolute;
948
- top: 0;
949
- right: 0px;
950
- width: 6px;
951
- height: 100%;
952
- background: transparent;
953
- cursor: col-resize;
954
- transition: background-color 0.2s ease-in-out;
955
- // border-radius: 5px;
956
- // padding-bottom: 5px;
957
- }
958
-
959
- .resize-handle:hover {
960
- border-right: 2px solid var(--color-primary-main, #75b603);
961
- }
962
-
963
- .resizer.ltr {
964
- right: 0;
965
- }
966
-
967
- .resizer.rtl {
968
- left: 0;
969
- }
970
-
971
- .resizer.is-resizing {
972
- opacity: 1;
973
- }
974
-
975
- .footer-container {
976
- position: sticky;
977
- left: 0;
978
- bottom: 0;
979
- background-color: var(--background-paper, #fff);
980
- width: auto;
981
- border-top: 1px solid var(--color-divider, #d0d3db);
982
- height: 2.375rem;
983
- display: flex;
984
- flex-direction: row;
985
- justify-content: space-between;
986
- align-items: center;
987
- padding: 0 16px;
988
- z-index: 10;
989
- }
990
-
991
- .right-actions {
992
- position: absolute;
993
- right: 0;
994
- display: flex;
995
- }
996
-
997
- .numberCount {
998
- margin: 0.375rem 0;
999
- font-size: 12px;
1000
- font-weight: 400;
1001
- color: var(--text-primary, #111827);
1002
- }
1003
-
1004
- .scroll-button {
1005
- position: absolute;
1006
- top: 50%;
1007
- transform: translateY(-50%);
1008
- z-index: 1000;
1009
- cursor: pointer;
1010
- }
1011
-
1012
- .scroll-button.left {
1013
- left: 3rem;
1014
- }
1015
-
1016
- .scroll-button.right {
1017
- right: 3rem;
1018
- }
1019
-
1020
- .progress-root {
1021
- position: absolute;
1022
- bottom: 0;
1023
- left: 0;
1024
- overflow: hidden;
1025
- display: block;
1026
- width: 100%;
1027
- height: 0.125rem;
1028
- background-color: #e0e0e0; /* Podobná farba pozadia ako v MUI */
1029
- box-sizing: border-box;
1030
- }
1031
-
1032
- .bar {
1033
- position: absolute;
1034
- height: 100%;
1035
- display: block;
1036
- background-color: #75b603; /* Podobná farba ako primary theme v MUI */
1037
- width: auto;
1038
- will-change: left, right;
1039
- box-sizing: border-box;
1040
- }
1041
-
1042
- /* Prvá animovaná "vlna" */
1043
-
1044
- .bar1Indeterminate {
1045
- animation: mui-indeterminate1 2.1s cubic-bezier(0.65, 0.815, 0.735, 0.395) infinite;
1046
- }
1047
-
1048
- /* Druhá animovaná "vlna" (oneskorená) */
1049
-
1050
- .bar2Indeterminate {
1051
- animation: mui-indeterminate2 2.1s cubic-bezier(0.65, 0.815, 0.735, 0.395) infinite;
1052
- animation-delay: 1.05s;
1053
- }
1054
-
1055
- @keyframes mui-indeterminate1 {
1056
- 0% {
1057
- left: -35%;
1058
- right: 100%;
1059
- }
1060
- 60% {
1061
- left: 100%;
1062
- right: -90%;
1063
- }
1064
- 100% {
1065
- left: 100%;
1066
- right: -90%;
1067
- }
1068
- }
1069
-
1070
- @keyframes mui-indeterminate2 {
1071
- 0% {
1072
- left: -200%;
1073
- right: 100%;
1074
- }
1075
- 60% {
1076
- left: 107%;
1077
- right: -8%;
1078
- }
1079
- 100% {
1080
- left: 107%;
1081
- right: -8%;
1082
- }
1083
- }
953
+ css `
954
+ *,
955
+ *::before,
956
+ *::after {
957
+ margin: 0;
958
+ padding: 0;
959
+ box-sizing: border-box;
960
+ }
961
+
962
+ display: block;
963
+ font-family: 'Inter', sans-serif;
964
+ box-sizing: border-box;
965
+
966
+ td {
967
+ padding: 0px;
968
+ }
969
+
970
+ .data-grid__wrapper {
971
+ position: relative;
972
+ background-color: var(--background-paper, #fff);
973
+ height: 100%;
974
+ z-index: 1;
975
+ }
976
+
977
+ .grid {
978
+ overflow: auto;
979
+ position: relative;
980
+ height: 100%;
981
+ }
982
+
983
+ .data-grid__empty {
984
+ position: absolute;
985
+ top: 30%;
986
+ left: 50%;
987
+ transform: translate(-50%, -50%);
988
+ font-size: 0.875rem;
989
+ text-align: center;
990
+ }
991
+
992
+ table {
993
+ border-collapse: collapse;
994
+ border-spacing: 0;
995
+ width: 100% !important;
996
+ height: calc(100% - 38px);
997
+ }
998
+
999
+ thead {
1000
+ display: flex;
1001
+ position: sticky;
1002
+ top: 0;
1003
+ z-index: 10;
1004
+ background-color: var(--background-paper, #fff);
1005
+ border-bottom: 1px solid var(--color-divider, #d0d3db);
1006
+ }
1007
+
1008
+ tr.head {
1009
+ display: flex;
1010
+ width: 100%;
1011
+ }
1012
+
1013
+ th.head {
1014
+ display: block;
1015
+ position: relative;
1016
+ padding: 0px 6px;
1017
+ gap: 0.25rem;
1018
+ //z-index: auto !important;
1019
+ }
1020
+
1021
+ tbody {
1022
+ display: grid;
1023
+ position: relative;
1024
+ }
1025
+
1026
+ tr.body {
1027
+ width: 100%;
1028
+ border-bottom: 1px solid var(--color-divider, #d0d3db);
1029
+ display: flex;
1030
+ }
1031
+
1032
+ tr.body:hover {
1033
+ cursor: pointer;
1034
+ background-color: var(--background-default, #eff3f4);
1035
+ }
1036
+
1037
+ td {
1038
+ display: table-cell;
1039
+ white-space: nowrap;
1040
+ overflow: hidden;
1041
+ padding: 0px 14px;
1042
+ font-weight: 500;
1043
+ font-size: 13px;
1044
+ color: var(--text-primary, #111827);
1045
+ }
1046
+
1047
+ .column-header {
1048
+ font-size: 11px;
1049
+ font-weight: 600;
1050
+ color: var(--text-secondary, #5d6371);
1051
+ cursor: pointer;
1052
+ gap: 0.25rem;
1053
+ justify-content: center;
1054
+ align-items: center;
1055
+ margin: 0 0.25rem;
1056
+ overflow: hidden;
1057
+ white-space: nowrap;
1058
+ text-overflow: ellipsis;
1059
+ height: inherit;
1060
+ display: flex;
1061
+ }
1062
+
1063
+ .ellipsis {
1064
+ overflow: hidden;
1065
+ white-space: nowrap;
1066
+ text-overflow: ellipsis;
1067
+ }
1068
+
1069
+ .icons-group-pin {
1070
+ display: flex;
1071
+ height: 100%;
1072
+ justify-content: space-between;
1073
+ flex-grow: 1;
1074
+ }
1075
+
1076
+ .flex {
1077
+ display: flex;
1078
+ }
1079
+
1080
+ .resizer {
1081
+ height: 23px;
1082
+ padding: 0 0 0 6px;
1083
+ text-align: start;
1084
+ //cursor: col-resize;
1085
+ user-select: none;
1086
+ touch-action: none;
1087
+ }
1088
+
1089
+ .resize-handle {
1090
+ position: absolute;
1091
+ top: 0;
1092
+ right: 0px;
1093
+ width: 6px;
1094
+ height: 100%;
1095
+ background: transparent;
1096
+ cursor: col-resize;
1097
+ transition: background-color 0.2s ease-in-out;
1098
+ // border-radius: 5px;
1099
+ // padding-bottom: 5px;
1100
+ }
1101
+
1102
+ .resize-handle:hover {
1103
+ border-right: 2px solid var(--color-primary-main, #75b603);
1104
+ }
1105
+
1106
+ .resizer.ltr {
1107
+ right: 0;
1108
+ }
1109
+
1110
+ .resizer.rtl {
1111
+ left: 0;
1112
+ }
1113
+
1114
+ .resizer.is-resizing {
1115
+ opacity: 1;
1116
+ }
1117
+
1118
+ .footer-container {
1119
+ position: sticky;
1120
+ left: 0;
1121
+ bottom: 0;
1122
+ background-color: var(--background-paper, #fff);
1123
+ width: auto;
1124
+ border-top: 1px solid var(--color-divider, #d0d3db);
1125
+ height: 2.375rem;
1126
+ display: flex;
1127
+ flex-direction: row;
1128
+ justify-content: space-between;
1129
+ align-items: center;
1130
+ padding: 0 16px;
1131
+ z-index: 10;
1132
+ }
1133
+
1134
+ .right-actions {
1135
+ position: absolute;
1136
+ right: 0;
1137
+ display: flex;
1138
+ }
1139
+
1140
+ .numberCount {
1141
+ margin: 0.375rem 0;
1142
+ font-size: 12px;
1143
+ font-weight: 400;
1144
+ color: var(--text-primary, #111827);
1145
+ }
1146
+
1147
+ .scroll-button {
1148
+ position: absolute;
1149
+ top: 50%;
1150
+ transform: translateY(-50%);
1151
+ z-index: 1000;
1152
+ cursor: pointer;
1153
+ }
1154
+
1155
+ .scroll-button.left {
1156
+ left: 3rem;
1157
+ }
1158
+
1159
+ .scroll-button.right {
1160
+ right: 3rem;
1161
+ }
1162
+
1163
+ .progress-root {
1164
+ position: absolute;
1165
+ bottom: 0;
1166
+ left: 0;
1167
+ overflow: hidden;
1168
+ display: block;
1169
+ width: 100%;
1170
+ height: 0.125rem;
1171
+ background-color: var(--color-primary-light, #f0fadf);
1172
+ box-sizing: border-box;
1173
+ }
1174
+
1175
+ .bar {
1176
+ position: absolute;
1177
+ height: 100%;
1178
+ display: block;
1179
+ background-color: var(--color-primary-main, #76b703);
1180
+ width: auto;
1181
+ will-change: left, right;
1182
+ box-sizing: border-box;
1183
+ }
1184
+
1185
+ .selected {
1186
+ background-color: var(--color-primary-light, #f0fadf);
1187
+ }
1188
+
1189
+ /* Prvá animovaná "vlna" */
1190
+
1191
+ .bar1Indeterminate {
1192
+ animation: mui-indeterminate1 2.1s cubic-bezier(0.65, 0.815, 0.735, 0.395) infinite;
1193
+ }
1194
+
1195
+ /* Druhá animovaná "vlna" (oneskorená) */
1196
+
1197
+ .bar2Indeterminate {
1198
+ animation: mui-indeterminate2 2.1s cubic-bezier(0.65, 0.815, 0.735, 0.395) infinite;
1199
+ animation-delay: 1.05s;
1200
+ }
1201
+
1202
+ @keyframes mui-indeterminate1 {
1203
+ 0% {
1204
+ left: -35%;
1205
+ right: 100%;
1206
+ }
1207
+ 60% {
1208
+ left: 100%;
1209
+ right: -90%;
1210
+ }
1211
+ 100% {
1212
+ left: 100%;
1213
+ right: -90%;
1214
+ }
1215
+ }
1216
+
1217
+ @keyframes mui-indeterminate2 {
1218
+ 0% {
1219
+ left: -200%;
1220
+ right: 100%;
1221
+ }
1222
+ 60% {
1223
+ left: 107%;
1224
+ right: -8%;
1225
+ }
1226
+ 100% {
1227
+ left: 107%;
1228
+ right: -8%;
1229
+ }
1230
+ }
1084
1231
  `,
1085
1232
  ];
1086
1233
  __decorate([
@@ -1155,9 +1302,42 @@ __decorate([
1155
1302
  __decorate([
1156
1303
  property({ type: Boolean })
1157
1304
  ], LitDataGridTanstack.prototype, "isLoading", void 0);
1305
+ __decorate([
1306
+ property({ type: Function })
1307
+ ], LitDataGridTanstack.prototype, "onRowClick", void 0);
1308
+ __decorate([
1309
+ property({ type: Function })
1310
+ ], LitDataGridTanstack.prototype, "onRowsScrollEnd", void 0);
1311
+ __decorate([
1312
+ property({ type: Function })
1313
+ ], LitDataGridTanstack.prototype, "onRowDoubleClick", void 0);
1314
+ __decorate([
1315
+ property({ type: Boolean })
1316
+ ], LitDataGridTanstack.prototype, "disableRowSelectionOnClick", void 0);
1317
+ __decorate([
1318
+ property({ type: Array })
1319
+ ], LitDataGridTanstack.prototype, "initialFiltering", void 0);
1320
+ __decorate([
1321
+ property({ type: Boolean })
1322
+ ], LitDataGridTanstack.prototype, "server", void 0);
1323
+ __decorate([
1324
+ property({ type: Boolean })
1325
+ ], LitDataGridTanstack.prototype, "onColumnFiltersChanged", void 0);
1326
+ __decorate([
1327
+ property({ type: Boolean })
1328
+ ], LitDataGridTanstack.prototype, "onColumnSortChanged", void 0);
1329
+ __decorate([
1330
+ property({ type: Number })
1331
+ ], LitDataGridTanstack.prototype, "rowBufferPx", void 0);
1332
+ __decorate([
1333
+ property({ type: String })
1334
+ ], LitDataGridTanstack.prototype, "rowDensity", void 0);
1158
1335
  __decorate([
1159
1336
  state()
1160
1337
  ], LitDataGridTanstack.prototype, "rowsCount", void 0);
1338
+ __decorate([
1339
+ state()
1340
+ ], LitDataGridTanstack.prototype, "selectedRowId", void 0);
1161
1341
  __decorate([
1162
1342
  state()
1163
1343
  ], LitDataGridTanstack.prototype, "isScrollable", void 0);
@@ -1167,6 +1347,18 @@ __decorate([
1167
1347
  __decorate([
1168
1348
  state()
1169
1349
  ], LitDataGridTanstack.prototype, "disableScrollRight", void 0);
1350
+ __decorate([
1351
+ state()
1352
+ ], LitDataGridTanstack.prototype, "filters", void 0);
1353
+ __decorate([
1354
+ state()
1355
+ ], LitDataGridTanstack.prototype, "sorting", void 0);
1356
+ __decorate([
1357
+ state()
1358
+ ], LitDataGridTanstack.prototype, "table", void 0);
1359
+ __decorate([
1360
+ state()
1361
+ ], LitDataGridTanstack.prototype, "rowHeight", void 0);
1170
1362
  LitDataGridTanstack = __decorate([
1171
1363
  customElement('lit-data-grid-tanstack')
1172
1364
  ], LitDataGridTanstack);