overview-components 1.0.99 → 1.0.101

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 (214) hide show
  1. package/dist/assets/generated/locales/de.js +71 -0
  2. package/dist/assets/generated/locales/de.js.map +1 -0
  3. package/dist/assets/generated/locales/en.js +71 -0
  4. package/dist/assets/generated/locales/en.js.map +1 -0
  5. package/dist/assets/generated/locales/fr.js +71 -0
  6. package/dist/assets/generated/locales/fr.js.map +1 -0
  7. package/dist/assets/generated/locales/hr.js +71 -0
  8. package/dist/assets/generated/locales/hr.js.map +1 -0
  9. package/dist/assets/generated/locales/it.js +71 -0
  10. package/dist/assets/generated/locales/it.js.map +1 -0
  11. package/dist/assets/generated/locales/pl.js +71 -0
  12. package/dist/assets/generated/locales/pl.js.map +1 -0
  13. package/dist/assets/generated/locales/ro.js +71 -0
  14. package/dist/assets/generated/locales/ro.js.map +1 -0
  15. package/dist/assets/generated/locales/sk.js +71 -0
  16. package/dist/assets/generated/locales/sk.js.map +1 -0
  17. package/dist/assets/generated/locales/sr.js +71 -0
  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 +680 -0
  40. package/dist/components/lit-attachments-tab.js.map +1 -0
  41. package/dist/components/lit-badge.js +100 -0
  42. package/dist/components/lit-badge.js.map +1 -0
  43. package/dist/components/lit-case-variables-tab.js +842 -0
  44. package/dist/components/lit-case-variables-tab.js.map +1 -0
  45. package/dist/components/lit-chart.js +423 -0
  46. package/dist/components/lit-chart.js.map +1 -0
  47. package/dist/components/lit-data-grid-tanstack.js +2246 -0
  48. package/dist/components/lit-data-grid-tanstack.js.map +1 -0
  49. package/dist/components/lit-filter-modal.js +344 -0
  50. package/dist/components/lit-filter-modal.js.map +1 -0
  51. package/dist/components/lit-multiselect-item.js +706 -0
  52. package/dist/components/lit-multiselect-item.js.map +1 -0
  53. package/dist/components/lit-section-tab.js +145 -0
  54. package/dist/components/lit-section-tab.js.map +1 -0
  55. package/dist/components/lit-tabs-overview.js +345 -0
  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 +9 -0
  62. package/dist/components/react-wrappers/attachments-tab.js.map +1 -0
  63. package/dist/components/react-wrappers/badge.js +9 -0
  64. package/dist/components/react-wrappers/badge.js.map +1 -0
  65. package/dist/components/react-wrappers/button.js +9 -0
  66. package/dist/components/react-wrappers/button.js.map +1 -0
  67. package/dist/components/react-wrappers/case-variables-tab.js +9 -0
  68. package/dist/components/react-wrappers/case-variables-tab.js.map +1 -0
  69. package/dist/components/react-wrappers/chart.js +9 -0
  70. package/dist/components/react-wrappers/chart.js.map +1 -0
  71. package/dist/components/react-wrappers/data-grid-tanstack.js +9 -0
  72. package/dist/components/react-wrappers/data-grid-tanstack.js.map +1 -0
  73. package/dist/components/react-wrappers/filter-modal.js +9 -0
  74. package/dist/components/react-wrappers/filter-modal.js.map +1 -0
  75. package/dist/components/react-wrappers/progress-bar.js +9 -0
  76. package/dist/components/react-wrappers/progress-bar.js.map +1 -0
  77. package/dist/components/react-wrappers/section-tab.js +9 -0
  78. package/dist/components/react-wrappers/section-tab.js.map +1 -0
  79. package/dist/components/react-wrappers/tabs-overview.js +9 -0
  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 +72 -10182
  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 +156 -0
  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 +81 -0
  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 +248 -0
  188. package/dist/shared/simple-tooltip.js.map +1 -0
  189. package/dist/shared/styles/button-shared-styles.js +201 -0
  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 +16 -0
  194. package/dist/utils/currency.js.map +1 -0
  195. package/dist/utils/custom-filters.js +84 -0
  196. package/dist/utils/custom-filters.js.map +1 -0
  197. package/dist/utils/date.js +22 -0
  198. package/dist/utils/date.js.map +1 -0
  199. package/dist/utils/getOperatorByType.js +66 -0
  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 +432 -0
  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/style.css +0 -1
  214. package/dist/vite.svg +0 -1
