@vcmap/ui 6.0.0-rc.2 → 6.0.0-rc.3

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 (178) hide show
  1. package/build/build.js +40 -60
  2. package/build/buildHelpers.js +2 -8
  3. package/build/info/conf.json +1 -1
  4. package/config/projects.config.json +2 -1
  5. package/config/splashscreen.config.json +45 -0
  6. package/dist/.htaccess +7 -0
  7. package/dist/assets/@mdi/font/README.md +25 -0
  8. package/dist/assets/@mdi/font/css/materialdesignicons.min-7a4f6be0.css +3 -0
  9. package/dist/assets/@mdi/font/css/materialdesignicons.min.css.map +16 -0
  10. package/dist/assets/@mdi/font/fonts/materialdesignicons-webfont.woff2 +0 -0
  11. package/dist/assets/cesium.js +1 -1
  12. package/dist/assets/{core.cbf44a.js → core-72f21835.js} +673 -641
  13. package/dist/assets/core.js +1 -1
  14. package/dist/assets/{ol.86e93c.js → ol-2d33bc8b.js} +42505 -44282
  15. package/dist/assets/ol.js +1 -1
  16. package/dist/assets/ui-2ab43a16.css +1 -0
  17. package/dist/assets/{ui.7c276c.js → ui-2ab43a16.js} +12026 -12100
  18. package/dist/assets/ui.js +1 -1
  19. package/dist/assets/vue.js +1 -1
  20. package/dist/assets/{vuetify.4d18fe.css → vuetify-760ced3b.css} +1 -1
  21. package/dist/assets/{vuetify.4d18fe.js → vuetify-760ced3b.js} +5720 -5662
  22. package/dist/assets/vuetify.js +1 -1
  23. package/dist/index.html +11 -10
  24. package/index.d.ts +7 -5
  25. package/index.html +5 -5
  26. package/index.js +3 -3
  27. package/lib/olLib.js +84 -23
  28. package/package.json +5 -5
  29. package/plugins/@vcmap-show-case/flight-component-example/src/FlightExample.vue +41 -1
  30. package/plugins/@vcmap-show-case/form-inputs-example/src/FormInputsExample.vue +70 -30
  31. package/plugins/@vcmap-show-case/form-inputs-example/src/exampleActions.js +7 -11
  32. package/plugins/@vcmap-show-case/form-inputs-example/src/index.js +2 -2
  33. package/plugins/@vcmap-show-case/list-example/src/ListExample.vue +21 -8
  34. package/plugins/@vcmap-show-case/style-input-example/src/StyleExample.vue +29 -90
  35. package/public/assets/@mdi/font/README.md +25 -0
  36. package/public/assets/@mdi/font/css/materialdesignicons.min.css +2 -2
  37. package/public/assets/@mdi/font/css/materialdesignicons.min.css.map +16 -0
  38. package/public/assets/@mdi/font/fonts/materialdesignicons-webfont.woff2 +0 -0
  39. package/src/actions/actionHelper.js +20 -20
  40. package/src/actions/flightActions.js +5 -5
  41. package/src/actions/listActions.d.ts +0 -7
  42. package/src/actions/listActions.js +4 -20
  43. package/src/actions/stateRefAction.js +2 -2
  44. package/src/application/VcsApp.vue +52 -27
  45. package/src/application/VcsApp.vue.d.ts +1 -0
  46. package/src/application/VcsAttributions.vue +2 -13
  47. package/src/application/VcsAttributionsFooter.vue +10 -11
  48. package/src/application/VcsPositionDisplay.vue +8 -23
  49. package/src/application/VcsPositionDisplay.vue.d.ts +0 -1
  50. package/src/application/VcsSettings.vue +10 -17
  51. package/src/application/VcsSplashScreen.vue +25 -42
  52. package/src/application/VcsSplashScreen.vue.d.ts +0 -2
  53. package/src/application/VcsTextPage.vue +12 -43
  54. package/src/application/VcsTextPage.vue.d.ts +4 -8
  55. package/src/application/VcsTextPageFooter.vue +22 -40
  56. package/src/components/extent/VcsExtentEditor.vue +1 -1
  57. package/src/components/flight/VcsFlightAnchorsComponent.vue +63 -36
  58. package/src/components/flight/VcsFlightComponent.vue +16 -21
  59. package/src/components/flight/VcsFlightPlayer.vue +27 -5
  60. package/src/components/form-inputs-controls/VcsCheckbox.vue +9 -5
  61. package/src/components/form-inputs-controls/VcsCoordinate.vue +13 -1
  62. package/src/components/form-inputs-controls/VcsCoordinate.vue.d.ts +5 -2
  63. package/src/components/form-inputs-controls/VcsDatePicker.vue +34 -60
  64. package/src/components/form-inputs-controls/VcsDatePicker.vue.d.ts +1 -63
  65. package/src/components/form-inputs-controls/VcsFileInput.vue +17 -18
  66. package/src/components/form-inputs-controls/VcsFileInput.vue.d.ts +1 -0
  67. package/src/components/form-inputs-controls/VcsLabel.vue +1 -1
  68. package/src/components/form-inputs-controls/VcsRadio.vue +17 -3
  69. package/src/components/form-inputs-controls/VcsRadio.vue.d.ts +1 -0
  70. package/src/components/form-inputs-controls/VcsSelect.vue +39 -27
  71. package/src/components/form-inputs-controls/VcsSelect.vue.d.ts +5 -2
  72. package/src/components/form-inputs-controls/VcsSlider.vue +14 -1
  73. package/src/components/form-inputs-controls/VcsSlider.vue.d.ts +5 -2
  74. package/src/components/form-inputs-controls/VcsTextArea.vue +26 -22
  75. package/src/components/form-inputs-controls/VcsTextArea.vue.d.ts +1 -0
  76. package/src/components/form-inputs-controls/VcsTextField.vue +6 -4
  77. package/src/components/form-inputs-controls/VcsWizardStep.vue +1 -1
  78. package/src/components/form-inputs-controls/vcsTextField.scss +8 -8
  79. package/src/components/form-output/VcsFormattedNumber.vue +15 -1
  80. package/src/components/form-output/VcsFormattedNumber.vue.d.ts +9 -0
  81. package/src/components/lists/VcsActionList.vue +7 -7
  82. package/src/components/lists/VcsList.vue +10 -17
  83. package/src/components/lists/VcsList.vue.d.ts +3 -7
  84. package/src/components/lists/VcsListItem.vue +51 -21
  85. package/src/components/lists/VcsListItem.vue.d.ts +11 -5
  86. package/src/components/section/VcsExpansionPanel.vue +101 -0
  87. package/src/components/section/VcsExpansionPanel.vue.d.ts +19 -0
  88. package/src/components/style/MenuWrapper.vue +24 -26
  89. package/src/components/style/MenuWrapper.vue.d.ts +4 -4
  90. package/src/components/style/VcsFillMenu.vue +9 -16
  91. package/src/components/style/VcsFillMenu.vue.d.ts +0 -18
  92. package/src/components/style/VcsFillSelector.vue +13 -16
  93. package/src/components/style/VcsImageMenu.vue +8 -25
  94. package/src/components/style/VcsImageMenu.vue.d.ts +0 -27
  95. package/src/components/style/VcsImageSelector.vue +102 -167
  96. package/src/components/style/VcsImageSelector.vue.d.ts +15 -15
  97. package/src/components/style/VcsStrokeMenu.vue +8 -15
  98. package/src/components/style/VcsStrokeMenu.vue.d.ts +0 -18
  99. package/src/components/style/VcsStrokeSelector.vue +11 -18
  100. package/src/components/style/VcsTextMenu.vue +9 -12
  101. package/src/components/style/VcsTextMenu.vue.d.ts +0 -9
  102. package/src/components/style/VcsTextSelector.vue +79 -95
  103. package/src/components/style/VcsTextSelector.vue.d.ts +20 -22
  104. package/src/components/style/VcsVectorStyleComponent.vue +7 -18
  105. package/src/components/style/VcsVectorStyleComponent.vue.d.ts +1 -1
  106. package/src/components/style/composables.d.ts +0 -14
  107. package/src/components/style/composables.js +0 -49
  108. package/src/components/vector-properties/VcsFeatureEditingWindow.vue +39 -6
  109. package/src/components/vector-properties/VcsVectorPropertiesComponent.vue +1 -1
  110. package/src/components/viewpoint/VcsViewpointComponent.vue +21 -8
  111. package/src/components/viewpoint/VcsViewpointEditor.vue +1 -0
  112. package/src/contentTree/contentTreeItem.d.ts +2 -2
  113. package/src/contentTree/contentTreeItem.js +7 -7
  114. package/src/featureInfo/featureInfo.js +8 -10
  115. package/src/init.d.ts +5 -38
  116. package/src/init.js +19 -18
  117. package/src/legend/StyleLegendItem.vue +4 -9
  118. package/src/legend/VcsLegend.vue +28 -54
  119. package/src/manager/buttonManager.js +4 -4
  120. package/src/manager/collectionManager/CollectionComponent.vue +17 -42
  121. package/src/manager/collectionManager/CollectionComponent.vue.d.ts +4 -2
  122. package/src/manager/collectionManager/CollectionComponentContent.vue +7 -6
  123. package/src/manager/collectionManager/CollectionComponentContent.vue.d.ts +3 -1
  124. package/src/manager/collectionManager/CollectionComponentList.vue +10 -8
  125. package/src/manager/collectionManager/CollectionComponentList.vue.d.ts +4 -2
  126. package/src/manager/collectionManager/CollectionComponentProvider.vue +1 -1
  127. package/src/manager/collectionManager/CollectionComponentStandalone.vue +3 -2
  128. package/src/manager/collectionManager/CollectionManager.vue +1 -1
  129. package/src/manager/collectionManager/collectionComponentClass.js +6 -9
  130. package/src/manager/collectionManager/collectionManager.js +10 -10
  131. package/src/manager/collectionManager/editorCollectionComponentClass.js +4 -4
  132. package/src/manager/contextMenu/contextMenuManager.js +2 -2
  133. package/src/manager/navbarManager.js +2 -2
  134. package/src/manager/panel/panelManager.js +3 -3
  135. package/src/manager/toolbox/toolboxManager.js +10 -10
  136. package/src/manager/window/windowManager.d.ts +2 -2
  137. package/src/manager/window/windowManager.js +4 -4
  138. package/src/search/search.js +2 -2
  139. package/src/siteConfig.js +1 -1
  140. package/src/state.js +4 -4
  141. package/src/vcsUiApp.d.ts +14 -10
  142. package/src/vcsUiApp.js +1 -1
  143. package/src/vuePlugins/vuetify.d.ts +2 -0
  144. package/src/vuePlugins/vuetify.js +11 -0
  145. package/dist/assets/@mdi/font/css/materialdesignicons.css.map +0 -16
  146. package/dist/assets/@mdi/font/css/materialdesignicons.min.e3f476.css +0 -3
  147. package/dist/assets/index-8eGauqjA.js +0 -1
  148. package/dist/assets/ui.7c276c.css +0 -1
  149. package/public/assets/@mdi/font/css/materialdesignicons.css.map +0 -16
  150. package/src/application/VcsCustomScreen.vue +0 -45
  151. package/src/application/VcsCustomScreen.vue.d.ts +0 -15
  152. /package/dist/assets/{cesium.0b750d.js → cesium-cb4dbfba.js} +0 -0
  153. /package/dist/assets/{favicon-128.4c4ce5.png → favicon-128-4c4ce5df.png} +0 -0
  154. /package/dist/assets/{favicon-180.5b99c0.png → favicon-180-4c4ce5df.png} +0 -0
  155. /package/dist/assets/{favicon-192.0e205e.png → favicon-192-4c4ce5df.png} +0 -0
  156. /package/dist/assets/{favicon-32.6b9add.png → favicon-32-4c4ce5df.png} +0 -0
  157. /package/dist/assets/{favicon.d5ec97.svg → favicon-4c4ce5df.svg} +0 -0
  158. /package/dist/assets/font/{TitilliumWeb-Regular.9ca076.woff2 → TitilliumWeb-Regular-9ca076be.woff2} +0 -0
  159. /package/dist/assets/style/{icon-marker.70960f.png → icon-marker-70960f05.png} +0 -0
  160. /package/dist/assets/style/{icon-marker-blue.534e37.png → icon-marker-blue-534e374b.png} +0 -0
  161. /package/dist/assets/style/{icon-marker-green.0b6a92.png → icon-marker-green-0b6a92bc.png} +0 -0
  162. /package/dist/assets/style/{icon-marker-o.036477.png → icon-marker-o-036477fa.png} +0 -0
  163. /package/dist/assets/style/{icon-marker-o-blue.7b6d62.png → icon-marker-o-blue-7b6d6279.png} +0 -0
  164. /package/dist/assets/style/{icon-marker-o-green.c863c0.png → icon-marker-o-green-c863c0fa.png} +0 -0
  165. /package/dist/assets/style/{icon-marker-o-red.93ff58.png → icon-marker-o-red-93ff58df.png} +0 -0
  166. /package/dist/assets/style/{icon-marker-red.313d03.png → icon-marker-red-313d03e8.png} +0 -0
  167. /package/dist/assets/style/{icon-pin.b7ce77.png → icon-pin-b7ce771e.png} +0 -0
  168. /package/dist/assets/style/{icon-pin-blue.7be369.png → icon-pin-blue-7be369a3.png} +0 -0
  169. /package/dist/assets/style/{icon-pin-green.cbb935.png → icon-pin-green-cbb935fe.png} +0 -0
  170. /package/dist/assets/style/{icon-pin-red.3f25b2.png → icon-pin-red-3f25b245.png} +0 -0
  171. /package/dist/assets/{vue.a3cd64.js → vue-03b265aa.js} +0 -0
  172. /package/public/assets/{favicon-128.png → favicon-128-4c4ce5df.png} +0 -0
  173. /package/public/assets/{favicon-180.png → favicon-180-4c4ce5df.png} +0 -0
  174. /package/public/assets/{favicon-192.png → favicon-192-4c4ce5df.png} +0 -0
  175. /package/public/assets/{favicon-32.png → favicon-32-4c4ce5df.png} +0 -0
  176. /package/public/assets/{favicon.svg → favicon-4c4ce5df.svg} +0 -0
  177. /package/src/components/{form-inputs-controls → section}/VcsFormSection.vue +0 -0
  178. /package/src/components/{form-inputs-controls → section}/VcsFormSection.vue.d.ts +0 -0
