@vcmap/ui 5.0.0-rc.14 → 5.0.0-rc.16

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 (132) hide show
  1. package/README.md +33 -31
  2. package/build/build.js +9 -0
  3. package/build/buildHelpers.js +12 -10
  4. package/build/commonViteConfig.js +3 -10
  5. package/config/base.config.json +30 -24
  6. package/config/dev.config.json +13 -1
  7. package/config/www.config.json +104 -17
  8. package/dist/assets/cesium.430460.js +137226 -0
  9. package/dist/assets/cesium.js +1 -1
  10. package/dist/assets/core.5089ba.js +16024 -0
  11. package/dist/assets/core.js +1 -1
  12. package/dist/assets/index.854f8e2b.js +1 -0
  13. package/dist/assets/ol.9be53a.js +44279 -0
  14. package/dist/assets/ol.js +1 -1
  15. package/dist/assets/{ui.15ef6a.css → ui.49010a.css} +1 -1
  16. package/dist/assets/ui.49010a.js +16776 -0
  17. package/dist/assets/ui.js +1 -1
  18. package/dist/assets/vue.247c1c.js +4675 -0
  19. package/dist/assets/vue.js +5 -2
  20. package/dist/assets/{vuetify.202322.css → vuetify.735e58.css} +1 -1
  21. package/dist/assets/vuetify.735e58.js +21019 -0
  22. package/dist/assets/vuetify.js +5 -2
  23. package/dist/index.html +1 -1
  24. package/index.html +77 -0
  25. package/index.js +8 -1
  26. package/package.json +12 -10
  27. package/plugins/@vcmap/create-link/fallbackCreateLink.vue +4 -1
  28. package/plugins/@vcmap/create-link/index.js +4 -1
  29. package/plugins/@vcmap/pluginExample/exampleActions.js +45 -0
  30. package/plugins/@vcmap/pluginExample/index.js +38 -1
  31. package/plugins/@vcmap/pluginExample/pluginExampleComponent.vue +152 -98
  32. package/plugins/@vcmap/project-selector/ContextsListComponent.vue +8 -1
  33. package/plugins/@vcmap/project-selector/ProjectSelectorComponent.vue +27 -1
  34. package/plugins/@vcmap/search-nominatim/LICENSE.md +14 -0
  35. package/plugins/@vcmap/search-nominatim/README.md +2 -0
  36. package/plugins/@vcmap/search-nominatim/config.json +4 -0
  37. package/plugins/@vcmap/search-nominatim/index.js +26 -0
  38. package/plugins/@vcmap/search-nominatim/nominatim.js +170 -0
  39. package/plugins/@vcmap/search-nominatim/package.json +43 -0
  40. package/plugins/@vcmap/theme-changer/ThemeChangerComponent.vue +26 -0
  41. package/plugins/buttonExamples/ButtonExamples.vue +28 -1
  42. package/plugins/categoryTest/Categories.vue +16 -0
  43. package/plugins/categoryTest/Category.vue +30 -4
  44. package/plugins/example/mySuperComponent.vue +12 -1
  45. package/plugins/notifier/index.js +31 -0
  46. package/plugins/notifier/notifierTester.vue +88 -0
  47. package/plugins/package.json +2 -1
  48. package/plugins/simple-graph/SimpleGraphComponent.vue +5 -11
  49. package/plugins/test/allIconsComponent.vue +16 -0
  50. package/plugins/test/editor.vue +3 -0
  51. package/plugins/test/emptyComponent.vue +3 -0
  52. package/plugins/test/index.js +22 -0
  53. package/plugins/test/myCustomHeader.vue +9 -1
  54. package/plugins/test/testList.vue +287 -0
  55. package/plugins/test/vcsContent.vue +3 -0
  56. package/plugins/test/windowManagerExample.vue +3 -0
  57. package/plugins/wizardExample/index.js +41 -0
  58. package/plugins/wizardExample/wizardExample.vue +77 -0
  59. package/src/actions/actionHelper.js +103 -2
  60. package/src/actions/styleSelector.vue +9 -0
  61. package/src/application/VcsApp.vue +95 -17
  62. package/src/application/VcsAttributions.vue +63 -0
  63. package/src/application/VcsAttributionsFooter.vue +87 -0
  64. package/src/application/{Navbar.vue → VcsNavbar.vue} +35 -2
  65. package/src/application/VcsSettings.vue +4 -0
  66. package/src/application/attributionsHelper.js +150 -0
  67. package/src/application/vcsAppWrapper.vue +5 -1
  68. package/src/components/buttons/VcsActionButtonList.vue +8 -1
  69. package/src/components/buttons/VcsButton.vue +7 -1
  70. package/src/components/form-inputs-controls/VcsCheckbox.vue +7 -2
  71. package/src/components/form-inputs-controls/VcsColorPicker.vue +4 -0
  72. package/src/components/form-inputs-controls/VcsFormSection.vue +55 -9
  73. package/src/components/form-inputs-controls/VcsRadio.vue +7 -1
  74. package/src/components/form-inputs-controls/VcsSelect.vue +38 -2
  75. package/src/components/form-inputs-controls/VcsTextArea.vue +2 -0
  76. package/src/components/form-inputs-controls/VcsTextField.vue +16 -4
  77. package/src/components/form-inputs-controls/VcsWizard.vue +133 -0
  78. package/src/components/imageElementInjector.vue +22 -0
  79. package/src/components/lists/VcsActionList.vue +12 -1
  80. package/src/components/lists/VcsList.vue +466 -0
  81. package/src/components/lists/VcsTreeview.vue +7 -3
  82. package/src/components/lists/VcsTreeviewLeaf.vue +23 -51
  83. package/src/components/lists/VcsTreeviewSearchbar.vue +6 -23
  84. package/src/components/notification/VcsTooltip.vue +14 -9
  85. package/src/components/tables/VcsTable.vue +129 -38
  86. package/src/contentTree/LayerTree.vue +1 -1
  87. package/src/contentTree/contentTreeItem.js +13 -13
  88. package/src/contentTree/subContentTreeItem.js +1 -1
  89. package/src/contentTree/vcsObjectContentTreeItem.js +1 -1
  90. package/src/featureInfo/AddressBalloonComponent.vue +17 -1
  91. package/src/featureInfo/BalloonComponent.vue +63 -27
  92. package/src/featureInfo/balloonFeatureInfoView.js +14 -14
  93. package/src/featureInfo/balloonHelper.js +4 -0
  94. package/src/featureInfo/featureInfo.js +23 -2
  95. package/src/featureInfo/featureInfoInteraction.js +1 -1
  96. package/src/i18n/de.js +22 -0
  97. package/src/i18n/en.js +22 -0
  98. package/src/icons/+all.js +4 -0
  99. package/src/icons/WandIcon.vue +63 -0
  100. package/src/legend/legendHelper.js +18 -12
  101. package/src/legend/styleLegendItem.vue +20 -1
  102. package/src/legend/vcsLegend.vue +29 -3
  103. package/src/manager/toolbox/GroupToolboxComponent.vue +13 -1
  104. package/src/manager/toolbox/SelectToolboxComponent.vue +13 -1
  105. package/src/manager/toolbox/ToolboxManager.vue +3 -0
  106. package/src/manager/window/WindowComponent.vue +15 -2
  107. package/src/manager/window/WindowComponentHeader.vue +38 -7
  108. package/src/manager/window/WindowManager.vue +1 -0
  109. package/src/manager/window/windowManager.js +11 -1
  110. package/src/navigation/mapNavigation.vue +15 -36
  111. package/src/navigation/orientationToolsButton.vue +6 -1
  112. package/src/navigation/overviewMap.js +19 -47
  113. package/src/navigation/tiltSlider.vue +3 -0
  114. package/src/navigation/vcsCompass.vue +2 -0
  115. package/src/notifier/notifier.js +121 -0
  116. package/src/notifier/notifierComponent.vue +84 -0
  117. package/src/search/resultItem.vue +89 -0
  118. package/src/search/resultsComponent.vue +98 -0
  119. package/src/search/search.js +326 -0
  120. package/src/search/searchComponent.vue +90 -0
  121. package/src/styles/_typography.scss +3 -0
  122. package/src/styles/utils/_cursor.scss +4 -0
  123. package/src/styles/variables.scss +23 -4
  124. package/src/vcsUiApp.js +35 -1
  125. package/src/vuePlugins/vuetify.js +2 -0
  126. package/dist/assets/cesium.9489f8.js +0 -8699
  127. package/dist/assets/core.aa346a.js +0 -4
  128. package/dist/assets/index.3cd4fffa.js +0 -1
  129. package/dist/assets/ol.39651b.js +0 -439
  130. package/dist/assets/ui.15ef6a.js +0 -71
  131. package/dist/assets/vue.cbe9d8.js +0 -9
  132. package/dist/assets/vuetify.202322.js +0 -148
