overview-components 1.1.161 → 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 (250) 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.js +7 -19890
  102. package/dist/index.js.map +1 -0
  103. package/dist/schemas/index.js +18 -0
  104. package/dist/schemas/index.js.map +1 -0
  105. package/dist/schemas/lit-attachments-tab-document.schema.js +39 -0
  106. package/dist/schemas/lit-attachments-tab-document.schema.js.map +1 -0
  107. package/dist/schemas/lit-attachments-tab-settings-value.schema.js +30 -0
  108. package/dist/schemas/lit-attachments-tab-settings-value.schema.js.map +1 -0
  109. package/dist/schemas/lit-attachments-tab.schema.js +68 -0
  110. package/dist/schemas/lit-attachments-tab.schema.js.map +1 -0
  111. package/dist/schemas/lit-case-variables-tab-cell.schema.d.ts +3 -0
  112. package/dist/schemas/lit-case-variables-tab-cell.schema.d.ts.map +1 -1
  113. package/dist/schemas/lit-case-variables-tab-cell.schema.js +226 -0
  114. package/dist/schemas/lit-case-variables-tab-cell.schema.js.map +1 -0
  115. package/dist/schemas/lit-case-variables-tab-rows.schema.d.ts +3 -0
  116. package/dist/schemas/lit-case-variables-tab-rows.schema.d.ts.map +1 -1
  117. package/dist/schemas/lit-case-variables-tab-rows.schema.js +6 -0
  118. package/dist/schemas/lit-case-variables-tab-rows.schema.js.map +1 -0
  119. package/dist/schemas/lit-case-variables-tab.schema.d.ts +6 -0
  120. package/dist/schemas/lit-case-variables-tab.schema.d.ts.map +1 -1
  121. package/dist/schemas/lit-case-variables-tab.schema.js +27 -0
  122. package/dist/schemas/lit-case-variables-tab.schema.js.map +1 -0
  123. package/dist/schemas/lit-data-grid-tanstack-column-array.schema.js +6 -0
  124. package/dist/schemas/lit-data-grid-tanstack-column-array.schema.js.map +1 -0
  125. package/dist/schemas/lit-data-grid-tanstack-column-custom-filter-array.schema.js +6 -0
  126. package/dist/schemas/lit-data-grid-tanstack-column-custom-filter-array.schema.js.map +1 -0
  127. package/dist/schemas/lit-data-grid-tanstack-column-custom-filter.schema.js +11 -0
  128. package/dist/schemas/lit-data-grid-tanstack-column-custom-filter.schema.js.map +1 -0
  129. package/dist/schemas/lit-data-grid-tanstack-column.schema.js +79 -0
  130. package/dist/schemas/lit-data-grid-tanstack-column.schema.js.map +1 -0
  131. package/dist/schemas/lit-data-grid-tanstack.schema.js +108 -0
  132. package/dist/schemas/lit-data-grid-tanstack.schema.js.map +1 -0
  133. package/dist/schemas/lit-filter-builder.schema.js +61 -0
  134. package/dist/schemas/lit-filter-builder.schema.js.map +1 -0
  135. package/dist/schemas/lit-section-tab-schema.js +37 -0
  136. package/dist/schemas/lit-section-tab-schema.js.map +1 -0
  137. package/dist/schemas/lit-tabs-overview-tab-array.schema.js +6 -0
  138. package/dist/schemas/lit-tabs-overview-tab-array.schema.js.map +1 -0
  139. package/dist/schemas/lit-tabs-overview-tab.schema.js +32 -0
  140. package/dist/schemas/lit-tabs-overview-tab.schema.js.map +1 -0
  141. package/dist/schemas/lit-tabs-overview.schema.js +29 -0
  142. package/dist/schemas/lit-tabs-overview.schema.js.map +1 -0
  143. package/dist/scripts/translate-locales.js +241 -0
  144. package/dist/scripts/translate-locales.js.map +1 -0
  145. package/dist/shared/filter-inputs.js +429 -0
  146. package/dist/shared/filter-inputs.js.map +1 -0
  147. package/dist/shared/index.js +40 -0
  148. package/dist/shared/index.js.map +1 -0
  149. package/dist/shared/lit-button.js +159 -0
  150. package/dist/shared/lit-button.js.map +1 -0
  151. package/dist/shared/lit-calendar.js +485 -0
  152. package/dist/shared/lit-calendar.js.map +1 -0
  153. package/dist/shared/lit-case-variables-tab-cell.d.ts +2 -0
  154. package/dist/shared/lit-case-variables-tab-cell.d.ts.map +1 -1
  155. package/dist/shared/lit-case-variables-tab-cell.js +235 -0
  156. package/dist/shared/lit-case-variables-tab-cell.js.map +1 -0
  157. package/dist/shared/lit-checkbox.js +184 -0
  158. package/dist/shared/lit-checkbox.js.map +1 -0
  159. package/dist/shared/lit-custom-popper.js +116 -0
  160. package/dist/shared/lit-custom-popper.js.map +1 -0
  161. package/dist/shared/lit-data-grid-action-buttons-popover.js +295 -0
  162. package/dist/shared/lit-data-grid-action-buttons-popover.js.map +1 -0
  163. package/dist/shared/lit-data-grid-density-popover.js +84 -0
  164. package/dist/shared/lit-data-grid-density-popover.js.map +1 -0
  165. package/dist/shared/lit-data-grid-export-popover.js +68 -0
  166. package/dist/shared/lit-data-grid-export-popover.js.map +1 -0
  167. package/dist/shared/lit-data-grid-operators-popover.js +114 -0
  168. package/dist/shared/lit-data-grid-operators-popover.js.map +1 -0
  169. package/dist/shared/lit-data-grid-row-actions.js +87 -0
  170. package/dist/shared/lit-data-grid-row-actions.js.map +1 -0
  171. package/dist/shared/lit-date-picker.js +608 -0
  172. package/dist/shared/lit-date-picker.js.map +1 -0
  173. package/dist/shared/lit-document-thumbnail.js +383 -0
  174. package/dist/shared/lit-document-thumbnail.js.map +1 -0
  175. package/dist/shared/lit-filter-input.js +115 -0
  176. package/dist/shared/lit-filter-input.js.map +1 -0
  177. package/dist/shared/lit-icon-button.js +165 -0
  178. package/dist/shared/lit-icon-button.js.map +1 -0
  179. package/dist/shared/lit-icon.d.ts.map +1 -1
  180. package/dist/shared/lit-icon.js +337 -0
  181. package/dist/shared/lit-icon.js.map +1 -0
  182. package/dist/shared/lit-input.js +282 -0
  183. package/dist/shared/lit-input.js.map +1 -0
  184. package/dist/shared/lit-label.js +103 -0
  185. package/dist/shared/lit-label.js.map +1 -0
  186. package/dist/shared/lit-loader.js +68 -0
  187. package/dist/shared/lit-loader.js.map +1 -0
  188. package/dist/shared/lit-loading-bar.js +91 -0
  189. package/dist/shared/lit-loading-bar.js.map +1 -0
  190. package/dist/shared/lit-menu-item.js +98 -0
  191. package/dist/shared/lit-menu-item.js.map +1 -0
  192. package/dist/shared/lit-menu.js +29 -0
  193. package/dist/shared/lit-menu.js.map +1 -0
  194. package/dist/shared/lit-modal-body.js +24 -0
  195. package/dist/shared/lit-modal-body.js.map +1 -0
  196. package/dist/shared/lit-modal-footer.js +21 -0
  197. package/dist/shared/lit-modal-footer.js.map +1 -0
  198. package/dist/shared/lit-modal-header.js +34 -0
  199. package/dist/shared/lit-modal-header.js.map +1 -0
  200. package/dist/shared/lit-modal.js +168 -0
  201. package/dist/shared/lit-modal.js.map +1 -0
  202. package/dist/shared/lit-overflow-tooltip.js +114 -0
  203. package/dist/shared/lit-overflow-tooltip.js.map +1 -0
  204. package/dist/shared/lit-pill.js +87 -0
  205. package/dist/shared/lit-pill.js.map +1 -0
  206. package/dist/shared/lit-progress-bar.js +130 -0
  207. package/dist/shared/lit-progress-bar.js.map +1 -0
  208. package/dist/shared/lit-responsive-button.js +106 -0
  209. package/dist/shared/lit-responsive-button.js.map +1 -0
  210. package/dist/shared/lit-select-field.js +457 -0
  211. package/dist/shared/lit-select-field.js.map +1 -0
  212. package/dist/shared/lit-select.js +668 -0
  213. package/dist/shared/lit-select.js.map +1 -0
  214. package/dist/shared/lit-settings.js +76 -0
  215. package/dist/shared/lit-settings.js.map +1 -0
  216. package/dist/shared/lit-text-field.js +252 -0
  217. package/dist/shared/lit-text-field.js.map +1 -0
  218. package/dist/shared/lit-toggle.js +240 -0
  219. package/dist/shared/lit-toggle.js.map +1 -0
  220. package/dist/shared/lit-tooltip.js +165 -0
  221. package/dist/shared/lit-tooltip.js.map +1 -0
  222. package/dist/shared/simple-popper.js +285 -0
  223. package/dist/shared/simple-popper.js.map +1 -0
  224. package/dist/shared/simple-tooltip.js +249 -0
  225. package/dist/shared/simple-tooltip.js.map +1 -0
  226. package/dist/shared/styles/button-shared-styles.js +494 -0
  227. package/dist/shared/styles/button-shared-styles.js.map +1 -0
  228. package/dist/styles.js +169 -0
  229. package/dist/styles.js.map +1 -0
  230. package/dist/utils/custom-filters.js +42 -0
  231. package/dist/utils/custom-filters.js.map +1 -0
  232. package/dist/utils/date.js +21 -0
  233. package/dist/utils/date.js.map +1 -0
  234. package/dist/utils/file-type-utils.js +55 -0
  235. package/dist/utils/file-type-utils.js.map +1 -0
  236. package/dist/utils/formatNumber.js +62 -0
  237. package/dist/utils/formatNumber.js.map +1 -0
  238. package/dist/utils/getOperatorByType.js +70 -0
  239. package/dist/utils/getOperatorByType.js.map +1 -0
  240. package/dist/utils/getOverviewValue.js +175 -0
  241. package/dist/utils/getOverviewValue.js.map +1 -0
  242. package/dist/utils/localization.js +433 -0
  243. package/dist/utils/localization.js.map +1 -0
  244. package/dist/utils/pdf-thumbnail-generator.js +91 -0
  245. package/dist/utils/pdf-thumbnail-generator.js.map +1 -0
  246. package/dist/utils/utils.js +94 -0
  247. package/dist/utils/utils.js.map +1 -0
  248. package/package.json +21 -58
  249. package/README.md +0 -82
  250. package/dist/icons.js +0 -692
