@vcmap/ui 6.1.13 → 6.2.0-rc.1

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 (169) hide show
  1. package/build/build.js +2 -2
  2. package/build/buildHelpers.js +2 -3
  3. package/build/buildTypes.js +1 -1
  4. package/build/commonViteConfig.js +0 -1
  5. package/build/lintTypes.js +1 -1
  6. package/config/dev.config.json +4 -0
  7. package/dist/assets/cesium.js +1 -1
  8. package/dist/assets/{core-171d1d84.js → core-de8e51b5.js} +2 -2
  9. package/dist/assets/core.js +1 -1
  10. package/dist/assets/ol.js +1 -1
  11. package/dist/assets/ui-4f308e45.css +1 -0
  12. package/dist/assets/{ui-78b0084c.js → ui-4f308e45.js} +9084 -8706
  13. package/dist/assets/ui.js +1 -1
  14. package/dist/assets/vue.js +1 -1
  15. package/dist/assets/{vuetify-d26d8a53.js → vuetify-99195777.js} +1 -1
  16. package/dist/assets/vuetify.js +1 -1
  17. package/index.d.ts +4 -0
  18. package/index.js +5 -0
  19. package/package.json +4 -46
  20. package/plugins/@vcmap-show-case/category-tester/src/CategoriesExample.vue +2 -3
  21. package/plugins/@vcmap-show-case/form-inputs-example/src/FormInputsExample.vue +0 -1
  22. package/plugins/@vcmap-show-case/form-inputs-example/src/index.js +3 -3
  23. package/plugins/@vcmap-show-case/hello-world/src/helloWorld.vue +6 -6
  24. package/plugins/@vcmap-show-case/hello-world/src/index.js +0 -6
  25. package/plugins/@vcmap-show-case/hello-world/tests/helloWorld.spec.js +1 -1
  26. package/plugins/@vcmap-show-case/panel-tester/src/IframePanelExample.vue +1 -1
  27. package/plugins/@vcmap-show-case/panel-tester/src/ImgPanelExample.vue +1 -1
  28. package/plugins/@vcmap-show-case/panel-tester/src/PanelExample.vue +1 -1
  29. package/plugins/@vcmap-show-case/panel-tester/src/TextPanelExample.vue +1 -1
  30. package/plugins/@vcmap-show-case/project-selector/src/ModulesListComponent.vue +1 -0
  31. package/plugins/@vcmap-show-case/toolbox-example/src/TriStateExampleWindow.vue +1 -1
  32. package/plugins/@vcmap-show-case/window-tester/src/EmptyComponent.vue +5 -5
  33. package/plugins/@vcmap-show-case/window-tester/src/MyCustomHeader.vue +1 -0
  34. package/plugins/@vcmap-show-case/window-tester/src/WindowExample.vue +1 -1
  35. package/plugins/@vcmap-show-case/window-tester/src/WindowExampleContent.vue +1 -1
  36. package/plugins/@vcmap-show-case/window-tester/src/WindowExampleToggleChild.vue +1 -1
  37. package/src/application/MapsGroupMobileMenu.vue +6 -5
  38. package/src/application/MapsGroupMobileMenu.vue.d.ts +3 -1
  39. package/src/application/VcsApp.vue +36 -46
  40. package/src/application/VcsApp.vue.d.ts +19 -45
  41. package/src/application/VcsAppWrapper.vue +4 -4
  42. package/src/application/VcsAttributions.vue +12 -12
  43. package/src/application/VcsAttributionsFooter.vue +27 -27
  44. package/src/application/VcsContainer.vue +50 -51
  45. package/src/application/VcsContainer.vue.d.ts +14 -2
  46. package/src/application/VcsMainMap.vue +2 -2
  47. package/src/application/VcsMap.vue +16 -16
  48. package/src/application/VcsNavbar.vue +17 -15
  49. package/src/application/VcsNavbarMobile.vue +15 -15
  50. package/src/application/VcsObliqueFooter.vue +10 -9
  51. package/src/application/VcsPositionDisplay.vue +8 -8
  52. package/src/application/VcsTextPage.vue +10 -10
  53. package/src/application/VcsTextPageFooter.vue +9 -9
  54. package/src/application/uiConfigHelper.d.ts +6 -0
  55. package/src/application/uiConfigHelper.js +19 -0
  56. package/src/callback/stopRotationCallback.js +0 -1
  57. package/src/callback/toggleToolbarButtonCallback.d.ts +48 -0
  58. package/src/callback/toggleToolbarButtonCallback.js +115 -0
  59. package/src/components/attrsHelpers.js +1 -1
  60. package/src/components/buttons/VcsActionButtonList.vue +5 -5
  61. package/src/components/buttons/VcsButton.vue +26 -26
  62. package/src/components/buttons/VcsFormButton.vue +31 -31
  63. package/src/components/buttons/VcsToolButton.vue +29 -29
  64. package/src/components/extent/VcsExtent.vue +1 -1
  65. package/src/components/extent/VcsExtentEditor.vue +1 -1
  66. package/src/components/flight/VcsFlightAnchorsComponent.vue +2 -2
  67. package/src/components/flight/VcsFlightAnchorsComponent.vue.d.ts +1 -4
  68. package/src/components/flight/VcsFlightEditor.vue +1 -0
  69. package/src/components/flight/VcsFlightEditor.vue.d.ts +4 -2
  70. package/src/components/flight/VcsFlightPlayer.vue +1 -1
  71. package/src/components/form-inputs-controls/VcsCheckbox.vue +23 -23
  72. package/src/components/form-inputs-controls/VcsChipArrayInput.vue +20 -20
  73. package/src/components/form-inputs-controls/VcsCoordinate.vue +3 -3
  74. package/src/components/form-inputs-controls/VcsDatePicker.vue +7 -7
  75. package/src/components/form-inputs-controls/VcsFileInput.vue +14 -14
  76. package/src/components/form-inputs-controls/VcsLabel.vue +26 -26
  77. package/src/components/form-inputs-controls/VcsRadio.vue +27 -27
  78. package/src/components/form-inputs-controls/VcsSelect.vue +78 -78
  79. package/src/components/form-inputs-controls/VcsSlider.vue +43 -43
  80. package/src/components/form-inputs-controls/VcsTextArea.vue +47 -47
  81. package/src/components/form-inputs-controls/VcsTextField.vue +4 -4
  82. package/src/components/form-inputs-controls/VcsWizard.vue +4 -4
  83. package/src/components/form-output/VcsFormattedNumber.vue +11 -11
  84. package/src/components/form-output/VcsMarkdown.vue +23 -22
  85. package/src/components/form-output/markdownHelper.js +1 -1
  86. package/src/components/import/VcsImportComponent.vue +1 -0
  87. package/src/components/import/VcsImportComponent.vue.d.ts +4 -2
  88. package/src/components/lists/VcsActionList.vue +14 -14
  89. package/src/components/lists/VcsList.vue +24 -20
  90. package/src/components/lists/VcsList.vue.d.ts +4 -6
  91. package/src/components/lists/VcsListItemComponent.vue +28 -8
  92. package/src/components/lists/VcsTreeNode.vue +138 -38
  93. package/src/components/lists/VcsTreeview.vue +65 -23
  94. package/src/components/lists/VcsTreeview.vue.d.ts +34 -9
  95. package/src/components/lists/VcsTreeviewSearchbar.vue +50 -50
  96. package/src/components/lists/VcsTreeviewTitle.vue +13 -13
  97. package/src/components/lists/dragHelper.d.ts +118 -0
  98. package/src/components/lists/dragHelper.js +325 -0
  99. package/src/components/lists/listHelper.d.ts +3 -2
  100. package/src/components/lists/listHelper.js +8 -1
  101. package/src/components/notification/VcsBadge.vue +12 -12
  102. package/src/components/notification/VcsHelp.vue +9 -9
  103. package/src/components/notification/VcsHelpTooltip.vue +1 -1
  104. package/src/components/style/StyleMenuWrapper.vue +1 -1
  105. package/src/components/tables/VcsDataTable.vue +3 -2
  106. package/src/components/tables/VcsDataTable.vue.d.ts +4 -2
  107. package/src/components/vector-properties/VcsFeatureEditingWindow.vue +1 -1
  108. package/src/components/vector-properties/VcsFeatureTransforms.vue +1 -1
  109. package/src/components/vector-properties/VcsVectorPropertiesComponent.vue +1 -1
  110. package/src/components/viewpoint/VcsViewpointEditor.vue +1 -0
  111. package/src/components/viewpoint/VcsViewpointEditor.vue.d.ts +4 -2
  112. package/src/contentTree/LayerSwap.vue +149 -0
  113. package/src/contentTree/LayerSwap.vue.d.ts +27 -0
  114. package/src/contentTree/LayerTree.vue +53 -3
  115. package/src/contentTree/LayerTree.vue.d.ts +3 -0
  116. package/src/contentTree/contentTreeCollection.js +0 -1
  117. package/src/i18n/de.d.ts +63 -55
  118. package/src/i18n/de.js +5 -0
  119. package/src/i18n/en.d.ts +63 -55
  120. package/src/i18n/en.js +5 -0
  121. package/src/init.js +1 -1
  122. package/src/manager/collectionManager/CollectionComponent.vue +1 -1
  123. package/src/manager/collectionManager/CollectionComponentContent.vue +2 -2
  124. package/src/manager/collectionManager/CollectionComponentContent.vue.d.ts +1 -4
  125. package/src/manager/collectionManager/CollectionComponentList.vue +14 -13
  126. package/src/manager/collectionManager/CollectionComponentList.vue.d.ts +3 -7
  127. package/src/manager/collectionManager/CollectionComponentStandalone.vue +2 -2
  128. package/src/manager/collectionManager/CollectionManager.vue +2 -2
  129. package/src/manager/panel/PanelComponent.vue +40 -39
  130. package/src/manager/panel/PanelComponent.vue.d.ts +4 -2
  131. package/src/manager/panel/PanelManagerComponent.vue +13 -13
  132. package/src/manager/panel/PanelManagerComponent.vue.d.ts +4 -2
  133. package/src/manager/panel/panelHelper.js +19 -21
  134. package/src/manager/toolbox/GroupToolboxComponent.vue +9 -8
  135. package/src/manager/toolbox/GroupToolboxComponent.vue.d.ts +5 -2
  136. package/src/manager/toolbox/SelectToolboxComponent.vue +9 -8
  137. package/src/manager/toolbox/SelectToolboxComponent.vue.d.ts +5 -2
  138. package/src/manager/toolbox/ToolboxManagerComponent.vue +23 -23
  139. package/src/manager/window/WindowComponent.vue +12 -12
  140. package/src/manager/window/WindowComponent.vue.d.ts +7 -4
  141. package/src/manager/window/WindowComponentHeader.vue +24 -24
  142. package/src/manager/window/WindowComponentHeader.vue.d.ts +7 -4
  143. package/src/manager/window/WindowManager.vue +41 -41
  144. package/src/navigation/MapNavCompass.vue +4 -3
  145. package/src/navigation/MapNavCompass.vue.d.ts +4 -2
  146. package/src/navigation/ObliqueRotation.vue +1 -0
  147. package/src/navigation/ObliqueRotation.vue.d.ts +4 -2
  148. package/src/navigation/OrientationToolsButton.vue +1 -1
  149. package/src/navigation/TiltSlider.vue +35 -35
  150. package/src/navigation/VcsCompass.vue +18 -13
  151. package/src/navigation/VcsCompass.vue.d.ts +6 -2
  152. package/src/navigation/VcsZoomButton.vue +1 -0
  153. package/src/navigation/VcsZoomButton.vue.d.ts +5 -2
  154. package/src/navigation/locatorHelper.js +1 -1
  155. package/src/notifier/NotifierComponent.vue +1 -1
  156. package/src/pluginHelper.js +2 -1
  157. package/src/search/ResultItem.vue +1 -0
  158. package/src/search/SearchComponent.vue +35 -35
  159. package/src/search/markText.js +2 -2
  160. package/src/state.d.ts +12 -1
  161. package/src/state.js +59 -4
  162. package/src/uiConfig.d.ts +30 -3
  163. package/src/uiConfig.js +4 -1
  164. package/src/vcsUiApp.js +20 -0
  165. package/dist/assets/ui-78b0084c.css +0 -1
  166. /package/dist/assets/{cesium-76fff1d7.js → cesium-ac6c193a.js} +0 -0
  167. /package/dist/assets/{ol-76b9c9e3.js → ol-94c57f2e.js} +0 -0
  168. /package/dist/assets/{vue-859ae1f4.js → vue-62303c82.js} +0 -0
  169. /package/dist/assets/{vuetify-d26d8a53.css → vuetify-99195777.css} +0 -0
