@dso-toolkit/core 59.0.1 → 60.0.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.
Files changed (116) hide show
  1. package/dist/cjs/dso-date-picker.cjs.entry.js +49 -568
  2. package/dist/cjs/dso-date-picker.cjs.entry.js.map +1 -1
  3. package/dist/cjs/dso-expandable.cjs.entry.js +1 -1
  4. package/dist/cjs/dso-expandable.cjs.entry.js.map +1 -1
  5. package/dist/cjs/dso-info_2.cjs.entry.js +15 -2
  6. package/dist/cjs/dso-info_2.cjs.entry.js.map +1 -1
  7. package/dist/cjs/dso-toggletip.cjs.entry.js +1 -1
  8. package/dist/cjs/dso-toggletip.cjs.entry.js.map +1 -1
  9. package/dist/cjs/dso-toolkit.cjs.js +1 -1
  10. package/dist/cjs/dso-tooltip.cjs.entry.js +1 -1
  11. package/dist/cjs/dso-tooltip.cjs.entry.js.map +1 -1
  12. package/dist/cjs/dso-viewer-grid.cjs.entry.js +177 -65
  13. package/dist/cjs/dso-viewer-grid.cjs.entry.js.map +1 -1
  14. package/dist/cjs/loader.cjs.js +1 -1
  15. package/dist/collection/components/date-picker/date-picker.css +4 -425
  16. package/dist/collection/components/date-picker/date-picker.interfaces.js.map +1 -1
  17. package/dist/collection/components/date-picker/date-picker.js +50 -510
  18. package/dist/collection/components/date-picker/date-picker.js.map +1 -1
  19. package/dist/collection/components/date-picker/date-utils.js +24 -100
  20. package/dist/collection/components/date-picker/date-utils.js.map +1 -1
  21. package/dist/collection/components/expandable/expandable.css +1 -0
  22. package/dist/collection/components/toggletip/toggletip.css +1 -0
  23. package/dist/collection/components/tooltip/tooltip.css +35 -26
  24. package/dist/collection/components/viewer-grid/components/document-panel.js +8 -0
  25. package/dist/collection/components/viewer-grid/components/document-panel.js.map +1 -0
  26. package/dist/collection/components/viewer-grid/components/index.js +1 -0
  27. package/dist/collection/components/viewer-grid/components/index.js.map +1 -1
  28. package/dist/collection/components/viewer-grid/components/main-panel.js +12 -8
  29. package/dist/collection/components/viewer-grid/components/main-panel.js.map +1 -1
  30. package/dist/collection/components/viewer-grid/viewer-grid.css +237 -48
  31. package/dist/collection/components/viewer-grid/viewer-grid.interfaces.js +13 -1
  32. package/dist/collection/components/viewer-grid/viewer-grid.interfaces.js.map +1 -1
  33. package/dist/collection/components/viewer-grid/viewer-grid.js +402 -59
  34. package/dist/collection/components/viewer-grid/viewer-grid.js.map +1 -1
  35. package/dist/components/dso-date-picker.js +55 -589
  36. package/dist/components/dso-date-picker.js.map +1 -1
  37. package/dist/components/dso-toggletip.js +1 -1
  38. package/dist/components/dso-toggletip.js.map +1 -1
  39. package/dist/components/dso-viewer-grid.js +186 -69
  40. package/dist/components/dso-viewer-grid.js.map +1 -1
  41. package/dist/components/expandable.js +1 -1
  42. package/dist/components/expandable.js.map +1 -1
  43. package/dist/components/selectable.js +14 -1
  44. package/dist/components/selectable.js.map +1 -1
  45. package/dist/components/tooltip.js +1 -1
  46. package/dist/components/tooltip.js.map +1 -1
  47. package/dist/dso-toolkit/dso-toolkit.esm.js +1 -1
  48. package/dist/dso-toolkit/dso-toolkit.esm.js.map +1 -1
  49. package/dist/dso-toolkit/p-0c14a2e5.entry.js +2 -0
  50. package/dist/dso-toolkit/p-0c14a2e5.entry.js.map +1 -0
  51. package/dist/dso-toolkit/{p-298453a9.entry.js → p-7d90b3b2.entry.js} +2 -2
  52. package/dist/dso-toolkit/{p-298453a9.entry.js.map → p-7d90b3b2.entry.js.map} +1 -1
  53. package/dist/dso-toolkit/p-8b24f933.entry.js +2 -0
  54. package/dist/dso-toolkit/p-8b24f933.entry.js.map +1 -0
  55. package/dist/dso-toolkit/p-dbea5bbd.entry.js +2 -0
  56. package/dist/dso-toolkit/p-dbea5bbd.entry.js.map +1 -0
  57. package/dist/dso-toolkit/p-ebda3d53.entry.js +2 -0
  58. package/dist/dso-toolkit/p-ebda3d53.entry.js.map +1 -0
  59. package/dist/dso-toolkit/p-f55b3647.entry.js +2 -0
  60. package/dist/dso-toolkit/{p-3631ce14.entry.js.map → p-f55b3647.entry.js.map} +1 -1
  61. package/dist/esm/dso-date-picker.entry.js +50 -569
  62. package/dist/esm/dso-date-picker.entry.js.map +1 -1
  63. package/dist/esm/dso-expandable.entry.js +1 -1
  64. package/dist/esm/dso-expandable.entry.js.map +1 -1
  65. package/dist/esm/dso-info_2.entry.js +14 -1
  66. package/dist/esm/dso-info_2.entry.js.map +1 -1
  67. package/dist/esm/dso-toggletip.entry.js +1 -1
  68. package/dist/esm/dso-toggletip.entry.js.map +1 -1
  69. package/dist/esm/dso-toolkit.js +1 -1
  70. package/dist/esm/dso-tooltip.entry.js +1 -1
  71. package/dist/esm/dso-tooltip.entry.js.map +1 -1
  72. package/dist/esm/dso-viewer-grid.entry.js +178 -66
  73. package/dist/esm/dso-viewer-grid.entry.js.map +1 -1
  74. package/dist/esm/loader.js +1 -1
  75. package/dist/types/components/date-picker/date-picker.d.ts +8 -99
  76. package/dist/types/components/date-picker/date-picker.interfaces.d.ts +9 -8
  77. package/dist/types/components/date-picker/date-utils.d.ts +6 -34
  78. package/dist/types/components/viewer-grid/components/document-panel.d.ts +10 -0
  79. package/dist/types/components/viewer-grid/components/index.d.ts +1 -0
  80. package/dist/types/components/viewer-grid/components/main-panel.d.ts +10 -4
  81. package/dist/types/components/viewer-grid/viewer-grid.d.ts +82 -17
  82. package/dist/types/components/viewer-grid/viewer-grid.interfaces.d.ts +27 -13
  83. package/dist/types/components.d.ts +87 -42
  84. package/package.json +2 -2
  85. package/dist/cjs/create-identifier-5900c27b.js +0 -19
  86. package/dist/cjs/create-identifier-5900c27b.js.map +0 -1
  87. package/dist/collection/components/date-picker/date-localization.js +0 -30
  88. package/dist/collection/components/date-picker/date-localization.js.map +0 -1
  89. package/dist/collection/components/date-picker/date-picker-day.js +0 -20
  90. package/dist/collection/components/date-picker/date-picker-day.js.map +0 -1
  91. package/dist/collection/components/date-picker/date-picker-month.js +0 -26
  92. package/dist/collection/components/date-picker/date-picker-month.js.map +0 -1
  93. package/dist/collection/components/date-picker/utils/month-range.js +0 -28
  94. package/dist/collection/components/date-picker/utils/month-range.js.map +0 -1
  95. package/dist/collection/components/date-picker/utils/range.js +0 -8
  96. package/dist/collection/components/date-picker/utils/range.js.map +0 -1
  97. package/dist/components/create-identifier.js +0 -17
  98. package/dist/components/create-identifier.js.map +0 -1
  99. package/dist/dso-toolkit/p-3631ce14.entry.js +0 -2
  100. package/dist/dso-toolkit/p-95b70498.entry.js +0 -2
  101. package/dist/dso-toolkit/p-95b70498.entry.js.map +0 -1
  102. package/dist/dso-toolkit/p-9dbe2931.entry.js +0 -2
  103. package/dist/dso-toolkit/p-9dbe2931.entry.js.map +0 -1
  104. package/dist/dso-toolkit/p-ad44136d.entry.js +0 -2
  105. package/dist/dso-toolkit/p-ad44136d.entry.js.map +0 -1
  106. package/dist/dso-toolkit/p-c19cfe3f.js +0 -2
  107. package/dist/dso-toolkit/p-c19cfe3f.js.map +0 -1
  108. package/dist/dso-toolkit/p-f08a5a06.entry.js +0 -2
  109. package/dist/dso-toolkit/p-f08a5a06.entry.js.map +0 -1
  110. package/dist/esm/create-identifier-479a4699.js +0 -17
  111. package/dist/esm/create-identifier-479a4699.js.map +0 -1
  112. package/dist/types/components/date-picker/date-localization.d.ts +0 -19
  113. package/dist/types/components/date-picker/date-picker-day.d.ts +0 -11
  114. package/dist/types/components/date-picker/date-picker-month.d.ts +0 -20
  115. package/dist/types/components/date-picker/utils/month-range.d.ts +0 -2
  116. package/dist/types/components/date-picker/utils/range.d.ts +0 -1
