overview-components 0.9.0 → 1.0.1

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 (136) hide show
  1. package/dist/assets/generated/locales/de.d.ts +9 -0
  2. package/dist/assets/generated/locales/de.d.ts.map +1 -1
  3. package/dist/assets/generated/locales/de.js +9 -0
  4. package/dist/assets/generated/locales/de.js.map +1 -1
  5. package/dist/assets/generated/locales/en.d.ts +17 -8
  6. package/dist/assets/generated/locales/en.d.ts.map +1 -1
  7. package/dist/assets/generated/locales/en.js +18 -9
  8. package/dist/assets/generated/locales/en.js.map +1 -1
  9. package/dist/assets/generated/locales/pl.d.ts +9 -0
  10. package/dist/assets/generated/locales/pl.d.ts.map +1 -1
  11. package/dist/assets/generated/locales/pl.js +9 -0
  12. package/dist/assets/generated/locales/pl.js.map +1 -1
  13. package/dist/assets/generated/locales/sk.d.ts +9 -0
  14. package/dist/assets/generated/locales/sk.d.ts.map +1 -1
  15. package/dist/assets/generated/locales/sk.js +9 -0
  16. package/dist/assets/generated/locales/sk.js.map +1 -1
  17. package/dist/assets/ilustration/no-content.d.ts +6 -0
  18. package/dist/assets/ilustration/no-content.d.ts.map +1 -0
  19. package/dist/assets/ilustration/no-content.js +167 -0
  20. package/dist/assets/ilustration/no-content.js.map +1 -0
  21. package/dist/assets/ilustration/no-preview.d.ts +1 -0
  22. package/dist/assets/ilustration/no-preview.d.ts.map +1 -1
  23. package/dist/assets/ilustration/no-preview.js +116 -114
  24. package/dist/assets/ilustration/no-preview.js.map +1 -1
  25. package/dist/assets/ilustration/not-found.d.ts +1 -0
  26. package/dist/assets/ilustration/not-found.d.ts.map +1 -1
  27. package/dist/assets/ilustration/not-found.js +89 -86
  28. package/dist/assets/ilustration/not-found.js.map +1 -1
  29. package/dist/components/lit-attachments-tab.d.ts +29 -15
  30. package/dist/components/lit-attachments-tab.d.ts.map +1 -1
  31. package/dist/components/lit-attachments-tab.js +352 -318
  32. package/dist/components/lit-attachments-tab.js.map +1 -1
  33. package/dist/components/lit-case-variables-tab.d.ts +4 -23
  34. package/dist/components/lit-case-variables-tab.d.ts.map +1 -1
  35. package/dist/components/lit-case-variables-tab.js +148 -224
  36. package/dist/components/lit-case-variables-tab.js.map +1 -1
  37. package/dist/components/lit-chart.d.ts +46 -0
  38. package/dist/components/lit-chart.d.ts.map +1 -0
  39. package/dist/components/lit-chart.js +423 -0
  40. package/dist/components/lit-chart.js.map +1 -0
  41. package/dist/components/lit-data-grid-tanstack.d.ts +56 -7
  42. package/dist/components/lit-data-grid-tanstack.d.ts.map +1 -1
  43. package/dist/components/lit-data-grid-tanstack.js +748 -564
  44. package/dist/components/lit-data-grid-tanstack.js.map +1 -1
  45. package/dist/components/lit-section-tab.d.ts +22 -0
  46. package/dist/components/lit-section-tab.d.ts.map +1 -0
  47. package/dist/components/lit-section-tab.js +70 -0
  48. package/dist/components/lit-section-tab.js.map +1 -0
  49. package/dist/components/lit-tabs-overview.d.ts +33 -0
  50. package/dist/components/lit-tabs-overview.d.ts.map +1 -0
  51. package/dist/components/lit-tabs-overview.js +143 -0
  52. package/dist/components/lit-tabs-overview.js.map +1 -0
  53. package/dist/components/react-wrappers/chart.d.ts +3 -0
  54. package/dist/components/react-wrappers/chart.d.ts.map +1 -0
  55. package/dist/components/react-wrappers/chart.js +9 -0
  56. package/dist/components/react-wrappers/chart.js.map +1 -0
  57. package/dist/components/react-wrappers/section-tab.d.ts +3 -0
  58. package/dist/components/react-wrappers/section-tab.d.ts.map +1 -0
  59. package/dist/components/react-wrappers/section-tab.js +9 -0
  60. package/dist/components/react-wrappers/section-tab.js.map +1 -0
  61. package/dist/components/react-wrappers/tabs-overview.d.ts +3 -0
  62. package/dist/components/react-wrappers/tabs-overview.d.ts.map +1 -0
  63. package/dist/components/react-wrappers/tabs-overview.js +9 -0
  64. package/dist/components/react-wrappers/tabs-overview.js.map +1 -0
  65. package/dist/index.d.ts +4 -0
  66. package/dist/index.d.ts.map +1 -1
  67. package/dist/index.js +4 -0
  68. package/dist/index.js.map +1 -1
  69. package/dist/scripts/translate-locales.js +1 -0
  70. package/dist/scripts/translate-locales.js.map +1 -1
  71. package/dist/shared/filter-inputs.d.ts +14 -4
  72. package/dist/shared/filter-inputs.d.ts.map +1 -1
  73. package/dist/shared/filter-inputs.js +207 -51
  74. package/dist/shared/filter-inputs.js.map +1 -1
  75. package/dist/shared/lit-button.js +2 -2
  76. package/dist/shared/lit-case-variables-tab-cell.d.ts +58 -0
  77. package/dist/shared/lit-case-variables-tab-cell.d.ts.map +1 -0
  78. package/dist/shared/lit-case-variables-tab-cell.js +224 -0
  79. package/dist/shared/lit-case-variables-tab-cell.js.map +1 -0
  80. package/dist/shared/lit-custom-popper.d.ts.map +1 -1
  81. package/dist/shared/lit-custom-popper.js +31 -31
  82. package/dist/shared/lit-custom-popper.js.map +1 -1
  83. package/dist/shared/lit-data-grid-action-buttons-popover.d.ts +14 -5
  84. package/dist/shared/lit-data-grid-action-buttons-popover.d.ts.map +1 -1
  85. package/dist/shared/lit-data-grid-action-buttons-popover.js +197 -102
  86. package/dist/shared/lit-data-grid-action-buttons-popover.js.map +1 -1
  87. package/dist/shared/lit-data-grid-density-popover.d.ts +18 -0
  88. package/dist/shared/lit-data-grid-density-popover.d.ts.map +1 -0
  89. package/dist/shared/lit-data-grid-density-popover.js +102 -0
  90. package/dist/shared/lit-data-grid-density-popover.js.map +1 -0
  91. package/dist/shared/lit-data-grid-export-popover.d.ts +3 -0
  92. package/dist/shared/lit-data-grid-export-popover.d.ts.map +1 -1
  93. package/dist/shared/lit-data-grid-export-popover.js +41 -46
  94. package/dist/shared/lit-data-grid-export-popover.js.map +1 -1
  95. package/dist/shared/lit-loader.d.ts +7 -0
  96. package/dist/shared/lit-loader.d.ts.map +1 -0
  97. package/dist/shared/lit-loader.js +51 -0
  98. package/dist/shared/lit-loader.js.map +1 -0
  99. package/dist/shared/lit-loading-bar.d.ts +20 -0
  100. package/dist/shared/lit-loading-bar.d.ts.map +1 -0
  101. package/dist/shared/lit-loading-bar.js +92 -0
  102. package/dist/shared/lit-loading-bar.js.map +1 -0
  103. package/dist/shared/lit-menu-item.d.ts +24 -0
  104. package/dist/shared/lit-menu-item.d.ts.map +1 -0
  105. package/dist/shared/lit-menu-item.js +77 -0
  106. package/dist/shared/lit-menu-item.js.map +1 -0
  107. package/dist/shared/lit-menu.d.ts +6 -0
  108. package/dist/shared/lit-menu.d.ts.map +1 -0
  109. package/dist/shared/lit-menu.js +38 -0
  110. package/dist/shared/lit-menu.js.map +1 -0
  111. package/dist/shared/lit-overflow-tooltip.d.ts +16 -0
  112. package/dist/shared/lit-overflow-tooltip.d.ts.map +1 -0
  113. package/dist/shared/lit-overflow-tooltip.js +86 -0
  114. package/dist/shared/lit-overflow-tooltip.js.map +1 -0
  115. package/dist/shared/lit-select.d.ts +24 -3
  116. package/dist/shared/lit-select.d.ts.map +1 -1
  117. package/dist/shared/lit-select.js +234 -130
  118. package/dist/shared/lit-select.js.map +1 -1
  119. package/dist/shared/lit-tooltip.d.ts.map +1 -1
  120. package/dist/shared/lit-tooltip.js +4 -3
  121. package/dist/shared/lit-tooltip.js.map +1 -1
  122. package/dist/utils/custom-filters.d.ts +3 -0
  123. package/dist/utils/custom-filters.d.ts.map +1 -0
  124. package/dist/{components → utils}/custom-filters.js +6 -0
  125. package/dist/utils/custom-filters.js.map +1 -0
  126. package/dist/utils/date.d.ts +1 -1
  127. package/dist/utils/date.d.ts.map +1 -1
  128. package/dist/utils/date.js +6 -3
  129. package/dist/utils/date.js.map +1 -1
  130. package/dist/utils/localization.d.ts.map +1 -1
  131. package/dist/utils/localization.js +195 -5
  132. package/dist/utils/localization.js.map +1 -1
  133. package/package.json +3 -3
  134. package/dist/components/custom-filters.d.ts +0 -2
  135. package/dist/components/custom-filters.d.ts.map +0 -1
  136. package/dist/components/custom-filters.js.map +0 -1
