overview-components 1.0.91 → 1.0.93

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 (228) hide show
  1. package/dist/assets/generated/locales/de.js +70 -72
  2. package/dist/assets/generated/locales/de.js.map +1 -0
  3. package/dist/assets/generated/locales/en.js +70 -72
  4. package/dist/assets/generated/locales/en.js.map +1 -0
  5. package/dist/assets/generated/locales/fr.js +70 -72
  6. package/dist/assets/generated/locales/fr.js.map +1 -0
  7. package/dist/assets/generated/locales/hr.js +70 -72
  8. package/dist/assets/generated/locales/hr.js.map +1 -0
  9. package/dist/assets/generated/locales/it.js +70 -72
  10. package/dist/assets/generated/locales/it.js.map +1 -0
  11. package/dist/assets/generated/locales/pl.js +70 -72
  12. package/dist/assets/generated/locales/pl.js.map +1 -0
  13. package/dist/assets/generated/locales/ro.js +70 -72
  14. package/dist/assets/generated/locales/ro.js.map +1 -0
  15. package/dist/assets/generated/locales/sk.js +70 -72
  16. package/dist/assets/generated/locales/sk.js.map +1 -0
  17. package/dist/assets/generated/locales/sr.js +70 -72
  18. package/dist/assets/generated/locales/sr.js.map +1 -0
  19. package/dist/assets/icons/iconGlyphs.js +679 -0
  20. package/dist/assets/icons/iconGlyphs.js.map +1 -0
  21. package/dist/assets/illustration/delete-illustration.js +96 -0
  22. package/dist/assets/illustration/delete-illustration.js.map +1 -0
  23. package/dist/assets/illustration/no-content.js +167 -0
  24. package/dist/assets/illustration/no-content.js.map +1 -0
  25. package/dist/assets/illustration/no-preview.js +133 -0
  26. package/dist/assets/illustration/no-preview.js.map +1 -0
  27. package/dist/assets/illustration/not-found.js +106 -0
  28. package/dist/assets/illustration/not-found.js.map +1 -0
  29. package/dist/assets/illustration/settings-illustration.js +176 -0
  30. package/dist/assets/illustration/settings-illustration.js.map +1 -0
  31. package/dist/components/components-settings/attachments-tab-settings.js +226 -0
  32. package/dist/components/components-settings/attachments-tab-settings.js.map +1 -0
  33. package/dist/components/components-settings/data-grid-settings.js +318 -0
  34. package/dist/components/components-settings/data-grid-settings.js.map +1 -0
  35. package/dist/components/components-settings/section-tab-settings.js +269 -0
  36. package/dist/components/components-settings/section-tab-settings.js.map +1 -0
  37. package/dist/components/components-settings/tabs-overview-settings.js +439 -0
  38. package/dist/components/components-settings/tabs-overview-settings.js.map +1 -0
  39. package/dist/components/lit-attachments-tab.js +432 -267
  40. package/dist/components/lit-attachments-tab.js.map +1 -0
  41. package/dist/components/lit-badge.js +40 -37
  42. package/dist/components/lit-badge.js.map +1 -0
  43. package/dist/components/lit-case-variables-tab.js +497 -378
  44. package/dist/components/lit-case-variables-tab.js.map +1 -0
  45. package/dist/components/lit-chart.js +406 -375
  46. package/dist/components/lit-chart.js.map +1 -0
  47. package/dist/components/lit-data-grid-tanstack.js +1663 -1145
  48. package/dist/components/lit-data-grid-tanstack.js.map +1 -0
  49. package/dist/components/lit-filter-modal.js +230 -194
  50. package/dist/components/lit-filter-modal.js.map +1 -0
  51. package/dist/components/lit-multiselect-item.js +477 -297
  52. package/dist/components/lit-multiselect-item.js.map +1 -0
  53. package/dist/components/lit-section-tab.js +85 -69
  54. package/dist/components/lit-section-tab.js.map +1 -0
  55. package/dist/components/lit-tabs-overview.js +232 -187
  56. package/dist/components/lit-tabs-overview.js.map +1 -0
  57. package/dist/components/modals/lit-confirm-modal.js +120 -0
  58. package/dist/components/modals/lit-confirm-modal.js.map +1 -0
  59. package/dist/components/modals/lit-delete-modal.js +128 -0
  60. package/dist/components/modals/lit-delete-modal.js.map +1 -0
  61. package/dist/components/react-wrappers/attachments-tab.js +8 -13
  62. package/dist/components/react-wrappers/attachments-tab.js.map +1 -0
  63. package/dist/components/react-wrappers/badge.js +8 -13
  64. package/dist/components/react-wrappers/badge.js.map +1 -0
  65. package/dist/components/react-wrappers/button.js +8 -13
  66. package/dist/components/react-wrappers/button.js.map +1 -0
  67. package/dist/components/react-wrappers/case-variables-tab.js +8 -13
  68. package/dist/components/react-wrappers/case-variables-tab.js.map +1 -0
  69. package/dist/components/react-wrappers/chart.js +8 -13
  70. package/dist/components/react-wrappers/chart.js.map +1 -0
  71. package/dist/components/react-wrappers/data-grid-tanstack.js +8 -13
  72. package/dist/components/react-wrappers/data-grid-tanstack.js.map +1 -0
  73. package/dist/components/react-wrappers/filter-modal.js +8 -13
  74. package/dist/components/react-wrappers/filter-modal.js.map +1 -0
  75. package/dist/components/react-wrappers/progress-bar.js +8 -13
  76. package/dist/components/react-wrappers/progress-bar.js.map +1 -0
  77. package/dist/components/react-wrappers/section-tab.js +8 -13
  78. package/dist/components/react-wrappers/section-tab.js.map +1 -0
  79. package/dist/components/react-wrappers/tabs-overview.js +8 -13
  80. package/dist/components/react-wrappers/tabs-overview.js.map +1 -0
  81. package/dist/data/translations.js +2763 -0
  82. package/dist/data/translations.js.map +1 -0
  83. package/dist/index.js +43 -42
  84. package/dist/index.js.map +1 -0
  85. package/dist/schemas/index.js +17 -0
  86. package/dist/schemas/index.js.map +1 -0
  87. package/dist/schemas/lit-attachments-tab-document.schema.js +20 -0
  88. package/dist/schemas/lit-attachments-tab-document.schema.js.map +1 -0
  89. package/dist/schemas/lit-attachments-tab-settings-value.schema.js +15 -0
  90. package/dist/schemas/lit-attachments-tab-settings-value.schema.js.map +1 -0
  91. package/dist/schemas/lit-attachments-tab.schema.js +32 -0
  92. package/dist/schemas/lit-attachments-tab.schema.js.map +1 -0
  93. package/dist/schemas/lit-case-variables-tab-cell.schema.js +43 -0
  94. package/dist/schemas/lit-case-variables-tab-cell.schema.js.map +1 -0
  95. package/dist/schemas/lit-case-variables-tab-rows.schema.js +6 -0
  96. package/dist/schemas/lit-case-variables-tab-rows.schema.js.map +1 -0
  97. package/dist/schemas/lit-case-variables-tab.schema.js +24 -0
  98. package/dist/schemas/lit-case-variables-tab.schema.js.map +1 -0
  99. package/dist/schemas/lit-data-grid-tanstack-column-array.schema.js +6 -0
  100. package/dist/schemas/lit-data-grid-tanstack-column-array.schema.js.map +1 -0
  101. package/dist/schemas/lit-data-grid-tanstack-column-custom-filter-array.schema.js +6 -0
  102. package/dist/schemas/lit-data-grid-tanstack-column-custom-filter-array.schema.js.map +1 -0
  103. package/dist/schemas/lit-data-grid-tanstack-column-custom-filter.schema.js +11 -0
  104. package/dist/schemas/lit-data-grid-tanstack-column-custom-filter.schema.js.map +1 -0
  105. package/dist/schemas/lit-data-grid-tanstack-column.schema.js +55 -0
  106. package/dist/schemas/lit-data-grid-tanstack-column.schema.js.map +1 -0
  107. package/dist/schemas/lit-data-grid-tanstack.schema.js +99 -0
  108. package/dist/schemas/lit-data-grid-tanstack.schema.js.map +1 -0
  109. package/dist/schemas/lit-section-tab-schema.js +24 -0
  110. package/dist/schemas/lit-section-tab-schema.js.map +1 -0
  111. package/dist/schemas/lit-tabs-overview-tab-array.schema.js +6 -0
  112. package/dist/schemas/lit-tabs-overview-tab-array.schema.js.map +1 -0
  113. package/dist/schemas/lit-tabs-overview-tab.schema.js +32 -0
  114. package/dist/schemas/lit-tabs-overview-tab.schema.js.map +1 -0
  115. package/dist/schemas/lit-tabs-overview.schema.js +29 -0
  116. package/dist/schemas/lit-tabs-overview.schema.js.map +1 -0
  117. package/dist/scripts/translate-locales.js +69 -0
  118. package/dist/scripts/translate-locales.js.map +1 -0
  119. package/dist/shared/filter-inputs.js +427 -0
  120. package/dist/shared/filter-inputs.js.map +1 -0
  121. package/dist/shared/lit-button.js +80 -63
  122. package/dist/shared/lit-button.js.map +1 -0
  123. package/dist/shared/lit-case-variables-tab-cell.js +226 -0
  124. package/dist/shared/lit-case-variables-tab-cell.js.map +1 -0
  125. package/dist/shared/lit-checkbox.js +171 -0
  126. package/dist/shared/lit-checkbox.js.map +1 -0
  127. package/dist/shared/lit-custom-popper.js +117 -0
  128. package/dist/shared/lit-custom-popper.js.map +1 -0
  129. package/dist/shared/lit-data-grid-action-buttons-popover.js +295 -0
  130. package/dist/shared/lit-data-grid-action-buttons-popover.js.map +1 -0
  131. package/dist/shared/lit-data-grid-density-popover.js +84 -0
  132. package/dist/shared/lit-data-grid-density-popover.js.map +1 -0
  133. package/dist/shared/lit-data-grid-export-popover.js +68 -0
  134. package/dist/shared/lit-data-grid-export-popover.js.map +1 -0
  135. package/dist/shared/lit-data-grid-operators-popover.js +114 -0
  136. package/dist/shared/lit-data-grid-operators-popover.js.map +1 -0
  137. package/dist/shared/lit-data-grid-row-actions.js +76 -0
  138. package/dist/shared/lit-data-grid-row-actions.js.map +1 -0
  139. package/dist/shared/lit-date-picker.js +606 -0
  140. package/dist/shared/lit-date-picker.js.map +1 -0
  141. package/dist/shared/lit-icon-button.js +105 -0
  142. package/dist/shared/lit-icon-button.js.map +1 -0
  143. package/dist/shared/lit-icon.js +284 -0
  144. package/dist/shared/lit-icon.js.map +1 -0
  145. package/dist/shared/lit-input.js +239 -0
  146. package/dist/shared/lit-input.js.map +1 -0
  147. package/dist/shared/lit-label.js +104 -0
  148. package/dist/shared/lit-label.js.map +1 -0
  149. package/dist/shared/lit-loader.js +69 -0
  150. package/dist/shared/lit-loader.js.map +1 -0
  151. package/dist/shared/lit-loading-bar.js +127 -0
  152. package/dist/shared/lit-loading-bar.js.map +1 -0
  153. package/dist/shared/lit-menu-item.js +99 -0
  154. package/dist/shared/lit-menu-item.js.map +1 -0
  155. package/dist/shared/lit-menu.js +42 -0
  156. package/dist/shared/lit-menu.js.map +1 -0
  157. package/dist/shared/lit-modal-body.js +22 -0
  158. package/dist/shared/lit-modal-body.js.map +1 -0
  159. package/dist/shared/lit-modal-footer.js +29 -0
  160. package/dist/shared/lit-modal-footer.js.map +1 -0
  161. package/dist/shared/lit-modal-header.js +36 -0
  162. package/dist/shared/lit-modal-header.js.map +1 -0
  163. package/dist/shared/lit-modal.js +169 -0
  164. package/dist/shared/lit-modal.js.map +1 -0
  165. package/dist/shared/lit-overflow-tooltip.js +103 -0
  166. package/dist/shared/lit-overflow-tooltip.js.map +1 -0
  167. package/dist/shared/lit-pill.js +88 -0
  168. package/dist/shared/lit-pill.js.map +1 -0
  169. package/dist/shared/lit-progress-bar.js +33 -32
  170. package/dist/shared/lit-progress-bar.js.map +1 -0
  171. package/dist/shared/lit-responsive-button.js +94 -0
  172. package/dist/shared/lit-responsive-button.js.map +1 -0
  173. package/dist/shared/lit-select-field.js +459 -0
  174. package/dist/shared/lit-select-field.js.map +1 -0
  175. package/dist/shared/lit-select.js +413 -0
  176. package/dist/shared/lit-select.js.map +1 -0
  177. package/dist/shared/lit-settings.js +77 -0
  178. package/dist/shared/lit-settings.js.map +1 -0
  179. package/dist/shared/lit-text-field.js +222 -0
  180. package/dist/shared/lit-text-field.js.map +1 -0
  181. package/dist/shared/lit-toggle.js +222 -0
  182. package/dist/shared/lit-toggle.js.map +1 -0
  183. package/dist/shared/lit-tooltip.js +166 -0
  184. package/dist/shared/lit-tooltip.js.map +1 -0
  185. package/dist/shared/simple-popper.js +266 -0
  186. package/dist/shared/simple-popper.js.map +1 -0
  187. package/dist/shared/simple-tooltip.js +198 -122
  188. package/dist/shared/simple-tooltip.js.map +1 -0
  189. package/dist/shared/styles/button-shared-styles.js +4 -5
  190. package/dist/shared/styles/button-shared-styles.js.map +1 -0
  191. package/dist/styles.js +169 -0
  192. package/dist/styles.js.map +1 -0
  193. package/dist/utils/currency.js +15 -12
  194. package/dist/utils/currency.js.map +1 -0
  195. package/dist/utils/custom-filters.js +80 -45
  196. package/dist/utils/custom-filters.js.map +1 -0
  197. package/dist/utils/date.js +21 -13
  198. package/dist/utils/date.js.map +1 -0
  199. package/dist/utils/getOperatorByType.js +65 -50
  200. package/dist/utils/getOperatorByType.js.map +1 -0
  201. package/dist/utils/getOverviewValue.js +177 -0
  202. package/dist/utils/getOverviewValue.js.map +1 -0
  203. package/dist/utils/localization.js +431 -29
  204. package/dist/utils/localization.js.map +1 -0
  205. package/dist/utils/utils.js +13 -0
  206. package/dist/utils/utils.js.map +1 -0
  207. package/dist/utils/validate-json-schema.js +8 -0
  208. package/dist/utils/validate-json-schema.js.map +1 -0
  209. package/dist/validators/validator.js +7 -0
  210. package/dist/validators/validator.js.map +1 -0
  211. package/package.json +74 -76
  212. package/dist/libs/xlsx.mini.min.js +0 -10
  213. package/dist/node_modules/@lit/reactive-element/css-tag.js +0 -42
  214. package/dist/node_modules/@lit/reactive-element/decorators/base.js +0 -9
  215. package/dist/node_modules/@lit/reactive-element/decorators/custom-element.js +0 -13
  216. package/dist/node_modules/@lit/reactive-element/decorators/property.js +0 -37
  217. package/dist/node_modules/@lit/reactive-element/decorators/query.js +0 -20
  218. package/dist/node_modules/@lit/reactive-element/decorators/state.js +0 -12
  219. package/dist/node_modules/@lit/reactive-element/reactive-element.js +0 -249
  220. package/dist/node_modules/lit-html/async-directive.js +0 -69
  221. package/dist/node_modules/lit-html/directive-helpers.js +0 -45
  222. package/dist/node_modules/lit-html/directive.js +0 -27
  223. package/dist/node_modules/lit-html/directives/ref.js +0 -42
  224. package/dist/node_modules/lit-html/directives/repeat.js +0 -61
  225. package/dist/node_modules/lit-html/directives/style-map.js +0 -36
  226. package/dist/node_modules/lit-html/directives/unsafe-html.js +0 -27
  227. package/dist/node_modules/lit-html/lit-html.js +0 -242
  228. package/dist/vite.svg +0 -1
@@ -1,671 +1,1061 @@
1
- import { LitElement as tt, html as u, css as et } from "lit";
2
- import it, { isEqual as ot } from "lodash";
3
- import { msg as R } from "@lit/localize";
4
- import { customElement as nt } from "../node_modules/@lit/reactive-element/decorators/custom-element.js";
5
- import { property as a } from "../node_modules/@lit/reactive-element/decorators/property.js";
6
- import { state as z } from "../node_modules/@lit/reactive-element/decorators/state.js";
7
- import { query as Q } from "../node_modules/@lit/reactive-element/decorators/query.js";
8
- import { unsafeHTML as j } from "../node_modules/lit-html/directives/unsafe-html.js";
9
- import { TableController as lt, filterFns as T, getFacetedUniqueValues as st, getExpandedRowModel as rt, getGroupedRowModel as at, getFacetedRowModel as dt, getFilteredRowModel as ct, getSortedRowModel as ht, getCoreRowModel as pt, flexRender as L } from "@tanstack/lit-table";
10
- import { repeat as V } from "../node_modules/lit-html/directives/repeat.js";
11
- import { VirtualizerController as K } from "@tanstack/lit-virtual";
12
- import { createRef as ut, ref as X } from "../node_modules/lit-html/directives/ref.js";
13
- import { styleMap as E } from "../node_modules/lit-html/directives/style-map.js";
14
- import gt from "sortablejs";
15
- import { formatDate as W } from "../utils/date.js";
16
- import { formatCurrency as mt } from "../utils/currency.js";
17
- import { dateFilterFn as Z, dateRangeFilterFn as Y, multiselectFilterFn as J } from "../utils/custom-filters.js";
18
- import { getLocale as ft, setLocale as bt } from "../utils/localization.js";
19
- import { getOperatorsByColumnType as yt } from "../utils/getOperatorByType.js";
20
- var wt = Object.defineProperty, xt = Object.getOwnPropertyDescriptor, l = (t, e, o, d) => {
21
- for (var s = d > 1 ? void 0 : d ? xt(e, o) : e, p = t.length - 1, g; p >= 0; p--)
22
- (g = t[p]) && (s = (d ? g(e, o, s) : g(s)) || s);
23
- return d && s && wt(e, o, s), s;
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
24
6
  };
