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

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 (235) hide show
  1. package/build/buildHelpers.js +60 -11
  2. package/build/buildTypes.js +9 -5
  3. package/build/bundle.js +1 -1
  4. package/build/info/publish.js +25 -31
  5. package/build/lintTypes.js +5 -0
  6. package/config/base.config.json +2 -7
  7. package/config/dev.config.json +11 -1
  8. package/config/projects.config.json +2 -1
  9. package/config/theming.config.json +68 -0
  10. package/config/www.config.json +27 -23
  11. package/dist/assets/@mdi/font/css/{materialdesignicons.min-7a4f6be0.css → materialdesignicons.min-680621ca.css} +1 -1
  12. package/dist/assets/{cesium-cb4dbfba.js → cesium-ccb4cc30.js} +272 -385
  13. package/dist/assets/cesium.js +1 -1
  14. package/dist/assets/{core-72f21835.js → core-e06aa7a6.js} +2313 -2321
  15. package/dist/assets/core.js +1 -1
  16. package/dist/assets/{ol-2d33bc8b.js → ol-e7981d5c.js} +233 -329
  17. package/dist/assets/ol.js +1 -1
  18. package/dist/assets/ui-5dda32d2.css +1 -0
  19. package/dist/assets/{ui-2ab43a16.js → ui-5dda32d2.js} +11344 -11078
  20. package/dist/assets/ui.js +1 -1
  21. package/dist/assets/vue-87bc6efe.js +6083 -0
  22. package/dist/assets/vue.js +1 -1
  23. package/dist/assets/{vuetify-760ced3b.css → vuetify-4c4e4217.css} +2 -2
  24. package/dist/assets/{vuetify-760ced3b.js → vuetify-4c4e4217.js} +8063 -8262
  25. package/dist/assets/vuetify.js +1 -1
  26. package/index.d.ts +27 -17
  27. package/index.js +16 -8
  28. package/package.json +17 -17
  29. package/plugins/@vcmap-show-case/custom-icons-example/README.md +3 -0
  30. package/plugins/@vcmap-show-case/custom-icons-example/assets/imageExample.png +0 -0
  31. package/plugins/@vcmap-show-case/custom-icons-example/assets/svgExample.svg +1 -0
  32. package/plugins/@vcmap-show-case/custom-icons-example/package.json +5 -0
  33. package/plugins/@vcmap-show-case/custom-icons-example/src/CustomIconsExample.vue +90 -0
  34. package/plugins/@vcmap-show-case/custom-icons-example/src/index.js +45 -0
  35. package/plugins/@vcmap-show-case/form-inputs-example/src/FormInputsExample.vue +2 -3
  36. package/plugins/@vcmap-show-case/plugin-editors/src/PluginEditors.vue +11 -7
  37. package/plugins/@vcmap-show-case/project-selector/src/ModulesListComponent.vue +18 -11
  38. package/plugins/@vcmap-show-case/search-example/src/index.js +1 -0
  39. package/plugins/@vcmap-show-case/search-example/src/searchImpl.js +35 -5
  40. package/plugins/@vcmap-show-case/theming-example/README.md +3 -0
  41. package/plugins/@vcmap-show-case/theming-example/package.json +5 -0
  42. package/plugins/@vcmap-show-case/theming-example/src/ThemingExample.vue +116 -0
  43. package/plugins/@vcmap-show-case/theming-example/src/index.js +53 -0
  44. package/plugins/@vcmap-show-case/toolbox-example/src/index.js +2 -1
  45. package/plugins/package.json +7 -23
  46. package/public/assets/@mdi/font/css/materialdesignicons.min.css +1 -1
  47. package/src/actions/StyleSelector.vue +1 -1
  48. package/src/actions/actionHelper.d.ts +4 -11
  49. package/src/actions/actionHelper.js +15 -7
  50. package/src/actions/listActions.d.ts +5 -5
  51. package/src/actions/listActions.js +2 -2
  52. package/src/application/VcsApp.vue +113 -50
  53. package/src/application/VcsApp.vue.d.ts +301 -4
  54. package/src/application/VcsAttributionsFooter.vue.d.ts +1 -1
  55. package/src/application/VcsContainer.vue +27 -10
  56. package/src/application/VcsContainer.vue.d.ts +241 -0
  57. package/src/application/VcsMainMap.vue +7 -7
  58. package/src/application/VcsMainMap.vue.d.ts +2 -2
  59. package/src/application/VcsNavbar.vue +14 -2
  60. package/src/application/VcsNavbar.vue.d.ts +1 -0
  61. package/src/application/VcsSplashScreen.vue +33 -26
  62. package/src/application/VcsTextPageFooter.vue +2 -1
  63. package/src/application/attributionsHelper.d.ts +20 -22
  64. package/src/application/attributionsHelper.js +4 -4
  65. package/src/callback/vcsCallback.d.ts +2 -2
  66. package/src/callback/vcsCallback.js +1 -1
  67. package/src/components/buttons/VcsActionButtonList.vue +61 -6
  68. package/src/components/buttons/VcsActionButtonList.vue.d.ts +28 -0
  69. package/src/components/buttons/VcsButton.vue +2 -4
  70. package/src/components/buttons/VcsButton.vue.d.ts +1 -1
  71. package/src/components/buttons/VcsFormButton.vue +4 -4
  72. package/src/components/buttons/VcsToolButton.vue +4 -2
  73. package/src/components/buttons/VcsToolButton.vue.d.ts +2 -2
  74. package/src/components/composables.d.ts +5 -0
  75. package/src/components/composables.js +79 -9
  76. package/src/components/extent/VcsExtent.vue +10 -6
  77. package/src/components/extent/VcsExtent.vue.d.ts +1 -0
  78. package/src/components/flight/VcsFlightComponent.vue +13 -13
  79. package/src/components/flight/VcsFlightComponent.vue.d.ts +1 -0
  80. package/src/components/form-inputs-controls/VcsCheckbox.vue +8 -3
  81. package/src/components/form-inputs-controls/VcsChipArrayInput.vue +13 -16
  82. package/src/components/form-inputs-controls/VcsChipArrayInput.vue.d.ts +2 -4
  83. package/src/components/form-inputs-controls/VcsCoordinate.vue +4 -4
  84. package/src/components/form-inputs-controls/VcsFileInput.vue +1 -1
  85. package/src/components/form-inputs-controls/VcsLabel.vue +1 -1
  86. package/src/components/form-inputs-controls/VcsRadio.vue +8 -6
  87. package/src/components/form-inputs-controls/VcsRadio.vue.d.ts +1 -0
  88. package/src/components/form-inputs-controls/VcsSelect.vue +2 -5
  89. package/src/components/form-inputs-controls/VcsSlider.vue +5 -6
  90. package/src/components/form-inputs-controls/VcsSlider.vue.d.ts +2 -4
  91. package/src/components/form-inputs-controls/VcsTextArea.vue +2 -5
  92. package/src/components/form-inputs-controls/VcsTextField.vue +24 -1
  93. package/src/components/form-inputs-controls/VcsTextField.vue.d.ts +11 -1
  94. package/src/components/form-inputs-controls/VcsWizard.vue +3 -3
  95. package/src/components/form-inputs-controls/VcsWizardStep.vue +6 -5
  96. package/src/components/form-inputs-controls/vcsTextField.scss +8 -5
  97. package/src/components/form-output/VcsFormattedNumber.vue +7 -5
  98. package/src/components/form-output/VcsMarkdown.vue +15 -12
  99. package/src/components/form-output/VcsMarkdown.vue.d.ts +1 -0
  100. package/src/components/form-output/markdownHelper.d.ts +30 -0
  101. package/src/components/form-output/markdownHelper.js +398 -0
  102. package/src/components/import/VcsFileDrop.vue +8 -5
  103. package/src/components/import/VcsImportComponent.vue +8 -4
  104. package/src/components/import/VcsImportComponent.vue.d.ts +1 -2
  105. package/src/components/lists/VcsActionList.vue +6 -6
  106. package/src/components/lists/VcsList.vue +22 -37
  107. package/src/components/lists/VcsList.vue.d.ts +14 -55
  108. package/src/components/lists/{VcsListItem.vue → VcsListItemComponent.vue} +37 -11
  109. package/src/components/lists/VcsListItemComponent.vue.d.ts +79 -0
  110. package/src/components/lists/VcsTreeview.vue +95 -26
  111. package/src/components/lists/VcsTreeview.vue.d.ts +16 -3
  112. package/src/components/lists/VcsTreeviewSearchbar.vue +16 -5
  113. package/src/components/lists/VcsTreeviewSearchbar.vue.d.ts +3 -1
  114. package/src/components/lists/VcsTreeviewTitle.vue +36 -0
  115. package/src/components/modelHelper.d.ts +10 -8
  116. package/src/components/modelHelper.js +8 -6
  117. package/src/components/notification/VcsHelp.vue +6 -7
  118. package/src/components/notification/VcsHelp.vue.d.ts +0 -8
  119. package/src/components/plugins/AbstractConfigEditor.vue +1 -22
  120. package/src/components/plugins/AbstractConfigEditor.vue.d.ts +6 -29
  121. package/src/components/section/VcsExpansionPanel.vue +9 -3
  122. package/src/components/section/VcsExpansionPanel.vue.d.ts +2 -2
  123. package/src/components/section/VcsFormSection.vue +13 -7
  124. package/src/components/section/VcsFormSection.vue.d.ts +2 -3
  125. package/src/components/style/VcsImageSelector.vue +14 -6
  126. package/src/components/style/VcsImageSelector.vue.d.ts +1 -0
  127. package/src/components/style/VcsStrokeSelector.vue +5 -2
  128. package/src/components/style/VcsStrokeSelector.vue.d.ts +1 -0
  129. package/src/components/style/VcsTextMenu.vue +3 -3
  130. package/src/components/style/VcsVectorStyleComponent.vue +1 -1
  131. package/src/components/tables/VcsDataTable.vue +42 -32
  132. package/src/components/tables/VcsDataTable.vue.d.ts +1 -0
  133. package/src/components/tables/VcsTable.vue +45 -62
  134. package/src/components/tables/VcsTable.vue.d.ts +30 -17
  135. package/src/components/tables/VcsTableCell.vue +72 -0
  136. package/src/components/tables/VcsTableCell.vue.d.ts +13 -0
  137. package/src/components/vector-properties/VcsFeatureEditingWindow.vue +6 -5
  138. package/src/components/vector-properties/VcsFeatureTransforms.vue +5 -0
  139. package/src/components/vector-properties/VcsVectorPropertiesComponent.vue +42 -31
  140. package/src/components/vector-properties/VcsVectorPropertiesComponent.vue.d.ts +1 -0
  141. package/src/components/viewpoint/VcsViewpointComponent.vue +14 -11
  142. package/src/components/viewpoint/VcsViewpointComponent.vue.d.ts +1 -0
  143. package/src/components/viewpoint/VcsViewpointEditor.vue +2 -2
  144. package/src/contentTree/LayerTree.vue +9 -27
  145. package/src/contentTree/LayerTree.vue.d.ts +1 -1
  146. package/src/contentTree/contentTreeCollection.d.ts +1 -0
  147. package/src/contentTree/contentTreeCollection.js +45 -11
  148. package/src/contentTree/contentTreeItem.d.ts +2 -2
  149. package/src/contentTree/contentTreeItem.js +1 -1
  150. package/src/featureInfo/BalloonComponent.vue +32 -25
  151. package/src/featureInfo/BalloonComponent.vue.d.ts +1 -0
  152. package/src/featureInfo/MarkdownBalloonComponent.vue +4 -2
  153. package/src/featureInfo/MarkdownBalloonComponent.vue.d.ts +2 -2
  154. package/src/featureInfo/abstractFeatureInfoView.d.ts +10 -4
  155. package/src/featureInfo/abstractFeatureInfoView.js +19 -11
  156. package/src/featureInfo/featureInfo.d.ts +7 -7
  157. package/src/featureInfo/featureInfo.js +51 -31
  158. package/src/featureInfo/iframeFeatureInfoView.d.ts +8 -2
  159. package/src/featureInfo/iframeFeatureInfoView.js +15 -5
  160. package/src/featureInfo/markdownBalloonFeatureInfoView.d.ts +1 -1
  161. package/src/featureInfo/markdownBalloonFeatureInfoView.js +5 -5
  162. package/src/featureInfo/markdownFeatureInfoView.d.ts +1 -1
  163. package/src/featureInfo/markdownFeatureInfoView.js +9 -11
  164. package/src/featureInfo/tableFeatureInfoView.js +13 -4
  165. package/src/i18n/i18nCollection.d.ts +9 -15
  166. package/src/i18n/i18nCollection.js +3 -3
  167. package/src/legend/VcsLegend.vue +6 -2
  168. package/src/legend/VcsLegend.vue.d.ts +1 -0
  169. package/src/manager/collectionManager/CollectionComponentList.vue +2 -2
  170. package/src/manager/collectionManager/CollectionComponentList.vue.d.ts +2 -2
  171. package/src/manager/collectionManager/categoryManager.d.ts +1 -1
  172. package/src/manager/collectionManager/collectionComponentClass.d.ts +3 -3
  173. package/src/manager/collectionManager/collectionComponentClass.js +6 -6
  174. package/src/manager/collectionManager/collectionManager.d.ts +1 -1
  175. package/src/manager/collectionManager/editorCollectionComponentClass.js +2 -1
  176. package/src/manager/panel/PanelComponent.vue +2 -9
  177. package/src/manager/panel/PanelManagerComponent.vue +7 -3
  178. package/src/manager/panel/panelHelper.js +3 -3
  179. package/src/manager/panel/panelManager.d.ts +9 -1
  180. package/src/manager/panel/panelManager.js +15 -3
  181. package/src/manager/toolbox/GroupToolboxComponent.vue +11 -5
  182. package/src/manager/toolbox/GroupToolboxComponent.vue.d.ts +1 -0
  183. package/src/manager/toolbox/SelectToolboxComponent.vue +11 -6
  184. package/src/manager/toolbox/SelectToolboxComponent.vue.d.ts +1 -0
  185. package/src/manager/toolbox/{ToolboxManager.vue → ToolboxManagerComponent.vue} +13 -7
  186. package/src/manager/toolbox/{ToolboxManager.vue.d.ts → ToolboxManagerComponent.vue.d.ts} +1 -0
  187. package/src/manager/window/WindowComponent.vue +12 -8
  188. package/src/manager/window/WindowComponentHeader.vue +33 -9
  189. package/src/manager/window/WindowComponentHeader.vue.d.ts +3 -0
  190. package/src/manager/window/WindowManager.vue +2 -2
  191. package/src/manager/window/windowManager.d.ts +6 -6
  192. package/src/manager/window/windowManager.js +3 -3
  193. package/src/navigation/MapNavigation.vue +20 -0
  194. package/src/navigation/OrientationToolsButton.vue +2 -4
  195. package/src/navigation/TiltSlider.vue +3 -5
  196. package/src/navigation/locatorHelper.js +1 -1
  197. package/src/navigation/overviewMap.js +1 -1
  198. package/src/notifier/NotifierComponent.vue +18 -15
  199. package/src/search/ResultItem.vue +18 -6
  200. package/src/search/ResultsComponent.vue +31 -20
  201. package/src/search/ResultsComponent.vue.d.ts +2 -1
  202. package/src/search/SearchComponent.vue +11 -15
  203. package/src/search/SearchComponent.vue.d.ts +1 -0
  204. package/src/siteConfig.js +8 -8
  205. package/src/styles/_typography.scss +0 -2
  206. package/src/styles/main.scss +0 -4
  207. package/src/styles/vcsList.scss +1 -1
  208. package/src/uiConfig.d.ts +311 -7
  209. package/src/uiConfig.js +30 -17
  210. package/src/vcsUiApp.d.ts +48 -63
  211. package/src/vcsUiApp.js +44 -37
  212. package/src/vuePlugins/vuetify.d.ts +88 -62
  213. package/src/vuePlugins/vuetify.js +119 -20
  214. package/dist/assets/ui-2ab43a16.css +0 -1
  215. package/dist/assets/vue-03b265aa.js +0 -6096
  216. package/plugins/@vcmap-show-case/theme-changer/README.md +0 -23
  217. package/plugins/@vcmap-show-case/theme-changer/config.json +0 -69
  218. package/plugins/@vcmap-show-case/theme-changer/package.json +0 -11
  219. package/plugins/@vcmap-show-case/theme-changer/src/ThemeChangerComponent.vue +0 -120
  220. package/plugins/@vcmap-show-case/theme-changer/src/index.js +0 -108
  221. package/src/application/markdownHelper.d.ts +0 -12
  222. package/src/application/markdownHelper.js +0 -70
  223. package/src/components/lists/VcsListItem.vue.d.ts +0 -27
  224. package/src/components/lists/VcsTreeviewLeaf.vue +0 -83
  225. package/src/components/notification/VcsTooltip.vue +0 -156
  226. package/src/components/notification/VcsTooltip.vue.d.ts +0 -27
  227. package/src/featureInfo/MarkdownComponent.vue +0 -16
  228. package/src/featureInfo/MarkdownComponent.vue.d.ts +0 -7
  229. package/src/styles/_theming.scss +0 -73
  230. package/src/styles/settings.scss +0 -6
  231. package/src/styles/shades.scss +0 -4
  232. package/src/styles/variables.scss +0 -140
  233. package/src/styles/vcsFont.scss +0 -2
  234. package/src/styles/vcsGrid.scss +0 -3
  235. /package/src/components/lists/{VcsTreeviewLeaf.vue.d.ts → VcsTreeviewTitle.vue.d.ts} +0 -0
