@vcmap/ui 5.0.0-rc.15 → 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.
- package/config/base.config.json +4 -0
- package/config/dev.config.json +5 -1
- package/config/www.config.json +5 -3
- package/dist/assets/{cesium.2e288a.js → cesium.430460.js} +0 -0
- package/dist/assets/cesium.js +1 -1
- package/dist/assets/{core.8014d3.js → core.5089ba.js} +5925 -4374
- package/dist/assets/core.js +1 -1
- package/dist/assets/{index.3f74fa92.js → index.854f8e2b.js} +1 -1
- package/dist/assets/{ol.31c3a5.js → ol.9be53a.js} +0 -0
- package/dist/assets/ol.js +1 -1
- package/dist/assets/ui.49010a.css +1 -0
- package/dist/assets/{ui.36f84f.js → ui.49010a.js} +3907 -3232
- package/dist/assets/ui.js +1 -1
- package/dist/assets/{vue.a39c10.js → vue.247c1c.js} +0 -0
- package/dist/assets/vue.js +2 -2
- package/dist/assets/{vuetify.378637.css → vuetify.735e58.css} +1 -1
- package/dist/assets/{vuetify.378637.js → vuetify.735e58.js} +1 -1
- package/dist/assets/vuetify.js +2 -2
- package/dist/index.html +1 -1
- package/index.html +77 -0
- package/index.js +4 -0
- package/package.json +4 -2
- package/plugins/@vcmap/create-link/fallbackCreateLink.vue +4 -1
- package/plugins/@vcmap/create-link/index.js +4 -1
- package/plugins/@vcmap/pluginExample/exampleActions.js +45 -0
- package/plugins/@vcmap/pluginExample/index.js +24 -1
- package/plugins/@vcmap/pluginExample/pluginExampleComponent.vue +70 -42
- package/plugins/@vcmap/search-nominatim/nominatim.js +1 -1
- package/plugins/@vcmap/theme-changer/ThemeChangerComponent.vue +4 -2
- package/plugins/notifier/index.js +31 -0
- package/plugins/notifier/notifierTester.vue +88 -0
- package/plugins/package.json +1 -1
- package/plugins/test/allIconsComponent.vue +2 -2
- package/plugins/test/emptyComponent.vue +1 -1
- package/plugins/test/index.js +22 -0
- package/plugins/test/myCustomHeader.vue +9 -1
- package/plugins/test/testList.vue +287 -0
- package/plugins/test/windowManagerExample.vue +3 -0
- package/plugins/wizardExample/index.js +41 -0
- package/plugins/wizardExample/wizardExample.vue +77 -0
- package/src/application/VcsApp.vue +18 -8
- package/src/components/form-inputs-controls/VcsFormSection.vue +10 -10
- package/src/components/form-inputs-controls/VcsSelect.vue +33 -1
- package/src/components/form-inputs-controls/VcsTextField.vue +11 -3
- package/src/components/form-inputs-controls/VcsWizard.vue +133 -0
- package/src/components/imageElementInjector.vue +22 -0
- package/src/components/lists/VcsList.vue +466 -0
- package/src/components/lists/VcsTreeview.vue +1 -2
- package/src/components/lists/VcsTreeviewLeaf.vue +18 -50
- package/src/components/lists/VcsTreeviewSearchbar.vue +1 -23
- package/src/components/tables/VcsTable.vue +13 -1
- package/src/contentTree/LayerTree.vue +1 -1
- package/src/contentTree/contentTreeItem.js +13 -13
- package/src/contentTree/subContentTreeItem.js +1 -1
- package/src/contentTree/vcsObjectContentTreeItem.js +1 -1
- package/src/featureInfo/BalloonComponent.vue +10 -8
- package/src/featureInfo/balloonFeatureInfoView.js +14 -14
- package/src/featureInfo/balloonHelper.js +4 -0
- package/src/featureInfo/featureInfo.js +13 -0
- package/src/featureInfo/featureInfoInteraction.js +1 -1
- package/src/i18n/de.js +7 -0
- package/src/i18n/en.js +7 -0
- package/src/icons/+all.js +4 -0
- package/src/icons/WandIcon.vue +63 -0
- package/src/manager/window/WindowComponent.vue +9 -2
- package/src/manager/window/WindowComponentHeader.vue +33 -7
- package/src/manager/window/WindowManager.vue +1 -0
- package/src/manager/window/windowManager.js +11 -1
- package/src/navigation/overviewMap.js +10 -9
- package/src/notifier/notifier.js +121 -0
- package/src/notifier/notifierComponent.vue +84 -0
- package/src/styles/variables.scss +19 -3
- package/src/vcsUiApp.js +19 -1
- package/src/vuePlugins/vuetify.js +2 -0
- package/dist/assets/ui.36f84f.css +0 -1
@@ -17,11 +17,21 @@
|
|
17
17
|
:outlined="isOutlined"
|
18
18
|
:dense="isDense"
|
19
19
|
:height="isDense ? 24 : 32"
|
20
|
+
:item-text="item => $t(getText(item))"
|
20
21
|
:class="$attrs.color === 'primary' ? 'primary--select' : ''"
|
21
22
|
v-bind="{...$attrs, ...attrs}"
|
22
23
|
v-on="{...$listeners, ...on}"
|
23
24
|
@update:error="setError"
|
24
|
-
|
25
|
+
>
|
26
|
+
<template #selection="{ item, index }">
|
27
|
+
<span v-if="index === 0" class="text-truncate">
|
28
|
+
{{ $t(getText(item)) }}
|
29
|
+
</span>
|
30
|
+
<span v-if="index === 1" class="text-no-wrap grey--text text-caption">
|
31
|
+
(+{{ $attrs.value.length - 1 }})
|
32
|
+
</span>
|
33
|
+
</template>
|
34
|
+
</v-select>
|
25
35
|
</span>
|
26
36
|
</template>
|
27
37
|
</VcsTooltip>
|
@@ -46,6 +56,15 @@
|
|
46
56
|
}
|
47
57
|
}
|
48
58
|
}
|
59
|
+
.v-select{
|
60
|
+
&.v-select--is-multi{
|
61
|
+
::v-deep {
|
62
|
+
.v-select__selections{
|
63
|
+
flex-wrap: nowrap;
|
64
|
+
}
|
65
|
+
}
|
66
|
+
}
|
67
|
+
}
|
49
68
|
</style>
|
50
69
|
<script>
|
51
70
|
|
@@ -55,11 +74,13 @@
|
|
55
74
|
|
56
75
|
/**
|
57
76
|
* @description Stylized wrapper around {@link https://vuetifyjs.com/en/api/v-select/ |vuetify select}.
|
77
|
+
* Translates the items text if it is an i18n string.
|
58
78
|
* Provides two height options depending on "dense" property:
|
59
79
|
* - if dense is set true (default), height is 24 px
|
60
80
|
* - if dense is set false, height is 32 px
|
61
81
|
* Provides VcsTooltip to show error messages
|
62
82
|
* @vue-prop {('bottom' | 'left' | 'top' | 'right')} [tooltipPosition='right'] - Position of the error tooltip.
|
83
|
+
* @vue-prop {Function} itemText - A function that is applied to each item and should return the item's text value.
|
63
84
|
* @vue-computed {boolean} isDense - Whether size of select is dense.
|
64
85
|
* @vue-computed {boolean} isOutlined - Select is outlined on either hover, focus or error, if not disabled.
|
65
86
|
*/
|
@@ -74,6 +95,10 @@
|
|
74
95
|
type: String,
|
75
96
|
default: 'right',
|
76
97
|
},
|
98
|
+
itemText: {
|
99
|
+
type: Function,
|
100
|
+
default: undefined,
|
101
|
+
},
|
77
102
|
},
|
78
103
|
data() {
|
79
104
|
return {
|
@@ -95,6 +120,13 @@
|
|
95
120
|
const rules = [...this.$attrs.rules].concat(this.$attrs.errorMessages);
|
96
121
|
this.errorMessage = validate(rules, this.$attrs.value).join('\n');
|
97
122
|
},
|
123
|
+
getText(item) {
|
124
|
+
if (this.itemText) {
|
125
|
+
return this.itemText(item);
|
126
|
+
} else {
|
127
|
+
return item?.text ?? item;
|
128
|
+
}
|
129
|
+
},
|
98
130
|
},
|
99
131
|
};
|
100
132
|
</script>
|
@@ -11,7 +11,8 @@
|
|
11
11
|
:max-width="200"
|
12
12
|
>
|
13
13
|
<template #activator="{ attrs }">
|
14
|
-
<
|
14
|
+
<component
|
15
|
+
:is="inputComponent"
|
15
16
|
ref="textFieldRef"
|
16
17
|
hide-details
|
17
18
|
:dense="isDense"
|
@@ -23,7 +24,7 @@
|
|
23
24
|
v-bind="{...$attrs, ...attrs}"
|
24
25
|
v-on="{...$listeners}"
|
25
26
|
:height="isDense ? 24 : 32"
|
26
|
-
class="ma-0 pb-1 pt-1 primary--placeholder"
|
27
|
+
class="ma-0 pb-1 pt-1 primary--placeholder align-center"
|
27
28
|
:class="$attrs.color === 'primary' ? 'primary--textfield' : ''"
|
28
29
|
/>
|
29
30
|
</template>
|
@@ -51,7 +52,7 @@
|
|
51
52
|
</style>
|
52
53
|
|
53
54
|
<script>
|
54
|
-
import { VTextField } from 'vuetify/lib';
|
55
|
+
import { VTextField, VFileInput } from 'vuetify/lib';
|
55
56
|
import VcsTooltip from '../notification/VcsTooltip.vue';
|
56
57
|
|
57
58
|
/**
|
@@ -74,6 +75,7 @@
|
|
74
75
|
components: {
|
75
76
|
VcsTooltip,
|
76
77
|
VTextField,
|
78
|
+
VFileInput,
|
77
79
|
},
|
78
80
|
props: {
|
79
81
|
tooltipPosition: {
|
@@ -92,6 +94,12 @@
|
|
92
94
|
};
|
93
95
|
},
|
94
96
|
computed: {
|
97
|
+
inputComponent() {
|
98
|
+
if (this.$attrs.type === 'file') {
|
99
|
+
return 'VFileInput';
|
100
|
+
}
|
101
|
+
return 'VTextField';
|
102
|
+
},
|
95
103
|
isClearable() {
|
96
104
|
return (this.$attrs.clearable !== undefined && this.$attrs.clearable !== false) &&
|
97
105
|
(this.hover || this.focus || this.isError);
|
@@ -0,0 +1,133 @@
|
|
1
|
+
<template>
|
2
|
+
<v-stepper
|
3
|
+
vertical
|
4
|
+
:value="value"
|
5
|
+
@change="(value) => emitValue(value)"
|
6
|
+
>
|
7
|
+
<slot />
|
8
|
+
</v-stepper>
|
9
|
+
</template>
|
10
|
+
|
11
|
+
<script>
|
12
|
+
import { VStepper } from 'vuetify/lib';
|
13
|
+
|
14
|
+
/**
|
15
|
+
* @description Stylized wrapper around {@link https://vuetifyjs.com/en/api/v-stepper/ |vuetify stepper}
|
16
|
+
* Is always vertical.
|
17
|
+
* Only passes the step property, all other props are ignored.
|
18
|
+
* @vue-prop {number} step - The current step of the stepper.
|
19
|
+
*/
|
20
|
+
export default {
|
21
|
+
name: 'VcsWizard',
|
22
|
+
components: {
|
23
|
+
VStepper,
|
24
|
+
},
|
25
|
+
props: {
|
26
|
+
value: {
|
27
|
+
type: Number,
|
28
|
+
default: undefined,
|
29
|
+
},
|
30
|
+
},
|
31
|
+
setup(props, { emit }) {
|
32
|
+
function emitValue(newValue) {
|
33
|
+
emit('input', typeof newValue !== 'number' ? Number(newValue) : newValue);
|
34
|
+
}
|
35
|
+
|
36
|
+
return {
|
37
|
+
emitValue,
|
38
|
+
};
|
39
|
+
},
|
40
|
+
};
|
41
|
+
</script>
|
42
|
+
<style scoped lang="scss">
|
43
|
+
.v-stepper{
|
44
|
+
&.theme--light {
|
45
|
+
::v-deep{
|
46
|
+
.v-stepper__step {
|
47
|
+
&--active {
|
48
|
+
background-color: rgba(34, 34, 34, 0.1);
|
49
|
+
.v-stepper__label {
|
50
|
+
color: rgba(34, 34, 34, 0.8);
|
51
|
+
}
|
52
|
+
}
|
53
|
+
&--complete {
|
54
|
+
.v-stepper__label {
|
55
|
+
color: rgba(0, 0, 0, 0.38);
|
56
|
+
}
|
57
|
+
}
|
58
|
+
}
|
59
|
+
.v-stepper__content {
|
60
|
+
&:not(:last-child) {
|
61
|
+
border-left: 2px solid rgba(0, 0, 0, 0.12) !important;
|
62
|
+
}
|
63
|
+
}
|
64
|
+
}
|
65
|
+
}
|
66
|
+
&.theme--dark {
|
67
|
+
::v-deep{
|
68
|
+
.v-stepper__step {
|
69
|
+
&--active {
|
70
|
+
background-color: rgba(255, 255, 255, 0.5);
|
71
|
+
.v-stepper__label {
|
72
|
+
color: rgba(255, 255, 255, 1);
|
73
|
+
}
|
74
|
+
}
|
75
|
+
&--complete {
|
76
|
+
.v-stepper__label {
|
77
|
+
color: rgba(255, 255, 255, 0.5);
|
78
|
+
}
|
79
|
+
}
|
80
|
+
.v-stepper__step__step {
|
81
|
+
.v-icon {
|
82
|
+
color: transparent;
|
83
|
+
}
|
84
|
+
}
|
85
|
+
&.v-stepper__step--error{
|
86
|
+
.v-stepper__label{
|
87
|
+
color: var(--v-error-darken2);
|
88
|
+
}
|
89
|
+
.v-stepper__step__step{
|
90
|
+
background-color: var(--v-error-darken1);
|
91
|
+
}
|
92
|
+
}
|
93
|
+
}
|
94
|
+
.v-stepper__content {
|
95
|
+
&:not(:last-child) {
|
96
|
+
border-left: 2px solid rgba(255, 255, 255, 0.8) !important;
|
97
|
+
}
|
98
|
+
}
|
99
|
+
}
|
100
|
+
}
|
101
|
+
::v-deep{
|
102
|
+
.v-stepper__step {
|
103
|
+
height: 40px;
|
104
|
+
.v-stepper__label {
|
105
|
+
font-weight: 700;
|
106
|
+
text-shadow: none !important;
|
107
|
+
}
|
108
|
+
.v-stepper__step__step {
|
109
|
+
color: transparent;
|
110
|
+
position: relative;
|
111
|
+
&:before{
|
112
|
+
content: '\25cf';
|
113
|
+
color: var(--v-basic-base);
|
114
|
+
font-size: 18px;
|
115
|
+
position: absolute;
|
116
|
+
top: -9px;
|
117
|
+
}
|
118
|
+
}
|
119
|
+
&.v-stepper__step--error {
|
120
|
+
.v-stepper__step__step{
|
121
|
+
background-color: var(--v-error-base);
|
122
|
+
}
|
123
|
+
.v-stepper__label{
|
124
|
+
color: var(--v-error-base);
|
125
|
+
}
|
126
|
+
}
|
127
|
+
}
|
128
|
+
.v-stepper__content.v-stepper__wrapper {
|
129
|
+
margin: 4px 0;
|
130
|
+
}
|
131
|
+
}
|
132
|
+
}
|
133
|
+
</style>
|
@@ -0,0 +1,22 @@
|
|
1
|
+
<template>
|
2
|
+
<div />
|
3
|
+
</template>
|
4
|
+
|
5
|
+
<script>
|
6
|
+
export default {
|
7
|
+
name: 'ImageElementInjector',
|
8
|
+
props: {
|
9
|
+
element: {
|
10
|
+
type: [HTMLCanvasElement, HTMLImageElement],
|
11
|
+
required: true,
|
12
|
+
},
|
13
|
+
},
|
14
|
+
mounted() {
|
15
|
+
this.$el.replaceWith(this.element);
|
16
|
+
},
|
17
|
+
};
|
18
|
+
</script>
|
19
|
+
|
20
|
+
<style scoped>
|
21
|
+
|
22
|
+
</style>
|