overview-components 1.1.162 → 1.1.165

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 (252) hide show
  1. package/dist/assets/generated/locales/de.js +269 -0
  2. package/dist/assets/generated/locales/de.js.map +1 -0
  3. package/dist/assets/generated/locales/en.js +269 -0
  4. package/dist/assets/generated/locales/en.js.map +1 -0
  5. package/dist/assets/generated/locales/fr.js +269 -0
  6. package/dist/assets/generated/locales/fr.js.map +1 -0
  7. package/dist/assets/generated/locales/hr.js +269 -0
  8. package/dist/assets/generated/locales/hr.js.map +1 -0
  9. package/dist/assets/generated/locales/it.js +269 -0
  10. package/dist/assets/generated/locales/it.js.map +1 -0
  11. package/dist/assets/generated/locales/pl.js +269 -0
  12. package/dist/assets/generated/locales/pl.js.map +1 -0
  13. package/dist/assets/generated/locales/ro.js +269 -0
  14. package/dist/assets/generated/locales/ro.js.map +1 -0
  15. package/dist/assets/generated/locales/sk.js +269 -0
  16. package/dist/assets/generated/locales/sk.js.map +1 -0
  17. package/dist/assets/generated/locales/sr.js +269 -0
  18. package/dist/assets/generated/locales/sr.js.map +1 -0
  19. package/dist/assets/icons/iconGlyphs.js +691 -0
  20. package/dist/assets/icons/iconGlyphs.js.map +1 -0
  21. package/dist/assets/illustration/aichatbot-illustration.js +144 -0
  22. package/dist/assets/illustration/aichatbot-illustration.js.map +1 -0
  23. package/dist/assets/illustration/delete-illustration.js +88 -0
  24. package/dist/assets/illustration/delete-illustration.js.map +1 -0
  25. package/dist/assets/illustration/no-content.js +159 -0
  26. package/dist/assets/illustration/no-content.js.map +1 -0
  27. package/dist/assets/illustration/no-preview.js +125 -0
  28. package/dist/assets/illustration/no-preview.js.map +1 -0
  29. package/dist/assets/illustration/not-found.js +98 -0
  30. package/dist/assets/illustration/not-found.js.map +1 -0
  31. package/dist/assets/illustration/settings-illustration.js +168 -0
  32. package/dist/assets/illustration/settings-illustration.js.map +1 -0
  33. package/dist/components/components-settings/attachments-tab-settings.js +318 -0
  34. package/dist/components/components-settings/attachments-tab-settings.js.map +1 -0
  35. package/dist/components/components-settings/data-grid-settings.js +553 -0
  36. package/dist/components/components-settings/data-grid-settings.js.map +1 -0
  37. package/dist/components/components-settings/section-tab-settings.js +719 -0
  38. package/dist/components/components-settings/section-tab-settings.js.map +1 -0
  39. package/dist/components/components-settings/tabs-overview-settings.js +421 -0
  40. package/dist/components/components-settings/tabs-overview-settings.js.map +1 -0
  41. package/dist/components/index.js +30 -0
  42. package/dist/components/index.js.map +1 -0
  43. package/dist/components/lit-ai-filter-assistant.js +443 -0
  44. package/dist/components/lit-ai-filter-assistant.js.map +1 -0
  45. package/dist/components/lit-attachments-tab.js +2044 -0
  46. package/dist/components/lit-attachments-tab.js.map +1 -0
  47. package/dist/components/lit-badge.js +124 -0
  48. package/dist/components/lit-badge.js.map +1 -0
  49. package/dist/components/lit-case-variables-tab.d.ts +2 -0
  50. package/dist/components/lit-case-variables-tab.d.ts.map +1 -1
  51. package/dist/components/lit-case-variables-tab.js +3763 -0
  52. package/dist/components/lit-case-variables-tab.js.map +1 -0
  53. package/dist/components/lit-chart.js +727 -0
  54. package/dist/components/lit-chart.js.map +1 -0
  55. package/dist/components/lit-data-grid-tanstack.js +2550 -0
  56. package/dist/components/lit-data-grid-tanstack.js.map +1 -0
  57. package/dist/components/lit-filter-builder.js +701 -0
  58. package/dist/components/lit-filter-builder.js.map +1 -0
  59. package/dist/components/lit-filter-modal.js +349 -0
  60. package/dist/components/lit-filter-modal.js.map +1 -0
  61. package/dist/components/lit-multiselect-item.js +707 -0
  62. package/dist/components/lit-multiselect-item.js.map +1 -0
  63. package/dist/components/lit-section-tab.js +268 -0
  64. package/dist/components/lit-section-tab.js.map +1 -0
  65. package/dist/components/lit-tabs-overview.js +356 -0
  66. package/dist/components/lit-tabs-overview.js.map +1 -0
  67. package/dist/components/modals/lit-confirm-modal.js +121 -0
  68. package/dist/components/modals/lit-confirm-modal.js.map +1 -0
  69. package/dist/components/modals/lit-delete-modal.js +131 -0
  70. package/dist/components/modals/lit-delete-modal.js.map +1 -0
  71. package/dist/components/react-wrappers/ai-filter-assistant.js +9 -0
  72. package/dist/components/react-wrappers/ai-filter-assistant.js.map +1 -0
  73. package/dist/components/react-wrappers/attachments-tab.js +9 -0
  74. package/dist/components/react-wrappers/attachments-tab.js.map +1 -0
  75. package/dist/components/react-wrappers/badge.js +9 -0
  76. package/dist/components/react-wrappers/badge.js.map +1 -0
  77. package/dist/components/react-wrappers/button.js +9 -0
  78. package/dist/components/react-wrappers/button.js.map +1 -0
  79. package/dist/components/react-wrappers/calendar.js +9 -0
  80. package/dist/components/react-wrappers/calendar.js.map +1 -0
  81. package/dist/components/react-wrappers/case-variables-tab.js +9 -0
  82. package/dist/components/react-wrappers/case-variables-tab.js.map +1 -0
  83. package/dist/components/react-wrappers/chart.js +9 -0
  84. package/dist/components/react-wrappers/chart.js.map +1 -0
  85. package/dist/components/react-wrappers/data-grid-tanstack.js +9 -0
  86. package/dist/components/react-wrappers/data-grid-tanstack.js.map +1 -0
  87. package/dist/components/react-wrappers/filter-builder.js +12 -0
  88. package/dist/components/react-wrappers/filter-builder.js.map +1 -0
  89. package/dist/components/react-wrappers/filter-modal.js +9 -0
  90. package/dist/components/react-wrappers/filter-modal.js.map +1 -0
  91. package/dist/components/react-wrappers/index.js +27 -0
  92. package/dist/components/react-wrappers/index.js.map +1 -0
  93. package/dist/components/react-wrappers/progress-bar.js +9 -0
  94. package/dist/components/react-wrappers/progress-bar.js.map +1 -0
  95. package/dist/components/react-wrappers/section-tab.js +9 -0
  96. package/dist/components/react-wrappers/section-tab.js.map +1 -0
  97. package/dist/components/react-wrappers/tabs-overview.js +9 -0
  98. package/dist/components/react-wrappers/tabs-overview.js.map +1 -0
  99. package/dist/data/translations.js +2768 -0
  100. package/dist/data/translations.js.map +1 -0
  101. package/dist/index.d.ts +0 -1
  102. package/dist/index.d.ts.map +1 -1
  103. package/dist/index.js +7 -22487
  104. package/dist/index.js.map +1 -0
  105. package/dist/schemas/index.js +18 -0
  106. package/dist/schemas/index.js.map +1 -0
  107. package/dist/schemas/lit-attachments-tab-document.schema.js +39 -0
  108. package/dist/schemas/lit-attachments-tab-document.schema.js.map +1 -0
  109. package/dist/schemas/lit-attachments-tab-settings-value.schema.js +30 -0
  110. package/dist/schemas/lit-attachments-tab-settings-value.schema.js.map +1 -0
  111. package/dist/schemas/lit-attachments-tab.schema.js +68 -0
  112. package/dist/schemas/lit-attachments-tab.schema.js.map +1 -0
  113. package/dist/schemas/lit-case-variables-tab-cell.schema.d.ts +3 -0
  114. package/dist/schemas/lit-case-variables-tab-cell.schema.d.ts.map +1 -1
  115. package/dist/schemas/lit-case-variables-tab-cell.schema.js +226 -0
  116. package/dist/schemas/lit-case-variables-tab-cell.schema.js.map +1 -0
  117. package/dist/schemas/lit-case-variables-tab-rows.schema.d.ts +3 -0
  118. package/dist/schemas/lit-case-variables-tab-rows.schema.d.ts.map +1 -1
  119. package/dist/schemas/lit-case-variables-tab-rows.schema.js +6 -0
  120. package/dist/schemas/lit-case-variables-tab-rows.schema.js.map +1 -0
  121. package/dist/schemas/lit-case-variables-tab.schema.d.ts +6 -0
  122. package/dist/schemas/lit-case-variables-tab.schema.d.ts.map +1 -1
  123. package/dist/schemas/lit-case-variables-tab.schema.js +27 -0
  124. package/dist/schemas/lit-case-variables-tab.schema.js.map +1 -0
  125. package/dist/schemas/lit-data-grid-tanstack-column-array.schema.js +6 -0
  126. package/dist/schemas/lit-data-grid-tanstack-column-array.schema.js.map +1 -0
  127. package/dist/schemas/lit-data-grid-tanstack-column-custom-filter-array.schema.js +6 -0
  128. package/dist/schemas/lit-data-grid-tanstack-column-custom-filter-array.schema.js.map +1 -0
  129. package/dist/schemas/lit-data-grid-tanstack-column-custom-filter.schema.js +11 -0
  130. package/dist/schemas/lit-data-grid-tanstack-column-custom-filter.schema.js.map +1 -0
  131. package/dist/schemas/lit-data-grid-tanstack-column.schema.js +79 -0
  132. package/dist/schemas/lit-data-grid-tanstack-column.schema.js.map +1 -0
  133. package/dist/schemas/lit-data-grid-tanstack.schema.js +108 -0
  134. package/dist/schemas/lit-data-grid-tanstack.schema.js.map +1 -0
  135. package/dist/schemas/lit-filter-builder.schema.js +61 -0
  136. package/dist/schemas/lit-filter-builder.schema.js.map +1 -0
  137. package/dist/schemas/lit-section-tab-schema.js +37 -0
  138. package/dist/schemas/lit-section-tab-schema.js.map +1 -0
  139. package/dist/schemas/lit-tabs-overview-tab-array.schema.js +6 -0
  140. package/dist/schemas/lit-tabs-overview-tab-array.schema.js.map +1 -0
  141. package/dist/schemas/lit-tabs-overview-tab.schema.js +32 -0
  142. package/dist/schemas/lit-tabs-overview-tab.schema.js.map +1 -0
  143. package/dist/schemas/lit-tabs-overview.schema.js +29 -0
  144. package/dist/schemas/lit-tabs-overview.schema.js.map +1 -0
  145. package/dist/scripts/translate-locales.js +241 -0
  146. package/dist/scripts/translate-locales.js.map +1 -0
  147. package/dist/shared/filter-inputs.js +429 -0
  148. package/dist/shared/filter-inputs.js.map +1 -0
  149. package/dist/shared/index.js +40 -0
  150. package/dist/shared/index.js.map +1 -0
  151. package/dist/shared/lit-button.js +159 -0
  152. package/dist/shared/lit-button.js.map +1 -0
  153. package/dist/shared/lit-calendar.js +485 -0
  154. package/dist/shared/lit-calendar.js.map +1 -0
  155. package/dist/shared/lit-case-variables-tab-cell.d.ts +2 -0
  156. package/dist/shared/lit-case-variables-tab-cell.d.ts.map +1 -1
  157. package/dist/shared/lit-case-variables-tab-cell.js +235 -0
  158. package/dist/shared/lit-case-variables-tab-cell.js.map +1 -0
  159. package/dist/shared/lit-checkbox.js +184 -0
  160. package/dist/shared/lit-checkbox.js.map +1 -0
  161. package/dist/shared/lit-custom-popper.js +116 -0
  162. package/dist/shared/lit-custom-popper.js.map +1 -0
  163. package/dist/shared/lit-data-grid-action-buttons-popover.js +295 -0
  164. package/dist/shared/lit-data-grid-action-buttons-popover.js.map +1 -0
  165. package/dist/shared/lit-data-grid-density-popover.js +84 -0
  166. package/dist/shared/lit-data-grid-density-popover.js.map +1 -0
  167. package/dist/shared/lit-data-grid-export-popover.js +68 -0
  168. package/dist/shared/lit-data-grid-export-popover.js.map +1 -0
  169. package/dist/shared/lit-data-grid-operators-popover.js +114 -0
  170. package/dist/shared/lit-data-grid-operators-popover.js.map +1 -0
  171. package/dist/shared/lit-data-grid-row-actions.js +87 -0
  172. package/dist/shared/lit-data-grid-row-actions.js.map +1 -0
  173. package/dist/shared/lit-date-picker.js +608 -0
  174. package/dist/shared/lit-date-picker.js.map +1 -0
  175. package/dist/shared/lit-document-thumbnail.js +383 -0
  176. package/dist/shared/lit-document-thumbnail.js.map +1 -0
  177. package/dist/shared/lit-filter-input.js +115 -0
  178. package/dist/shared/lit-filter-input.js.map +1 -0
  179. package/dist/shared/lit-icon-button.js +165 -0
  180. package/dist/shared/lit-icon-button.js.map +1 -0
  181. package/dist/shared/lit-icon.js +337 -0
  182. package/dist/shared/lit-icon.js.map +1 -0
  183. package/dist/shared/lit-input.js +282 -0
  184. package/dist/shared/lit-input.js.map +1 -0
  185. package/dist/shared/lit-label.js +103 -0
  186. package/dist/shared/lit-label.js.map +1 -0
  187. package/dist/shared/lit-loader.js +68 -0
  188. package/dist/shared/lit-loader.js.map +1 -0
  189. package/dist/shared/lit-loading-bar.js +91 -0
  190. package/dist/shared/lit-loading-bar.js.map +1 -0
  191. package/dist/shared/lit-menu-item.js +98 -0
  192. package/dist/shared/lit-menu-item.js.map +1 -0
  193. package/dist/shared/lit-menu.js +29 -0
  194. package/dist/shared/lit-menu.js.map +1 -0
  195. package/dist/shared/lit-modal-body.js +24 -0
  196. package/dist/shared/lit-modal-body.js.map +1 -0
  197. package/dist/shared/lit-modal-footer.js +21 -0
  198. package/dist/shared/lit-modal-footer.js.map +1 -0
  199. package/dist/shared/lit-modal-header.js +34 -0
  200. package/dist/shared/lit-modal-header.js.map +1 -0
  201. package/dist/shared/lit-modal.js +168 -0
  202. package/dist/shared/lit-modal.js.map +1 -0
  203. package/dist/shared/lit-overflow-tooltip.js +114 -0
  204. package/dist/shared/lit-overflow-tooltip.js.map +1 -0
  205. package/dist/shared/lit-pill.js +87 -0
  206. package/dist/shared/lit-pill.js.map +1 -0
  207. package/dist/shared/lit-progress-bar.js +130 -0
  208. package/dist/shared/lit-progress-bar.js.map +1 -0
  209. package/dist/shared/lit-responsive-button.js +106 -0
  210. package/dist/shared/lit-responsive-button.js.map +1 -0
  211. package/dist/shared/lit-select-field.js +457 -0
  212. package/dist/shared/lit-select-field.js.map +1 -0
  213. package/dist/shared/lit-select.js +668 -0
  214. package/dist/shared/lit-select.js.map +1 -0
  215. package/dist/shared/lit-settings.js +76 -0
  216. package/dist/shared/lit-settings.js.map +1 -0
  217. package/dist/shared/lit-text-field.js +252 -0
  218. package/dist/shared/lit-text-field.js.map +1 -0
  219. package/dist/shared/lit-toggle.js +240 -0
  220. package/dist/shared/lit-toggle.js.map +1 -0
  221. package/dist/shared/lit-tooltip.js +165 -0
  222. package/dist/shared/lit-tooltip.js.map +1 -0
  223. package/dist/shared/simple-popper.js +285 -0
  224. package/dist/shared/simple-popper.js.map +1 -0
  225. package/dist/shared/simple-tooltip.js +249 -0
  226. package/dist/shared/simple-tooltip.js.map +1 -0
  227. package/dist/shared/styles/button-shared-styles.js +494 -0
  228. package/dist/shared/styles/button-shared-styles.js.map +1 -0
  229. package/dist/styles.js +169 -0
  230. package/dist/styles.js.map +1 -0
  231. package/dist/utils/custom-filters.js +42 -0
  232. package/dist/utils/custom-filters.js.map +1 -0
  233. package/dist/utils/date.js +21 -0
  234. package/dist/utils/date.js.map +1 -0
  235. package/dist/utils/file-type-utils.js +55 -0
  236. package/dist/utils/file-type-utils.js.map +1 -0
  237. package/dist/utils/formatNumber.js +62 -0
  238. package/dist/utils/formatNumber.js.map +1 -0
  239. package/dist/utils/getOperatorByType.js +70 -0
  240. package/dist/utils/getOperatorByType.js.map +1 -0
  241. package/dist/utils/getOverviewValue.js +175 -0
  242. package/dist/utils/getOverviewValue.js.map +1 -0
  243. package/dist/utils/localization.js +433 -0
  244. package/dist/utils/localization.js.map +1 -0
  245. package/dist/utils/pdf-thumbnail-generator.js +91 -0
  246. package/dist/utils/pdf-thumbnail-generator.js.map +1 -0
  247. package/dist/utils/utils.js +94 -0
  248. package/dist/utils/utils.js.map +1 -0
  249. package/package.json +21 -55
  250. package/README.md +0 -82
  251. package/dist/assets/illustration/index.d.ts +0 -7
  252. package/dist/assets/illustration/index.d.ts.map +0 -1
