@vcmap/ui 6.0.14 → 6.1.0-rc.2

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 (99) hide show
  1. package/config/base.config.json +25 -3
  2. package/config/dev.config.json +17 -3
  3. package/config/splashscreen.config.json +13 -0
  4. package/dist/assets/cesium.js +1 -1
  5. package/dist/assets/{core-882e211a.js → core-fd079400.js} +6861 -5788
  6. package/dist/assets/core.js +1 -1
  7. package/dist/assets/ol.js +1 -1
  8. package/dist/assets/ui-5135917c.css +1 -0
  9. package/dist/assets/{ui-b6bff1d9.js → ui-5135917c.js} +16764 -18447
  10. package/dist/assets/ui.js +1 -1
  11. package/dist/assets/vue.js +1 -1
  12. package/dist/assets/{vuetify-2d64c180.js → vuetify-f02b7bb9.js} +1 -1
  13. package/dist/assets/vuetify.js +1 -1
  14. package/index.d.ts +13 -1
  15. package/index.js +7 -0
  16. package/package.json +2 -2
  17. package/plugins/@vcmap-show-case/dev-tools/package.json +5 -0
  18. package/plugins/@vcmap-show-case/dev-tools/src/eventLogger.js +35 -0
  19. package/plugins/@vcmap-show-case/dev-tools/src/index.js +59 -0
  20. package/plugins/@vcmap-show-case/search-example/src/searchImpl.js +10 -0
  21. package/src/application/VcsApp.vue.d.ts +26 -0
  22. package/src/application/VcsContainer.vue +5 -3
  23. package/src/application/VcsContainer.vue.d.ts +21 -0
  24. package/src/application/VcsNavbar.vue +10 -6
  25. package/src/application/VcsNavbar.vue.d.ts +2 -0
  26. package/src/application/VcsSplashScreen.vue +35 -28
  27. package/src/application/VcsSplashScreen.vue.d.ts +1 -0
  28. package/src/callback/addModuleCallback.d.ts +29 -0
  29. package/src/callback/addModuleCallback.js +61 -0
  30. package/src/callback/removeModuleCallback.d.ts +29 -0
  31. package/src/callback/removeModuleCallback.js +53 -0
  32. package/src/callback/startRotationCallback.d.ts +37 -0
  33. package/src/callback/startRotationCallback.js +67 -0
  34. package/src/callback/stopRotationCallback.d.ts +8 -0
  35. package/src/callback/stopRotationCallback.js +37 -0
  36. package/src/components/buttons/VcsActionButtonList.vue +6 -4
  37. package/src/components/buttons/VcsToolButton.vue +0 -1
  38. package/src/components/form-inputs-controls/VcsDatePicker.vue +7 -1
  39. package/src/components/form-inputs-controls/VcsDatePicker.vue.d.ts +9 -0
  40. package/src/components/form-inputs-controls/VcsTextArea.vue +1 -1
  41. package/src/components/icons/+all.js +4 -0
  42. package/src/components/icons/View360Icon.vue +55 -0
  43. package/src/components/icons/View360Icon.vue.d.ts +2 -0
  44. package/src/components/import/VcsImportComponent.vue +2 -0
  45. package/src/components/lists/VcsList.vue +15 -11
  46. package/src/components/lists/VcsList.vue.d.ts +9 -0
  47. package/src/components/lists/VcsTreeNode.vue +244 -0
  48. package/src/components/lists/VcsTreeNode.vue.d.ts +31 -0
  49. package/src/components/lists/VcsTreeview.vue +111 -173
  50. package/src/components/lists/VcsTreeview.vue.d.ts +58 -4
  51. package/src/components/lists/VcsTreeviewTitle.vue +10 -3
  52. package/src/components/lists/VcsTreeviewTitle.vue.d.ts +2 -0
  53. package/src/components/tables/VcsDataTable.vue +14 -3
  54. package/src/components/tables/VcsDataTable.vue.d.ts +9 -0
  55. package/src/featureInfo/BalloonComponent.vue +18 -47
  56. package/src/featureInfo/BalloonComponent.vue.d.ts +0 -1
  57. package/src/featureInfo/IframeComponent.vue +1 -32
  58. package/src/featureInfo/IframeComponent.vue.d.ts +1 -4
  59. package/src/i18n/de.d.ts +1 -0
  60. package/src/i18n/de.js +1 -0
  61. package/src/i18n/en.d.ts +1 -0
  62. package/src/i18n/en.js +1 -0
  63. package/src/init.d.ts +6 -0
  64. package/src/init.js +26 -14
  65. package/src/legend/VcsLegend.vue +1 -1
  66. package/src/manager/toolbox/ToolboxManagerComponent.vue +4 -4
  67. package/src/manager/toolbox/ToolboxManagerComponent.vue.d.ts +2 -2
  68. package/src/manager/toolbox/toolboxManager.d.ts +5 -0
  69. package/src/manager/toolbox/toolboxManager.js +7 -1
  70. package/src/manager/window/WindowComponent.vue +11 -1
  71. package/src/manager/window/WindowComponent.vue.d.ts +1 -0
  72. package/src/manager/window/WindowManager.vue +14 -4
  73. package/src/manager/window/WindowManager.vue.d.ts +1 -0
  74. package/src/navigation/MapNavigation.vue +87 -5
  75. package/src/navigation/MapNavigation.vue.d.ts +3 -1
  76. package/src/navigation/overviewMap.d.ts +6 -0
  77. package/src/navigation/overviewMap.js +14 -1
  78. package/src/pluginHelper.d.ts +0 -7
  79. package/src/pluginHelper.js +4 -18
  80. package/src/search/ResultItem.vue +1 -10
  81. package/src/search/ResultsComponent.vue +11 -1
  82. package/src/search/ResultsComponent.vue.d.ts +9 -0
  83. package/src/search/SearchComponent.vue +88 -11
  84. package/src/search/SearchComponent.vue.d.ts +7 -0
  85. package/src/search/markText.d.ts +1 -1
  86. package/src/search/markText.js +4 -4
  87. package/src/search/search.d.ts +3 -0
  88. package/src/search/search.js +3 -2
  89. package/src/state.d.ts +2 -4
  90. package/src/state.js +31 -54
  91. package/src/uiConfig.d.ts +40 -0
  92. package/src/uiConfig.js +6 -0
  93. package/src/vcsUiApp.js +11 -7
  94. package/src/vuePlugins/vuetify.js +2 -0
  95. package/dist/assets/ui-b6bff1d9.css +0 -1
  96. /package/dist/assets/{cesium-615823f2.js → cesium-57fbd309.js} +0 -0
  97. /package/dist/assets/{ol-7fc05707.js → ol-50dfef96.js} +0 -0
  98. /package/dist/assets/{vue-74e8343e.js → vue-c3c55d88.js} +0 -0
  99. /package/dist/assets/{vuetify-2d64c180.css → vuetify-f02b7bb9.css} +0 -0