@@ -18,20 +18,13 @@
18
18
  </template>
19
19
 
20
20
  <style scoped lang="scss">
21
- @import '../../styles/shades.scss';
22
-
23
21
  .panel-component {
24
22
  padding: 0 4px;
25
23
  }
26
- .panel-component.theme--dark::after {
27
- content: '';
28
- position: absolute;
29
- background: map-get($shades, 'black');
30
- }
31
- .panel-component.theme--light::after {
24
+ .panel-component::after {
32
25
  content: '';
33
26
  position: absolute;
34
- background: map-get($shades, 'white');
27
+ background: rgb(var(--v-theme-surface-light));
35
28
  }
36
29
 
37
30
  .panel-component-left::after {
@@ -143,17 +143,21 @@
143
143
  ((panelFrameRef.value.offsetTop + e.y) /
144
144
  panelFrameRef.value.parentElement.offsetHeight) *
145
145
  100;
146
- setPanelPosition(panel, { height: `${Math.round(100 - height)}%` });
146
+ setPanelPosition(panelManager, panel, {
147
+ height: `${Math.round(100 - height)}%`,
148
+ });
147
149
  } else {
148
150
  const width =
149
151
  ((panelFrameRef.value.offsetLeft + e.x) /
150
152
  panelFrameRef.value.parentElement.offsetWidth) *
151
153
  100;
152
154
  if (panel[panelLocationSymbol] === PanelLocation.LEFT) {
153
- setPanelPosition(panel, { width: `${width}%` });
155
+ setPanelPosition(panelManager, panel, { width: `${width}%` });
154
156
  resizeKey = 'left';
155
157
  } else if (panel[panelLocationSymbol] === PanelLocation.RIGHT) {
156
- setPanelPosition(panel, { width: `${Math.round(100 - width)}%` });
158
+ setPanelPosition(panelManager, panel, {
159
+ width: `${Math.round(100 - width)}%`,
160
+ });
157
161
  resizeKey = 'right';
158
162
  }
159
163
  }
@@ -239,7 +239,7 @@ export function updatePanelSizes(
239
239
  },
240
240
  targetSize,
241
241
  );