@@ -14,22 +14,28 @@ import '../shared/lit-icon.js';
14
14
  import '../shared/lit-icon-button.js';
15
15
  import '../shared/lit-tooltip.js';
16
16
  import '../shared/lit-select.js';
17
+ import '../shared/lit-overflow-tooltip.js';
17
18
  import '../assets/ilustration/no-preview.js';
19
+ import '../shared/lit-loading-bar.js';
20
+ import '../components/lit-section-tab.js';
18
21
  // pdf.js
19
22
  import * as pdfjsLib from 'pdfjs-dist';
20
- pdfjsLib.GlobalWorkerOptions.workerSrc = new URL('pdfjs-dist/build/pdf.worker.mjs', import.meta.url).toString();
23
+ pdfjsLib.GlobalWorkerOptions.workerSrc = new URL('pdfjs-dist/build/pdf.worker.js', import.meta.url).toString();
21
24
  let LitAttachmentsTab = class LitAttachmentsTab extends LitElement {
22
25
  constructor() {
23
26
  super(...arguments);
24
27
  this.hideTabWhen = false;
25
28
  this.documents = [];
26
29
  this.type = 'compact';
30
+ // @property({ type: Array }) additionalLabels?: any[] = [];
31
+ this.scale = 1;
32
+ this.isDocumentLoading = true;
33
+ this.selectedId = '';
27
34
  this.pageNumber = 1;
28
35
  this.pageCount = 1;
29
- this.scale = 1;
30
36
  this.isChecked = {};
31
- this.additionalLabels = [];
32
37
  this.preview = true;
38
+ this.documentData = null;
33
39
  this.canvas = null;
34
40
  this.ctx = null;
35
41
  this.outerContainer = null;
@@ -39,13 +45,28 @@ let LitAttachmentsTab = class LitAttachmentsTab extends LitElement {
39
45
  this.prevScrollLeft = 0;
40
46
  this.prevScrollTop = 0;
41
47
  this.abortController = new AbortController();
48
+ this.handleReadFile = (buffer) => new Promise((resolve, reject) => {
49
+ const reader = new FileReader();
50
+ reader.onload = () => resolve(reader);
51
+ reader.onerror = (err) => reject(err);
52
+ if (buffer !== null)
53
+ reader.readAsArrayBuffer(buffer);
54
+ });
42
55
  }
43
56
  async connectedCallback() {
44
57
  super.connectedCallback();
45
58
  this.type = this.type || 'compact';
46
- this.selectedId = this.initialSelection || (this.documents?.[0]?.id ?? null);
47
- if (!this.hideTabWhen) {
48
- await this.loadDocument();
59
+ this.selectedId = this.initialSelection || (this.documents?.[0]?.id ?? '');
60
+ if (!this.hideTabWhen && this.documents) {
61
+ this.handleDocumentClick(this.selectedId);
62
+ }
63
+ }
64
+ disconnectedCallback() {
65
+ super.disconnectedCallback();
66
+ this.abortController.abort();
67
+ if (this.documentData && this.documentData.cancel) {
68
+ this.documentData.cancel();
69
+ this.documentData = null;
49
70
  }
50
71
  }
51
72
  async firstUpdated() {
@@ -54,56 +75,93 @@ let LitAttachmentsTab = class LitAttachmentsTab extends LitElement {
54
75
  this.outerContainer = this.shadowRoot?.querySelector('.document-container') || null;
55
76
  await this.renderPage();
56
77
  }
57
- async loadDocument(id) {
58
- const doc = id
59
- ? this.documents?.find((d) => d.id === id)
60
- : this.documents?.find((d) => d.id === this.initialSelection) || this.documents?.[0];
61
- if (!doc?.src)
62
- return;
78
+ updated(_changedProperties) {
79
+ super.updated(_changedProperties);
80
+ if (_changedProperties.has('documents')) {
81
+ this.selectedId = this.initialSelection || (this.documents?.[0]?.id ?? '');
82
+ if (!this.hideTabWhen && typeof this.documents !== 'undefined') {
83
+ this.handleDocumentClick(this.selectedId);
84
+ }
85
+ }
86
+ if (_changedProperties.has('selectedId')) {
87
+ if (this.documentData && this.documentData.cancel) {
88
+ this.documentData.cancel();
89
+ this.documentData = null;
90
+ }
91
+ }
92
+ }
93
+ async loadDocumentData(documentData) {
63
94
  try {
64
- if (doc.file_type === 'application/pdf') {
65
- // Načítanie PDF
66
- const loadingTask = pdfjsLib.getDocument(doc.src);
95
+ // Find the document in the documents array using the selectedId
96
+ const selectedDoc = this.documents?.find((doc) => doc.id === this.selectedId);
97
+ if (!selectedDoc) {
98
+ console.error('Selected document not found in documents array.');
99
+ return;
100
+ }
101
+ if (selectedDoc.file_type === 'application/pdf') {
102
+ const loadingTask = pdfjsLib.getDocument(documentData);
67
103
  this.selectedDocument = await loadingTask.promise;
68
104
  if (this.selectedDocument) {
69
105
  this.pageCount = this.selectedDocument.numPages;
70
106
  }
71
107
  this.preview = true;
72
108
  }
73
- else if (doc.file_type === 'image/jpeg' || doc.file_type === 'image/png') {
74
- // Načítanie obrázku
109
+ else if (selectedDoc.file_type === 'image/jpeg' ||
110
+ selectedDoc.file_type === 'image/png') {
75
111
  const img = new Image();
76
112
  img.onload = () => {
77
113
  this.selectedDocument = img;
78
- this.pageCount = 1; // Obrázky majú iba jednu "stránku"
114
+ this.pageCount = 1;
79
115
  this.preview = true;
80
116
  this.renderPage();
81
117
  };
82
- img.src = doc.src;
118
+ img.src = URL.createObjectURL(new Blob([documentData], { type: selectedDoc.file_type }));
83
119
  return;
84
120
  }
85
121
  else {
86
- this.selectedDocument = doc;
122
+ this.selectedDocument = documentData;
87
123
  this.preview = false;
88
124
  }
89
125
  this.pageNumber = 1;
90
126
  this.scale = 1;
91
- this.selectedId = doc.id;
92
127
  await this.renderPage();
93
128
  }
94
129
  catch (error) {
95
- console.error('Error loading document:', error);
130
+ console.error('Error loading document data:', error);
131
+ }
132
+ }
133
+ async handleDocumentClick(id) {
134
+ this.selectedId = id;
135
+ if (this.onClick) {
136
+ try {
137
+ this.isDocumentLoading = true;
138
+ this.documentData = await this.onClick(id);
139
+ this.isDocumentLoading = false;
140
+ let readerPromise = this.handleReadFile(this.documentData);
141
+ let reader = await Promise.resolve(readerPromise);
142
+ this.loadDocumentData(reader.result);
143
+ }
144
+ catch (error) {
145
+ console.error('Error fetching document:', error);
146
+ }
147
+ }
148
+ else {
149
+ const document = this.documents?.find((doc) => doc.id === id);
150
+ if (!document) {
151
+ throw new Error('Document not found');
152
+ }
153
+ const src = document.dmsf_src;
154
+ const buffer = await fetch(src).then((res) => res.arrayBuffer());
155
+ this.loadDocumentData(buffer);
96
156
  }
97
157
  }
98
158
  async renderPage() {
99
159
  if (!this.selectedDocument || !this.canvas || !this.ctx)
100
160
  return;
101
- // Skryť canvas, ak je dokument nepodporovaný
102
161
  this.canvas.style.display = this.preview ? 'block' : 'none';
103
162
  this.ctx.clearRect(0, 0, this.canvas.width, this.canvas.height);
104
163
  try {
105
164
  if (this.preview && 'getPage' in this.selectedDocument) {
106
- // Spracovanie PDF
107
165
  const page = await this.selectedDocument.getPage(this.pageNumber ?? 1);
108
166
  const viewport = page.getViewport({ scale: (this.scale ?? 1) * 2.5 });
109
167
  this.canvas.height = viewport.height;
@@ -116,7 +174,6 @@ let LitAttachmentsTab = class LitAttachmentsTab extends LitElement {
116
174
  await page.render(renderContext).promise;
117
175
  }
118
176
  else if (this.preview && this.selectedDocument instanceof HTMLImageElement) {
119
- // Spracovanie obrázku
120
177
  this.canvas.width = this.selectedDocument.width;
121
178
  this.canvas.height = this.selectedDocument.height;
122
179
  this.ctx.drawImage(this.selectedDocument, 0, 0, this.canvas.width, this.canvas.height);
@@ -128,10 +185,6 @@ let LitAttachmentsTab = class LitAttachmentsTab extends LitElement {
128
185
  }
129
186
  }
130
187
  }
131
- handleDocumentClick(id) {
132
- this.selectedId = id;
133
- this.loadDocument(id);
134
- }
135
188
  getSelectedDocumentName() {
136
189
  const selectedDoc = this.documents?.find((doc) => doc.id === this.selectedId);
137
190
  return selectedDoc?.name || 'Unknown Document';
@@ -143,23 +196,27 @@ let LitAttachmentsTab = class LitAttachmentsTab extends LitElement {
143
196
  this.renderPage();
144
197
  }
145
198
  }
146
- handleDownload() {
147
- if (!this.selectedDocument) {
148
- console.error('No document selected for download.');
199
+ async handleDownload() {
200
+ if (!this.selectedDocument || !this.onClick) {
201
+ console.error('No document selected for download or onClick handler missing.');
149
202
  return;
150
203
  }
151
- const selectedDoc = this.documents?.find((doc) => doc.id === this.selectedId);
152
- if (!selectedDoc || !selectedDoc.src) {
153
- console.error('Document source not found.');
154
- return;
204
+ try {
205
+ const documentData = await this.onClick(this.selectedId);
206
+ const selectedDoc = this.documents?.find((doc) => doc.id === this.selectedId);
207
+ const blob = new Blob([documentData.data], { type: selectedDoc?.file_type });
208
+ const url = URL.createObjectURL(blob);
209
+ const link = document.createElement('a');
210
+ link.href = url;
211
+ link.download = selectedDoc?.name || 'document';
212
+ document.body.appendChild(link);
213
+ link.click();
214
+ document.body.removeChild(link);
215
+ URL.revokeObjectURL(url);
216
+ }
217
+ catch (error) {
218
+ console.error('Error downloading document:', error);
155
219
  }
156
- // Vytvorenie odkazu pre stiahnutie
157
- const link = document.createElement('a');
158
- link.href = selectedDoc.src; // Cesta k PDF
159
- link.download = selectedDoc.name || 'document.pdf'; // Názov pre stiahnutý súbor
160
- document.body.appendChild(link); // Pridanie do DOM
161
- link.click(); // Simulácia kliknutia
162
- document.body.removeChild(link); // Odstránenie odkazu
163
220
  }
164
221
  handleZoom(increase) {
165
222
  this.scale = increase ? (this.scale ?? 1) * 1.1 : (this.scale ?? 1) / 1.1;
@@ -192,278 +249,249 @@ let LitAttachmentsTab = class LitAttachmentsTab extends LitElement {
192
249
  render() {
193
250
  if (this.hideTabWhen)
194
251
  return null;
195
- return html `
196
- ${this.titleLabel
197
- ? html `
198
- <div class="section-header">
199
- <div class="section-title">${this.titleLabel}</div>
200
- </div>
201
- `
202
- : ''}
203
- <div class="section-tab">
204
- ${this.type === 'compact'
205
- ? html ` ${this.documents?.map((doc, index) => html `
206
- <div
207
- class="document-label ${this.selectedId == doc.id
252
+ return html `
253
+ ${this.type === 'compact'
254
+ ? html ` ${this.documents?.map((doc, index) => html `
255
+ <div
256
+ class="document-label ${this.selectedId == doc.id
208
257
  ? 'selected'
209
- : null}"
210
- @click=${() => this.handleDocumentClick(doc.id)}
211
- >
212
- <div class="document-item" id="${doc.id}">
213
- ${doc.name || `Document ${index + 1}`}
214
- </div>
215
-
216
- ${this.selectedId == doc.id
217
- ? html `
218
- <div class="document-checked">
219
- <span>Zobrazen náhled</span>
220
- </div>
221
- `
222
- : html `
223
- <div class="document-unchecked">
224
- <lit-icon icon="reading" size="1rem"></lit-icon>
225
- <span>Zobrazit náhled</span>
226
- </div>
227
- `}
228
- </div>
229
- `)}`
230
- : html `
231
- <lit-select
232
- .value="${this.selectedId}"
233
- .options="${this.documents?.map((doc) => ({
258
+ : null}"
259
+ @click=${() => this.handleDocumentClick(doc.id)}
260
+ >
261
+ <div class="document-item" id="${doc.id}">
262
+ <lit-overflow-tooltip
263
+ label="${doc.name || `Document ${index + 1}`}"
264
+ >
265
+ ${doc.name || `Document ${index + 1}`}
266
+ </lit-overflow-tooltip>
267
+ </div>
268
+
269
+ ${this.selectedId == doc.id
270
+ ? html `
271
+ <div class="document-checked">
272
+ <span>${msg('Zobrazen náhled')}</span>
273
+ </div>
274
+ `
275
+ : html `
276
+ <div class="document-unchecked">
277
+ <lit-icon icon="reading" size="1rem"></lit-icon>
278
+ <span>${msg('Zobrazit náhled')}</span>
279
+ </div>
280
+ `}
281
+ </div>
282
+ `)}`
283
+ : html `
284
+ <lit-select
285
+ .value="${this.selectedId}"
286
+ .options="${this.documents?.map((doc) => ({
234
287
  value: doc.id,
235
288
  label: doc.name,
236
- }))}"
237
- .onChange="${(selectedValue) => {
289
+ }))}"
290
+ .onChange="${(selectedValue) => {
238
291
  this.handleDocumentClick(selectedValue);
239
- }}"
240
- ></lit-select>
241
- `}
242
-
243
- <div class="document">
244
- <div class="document-box">
245
- <div class="document-selected">${this.getSelectedDocumentName()}</div>
246
-
247
- <div class="action-buttons">
248
- ${this.preview
249
- ? html `
250
- <lit-icon
251
- style="cursor: pointer"
252
- icon="chevronLeftFilled"
253
- size="1rem"
254
- @click=${() => this.handlePageChange(false)}
255
- ></lit-icon>
256
- <span>page ${this.pageNumber} / ${this.pageCount}</span>
257
- <lit-icon
258
- style="cursor: pointer"
259
- icon="chevronRightFilled"
260
- size="1rem"
261
- @click=${() => this.handlePageChange(true)}
262
- ></lit-icon>
263
- <lit-icon-button
264
- icon="zoomIn"
265
- variant="text"
266
- size="small"
267
- @click=${() => this.handleZoom(true)}
268
- ></lit-icon-button>
269
- <lit-icon-button
270
- icon="zoomout"
271
- variant="text"
272
- size="small"
273
- @click=${() => this.handleZoom(false)}
274
- ></lit-icon-button>
275
- `
276
- : null}
277
-
278
- <lit-icon-button
279
- icon="download"
280
- variant="text"
281
- size="small"
282
- @click=${this.handleDownload}
283
- ></lit-icon-button>
284
- </div>
285
- </div>
286
- <div
287
- class="document-container"
288
- @mousemove=${this.handleMouseMove}
289
- @mouseup=${this.handleMouseUp}
290
- @mouseleave=${this.handleMouseUp}
291
- >
292
- <canvas
293
- style=${styleMap({
292
+ }}"
293
+ .disableClearButton="${true}"
294
+ ></lit-select>
295
+ `}
296
+ <div style="height: 0.1875rem">
297
+ ${this.isDocumentLoading ? html ` <lit-loading-bar></lit-loading-bar> ` : null}
298
+ </div>
299
+ <div class="document">
300
+ <div class="document-box">
301
+ <div class="document-selected">
302
+ <lit-overflow-tooltip label="${this.getSelectedDocumentName()}">
303
+ ${this.getSelectedDocumentName()}
304
+ </lit-overflow-tooltip>
305
+ </div>
306
+ <div class="action-buttons">
307
+ ${this.preview
308
+ ? html `
309
+ <lit-icon
310
+ style="cursor: pointer"
311
+ icon="chevronLeftFilled"
312
+ size="1rem"
313
+ @click=${() => this.handlePageChange(false)}
314
+ ></lit-icon>
315
+ <span>page ${this.pageNumber} / ${this.pageCount}</span>
316
+ <lit-icon
317
+ style="cursor: pointer"
318
+ icon="chevronRightFilled"
319
+ size="1rem"
320
+ @click=${() => this.handlePageChange(true)}
321
+ ></lit-icon>
322
+ <lit-icon-button
323
+ icon="zoomout"
324
+ variant="text"
325
+ size="small"
326
+ @click=${() => this.handleZoom(false)}
327
+ ></lit-icon-button>
328
+ <lit-icon-button
329
+ icon="zoomIn"
330
+ variant="text"
331
+ size="small"
332
+ @click=${() => this.handleZoom(true)}
333
+ ></lit-icon-button>
334
+ `
335
+ : null}
336
+
337
+ <lit-icon-button
338
+ icon="download"
339
+ variant="text"
340
+ size="small"
341
+ @click=${this.handleDownload}
342
+ ></lit-icon-button>
343
+ </div>
344
+ </div>
345
+ <div
346
+ class="document-container"
347
+ @mousemove=${this.handleMouseMove}
348
+ @mouseup=${this.handleMouseUp}
349
+ @mouseleave=${this.handleMouseUp}
350
+ >
351
+ <canvas
352
+ style=${styleMap({
294
353
  cursor: (this.scale ?? 1) > 1 ? 'grab' : 'default',
295
354
  transform: `scale(${this.scale})`,
296
- })}
297
- @mousedown=${this.handleMouseDown}
298
- >
299
- </canvas>
300
- ${!this.preview
301
- ? html `
302
- <div class="not-supported__format">
303
- <div style="max-height: 7.125rem; max-width: 7.125rem">
304
- <no-preview></no-preview>
305
- </div>
306
- ${msg('Náhled dokumentu není možný vzhledem k typu dokumentu.')}
307
- </div>
308
- `
309
- : null}
310
- </div>
311
- </div>
312
- </div>
355
+ })}
356
+ @mousedown=${this.handleMouseDown}
357
+ >
358
+ </canvas>
359
+ ${!this.preview
360
+ ? html `
361
+ <div class="not-supported__format">
362
+ <div style="max-height: 7.125rem; max-width: 7.125rem">
363
+ <no-preview></no-preview>
364
+ </div>
365
+ ${msg('Náhled dokumentu není možný vzhledem k typu dokumentu.')}
366
+ </div>
367
+ `
368
+ : null}
369
+ </div>
370
+ </div>
313
371
  `;
314
372
  }
315
- disconnectedCallback() {
316
- super.disconnectedCallback();
317
- this.abortController.abort();
318
- }
319
373
  };
320
374
  LitAttachmentsTab.styles = [
321
- css `
322
- .section-tab {
323
- background: var(--background-paper, #ffffff);
324
- border-radius: 0.75rem;
325
- padding: var(--section-padding, 0.75rem 1rem);
326
- box-sizing: border-box;
327
- display: flex;
328
- flex-direction: column;
329
- position: relative;
330
- width: 100%;
331
- min-width: 20.3125rem;
332
- }
333
-
334
- .section-header {
335
- display: flex;
336
- align-items: center;
337
- padding: 0.625rem 1rem 0.625rem 1rem;
338
- text-transform: uppercase;
339
- }
340
-
341
- .section-title {
342
- font-size: 0.6875rem;
343
- color: var(--text-secondary, #5d6371);
344
- font-weight: 600 !important;
345
- margin-left: 0.5rem;
346
- }
347
-
348
- .document-label {
349
- line-height: 2rem;
350
- gap: 0.25rem;
351
- display: flex;
352
- justify-content: space-between;
353
- flex-direction: row;
354
- align-items: center;
355
- position: relative;
356
- font-weight: 500;
357
- font-size: 0.8125rem;
358
- padding: 0.125rem 0 0.125rem 1rem;
359
- background: var(--background-paper, #ffffff);
360
- color: var(--color-secondary-main, #111827);
361
- border-radius: 0.5rem;
362
- cursor: pointer;
363
- }
364
-
365
- .document-item {
366
- font-weight: 500;
367
- font-size: 0.8125rem;
368
- color: var(--color-secondary-main, #111827);
369
-
370
- overflow: hidden;
371
- white-space: nowrap;
372
- text-overflow: ellipsis;
373
- }
374
-
375
- .document-label:hover {
376
- background: var(--color-primary-light, #f0fadf);
377
- }
378
-
379
- .selected {
380
- background: var(--color-primary-light, #f0fadf);
381
- }
382
-
383
- .document-checked {
384
- padding: 0 1rem 0 1rem;
385
- font-size: 0.75rem;
386
- color: var(--color-success-main, #76b703);
387
- white-space: nowrap;
388
- }
389
- .document-unchecked {
390
- display: none;
391
- padding: 0 1rem 0 1rem;
392
- font-size: 0.75rem;
393
- align-items: center;
394
- gap: 0.5rem;
395
- white-space: nowrap;
396
- }
397
-
398
- .document-label:hover .document-unchecked {
399
- display: flex;
400
- }
401
-
402
- .document {
403
- height: 100%;
404
- background: var(--background-default, #eff3f4);
405
- border-radius: 0.25rem;
406
- padding: 0.75rem 0.5rem 0.5rem 0.5rem;
407
- }
408
-
409
- .document-box {
410
- display: flex;
411
- align-items: center;
412
- max-height: 2rem;
413
- justify-content: space-between;
414
- padding: 0 0.75rem 0.75rem 0.75rem;
415
- }
416
-
417
- .action-buttons {
418
- display: flex;
419
- align-items: center;
420
- font-size: 0.8125rem;
421
- gap: 0.75rem;
422
- white-space: nowrap;
423
- }
424
-
425
- .document-selected {
426
- color: var(--color-secondary-main, #111827);
427
- font-size: 0.8125rem;
428
- font-weight: 500;
429
- max-width: 100%;
430
- overflow: hidden;
431
- white-space: nowrap;
432
- text-overflow: ellipsis;
433
- }
434
-
435
- .document-container {
436
- position: relative;
437
- width: 100%;
438
- height: 100%;
439
-
440
- overflow: auto;
441
- justify-content: center;
442
- align-items: center;
443
- }
444
-
445
- canvas {
446
- display: block;
447
- margin: 0 auto;
448
- transform-origin: 0 0;
449
- width: 100%;
450
- height: 100%;
451
- }
452
-
453
- .not-supported__format {
454
- font-size: 0.875rem;
455
- text-align: center;
456
- display: flex;
457
- align-items: center;
458
- justify-content: center;
459
- flex-direction: column;
460
- margin: 1rem 0 1rem 0;
461
- }
375
+ css `
376
+ .document-label {
377
+ line-height: 2.125rem;
378
+ gap: 0.25rem;
379
+ display: flex;
380
+ justify-content: space-between;
381
+ flex-direction: row;
382
+ align-items: center;
383
+ position: relative;
384
+ font-weight: 500;
385
+ font-size: 0.8125rem;
386
+ padding: 0.125rem 0 0.125rem 1rem;
387
+ background: var(--background-paper, #ffffff);
388
+ color: var(--color-secondary-main, #111827);
389
+ border-radius: 0.5rem;
390
+ cursor: pointer;
391
+ }
392
+
393
+ .document-item {
394
+ font-weight: 500;
395
+ font-size: 0.8125rem;
396
+ color: var(--color-secondary-main, #111827);
397
+ display: flex;
398
+
399
+ overflow: hidden;
400
+ white-space: nowrap;
401
+ text-overflow: ellipsis;
402
+ }
403
+
404
+ .document-label:hover {
405
+ background: var(--color-primary-light, #f0fadf);
406
+ }
407
+
408
+ .selected {
409
+ background: var(--color-primary-light, #f0fadf);
410
+ }
411
+
412
+ .document-checked {
413
+ padding: 0 1rem 0 1rem;
414
+ font-size: 0.75rem;
415
+ color: var(--color-primary-dark, #5f9402);
416
+ white-space: nowrap;
417
+ }
418
+ .document-unchecked {
419
+ display: none;
420
+ padding: 0 1rem 0 1rem;
421
+ font-size: 0.75rem;
422
+ align-items: center;
423
+ gap: 0.5rem;
424
+ white-space: nowrap;
425
+ }
426
+
427
+ .document-label:hover .document-unchecked {
428
+ display: flex;
429
+ }
430
+
431
+ .document {
432
+ height: 100%;
433
+ background: var(--background-default, #eff3f4);
434
+ border-radius: 0.25rem;
435
+ padding: 0.75rem 0.5rem 0.5rem 0.5rem;
436
+ }
437
+
438
+ .document-box {
439
+ display: flex;
440
+ align-items: center;
441
+ max-height: 2rem;
442
+ justify-content: space-between;
443
+ padding: 0 0.75rem 0.75rem 0.75rem;
444
+ }
445
+
446
+ .action-buttons {
447
+ display: flex;
448
+ align-items: center;
449
+ font-size: 0.8125rem;
450
+ gap: 0.75rem;
451
+ white-space: nowrap;
452
+ }
453
+
454
+ .document-selected {
455
+ color: var(--color-secondary-main, #111827);
456
+ font-size: 0.8125rem;
457
+ font-weight: 500;
458
+ max-width: 100%;
459
+ overflow: hidden;
460
+ white-space: nowrap;
461
+ text-overflow: ellipsis;
462
+ display: flex;
463
+ }
464
+
465
+ .document-container {
466
+ position: relative;
467
+ width: 100%;
468
+ height: 100%;
469
+
470
+ overflow: auto;
471
+ justify-content: center;
472
+ align-items: center;
473
+ }
474
+
475
+ canvas {
476
+ display: block;
477
+ margin: 0 auto;
478
+ transform-origin: 0 0;
479
+ width: 100%;
480
+ height: 100%;
481
+ }
482
+
483
+ .not-supported__format {
484
+ min-height: 40vh;
485
+ font-size: 0.875rem;
486
+ text-align: center;
487
+ display: flex;
488
+ align-items: center;
489
+ justify-content: center;
490
+ flex-direction: column;
491
+ margin: 1rem 0 1rem 0;
492
+ }
462
493
  `,
463
494
  ];
464
- __decorate([
465
- property({ type: String })
466
- ], LitAttachmentsTab.prototype, "titleLabel", void 0);
467
495
  __decorate([
468
496
  property({ type: Boolean })
469
497
  ], LitAttachmentsTab.prototype, "hideTabWhen", void 0);
@@ -473,39 +501,45 @@ __decorate([
473
501
  __decorate([
474
502
  property({ type: Array })
475
503
  ], LitAttachmentsTab.prototype, "documents", void 0);
476
- __decorate([
477
- property({ type: String })
478
- ], LitAttachmentsTab.prototype, "selectedId", void 0);
479
504
  __decorate([
480
505
  property({ type: String })
481
506
  ], LitAttachmentsTab.prototype, "type", void 0);
482
507
  __decorate([
483
- property({ type: Object })
508
+ property({ type: Number })
509
+ ], LitAttachmentsTab.prototype, "scale", void 0);
510
+ __decorate([
511
+ property({ type: Function })
512
+ ], LitAttachmentsTab.prototype, "onClick", void 0);
513
+ __decorate([
514
+ state()
515
+ ], LitAttachmentsTab.prototype, "isDocumentLoading", void 0);
516
+ __decorate([
517
+ state()
484
518
  ], LitAttachmentsTab.prototype, "selectedDocument", void 0);
485
519
  __decorate([
486
- property({ type: Number })
520
+ state()
521
+ ], LitAttachmentsTab.prototype, "selectedId", void 0);
522
+ __decorate([
523
+ state()
487
524
  ], LitAttachmentsTab.prototype, "pageNumber", void 0);
488
525
  __decorate([
489
- property({ type: Number })
526
+ state()
490
527
  ], LitAttachmentsTab.prototype, "pageCount", void 0);
491
528
  __decorate([
492
- property({ type: Number })
493
- ], LitAttachmentsTab.prototype, "scale", void 0);
494
- __decorate([
495
- property({ type: Object })
529
+ state()
496
530
  ], LitAttachmentsTab.prototype, "isChecked", void 0);
497
531
  __decorate([
498
- property({ type: Array })
499
- ], LitAttachmentsTab.prototype, "additionalLabels", void 0);
500
- __decorate([
501
- property({ type: Object })
532
+ state()
502
533
  ], LitAttachmentsTab.prototype, "isEllipsisActive", void 0);
503
534
  __decorate([
504
- property({ type: String })
535
+ state()
505
536
  ], LitAttachmentsTab.prototype, "isHoveredLabel", void 0);
506
537
  __decorate([
507
538
  state()
508
539
  ], LitAttachmentsTab.prototype, "preview", void 0);
540
+ __decorate([
541
+ state()
542
+ ], LitAttachmentsTab.prototype, "documentData", void 0);
509
543
  LitAttachmentsTab = __decorate([
510
544
  customElement('lit-attachments-tab')
511
545
  ], LitAttachmentsTab);