@@ -55,14 +55,6 @@
55
55
  </v-menu>
56
56
  </div>
57
57
  </template>
58
- <style lang="scss" scoped>
59
- .marginToTop {
60
- margin-top: 3px;
61
- }
62
- .marginToBottom {
63
- margin-bottom: 3px;
64
- }
65
- </style>
66
58
  <script>
67
59
  import { computed, ref } from 'vue';
68
60
  import { VMenu, VIcon, VToolbar, VToolbarItems } from 'vuetify/components';
@@ -96,6 +88,7 @@
96
88
  required: true,
97
89
  },
98
90
  },
91
+ emits: ['click', 'toggle'],
99
92
  setup(props) {
100
93
  const open = ref(false);
101
94
 
@@ -127,3 +120,11 @@
127
120
  },
128
121
  };
129
122
  </script>
123
+ <style lang="scss" scoped>
124
+ .marginToTop {
125
+ margin-top: 3px;
126
+ }
127
+ .marginToBottom {
128
+ margin-bottom: 3px;
129
+ }
130
+ </style>
@@ -9,10 +9,13 @@ declare const _default: import("vue").DefineComponent<{
9
9
  hasActiveAction: import("vue").ComputedRef<boolean>;
10
10
  toolboxHeight: import("vue").ComputedRef<number>;
11
11
  xs: import("vue").Ref<boolean>;
12
- }, any, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
12
+ }, any, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, ("click" | "toggle")[], "click" | "toggle", import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
13
13
  group: {
14
14
  type: ObjectConstructor;
15
15
  required: true;
16
16
  };
