@zentto/report-viewer 0.1.0 → 0.2.0

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.
@@ -1,5 +1,7 @@
1
- import { LitElement, type PropertyValues } from 'lit';
1
+ import { LitElement, type PropertyValues, type TemplateResult } from 'lit';
2
2
  import type { ReportLayout, DataSet, RenderOptions } from '@zentto/report-core';
3
+ type ViewMode = 'single' | 'all';
4
+ type ToolbarItem = 'navigation' | 'zoom' | 'view-mode' | 'fit-width' | 'print' | 'download-html' | 'download-json' | 'theme' | 'thumbnails';
3
5
  export declare class ZenttoReportViewer extends LitElement {
4
6
  /** The report layout definition (JSON object) */
5
7
  layout: ReportLayout | null;
@@ -15,19 +17,53 @@ export declare class ZenttoReportViewer extends LitElement {
15
17
  showToolbar: boolean;
16
18
  /** Theme: light or dark */
17
19
  theme: 'light' | 'dark';
20
+ /** View mode: single page or all pages */
21
+ viewMode: ViewMode;
22
+ /** Toolbar items to show — comma-separated string or array */
23
+ toolbarItems: ToolbarItem[];
24
+ /** Show thumbnails sidebar */
25
+ showThumbnails: boolean;
18
26
  private _result;
19
27
  private _error;
28
+ private _validationErrors;
29
+ private _loading;
30
+ private _menuOpen;
31
+ private _pagesContainer;
20
32
  static styles: import("lit").CSSResult;
33
+ connectedCallback(): void;
34
+ disconnectedCallback(): void;
21
35
  updated(changed: PropertyValues): void;
22
- private _render;
36
+ private _doRender;
37
+ private _onKeyDown;
23
38
  private _prevPage;
24
39
  private _nextPage;
40
+ private _goToPage;
41
+ private _setZoom;
25
42
  private _zoomIn;
26
43
  private _zoomOut;
27
44
  private _fitWidth;
45
+ /** Simple unit conversion (mirrors core toPx) */
46
+ private _toPx;
47
+ private _toggleViewMode;
48
+ private _toggleTheme;
49
+ private _toggleThumbnails;
50
+ private _toggleMenu;
51
+ private _closeMenu;
28
52
  private _print;
29
- render(): import("lit-html").TemplateResult<1>;
53
+ private _downloadHtml;
54
+ private _downloadJson;
55
+ private _downloadBlob;
56
+ private _hasItem;
57
+ private _onZoomSelect;
58
+ render(): TemplateResult<1>;
59
+ private _onContainerClick;
30
60
  private _renderToolbar;
61
+ private _renderSpinner;
62
+ private _renderError;
63
+ private _renderValidationErrors;
64
+ private _renderThumbnails;
65
+ private _getPageWidth;
66
+ private _getPageHeight;
31
67
  private _renderPages;
32
68
  }
33
69
  declare global {
@@ -1 +1 @@
1
- {"version":3,"file":"zentto-report-viewer.d.ts","sourceRoot":"","sources":["../src/zentto-report-viewer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAa,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAEjE,OAAO,KAAK,EAAE,YAAY,EAAE,OAAO,EAAgB,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAG9F,qBACa,kBAAmB,SAAQ,UAAU;IAIhD,iDAAiD;IAEjD,MAAM,EAAE,YAAY,GAAG,IAAI,CAAQ;IAEnC,qDAAqD;IAErD,IAAI,EAAE,OAAO,GAAG,IAAI,CAAQ;IAE5B,6DAA6D;IAE7D,OAAO,EAAE,aAAa,GAAG,IAAI,CAAQ;IAErC,sCAAsC;IAEtC,IAAI,SAAO;IAEX,6BAA6B;IAE7B,WAAW,SAAK;IAEhB,qDAAqD;IAErD,WAAW,UAAQ;IAEnB,2BAA2B;IAE3B,KAAK,EAAE,OAAO,GAAG,MAAM,CAAW;IAIzB,OAAO,CAAC,OAAO,CAA6B;IAC5C,OAAO,CAAC,MAAM,CAAuB;IAI9C,OAAgB,MAAM,0BAgGpB;IAIO,OAAO,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI;IAM/C,OAAO,CAAC,OAAO;IAsBf,OAAO,CAAC,SAAS;IAOjB,OAAO,CAAC,SAAS;IAOjB,OAAO,CAAC,OAAO;IAKf,OAAO,CAAC,QAAQ;IAKhB,OAAO,CAAC,SAAS;IAKjB,OAAO,CAAC,MAAM;IA4BL,MAAM;IAaf,OAAO,CAAC,cAAc;IAsBtB,OAAO,CAAC,YAAY;CAcrB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,sBAAsB,EAAE,kBAAkB,CAAC;KAC5C;CACF;AAED,OAAO,EAAE,kBAAkB,IAAI,OAAO,EAAE,CAAC"}
1
+ {"version":3,"file":"zentto-report-viewer.d.ts","sourceRoot":"","sources":["../src/zentto-report-viewer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAsB,KAAK,cAAc,EAAE,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAI/F,OAAO,KAAK,EAAE,YAAY,EAAE,OAAO,EAAgB,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAK9F,KAAK,QAAQ,GAAG,QAAQ,GAAG,KAAK,CAAC;AACjC,KAAK,WAAW,GACZ,YAAY,GACZ,MAAM,GACN,WAAW,GACX,WAAW,GACX,OAAO,GACP,eAAe,GACf,eAAe,GACf,OAAO,GACP,YAAY,CAAC;AAoBjB,qBACa,kBAAmB,SAAQ,UAAU;IAIhD,iDAAiD;IAEjD,MAAM,EAAE,YAAY,GAAG,IAAI,CAAQ;IAEnC,qDAAqD;IAErD,IAAI,EAAE,OAAO,GAAG,IAAI,CAAQ;IAE5B,6DAA6D;IAE7D,OAAO,EAAE,aAAa,GAAG,IAAI,CAAQ;IAErC,sCAAsC;IAEtC,IAAI,SAAO;IAEX,6BAA6B;IAE7B,WAAW,SAAK;IAEhB,qDAAqD;IAErD,WAAW,UAAQ;IAEnB,2BAA2B;IAE3B,KAAK,EAAE,OAAO,GAAG,MAAM,CAAW;IAElC,0CAA0C;IAE1C,QAAQ,EAAE,QAAQ,CAAY;IAE9B,8DAA8D;IAU9D,YAAY,EAAE,WAAW,EAAE,CAAyB;IAEpD,8BAA8B;IAE9B,cAAc,UAAS;IAId,OAAO,CAAC,OAAO,CAA6B;IAC5C,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,iBAAiB,CAAyB;IAClD,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,SAAS,CAAS;IAER,OAAO,CAAC,eAAe,CAAe;IAIjE,OAAgB,MAAM,0BAqSpB;IAIO,iBAAiB,IAAI,IAAI;IAMzB,oBAAoB,IAAI,IAAI;IAK5B,OAAO,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI;IAQ/C,OAAO,CAAC,SAAS;IAqDjB,OAAO,CAAC,UAAU;IAsBlB,OAAO,CAAC,SAAS;IAOjB,OAAO,CAAC,SAAS;IAOjB,OAAO,CAAC,SAAS;IAgBjB,OAAO,CAAC,QAAQ;IAKhB,OAAO,CAAC,OAAO;IAMf,OAAO,CAAC,QAAQ;IAMhB,OAAO,CAAC,SAAS;IAUjB,iDAAiD;IACjD,OAAO,CAAC,KAAK;IAUb,OAAO,CAAC,eAAe;IAKvB,OAAO,CAAC,YAAY;IAKpB,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,MAAM;IA0Bd,OAAO,CAAC,aAAa;IAOrB,OAAO,CAAC,aAAa;IAOrB,OAAO,CAAC,aAAa;IAarB,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,aAAa;IAOZ,MAAM;IAoBf,OAAO,CAAC,iBAAiB;IAQzB,OAAO,CAAC,cAAc;IAyFtB,OAAO,CAAC,cAAc;IAQtB,OAAO,CAAC,YAAY;IASpB,OAAO,CAAC,uBAAuB;IAgB/B,OAAO,CAAC,iBAAiB;IAuBzB,OAAO,CAAC,aAAa;IAKrB,OAAO,CAAC,cAAc;IAKtB,OAAO,CAAC,YAAY;CAiCrB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,sBAAsB,EAAE,kBAAkB,CAAC;KAC5C;CACF;AAED,OAAO,EAAE,kBAAkB,IAAI,OAAO,EAAE,CAAC"}
@@ -5,9 +5,23 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
5
5
  return c > 3 && r && Object.defineProperty(target, key, r), r;
6
6
  };
7
7
  // @zentto/report-viewer — Web component for rendering reports
8
- import { LitElement, html, css } from 'lit';
9
- import { customElement, property, state } from 'lit/decorators.js';
10
- import { renderToHtml } from '@zentto/report-core';
8
+ import { LitElement, html, css, nothing } from 'lit';
9
+ import { customElement, property, state, query } from 'lit/decorators.js';
10
+ import { classMap } from 'lit/directives/class-map.js';
11
+ import { unsafeHTML } from 'lit/directives/unsafe-html.js';
12
+ import { renderToHtml, renderToFullHtml, safeValidateLayout } from '@zentto/report-core';
13
+ const ZOOM_PRESETS = [50, 75, 100, 125, 150, 200];
14
+ const DEFAULT_TOOLBAR_ITEMS = [
15
+ 'navigation',
16
+ 'zoom',
17
+ 'view-mode',
18
+ 'fit-width',
19
+ 'print',
20
+ 'download-html',
21
+ 'download-json',
22
+ 'theme',
23
+ 'thumbnails',
24
+ ];
11
25
  let ZenttoReportViewer = class ZenttoReportViewer extends LitElement {
12
26
  constructor() {
13
27
  // ─── Public Properties ──────────────────────────────────────────
@@ -26,99 +40,305 @@ let ZenttoReportViewer = class ZenttoReportViewer extends LitElement {
26
40
  this.showToolbar = true;
27
41
  /** Theme: light or dark */
28
42
  this.theme = 'light';
43
+ /** View mode: single page or all pages */
44
+ this.viewMode = 'single';
45
+ /** Toolbar items to show — comma-separated string or array */
46
+ this.toolbarItems = DEFAULT_TOOLBAR_ITEMS;
47
+ /** Show thumbnails sidebar */
48
+ this.showThumbnails = false;
29
49
  // ─── Internal State ─────────────────────────────────────────────
30
50
  this._result = null;
31
51
  this._error = null;
52
+ this._validationErrors = [];
53
+ this._loading = false;
54
+ this._menuOpen = false;
32
55
  }
33
56
  // ─── Styles ─────────────────────────────────────────────────────
34
57
  static { this.styles = css `
35
58
  :host {
36
59
  display: block;
37
- font-family: Arial, sans-serif;
38
- --zr-bg: #e0e0e0;
60
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Arial, sans-serif;
61
+ --zr-bg: #d5d5d5;
39
62
  --zr-toolbar-bg: #ffffff;
40
63
  --zr-toolbar-border: #ddd;
41
64
  --zr-text: #333;
42
65
  --zr-btn-bg: #f5f5f5;
43
66
  --zr-btn-hover: #e0e0e0;
44
- --zr-page-shadow: rgba(0,0,0,0.15);
67
+ --zr-btn-active: #d0d0d0;
68
+ --zr-page-shadow: 0 2px 12px rgba(0,0,0,0.18);
69
+ --zr-page-bg: #ffffff;
70
+ --zr-accent: #1976d2;
71
+ --zr-accent-hover: #1565c0;
72
+ --zr-error-bg: #fff5f5;
73
+ --zr-error-border: #e53e3e;
74
+ --zr-error-text: #c53030;
75
+ --zr-thumb-border: #ccc;
76
+ --zr-thumb-active: #1976d2;
45
77
  }
46
78
  :host([theme="dark"]) {
47
- --zr-bg: #1e1e1e;
48
- --zr-toolbar-bg: #2d2d2d;
49
- --zr-toolbar-border: #444;
79
+ --zr-bg: #121212;
80
+ --zr-toolbar-bg: #1e1e1e;
81
+ --zr-toolbar-border: #333;
50
82
  --zr-text: #e0e0e0;
51
- --zr-btn-bg: #3a3a3a;
52
- --zr-btn-hover: #4a4a4a;
53
- --zr-page-shadow: rgba(0,0,0,0.4);
83
+ --zr-btn-bg: #2a2a2a;
84
+ --zr-btn-hover: #3a3a3a;
85
+ --zr-btn-active: #444;
86
+ --zr-page-shadow: 0 2px 16px rgba(0,0,0,0.5);
87
+ --zr-page-bg: #ffffff;
88
+ --zr-accent: #64b5f6;
89
+ --zr-accent-hover: #42a5f5;
90
+ --zr-error-bg: #2d1b1b;
91
+ --zr-error-border: #e53e3e;
92
+ --zr-error-text: #fc8181;
93
+ --zr-thumb-border: #444;
94
+ --zr-thumb-active: #64b5f6;
54
95
  }
55
96
 
97
+ * { box-sizing: border-box; }
98
+
56
99
  .viewer-container {
57
100
  display: flex;
58
101
  flex-direction: column;
59
102
  height: 100%;
60
103
  background: var(--zr-bg);
61
104
  color: var(--zr-text);
105
+ position: relative;
62
106
  }
63
107
 
108
+ /* ─── Toolbar ─── */
109
+
64
110
  .toolbar {
65
111
  display: flex;
66
112
  align-items: center;
67
- gap: 8px;
68
- padding: 8px 16px;
113
+ gap: 6px;
114
+ padding: 6px 12px;
69
115
  background: var(--zr-toolbar-bg);
70
116
  border-bottom: 1px solid var(--zr-toolbar-border);
71
117
  flex-shrink: 0;
118
+ flex-wrap: nowrap;
119
+ min-height: 44px;
120
+ position: relative;
121
+ z-index: 10;
122
+ }
123
+
124
+ .toolbar-group {
125
+ display: flex;
126
+ align-items: center;
127
+ gap: 4px;
72
128
  }
73
129
 
74
- .toolbar button {
130
+ .toolbar-separator {
131
+ width: 1px;
132
+ height: 24px;
133
+ background: var(--zr-toolbar-border);
134
+ margin: 0 4px;
135
+ }
136
+
137
+ .toolbar button, .toolbar select {
75
138
  background: var(--zr-btn-bg);
76
139
  border: 1px solid var(--zr-toolbar-border);
77
140
  border-radius: 4px;
78
- padding: 6px 12px;
141
+ padding: 5px 10px;
79
142
  cursor: pointer;
80
143
  color: var(--zr-text);
81
144
  font-size: 13px;
145
+ white-space: nowrap;
146
+ transition: background 0.15s;
147
+ line-height: 1.4;
148
+ }
149
+ .toolbar button:hover:not(:disabled) { background: var(--zr-btn-hover); }
150
+ .toolbar button:active:not(:disabled) { background: var(--zr-btn-active); }
151
+ .toolbar button:disabled { opacity: 0.35; cursor: default; }
152
+ .toolbar button.active {
153
+ background: var(--zr-accent);
154
+ color: white;
155
+ border-color: var(--zr-accent);
156
+ }
157
+
158
+ .toolbar select {
159
+ appearance: auto;
160
+ min-width: 70px;
82
161
  }
83
- .toolbar button:hover { background: var(--zr-btn-hover); }
84
- .toolbar button:disabled { opacity: 0.4; cursor: default; }
85
162
 
86
163
  .toolbar .page-info {
87
164
  font-size: 13px;
88
- min-width: 100px;
165
+ min-width: 80px;
89
166
  text-align: center;
167
+ user-select: none;
90
168
  }
91
169
 
92
- .toolbar .zoom-info {
93
- font-size: 13px;
94
- min-width: 50px;
170
+ .toolbar .spacer { flex: 1; }
171
+
172
+ /* Hamburger menu for small screens */
173
+ .hamburger-btn {
174
+ display: none;
175
+ background: none !important;
176
+ border: none !important;
177
+ font-size: 20px;
178
+ padding: 4px 8px !important;
179
+ cursor: pointer;
180
+ color: var(--zr-text);
181
+ }
182
+
183
+ .toolbar-items {
184
+ display: contents;
185
+ }
186
+
187
+ .toolbar-overflow-menu {
188
+ display: none;
189
+ position: absolute;
190
+ top: 100%;
191
+ right: 0;
192
+ background: var(--zr-toolbar-bg);
193
+ border: 1px solid var(--zr-toolbar-border);
194
+ border-radius: 8px;
195
+ box-shadow: 0 4px 16px rgba(0,0,0,0.15);
196
+ padding: 8px;
197
+ gap: 6px;
198
+ flex-wrap: wrap;
199
+ z-index: 100;
200
+ max-width: 360px;
201
+ }
202
+ .toolbar-overflow-menu.open {
203
+ display: flex;
204
+ }
205
+
206
+ @media (max-width: 720px) {
207
+ .hamburger-btn { display: inline-flex; }
208
+ .toolbar-items { display: none; }
209
+ .toolbar-overflow-menu.open {
210
+ display: flex;
211
+ }
212
+ }
213
+
214
+ /* ─── Main Area ─── */
215
+
216
+ .main-area {
217
+ display: flex;
218
+ flex: 1;
219
+ overflow: hidden;
220
+ }
221
+
222
+ /* ─── Thumbnails Sidebar ─── */
223
+
224
+ .thumbnails-sidebar {
225
+ width: 160px;
226
+ min-width: 160px;
227
+ background: var(--zr-toolbar-bg);
228
+ border-right: 1px solid var(--zr-toolbar-border);
229
+ overflow-y: auto;
230
+ padding: 12px 8px;
231
+ display: flex;
232
+ flex-direction: column;
233
+ gap: 12px;
234
+ }
235
+
236
+ .thumbnail {
237
+ cursor: pointer;
238
+ border: 2px solid var(--zr-thumb-border);
239
+ border-radius: 4px;
240
+ overflow: hidden;
241
+ transition: border-color 0.15s;
242
+ background: white;
243
+ }
244
+ .thumbnail:hover { border-color: var(--zr-accent); }
245
+ .thumbnail.active { border-color: var(--zr-thumb-active); box-shadow: 0 0 0 1px var(--zr-thumb-active); }
246
+
247
+ .thumbnail-inner {
248
+ transform-origin: top left;
249
+ pointer-events: none;
250
+ overflow: hidden;
251
+ }
252
+
253
+ .thumbnail-label {
95
254
  text-align: center;
255
+ font-size: 11px;
256
+ padding: 4px 0 2px;
257
+ color: var(--zr-text);
258
+ user-select: none;
96
259
  }
97
260
 
98
- .toolbar .spacer { flex: 1; }
261
+ /* ─── Pages Container ─── */
99
262
 
100
263
  .pages-container {
101
264
  flex: 1;
102
265
  overflow: auto;
103
- padding: 20px;
266
+ padding: 24px;
267
+ scroll-behavior: smooth;
104
268
  }
105
269
 
106
270
  .page-wrapper {
107
271
  display: flex;
108
- justify-content: center;
109
- margin-bottom: 20px;
272
+ flex-direction: column;
273
+ align-items: center;
274
+ margin-bottom: 24px;
110
275
  }
111
276
 
112
277
  .page-content {
113
278
  transform-origin: top center;
114
- background: white;
115
- box-shadow: 0 2px 8px var(--zr-page-shadow);
279
+ background: var(--zr-page-bg);
280
+ box-shadow: var(--zr-page-shadow);
281
+ border-radius: 2px;
282
+ transition: transform 0.2s ease;
116
283
  }
117
284
 
118
- .error {
119
- padding: 20px;
120
- color: #d32f2f;
121
- text-align: center;
285
+ .page-label {
286
+ margin-top: 8px;
287
+ font-size: 12px;
288
+ color: var(--zr-text);
289
+ opacity: 0.7;
290
+ user-select: none;
291
+ }
292
+
293
+ /* ─── Loading Spinner ─── */
294
+
295
+ .loading-overlay {
296
+ display: flex;
297
+ align-items: center;
298
+ justify-content: center;
299
+ padding: 60px;
300
+ flex: 1;
301
+ }
302
+
303
+ .spinner {
304
+ width: 36px;
305
+ height: 36px;
306
+ border: 3px solid var(--zr-toolbar-border);
307
+ border-top-color: var(--zr-accent);
308
+ border-radius: 50%;
309
+ animation: zr-spin 0.7s linear infinite;
310
+ }
311
+
312
+ @keyframes zr-spin {
313
+ to { transform: rotate(360deg); }
314
+ }
315
+
316
+ /* ─── Error Display ─── */
317
+
318
+ .error-panel {
319
+ margin: 16px;
320
+ padding: 16px;
321
+ background: var(--zr-error-bg);
322
+ border: 1px solid var(--zr-error-border);
323
+ border-radius: 8px;
324
+ color: var(--zr-error-text);
325
+ }
326
+ .error-panel h3 {
327
+ margin: 0 0 8px;
328
+ font-size: 15px;
329
+ }
330
+ .error-panel ul {
331
+ margin: 0;
332
+ padding-left: 20px;
333
+ }
334
+ .error-panel li {
335
+ font-size: 13px;
336
+ margin-bottom: 4px;
337
+ }
338
+ .error-panel .error-path {
339
+ font-family: monospace;
340
+ font-size: 12px;
341
+ opacity: 0.8;
122
342
  }
123
343
 
124
344
  .empty {
@@ -129,28 +349,85 @@ let ZenttoReportViewer = class ZenttoReportViewer extends LitElement {
129
349
  }
130
350
  `; }
131
351
  // ─── Lifecycle ──────────────────────────────────────────────────
352
+ connectedCallback() {
353
+ super.connectedCallback();
354
+ this._onKeyDown = this._onKeyDown.bind(this);
355
+ window.addEventListener('keydown', this._onKeyDown);
356
+ }
357
+ disconnectedCallback() {
358
+ super.disconnectedCallback();
359
+ window.removeEventListener('keydown', this._onKeyDown);
360
+ }
132
361
  updated(changed) {
133
362
  if (changed.has('layout') || changed.has('data') || changed.has('options')) {
134
- this._render();
363
+ this._doRender();
135
364
  }
136
365
  }
137
- _render() {
366
+ // ─── Core Render Logic ──────────────────────────────────────────
367
+ _doRender() {
368
+ this._validationErrors = [];
138
369
  if (!this.layout || !this.data) {
139
370
  this._result = null;
140
371
  this._error = null;
372
+ this._loading = false;
141
373
  return;
142
374
  }
143
- try {
144
- this._result = renderToHtml(this.layout, this.data, this.options || undefined);
145
- this._error = null;
146
- // Clamp current page
147
- if (this.currentPage > this._result.totalPages) {
148
- this.currentPage = this._result.totalPages;
375
+ // Validate layout schema
376
+ const validation = safeValidateLayout(this.layout);
377
+ if (!validation.success) {
378
+ this._validationErrors = (validation.error?.issues ?? []).map((issue) => ({
379
+ path: (issue.path ?? []).join('.'),
380
+ message: issue.message ?? 'Unknown error',
381
+ }));
382
+ }
383
+ this._loading = true;
384
+ this._error = null;
385
+ // Use microtask to let spinner paint first
386
+ queueMicrotask(() => {
387
+ try {
388
+ this._result = renderToHtml(this.layout, this.data, this.options || undefined);
389
+ this._error = null;
390
+ // Clamp current page
391
+ if (this.currentPage > this._result.totalPages) {
392
+ this.currentPage = this._result.totalPages || 1;
393
+ }
394
+ this._loading = false;
395
+ this.updateComplete.then(() => {
396
+ this.dispatchEvent(new CustomEvent('render-complete', {
397
+ bubbles: true,
398
+ composed: true,
399
+ detail: {
400
+ totalPages: this._result.totalPages,
401
+ generatedAt: this._result.generatedAt,
402
+ },
403
+ }));
404
+ });
405
+ }
406
+ catch (err) {
407
+ this._error = err instanceof Error ? err.message : String(err);
408
+ this._result = null;
409
+ this._loading = false;
410
+ }
411
+ });
412
+ }
413
+ // ─── Keyboard Shortcuts ─────────────────────────────────────────
414
+ _onKeyDown(e) {
415
+ // Only handle when viewer is focused or no other input is focused
416
+ const active = document.activeElement;
417
+ if (active && (active.tagName === 'INPUT' || active.tagName === 'TEXTAREA' || active.tagName === 'SELECT')) {
418
+ return;
419
+ }
420
+ if (e.key === 'ArrowLeft' || e.key === 'ArrowUp') {
421
+ if (this.viewMode === 'single') {
422
+ e.preventDefault();
423
+ this._prevPage();
149
424
  }
150
425
  }
151
- catch (err) {
152
- this._error = err instanceof Error ? err.message : String(err);
153
- this._result = null;
426
+ else if (e.key === 'ArrowRight' || e.key === 'ArrowDown') {
427
+ if (this.viewMode === 'single') {
428
+ e.preventDefault();
429
+ this._nextPage();
430
+ }
154
431
  }
155
432
  }
156
433
  // ─── Actions ────────────────────────────────────────────────────
@@ -166,20 +443,76 @@ let ZenttoReportViewer = class ZenttoReportViewer extends LitElement {
166
443
  this.dispatchEvent(new CustomEvent('page-change', { detail: { page: this.currentPage } }));
167
444
  }
168
445
  }
169
- _zoomIn() {
170
- this.zoom = Math.min(this.zoom + 10, 200);
446
+ _goToPage(page) {
447
+ if (!this._result)
448
+ return;
449
+ this.currentPage = Math.max(1, Math.min(page, this._result.totalPages));
450
+ this.dispatchEvent(new CustomEvent('page-change', { detail: { page: this.currentPage } }));
451
+ if (this.viewMode === 'all') {
452
+ // Scroll to the page in all-pages mode
453
+ this.updateComplete.then(() => {
454
+ const container = this._pagesContainer;
455
+ if (!container)
456
+ return;
457
+ const pageEl = container.querySelector(`[data-page="${this.currentPage}"]`);
458
+ pageEl?.scrollIntoView({ behavior: 'smooth', block: 'start' });
459
+ });
460
+ }
461
+ }
462
+ _setZoom(zoom) {
463
+ this.zoom = Math.max(25, Math.min(300, zoom));
171
464
  this.dispatchEvent(new CustomEvent('zoom-change', { detail: { zoom: this.zoom } }));
172
465
  }
466
+ _zoomIn() {
467
+ // Jump to next preset
468
+ const next = ZOOM_PRESETS.find(z => z > this.zoom);
469
+ this._setZoom(next ?? Math.min(this.zoom + 25, 300));
470
+ }
173
471
  _zoomOut() {
174
- this.zoom = Math.max(this.zoom - 10, 30);
175
- this.dispatchEvent(new CustomEvent('zoom-change', { detail: { zoom: this.zoom } }));
472
+ // Jump to previous preset
473
+ const prev = [...ZOOM_PRESETS].reverse().find(z => z < this.zoom);
474
+ this._setZoom(prev ?? Math.max(this.zoom - 25, 25));
176
475
  }
177
476
  _fitWidth() {
178
- this.zoom = 100;
179
- this.dispatchEvent(new CustomEvent('zoom-change', { detail: { zoom: this.zoom } }));
477
+ if (!this._pagesContainer || !this.layout)
478
+ return;
479
+ const containerWidth = this._pagesContainer.clientWidth - 48; // minus padding
480
+ const unit = this.layout.pageSize.unit;
481
+ const pageWidthPx = this._toPx(this.layout.pageSize.width, unit);
482
+ if (pageWidthPx <= 0)
483
+ return;
484
+ const zoom = Math.round((containerWidth / pageWidthPx) * 100);
485
+ this._setZoom(Math.max(25, Math.min(zoom, 300)));
486
+ }
487
+ /** Simple unit conversion (mirrors core toPx) */
488
+ _toPx(value, unit) {
489
+ switch (unit) {
490
+ case 'mm': return value * 3.7795275591;
491
+ case 'in': return value * 96;
492
+ case 'pt': return value * (96 / 72);
493
+ case 'px': return value;
494
+ default: return value;
495
+ }
496
+ }
497
+ _toggleViewMode() {
498
+ this.viewMode = this.viewMode === 'single' ? 'all' : 'single';
499
+ this.dispatchEvent(new CustomEvent('view-mode-change', { detail: { viewMode: this.viewMode } }));
500
+ }
501
+ _toggleTheme() {
502
+ this.theme = this.theme === 'light' ? 'dark' : 'light';
503
+ this.dispatchEvent(new CustomEvent('theme-change', { detail: { theme: this.theme } }));
504
+ }
505
+ _toggleThumbnails() {
506
+ this.showThumbnails = !this.showThumbnails;
507
+ }
508
+ _toggleMenu() {
509
+ this._menuOpen = !this._menuOpen;
510
+ }
511
+ _closeMenu() {
512
+ this._menuOpen = false;
180
513
  }
181
514
  _print() {
182
- if (!this._result)
515
+ if (!this._result || !this.layout)
183
516
  return;
184
517
  const allHtml = this._result.pages.map(p => p.html).join('\n');
185
518
  const printWindow = window.open('', '_blank');
@@ -203,52 +536,234 @@ let ZenttoReportViewer = class ZenttoReportViewer extends LitElement {
203
536
  printWindow.document.close();
204
537
  printWindow.print();
205
538
  }
539
+ _downloadHtml() {
540
+ if (!this._result || !this.layout || !this.data)
541
+ return;
542
+ const fullHtml = renderToFullHtml(this.layout, this.data, this.options || undefined);
543
+ const blob = new Blob([fullHtml], { type: 'text/html;charset=utf-8' });
544
+ this._downloadBlob(blob, `${this.layout.name || 'report'}.html`);
545
+ }
546
+ _downloadJson() {
547
+ if (!this.layout)
548
+ return;
549
+ const json = JSON.stringify(this.layout, null, 2);
550
+ const blob = new Blob([json], { type: 'application/json;charset=utf-8' });
551
+ this._downloadBlob(blob, `${this.layout.name || 'report'}-layout.json`);
552
+ }
553
+ _downloadBlob(blob, filename) {
554
+ const url = URL.createObjectURL(blob);
555
+ const a = document.createElement('a');
556
+ a.href = url;
557
+ a.download = filename;
558
+ document.body.appendChild(a);
559
+ a.click();
560
+ document.body.removeChild(a);
561
+ URL.revokeObjectURL(url);
562
+ }
563
+ // ─── Helpers ────────────────────────────────────────────────────
564
+ _hasItem(item) {
565
+ return this.toolbarItems.includes(item);
566
+ }
567
+ _onZoomSelect(e) {
568
+ const value = e.target.value;
569
+ this._setZoom(parseInt(value, 10));
570
+ }
206
571
  // ─── Render ─────────────────────────────────────────────────────
207
572
  render() {
208
573
  return html `
209
- <div class="viewer-container">
210
- ${this.showToolbar ? this._renderToolbar() : null}
211
- <div class="pages-container">
212
- ${this._error ? html `<div class="error">${this._error}</div>` : null}
213
- ${!this._result && !this._error ? html `<div class="empty">No report data. Set layout and data properties.</div>` : null}
214
- ${this._result ? this._renderPages() : null}
574
+ <div class="viewer-container" @click=${this._onContainerClick}>
575
+ ${this.showToolbar ? this._renderToolbar() : nothing}
576
+ ${this._validationErrors.length > 0 ? this._renderValidationErrors() : nothing}
577
+ <div class="main-area">
578
+ ${this.showThumbnails && this._result ? this._renderThumbnails() : nothing}
579
+ <div class="pages-container">
580
+ ${this._loading ? this._renderSpinner() : nothing}
581
+ ${this._error ? this._renderError() : nothing}
582
+ ${!this._result && !this._error && !this._loading
583
+ ? html `<div class="empty">No report data. Set layout and data properties.</div>`
584
+ : nothing}
585
+ ${this._result && !this._loading ? this._renderPages() : nothing}
586
+ </div>
215
587
  </div>
216
588
  </div>
217
589
  `;
218
590
  }
591
+ _onContainerClick(e) {
592
+ // Close overflow menu if clicking outside
593
+ const target = e.target;
594
+ if (!target.closest('.hamburger-btn') && !target.closest('.toolbar-overflow-menu')) {
595
+ this._closeMenu();
596
+ }
597
+ }
219
598
  _renderToolbar() {
220
599
  const total = this._result?.totalPages || 0;
600
+ // Build toolbar groups based on toolbarItems
601
+ const navGroup = this._hasItem('navigation') ? html `
602
+ <div class="toolbar-group">
603
+ <button @click=${this._prevPage} ?disabled=${this.currentPage <= 1}
604
+ title="Previous page (Left arrow)">&#9664;</button>
605
+ <span class="page-info">${this.currentPage} / ${total}</span>
606
+ <button @click=${this._nextPage} ?disabled=${this.currentPage >= total}
607
+ title="Next page (Right arrow)">&#9654;</button>
608
+ </div>
609
+ ` : nothing;
610
+ const zoomGroup = this._hasItem('zoom') ? html `
611
+ <div class="toolbar-group">
612
+ <button @click=${this._zoomOut} title="Zoom out">&#8722;</button>
613
+ <select .value=${String(this.zoom)} @change=${this._onZoomSelect} title="Zoom level">
614
+ ${ZOOM_PRESETS.map(z => html `
615
+ <option value=${z} ?selected=${this.zoom === z}>${z}%</option>
616
+ `)}
617
+ ${!ZOOM_PRESETS.includes(this.zoom)
618
+ ? html `<option value=${this.zoom} selected>${this.zoom}%</option>`
619
+ : nothing}
620
+ </select>
621
+ <button @click=${this._zoomIn} title="Zoom in">&#43;</button>
622
+ </div>
623
+ ` : nothing;
624
+ const fitBtn = this._hasItem('fit-width') ? html `
625
+ <button @click=${this._fitWidth} title="Fit to width">Fit</button>
626
+ ` : nothing;
627
+ const viewBtn = this._hasItem('view-mode') ? html `
628
+ <button @click=${this._toggleViewMode}
629
+ class=${classMap({ active: this.viewMode === 'all' })}
630
+ title="${this.viewMode === 'single' ? 'Show all pages' : 'Single page view'}">
631
+ ${this.viewMode === 'single' ? '&#9776;' : '&#9634;'}
632
+ </button>
633
+ ` : nothing;
634
+ const thumbBtn = this._hasItem('thumbnails') ? html `
635
+ <button @click=${this._toggleThumbnails}
636
+ class=${classMap({ active: this.showThumbnails })}
637
+ title="Toggle thumbnails sidebar">&#9871;</button>
638
+ ` : nothing;
639
+ const themeBtn = this._hasItem('theme') ? html `
640
+ <button @click=${this._toggleTheme}
641
+ title="Toggle dark/light theme">
642
+ ${this.theme === 'light' ? '&#9789;' : '&#9788;'}
643
+ </button>
644
+ ` : nothing;
645
+ const printBtn = this._hasItem('print') ? html `
646
+ <button @click=${this._print} ?disabled=${!this._result} title="Print report">Print</button>
647
+ ` : nothing;
648
+ const dlHtmlBtn = this._hasItem('download-html') ? html `
649
+ <button @click=${this._downloadHtml} ?disabled=${!this._result} title="Download as HTML">&#8615; HTML</button>
650
+ ` : nothing;
651
+ const dlJsonBtn = this._hasItem('download-json') ? html `
652
+ <button @click=${this._downloadJson} ?disabled=${!this.layout} title="Download layout JSON">&#8615; JSON</button>
653
+ ` : nothing;
654
+ const allButtons = html `
655
+ ${navGroup}
656
+ ${navGroup !== nothing ? html `<div class="toolbar-separator"></div>` : nothing}
657
+ ${zoomGroup}
658
+ ${fitBtn}
659
+ ${viewBtn}
660
+ <span class="spacer"></span>
661
+ ${thumbBtn}
662
+ ${themeBtn}
663
+ ${printBtn}
664
+ ${dlHtmlBtn}
665
+ ${dlJsonBtn}
666
+ `;
221
667
  return html `
222
668
  <div class="toolbar">
223
- <button @click=${this._prevPage} ?disabled=${this.currentPage <= 1}>&#9664;</button>
224
- <span class="page-info">${this.currentPage} / ${total}</span>
225
- <button @click=${this._nextPage} ?disabled=${this.currentPage >= total}>&#9654;</button>
226
-
227
- <span class="spacer"></span>
228
-
229
- <button @click=${this._zoomOut}>-</button>
230
- <span class="zoom-info">${this.zoom}%</span>
231
- <button @click=${this._zoomIn}>+</button>
232
- <button @click=${this._fitWidth}>Fit</button>
233
-
234
- <span class="spacer"></span>
235
-
236
- <button @click=${this._print}>Print</button>
669
+ <button class="hamburger-btn" @click=${this._toggleMenu} title="Menu">&#9776;</button>
670
+ <div class="toolbar-items">${allButtons}</div>
671
+ <div class="toolbar-overflow-menu ${this._menuOpen ? 'open' : ''}">${allButtons}</div>
672
+ </div>
673
+ `;
674
+ }
675
+ _renderSpinner() {
676
+ return html `
677
+ <div class="loading-overlay">
678
+ <div class="spinner"></div>
679
+ </div>
680
+ `;
681
+ }
682
+ _renderError() {
683
+ return html `
684
+ <div class="error-panel">
685
+ <h3>Render Error</h3>
686
+ <p>${this._error}</p>
237
687
  </div>
238
688
  `;
239
689
  }
690
+ _renderValidationErrors() {
691
+ return html `
692
+ <div class="error-panel">
693
+ <h3>Layout Validation (${this._validationErrors.length} issue${this._validationErrors.length > 1 ? 's' : ''})</h3>
694
+ <ul>
695
+ ${this._validationErrors.map(err => html `
696
+ <li>
697
+ ${err.path ? html `<span class="error-path">${err.path}:</span> ` : nothing}
698
+ ${err.message}
699
+ </li>
700
+ `)}
701
+ </ul>
702
+ </div>
703
+ `;
704
+ }
705
+ _renderThumbnails() {
706
+ if (!this._result)
707
+ return html ``;
708
+ return html `
709
+ <div class="thumbnails-sidebar">
710
+ ${this._result.pages.map((page, i) => {
711
+ const pageNum = i + 1;
712
+ const isActive = this.currentPage === pageNum;
713
+ return html `
714
+ <div>
715
+ <div class="thumbnail ${isActive ? 'active' : ''}"
716
+ @click=${() => this._goToPage(pageNum)}>
717
+ <div class="thumbnail-inner" style="transform:scale(0.15); width:${this._getPageWidth()}px; height:${this._getPageHeight()}px;">
718
+ ${unsafeHTML(page.html)}
719
+ </div>
720
+ </div>
721
+ <div class="thumbnail-label">${pageNum}</div>
722
+ </div>
723
+ `;
724
+ })}
725
+ </div>
726
+ `;
727
+ }
728
+ _getPageWidth() {
729
+ if (!this.layout)
730
+ return 595;
731
+ return this._toPx(this.layout.pageSize.width, this.layout.pageSize.unit);
732
+ }
733
+ _getPageHeight() {
734
+ if (!this.layout)
735
+ return 842;
736
+ return this._toPx(this.layout.pageSize.height, this.layout.pageSize.unit);
737
+ }
240
738
  _renderPages() {
241
739
  if (!this._result)
242
740
  return null;
243
741
  const scale = this.zoom / 100;
742
+ if (this.viewMode === 'all') {
743
+ return html `
744
+ ${this._result.pages.map((page, i) => {
745
+ const pageNum = i + 1;
746
+ return html `
747
+ <div class="page-wrapper" data-page=${pageNum}>
748
+ <div class="page-content" style="transform:scale(${scale});">
749
+ ${unsafeHTML(page.html)}
750
+ </div>
751
+ <div class="page-label">Page ${pageNum} of ${this._result.totalPages}</div>
752
+ </div>
753
+ `;
754
+ })}
755
+ `;
756
+ }
757
+ // Single page mode
244
758
  const page = this._result.pages[this.currentPage - 1];
245
759
  if (!page)
246
760
  return null;
247
761
  return html `
248
- <div class="page-wrapper">
762
+ <div class="page-wrapper" data-page=${this.currentPage}>
249
763
  <div class="page-content" style="transform:scale(${scale});">
250
- <div .innerHTML=${page.html}></div>
764
+ ${unsafeHTML(page.html)}
251
765
  </div>
766
+ <div class="page-label">Page ${this.currentPage} of ${this._result.totalPages}</div>
252
767
  </div>
253
768
  `;
254
769
  }
@@ -272,14 +787,44 @@ __decorate([
272
787
  property({ type: Boolean, attribute: 'show-toolbar' })
273
788
  ], ZenttoReportViewer.prototype, "showToolbar", void 0);
274
789
  __decorate([
275
- property({ type: String })
790
+ property({ type: String, reflect: true })
276
791
  ], ZenttoReportViewer.prototype, "theme", void 0);
792
+ __decorate([
793
+ property({ type: String, attribute: 'view-mode' })
794
+ ], ZenttoReportViewer.prototype, "viewMode", void 0);
795
+ __decorate([
796
+ property({ attribute: 'toolbar-items', converter: {
797
+ fromAttribute(value) {
798
+ if (!value)
799
+ return DEFAULT_TOOLBAR_ITEMS;
800
+ return value.split(',').map(s => s.trim());
801
+ },
802
+ toAttribute(value) {
803
+ return value.join(',');
804
+ },
805
+ } })
806
+ ], ZenttoReportViewer.prototype, "toolbarItems", void 0);
807
+ __decorate([
808
+ property({ type: Boolean, attribute: 'show-thumbnails' })
809
+ ], ZenttoReportViewer.prototype, "showThumbnails", void 0);
277
810
  __decorate([
278
811
  state()
279
812
  ], ZenttoReportViewer.prototype, "_result", void 0);
280
813
  __decorate([
281
814
  state()
282
815
  ], ZenttoReportViewer.prototype, "_error", void 0);
816
+ __decorate([
817
+ state()
818
+ ], ZenttoReportViewer.prototype, "_validationErrors", void 0);
819
+ __decorate([
820
+ state()
821
+ ], ZenttoReportViewer.prototype, "_loading", void 0);
822
+ __decorate([
823
+ state()
824
+ ], ZenttoReportViewer.prototype, "_menuOpen", void 0);
825
+ __decorate([
826
+ query('.pages-container')
827
+ ], ZenttoReportViewer.prototype, "_pagesContainer", void 0);
283
828
  ZenttoReportViewer = __decorate([
284
829
  customElement('zentto-report-viewer')
285
830
  ], ZenttoReportViewer);
@@ -1 +1 @@
1
- {"version":3,"file":"zentto-report-viewer.js","sourceRoot":"","sources":["../src/zentto-report-viewer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"zentto-report-viewer.js","sourceRoot":"","sources":["../src/zentto-report-viewer.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zentto/report-viewer",
3
- "version": "0.1.0",
3
+ "version": "0.2.0",
4
4
  "description": "Web component for rendering Zentto Report layouts with data. Read-only viewer with pagination, zoom, and print.",
5
5
  "type": "module",
6
6
  "main": "dist/zentto-report-viewer.js",