242
- setPanelPosition(leftPanel, updatedLeft);
242
+ setPanelPosition(panelManager, leftPanel, updatedLeft);
243
243
  }
244
244
  if (panelManager.hasLocation(PanelLocation.RIGHT) && resizeKey !== 'left') {
245
245
  const updatedRight = handleSidePanel(
@@ -252,7 +252,7 @@ export function updatePanelSizes(
252
252
  },
253
253
  targetSize,
254
254
  );
255
- setPanelPosition(rightPanel, updatedRight);
255
+ setPanelPosition(panelManager, rightPanel, updatedRight);
256
256
  }
257
257
 
258
258
  const main = percentageFromPanelOptions(
@@ -267,6 +267,6 @@ export function updatePanelSizes(
267
267
  return acc;
268
268
  }, {});
269
269
  if (Object.keys(toUpdate).length > 0) {
270
- setPanelPosition(mainPanel, toUpdate);
270
+ setPanelPosition(panelManager, mainPanel, toUpdate);
271
271
  }
272
272
  }
@@ -30,10 +30,11 @@
30
30
  */
31
31
  export function getPanelPosition(panelComponent: Partial<PanelComponent>): PanelPosition | undefined;
32
32
  /**
33
+ * @param {PanelManager} panelManager
33
34
  * @param {PanelComponent} panelComponent
34
35
  * @param {Partial<PanelPosition>} panelPosition
35
36
  */