17
- }>>, {}, {}>;
17
+ }>> & {
18
+ onClick?: ((...args: any[]) => any) | undefined;
19
+ onToggle?: ((...args: any[]) => any) | undefined;
20
+ }, {}, {}>;
18
21
  export default _default;
@@ -70,14 +70,6 @@
70
70
  </v-menu>
71
71
  </div>
72
72
  </template>
73
- <style lang="scss" scoped>
74
- .marginToTop {
75
- margin-top: 3px;
76
- }
77
- .marginToBottom {
78
- margin-bottom: 3px;
79
- }
80
- </style>
81
73
  <script>
82
74
  import { ref, computed } from 'vue';
83
75
  import { VMenu, VIcon, VToolbar, VToolbarItems } from 'vuetify/components';
@@ -105,6 +97,7 @@
105
97
  required: true,
106
98
  },
107
99
  },
100
+ emits: ['click', 'toggle'],
108
101
  setup() {
109
102
  const open = ref(false);
110
103
  const fontSize = useFontSize();
@@ -120,3 +113,11 @@
120
113
  },
121
114
  };
122
115
  </script>
116
+ <style lang="scss" scoped>
117
+ .marginToTop {
118
+ margin-top: 3px;
119
+ }
120
+ .marginToBottom {
121
+ margin-bottom: 3px;
122
+ }
123
+ </style>
@@ -7,10 +7,13 @@ declare const _default: import("vue").DefineComponent<{
7
7
  open: import("vue").Ref<boolean>;
8
8
  toolboxHeight: import("vue").ComputedRef<number>;
9
9
  xs: import("vue").Ref<boolean>;
10
- }, any, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
10
+ }, any, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, ("click" | "toggle")[], "click" | "toggle", import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
11
11
  group: {
12
12
  type: ObjectConstructor;
13
13
  required: true;
14
14
  };