@@ -1,47 +1,102 @@
1
- import { h, Host } from "@stencil/core";
1
+ import { Fragment, h } from "@stencil/core";
2
2
  import clsx from "clsx";
3
- import { tabs, } from "./viewer-grid.interfaces";
4
- import { Filterpanel, MainPanel, Overlay } from "./components";
5
- const tabViewWidth = 768 + 40;
3
+ import debounce from "debounce";
4
+ import { DocumentPanel, Filterpanel, MainPanel, Overlay } from "./components";
5
+ import { viewerGridTabLabelMap, viewerGridVdkTabs, viewerGridVrkTabs, } from "./viewer-grid.interfaces";
6
+ const resizeObserver = new ResizeObserver(debounce(([entry]) => {
7
+ const shadowRoot = entry === null || entry === void 0 ? void 0 : entry.target.getRootNode();
8
+ if (shadowRoot instanceof ShadowRoot && isDsoViewerGridComponent(shadowRoot.host)) {
9
+ shadowRoot.host._checkMainPanelVisibility();
10
+ }
11
+ }, 50));
12
+ function isDsoViewerGridComponent(element) {
13
+ return element.tagName === "DSO-VIEWER-GRID";
14
+ }
15
+ const buttonWidth = 40;
16
+ const tabViewBreakpoint = 768 + buttonWidth;
17
+ const minMapElementWidth = 440;
18
+ /**
19
+ * @slot main
20
+ * @slot map
21
+ * @slot filterpanel
22
+ * @slot overlay
23
+ * @slot document-panel - VDK only
24
+ * @slot main-expanded - VDK only
25
+ */
6
26
  export class ViewerGrid {
7
27
  constructor() {
8
- this.mediaCondition = `(min-width: ${tabViewWidth}px)`;
9
- this.tabLabelMap = {
10
- main: "Hoofdpaneel",
11
- map: "Kaart",
28
+ this.mediaCondition = `(min-width: ${tabViewBreakpoint}px)`;
29
+ this.switchActiveTab = (tab) => {
30
+ this.dsoActiveTabSwitch.emit({
31
+ tab,
32
+ });
33
+ };
34
+ this.emitShrinkMain = () => {
35
+ this.dsoMainSizeChange.emit({
36
+ currentSize: this.mainSize,
37
+ nextSize: this.mainSize === "large" ? "medium" : "small",
38
+ });
39
+ };
40
+ this.emitExpandMain = () => {
41
+ this.dsoMainSizeChange.emit({
42
+ currentSize: this.mainSize,
43
+ nextSize: (this.mainSize = this.mainSize === "small" ? "medium" : "large"),
44
+ });
12
45
  };
13
- this.filterpanelSlot = null;
14
- this.overlaySlot = null;
15
- this.shrinkMain = () => {
16
- this.mainSize = this.mainSize === "large" ? "medium" : "small";
46
+ this.shrinkDocumentPanel = () => {
47
+ this.dsoDocumentPanelSizeChange.emit({
48
+ currentSize: this.documentPanelSize,
49
+ nextSize: this.documentPanelSize === "large" ? "medium" : "small",
50
+ });
17
51
  };
18
- this.expandMain = () => {
19
- this.mainSize = this.mainSize === "small" ? "medium" : "large";
52
+ this.expandDocumentPanel = () => {
53
+ this.dsoDocumentPanelSizeChange.emit({
54
+ currentSize: this.documentPanelSize,
55
+ nextSize: (this.documentPanelSize = this.mainSize === "small" ? "medium" : "large"),
56
+ });
57
+ };
58
+ this.expandContent = () => {
59
+ this.dsoMainPanelExpand.emit({
60
+ expand: !this.mainPanelExpanded,
61
+ });
62
+ };
63
+ this.toggleMainPanel = () => {
64
+ if (this.mapElement instanceof HTMLDivElement &&
65
+ this.mapElement.clientWidth <= minMapElementWidth + buttonWidth + buttonWidth) {
66
+ this.mainSize = "small";
67
+ }
68
+ this.dsoMainPanelToggle.emit({
69
+ hide: !this.mainPanelHidden,
70
+ });
20
71
  };
21
72
  this.changeListener = (largeScreen) => (this.tabView = !largeScreen.matches);
73
+ this.handleFilterpanelApply = (mouseEvent) => {
74
+ this.dsoFilterpanelApply.emit({ originalEvent: mouseEvent });
75
+ };
76
+ this.handleFilterpanelCancel = (mouseEvent) => {
77
+ this.dsoFilterpanelCancel.emit({ originalEvent: mouseEvent });
78
+ };
79
+ this.mode = "vrk";
22
80
  this.filterpanelOpen = false;
23
81
  this.overlayOpen = false;
24
- this.initialMainSize = undefined;
82
+ this.documentPanelOpen = false;
25
83
  this.mainSize = "large";
26
- this.tabView = window.innerWidth < tabViewWidth;
27
- this.activeTab = "main";
84
+ this.activeTab = undefined;
85
+ this.documentPanelSize = "large";
86
+ this.mainPanelExpanded = false;
87
+ this.mainPanelHidden = false;
88
+ this.tabView = window.innerWidth < tabViewBreakpoint;
28
89
  }
29
- mainSizeWatcher(currentSize, previousSize) {
30
- var _a;
31
- this.dsoMainSizeChange.emit({
32
- stage: "start",
33
- previousSize,
34
- currentSize,
35
- });
36
- (_a = this.mainPanel) === null || _a === void 0 ? void 0 : _a.addEventListener("transitionend", (e) => {
37
- if (e.propertyName === "flex-basis") {
38
- this.dsoMainSizeChange.emit({
39
- stage: "end",
40
- previousSize,
41
- currentSize,
42
- });
43
- }
44
- }, { once: true });
90
+ get filterpanelSlot() {
91
+ return this.host.querySelector("[slot='filterpanel']");
92
+ }
93
+ get overlaySlot() {
94
+ return this.host.querySelector("[slot='overlay']");
95
+ }
96
+ documentPanelOpenWatcher(open) {
97
+ if (open) {
98
+ this._checkMainPanelVisibility();
99
+ }
45
100
  }
46
101
  filterpanelOpenWatcher(open) {
47
102
  var _a, _b;
@@ -67,10 +122,23 @@ export class ViewerGrid {
67
122
  (_b = this.overlay) === null || _b === void 0 ? void 0 : _b.close();
68
123
  }
69
124
  }
125
+ /**
126
+ * @internal
127
+ */
128
+ async _checkMainPanelVisibility() {
129
+ if (this.mode === "vdk" &&
130
+ this.documentPanelOpen &&
131
+ !this.mainPanelHidden &&
132
+ this.mapElement instanceof HTMLDivElement &&
133
+ ((this.mapElement.clientWidth <= minMapElementWidth + buttonWidth + buttonWidth && !this.mainPanelExpanded) ||
134
+ (this.mapElement.clientWidth <= buttonWidth + buttonWidth && this.mainPanelExpanded))) {
135
+ this.dsoMainPanelToggle.emit({
136
+ hide: true,
137
+ });
138
+ }
139
+ }
70
140
  connectedCallback() {
71
141
  window.matchMedia(this.mediaCondition).addEventListener("change", this.changeListener);
72
- this.filterpanelSlot = this.host.querySelector("div[slot='filterpanel']");
73
- this.overlaySlot = this.host.querySelector("div[slot='overlay']");
74
142
  }
75
143
  componentDidLoad() {
76
144
  var _a, _b;
@@ -80,23 +148,19 @@ export class ViewerGrid {
80
148
  if (this.overlayOpen && this.overlaySlot) {
81
149
  (_b = this.overlay) === null || _b === void 0 ? void 0 : _b.showModal();
82
150
  }
83
- }
84
- componentWillLoad() {
85
- if (this.initialMainSize) {
86
- this.mainSize = this.initialMainSize;
151
+ if (this.mode === "vdk" && this.mapElement instanceof HTMLDivElement) {
152
+ resizeObserver.observe(this.mapElement);
87
153
  }
88
154
  }
89
155
  disconnectedCallback() {
90
156
  window.matchMedia(this.mediaCondition).removeEventListener("change", this.changeListener);
91
- }
92
- handleFilterpanelApply(mouseEvent) {
93
- this.dsoFilterpanelApply.emit({ originalEvent: mouseEvent });
94
- }
95
- handleFilterpanelCancel(mouseEvent) {
96
- this.dsoFilterpanelCancel.emit({ originalEvent: mouseEvent });
157
+ if (this.mode === "vdk" && this.mapElement) {
158
+ resizeObserver.unobserve(this.mapElement);
159
+ }
97
160
  }
98
161
  render() {
99
- return (h(Host, Object.assign({}, { [this.mainSize]: true }), this.tabView && (h("nav", { class: "dso-navbar" }, h("ul", { class: "dso-nav dso-nav-sub" }, tabs.map((tab) => (h("li", { key: tab, class: clsx({ "dso-active": this.activeTab === tab }) }, h("button", { type: "button", class: "dso-tertiary", onClick: () => (this.activeTab = tab) }, this.tabLabelMap[tab]))))))), (!this.tabView || (this.tabView && this.activeTab === "main")) && (h(MainPanel, { ref: (element) => (this.mainPanel = element), tabView: this.tabView, mainSize: this.mainSize, shrinkMain: this.shrinkMain, expandMain: this.expandMain })), h(Filterpanel, { ref: (element) => (this.filterpanel = element), onApply: (e) => this.handleFilterpanelApply(e), onCancel: (e) => this.handleFilterpanelCancel(e) }), (!this.tabView || (this.tabView && this.activeTab === "map")) && (h("div", { class: "map" }, h("slot", { name: "map" }))), h(Overlay, { ref: (element) => (this.overlay = element), dsoCloseOverlay: (e) => this.dsoCloseOverlay.emit({ originalEvent: e }) })));
162
+ const tabLabels = this.mode === "vdk" ? viewerGridVdkTabs : viewerGridVrkTabs;
163
+ return (h(Fragment, null, this.tabView && (h("nav", { class: "dso-navbar" }, h("ul", { class: "dso-nav dso-nav-sub" }, tabLabels.map((tab) => (h("li", { key: tab, class: clsx({ "dso-active": this.activeTab === tab }) }, h("button", { type: "button", class: "dso-tertiary", onClick: () => this.switchActiveTab(tab) }, viewerGridTabLabelMap[tab]))))))), (!this.tabView || (this.tabView && (this.activeTab === "main" || this.activeTab === "search"))) && (h(MainPanel, { mode: this.mode, tabView: this.tabView, mainSize: this.mainSize, documentPanelOpen: this.documentPanelOpen, mainPanelExpanded: this.mainPanelExpanded, mainPanelHidden: this.mainPanelHidden, shrinkMain: this.emitShrinkMain, expandMain: this.emitExpandMain, expandContent: this.expandContent, toggleMainPanel: this.toggleMainPanel, dsoMainSizeChangeAnimationEnd: this.dsoMainSizeChangeAnimationEnd })), h(Filterpanel, { ref: (element) => (this.filterpanel = element), onApply: this.handleFilterpanelApply, onCancel: this.handleFilterpanelCancel }), (!this.tabView || (this.tabView && this.activeTab === "map")) && (h("div", { class: "map", ref: (element) => (this.mapElement = element) }, h("slot", { name: "map" }))), ((!this.tabView && this.documentPanelOpen) || (this.tabView && this.activeTab === "document")) && (h(DocumentPanel, { tabView: this.tabView, panelSize: this.documentPanelSize, shrinkDocumentPanel: this.shrinkDocumentPanel, expandDocumentPanel: this.expandDocumentPanel, dsoDocumentPanelSizeChangeAnimationEnd: this.dsoDocumentPanelSizeChangeAnimationEnd })), h(Overlay, { ref: (element) => (this.overlay = element), dsoCloseOverlay: (e) => this.dsoCloseOverlay.emit({ originalEvent: e }) })));
100
164
  }
101
165
  static get is() { return "dso-viewer-grid"; }
102
166
  static get encapsulation() { return "shadow"; }
@@ -112,6 +176,30 @@ export class ViewerGrid {
112
176
  }
113
177
  static get properties() {
114
178
  return {
179
+ "mode": {
180
+ "type": "string",
181
+ "mutable": false,
182
+ "complexType": {
183
+ "original": "ViewerGridMode",
184
+ "resolved": "\"vdk\" | \"vrk\"",
185
+ "references": {
186
+ "ViewerGridMode": {
187
+ "location": "import",
188
+ "path": "./viewer-grid.interfaces",
189
+ "id": "src/components/viewer-grid/viewer-grid.interfaces.ts::ViewerGridMode"
190
+ }
191
+ }
192
+ },
193
+ "required": false,
194
+ "optional": false,
195
+ "docs": {
196
+ "tags": [],
197
+ "text": "VRK or VDK implementation."
198
+ },
199
+ "attribute": "mode",
200
+ "reflect": false,
201
+ "defaultValue": "\"vrk\""
202
+ },
115
203
  "filterpanelOpen": {
116
204
  "type": "boolean",
117
205
  "mutable": false,
@@ -148,17 +236,64 @@ export class ViewerGrid {
148
236
  "reflect": true,
149
237
  "defaultValue": "false"
150
238
  },
151
- "initialMainSize": {
239
+ "documentPanelOpen": {
240
+ "type": "boolean",
241
+ "mutable": false,
242
+ "complexType": {
243
+ "original": "boolean",
244
+ "resolved": "boolean",
245
+ "references": {}
246
+ },
247
+ "required": false,
248
+ "optional": false,
249
+ "docs": {
250
+ "tags": [],
251
+ "text": "**VDK only.** Set to true when document panel should show."
252
+ },
253
+ "attribute": "document-panel-open",
254
+ "reflect": true,
255
+ "defaultValue": "false"
256
+ },
257
+ "mainSize": {
152
258
  "type": "string",
153
259
  "mutable": false,
154
260
  "complexType": {
155
- "original": "MainSize",
156
- "resolved": "\"large\" | \"medium\" | \"small\" | undefined",
261
+ "original": "ViewerGridPanelSize",
262
+ "resolved": "\"large\" | \"medium\" | \"small\"",
157
263
  "references": {
158
- "MainSize": {
264
+ "ViewerGridPanelSize": {
159
265
  "location": "import",
160
266
  "path": "./viewer-grid.interfaces",
161
- "id": "src/components/viewer-grid/viewer-grid.interfaces.ts::MainSize"
267
+ "id": "src/components/viewer-grid/viewer-grid.interfaces.ts::ViewerGridPanelSize"
268
+ }
269
+ }
270
+ },
271
+ "required": false,
272
+ "optional": false,
273
+ "docs": {
274
+ "tags": [],
275
+ "text": "Size of the panel when component loads.\r\n\r\nDefault size is `large`."
276
+ },
277
+ "attribute": "main-size",
278
+ "reflect": false,
279
+ "defaultValue": "\"large\""
280
+ },
281
+ "activeTab": {
282
+ "type": "string",
283
+ "mutable": false,
284
+ "complexType": {
285
+ "original": "ViewerGridVdkTab | ViewerGridVrkTab",
286
+ "resolved": "\"document\" | \"main\" | \"map\" | \"search\" | undefined",
287
+ "references": {
288
+ "ViewerGridVdkTab": {
289
+ "location": "import",
290
+ "path": "./viewer-grid.interfaces",
291
+ "id": "src/components/viewer-grid/viewer-grid.interfaces.ts::ViewerGridVdkTab"
292
+ },
293
+ "ViewerGridVrkTab": {
294
+ "location": "import",
295
+ "path": "./viewer-grid.interfaces",
296
+ "id": "src/components/viewer-grid/viewer-grid.interfaces.ts::ViewerGridVrkTab"
162
297
  }
163
298
  }
164
299
  },
@@ -166,18 +301,76 @@ export class ViewerGrid {
166
301
  "optional": true,
167
302
  "docs": {
168
303
  "tags": [],
169
- "text": "Size of the main content panel when component loads. Changing this attribute afterwards has no effect.\r\n\r\nDefault size is `large`."
304
+ "text": "Set active tab in tab view."
170
305
  },
171
- "attribute": "initial-main-size",
306
+ "attribute": "active-tab",
172
307
  "reflect": false
308
+ },
309
+ "documentPanelSize": {
310
+ "type": "string",
311
+ "mutable": false,
312
+ "complexType": {
313
+ "original": "ViewerGridPanelSize",
314
+ "resolved": "\"large\" | \"medium\" | \"small\"",
315
+ "references": {
316
+ "ViewerGridPanelSize": {
317
+ "location": "import",
318
+ "path": "./viewer-grid.interfaces",
319
+ "id": "src/components/viewer-grid/viewer-grid.interfaces.ts::ViewerGridPanelSize"
320
+ }
321
+ }
322
+ },
323
+ "required": false,
324
+ "optional": false,
325
+ "docs": {
326
+ "tags": [],
327
+ "text": "**VDK only.** Size of the panel when component loads.\r\n\r\nDefault size is `large`."
328
+ },
329
+ "attribute": "document-panel-size",
330
+ "reflect": false,
331
+ "defaultValue": "\"large\""
332
+ },
333
+ "mainPanelExpanded": {
334
+ "type": "boolean",
335
+ "mutable": false,
336
+ "complexType": {
337
+ "original": "boolean",
338
+ "resolved": "boolean",
339
+ "references": {}
340
+ },
341
+ "required": false,
342
+ "optional": false,
343
+ "docs": {
344
+ "tags": [],
345
+ "text": "**VDK only.** Set to show main panel expanded."
346
+ },
347
+ "attribute": "main-panel-expanded",
348
+ "reflect": false,
349
+ "defaultValue": "false"
350
+ },
351
+ "mainPanelHidden": {
352
+ "type": "boolean",
353
+ "mutable": false,
354
+ "complexType": {
355
+ "original": "boolean",
356
+ "resolved": "boolean",
357
+ "references": {}
358
+ },
359
+ "required": false,
360
+ "optional": false,
361
+ "docs": {
362
+ "tags": [],
363
+ "text": "**VDK only.** Set to hide the main panel."
364
+ },
365
+ "attribute": "main-panel-hidden",
366
+ "reflect": false,
367
+ "defaultValue": "false"
173
368
  }
174
369
  };
175
370
  }
176
371
  static get states() {
177
372
  return {
178
- "mainSize": {},
179
- "tabView": {},
180
- "activeTab": {}
373
+ "tabView": {}
181
374
  };
182
375
  }
183
376
  static get events() {
@@ -244,6 +437,27 @@ export class ViewerGrid {
244
437
  }
245
438
  }
246
439
  }
440
+ }, {
441
+ "method": "dsoActiveTabSwitch",
442
+ "name": "dsoActiveTabSwitch",
443
+ "bubbles": true,
444
+ "cancelable": true,
445
+ "composed": true,
446
+ "docs": {
447
+ "tags": [],
448
+ "text": "Emitted when user applies filterpanel options."
449
+ },
450
+ "complexType": {
451
+ "original": "ViewerGridActiveTabSwitchEvent",
452
+ "resolved": "ViewerGridActiveTabSwitchEvent",
453
+ "references": {
454
+ "ViewerGridActiveTabSwitchEvent": {
455
+ "location": "import",
456
+ "path": "./viewer-grid.interfaces",
457
+ "id": "src/components/viewer-grid/viewer-grid.interfaces.ts::ViewerGridActiveTabSwitchEvent"
458
+ }
459
+ }
460
+ }
247
461
  }, {
248
462
  "method": "dsoMainSizeChange",
249
463
  "name": "dsoMainSizeChange",
@@ -252,7 +466,49 @@ export class ViewerGrid {
252
466
  "composed": true,
253
467
  "docs": {
254
468
  "tags": [],
255
- "text": "Emitted before and after main size animation. Inspect `detail` property for more information."
469
+ "text": "Emitted on interaction with sizing buttons."
470
+ },
471
+ "complexType": {
472
+ "original": "ViewerGridChangeSizeEvent",
473
+ "resolved": "ViewerGridChangeSizeEvent",
474
+ "references": {
475
+ "ViewerGridChangeSizeEvent": {
476
+ "location": "import",
477
+ "path": "./viewer-grid.interfaces",
478
+ "id": "src/components/viewer-grid/viewer-grid.interfaces.ts::ViewerGridChangeSizeEvent"
479
+ }
480
+ }
481
+ }
482
+ }, {
483
+ "method": "dsoMainSizeChangeAnimationEnd",
484
+ "name": "dsoMainSizeChangeAnimationEnd",
485
+ "bubbles": true,
486
+ "cancelable": true,
487
+ "composed": true,
488
+ "docs": {
489
+ "tags": [],
490
+ "text": "Emitted after main size animation."
491
+ },
492
+ "complexType": {
493
+ "original": "ViewerGridChangeSizeAnimationEndEvent",
494
+ "resolved": "ViewerGridChangeSizeAnimationEndEvent",
495
+ "references": {
496
+ "ViewerGridChangeSizeAnimationEndEvent": {
497
+ "location": "import",
498
+ "path": "./viewer-grid.interfaces",
499
+ "id": "src/components/viewer-grid/viewer-grid.interfaces.ts::ViewerGridChangeSizeAnimationEndEvent"
500
+ }
501
+ }
502
+ }
503
+ }, {
504
+ "method": "dsoDocumentPanelSizeChange",
505
+ "name": "dsoDocumentPanelSizeChange",
506
+ "bubbles": true,
507
+ "cancelable": true,
508
+ "composed": true,
509
+ "docs": {
510
+ "tags": [],
511
+ "text": "**VDK only.** Emitted on interaction with sizing buttons."
256
512
  },
257
513
  "complexType": {
258
514
  "original": "ViewerGridChangeSizeEvent",
@@ -265,13 +521,100 @@ export class ViewerGrid {
265
521
  }
266
522
  }
267
523
  }
524
+ }, {
525
+ "method": "dsoDocumentPanelSizeChangeAnimationEnd",
526
+ "name": "dsoDocumentPanelSizeChangeAnimationEnd",
527
+ "bubbles": true,
528
+ "cancelable": true,
529
+ "composed": true,
530
+ "docs": {
531
+ "tags": [],
532
+ "text": "**VDK only.** Emitted after main size animation."
533
+ },
534
+ "complexType": {
535
+ "original": "ViewerGridChangeSizeAnimationEndEvent",
536
+ "resolved": "ViewerGridChangeSizeAnimationEndEvent",
537
+ "references": {
538
+ "ViewerGridChangeSizeAnimationEndEvent": {
539
+ "location": "import",
540
+ "path": "./viewer-grid.interfaces",
541
+ "id": "src/components/viewer-grid/viewer-grid.interfaces.ts::ViewerGridChangeSizeAnimationEndEvent"
542
+ }
543
+ }
544
+ }
545
+ }, {
546
+ "method": "dsoMainPanelExpand",
547
+ "name": "dsoMainPanelExpand",
548
+ "bubbles": true,
549
+ "cancelable": true,
550
+ "composed": true,
551
+ "docs": {
552
+ "tags": [],
553
+ "text": "**VDK only.** Emitted when the user wants to expand the main panel."
554
+ },
555
+ "complexType": {
556
+ "original": "ViewerGridMainExpandEvent",
557
+ "resolved": "ViewerGridMainExpandEvent",
558
+ "references": {
559
+ "ViewerGridMainExpandEvent": {
560
+ "location": "import",
561
+ "path": "./viewer-grid.interfaces",
562
+ "id": "src/components/viewer-grid/viewer-grid.interfaces.ts::ViewerGridMainExpandEvent"
563
+ }
564
+ }
565
+ }
566
+ }, {
567
+ "method": "dsoMainPanelToggle",
568
+ "name": "dsoMainPanelToggle",
569
+ "bubbles": true,
570
+ "cancelable": true,
571
+ "composed": true,
572
+ "docs": {
573
+ "tags": [],
574
+ "text": "**VDK only.** Emitted when the user toggles the visibility of the main panel.\r\n\r\nAlso emitted by scripting when the panels do not fit anymore."
575
+ },
576
+ "complexType": {
577
+ "original": "ViewerGridMainToggleEvent",
578
+ "resolved": "ViewerGridMainToggleEvent",
579
+ "references": {
580
+ "ViewerGridMainToggleEvent": {
581
+ "location": "import",
582
+ "path": "./viewer-grid.interfaces",
583
+ "id": "src/components/viewer-grid/viewer-grid.interfaces.ts::ViewerGridMainToggleEvent"
584
+ }
585
+ }
586
+ }
268
587
  }];
269
588
  }
589
+ static get methods() {
590
+ return {
591
+ "_checkMainPanelVisibility": {
592
+ "complexType": {
593
+ "signature": "() => Promise<void>",
594
+ "parameters": [],
595
+ "references": {
596
+ "Promise": {
597
+ "location": "global",
598
+ "id": "global::Promise"
599
+ }
600
+ },
601
+ "return": "Promise<void>"
602
+ },
603
+ "docs": {
604
+ "text": "",
605
+ "tags": [{
606
+ "name": "internal",
607
+ "text": undefined
608
+ }]
609
+ }
610
+ }
611
+ };
612
+ }
270
613
  static get elementRef() { return "host"; }
271
614
  static get watchers() {
272
615
  return [{
273
- "propName": "mainSize",
274
- "methodName": "mainSizeWatcher"
616
+ "propName": "documentPanelOpen",
617
+ "methodName": "documentPanelOpenWatcher"
275
618
  }, {
276
619
  "propName": "filterpanelOpen",
277
620
  "methodName": "filterpanelOpenWatcher"
@@ -1 +1 @@
1
- {"version":3,"file":"viewer-grid.js","sourceRoot":"","sources":["../../../src/components/viewer-grid/viewer-grid.tsx"],"names":[],"mappings":"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","sourcesContent":["import { h, Component, Prop, State, Host, Element, Event, EventEmitter, Watch } from \"@stencil/core\";\r\nimport clsx from \"clsx\";\r\n\r\nimport {\r\n MainSize,\r\n TabLabelMap,\r\n Tabs,\r\n ViewerGridChangeSizeEvent,\r\n ViewerGridCloseOverlayEvent,\r\n ViewerGridFilterpanelApplyEvent,\r\n ViewerGridFilterpanelCancelEvent,\r\n tabs,\r\n} from \"./viewer-grid.interfaces\";\r\nimport { Filterpanel, MainPanel, Overlay } from \"./components\";\r\n\r\nconst tabViewWidth = 768 + 40;\r\n\r\n@Component({\r\n tag: \"dso-viewer-grid\",\r\n styleUrl: \"viewer-grid.scss\",\r\n shadow: true,\r\n})\r\nexport class ViewerGrid {\r\n private mediaCondition = `(min-width: ${tabViewWidth}px)`;\r\n\r\n private tabLabelMap: TabLabelMap = {\r\n main: \"Hoofdpaneel\",\r\n map: \"Kaart\",\r\n };\r\n\r\n private mainPanel?: HTMLDivElement;\r\n\r\n /**\r\n * Set to true when filterpanel should show.\r\n */\r\n @Prop({ reflect: true })\r\n filterpanelOpen = false;\r\n\r\n /**\r\n * Set to true when overlay should show.\r\n */\r\n @Prop({ reflect: true })\r\n overlayOpen = false;\r\n\r\n /**\r\n * Size of the main content panel when component loads. Changing this attribute afterwards has no effect.\r\n *\r\n * Default size is `large`.\r\n */\r\n @Prop()\r\n initialMainSize?: MainSize;\r\n\r\n @State()\r\n mainSize: MainSize = \"large\";\r\n\r\n @State()\r\n tabView = window.innerWidth < tabViewWidth;\r\n\r\n @State()\r\n activeTab: Tabs = \"main\";\r\n\r\n /**\r\n * Emitted when user wants to close the overlay.\r\n */\r\n @Event()\r\n dsoCloseOverlay!: EventEmitter<ViewerGridCloseOverlayEvent>;\r\n\r\n /**\r\n * Emitted when user cancels filterpanel.\r\n */\r\n @Event()\r\n dsoFilterpanelCancel!: EventEmitter<ViewerGridFilterpanelCancelEvent>;\r\n\r\n /**\r\n * Emitted when user applies filterpanel options.\r\n */\r\n @Event()\r\n dsoFilterpanelApply!: EventEmitter<ViewerGridFilterpanelApplyEvent>;\r\n\r\n /**\r\n * Emitted before and after main size animation. Inspect `detail` property for more information.\r\n */\r\n @Event()\r\n dsoMainSizeChange!: EventEmitter<ViewerGridChangeSizeEvent>;\r\n\r\n @Element()\r\n host!: HTMLDsoViewerGridElement;\r\n\r\n private filterpanel: HTMLDialogElement | undefined;\r\n\r\n private filterpanelSlot: HTMLElement | null = null;\r\n\r\n private overlay: HTMLDialogElement | undefined;\r\n\r\n private overlaySlot: HTMLDivElement | null = null;\r\n\r\n @Watch(\"mainSize\")\r\n mainSizeWatcher(currentSize: MainSize, previousSize: MainSize) {\r\n this.dsoMainSizeChange.emit({\r\n stage: \"start\",\r\n previousSize,\r\n currentSize,\r\n });\r\n\r\n this.mainPanel?.addEventListener(\r\n \"transitionend\",\r\n (e) => {\r\n if (e.propertyName === \"flex-basis\") {\r\n this.dsoMainSizeChange.emit({\r\n stage: \"end\",\r\n previousSize,\r\n currentSize,\r\n });\r\n }\r\n },\r\n { once: true }\r\n );\r\n }\r\n\r\n @Watch(\"filterpanelOpen\")\r\n filterpanelOpenWatcher(open: boolean) {\r\n if (!this.filterpanelSlot) {\r\n console.warn(\"slot 'filterpanel' has not been set\");\r\n }\r\n\r\n if (open) {\r\n this.filterpanel?.showModal();\r\n } else {\r\n this.filterpanel?.close();\r\n }\r\n }\r\n\r\n @Watch(\"overlayOpen\")\r\n overlayOpenWatcher(open: boolean) {\r\n if (!this.overlaySlot) {\r\n console.warn(\"slot 'overlay' has not been set\");\r\n }\r\n\r\n if (open) {\r\n this.overlay?.showModal();\r\n } else {\r\n this.overlay?.close();\r\n }\r\n }\r\n\r\n private shrinkMain = () => {\r\n this.mainSize = this.mainSize === \"large\" ? \"medium\" : \"small\";\r\n };\r\n\r\n private expandMain = () => {\r\n this.mainSize = this.mainSize === \"small\" ? \"medium\" : \"large\";\r\n };\r\n\r\n private changeListener = (largeScreen: MediaQueryListEvent) => (this.tabView = !largeScreen.matches);\r\n\r\n connectedCallback() {\r\n window.matchMedia(this.mediaCondition).addEventListener(\"change\", this.changeListener);\r\n\r\n this.filterpanelSlot = this.host.querySelector<HTMLDivElement>(\"div[slot='filterpanel']\");\r\n\r\n this.overlaySlot = this.host.querySelector<HTMLDivElement>(\"div[slot='overlay']\");\r\n }\r\n\r\n componentDidLoad() {\r\n if (this.filterpanelOpen && this.filterpanelSlot) {\r\n this.filterpanel?.showModal();\r\n }\r\n\r\n if (this.overlayOpen && this.overlaySlot) {\r\n this.overlay?.showModal();\r\n }\r\n }\r\n\r\n componentWillLoad() {\r\n if (this.initialMainSize) {\r\n this.mainSize = this.initialMainSize;\r\n }\r\n }\r\n\r\n disconnectedCallback() {\r\n window.matchMedia(this.mediaCondition).removeEventListener(\"change\", this.changeListener);\r\n }\r\n\r\n private handleFilterpanelApply(mouseEvent: MouseEvent | Event) {\r\n this.dsoFilterpanelApply.emit({ originalEvent: mouseEvent });\r\n }\r\n\r\n private handleFilterpanelCancel(mouseEvent: MouseEvent | Event) {\r\n this.dsoFilterpanelCancel.emit({ originalEvent: mouseEvent });\r\n }\r\n\r\n render() {\r\n return (\r\n <Host {...{ [this.mainSize]: true }}>\r\n {this.tabView && (\r\n <nav class=\"dso-navbar\">\r\n <ul class=\"dso-nav dso-nav-sub\">\r\n {tabs.map((tab) => (\r\n <li key={tab} class={clsx({ \"dso-active\": this.activeTab === tab })}>\r\n <button type=\"button\" class=\"dso-tertiary\" onClick={() => (this.activeTab = tab)}>\r\n {this.tabLabelMap[tab]}\r\n </button>\r\n </li>\r\n ))}\r\n </ul>\r\n </nav>\r\n )}\r\n {(!this.tabView || (this.tabView && this.activeTab === \"main\")) && (\r\n <MainPanel\r\n ref={(element: HTMLDivElement | undefined) => (this.mainPanel = element)}\r\n tabView={this.tabView}\r\n mainSize={this.mainSize}\r\n shrinkMain={this.shrinkMain}\r\n expandMain={this.expandMain}\r\n ></MainPanel>\r\n )}\r\n <Filterpanel\r\n ref={(element) => (this.filterpanel = element)}\r\n onApply={(e) => this.handleFilterpanelApply(e)}\r\n onCancel={(e) => this.handleFilterpanelCancel(e)}\r\n ></Filterpanel>\r\n {(!this.tabView || (this.tabView && this.activeTab === \"map\")) && (\r\n <div class=\"map\">\r\n <slot name=\"map\" />\r\n </div>\r\n )}\r\n <Overlay\r\n ref={(element) => (this.overlay = element)}\r\n dsoCloseOverlay={(e) => this.dsoCloseOverlay.emit({ originalEvent: e })}\r\n ></Overlay>\r\n </Host>\r\n );\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"viewer-grid.js","sourceRoot":"","sources":["../../../src/components/viewer-grid/viewer-grid.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Element, Event, EventEmitter, Fragment, Method, Prop, State, Watch, h } from \"@stencil/core\";\r\nimport clsx from \"clsx\";\r\nimport debounce from \"debounce\";\r\n\r\nimport { DocumentPanel, Filterpanel, MainPanel, Overlay } from \"./components\";\r\nimport {\r\n ViewerGridPanelSize,\r\n ViewerGridVdkTab,\r\n ViewerGridVrkTab,\r\n ViewerGridChangeSizeAnimationEndEvent,\r\n ViewerGridChangeSizeEvent,\r\n ViewerGridCloseOverlayEvent,\r\n ViewerGridFilterpanelApplyEvent,\r\n ViewerGridFilterpanelCancelEvent,\r\n ViewerGridMainExpandEvent,\r\n ViewerGridMainToggleEvent,\r\n ViewerGridActiveTabSwitchEvent,\r\n ViewerGridMode,\r\n viewerGridTabLabelMap,\r\n viewerGridVdkTabs,\r\n viewerGridVrkTabs,\r\n ViewerGridTab,\r\n} from \"./viewer-grid.interfaces\";\r\n\r\nconst resizeObserver = new ResizeObserver(\r\n debounce(([entry]) => {\r\n const shadowRoot = entry?.target.getRootNode();\r\n if (shadowRoot instanceof ShadowRoot && isDsoViewerGridComponent(shadowRoot.host)) {\r\n shadowRoot.host._checkMainPanelVisibility();\r\n }\r\n }, 50)\r\n);\r\n\r\nfunction isDsoViewerGridComponent(element: Element): element is HTMLDsoViewerGridElement {\r\n return element.tagName === \"DSO-VIEWER-GRID\";\r\n}\r\n\r\nconst buttonWidth = 40;\r\n\r\nconst tabViewBreakpoint = 768 + buttonWidth;\r\n\r\nconst minMapElementWidth = 440;\r\n\r\n/**\r\n * @slot main\r\n * @slot map\r\n * @slot filterpanel\r\n * @slot overlay\r\n * @slot document-panel - VDK only\r\n * @slot main-expanded - VDK only\r\n */\r\n@Component({\r\n tag: \"dso-viewer-grid\",\r\n styleUrl: \"viewer-grid.scss\",\r\n shadow: true,\r\n})\r\nexport class ViewerGrid {\r\n private mediaCondition = `(min-width: ${tabViewBreakpoint}px)`;\r\n\r\n private mapElement?: HTMLDivElement;\r\n\r\n /**\r\n * VRK or VDK implementation.\r\n */\r\n @Prop()\r\n mode: ViewerGridMode = \"vrk\";\r\n\r\n /**\r\n * Set to true when filterpanel should show.\r\n */\r\n @Prop({ reflect: true })\r\n filterpanelOpen = false;\r\n\r\n /**\r\n * Set to true when overlay should show.\r\n */\r\n @Prop({ reflect: true })\r\n overlayOpen = false;\r\n\r\n /**\r\n * **VDK only.** Set to true when document panel should show.\r\n */\r\n @Prop({ reflect: true })\r\n documentPanelOpen = false;\r\n\r\n /**\r\n * Size of the panel when component loads.\r\n *\r\n * Default size is `large`.\r\n */\r\n @Prop()\r\n mainSize: ViewerGridPanelSize = \"large\";\r\n\r\n /**\r\n * Set active tab in tab view.\r\n */\r\n @Prop()\r\n activeTab?: ViewerGridVdkTab | ViewerGridVrkTab;\r\n\r\n /**\r\n * **VDK only.** Size of the panel when component loads.\r\n *\r\n * Default size is `large`.\r\n */\r\n @Prop()\r\n documentPanelSize: ViewerGridPanelSize = \"large\";\r\n\r\n /**\r\n * **VDK only.** Set to show main panel expanded.\r\n */\r\n @Prop()\r\n mainPanelExpanded = false;\r\n\r\n /**\r\n * **VDK only.** Set to hide the main panel.\r\n */\r\n @Prop()\r\n mainPanelHidden = false;\r\n\r\n /**\r\n * Emitted when user wants to close the overlay.\r\n */\r\n @Event()\r\n dsoCloseOverlay!: EventEmitter<ViewerGridCloseOverlayEvent>;\r\n\r\n /**\r\n * Emitted when user cancels filterpanel.\r\n */\r\n @Event()\r\n dsoFilterpanelCancel!: EventEmitter<ViewerGridFilterpanelCancelEvent>;\r\n\r\n /**\r\n * Emitted when user applies filterpanel options.\r\n */\r\n @Event()\r\n dsoFilterpanelApply!: EventEmitter<ViewerGridFilterpanelApplyEvent>;\r\n\r\n /**\r\n * Emitted when user applies filterpanel options.\r\n */\r\n @Event()\r\n dsoActiveTabSwitch!: EventEmitter<ViewerGridActiveTabSwitchEvent>;\r\n\r\n /**\r\n * Emitted on interaction with sizing buttons.\r\n */\r\n @Event()\r\n dsoMainSizeChange!: EventEmitter<ViewerGridChangeSizeEvent>;\r\n\r\n /**\r\n * Emitted after main size animation.\r\n */\r\n @Event()\r\n dsoMainSizeChangeAnimationEnd!: EventEmitter<ViewerGridChangeSizeAnimationEndEvent>;\r\n\r\n /**\r\n * **VDK only.** Emitted on interaction with sizing buttons.\r\n */\r\n @Event()\r\n dsoDocumentPanelSizeChange!: EventEmitter<ViewerGridChangeSizeEvent>;\r\n\r\n /**\r\n * **VDK only.** Emitted after main size animation.\r\n */\r\n @Event()\r\n dsoDocumentPanelSizeChangeAnimationEnd!: EventEmitter<ViewerGridChangeSizeAnimationEndEvent>;\r\n\r\n /**\r\n * **VDK only.** Emitted when the user wants to expand the main panel.\r\n */\r\n @Event()\r\n dsoMainPanelExpand!: EventEmitter<ViewerGridMainExpandEvent>;\r\n\r\n /**\r\n * **VDK only.** Emitted when the user toggles the visibility of the main panel.\r\n *\r\n * Also emitted by scripting when the panels do not fit anymore.\r\n */\r\n @Event()\r\n dsoMainPanelToggle!: EventEmitter<ViewerGridMainToggleEvent>;\r\n\r\n @Element()\r\n host!: HTMLDsoViewerGridElement;\r\n\r\n @State()\r\n tabView = window.innerWidth < tabViewBreakpoint;\r\n\r\n private filterpanel: HTMLDialogElement | undefined;\r\n\r\n private get filterpanelSlot() {\r\n return this.host.querySelector(\"[slot='filterpanel']\");\r\n }\r\n\r\n private get overlaySlot() {\r\n return this.host.querySelector(\"[slot='overlay']\");\r\n }\r\n\r\n private overlay: HTMLDialogElement | undefined;\r\n\r\n @Watch(\"documentPanelOpen\")\r\n documentPanelOpenWatcher(open: boolean) {\r\n if (open) {\r\n this._checkMainPanelVisibility();\r\n }\r\n }\r\n\r\n @Watch(\"filterpanelOpen\")\r\n filterpanelOpenWatcher(open: boolean) {\r\n if (!this.filterpanelSlot) {\r\n console.warn(\"slot 'filterpanel' has not been set\");\r\n }\r\n\r\n if (open) {\r\n this.filterpanel?.showModal();\r\n } else {\r\n this.filterpanel?.close();\r\n }\r\n }\r\n\r\n @Watch(\"overlayOpen\")\r\n overlayOpenWatcher(open: boolean) {\r\n if (!this.overlaySlot) {\r\n console.warn(\"slot 'overlay' has not been set\");\r\n }\r\n\r\n if (open) {\r\n this.overlay?.showModal();\r\n } else {\r\n this.overlay?.close();\r\n }\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n @Method()\r\n async _checkMainPanelVisibility() {\r\n if (\r\n this.mode === \"vdk\" &&\r\n this.documentPanelOpen &&\r\n !this.mainPanelHidden &&\r\n this.mapElement instanceof HTMLDivElement &&\r\n ((this.mapElement.clientWidth <= minMapElementWidth + buttonWidth + buttonWidth && !this.mainPanelExpanded) ||\r\n (this.mapElement.clientWidth <= buttonWidth + buttonWidth && this.mainPanelExpanded))\r\n ) {\r\n this.dsoMainPanelToggle.emit({\r\n hide: true,\r\n });\r\n }\r\n }\r\n\r\n private switchActiveTab = (tab: ViewerGridTab) => {\r\n this.dsoActiveTabSwitch.emit({\r\n tab,\r\n });\r\n };\r\n\r\n private emitShrinkMain = () => {\r\n this.dsoMainSizeChange.emit({\r\n currentSize: this.mainSize,\r\n nextSize: this.mainSize === \"large\" ? \"medium\" : \"small\",\r\n });\r\n };\r\n\r\n private emitExpandMain = () => {\r\n this.dsoMainSizeChange.emit({\r\n currentSize: this.mainSize,\r\n nextSize: (this.mainSize = this.mainSize === \"small\" ? \"medium\" : \"large\"),\r\n });\r\n };\r\n\r\n private shrinkDocumentPanel = () => {\r\n this.dsoDocumentPanelSizeChange.emit({\r\n currentSize: this.documentPanelSize,\r\n nextSize: this.documentPanelSize === \"large\" ? \"medium\" : \"small\",\r\n });\r\n };\r\n\r\n private expandDocumentPanel = () => {\r\n this.dsoDocumentPanelSizeChange.emit({\r\n currentSize: this.documentPanelSize,\r\n nextSize: (this.documentPanelSize = this.mainSize === \"small\" ? \"medium\" : \"large\"),\r\n });\r\n };\r\n\r\n private expandContent = () => {\r\n this.dsoMainPanelExpand.emit({\r\n expand: !this.mainPanelExpanded,\r\n });\r\n };\r\n\r\n private toggleMainPanel = () => {\r\n if (\r\n this.mapElement instanceof HTMLDivElement &&\r\n this.mapElement.clientWidth <= minMapElementWidth + buttonWidth + buttonWidth\r\n ) {\r\n this.mainSize = \"small\";\r\n }\r\n\r\n this.dsoMainPanelToggle.emit({\r\n hide: !this.mainPanelHidden,\r\n });\r\n };\r\n\r\n private changeListener = (largeScreen: MediaQueryListEvent) => (this.tabView = !largeScreen.matches);\r\n\r\n private handleFilterpanelApply = (mouseEvent: MouseEvent | Event) => {\r\n this.dsoFilterpanelApply.emit({ originalEvent: mouseEvent });\r\n };\r\n\r\n private handleFilterpanelCancel = (mouseEvent: MouseEvent | Event) => {\r\n this.dsoFilterpanelCancel.emit({ originalEvent: mouseEvent });\r\n };\r\n\r\n connectedCallback() {\r\n window.matchMedia(this.mediaCondition).addEventListener(\"change\", this.changeListener);\r\n }\r\n\r\n componentDidLoad() {\r\n if (this.filterpanelOpen && this.filterpanelSlot) {\r\n this.filterpanel?.showModal();\r\n }\r\n\r\n if (this.overlayOpen && this.overlaySlot) {\r\n this.overlay?.showModal();\r\n }\r\n\r\n if (this.mode === \"vdk\" && this.mapElement instanceof HTMLDivElement) {\r\n resizeObserver.observe(this.mapElement);\r\n }\r\n }\r\n\r\n disconnectedCallback() {\r\n window.matchMedia(this.mediaCondition).removeEventListener(\"change\", this.changeListener);\r\n\r\n if (this.mode === \"vdk\" && this.mapElement) {\r\n resizeObserver.unobserve(this.mapElement);\r\n }\r\n }\r\n\r\n render() {\r\n const tabLabels = this.mode === \"vdk\" ? viewerGridVdkTabs : viewerGridVrkTabs;\r\n\r\n return (\r\n <>\r\n {this.tabView && (\r\n <nav class=\"dso-navbar\">\r\n <ul class=\"dso-nav dso-nav-sub\">\r\n {tabLabels.map((tab) => (\r\n <li key={tab} class={clsx({ \"dso-active\": this.activeTab === tab })}>\r\n <button type=\"button\" class=\"dso-tertiary\" onClick={() => this.switchActiveTab(tab)}>\r\n {viewerGridTabLabelMap[tab]}\r\n </button>\r\n </li>\r\n ))}\r\n </ul>\r\n </nav>\r\n )}\r\n {(!this.tabView || (this.tabView && (this.activeTab === \"main\" || this.activeTab === \"search\"))) && (\r\n <MainPanel\r\n mode={this.mode}\r\n tabView={this.tabView}\r\n mainSize={this.mainSize}\r\n documentPanelOpen={this.documentPanelOpen}\r\n mainPanelExpanded={this.mainPanelExpanded}\r\n mainPanelHidden={this.mainPanelHidden}\r\n shrinkMain={this.emitShrinkMain}\r\n expandMain={this.emitExpandMain}\r\n expandContent={this.expandContent}\r\n toggleMainPanel={this.toggleMainPanel}\r\n dsoMainSizeChangeAnimationEnd={this.dsoMainSizeChangeAnimationEnd}\r\n ></MainPanel>\r\n )}\r\n <Filterpanel\r\n ref={(element) => (this.filterpanel = element)}\r\n onApply={this.handleFilterpanelApply}\r\n onCancel={this.handleFilterpanelCancel}\r\n ></Filterpanel>\r\n {(!this.tabView || (this.tabView && this.activeTab === \"map\")) && (\r\n <div class=\"map\" ref={(element) => (this.mapElement = element)}>\r\n <slot name=\"map\" />\r\n </div>\r\n )}\r\n {((!this.tabView && this.documentPanelOpen) || (this.tabView && this.activeTab === \"document\")) && (\r\n <DocumentPanel\r\n tabView={this.tabView}\r\n panelSize={this.documentPanelSize}\r\n shrinkDocumentPanel={this.shrinkDocumentPanel}\r\n expandDocumentPanel={this.expandDocumentPanel}\r\n dsoDocumentPanelSizeChangeAnimationEnd={this.dsoDocumentPanelSizeChangeAnimationEnd}\r\n ></DocumentPanel>\r\n )}\r\n <Overlay\r\n ref={(element) => (this.overlay = element)}\r\n dsoCloseOverlay={(e) => this.dsoCloseOverlay.emit({ originalEvent: e })}\r\n ></Overlay>\r\n </>\r\n );\r\n }\r\n}\r\n"]}