@@ -0,0 +1,719 @@
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 { property, state } from 'lit/decorators.js';
8
+ import { css, html, LitElement } from 'lit';
9
+ import { IconArray } from '../../shared/lit-icon.js';
10
+ import { msg } from '@lit/localize';
11
+ import { setLocale, getLocale, LOCALE_LANGS } from '../../utils/localization.js';
12
+ //components
13
+ import '../../shared/lit-icon.js';
14
+ import '../../shared/lit-input.js';
15
+ import '../../shared/lit-select.js';
16
+ import '../../shared/lit-toggle.js';
17
+ import '../../shared/lit-select-field.js';
18
+ import '../../shared/lit-text-field.js';
19
+ import '../lit-filter-builder.js';
20
+ import '../../shared/simple-popper.js';
21
+ import '../lit-tabs-overview.js';
22
+ import '../../assets/illustration/not-found.js';
23
+ import '../../assets/illustration/settings-illustration.js';
24
+ import '../../shared/lit-menu.js';
25
+ import '../../shared/lit-menu-item.js';
26
+ import '../../shared/lit-button.js';
27
+ import '../../shared/lit-icon-button.js';
28
+ import '../../shared/lit-text-field.js';
29
+ import '../../shared/lit-modal.js';
30
+ import '../../shared/lit-checkbox.js';
31
+ import '../../shared/lit-modal-header.js';
32
+ import '../../shared/lit-modal-footer.js';
33
+ import '../../shared/lit-modal-body.js';
34
+ import '../../shared/lit-label.js';
35
+ function generateShortId() {
36
+ return Math.random().toString(36).substring(2, 8);
37
+ }
38
+ export class SectionTabSettings extends LitElement {
39
+ constructor() {
40
+ super(...arguments);
41
+ this.onSettingsChangedModal = (settingsValue) => { };
42
+ this.showAutomaticHeightOptionInSettings = true;
43
+ this.aiLoading = false;
44
+ this.allowedLang = ['cs'];
45
+ this.variables = [];
46
+ this.userLang = 'cs';
47
+ this.isOpen = false;
48
+ this.showHideCondition = false;
49
+ this.filterText = '';
50
+ this.isOpenModal = false;
51
+ this.filterData = {
52
+ fields: [],
53
+ operators: [],
54
+ filterGroups: [
55
+ {
56
+ id: generateShortId(),
57
+ logicOperator: 'AND',
58
+ conditions: [{ id: generateShortId(), field: '', operator: '=', value: '' }],
59
+ },
60
+ ],
61
+ groupLogicOperator: 'AND',
62
+ };
63
+ this.activeTab = 'general';
64
+ this._onFilterChange = (event) => {
65
+ const { filterGroups, groupLogicOperator } = event.detail;
66
+ // Update filter data with multi-group structure (fields removed)
67
+ this.filterData = {
68
+ filterGroups: filterGroups || [],
69
+ groupLogicOperator: groupLogicOperator || 'AND',
70
+ };
71
+ // Update cached data
72
+ this.cachedFilterBuilderData = this.filterData;
73
+ // Store the full multi-group structure
74
+ if (this.filterData.filterGroups.length &&
75
+ this.filterData.filterGroups.some((group) => group.conditions.length && group.conditions[0].field)) {
76
+ this.updateLocalSettings({ hideTabWhen: this.filterData });
77
+ }
78
+ else {
79
+ this.updateLocalSettings({ hideTabWhen: undefined });
80
+ }
81
+ };
82
+ }
83
+ getLocaleLang() {
84
+ if (this.userLang && LOCALE_LANGS.has(this.userLang)) {
85
+ return this.userLang;
86
+ }
87
+ return 'cs';
88
+ }
89
+ connectedCallback() {
90
+ super.connectedCallback();
91
+ this._updateCachedFilterBuilderData();
92
+ }
93
+ willUpdate(changedProperties) {
94
+ if (changedProperties.has('userLang')) {
95
+ const localeLang = this.getLocaleLang();
96
+ if (getLocale() !== localeLang) {
97
+ setLocale(localeLang).then(() => this.requestUpdate());
98
+ }
99
+ }
100
+ if (changedProperties.has('settingsValue')) {
101
+ this.localSettingsValue = this.settingsValue ? { ...this.settingsValue } : {};
102
+ // Initialize filter data from existing condition
103
+ const hideTabWhen = this.localSettingsValue?.hideTabWhen;
104
+ if (hideTabWhen && typeof hideTabWhen === 'object') {
105
+ // Check if it's already in multi-group format
106
+ if ('filterGroups' in hideTabWhen && 'groupLogicOperator' in hideTabWhen) {
107
+ this.filterData = hideTabWhen;
108
+ this.showHideCondition = true;
109
+ }
110
+ else if ('logicOperator' in hideTabWhen && 'conditions' in hideTabWhen) {
111
+ // Convert from legacy single-group format
112
+ this.filterData = {
113
+ fields: [],
114
+ operators: [],
115
+ filterGroups: [hideTabWhen],
116
+ groupLogicOperator: 'AND',
117
+ };
118
+ this.showHideCondition = true;
119
+ }
120
+ }
121
+ else if (typeof hideTabWhen === 'boolean' && hideTabWhen) {
122
+ this.showHideCondition = true;
123
+ // Initialize with default filter data when boolean is true
124
+ const defaultField = this.variables.length > 0 ? this.variables[0].field : '';
125
+ this.filterData = {
126
+ fields: [],
127
+ operators: [],
128
+ filterGroups: [
129
+ {
130
+ id: generateShortId(),
131
+ logicOperator: 'AND',
132
+ conditions: [
133
+ {
134
+ id: generateShortId(),
135
+ field: defaultField,
136
+ operator: '=',
137
+ value: '',
138
+ },
139
+ ],
140
+ },
141
+ ],
142
+ groupLogicOperator: 'AND',
143
+ };
144
+ }
145
+ else {
146
+ this.showHideCondition = false;
147
+ }
148
+ }
149
+ // Update cached data if variables or filterData changed
150
+ if (changedProperties.has('variables') || changedProperties.has('filterData')) {
151
+ this._updateCachedFilterBuilderData();
152
+ }
153
+ }
154
+ trySendSettingsUpdate() {
155
+ this.onSettingsChangedModal?.(this.localSettingsValue);
156
+ if (this.onClose) {
157
+ this.onClose();
158
+ }
159
+ }
160
+ _getFilterFieldsFromVariables() {
161
+ return this.variables.map((variable) => {
162
+ const variableType = variable.type;
163
+ // Get localized header name or fall back to default headerName or field
164
+ const headerNameKey = `headerName_${this.userLang}`;
165
+ const displayName = variable[headerNameKey] || variable.headerName || variable.field;
166
+ return {
167
+ value: variable.field,
168
+ label: `${displayName} (${variable.field})`,
169
+ type: variableType === 'string'
170
+ ? 'string'
171
+ : variableType === 'number' || variableType === 'currency'
172
+ ? 'number'
173
+ : variableType === 'date'
174
+ ? 'date'
175
+ : variableType === 'select'
176
+ ? 'select'
177
+ : 'string',
178
+ valueOptions: variableType === 'select' && variable.valueOptions
179
+ ? variable.valueOptions.map((opt) => ({
180
+ value: String(opt.value ?? ''),
181
+ label: opt.label,
182
+ }))
183
+ : undefined,
184
+ };
185
+ });
186
+ }
187
+ _getTabDefinitions() {
188
+ return [
189
+ {
190
+ id: 'general',
191
+ label: {
192
+ default: msg('Obecná nastavení'),
193
+ },
194
+ icon: 'administration',
195
+ },
196
+ {
197
+ id: 'hideWhen',
198
+ label: {
199
+ default: msg('Skrýt sekci když'),
200
+ },
201
+ icon: 'hide',
202
+ },
203
+ ];
204
+ }
205
+ updateLocalSettings(updates) {
206
+ this.localSettingsValue = {
207
+ ...this.localSettingsValue,
208
+ ...updates,
209
+ };
210
+ }
211
+ closePopover() {
212
+ this.isOpen = false;
213
+ }
214
+ toggleCustomPopover() {
215
+ this.isOpen = !this.isOpen;
216
+ }
217
+ discardChanges() {
218
+ this.localSettingsValue = this.settingsValue ? { ...this.settingsValue } : {};
219
+ // Reset the condition builder state to match the original settingsValue
220
+ this._resetConditionBuilderState();
221
+ if (this.onClose) {
222
+ this.onClose();
223
+ }
224
+ }
225
+ _resetConditionBuilderState() {
226
+ const hideTabWhen = this.settingsValue?.hideTabWhen;
227
+ if (hideTabWhen && typeof hideTabWhen === 'object') {
228
+ // Check if it's already in multi-group format
229
+ if ('filterGroups' in hideTabWhen && 'groupLogicOperator' in hideTabWhen) {
230
+ this.filterData = hideTabWhen;
231
+ this.showHideCondition = true;
232
+ }
233
+ else if ('logicOperator' in hideTabWhen && 'conditions' in hideTabWhen) {
234
+ // Convert from legacy single-group format
235
+ this.filterData = {
236
+ filterGroups: [hideTabWhen],
237
+ groupLogicOperator: 'AND',
238
+ };
239
+ this.showHideCondition = true;
240
+ }
241
+ else {
242
+ // Initialize with default filter data from first variable if available
243
+ const defaultField = this.variables.length > 0 ? this.variables[0].field : '';
244
+ this.filterData = {
245
+ filterGroups: [
246
+ {
247
+ id: generateShortId(),
248
+ logicOperator: 'AND',
249
+ conditions: [
250
+ {
251
+ id: generateShortId(),
252
+ field: defaultField,
253
+ operator: '=',
254
+ value: '',
255
+ },
256
+ ],
257
+ },
258
+ ],
259
+ groupLogicOperator: 'AND',
260
+ };
261
+ this.showHideCondition = true;
262
+ }
263
+ }
264
+ else if (typeof hideTabWhen === 'boolean' && hideTabWhen) {
265
+ this.showHideCondition = true;
266
+ // Reset to default filter data for boolean conditions
267
+ const defaultField = this.variables.length > 0 ? this.variables[0].field : '';
268
+ this.filterData = {
269
+ filterGroups: [
270
+ {
271
+ id: generateShortId(),
272
+ logicOperator: 'AND',
273
+ conditions: [
274
+ {
275
+ id: generateShortId(),
276
+ field: defaultField,
277
+ operator: '=',
278
+ value: '',
279
+ },
280
+ ],
281
+ },
282
+ ],
283
+ groupLogicOperator: 'AND',
284
+ };
285
+ }
286
+ else {
287
+ this.showHideCondition = false;
288
+ // Reset to default filter data
289
+ const defaultField = this.variables.length > 0 ? this.variables[0].field : '';
290
+ this.filterData = {
291
+ filterGroups: [
292
+ {
293
+ id: generateShortId(),
294
+ logicOperator: 'AND',
295
+ conditions: [
296
+ {
297
+ id: generateShortId(),
298
+ field: defaultField,
299
+ operator: '=',
300
+ value: '',
301
+ },
302
+ ],
303
+ },
304
+ ],
305
+ groupLogicOperator: 'AND',
306
+ };
307
+ }
308
+ }
309
+ _renderHideWhenControl() {
310
+ const hideTabWhen = this.localSettingsValue?.hideTabWhen;
311
+ const hasCondition = hideTabWhen &&
312
+ typeof hideTabWhen === 'object' &&
313
+ (('variable' in hideTabWhen && hideTabWhen.variable) ||
314
+ ('filterGroups' in hideTabWhen &&
315
+ hideTabWhen.filterGroups &&
316
+ hideTabWhen.filterGroups.length > 0));
317
+ return html `
318
+ <div class="hide-when-control">
319
+ <div class="hide-when-header">
320
+ <lit-toggle
321
+ .label="${msg('Skrýt sekci při splnění podmínky')}"
322
+ .checked="${hasCondition || this.showHideCondition}"
323
+ @change="${(e) => this._toggleCondition(e.detail)}"
324
+ ></lit-toggle>
325
+ </div>
326
+
327
+ ${this.showHideCondition
328
+ ? (() => {
329
+ const filterData = this._convertToFilterBuilderData();
330
+ const fields = this._getFilterFieldsFromVariables();
331
+ return html `
332
+ <lit-filter-builder
333
+ id="section-filter-builder"
334
+ .data="${filterData}"
335
+ .fields="${fields}"
336
+ .disabled="${false}"
337
+ .locale="${this.userLang}"
338
+ @filter-change="${this._onFilterChange}"
339
+ ></lit-filter-builder>
340
+ `;
341
+ })()
342
+ : ''}
343
+ </div>
344
+ `;
345
+ }
346
+ _toggleCondition(enabled) {
347
+ if (enabled) {
348
+ this.showHideCondition = true;
349
+ // Only initialize new filter data if no existing data is present
350
+ if (!this.filterData.filterGroups?.length ||
351
+ !this.filterData.filterGroups[0]?.conditions?.length ||
352
+ !this.filterData.filterGroups[0]?.conditions[0]?.field) {
353
+ // Initialize filter data with first variable if available
354
+ if (this.variables.length > 0) {
355
+ const defaultItem = {
356
+ id: generateShortId(),
357
+ field: this.variables[0].field,
358
+ operator: '=',
359
+ value: '',
360
+ };
361
+ this.filterData = {
362
+ filterGroups: [
363
+ {
364
+ id: generateShortId(),
365
+ logicOperator: 'AND',
366
+ conditions: [defaultItem],
367
+ },
368
+ ],
369
+ groupLogicOperator: 'AND',
370
+ };
371
+ }
372
+ }
373
+ // Save the existing or newly created filter data
374
+ this.updateLocalSettings({ hideTabWhen: this.filterData });
375
+ }
376
+ else {
377
+ this.showHideCondition = false;
378
+ this._clearCondition();
379
+ }
380
+ }
381
+ _clearCondition() {
382
+ this.updateLocalSettings({ hideTabWhen: undefined });
383
+ }
384
+ _updateCachedFilterBuilderData() {
385
+ // Use the current filterData structure directly (fields are now separate)
386
+ this.cachedFilterBuilderData = {
387
+ filterGroups: this.filterData.filterGroups || [
388
+ {
389
+ id: 'section-filter-group',
390
+ logicOperator: 'AND',
391
+ conditions: [],
392
+ },
393
+ ],
394
+ groupLogicOperator: this.filterData.groupLogicOperator || 'AND',
395
+ };
396
+ }
397
+ _convertToFilterBuilderData() {
398
+ if (!this.cachedFilterBuilderData) {
399
+ this._updateCachedFilterBuilderData();
400
+ }
401
+ return this.cachedFilterBuilderData;
402
+ }
403
+ _renderGeneralSettings() {
404
+ const filteredKeys = (IconArray || []).filter((key) => key.toLowerCase().includes(this.filterText));
405
+ return html `
406
+ <div class="tab-content">
407
+ ${this.showAutomaticHeightOptionInSettings
408
+ ? html `
409
+ <lit-toggle
410
+ .label="${msg('Automatická výška sekce')}"
411
+ .tooltip="${msg('Sekce se automaticky přizpůsobí výšce obsahu')}"
412
+ .checked=${this.localSettingsValue?.[`autoHeight`] ?? false}
413
+ @change=${(e) => {
414
+ this.updateLocalSettings({ autoHeight: e.detail });
415
+ }}
416
+ ></lit-toggle>
417
+ `
418
+ : ''}
419
+ <lit-toggle
420
+ .label="${msg('Zobrazit ikonu v názvu sekce')}"
421
+ .checked=${this.localSettingsValue?.showTitleIcon !== false}
422
+ @change=${(e) => {
423
+ this.updateLocalSettings({ showTitleIcon: e.detail });
424
+ }}
425
+ ></lit-toggle>
426
+
427
+ ${this.localSettingsValue?.showTitleIcon !== false
428
+ ? html `
429
+ <div style="display: flex; align-items: center; gap: 1rem;">
430
+ <lit-label label=${msg('Icona Sekce')}></lit-label>
431
+ <lit-icon-button
432
+ color="secondary"
433
+ variant="dashed"
434
+ size="medium"
435
+ .icon="${this.localSettingsValue?.titleIcon || 'documents'}"
436
+ @click="${this.toggleCustomPopover}"
437
+ ></lit-icon-button>
438
+ </div>
439
+
440
+ <simple-popper
441
+ .showing=${this.isOpen}
442
+ .placement=${'bottom-start'}
443
+ .onClose=${this.closePopover.bind(this)}
444
+ .manualOpening=${true}
445
+ >
446
+ <style>
447
+ .icon-menu {
448
+ display: flex;
449
+ flex-wrap: wrap;
450
+ gap: 0.5rem;
451
+ padding: 0.5rem;
452
+ }
453
+ .icon-select-item {
454
+ cursor: pointer;
455
+ width: 2.5rem;
456
+ height: 2.5rem;
457
+ display: flex;
458
+ align-items: center;
459
+ justify-content: center;
460
+ border-radius: var(--border-radius-small, 4px);
461
+ transition: background 0.15s;
462
+ }
463
+ .icon-select-item:hover {
464
+ background-color: var(--color-primary-light, #e0e7ff);
465
+ }
466
+ </style>
467
+ <div
468
+ style="max-height: 12.5rem; height: 12.5rem; overflow-y: auto; width: 500px; max-width: 100%;"
469
+ >
470
+ <div class="popper-input">
471
+ <lit-input
472
+ .value=${this.filterText}
473
+ .onInput=${(value) => {
474
+ this.filterText = value?.toLowerCase?.() || '';
475
+ }}
476
+ .onClear=${() => {
477
+ this.filterText = '';
478
+ }}
479
+ placeholder="${msg('Zadejte název ikony')}"
480
+ ></lit-input>
481
+ </div>
482
+
483
+ <div class="icon-menu">
484
+ ${filteredKeys.map((key) => html `
485
+ <div
486
+ class="icon-select-item"
487
+ @click=${() => {
488
+ this.updateLocalSettings({
489
+ titleIcon: key,
490
+ });
491
+ this.closePopover();
492
+ }}
493
+ .isActive=${this.localSettingsValue?.titleIcon === key}
494
+ >
495
+ <lit-icon size="1rem" icon="${key}"></lit-icon>
496
+ </div>
497
+ `)}
498
+ </div>
499
+ </div>
500
+ </simple-popper>
501
+ `
502
+ : ''}
503
+ <div style="margin-top: 1rem; display: flex; flex-direction: column; gap: 1rem;">
504
+ <lit-text-field
505
+ .aiEnabled=${typeof this.onAiFunction === 'function'}
506
+ .label="${msg('Název sekce')}"
507
+ .value=${this.localSettingsValue?.titleLabel || ''}
508
+ .placeholder="${msg('Zadejte název sekce')}"
509
+ @onChange="${(e) => {
510
+ this.updateLocalSettings({ titleLabel: e.detail });
511
+ }}"
512
+ .onClickAiIcon="${(currentValue) => {
513
+ if (typeof this.onAiFunction === 'function') {
514
+ this.onAiFunction(currentValue);
515
+ }
516
+ }}"
517
+ .aiLoading=${this.aiLoading}
518
+ ></lit-text-field>
519
+
520
+ ${(this.allowedLang || []).map((lang) => html `
521
+ <lit-text-field
522
+ .label=${`${msg('Název sekce')} ${lang.toUpperCase()}`}
523
+ .placeholder=${`${msg('Zadejte název')} ${lang.toUpperCase()}`}
524
+ .value=${this.localSettingsValue?.[`titleLabel_${lang}`] || ''}
525
+ @onChange=${(e) => {
526
+ this.updateLocalSettings({
527
+ [`titleLabel_${lang}`]: e.detail,
528
+ });
529
+ }}
530
+ ></lit-text-field>
531
+ `)}
532
+ </div>
533
+ </div>
534
+ `;
535
+ }
536
+ render() {
537
+ return html `
538
+ <lit-modal
539
+ .open=${this.isOpenModal}
540
+ .onClose=${() => {
541
+ this.discardChanges();
542
+ }}
543
+ .closeOnOutsideClick=${false}
544
+ .fullScreen=${window.innerWidth <=
545
+ (parseInt(getComputedStyle(document.documentElement).getPropertyValue('--breakpoint-sm')) || 600)}
546
+ style="min-width: 60vw;"
547
+ >
548
+ <lit-modal-header
549
+ style="display: flex; align-items: center; justify-content: space-between; color: var(--text-secondary, #777);"
550
+ >
551
+ ${msg('Konfigurace') + ' - ' + (this.localSettingsValue?.[`titleLabel_${this.userLang}`] || this.localSettingsValue?.titleLabel || msg('SectionTab'))}
552
+ <lit-icon-button
553
+ .icon="${'close'}"
554
+ variant="text"
555
+ color="secondary"
556
+ size="${'small'}"
557
+ @click=${() => this.discardChanges()}
558
+ ></lit-icon-button>
559
+ </lit-modal-header>
560
+ <lit-modal-body>
561
+ <div style="display: flex; flex-direction: column; gap: 0.5rem">
562
+ <div class="settings-tabs">
563
+ <lit-tabs-overview
564
+ .tabs="${this._getTabDefinitions()}"
565
+ .initialSelectedTabId="${this.activeTab}"
566
+ .userLang="${this.userLang}"
567
+ .allowedLang="${this.allowedLang}"
568
+ >
569
+ <div slot="general">${this._renderGeneralSettings()}</div>
570
+ <div slot="hideWhen">${this._renderHideWhenControl()}</div>
571
+ </lit-tabs-overview>
572
+ </div>
573
+ </div>
574
+ </lit-modal-body>
575
+ <lit-modal-footer
576
+ style=" display: flex;
577
+ flex-direction: row;
578
+ gap: 0.5rem;
579
+ justify-content: center;"
580
+ >
581
+ <lit-button
582
+ .label="${msg('Uložit')}"
583
+ .icon="check"
584
+ .size="medium"
585
+ @click=${() => this.trySendSettingsUpdate()}
586
+ ></lit-button>
587
+ <lit-button
588
+ color="secondary"
589
+ .label="${msg('Zrušit')}"
590
+ variant="text"
591
+ .icon="close"
592
+ .size="medium"
593
+ @click=${() => this.discardChanges()}
594
+ ></lit-button>
595
+ </lit-modal-footer>
596
+ </lit-modal>
597
+ `;
598
+ }
599
+ }
600
+ SectionTabSettings.styles = [
601
+ css `
602
+ .hide-when-control {
603
+ padding: 12px;
604
+ border: 1px solid var(--color-divider, #d0d3db);
605
+ border-radius: 4px;
606
+ background: var(--background-paper, #fff);
607
+ margin-top: 8px;
608
+ }
609
+
610
+ .hide-when-header {
611
+ display: flex;
612
+ align-items: center;
613
+ gap: 8px;
614
+ margin-bottom: 8px;
615
+ }
616
+
617
+ .condition-builder {
618
+ display: flex !important;
619
+ flex-direction: row !important;
620
+ gap: 8px;
621
+ align-items: flex-end !important;
622
+ margin-top: 8px;
623
+ width: 100%;
624
+ }
625
+
626
+ .condition-builder.hidden {
627
+ display: none;
628
+ }
629
+
630
+ .condition-preview {
631
+ width: 100%;
632
+ font-size: 12px;
633
+ color: var(--text-secondary, #777);
634
+ padding: 4px 8px;
635
+ background: var(--color-primary-light, #f0f0f0);
636
+ border-radius: 4px;
637
+ margin-top: 8px;
638
+ }
639
+
640
+ .clear-condition-button {
641
+ color: var(--color-warning, #ff9500);
642
+ }
643
+
644
+ .popper-input {
645
+ margin-bottom: 0.5rem;
646
+ position: sticky;
647
+ top: 0;
648
+ background-color: var(--background-paper, #fff);
649
+ z-index: 1;
650
+ }
651
+
652
+ /* Tab content styles */
653
+ .tab-content {
654
+ padding: 1rem;
655
+ height: calc(100% - 3rem);
656
+ overflow-y: auto;
657
+ background-color: var(--background-paper, #fff);
658
+ }
659
+
660
+ .settings-tabs {
661
+ height: 400px;
662
+ }
663
+ `,
664
+ ];
665
+ __decorate([
666
+ property({ type: Object })
667
+ ], SectionTabSettings.prototype, "settingsValue", void 0);
668
+ __decorate([
669
+ property({ type: Function })
670
+ ], SectionTabSettings.prototype, "onSettingsChangedModal", void 0);
671
+ __decorate([
672
+ property({ type: Boolean })
673
+ ], SectionTabSettings.prototype, "showAutomaticHeightOptionInSettings", void 0);
674
+ __decorate([
675
+ property({ type: Boolean })
676
+ ], SectionTabSettings.prototype, "aiLoading", void 0);
677
+ __decorate([
678
+ property({ type: Array })
679
+ ], SectionTabSettings.prototype, "allowedLang", void 0);
680
+ __decorate([
681
+ property({ type: Array })
682
+ ], SectionTabSettings.prototype, "variables", void 0);
683
+ __decorate([
684
+ property({ type: Function })
685
+ ], SectionTabSettings.prototype, "onClose", void 0);
686
+ __decorate([
687
+ property({ type: String })
688
+ ], SectionTabSettings.prototype, "userLang", void 0);
689
+ __decorate([
690
+ property({ type: Function })
691
+ ], SectionTabSettings.prototype, "onAiFunction", void 0);
692
+ __decorate([
693
+ state()
694
+ ], SectionTabSettings.prototype, "isOpen", void 0);
695
+ __decorate([
696
+ state()
697
+ ], SectionTabSettings.prototype, "showHideCondition", void 0);
698
+ __decorate([
699
+ state()
700
+ ], SectionTabSettings.prototype, "filterText", void 0);
701
+ __decorate([
702
+ state()
703
+ ], SectionTabSettings.prototype, "localSettingsValue", void 0);
704
+ __decorate([
705
+ state()
706
+ ], SectionTabSettings.prototype, "isOpenModal", void 0);
707
+ __decorate([
708
+ state()
709
+ ], SectionTabSettings.prototype, "filterData", void 0);
710
+ __decorate([
711
+ state()
712
+ ], SectionTabSettings.prototype, "activeTab", void 0);
713
+ __decorate([
714
+ state()
715
+ ], SectionTabSettings.prototype, "cachedFilterBuilderData", void 0);
716
+ if (!window.customElements.get('section-tab-settings')) {
717
+ window.customElements.define('section-tab-settings', SectionTabSettings);
718
+ }
719
+ //# sourceMappingURL=section-tab-settings.js.map