15
- }>>, {}, {}>;
15
+ }>> & {
16
+ onClick?: ((...args: any[]) => any) | undefined;
17
+ onToggle?: ((...args: any[]) => any) | undefined;
18
+ }, {}, {}>;
16
19
  export default _default;
@@ -56,29 +56,6 @@
56
56
  </v-toolbar>
57
57
  </template>
58
58
 
59
- <style lang="scss" scoped>
60
- .vcs-toolbox__secondary {
61
- &.vcs-toolbox.v-theme {
62
- &--light {
63
- background-color: rgba(var(--v-theme-primary-lighten-3));
64
- }
65
- &--dark {
66
- background-color: rgba(var(--v-theme-primary-darken-4));
67
- }
68
- }
69
- }
70
- .vcs-toolbox {
71
- margin-top: 2px;
72
- width: fit-content;
73
- }
74
- .mobileToolbox {
75
- bottom: 0px !important;
76
- position: absolute !important;
77
- left: 50% !important;
78
- transform: translateX(-50%) !important;
79
- }
80
- </style>
81
-
82
59
  <script>
83
60
  import { inject, ref, computed, watch, onUnmounted, reactive } from 'vue';
84
61
  import { useDisplay } from 'vuetify';
@@ -259,3 +236,26 @@
259
236
  },
260
237
  };
261
238
  </script>
239
+
240
+ <style lang="scss" scoped>
241
+ .vcs-toolbox__secondary {
242
+ &.vcs-toolbox.v-theme {
243
+ &--light {
244
+ background-color: rgba(var(--v-theme-primary-lighten-3));
245
+ }
246
+ &--dark {
247
+ background-color: rgba(var(--v-theme-primary-darken-4));
248
+ }
249
+ }
250
+ }
251
+ .vcs-toolbox {
252
+ margin-top: 2px;
253
+ width: fit-content;
254
+ }
255
+ .mobileToolbox {
256
+ bottom: 0px !important;
257
+ position: absolute !important;
258
+ left: 50% !important;
259
+ transform: translateX(-50%) !important;
260
+ }
261
+ </style>
@@ -38,16 +38,6 @@
38
38
  </v-sheet>