@@ -0,0 +1,707 @@
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 { LitElement, html, css } from 'lit';
9
+ import { msg } from '@lit/localize';
10
+ import Sortable from 'sortablejs';
11
+ import { isEmpty } from 'lodash';
12
+ //components
13
+ import '../shared/lit-checkbox.js';
14
+ import '../shared/lit-menu.js';
15
+ import '../shared/lit-menu-item.js';
16
+ import '../shared/lit-icon.js';
17
+ import '../shared/lit-icon-button.js';
18
+ import '../shared/lit-overflow-tooltip.js';
19
+ import '../shared/lit-input.js';
20
+ export class LitMultiselectItem extends LitElement {
21
+ constructor() {
22
+ super(...arguments);
23
+ this.value = [];
24
+ this.options = [];
25
+ this.label = '';
26
+ this.rightLabel = '';
27
+ this.allowRightSearch = false;
28
+ this.allowSelectAll = false;
29
+ this.showRightTotal = false;
30
+ this.autoSearch = true;
31
+ this.enableAssignmentsOrdering = true;
32
+ this.onChange = (value) => { };
33
+ this.filterText = '';
34
+ this.filterTextRight = '';
35
+ this.appliedFilterText = '';
36
+ this.appliedFilterTextRight = '';
37
+ this.selectedLeftKeys = [];
38
+ this.selectedRightKeys = [];
39
+ this.lastSelectedIndexLeft = null;
40
+ this.lastSelectedIndexRight = null;
41
+ this.sortableInstances = [];
42
+ this.sortableGroupId = `group-${Math.random().toString(36).substring(2, 9)}`;
43
+ }
44
+ connectedCallback() {
45
+ super.connectedCallback();
46
+ }
47
+ disconnectedCallback() {
48
+ super.disconnectedCallback();
49
+ this.destroySortables();
50
+ }
51
+ updated(changedProperties) {
52
+ if (this.enableAssignmentsOrdering &&
53
+ (changedProperties.has('value') || changedProperties.has('options'))) {
54
+ this.initSortables();
55
+ }
56
+ }
57
+ firstUpdated() {
58
+ if (this.enableAssignmentsOrdering) {
59
+ this.initSortables();
60
+ }
61
+ }
62
+ destroySortables() {
63
+ this.sortableInstances.forEach((s) => s.destroy());
64
+ this.sortableInstances = [];
65
+ }
66
+ initSortables() {
67
+ this.updateComplete.then(() => {
68
+ this.destroySortables();
69
+ const leftList = this.shadowRoot?.querySelector('#left-list');
70
+ const rightList = this.shadowRoot?.querySelector('#right-list');
71
+ if (!leftList || !rightList)
72
+ return;
73
+ let fromOriginalNodes = [];
74
+ let toOriginalNodes = [];
75
+ const commonOptions = {
76
+ group: {
77
+ name: this.sortableGroupId,
78
+ pull: true,
79
+ put: true,
80
+ },
81
+ animation: 150,
82
+ handle: '.drag-handle',
83
+ onStart: (evt) => {
84
+ fromOriginalNodes = Array.from(evt.from.childNodes);
85
+ },
86
+ onMove: (evt) => {
87
+ if (evt.to !== evt.from && toOriginalNodes.length === 0) {
88
+ toOriginalNodes = Array.from(evt.to.childNodes);
89
+ }
90
+ },
91
+ onEnd: (evt) => {
92
+ if (evt.from && fromOriginalNodes.length > 0) {
93
+ evt.from.innerHTML = '';
94
+ fromOriginalNodes.forEach((node) => evt.from.appendChild(node));
95
+ }
96
+ if (evt.to && evt.to !== evt.from && toOriginalNodes.length > 0) {
97
+ evt.to.innerHTML = '';
98
+ toOriginalNodes.forEach((node) => evt.to.appendChild(node));
99
+ }
100
+ this.updateDataAfterDrag(evt);
101
+ this.requestUpdate();
102
+ },
103
+ };
104
+ const left = Sortable.create(leftList, commonOptions);
105
+ const right = Sortable.create(rightList, commonOptions);
106
+ this.sortableInstances.push(left, right);
107
+ });
108
+ }
109
+ updateDataAfterDrag(evt) {
110
+ const { from, to, oldIndex, newIndex } = evt;
111
+ const fromSide = from.id === 'left-list' ? 'left' : 'right';
112
+ const toSide = to.id === 'left-list' ? 'left' : 'right';
113
+ const itemId = evt.item.getAttribute('id');
114
+ const allItems = [...this.options, ...this.value];
115
+ const draggedItem = allItems.find((item) => String(item.value) === itemId);
116
+ if (!draggedItem)
117
+ return;
118
+ const selectedKeys = fromSide === 'left' ? this.selectedLeftKeys : this.selectedRightKeys;
119
+ const isDraggedItemSelected = selectedKeys.includes(draggedItem.value);
120
+ const itemsToMove = isDraggedItemSelected
121
+ ? allItems.filter((item) => selectedKeys.includes(item.value))
122
+ : [draggedItem];
123
+ if (fromSide === toSide) {
124
+ const items = fromSide === 'left' ? [...this.options] : [...this.value];
125
+ if (isDraggedItemSelected) {
126
+ const filteredItems = items.filter((item) => !selectedKeys.includes(item.value));
127
+ filteredItems.splice(newIndex, 0, ...itemsToMove);
128
+ if (fromSide === 'left') {
129
+ this.options = filteredItems;
130
+ }
131
+ else {
132
+ this.value = filteredItems;
133
+ }
134
+ }
135
+ else {
136
+ const [removed] = items.splice(oldIndex, 1);
137
+ items.splice(newIndex, 0, removed);
138
+ if (fromSide === 'left') {
139
+ this.options = items;
140
+ }
141
+ else {
142
+ this.value = items;
143
+ }
144
+ }
145
+ }
146
+ else {
147
+ if (fromSide === 'left') {
148
+ const newOptions = this.options.filter((item) => !itemsToMove.some((moveItem) => moveItem.value === item.value));
149
+ const newValue = [...this.value];
150
+ itemsToMove.forEach((item, index) => {
151
+ if (!newValue.some((v) => v.value === item.value)) {
152
+ newValue.splice(newIndex + index, 0, item);
153
+ }
154
+ });
155
+ this.options = newOptions;
156
+ this.value = newValue;
157
+ }
158
+ else {
159
+ const newValue = this.value.filter((item) => !itemsToMove.some((moveItem) => moveItem.value === item.value));
160
+ const newOptions = [...this.options];
161
+ itemsToMove.forEach((item, index) => {
162
+ if (!newOptions.some((o) => o.value === item.value)) {
163
+ newOptions.splice(newIndex + index, 0, item);
164
+ }
165
+ });
166
+ this.value = newValue;
167
+ this.options = newOptions;
168
+ }
169
+ }
170
+ this.onChange?.(this.value);
171
+ // dispatch event onChange
172
+ this.dispatchEvent(new CustomEvent('onChange', {
173
+ detail: this.value,
174
+ }));
175
+ this.selectedLeftKeys = [];
176
+ this.selectedRightKeys = [];
177
+ }
178
+ onInputChange(e, side) {
179
+ const val = e.detail.toLowerCase();
180
+ if (side === 'left') {
181
+ this.filterText = val;
182
+ if (this.autoSearch) {
183
+ this.appliedFilterText = val;
184
+ }
185
+ }
186
+ else {
187
+ this.filterTextRight = val;
188
+ if (this.autoSearch) {
189
+ this.appliedFilterTextRight = val;
190
+ }
191
+ }
192
+ }
193
+ onInputKeyDown(e, side) {
194
+ if (!this.autoSearch && e.key === 'Enter') {
195
+ if (side === 'left') {
196
+ this.appliedFilterText = this.filterText;
197
+ }
198
+ else {
199
+ this.appliedFilterTextRight = this.filterTextRight;
200
+ }
201
+ }
202
+ }
203
+ getItemsForSide(side) {
204
+ return side === 'left' ? this.options : (this.value ?? []);
205
+ }
206
+ getSelectedKeysForSide(side) {
207
+ return side === 'left' ? this.selectedLeftKeys : this.selectedRightKeys;
208
+ }
209
+ toggleSelection(item, side, event) {
210
+ const list = this.getItemsForSide(side);
211
+ const selected = this.getSelectedKeysForSide(side);
212
+ const clickedIndex = list.findIndex((i) => i.value === item.value);
213
+ const isSelected = selected.includes(item.value);
214
+ let newSelected = [...selected];
215
+ if (event?.shiftKey) {
216
+ const lastIndex = side === 'left' ? this.lastSelectedIndexLeft : this.lastSelectedIndexRight;
217
+ if (lastIndex !== null) {
218
+ const start = Math.min(lastIndex, clickedIndex);
219
+ const end = Math.max(lastIndex, clickedIndex);
220
+ const rangeItems = list.slice(start, end + 1).map((i) => i.value);
221
+ newSelected = Array.from(new Set([...newSelected, ...rangeItems]));
222
+ }
223
+ }
224
+ else {
225
+ if (isSelected) {
226
+ newSelected = selected.filter((val) => val !== item.value);
227
+ }
228
+ else {
229
+ newSelected = [...selected, item.value];
230
+ }
231
+ }
232
+ if (side === 'left') {
233
+ this.selectedLeftKeys = newSelected;
234
+ this.lastSelectedIndexLeft = clickedIndex;
235
+ }
236
+ else {
237
+ this.selectedRightKeys = newSelected;
238
+ this.lastSelectedIndexRight = clickedIndex;
239
+ }
240
+ }
241
+ areAllSelected(side) {
242
+ const items = this.getItemsForSide(side);
243
+ const selected = this.getSelectedKeysForSide(side);
244
+ return items.length > 0 && items.every((item) => selected.includes(item.value));
245
+ }
246
+ toggleSelectAll(side) {
247
+ const items = this.getItemsForSide(side);
248
+ const allValues = items.map((item) => item.value);
249
+ if (this.areAllSelected(side)) {
250
+ if (side === 'left') {
251
+ this.selectedLeftKeys = [];
252
+ }
253
+ else {
254
+ this.selectedRightKeys = [];
255
+ }
256
+ }
257
+ else {
258
+ if (side === 'left') {
259
+ this.selectedLeftKeys = allValues;
260
+ }
261
+ else {
262
+ this.selectedRightKeys = allValues;
263
+ }
264
+ }
265
+ }
266
+ moveSelected(from, to) {
267
+ const fromItems = this.getItemsForSide(from);
268
+ const fromSelected = this.getSelectedKeysForSide(from);
269
+ const selectedItems = fromItems.filter((item) => fromSelected.includes(item.value));
270
+ const toItems = this.getItemsForSide(to);
271
+ const newToItems = [...toItems];
272
+ selectedItems.forEach((item) => {
273
+ if (!newToItems.some((i) => i.value === item.value)) {
274
+ newToItems.push(item);
275
+ }
276
+ });
277
+ const newFromItems = fromItems.filter((item) => !fromSelected.includes(item.value));
278
+ if (from === 'left') {
279
+ this.options = newFromItems;
280
+ this.selectedLeftKeys = [];
281
+ this.value = newToItems;
282
+ }
283
+ else {
284
+ this.value = newFromItems;
285
+ this.selectedRightKeys = [];
286
+ this.options = newToItems;
287
+ }
288
+ this.onChange?.(this.value);
289
+ // dispatch event onChange
290
+ this.dispatchEvent(new CustomEvent('onChange', {
291
+ detail: this.value,
292
+ }));
293
+ }
294
+ moveSingle(item, from, to) {
295
+ if (from === 'left') {
296
+ this.options = this.options.filter((i) => i.value !== item.value);
297
+ if (!(this.value ?? []).some((i) => i.value === item.value)) {
298
+ this.value = [...(this.value ?? []), item];
299
+ }
300
+ this.selectedLeftKeys = this.selectedLeftKeys.filter((v) => v !== item.value);
301
+ this.appliedFilterTextRight = '';
302
+ }
303
+ else {
304
+ this.value = (this.value ?? []).filter((i) => i.value !== item.value);
305
+ if (!this.options.some((i) => i.value === item.value)) {
306
+ this.options = [...this.options, item];
307
+ }
308
+ this.selectedRightKeys = this.selectedRightKeys.filter((v) => v !== item.value);
309
+ this.appliedFilterText = '';
310
+ }
311
+ this.onChange?.(this.value);
312
+ // dispatch event onChange
313
+ this.dispatchEvent(new CustomEvent('onChange', {
314
+ detail: this.value,
315
+ }));
316
+ }
317
+ render() {
318
+ return html `<div class="container">
319
+ <div class="wrapper">
320
+ <label class="label">${this.label}</label>
321
+ <div class="tab">
322
+ <div class="input">
323
+ <lit-input
324
+ placeholder=${msg('Napr. fakturace...')}
325
+ .onInput=${(val) => this.onInputChange(new CustomEvent('onInput', { detail: val }), 'left')}
326
+ @keydown=${(e) => this.onInputKeyDown(e, 'left')}
327
+ .onClear=${() => {
328
+ this.filterText = '';
329
+ this.appliedFilterText = '';
330
+ }}
331
+ .size="medium"
332
+ ></lit-input>
333
+ </div>
334
+
335
+ <div class="content">
336
+ <lit-menu tabindex="0" id="left-list">
337
+ ${this.options
338
+ .filter((item) => {
339
+ const title = item.title.toLowerCase();
340
+ const filter = this.appliedFilterText.toLowerCase();
341
+ return title.includes(filter);
342
+ })
343
+ .map((item) => {
344
+ const isSelected = this.selectedLeftKeys.includes(item.value);
345
+ return html `
346
+ <lit-menu-item
347
+ class="no-select"
348
+ .key="${item.value}"
349
+ .id="${item.value}"
350
+ @click=${(e) => this.toggleSelection(item, 'left', e)}
351
+ .isSelected=${isSelected}
352
+ >
353
+ <div class="item">
354
+ <div class="item-text">${item.title}</div>
355
+
356
+ <div class="add-minus-icon">
357
+ ${this.enableAssignmentsOrdering
358
+ ? html `
359
+ <div class="drag-handle">
360
+ <lit-icon
361
+ icon="hamburger"
362
+ size="1rem"
363
+ @click=${(e) => {
364
+ e.stopPropagation();
365
+ }}
366
+ ></lit-icon>
367
+ </div>
368
+ `
369
+ : null}
370
+
371
+ <lit-icon
372
+ .icon="${'add'}"
373
+ size="1rem"
374
+ @click=${(e) => {
375
+ e.stopPropagation();
376
+ this.moveSingle(item, 'left', 'right');
377
+ }}
378
+ ></lit-icon>
379
+ </div>
380
+ </div>
381
+ </lit-menu-item>
382
+ `;
383
+ })}
384
+ </lit-menu>
385
+ </div>
386
+
387
+ <div class="footer">
388
+ <div class="checkbox">
389
+ ${this.allowSelectAll
390
+ ? html `
391
+ <lit-checkbox
392
+ .checked=${this.areAllSelected('left')}
393
+ @click=${() => this.toggleSelectAll('left')}
394
+ ></lit-checkbox>
395
+ <label>${msg('Označit vše')}</label>
396
+ `
397
+ : null}
398
+ </div>
399
+
400
+ <div class="count">
401
+ <label>${msg('celkem') + ':'}</label>
402
+ <label>${this.options.length}</label>
403
+ </div>
404
+ </div>
405
+ </div>
406
+ </div>
407
+ <div class="wrapper middle">
408
+ <lit-icon-button
409
+ .variant="text"
410
+ color="secondary"
411
+ .icon="${'add'}"
412
+ @click=${() => this.moveSelected('left', 'right')}
413
+ .disabled="${isEmpty(this.selectedLeftKeys)}"
414
+ ></lit-icon-button>
415
+ <lit-icon-button
416
+ color="secondary"
417
+ .variant="text"
418
+ .icon="${'minus'}"
419
+ @click=${() => this.moveSelected('right', 'left')}
420
+ .disabled="${isEmpty(this.selectedRightKeys)}"
421
+ ></lit-icon-button>
422
+ </div>
423
+ <div class="wrapper">
424
+ <label class="label">${this.rightLabel}</label>
425
+ <div class="tab">
426
+ <div class="input">
427
+ ${this.allowRightSearch
428
+ ? html `
429
+ <lit-input
430
+ placeholder=${msg('Napr. fakturace...')}
431
+ .onInput=${(val) => this.onInputChange(new CustomEvent('onInput', { detail: val }), 'right')}
432
+ @keydown=${(e) => this.onInputKeyDown(e, 'right')}
433
+ .onClear=${() => {
434
+ this.filterTextRight = '';
435
+ this.appliedFilterTextRight = '';
436
+ }}
437
+ .size="medium"
438
+ ></lit-input>
439
+ `
440
+ : null}
441
+ </div>
442
+ <div class="content">
443
+ <lit-menu tabindex="1" id="right-list">
444
+ ${(this.value ?? [])
445
+ .filter((item) => {
446
+ const title = item.title.toLowerCase();
447
+ const filter = this.appliedFilterTextRight.toLowerCase();
448
+ return title.includes(filter);
449
+ })
450
+ .map((item) => {
451
+ const isSelected = this.selectedRightKeys.includes(item.value);
452
+ return html `
453
+ <lit-menu-item
454
+ class="no-select"
455
+ .key="${item.value}"
456
+ id="${item.value}"
457
+ @click=${(e) => this.toggleSelection(item, 'right', e)}
458
+ .isSelected=${isSelected}
459
+ >
460
+ <div class="item">
461
+ <div class="item-text">${item.title}</div>
462
+ <div class="add-minus-icon">
463
+ ${this.enableAssignmentsOrdering
464
+ ? html `
465
+ <div class="drag-handle">
466
+ <lit-icon
467
+ icon="hamburger"
468
+ size="1rem"
469
+ @click=${(e) => {
470
+ e.stopPropagation();
471
+ }}
472
+ ></lit-icon>
473
+ </div>
474
+ `
475
+ : null}
476
+ <lit-icon
477
+ .icon="${'minus'}"
478
+ size="1rem"
479
+ @click=${(e) => {
480
+ e.stopPropagation();
481
+ this.moveSingle(item, 'right', 'left');
482
+ }}
483
+ ></lit-icon>
484
+ </div>
485
+ </div>
486
+ </lit-menu-item>
487
+ `;
488
+ })}
489
+ </lit-menu>
490
+ </div>
491
+ <div class="footer">
492
+ <div class="checkbox">
493
+ ${this.allowSelectAll
494
+ ? html `
495
+ <lit-checkbox
496
+ .checked=${this.areAllSelected('right')}
497
+ @click=${() => this.toggleSelectAll('right')}
498
+ ></lit-checkbox>
499
+ <label>${msg('Označit vše')}</label>
500
+ `
501
+ : null}
502
+ </div>
503
+
504
+ <div class="count">
505
+ ${this.showRightTotal
506
+ ? html `
507
+ <label>${msg('celkem') + ':'}</label>
508
+ <label>${this.value?.length ?? 0}</label>
509
+ `
510
+ : null}
511
+ </div>
512
+ </div>
513
+ </div>
514
+ </div>
515
+ </div>`;
516
+ }
517
+ }
518
+ LitMultiselectItem.styles = [
519
+ css `
520
+ @media (max-width: 600px) {
521
+ .container {
522
+ flex-direction: column;
523
+ }
524
+ .wrapper.middle {
525
+ flex-direction: row !important;
526
+ justify-content: center;
527
+ height: auto !important;
528
+ padding-top: 0 !important;
529
+ }
530
+ }
531
+
532
+ .container {
533
+ display: flex;
534
+ justify-content: space-between;
535
+ width: 100%;
536
+ height: 100%;
537
+ gap: 0.375rem;
538
+ }
539
+
540
+ .wrapper {
541
+ display: flex;
542
+ flex-direction: column;
543
+ flex: 1 1 0;
544
+ height: 100%;
545
+ min-width: 0;
546
+ min-height: 0;
547
+ }
548
+
549
+ .wrapper.middle {
550
+ flex: 0 0 auto;
551
+ flex-direction: column;
552
+ padding-top: 2rem;
553
+ gap: 0.5rem;
554
+ align-items: center;
555
+ }
556
+
557
+ .label {
558
+ font-weight: 500;
559
+ font-size: 14px;
560
+ color: var(--text-secondary, #5d6371);
561
+ line-height: 1.5rem;
562
+ padding-left: 0.875rem;
563
+ margin-bottom: 0.375rem;
564
+ }
565
+
566
+ .tab {
567
+ display: flex;
568
+ flex-direction: column;
569
+ height: 100%;
570
+ border-radius: var(--border-radius-small, 0.5rem);
571
+ border: 1px solid var(--border-primary, #d0d3db);
572
+ padding: 0.5rem;
573
+ gap: 0.5rem;
574
+ min-height: 0;
575
+ }
576
+
577
+ .input {
578
+ }
579
+
580
+ .content {
581
+ flex-grow: 1;
582
+ overflow: auto;
583
+ min-height: 0;
584
+ }
585
+
586
+ .footer {
587
+ border-top: 1px solid var(--border-primary, #d0d3db);
588
+ display: flex;
589
+ justify-content: space-between;
590
+ align-items: center;
591
+ min-height: 2.375rem;
592
+ }
593
+
594
+ .footer.csv {
595
+ justify-content: end;
596
+ }
597
+
598
+ .csv-icon {
599
+ padding-right: 0.5rem;
600
+ }
601
+
602
+ .checkbox {
603
+ display: flex;
604
+ align-items: center;
605
+ padding: 0.25rem 0.5rem;
606
+ gap: 0.375rem;
607
+ font-size: 12px;
608
+ font-weight: 500;
609
+ }
610
+
611
+ .count {
612
+ display: flex;
613
+ align-items: center;
614
+ padding: 0.25rem 0.5rem;
615
+ gap: 0.375rem;
616
+ font-size: 12px;
617
+ font-weight: 400;
618
+ }
619
+
620
+ .item {
621
+ display: flex;
622
+ width: 100%;
623
+ justify-content: space-between;
624
+ align-items: center;
625
+ }
626
+
627
+ .item-text {
628
+ overflow: hidden;
629
+ white-space: nowrap;
630
+ text-overflow: ellipsis;
631
+ }
632
+
633
+ .add-minus-icon {
634
+ visibility: hidden;
635
+ display: flex;
636
+ align-items: center;
637
+ gap: 0.5rem;
638
+ }
639
+
640
+ .item:hover .add-minus-icon {
641
+ visibility: visible;
642
+ }
643
+
644
+ .no-select {
645
+ user-select: none;
646
+ min-height: 2rem;
647
+ }
648
+ `,
649
+ ];
650
+ __decorate([
651
+ property({ type: Array })
652
+ ], LitMultiselectItem.prototype, "value", void 0);
653
+ __decorate([
654
+ property({ type: Array })
655
+ ], LitMultiselectItem.prototype, "options", void 0);
656
+ __decorate([
657
+ property({ type: String })
658
+ ], LitMultiselectItem.prototype, "label", void 0);
659
+ __decorate([
660
+ property({ type: String })
661
+ ], LitMultiselectItem.prototype, "rightLabel", void 0);
662
+ __decorate([
663
+ property({ type: Boolean })
664
+ ], LitMultiselectItem.prototype, "allowRightSearch", void 0);
665
+ __decorate([
666
+ property({ type: Boolean })
667
+ ], LitMultiselectItem.prototype, "allowSelectAll", void 0);
668
+ __decorate([
669
+ property({ type: Boolean })
670
+ ], LitMultiselectItem.prototype, "showRightTotal", void 0);
671
+ __decorate([
672
+ property({ type: Boolean })
673
+ ], LitMultiselectItem.prototype, "autoSearch", void 0);
674
+ __decorate([
675
+ property({ type: Boolean })
676
+ ], LitMultiselectItem.prototype, "enableAssignmentsOrdering", void 0);
677
+ __decorate([
678
+ property({ type: Function })
679
+ ], LitMultiselectItem.prototype, "onChange", void 0);
680
+ __decorate([
681
+ state()
682
+ ], LitMultiselectItem.prototype, "filterText", void 0);
683
+ __decorate([
684
+ state()
685
+ ], LitMultiselectItem.prototype, "filterTextRight", void 0);
686
+ __decorate([
687
+ state()
688
+ ], LitMultiselectItem.prototype, "appliedFilterText", void 0);
689
+ __decorate([
690
+ state()
691
+ ], LitMultiselectItem.prototype, "appliedFilterTextRight", void 0);
692
+ __decorate([
693
+ state()
694
+ ], LitMultiselectItem.prototype, "selectedLeftKeys", void 0);
695
+ __decorate([
696
+ state()
697
+ ], LitMultiselectItem.prototype, "selectedRightKeys", void 0);
698
+ __decorate([
699
+ state()
700
+ ], LitMultiselectItem.prototype, "lastSelectedIndexLeft", void 0);
701
+ __decorate([
702
+ state()
703
+ ], LitMultiselectItem.prototype, "lastSelectedIndexRight", void 0);
704
+ if (!window.customElements.get('lit-multiselect-item')) {
705
+ window.customElements.define('lit-multiselect-item', LitMultiselectItem);
706
+ }
707
+ //# sourceMappingURL=lit-multiselect-item.js.map