@@ -0,0 +1,842 @@
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;
6
+ };
7
+ import { LitElement, html, css } from 'lit';
8
+ import { unsafeHTML } from 'lit/directives/unsafe-html.js';
9
+ import { styleMap } from 'lit/directives/style-map.js';
10
+ import { customElement, property, state } from 'lit/decorators.js';
11
+ import Sortable from 'sortablejs';
12
+ import { repeat } from 'lit/directives/repeat.js';
13
+ // components
14
+ import '../shared/lit-icon.js';
15
+ import '../shared/lit-button.js';
16
+ import '../shared/lit-menu.js';
17
+ import '../shared/lit-menu-item.js';
18
+ import '../shared/lit-checkbox.js';
19
+ import '../shared/lit-input.js';
20
+ import '../shared/simple-popper.js';
21
+ import '../assets/illustration/not-found.js';
22
+ import { tooltip } from '../shared/simple-tooltip.js';
23
+ import '../shared/lit-tooltip.js';
24
+ import '../shared/lit-progress-bar.js';
25
+ // utils
26
+ import { formatDate } from '../utils/date.js';
27
+ import { formatCurrency } from '../utils/currency.js';
28
+ import { setLocale } from '../utils/localization.js';
29
+ import { msg } from '@lit/localize';
30
+ import { isEqual } from 'lodash';
31
+ let LitCaseVariablesTab = class LitCaseVariablesTab extends LitElement {
32
+ constructor() {
33
+ super(...arguments);
34
+ this.rows = [];
35
+ this.data = {};
36
+ this.hideTabWhen = false;
37
+ this.userLang = 'cs';
38
+ this.dateFormat = null;
39
+ this.isLoading = false;
40
+ this.enableSettings = false;
41
+ this.gridVariables = false;
42
+ this.onSettingsChanged = (rows) => { };
43
+ this.currentBreakpoint = this.getBreakpoint();
44
+ this.isOpen = false;
45
+ this.filterText = '';
46
+ this.isMobile = window.innerWidth <= 600;
47
+ this._resizeListener = this.handleResize.bind(this);
48
+ this.sortableInstances = [];
49
+ this.sortableGroupId = `group-${Math.random().toString(36).substring(2, 9)}`;
50
+ this.backgroundColorOptions = [
51
+ {
52
+ backgroundColor: 'transparent',
53
+ border: '1px solid white',
54
+ },
55
+ {
56
+ backgroundColor: 'var(--color-success-light)',
57
+ border: '1px solid var(--color-success-dark)',
58
+ },
59
+ {
60
+ backgroundColor: 'var(--color-error-light)',
61
+ border: '1px solid var(--color-error-dark)',
62
+ },
63
+ {
64
+ backgroundColor: 'var(--color-warning-light)',
65
+ border: '1px solid var(--color-warning-dark)',
66
+ },
67
+ {
68
+ backgroundColor: 'var(--color-info-light)',
69
+ border: '1px solid var(--color-info-dark)',
70
+ },
71
+ {
72
+ backgroundColor: 'var(--color-primary-light)',
73
+ border: '1px solid var(--color-primary-dark)',
74
+ },
75
+ ];
76
+ this.language = 'cs';
77
+ this.BREAKPOINTS = ['xs', 'sm', 'md', 'lg', 'xl'];
78
+ this.handleSettingsChanged = (newRows) => {
79
+ this.onSettingsChanged?.(newRows);
80
+ };
81
+ this.getHeaderActions = (cell) => {
82
+ const activeSize = cell.size?.lg ?? 1;
83
+ return html `<div class="header-buttons">
84
+ ${this.enableSettings
85
+ ? html `
86
+ <perf-tooltip placement="top">
87
+ <lit-icon slot="trigger" icon="cog" size="1rem"></lit-icon>
88
+ <div slot="tooltip">
89
+ <div class="settings-buttons" style="justify-content: space-between">
90
+ ${this.gridVariables
91
+ ? html `<div></div>`
92
+ : html `
93
+ <div>
94
+ ${[1, 2, 3, 4].map((size) => html `
95
+ <span
96
+ @click=${() => this.setCellSize(size, cell)}
97
+ class="size-button ${activeSize === size
98
+ ? 'size-button--active'
99
+ : ''}"
100
+ >
101
+ ${size}
102
+ </span>
103
+ `)}
104
+ </div>
105
+ `}
106
+
107
+ <lit-icon
108
+ icon="trash"
109
+ size="1rem"
110
+ style="cursor: pointer"
111
+ @click=${() => this.removeCellFromRows(cell.field)}
112
+ ></lit-icon>
113
+ </div>
114
+ <div class="color-label">${msg('Barva pozadí')}:</div>
115
+ <div class="settings-buttons">
116
+ ${this.backgroundColorOptions.map((option) => html `
117
+ <div>
118
+ <div
119
+ @click=${() => this.setCellStyle({
120
+ backgroundColor: option.backgroundColor,
121
+ borderRadius: '8px',
122
+ border: option.border,
123
+ }, cell)}
124
+ class="cell-background"
125
+ style="background-color: ${option.backgroundColor}; border: ${option.border}"
126
+ ></div>
127
+ <div
128
+ class="${this.isActiveBackground(cell, option.backgroundColor)
129
+ ? 'cell-background--active'
130
+ : ''}"
131
+ ></div>
132
+ </div>
133
+ `)}
134
+ </div>
135
+ <div class="color-label">${msg('Tučné písmo')}:</div>
136
+ <div class="settings-buttons">
137
+ <span
138
+ class="bold-toggle ${cell?.valueStyle?.fontWeight === 'bold'
139
+ ? 'bold-toggle--active'
140
+ : ''}"
141
+ @click=${() => this.setFontWeight(cell)}
142
+ >
143
+ B
144
+ </span>
145
+ </div>
146
+ </div>
147
+ </perf-tooltip>
148
+
149
+ <div class="drag-handle">
150
+ <lit-icon icon="hamburger" size="1rem"></lit-icon>
151
+ </div>
152
+ `
153
+ : null}
154
+ </div>`;
155
+ };
156
+ this.getHeaderLabel = (cell) => {
157
+ return html ` <div
158
+ style="${cell?.headerStyle ? styleMap(cell?.headerStyle) : ''}"
159
+ class="process-data-heading"
160
+ >
161
+ ${cell?.[`headerName_${this.userLang}`] ||
162
+ cell?.headerName ||
163
+ ''}
164
+ ${cell.tooltip
165
+ ? html `
166
+ <lit-icon
167
+ ${tooltip(cell?.[`tooltip_${this.userLang}`] ??
168
+ cell?.tooltip, 'right', 100)}
169
+ size="12px"
170
+ icon="informative"
171
+ ></lit-icon>
172
+ `
173
+ : ''}
174
+ </div>`;
175
+ };
176
+ this.getHeader = (cell) => {
177
+ return html ` <div class="header-cell">
178
+ ${this.getHeaderLabel(cell)} ${this.getHeaderActions(cell)}
179
+ </div>`;
180
+ };
181
+ this.getCellButton = (cell) => {
182
+ return html `
183
+ <div style="display: flex; justify-content: space-between">
184
+ <lit-button
185
+ style="flex-grow: 1; margin-right: 0.5rem"
186
+ .fullWidth="${cell.buttonFullWidth}"
187
+ variant="${cell.buttonVariant || 'contained'}"
188
+ label="${cell?.headerName}"
189
+ @click=${cell?.buttonFn}
190
+ ></lit-button>
191
+ ${this.getHeaderActions(cell)}
192
+ </div>
193
+ `;
194
+ };
195
+ this.getCellLink = (cell) => {
196
+ return html `<div>${this.getHeader(cell)}</div>
197
+ <a class="link" href=${cell?.value ? cell.value : ''} target="_blank"
198
+ >${cell?.value ? cell.value : ''}
199
+ </a> `;
200
+ };
201
+ this.getCellValue = (cell) => {
202
+ const rawValue = cell?.[`value_${this.userLang}`] || cell?.value || '';
203
+ const value = typeof rawValue === 'string' ? rawValue : String(rawValue ?? '');
204
+ return html `<div>${this.getHeader(cell)}</div>
205
+ <div
206
+ style="${cell?.valueStyle ? styleMap(cell?.valueStyle) : ''}"
207
+ class="process-data-value"
208
+ >
209
+ ${unsafeHTML(value)}
210
+ </div> `;
211
+ };
212
+ this.getCellDate = (cell) => {
213
+ return html `<div>${this.getHeader(cell)}</div>
214
+ <div
215
+ style="${cell?.valueStyle ? styleMap(cell?.valueStyle) : ''}"
216
+ class="process-data-value"
217
+ >
218
+ ${cell?.value
219
+ ? formatDate(cell.value, this.userLang || 'cs', !!this.dateFormat, this.dateFormat)
220
+ : ''}
221
+ </div> `;
222
+ };
223
+ this.getCellCurrency = (cell) => {
224
+ return html `<div>${this.getHeader(cell)}</div>
225
+ <div
226
+ style="${cell?.valueStyle ? styleMap(cell?.valueStyle) : ''}"
227
+ class="process-data-value"
228
+ >
229
+ ${cell?.value ? formatCurrency(cell.value, this.userLang || 'cs') : ''}
230
+ </div> `;
231
+ };
232
+ this.getCellProgress = (cell) => {
233
+ return html `<div>${this.getHeader(cell)}</div>
234
+ <div
235
+ style="${cell?.valueStyle ? styleMap(cell?.valueStyle) : ''}"
236
+ class="process-data-value"
237
+ >
238
+ <lit-progress-bar .progress="${cell?.value}"></lit-progress-bar>
239
+ </div> `;
240
+ };
241
+ this.getInlineCellValue = (cell) => {
242
+ const rawValue = cell?.[`value_${this.userLang}`] || cell?.value || '';
243
+ const value = typeof rawValue === 'string' ? rawValue : String(rawValue ?? '');
244
+ return html `
245
+ <div style="display: flex;align-items: center; justify-content: end; gap: 0.5rem">
246
+ <div>${this.getHeaderLabel(cell)}</div>
247
+ <div
248
+ style="${cell?.valueStyle
249
+ ? styleMap(cell?.valueStyle)
250
+ : ''}"
251
+ class="process-data-value"
252
+ >
253
+ ${unsafeHTML(value)}
254
+ </div>
255
+ <div>${this.getHeaderActions(cell)}</div>
256
+ </div>
257
+ `;
258
+ };
259
+ }
260
+ getBreakpoint() {
261
+ const width = window.innerWidth;
262
+ if (width >= 1920)
263
+ return 'xl';
264
+ if (width >= 1280)
265
+ return 'lg';
266
+ if (width >= 960)
267
+ return 'md';
268
+ if (width >= 600)
269
+ return 'sm';
270
+ return 'xs';
271
+ }
272
+ // Function to handle resize events
273
+ handleResize() {
274
+ const newBreakpoint = this.getBreakpoint();
275
+ if (newBreakpoint !== this.currentBreakpoint) {
276
+ this.currentBreakpoint = newBreakpoint; // Update property
277
+ }
278
+ this.isMobile = window.innerWidth <= 600;
279
+ }
280
+ connectedCallback() {
281
+ super.connectedCallback();
282
+ this.setLanguage();
283
+ window.addEventListener('resize', this._resizeListener); // Add listener
284
+ this.isMobile = window.innerWidth <= 600;
285
+ if (!this.dateFormat) {
286
+ const userSettings = localStorage.getItem('userSettings');
287
+ const storedFormat = userSettings
288
+ ? JSON.parse(userSettings)?.state?.dateFormat
289
+ : undefined;
290
+ this.dateFormat = storedFormat;
291
+ }
292
+ }
293
+ disconnectedCallback() {
294
+ this.destroySortables();
295
+ window.removeEventListener('resize', this._resizeListener); // Remove listener
296
+ super.disconnectedCallback();
297
+ }
298
+ firstUpdated() {
299
+ if (this.enableSettings) {
300
+ this.initSortable();
301
+ }
302
+ }
303
+ setFontWeight(cell) {
304
+ const isBold = cell.valueStyle?.fontWeight === 'bold';
305
+ cell.valueStyle = {
306
+ ...(cell.valueStyle || {}),
307
+ fontWeight: isBold ? '500' : 'bold',
308
+ };
309
+ this.rows = [...this.rows];
310
+ this.handleSettingsChanged(this.rows);
311
+ }
312
+ setCellStyle(style, cell) {
313
+ cell.cellStyle = style;
314
+ this.rows = [...this.rows];
315
+ this.handleSettingsChanged(this.rows);
316
+ }
317
+ destroySortables() {
318
+ this.sortableInstances.forEach((instance) => {
319
+ instance.destroy();
320
+ });
321
+ this.sortableInstances = [];
322
+ }
323
+ initSortable() {
324
+ this.updateComplete.then(() => {
325
+ const containers = this.shadowRoot?.querySelectorAll('.grid-container');
326
+ if (!containers?.length)
327
+ return;
328
+ containers.forEach((container) => {
329
+ let originalNodes = [];
330
+ const sortableInstance = Sortable.create(container, {
331
+ group: this.tabId || this.sortableGroupId,
332
+ animation: 150,
333
+ handle: '.drag-handle',
334
+ ghostClass: 'sortable-ghost',
335
+ chosenClass: 'sortable-chosen',
336
+ dragClass: 'sortable-drag',
337
+ sort: true,
338
+ onStart: (evt) => {
339
+ originalNodes = Array.from(evt.from.childNodes);
340
+ },
341
+ onEnd: (evt) => {
342
+ evt.from.innerHTML = '';
343
+ originalNodes.forEach((node) => evt.from.appendChild(node));
344
+ const { oldIndex, newIndex } = evt;
345
+ if (oldIndex == null || newIndex == null || oldIndex === newIndex)
346
+ return;
347
+ const updated = [...this.rows];
348
+ const [movedItem] = updated.splice(oldIndex, 1);
349
+ updated.splice(newIndex, 0, movedItem);
350
+ this.rows = updated;
351
+ this.handleSettingsChanged?.(updated);
352
+ },
353
+ });
354
+ this.sortableInstances.push(sortableInstance);
355
+ });
356
+ });
357
+ }
358
+ setLanguage() {
359
+ const lang = this.userLang || localStorage.getItem('userLang');
360
+ if (lang) {
361
+ setLocale(lang);
362
+ }
363
+ }
364
+ isActiveBackground(cell, color) {
365
+ const bg = cell?.cellStyle?.backgroundColor;
366
+ if (!bg && color === 'transparent')
367
+ return true; // If nothing is set → consider transparent as active
368
+ return bg === color;
369
+ }
370
+ setCellSize(size, cell) {
371
+ if (!cell.size) {
372
+ cell.size = {};
373
+ }
374
+ cell.size.lg = size;
375
+ this.rows = [...this.rows];
376
+ this.handleSettingsChanged(this.rows);
377
+ }
378
+ removeCellFromRows(field) {
379
+ this.destroySortables();
380
+ const updatedRows = this.rows.filter((c) => c.field !== field);
381
+ this.rows = [];
382
+ this.updateComplete.then(() => {
383
+ this.rows = [...updatedRows];
384
+ this.initSortable();
385
+ this.handleSettingsChanged(this.rows);
386
+ });
387
+ }
388
+ closePopover() {
389
+ this.isOpen = false;
390
+ }
391
+ toggleCustomPopover() {
392
+ this.isOpen = !this.isOpen;
393
+ }
394
+ get existingFields() {
395
+ return this.rows.flat().map((cell) => cell.field);
396
+ }
397
+ toggleRowCell(key) {
398
+ const exists = this.rows.some((cell) => cell.field === key);
399
+ if (exists) {
400
+ this.removeCellFromRows(key);
401
+ }
402
+ else {
403
+ const raw = this.data?.[key];
404
+ if (!raw)
405
+ return;
406
+ const lang = this.userLang || 'cs';
407
+ const headerName = raw[`tvar_name_${lang}`] || raw.tvar_name_cs || raw.tvar_name;
408
+ const tooltip = raw[`tvar_tooltip_${lang}`] || raw.tvar_tooltip_cs || raw.tvar_tooltip;
409
+ let type;
410
+ switch (raw.ivar_type) {
411
+ case 'D':
412
+ type = 'date';
413
+ break;
414
+ case 'progress':
415
+ type = 'progress';
416
+ break;
417
+ default:
418
+ type = 'string';
419
+ }
420
+ const newCell = {
421
+ field: key,
422
+ type,
423
+ headerName,
424
+ value: raw.ivar_value,
425
+ size: { xs: 4, sm: 2, md: 1, lg: 1, xl: 1 },
426
+ tooltip,
427
+ };
428
+ const newRows = [...this.rows];
429
+ newRows.push(newCell);
430
+ this.rows = newRows;
431
+ this.handleSettingsChanged(newRows);
432
+ }
433
+ }
434
+ render() {
435
+ if (this.hideTabWhen)
436
+ return null;
437
+ const lang = this.userLang || 'cs';
438
+ const filteredKeys = Object.keys(this.data || {}).filter((key) => {
439
+ const item = this.data[key];
440
+ const name = item?.[`tvar_name_${lang}`] || key;
441
+ return (key.toLowerCase().includes(this.filterText) ||
442
+ name.toLowerCase().includes(this.filterText));
443
+ });
444
+ return html `
445
+ ${this.isLoading
446
+ ? html `<lit-loader></lit-loader>`
447
+ : html `
448
+ <div class="grid-container ${this.gridVariables ? 'one-column' : ''}">
449
+ ${repeat(this.rows, (cell, index) => cell.field, (cell) => {
450
+ const bpIndex = this.BREAKPOINTS.indexOf(this.currentBreakpoint);
451
+ const spanSize = this.BREAKPOINTS.slice(0, bpIndex + 1)
452
+ .reverse()
453
+ .map((bp) => cell.size?.[bp])
454
+ .find((s) => s !== undefined) ?? 2;
455
+ const classes = `cell--span${spanSize} cell ${this.gridVariables ? 'one-column' : ''}`;
456
+ return html `
457
+ <div
458
+ class="${classes}"
459
+ style="${styleMap(cell.cellStyle || {})}"
460
+ data-field="${cell.field}"
461
+ >
462
+ ${this.gridVariables
463
+ ? this.getInlineCellValue(cell)
464
+ : cell?.type === 'button'
465
+ ? this.getCellButton(cell)
466
+ : cell.type === 'link'
467
+ ? this.getCellLink(cell)
468
+ : cell.type === 'progress'
469
+ ? this.getCellProgress(cell)
470
+ : cell.type === 'currency'
471
+ ? this.getCellCurrency(cell)
472
+ : cell.type === 'date'
473
+ ? this.getCellDate(cell)
474
+ : this.getCellValue(cell)}
475
+ </div>
476
+ `;
477
+ })}
478
+ </div>
479
+ ${this.enableSettings
480
+ ? html `
481
+ <div style="text-align: right; margin-top: 1rem;">
482
+ <lit-button
483
+ variant="${'dashed'}"
484
+ label="${msg('Přiřadit proměnnou')}"
485
+ icon="add"
486
+ .fullWidth=${this.isMobile}
487
+ @click="${this.toggleCustomPopover}"
488
+ class="add-variable-button"
489
+ ></lit-button>
490
+
491
+ <simple-popper
492
+ .showing=${this.isOpen}
493
+ .placement=${'top-end'}
494
+ .manualOpening=${true}
495
+ .maxWidthAsTarget=${false}
496
+ .onClose=${() => this.closePopover()}
497
+ >
498
+ <div
499
+ class="popper-input"
500
+ style="position: sticky; top: 0; z-index: 1;"
501
+ >
502
+ <lit-input
503
+ .value=${this.filterText}
504
+ .onInput=${(value) => {
505
+ this.filterText = value?.toLowerCase?.() || '';
506
+ }}
507
+ .onClear=${() => {
508
+ this.filterText = '';
509
+ }}
510
+ placeholder="${msg('Zadejte název proměnné')}"
511
+ .size=${'small'}
512
+ ></lit-input>
513
+ </div>
514
+ <lit-menu tabindex="0">
515
+ ${Object.keys(this.data || {})
516
+ .filter((key) => {
517
+ const item = this.data[key];
518
+ const lang = this.userLang || 'cs';
519
+ const name = item?.[`tvar_name_${lang}`] || key;
520
+ return (key
521
+ .toLowerCase()
522
+ .includes(this.filterText) ||
523
+ name.toLowerCase().includes(this.filterText));
524
+ })
525
+ .sort((a, b) => {
526
+ const aIsUnderscore = a.startsWith('_');
527
+ const bIsUnderscore = b.startsWith('_');
528
+ if (aIsUnderscore && !bIsUnderscore)
529
+ return 1;
530
+ if (!aIsUnderscore && bIsUnderscore)
531
+ return -1;
532
+ return a.localeCompare(b);
533
+ })
534
+ .map((key) => html `
535
+ <lit-menu-item
536
+ .onClick=${() => this.toggleRowCell(key)}
537
+ .isActive=${this.existingFields.includes(key)}
538
+ >
539
+ <span class="menu-item--multiple">
540
+ <lit-checkbox
541
+ class="cursor"
542
+ .checked=${this.existingFields.includes(key)}
543
+ ></lit-checkbox>
544
+ ${this.data?.[key]?.[`tvar_name_${this.userLang}`] || key}
545
+ </span>
546
+ </lit-menu-item>
547
+ `)}
548
+ </lit-menu>
549
+
550
+ ${isEqual(filteredKeys.length, 0)
551
+ ? html `
552
+ <div
553
+ style="display: flex;flex-direction: column; align-items: center"
554
+ >
555
+ <div
556
+ style="max-height: 7.125rem; max-width: 7.125rem"
557
+ >
558
+ <not-found></not-found>
559
+ </div>
560
+ ${msg('Nenalezeno')}
561
+ </div>
562
+ `
563
+ : null}
564
+ </simple-popper>
565
+ </div>
566
+ `
567
+ : ''}
568
+ `}
569
+ `;
570
+ }
571
+ };
572
+ LitCaseVariablesTab.styles = [
573
+ // styles,
574
+ css `
575
+ :host {
576
+ font-family: 'Inter', sans-serif;
577
+ }
578
+
579
+ .header-cell {
580
+ min-height: 1.25rem;
581
+ display: flex;
582
+ justify-content: space-between;
583
+ align-items: center;
584
+ }
585
+
586
+ .drag-handle {
587
+ cursor: grab;
588
+ opacity: 0.6;
589
+ transition: opacity 0.2s;
590
+ }
591
+
592
+ .drag-handle:hover {
593
+ opacity: 1;
594
+ }
595
+
596
+ .grid-container {
597
+ display: grid;
598
+ justify-content: start;
599
+ align-items: start;
600
+ gap: 0.5rem;
601
+ border: 1px dashed transparent;
602
+ border-radius: var(--border-radius-small, 8px);
603
+ transition: border-color 0.2s;
604
+ }
605
+
606
+ .grid-container.sortable-drag-over {
607
+ border-color: var(--color-primary-main, #76b703);
608
+ }
609
+
610
+ .process-data-heading {
611
+ font-size: 0.75rem;
612
+ color: var(--text-secondary, #5d6371);
613
+ font-weight: 400 !important;
614
+ display: flex;
615
+ gap: 5px;
616
+ align-items: center;
617
+ }
618
+
619
+ .process-data-value {
620
+ min-height: 1.25rem;
621
+ font-size: 0.8125rem;
622
+ color: var(--text-primary, #111827);
623
+ margin: 0;
624
+ padding-top: 0.3125rem;
625
+ font-weight: 500;
626
+ }
627
+
628
+ .status {
629
+ color: var(--color-primary-main, #76b703);
630
+ }
631
+
632
+ .link {
633
+ font-size: 0.8125rem;
634
+ text-decoration: none;
635
+ color: var(--text-primary, #111827);
636
+ border-bottom: 0.0625rem solid var(--color-primary-main, #76b703);
637
+ }
638
+
639
+ .cell {
640
+ padding: 0.375rem;
641
+ border-radius: var(--border-radius-small, 8px);
642
+ border: 1px solid transparent;
643
+ transition: all 0.2s;
644
+ min-height: 2.625rem;
645
+ }
646
+
647
+ .cell.one-column {
648
+ min-height: 0 !important;
649
+ }
650
+
651
+ .cell.sortable-ghost {
652
+ opacity: 0.5;
653
+ border-color: var(--color-primary-main, #76b703);
654
+ }
655
+
656
+ .cell.sortable-chosen {
657
+ transform: scale(1.02);
658
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
659
+ }
660
+
661
+ .link:hover {
662
+ color: var(--color-primary-main, #76b703);
663
+ }
664
+
665
+ .settings-buttons {
666
+ display: flex;
667
+ align-items: center;
668
+ }
669
+
670
+ .header-buttons {
671
+ display: flex;
672
+ gap: 0.5rem;
673
+ }
674
+
675
+ .size-button {
676
+ margin-right: 0.5rem;
677
+ cursor: pointer;
678
+ }
679
+
680
+ .size-button--active {
681
+ text-decoration: underline;
682
+ font-weight: bold;
683
+ }
684
+
685
+ .popper-input {
686
+ margin-bottom: 0.5rem;
687
+ background-color: var(--background-paper, #fff);
688
+ z-index: 1;
689
+ }
690
+
691
+ .cell-background {
692
+ width: 14px;
693
+ height: 14px;
694
+ border-radius: 4px;
695
+ border: 1px solid #ccc;
696
+ cursor: pointer;
697
+ margin-right: 0.5rem;
698
+ }
699
+
700
+ .bold-toggle {
701
+ cursor: pointer;
702
+ }
703
+
704
+ .bold-toggle--active {
705
+ text-decoration: underline;
706
+ font-weight: bold;
707
+ }
708
+
709
+ .color-label {
710
+ margin: 0.5rem 0 0.25rem 0;
711
+ }
712
+
713
+ .cell-background--active {
714
+ border-bottom: 1px solid white;
715
+ margin-top: 1px;
716
+ margin-right: 0.5rem;
717
+ }
718
+
719
+ .grid-container.one-column {
720
+ grid-template-columns: repeat(4, minmax(0, 1fr)) !important;
721
+ justify-content: end;
722
+ }
723
+
724
+ .grid-container.one-column .cell {
725
+ grid-column: 4 / 5;
726
+ }
727
+
728
+ @media (max-width: 960px) {
729
+ .grid-container.one-column .cell {
730
+ grid-column: 3 / 5;
731
+ }
732
+ }
733
+
734
+ @media (max-width: 600px) {
735
+ .grid-container.one-column .cell {
736
+ grid-column: 1 / -1;
737
+ }
738
+ }
739
+
740
+ .add-variable-button {
741
+ display: inline-block;
742
+ }
743
+
744
+ @media (max-width: 600px) {
745
+ .add-variable-button {
746
+ display: block;
747
+ width: 100%;
748
+ }
749
+ }
750
+
751
+ .cell--span1 {
752
+ grid-column: span 1 / span 1;
753
+ }
754
+ .cell--span2 {
755
+ grid-column: span 2 / span 2;
756
+ }
757
+ .cell--span3 {
758
+ grid-column: span 3 / span 3;
759
+ }
760
+ .cell--span4 {
761
+ grid-column: span 4 / span 4;
762
+ }
763
+
764
+ /* Responzívne nastavenie počtu stĺpcov */
765
+ @media (min-width: 0px) {
766
+ .grid-container {
767
+ grid-template-columns: repeat(4, minmax(0, 1fr)); /* xs */
768
+ }
769
+ }
770
+
771
+ @media (min-width: var(--breakpoint-sm, 600px)) {
772
+ .grid-container {
773
+ grid-template-columns: repeat(4, minmax(0, 1fr)); /* sm */
774
+ }
775
+ }
776
+
777
+ @media (min-width: var(--breakpoint-md, 960px)) {
778
+ .grid-container {
779
+ grid-template-columns: repeat(4, minmax(0, 1fr)); /* md */
780
+ }
781
+ }
782
+
783
+ @media (min-width: var(--breakpoint-lg, 1280px)) {
784
+ .grid-container {
785
+ grid-template-columns: repeat(4, minmax(0, 1fr)); /* lg */
786
+ }
787
+ }
788
+
789
+ @media (min-width: var(--breakpoint-xl, 1536px)) {
790
+ .grid-container {
791
+ grid-template-columns: repeat(auto-fill, minmax(0, 1fr));
792
+ }
793
+ }
794
+ `,
795
+ ];
796
+ __decorate([
797
+ property({ type: Array })
798
+ ], LitCaseVariablesTab.prototype, "rows", void 0);
799
+ __decorate([
800
+ property({ type: Object })
801
+ ], LitCaseVariablesTab.prototype, "data", void 0);
802
+ __decorate([
803
+ property({ type: Boolean })
804
+ ], LitCaseVariablesTab.prototype, "hideTabWhen", void 0);
805
+ __decorate([
806
+ property({ type: String })
807
+ ], LitCaseVariablesTab.prototype, "userLang", void 0);
808
+ __decorate([
809
+ property({ type: String })
810
+ ], LitCaseVariablesTab.prototype, "dateFormat", void 0);
811
+ __decorate([
812
+ property({ type: Boolean })
813
+ ], LitCaseVariablesTab.prototype, "isLoading", void 0);
814
+ __decorate([
815
+ property({ type: Boolean })
816
+ ], LitCaseVariablesTab.prototype, "enableSettings", void 0);
817
+ __decorate([
818
+ property({ type: String })
819
+ ], LitCaseVariablesTab.prototype, "tabId", void 0);
820
+ __decorate([
821
+ property({ type: Boolean })
822
+ ], LitCaseVariablesTab.prototype, "gridVariables", void 0);
823
+ __decorate([
824
+ property({ type: Function })
825
+ ], LitCaseVariablesTab.prototype, "onSettingsChanged", void 0);
826
+ __decorate([
827
+ state()
828
+ ], LitCaseVariablesTab.prototype, "currentBreakpoint", void 0);
829
+ __decorate([
830
+ state()
831
+ ], LitCaseVariablesTab.prototype, "isOpen", void 0);
832
+ __decorate([
833
+ state()
834
+ ], LitCaseVariablesTab.prototype, "filterText", void 0);
835
+ __decorate([
836
+ state()
837
+ ], LitCaseVariablesTab.prototype, "isMobile", void 0);
838
+ LitCaseVariablesTab = __decorate([
839
+ customElement('lit-case-variables-tab')
840
+ ], LitCaseVariablesTab);
841
+ export { LitCaseVariablesTab };
842
+ //# sourceMappingURL=lit-case-variables-tab.js.map