39
39
  </template>
40
40
 
41
- <style scoped>
42
- .marginToTop {
43
- margin-top: 2px;
44
- }
45
- .marginTablet {
46
- margin-top: calc(var(--v-vcs-font-size) * 3 + 6px);
47
- margin-bottom: 2px;
48
- }
49
- </style>
50
-
51
41
  <script>
52
42
  import { computed, inject, provide, ref } from 'vue';
53
43
  import { VDivider, VSheet } from 'vuetify/components';
@@ -67,11 +57,11 @@
67
57
  */
68
58
  export default {
69
59
  name: 'WindowComponent',
70
- inheritAttrs: false,
71
60
  components: {
72
61
  VSheet,
73
62
  VDivider,
74
63
  },
64
+ inheritAttrs: false,
75
65
  props: {
76
66
  windowState: {
77
67
  type: Object,
@@ -79,7 +69,6 @@
79
69
  },
80
70
  isOnTop: {
81
71
  type: Boolean,
82
- required: true,
83
72
  default: false,
84
73
  },
85
74
  slotWindow: {
@@ -87,6 +76,7 @@
87
76
  required: true,
88
77
  },
89
78
  },
79
+ emits: ['mousedown', 'moved'],
90
80
  setup(props, { emit }) {
91
81
  const app = inject('vcsApp');
92
82
  const { provides } = app.windowManager.get(props.windowState.id);
@@ -177,3 +167,13 @@
177
167
  },
178
168
  };
179
169
  </script>
170
+
171
+ <style scoped>
172
+ .marginToTop {
173
+ margin-top: 2px;
174
+ }
175
+ .marginTablet {
176
+ margin-top: calc(var(--v-vcs-font-size) * 3 + 6px);
177
+ margin-bottom: 2px;
178
+ }
179
+ </style>
@@ -5,7 +5,6 @@ declare const _default: import("vue").DefineComponent<{
5
5
  };
6
6
  isOnTop: {
7
7
  type: BooleanConstructor;
8
- required: true;
9
8
  default: boolean;
10
9
  };
11
10
  slotWindow: {
@@ -23,19 +22,23 @@ declare const _default: import("vue").DefineComponent<{
23
22
  dragStart: (e: DragEvent) => void;
24
23
  dragEnd: (endEvent: DragEvent) => void;
25
24
  mousedown: (e: MouseEvent) => void;
26
- }, any, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
25
+ }, any, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, ("mousedown" | "moved")[], "mousedown" | "moved", import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
27
26
  windowState: {
28
27
  type: ObjectConstructor;
29
28
  required: true;
30
29
  };
31
30
  isOnTop: {
32
31
  type: BooleanConstructor;
33
- required: true;
34
32
  default: boolean;
35
33
  };
36
34
  slotWindow: {
37
35
  type: ObjectConstructor;
38
36
  required: true;
39
37
  };
40
- }>>, {}, {}>;
38
+ }>> & {
39
+ onMousedown?: ((...args: any[]) => any) | undefined;
40
+ onMoved?: ((...args: any[]) => any) | undefined;
41
+ }, {
42
+ isOnTop: boolean;
43
+ }, {}>;
41
44
  export default _default;
@@ -58,29 +58,6 @@
58
58
  </div>
59
59
  </template>
60
60
 
61
- <style lang="scss" scoped>
62
- .window-component-header {
63
- max-height: calc(var(--v-vcs-font-size) * 2 - 10px);
64
-
65
- h3 {
66
- line-height: calc(var(--v-vcs-font-size) * 2 - 10px);
67
- }
68
- .v-divider--vertical.v-divider--inset {
69
- margin-top: 2px;
70
- }
71
- }
72
- .user-select-none {
73
- user-select: none;
74
- }
75
- .vcs-window-header-title {
76
- width: 10px;
77
- white-space: nowrap;
78
- overflow: hidden;
79
- text-overflow: ellipsis;
80
- flex: 1;
81
- }
82
- </style>
83
-
84
61
  <script>
85
62
  import { VIcon, VDivider, VTooltip } from 'vuetify/components';
86
63
  import { computed, getCurrentInstance, ref } from 'vue';
@@ -116,7 +93,6 @@
116
93
  },
117
94
  isOnTop: {
118
95
  type: Boolean,
119
- required: true,
120
96
  default: false,
121
97
  },
122
98
  slotWindow: {
@@ -124,6 +100,7 @@
124
100
  required: true,
125
101
  },
126
102
  },