@@ -1,5 +1,5 @@
1
1
  import { v4 as uuid } from 'uuid';
2
- import { check, checkMaybe } from '@vcsuite/check';
2
+ import { check, maybe, oneOf, optional } from '@vcsuite/check';
3
3
  import {
4
4
  Collection,
5
5
  Extent,
@@ -48,8 +48,8 @@ import SearchComponent from '../search/SearchComponent.vue';
48
48
  */
49
49
  export function getActionFromOptions(options) {
50
50
  check(options.name, String);
51
- checkMaybe(options.title, String);
52
- checkMaybe(options.icon, String);
51
+ check(options.title, maybe(String));
52
+ check(options.icon, maybe(String));
53
53
  check(options.callback, Function);
54
54
  options.active = parseBoolean(options.active, false);
55
55
  options.hasUpdate = parseBoolean(options.hasUpdate, false);
@@ -67,8 +67,8 @@ export function getActionFromOptions(options) {
67
67
  export function createMapButtonAction(actionOptions, mapName, maps) {
68
68
  check(actionOptions, {
69
69
  name: String,
70
- icon: [undefined, String],
71
- title: [undefined, String],
70
+ icon: optional(String),
71
+ title: optional(String),
72
72
  });
73
73
  check(mapName, String);
74
74
  check(maps, MapCollection);
@@ -104,12 +104,12 @@ export function createToggleAction(
104
104
  ) {
105
105
  check(actionOptions, {
106
106
  name: String,
107
- icon: [undefined, String],
108
- title: [undefined, String],
109
- hasUpdate: [undefined, Boolean],
107
+ icon: optional(String),
108
+ title: optional(String),
109
+ hasUpdate: optional(Boolean),
110
110
  });
111
111
  check(windowComponent, { id: String });
112
- check(owner, [String, vcsAppSymbol]);
112
+ check(owner, oneOf(String, vcsAppSymbol));
113
113
 
114
114
  const action = reactive({
115
115
  ...actionOptions,
@@ -256,10 +256,10 @@ export function createOverviewMapAction(
256
256
  export function createModalAction(actionOptions, modalComponent, app, owner) {
257
257
  check(actionOptions, {
258
258
  name: String,
259
- icon: [undefined, String],
260
- title: [undefined, String],
259
+ icon: optional(String),
260
+ title: optional(String),
261
261
  });
262
- check(owner, [String, vcsAppSymbol]);
262
+ check(owner, oneOf(String, vcsAppSymbol));
263
263
 
264
264
  const id = uuid();
265
265
  const { position: windowPositionOptions, ...component } = modalComponent;
@@ -334,10 +334,10 @@ export function createModalAction(actionOptions, modalComponent, app, owner) {
334
334
  export function createLinkAction(actionOptions, url) {
335
335
  check(actionOptions, {
336
336
  name: String,
337
- icon: [undefined, String],
338
- title: [undefined, String],
337
+ icon: optional(String),
338
+ title: optional(String),
339
339
  });
340
- check(url, [String, Function]);
340
+ check(url, oneOf(String, Function));
341
341
 
342
342
  return {
343
343
  ...actionOptions,
@@ -369,10 +369,10 @@ export function createGoToViewpointAction(
369
369
  ) {
370
370
  check(actionOptions, {
371
371
  name: String,
372
- icon: [undefined, String],
373
- title: [undefined, String],
372
+ icon: optional(String),
373
+ title: optional(String),
374
374
  });
375
- check(viewpoint, [Viewpoint, String]);
375
+ check(viewpoint, oneOf(Viewpoint, String));
376
376
  check(viewpointCollection, Collection);
377
377
  check(mapCollection, MapCollection);
378
378
 
@@ -422,8 +422,8 @@ export function createZoomToFeatureAction(
422
422
  ) {
423
423
  check(actionOptions, {
424
424
  name: String,
425
- icon: [undefined, String],
426
- title: [undefined, String],
425
+ icon: optional(String),
426
+ title: optional(String),
427
427
  });
428
428
  check(feature, Feature);
429
429
  check(mapCollection, MapCollection);
@@ -1,5 +1,5 @@
1
1
  import { reactive } from 'vue';
2
- import { check, checkMaybe } from '@vcsuite/check';
2
+ import { check, maybe, ofEnum } from '@vcsuite/check';
3
3
  import {
4
4
  createFlightVisualization,
5
5
  exportFlightAsGeoJson,
@@ -87,7 +87,7 @@ export const PlayerDirection = {
87
87
  * @returns {{action: import("./actionHelper.js").VcsAction, destroy: () => void}}
88
88
  */
89
89
  export function createStepAction(app, instance, direction) {
90
- check(direction, Object.values(PlayerDirection));
90
+ check(direction, ofEnum(PlayerDirection));
91
91
 
92
92
  let player;
93
93
  const action = reactive({
@@ -123,7 +123,7 @@ export function createStepAction(app, instance, direction) {
123
123
  * @returns {{ action: import("./actionHelper.js").VcsAction & { listeners:Object<string,()=>void>, destroy: () => void }}}
124
124
  */
125
125
  export function createFastAction(app, instance, direction) {
126
- check(direction, Object.values(PlayerDirection));
126
+ check(direction, ofEnum(PlayerDirection));
127
127
 
128
128
  let player;
129
129
  const sign = direction === PlayerDirection.Forward ? 1 : -1;
@@ -421,8 +421,8 @@ export function createExportFlightAction(instance, isPathExport = false) {
421
421
  * @returns {Promise<boolean>}
422
422
  */
423
423
  export async function importFlights(app, files, moduleId, importSuccessCb) {
424
- checkMaybe(moduleId, String);
425
- checkMaybe(importSuccessCb, Function);
424
+ check(moduleId, maybe(String));
425
+ check(importSuccessCb, maybe(Function));
426
426
 
427
427
  const { vueI18n } = app;
428
428
  const results = await Promise.all(
@@ -1,10 +1,3 @@
1
- /**
2
- * Creates an action for renaming an item in a VcsList. Shows VcsTextfield in VcsList.
3
- * @param {import("../components/lists/VcsList.vue").VcsListItem} item
4
- * @param {Partial<import("./actionHelper.js").ActionOptions>} [actionOptions={}]
5
- * @returns {import("./actionHelper.js").VcsAction}
6
- */
7
- export function createListItemRenameAction(item: import("../components/lists/VcsList.vue").VcsListItem, actionOptions?: Partial<import("./actionHelper.js").ActionOptions> | undefined): import("./actionHelper.js").VcsAction;
8
1
  /**
9
2
  * Creates an action for renaming an item in a VcsList.
10
3
  * @param {import("@vcmap/core").Collection<T>} collection
@@ -1,5 +1,5 @@
1
1
  import { reactive, watch } from 'vue';
2
- import { check } from '@vcsuite/check';
2
+ import { check, oneOf, optional } from '@vcsuite/check';
3
3
  import { getLogger } from '@vcsuite/logger';
4
4
  import { parseGeoJSON } from '@vcmap/core';
5
5
  import VcsImportComponent from '../components/import/VcsImportComponent.vue';
@@ -8,22 +8,6 @@ import { WindowSlot } from '../manager/window/windowManager.js';
8
8
  import { vcsAppSymbol } from '../pluginHelper.js';
9
9
  import { NotificationType } from '../notifier/notifier.js';
10
10
 
11
- /**
12
- * Creates an action for renaming an item in a VcsList. Shows VcsTextfield in VcsList.
13
- * @param {import("../components/lists/VcsList.vue").VcsListItem} item
14
- * @param {Partial<import("./actionHelper.js").ActionOptions>} [actionOptions={}]
15
- * @returns {import("./actionHelper.js").VcsAction}
16
- */
17
- export function createListItemRenameAction(item, actionOptions = {}) {
18
- return {
19
- name: 'list.renameItem',
20
- ...actionOptions,
21
- callback: () => {
22
- item.rename = true;
23
- },
24
- };
25
- }
26
-
27
11
  /**
28
12
  * Creates an action for renaming an item in a VcsList.
29
13
  * @param {import("@vcmap/core").Collection<T>} collection
@@ -57,8 +41,8 @@ export function createListItemDeleteAction(
57
41
  export function createListItemBulkAction(selection, actionOptions) {
58
42
  check(actionOptions, {
59
43
  name: String,
60
- icon: [undefined, String],
61
- title: [undefined, String],
44
+ icon: optional(String),
45
+ title: optional(String),
62
46
  callback: Function,
63
47
  });
64
48
 
@@ -218,7 +202,7 @@ export function createListImportAction(
218
202
  parentId,
219
203
  ) {
220
204
  check(importCallback, Function);
221
- check(owner, [String, vcsAppSymbol]);
205
+ check(owner, oneOf(String, vcsAppSymbol));
222
206
  check(parentId, String);
223
207
 
224
208
  const { action, destroy } = createToggleAction(
@@ -1,5 +1,5 @@
1
1
  import { reactive, watch } from 'vue';
2
- import { check } from '@vcsuite/check';
2
+ import { check, ofEnum } from '@vcsuite/check';
3
3
 
4
4
  /**
5
5
  * @enum {number}
@@ -28,7 +28,7 @@ const stateIconMap = {
28
28
  */
29
29
  export function createStateRefAction(name, stateRef, callback) {
30
30
  check(name, String);
31
- check(stateRef?.value, Object.values(StateActionState));
31
+ check(stateRef?.value, ofEnum(StateActionState));
32
32
  check(callback, Function);
33
33
 
34
34
  const currentState = stateRef.value;
@@ -7,7 +7,13 @@
7
7
  ></VcsSplashScreen>
8
8
  <VcsNavbar />
9
9
  <VcsContainer :attribution-action="attributionAction" />
10
- <v-footer v-if="smAndUp" app absolute height="22" class="d-flex gc-1 pa-0">
10
+ <v-footer
11
+ v-if="smAndUp"
12
+ app
13
+ absolute
14
+ :height="footerHeight"
15
+ class="d-flex gc-1 pa-0"
16
+ >
11
17
  <VcsPositionDisplay />
12
18
  <VcsTextPageFooter
13
19
  v-if="imprint"
@@ -57,13 +63,13 @@
57
63
  import VcsSettings from './VcsSettings.vue';
58
64
  import { WindowSlot } from '../manager/window/windowManager.js';
59
65
  import CollectionManager from '../manager/collectionManager/CollectionManager.vue';
60
- import { defaultPrimaryColor } from '../vuePlugins/vuetify.js';
66
+ import { defaultPrimaryColor, useFontSize } from '../vuePlugins/vuetify.js';
61
67
  import VcsLegend from '../legend/VcsLegend.vue';
62
68
  import { getLegendEntries } from '../legend/legendHelper.js';
63
69
  import VcsAttributionsFooter from './VcsAttributionsFooter.vue';
64
70
  import VcsTextPageFooter from './VcsTextPageFooter.vue';
65
71
  import VcsSplashScreen from './VcsSplashScreen.vue';
66
- import VcsCustomScreen from './VcsCustomScreen.vue';
72
+ import VcsTextPage from './VcsTextPage.vue';
67
73
  import VcsAttributions from './VcsAttributions.vue';
68
74
  import { getAttributions } from './attributionsHelper.js';
69
75
  import VcsDefaultLogoMobile from '../logo-mobile.svg';
@@ -267,7 +273,7 @@
267
273
  },
268
274
  {
269
275
  id: 'customScreenId',
270
- component: VcsCustomScreen,
276
+ component: VcsTextPage,
271
277
  state: {
272
278
  headerIcon: customScreen.icon,
273
279
  headerTitle: customScreen.name,
@@ -322,36 +328,50 @@
322
328
  function setupSplashScreen(app, splashScreenRef) {
323
329
  function setupSplashScreenAction() {
324
330
  const { splashScreen } = app.uiConfig.config.value;
325
- const splashScreenAction = {
326
- name: splashScreen.name || 'components.splashScreen.name',
327
- icon: splashScreen.icon || 'mdi-alert-box',
328
- title: splashScreen.title,
329
- callback() {
330
- splashScreenRef.value = !splashScreenRef.value;
331
- },
332
- };
333
- app.navbarManager.add(
334
- {
335
- id: 'splashScreenToggle',
336
- action: splashScreenAction,
337
- },
338
- vcsAppSymbol,
339
- ButtonLocation.MENU,
340
- );
331
+ if (splashScreen) {
332
+ splashScreenRef.value = true;
333
+ }
334
+ if (splashScreen && splashScreen.menuEntry) {
335
+ const splashScreenAction = {
336
+ name: splashScreen.name || 'components.splashScreen.name',
337
+ icon: splashScreen.icon || 'mdi-alert-box',
338
+ title: splashScreen.title,
339
+ callback() {
340
+ splashScreenRef.value = !splashScreenRef.value;
341
+ },
342
+ };
343
+ app.navbarManager.add(
344
+ {
345
+ id: 'splashScreenToggle',
346
+ action: splashScreenAction,
347
+ },
348
+ vcsAppSymbol,
349
+ ButtonLocation.MENU,
350
+ );
351
+ }
341
352
  }
342
-
343
- return watch(
344
- () => app.uiConfig.config.value.splashScreen,
345
- (newSplashScreen) => {
353
+ setupSplashScreenAction();
354
+ const removeAddedListener = app.uiConfig.added.addEventListener((item) => {
355
+ if (item.name === 'splashScreen') {
346
356
  if (app.navbarManager.has('splashScreenToggle')) {
347
357
  app.navbarManager.remove('splashScreenToggle');
348
358
  }
349
- if (newSplashScreen && newSplashScreen.menuEntry) {
350
- setupSplashScreenAction();
359
+ setupSplashScreenAction();
360
+ }
361
+ });
362
+ const removeRemovedListener = app.uiConfig.removed.addEventListener(
363
+ (item) => {
364
+ if (item.name === 'splashScreen') {
365
+ if (app.navbarManager.has('splashScreenToggle')) {
366
+ app.navbarManager.remove('splashScreenToggle');
367
+ }
351
368
  }
352
369
  },
353
- { immediate: true },
354
370
  );
371
+ return () => {
372
+ removeAddedListener();
373
+ removeRemovedListener();
374
+ };
355
375
  }
356
376
  /**
357
377
  * This helper function will add a settings action button to the apps NavbarManager MENU location.
@@ -685,9 +705,14 @@
685
705
  });
686
706
 
687
707
  const { smAndUp } = useDisplay();
708
+ const fontSize = useFontSize();
709
+ const footerHeight = computed(() => {
710
+ return Math.ceil(fontSize.value * 1.65);
711
+ });
688
712
 
689
713
  return {
690
714
  smAndUp,
715
+ footerHeight,
691
716
  mobileLogo: computed(
692
717
  () =>
693
718
  app.uiConfig.config.value.mobileLogo ??
@@ -72,6 +72,7 @@ declare const _default: import("vue").DefineComponent<{
72
72
  };
73
73
  }, {
74
74
  smAndUp: import("vue").Ref<boolean>;
75
+ footerHeight: import("vue").ComputedRef<number>;
75
76
  mobileLogo: import("vue").ComputedRef<any>;
76
77
  imprint: import("vue").ComputedRef<{
77
78
  title: string;
@@ -25,21 +25,10 @@
25
25
  </template>
26
26
 
27
27
  <style lang="scss" scoped>
28
- @import '../styles/shades.scss';
29
-
30
- .theme--light {
31
- a {
32
- color: map-get($shades, 'black');
33
- }
34
- }
35
- .theme--dark {
36
- a {
37
- color: map-get($shades, 'white');
38
- }
39
- }
40
28
  a {
29
+ color: var(--v-theme-surface);
41
30
  &:hover {
42
- color: var(--v-primary-base);
31
+ color: rgb(var(--v-theme-primary));
43
32
  }
44
33
  &:before {
45
34
  content: '\00a9';
@@ -2,11 +2,11 @@
2
2
  <span class="d-inline-block text-truncate mr-10">
3
3
  <span
4
4
  v-for="attribution in mergedAttributions"
5
- class="attribution-span"
5
+ class="attribution"
6
6
  :key="attribution.provider"
7
7
  >
8
- <a :href="attribution.url" target="_blank"
9
- >{{ $st(attribution.provider) }} <span>{{ attribution.years }}</span>
8
+ <a :href="attribution.url" target="_blank">
9
+ {{ $st(attribution.provider) }} <span>{{ attribution.years }}</span>
10
10
  </a>
11
11
  </span>
12
12
  <VcsButton
@@ -21,14 +21,7 @@
21
21
  </template>
22
22
 
23
23
  <style lang="scss" scoped>
24
- .attribution-wrap .vcs-button-wrap {
25
- bottom: 3px;
26
- }
27
-
28
- a:before {
29
- content: '\00a9\00a0';
30
- }
31
- .attribution-span {
24
+ .attribution {
32
25
  font-size: smaller;
33
26
  &:before {
34
27
  content: '\00a0\007c\00a0';
@@ -39,6 +32,12 @@
39
32
  span {
40
33
  font-size: inherit;
41
34
  }
35
+ a {
36
+ color: var(--v-text-color);
37
+ &:before {
38
+ content: '\00a9\00a0';
39
+ }
40
+ }
42
41
  }
43
42
  </style>
44
43
 
@@ -1,13 +1,13 @@
1
1
  <template>
2
2
  <span
3
- class="d-flex gc-1 px-1"
3
+ class="d-flex gc-2 px-1 h-100 align-center"
4
4
  :class="{ 'vcs-position-display': positionDisplayAction.active }"
5
5
  >
6
6
  <VcsButton
7
7
  :tooltip="positionDisplayAction.title"
8
8
  :icon="positionDisplayAction.icon"
9
9
  @click.stop="positionDisplayAction.callback($event)"
10
- :custom-classes="customClasses"
10
+ :class="{ 'bg-primary': positionDisplayAction.active }"
11
11
  >
12
12
  </VcsButton>
13
13
  <template
@@ -17,17 +17,20 @@
17
17
  prefix="x:"
18
18
  :model-value="transformedPosition[0]"
19
19
  :fraction-digits="fractionDigits"
20
+ class="pa-0"
20
21
  />
21
22
  <VcsFormattedNumber
22
23
  no-padding
23
24
  prefix="y:"
24
25
  :model-value="transformedPosition[1]"
25
26
  :fraction-digits="fractionDigits"
27
+ class="pa-0"
26
28
  />
27
29
  <VcsFormattedNumber
28
30
  v-if="transformedPosition[2]"
29
31
  prefix="z:"
30
32
  :model-value="transformedPosition[2]"
33
+ class="pa-0"
31
34
  />
32
35
  </template>
33
36
  <v-menu v-if="positionDisplayAction.active">
@@ -36,10 +39,10 @@
36
39
  v-bind="props"
37
40
  tooltip="footer.positionDisplay.projection"
38
41
  icon="mdi-chevron-down"
39
- :custom-classes="customClasses"
42
+ class="bg-primary"
40
43
  />
41
44
  </template>
42
- <v-list selectable density="compact" v-model:selected="selectedEPSG">
45
+ <v-list selectable v-model:selected="selectedEPSG">
43
46
  <v-list-item v-for="(item, i) in items" :key="i" :value="item.value">
44
47
  <v-list-item-title>{{ $st(item.text) }}</v-list-item-title>
45
48
  </v-list-item>
@@ -49,22 +52,10 @@
49
52
  </template>
50
53
 
51
54
  <style lang="scss" scoped>
52
- @import '../styles/shades.scss';
53
-
54
55
  .vcs-position-display {
55
- height: 22px;
56
56
  background-color: rgb(var(--v-theme-primary));
57
57
  span {
58
- color: map-get($shades, 'white');
59
- }
60
-
61
- :deep(.vcs-formatted-number),
62
- :deep(.vcs-formatted-number span) {
63
- font-size: unset;
64
- line-height: unset;
65
- }
66
- :deep(.vcs-formatted-number-dense) {
67
- line-height: unset;
58
+ color: rgb(var(--v-theme-on-primary));
68
59
  }
69
60
  }
70
61
  </style>
@@ -89,7 +80,6 @@
89
80
 
90
81
  /**
91
82
  * @description Activates an interaction to display the mouse click or mouse move position, depending on the uiConfig property 'positionDisplayEventType'
92
- * @vue-computed {string[]} customClasses - changes button color depending on state
93
83
  * @vue-computed {import("ol").Coordinate} transformedPosition - position in selected projection
94
84
  * @vue-computed {number} fractionDigits - number of digits depending on selected projection
95
85
  */
@@ -174,10 +164,6 @@
174
164
  },
175
165
  });
176
166
 
177
- const customClasses = computed(() => {
178
- return positionDisplayAction.active ? ['primary'] : [];
179
- });
180
-
181
167
  const transformedPosition = computed(() => {
182
168
  if (position.value.length > 0) {
183
169
  return mercatorProjection.transformTo(
@@ -198,7 +184,6 @@
198
184
  fractionDigits,
199
185
  selectedEPSG,
200
186
  items,
201
- customClasses,
202
187
  };
203
188
  },
204
189
  };
@@ -13,6 +13,5 @@ declare const _default: import("vue").DefineComponent<{}, {
13
13
  text: any;
14
14
  value: string;
15
15
  }[]>;
16
- customClasses: import("vue").ComputedRef<string[]>;
17
16
  }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{}>>, {}, {}>;
18
17
  export default _default;
@@ -19,20 +19,18 @@
19
19
  {{ $t('settings.displayQuality.title') }}
20
20
  </VcsLabel>
21
21
  </v-row>
22
- <v-row v-if="is3D" no-gutters class="quality-slider-padding">
22
+ <v-row v-if="is3D" no-gutters>
23
23
  <VcsSlider
24
- step="1"
24
+ :step="1"
25
25
  v-model="displaySettings"
26
- type="number"
27
- max="2"
28
- min="0"
29
- ticks="always"
30
- tick-size="5"
31
- :tick-labels="[
32
- $t('settings.displayQuality.level.low'),
33
- $t('settings.displayQuality.level.medium'),
34
- $t('settings.displayQuality.level.high'),
35
- ]"
26
+ :max="2"
27
+ :min="0"
28
+ show-ticks="always"
29
+ :ticks="{
30
+ 0: $t('settings.displayQuality.level.low'),
31
+ 1: $t('settings.displayQuality.level.medium'),
32
+ 2: $t('settings.displayQuality.level.high'),
33
+ }"
36
34
  />
37
35
  </v-row>
38
36
  <v-row no-gutters>
@@ -170,8 +168,3 @@
170
168
  },
171
169
  };
172
170
  </script>
173
- <style scoped>
174
- .quality-slider-padding {
175
- padding-bottom: 20px !important;
176
- }
177
- </style>