@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.
- package/README.md +33 -31
- package/build/build.js +9 -0
- package/build/buildHelpers.js +12 -10
- package/build/commonViteConfig.js +3 -10
- package/config/base.config.json +30 -24
- package/config/dev.config.json +13 -1
- package/config/www.config.json +104 -17
- package/dist/assets/cesium.430460.js +137226 -0
- package/dist/assets/cesium.js +1 -1
- package/dist/assets/core.5089ba.js +16024 -0
- package/dist/assets/core.js +1 -1
- package/dist/assets/index.854f8e2b.js +1 -0
- package/dist/assets/ol.9be53a.js +44279 -0
- package/dist/assets/ol.js +1 -1
- package/dist/assets/{ui.15ef6a.css → ui.49010a.css} +1 -1
- package/dist/assets/ui.49010a.js +16776 -0
- package/dist/assets/ui.js +1 -1
- package/dist/assets/vue.247c1c.js +4675 -0
- package/dist/assets/vue.js +5 -2
- package/dist/assets/{vuetify.202322.css → vuetify.735e58.css} +1 -1
- package/dist/assets/vuetify.735e58.js +21019 -0
- package/dist/assets/vuetify.js +5 -2
- package/dist/index.html +1 -1
- package/index.html +77 -0
- package/index.js +8 -1
- package/package.json +12 -10
- 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 +38 -1
- package/plugins/@vcmap/pluginExample/pluginExampleComponent.vue +152 -98
- package/plugins/@vcmap/project-selector/ContextsListComponent.vue +8 -1
- package/plugins/@vcmap/project-selector/ProjectSelectorComponent.vue +27 -1
- package/plugins/@vcmap/search-nominatim/LICENSE.md +14 -0
- package/plugins/@vcmap/search-nominatim/README.md +2 -0
- package/plugins/@vcmap/search-nominatim/config.json +4 -0
- package/plugins/@vcmap/search-nominatim/index.js +26 -0
- package/plugins/@vcmap/search-nominatim/nominatim.js +170 -0
- package/plugins/@vcmap/search-nominatim/package.json +43 -0
- package/plugins/@vcmap/theme-changer/ThemeChangerComponent.vue +26 -0
- package/plugins/buttonExamples/ButtonExamples.vue +28 -1
- package/plugins/categoryTest/Categories.vue +16 -0
- package/plugins/categoryTest/Category.vue +30 -4
- package/plugins/example/mySuperComponent.vue +12 -1
- package/plugins/notifier/index.js +31 -0
- package/plugins/notifier/notifierTester.vue +88 -0
- package/plugins/package.json +2 -1
- package/plugins/simple-graph/SimpleGraphComponent.vue +5 -11
- package/plugins/test/allIconsComponent.vue +16 -0
- package/plugins/test/editor.vue +3 -0
- package/plugins/test/emptyComponent.vue +3 -0
- package/plugins/test/index.js +22 -0
- package/plugins/test/myCustomHeader.vue +9 -1
- package/plugins/test/testList.vue +287 -0
- package/plugins/test/vcsContent.vue +3 -0
- package/plugins/test/windowManagerExample.vue +3 -0
- package/plugins/wizardExample/index.js +41 -0
- package/plugins/wizardExample/wizardExample.vue +77 -0
- package/src/actions/actionHelper.js +103 -2
- package/src/actions/styleSelector.vue +9 -0
- package/src/application/VcsApp.vue +95 -17
- package/src/application/VcsAttributions.vue +63 -0
- package/src/application/VcsAttributionsFooter.vue +87 -0
- package/src/application/{Navbar.vue → VcsNavbar.vue} +35 -2
- package/src/application/VcsSettings.vue +4 -0
- package/src/application/attributionsHelper.js +150 -0
- package/src/application/vcsAppWrapper.vue +5 -1
- package/src/components/buttons/VcsActionButtonList.vue +8 -1
- package/src/components/buttons/VcsButton.vue +7 -1
- package/src/components/form-inputs-controls/VcsCheckbox.vue +7 -2
- package/src/components/form-inputs-controls/VcsColorPicker.vue +4 -0
- package/src/components/form-inputs-controls/VcsFormSection.vue +55 -9
- package/src/components/form-inputs-controls/VcsRadio.vue +7 -1
- package/src/components/form-inputs-controls/VcsSelect.vue +38 -2
- package/src/components/form-inputs-controls/VcsTextArea.vue +2 -0
- package/src/components/form-inputs-controls/VcsTextField.vue +16 -4
- package/src/components/form-inputs-controls/VcsWizard.vue +133 -0
- package/src/components/imageElementInjector.vue +22 -0
- package/src/components/lists/VcsActionList.vue +12 -1
- package/src/components/lists/VcsList.vue +466 -0
- package/src/components/lists/VcsTreeview.vue +7 -3
- package/src/components/lists/VcsTreeviewLeaf.vue +23 -51
- package/src/components/lists/VcsTreeviewSearchbar.vue +6 -23
- package/src/components/notification/VcsTooltip.vue +14 -9
- package/src/components/tables/VcsTable.vue +129 -38
- 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/AddressBalloonComponent.vue +17 -1
- package/src/featureInfo/BalloonComponent.vue +63 -27
- package/src/featureInfo/balloonFeatureInfoView.js +14 -14
- package/src/featureInfo/balloonHelper.js +4 -0
- package/src/featureInfo/featureInfo.js +23 -2
- package/src/featureInfo/featureInfoInteraction.js +1 -1
- package/src/i18n/de.js +22 -0
- package/src/i18n/en.js +22 -0
- package/src/icons/+all.js +4 -0
- package/src/icons/WandIcon.vue +63 -0
- package/src/legend/legendHelper.js +18 -12
- package/src/legend/styleLegendItem.vue +20 -1
- package/src/legend/vcsLegend.vue +29 -3
- package/src/manager/toolbox/GroupToolboxComponent.vue +13 -1
- package/src/manager/toolbox/SelectToolboxComponent.vue +13 -1
- package/src/manager/toolbox/ToolboxManager.vue +3 -0
- package/src/manager/window/WindowComponent.vue +15 -2
- package/src/manager/window/WindowComponentHeader.vue +38 -7
- package/src/manager/window/WindowManager.vue +1 -0
- package/src/manager/window/windowManager.js +11 -1
- package/src/navigation/mapNavigation.vue +15 -36
- package/src/navigation/orientationToolsButton.vue +6 -1
- package/src/navigation/overviewMap.js +19 -47
- package/src/navigation/tiltSlider.vue +3 -0
- package/src/navigation/vcsCompass.vue +2 -0
- package/src/notifier/notifier.js +121 -0
- package/src/notifier/notifierComponent.vue +84 -0
- package/src/search/resultItem.vue +89 -0
- package/src/search/resultsComponent.vue +98 -0
- package/src/search/search.js +326 -0
- package/src/search/searchComponent.vue +90 -0
- package/src/styles/_typography.scss +3 -0
- package/src/styles/utils/_cursor.scss +4 -0
- package/src/styles/variables.scss +23 -4
- package/src/vcsUiApp.js +35 -1
- package/src/vuePlugins/vuetify.js +2 -0
- package/dist/assets/cesium.9489f8.js +0 -8699
- package/dist/assets/core.aa346a.js +0 -4
- package/dist/assets/index.3cd4fffa.js +0 -1
- package/dist/assets/ol.39651b.js +0 -439
- package/dist/assets/ui.15ef6a.js +0 -71
- package/dist/assets/vue.cbe9d8.js +0 -9
- package/dist/assets/vuetify.202322.js +0 -148
@@ -47,6 +47,7 @@
|
|
47
47
|
}
|
48
48
|
</style>
|
49
49
|
<script>
|
50
|
+
import { VCheckbox } from 'vuetify/lib';
|
50
51
|
import VcsLabel from './VcsLabel.vue';
|
51
52
|
import VcsTooltip from '../notification/VcsTooltip.vue';
|
52
53
|
import validate from '../notification/validation.js';
|
@@ -58,11 +59,15 @@
|
|
58
59
|
* - if dense is set false, height is 32 px
|
59
60
|
* Provides VcsTooltip to show error messages
|
60
61
|
* @vue-prop {('bottom' | 'left' | 'top' | 'right')} [tooltipPosition='right'] - Position of the error tooltip.
|
61
|
-
* @vue-prop {string} label Label to be displayed, will be translated.
|
62
|
+
* @vue-prop {string} label - Label to be displayed, will be translated.
|
62
63
|
*/
|
63
64
|
export default {
|
64
65
|
name: 'VcsCheckbox',
|
65
|
-
components: {
|
66
|
+
components: {
|
67
|
+
VcsTooltip,
|
68
|
+
VcsLabel,
|
69
|
+
VCheckbox,
|
70
|
+
},
|
66
71
|
props: {
|
67
72
|
tooltipPosition: {
|
68
73
|
type: String,
|
@@ -31,6 +31,7 @@
|
|
31
31
|
} from 'vue';
|
32
32
|
import { Subject } from 'rxjs';
|
33
33
|
import { debounceTime, takeUntil } from 'rxjs/operators';
|
34
|
+
import { VColorPicker } from 'vuetify/lib';
|
34
35
|
|
35
36
|
/**
|
36
37
|
* @description
|
@@ -38,6 +39,9 @@
|
|
38
39
|
*/
|
39
40
|
export default {
|
40
41
|
name: 'VcsColorPicker',
|
42
|
+
components: {
|
43
|
+
VColorPicker,
|
44
|
+
},
|
41
45
|
props: {
|
42
46
|
width: {
|
43
47
|
type: Number,
|
@@ -1,16 +1,27 @@
|
|
1
1
|
<template>
|
2
2
|
<section class="vcs-form-section">
|
3
|
-
<slot name="
|
3
|
+
<slot name="header">
|
4
4
|
<article class="pa-2 accent">
|
5
5
|
<div class="form-section-header d-flex justify-space-between align-center">
|
6
|
-
<strong class="caption">{{ $t(
|
6
|
+
<strong class="caption">{{ $t(heading) }}</strong>
|
7
7
|
<VcsActionButtonList
|
8
|
-
:actions="
|
8
|
+
:actions="actions"
|
9
9
|
small
|
10
10
|
/>
|
11
11
|
</div>
|
12
12
|
</article>
|
13
13
|
</slot>
|
14
|
+
<v-alert
|
15
|
+
:value="showHelp"
|
16
|
+
dense
|
17
|
+
text
|
18
|
+
color="secondary"
|
19
|
+
class="ma-0"
|
20
|
+
>
|
21
|
+
<slot name="help">
|
22
|
+
<span>{{ $t(helpText) }}</span>
|
23
|
+
</slot>
|
24
|
+
</v-alert>
|
14
25
|
<article class="section-content">
|
15
26
|
<slot />
|
16
27
|
</article>
|
@@ -19,28 +30,63 @@
|
|
19
30
|
|
20
31
|
|
21
32
|
<script>
|
33
|
+
import { computed, ref } from 'vue';
|
34
|
+
import { VAlert } from 'vuetify/lib';
|
22
35
|
import VcsActionButtonList from '../buttons/VcsActionButtonList.vue';
|
23
36
|
|
24
37
|
/**
|
25
38
|
* @description
|
26
39
|
* Stylized form section with action buttons
|
27
|
-
* @vue-data {slot} [#
|
40
|
+
* @vue-data {slot} [#header] - slot to override form section header
|
28
41
|
* @vue-data {slot} [#default] - slot with the section content
|
29
|
-
* @vue-
|
30
|
-
* @vue-prop {
|
42
|
+
* @vue-data {slot} [#help] - Slot to specify html based help. Gets precedence over helpText prop.
|
43
|
+
* @vue-prop {string} heading - Title of the section to be displayed, will be translated.
|
44
|
+
* @vue-prop {Array<VcsAction>} headerActions - Icons to be displayed on the right side
|
45
|
+
* @vue-prop {string} [helpText] - Optional help text. Must be plain string. Use 'help' slot for html based help texts. Help slot has precedence over helpText prop.
|
46
|
+
* @vue-computed {Array<VcsAction>} actions - Returns header actions extended by a help action, if help prop is passed or help slot is used.
|
31
47
|
*/
|
32
48
|
export default {
|
33
49
|
name: 'VcsFormSection',
|
34
|
-
components: {
|
50
|
+
components: {
|
51
|
+
VcsActionButtonList,
|
52
|
+
VAlert,
|
53
|
+
},
|
35
54
|
props: {
|
36
|
-
|
55
|
+
heading: {
|
37
56
|
type: String,
|
38
57
|
default: undefined,
|
39
58
|
},
|
40
|
-
|
59
|
+
headerActions: {
|
41
60
|
type: Array,
|
42
61
|
default: () => ([]),
|
43
62
|
},
|
63
|
+
helpText: {
|
64
|
+
type: String,
|
65
|
+
default: undefined,
|
66
|
+
},
|
67
|
+
},
|
68
|
+
setup(props, { slots }) {
|
69
|
+
const showHelp = ref(false);
|
70
|
+
const helpAction = {
|
71
|
+
name: 'help',
|
72
|
+
title: 'components.vcsFormSection.help',
|
73
|
+
icon: 'mdi-help-circle',
|
74
|
+
callback: () => { showHelp.value = !showHelp.value; },
|
75
|
+
};
|
76
|
+
/**
|
77
|
+
* @type {ComputedRef<VcsAction>}
|
78
|
+
*/
|
79
|
+
const actions = computed(() => {
|
80
|
+
if (props.helpText || (slots.help && slots.help().length > 0)) {
|
81
|
+
return [helpAction, ...props.headerActions];
|
82
|
+
}
|
83
|
+
return props.headerActions;
|
84
|
+
});
|
85
|
+
|
86
|
+
return {
|
87
|
+
showHelp,
|
88
|
+
actions,
|
89
|
+
};
|
44
90
|
},
|
45
91
|
};
|
46
92
|
</script>
|
@@ -70,6 +70,7 @@
|
|
70
70
|
}
|
71
71
|
</style>
|
72
72
|
<script>
|
73
|
+
import { VRadio, VRadioGroup } from 'vuetify/lib';
|
73
74
|
import VcsTooltip from '../notification/VcsTooltip.vue';
|
74
75
|
import VcsLabel from './VcsLabel.vue';
|
75
76
|
import validate from '../notification/validation.js';
|
@@ -94,7 +95,12 @@
|
|
94
95
|
*/
|
95
96
|
export default {
|
96
97
|
name: 'VcsRadio',
|
97
|
-
components: {
|
98
|
+
components: {
|
99
|
+
VcsTooltip,
|
100
|
+
VcsLabel,
|
101
|
+
VRadioGroup,
|
102
|
+
VRadio,
|
103
|
+
},
|
98
104
|
props: {
|
99
105
|
tooltipPosition: {
|
100
106
|
type: String,
|
@@ -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,30 +56,49 @@
|
|
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
|
|
71
|
+
import { VSelect } from 'vuetify/lib';
|
52
72
|
import VcsTooltip from '../notification/VcsTooltip.vue';
|
53
73
|
import validate from '../notification/validation.js';
|
54
74
|
|
55
75
|
/**
|
56
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.
|
57
78
|
* Provides two height options depending on "dense" property:
|
58
79
|
* - if dense is set true (default), height is 24 px
|
59
80
|
* - if dense is set false, height is 32 px
|
60
81
|
* Provides VcsTooltip to show error messages
|
61
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.
|
62
84
|
* @vue-computed {boolean} isDense - Whether size of select is dense.
|
63
85
|
* @vue-computed {boolean} isOutlined - Select is outlined on either hover, focus or error, if not disabled.
|
64
86
|
*/
|
65
87
|
export default {
|
66
88
|
name: 'VcsSelect',
|
67
|
-
components: {
|
89
|
+
components: {
|
90
|
+
VcsTooltip,
|
91
|
+
VSelect,
|
92
|
+
},
|
68
93
|
props: {
|
69
94
|
tooltipPosition: {
|
70
95
|
type: String,
|
71
96
|
default: 'right',
|
72
97
|
},
|
98
|
+
itemText: {
|
99
|
+
type: Function,
|
100
|
+
default: undefined,
|
101
|
+
},
|
73
102
|
},
|
74
103
|
data() {
|
75
104
|
return {
|
@@ -91,6 +120,13 @@
|
|
91
120
|
const rules = [...this.$attrs.rules].concat(this.$attrs.errorMessages);
|
92
121
|
this.errorMessage = validate(rules, this.$attrs.value).join('\n');
|
93
122
|
},
|
123
|
+
getText(item) {
|
124
|
+
if (this.itemText) {
|
125
|
+
return this.itemText(item);
|
126
|
+
} else {
|
127
|
+
return item?.text ?? item;
|
128
|
+
}
|
129
|
+
},
|
94
130
|
},
|
95
131
|
};
|
96
132
|
</script>
|
@@ -51,6 +51,7 @@
|
|
51
51
|
</style>
|
52
52
|
|
53
53
|
<script>
|
54
|
+
import { VTextarea } from 'vuetify/lib';
|
54
55
|
import VcsTooltip from '../notification/VcsTooltip.vue';
|
55
56
|
|
56
57
|
/**
|
@@ -73,6 +74,7 @@
|
|
73
74
|
name: 'VcsTextArea',
|
74
75
|
components: {
|
75
76
|
VcsTooltip,
|
77
|
+
VTextarea,
|
76
78
|
},
|
77
79
|
props: {
|
78
80
|
tooltipPosition: {
|
@@ -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,10 +52,11 @@
|
|
51
52
|
</style>
|
52
53
|
|
53
54
|
<script>
|
55
|
+
import { VTextField, VFileInput } from 'vuetify/lib';
|
54
56
|
import VcsTooltip from '../notification/VcsTooltip.vue';
|
55
57
|
|
56
58
|
/**
|
57
|
-
* @description extends API of {@link https://vuetifyjs.com/en/api/v-text-field
|
59
|
+
* @description extends API of {@link https://vuetifyjs.com/en/api/v-text-field v-text-field}.
|
58
60
|
* Provides two height options depending on "dense" property:
|
59
61
|
* - if dense is set true (default), height is 24 px
|
60
62
|
* - if dense is set false, height is 32 px
|
@@ -72,6 +74,8 @@
|
|
72
74
|
name: 'VcsTextField',
|
73
75
|
components: {
|
74
76
|
VcsTooltip,
|
77
|
+
VTextField,
|
78
|
+
VFileInput,
|
75
79
|
},
|
76
80
|
props: {
|
77
81
|
tooltipPosition: {
|
@@ -90,6 +94,12 @@
|
|
90
94
|
};
|
91
95
|
},
|
92
96
|
computed: {
|
97
|
+
inputComponent() {
|
98
|
+
if (this.$attrs.type === 'file') {
|
99
|
+
return 'VFileInput';
|
100
|
+
}
|
101
|
+
return 'VTextField';
|
102
|
+
},
|
93
103
|
isClearable() {
|
94
104
|
return (this.$attrs.clearable !== undefined && this.$attrs.clearable !== false) &&
|
95
105
|
(this.hover || this.focus || this.isError);
|
@@ -101,7 +111,7 @@
|
|
101
111
|
return this.joinedErrorBucket.length > 0 && (this.firstInput || !this.neverBlurred);
|
102
112
|
},
|
103
113
|
isOutlined() {
|
104
|
-
return (this.hover || this.focus || this.isError) && !(this.$attrs.disabled || this.$attrs.disabled === '');
|
114
|
+
return (this.$attrs.outlined || this.hover || this.focus || this.isError) && !(this.$attrs.disabled || this.$attrs.disabled === '');
|
105
115
|
},
|
106
116
|
joinedErrorBucket() {
|
107
117
|
if (!this.isMounted) {
|
@@ -124,6 +134,8 @@
|
|
124
134
|
},
|
125
135
|
mounted() {
|
126
136
|
this.isMounted = true;
|
137
|
+
// fix for autofocus
|
138
|
+
this.focus = this.$attrs.autofocus != null;
|
127
139
|
},
|
128
140
|
};
|
129
141
|
</script>
|
@@ -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>
|
@@ -40,6 +40,9 @@
|
|
40
40
|
</style>
|
41
41
|
<script>
|
42
42
|
import { is } from '@vcsuite/check';
|
43
|
+
import {
|
44
|
+
VIcon, VList, VListItem, VListItemContent, VListItemIcon, VListItemTitle,
|
45
|
+
} from 'vuetify/lib';
|
43
46
|
import VcsTooltip from '../notification/VcsTooltip.vue';
|
44
47
|
|
45
48
|
/**
|
@@ -91,7 +94,15 @@
|
|
91
94
|
*/
|
92
95
|
export default {
|
93
96
|
name: 'VcsActionList',
|
94
|
-
components: {
|
97
|
+
components: {
|
98
|
+
VcsTooltip,
|
99
|
+
VList,
|
100
|
+
VListItem,
|
101
|
+
VListItemIcon,
|
102
|
+
VIcon,
|
103
|
+
VListItemTitle,
|
104
|
+
VListItemContent,
|
105
|
+
},
|
95
106
|
props: {
|
96
107
|
actions: {
|
97
108
|
type: Array,
|