103
+ emits: ['pin', 'close'],
127
104
  setup(props, { emit }) {
128
105
  const pin = () => {
129
106
  emit('pin');
@@ -178,3 +155,26 @@
178
155
  },
179
156
  };
180
157
  </script>
158
+
159
+ <style lang="scss" scoped>
160
+ .window-component-header {
161
+ max-height: calc(var(--v-vcs-font-size) * 2 - 10px);
162
+
163
+ h3 {
164
+ line-height: calc(var(--v-vcs-font-size) * 2 - 10px);
165
+ }
166
+ .v-divider--vertical.v-divider--inset {
167
+ margin-top: 2px;
168
+ }
169
+ }
170
+ .user-select-none {
171
+ user-select: none;
172
+ }
173
+ .vcs-window-header-title {
174
+ width: 10px;
175
+ white-space: nowrap;
176
+ overflow: hidden;
177
+ text-overflow: ellipsis;
178
+ flex: 1;
179
+ }
180
+ </style>
@@ -5,7 +5,6 @@ declare const _default: import("vue").DefineComponent<{
5
5
  };
6
6
  isOnTop: {
7
7
  type: BooleanConstructor;
8
- required: true;
9
8
  default: boolean;
10
9
  };
11
10
  slotWindow: {
@@ -22,19 +21,23 @@ declare const _default: import("vue").DefineComponent<{
22
21
  headerTooltip: import("vue").ComputedRef<string>;
23
22
  infoAction: import("../../actions/actionHelper.js", { with: { "resolution-mode": "import" } }).VcsAction | undefined;
24
23
  xs: import("vue").Ref<boolean>;
25
- }, any, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
24
+ }, any, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, ("close" | "pin")[], "close" | "pin", import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
26
25
  windowState: {
27
26
  type: ObjectConstructor;
28
27
  required: true;
29
28
  };
30
29
  isOnTop: {
31
30
  type: BooleanConstructor;
32
- required: true;
33
31
  default: boolean;
34
32
  };
35
33
  slotWindow: {
36
34
  type: ObjectConstructor;
37
35
  required: true;
38
36
  };
39
- }>>, {}, {}>;
37
+ }>> & {
38
+ onClose?: ((...args: any[]) => any) | undefined;
39
+ onPin?: ((...args: any[]) => any) | undefined;
40
+ }, {
41
+ isOnTop: boolean;
42
+ }, {}>;
40
43
  export default _default;
@@ -36,47 +36,6 @@
36
36
  </div>
37
37
  </template>
38
38
 
39
- <style scoped lang="scss">
40
- .mobile > div:not(#window-component--searchId) {
41
- position: fixed;
42
- left: 0;
43
- right: 0;
44
- z-index: 2;
45
- display: contents;
46
- width: 100% !important;
47
- max-width: 100% !important;
48
- inset: unset !important;
49
- border-radius: 0 !important;
50
- overflow: auto;
51
- bottom: 0 !important;
52
- max-height: 50% !important;
53
- }
54
- .mobile > div {
55
- transition: transform 0.4s ease;
56
- }
57
-
58
- .mobile > #window-component--searchId {
59
- position: fixed !important;
60
- top: calc(var(--v-vcs-font-size) * 5 + 28px) !important;
61
- left: 5px !important;
62
- right: calc(var(--v-vcs-font-size) * 5 + 2px) !important;
63
- z-index: 2;
64
- border-radius: 4px !important;
65
- width: inherit !important;
66
- padding-right: 1px !important;
67
- .py-1 {
68
- padding: 0px !important;
69
- }
70
- }
71
- .mobile > #window-component--searchId > div > div {
72
- border-radius: 4px !important;
73
- }
74
-
75
- .oblique > #window-component--searchId {
76
- right: calc(var(--v-vcs-font-size) * 6.25 + 2px) !important;
77
- }
78
- </style>
79
-
80
39
  <script>
81
40
  import { computed, inject, onUnmounted, ref, watch } from 'vue';
82
41
  import { useDisplay } from 'vuetify';
@@ -358,3 +317,44 @@
358
317
  },
359
318
  };
360
319
  </script>