@@ -172,10 +172,37 @@
172
172
  <script>
173
173
  import { VcsButton, VcsActionButtonList } from '@vcmap/ui';
174
174
  import { ref } from 'vue';
175
+ import {
176
+ VCard,
177
+ VListItem,
178
+ VListItemContent,
179
+ VListItemTitle,
180
+ VListItemAction,
181
+ VSwitch,
182
+ VDivider,
183
+ VRow,
184
+ VCol,
185
+ VCardTitle,
186
+ VCardActions,
187
+ } from 'vuetify/lib';
175
188
 
176
189
  export default {
177
190
  name: 'ButtonExamples',
178
- components: { VcsButton, VcsActionButtonList },
191
+ components: {
192
+ VcsButton,
193
+ VcsActionButtonList,
194
+ VCard,
195
+ VListItem,
196
+ VListItemContent,
197
+ VListItemTitle,
198
+ VListItemAction,
199
+ VSwitch,
200
+ VDivider,
201
+ VRow,
202
+ VCol,
203
+ VCardTitle,
204
+ VCardActions,
205
+ },
179
206
  setup() {
180
207
  const active = ref(false);
181
208
  const disabled = ref(false);
@@ -60,6 +60,15 @@
60
60
  import { inject, ref, onUnmounted } from 'vue';
61
61
  import { VcsButton } from '@vcmap/ui';
62
62
  import { GeoJSONLayer } from '@vcmap/core';
63
+ import {
64
+ VDialog,
65
+ VCard,
66
+ VForm,
67
+ VSelect,
68
+ VTextField,
69
+ VBtn,
70
+ VTextarea,
71
+ } from 'vuetify/lib';
63
72
  import Category from './Category.vue';
64
73
 
65
74
  export default {
@@ -67,6 +76,13 @@
67
76
  components: {
68
77
  Category,
69
78
  VcsButton,
79
+ VDialog,
80
+ VCard,
81
+ VForm,
82
+ VSelect,
83
+ VTextField,
84
+ VBtn,
85
+ VTextarea,
70
86
  },
71
87
  setup() {
72
88
  const app = inject('vcsApp');
@@ -7,7 +7,7 @@
7
7
  <span class="float-right">
8
8
  <vcs-button icon="$vcsPlus" @click="dialog = true" />
9
9
  <vcs-button icon="mdi-download" @click="download" />
10
- <a :href="downloadLink" target="_blank" ref="link" download="category.json"/>
10
+ <a :href="downloadLink" target="_blank" ref="link" download="category.json" />
11
11
  </span>
12
12
  </span>
13
13
 
@@ -26,7 +26,9 @@
26
26
  class="mb-1"
27
27
  >
28
28
  <v-list-item-content>
29
- <v-list-item-title class="subtitle-1" >{{ item.name }}</v-list-item-title>
29
+ <v-list-item-title class="subtitle-1">
30
+ {{ item.name }}
31
+ </v-list-item-title>
30
32
  <v-list-item-subtitle>{{ item.type }}</v-list-item-subtitle>
31
33
  </v-list-item-content>
32
34
  </v-list-item>
@@ -40,7 +42,9 @@
40
42
  @submit.prevent="addItem"
41
43
  >
42
44
  <v-textarea v-model="jsonString" />
43
- <v-btn type="submit">Add</v-btn>
45
+ <v-btn type="submit">
46
+ Add
47
+ </v-btn>
44
48
  </v-form>
45
49
  </v-card>
46
50
  </v-dialog>
@@ -51,10 +55,32 @@
51
55
  import { inject, nextTick, ref } from 'vue';
52
56
  import { VcsButton } from '@vcmap/ui';
53
57
  import { getObjectFromClassRegistry } from '@vcmap/core';
58
+ import {
59
+ VVirtualScroll,
60
+ VListItem,
61
+ VListItemContent,
62
+ VListItemTitle,
63
+ VListItemSubtitle,
64
+ VDialog,
65
+ VCard,
66
+ VForm,
67
+ VTextarea,
68
+ } from 'vuetify/lib';
54
69
 
55
70
  export default {
56
71
  name: 'CategoryComponent',
57
- components: { VcsButton },
72
+ components: {
73
+ VcsButton,
74
+ VVirtualScroll,
75
+ VListItem,
76
+ VListItemContent,
77
+ VListItemTitle,
78
+ VListItemSubtitle,
79
+ VDialog,
80
+ VCard,
81
+ VForm,
82
+ VTextarea,
83
+ },
58
84
  props: {
59
85
  categoryName: {
60
86
  type: String,
@@ -107,11 +107,22 @@
107
107
  </template>
108
108
  <script>
109
109
 
110
- import Vue from 'vue';
110
+ import {
111
+ VSheet,
112
+ VContainer,
113
+ VRow,
114
+ VCol,
115
+ VTextField,
116
+ } from 'vuetify/lib';
111
117
 
112
118
  export default {
113
119
  name: 'MySuperComponent',
114
120
  components: {
121
+ VSheet,
122
+ VContainer,
123
+ VRow,
124
+ VCol,
125
+ VTextField,
115
126
  },
116
127
  data() {
117
128
  return {
@@ -0,0 +1,31 @@
1
+ import { WindowSlot, createToggleAction, ButtonLocation } from '@vcmap/ui';
2
+ import component from './notifierTester.vue';
3
+
4
+ export default function createNotifierPlugin() {
5
+ return {
6
+ name: 'notifier',
7
+ initialize(vcsApp) {
8
+ const { action, destroy } = createToggleAction(
9
+ {
10
+ name: 'Notifier',
11
+ },
12
+ {
13
+ id: 'notifier-editor',
14
+ state: {
15
+ headerTitle: 'Notifier Editor',
16
+ },
17
+ component,
18
+ slot: WindowSlot.DYNAMIC_LEFT,
19
+ },
20
+ vcsApp.windowManager,
21
+ 'notifier',
22
+ );
23
+ vcsApp.navbarManager.add(
24
+ { id: 'notifier', action },
25
+ 'notifier',
26
+ ButtonLocation.TOOL,
27
+ );
28
+ this.destroy = destroy;
29
+ },
30
+ };
31
+ }
@@ -0,0 +1,88 @@
1
+ <template>
2
+ <v-sheet>
3
+ <v-text-field
4
+ v-model="message"
5
+ label="Message"
6
+ />
7
+ <v-text-field
8
+ v-model.number=timeout
9
+ label="Timeout"
10
+ />
11
+ <VcsCheckbox
12
+ v-model="hasTimeout"
13
+ label="Toggle Timeout"
14
+ />
15
+ <v-list>
16
+ <v-list-item
17
+ v-for="type in types"
18
+ :key="type"
19
+ >
20
+ {{ type }}
21
+ <v-list-item-action @click="notify(type)">
22
+ <v-icon>mdi-plus</v-icon>
23
+ </v-list-item-action>
24
+ </v-list-item>
25
+ </v-list>
26
+ <v-divider />
27
+ <v-card>
28
+ Current number of notifications: {{ notifications.length }}
29
+ </v-card>
30
+ </v-sheet>
31
+ </template>
32
+
33
+ <script>
34
+ import { VSheet, VList, VListItem, VListItemAction, VTextField, VIcon, VCard, VDivider } from 'vuetify/lib';
35
+ import { NotificationType, VcsCheckbox } from '@vcmap/ui';
36
+ import { computed, inject, ref } from 'vue';
37
+
38
+ export default {
39
+ name: 'NotifierTester',
40
+ components: {
41
+ VSheet,
42
+ VList,
43
+ VListItem,
44
+ VListItemAction,
45
+ VTextField,
46
+ VIcon,
47
+ VCard,
48
+ VDivider,
49
+ VcsCheckbox,
50
+ },
51
+ setup() {
52
+ const app = inject('vcsApp');
53
+ const message = ref('Message');
54
+ const timeout = ref(5000);
55
+
56
+ return {
57
+ types: NotificationType,
58
+ message,
59
+ notify(type) {
60
+ app.notifier.add({
61
+ type,
62
+ message: message.value,
63
+ timeout: timeout.value,
64
+ });
65
+ },
66
+ notifications: app.notifier.notifications,
67
+ timeout,
68
+ hasTimeout: computed({
69
+ get() {
70
+ return timeout.value === -1;
71
+ },
72
+ set(value) {
73
+ if (value && timeout.value !== -1) {
74
+ timeout.value = -1;
75
+ } else if (timeout.value === -1) {
76
+ timeout.value = 5000;
77
+ }
78
+ },
79
+ }),
80
+ };
81
+ },
82
+ };
83
+ </script>
84
+
85
+ <style scoped>
86
+
87
+ </style>
88
+
@@ -1,5 +1,6 @@
1
1
  {
2
2
  "dependencies": {
3
- "@vcmap/hello-world": "^1.0.0"
3
+ "@vcmap/hello-world": "^1.0.7",
4
+ "@vcmap/print": "^1.0.1"
4
5
  }
5
6
  }
@@ -14,19 +14,13 @@
14
14
  </template>
15
15
  <script>
16
16
 
17
- /**
18
- * @description A simple table view for feature attributes using {@link https://vuetifyjs.com/en/api/v-sparkline/#props|vuetify v-sparkline }
19
- * @vue-prop {Object} attributes - the feature's attributes
20
- * @vue-prop {string[]} [labels] - optional array of strings labeling all data points
21
- * @vue-prop {string} [graph='trend'] - Choose between a trendline or bars
22
- * @vue-prop {string} [color='primary'] - optional color of the sparkline of the graph
23
- * @vue-prop {string[]} [gradient] - optional array of colors to use as a linear-gradient
24
- * @vue-prop {boolean} [fill=false] - if true, filled area below sparkline
25
- * @vue-prop {boolean|number|string} [smooth=true] - optional number of px to use as a corner radius. true defaults to 8, false is 0
26
- * @vue-computed {number[]} values - numeric values for the graph derived from the attributeKeys
27
- */
17
+ import { VSparkline } from 'vuetify/lib';
18
+
28
19
  export default {
29
20
  name: 'SimpleGraphComponent',
21
+ components: [
22
+ VSparkline,
23
+ ],
30
24
  props: {
31
25
  attributes: {
32
26
  type: Object,
@@ -16,9 +16,25 @@
16
16
 
17
17
  <script>
18
18
  import { Icons } from '@vcmap/ui';
19
+ import {
20
+ VSheet,
21
+ VList,
22
+ VListItem,
23
+ VListItemIcon,
24
+ VIcon,
25
+ VListItemTitle,
26
+ } from 'vuetify/lib';
19
27
 
20
28
  export default {
21
29
  name: 'AllIconsComponent',
30
+ components: {
31
+ VSheet,
32
+ VList,
33
+ VListItem,
34
+ VListItemIcon,
35
+ VIcon,
36
+ VListItemTitle,
37
+ },
22
38
  computed: {
23
39
  icons() {
24
40
  return Object.keys(Icons).map(n => `$${n}`);
@@ -21,6 +21,7 @@
21
21
  import { ref, inject } from 'vue';
22
22
  import { VcsButton } from '@vcmap/ui';
23
23
  import { Context } from '@vcmap/core';
24
+ import { VProgressCircular, VTextarea } from 'vuetify/lib';
24
25
 
25
26
  const contextId = 'foo';
26
27
 
@@ -28,6 +29,8 @@
28
29
  name: 'Editor',
29
30
  components: {
30
31
  VcsButton,
32
+ VTextarea,
33
+ VProgressCircular,
31
34
  },
32
35
  setup() {
33
36
  /** @type {VcsUiApp} */
@@ -7,7 +7,10 @@
7
7
 
8
8
  <script>
9
9
 
10
+ import { VSheet } from 'vuetify/lib';
11
+
10
12
  export default {
11
13
  name: 'EmptyComponent',
14
+ components: { VSheet },
12
15
  };
13
16
  </script>
@@ -7,6 +7,7 @@ import { toolboxData } from './toolbox-data.js';
7
7
  import editor from './editor.vue';
8
8
  import windowManagerExample from './windowManagerExample.vue';
9
9
  import AllIconsComponent from './allIconsComponent.vue';
10
+ import TestList from './testList.vue';
10
11
 
11
12
  let source;
12
13
 
@@ -97,11 +98,27 @@ export default async function () {
97
98
  app.windowManager,
98
99
  '@vcmap/test',
99
100
  );
101
+ const { action: listAction, destroy: destroyList } = createToggleAction(
102
+ {
103
+ name: 'TestList',
104
+ },
105
+ {
106
+ id: 'testList',
107
+ state: {
108
+ headerTitle: 'Test List',
109
+ },
110
+ slot: WindowSlot.DYNAMIC_LEFT,
111
+ component: TestList,
112
+ },
113
+ app.windowManager,
114
+ '@vcmap/test',
115
+ );
100
116
  this._destroyActions = [
101
117
  destroyConfigEditorAction,
102
118
  destroyWindowAction,
103
119
  destroyIconAction,
104
120
  destroryClipboardDialogAction,
121
+ destroyList,
105
122
  ];
106
123
  const alertAction = {
107
124
  name: 'VC Systems',
@@ -130,6 +147,11 @@ export default async function () {
130
147
  '@vcmap/test',
131
148
  ButtonLocation.TOOL,
132
149
  );
150
+ app.navbarManager.add(
151
+ { id: 'list', action: listAction },
152
+ '@vcmap/test',
153
+ ButtonLocation.TOOL,
154
+ );
133
155
  app.navbarManager.add(
134
156
  {
135
157
  id: 'createLink',
@@ -1,6 +1,9 @@
1
1
  <template>
2
2
  <div>
3
- Ha, this is a custom Header with a <span @click="clicked"> CLOSE thing </span>
3
+ <div>
4
+ Ha, this is a custom Header with a <span @click="clicked"> CLOSE thing. </span>
5
+ </div>
6
+ <div>And here is '<b>{{ sample }}</b>' passed through</div>
4
7
  </div>
5
8
  </template>
6
9
 
@@ -8,6 +11,11 @@
8
11
 
9
12
  export default {
10
13
  name: 'MyCustomHeader',
14
+ props: {
15
+ sample: {
16
+ type: String,
17
+ },
18
+ },
11
19
  setup(props, { emit }) {
12
20
  return {
13
21
  clicked: () => {