36
- export function setPanelPosition(panelComponent: PanelComponent, panelPosition: Partial<PanelPosition>): void;
37
+ export function setPanelPosition(panelManager: PanelManager, panelComponent: PanelComponent, panelPosition: Partial<PanelPosition>): void;
37
38
  export const panelLocationSymbol: unique symbol;
38
39
  export const panelPositionSymbol: unique symbol;
39
40
  /**
@@ -249,6 +250,13 @@ declare class PanelManager implements IPanelManager {
249
250
  * @type {import("@vcmap/core").VcsEvent<PanelComponent>}
250
251
  */
251
252
  removed: import("@vcmap/core").VcsEvent<PanelComponent>;
253
+ /**
254
+ * @type {import("@vcmap/core").VcsEvent<{panelId: string, panelPosition: PanelPosition}>}
255
+ */
256
+ positionChanged: import("@vcmap/core").VcsEvent<{
257
+ panelId: string;
258
+ panelPosition: PanelPosition;
259
+ }>;
252
260
  /**
253
261
  * reactive ordered array of ids,
254
262
  * @type {import("vue").UnwrapRef<string[]>}
@@ -114,10 +114,11 @@ export function getPanelPosition(panelComponent) {
114
114
  }
115
115
 
116
116
  /**
117
+ * @param {PanelManager} panelManager
117
118
  * @param {PanelComponent} panelComponent
118
119
  * @param {Partial<PanelPosition>} panelPosition
119
120
  */