320
+
321
+ <style scoped lang="scss">
322
+ .mobile > div:not(#window-component--searchId) {
323
+ position: fixed;
324
+ left: 0;
325
+ right: 0;
326
+ z-index: 2;
327
+ display: contents;
328
+ width: 100% !important;
329
+ max-width: 100% !important;
330
+ inset: unset !important;
331
+ border-radius: 0 !important;
332
+ overflow: auto;
333
+ bottom: 0 !important;
334
+ max-height: 50% !important;
335
+ }
336
+ .mobile > div {
337
+ transition: transform 0.4s ease;
338
+ }
339
+
340
+ .mobile > #window-component--searchId {
341
+ position: fixed !important;
342
+ top: calc(var(--v-vcs-font-size) * 5 + 28px) !important;
343
+ left: 5px !important;
344
+ right: calc(var(--v-vcs-font-size) * 5 + 2px) !important;
345
+ z-index: 2;
346
+ border-radius: 4px !important;
347
+ width: inherit !important;
348
+ padding-right: 1px !important;
349
+ .py-1 {
350
+ padding: 0px !important;
351
+ }
352
+ }
353
+ .mobile > #window-component--searchId > div > div {
354
+ border-radius: 4px !important;
355
+ }
356
+
357
+ .oblique > #window-component--searchId {
358
+ right: calc(var(--v-vcs-font-size) * 6.25 + 2px) !important;
359
+ }
360
+ </style>
@@ -177,6 +177,10 @@
177
177
  default: false,
178
178
  },
179
179
  },
180
+ emits: ['direction-click'],
181
+ setup() {
182
+ return { alignment: ref('') };
183
+ },
180
184
  methods: {
181
185
  emit(event, dir) {
182
186
  if (this.canEmit) {
@@ -186,9 +190,6 @@
186
190
  }
187
191
  },
188
192
  },
189
- setup() {
190
- return { alignment: ref('') };
191
- },
192
193
  };
193
194
  </script>
194
195
 
@@ -11,7 +11,7 @@ declare const _default: import("vue").DefineComponent<{
11
11
  alignment: import("vue").Ref<string>;
12
12
  }, any, {}, {
13
13
  emit(event: any, dir: any): void;
14
- }, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
14
+ }, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, "direction-click"[], "direction-click", import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
15
15
  canEmit: {
16
16
  type: BooleanConstructor;
17
17
  default: boolean;
@@ -20,7 +20,9 @@ declare const _default: import("vue").DefineComponent<{
20
20
  type: BooleanConstructor;
21
21
  default: boolean;
22
22
  };
23
- }>>, {
23
+ }>> & {
24
+ "onDirection-click"?: ((...args: any[]) => any) | undefined;
25
+ }, {
24
26
  canEmit: boolean;
25
27
  hideTicks: boolean;
26
28
  }, {}>;
@@ -41,6 +41,7 @@
41
41
  required: false,
42
42
  },
43
43
  },
44
+ emits: ['update:modelValue'],
44
45
  methods: {
45
46
  input(rotation) {
46
47
  let currentValue = this.modelValue + rotation;
@@ -10,7 +10,7 @@ declare const _default: import("vue").DefineComponent<{
10
10
  };
11
11
  }, any, any, {}, {
12
12
  input(rotation: any): void;
13
- }, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
13
+ }, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, "update:modelValue"[], "update:modelValue", import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
14
14
  modelValue: {
15
15
  type: NumberConstructor;
16
16
  required: true;
@@ -20,7 +20,9 @@ declare const _default: import("vue").DefineComponent<{
20
20
  default: boolean;
21
21
  required: false;
22
22
  };
23
- }>>, {
23
+ }>> & {
24
+ "onUpdate:modelValue"?: ((...args: any[]) => any) | undefined;
25
+ }, {
24
26
  disabled: boolean;
25
27
  }, {}>;
26
28
  export default _default;
@@ -14,7 +14,6 @@
14
14
  ></v-tooltip>
15
15
  </v-card>
16
16
  </template>
17
- <style lang="scss" scoped></style>
18
17
  <script>
19
18
  import { VCard, VIcon, VTooltip } from 'vuetify/components';
20
19
  import { computed } from 'vue';
@@ -67,3 +66,4 @@
67
66
  },
68
67
  };
69
68
  </script>
69
+ <style lang="scss" scoped></style>
@@ -28,41 +28,6 @@
28
28
  </v-card>
29
29
  </template>
30
30
 
31
- <style lang="scss" scoped>
32
- .v-slider.v-input--vertical {
33
- :deep(.v-slider-track__fill) {
34
- width: 2px;
35
- }
36
- :deep(.v-slider-track__tick--first) {
37
- bottom: 0;
38
- }
39
- :deep(.v-slider-track__tick--last) {
40
- bottom: 100%;
41
- }
42
- }
43
-
44
- .vcs-tilt-slider {
45
- margin-top: 6px;
46
- margin-bottom: 10px;
47
- :deep(.v-slider-thumb__surface) {
48
- border-radius: 3px;
49
- width: 16px;
50
- height: 4px;
51
- margin-top: 10px;
52
- box-shadow: none !important;
53
- }
54
- }
55
- :deep(.v-slider-thumb__surface::before) {
56
- --v-focus-opacity: 0;
57
- --v-hover-opacity: 0;
58
- --v-pressed-opacity: 0;
59
- }
60
-
61
- .v-input--vertical :deep(.v-input__control) {
62
- min-height: calc(var(--v-vcs-font-size) * 4);
63
- }
64
- </style>
65
-
66
31
  <script>
