@vcmap/ui 5.0.0-rc.20 → 5.0.0-rc.22
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/build/buildHelpers.js +1 -0
- package/build/commonViteConfig.js +1 -0
- package/config/www.config.json +25 -14
- package/dist/assets/cesium.js +1 -1
- package/dist/assets/{core.60e74d.js → core.a66593.js} +2443 -2457
- package/dist/assets/core.js +1 -1
- package/dist/assets/favicon.decf54cc.svg +10 -0
- package/dist/assets/{index.884a53ef.js → index.8b833ead.js} +1 -1
- package/dist/assets/{ol.c6ff35.js → ol.d4539f.js} +12406 -12152
- package/dist/assets/ol.js +1 -1
- package/dist/assets/ui.d760e4.css +5 -0
- package/dist/assets/{ui.bf504d.js → ui.d760e4.js} +5218 -4240
- package/dist/assets/ui.js +1 -1
- package/dist/assets/vue.js +2 -2
- package/dist/assets/vuetify.427322.css +5 -0
- package/dist/assets/{vuetify.0d7360.js → vuetify.427322.js} +1 -1
- package/dist/assets/vuetify.js +2 -2
- package/dist/index.html +6 -1
- package/index.html +5 -0
- package/index.js +2 -1
- package/lib/olLib.js +15 -1
- package/package.json +4 -3
- package/plugins/@vcmap/project-selector/ProjectSelectorComponent.vue +1 -1
- package/plugins/@vcmap/theme-changer/ThemeChangerComponent.vue +10 -4
- package/plugins/@vcmap-show-case/form-inputs-example/FormInputsExample.vue +75 -81
- package/plugins/@vcmap-show-case/form-inputs-example/index.js +7 -3
- package/plugins/@vcmap-show-case/form-inputs-example/validation.js +1 -1
- package/plugins/@vcmap-show-case/list-example/ListExample.vue +5 -2
- package/plugins/@vcmap-show-case/wizard-example/wizardExample.vue +57 -23
- package/plugins/package.json +2 -1
- package/src/application/VcsApp.vue +13 -5
- package/src/application/VcsAttributions.vue +2 -3
- package/src/application/VcsAttributionsFooter.vue +10 -16
- package/src/application/VcsNavbar.vue +1 -2
- package/src/application/VcsSettings.vue +21 -8
- package/src/assets/favicon-128.png +0 -0
- package/src/assets/favicon-180.png +0 -0
- package/src/assets/favicon-192.png +0 -0
- package/src/assets/favicon-32.png +0 -0
- package/src/assets/favicon.svg +10 -0
- package/src/components/buttons/VcsButton.vue +2 -3
- package/src/components/form-inputs-controls/VcsCheckbox.vue +46 -26
- package/src/components/form-inputs-controls/VcsFormSection.vue +15 -13
- package/src/components/form-inputs-controls/VcsLabel.vue +10 -1
- package/src/components/form-inputs-controls/VcsRadio.vue +38 -18
- package/src/components/form-inputs-controls/VcsSelect.vue +117 -59
- package/src/components/form-inputs-controls/VcsTextArea.vue +101 -60
- package/src/components/form-inputs-controls/VcsTextField.vue +171 -69
- package/src/components/form-inputs-controls/VcsWizard.vue +20 -14
- package/src/components/form-inputs-controls/VcsWizardStep.vue +18 -16
- package/src/components/form-inputs-controls/composables.js +26 -0
- package/src/components/form-output/VcsFormattedNumber.vue +1 -1
- package/src/components/icons/2DDistanceIcon.vue +0 -3
- package/src/components/icons/3DDistanceIcon.vue +0 -3
- package/src/components/icons/3DHeightIcon.vue +0 -3
- package/src/components/icons/CheckboxCheckedIcon.vue +4 -11
- package/src/components/icons/CheckboxIcon.vue +9 -2
- package/src/components/icons/CheckboxIndeterminateIcon.vue +4 -21
- package/src/components/icons/CommentIcon.vue +1 -5
- package/src/components/icons/ObliqueViewIcon.vue +6 -8
- package/src/components/icons/SimpleCircleOutlinedIcon.vue +1 -1
- package/src/components/icons/SplitViewIcon.vue +0 -4
- package/src/components/icons/ToolsIcon.vue +2 -4
- package/src/components/lists/VcsActionList.vue +0 -1
- package/src/components/lists/VcsList.vue +6 -25
- package/src/components/lists/VcsTreeview.vue +2 -2
- package/src/components/lists/VcsTreeviewLeaf.vue +3 -9
- package/src/components/lists/VcsTreeviewSearchbar.vue +4 -4
- package/src/components/notification/VcsBadge.vue +6 -2
- package/src/components/notification/VcsHelp.vue +39 -0
- package/src/components/tables/VcsTable.vue +70 -24
- package/src/featureInfo/AddressBalloonComponent.vue +1 -1
- package/src/featureInfo/BalloonComponent.vue +14 -9
- package/src/featureInfo/featureInfo.js +25 -7
- package/src/featureInfo/tableFeatureInfoView.js +4 -0
- package/src/i18n/de.js +5 -1
- package/src/i18n/en.js +5 -1
- package/src/legend/styleLegendItem.vue +24 -2
- package/src/legend/vcsLegend.vue +24 -31
- package/src/manager/toolbox/GroupToolboxComponent.vue +2 -3
- package/src/manager/toolbox/SelectToolboxComponent.vue +11 -5
- package/src/manager/toolbox/ToolboxManager.vue +0 -7
- package/src/manager/window/WindowComponent.vue +0 -1
- package/src/manager/window/WindowComponentHeader.vue +2 -2
- package/src/navigation/overviewMap.js +6 -15
- package/src/navigation/tiltSlider.vue +30 -6
- package/src/search/resultsComponent.vue +0 -1
- package/src/search/search.js +7 -17
- package/src/search/searchComponent.vue +6 -7
- package/src/styles/_theming.scss +72 -3
- package/src/styles/_typography.scss +0 -5
- package/src/styles/main.scss +1 -0
- package/src/styles/shades.scss +2 -0
- package/src/styles/variables.scss +40 -4
- package/src/uiConfig.js +1 -0
- package/src/vcsUiApp.js +5 -0
- package/src/vuePlugins/vuetify.js +59 -13
- package/dist/assets/core.f198cf.js +0 -15993
- package/dist/assets/ol.dbd604.js +0 -44299
- package/dist/assets/ui.bf504d.css +0 -1
- package/dist/assets/vue.a831f1.js +0 -4675
- package/dist/assets/vuetify.0d7360.css +0 -5
- /package/dist/assets/{cesium.adbd45.js → cesium.88cffd.js} +0 -0
- /package/dist/assets/{vue.75b819.js → vue.db5102.js} +0 -0
package/src/legend/vcsLegend.vue
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
<template>
|
2
|
-
<v-
|
2
|
+
<v-sheet
|
3
3
|
class="overflow-y-auto"
|
4
4
|
>
|
5
5
|
<v-expansion-panels
|
@@ -7,47 +7,48 @@
|
|
7
7
|
multiple
|
8
8
|
v-if="entries.length > 0"
|
9
9
|
v-model="panels"
|
10
|
+
class="rounded-0"
|
10
11
|
>
|
11
12
|
<v-expansion-panel
|
12
13
|
v-for="(entry,i) in entries"
|
13
14
|
:key="i"
|
14
|
-
class="
|
15
|
+
class="px-2"
|
15
16
|
@change="entry.open = !entry.open"
|
16
17
|
>
|
17
18
|
<v-expansion-panel-header hide-actions>
|
18
|
-
{{ $t(entry.title) }}
|
19
19
|
<template #default="{ open }">
|
20
|
-
<div class="d-flex">
|
21
|
-
<
|
22
|
-
|
23
|
-
|
24
|
-
|
20
|
+
<div class="d-flex justify-space-between">
|
21
|
+
<div class="d-flex align-center">
|
22
|
+
<v-icon class="mr-1" :class="{ 'rotate': !open }">
|
23
|
+
mdi-chevron-down
|
24
|
+
</v-icon>
|
25
|
+
{{ $t(entry.title) }}
|
26
|
+
</div>
|
27
|
+
<VcsActionButtonList small :actions="entry.actions" />
|
25
28
|
</div>
|
26
29
|
</template>
|
27
30
|
</v-expansion-panel-header>
|
28
|
-
<v-expansion-panel-content>
|
31
|
+
<v-expansion-panel-content class="pl-6 pb-2">
|
29
32
|
<v-list dense>
|
30
33
|
<div v-for="(item, idx) in entry.legend" :key="idx">
|
31
|
-
<div v-if="item.type === LegendType.Image"
|
34
|
+
<div v-if="item.type === LegendType.Image">
|
32
35
|
<img
|
33
36
|
:src="$t(item.src)"
|
34
|
-
|
35
|
-
max-height="auto"
|
36
|
-
class="mx-2 legend-image"
|
37
|
+
class="legend-image"
|
37
38
|
:title="item.tooltip"
|
38
39
|
>
|
39
40
|
</div>
|
40
|
-
<div v-else-if="item.type === LegendType.Iframe"
|
41
|
+
<div v-else-if="item.type === LegendType.Iframe">
|
41
42
|
<iframe
|
42
43
|
:id="`legendIframe${idx}`"
|
43
44
|
:src="$t(item.src)"
|
44
45
|
scrolling="no"
|
45
|
-
|
46
|
+
style="width: 100%; height: 100%;"
|
46
47
|
frameBorder="0"
|
47
48
|
@load="setIframeHeight(`legendIframe${idx}`)"
|
48
49
|
/>
|
49
50
|
</div>
|
50
|
-
<style-legend-item v-else :item="item"
|
51
|
+
<style-legend-item v-else :item="item" />
|
51
52
|
</div>
|
52
53
|
</v-list>
|
53
54
|
</v-expansion-panel-content>
|
@@ -56,13 +57,12 @@
|
|
56
57
|
<v-sheet v-else class="ma-2">
|
57
58
|
{{ $t('legend.empty') }}
|
58
59
|
</v-sheet>
|
59
|
-
</v-
|
60
|
+
</v-sheet>
|
60
61
|
</template>
|
61
62
|
|
62
63
|
<script>
|
63
64
|
|
64
65
|
import {
|
65
|
-
VCard,
|
66
66
|
VExpansionPanels,
|
67
67
|
VExpansionPanel,
|
68
68
|
VExpansionPanelHeader,
|
@@ -74,7 +74,7 @@
|
|
74
74
|
import { computed } from 'vue';
|
75
75
|
import { LegendType } from './legendHelper.js';
|
76
76
|
import StyleLegendItem from './styleLegendItem.vue';
|
77
|
-
import
|
77
|
+
import VcsActionButtonList from '../components/buttons/VcsActionButtonList.vue';
|
78
78
|
|
79
79
|
/**
|
80
80
|
* @description A component rendering configured legend information for active layers.
|
@@ -84,9 +84,8 @@
|
|
84
84
|
export default {
|
85
85
|
name: 'VcsLegend',
|
86
86
|
components: {
|
87
|
-
|
87
|
+
VcsActionButtonList,
|
88
88
|
StyleLegendItem,
|
89
|
-
VCard,
|
90
89
|
VExpansionPanels,
|
91
90
|
VExpansionPanel,
|
92
91
|
VExpansionPanelHeader,
|
@@ -130,17 +129,11 @@
|
|
130
129
|
</script>
|
131
130
|
|
132
131
|
<style lang="scss" scoped>
|
133
|
-
.v-list-item--dense {
|
134
|
-
height: 32px;
|
135
|
-
}
|
136
|
-
::v-deep {
|
137
|
-
.treeview-label {
|
138
|
-
max-width: 189px;
|
139
|
-
}
|
140
|
-
}
|
141
132
|
.legend-image {
|
142
|
-
max-width:
|
133
|
+
max-width: 100%;
|
143
134
|
height: auto;
|
144
|
-
|
135
|
+
}
|
136
|
+
.rotate {
|
137
|
+
transform: rotate(-90deg);
|
145
138
|
}
|
146
139
|
</style>
|
@@ -14,12 +14,12 @@
|
|
14
14
|
:icon="group.icon"
|
15
15
|
:tooltip="group.title"
|
16
16
|
:active="open || hasActiveAction"
|
17
|
-
:color="hasActiveAction ? 'primary' : '
|
17
|
+
:color="hasActiveAction ? 'primary' : ''"
|
18
18
|
v-bind="attrs"
|
19
19
|
v-on="on"
|
20
20
|
large
|
21
21
|
>
|
22
|
-
<v-icon v-text="open ? 'mdi-chevron-up' : 'mdi-chevron-down'"
|
22
|
+
<v-icon v-text="open ? 'mdi-chevron-up' : 'mdi-chevron-down'" />
|
23
23
|
</VcsButton>
|
24
24
|
</template>
|
25
25
|
|
@@ -28,7 +28,6 @@
|
|
28
28
|
class="vcs-toolbox-2 toolbar__secondary mx-auto v-sheet marginToTop"
|
29
29
|
:height="40"
|
30
30
|
width="fit-content"
|
31
|
-
color="basic"
|
32
31
|
dense
|
33
32
|
>
|
34
33
|
<v-toolbar-items class="w-full">
|
@@ -33,7 +33,7 @@
|
|
33
33
|
:width="16"
|
34
34
|
large
|
35
35
|
>
|
36
|
-
<v-icon v-text="open ? 'mdi-chevron-up' : 'mdi-chevron-down'"
|
36
|
+
<v-icon v-text="open ? 'mdi-chevron-up' : 'mdi-chevron-down'" />
|
37
37
|
</VcsButton>
|
38
38
|
</template>
|
39
39
|
|
@@ -41,7 +41,6 @@
|
|
41
41
|
class="vcs-toolbox-2 toolbar__secondary mx-auto v-sheet marginToTop justify-center"
|
42
42
|
:height="40"
|
43
43
|
width="fit-content"
|
44
|
-
color="basic"
|
45
44
|
dense
|
46
45
|
>
|
47
46
|
<v-toolbar-items class="w-full">
|
@@ -62,6 +61,8 @@
|
|
62
61
|
</div>
|
63
62
|
</template>
|
64
63
|
<style lang="scss">
|
64
|
+
@import '../../styles/shades.scss';
|
65
|
+
|
65
66
|
.vcs-toolbox-action-selected > .v-btn.vcs-button--large {
|
66
67
|
max-width: 40px;
|
67
68
|
}
|
@@ -71,9 +72,14 @@
|
|
71
72
|
}
|
72
73
|
|
73
74
|
.vcs-toolbox-action-select-button--active {
|
74
|
-
//border: 2px solid var(--v-
|
75
|
-
border-radius:
|
76
|
-
|
75
|
+
//border: 2px solid var(--v-shades-base);
|
76
|
+
border-radius: 4px;
|
77
|
+
}
|
78
|
+
.theme--light .vcs-toolbox-action-select-button--active {
|
79
|
+
background: map-get($shades, 'white');
|
80
|
+
}
|
81
|
+
.theme--dark .vcs-toolbox-action-select-button--active {
|
82
|
+
background: map-get($shades, 'black');
|
77
83
|
}
|
78
84
|
|
79
85
|
.vcs-toolbox-2 {
|
@@ -4,11 +4,11 @@
|
|
4
4
|
<v-icon
|
5
5
|
v-if="windowState.headerIcon"
|
6
6
|
class="mr-2"
|
7
|
-
:class="{ 'text
|
7
|
+
:class="{ 'primary--text': isOnTop }"
|
8
8
|
v-text="windowState.headerIcon"
|
9
9
|
/>
|
10
10
|
<h3
|
11
|
-
class="
|
11
|
+
class="d-inline-block user-select-none font-weight-bold"
|
12
12
|
:class="{ 'text--primary': isOnTop }"
|
13
13
|
>
|
14
14
|
{{ $t(windowState.headerTitle) }}
|
@@ -20,7 +20,7 @@ import VectorSource from 'ol/source/Vector.js';
|
|
20
20
|
import { Icon } from 'ol/style.js';
|
21
21
|
import { WindowSlot } from '../manager/window/windowManager.js';
|
22
22
|
import OverviewMapClickedInteraction from './overviewMapClickedInteraction.js';
|
23
|
-
import {
|
23
|
+
import { getDefaultPrimaryColor, getColorByKey } from '../vuePlugins/vuetify.js';
|
24
24
|
import { vcsAppSymbol } from '../pluginHelper.js';
|
25
25
|
import VcsMap from '../application/VcsMap.vue';
|
26
26
|
|
@@ -112,7 +112,7 @@ class OverviewMap {
|
|
112
112
|
*/
|
113
113
|
this._obliqueSelectedImageLayer = null;
|
114
114
|
|
115
|
-
const primary = app.uiConfig.config.value.primaryColor ??
|
115
|
+
const primary = app.uiConfig.config.value.primaryColor ?? getDefaultPrimaryColor();
|
116
116
|
const fillColor = Color.fromCssColorString('#EDEDED');
|
117
117
|
|
118
118
|
/**
|
@@ -165,7 +165,7 @@ class OverviewMap {
|
|
165
165
|
* @type {import("@vcmap/core").VectorStyleItem}
|
166
166
|
*/
|
167
167
|
this.cameraIconStyle = new VectorStyleItem({
|
168
|
-
image: getCameraIcon(
|
168
|
+
image: getCameraIcon(getDefaultPrimaryColor()),
|
169
169
|
});
|
170
170
|
|
171
171
|
/**
|
@@ -229,16 +229,7 @@ class OverviewMap {
|
|
229
229
|
this._map.layerCollection.remove(clone);
|
230
230
|
}
|
231
231
|
}),
|
232
|
-
this._app.
|
233
|
-
if (item?.name === 'primaryColor') {
|
234
|
-
this._updatePrimaryColor(item.value);
|
235
|
-
}
|
236
|
-
}),
|
237
|
-
this._app.uiConfig.removed.addEventListener((item) => {
|
238
|
-
if (item?.name === 'primaryColor') {
|
239
|
-
this._updatePrimaryColor(defaultPrimaryColor);
|
240
|
-
}
|
241
|
-
}),
|
232
|
+
this._app.themeChanged.addEventListener(this._updatePrimaryColor.bind(this)),
|
242
233
|
];
|
243
234
|
}
|
244
235
|
|
@@ -275,10 +266,10 @@ class OverviewMap {
|
|
275
266
|
}
|
276
267
|
|
277
268
|
/**
|
278
|
-
* @param {string} color
|
279
269
|
* @private
|
280
270
|
*/
|
281
|
-
_updatePrimaryColor(
|
271
|
+
_updatePrimaryColor() {
|
272
|
+
const color = getColorByKey('primary');
|
282
273
|
this.obliqueUnselectedStyle?.stroke?.setColor(color);
|
283
274
|
this.obliqueSelectedStyle?.stroke?.setColor(color);
|
284
275
|
this._obliqueTileLayer?.forceRedraw?.();
|
@@ -10,8 +10,7 @@
|
|
10
10
|
v-bind="attrs"
|
11
11
|
>
|
12
12
|
<v-slider
|
13
|
-
color="
|
14
|
-
track-color="accent"
|
13
|
+
track-color="base lighten-3"
|
15
14
|
v-model="tilt"
|
16
15
|
:max="0"
|
17
16
|
:min="-90"
|
@@ -24,6 +23,7 @@
|
|
24
23
|
</VcsTooltip>
|
25
24
|
</template>
|
26
25
|
<style lang="scss" scoped>
|
26
|
+
@import '../styles/shades.scss';
|
27
27
|
.vcs-slider{
|
28
28
|
::v-deep {
|
29
29
|
.v-slider {
|
@@ -44,6 +44,34 @@
|
|
44
44
|
}
|
45
45
|
}
|
46
46
|
}
|
47
|
+
.v-application .theme--light.vcs-slider {
|
48
|
+
::v-deep {
|
49
|
+
.v-slider {
|
50
|
+
.v-slider__track-container{
|
51
|
+
.v-slider__track-fill {
|
52
|
+
background-color: map-get($shades, 'black') !important;
|
53
|
+
}
|
54
|
+
}
|
55
|
+
.v-slider__thumb {
|
56
|
+
background-color: map-get($shades, 'black') !important;
|
57
|
+
}
|
58
|
+
}
|
59
|
+
}
|
60
|
+
}
|
61
|
+
.v-application .theme--dark.vcs-slider {
|
62
|
+
::v-deep {
|
63
|
+
.v-slider {
|
64
|
+
.v-slider__track-container{
|
65
|
+
.v-slider__track-fill {
|
66
|
+
background-color: map-get($shades, 'white') !important;
|
67
|
+
}
|
68
|
+
}
|
69
|
+
.v-slider__thumb {
|
70
|
+
background-color: map-get($shades, 'white') !important;
|
71
|
+
}
|
72
|
+
}
|
73
|
+
}
|
74
|
+
}
|
47
75
|
</style>
|
48
76
|
<script>
|
49
77
|
import { clamp } from 'ol/math.js';
|
@@ -93,7 +121,3 @@
|
|
93
121
|
},
|
94
122
|
};
|
95
123
|
</script>
|
96
|
-
|
97
|
-
<style scoped>
|
98
|
-
|
99
|
-
</style>
|
package/src/search/search.js
CHANGED
@@ -13,7 +13,7 @@ import { check } from '@vcsuite/check';
|
|
13
13
|
import { Icon } from 'ol/style.js';
|
14
14
|
import { getLogger } from '@vcsuite/logger';
|
15
15
|
import { vcsAppSymbol } from '../pluginHelper.js';
|
16
|
-
import {
|
16
|
+
import { getDefaultPrimaryColor, getColorByKey } from '../vuePlugins/vuetify.js';
|
17
17
|
import { getViewpointFromFeature } from '../actions/actionHelper.js';
|
18
18
|
|
19
19
|
/**
|
@@ -70,39 +70,29 @@ function setupSearchResultLayer(app) {
|
|
70
70
|
app.layers.add(resultLayer);
|
71
71
|
|
72
72
|
const style = new VectorStyleItem({
|
73
|
-
image: getPointResultIcon(
|
73
|
+
image: getPointResultIcon(getDefaultPrimaryColor()),
|
74
74
|
fill: {
|
75
75
|
color: 'rgba(237, 237, 237, 0.1)',
|
76
76
|
},
|
77
77
|
stroke: {
|
78
|
-
color:
|
78
|
+
color: getDefaultPrimaryColor(),
|
79
79
|
width: 5,
|
80
80
|
},
|
81
81
|
});
|
82
82
|
resultLayer.setStyle(style);
|
83
83
|
|
84
|
-
function setResultColor(
|
84
|
+
function setResultColor() {
|
85
|
+
const color = getColorByKey('primary');
|
85
86
|
style.stroke?.setColor(color);
|
86
87
|
style.image = new Icon(getPointResultIcon(color));
|
87
88
|
resultLayer.forceRedraw();
|
88
89
|
}
|
89
90
|
|
90
|
-
const
|
91
|
-
app.uiConfig.added.addEventListener((item) => {
|
92
|
-
if (item.name === 'primaryColor') {
|
93
|
-
setResultColor(item.value);
|
94
|
-
}
|
95
|
-
}),
|
96
|
-
app.uiConfig.removed.addEventListener((item) => {
|
97
|
-
if (item.name === 'primaryColor') {
|
98
|
-
setResultColor(defaultPrimaryColor);
|
99
|
-
}
|
100
|
-
}),
|
101
|
-
];
|
91
|
+
const themChangedListener = app.themeChanged.addEventListener(setResultColor);
|
102
92
|
|
103
93
|
const destroy = () => {
|
104
94
|
resultLayer.destroy();
|
105
|
-
|
95
|
+
themChangedListener();
|
106
96
|
};
|
107
97
|
|
108
98
|
return { resultLayer, destroy };
|
@@ -1,6 +1,6 @@
|
|
1
1
|
<template>
|
2
|
-
<v-
|
3
|
-
<span class="d-flex justify-space-between align-center
|
2
|
+
<v-sheet>
|
3
|
+
<span class="d-flex justify-space-between align-center mt-1 mx-1">
|
4
4
|
<v-icon
|
5
5
|
class="mx-2"
|
6
6
|
>
|
@@ -15,13 +15,12 @@
|
|
15
15
|
:placeholder="$t('search.placeholder')"
|
16
16
|
v-model.trim="query"
|
17
17
|
@keydown.enter="search"
|
18
|
-
@keydown.esc="clear"
|
19
18
|
@input="reset"
|
20
19
|
/>
|
21
20
|
</span>
|
22
|
-
<v-divider />
|
21
|
+
<v-divider class="mt-1" v-if="!!results.length" />
|
23
22
|
<ResultsComponent :query="query" :results="results" />
|
24
|
-
</v-
|
23
|
+
</v-sheet>
|
25
24
|
</template>
|
26
25
|
|
27
26
|
<style>
|
@@ -31,7 +30,7 @@
|
|
31
30
|
<script>
|
32
31
|
import { inject, onUnmounted, ref } from 'vue';
|
33
32
|
import { getLogger } from '@vcsuite/logger';
|
34
|
-
import {
|
33
|
+
import { VSheet, VDivider, VIcon } from 'vuetify/lib';
|
35
34
|
import VcsTextField from '../components/form-inputs-controls/VcsTextField.vue';
|
36
35
|
import ResultsComponent from './resultsComponent.vue';
|
37
36
|
|
@@ -39,7 +38,7 @@
|
|
39
38
|
components: {
|
40
39
|
ResultsComponent,
|
41
40
|
VcsTextField,
|
42
|
-
|
41
|
+
VSheet,
|
43
42
|
VIcon,
|
44
43
|
VDivider,
|
45
44
|
},
|
package/src/styles/_theming.scss
CHANGED
@@ -14,7 +14,76 @@
|
|
14
14
|
width: 70px;
|
15
15
|
}
|
16
16
|
|
17
|
-
|
18
|
-
|
19
|
-
|
17
|
+
.v-application .base {
|
18
|
+
background-color: var(--v-base-base) !important;
|
19
|
+
border-color: var(--v-base-base) !important;
|
20
|
+
}
|
21
|
+
.v-application .base.lighten-1 {
|
22
|
+
background-color: var(--v-base-lighten1) !important;
|
23
|
+
border-color: var(--v-base-lighten1) !important;
|
24
|
+
}
|
25
|
+
.v-application .base.lighten-2 {
|
26
|
+
background-color: var(--v-base-lighten2) !important;
|
27
|
+
border-color: var(--v-base-lighten2) !important;
|
28
|
+
}
|
29
|
+
.v-application .base.lighten-3 {
|
30
|
+
background-color: var(--v-base-lighten3) !important;
|
31
|
+
border-color: var(--v-base-lighten3) !important;
|
32
|
+
}
|
33
|
+
.v-application .base.lighten-4 {
|
34
|
+
background-color: var(--v-base-lighten4) !important;
|
35
|
+
border-color: var(--v-base-lighten4) !important;
|
36
|
+
}
|
37
|
+
.v-application .base.darken-1 {
|
38
|
+
background-color: var(--v-base-darken1) !important;
|
39
|
+
border-color: var(--v-base-darken1) !important;
|
40
|
+
}
|
41
|
+
.v-application .base.darken-2 {
|
42
|
+
background-color: var(--v-base-darken2) !important;
|
43
|
+
border-color: var(--v-base-darken2) !important;
|
44
|
+
}
|
45
|
+
.v-application .base.darken-3 {
|
46
|
+
background-color: var(--v-base-darken3) !important;
|
47
|
+
border-color: var(--v-base-darken3) !important;
|
48
|
+
}
|
49
|
+
.v-application .base.darken-4 {
|
50
|
+
background-color: var(--v-base-darken4) !important;
|
51
|
+
border-color: var(--v-base-darken4) !important;
|
52
|
+
}
|
53
|
+
|
54
|
+
.v-application .base--text {
|
55
|
+
color: var(--v-base-base) !important;
|
56
|
+
caret-color: var(--v-base-base) !important;
|
57
|
+
}
|
58
|
+
.v-application .base--text.text--lighten-1 {
|
59
|
+
color: var(--v-base-lighten1) !important;
|
60
|
+
caret-color: var(--v-base-lighten1) !important;
|
61
|
+
}
|
62
|
+
.v-application .base--text.text--lighten-2 {
|
63
|
+
color: var(--v-base-lighten2) !important;
|
64
|
+
caret-color: var(--v-base-lighten2) !important;
|
65
|
+
}
|
66
|
+
.v-application .base--text.text--lighten-3 {
|
67
|
+
color: var(--v-base-lighten3) !important;
|
68
|
+
caret-color: var(--v-base-lighten3) !important;
|
69
|
+
}
|
70
|
+
.v-application .base--text.text--lighten-4 {
|
71
|
+
color: var(--v-base-lighten4) !important;
|
72
|
+
caret-color: var(--v-base-lighten4) !important;
|
73
|
+
}
|
74
|
+
.v-application .base--text.text--darken-1 {
|
75
|
+
color: var(--v-base-darken1) !important;
|
76
|
+
caret-color: var(--v-base-darken1) !important;
|
77
|
+
}
|
78
|
+
.v-application .base--text.text--darken-2 {
|
79
|
+
color: var(--v-base-darken2) !important;
|
80
|
+
caret-color: var(--v-base-darken2) !important;
|
81
|
+
}
|
82
|
+
.v-application .base--text.text--darken-3 {
|
83
|
+
color: var(--v-base-darken3) !important;
|
84
|
+
caret-color: var(--v-base-darken3) !important;
|
85
|
+
}
|
86
|
+
.v-application .base--text.text--darken-4 {
|
87
|
+
color: var(--v-base-darken4) !important;
|
88
|
+
caret-color: var(--v-base-darken4) !important;
|
20
89
|
}
|
package/src/styles/main.scss
CHANGED
@@ -1,7 +1,43 @@
|
|
1
|
+
@import 'shades.scss';
|
2
|
+
|
1
3
|
/** Global **/
|
2
4
|
$font-size: 14px;
|
3
5
|
$font-size-root: 14px;
|
4
6
|
|
7
|
+
$material-dark: (
|
8
|
+
'background': map-get($shades, 'black'),
|
9
|
+
'cards': map-get($shades, 'black'),
|
10
|
+
'text-fields': (
|
11
|
+
'outlined': var(--v-base-base),
|
12
|
+
'outlined-hover': var(--v-base-base),
|
13
|
+
),
|
14
|
+
'input-bottom-line': var(--v-base-base),
|
15
|
+
'dividers': var(--v-base-lighten2),
|
16
|
+
'toolbar': rgba(map-get($shades, 'black'), 0.8),
|
17
|
+
'table': (
|
18
|
+
'hover': var(--v-base-lighten4),
|
19
|
+
),
|
20
|
+
);
|
21
|
+
$material-light: (
|
22
|
+
'text-fields': (
|
23
|
+
'outlined': var(--v-base-base),
|
24
|
+
'outlined-hover': var(--v-base-base),
|
25
|
+
),
|
26
|
+
'input-bottom-line': var(--v-base-base),
|
27
|
+
'text': (
|
28
|
+
'primary': map-get($shades, 'black'),
|
29
|
+
'disabled': rgba(map-get($shades, 'black'), 0.3),
|
30
|
+
),
|
31
|
+
'buttons': (
|
32
|
+
'disabled': rgba(map-get($shades, 'black'), 0.5),
|
33
|
+
),
|
34
|
+
'dividers': var(--v-base-lighten2),
|
35
|
+
'toolbar': rgba(map-get($shades, 'white'), 0.8),
|
36
|
+
'table': (
|
37
|
+
'hover': var(--v-base-lighten4),
|
38
|
+
),
|
39
|
+
);
|
40
|
+
|
5
41
|
// input font and icon
|
6
42
|
$input-font-size: $font-size;
|
7
43
|
$input-icon-height: 16px; // 24px !default;
|
@@ -20,14 +56,14 @@ $text-field-solo-dense-control-min-height: 22px; //38px !default;
|
|
20
56
|
$text-field-outlined-fieldset-border: 1px solid currentColor; // 2px solid currentColor !default;
|
21
57
|
|
22
58
|
// dense non outlined
|
23
|
-
$text-field-dense-padding: 2px
|
59
|
+
$text-field-dense-padding: 2px 0 1px; //4px 0 2px !default;
|
24
60
|
|
25
61
|
// clear icon non dense
|
26
62
|
$text-field-enclosed-prepend-append-margin-top: 9px;
|
27
63
|
|
28
64
|
// tooltip icon in append slot
|
29
65
|
$text-field-outlined-append-prepend-outer-margin-top: 4px; // 18px !default;
|
30
|
-
$text-field-append-prepend-margin:
|
66
|
+
$text-field-append-prepend-margin: 0; // 4px !default;
|
31
67
|
$text-field-outlined-prepend-append-margin-top: 4px; // 8px !default;
|
32
68
|
|
33
69
|
// label position for outlined Label dense and non-dense
|
@@ -39,8 +75,8 @@ $text-field-label-top: 2px; // 6px !default;
|
|
39
75
|
$text-field-label-active-transform: translateY(-14px) scale(.75); //translateY(-18px) scale(.75) !default;
|
40
76
|
|
41
77
|
/** VcsTextarea **/
|
42
|
-
$textarea-box-enclosed-single-outlined-margin-top:
|
43
|
-
$textarea-dense-box-enclosed-single-outlined-margin-top:
|
78
|
+
$textarea-box-enclosed-single-outlined-margin-top: 0; // 10px !default;
|
79
|
+
$textarea-dense-box-enclosed-single-outlined-margin-top: 0; // 6px !default;
|
44
80
|
|
45
81
|
/** VcsCheckbox **/
|
46
82
|
$icon-size: 20px; // 24px !default;
|
package/src/uiConfig.js
CHANGED
@@ -13,6 +13,7 @@ import { ref } from 'vue';
|
|
13
13
|
* @property {string} [mobileLogo] - an alternative logo to display in mobile view
|
14
14
|
* @property {string} [appTitle] - an optional title to display next to the company logo
|
15
15
|
* @property {string} [primaryColor] - an optional primary color to use in all themes
|
16
|
+
* @property {boolean} [startingFeatureInfo] - an optional flag whether to activate feature info on startup (default active)
|
16
17
|
*/
|
17
18
|
|
18
19
|
/**
|
package/src/vcsUiApp.js
CHANGED
@@ -106,6 +106,11 @@ class VcsUiApp extends VcsApp {
|
|
106
106
|
|
107
107
|
constructor() {
|
108
108
|
super();
|
109
|
+
/**
|
110
|
+
* An event triggered when the vuetify theme mode changes or the primary color is updated by a new uiConfig entry.
|
111
|
+
* @type {VcsEvent<void>}
|
112
|
+
*/
|
113
|
+
this.themeChanged = new VcsEvent();
|
109
114
|
/**
|
110
115
|
* @type {import("@vcmap/core").OverrideCollection<VcsPlugin>}
|
111
116
|
* @private
|