120
- export function setPanelPosition(panelComponent, panelPosition) {
121
+ export function setPanelPosition(panelManager, panelComponent, panelPosition) {
121
122
  const position = getPanelPosition(panelComponent);
122
123
  const toUpdate = Object.keys(panelPosition).reduce((acc, key) => {
123
124
  if (position?.[key] !== panelPosition[key]) {
@@ -126,7 +127,14 @@ export function setPanelPosition(panelComponent, panelPosition) {
126
127
  return acc;
127
128
  }, {});
128
129
  if (Object.keys(toUpdate).length > 0) {
129
- Object.assign(panelComponent[panelPositionSymbol], panelPosition);
130
+ const newPosition = Object.assign(
131
+ panelComponent[panelPositionSymbol],
132
+ panelPosition,
133
+ );
134
+ panelManager.positionChanged.raiseEvent({
135
+ panelId: panelComponent.id,
136
+ panelPosition: newPosition,
137
+ });
130
138
  }
131
139
  }
132
140
 
@@ -149,6 +157,10 @@ class PanelManager {
149
157
  * @type {import("@vcmap/core").VcsEvent<PanelComponent>}
150
158
  */
151
159
  this.removed = new VcsEvent();
160
+ /**
161
+ * @type {import("@vcmap/core").VcsEvent<{panelId: string, panelPosition: PanelPosition}>}
162
+ */
163
+ this.positionChanged = new VcsEvent();
152
164
  /**
153
165
  * reactive ordered array of ids,
154
166
  * @type {import("vue").UnwrapRef<string[]>}
@@ -266,7 +278,7 @@ class PanelManager {
266
278
  return acc;
267
279
  }, {});
268
280
  if (Object.keys(toUpdate).length > 0) {
269
- setPanelPosition(panelComponent, toUpdate);
281
+ setPanelPosition(this, panelComponent, toUpdate);
270
282
  }
271
283
  }
272
284
  }
@@ -13,7 +13,7 @@
13
13
  :icon="group.icon"
14
14
  :disabled="group.disabled"
15
15
  :tooltip="group.title"
16
- :active="open || hasActiveAction"
16
+ :active="hasActiveAction"
17
17
  :color="hasActiveAction ? 'primary' : ''"
18
18
  v-bind="props"
19
19
  >
@@ -22,12 +22,11 @@
22
22
  </template>
23
23
 
24
24
  <v-toolbar
25
- id="vcs-toolbox-toolbar--secondary"
26
- class="mx-auto marginToTop px-1 rounded-b opacity-80 px-1"
27
- :height="40"
25
+ class="vcs-toolbox-toolbar--secondary mx-auto marginToTop rounded-b elevation-4 opacity-80 px-1"
26
+ :height="toolboxHeight"
28
27
  >
29
28
  <v-toolbar-items class="w-100">
30
- <div class="d-flex align-center justify-space-between w-100">
29
+ <div class="d-flex align-center justify-space-between gc-1 w-100">
31
30
  <VcsToolButton
32
31
  v-for="{ id, action } in orderedButtons"
33
32
  :key="id"
@@ -54,6 +53,7 @@
54
53
  import { VMenu, VIcon, VToolbar, VToolbarItems } from 'vuetify/components';
55
54
  import VcsToolButton from '../../components/buttons/VcsToolButton.vue';
56
55
  import { getComponentsByOrder } from './toolboxManager.js';
56
+ import { useFontSize } from '../../vuePlugins/vuetify.js';
57
57
 
58
58
  /**
59
59
  * @description
@@ -94,10 +94,16 @@
94
94
  orderedButtons.value.some((a) => a.action.active),
95
95
  );
96
96
 
97
+ const fontSize = useFontSize();
98
+ const toolboxHeight = computed(() => {
99
+ return fontSize.value * 3 + 1;
100
+ });
101
+
97
102
  return {
98
103
  open,
99
104
  orderedButtons,
100
105
  hasActiveAction,
106
+ toolboxHeight,
101
107
  };
102
108
  },
103
109
  };
@@ -7,6 +7,7 @@ declare const _default: import("vue").DefineComponent<{
7
7
  open: import("vue").Ref<boolean>;
8
8
  orderedButtons: import("vue").ComputedRef<(import("../buttonManager.js", { with: { "resolution-mode": "import" } }).ButtonComponent | import("./toolboxManager.js", { with: { "resolution-mode": "import" } }).ToolboxComponent)[]>;
9
9
  hasActiveAction: import("vue").ComputedRef<boolean>;
10
+ toolboxHeight: import("vue").ComputedRef<number>;
10
11
  }, any, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
11
12
  group: {
12
13
  type: ObjectConstructor;
@@ -28,7 +28,7 @@
28
28
  :tooltip="group.action.title"
29
29
  :disabled="group.action.disabled"
30
30
  v-bind="props"
31
- class="vcs-toolbox-action-select"
31
+ class="vcs-toolbox-action-select px-0"
32
32
  :min-width="16"
33
33
  :width="16"
34
34
  >
@@ -37,12 +37,12 @@
37
37
  </template>
38
38
 
39
39
  <v-toolbar
40
- class="vcs-toolbox-2 mx-auto marginToTop rounded-b opacity-80 px-1"
41
- :height="40"
40
+ class="vcs-toolbox-2 mx-auto marginToTop rounded-b elevation-4 opacity-80 px-1"
41
+ :height="toolboxHeight"
42
42
  dense
43
43
  >
44
44
  <v-toolbar-items class="w-100">
45
- <div class="d-flex align-center justify-space-between w-100">
45
+ <div class="d-flex align-center justify-space-between gc-1 w-100">
46
46
  <VcsToolButton
47
47
  v-for="(item, index) in group.action.tools"
48
48
  :key="`${item.name}-${index}`"
@@ -64,9 +64,10 @@
64
64
  }
65
65
  </style>
66
66
  <script>
67
- import { ref } from 'vue';
67
+ import { ref, computed } from 'vue';
68
68
  import { VMenu, VIcon, VToolbar, VToolbarItems } from 'vuetify/components';
69
69
  import VcsToolButton from '../../components/buttons/VcsToolButton.vue';
70
+ import { useFontSize } from '../../vuePlugins/vuetify.js';
70
71
 
71
72
  /**
72
73
  * @description
@@ -90,9 +91,13 @@
90
91
  },
91
92
  setup() {
92
93
  const open = ref(false);
93
-
94
+ const fontSize = useFontSize();
95
+ const toolboxHeight = computed(() => {
96
+ return fontSize.value * 3 + 1;
97
+ });
94
98
  return {
95
99
  open,
100
+ toolboxHeight,
96
101
  };
97
102
  },
98
103
  };
@@ -5,6 +5,7 @@ declare const _default: import("vue").DefineComponent<{
5
5
  };
6
6
  }, {
7
7
  open: import("vue").Ref<boolean>;
8
+ toolboxHeight: import("vue").ComputedRef<number>;
8
9
  }, any, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
9
10
  group: {
10
11
  type: ObjectConstructor;
@@ -1,14 +1,13 @@
1
1
  <template>
2
2
  <v-toolbar
3
3
  v-if="toolboxOpen && orderedGroups.length > 0 && mdAndUp"
4
- class="vcs-toolbox mx-auto marginToTop opacity-80"
4
+ class="vcs-toolbox mx-auto elevation-4 opacity-80"
5
5
  :class="{
6
6
  'rounded-b': !open,
7
7
  }"
8
- :height="40"
8
+ :height="toolboxHeight"
9
9
  :style="{ zIndex }"
10
10
  @click.stop="bringToTop"
11
- style="width: fit-content"
12
11
  >
13
12
  <v-toolbar-items class="w-100 px-4 gc-1">
14
13
  <div
@@ -42,8 +41,9 @@
42
41
  </template>
43
42
 
44
43
  <style lang="scss" scoped>
45
- .marginToTop {
44
+ .vcs-toolbox {
46
45
  margin-top: 2px;
46
+ width: fit-content;
47
47
  }
48
48
  </style>
49
49
 
@@ -61,6 +61,7 @@
61
61
  import VcsToolButton from '../../components/buttons/VcsToolButton.vue';
62
62
  import { vcsAppSymbol } from '../../pluginHelper.js';
63
63
  import { ButtonLocation } from '../navbarManager.js';
64
+ import { useFontSize } from '../../vuePlugins/vuetify.js';
64
65
 
65
66
  /**
66
67
  * @typedef {Object} ToolboxButtonGroup
@@ -84,7 +85,7 @@
84
85
  * @vue-computed {Array<ToolboxButtonGroup>} orderedGroups - Array of group components sorted by owner
85
86
  */
86
87
  export default {
87
- name: 'VcsToolboxManager',
88
+ name: 'ToolboxManagerComponent',
88
89
  components: {
89
90
  ToolboxActionSelect,
90
91
  ToolboxActionGroup,
@@ -163,12 +164,12 @@
163
164
  }
164
165
  handleToolboxButton();
165
166
 
166
- const stopWatching = watch(groups, () => handleToolboxButton());
167
+ watch(groups, () => handleToolboxButton());
167
168
 
168
169
  onUnmounted(() => {
169
- stopWatching();
170
170
  nameChangeListener();
171
171
  app.windowManager.removeExternalIdFromZIndex('toolbox');
172
+ app.navbarManager.remove('toolbox');
172
173
  });
173
174
 
174
175
  watch(toolboxOpen, () => {
@@ -183,6 +184,10 @@
183
184
  };
184
185
 
185
186
  const { mdAndUp } = useDisplay();
187
+ const fontSize = useFontSize();
188
+ const toolboxHeight = computed(() => {
189
+ return fontSize.value * 3 + 1;
190
+ });
186
191
  return {
187
192
  mdAndUp,
188
193
  toolboxOpen,
@@ -200,6 +205,7 @@
200
205
  bringToTop();
201
206
  }
202
207
  },
208
+ toolboxHeight,
203
209
  };
204
210
  },
205
211
  };
@@ -12,6 +12,7 @@ declare const _default: import("vue").DefineComponent<{}, {
12
12
  open: import("vue").Ref<boolean>;
13
13
  bringToTop: () => void;
14
14
  openGroup(group: any): void;
15
+ toolboxHeight: import("vue").ComputedRef<number>;
15
16
  }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{}>>, {}, {}>;
16
17
  export default _default;
17
18
  export type ToolboxButtonGroup = {
@@ -9,8 +9,8 @@
9
9
  :class="{
10
10
  rounded: !isDocked,
11
11
  marginToTop: isDocked || !isChild,
12
- 'rounded-br': isDynamicLeft,
13
- 'rounded-bl': isDynamicRight,
12
+ 'rounded-be': isDynamicLeft,
13
+ 'rounded-bs': isDynamicRight,
14
14
  }"
15
15
  >
16
16
  <div
@@ -89,17 +89,21 @@
89
89
  });