67
32
  import { computed, defineComponent } from 'vue';
68
33
  import { VCard, VSlider, VTooltip } from 'vuetify/components';
@@ -115,3 +80,38 @@
115
80
  },
116
81
  });
117
82
  </script>
83
+
84
+ <style lang="scss" scoped>
85
+ .v-slider.v-input--vertical {
86
+ :deep(.v-slider-track__fill) {
87
+ width: 2px;
88
+ }
89
+ :deep(.v-slider-track__tick--first) {
90
+ bottom: 0;
91
+ }
92
+ :deep(.v-slider-track__tick--last) {
93
+ bottom: 100%;
94
+ }
95
+ }
96
+
97
+ .vcs-tilt-slider {
98
+ margin-top: 6px;
99
+ margin-bottom: 10px;
100
+ :deep(.v-slider-thumb__surface) {
101
+ border-radius: 3px;
102
+ width: 16px;
103
+ height: 4px;
104
+ margin-top: 10px;
105
+ box-shadow: none !important;
106
+ }
107
+ }
108
+ :deep(.v-slider-thumb__surface::before) {
109
+ --v-focus-opacity: 0;
110
+ --v-hover-opacity: 0;
111
+ --v-pressed-opacity: 0;
112
+ }
113
+
114
+ .v-input--vertical :deep(.v-input__control) {
115
+ min-height: calc(var(--v-vcs-font-size) * 4);
116
+ }
117
+ </style>
@@ -4,7 +4,7 @@
4
4
  transform: `rotate(${compassRotation}deg)`,
5
5
  transition: 'transform 0.2s ease',
6
6
  }"
7
- @click="$emit('update:modelValue', 0)"
7
+ @click="alignNorth"
8
8
  class="d-flex flex-column justify-center align-center position-relative rounded-circle user-select-none vcs-compass"
9
9
  elevation="1"
10
10
  :height="height"
@@ -13,17 +13,18 @@
13
13
  <span>N</span>
14
14
  <MapNavCompass
15
15
  class="position-absolute top-0 bottom-0 right-0 left-0 text-primary"
16
- @click="$event.stopPropagation()"
16
+ @click="!xs && $event.stopPropagation()"
17
17
  @direction-click="$emit('update:modelValue', $event)"
18
- :can-emit="!disabled && (viewMode === '3d' || viewMode === 'oblique')"
18
+ :can-emit="
19
+ !disabled && !xs && (viewMode === '3d' || viewMode === 'oblique')
20
+ "
19
21
  :hide-ticks="viewMode === 'oblique'"
20
22
  />
21
23
  </v-sheet>
22
24
  </template>
23
- <style lang="scss" scoped></style>
24
25
  <script>
25
26
  import { computed, ref } from 'vue';
26
-
27
+ import { useDisplay } from 'vuetify';
27
28
  import { VSheet } from 'vuetify/components';
28
29
  import MapNavCompass from './MapNavCompass.vue';
29
30
  import { useFontSize } from '../vuePlugins/vuetify.js';
@@ -55,23 +56,26 @@
55
56
  required: false,
56
57
  },
57
58
  },
58
- setup(props) {
59
+ emits: ['update:modelValue'],
60
+ setup(props, { emit }) {
59
61
  const rotationValue = ref(props.modelValue);
60
62
 
63
+ const { xs } = useDisplay();
61
64
  const fontSize = useFontSize();
62
- const height = computed(() => {
63
- return fontSize.value * 5;
64
- });
65
-
66
- const width = computed(() => {
67
- return fontSize.value * 5;
68
- });
65
+ const height = computed(() => fontSize.value * 5);
66
+ const width = computed(() => fontSize.value * 5);
69
67
 
70
68
  return {
69
+ xs,
71
70
  rotationValue,
72
71
  compassRotation: computed(() => -1 * rotationValue.value),
73
72
  height,
74
73
  width,
74
+ alignNorth() {
75
+ if (props.modelValue % 360 !== 0) {
76
+ emit('update:modelValue', 0);
77
+ }
78
+ },
75
79
  };
76
80
  },
77
81
  watch: {
@@ -87,3 +91,4 @@
87
91
  },
88
92
  };
89
93
  </script>
94
+ <style lang="scss" scoped></style>