package/dist/assets/ui.js CHANGED
@@ -1 +1 @@
1
- export * from "./ui-b6bff1d9.js";
1
+ export * from "./ui-5135917c.js";
@@ -1 +1 @@
1
- export * from "./vue-74e8343e.js";
1
+ export * from "./vue-c3c55d88.js";
@@ -10,7 +10,7 @@ function loadCss(href) {
10
10
  elem.onerror = reject;
11
11
  document.head.appendChild(elem);
12
12
  });
13
- } await loadCss('./assets/vuetify-2d64c180.css');import { watch as X, onScopeDispose as tt, effectScope as Ul, shallowRef as K, Fragment as ie, reactive as it, computed as b, watchEffect as Ne, toRefs as Wt, capitalize as On, isVNode as Oc, Comment as Rc, unref as ot, warn as Ha, getCurrentInstance as Nc, ref as W, provide as Ae, inject as ye, defineComponent as Hc, camelize as Ir, h as jt, toRaw as Ee, createVNode as r, mergeProps as N, onBeforeUnmount as nt, readonly as Kl, onDeactivated as _r, onActivated as zc, onMounted as Ke, nextTick as Se, TransitionGroup as ql, Transition as Ht, isRef as _n, toRef as F, onBeforeMount as Xl, withDirectives as $e, resolveDirective as dt, vShow as xt, onUpdated as Wc, Text as jc, resolveDynamicComponent as Yc, markRaw as Gc, Teleport as Uc, cloneVNode as Kc, createTextVNode as Pt, onUnmounted as qc, onBeforeUpdate as Xc, withModifiers as Pl, toDisplayString as Zc, vModelText as Qc, resolveComponent as Jc, render as Tr } from "./vue-74e8343e.js";
13
+ } await loadCss('./assets/vuetify-f02b7bb9.css');import { watch as X, onScopeDispose as tt, effectScope as Ul, shallowRef as K, Fragment as ie, reactive as it, computed as b, watchEffect as Ne, toRefs as Wt, capitalize as On, isVNode as Oc, Comment as Rc, unref as ot, warn as Ha, getCurrentInstance as Nc, ref as W, provide as Ae, inject as ye, defineComponent as Hc, camelize as Ir, h as jt, toRaw as Ee, createVNode as r, mergeProps as N, onBeforeUnmount as nt, readonly as Kl, onDeactivated as _r, onActivated as zc, onMounted as Ke, nextTick as Se, TransitionGroup as ql, Transition as Ht, isRef as _n, toRef as F, onBeforeMount as Xl, withDirectives as $e, resolveDirective as dt, vShow as xt, onUpdated as Wc, Text as jc, resolveDynamicComponent as Yc, markRaw as Gc, Teleport as Uc, cloneVNode as Kc, createTextVNode as Pt, onUnmounted as qc, onBeforeUpdate as Xc, withModifiers as Pl, toDisplayString as Zc, vModelText as Qc, resolveComponent as Jc, render as Tr } from "./vue-c3c55d88.js";
14
14
  function rt(e, n) {
15
15
  let t;
16
16
  function a() {
@@ -1 +1 @@
1
- export * from "./vuetify-2d64c180.js";
1
+ export * from "./vuetify-f02b7bb9.js";
package/index.d.ts CHANGED
@@ -8,6 +8,14 @@ export { default as GoToViewpointCallback } from "./src/callback/goToViewpointCa
8
8
  export type * from "./src/callback/goToViewpointCallback.d.ts";
9
9
  export { default as ApplyLayerStyleCallback } from "./src/callback/applyLayerStyleCallback.js";
10
10
  export type * from "./src/callback/applyLayerStyleCallback.d.ts";
11
+ export { default as StopRotationCallback } from "./src/callback/stopRotationCallback.js";
12
+ export type * from "./src/callback/stopRotationCallback.d.ts";
13
+ export { default as StartRotationCallback } from "./src/callback/startRotationCallback.js";
14
+ export type * from "./src/callback/startRotationCallback.d.ts";
15
+ export { default as AddModuleCallback } from "./src/callback/addModuleCallback.js";
16
+ export type * from "./src/callback/addModuleCallback.d.ts";
17
+ export { default as RemoveModuleCallback } from "./src/callback/removeModuleCallback.js";
18
+ export type * from "./src/callback/removeModuleCallback.d.ts";
11
19
  export { default as VcsNavbar } from "./src/application/VcsNavbar.vue";
12
20
  export type * from "./src/application/VcsNavbar.vue.d.ts";
13
21
  export { default as VcsAppWrapper } from "./src/application/VcsAppWrapper.vue";
@@ -164,6 +172,8 @@ export { default as VcsListItemComponent } from "./src/components/lists/VcsListI
164
172
  export type * from "./src/components/lists/VcsListItemComponent.vue.d.ts";
165
173
  export { default as VcsTreeview } from "./src/components/lists/VcsTreeview.vue";
166
174
  export type * from "./src/components/lists/VcsTreeview.vue.d.ts";
175
+ export { default as VcsTreeNode } from "./src/components/lists/VcsTreeNode.vue";
176
+ export type * from "./src/components/lists/VcsTreeNode.vue.d.ts";
167
177
  export { default as VcsTreeviewTitle } from "./src/components/lists/VcsTreeviewTitle.vue";
168
178
  export type * from "./src/components/lists/VcsTreeviewTitle.vue.d.ts";
169
179
  export { default as VcsTreeviewSearchbar } from "./src/components/lists/VcsTreeviewSearchbar.vue";
@@ -230,6 +240,8 @@ export * from "./src/components/composables.js";
230
240
  export type * from "./src/components/composables.d.ts";
231
241
  export { default as Search } from "./src/search/search.js";
232
242
  export type * from "./src/search/search.d.ts";
243
+ export { markText } from "./src/search/markText.js";
244
+ export type * from "./src/search/markText.d.ts";
233
245
  export { default as ResultItemComponent } from "./src/search/ResultItem.vue";
234
246
  export type * from "./src/search/ResultItem.vue.d.ts";
235
247
  export { default as ResultsComponent } from "./src/search/ResultsComponent.vue";
@@ -286,7 +298,7 @@ export { createVcsThemes, createVcsVuetify, isDark, getDefaultPrimaryColor, getC
286
298
  export type * from "./src/vuePlugins/vuetify.d.ts";
287
299
  export { downloadURI, downloadBlob, downloadText, downloadCanvas } from "./src/downloadHelper.js";
288
300
  export type * from "./src/downloadHelper.d.ts";
289
- export { default as initApp, VcsUiAppConfigPattern, initAppFromModule, initAppFromAppConfig } from "./src/init.js";
301
+ export { default as initApp, VcsUiAppConfigPattern, initAppFromModule, initAppFromAppConfig, createModuleFromObjectOrUrl } from "./src/init.js";
290
302
  export type * from "./src/init.d.ts";
291
303
  export { vcsAppSymbol, pluginFactorySymbol, pluginBaseUrlSymbol, pluginModuleUrlSymbol, getPluginAssetUrl, isValidPackageName, loadPlugin, serializePlugin, deserializePlugin } from "./src/pluginHelper.js";
292
304
  export type * from "./src/pluginHelper.d.ts";
package/index.js CHANGED
@@ -52,6 +52,10 @@ export { default as ActivateLayersCallback } from './src/callback/activateLayers
52
52
  export { default as DeactivateLayersCallback } from './src/callback/deactivateLayersCallback.js';
53
53
  export { default as GoToViewpointCallback } from './src/callback/goToViewpointCallback.js';
54
54
  export { default as ApplyLayerStyleCallback } from './src/callback/applyLayerStyleCallback.js';
55
+ export { default as StopRotationCallback } from './src/callback/stopRotationCallback.js';
56
+ export { default as StartRotationCallback } from './src/callback/startRotationCallback.js';
57
+ export { default as AddModuleCallback } from './src/callback/addModuleCallback.js';
58
+ export { default as RemoveModuleCallback } from './src/callback/removeModuleCallback.js';
55
59
  export { default as VcsNavbar } from './src/application/VcsNavbar.vue';
56
60
  export {
57
61
  default as VcsApp,
@@ -210,6 +214,7 @@ export {
210
214
  VcsUiAppConfigPattern,
211
215
  initAppFromModule,
212
216
  initAppFromAppConfig,
217
+ createModuleFromObjectOrUrl,
213
218
  } from './src/init.js';
214
219
  export {
215
220
  vcsAppSymbol,
@@ -266,6 +271,7 @@ export {
266
271
  export { default as VcsList } from './src/components/lists/VcsList.vue';
267
272
  export { default as VcsListItemComponent } from './src/components/lists/VcsListItemComponent.vue';
268
273
  export { default as VcsTreeview } from './src/components/lists/VcsTreeview.vue';
274
+ export { default as VcsTreeNode } from './src/components/lists/VcsTreeNode.vue';
269
275
  export { default as VcsTreeviewTitle } from './src/components/lists/VcsTreeviewTitle.vue';
270
276
  export { default as VcsTreeviewSearchbar } from './src/components/lists/VcsTreeviewSearchbar.vue';
271
277
  export { default as VcsBadge } from './src/components/notification/VcsBadge.vue';
@@ -319,5 +325,6 @@ export * from './src/components/modelHelper.js';
319
325
  export * from './src/components/composables.js';
320
326
  export { LegendType, StyleRowType } from './src/legend/legendHelper.js';
321
327
  export { default as Search } from './src/search/search.js';
328
+ export { markText } from './src/search/markText.js';
322
329
  export { default as ResultItemComponent } from './src/search/ResultItem.vue';
323
330
  export { default as ResultsComponent } from './src/search/ResultsComponent.vue';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vcmap/ui",
3
- "version": "6.0.14",
3
+ "version": "6.1.0-rc.2",
4
4
  "author": "Virtual City Systems",
5
5
  "license": "MIT",
6
6
  "scripts": {
@@ -57,7 +57,7 @@
57
57
  },
58
58
  "peerDependencies": {
59
59
  "@vcmap-cesium/engine": "^11.0.2",
60
- "@vcmap/core": "^6.0.7",
60
+ "@vcmap/core": "^6.1.0-rc.1",
61
61
  "ol": "^10.2.1",
62
62
  "vue": "~3.4.38",
63
63
  "vuetify": "^3.7.3"
@@ -0,0 +1,5 @@
1
+ {
2
+ "name": "@vcmap-show-case/dev-tools",
3
+ "version": "1.0.0",
4
+ "mapVersion": "^6.0"
5
+ }
@@ -0,0 +1,35 @@
1
+ import { AbstractInteraction, EventType } from '@vcmap/core';
2
+
3
+ export default class EventLogger extends AbstractInteraction {
4
+ constructor() {
5
+ super();
6
+
7
+ this.setActive(false);
8
+ }
9
+
10
+ pipe(event) {
11
+ console.log(event);
12
+ this.lastEvent = event;
13
+ return Promise.resolve(event);
14
+ }
15
+
16
+ off() {
17
+ this.setActive(false);
18
+ }
19
+
20
+ click() {
21
+ this.setActive(EventType.CLICK);
22
+ }
23
+
24
+ clickMove() {
25
+ this.setActive(EventType.CLICKMOVE);
26
+ }
27
+
28
+ drag() {
29
+ this.setActive(EventType.DRAGEVENTS);
30
+ }
31
+
32
+ all() {
33
+ this.setActive(EventType.ALL);
34
+ }
35
+ }
@@ -0,0 +1,59 @@
1
+ import { CesiumMap, ObliqueMap, OpenlayersMap } from '@vcmap/core';
2
+ import { name, version, mapVersion } from '../package.json';
3
+ import EventLogger from './eventLogger.js';
4
+
5
+ /**
6
+ * @typedef {Object} DevTools
7
+ * @property {() => import("@vcmap/core").VcsApp} getApp
8
+ * @property {() => import("@vcmap/core").CesiumMap | undefined} getCesiumMap
9
+ * @property {() => import("@vcmap/core").OpenlayersMap | undefined} getOpenlayersMap
10
+ * @property {() => import("@vcmap/core").ObliqueMap | undefined} getObliqueMap
11
+ * @property {EventLogger} eventLogger
12
+ */
13
+
14
+ /**
15
+ * @param {DevTools} plugin
16
+ * @param {VcsUiApp} app
17
+ */
18
+ function setup(plugin, app) {
19
+ plugin.getApp = () => {
20
+ return app;
21
+ };
22
+
23
+ plugin.getCesiumMap = () => {
24
+ return app.maps.getByType(CesiumMap.className)[0];
25
+ };
26
+
27
+ plugin.getOpenlayersMap = () => {
28
+ return app.maps.getByType(OpenlayersMap.className)[0];
29
+ };
30
+
31
+ plugin.getObliqueMap = () => {
32
+ return app.maps.getByType(ObliqueMap.className)[0];
33
+ };
34
+
35
+ plugin.eventLogger = new EventLogger();
36
+ app.maps.eventHandler.addPersistentInteraction(plugin.eventLogger);
37
+ }
38
+
39
+ export default function devTools() {
40
+ return {
41
+ name,
42
+ version,
43
+ mapVersion,
44
+ initialize(app) {
45
+ if (window.vcs.devTools) {
46
+ console.error(
47
+ 'dev tool already loaded! something must have gone wrong somewhere',
48
+ );
49
+ }
50
+ window.vcs.devTools = this;
51
+ setup(this, app);
52
+ },
53
+ destroy() {
54
+ if (window.vcs.devTools === this) {
55
+ window.vcs.devTools = undefined;
56
+ }
57
+ },
58
+ };
59
+ }
@@ -121,6 +121,16 @@ export default class SearchImpl {
121
121
  );
122
122
  }
123
123
 
124
+ suggest(query) {
125
+ const lowerQuery = query.toLowerCase();
126
+ return Promise.resolve(
127
+ this.lines.filter((l) => {
128
+ const lowerLine = l.toLowerCase();
129
+ return lowerLine !== lowerQuery && lowerLine.startsWith(lowerQuery);
130
+ }),
131
+ );
132
+ }
133
+
124
134
  // eslint-disable-next-line class-methods-use-this
125
135
  abort() {}
126
136
 
@@ -174,6 +174,13 @@ declare const _default: import("vue").DefineComponent<{
174
174
  readonly name?: string | undefined;
175
175
  readonly checkBoxText?: string | undefined;
176
176
  readonly buttonTitle?: string | undefined;
177
+ readonly secondaryButtonTitle?: string | undefined;
178
+ readonly exitCallbackOptions?: readonly {
179
+ readonly type: string;
180
+ }[] | undefined;
181
+ readonly secondaryCallbackOptions?: readonly {
182
+ readonly type: string;
183
+ }[] | undefined;
177
184
  readonly menuEntry?: boolean | undefined;
178
185
  readonly acceptInput?: boolean | undefined;
179
186
  readonly position?: {
@@ -246,6 +253,14 @@ declare const _default: import("vue").DefineComponent<{
246
253
  * - an optional flag whether to show the Locator in the map.
247
254
  */
248
255
  readonly showLocator?: boolean | undefined;
256
+ /**
257
+ * - an optional flag to hide the Rotator in the map.
258
+ */
259
+ readonly hideRotationButton?: boolean | undefined;
260
+ /**
261
+ * - an optional flag that describes the time per rotation in seconds.
262
+ */
263
+ readonly timePerRotation?: number | undefined;
249
264
  /**
250
265
  * - can be used to hide the default Header of the map
251
266
  */
@@ -343,6 +358,10 @@ declare const _default: import("vue").DefineComponent<{
343
358
  * - open the legend window, if new layer has a config
344
359
  */
345
360
  readonly openLegendOnAdd?: boolean | undefined;
361
+ /**
362
+ * - can be used to apply a scale factor the the overviewMap
363
+ */
364
+ readonly overviewMapScaleFactor?: number | undefined;
346
365
  };
347
366
  showFooter: import("vue").ComputedRef<boolean>;
348
367
  footerHeight: import("vue").ComputedRef<number>;
@@ -397,6 +416,13 @@ declare const _default: import("vue").DefineComponent<{
397
416
  name?: string | undefined;
398
417
  checkBoxText?: string | undefined;
399
418
  buttonTitle?: string | undefined;
419
+ secondaryButtonTitle?: string | undefined;
420
+ exitCallbackOptions?: readonly {
421
+ readonly type: string;
422
+ }[] | undefined;
423
+ secondaryCallbackOptions?: readonly {
424
+ readonly type: string;
425
+ }[] | undefined;
400
426
  menuEntry?: boolean | undefined;
401
427
  acceptInput?: boolean | undefined;
402
428
  position: {
@@ -10,13 +10,14 @@
10
10
  fluid
11
11
  absolute
12
12
  >
13
- <template v-if="xs">
13
+ <template v-if="smAndDown">
14
14
  <img
15
15
  v-if="mobileLogo"
16
16
  :src="mobileLogo"
17
17
  alt="Logo"
18
18
  draggable="false"
19
19
  class="mobile-logo"
20
+ :class="{ 'mobile-logo': sm }"
20
21
  />
21
22
  </template>
22
23
  <!--VcsButton
@@ -69,7 +70,6 @@
69
70
  left: 1rem;
70
71
  z-index: 1;
71
72
  }
72
-
73
73
  .mobile-attribution-btn {
74
74
  position: fixed;
75
75
  right: 2px;
@@ -111,10 +111,12 @@
111
111
  setup() {
112
112
  /** @type {import("../vcsUiApp.js").default} */
113
113
  const app = inject('vcsApp');
114
- const { xs } = useDisplay();
114
+ const { smAndDown, xs, sm } = useDisplay();
115
115
  return {
116
116
  config: app.uiConfig.config,
117
+ smAndDown,
117
118
  xs,
119
+ sm,
118
120
  mobileLogo: computed(
119
121
  () =>
120
122
  app.uiConfig.config.mobileLogo ??
@@ -94,6 +94,13 @@ declare const _default: import("vue").DefineComponent<{
94
94
  readonly name?: string | undefined;
95
95
  readonly checkBoxText?: string | undefined;
96
96
  readonly buttonTitle?: string | undefined;
97
+ readonly secondaryButtonTitle?: string | undefined;
98
+ readonly exitCallbackOptions?: readonly {
99
+ readonly type: string;
100
+ }[] | undefined;
101
+ readonly secondaryCallbackOptions?: readonly {
102
+ readonly type: string;
103
+ }[] | undefined;
97
104
  readonly menuEntry?: boolean | undefined;
98
105
  readonly acceptInput?: boolean | undefined;
99
106
  readonly position?: {
@@ -166,6 +173,14 @@ declare const _default: import("vue").DefineComponent<{
166
173
  * - an optional flag whether to show the Locator in the map.
167
174
  */
168
175
  readonly showLocator?: boolean | undefined;
176
+ /**
177
+ * - an optional flag to hide the Rotator in the map.
178
+ */
179
+ readonly hideRotationButton?: boolean | undefined;
180
+ /**
181
+ * - an optional flag that describes the time per rotation in seconds.
182
+ */
183
+ readonly timePerRotation?: number | undefined;
169
184
  /**
170
185
  * - can be used to hide the default Header of the map
171
186
  */
@@ -263,8 +278,14 @@ declare const _default: import("vue").DefineComponent<{
263
278
  * - open the legend window, if new layer has a config
264
279
  */
265
280
  readonly openLegendOnAdd?: boolean | undefined;
281
+ /**
282
+ * - can be used to apply a scale factor the the overviewMap
283
+ */
284
+ readonly overviewMapScaleFactor?: number | undefined;
266
285
  };
286
+ smAndDown: import("vue").Ref<boolean>;
267
287
  xs: import("vue").Ref<boolean>;
288
+ sm: import("vue").Ref<boolean>;
268
289
  mobileLogo: import("vue").ComputedRef<any>;
269
290
  }, any, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
270
291
  attributionAction: {
@@ -14,7 +14,7 @@
14
14
  <div class="d-flex">
15
15
  <VcsActionButtonList
16
16
  :actions="mapActions"
17
- :overflow-count="3"
17
+ :overflow-count="smAndDown ? 2 : 3"
18
18
  :force-overflow="false"
19
19
  button="VcsToolButton"
20
20
  />
@@ -29,7 +29,7 @@
29
29
  />
30
30
  <VcsActionButtonList
31
31
  :actions="contentActions"
32
- :overflow-count="xs ? 3 : 4"
32
+ :overflow-count="smAndDown ? 2 : 3"
33
33
  :force-overflow="false"
34
34
  button="VcsToolButton"
35
35
  />
@@ -41,8 +41,9 @@
41
41
  />
42
42
  <VcsActionButtonList
43
43
  :actions="toolActions"
44
+ :overflow-count="smAndDown ? 1 : 2"
44
45
  :force-overflow="false"
45
- v-if="mdAndUp"
46
+ v-if="smAndUp"
46
47
  button="VcsToolButton"
47
48
  />
48
49
  </div>
@@ -50,7 +51,7 @@
50
51
  </v-col>
51
52
  <v-col class="d-flex justify-center flex-grow-2 mx-2">
52
53
  <div class="d-flex align-center">
53
- <template v-if="!xs">
54
+ <template v-if="!smAndDown">
54
55
  <img class="logo" :src="logo" draggable="false" alt="Logo" />
55
56
  </template>
56
57
  <div
@@ -63,10 +64,11 @@
63
64
  </div>
64
65
  </v-col>
65
66
  <v-col class="align-content-end d-flex justify-end">
66
- <v-toolbar-items v-if="mdAndUp">
67
+ <v-toolbar-items v-if="smAndUp">
67
68
  <div class="d-flex">
68
69
  <VcsActionButtonList
69
70
  :actions="projectActions"
71
+ :overflow-count="smAndDown ? 1 : 2"
70
72
  :force-overflow="false"
71
73
  button="VcsToolButton"
72
74
  />
@@ -206,7 +208,7 @@
206
208
  destroySearchAction();
207
209
  });
208
210
 
209
- const { xs, mdAndUp } = useDisplay();
211
+ const { xs, mdAndUp, smAndDown, smAndUp } = useDisplay();
210
212
 
211
213
  const density = computed(() => {
212
214
  return xs.value ? 'comfortable' : 'compact';
@@ -228,8 +230,10 @@
228
230
  config: app.uiConfig.config,
229
231
  logo,
230
232
  xs,
233
+ smAndDown,
231
234
  density,
232
235
  mdAndUp,
236
+ smAndUp,
233
237
  toolbarHeight,
234
238
  };
235
239
  },
@@ -42,8 +42,10 @@ declare const _default: import("vue").DefineComponent<{}, {
42
42
  config: any;
43
43
  logo: import("vue").ComputedRef<any>;
44
44
  xs: import("vue").Ref<boolean>;
45
+ smAndDown: import("vue").Ref<boolean>;
45
46
  density: import("vue").ComputedRef<"compact" | "comfortable">;
46
47
  mdAndUp: import("vue").Ref<boolean>;
48
+ smAndUp: import("vue").Ref<boolean>;
47
49
  toolbarHeight: import("vue").ComputedRef<number>;
48
50
  }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{}>>, {}, {}>;
49
51
  export default _default;
@@ -28,36 +28,34 @@
28
28
  </v-card-text>
29
29
 
30
30
  <v-card-actions>
31
- <v-row no-gutters>
32
- <v-col class="text-right">
33
- <VcsFormButton
34
- color="primary"
35
- variant="filled"
36
- @click="exitScreen"
37
- :disabled="options.acceptInput && !checkBox"
38
- >{{
39
- $st(
40
- options.buttonTitle || 'components.splashScreen.buttonTitle',
41
- )
42
- }}</VcsFormButton
43
- >
44
- </v-col>
45
- </v-row>
31
+ <div class="d-flex gc-2 w-100 justify-end">
32
+ <VcsFormButton
33
+ v-if="
34
+ options.secondaryButtonTitle && options.secondaryCallbackOptions
35
+ "
36
+ @click="secondaryButtonClicked"
37
+ >
38
+ {{ $st(options.secondaryButtonTitle) }}
39
+ </VcsFormButton>
40
+ <VcsFormButton
41
+ color="primary"
42
+ variant="filled"
43
+ @click="exitScreen"
44
+ :disabled="options.acceptInput && !checkBox"
45
+ >{{
46
+ $st(options.buttonTitle || 'components.splashScreen.buttonTitle')
47
+ }}</VcsFormButton
48
+ >
49
+ </div>
46
50
  </v-card-actions>
47
51
  </v-card>
48
52
  </v-dialog>
49
53
  </template>
50
54
 
51
55
  <script>
52
- import {
53
- VDialog,
54
- VCard,
55
- VCardText,
56
- VCardActions,
57
- VRow,
58
- VCol,
59
- } from 'vuetify/components';
60
- import { computed, ref } from 'vue';
56
+ import { VDialog, VCard, VCardText, VCardActions } from 'vuetify/components';
57
+ import { computed, ref, inject } from 'vue';
58
+ import { executeCallbacks } from '../callback/vcsCallback.js';
61
59
  import VcsFormButton from '../components/buttons/VcsFormButton.vue';
62
60
  import VcsCheckbox from '../components/form-inputs-controls/VcsCheckbox.vue';
63
61
  import VcsMarkdown from '../components/form-output/VcsMarkdown.vue';
@@ -72,8 +70,6 @@
72
70
  VCardActions,
73
71
  VcsFormButton,
74
72
  VcsCheckbox,
75
- VRow,
76
- VCol,
77
73
  VcsMarkdown,
78
74
  },
79
75
  props: {
@@ -87,13 +83,23 @@
87
83
  },
88
84
  },
89
85
  setup(props, { emit }) {
86
+ const app = inject('vcsApp');
90
87
  const localValue = useProxiedAtomicModel(props, 'modelValue', emit);
91
88
 
92
89
  const checkBox = ref(false);
93
- const exitScreen = () => {
90
+ function exitScreen() {
94
91
  localValue.value = false;
95
92
  checkBox.value = false;
96
- };
93
+ if (Array.isArray(props.options.exitCallbackOptions)) {
94
+ executeCallbacks(app, props.options.exitCallbackOptions);
95
+ }
96
+ }
97
+
98
+ function secondaryButtonClicked() {
99
+ if (Array.isArray(props.options.secondaryCallbackOptions)) {
100
+ executeCallbacks(app, props.options.secondaryCallbackOptions);
101
+ }
102
+ }
97
103
 
98
104
  const position = computed(() => ({
99
105
  width: props.options.position?.width || 800,
@@ -105,6 +111,7 @@
105
111
  return {
106
112
  localValue,
107
113
  exitScreen,
114
+ secondaryButtonClicked,
108
115
  checkBox,
109
116
  position,
110
117
  };
@@ -10,6 +10,7 @@ declare const _default: import("vue").DefineComponent<{
10
10
  }, {
11
11
  localValue: import("vue").Ref<any>;
12
12
  exitScreen: () => void;
13
+ secondaryButtonClicked: () => void;
13
14
  checkBox: import("vue").Ref<boolean>;
14
15
  position: import("vue").ComputedRef<{
15
16
  width: any;
@@ -0,0 +1,29 @@
1
+ export default AddModuleCallback;
2
+ export type AddModuleCallbackOptions = import("./vcsCallback.js").VcsCallbackOptions & {
3
+ module: import("@vcmap/core").VcsModuleConfig | string;
4
+ };
5
+ /**
6
+ * @typedef {import("./vcsCallback.js").VcsCallbackOptions & { module: import("@vcmap/core").VcsModuleConfig|string }} AddModuleCallbackOptions
7
+ * @property {import("@vcmap/core").VcsModuleConfig|string} module - config or url to a config file
8
+ */
9
+ /**
10
+ * @class
11
+ * @extends {VcsCallback}
12
+ */
13
+ declare class AddModuleCallback extends VcsCallback {
14
+ /**
15
+ * @param {AddModuleCallbackOptions} options
16
+ * @param {import("@src/vcsUiApp.js").default} app
17
+ */
18
+ constructor(options: AddModuleCallbackOptions, app: import("@src/vcsUiApp.js").default);
19
+ /**
20
+ * @type {import("@vcmap/core").VcsModuleConfig|string}
21
+ * @private
22
+ */
23
+ private _module;
24
+ /**
25
+ * @returns {AddModuleCallbackOptions}
26
+ */
27
+ toJSON(): AddModuleCallbackOptions;
28
+ }
29
+ import VcsCallback from './vcsCallback.js';
@@ -0,0 +1,61 @@
1
+ import { getLogger } from '@vcsuite/logger';
2
+ import { createModuleFromObjectOrUrl } from '../init.js';
3
+ import VcsCallback, { callbackClassRegistry } from './vcsCallback.js';
4
+
5
+ /**
6
+ * @typedef {import("./vcsCallback.js").VcsCallbackOptions & { module: import("@vcmap/core").VcsModuleConfig|string }} AddModuleCallbackOptions
7
+ * @property {import("@vcmap/core").VcsModuleConfig|string} module - config or url to a config file
8
+ */
9
+
10
+ /**
11
+ * @class
12
+ * @extends {VcsCallback}
13
+ */
14
+ class AddModuleCallback extends VcsCallback {
15
+ /**
16
+ * @type {string}
17
+ */
18
+ static get className() {
19
+ return 'AddModuleCallback';
20
+ }
21
+
22
+ /**
23
+ * @param {AddModuleCallbackOptions} options
24
+ * @param {import("@src/vcsUiApp.js").default} app
25
+ */
26
+ constructor(options, app) {
27
+ super(options, app);
28
+ /**
29
+ * @type {import("@vcmap/core").VcsModuleConfig|string}
30
+ * @private
31
+ */
32
+ this._module = options.module;
33
+ }
34
+
35
+ callback() {
36
+ createModuleFromObjectOrUrl(this._module)
37
+ .then((module) => {
38
+ if (module) {
39
+ this._app.addModule(module);
40
+ }
41
+ })
42
+ .catch((e) => {
43
+ getLogger('addModuleCallback').error('Error adding module', e);
44
+ });
45
+ }
46
+
47
+ /**
48
+ * @returns {AddModuleCallbackOptions}
49
+ */
50
+ toJSON() {
51
+ const config = super.toJSON();
52
+ config.module = this._module;
53
+ return config;
54
+ }
55
+ }
56
+
57
+ export default AddModuleCallback;
58
+ callbackClassRegistry.registerClass(
59
+ AddModuleCallback.className,
60
+ AddModuleCallback,
61
+ );