90
90
 
91
91
  const isChild = computed(() => !!props.windowState.parentId);
92
- const isDynamic = computed(() => props.slotWindow !== WindowSlot.STATIC);
93
- const isDocked = computed(() => props.slotWindow !== WindowSlot.DETACHED);
92
+ const isDynamic = computed(
93
+ () => props.slotWindow.value !== WindowSlot.STATIC,
94
+ );
95
+ const isDocked = computed(
96
+ () => props.slotWindow.value !== WindowSlot.DETACHED,
97
+ );
94
98
  const isDockedLeft = computed(() => {
95
99
  return (
96
- props.slotWindow === WindowSlot.STATIC ||
97
- props.slotWindow === WindowSlot.DYNAMIC_LEFT ||
98
- props.slotWindow === WindowSlot.DYNAMIC_CHILD
100
+ props.slotWindow.value === WindowSlot.STATIC ||
101
+ props.slotWindow.value === WindowSlot.DYNAMIC_LEFT ||
102
+ props.slotWindow.value === WindowSlot.DYNAMIC_CHILD
99
103
  );
100
104
  });
101
105
  const isDockedRight = computed(
102
- () => props.slotWindow === WindowSlot.DYNAMIC_RIGHT,
106
+ () => props.slotWindow.value === WindowSlot.DYNAMIC_RIGHT,
103
107
  );