25
- let n = class extends tt {
26
- constructor() {
27
- super(...arguments), this.row = [], this.columns = [], this.enableRowVirtualization = !0, this.enableColumnVirtualization = !1, this.enableColumnPinning = !0, this.enableColumnOrdering = !1, this.enableGrouping = !0, this.enablePinning = !0, this.exportData = !0, this.actionButtonsInMenu = !1, this.id = "", this.initialSorting = [], this.initialRowExpanded = {}, this.columnSizing = {}, this.leftPinnedColumns = [], this.rightPinnedColumns = [], this.enableFiltering = !0, this.enableSorting = !0, this.userLang = "cs", this.dateFormat = null, this.isLoading = !1, this.enableRowSelection = !1, this.initialFiltering = [], this.server = !1, this.scrollEndThreshold = 100, this.rowDensity = "standard", this.enableMultiRowSelection = !1, this.minFilterCharacters = 3, this.localizeDate = !0, this.rowsSelected = {}, this.enableSettings = !1, this.onSettingsChanged = () => {
28
- }, this.onCellKeyDown = (t, e) => {
29
- }, this.onColumnResize = () => {
30
- }, this.onColumnFiltersChanged = (t, e) => {
31
- }, this.onColumnSortChanged = (t, e) => {
32
- }, this.onRowSelectionChanged = (t, e) => {
33
- }, this.onColumnOrderChanged = (t, e) => {
34
- }, this.hideFooter = !1, this.columnVisibility = {}, this.onColumnVisibilityChanged = (t, e) => {
35
- }, this.onMouseDown = (t, e) => {
36
- }, this.onRowFocusChanged = (t, e) => {
37
- }, this.focusedRowIndex = null, this.autoFocus = !1, this.rowsCount = 0, this.isScrollable = !1, this.disableScrollLeft = !0, this.disableScrollRight = !1, this.columnOrder = [], this.isOpen = !1, this.filterText = "", this.isOpenModal = !1, this.scrollToEnd = !1, this.tableContainerRef = ut(), this.scrollInterval = null, this.currentScrollTop = 0, this.lastSelectedIndex = null, this.getCellBackgroundColor = (t) => t.getIsGrouped() ? this.columnGroupedColor ?? "var(--color-primary-light, #f0fadf)" : t.getIsAggregated() ? this.rowAggregationColor ?? "var(--color-warning-light, #ffe1a8)" : t.getIsPlaceholder() ? "var(--background-default, #eff3f4)" : t.column.getIsPinned() ? "var(--background-paper, #fff)" : "transparent", this.updateScrollState = () => {
38
- const t = this.tableContainerRef.value;
39
- if (t) {
40
- const e = t.scrollWidth > t.clientWidth;
41
- this.isScrollable = e, this.disableScrollLeft = t.scrollLeft === 0, this.disableScrollRight = t.scrollLeft + t.clientWidth >= t.scrollWidth, this.currentScrollTop = t.scrollTop;
42
- }
43
- };
44
- }
45
- get rows() {
46
- return [...this.row || []];
47
- }
48
- get getColumns() {
49
- return [...this.columns || []];
50
- }
51
- // lifecycle
52
- connectedCallback() {
53
- this.initRowVirtualizer(), this.initColumnVirtualizer(), this.initTable(), window.addEventListener("resize", this.updateScrollState), super.connectedCallback();
54
- }
55
- disconnectedCallback() {
56
- super.disconnectedCallback(), window.removeEventListener("resize", this.updateScrollState);
57
- }
58
- updated(t) {
59
- var e, o, d, s, p;
60
- if (t.has("rowsCount") && this.enableRowVirtualization) {
61
- this.scrollToEnd = !1;
62
- const g = (e = this.rowVirtualizerController) == null ? void 0 : e.getVirtualizer();
63
- g && g.setOptions({
64
- ...g.options,
65
- count: (d = (o = this.table) == null ? void 0 : o.getRowModel()) == null ? void 0 : d.rows.length
66
- }), this.requestUpdate();
7
+ import { css, html, LitElement } from 'lit';
8
+ import _, { isEqual } from 'lodash';
9
+ import { msg } from '@lit/localize';
10
+ import { customElement, property, state, query } from 'lit/decorators.js';
11
+ import { unsafeHTML } from 'lit/directives/unsafe-html.js';
12
+ import { TableController, getCoreRowModel, flexRender, getSortedRowModel, getFilteredRowModel, getFacetedRowModel, getFacetedUniqueValues, getGroupedRowModel, getExpandedRowModel, filterFns, } from '@tanstack/lit-table';
13
+ import { repeat } from 'lit/directives/repeat.js';
14
+ import { VirtualizerController } from '@tanstack/lit-virtual';
15
+ import { createRef, ref } from 'lit/directives/ref.js';
16
+ import { styleMap } from 'lit/directives/style-map.js';
17
+ import Sortable from 'sortablejs';
18
+ // components
19
+ import '../shared/filter-inputs.js';
20
+ import '../shared/lit-icon.js';
21
+ import '../shared/lit-icon-button.js';
22
+ import '../shared/lit-button.js';
23
+ import '../shared/lit-responsive-button.js';
24
+ import '../shared/lit-data-grid-export-popover.js';
25
+ import '../shared/lit-data-grid-action-buttons-popover.js';
26
+ import '../assets/illustration/not-found.js';
27
+ import '../shared/lit-data-grid-density-popover.js';
28
+ import '../shared/lit-loading-bar.js';
29
+ import '../shared/lit-data-grid-row-actions.js';
30
+ import '../shared/simple-tooltip.js';
31
+ import '../shared/lit-checkbox.js';
32
+ import '../shared/lit-overflow-tooltip.js';
33
+ import './components-settings/data-grid-settings.js';
34
+ // utils
35
+ import { formatDate } from '../utils/date.js';
36
+ import { formatCurrency } from '../utils/currency.js';
37
+ import { dateFilterFn, multiselectFilterFn, dateRangeFilterFn } from '../utils/custom-filters.js';
38
+ import { setLocale, getLocale } from '../utils/localization.js';
39
+ import { getOperatorsByColumnType } from '../utils/getOperatorByType.js';
40
+ let LitDataGridTanstack = class LitDataGridTanstack extends LitElement {
41
+ constructor() {
42
+ super(...arguments);
43
+ this.row = [];
44
+ this.columns = [];
45
+ this.enableRowVirtualization = true;
46
+ this.enableColumnVirtualization = false;
47
+ this.enableColumnPinning = true;
48
+ this.enableColumnOrdering = false;
49
+ this.enableGrouping = true;
50
+ this.enablePinning = true;
51
+ this.exportData = true;
52
+ this.actionButtonsInMenu = false;
53
+ this.id = '';
54
+ this.initialSorting = [];
55
+ this.initialRowExpanded = {};
56
+ this.columnSizing = {};
57
+ this.leftPinnedColumns = [];
58
+ this.rightPinnedColumns = [];
59
+ this.enableFiltering = true;
60
+ this.enableSorting = true;
61
+ this.userLang = 'cs';
62
+ this.dateFormat = null;
63
+ this.isLoading = false;
64
+ this.enableRowSelection = false;
65
+ this.initialFiltering = [];
66
+ this.server = false;
67
+ this.scrollEndThreshold = 100;
68
+ this.rowDensity = 'standard';
69
+ this.enableMultiRowSelection = false;
70
+ this.minFilterCharacters = 3;
71
+ this.localizeDate = true;
72
+ this.rowsSelected = {};
73
+ this.enableSettings = false;
74
+ this.onSettingsChanged = () => { };
75
+ this.onCellKeyDown = (event, row) => { };
76
+ this.onColumnResize = () => { };
77
+ this.onColumnFiltersChanged = (table, filterModel) => { };
78
+ this.onColumnSortChanged = (table, sortModel) => { };
79
+ this.onRowSelectionChanged = (table, selectedRows) => { };
80
+ this.onColumnOrderChanged = (table, columnOrder) => { };
81
+ this.hideFooter = false;
82
+ this.columnVisibility = {};
83
+ this.onColumnVisibilityChanged = (table, columnVisibility) => { };
84
+ this.onMouseDown = (e, row) => { };
85
+ this.onRowFocusChanged = (table, rowIndex) => { };
86
+ this.focusedRowIndex = null;
87
+ this.autoFocus = false;
88
+ this.rowsCount = 0;
89
+ this.isScrollable = false;
90
+ this.disableScrollLeft = true;
91
+ this.disableScrollRight = false;
92
+ this.columnOrder = [];
93
+ this.isOpen = false;
94
+ this.filterText = '';
95
+ this.isOpenModal = false;
96
+ this.scrollToEnd = false;
97
+ this.tableContainerRef = createRef();
98
+ this.scrollInterval = null;
99
+ this.currentScrollTop = 0;
100
+ this.lastSelectedIndex = null;
101
+ this.getCellBackgroundColor = (cell) => {
102
+ if (cell.getIsGrouped()) {
103
+ return this.columnGroupedColor ?? `var(--color-primary-light, #f0fadf)`;
104
+ }
105
+ if (cell.getIsAggregated()) {
106
+ return this.rowAggregationColor ?? `var(--color-warning-light, #ffe1a8)`;
107
+ }
108
+ if (cell.getIsPlaceholder()) {
109
+ return `var(--background-default, #eff3f4)`;
110
+ }
111
+ if (cell.column.getIsPinned()) {
112
+ return `var(--background-paper, #fff)`;
113
+ }
114
+ return 'transparent';
115
+ };
116
+ this.updateScrollState = () => {
117
+ const grid = this.tableContainerRef.value;
118
+ if (grid) {
119
+ const canScrollHorizontally = grid.scrollWidth > grid.clientWidth;
120
+ this.isScrollable = canScrollHorizontally;
121
+ this.disableScrollLeft = grid.scrollLeft === 0;
122
+ this.disableScrollRight = grid.scrollLeft + grid.clientWidth >= grid.scrollWidth;
123
+ this.currentScrollTop = grid.scrollTop;
124
+ }
125
+ };
67
126
  }
68
- if ((t.has("columns") || t.has("columnVisibility")) && this.enableColumnVirtualization) {
69
- const g = (s = this.columnVirtualizerController) == null ? void 0 : s.getVirtualizer();
70
- g && g.setOptions({
71
- ...g.options,
72
- count: (p = this.table) == null ? void 0 : p.getVisibleLeafColumns().length
73
- });
127
+ get rows() {
128
+ return [...(this.row || [])];
74
129
  }
75
- (t.has("row") || t.has("columns")) && (this.initTable(), this.requestUpdate());
76
- }
77
- firstUpdated() {
78
- const t = this.tableContainerRef.value;
79
- t && t.addEventListener("scroll", this.updateScrollState), this.updateScrollState(), this.initSortable(), this._container.addEventListener("scroll", this.handleScroll.bind(this)), this.autoFocus && setTimeout(() => {
80
- var e, o;
81
- if (this.focusedRowIndex !== null && this.focusedRowIndex !== void 0)
82
- (e = this.focusRow) == null || e.call(this, this.focusedRowIndex);
83
- else {
84
- const d = this.table.getSelectedRowModel().rows;
85
- d.length > 0 && ((o = this.focusRow) == null || o.call(this, d[0].index));
86
- }
87
- }, 0);
88
- }
89
- toggleModal() {
90
- this.isOpenModal = !this.isOpenModal;
91
- }
92
- async initSortable() {
93
- var e;
94
- if (!this.enableColumnOrdering) return;
95
- const t = (e = this.shadowRoot) == null ? void 0 : e.querySelector("thead tr.head");
96
- t && gt.create(t, {
97
- animation: 150,
98
- direction: "horizontal",
99
- handle: ".drag-handle",
100
- filter: 'th[data-index="checkbox"], th[data-index="actions"]',
101
- preventOnFilter: !1,
102
- onMove: (o) => {
103
- var v, I, i, r, b, c, D, y;
104
- const d = o.dragged.getAttribute("data-index"), s = o.related.getAttribute("data-index"), p = ["checkbox", "actions"];
105
- if (p.includes(d) || p.includes(s))
106
- return !1;
107
- const g = this.table.getHeaderGroups()[0].headers, h = g.find((F) => F.id === d), m = g.find((F) => F.id === s);
108
- if (!h || !m) return !1;
109
- const x = (I = (v = h.column).getIsPinned) == null ? void 0 : I.call(v), C = (r = (i = m.column).getIsPinned) == null ? void 0 : r.call(i), w = (c = (b = h.column).getIsGrouped) == null ? void 0 : c.call(b), S = (y = (D = m.column).getIsGrouped) == null ? void 0 : y.call(D);
110
- return !(x || C || w || S);
111
- },
112
- onEnd: () => {
113
- const o = Array.from(t.querySelectorAll("th")).map((d) => d.getAttribute("data-index")).filter((d) => {
114
- var p, g, h, m;
115
- if (!d || d === "checkbox" || d === "actions") return !1;
116
- const s = this.table.getHeaderGroups()[0].headers.find((x) => x.id === d);
117
- return s ? !((g = (p = s.column).getIsPinned) != null && g.call(p)) && !((m = (h = s.column).getIsGrouped) != null && m.call(h)) : !1;
130
+ get getColumns() {
131
+ return [...(this.columns || [])];
132
+ }
133
+ // lifecycle
134
+ connectedCallback() {
135
+ this.initRowVirtualizer();
136
+ this.initColumnVirtualizer();
137
+ this.initTable();
138
+ window.addEventListener('resize', this.updateScrollState);
139
+ super.connectedCallback();
140
+ }
141
+ disconnectedCallback() {
142
+ super.disconnectedCallback();
143
+ window.removeEventListener('resize', this.updateScrollState);
144
+ }
145
+ updated(changedProperties) {
146
+ if (changedProperties.has('rowsCount') && this.enableRowVirtualization) {
147
+ this.scrollToEnd = false;
148
+ const virtualizer = this.rowVirtualizerController?.getVirtualizer();
149
+ if (virtualizer) {
150
+ virtualizer.setOptions({
151
+ ...virtualizer.options,
152
+ count: this.table?.getRowModel()?.rows.length,
153
+ });
154
+ }
155
+ this.requestUpdate();
156
+ }
157
+ if ((changedProperties.has('columns') || changedProperties.has('columnVisibility')) &&
158
+ this.enableColumnVirtualization) {
159
+ const virtualizer = this.columnVirtualizerController?.getVirtualizer();
160
+ if (virtualizer) {
161
+ virtualizer.setOptions({
162
+ ...virtualizer.options,
163
+ count: this.table?.getVisibleLeafColumns().length,
164
+ });
165
+ }
166
+ }
167
+ if (changedProperties.has('row') || changedProperties.has('columns')) {
168
+ this.initTable();
169
+ this.requestUpdate();
170
+ }
171
+ }
172
+ firstUpdated() {
173
+ const grid = this.tableContainerRef.value;
174
+ if (grid) {
175
+ grid.addEventListener('scroll', this.updateScrollState);
176
+ }
177
+ this.updateScrollState();
178
+ this.initSortable();
179
+ this._container.addEventListener('scroll', this.handleScroll.bind(this));
180
+ // focus row by index
181
+ if (this.autoFocus) {
182
+ setTimeout(() => {
183
+ if (this.focusedRowIndex !== null && this.focusedRowIndex !== undefined) {
184
+ this.focusRow?.(this.focusedRowIndex);
185
+ }
186
+ else {
187
+ // first selected row if exists
188
+ const selectedRows = this.table.getSelectedRowModel().rows;
189
+ if (selectedRows.length > 0) {
190
+ this.focusRow?.(selectedRows[0].index);
191
+ }
192
+ }
193
+ }, 0);
194
+ }
195
+ }
196
+ toggleModal() {
197
+ this.isOpenModal = !this.isOpenModal;
198
+ }
199
+ async initSortable() {
200
+ if (!this.enableColumnOrdering)
201
+ return;
202
+ const headerRow = this.shadowRoot?.querySelector('thead tr.head');
203
+ if (!headerRow)
204
+ return;
205
+ Sortable.create(headerRow, {
206
+ animation: 150,
207
+ direction: 'horizontal',
208
+ handle: '.drag-handle',
209
+ filter: 'th[data-index="checkbox"], th[data-index="actions"]',
210
+ preventOnFilter: false,
211
+ onMove: (evt) => {
212
+ const dragged = evt.dragged.getAttribute('data-index');
213
+ const target = evt.related.getAttribute('data-index');
214
+ const disallowed = ['checkbox', 'actions'];
215
+ if (disallowed.includes(dragged) || disallowed.includes(target)) {
216
+ return false;
217
+ }
218
+ const headers = this.table.getHeaderGroups()[0].headers;
219
+ const draggedHeader = headers.find((header) => header.id === dragged);
220
+ const targetHeader = headers.find((header) => header.id === target);
221
+ if (!draggedHeader || !targetHeader)
222
+ return false;
223
+ const isDraggedPinned = draggedHeader.column.getIsPinned?.();
224
+ const isTargetPinned = targetHeader.column.getIsPinned?.();
225
+ const isDraggedGrouped = draggedHeader.column.getIsGrouped?.();
226
+ const isTargetGrouped = targetHeader.column.getIsGrouped?.();
227
+ return !(isDraggedPinned || isTargetPinned || isDraggedGrouped || isTargetGrouped);
228
+ },
229
+ onEnd: () => {
230
+ const newOrder = Array.from(headerRow.querySelectorAll('th'))
231
+ .map((th) => th.getAttribute('data-index'))
232
+ .filter((id) => {
233
+ if (!id || id === 'checkbox' || id === 'actions')
234
+ return false;
235
+ const header = this.table
236
+ .getHeaderGroups()[0]
237
+ .headers.find((h) => h.id === id);
238
+ if (!header)
239
+ return false;
240
+ return !header.column.getIsPinned?.() && !header.column.getIsGrouped?.();
241
+ });
242
+ this.table.setColumnOrder(newOrder);
243
+ },
118
244
  });
119
- this.table.setColumnOrder(o);
120
- }
121
- });
122
- }
123
- async loadXLSX() {
124
- !window.XLSX && !this.server && await new Promise((t) => {
125
- const e = document.createElement("script");
126
- e.src = "../../public/libs/xlsx.mini.min.js", e.onload = t, document.head.appendChild(e);
127
- });
128
- }
129
- // row density
130
- getRowHeight() {
131
- switch (this.rowDensity) {
132
- case "compact":
133
- return 31;
134
- case "standard":
135
- return 38;
136
- case "comfort":
137
- return 50;
138
- default:
139
- return 38;
140
245
  }
141
- }
142
- getButtonSize() {
143
- switch (this.rowDensity) {
144
- case "compact":
145
- return "small";
146
- case "standard":
147
- return "medium";
148
- case "comfort":
149
- return "large";
150
- default:
151
- return "medium";
246
+ async loadXLSX() {
247
+ if (!window.XLSX && !this.server) {
248
+ await new Promise((resolve) => {
249
+ const script = document.createElement('script');
250
+ script.src = '../../public/libs/xlsx.mini.min.js';
251
+ script.onload = resolve;
252
+ document.head.appendChild(script);
253
+ });
254
+ }
152
255
  }
153
- }
154
- handleSetDensity(t) {
155
- this.rowDensity = t, this.rowDensityChange && this.rowDensityChange(this.table, t);
156
- }
157
- handleMouseDown(t, e) {
158
- this.onMouseDown && this.onMouseDown(t, e);
159
- }
160
- handleFilterTabNavigation(t) {
161
- var g, h, m;
162
- const { direction: e, currentFilter: o } = t.detail, d = Array.from(((g = this.shadowRoot) == null ? void 0 : g.querySelectorAll("filter-inputs")) || []);
163
- if (d.length === 0) return;
164
- const s = d.indexOf(o);
165
- let p;
166
- if (e === "forward")
167
- if (s === d.length - 1) {
168
- const x = (h = this.shadowRoot) == null ? void 0 : h.querySelector(".grid");
169
- x && (x.scrollLeft = 0), setTimeout(() => {
170
- var w;
171
- const C = (w = this.shadowRoot) == null ? void 0 : w.querySelector("filter-inputs");
172
- C && C.focus();
173
- }, 0);
174
- return;
175
- } else
176
- p = s + 1;
177
- else if (s === 0) {
178
- const x = (m = this.shadowRoot) == null ? void 0 : m.querySelector(".grid");
179
- x && (x.scrollLeft = x.scrollWidth), setTimeout(() => {
180
- var w;
181
- const C = Array.from(
182
- ((w = this.shadowRoot) == null ? void 0 : w.querySelectorAll("filter-inputs")) || []
183
- );
184
- C.length > 0 && C[C.length - 1].focus();
185
- }, 0);
186
- return;
187
- } else
188
- p = s - 1;
189
- d[p].focus();
190
- }
191
- // virtualization
192
- initRowVirtualizer() {
193
- var t, e, o;
194
- this.rowVirtualizerController = new K(this, {
195
- count: ((e = (t = this.table) == null ? void 0 : t.getRowModel()) == null ? void 0 : e.rows.length) || ((o = this.row) == null ? void 0 : o.length) || 1,
196
- getScrollElement: () => this.tableContainerRef.value,
197
- estimateSize: () => this.getRowHeight(),
198
- overscan: 5,
199
- initialOffset: this.currentScrollTop,
200
- enabled: this.enableRowVirtualization
201
- });
202
- }
203
- initTable() {
204
- this.tableController = new lt(this);
205
- }
206
- initColumnVirtualizer() {
207
- var t;
208
- this.columnVirtualizerController = new K(this, {
209
- horizontal: !0,
210
- count: ((t = this.table) == null ? void 0 : t.getVisibleLeafColumns().length) || this.columns.length || 1,
211
- getScrollElement: () => this.tableContainerRef.value,
212
- estimateSize: (e) => {
213
- var o;
214
- return ((o = this.table.getVisibleLeafColumns()[e]) == null ? void 0 : o.getSize()) || 200;
215
- },
216
- overscan: 5,
217
- enabled: this.enableColumnVirtualization
218
- });
219
- }
220
- handleRowClick(t, e) {
221
- var s, p;
222
- (s = this.onRowClick) == null || s.call(this, t, this.table, e), (p = this.onRowFocusChanged) == null || p.call(this, this.table, e.index);
223
- const o = t.shiftKey, d = t.ctrlKey || t.metaKey;
224
- if (this.enableRowSelection && e.getCanSelect() && (d || o)) {
225
- const { rows: g } = this.table.getRowModel();
226
- if (this.enableMultiRowSelection && o && this.focusedRowIndex !== null && this.focusedRowIndex !== void 0) {
227
- const [h, m] = [
228
- Math.min(this.focusedRowIndex, e.index),
229
- Math.max(this.focusedRowIndex, e.index)
230
- ], x = g.slice(h, m + 1).map((w) => w.id), C = { ...this.rowsSelected };
231
- x.forEach((w) => C[w] = !0), this.table.setRowSelection(C);
232
- } else if (d && this.enableMultiRowSelection) {
233
- const h = { ...this.rowsSelected };
234
- h[e.id] ? delete h[e.id] : h[e.id] = !0, this.table.setRowSelection(h);
235
- } else {
236
- const h = { [e.id]: !0 };
237
- this.table.setRowSelection(h);
238
- }
256
+ // row density
257
+ getRowHeight() {
258
+ switch (this.rowDensity) {
259
+ case 'compact':
260
+ return 31;
261
+ case 'standard':
262
+ return 38;
263
+ case 'comfort':
264
+ return 50;
265
+ default:
266
+ return 38;
267
+ }
239
268
  }
240
- this.focusedRowIndex = e.index;
241
- }
242
- handleRowDoubleClick(t) {
243
- this.onRowDoubleClick && this.onRowDoubleClick(this.table, t);
244
- }
245
- handleKeyDown(t) {
246
- var d;
247
- const e = this.table.getRowModel().rows;
248
- if (!e.length) return;
249
- let o = this.focusedRowIndex ?? e.findIndex((s) => this.rowsSelected[s.id]);
250
- if (this.enableRowSelection) {
251
- if (o === -1 && (o = 0), t.key === "ArrowDown" && t.shiftKey && this.enableMultiRowSelection) {
252
- t.preventDefault();
253
- const s = o + 1;
254
- if (s < e.length) {
255
- const p = e[s].id;
256
- this.table.setRowSelection((g) => ({
257
- ...g,
258
- [p]: !g[p]
259
- })), this.focusRow(s);
269
+ getButtonSize() {
270
+ switch (this.rowDensity) {
271
+ case 'compact':
272
+ return 'small';
273
+ case 'standard':
274
+ return 'medium';
275
+ case 'comfort':
276
+ return 'large';
277
+ default:
278
+ return 'medium';
260
279
  }
261
- } else if (t.key === "ArrowUp" && t.shiftKey && this.enableMultiRowSelection) {
262
- t.preventDefault();
263
- const s = o - 1;
264
- if (s >= 0) {
265
- const p = e[s].id;
266
- this.table.setRowSelection((g) => ({
267
- ...g,
268
- [p]: !g[p]
269
- })), this.focusRow(s);
280
+ }
281
+ handleSetDensity(density) {
282
+ this.rowDensity = density;
283
+ if (this.rowDensityChange) {
284
+ this.rowDensityChange(this.table, density);
270
285
  }
271
- } else if (t.key === "ArrowDown" && o < e.length - 1) {
272
- t.preventDefault();
273
- const s = o + 1;
274
- this.focusRow(s);
275
- } else if (t.key === "ArrowUp" && o > 0) {
276
- t.preventDefault();
277
- const s = o - 1;
278
- this.focusRow(s);
279
- }
280
286
  }
281
- (d = this.onCellKeyDown) == null || d.call(this, t, e[o]);
282
- }
283
- focusRow(t) {
284
- var o, d;
285
- const e = t ?? this.focusedRowIndex;
286
- (o = this.rowVirtualizerController) == null || o.getVirtualizer().scrollToIndex(e ?? 0, { align: "auto" }), setTimeout(() => {
287
- var p;
288
- const s = (p = this.shadowRoot) == null ? void 0 : p.querySelector(
289
- `[data-row-index="${e}"]`
290
- );
291
- this.enableRowVirtualization ? s && setTimeout(() => {
292
- s.focus();
293
- }, 0) : s && (s.focus(), s.scrollIntoView({ block: "nearest" }));
294
- }, 100), (d = this.onRowFocusChanged) == null || d.call(this, this.table, e), this.focusedRowIndex = e;
295
- }
296
- getTanstackColumns(t) {
297
- return t.map((e) => ({
298
- id: e.field,
299
- accessorKey: e.field,
300
- accessorFn: (o) => (e.type === "date" || e.type === "dateTime" || e.type === "dateTimeRange" || e.type === "dateRange") && !this.server && this.localizeDate ? e.accessorFn ? W(
301
- e.accessorFn(o),
302
- this.userLang || "cs",
303
- e.type === "date" || e.type === "dateRange" ? void 0 : !0,
304
- this.dateFormat
305
- ) : W(
306
- o[e.field],
307
- this.userLang || "cs",
308
- e.type === "date" || e.type === "dateRange" ? void 0 : !0,
309
- this.dateFormat
310
- ) : e.accessorFn ? e.accessorFn(o) : o[e.field],
311
- type: e.type,
312
- header: e.headerName,
313
- cell: (o) => {
314
- var s;
315
- const d = o.getValue();
316
- return e.type === "actions" ? u`
287
+ handleMouseDown(event, row) {
288
+ if (this.onMouseDown) {
289
+ this.onMouseDown(event, row);
290
+ }
291
+ }
292
+ handleFilterTabNavigation(event) {
293
+ const { direction, currentFilter } = event.detail;
294
+ // Získajte všetky filter-inputs elementy z DOM
295
+ const filterInputs = Array.from(this.shadowRoot?.querySelectorAll('filter-inputs') || []);
296
+ if (filterInputs.length === 0)
297
+ return;
298
+ const currentIndex = filterInputs.indexOf(currentFilter);
299
+ let nextIndex;
300
+ if (direction === 'forward') {
301
+ // Ak je aktuálny filter posledný vo viditeľnom zozname
302
+ if (currentIndex === filterInputs.length - 1) {
303
+ // Scroll na začiatok (ľavá strana)
304
+ const grid = this.shadowRoot?.querySelector('.grid');
305
+ if (grid) {
306
+ grid.scrollLeft = 0;
307
+ }
308
+ // Po vykonaní scrollu čakáme krátko a potom nastavený focus na prvý filter
309
+ setTimeout(() => {
310
+ const firstFilter = this.shadowRoot?.querySelector('filter-inputs');
311
+ if (firstFilter) {
312
+ firstFilter.focus();
313
+ }
314
+ }, 0);
315
+ return;
316
+ }
317
+ else {
318
+ nextIndex = currentIndex + 1;
319
+ }
320
+ }
321
+ else {
322
+ // Podobne môžeme spracovať aj spätnú navigáciu
323
+ if (currentIndex === 0) {
324
+ const grid = this.shadowRoot?.querySelector('.grid');
325
+ if (grid) {
326
+ // Scroll na koniec (pravá strana)
327
+ grid.scrollLeft = grid.scrollWidth;
328
+ }
329
+ setTimeout(() => {
330
+ const filters = Array.from(this.shadowRoot?.querySelectorAll('filter-inputs') || []);
331
+ if (filters.length > 0) {
332
+ filters[filters.length - 1].focus();
333
+ }
334
+ }, 0);
335
+ return;
336
+ }
337
+ else {
338
+ nextIndex = currentIndex - 1;
339
+ }
340
+ }
341
+ // Nastav focus na ďalší filter podľa smeru
342
+ filterInputs[nextIndex].focus();
343
+ }
344
+ // virtualization
345
+ initRowVirtualizer() {
346
+ this.rowVirtualizerController = new VirtualizerController(this, {
347
+ count: this.table?.getRowModel()?.rows.length || this.row?.length || 1,
348
+ getScrollElement: () => this.tableContainerRef.value,
349
+ estimateSize: () => this.getRowHeight(),
350
+ overscan: 5,
351
+ initialOffset: this.currentScrollTop,
352
+ enabled: this.enableRowVirtualization,
353
+ });
354
+ }
355
+ initTable() {
356
+ this.tableController = new TableController(this);
357
+ }
358
+ initColumnVirtualizer() {
359
+ this.columnVirtualizerController = new VirtualizerController(this, {
360
+ horizontal: true,
361
+ count: this.table?.getVisibleLeafColumns().length || this.columns.length || 1,
362
+ getScrollElement: () => this.tableContainerRef.value,
363
+ estimateSize: (index) => this.table.getVisibleLeafColumns()[index]?.getSize() || 200,
364
+ overscan: 5,
365
+ enabled: this.enableColumnVirtualization,
366
+ });
367
+ }
368
+ handleRowClick(event, row) {
369
+ this.onRowClick?.(event, this.table, row);
370
+ this.onRowFocusChanged?.(this.table, row.index);
371
+ const isShift = event.shiftKey;
372
+ const isCtrlOrMeta = event.ctrlKey || event.metaKey;
373
+ if (this.enableRowSelection && row.getCanSelect() && (isCtrlOrMeta || isShift)) {
374
+ const { rows } = this.table.getRowModel();
375
+ if (this.enableMultiRowSelection &&
376
+ isShift &&
377
+ this.focusedRowIndex !== null &&
378
+ this.focusedRowIndex !== undefined) {
379
+ const [start, end] = [
380
+ Math.min(this.focusedRowIndex, row.index),
381
+ Math.max(this.focusedRowIndex, row.index),
382
+ ];
383
+ const ids = rows.slice(start, end + 1).map((r) => r.id);
384
+ const selected = { ...this.rowsSelected };
385
+ ids.forEach((id) => (selected[id] = true));
386
+ this.table.setRowSelection(selected);
387
+ }
388
+ else if (isCtrlOrMeta && this.enableMultiRowSelection) {
389
+ // Ctrl/Cmd+Click: toggle row selection
390
+ const selected = { ...this.rowsSelected };
391
+ if (selected[row.id]) {
392
+ delete selected[row.id];
393
+ }
394
+ else {
395
+ selected[row.id] = true;
396
+ }
397
+ this.table.setRowSelection(selected);
398
+ }
399
+ else {
400
+ // Single click: select only this row
401
+ const selected = { [row.id]: true };
402
+ this.table.setRowSelection(selected);
403
+ }
404
+ }
405
+ this.focusedRowIndex = row.index;
406
+ }
407
+ handleRowDoubleClick(row) {
408
+ if (this.onRowDoubleClick) {
409
+ this.onRowDoubleClick(this.table, row);
410
+ }
411
+ }
412
+ handleKeyDown(e) {
413
+ const rows = this.table.getRowModel().rows;
414
+ if (!rows.length)
415
+ return;
416
+ let index = this.focusedRowIndex ?? rows.findIndex((row) => this.rowsSelected[row.id]);
417
+ if (this.enableRowSelection) {
418
+ if (index === -1)
419
+ index = 0;
420
+ if (e.key === 'ArrowDown' && e.shiftKey && this.enableMultiRowSelection) {
421
+ e.preventDefault();
422
+ const nextIndex = index + 1;
423
+ if (nextIndex < rows.length) {
424
+ const nextRowId = rows[nextIndex].id;
425
+ this.table.setRowSelection((prev) => ({
426
+ ...prev,
427
+ [nextRowId]: !prev[nextRowId],
428
+ }));
429
+ this.focusRow(nextIndex);
430
+ }
431
+ }
432
+ else if (e.key === 'ArrowUp' && e.shiftKey && this.enableMultiRowSelection) {
433
+ e.preventDefault();
434
+ const prevIndex = index - 1;
435
+ if (prevIndex >= 0) {
436
+ const prevRowId = rows[prevIndex].id;
437
+ this.table.setRowSelection((prev) => ({
438
+ ...prev,
439
+ [prevRowId]: !prev[prevRowId],
440
+ }));
441
+ this.focusRow(prevIndex);
442
+ }
443
+ }
444
+ else if (e.key === 'ArrowDown' && index < rows.length - 1) {
445
+ e.preventDefault();
446
+ const nextIndex = index + 1;
447
+ this.focusRow(nextIndex);
448
+ }
449
+ else if (e.key === 'ArrowUp' && index > 0) {
450
+ e.preventDefault();
451
+ const prevIndex = index - 1;
452
+ this.focusRow(prevIndex);
453
+ }
454
+ }
455
+ this.onCellKeyDown?.(e, rows[index]);
456
+ }
457
+ focusRow(index) {
458
+ const rowIndex = index ?? this.focusedRowIndex;
459
+ // Scroll to the row using virtualizer if available
460
+ this.rowVirtualizerController
461
+ ?.getVirtualizer()
462
+ .scrollToIndex(rowIndex ?? 0, { align: 'auto' });
463
+ setTimeout(() => {
464
+ const row = this.shadowRoot?.querySelector(`[data-row-index="${rowIndex}"]`);
465
+ // Find the row element in the shadow DOM
466
+ if (this.enableRowVirtualization) {
467
+ if (row) {
468
+ setTimeout(() => {
469
+ row.focus();
470
+ }, 0);
471
+ }
472
+ }
473
+ else {
474
+ if (row) {
475
+ row.focus();
476
+ row.scrollIntoView({ block: 'nearest' });
477
+ }
478
+ }
479
+ }, 100);
480
+ this.onRowFocusChanged?.(this.table, rowIndex);
481
+ this.focusedRowIndex = rowIndex;
482
+ }
483
+ getTanstackColumns(columns) {
484
+ return columns.map((column) => {
485
+ return {
486
+ id: column.field,
487
+ accessorKey: column.field,
488
+ accessorFn: (originalRow) => (column.type === 'date' ||
489
+ column.type === 'dateTime' ||
490
+ column.type === 'dateTimeRange' ||
491
+ column.type === 'dateRange') &&
492
+ !this.server &&
493
+ this.localizeDate
494
+ ? column.accessorFn
495
+ ? formatDate(column.accessorFn(originalRow), this.userLang || 'cs', column.type === 'date' || column.type === 'dateRange'
496
+ ? undefined
497
+ : true, this.dateFormat)
498
+ : formatDate(originalRow[column.field], this.userLang || 'cs', column.type === 'date' || column.type === 'dateRange'
499
+ ? undefined
500
+ : true, this.dateFormat)
501
+ : column.accessorFn
502
+ ? column.accessorFn(originalRow)
503
+ : originalRow[column.field],
504
+ type: column.type,
505
+ header: column.headerName,
506
+ cell: (props) => {
507
+ const value = props.getValue();
508
+ if (column.type === 'actions') {
509
+ return html `
317
510
  <lit-data-grid-row-actions
318
- .buttons=${((s = e.getActions) == null ? void 0 : s.call(e, o)) || []}
511
+ .buttons=${column.getActions?.(props) || []}
319
512
  ></lit-data-grid-row-actions>
320
- ` : e.type === "currency" ? mt(d, this.userLang || "cs") : e.cell ? e.cell(o, u, j) : d;
321
- },
322
- filterFn: (() => {
323
- switch (e.type) {
324
- case "numberRange":
325
- return T.inNumberRange;
326
- case "select":
327
- return T.weakEquals;
328
- case "multiselect":
329
- return J;
330
- case "number":
331
- case "currency":
332
- return T.weakEquals;
333
- case "dateRange":
334
- case "dateTimeRange":
335
- return Y;
336
- case "date":
337
- case "dateTime":
338
- return Z;
339
- case "string":
340
- default:
341
- return T.includesString;
513
+ `;
514
+ }
515
+ if (column.type === 'currency') {
516
+ return formatCurrency(value, this.userLang || 'cs');
517
+ }
518
+ return column.cell ? column.cell(props, html, unsafeHTML) : value;
519
+ },
520
+ filterFn: (() => {
521
+ switch (column.type) {
522
+ case 'numberRange':
523
+ return filterFns.inNumberRange;
524
+ case 'select':
525
+ return filterFns.weakEquals;
526
+ case 'multiselect':
527
+ return multiselectFilterFn;
528
+ case 'number':
529
+ case 'currency':
530
+ return filterFns.weakEquals;
531
+ case 'dateRange':
532
+ case 'dateTimeRange':
533
+ return dateRangeFilterFn;
534
+ case 'date':
535
+ case 'dateTime':
536
+ return dateFilterFn;
537
+ case 'string':
538
+ default:
539
+ return filterFns.includesString;
540
+ }
541
+ })(),
542
+ enableSorting: column.enableSorting ?? true,
543
+ enableColumnFilter: this.enableFiltering && (column.enableFilter ?? true),
544
+ size: column.size || this.columnDefaultSize || undefined,
545
+ maxSize: column.maxSize || this.columnDefaultMaxSize || 500,
546
+ minSize: column.minSize || this.columnDefaultMinSize || 100,
547
+ meta: {
548
+ filterVariant: column.type ?? 'string',
549
+ valueOptions: column.valueOptions,
550
+ filterOperators: column.filterOperators,
551
+ },
552
+ aggregationFn: column.columnAggregation ?? undefined,
553
+ enableGrouping: column.enableGrouping ?? true,
554
+ sortDescFirst: column.sortDescFirst || true,
555
+ enableResizing: column.enableResizing ?? true,
556
+ enablePinning: this.enablePinning && (column.enablePinning ?? true),
557
+ aggregatedCell: (props) => {
558
+ const value = props.getValue();
559
+ return column.aggregatedCell
560
+ ? column.aggregatedCell(props, html, unsafeHTML)
561
+ : value;
562
+ },
563
+ };
564
+ });
565
+ }
566
+ getCommonPinningStyles(column) {
567
+ const isPinned = column.getIsPinned();
568
+ if (!isPinned) {
569
+ return {};
342
570
  }
343
- })(),
344
- enableSorting: e.enableSorting ?? !0,
345
- enableColumnFilter: this.enableFiltering && (e.enableFilter ?? !0),
346
- size: e.size || this.columnDefaultSize || void 0,
347
- maxSize: e.maxSize || this.columnDefaultMaxSize || 500,
348
- minSize: e.minSize || this.columnDefaultMinSize || 100,
349
- meta: {
350
- filterVariant: e.type ?? "string",
351
- valueOptions: e.valueOptions,
352
- filterOperators: e.filterOperators
353
- },
354
- aggregationFn: e.columnAggregation ?? void 0,
355
- enableGrouping: e.enableGrouping ?? !0,
356
- sortDescFirst: e.sortDescFirst || !0,
357
- enableResizing: e.enableResizing ?? !0,
358
- enablePinning: this.enablePinning && (e.enablePinning ?? !0),
359
- aggregatedCell: (o) => {
360
- const d = o.getValue();
361
- return e.aggregatedCell ? e.aggregatedCell(o, u, j) : d;
362
- }
363
- }));
364
- }
365
- getCommonPinningStyles(t) {
366
- const e = t.getIsPinned();
367
- if (!e)
368
- return {};
369
- const o = e === "left" && t.getIsLastColumn("left");
370
- return {
371
- position: e ? "sticky" : "relative",
372
- left: e === "left" ? `${t.getStart("left")}px` : void 0,
373
- right: e === "right" ? "0px" : void 0,
374
- boxShadow: o && t.columnDef.type !== "checkbox" ? "-4px 0 4px -4px gray inset" : void 0,
375
- zIndex: `${e ? 1 : "auto"}`,
376
- background: e ? "var(--background-paper, #fff)" : void 0
377
- };
378
- }
379
- togglePin(t) {
380
- t.column.getIsPinned() ? t.column.pin(!1) : t.column.pin("left");
381
- }
382
- // export to excel and csv
383
- exportDataToCsv() {
384
- const t = this.getAllRowsIncludingGrouped(this.table.getRowModel().rows);
385
- if (!t || t.length === 0) {
386
- console.warn("No data to export");
387
- return;
571
+ const isLastLeftPinnedColumn = isPinned === 'left' && column.getIsLastColumn('left');
572
+ return {
573
+ position: isPinned ? 'sticky' : 'relative',
574
+ left: isPinned === 'left' ? `${column.getStart('left')}px` : undefined,
575
+ right: isPinned === 'right' ? `0px` : undefined,
576
+ boxShadow: isLastLeftPinnedColumn && column.columnDef.type !== 'checkbox'
577
+ ? '-4px 0 4px -4px gray inset'
578
+ : undefined,
579
+ zIndex: `${isPinned ? 1 : 'auto'}`,
580
+ background: isPinned ? 'var(--background-paper, #fff)' : undefined,
581
+ };
388
582
  }
389
- const e = this.columns.map((m) => m.headerName || "").join(","), o = t.map((m) => this.columns.map((x) => {
390
- var S, v;
391
- const C = x.field;
392
- if ((S = m.getIsGrouped) != null && S.call(m))
393
- return x.field === m.groupingColumnId ? `"${m.getValue(x.field)} (${m.subRows.length})"` : "";
394
- const w = ((v = m.getValue) == null ? void 0 : v.call(m, C)) || "";
395
- return typeof w == "string" ? `"${w.replace(/"/g, '""')}"` : w;
396
- }).join(","));
397
- o.unshift(e);
398
- const d = o.join(`
399
- `), s = new Blob([d], { type: "text/csv;charset=utf-8;" }), p = prompt(R("Zadejte název souboru:"), "data");
400
- if (!p)
401
- return;
402
- const g = URL.createObjectURL(s), h = document.createElement("a");
403
- h.href = g, h.download = `${p}.csv`, h.click(), URL.revokeObjectURL(g);
404
- }
405
- async exportDataToExcel() {
406
- await this.loadXLSX();
407
- const t = window.XLSX, e = this.getAllRowsIncludingGrouped(this.table.getRowModel().rows);
408
- if (!e || e.length === 0) {
409
- console.warn("No data to export");
410
- return;
583
+ togglePin(header) {
584
+ if (header.column.getIsPinned()) {
585
+ header.column.pin(false); // Odpinovanie
586
+ }
587
+ else {
588
+ header.column.pin('left'); // Pripnutie doľava
589
+ }
411
590
  }
412
- const o = e.map((h) => {
413
- const m = {};
414
- return this.columns.forEach((x) => {
415
- var S, v;
416
- const C = x.headerName || "", w = x.field;
417
- (S = h.getIsGrouped) != null && S.call(h) ? x.field === h.groupingColumnId ? m[C] = `${h.getValue(w)} (${h.subRows.length})` : m[C] = "" : w && (m[C] = ((v = h.getValue) == null ? void 0 : v.call(h, w)) || "");
418
- }), m;
419
- }), d = t.utils.json_to_sheet(o), s = this.columns.map((h, m) => {
420
- var C;
421
- return { wch: Math.max(
422
- ((C = h.headerName) == null ? void 0 : C.length) || 10,
423
- ...o.map((w) => {
424
- var S;
425
- return ((S = w[h.headerName || ""]) == null ? void 0 : S.toString().length) || 0;
426
- })
427
- // Najdlhší obsah v stĺpci
428
- ) + 2 };
429
- });
430
- d["!cols"] = s;
431
- const p = t.utils.book_new();
432
- t.utils.book_append_sheet(p, d, "Data");
433
- const g = prompt(R("Zadejte název souboru:"), "data");
434
- g && t.writeFile(p, `${g}.xlsx`);
435
- }
436
- getAllRowsIncludingGrouped(t) {
437
- const e = [];
438
- return t.forEach((o) => {
439
- var d;
440
- (d = o.getIsGrouped) != null && d.call(o) ? (e.push(o), o.subRows && o.subRows.length > 0 && e.push(...this.getAllRowsIncludingGrouped(o.subRows))) : e.push(o);
441
- }), e.filter(
442
- (o, d, s) => d === s.findIndex((p) => p.id === o.id)
443
- );
444
- }
445
- startScroll(t) {
446
- const e = this.tableContainerRef.value;
447
- if (!e) return;
448
- const o = t === "left" ? -15 : 15, d = () => {
449
- e.scrollLeft += o, this.updateScrollState(), this.scrollInterval = requestAnimationFrame(d);
450
- };
451
- this.scrollInterval = requestAnimationFrame(d);
452
- }
453
- stopScroll() {
454
- this.scrollInterval && (cancelAnimationFrame(this.scrollInterval), this.scrollInterval = null);
455
- }
456
- // centralize your “at end” logic
457
- _atScrollEnd(t) {
458
- const e = this.scrollEndThreshold ?? 100;
459
- return t.scrollHeight <= t.clientHeight || t.scrollTop + t.clientHeight >= t.scrollHeight - e;
460
- }
461
- _maybeTriggerScrollEnd() {
462
- this._atScrollEnd(this._container) && this.onRowsScrollEnd && !this.isLoading && !this.scrollToEnd && (this.scrollToEnd = !0, this.onRowsScrollEnd());
463
- }
464
- handleScroll(t) {
465
- this._maybeTriggerScrollEnd();
466
- }
467
- // handleScroll(event: Event) {
468
- // const container = event.target as HTMLElement;
469
- // if (
470
- // container.scrollTop + container.clientHeight >=
471
- // container.scrollHeight - (this.scrollEndThreshold || 100) &&
472
- // this.onRowsScrollEnd &&
473
- // !this.isLoading &&
474
- // !this.scrollToEnd
475
- // ) {
476
- // this.scrollToEnd = true;
477
- // this.onRowsScrollEnd();
478
- // }
479
- // }
480
- handleGetTotalNumber() {
481
- this.getTotalNumberFn && this.getTotalNumberFn();
482
- }
483
- toggleCustomPopover() {
484
- this.isOpen = !this.isOpen;
485
- }
486
- closePopover() {
487
- this.isOpen = !1;
488
- }
489
- toggleColumn(t) {
490
- var e;
491
- this.columnVisibility = {
492
- ...this.columnVisibility,
493
- [t]: !(((e = this.columnVisibility) == null ? void 0 : e[t]) ?? !0)
494
- }, this.table.setColumnVisibility(this.columnVisibility);
495
- }
496
- onSettingsChangedCallback(t) {
497
- var e;
498
- (t == null ? void 0 : t.enableSorting) !== void 0 && (this.enableSorting = t.enableSorting), (t == null ? void 0 : t.enableFiltering) !== void 0 && (this.enableFiltering = t.enableFiltering), (t == null ? void 0 : t.columnDefaultSize) !== void 0 && (this.columnDefaultSize = t.columnDefaultSize), (t == null ? void 0 : t.columnGroupedColor) !== void 0 && (this.columnGroupedColor = t.columnGroupedColor), (t == null ? void 0 : t.rowAggregationColor) !== void 0 && (this.rowAggregationColor = t.rowAggregationColor), (t == null ? void 0 : t.enableGrouping) !== void 0 && (this.enableGrouping = t.enableGrouping), (t == null ? void 0 : t.exportData) !== void 0 && (this.exportData = t.exportData), (t == null ? void 0 : t.actionButtonsInMenu) !== void 0 && (this.actionButtonsInMenu = t.actionButtonsInMenu), (t == null ? void 0 : t.hideFooter) !== void 0 && (this.hideFooter = t.hideFooter), (t == null ? void 0 : t.enableColumnPinning) !== void 0 && (this.enableColumnPinning = t.enableColumnPinning), this.initTable(), this.requestUpdate(), this.onSettingsChanged && (this.dispatchEvent(
499
- new CustomEvent("onSettingsChanged", {
500
- bubbles: !0,
501
- composed: !0,
502
- detail: t
503
- })
504
- ), (e = this.onSettingsChanged) == null || e.call(this, t));
505
- }
506
- _onRowMouseDown(t, e) {
507
- if (this.handleMouseDown(t, e), t.shiftKey) {
508
- t.currentTarget && t.currentTarget.classList.add("no-select");
509
- const o = window.getSelection();
510
- o && o.removeAllRanges();
591
+ // export to excel and csv
592
+ exportDataToCsv() {
593
+ const rows = this.getAllRowsIncludingGrouped(this.table.getRowModel().rows); // Získanie všetkých riadkov vrátane skupín
594
+ if (!rows || rows.length === 0) {
595
+ console.warn('No data to export');
596
+ return;
597
+ }
598
+ // Generovanie hlavičky CSV zo stĺpcov
599
+ const header = this.columns
600
+ .map((col) => col.headerName || '') // Získanie názvov stĺpcov
601
+ .join(',');
602
+ // Generovanie dát pre CSV
603
+ const csvRows = rows.map((row) => {
604
+ return this.columns
605
+ .map((col) => {
606
+ const accessor = col.field; // Získanie kľúča pre hodnotu
607
+ if (row.getIsGrouped?.()) {
608
+ // Ak je skupinový riadok, pridaj počet záznamov do prvej bunky
609
+ if (col.field === row.groupingColumnId) {
610
+ return `"${row.getValue(col.field)} (${row.subRows.length})"`;
611
+ }
612
+ return ''; // Ostatné stĺpce v skupinovom riadku prázdne
613
+ }
614
+ const value = row.getValue?.(accessor) || ''; // Získanie hodnoty pre normálny riadok
615
+ return typeof value === 'string'
616
+ ? `"${value.replace(/"/g, '""')}"` // Ošetrenie dvojitých úvodzoviek
617
+ : value;
618
+ })
619
+ .join(',');
620
+ });
621
+ // Pridanie hlavičky na začiatok CSV
622
+ csvRows.unshift(header);
623
+ // Vytvorenie CSV súboru
624
+ const csvContent = csvRows.join('\n');
625
+ const blob = new Blob([csvContent], { type: 'text/csv;charset=utf-8;' });
626
+ // Export do súboru
627
+ const fileName = prompt(msg('Zadejte název souboru:'), 'data');
628
+ // Ak používateľ stlačí Cancel, export sa zruší
629
+ if (!fileName) {
630
+ return;
631
+ }
632
+ // Stiahnutie CSV súboru
633
+ const url = URL.createObjectURL(blob);
634
+ const link = document.createElement('a');
635
+ link.href = url;
636
+ link.download = `${fileName}.csv`;
637
+ link.click();
638
+ URL.revokeObjectURL(url);
639
+ }
640
+ async exportDataToExcel() {
641
+ await this.loadXLSX(); // Ensure XLSX is loaded
642
+ const XLSX = window.XLSX;
643
+ const rows = this.getAllRowsIncludingGrouped(this.table.getRowModel().rows); // Získanie všetkých riadkov vrátane skupín
644
+ if (!rows || rows.length === 0) {
645
+ console.warn('No data to export');
646
+ return;
647
+ }
648
+ // Príprava dát pre Excel
649
+ const data = rows.map((row) => {
650
+ const formattedRow = {};
651
+ this.columns.forEach((col) => {
652
+ const columnName = col.headerName || ''; // Dynamický názov stĺpca
653
+ const accessor = col.field; // Dynamický kľúč pre hodnoty
654
+ if (row.getIsGrouped?.()) {
655
+ // Skupinový riadok
656
+ if (col.field === row.groupingColumnId) {
657
+ // Pridanie názvu skupiny a počtu záznamov
658
+ formattedRow[columnName] =
659
+ `${row.getValue(accessor)} (${row.subRows.length})`;
660
+ }
661
+ else {
662
+ // Ostatné stĺpce prázdne
663
+ formattedRow[columnName] = '';
664
+ }
665
+ }
666
+ else if (accessor) {
667
+ // Normálny riadok
668
+ formattedRow[columnName] = row.getValue?.(accessor) || '';
669
+ }
670
+ });
671
+ return formattedRow;
672
+ });
673
+ // Vytvorenie pracovného listu a zošita
674
+ const worksheet = XLSX.utils.json_to_sheet(data); // Konverzia dát do Excel formátu
675
+ // Automatické prispôsobenie šírky stĺpcov
676
+ const colWidths = this.columns.map((col, colIndex) => {
677
+ const maxContentLength = Math.max(col.headerName?.length || 10, // Dĺžka názvu stĺpca
678
+ ...data.map((row) => row[col.headerName || '']?.toString().length || 0));
679
+ return { wch: maxContentLength + 2 }; // Pridanie extra priestoru
680
+ });
681
+ worksheet['!cols'] = colWidths; // Nastavenie šírky stĺpcov
682
+ const workbook = XLSX.utils.book_new(); // Nový Excel zošit
683
+ XLSX.utils.book_append_sheet(workbook, worksheet, 'Data'); // Pridanie dát do zošita
684
+ // Export do súboru
685
+ const fileName = prompt(msg('Zadejte název souboru:'), 'data');
686
+ // Ak používateľ stlačí Cancel, export sa zruší
687
+ if (!fileName) {
688
+ return;
689
+ }
690
+ XLSX.writeFile(workbook, `${fileName}.xlsx`);
691
+ }
692
+ getAllRowsIncludingGrouped(rows) {
693
+ const allRows = [];
694
+ rows.forEach((row) => {
695
+ if (row.getIsGrouped?.()) {
696
+ allRows.push(row);
697
+ if (row.subRows && row.subRows.length > 0) {
698
+ allRows.push(...this.getAllRowsIncludingGrouped(row.subRows));
699
+ }
700
+ }
701
+ else {
702
+ allRows.push(row);
703
+ }
704
+ });
705
+ return allRows.filter((row, index, self) => index === self.findIndex((r) => r.id === row.id));
706
+ }
707
+ startScroll(direction) {
708
+ const grid = this.tableContainerRef.value;
709
+ if (!grid)
710
+ return;
711
+ const scrollAmount = direction === 'left' ? -15 : 15;
712
+ const scroll = () => {
713
+ grid.scrollLeft += scrollAmount;
714
+ this.updateScrollState();
715
+ this.scrollInterval = requestAnimationFrame(scroll);
716
+ };
717
+ this.scrollInterval = requestAnimationFrame(scroll);
718
+ }
719
+ stopScroll() {
720
+ if (this.scrollInterval) {
721
+ cancelAnimationFrame(this.scrollInterval);
722
+ this.scrollInterval = null;
723
+ }
724
+ }
725
+ // centralize your “at end” logic
726
+ _atScrollEnd(container) {
727
+ const thresh = this.scrollEndThreshold ?? 100;
728
+ // if not scrollable OR within threshold of bottom
729
+ return (container.scrollHeight <= container.clientHeight ||
730
+ container.scrollTop + container.clientHeight >= container.scrollHeight - thresh);
731
+ }
732
+ _maybeTriggerScrollEnd() {
733
+ if (this._atScrollEnd(this._container) &&
734
+ this.onRowsScrollEnd &&
735
+ !this.isLoading &&
736
+ !this.scrollToEnd) {
737
+ this.scrollToEnd = true;
738
+ this.onRowsScrollEnd();
739
+ }
740
+ }
741
+ handleScroll(_event) {
742
+ // every scroll, re‑test
743
+ this._maybeTriggerScrollEnd();
744
+ }
745
+ // handleScroll(event: Event) {
746
+ // const container = event.target as HTMLElement;
747
+ // if (
748
+ // container.scrollTop + container.clientHeight >=
749
+ // container.scrollHeight - (this.scrollEndThreshold || 100) &&
750
+ // this.onRowsScrollEnd &&
751
+ // !this.isLoading &&
752
+ // !this.scrollToEnd
753
+ // ) {
754
+ // this.scrollToEnd = true;
755
+ // this.onRowsScrollEnd();
756
+ // }
757
+ // }
758
+ handleGetTotalNumber() {
759
+ if (this.getTotalNumberFn) {
760
+ this.getTotalNumberFn();
761
+ }
762
+ }
763
+ toggleCustomPopover() {
764
+ this.isOpen = !this.isOpen;
765
+ }
766
+ closePopover() {
767
+ this.isOpen = false;
768
+ }
769
+ toggleColumn(field) {
770
+ this.columnVisibility = {
771
+ ...this.columnVisibility,
772
+ [field]: !(this.columnVisibility?.[field] ?? true),
773
+ };
774
+ this.table.setColumnVisibility(this.columnVisibility);
775
+ }
776
+ onSettingsChangedCallback(value) {
777
+ if (value?.enableSorting !== undefined) {
778
+ this.enableSorting = value.enableSorting;
779
+ }
780
+ if (value?.enableFiltering !== undefined) {
781
+ this.enableFiltering = value.enableFiltering;
782
+ }
783
+ if (value?.columnDefaultSize !== undefined) {
784
+ this.columnDefaultSize = value.columnDefaultSize;
785
+ }
786
+ if (value?.columnGroupedColor !== undefined) {
787
+ this.columnGroupedColor = value.columnGroupedColor;
788
+ }
789
+ if (value?.rowAggregationColor !== undefined) {
790
+ this.rowAggregationColor = value.rowAggregationColor;
791
+ }
792
+ if (value?.enableGrouping !== undefined) {
793
+ this.enableGrouping = value.enableGrouping;
794
+ }
795
+ if (value?.exportData !== undefined) {
796
+ this.exportData = value.exportData;
797
+ }
798
+ if (value?.actionButtonsInMenu !== undefined) {
799
+ this.actionButtonsInMenu = value.actionButtonsInMenu;
800
+ }
801
+ if (value?.hideFooter !== undefined) {
802
+ this.hideFooter = value.hideFooter;
803
+ }
804
+ if (value?.enableColumnPinning !== undefined) {
805
+ this.enableColumnPinning = value.enableColumnPinning;
806
+ }
807
+ this.initTable();
808
+ this.requestUpdate();
809
+ if (this.onSettingsChanged) {
810
+ this.dispatchEvent(new CustomEvent('onSettingsChanged', {
811
+ bubbles: true,
812
+ composed: true,
813
+ detail: value,
814
+ }));
815
+ this.onSettingsChanged?.(value);
816
+ }
511
817
  }
512
- }
513
- _onRowMouseUp(t) {
514
- t.currentTarget.classList.remove("no-select");
515
- }
516
- _rowUnselectAll(t) {
517
- t.resetRowSelection(), this.focusedRowIndex = 0;
518
- }
519
- render() {
520
- var C, w, S, v, I;
521
- const t = ((C = this.columns) == null ? void 0 : C.filter((i) => {
522
- var b;
523
- return (((b = i.headerName) == null ? void 0 : b.toLowerCase()) || i.field.toLowerCase()).includes(this.filterText);
524
- })) || [], e = this.enableMultiRowSelection ? [
525
- {
526
- id: "checkboxForMultiselect",
527
- type: "checkbox",
528
- minSize: 30,
529
- size: 30,
530
- enablePinning: !1,
531
- enableResizing: !1,
532
- header: ({ table: i }) => u`
818
+ _onRowMouseDown(event, row) {
819
+ this.handleMouseDown(event, row);
820
+ // do not highlight cell text if multirow selection is enabled and shift key is pressed
821
+ if (event.shiftKey) {
822
+ if (event.currentTarget) {
823
+ event.currentTarget.classList.add('no-select');
824
+ }
825
+ // Optionally, clear existing selection:
826
+ const selection = window.getSelection();
827
+ if (selection) {
828
+ selection.removeAllRanges();
829
+ }
830
+ }
831
+ }
832
+ _onRowMouseUp(event) {
833
+ event.currentTarget.classList.remove('no-select');
834
+ }
835
+ _rowUnselectAll(table) {
836
+ table.resetRowSelection();
837
+ this.focusedRowIndex = 0;
838
+ }
839
+ render() {
840
+ const filteredColumns = this.columns?.filter((col) => {
841
+ const name = col.headerName?.toLowerCase() || col.field.toLowerCase();
842
+ return name.includes(this.filterText);
843
+ }) || [];
844
+ // checbox column for multiple selection
845
+ const checkboxColumn = this.enableMultiRowSelection
846
+ ? [
847
+ {
848
+ id: 'checkboxForMultiselect',
849
+ type: 'checkbox',
850
+ minSize: 30,
851
+ size: 30,
852
+ enablePinning: false,
853
+ enableResizing: false,
854
+ header: ({ table }) => html `
533
855
  <div style="position: absolute; left: 0; bottom: 0; margin: 0.65rem 0;">
534
856
  <lit-checkbox
535
857
  type="checkbox"
536
- .onChange="${() => i.getIsSomeRowsSelected() ? this._rowUnselectAll(i) : i.toggleAllRowsSelected()}"
537
- .checked="${i.getIsAllRowsSelected()}"
538
- .indeterminate="${i.getIsSomeRowsSelected()}"
858
+ .onChange="${() => table.getIsSomeRowsSelected()
859
+ ? this._rowUnselectAll(table)
860
+ : table.toggleAllRowsSelected()}"
861
+ .checked="${table.getIsAllRowsSelected()}"
862
+ .indeterminate="${table.getIsSomeRowsSelected()}"
539
863
  ></lit-checkbox>
540
864
  </div>
541
865
  `,
542
- cell: ({ table: i, row: r }) => u`
866
+ cell: ({ table, row }) => html `
543
867
  <div
544
868
  style="padding: 0.1875rem 0px 0px 0px"
545
- @click=${(b) => b.stopPropagation()}
869
+ @click=${(e) => e.stopPropagation()}
546
870
  >
547
871
  <lit-checkbox
548
872
  type="checkbox"
549
- .onChange="${(b) => {
550
- b.stopPropagation(), r.toggleSelected(b.target.checked);
551
- }}"
552
- .checked="${r.getIsSelected()}"
553
- ?disabled="${!r.getCanSelect()}"
554
- .indeterminate="${r.getIsSomeSelected()}"
873
+ .onChange="${(e) => {
874
+ e.stopPropagation();
875
+ row.toggleSelected(e.target.checked);
876
+ }}"
877
+ .checked="${row.getIsSelected()}"
878
+ ?disabled="${!row.getCanSelect()}"
879
+ .indeterminate="${row.getIsSomeSelected()}"
555
880
  ></lit-checkbox>
556
881
  </div>
557
- `
558
- }
559
- ] : [];
560
- ft() !== this.userLang && bt(this.userLang || "cs"), this.table = this.tableController.table({
561
- data: this.rows || [],
562
- columns: [...e, ...this.getTanstackColumns(this.getColumns)],
563
- columnResizeMode: "onChange",
564
- columnResizeDirection: "ltr",
565
- defaultColumn: {
566
- size: this.columnDefaultSize || void 0,
567
- //starting column size
568
- minSize: this.columnDefaultMinSize || 100,
569
- //enforced during column resizing
570
- maxSize: this.columnDefaultMaxSize || 500
571
- //enforced during column resizing
572
- },
573
- initialState: {
574
- // columnFilters: [...(this.initialFiltering || [])],
575
- // sorting: [...(this.initialSorting || [])],
576
- // expanded: { ...this.initialRowExpanded },
577
- grouping: [...this.initialGroups || []],
578
- columnVisibility: { ...this.initialColumnVisibility },
579
- columnPinning: {
580
- left: [...this.leftPinnedColumns || [], "checkboxForMultiselect"],
581
- right: ["actions"]
882
+ `,
883
+ },
884
+ ]
885
+ : [];
886
+ if (getLocale() !== this.userLang) {
887
+ setLocale(this.userLang || 'cs');
582
888
  }
583
- },
584
- state: {
585
- columnVisibility: this.columnVisibility,
586
- // columnFilters: this.server ? this.filtersServer : this.filters,
587
- columnFilters: this.initialFiltering,
588
- sorting: this.initialSorting,
589
- rowSelection: this.rowsSelected,
590
- columnSizing: this.columnSizing,
591
- expanded: this.initialRowExpanded,
592
- columnOrder: this.columnOrder
593
- },
594
- filterFns: {
595
- dateRangeFilterFn: Y,
596
- dateFilterFn: Z,
597
- multiselectFilterFn: J
598
- },
599
- // debugTable: true,
600
- enableRowSelection: this.enableRowSelection,
601
- enableMultiRowSelection: this.enableMultiRowSelection,
602
- enableColumnPinning: this.enableColumnPinning,
603
- enableGrouping: this.enableGrouping,
604
- manualFiltering: this.server,
605
- manualSorting: this.server,
606
- enableSorting: this.enableSorting,
607
- getRowId: (i, r) => this.getRowId ? this.getRowId(i, r) : r.toString(),
608
- // groupedColumnMode: 'reorder',
609
- getCoreRowModel: pt(),
610
- getSortedRowModel: ht(),
611
- getFilteredRowModel: ct(),
612
- getFacetedRowModel: dt(),
613
- getGroupedRowModel: at(),
614
- getExpandedRowModel: rt(),
615
- getFacetedUniqueValues: st(),
616
- onColumnFiltersChange: (i) => {
617
- this.currentScrollTop = 0;
618
- const r = this.tableContainerRef.value;
619
- r && (r.scrollTop = 0);
620
- const b = typeof i == "function" ? i(this.table.getState().columnFilters) : i;
621
- this.initialFiltering = b, this.onColumnFiltersChanged && this.onColumnFiltersChanged(this.table, b);
622
- },
623
- onSortingChange: (i) => {
624
- this.currentScrollTop = 0;
625
- const r = this.tableContainerRef.value;
626
- r && (r.scrollTop = 0);
627
- const b = typeof i == "function" ? i(this.table.getState().sorting) : i;
628
- this.initialSorting = b, this.onColumnSortChanged && this.onColumnSortChanged(this.table, b);
629
- },
630
- onRowSelectionChange: (i) => {
631
- const r = typeof i == "function" ? i(this.rowsSelected) : i;
632
- this.rowsSelected = r, this.onRowSelectionChanged && this.onRowSelectionChanged(this.table, r);
633
- },
634
- onColumnSizingChange: (i) => {
635
- const r = typeof i == "function" ? i(this.table.getState().columnSizing) : i;
636
- this.columnSizing = r, this.onColumnResize && this.onColumnResize(this.table, r);
637
- },
638
- onExpandedChange: (i) => {
639
- const r = typeof i == "function" ? i(this.initialRowExpanded) : i;
640
- this.initialRowExpanded = it.isEmpty(r) ? this.initialRowExpanded : r, this.requestUpdate();
641
- },
642
- onColumnOrderChange: (i) => {
643
- const r = typeof i == "function" ? i(this.columnOrder) : i;
644
- this.columnOrder = r, this.render(), this.onColumnOrderChanged && this.onColumnOrderChanged(this.table, r);
645
- },
646
- onColumnVisibilityChange: (i) => {
647
- const r = typeof i == "function" ? i(this.table.getState().columnVisibility) : i;
648
- this.columnVisibility = r, this.onColumnVisibilityChanged && this.onColumnVisibilityChanged(this.table, r);
649
- }
650
- }), this.rowsCount = this.table.getRowModel().rows.length;
651
- const o = this.enableRowVirtualization ? (w = this.rowVirtualizerController) == null ? void 0 : w.getVirtualizer() : null, d = this.enableColumnVirtualization ? (S = this.columnVirtualizerController) == null ? void 0 : S.getVirtualizer() : null, s = (d == null ? void 0 : d.getVirtualItems()) ?? [], { rows: p } = this.table.getRowModel(), g = o ? o.getVirtualItems() : p.map((i, r) => ({
652
- key: r,
653
- index: r,
654
- start: r * this.getRowHeight(),
655
- end: (r + 1) * this.getRowHeight(),
656
- size: this.getRowHeight(),
657
- lane: 0
658
- }));
659
- let h, m;
660
- d && (s != null && s.length) && this.enableColumnVirtualization && (h = ((v = s[0]) == null ? void 0 : v.start) ?? 0, m = d.getTotalSize() - (((I = s[s.length - 1]) == null ? void 0 : I.end) ?? 0));
661
- let x = window.matchMedia("(max-width: 600px)").matches;
662
- return u`
889
+ this.table = this.tableController.table({
890
+ data: this.rows || [],
891
+ columns: [...checkboxColumn, ...this.getTanstackColumns(this.getColumns)],
892
+ columnResizeMode: 'onChange',
893
+ columnResizeDirection: 'ltr',
894
+ defaultColumn: {
895
+ size: this.columnDefaultSize || undefined, //starting column size
896
+ minSize: this.columnDefaultMinSize || 100, //enforced during column resizing
897
+ maxSize: this.columnDefaultMaxSize || 500, //enforced during column resizing
898
+ },
899
+ initialState: {
900
+ // columnFilters: [...(this.initialFiltering || [])],
901
+ // sorting: [...(this.initialSorting || [])],
902
+ // expanded: { ...this.initialRowExpanded },
903
+ grouping: [...(this.initialGroups || [])],
904
+ columnVisibility: { ...this.initialColumnVisibility },
905
+ columnPinning: {
906
+ left: [...(this.leftPinnedColumns || []), 'checkboxForMultiselect'],
907
+ right: ['actions'],
908
+ },
909
+ },
910
+ state: {
911
+ columnVisibility: this.columnVisibility,
912
+ // columnFilters: this.server ? this.filtersServer : this.filters,
913
+ columnFilters: this.initialFiltering,
914
+ sorting: this.initialSorting,
915
+ rowSelection: this.rowsSelected,
916
+ columnSizing: this.columnSizing,
917
+ expanded: this.initialRowExpanded,
918
+ columnOrder: this.columnOrder,
919
+ },
920
+ filterFns: {
921
+ dateRangeFilterFn: dateRangeFilterFn,
922
+ dateFilterFn: dateFilterFn,
923
+ multiselectFilterFn: multiselectFilterFn,
924
+ },
925
+ // debugTable: true,
926
+ enableRowSelection: this.enableRowSelection,
927
+ enableMultiRowSelection: this.enableMultiRowSelection,
928
+ enableColumnPinning: this.enableColumnPinning,
929
+ enableGrouping: this.enableGrouping,
930
+ manualFiltering: this.server,
931
+ manualSorting: this.server,
932
+ enableSorting: this.enableSorting,
933
+ getRowId: (row, index) => this.getRowId ? this.getRowId(row, index) : index.toString(),
934
+ // groupedColumnMode: 'reorder',
935
+ getCoreRowModel: getCoreRowModel(),
936
+ getSortedRowModel: getSortedRowModel(),
937
+ getFilteredRowModel: getFilteredRowModel(),
938
+ getFacetedRowModel: getFacetedRowModel(),
939
+ getGroupedRowModel: getGroupedRowModel(),
940
+ getExpandedRowModel: getExpandedRowModel(),
941
+ getFacetedUniqueValues: getFacetedUniqueValues(),
942
+ onColumnFiltersChange: (updaterOrValue) => {
943
+ this.currentScrollTop = 0;
944
+ const scrollElement = this.tableContainerRef.value;
945
+ if (scrollElement) {
946
+ scrollElement.scrollTop = 0;
947
+ }
948
+ const filtersState = typeof updaterOrValue === 'function'
949
+ ? updaterOrValue(this.table.getState().columnFilters)
950
+ : updaterOrValue;
951
+ this.initialFiltering = filtersState;
952
+ if (this.onColumnFiltersChanged) {
953
+ this.onColumnFiltersChanged(this.table, filtersState);
954
+ }
955
+ },
956
+ onSortingChange: (updaterOrValue) => {
957
+ this.currentScrollTop = 0;
958
+ const scrollElement = this.tableContainerRef.value;
959
+ if (scrollElement) {
960
+ scrollElement.scrollTop = 0;
961
+ }
962
+ const sortingState = typeof updaterOrValue === 'function'
963
+ ? updaterOrValue(this.table.getState().sorting)
964
+ : updaterOrValue;
965
+ this.initialSorting = sortingState;
966
+ if (this.onColumnSortChanged) {
967
+ this.onColumnSortChanged(this.table, sortingState);
968
+ }
969
+ },
970
+ onRowSelectionChange: (updaterOrValue) => {
971
+ const rowSelection = typeof updaterOrValue === 'function'
972
+ ? updaterOrValue(this.rowsSelected)
973
+ : updaterOrValue;
974
+ this.rowsSelected = rowSelection;
975
+ if (this.onRowSelectionChanged) {
976
+ this.onRowSelectionChanged(this.table, rowSelection);
977
+ }
978
+ },
979
+ onColumnSizingChange: (updaterOrValue) => {
980
+ const columnSizingState = typeof updaterOrValue === 'function'
981
+ ? updaterOrValue(this.table.getState().columnSizing)
982
+ : updaterOrValue;
983
+ this.columnSizing = columnSizingState;
984
+ if (this.onColumnResize) {
985
+ this.onColumnResize(this.table, columnSizingState);
986
+ }
987
+ },
988
+ onExpandedChange: (updaterOrValue) => {
989
+ const rowExpanded = typeof updaterOrValue === 'function'
990
+ ? updaterOrValue(this.initialRowExpanded)
991
+ : updaterOrValue;
992
+ this.initialRowExpanded = _.isEmpty(rowExpanded)
993
+ ? this.initialRowExpanded
994
+ : rowExpanded;
995
+ this.requestUpdate();
996
+ // if (this.onColumnResize) {
997
+ // this.onColumnResize(this.table, columnSizingState);
998
+ // }
999
+ },
1000
+ onColumnOrderChange: (updaterOrValue) => {
1001
+ const newOrder = typeof updaterOrValue === 'function'
1002
+ ? updaterOrValue(this.columnOrder)
1003
+ : updaterOrValue;
1004
+ this.columnOrder = newOrder;
1005
+ this.render();
1006
+ if (this.onColumnOrderChanged) {
1007
+ this.onColumnOrderChanged(this.table, newOrder);
1008
+ }
1009
+ },
1010
+ onColumnVisibilityChange: (updaterOrValue) => {
1011
+ const columnVisibility = typeof updaterOrValue === 'function'
1012
+ ? updaterOrValue(this.table.getState().columnVisibility)
1013
+ : updaterOrValue;
1014
+ this.columnVisibility = columnVisibility;
1015
+ if (this.onColumnVisibilityChanged) {
1016
+ this.onColumnVisibilityChanged(this.table, columnVisibility);
1017
+ }
1018
+ },
1019
+ });
1020
+ this.rowsCount = this.table.getRowModel().rows.length;
1021
+ // Ak virtualizácia nie je povolená, použijeme celý zoznam riadkov alebo stĺpcov
1022
+ const rowVirtualizer = this.enableRowVirtualization
1023
+ ? this.rowVirtualizerController?.getVirtualizer()
1024
+ : null;
1025
+ const columnVirtualizer = this.enableColumnVirtualization
1026
+ ? this.columnVirtualizerController?.getVirtualizer()
1027
+ : null;
1028
+ const virtualColumns = columnVirtualizer?.getVirtualItems() ?? [];
1029
+ // Get table rows (either virtualized or all)
1030
+ const { rows } = this.table.getRowModel();
1031
+ const rowItems = rowVirtualizer
1032
+ ? rowVirtualizer.getVirtualItems()
1033
+ : rows.map((_, index) => ({
1034
+ key: index,
1035
+ index,
1036
+ start: index * this.getRowHeight(),
1037
+ end: (index + 1) * this.getRowHeight(),
1038
+ size: this.getRowHeight(),
1039
+ lane: 0,
1040
+ }));
1041
+ // Calculate padding for virtualization
1042
+ let virtualPaddingLeft;
1043
+ let virtualPaddingRight;
1044
+ if (columnVirtualizer && virtualColumns?.length && this.enableColumnVirtualization) {
1045
+ virtualPaddingLeft = virtualColumns[0]?.start ?? 0;
1046
+ virtualPaddingRight =
1047
+ columnVirtualizer.getTotalSize() -
1048
+ (virtualColumns[virtualColumns.length - 1]?.end ?? 0);
1049
+ }
1050
+ let isMobile = window.matchMedia('(max-width: 600px)').matches;
1051
+ return html `
663
1052
  <div class="data-grid__wrapper">
664
- ${this.isScrollable && !x ? u`
1053
+ ${this.isScrollable && !isMobile
1054
+ ? html `
665
1055
  <lit-icon-button
666
1056
  class="scroll-button left"
667
1057
  .disabled="${this.disableScrollLeft}"
668
- @pointerdown="${() => this.startScroll("left")}"
1058
+ @pointerdown="${() => this.startScroll('left')}"
669
1059
  @pointerup="${this.stopScroll}"
670
1060
  @pointerleave="${this.stopScroll}"
671
1061
  size="small"
@@ -676,7 +1066,7 @@ let n = class extends tt {
676
1066
  <lit-icon-button
677
1067
  class="scroll-button right"
678
1068
  .disabled="${this.disableScrollRight}"
679
- @pointerdown="${() => this.startScroll("right")}"
1069
+ @pointerdown="${() => this.startScroll('right')}"
680
1070
  @pointerup="${this.stopScroll}"
681
1071
  @pointerleave="${this.stopScroll}"
682
1072
  size="small"
@@ -684,175 +1074,233 @@ let n = class extends tt {
684
1074
  icon="arrowRight"
685
1075
  >
686
1076
  </lit-icon-button>
687
- ` : null}
1077
+ `
1078
+ : null}
688
1079
 
689
- <div class="grid" ${X(this.tableContainerRef)}>
1080
+ <div class="grid" ${ref(this.tableContainerRef)}>
690
1081
  <table
691
1082
  part="dataGrid-table"
692
1083
  style="width: ${this.table.getCenterTotalSize()}px"
693
1084
  >
694
1085
  <thead
695
1086
  part="dataGrid-header"
696
- style="height: ${this.enableFiltering ? "4rem" : "1.625rem"};"
1087
+ style="height: ${this.enableFiltering ? '4rem' : '1.625rem'};"
697
1088
  >
698
- ${V(
699
- this.table.getHeaderGroups(),
700
- (i) => i.id,
701
- (i) => {
702
- const r = this.enableColumnVirtualization ? s.map((c) => i.headers[c.index]) : i.headers, b = this.enableColumnVirtualization ? [
703
- ...i.headers.filter(
704
- (c) => c.column.getIsPinned()
705
- ),
706
- ...r.filter(
707
- (c) => !c.column.getIsPinned()
708
- )
709
- ] : r;
710
- return u`
711
- <tr class="head" data-index="${i.id}">
712
- ${h ? u`
1089
+ ${repeat(this.table.getHeaderGroups(), (headerGroup) => headerGroup.id, (headerGroup) => {
1090
+ const headerColumns = this.enableColumnVirtualization
1091
+ ? virtualColumns.map((vc) => headerGroup.headers[vc.index])
1092
+ : headerGroup.headers;
1093
+ const newHeaderColumns = this.enableColumnVirtualization
1094
+ ? [
1095
+ ...headerGroup.headers.filter((hc) => hc.column.getIsPinned()),
1096
+ ...headerColumns.filter((hc) => !hc.column.getIsPinned()),
1097
+ ]
1098
+ : headerColumns;
1099
+ return html `
1100
+ <tr class="head" data-index="${headerGroup.id}">
1101
+ ${virtualPaddingLeft
1102
+ ? html `
713
1103
  <th
714
- style=" display: flex; width: ${h}px;"
1104
+ style=" display: flex; width: ${virtualPaddingLeft}px;"
715
1105
  ></th>
716
- ` : ""}
717
- ${V(
718
- b,
719
- (c) => c.id,
720
- (c, D) => {
721
- var G, A, O, _, B, N, H, U;
722
- const y = c.column, F = {
723
- visibility: y.columnDef.type === "actions" ? "hidden" : "visible",
724
- ...this.getCommonPinningStyles(
725
- c.column
726
- ),
727
- width: `${y == null ? void 0 : y.getSize()}px`,
728
- flexGrow: `${y.columnDef.size === void 0 ? 1 : "unset"}`
729
- }, f = (G = y.columnDef.meta) == null ? void 0 : G.filterVariant, k = ((O = (A = y == null ? void 0 : y.columnDef) == null ? void 0 : A.meta) == null ? void 0 : O.filterOperators) || yt(f), P = ((_ = y == null ? void 0 : y.getFilterValue()) == null ? void 0 : _.value) || (y == null ? void 0 : y.getFilterValue()) || "", M = ((B = y == null ? void 0 : y.getFilterValue()) == null ? void 0 : B.operator) || ((N = k[0]) == null ? void 0 : N.value);
730
- return (f === "select" || f === "multiselect") && ((H = y == null ? void 0 : y.columnDef) != null && H.meta.valueOptions || this.server ? (U = y == null ? void 0 : y.columnDef) != null && U.meta.valueOptions : Array.from(
731
- y == null ? void 0 : y.getFacetedUniqueValues().keys()
732
- ).sort().slice(0, 5e3).map(
733
- (q) => ({
734
- value: q,
735
- label: q
736
- })
737
- )), u`
1106
+ `
1107
+ : ''}
1108
+ ${repeat(newHeaderColumns, (header) => header.id, (header, index) => {
1109
+ const column = header.column;
1110
+ const style = {
1111
+ visibility: column.columnDef.type === 'actions'
1112
+ ? 'hidden'
1113
+ : 'visible',
1114
+ ...this.getCommonPinningStyles(header.column),
1115
+ width: `${column?.getSize()}px`,
1116
+ flexGrow: `${column.columnDef.size === undefined ? 1 : 'unset'}`,
1117
+ };
1118
+ const filterVariant = column.columnDef.meta?.filterVariant;
1119
+ const filterOperators = column?.columnDef?.meta?.filterOperators ||
1120
+ getOperatorsByColumnType(filterVariant);
1121
+ const value = column?.getFilterValue()?.value ||
1122
+ column?.getFilterValue() ||
1123
+ '';
1124
+ const operator = column?.getFilterValue()?.operator ||
1125
+ filterOperators[0]?.value;
1126
+ let valueOptions = [];
1127
+ if (filterVariant === 'select' ||
1128
+ filterVariant === 'multiselect') {
1129
+ if (column?.columnDef?.meta.valueOptions ||
1130
+ this.server) {
1131
+ valueOptions =
1132
+ column?.columnDef?.meta
1133
+ .valueOptions || [];
1134
+ }
1135
+ else {
1136
+ const sortedUniqueValues = Array.from(column
1137
+ ?.getFacetedUniqueValues()
1138
+ .keys())
1139
+ .sort()
1140
+ .slice(0, 5000);
1141
+ valueOptions = sortedUniqueValues.map((value) => ({
1142
+ value,
1143
+ label: value,
1144
+ }));
1145
+ }
1146
+ }
1147
+ return html `
738
1148
  <th
739
1149
  class="head"
740
- style="${E(F)}"
741
- colspan="${c.colSpan}"
742
- data-index="${c.id}"
1150
+ style="${styleMap(style)}"
1151
+ colspan="${header.colSpan}"
1152
+ data-index="${header.id}"
743
1153
  >
744
- ${c.isPlaceholder ? "" : u`
1154
+ ${header.isPlaceholder
1155
+ ? ''
1156
+ : html `
745
1157
  <div
746
- class="resizer ${this.table.options.columnResizeDirection} ${c.column.getIsResizing() ? "is-resizing" : ""}"
747
- style="transform: ${this.table.options.columnResizeMode === "onEnd" && c.column.getIsResizing() ? `translateX(${(this.table.options.columnResizeDirection === "rtl" ? -1 : 1) * (this.table.getState().columnSizingInfo.deltaOffset ?? 0)}px)` : ""}"
1158
+ class="resizer ${this
1159
+ .table.options
1160
+ .columnResizeDirection} ${header.column.getIsResizing()
1161
+ ? 'is-resizing'
1162
+ : ''}"
1163
+ style="transform: ${this
1164
+ .table.options
1165
+ .columnResizeMode ===
1166
+ 'onEnd' &&
1167
+ header.column.getIsResizing()
1168
+ ? `translateX(${(this.table
1169
+ .options
1170
+ .columnResizeDirection ===
1171
+ 'rtl'
1172
+ ? -1
1173
+ : 1) *
1174
+ (this.table.getState()
1175
+ .columnSizingInfo
1176
+ .deltaOffset ??
1177
+ 0)}px)`
1178
+ : ''}"
748
1179
  >
749
1180
  <div class="header">
750
- ${c.column.getIsFiltered() ? u`
1181
+ ${header.column.getIsFiltered()
1182
+ ? html `
751
1183
  <div
752
1184
  class="filterCirclePoint"
753
1185
  ></div>
754
- ` : ""}
1186
+ `
1187
+ : ''}
755
1188
  <div
756
1189
  class="column-header"
757
- @click=${c.column.getToggleSortingHandler()}
1190
+ @click=${header.column.getToggleSortingHandler()}
758
1191
  >
759
1192
  <lit-overflow-tooltip
760
- label="${c.column.columnDef.header}"
1193
+ label="${header
1194
+ .column
1195
+ .columnDef
1196
+ .header}"
761
1197
  >
762
- ${L(
763
- c.column.columnDef.header,
764
- c.getContext()
765
- )}
1198
+ ${flexRender(header
1199
+ .column
1200
+ .columnDef
1201
+ .header, header.getContext())}
766
1202
  </lit-overflow-tooltip>
767
1203
  </div>
768
1204
 
769
1205
  <div
770
1206
  class="icons-group-pin"
771
1207
  >
772
- ${c.column.getCanSort() ? c.column.getIsSorted() ? c.column.getIsSorted() === "asc" ? u`<slot
1208
+ ${header.column.getCanSort()
1209
+ ? header.column.getIsSorted()
1210
+ ? header.column.getIsSorted() ===
1211
+ 'asc'
1212
+ ? html `<slot
773
1213
  name="iconSortUp"
774
1214
  ><lit-icon
775
1215
  class="cursor"
776
- @click=${c.column.getToggleSortingHandler()}
1216
+ @click=${header.column.getToggleSortingHandler()}
777
1217
  size="0.75rem"
778
1218
  icon="chevronUpFilled"
779
1219
  ></lit-icon
780
- ></slot>` : u`<slot
1220
+ ></slot>`
1221
+ : html `<slot
781
1222
  name="iconSortDown"
782
1223
  >
783
1224
  <lit-icon
784
1225
  class="cursor"
785
- @click=${c.column.getToggleSortingHandler()}
1226
+ @click=${header.column.getToggleSortingHandler()}
786
1227
  size="0.75rem"
787
1228
  icon="chevronDownFilled"
788
1229
  ></lit-icon>
789
- </slot>` : u`<div
1230
+ </slot>`
1231
+ : html `<div
790
1232
  class="sortFilled"
791
1233
  >
792
1234
  <lit-icon
793
1235
  class="cursor"
794
- @click=${c.column.getToggleSortingHandler()}
1236
+ @click=${header.column.getToggleSortingHandler()}
795
1237
  size="0.75rem"
796
1238
  icon="sortFilled"
797
1239
  ></lit-icon>
798
- </div>` : u`<div></div>`}
1240
+ </div>`
1241
+ : html `<div></div>`}
799
1242
  <div class="flex">
800
- ${this.actionButtonsInMenu ? u`
801
- <lit-data-grid-action-buttons-popover
802
- .group="${c.column.getToggleGroupingHandler()}"
803
- .pin="${() => this.togglePin(
804
- c
805
- )}"
806
- .header="${c}"
807
- .table="${this.table}"
808
- ></lit-data-grid-action-buttons-popover>
809
- ` : u`
810
- ${c.column.getCanPin() ? u`
1243
+ ${!this
1244
+ .actionButtonsInMenu
1245
+ ? html `
1246
+ ${header.column.getCanPin()
1247
+ ? html `
811
1248
  <lit-icon-button
812
- @click="${() => this.togglePin(
813
- c
814
- )}"
1249
+ @click="${() => this.togglePin(header)}"
815
1250
  size="small"
816
1251
  variant="text"
817
1252
  icon="pin"
818
- .active="${c.column.getIsPinned()}"
1253
+ .active="${header.column.getIsPinned()}"
819
1254
  >
820
1255
  </lit-icon-button>
821
1256
  <simple-tooltip
822
1257
  placement="bottom"
823
- >${c.column.getIsPinned() ? R(
824
- "Zrušit připnutí sloupce"
825
- ) : R(
826
- "Připnout sloupec vlevo"
827
- )}
1258
+ >${header.column.getIsPinned()
1259
+ ? msg('Zrušit připnutí sloupce')
1260
+ : msg('Připnout sloupec vlevo')}
828
1261
  </simple-tooltip>
829
- ` : ""}
830
- ${c.column.getCanGroup() ? u`
1262
+ `
1263
+ : ''}
1264
+ ${header.column.getCanGroup()
1265
+ ? html `
831
1266
  <lit-icon-button
832
- @click="${c.column.getToggleGroupingHandler()}"
1267
+ @click="${header.column.getToggleGroupingHandler()}"
833
1268
  size="small"
834
1269
  variant="text"
835
- .active="${c.column.getIsGrouped()}"
1270
+ .active="${header.column.getIsGrouped()}"
836
1271
  icon="agregation"
837
1272
  >
838
1273
  </lit-icon-button>
839
1274
  <simple-tooltip
840
1275
  placement="bottom"
841
1276
  >
842
- ${c.column.getIsGrouped() ? R(
843
- "Zrušit seskupení"
844
- ) : R(
845
- "Seskupit sloupec"
846
- )}</simple-tooltip
1277
+ ${header.column.getIsGrouped()
1278
+ ? msg('Zrušit seskupení')
1279
+ : msg('Seskupit sloupec')}</simple-tooltip
847
1280
  >
848
- ` : ""}
1281
+ `
1282
+ : ''}
1283
+ `
1284
+ : html `
1285
+ <lit-data-grid-action-buttons-popover
1286
+ .group="${header.column.getToggleGroupingHandler()}"
1287
+ .pin="${() => this.togglePin(header)}"
1288
+ .header="${header}"
1289
+ .table="${this
1290
+ .table}"
1291
+ ></lit-data-grid-action-buttons-popover>
849
1292
  `}
850
- ${this.enableColumnOrdering && !c.column.getIsPinned() && !c.column.getIsGrouped() && ![
851
- "checkbox",
852
- "actions"
853
- ].includes(
854
- c.column.id
855
- ) ? u`<div
1293
+ ${this
1294
+ .enableColumnOrdering &&
1295
+ !header.column.getIsPinned() &&
1296
+ !header.column.getIsGrouped() &&
1297
+ ![
1298
+ 'checkbox',
1299
+ 'actions',
1300
+ ].includes(header
1301
+ .column
1302
+ .id)
1303
+ ? html `<div
856
1304
  class="drag-handle"
857
1305
  >
858
1306
  <lit-icon
@@ -862,235 +1310,296 @@ let n = class extends tt {
862
1310
  </div>
863
1311
  <simple-tooltip
864
1312
  placement="bottom"
865
- >${R(
866
- "Přesunout sloupec"
867
- )}</simple-tooltip
868
- > ` : null}
1313
+ >${msg('Přesunout sloupec')}</simple-tooltip
1314
+ > `
1315
+ : null}
869
1316
  </div>
870
1317
  </div>
871
1318
  </div>
872
1319
  </div>
873
- ${c.column.getCanFilter() ? u`
1320
+ ${header.column.getCanFilter()
1321
+ ? html `
874
1322
  <div>
875
1323
  <filter-inputs
876
- .minFilterCharacters=${this.minFilterCharacters}
877
- .column=${c.column}
878
- .dateFormat=${this.dateFormat}
879
- .userLang=${this.userLang}
880
- @filter-tab=${this.handleFilterTabNavigation}
881
- .server=${this.server}
882
- .value="${P}"
883
- .operator="${M}"
884
- .filterVariant="${f}"
885
- .filterOperators="${k}"
1324
+ .minFilterCharacters=${this
1325
+ .minFilterCharacters}
1326
+ .column=${header.column}
1327
+ .dateFormat=${this
1328
+ .dateFormat}
1329
+ .userLang=${this
1330
+ .userLang}
1331
+ @filter-tab=${this
1332
+ .handleFilterTabNavigation}
1333
+ .server=${this
1334
+ .server}
1335
+ .value="${value}"
1336
+ .operator="${operator}"
1337
+ .filterVariant="${filterVariant}"
1338
+ .filterOperators="${filterOperators}"
886
1339
  ></filter-inputs>
887
1340
  </div>
888
- ` : null}
1341
+ `
1342
+ : null}
889
1343
  `}
890
1344
  <div
891
1345
  class="resize-handle"
892
- @dblclick="${($) => {
893
- $.target.classList.contains(
894
- "resize-handle"
895
- ) && c.column.resetSize();
896
- }}"
897
- @mousedown="${($) => {
898
- $.preventDefault(), $.stopPropagation(), $.target.classList.contains(
899
- "resize-handle"
900
- ) && c.getResizeHandler()(
901
- $
902
- );
903
- }}"
904
- @touchstart="${($) => {
905
- $.preventDefault(), $.stopPropagation(), $.target.classList.contains(
906
- "resize-handle"
907
- ) && c.getResizeHandler()(
908
- $
909
- );
910
- }}"
1346
+ @dblclick="${(event) => {
1347
+ if (event.target.classList.contains('resize-handle')) {
1348
+ header.column.resetSize();
1349
+ }
1350
+ }}"
1351
+ @mousedown="${(event) => {
1352
+ event.preventDefault();
1353
+ event.stopPropagation();
1354
+ if (event.target.classList.contains('resize-handle')) {
1355
+ header.getResizeHandler()(event);
1356
+ }
1357
+ }}"
1358
+ @touchstart="${(event) => {
1359
+ event.preventDefault();
1360
+ event.stopPropagation();
1361
+ if (event.target.classList.contains('resize-handle')) {
1362
+ header.getResizeHandler()(event);
1363
+ }
1364
+ }}"
911
1365
  ></div>
912
1366
  </th>
913
1367
  `;
914
- }
915
- )}
916
- ${m ? u`
1368
+ })}
1369
+ ${virtualPaddingRight
1370
+ ? html `
917
1371
  <th
918
- style=" display: flex; width: ${m}px;"
1372
+ style=" display: flex; width: ${virtualPaddingRight}px;"
919
1373
  ></th>
920
- ` : ""}
1374
+ `
1375
+ : ''}
921
1376
  </tr>
922
1377
  `;
923
- }
924
- )}
925
- ${this.isLoading ? u`
1378
+ })}
1379
+ ${this.isLoading
1380
+ ? html `
926
1381
  <div style="position: absolute; bottom: 0px; width: 100%;">
927
1382
  <lit-loading-bar></lit-loading-bar>
928
1383
  </div>
929
- ` : ""}
1384
+ `
1385
+ : ''}
930
1386
  </thead>
931
1387
 
932
1388
  <tbody
933
1389
  @keydown=${this.handleKeyDown}
934
1390
  tabindex="0"
935
1391
  part="dataGrid-body"
936
- style="height: ${o && this.table.getRowModel().rows.length > 0 ? o.getTotalSize() + "px" : "auto"};"
1392
+ style="height: ${rowVirtualizer &&
1393
+ this.table.getRowModel().rows.length > 0
1394
+ ? rowVirtualizer.getTotalSize() + 'px'
1395
+ : 'auto'};"
937
1396
  >
938
- ${p.length > 0 ? V(
939
- g,
940
- (i) => i.key,
941
- (i) => {
942
- const r = p[i.index], b = r == null ? void 0 : r.getVisibleCells(), c = this.enableColumnVirtualization ? s == null ? void 0 : s.map(
943
- (f) => b && b[f.index]
944
- ) : b, D = (b == null ? void 0 : b.filter(
945
- (f) => f.column.getIsPinned()
946
- )) || [], y = this.enableColumnVirtualization ? [.../* @__PURE__ */ new Set([...D, ...c])] : c, F = {
947
- transform: o ? `translateY(${i.start}px)` : "none",
948
- height: `${this.getRowHeight()}px`,
949
- lineHeight: `${this.getRowHeight()}px`,
950
- position: o ? "absolute" : "relative"
951
- };
952
- return r ? u`
1397
+ ${rows.length > 0
1398
+ ? repeat(rowItems, (item) => item.key, (item) => {
1399
+ const row = rows[item.index];
1400
+ const visibleCells = row?.getVisibleCells();
1401
+ const bodyColumns = this.enableColumnVirtualization
1402
+ ? virtualColumns?.map((vc) => visibleCells && visibleCells[vc.index])
1403
+ : visibleCells;
1404
+ const pinnedColumns = visibleCells?.filter((bc) => bc.column.getIsPinned()) || [];
1405
+ const newBodyColumns = this.enableColumnVirtualization
1406
+ ? [...new Set([...pinnedColumns, ...bodyColumns])]
1407
+ : bodyColumns;
1408
+ const rowStyle = {
1409
+ transform: rowVirtualizer
1410
+ ? `translateY(${item.start}px)`
1411
+ : 'none',
1412
+ height: `${this.getRowHeight()}px`,
1413
+ lineHeight: `${this.getRowHeight()}px`,
1414
+ position: rowVirtualizer ? 'absolute' : 'relative',
1415
+ };
1416
+ return row
1417
+ ? html `
953
1418
  <tr
954
- tabindex=${this.enableRowSelection ? "0" : void 0}
955
- data-row-index="${r.index}"
956
- class="${this.rowsSelected[r.id] ? "selected body" : "body"}"
957
- data-index="${i.index}"
958
- @click="${r.getIsGrouped() ? r.getToggleExpandedHandler() : (f) => this.handleRowClick(f, r)}"
959
- @mousedown=${(f) => this._onRowMouseDown(f, r)}
1419
+ tabindex=${this.enableRowSelection
1420
+ ? '0'
1421
+ : undefined}
1422
+ data-row-index="${row.index}"
1423
+ class="${this.rowsSelected[row.id]
1424
+ ? 'selected body'
1425
+ : 'body'}"
1426
+ data-index="${item.index}"
1427
+ @click="${row.getIsGrouped()
1428
+ ? row.getToggleExpandedHandler()
1429
+ : (e) => this.handleRowClick(e, row)}"
1430
+ @mousedown=${(e) => this._onRowMouseDown(e, row)}
960
1431
  @mouseup=${this._onRowMouseUp}
961
1432
  @mouseleave=${this._onRowMouseUp}
962
- @contextmenu=${(f) => f.preventDefault()}
963
- @dblclick="${() => this.handleRowDoubleClick(r)}"
964
- style="${E(F)}"
965
- ${X((f) => {
966
- f && this.enableRowVirtualization && o && o.measureElement(f);
967
- })}
1433
+ @contextmenu=${(e) => e.preventDefault()}
1434
+ @dblclick="${() => this.handleRowDoubleClick(row)}"
1435
+ style="${styleMap(rowStyle)}"
1436
+ ${ref((node) => {
1437
+ if (node &&
1438
+ this.enableRowVirtualization &&
1439
+ rowVirtualizer) {
1440
+ // Only measure element if virtualization is enabled
1441
+ rowVirtualizer.measureElement(node);
1442
+ }
1443
+ })}
968
1444
  >
969
- ${h ? u`
1445
+ ${virtualPaddingLeft
1446
+ ? html `
970
1447
  <th
971
- style=" display: flex; width: ${h}px;"
1448
+ style=" display: flex; width: ${virtualPaddingLeft}px;"
972
1449
  ></th>
973
- ` : ""}
1450
+ `
1451
+ : ''}
974
1452
  <!-- Cells for each row -->
975
- ${V(
976
- y,
977
- (f) => f.key,
978
- (f) => {
979
- var M;
980
- this.getButtonSize();
981
- const { column: k } = f, P = {
982
- ...this.getCommonPinningStyles(
983
- f.column
984
- ),
985
- width: `${(M = f.column) == null ? void 0 : M.getSize()}px`,
986
- flexGrow: `${k.columnDef.size === void 0 ? 1 : "unset"}`,
987
- background: this.getCellBackgroundColor(
988
- f
989
- ),
990
- lineHeight: `${this.getRowHeight()}px`,
991
- padding: k.columnDef.type === "actions" || k.columnDef.type === "checkbox" ? "0" : "0px 14px"
992
- };
993
- return u`
994
- <td style="${E(P)}">
995
- ${f.getIsGrouped() ? u`<div
1453
+ ${repeat(newBodyColumns, (cell) => cell.key, (cell) => {
1454
+ const buttonSize = this.getButtonSize();
1455
+ const { column } = cell;
1456
+ const style = {
1457
+ ...this.getCommonPinningStyles(cell.column),
1458
+ width: `${cell.column?.getSize()}px`,
1459
+ flexGrow: `${column.columnDef.size === undefined ? 1 : 'unset'}`,
1460
+ background: this.getCellBackgroundColor(cell),
1461
+ lineHeight: `${this.getRowHeight()}px`,
1462
+ padding: column.columnDef.type ===
1463
+ 'actions' ||
1464
+ column.columnDef.type ===
1465
+ 'checkbox'
1466
+ ? '0'
1467
+ : '0px 14px',
1468
+ };
1469
+ return html `
1470
+ <td style="${styleMap(style)}">
1471
+ ${cell.getIsGrouped()
1472
+ ? html `<div
996
1473
  class="grouped-column"
997
1474
  >
998
1475
  <lit-icon
999
1476
  class="grouped-column--icon-button"
1000
1477
  size="1.25rem"
1001
- icon="${r.getIsExpanded() ? "chevronDownFilled" : "chevron"}"
1478
+ icon="${row.getIsExpanded()
1479
+ ? 'chevronDownFilled'
1480
+ : 'chevron'}"
1002
1481
  ></lit-icon>
1003
1482
  <div
1004
1483
  class="grouped-column--label"
1005
1484
  >
1006
1485
  <lit-overflow-tooltip
1007
- label=${f.getValue()}
1486
+ label=${cell.getValue()}
1008
1487
  >
1009
- ${f.getValue()}
1488
+ ${cell.getValue()}
1010
1489
  </lit-overflow-tooltip>
1011
1490
  </div>
1012
1491
  <lit-pill
1013
1492
  class="grouped-column--pill"
1014
1493
  style="margin-left: 0.5rem"
1015
- count="${r.subRows.length}"
1494
+ count="${row
1495
+ .subRows
1496
+ .length}"
1016
1497
  ></lit-pill>
1017
- </div> ` : f.getIsAggregated() ? u`
1498
+ </div> `
1499
+ : cell.getIsAggregated()
1500
+ ? html `
1018
1501
  <div
1019
1502
  style="flex-grow:1"
1020
1503
  >
1021
- ${L(
1022
- f.column.columnDef.aggregatedCell ?? f.column.columnDef.cell,
1023
- f.getContext()
1024
- )}
1504
+ ${flexRender(cell
1505
+ .column
1506
+ .columnDef
1507
+ .aggregatedCell ??
1508
+ cell
1509
+ .column
1510
+ .columnDef
1511
+ .cell, cell.getContext())}
1025
1512
  </div>
1026
- ` : f.getIsPlaceholder() ? null : u`<lit-overflow-tooltip
1513
+ `
1514
+ : cell.getIsPlaceholder()
1515
+ ? null
1516
+ : html `<lit-overflow-tooltip
1027
1517
  placement="right"
1028
- label=${f.getValue()}
1029
- >${L(
1030
- f.column.columnDef.cell,
1031
- f.getContext()
1032
- )}</lit-overflow-tooltip
1518
+ label=${cell.getValue()}
1519
+ >${flexRender(cell
1520
+ .column
1521
+ .columnDef
1522
+ .cell, cell.getContext())}</lit-overflow-tooltip
1033
1523
  >`}
1034
1524
  </td>
1035
1525
  `;
1036
- }
1037
- )}
1038
- ${m ? u`
1526
+ })}
1527
+ ${virtualPaddingRight
1528
+ ? html `
1039
1529
  <th
1040
- style=" display: flex; width: ${m}px;"
1530
+ style=" display: flex; width: ${virtualPaddingRight}px;"
1041
1531
  ></th>
1042
- ` : ""}
1532
+ `
1533
+ : ''}
1043
1534
  </tr>
1044
- ` : null;
1045
- }
1046
- ) : null}
1535
+ `
1536
+ : null;
1537
+ })
1538
+ : null}
1047
1539
  </tbody>
1048
1540
  </table>
1049
- ${this.hideFooter ? "" : u`
1541
+ ${!this.hideFooter
1542
+ ? html `
1050
1543
  <slot
1051
1544
  part="dataGrid-footer"
1052
1545
  name="dataGridFooter"
1053
1546
  class="footer-container"
1054
1547
  >
1055
1548
  <div class="numberCount">
1056
- ${R("Počet záznamů")}:
1549
+ ${msg('Počet záznamů')}:
1057
1550
  ${this.table.getRowModel().rows.length}
1058
1551
  <pre>/</pre>
1059
- ${this.server ? this.totalNumberRows ? this.totalNumberRows : "?" : this.table.getRowModel().rows.length}
1060
- ${this.server ? u`<lit-icon-button
1552
+ ${this.server
1553
+ ? this.totalNumberRows
1554
+ ? this.totalNumberRows
1555
+ : '?'
1556
+ : this.table.getRowModel().rows.length}
1557
+ ${this.server
1558
+ ? html `<lit-icon-button
1061
1559
  icon="reload"
1062
1560
  size="mini"
1063
1561
  variant="text"
1064
1562
  @click="${() => this.handleGetTotalNumber()}"
1065
1563
  style="margin-left: 0.2rem; margin-top: -0.1rem"
1066
- ></lit-icon-button>` : ""}
1564
+ ></lit-icon-button>`
1565
+ : ''}
1067
1566
  </div>
1068
1567
  <div class="right-actions">
1069
1568
  <lit-data-grid-density-popover
1070
1569
  .density="${this.rowDensity}"
1071
- .setDensity="${(i) => this.handleSetDensity(i)}"
1570
+ .setDensity="${(density) => this.handleSetDensity(density)}"
1072
1571
  >
1073
1572
  </lit-data-grid-density-popover>
1074
1573
  <lit-responsive-button
1075
1574
  size="medium"
1076
1575
  variant="text"
1077
- label=${R("Přizpůsobit sloupce")}
1576
+ label=${msg('Přizpůsobit sloupce')}
1078
1577
  icon="columns"
1079
1578
  @click=${() => this.table.resetColumnSizing()}
1080
1579
  ></lit-responsive-button>
1081
- ${this.exportData ? u`
1580
+ ${this.exportData
1581
+ ? html `
1082
1582
  <lit-data-grid-export-popover
1083
- .exportToCsv="${typeof this.exportExcelFn == "function" ? () => this.exportCsvFn && this.exportCsvFn() : () => this.exportDataToCsv()}"
1084
- .exportToExcel="${typeof this.exportExcelFn == "function" ? () => this.exportExcelFn && this.exportExcelFn() : () => this.exportDataToExcel()}"
1583
+ .exportToCsv="${typeof this.exportExcelFn ===
1584
+ 'function'
1585
+ ? () => this.exportCsvFn && this.exportCsvFn()
1586
+ : () => this.exportDataToCsv()}"
1587
+ .exportToExcel="${typeof this.exportExcelFn ===
1588
+ 'function'
1589
+ ? () => this.exportExcelFn &&
1590
+ this.exportExcelFn()
1591
+ : () => this.exportDataToExcel()}"
1085
1592
  .disabledButtons="${this.isLoading}"
1086
1593
  >
1087
1594
  </lit-data-grid-export-popover>
1088
- ` : null}
1089
- ${this.enableSettings ? u`
1595
+ `
1596
+ : null}
1597
+ ${this.enableSettings
1598
+ ? html `
1090
1599
  <div>
1091
1600
  <lit-responsive-button
1092
1601
  variant="dashed"
1093
- label="${R("Přiřadit sloupec")}"
1602
+ label="${msg('Přiřadit sloupec')}"
1094
1603
  icon="add"
1095
1604
  style="display: inline-block"
1096
1605
  @click="${this.toggleCustomPopover}"
@@ -1098,9 +1607,9 @@ let n = class extends tt {
1098
1607
 
1099
1608
  <simple-popper
1100
1609
  .showing=${this.isOpen}
1101
- .placement=${"top-end"}
1102
- .manualOpening=${!0}
1103
- .maxWidthAsTarget=${!1}
1610
+ .placement=${'top-end'}
1611
+ .manualOpening=${true}
1612
+ .maxWidthAsTarget=${false}
1104
1613
  .onClose=${() => this.closePopover()}
1105
1614
  >
1106
1615
  <div
@@ -1109,55 +1618,57 @@ let n = class extends tt {
1109
1618
  >
1110
1619
  <lit-input
1111
1620
  .value=${this.filterText}
1112
- .onInput=${(i) => {
1113
- var r;
1114
- this.filterText = ((r = i == null ? void 0 : i.toLowerCase) == null ? void 0 : r.call(i)) || "";
1115
- }}
1621
+ .onInput=${(value) => {
1622
+ this.filterText =
1623
+ value?.toLowerCase?.() ||
1624
+ '';
1625
+ }}
1116
1626
  .onClear=${() => {
1117
- this.filterText = "";
1118
- }}
1119
- placeholder="${R(
1120
- "Zadejte název sloupce"
1121
- )}"
1627
+ this.filterText = '';
1628
+ }}
1629
+ placeholder="${msg('Zadejte název sloupce')}"
1122
1630
  ></lit-input>
1123
1631
  </div>
1124
1632
  <lit-menu tabindex="0">
1125
- ${this.columns.filter((i) => {
1126
- var b;
1127
- return (((b = i == null ? void 0 : i.headerName) == null ? void 0 : b.toLowerCase()) || (i == null ? void 0 : i.field.toLowerCase())).includes(
1128
- this.filterText
1129
- );
1130
- }).sort((i, r) => {
1131
- const b = i.field.startsWith("_"), c = r.field.startsWith("_");
1132
- return b && !c ? 1 : !b && c ? -1 : (i.headerName || i.field).localeCompare(
1133
- r.headerName || r.field
1134
- );
1135
- }).map(
1136
- (i) => {
1137
- var r, b;
1138
- return u`
1633
+ ${this.columns
1634
+ .filter((col) => {
1635
+ const name = col?.headerName?.toLowerCase() ||
1636
+ col?.field.toLowerCase();
1637
+ return name.includes(this.filterText);
1638
+ })
1639
+ .sort((a, b) => {
1640
+ const aUnderscore = a.field.startsWith('_');
1641
+ const bUnderscore = b.field.startsWith('_');
1642
+ if (aUnderscore && !bUnderscore)
1643
+ return 1;
1644
+ if (!aUnderscore && bUnderscore)
1645
+ return -1;
1646
+ return (a.headerName || a.field).localeCompare(b.headerName || b.field);
1647
+ })
1648
+ .map((col) => html `
1139
1649
  <lit-menu-item
1140
- .onClick=${() => this.toggleColumn(
1141
- i == null ? void 0 : i.field
1142
- )}
1143
- .isActive=${((r = this.columnVisibility) == null ? void 0 : r[i == null ? void 0 : i.field]) !== !1}
1650
+ .onClick=${() => this.toggleColumn(col?.field)}
1651
+ .isActive=${!(this
1652
+ .columnVisibility?.[col?.field] === false)}
1144
1653
  >
1145
1654
  <span
1146
1655
  class="menu-item--multiple"
1147
1656
  >
1148
1657
  <lit-checkbox
1149
1658
  class="cursor"
1150
- .checked=${((b = this.columnVisibility) == null ? void 0 : b[i == null ? void 0 : i.field]) !== !1}
1659
+ .checked=${!(this
1660
+ .columnVisibility?.[col
1661
+ ?.field] === false)}
1151
1662
  ></lit-checkbox>
1152
- ${(i == null ? void 0 : i.headerName) || (i == null ? void 0 : i.field)}
1663
+ ${col?.headerName ||
1664
+ col?.field}
1153
1665
  </span>
1154
1666
  </lit-menu-item>
1155
- `;
1156
- }
1157
- )}
1667
+ `)}
1158
1668
  </lit-menu>
1159
1669
 
1160
- ${ot(t.length, 0) ? u`
1670
+ ${isEqual(filteredColumns.length, 0)
1671
+ ? html `
1161
1672
  <div
1162
1673
  style="display: flex; flex-direction: column; align-items: center; padding: 1rem;"
1163
1674
  >
@@ -1167,10 +1678,11 @@ let n = class extends tt {
1167
1678
  <not-found></not-found>
1168
1679
  </div>
1169
1680
  <div>
1170
- ${R("Nenalezeno")}
1681
+ ${msg('Nenalezeno')}
1171
1682
  </div>
1172
1683
  </div>
1173
- ` : null}
1684
+ `
1685
+ : null}
1174
1686
  </simple-popper>
1175
1687
 
1176
1688
  <lit-icon-button
@@ -1181,42 +1693,49 @@ let n = class extends tt {
1181
1693
  ></lit-icon-button>
1182
1694
  <data-grid-settings
1183
1695
  .onClose="${() => {
1184
- this.isOpenModal = !1;
1185
- }}"
1696
+ this.isOpenModal = false;
1697
+ }}"
1186
1698
  .isOpenModal="${this.isOpenModal}"
1187
1699
  .enableFiltering="${this.enableFiltering}"
1188
1700
  .enableSorting="${this.enableSorting}"
1189
- .columnDefaultSize="${this.columnDefaultSize}"
1190
- .columnGroupedColor="${this.columnGroupedColor}"
1191
- .rowAggregationColor="${this.rowAggregationColor}"
1701
+ .columnDefaultSize="${this
1702
+ .columnDefaultSize}"
1703
+ .columnGroupedColor="${this
1704
+ .columnGroupedColor}"
1705
+ .rowAggregationColor="${this
1706
+ .rowAggregationColor}"
1192
1707
  .enableGrouping="${this.enableGrouping}"
1193
- .enableColumnPinning="${this.enableColumnPinning}"
1708
+ .enableColumnPinning="${this
1709
+ .enableColumnPinning}"
1194
1710
  .exportData="${this.exportData}"
1195
- .actionButtonsInMenu="${this.actionButtonsInMenu}"
1711
+ .actionButtonsInMenu="${this
1712
+ .actionButtonsInMenu}"
1196
1713
  .hideFooter="${this.hideFooter}"
1197
- .onSettingsChangedModal="${this.onSettingsChangedCallback.bind(
1198
- this
1199
- )}"
1714
+ .onSettingsChangedModal="${this.onSettingsChangedCallback.bind(this)}"
1200
1715
  ></data-grid-settings>
1201
1716
  </div>
1202
- ` : null}
1717
+ `
1718
+ : null}
1203
1719
  </div>
1204
1720
  </slot>
1205
- `}
1721
+ `
1722
+ : ''}
1206
1723
  </div>
1207
- ${this.table.getRowModel().rows.length < 1 && !this.isLoading ? u` <div class="data-grid__empty">
1724
+ ${this.table.getRowModel().rows.length < 1 && !this.isLoading
1725
+ ? html ` <div class="data-grid__empty">
1208
1726
  <div style="max-height: 7.125rem; max-width: 7.125rem">
1209
1727
  <not-found></not-found>
1210
1728
  </div>
1211
- <div class="data-grid__empty-text">${R("Nic dalšího tu není")}</div>
1212
- </div>` : null}
1729
+ <div class="data-grid__empty-text">${msg('Nic dalšího tu není')}</div>
1730
+ </div>`
1731
+ : null}
1213
1732
  </div>
1214
1733
  `;
1215
- }
1734
+ }
1216
1735
  };
1217
- n.styles = [
1218
- // styles,
1219
- et`
1736
+ LitDataGridTanstack.styles = [
1737
+ // styles,
1738
+ css `
1220
1739
  *,
1221
1740
  *::before,
1222
1741
  *::after {
@@ -1502,227 +2021,226 @@ n.styles = [
1502
2021
  .data-grid__empty-text {
1503
2022
  color: var(--text-primary, #5d6371);
1504
2023
  }
1505
- `
2024
+ `,
1506
2025
  ];
1507
- l([
1508
- a({ type: Array, reflect: !0 })
1509
- ], n.prototype, "row", 2);
1510
- l([
1511
- a({ type: Array })
1512
- ], n.prototype, "columns", 2);
1513
- l([
1514
- a({ type: Number })
1515
- ], n.prototype, "columnDefaultSize", 2);
1516
- l([
1517
- a({ type: Number })
1518
- ], n.prototype, "columnDefaultMinSize", 2);
1519
- l([
1520
- a({ type: Number })
1521
- ], n.prototype, "columnDefaultMaxSize", 2);
1522
- l([
1523
- a({ type: String })
1524
- ], n.prototype, "columnGroupedColor", 2);
1525
- l([
1526
- a({ type: String })
1527
- ], n.prototype, "rowAggregationColor", 2);
1528
- l([
1529
- a({ type: Boolean })
1530
- ], n.prototype, "enableRowVirtualization", 2);
1531
- l([
1532
- a({ type: Boolean })
1533
- ], n.prototype, "enableColumnVirtualization", 2);
1534
- l([
1535
- a({ type: Boolean })
1536
- ], n.prototype, "enableColumnPinning", 2);
1537
- l([
1538
- a({ type: Boolean })
1539
- ], n.prototype, "enableColumnOrdering", 2);
1540
- l([
1541
- a({ type: Boolean })
1542
- ], n.prototype, "enableGrouping", 2);
1543
- l([
1544
- a({ type: Boolean })
1545
- ], n.prototype, "enablePinning", 2);
1546
- l([
1547
- a({ type: Boolean })
1548
- ], n.prototype, "exportData", 2);
1549
- l([
1550
- a({ type: Boolean })
1551
- ], n.prototype, "actionButtonsInMenu", 2);
1552
- l([
1553
- a({ type: String })
1554
- ], n.prototype, "id", 2);
1555
- l([
1556
- a({ type: Array })
1557
- ], n.prototype, "initialGroups", 2);
1558
- l([
1559
- a({ type: Array })
1560
- ], n.prototype, "initialSorting", 2);
1561
- l([
1562
- a({ type: Object })
1563
- ], n.prototype, "initialColumnVisibility", 2);
1564
- l([
1565
- a({ type: Object })
1566
- ], n.prototype, "initialRowExpanded", 2);
1567
- l([
1568
- a({ type: Object })
1569
- ], n.prototype, "columnSizing", 2);
1570
- l([
1571
- a({ type: Array })
1572
- ], n.prototype, "leftPinnedColumns", 2);
1573
- l([
1574
- a({ type: Array })
1575
- ], n.prototype, "rightPinnedColumns", 2);
1576
- l([
1577
- a({ type: Boolean })
1578
- ], n.prototype, "enableFiltering", 2);
1579
- l([
1580
- a({ type: Boolean })
1581
- ], n.prototype, "enableSorting", 2);
1582
- l([
1583
- a({ type: String })
1584
- ], n.prototype, "userLang", 2);
1585
- l([
1586
- a({ type: String })
1587
- ], n.prototype, "dateFormat", 2);
1588
- l([
1589
- a({ type: Boolean })
1590
- ], n.prototype, "isLoading", 2);
1591
- l([
1592
- a({ type: Boolean })
1593
- ], n.prototype, "enableRowSelection", 2);
1594
- l([
1595
- a({ type: Array })
1596
- ], n.prototype, "initialFiltering", 2);
1597
- l([
1598
- a({ type: Boolean })
1599
- ], n.prototype, "server", 2);
1600
- l([
1601
- a({ type: Number })
1602
- ], n.prototype, "scrollEndThreshold", 2);
1603
- l([
1604
- a({ type: String })
1605
- ], n.prototype, "rowDensity", 2);
1606
- l([
1607
- a({ type: Boolean })
1608
- ], n.prototype, "enableMultiRowSelection", 2);
1609
- l([
1610
- a({ type: Number })
1611
- ], n.prototype, "totalNumberRows", 2);
1612
- l([
1613
- a({ type: Number })
1614
- ], n.prototype, "minFilterCharacters", 2);
1615
- l([
1616
- a({ type: Boolean })
1617
- ], n.prototype, "localizeDate", 2);
1618
- l([
1619
- a({ type: Boolean })
1620
- ], n.prototype, "rowsSelected", 2);
1621
- l([
1622
- a({ type: Boolean })
1623
- ], n.prototype, "enableSettings", 2);
1624
- l([
1625
- a({ attribute: !1 })
1626
- ], n.prototype, "onSettingsChanged", 2);
1627
- l([
1628
- a({ type: Function })
1629
- ], n.prototype, "onRowClick", 2);
1630
- l([
1631
- a({ type: Function })
1632
- ], n.prototype, "onRowsScrollEnd", 2);
1633
- l([
1634
- a({ type: Function })
1635
- ], n.prototype, "onRowDoubleClick", 2);
1636
- l([
1637
- a({ type: Function })
1638
- ], n.prototype, "rowDensityChange", 2);
1639
- l([
1640
- a({ type: Function })
1641
- ], n.prototype, "exportExcelFn", 2);
1642
- l([
1643
- a({ type: Function })
1644
- ], n.prototype, "exportCsvFn", 2);
1645
- l([
1646
- a({ type: Function })
1647
- ], n.prototype, "getTotalNumberFn", 2);
1648
- l([
1649
- a({ type: Function })
1650
- ], n.prototype, "onCellKeyDown", 2);
1651
- l([
1652
- a({ type: Function })
1653
- ], n.prototype, "getRowId", 2);
1654
- l([
1655
- a({ type: Function })
1656
- ], n.prototype, "onColumnResize", 2);
1657
- l([
1658
- a({ type: Boolean })
1659
- ], n.prototype, "onColumnFiltersChanged", 2);
1660
- l([
1661
- a({ type: Boolean })
1662
- ], n.prototype, "onColumnSortChanged", 2);
1663
- l([
1664
- a({ type: Function })
1665
- ], n.prototype, "onRowSelectionChanged", 2);
1666
- l([
1667
- a({ type: Function })
1668
- ], n.prototype, "onColumnOrderChanged", 2);
1669
- l([
1670
- a({ type: Boolean })
1671
- ], n.prototype, "hideFooter", 2);
1672
- l([
1673
- a({ type: Object })
1674
- ], n.prototype, "columnVisibility", 2);
1675
- l([
1676
- a({ type: Function })
1677
- ], n.prototype, "onColumnVisibilityChanged", 2);
1678
- l([
1679
- a({ type: Function })
1680
- ], n.prototype, "onMouseDown", 2);
1681
- l([
1682
- a({ type: Function })
1683
- ], n.prototype, "onRowFocusChanged", 2);
1684
- l([
1685
- a({ type: Number })
1686
- ], n.prototype, "focusedRowIndex", 2);
1687
- l([
1688
- a({ type: Boolean })
1689
- ], n.prototype, "autoFocus", 2);
1690
- l([
1691
- z()
1692
- ], n.prototype, "rowsCount", 2);
1693
- l([
1694
- z()
1695
- ], n.prototype, "isScrollable", 2);
1696
- l([
1697
- z()
1698
- ], n.prototype, "disableScrollLeft", 2);
1699
- l([
1700
- z()
1701
- ], n.prototype, "disableScrollRight", 2);
1702
- l([
1703
- z()
1704
- ], n.prototype, "columnOrder", 2);
1705
- l([
1706
- z()
1707
- ], n.prototype, "table", 2);
1708
- l([
1709
- z()
1710
- ], n.prototype, "isOpen", 2);
1711
- l([
1712
- z()
1713
- ], n.prototype, "filterText", 2);
1714
- l([
1715
- z()
1716
- ], n.prototype, "isOpenModal", 2);
1717
- l([
1718
- Q("tbody")
1719
- ], n.prototype, "tableBody", 2);
1720
- l([
1721
- Q(".grid")
1722
- ], n.prototype, "_container", 2);
1723
- n = l([
1724
- nt("lit-data-grid-tanstack")
1725
- ], n);
1726
- export {
1727
- n as LitDataGridTanstack
1728
- };
2026
+ __decorate([
2027
+ property({ type: Array, reflect: true })
2028
+ ], LitDataGridTanstack.prototype, "row", void 0);
2029
+ __decorate([
2030
+ property({ type: Array })
2031
+ ], LitDataGridTanstack.prototype, "columns", void 0);
2032
+ __decorate([
2033
+ property({ type: Number })
2034
+ ], LitDataGridTanstack.prototype, "columnDefaultSize", void 0);
2035
+ __decorate([
2036
+ property({ type: Number })
2037
+ ], LitDataGridTanstack.prototype, "columnDefaultMinSize", void 0);
2038
+ __decorate([
2039
+ property({ type: Number })
2040
+ ], LitDataGridTanstack.prototype, "columnDefaultMaxSize", void 0);
2041
+ __decorate([
2042
+ property({ type: String })
2043
+ ], LitDataGridTanstack.prototype, "columnGroupedColor", void 0);
2044
+ __decorate([
2045
+ property({ type: String })
2046
+ ], LitDataGridTanstack.prototype, "rowAggregationColor", void 0);
2047
+ __decorate([
2048
+ property({ type: Boolean })
2049
+ ], LitDataGridTanstack.prototype, "enableRowVirtualization", void 0);
2050
+ __decorate([
2051
+ property({ type: Boolean })
2052
+ ], LitDataGridTanstack.prototype, "enableColumnVirtualization", void 0);
2053
+ __decorate([
2054
+ property({ type: Boolean })
2055
+ ], LitDataGridTanstack.prototype, "enableColumnPinning", void 0);
2056
+ __decorate([
2057
+ property({ type: Boolean })
2058
+ ], LitDataGridTanstack.prototype, "enableColumnOrdering", void 0);
2059
+ __decorate([
2060
+ property({ type: Boolean })
2061
+ ], LitDataGridTanstack.prototype, "enableGrouping", void 0);
2062
+ __decorate([
2063
+ property({ type: Boolean })
2064
+ ], LitDataGridTanstack.prototype, "enablePinning", void 0);
2065
+ __decorate([
2066
+ property({ type: Boolean })
2067
+ ], LitDataGridTanstack.prototype, "exportData", void 0);
2068
+ __decorate([
2069
+ property({ type: Boolean })
2070
+ ], LitDataGridTanstack.prototype, "actionButtonsInMenu", void 0);
2071
+ __decorate([
2072
+ property({ type: String })
2073
+ ], LitDataGridTanstack.prototype, "id", void 0);
2074
+ __decorate([
2075
+ property({ type: Array })
2076
+ ], LitDataGridTanstack.prototype, "initialGroups", void 0);
2077
+ __decorate([
2078
+ property({ type: Array })
2079
+ ], LitDataGridTanstack.prototype, "initialSorting", void 0);
2080
+ __decorate([
2081
+ property({ type: Object })
2082
+ ], LitDataGridTanstack.prototype, "initialColumnVisibility", void 0);
2083
+ __decorate([
2084
+ property({ type: Object })
2085
+ ], LitDataGridTanstack.prototype, "initialRowExpanded", void 0);
2086
+ __decorate([
2087
+ property({ type: Object })
2088
+ ], LitDataGridTanstack.prototype, "columnSizing", void 0);
2089
+ __decorate([
2090
+ property({ type: Array })
2091
+ ], LitDataGridTanstack.prototype, "leftPinnedColumns", void 0);
2092
+ __decorate([
2093
+ property({ type: Array })
2094
+ ], LitDataGridTanstack.prototype, "rightPinnedColumns", void 0);
2095
+ __decorate([
2096
+ property({ type: Boolean })
2097
+ ], LitDataGridTanstack.prototype, "enableFiltering", void 0);
2098
+ __decorate([
2099
+ property({ type: Boolean })
2100
+ ], LitDataGridTanstack.prototype, "enableSorting", void 0);
2101
+ __decorate([
2102
+ property({ type: String })
2103
+ ], LitDataGridTanstack.prototype, "userLang", void 0);
2104
+ __decorate([
2105
+ property({ type: String })
2106
+ ], LitDataGridTanstack.prototype, "dateFormat", void 0);
2107
+ __decorate([
2108
+ property({ type: Boolean })
2109
+ ], LitDataGridTanstack.prototype, "isLoading", void 0);
2110
+ __decorate([
2111
+ property({ type: Boolean })
2112
+ ], LitDataGridTanstack.prototype, "enableRowSelection", void 0);
2113
+ __decorate([
2114
+ property({ type: Array })
2115
+ ], LitDataGridTanstack.prototype, "initialFiltering", void 0);
2116
+ __decorate([
2117
+ property({ type: Boolean })
2118
+ ], LitDataGridTanstack.prototype, "server", void 0);
2119
+ __decorate([
2120
+ property({ type: Number })
2121
+ ], LitDataGridTanstack.prototype, "scrollEndThreshold", void 0);
2122
+ __decorate([
2123
+ property({ type: String })
2124
+ ], LitDataGridTanstack.prototype, "rowDensity", void 0);
2125
+ __decorate([
2126
+ property({ type: Boolean })
2127
+ ], LitDataGridTanstack.prototype, "enableMultiRowSelection", void 0);
2128
+ __decorate([
2129
+ property({ type: Number })
2130
+ ], LitDataGridTanstack.prototype, "totalNumberRows", void 0);
2131
+ __decorate([
2132
+ property({ type: Number })
2133
+ ], LitDataGridTanstack.prototype, "minFilterCharacters", void 0);
2134
+ __decorate([
2135
+ property({ type: Boolean })
2136
+ ], LitDataGridTanstack.prototype, "localizeDate", void 0);
2137
+ __decorate([
2138
+ property({ type: Boolean })
2139
+ ], LitDataGridTanstack.prototype, "rowsSelected", void 0);
2140
+ __decorate([
2141
+ property({ type: Boolean })
2142
+ ], LitDataGridTanstack.prototype, "enableSettings", void 0);
2143
+ __decorate([
2144
+ property({ attribute: false })
2145
+ ], LitDataGridTanstack.prototype, "onSettingsChanged", void 0);
2146
+ __decorate([
2147
+ property({ type: Function })
2148
+ ], LitDataGridTanstack.prototype, "onRowClick", void 0);
2149
+ __decorate([
2150
+ property({ type: Function })
2151
+ ], LitDataGridTanstack.prototype, "onRowsScrollEnd", void 0);
2152
+ __decorate([
2153
+ property({ type: Function })
2154
+ ], LitDataGridTanstack.prototype, "onRowDoubleClick", void 0);
2155
+ __decorate([
2156
+ property({ type: Function })
2157
+ ], LitDataGridTanstack.prototype, "rowDensityChange", void 0);
2158
+ __decorate([
2159
+ property({ type: Function })
2160
+ ], LitDataGridTanstack.prototype, "exportExcelFn", void 0);
2161
+ __decorate([
2162
+ property({ type: Function })
2163
+ ], LitDataGridTanstack.prototype, "exportCsvFn", void 0);
2164
+ __decorate([
2165
+ property({ type: Function })
2166
+ ], LitDataGridTanstack.prototype, "getTotalNumberFn", void 0);
2167
+ __decorate([
2168
+ property({ type: Function })
2169
+ ], LitDataGridTanstack.prototype, "onCellKeyDown", void 0);
2170
+ __decorate([
2171
+ property({ type: Function })
2172
+ ], LitDataGridTanstack.prototype, "getRowId", void 0);
2173
+ __decorate([
2174
+ property({ type: Function })
2175
+ ], LitDataGridTanstack.prototype, "onColumnResize", void 0);
2176
+ __decorate([
2177
+ property({ type: Boolean })
2178
+ ], LitDataGridTanstack.prototype, "onColumnFiltersChanged", void 0);
2179
+ __decorate([
2180
+ property({ type: Boolean })
2181
+ ], LitDataGridTanstack.prototype, "onColumnSortChanged", void 0);
2182
+ __decorate([
2183
+ property({ type: Function })
2184
+ ], LitDataGridTanstack.prototype, "onRowSelectionChanged", void 0);
2185
+ __decorate([
2186
+ property({ type: Function })
2187
+ ], LitDataGridTanstack.prototype, "onColumnOrderChanged", void 0);
2188
+ __decorate([
2189
+ property({ type: Boolean })
2190
+ ], LitDataGridTanstack.prototype, "hideFooter", void 0);
2191
+ __decorate([
2192
+ property({ type: Object })
2193
+ ], LitDataGridTanstack.prototype, "columnVisibility", void 0);
2194
+ __decorate([
2195
+ property({ type: Function })
2196
+ ], LitDataGridTanstack.prototype, "onColumnVisibilityChanged", void 0);
2197
+ __decorate([
2198
+ property({ type: Function })
2199
+ ], LitDataGridTanstack.prototype, "onMouseDown", void 0);
2200
+ __decorate([
2201
+ property({ type: Function })
2202
+ ], LitDataGridTanstack.prototype, "onRowFocusChanged", void 0);
2203
+ __decorate([
2204
+ property({ type: Number })
2205
+ ], LitDataGridTanstack.prototype, "focusedRowIndex", void 0);
2206
+ __decorate([
2207
+ property({ type: Boolean })
2208
+ ], LitDataGridTanstack.prototype, "autoFocus", void 0);
2209
+ __decorate([
2210
+ state()
2211
+ ], LitDataGridTanstack.prototype, "rowsCount", void 0);
2212
+ __decorate([
2213
+ state()
2214
+ ], LitDataGridTanstack.prototype, "isScrollable", void 0);
2215
+ __decorate([
2216
+ state()
2217
+ ], LitDataGridTanstack.prototype, "disableScrollLeft", void 0);
2218
+ __decorate([
2219
+ state()
2220
+ ], LitDataGridTanstack.prototype, "disableScrollRight", void 0);
2221
+ __decorate([
2222
+ state()
2223
+ ], LitDataGridTanstack.prototype, "columnOrder", void 0);
2224
+ __decorate([
2225
+ state()
2226
+ ], LitDataGridTanstack.prototype, "table", void 0);
2227
+ __decorate([
2228
+ state()
2229
+ ], LitDataGridTanstack.prototype, "isOpen", void 0);
2230
+ __decorate([
2231
+ state()
2232
+ ], LitDataGridTanstack.prototype, "filterText", void 0);
2233
+ __decorate([
2234
+ state()
2235
+ ], LitDataGridTanstack.prototype, "isOpenModal", void 0);
2236
+ __decorate([
2237
+ query('tbody')
2238
+ ], LitDataGridTanstack.prototype, "tableBody", void 0);
2239
+ __decorate([
2240
+ query('.grid')
2241
+ ], LitDataGridTanstack.prototype, "_container", void 0);
2242
+ LitDataGridTanstack = __decorate([
2243
+ customElement('lit-data-grid-tanstack')
2244
+ ], LitDataGridTanstack);
2245
+ export { LitDataGridTanstack };
2246
+ //# sourceMappingURL=lit-data-grid-tanstack.js.map