@vcmap/ui 5.0.0-rc.21 → 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.59d4d1.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.a3861d4e.js → index.8b833ead.js} +1 -1
- package/dist/assets/{ol.c1c512.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.80175f.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.efc158.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/ui.80175f.css +0 -1
- package/dist/assets/vuetify.efc158.css +0 -5
- /package/dist/assets/{cesium.49585c.js → cesium.88cffd.js} +0 -0
- /package/dist/assets/{vue.a08ab1.js → vue.db5102.js} +0 -0
@@ -6,26 +6,37 @@
|
|
6
6
|
<VcsTooltip
|
7
7
|
:tooltip-position="tooltipPosition"
|
8
8
|
:tooltip="errorMessage"
|
9
|
-
:value="(hover || focus) && isError"
|
10
9
|
color="error"
|
11
10
|
:max-width="200"
|
12
11
|
>
|
13
|
-
<template #activator="{ attrs }">
|
12
|
+
<template #activator="{ attrs, on }">
|
14
13
|
<component
|
15
14
|
:is="inputComponent"
|
16
15
|
ref="textFieldRef"
|
17
16
|
hide-details
|
17
|
+
:hide-spin-buttons="!showSpinButtons"
|
18
18
|
:dense="isDense"
|
19
19
|
:clearable="isClearable"
|
20
|
-
@focus="focus = true"
|
21
|
-
@blur="focus =
|
22
|
-
@input="
|
23
|
-
|
20
|
+
@focus="focus = true;"
|
21
|
+
@blur="focus = false;"
|
22
|
+
@input="value => $emit('input', value)"
|
23
|
+
@keydown.esc="handleEsc"
|
24
|
+
@keydown="event => $emit('keydown', event)"
|
25
|
+
:value="visibleValue"
|
26
|
+
:type="type"
|
27
|
+
outlined
|
24
28
|
v-bind="{...$attrs, ...attrs}"
|
25
|
-
v-on="{...$listeners}"
|
29
|
+
v-on="{...$listeners, ...on}"
|
26
30
|
:height="isDense ? 24 : 32"
|
27
|
-
class="
|
28
|
-
:class="
|
31
|
+
class="py-1 primary--placeholder align-center"
|
32
|
+
:class="{
|
33
|
+
'remove-outline': !isOutlined,
|
34
|
+
'outline--current': focus,
|
35
|
+
'outline--error': !!errorMessage,
|
36
|
+
'input--dense': isDense,
|
37
|
+
'input--not-dense': !isDense,
|
38
|
+
'file-border-bottom': inputComponent === 'VFileInput' && !focus && !hover && !errorMessage,
|
39
|
+
}"
|
29
40
|
/>
|
30
41
|
</template>
|
31
42
|
</VcsTooltip>
|
@@ -33,27 +44,101 @@
|
|
33
44
|
</template>
|
34
45
|
|
35
46
|
<style lang="scss" scoped>
|
36
|
-
.primary--placeholder {
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
47
|
+
.primary--placeholder {
|
48
|
+
::v-deep {
|
49
|
+
input::placeholder {
|
50
|
+
color: var(--v-primary-base);
|
51
|
+
font-style: italic;
|
52
|
+
opacity: 1;
|
53
|
+
}
|
42
54
|
}
|
43
55
|
}
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
56
|
+
.remove-outline {
|
57
|
+
::v-deep {
|
58
|
+
fieldset {
|
59
|
+
border-width: 0;
|
60
|
+
border-radius: 0;
|
61
|
+
}
|
62
|
+
}
|
63
|
+
}
|
64
|
+
.outline--current {
|
65
|
+
::v-deep {
|
66
|
+
.v-input__slot fieldset {
|
67
|
+
border-color: currentColor;
|
68
|
+
transition: border-color 0.5s ease;
|
69
|
+
}
|
70
|
+
.v-text-field__slot input {
|
71
|
+
border-color: transparent;
|
72
|
+
}
|
73
|
+
}
|
74
|
+
}
|
75
|
+
.outline--error {
|
76
|
+
::v-deep {
|
77
|
+
.v-input__slot fieldset, .v-text-field__slot input {
|
78
|
+
border-color: var(--v-error-base);
|
79
|
+
}
|
80
|
+
}
|
81
|
+
}
|
82
|
+
.input--dense {
|
83
|
+
::v-deep {
|
84
|
+
.v-text-field__slot input {
|
85
|
+
height: 24px;
|
86
|
+
}
|
87
|
+
.v-input__slot {
|
88
|
+
padding: 0 4px !important;
|
89
|
+
}
|
90
|
+
fieldset {
|
91
|
+
padding-left: 2px;
|
92
|
+
}
|
93
|
+
}
|
94
|
+
}
|
95
|
+
.input--not-dense {
|
96
|
+
::v-deep {
|
97
|
+
.v-input__slot {
|
98
|
+
padding: 0 8px !important;
|
99
|
+
}
|
100
|
+
fieldset {
|
101
|
+
padding-left: 6px;
|
102
|
+
}
|
103
|
+
}
|
104
|
+
}
|
105
|
+
.file-border-bottom {
|
106
|
+
::v-deep {
|
107
|
+
.v-file-input__text {
|
108
|
+
border-bottom: 1px solid var(--v-base-base);
|
109
|
+
border-radius: 0;
|
110
|
+
}
|
111
|
+
}
|
112
|
+
}
|
113
|
+
.v-input {
|
114
|
+
::v-deep {
|
115
|
+
input {
|
116
|
+
height: 32px;
|
117
|
+
border-bottom: 1px solid var(--v-base-base);
|
118
|
+
border-radius: 0;
|
119
|
+
}
|
120
|
+
input::selection {
|
121
|
+
background-color: var(--v-primary-base);
|
122
|
+
}
|
123
|
+
.v-text-field__prefix {
|
124
|
+
padding-right: 8px;
|
125
|
+
}
|
126
|
+
.v-text-field__suffix {
|
127
|
+
padding-left: 4px;
|
128
|
+
}
|
129
|
+
fieldset {
|
130
|
+
border-radius: 2px;
|
131
|
+
border-color: var(--v-base-base);
|
132
|
+
}
|
49
133
|
}
|
50
134
|
}
|
51
|
-
}
|
52
135
|
</style>
|
53
136
|
|
54
137
|
<script>
|
138
|
+
import { computed, onMounted, ref } from 'vue';
|
55
139
|
import { VTextField, VFileInput } from 'vuetify/lib';
|
56
140
|
import VcsTooltip from '../notification/VcsTooltip.vue';
|
141
|
+
import { useErrorSync } from './composables.js';
|
57
142
|
|
58
143
|
/**
|
59
144
|
* @description extends API of {@link https://vuetifyjs.com/en/api/v-text-field v-text-field}.
|
@@ -63,12 +148,15 @@
|
|
63
148
|
* Provides VcsTooltip to
|
64
149
|
* - show error messages on focus
|
65
150
|
* - show tooltips, if supplied, when hovered over append-icon
|
151
|
+
* When clicking esc key, previous input is restored.
|
66
152
|
* @vue-prop {('bottom' | 'left' | 'top' | 'right')} [tooltipPosition='right'] - Position of the error tooltip.
|
153
|
+
* @vue-prop {string} unit - Unit for number input fields. Is displayed behind the number.
|
154
|
+
* @vue-prop {boolean} showSpinButtons - If true, spin buttons are displayed in number input fields. Overrides Vuetify hide-spin-buttons.
|
67
155
|
* @vue-computed {boolean} isClearable - Whether textfield is isClearable. Makes sure icon is only shown on focus, hover or error.
|
68
156
|
* @vue-computed {boolean} isDense - Whether size of textfield is dense.
|
69
|
-
* @vue-computed {boolean} isError - Whether errorBucket is not empty and textfield was focused at least once.
|
70
157
|
* @vue-computed {boolean} isOutlined - Textfield is outlined on either hover, focus or error, if not disabled.
|
71
|
-
* @vue-computed {
|
158
|
+
* @vue-computed {string | number} visibleValue - Returns the number input as string with unit, in case unit is provided.
|
159
|
+
* @vue-computed {string} type - The input field type. If number input field is blurred and unit is provided, type changes to text field, so unit can be displayed in input field.
|
72
160
|
*/
|
73
161
|
export default {
|
74
162
|
name: 'VcsTextField',
|
@@ -82,60 +170,74 @@
|
|
82
170
|
type: String,
|
83
171
|
default: 'right',
|
84
172
|
},
|
173
|
+
unit: {
|
174
|
+
type: String,
|
175
|
+
default: '',
|
176
|
+
},
|
177
|
+
showSpinButtons: {
|
178
|
+
type: Boolean,
|
179
|
+
default: false,
|
180
|
+
},
|
85
181
|
},
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
};
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
182
|
+
setup(props, { attrs, emit }) {
|
183
|
+
const hover = ref(false);
|
184
|
+
const focus = ref(false);
|
185
|
+
const textFieldRef = ref();
|
186
|
+
|
187
|
+
onMounted(() => {
|
188
|
+
// fix for autofocus
|
189
|
+
focus.value = attrs.autofocus != null;
|
190
|
+
});
|
191
|
+
|
192
|
+
const errorMessage = useErrorSync(textFieldRef);
|
193
|
+
|
194
|
+
const inputComponent = computed(() => {
|
195
|
+
if (attrs.type === 'file') {
|
99
196
|
return 'VFileInput';
|
100
197
|
}
|
101
198
|
return 'VTextField';
|
102
|
-
}
|
103
|
-
isClearable() {
|
104
|
-
return (
|
105
|
-
(
|
106
|
-
}
|
107
|
-
isDense()
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
return (this.$attrs.outlined || this.hover || this.focus || this.isError) && !(this.$attrs.disabled || this.$attrs.disabled === '');
|
115
|
-
},
|
116
|
-
joinedErrorBucket() {
|
117
|
-
if (!this.isMounted) {
|
118
|
-
return false;
|
199
|
+
});
|
200
|
+
const isClearable = computed(() => {
|
201
|
+
return (attrs.clearable !== undefined && attrs.clearable !== false) &&
|
202
|
+
(hover.value || focus.value || !!errorMessage.value);
|
203
|
+
});
|
204
|
+
const isDense = computed(() => attrs.dense !== false);
|
205
|
+
const isOutlined = computed(() => {
|
206
|
+
return (hover.value || focus.value || !!errorMessage.value) && !(attrs.disabled || attrs.disabled === '');
|
207
|
+
});
|
208
|
+
const visibleValue = computed(() => {
|
209
|
+
if (attrs.type === 'number' && attrs.value && props.unit && !focus.value && !hover.value) {
|
210
|
+
return `${attrs.value} ${props.unit}`;
|
119
211
|
} else {
|
120
|
-
return
|
212
|
+
return attrs.value || '';
|
121
213
|
}
|
122
|
-
}
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
if (oldValue && !newValue) {
|
127
|
-
setTimeout(() => {
|
128
|
-
this.errorMessage = newValue;
|
129
|
-
}, 200);
|
214
|
+
});
|
215
|
+
const type = computed(() => {
|
216
|
+
if (attrs.type === 'number' && !focus.value) {
|
217
|
+
return 'text';
|
130
218
|
} else {
|
131
|
-
|
219
|
+
return attrs.type || 'text';
|
132
220
|
}
|
133
|
-
}
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
221
|
+
});
|
222
|
+
|
223
|
+
function handleEsc() {
|
224
|
+
textFieldRef.value.blur();
|
225
|
+
emit('input', textFieldRef.value.initialValue);
|
226
|
+
}
|
227
|
+
|
228
|
+
return {
|
229
|
+
hover,
|
230
|
+
focus,
|
231
|
+
inputComponent,
|
232
|
+
isClearable,
|
233
|
+
isDense,
|
234
|
+
isOutlined,
|
235
|
+
visibleValue,
|
236
|
+
type,
|
237
|
+
handleEsc,
|
238
|
+
textFieldRef,
|
239
|
+
errorMessage,
|
240
|
+
};
|
139
241
|
},
|
140
242
|
};
|
141
243
|
</script>
|
@@ -32,21 +32,28 @@
|
|
32
32
|
};
|
33
33
|
</script>
|
34
34
|
<style scoped lang="scss">
|
35
|
+
@import '../../styles/shades.scss';
|
35
36
|
.v-stepper{
|
36
37
|
&.theme--light {
|
37
38
|
::v-deep{
|
38
39
|
.v-stepper__step {
|
40
|
+
.v-stepper__label {
|
41
|
+
color: map-get($shades, 'black');
|
42
|
+
}
|
39
43
|
&--active {
|
40
44
|
background-color: rgba(34, 34, 34, 0.1);
|
41
45
|
.v-stepper__label {
|
42
|
-
color:
|
46
|
+
color: var(--v-primary-base);
|
43
47
|
}
|
44
48
|
}
|
45
49
|
&--complete {
|
46
50
|
.v-stepper__label {
|
47
|
-
color:
|
51
|
+
color: map-get($shades, 'black');
|
48
52
|
}
|
49
53
|
}
|
54
|
+
.v-stepper__step__step::before {
|
55
|
+
color: map-get($shades, 'white');
|
56
|
+
}
|
50
57
|
}
|
51
58
|
.step-border:not(:last-child) > .v-stepper__content {
|
52
59
|
border-left: 2px solid rgba(0, 0, 0, 0.12);
|
@@ -56,21 +63,27 @@
|
|
56
63
|
&.theme--dark {
|
57
64
|
::v-deep{
|
58
65
|
.v-stepper__step {
|
66
|
+
.v-stepper__label {
|
67
|
+
color: map-get($shades, 'white');
|
68
|
+
}
|
59
69
|
&--active {
|
60
70
|
background-color: rgba(255, 255, 255, 0.5);
|
61
71
|
.v-stepper__label {
|
62
|
-
color:
|
72
|
+
color: var(--v-primary-base);
|
63
73
|
}
|
64
74
|
}
|
65
75
|
&--complete {
|
66
76
|
.v-stepper__label {
|
67
|
-
color:
|
77
|
+
color: map-get($shades, 'white');
|
68
78
|
}
|
69
79
|
}
|
70
80
|
.v-stepper__step__step {
|
71
81
|
.v-icon {
|
72
82
|
color: transparent;
|
73
83
|
}
|
84
|
+
&:before{
|
85
|
+
color: map-get($shades, 'black');
|
86
|
+
}
|
74
87
|
}
|
75
88
|
&.v-stepper__step--error{
|
76
89
|
.v-stepper__label{
|
@@ -88,26 +101,19 @@
|
|
88
101
|
}
|
89
102
|
::v-deep{
|
90
103
|
.v-stepper__step {
|
91
|
-
|
104
|
+
padding-top: 0;
|
105
|
+
padding-bottom: 0;
|
92
106
|
.v-stepper__label {
|
93
107
|
font-weight: 700;
|
94
108
|
text-shadow: none !important;
|
95
|
-
position: relative;
|
96
|
-
&::before{
|
97
|
-
content: '';
|
98
|
-
position: absolute;
|
99
|
-
top: 14px;
|
100
|
-
bottom: 2px;
|
101
|
-
left: -15px;
|
102
|
-
}
|
103
109
|
}
|
104
110
|
.v-stepper__step__step {
|
105
111
|
color: transparent;
|
106
112
|
position: relative;
|
107
113
|
margin-top: 2px;
|
114
|
+
margin-right: 5px;
|
108
115
|
&:before{
|
109
116
|
content: '\25cf';
|
110
|
-
color: var(--v-basic-base);
|
111
117
|
font-size: 18px;
|
112
118
|
position: absolute;
|
113
119
|
top: -9px;
|
@@ -5,12 +5,15 @@
|
|
5
5
|
:editable="editable"
|
6
6
|
:complete="complete"
|
7
7
|
:rules="rules"
|
8
|
+
class="pr-6"
|
8
9
|
>
|
9
|
-
<div class="
|
10
|
+
<div class="d-flex justify-space-between align-center">
|
10
11
|
<slot name="header" />
|
11
|
-
<
|
12
|
+
<div v-if="!$slots.header" class="py-3">
|
13
|
+
<span>{{ $t(heading) }}</span>
|
14
|
+
</div>
|
12
15
|
<VcsActionButtonList
|
13
|
-
v-if="
|
16
|
+
v-if="Number(step) === Number(value)"
|
14
17
|
:actions="actions"
|
15
18
|
:overflow-count="actionButtonListOverflowCount"
|
16
19
|
small
|
@@ -22,20 +25,15 @@
|
|
22
25
|
</v-stepper-step>
|
23
26
|
<v-stepper-content
|
24
27
|
v-if="$slots.content"
|
25
|
-
class="pr-
|
28
|
+
class="pr-4"
|
26
29
|
:step="step"
|
27
30
|
>
|
28
|
-
<
|
29
|
-
:
|
30
|
-
|
31
|
-
text
|
32
|
-
color="grey"
|
33
|
-
class="mt-2 mb-0 font-weight-regular rounded-0 px-0 pt-0"
|
31
|
+
<VcsHelp
|
32
|
+
:text="helpText"
|
33
|
+
:show="showHelp"
|
34
34
|
>
|
35
|
-
<slot name="help"
|
36
|
-
|
37
|
-
</slot>
|
38
|
-
</v-alert>
|
35
|
+
<slot name="help" />
|
36
|
+
</VcsHelp>
|
39
37
|
<slot name="content" />
|
40
38
|
</v-stepper-content>
|
41
39
|
</div>
|
@@ -43,8 +41,9 @@
|
|
43
41
|
|
44
42
|
<script>
|
45
43
|
import { computed, reactive, watch } from 'vue';
|
46
|
-
import { VStepperStep, VStepperContent
|
44
|
+
import { VStepperStep, VStepperContent } from 'vuetify/lib';
|
47
45
|
import VcsActionButtonList from '../buttons/VcsActionButtonList.vue';
|
46
|
+
import VcsHelp from '../notification/VcsHelp.vue';
|
48
47
|
|
49
48
|
/**
|
50
49
|
* @description Stylized wrapper around {@link https://vuetifyjs.com/en/api/v-stepper-step/ |vuetify VStepperStep} and
|
@@ -68,7 +67,7 @@
|
|
68
67
|
VStepperStep,
|
69
68
|
VStepperContent,
|
70
69
|
VcsActionButtonList,
|
71
|
-
|
70
|
+
VcsHelp,
|
72
71
|
},
|
73
72
|
props: {
|
74
73
|
step: {
|
@@ -157,4 +156,7 @@
|
|
157
156
|
}
|
158
157
|
}
|
159
158
|
}
|
159
|
+
.v-stepper__content {
|
160
|
+
padding-left: 2px !important;
|
161
|
+
}
|
160
162
|
</style>
|
@@ -0,0 +1,26 @@
|
|
1
|
+
import { computed } from 'vue';
|
2
|
+
|
3
|
+
/**
|
4
|
+
* Syncs the error and validation state with the underlying vuetify component.
|
5
|
+
* @param {Ref<any>} elementRef The template ref to the base vuetify component.
|
6
|
+
* @returns {Ref<string>} Error message to display. Is empty string if either there are no error messages or if the validation errors are not displayed because
|
7
|
+
* no interaction with the component or validation was reset by form. Validation errors have precedence over custom error messages.
|
8
|
+
*/
|
9
|
+
// eslint-disable-next-line import/prefer-default-export
|
10
|
+
export function useErrorSync(elementRef) {
|
11
|
+
const errorMessage = computed(() => {
|
12
|
+
// if element is already mounted
|
13
|
+
if (elementRef.value) {
|
14
|
+
// errorMessages of selectField can either be (empty) array or string. Makes sure it is array.
|
15
|
+
const customErrorMessages = Array.isArray(elementRef.value.errorMessages) ?
|
16
|
+
elementRef.value.errorMessages : [elementRef.value.errorMessages];
|
17
|
+
// if validationState is 'error' (reset button removes this) or if there is errorMessages prop
|
18
|
+
if (elementRef.value.validationState === 'error' || !!customErrorMessages.length) {
|
19
|
+
// custom errorMessages are displayed when all validation error are solved.
|
20
|
+
return [...elementRef.value.errorBucket, ...customErrorMessages][0] || '';
|
21
|
+
}
|
22
|
+
}
|
23
|
+
return '';
|
24
|
+
});
|
25
|
+
return errorMessage;
|
26
|
+
}
|
@@ -10,9 +10,6 @@
|
|
10
10
|
d="M10956.373,13156.8h-11.986a1.387,1.387,0,0,1-1.387-1.39v-3.467a1.386,1.386,0,0,1,1.387-1.387h19.1a1.387,1.387,0,0,1,1.388,1.387v3.467a1.387,1.387,0,0,1-1.388,1.39Zm-11.986-4.51v2.773a.349.349,0,0,0,.347.347h18.411a.346.346,0,0,0,.347-.347v-2.773a.346.346,0,0,0-.347-.347h-2.255a.347.347,0,0,0-.347.347v.693a.52.52,0,0,1-1.04,0v-.693a.347.347,0,0,0-.347-.347h-.693a.35.35,0,0,0-.351.347v.693a.52.52,0,0,1-1.04,0v-.693a.346.346,0,0,0-.347-.347h-.71a.347.347,0,0,0-.347.347v.693a.52.52,0,0,1-1.04,0v-.693a.347.347,0,0,0-.347-.347h-.693a.347.347,0,0,0-.347.347v.693a.52.52,0,0,1-1.04,0v-.693a.347.347,0,0,0-.347-.347h-.7a.347.347,0,0,0-.347.347v.693a.52.52,0,0,1-1.04,0v-.693a.347.347,0,0,0-.347-.347h-.7a.343.343,0,0,0-.343.347v.693a.522.522,0,0,1-1.044,0v-.693a.347.347,0,0,0-.347-.347h-2.255A.349.349,0,0,0,10944.387,13152.286Zm.7,1.387a.694.694,0,1,1,.693.693A.693.693,0,0,1,10945.083,13153.673Zm17.382-5.376v-.35a.347.347,0,0,0-.347-.347h-16.342a.347.347,0,0,0-.347.347v.35a.522.522,0,0,1-.891.366l-1.388-1.387a.525.525,0,0,1,0-.736l1.388-1.387a.52.52,0,0,1,.891.367v.347a.347.347,0,0,0,.347.347h16.342a.347.347,0,0,0,.347-.347v-.347a.52.52,0,0,1,.888-.367l1.388,1.387a.519.519,0,0,1,0,.736l-1.388,1.387a.52.52,0,0,1-.888-.366Z"
|
11
11
|
transform="translate(-10942 -13142.48)"
|
12
12
|
fill="currentColor"
|
13
|
-
stroke="rgba(0,0,0,0)"
|
14
|
-
stroke-miterlimit="10"
|
15
|
-
stroke-width="1"
|
16
13
|
/>
|
17
14
|
</svg>
|
18
15
|
</template>
|
@@ -10,9 +10,6 @@
|
|
10
10
|
d="M10956.373,13156.8h-11.986a1.387,1.387,0,0,1-1.387-1.39v-3.467a1.386,1.386,0,0,1,1.387-1.387h19.1a1.387,1.387,0,0,1,1.388,1.387v3.467a1.387,1.387,0,0,1-1.388,1.39Zm-11.986-4.51v2.773a.349.349,0,0,0,.347.347h18.411a.346.346,0,0,0,.347-.347v-2.773a.346.346,0,0,0-.347-.347h-2.255a.347.347,0,0,0-.347.347v.693a.52.52,0,0,1-1.04,0v-.693a.347.347,0,0,0-.347-.347h-.693a.35.35,0,0,0-.351.347v.693a.52.52,0,0,1-1.04,0v-.693a.346.346,0,0,0-.347-.347h-.71a.347.347,0,0,0-.347.347v.693a.52.52,0,0,1-1.04,0v-.693a.347.347,0,0,0-.347-.347h-.693a.347.347,0,0,0-.347.347v.693a.52.52,0,0,1-1.04,0v-.693a.347.347,0,0,0-.347-.347h-.7a.347.347,0,0,0-.347.347v.693a.52.52,0,0,1-1.04,0v-.693a.347.347,0,0,0-.347-.347h-.7a.343.343,0,0,0-.343.347v.693a.522.522,0,0,1-1.044,0v-.693a.347.347,0,0,0-.347-.347h-2.255A.349.349,0,0,0,10944.387,13152.286Zm.7,1.387a.694.694,0,1,1,.693.693A.693.693,0,0,1,10945.083,13153.673Zm17.382-5.376v-.35a.347.347,0,0,0-.347-.347h-16.342a.347.347,0,0,0-.347.347v.35a.522.522,0,0,1-.891.366l-1.388-1.387a.525.525,0,0,1,0-.736l1.388-1.387a.52.52,0,0,1,.891.367v.347a.347.347,0,0,0,.347.347h16.342a.347.347,0,0,0,.347-.347v-.347a.52.52,0,0,1,.888-.367l1.388,1.387a.519.519,0,0,1,0,.736l-1.388,1.387a.52.52,0,0,1-.888-.366Z"
|
11
11
|
transform="translate(-10942 -13140.795)"
|
12
12
|
fill="currentColor"
|
13
|
-
stroke="rgba(0,0,0,0)"
|
14
|
-
stroke-miterlimit="10"
|
15
|
-
stroke-width="1"
|
16
13
|
/>
|
17
14
|
</svg>
|
18
15
|
</template>
|
@@ -10,9 +10,6 @@
|
|
10
10
|
d="M10944.387,13167.025a1.387,1.387,0,0,1-1.388-1.388v-19.106a1.387,1.387,0,0,1,1.388-1.388h3.47a1.388,1.388,0,0,1,1.389,1.388v19.106a1.388,1.388,0,0,1-1.389,1.388Zm0-20.147v18.41a.349.349,0,0,0,.348.35h2.775a.349.349,0,0,0,.347-.35v-2.254a.348.348,0,0,0-.347-.348h-.694a.52.52,0,0,1,0-1.04h.694a.346.346,0,0,0,.347-.344v-.7a.347.347,0,0,0-.347-.348h-.694a.521.521,0,0,1,0-1.041h.694a.347.347,0,0,0,.347-.347v-.707a.35.35,0,0,0-.347-.351h-.694a.519.519,0,0,1,0-1.037h.694a.349.349,0,0,0,.347-.347v-.694a.347.347,0,0,0-.347-.347h-.694a.521.521,0,0,1,0-1.041h.694a.347.347,0,0,0,.347-.348v-.7a.347.347,0,0,0-.347-.348h-.694a.52.52,0,0,1,0-1.04h.694a.347.347,0,0,0,.347-.344v-.7a.344.344,0,0,0-.347-.344h-.694a.522.522,0,0,1,0-1.045h.694a.346.346,0,0,0,.347-.343v-2.258a.349.349,0,0,0-.347-.347h-2.775A.349.349,0,0,0,10944.387,13146.878Zm8.338,19.863-1.389-1.388a.521.521,0,0,1,.367-.889h.347a.347.347,0,0,0,.348-.347v-16.345a.347.347,0,0,0-.348-.344h-.347a.51.51,0,0,1-.367-.155.518.518,0,0,1,0-.733l1.389-1.388a.518.518,0,0,1,.736,0l1.385,1.388a.506.506,0,0,1,.152.367.52.52,0,0,1-.52.521h-.347a.347.347,0,0,0-.347.344v16.345a.347.347,0,0,0,.347.347h.347a.521.521,0,0,1,.367.889l-1.385,1.388a.523.523,0,0,1-.369.151A.513.513,0,0,1,10952.725,13166.741Zm-7.3-18.822a.694.694,0,1,1,.694.694A.694.694,0,0,1,10945.428,13147.919Z"
|
11
11
|
transform="translate(-10942 -13144.023)"
|
12
12
|
fill="currentColor"
|
13
|
-
stroke="rgba(0,0,0,0)"
|
14
|
-
stroke-miterlimit="10"
|
15
|
-
stroke-width="1"
|
16
13
|
/>
|
17
14
|
</svg>
|
18
15
|
</template>
|
@@ -1,16 +1,9 @@
|
|
1
1
|
<!-- eslint-disable max-len -->
|
2
2
|
|
3
3
|
<template>
|
4
|
-
<svg
|
5
|
-
<
|
6
|
-
|
7
|
-
|
8
|
-
height="12"
|
9
|
-
rx="1"
|
10
|
-
transform="translate(2 2)"
|
11
|
-
fill="rgba(34,34,34,0.8)"
|
12
|
-
/>
|
13
|
-
<path id="hook" d="M13.525,6.363a.776.776,0,0,0-1.1.171h0L8.68,11.741,6.3,9.789a.778.778,0,0,0-1.108.15.825.825,0,0,0,.121,1.114l3.021,2.478a.784.784,0,0,0,1.12-.141l.009-.012L13.695,7.5a.824.824,0,0,0-.17-1.132Z" transform="translate(-1.364 -1.831)" fill="#fff" />
|
14
|
-
<rect id="size" width="16" height="16" fill="none" />
|
4
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16">
|
5
|
+
<g id="icon-checkbox-check">
|
6
|
+
<path fill="currentColor" d="m13,2H3c-.55,0-1,.45-1,1v10c0,.55.45,1,1,1h10c.55,0,1-.45,1-1V3c0-.55-.45-1-1-1Zm-.67,3.67l-4.23,5.88h0s-.01.03-.02.03c-.27.34-.77.39-1.1.12l-3.02-2.48c-.33-.28-.38-.77-.12-1.11,0,0,.01-.01.02-.02.27-.34.76-.4,1.09-.13l2.38,1.95,3.74-5.21s0-.01.01-.02c.26-.34.74-.41,1.09-.15h0c.35.27.43.78.17,1.14Z"/>
|
7
|
+
</g>
|
15
8
|
</svg>
|
16
9
|
</template>
|
@@ -1,11 +1,18 @@
|
|
1
1
|
<template>
|
2
|
-
<svg
|
2
|
+
<svg
|
3
|
+
id="icon-checkbox-uncheck"
|
4
|
+
xmlns="http://www.w3.org/2000/svg"
|
5
|
+
width="16"
|
6
|
+
height="16"
|
7
|
+
viewBox="0 0 16 16"
|
8
|
+
>
|
3
9
|
<g
|
4
10
|
id="Rectangle_749"
|
5
11
|
data-name="Rectangle 749"
|
6
12
|
transform="translate(2 2)"
|
7
13
|
fill="none"
|
8
|
-
stroke="
|
14
|
+
stroke="currentColor"
|
15
|
+
stroke-opacity="0.4"
|
9
16
|
stroke-width="1"
|
10
17
|
>
|
11
18
|
<rect width="12" height="12" rx="2" stroke="none" />
|
@@ -1,24 +1,7 @@
|
|
1
|
+
<!-- eslint-disable max-len -->
|
2
|
+
|
1
3
|
<template>
|
2
|
-
<svg id="icon-checkbox-half" xmlns="http://www.w3.org/2000/svg"
|
3
|
-
<
|
4
|
-
id="Rectangle_123"
|
5
|
-
data-name="Rectangle 123"
|
6
|
-
width="12"
|
7
|
-
height="12"
|
8
|
-
rx="1"
|
9
|
-
transform="translate(2 2)"
|
10
|
-
fill="rgba(34,34,34,0.8)"
|
11
|
-
/>
|
12
|
-
<line
|
13
|
-
id="Line_84"
|
14
|
-
data-name="Line 84"
|
15
|
-
x2="4"
|
16
|
-
transform="translate(6 8)"
|
17
|
-
fill="none"
|
18
|
-
stroke="#fff"
|
19
|
-
stroke-linecap="round"
|
20
|
-
stroke-width="2"
|
21
|
-
/>
|
22
|
-
<rect id="size" width="16" height="16" fill="none" />
|
4
|
+
<svg id="icon-checkbox-half" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16">
|
5
|
+
<path fill="currentColor" d="m13,2H3c-.55,0-1,.45-1,1v10c0,.55.45,1,1,1h10c.55,0,1-.45,1-1V3c0-.55-.45-1-1-1Zm-3,7h-4c-.55,0-1-.45-1-1s.45-1,1-1h4c.55,0,1,.45,1,1s-.45,1-1,1Z" />
|
23
6
|
</svg>
|
24
7
|
</template>
|
@@ -1,7 +1,7 @@
|
|
1
1
|
<!-- eslint-disable max-len -->
|
2
2
|
|
3
3
|
<template>
|
4
|
-
<svg xmlns="http://www.w3.org/2000/svg" width="
|
4
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="25" height="24" viewBox="0 0 25 24">
|
5
5
|
<g id="icon_24_comment" transform="translate(0.5)">
|
6
6
|
<path
|
7
7
|
id="Union_51"
|
@@ -9,11 +9,7 @@
|
|
9
9
|
d="M6.381.477V4.287H3.523l-.03,0H3.487A1.39,1.39,0,0,0,2.1,5.665V7.959a4.11,4.11,0,0,1,.9-.1,4.207,4.207,0,0,1,1.1.146V6.287H8.381v-2.9L12.06,5.93l.513.357H22V18H4.1V15.988a4.176,4.176,0,0,1-1.1.146,4.13,4.13,0,0,1-.9-.1v2.536A1.429,1.429,0,0,0,3.523,20H22.571A1.432,1.432,0,0,0,24,18.571V5.714a1.43,1.43,0,0,0-1.428-1.427H13.2L7.129.086a.475.475,0,0,0-.748.391ZM0,12A3,3,0,1,0,3,9,3,3,0,0,0,0,12Z"
|
10
10
|
transform="translate(23.999 22.997) rotate(180)"
|
11
11
|
fill="currentColor"
|
12
|
-
stroke="rgba(0,0,0,0)"
|
13
|
-
stroke-miterlimit="10"
|
14
|
-
stroke-width="1"
|
15
12
|
/>
|
16
|
-
<rect id="size" width="24" height="24" fill="none" />
|
17
13
|
</g>
|
18
14
|
</svg>
|
19
15
|
</template>
|
@@ -1,13 +1,11 @@
|
|
1
1
|
<!-- eslint-disable max-len -->
|
2
2
|
<template>
|
3
3
|
<svg id="icon_24_oblique" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
|
4
|
-
<rect
|
5
|
-
<
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
fill="currentColor"
|
11
|
-
/>
|
4
|
+
<rect width="24" height="24" fill="none" />
|
5
|
+
<g transform="translate(1 2.994)">
|
6
|
+
<g>
|
7
|
+
<path d="M19.769.862A1,1,0,0,0,18.778,0H3.222a1,1,0,0,0-.99.862l-2.222,16A1,1,0,0,0,1,18H21a1,1,0,0,0,.991-1.138ZM4.093,2H17.908l1.208,8.7L14.921,7.657a1,1,0,0,0-1.278.086L4.988,16H2.149ZM7.886,16l6.535-6.235L19.5,13.446,19.852,16Zm.753-7.6a2.876,2.876,0,0,0,3.083-2.6A2.841,2.841,0,0,0,8.639,3.2,2.841,2.841,0,0,0,5.556,5.8,2.876,2.876,0,0,0,8.639,8.4m0-3.2c.662,0,1.083.355,1.083.6s-.421.6-1.083.6-1.083-.355-1.083-.6.422-.6,1.083-.6" fill="currentColor" />
|
8
|
+
</g>
|
9
|
+
</g>
|
12
10
|
</svg>
|
13
11
|
</template>
|
@@ -1,6 +1,6 @@
|
|
1
1
|
<template>
|
2
2
|
<svg xmlns="http://www.w3.org/2000/svg" width="8" height="8" viewBox="0 0 8 8">
|
3
|
-
<g id="Rectangle_750" data-name="Rectangle 750" fill="none" stroke="
|
3
|
+
<g id="Rectangle_750" data-name="Rectangle 750" fill="none" stroke="currentColor" stroke-width="2">
|
4
4
|
<rect width="8" height="8" rx="4" stroke="none" />
|
5
5
|
<rect
|
6
6
|
x="1"
|