104
108
  const isDraggable = ref(false);
105
109
  /**
@@ -2,21 +2,25 @@
2
2
  <div
3
3
  class="d-flex justify-space-between align-center window-component-header"
4
4
  >
5
- <h3 class="d-flex align-center">
5
+ <h3 class="d-flex align-center flex-grow-1">
6
6
  <v-icon
7
7
  v-if="windowState.headerIcon"
8
8
  class="mr-1"
9
- :class="{ 'primary--text': isOnTop }"
10
- size="16"
9
+ :class="{ 'text-primary': isOnTop }"
10
+ :size="iconSize"
11
11
  >
12
12
  {{ windowState.headerIcon }}
13
13
  </v-icon>
14
14
  <span
15
- class="d-inline-block user-select-none font-weight-bold"
16
- :class="{ 'primary--text': isOnTop }"
15
+ ref="headerRef"
16
+ class="d-inline-block user-select-none font-weight-bold vcs-window-header-title"
17
+ :class="{ 'text-primary': isOnTop }"
17
18
  >
18
19
  {{ translatedHeaderTitle }}
19
20
  </span>
21
+ <v-tooltip v-if="headerTooltip" activator="parent">
22
+ {{ $st(headerTooltip) }}
23
+ </v-tooltip>
20
24
  </h3>
21
25
  <div class="d-flex justify-space-between align-center">
22
26
  <template v-if="windowState.headerActions?.length > 0">
@@ -52,10 +56,10 @@
52
56
 
53
57
  <style lang="scss" scoped>
54
58
  .window-component-header {
55
- max-height: 16px;
59
+ max-height: calc(var(--v-vcs-font-size) * 2 - 10px);
56
60
 
57
61
  h3 {
58
- line-height: 16px;
62
+ line-height: calc(var(--v-vcs-font-size) * 2 - 10px);
59
63
  }
60
64
  .v-divider--vertical.v-divider--inset {
61
65
  margin-top: 2px;
@@ -64,14 +68,23 @@
64
68
  .user-select-none {
65
69
  user-select: none;
66
70
  }
71
+ .vcs-window-header-title {
72
+ width: 10px;
73
+ white-space: nowrap;
74
+ overflow: hidden;
75
+ text-overflow: ellipsis;
76
+ flex: 1;
77
+ }
67
78
  </style>
68
79
 
69
80
  <script>
70
- import { VIcon, VDivider } from 'vuetify/components';
71
- import { computed, getCurrentInstance } from 'vue';
81
+ import { VIcon, VDivider, VTooltip } from 'vuetify/components';
82
+ import { computed, getCurrentInstance, ref } from 'vue';
83
+ import { createEllipseTooltip } from '../../components/composables.js';
72
84
  import VcsButton from '../../components/buttons/VcsButton.vue';
73
85
  import VcsActionButtonList from '../../components/buttons/VcsActionButtonList.vue';
74
86
  import { createLinkAction } from '../../actions/actionHelper.js';
87
+ import { useIconSize } from '../../vuePlugins/vuetify.js';
75
88
 
76
89
  /**
77
90
  * @description Default window component header with drag functionality close action and further optional window actions.
@@ -88,6 +101,7 @@
88
101
  VcsButton,
89
102
  VIcon,
90
103
  VDivider,
104
+ VTooltip,
91
105
  },
92
106
  inheritAttrs: false,
93
107
  props: {
@@ -124,6 +138,8 @@
124
138
  : vm.$st(props.windowState.headerTitle),
125
139
  );
126
140
 
141
+ const headerRef = ref(null);
142
+
127
143
  const infoAction =
128
144
  props.windowState.infoUrl || props.windowState.infoUrlCallback
129
145
  ? createLinkAction(
@@ -136,11 +152,19 @@
136
152
  )
137
153
  : undefined;
138
154
 
155
+ const iconSize = useIconSize();
139
156
  return {
140
157
  pin,
141
158
  close,
142
159
  isDockable,
143
160
  translatedHeaderTitle,
161
+ headerRef,
162
+ iconSize,
163
+ headerTooltip: createEllipseTooltip(
164
+ computed(() => headerRef.value),
165
+ computed(() => undefined),
166
+ translatedHeaderTitle,
167
+ ),
144
168
  infoAction,
145
169
  };
146
170
  },
@@ -17,6 +17,9 @@ declare const _default: import("vue").DefineComponent<{
17
17
  close: () => void;
18
18
  isDockable: import("vue").ComputedRef<any>;
19
19
  translatedHeaderTitle: import("vue").ComputedRef<any>;
20
+ headerRef: import("vue").Ref<null>;
21
+ iconSize: import("vue").ComputedRef<number>;
22
+ headerTooltip: import("vue").ComputedRef<string>;
20
23
  infoAction: import("../../actions/actionHelper.js", { with: { "resolution-mode": "import" } }).VcsAction | undefined;
21
24
  }, any, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
22
25
  windowState: {
@@ -160,9 +160,9 @@
160
160
  const position = getPosition(windowComponent);
161
161
  moveWindow(id, translation, windowManager, targetSize.value, position);
162
162
  };
163
-
163
+ const display = useDisplay();
164
164
  const addMobileClass = computed(() => {
165
- return useDisplay().xs.value && componentIds.length > 0;
165
+ return display.xs.value && componentIds.length > 0;
166
166
  });
167
167
 
168
168
  const setTargetSize = () => {
@@ -15,15 +15,15 @@ export function isSlotPosition(windowPosition: WindowPosition): boolean;
15
15
  * @typedef {{
16
16
  * id?: string,
17
17
  * parentId?: string,
18
- * component: import("vue").Component<T, unknown, unknown>,
19
- * headerComponent?: import("vue").Component<T, unknown, unknown>,
18
+ * component: import("vue").Component<T>,
19
+ * headerComponent?: import("vue").Component<T>,
20
20
  * state? : Partial<WindowState>,
21
21
  * position? : Partial<WindowPositionOptions>,
22
22
  * slot?: WindowSlot,
23
23
  * props?: T,
24
24
  * provides?: Record<string, unknown>
25
25
  * }} WindowComponentOptions
26
- * @template {Object} [T=Object]
26
+ * @template [T=any]
27
27
  * @property {string} [id] Optional ID, If not provided an uuid will be generated.
28
28
  * @property {string} [parentId] An optional ID of a parent window for 'dynamicChild' slot. Parent windows with slot dynamicRight are not supported.
29
29
  * @property {import("vue").Component<T, unknown, unknown>} component Main Component which is shown below the header.
@@ -129,11 +129,11 @@ export namespace WindowPositions {
129
129
  export { DETACHED_1 as DETACHED };
130
130
  }
131
131
  export default WindowManager;
132
- export type WindowComponentOptions<T extends Object = Object> = {
132
+ export type WindowComponentOptions<T = any> = {
133
133
  id?: string;
134
134
  parentId?: string;
135
- component: import("vue").Component<T, unknown, unknown>;
136
- headerComponent?: import("vue").Component<T, unknown, unknown>;
135
+ component: import("vue").Component<T>;
136
+ headerComponent?: import("vue").Component<T>;
137
137
  state?: Partial<WindowState>;
138
138
  position?: Partial<WindowPositionOptions>;
139
139
  slot?: WindowSlot;
@@ -105,15 +105,15 @@ export function isSlotPosition(windowPosition) {
105
105
  * @typedef {{
106
106
  * id?: string,
107
107
  * parentId?: string,
108
- * component: import("vue").Component<T, unknown, unknown>,
109
- * headerComponent?: import("vue").Component<T, unknown, unknown>,
108
+ * component: import("vue").Component<T>,
109
+ * headerComponent?: import("vue").Component<T>,
110
110
  * state? : Partial<WindowState>,
111
111
  * position? : Partial<WindowPositionOptions>,
112
112
  * slot?: WindowSlot,
113
113
  * props?: T,
114
114
  * provides?: Record<string, unknown>
115
115
  * }} WindowComponentOptions
116
- * @template {Object} [T=Object]
116
+ * @template [T=any]
117
117
  * @property {string} [id] Optional ID, If not provided an uuid will be generated.
118
118
  * @property {string} [parentId] An optional ID of a parent window for 'dynamicChild' slot. Parent windows with slot dynamicRight are not supported.
119
119
  * @property {import("vue").Component<T, unknown, unknown>} component Main Component which is shown below the header.
@@ -249,6 +249,25 @@
249
249
  const showOverviewButton = ref(
250
250
  app.overviewMap.map.layerCollection.size > 0,
251
251
  );
252
+
253
+ const handleOverviewMapActiveOnStartup = (item) => {
254
+ if (
255
+ item &&
256
+ item.name === 'overviewMapActiveOnStartup' &&
257
+ showOverviewButton.value &&
258
+ item.value &&
259
+ !overviewAction.active
260
+ ) {
261
+ overviewAction.callback();
262
+ }
263
+ };
264
+ handleOverviewMapActiveOnStartup(
265
+ app.uiConfig.getByKey('overviewMapActiveOnStartup'),
266
+ );
267
+ const uiConfigListener = app.uiConfig.added.addEventListener(
268
+ handleOverviewMapActiveOnStartup,
269
+ );
270
+
252
271
  // Locator
253
272
  const { action: locatorAction, destroy: destroyLocator } =
254
273
  createLocatorAction(app);
@@ -286,6 +305,7 @@
286
305
  const { action: homeAction, destroy: homeDestroy } = setupHomeButton(app);
287
306
 
288
307
  onUnmounted(() => {
308
+ uiConfigListener();
289
309
  if (overviewDestroy) {
290
310
  overviewDestroy();
291
311
  }
@@ -18,7 +18,7 @@
18
18
  <script>
19
19
  import { VCard, VIcon, VTooltip } from 'vuetify/components';
20
20
  import { computed } from 'vue';
21
- import { useFontSize } from '../vuePlugins/vuetify.js';
21
+ import { useFontSize, useIconSize } from '../vuePlugins/vuetify.js';
22
22
 
23
23
  /**
24
24
  * @description v-card with h & w 8. Requires an icon and binds all attributes & listeners to the v-card
@@ -50,9 +50,7 @@
50
50
  setup() {
51
51
  const fontSize = useFontSize();
52
52
 
53
- const iconSize = computed(() => {
54
- return fontSize.value * (1.2 + 0.1 / 3);
55
- });
53
+ const iconSize = useIconSize();
56
54
  const height = computed(() => {
57
55
  return fontSize.value * 2.5;
58
56
  });
@@ -65,7 +65,7 @@
65
65
  <script>
66
66
  import { computed, defineComponent } from 'vue';
67
67
  import { VCard, VSlider, VTooltip } from 'vuetify/components';
68
- import { useFontSize, useItemHeight } from '../vuePlugins/vuetify.js';
68
+ import { useFontSize } from '../vuePlugins/vuetify.js';
69
69
  import { useProxiedAtomicModel } from '../components/modelHelper.js';
70
70
 
71
71
  export default defineComponent({
@@ -87,15 +87,13 @@
87
87
  },
88
88
  },
89
89
  setup(props, { emit }) {
90
- const itemHeight = useItemHeight();
91
-
90
+ const fontSize = useFontSize();
92
91
  const trackSize = computed(() => {
93
- return Math.floor(itemHeight.value / 12);
92
+ return Math.floor((fontSize.value + 3) / 6);
94
93
  });
95
94
  const tickSize = computed(() => {
96
95
  return trackSize.value * 2;
97
96
  });
98
- const fontSize = useFontSize();
99
97
  const minWidth = computed(() => {
100
98
  return fontSize.value * 2.5;
101
99
  });