@vcmap/ui 6.0.0-rc.5 → 6.0.0-rc.6
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/buildTypes.js +9 -5
- package/config/base.config.json +0 -6
- package/config/dev.config.json +4 -0
- package/config/projects.config.json +2 -1
- package/config/theming.config.json +68 -0
- package/config/www.config.json +31 -30
- package/dist/assets/cesium.js +1 -1
- package/dist/assets/{core-1c8b8674.js → core-e06aa7a6.js} +1403 -1375
- package/dist/assets/core.js +1 -1
- package/dist/assets/ol.js +1 -1
- package/dist/assets/ui-5dda32d2.css +1 -0
- package/dist/assets/{ui-7214428e.js → ui-5dda32d2.js} +11632 -11501
- package/dist/assets/ui.js +1 -1
- package/dist/assets/vue.js +1 -1
- package/dist/assets/{vuetify-88a2fabe.css → vuetify-4c4e4217.css} +1 -1
- package/dist/assets/{vuetify-88a2fabe.js → vuetify-4c4e4217.js} +2375 -2369
- package/dist/assets/vuetify.js +1 -1
- package/index.d.ts +22 -10
- package/index.js +9 -3
- package/package.json +3 -3
- package/plugins/@vcmap-show-case/custom-icons-example/README.md +3 -0
- package/plugins/@vcmap-show-case/custom-icons-example/assets/imageExample.png +0 -0
- package/plugins/@vcmap-show-case/custom-icons-example/assets/svgExample.svg +1 -0
- package/plugins/@vcmap-show-case/custom-icons-example/package.json +5 -0
- package/plugins/@vcmap-show-case/custom-icons-example/src/CustomIconsExample.vue +90 -0
- package/plugins/@vcmap-show-case/custom-icons-example/src/index.js +45 -0
- package/plugins/@vcmap-show-case/plugin-editors/src/PluginEditors.vue +11 -7
- package/plugins/@vcmap-show-case/theming-example/README.md +3 -0
- package/plugins/@vcmap-show-case/theming-example/package.json +5 -0
- package/plugins/@vcmap-show-case/theming-example/src/ThemingExample.vue +116 -0
- package/plugins/@vcmap-show-case/theming-example/src/index.js +53 -0
- package/plugins/package.json +5 -1
- package/src/actions/actionHelper.d.ts +4 -11
- package/src/actions/actionHelper.js +2 -5
- package/src/actions/listActions.d.ts +2 -2
- package/src/application/VcsApp.vue +17 -19
- package/src/application/VcsApp.vue.d.ts +5 -1
- package/src/application/VcsAttributionsFooter.vue.d.ts +1 -1
- package/src/application/VcsContainer.vue +2 -2
- package/src/application/VcsContainer.vue.d.ts +5 -1
- package/src/application/VcsNavbar.vue +9 -1
- package/src/application/VcsNavbar.vue.d.ts +1 -0
- package/src/application/VcsSplashScreen.vue +11 -2
- package/src/application/attributionsHelper.d.ts +20 -22
- package/src/application/attributionsHelper.js +4 -4
- package/src/callback/vcsCallback.d.ts +2 -2
- package/src/callback/vcsCallback.js +1 -1
- package/src/components/buttons/VcsActionButtonList.vue +2 -3
- package/src/components/buttons/VcsButton.vue +2 -4
- package/src/components/buttons/VcsButton.vue.d.ts +1 -1
- package/src/components/buttons/VcsFormButton.vue +4 -4
- package/src/components/buttons/VcsToolButton.vue +4 -2
- package/src/components/buttons/VcsToolButton.vue.d.ts +2 -2
- package/src/components/composables.d.ts +5 -0
- package/src/components/composables.js +79 -9
- package/src/components/extent/VcsExtent.vue +10 -6
- package/src/components/extent/VcsExtent.vue.d.ts +1 -0
- package/src/components/flight/VcsFlightComponent.vue +13 -13
- package/src/components/flight/VcsFlightComponent.vue.d.ts +1 -0
- package/src/components/form-inputs-controls/VcsCheckbox.vue +8 -3
- package/src/components/form-inputs-controls/VcsChipArrayInput.vue +3 -8
- package/src/components/form-inputs-controls/VcsChipArrayInput.vue.d.ts +0 -1
- package/src/components/form-inputs-controls/VcsCoordinate.vue +1 -2
- package/src/components/form-inputs-controls/VcsFileInput.vue +1 -1
- package/src/components/form-inputs-controls/VcsLabel.vue +1 -1
- package/src/components/form-inputs-controls/VcsRadio.vue +8 -6
- package/src/components/form-inputs-controls/VcsRadio.vue.d.ts +1 -0
- package/src/components/form-inputs-controls/VcsSelect.vue +1 -1
- package/src/components/form-inputs-controls/VcsSlider.vue +5 -5
- package/src/components/form-inputs-controls/VcsTextArea.vue +1 -1
- package/src/components/form-inputs-controls/VcsTextField.vue +10 -1
- package/src/components/form-inputs-controls/VcsTextField.vue.d.ts +2 -1
- package/src/components/form-inputs-controls/VcsWizard.vue +3 -3
- package/src/components/form-inputs-controls/VcsWizardStep.vue +5 -1
- package/src/components/form-inputs-controls/vcsTextField.scss +7 -1
- package/src/components/form-output/VcsFormattedNumber.vue +1 -1
- package/src/components/import/VcsImportComponent.vue +7 -4
- package/src/components/import/VcsImportComponent.vue.d.ts +1 -1
- package/src/components/lists/VcsActionList.vue +2 -6
- package/src/components/lists/VcsListItemComponent.vue +20 -10
- package/src/components/lists/VcsListItemComponent.vue.d.ts +11 -1
- package/src/components/lists/VcsTreeview.vue +53 -11
- package/src/components/lists/VcsTreeview.vue.d.ts +2 -0
- package/src/components/lists/VcsTreeviewSearchbar.vue +14 -3
- package/src/components/lists/VcsTreeviewSearchbar.vue.d.ts +3 -1
- package/src/components/lists/VcsTreeviewTitle.vue +36 -0
- package/src/components/modelHelper.d.ts +10 -8
- package/src/components/modelHelper.js +8 -6
- package/src/components/notification/VcsHelp.vue +6 -7
- package/src/components/notification/VcsHelp.vue.d.ts +0 -9
- package/src/components/plugins/AbstractConfigEditor.vue +1 -22
- package/src/components/plugins/AbstractConfigEditor.vue.d.ts +6 -29
- package/src/components/section/VcsExpansionPanel.vue +9 -3
- package/src/components/section/VcsExpansionPanel.vue.d.ts +2 -2
- package/src/components/section/VcsFormSection.vue +6 -6
- package/src/components/section/VcsFormSection.vue.d.ts +2 -2
- package/src/components/style/VcsImageSelector.vue +14 -6
- package/src/components/style/VcsImageSelector.vue.d.ts +1 -0
- package/src/components/style/VcsStrokeSelector.vue +5 -2
- package/src/components/style/VcsStrokeSelector.vue.d.ts +1 -0
- package/src/components/style/VcsTextMenu.vue +2 -2
- package/src/components/tables/VcsDataTable.vue +14 -10
- package/src/components/tables/VcsDataTable.vue.d.ts +1 -0
- package/src/components/vector-properties/VcsVectorPropertiesComponent.vue +42 -31
- package/src/components/vector-properties/VcsVectorPropertiesComponent.vue.d.ts +1 -0
- package/src/components/viewpoint/VcsViewpointComponent.vue +12 -9
- package/src/components/viewpoint/VcsViewpointComponent.vue.d.ts +1 -0
- package/src/contentTree/contentTreeItem.d.ts +2 -2
- package/src/contentTree/contentTreeItem.js +1 -1
- package/src/featureInfo/BalloonComponent.vue +21 -13
- package/src/featureInfo/BalloonComponent.vue.d.ts +1 -0
- package/src/featureInfo/abstractFeatureInfoView.d.ts +4 -4
- package/src/featureInfo/abstractFeatureInfoView.js +4 -4
- package/src/featureInfo/featureInfo.d.ts +2 -2
- package/src/featureInfo/featureInfo.js +1 -1
- package/src/i18n/i18nCollection.d.ts +9 -15
- package/src/i18n/i18nCollection.js +3 -3
- package/src/legend/VcsLegend.vue +6 -2
- package/src/legend/VcsLegend.vue.d.ts +1 -0
- package/src/manager/collectionManager/CollectionComponentList.vue +1 -1
- package/src/manager/collectionManager/categoryManager.d.ts +1 -1
- package/src/manager/collectionManager/collectionComponentClass.d.ts +2 -2
- package/src/manager/collectionManager/collectionComponentClass.js +4 -4
- package/src/manager/collectionManager/collectionManager.d.ts +1 -1
- package/src/manager/toolbox/GroupToolboxComponent.vue +8 -6
- package/src/manager/toolbox/GroupToolboxComponent.vue.d.ts +1 -1
- package/src/manager/toolbox/SelectToolboxComponent.vue +8 -6
- package/src/manager/toolbox/SelectToolboxComponent.vue.d.ts +1 -1
- package/src/manager/toolbox/{ToolboxManager.vue → ToolboxManagerComponent.vue} +8 -5
- package/src/manager/toolbox/{ToolboxManager.vue.d.ts → ToolboxManagerComponent.vue.d.ts} +1 -1
- package/src/manager/window/WindowComponentHeader.vue +6 -3
- package/src/manager/window/WindowComponentHeader.vue.d.ts +1 -0
- package/src/manager/window/windowManager.d.ts +6 -6
- package/src/manager/window/windowManager.js +3 -3
- package/src/navigation/OrientationToolsButton.vue +2 -4
- package/src/navigation/TiltSlider.vue +3 -5
- package/src/search/SearchComponent.vue +8 -6
- package/src/search/SearchComponent.vue.d.ts +1 -1
- package/src/styles/vcsList.scss +1 -1
- package/src/uiConfig.d.ts +12 -3
- package/src/uiConfig.js +2 -1
- package/src/vcsUiApp.d.ts +41 -56
- package/src/vcsUiApp.js +34 -28
- package/src/vuePlugins/vuetify.d.ts +88 -62
- package/src/vuePlugins/vuetify.js +116 -20
- package/dist/assets/ui-7214428e.css +0 -1
- package/plugins/@vcmap-show-case/theme-changer/README.md +0 -23
- package/plugins/@vcmap-show-case/theme-changer/config.json +0 -69
- package/plugins/@vcmap-show-case/theme-changer/package.json +0 -11
- package/plugins/@vcmap-show-case/theme-changer/src/ThemeChangerComponent.vue +0 -120
- package/plugins/@vcmap-show-case/theme-changer/src/index.js +0 -108
- package/src/components/lists/VcsTreeviewLeaf.vue +0 -92
- /package/dist/assets/{cesium-126f111a.js → cesium-ccb4cc30.js} +0 -0
- /package/dist/assets/{ol-27f9b3f3.js → ol-e7981d5c.js} +0 -0
- /package/dist/assets/{vue-c78a5f76.js → vue-87bc6efe.js} +0 -0
- /package/src/components/lists/{VcsTreeviewLeaf.vue.d.ts → VcsTreeviewTitle.vue.d.ts} +0 -0
@@ -98,6 +98,7 @@ declare const _default: import("vue").DefineComponent<{
|
|
98
98
|
idx: number;
|
99
99
|
}[]>;
|
100
100
|
selectedImageTypeTab: import("vue").Ref<number>;
|
101
|
+
cid: string;
|
101
102
|
}, any, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
|
102
103
|
modelValue: {
|
103
104
|
type: ObjectConstructor;
|
@@ -3,13 +3,13 @@
|
|
3
3
|
<v-container class="px-1 py-0">
|
4
4
|
<v-row no-gutters>
|
5
5
|
<v-col>
|
6
|
-
<VcsLabel html-for="draw-stroke-width">
|
6
|
+
<VcsLabel :html-for="`${cid}-draw-stroke-width`">
|
7
7
|
{{ $t('components.style.lineWidth') }}
|
8
8
|
</VcsLabel>
|
9
9
|
</v-col>
|
10
10
|
<v-col cols="3">
|
11
11
|
<VcsTextField
|
12
|
-
id="draw-stroke-width"
|
12
|
+
:id="`${cid}-draw-stroke-width`"
|
13
13
|
v-model.number="width"
|
14
14
|
:hide-spin-buttons="true"
|
15
15
|
type="number"
|
@@ -38,6 +38,7 @@
|
|
38
38
|
VRow,
|
39
39
|
VCol,
|
40
40
|
} from 'vuetify/components';
|
41
|
+
import { useComponentId } from '../composables.js';
|
41
42
|
import VcsLabel from '../form-inputs-controls/VcsLabel.vue';
|
42
43
|
import VcsTextField from '../form-inputs-controls/VcsTextField.vue';
|
43
44
|
import { useColorObject } from './composables.js';
|
@@ -66,6 +67,7 @@
|
|
66
67
|
},
|
67
68
|
setup(props, { emit }) {
|
68
69
|
const localValue = useProxiedComplexModel(props, 'modelValue', emit);
|
70
|
+
const cid = useComponentId();
|
69
71
|
return {
|
70
72
|
rgbaObject: useColorObject(() => localValue.value?.color),
|
71
73
|
width: computed({
|
@@ -81,6 +83,7 @@
|
|
81
83
|
updateColor(rgba) {
|
82
84
|
localValue.value.color = [rgba.r, rgba.g, rgba.b, rgba.a];
|
83
85
|
},
|
86
|
+
cid,
|
84
87
|
};
|
85
88
|
},
|
86
89
|
};
|
@@ -12,6 +12,7 @@ declare const _default: import("vue").DefineComponent<{
|
|
12
12
|
}>;
|
13
13
|
width: import("vue").WritableComputedRef<any>;
|
14
14
|
updateColor(rgba: any): void;
|
15
|
+
cid: string;
|
15
16
|
}, any, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
|
16
17
|
modelValue: {
|
17
18
|
type: ObjectConstructor;
|
@@ -6,7 +6,7 @@
|
|
6
6
|
>
|
7
7
|
<template #preview>
|
8
8
|
<div v-if="modelValue" class="d-flex justify-center align-center">
|
9
|
-
<span
|
9
|
+
<span class="vcs-text-menu-preview">T</span>
|
10
10
|
</div>
|
11
11
|
</template>
|
12
12
|
<template #content>
|
@@ -68,7 +68,7 @@
|
|
68
68
|
</script>
|
69
69
|
|
70
70
|
<style>
|
71
|
-
|
71
|
+
.vcs-text-menu-preview {
|
72
72
|
font: v-bind(fontStyle) !important;
|
73
73
|
font-size: 20px !important;
|
74
74
|
-webkit-text-stroke-color: v-bind(strokeColor);
|
@@ -38,12 +38,8 @@
|
|
38
38
|
v-model:items-per-page="itemsPerPageRef"
|
39
39
|
@update:options="(o) => $emit('update:items', { ...o, search })"
|
40
40
|
>
|
41
|
-
<template v-for="slot of
|
42
|
-
<slot
|
43
|
-
v-if="!['prepend', 'default', 'append'].includes(slot)"
|
44
|
-
:name="slot"
|
45
|
-
v-bind="scope"
|
46
|
-
/>
|
41
|
+
<template v-for="slot of forwardSlots" #[slot]="scope">
|
42
|
+
<slot :name="slot" v-bind="scope ?? {}" />
|
47
43
|
</template>
|
48
44
|
<template
|
49
45
|
#header.data-table-select="{ allSelected, selectAll, someSelected }"
|
@@ -137,6 +133,7 @@
|
|
137
133
|
import VcsTreeviewSearchbar from '../lists/VcsTreeviewSearchbar.vue';
|
138
134
|
import VcsButton from '../buttons/VcsButton.vue';
|
139
135
|
import VcsCheckbox from '../form-inputs-controls/VcsCheckbox.vue';
|
136
|
+
import { useForwardSlots } from '../composables.js';
|
140
137
|
|
141
138
|
/**
|
142
139
|
* @typedef {Object} UpdateItemsEvent
|
@@ -220,7 +217,7 @@
|
|
220
217
|
default: 'isSelectable',
|
221
218
|
},
|
222
219
|
},
|
223
|
-
setup(props, { attrs, emit }) {
|
220
|
+
setup(props, { attrs, emit, slots }) {
|
224
221
|
const vm = getCurrentInstance().proxy;
|
225
222
|
const hovering = ref(null);
|
226
223
|
/**
|
@@ -366,6 +363,12 @@
|
|
366
363
|
props.serverItemsLength > itemsPerPageRef.value,
|
367
364
|
);
|
368
365
|
|
366
|
+
const forwardSlots = useForwardSlots(slots, [
|
367
|
+
'prepend',
|
368
|
+
'default',
|
369
|
+
'append',
|
370
|
+
]);
|
371
|
+
|
369
372
|
return {
|
370
373
|
hovering,
|
371
374
|
search,
|
@@ -393,6 +396,7 @@
|
|
393
396
|
handleSearch,
|
394
397
|
translatedHeaders,
|
395
398
|
showFooter,
|
399
|
+
forwardSlots,
|
396
400
|
};
|
397
401
|
},
|
398
402
|
};
|
@@ -446,10 +450,10 @@
|
|
446
450
|
}
|
447
451
|
|
448
452
|
.v-table--density-compact {
|
449
|
-
--v-table-header-height: var(--v-vcs-
|
450
|
-
--v-table-row-height: var(--v-vcs-
|
453
|
+
--v-table-header-height: calc(var(--v-vcs-font-size) * 2 + 6px);
|
454
|
+
--v-table-row-height: calc(var(--v-vcs-font-size) * 2 + 6px);
|
451
455
|
& :deep(.v-selection-control--density-default) {
|
452
|
-
--v-selection-control-size: var(--v-vcs-
|
456
|
+
--v-selection-control-size: calc(var(--v-vcs-font-size) * 2 + 6px);
|
453
457
|
}
|
454
458
|
}
|
455
459
|
|
@@ -54,6 +54,7 @@ declare const _default: import("vue").DefineComponent<{
|
|
54
54
|
handleSearch: () => void;
|
55
55
|
translatedHeaders: ComputedRef<Object[]>;
|
56
56
|
showFooter: import("vue").ComputedRef<boolean>;
|
57
|
+
forwardSlots: import("vue").ComputedRef<string[]>;
|
57
58
|
}, any, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
|
58
59
|
headers: {
|
59
60
|
type: ArrayConstructor;
|
@@ -9,13 +9,13 @@
|
|
9
9
|
<template v-if="show3DProperties">
|
10
10
|
<v-row v-if="visibleProperties.has('altitudeMode')" no-gutters>
|
11
11
|
<v-col>
|
12
|
-
<VcsLabel html-for="vp-altitude-mode">{{
|
12
|
+
<VcsLabel :html-for="`${cid}-vp-altitude-mode`">{{
|
13
13
|
$t('components.vectorProperties.altitudeMode')
|
14
14
|
}}</VcsLabel>
|
15
15
|
</v-col>
|
16
16
|
<v-col>
|
17
17
|
<VcsSelect
|
18
|
-
id="vp-altitude-mode"
|
18
|
+
:id="`${cid}-vp-altitude-mode`"
|
19
19
|
:items="availableAltitudeModes"
|
20
20
|
v-model="localValue.altitudeMode"
|
21
21
|
/>
|
@@ -29,13 +29,13 @@
|
|
29
29
|
no-gutters
|
30
30
|
>
|
31
31
|
<v-col>
|
32
|
-
<VcsLabel html-for="vp-height-above-ground">{{
|
32
|
+
<VcsLabel :html-for="`${cid}-vp-height-above-ground`">{{
|
33
33
|
$t('components.vectorProperties.heightAboveGround')
|
34
34
|
}}</VcsLabel>
|
35
35
|
</v-col>
|
36
36
|
<v-col>
|
37
37
|
<VcsTextField
|
38
|
-
id="vp-height-above-ground"
|
38
|
+
:id="`${cid}-vp-height-above-ground`"
|
39
39
|
v-model.number="localValue.heightAboveGround"
|
40
40
|
:hide-spin-buttons="true"
|
41
41
|
type="number"
|
@@ -46,13 +46,13 @@
|
|
46
46
|
</v-row>
|
47
47
|
<v-row v-if="visibleProperties.has('groundLevel')" no-gutters>
|
48
48
|
<v-col>
|
49
|
-
<VcsLabel html-for="vp-ground-level">{{
|
49
|
+
<VcsLabel :html-for="`${cid}-vp-ground-level`">{{
|
50
50
|
$t('components.vectorProperties.groundLevel')
|
51
51
|
}}</VcsLabel>
|
52
52
|
</v-col>
|
53
53
|
<v-col>
|
54
54
|
<VcsTextField
|
55
|
-
id="vp-ground-level"
|
55
|
+
:id="`${cid}-vp-ground-level`"
|
56
56
|
v-model.number="localValue.groundLevel"
|
57
57
|
:hide-spin-buttons="true"
|
58
58
|
type="number"
|
@@ -142,13 +142,13 @@
|
|
142
142
|
no-gutters
|
143
143
|
>
|
144
144
|
<v-col>
|
145
|
-
<VcsLabel html-for="vp-classification-type">
|
145
|
+
<VcsLabel :html-for="`${cid}-vp-classification-type`">
|
146
146
|
{{ $t('components.vectorProperties.classificationType') }}
|
147
147
|
</VcsLabel>
|
148
148
|
</v-col>
|
149
149
|
<v-col>
|
150
150
|
<VcsSelect
|
151
|
-
id="vp-classification-type"
|
151
|
+
:id="`${cid}-vp-classification-type`"
|
152
152
|
:items="availableClassificationTypes"
|
153
153
|
v-model="classificationType"
|
154
154
|
/>
|
@@ -186,7 +186,7 @@
|
|
186
186
|
<v-row v-if="visibleProperties.has('extrudedHeight')" no-gutters>
|
187
187
|
<v-col>
|
188
188
|
<VcsLabel
|
189
|
-
html-for="vp-extruded-height"
|
189
|
+
:html-for="`${cid}-vp-extruded-height`"
|
190
190
|
:class="{
|
191
191
|
'px-4':
|
192
192
|
visibleProperties.has('storeysAboveGround') ||
|
@@ -197,7 +197,7 @@
|
|
197
197
|
</v-col>
|
198
198
|
<v-col>
|
199
199
|
<VcsTextField
|
200
|
-
id="vp-extruded-height"
|
200
|
+
:id="`${cid}-vp-extruded-height`"
|
201
201
|
v-model.number="localValue.extrudedHeight"
|
202
202
|
:hide-spin-buttons="true"
|
203
203
|
type="number"
|
@@ -212,13 +212,13 @@
|
|
212
212
|
</v-row>
|
213
213
|
<v-row v-if="visibleProperties.has('storeysAboveGround')" no-gutters>
|
214
214
|
<v-col>
|
215
|
-
<VcsLabel html-for="vp-storeys-above" class="px-4">{{
|
215
|
+
<VcsLabel :html-for="`${cid}-vp-storeys-above`" class="px-4">{{
|
216
216
|
$t('components.vectorProperties.storeys')
|
217
217
|
}}</VcsLabel>
|
218
218
|
</v-col>
|
219
219
|
<v-col>
|
220
220
|
<VcsTextField
|
221
|
-
id="vp-storeys-above"
|
221
|
+
:id="`${cid}-vp-storeys-above`"
|
222
222
|
v-model.number="localValue.storeysAboveGround"
|
223
223
|
:hide-spin-buttons="true"
|
224
224
|
type="number"
|
@@ -235,13 +235,15 @@
|
|
235
235
|
no-gutters
|
236
236
|
>
|
237
237
|
<v-col>
|
238
|
-
<VcsLabel
|
239
|
-
|
240
|
-
|
238
|
+
<VcsLabel
|
239
|
+
:html-for="`${cid}-vp-storey-heights-above`"
|
240
|
+
class="px-4"
|
241
|
+
>{{ $t('components.vectorProperties.storeyHeights') }}</VcsLabel
|
242
|
+
>
|
241
243
|
</v-col>
|
242
244
|
<v-col>
|
243
245
|
<VcsChipArrayInput
|
244
|
-
id="vp-storey-heights-above"
|
246
|
+
:id="`${cid}-vp-storey-heights-above`"
|
245
247
|
column
|
246
248
|
type="number"
|
247
249
|
v-model="storeyHeights.storeyHeightsAboveGround.value"
|
@@ -266,7 +268,7 @@
|
|
266
268
|
<v-row v-if="visibleProperties.has('skirt')" no-gutters>
|
267
269
|
<v-col>
|
268
270
|
<VcsLabel
|
269
|
-
html-for="vp-skirt"
|
271
|
+
:html-for="`${cid}-vp-skirt`"
|
270
272
|
:class="{
|
271
273
|
'px-4':
|
272
274
|
visibleProperties.has('storeysBelowGround') ||
|
@@ -277,7 +279,7 @@
|
|
277
279
|
</v-col>
|
278
280
|
<v-col>
|
279
281
|
<VcsTextField
|
280
|
-
id="vp-skirt"
|
282
|
+
:id="`${cid}-vp-skirt`"
|
281
283
|
v-model.number="localValue.skirt"
|
282
284
|
:hide-spin-buttons="true"
|
283
285
|
type="number"
|
@@ -292,13 +294,13 @@
|
|
292
294
|
</v-row>
|
293
295
|
<v-row v-if="visibleProperties.has('storeysBelowGround')" no-gutters>
|
294
296
|
<v-col>
|
295
|
-
<VcsLabel html-for="vp-storeys-below" class="px-4">{{
|
297
|
+
<VcsLabel :html-for="`${cid}-vp-storeys-below`" class="px-4">{{
|
296
298
|
$t('components.vectorProperties.storeys')
|
297
299
|
}}</VcsLabel>
|
298
300
|
</v-col>
|
299
301
|
<v-col>
|
300
302
|
<VcsTextField
|
301
|
-
id="vp-storeys-below"
|
303
|
+
:id="`${cid}-vp-storeys-below`"
|
302
304
|
v-model.number="localValue.storeysBelowGround"
|
303
305
|
:hide-spin-buttons="true"
|
304
306
|
type="number"
|
@@ -315,13 +317,15 @@
|
|
315
317
|
no-gutters
|
316
318
|
>
|
317
319
|
<v-col>
|
318
|
-
<VcsLabel
|
319
|
-
|
320
|
-
|
320
|
+
<VcsLabel
|
321
|
+
:html-for="`${cid}-vp-storey-heights-below`"
|
322
|
+
class="px-4"
|
323
|
+
>{{ $t('components.vectorProperties.storeyHeights') }}</VcsLabel
|
324
|
+
>
|
321
325
|
</v-col>
|
322
326
|
<v-col>
|
323
327
|
<VcsChipArrayInput
|
324
|
-
:id="
|
328
|
+
:id="`${cid}-vp-storey-heights-below`"
|
325
329
|
column
|
326
330
|
type="number"
|
327
331
|
v-model="storeyHeights.storeyHeightsBelowGround.value"
|
@@ -348,13 +352,13 @@
|
|
348
352
|
<v-container class="px-1 py-0">
|
349
353
|
<v-row v-if="visibleProperties.has('modelUrl')" no-gutters>
|
350
354
|
<v-col>
|
351
|
-
<VcsLabel html-for="vp-model-url">
|
355
|
+
<VcsLabel :html-for="`${cid}-vp-model-url`">
|
352
356
|
{{ $t('components.vectorProperties.modelUrl') }}
|
353
357
|
</VcsLabel>
|
354
358
|
</v-col>
|
355
359
|
<v-col>
|
356
360
|
<VcsTextField
|
357
|
-
id="vp-model-url"
|
361
|
+
:id="`${cid}-vp-model-url`"
|
358
362
|
v-model="localValue.modelUrl"
|
359
363
|
clearable
|
360
364
|
:placeholder="'modelUrl' in localValue ? 'example.glb' : ''"
|
@@ -384,12 +388,13 @@
|
|
384
388
|
</template>
|
385
389
|
<v-row v-if="visibleProperties.has('modelHeading')" no-gutters>
|
386
390
|
<v-col cols="6">
|
387
|
-
<VcsLabel>{{
|
391
|
+
<VcsLabel :html-for="`${cid}-vp-model-heading`">{{
|
388
392
|
$t('components.vectorProperties.modelHeading')
|
389
393
|
}}</VcsLabel>
|
390
394
|
</v-col>
|
391
395
|
<v-col>
|
392
396
|
<VcsTextField
|
397
|
+
:id="`${cid}-vp-model-heading`"
|
393
398
|
v-model.number="localValue.modelHeading"
|
394
399
|
:hide-spin-buttons="true"
|
395
400
|
type="number"
|
@@ -401,12 +406,13 @@
|
|
401
406
|
</v-row>
|
402
407
|
<v-row v-if="visibleProperties.has('modelPitch')" no-gutters>
|
403
408
|
<v-col cols="6">
|
404
|
-
<VcsLabel>{{
|
409
|
+
<VcsLabel :html-for="`${cid}-vp-model-pitch`">{{
|
405
410
|
$t('components.vectorProperties.modelPitch')
|
406
411
|
}}</VcsLabel>
|
407
412
|
</v-col>
|
408
413
|
<v-col>
|
409
414
|
<VcsTextField
|
415
|
+
:id="`${cid}-vp-model-pitch`"
|
410
416
|
v-model.number="localValue.modelPitch"
|
411
417
|
:hide-spin-buttons="true"
|
412
418
|
type="number"
|
@@ -418,12 +424,13 @@
|
|
418
424
|
</v-row>
|
419
425
|
<v-row v-if="visibleProperties.has('modelRoll')" no-gutters>
|
420
426
|
<v-col cols="6">
|
421
|
-
<VcsLabel>{{
|
427
|
+
<VcsLabel :html-for="`${cid}-vp-model-roll`">{{
|
422
428
|
$t('components.vectorProperties.modelRoll')
|
423
429
|
}}</VcsLabel>
|
424
430
|
</v-col>
|
425
431
|
<v-col>
|
426
432
|
<VcsTextField
|
433
|
+
:id="`${cid}-vp-model-roll`"
|
427
434
|
v-model.number="localValue.modelRoll"
|
428
435
|
:hide-spin-buttons="true"
|
429
436
|
type="number"
|
@@ -435,13 +442,13 @@
|
|
435
442
|
</v-row>
|
436
443
|
<v-row v-if="visibleProperties.has('baseUrl')" no-gutters>
|
437
444
|
<v-col>
|
438
|
-
<VcsLabel html-for="vp-base-url">{{
|
445
|
+
<VcsLabel :html-for="`${cid}-vp-base-url`">{{
|
439
446
|
$t('components.vectorProperties.baseUrl')
|
440
447
|
}}</VcsLabel>
|
441
448
|
</v-col>
|
442
449
|
<v-col>
|
443
450
|
<VcsTextField
|
444
|
-
id="vp-base-url"
|
451
|
+
:id="`${cid}-vp-base-url`"
|
445
452
|
clearable
|
446
453
|
v-model="localValue.baseUrl"
|
447
454
|
:placeholder="'baseUrl' in localValue ? 'path/to/files/' : ''"
|
@@ -466,6 +473,7 @@
|
|
466
473
|
import VcsSelect from '../form-inputs-controls/VcsSelect.vue';
|
467
474
|
import VcsCheckbox from '../form-inputs-controls/VcsCheckbox.vue';
|
468
475
|
import VcsChipArrayInput from '../form-inputs-controls/VcsChipArrayInput.vue';
|
476
|
+
import { useComponentId } from '../composables.js';
|
469
477
|
|
470
478
|
export const genericVectorProperties = [
|
471
479
|
'altitudeMode',
|
@@ -698,6 +706,8 @@
|
|
698
706
|
: [],
|
699
707
|
);
|
700
708
|
|
709
|
+
const cid = useComponentId();
|
710
|
+
|
701
711
|
return {
|
702
712
|
localValue,
|
703
713
|
headerActions,
|
@@ -712,6 +722,7 @@
|
|
712
722
|
storeyHeights,
|
713
723
|
modelScale,
|
714
724
|
dimensionsUpperCase,
|
725
|
+
cid,
|
715
726
|
};
|
716
727
|
},
|
717
728
|
};
|
@@ -241,6 +241,7 @@ declare const _default: import("vue").DefineComponent<{
|
|
241
241
|
storeyHeights: import("vue").ComputedRef<{}>;
|
242
242
|
modelScale: import("vue").ComputedRef<{}>;
|
243
243
|
dimensionsUpperCase: string[];
|
244
|
+
cid: string;
|
244
245
|
}, any, {}, {
|
245
246
|
computed: typeof import("@vue/reactivity").computed;
|
246
247
|
}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, "update:modelValue"[], "update:modelValue", import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
|
@@ -9,13 +9,13 @@
|
|
9
9
|
<v-container class="py-0 px-1">
|
10
10
|
<v-row no-gutters v-if="!hideName">
|
11
11
|
<v-col cols="6">
|
12
|
-
<VcsLabel html-for="name" dense required>
|
12
|
+
<VcsLabel :html-for="`${cid}-name`" dense required>
|
13
13
|
{{ $t('components.viewpoint.name') }}
|
14
14
|
</VcsLabel>
|
15
15
|
</v-col>
|
16
16
|
<v-col>
|
17
17
|
<VcsTextField
|
18
|
-
id="name"
|
18
|
+
:id="`${cid}-name`"
|
19
19
|
clearable
|
20
20
|
v-model="localValue.name"
|
21
21
|
:rules="nameRules"
|
@@ -24,13 +24,13 @@
|
|
24
24
|
</v-row>
|
25
25
|
<v-row no-gutters v-if="!hideTitle">
|
26
26
|
<v-col cols="6">
|
27
|
-
<VcsLabel html-for="title" dense>
|
27
|
+
<VcsLabel :html-for="`${cid}-title`" dense>
|
28
28
|
{{ $t('components.viewpoint.title') }}
|
29
29
|
</VcsLabel>
|
30
30
|
</v-col>
|
31
31
|
<v-col>
|
32
32
|
<VcsTextField
|
33
|
-
id="title"
|
33
|
+
:id="`${cid}-title`"
|
34
34
|
clearable
|
35
35
|
:placeholder="$t('components.viewpoint.titlePlaceholder')"
|
36
36
|
v-model="title"
|
@@ -40,7 +40,6 @@
|
|
40
40
|
<v-row no-gutters v-if="!hideAnimate">
|
41
41
|
<v-col cols="6">
|
42
42
|
<VcsCheckbox
|
43
|
-
id="animate"
|
44
43
|
label="components.viewpoint.animate"
|
45
44
|
v-model="localValue.animate"
|
46
45
|
/>
|
@@ -48,7 +47,6 @@
|
|
48
47
|
<v-col>
|
49
48
|
<VcsTextField
|
50
49
|
v-if="localValue.animate"
|
51
|
-
id="duration"
|
52
50
|
clearable
|
53
51
|
:hide-spin-buttons="true"
|
54
52
|
type="number"
|
@@ -102,12 +100,13 @@
|
|
102
100
|
<template v-if="!isCesiumMap">
|
103
101
|
<v-row no-gutters>
|
104
102
|
<v-col>
|
105
|
-
<VcsLabel html-for="distance" dense>
|
103
|
+
<VcsLabel :html-for="`${cid}-distance`" dense>
|
106
104
|
{{ $t('components.viewpoint.distance') }}
|
107
105
|
</VcsLabel>
|
108
106
|
</v-col>
|
109
107
|
<v-col>
|
110
108
|
<VcsTextField
|
109
|
+
:id="`${cid}-distance`"
|
111
110
|
:min="0"
|
112
111
|
:step="100"
|
113
112
|
prefix="d"
|
@@ -128,13 +127,13 @@
|
|
128
127
|
<div v-for="key in ['heading', 'pitch', 'roll']" :key="key">
|
129
128
|
<v-row no-gutters>
|
130
129
|
<v-col cols="9">
|
131
|
-
<VcsLabel :html-for="key" dense>
|
130
|
+
<VcsLabel :html-for="`${cid}-${key}`" dense>
|
132
131
|
{{ $st(`components.viewpoint.${key}`) }}
|
133
132
|
</VcsLabel>
|
134
133
|
</v-col>
|
135
134
|
<v-col cols="3">
|
136
135
|
<VcsTextField
|
137
|
-
:id="key"
|
136
|
+
:id="`${cid}-${key}`"
|
138
137
|
:hide-spin-buttons="true"
|
139
138
|
type="number"
|
140
139
|
unit="°"
|
@@ -188,6 +187,7 @@
|
|
188
187
|
import VcsCoordinate from '../form-inputs-controls/VcsCoordinate.vue';
|
189
188
|
import VcsSlider from '../form-inputs-controls/VcsSlider.vue';
|
190
189
|
import { useProxiedComplexModel } from '../modelHelper.js';
|
190
|
+
import { useComponentId } from '../composables.js';
|
191
191
|
|
192
192
|
/**
|
193
193
|
* Updates the localValue ref by keeping name and properties
|
@@ -489,6 +489,8 @@
|
|
489
489
|
}
|
490
490
|
}
|
491
491
|
|
492
|
+
const cid = useComponentId();
|
493
|
+
|
492
494
|
return {
|
493
495
|
isCesiumMap,
|
494
496
|
localValue,
|
@@ -500,6 +502,7 @@
|
|
500
502
|
hprSliderOptions,
|
501
503
|
isFiniteNumber,
|
502
504
|
isPositiveNumber,
|
505
|
+
cid,
|
503
506
|
};
|
504
507
|
},
|
505
508
|
};
|
@@ -79,6 +79,7 @@ declare const _default: import("vue").DefineComponent<{
|
|
79
79
|
};
|
80
80
|
isFiniteNumber: typeof isFiniteNumber;
|
81
81
|
isPositiveNumber: typeof isPositiveNumber;
|
82
|
+
cid: string;
|
82
83
|
}, any, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, "update:modelValue"[], "update:modelValue", import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
|
83
84
|
modelValue: {
|
84
85
|
type: ObjectConstructor;
|
@@ -1,7 +1,7 @@
|
|
1
1
|
/**
|
2
|
-
* @type {ClassRegistry<
|
2
|
+
* @type {ClassRegistry<typeof ContentTreeItem>}
|
3
3
|
*/
|
4
|
-
export const contentTreeClassRegistry: ClassRegistry<
|
4
|
+
export const contentTreeClassRegistry: ClassRegistry<typeof ContentTreeItem>;
|
5
5
|
export default ContentTreeItem;
|
6
6
|
export type ContentTreeItemOptions = {
|
7
7
|
type?: string | undefined;
|
@@ -47,7 +47,7 @@ import { executeCallbacks } from '../callback/vcsCallback.js';
|
|
47
47
|
const actionWeightSymbol = Symbol('ActionWeight');
|
48
48
|
|
49
49
|
/**
|
50
|
-
* @type {ClassRegistry<
|
50
|
+
* @type {ClassRegistry<typeof ContentTreeItem>}
|
51
51
|
*/
|
52
52
|
export const contentTreeClassRegistry = new ClassRegistry();
|
53
53
|
|
@@ -2,19 +2,23 @@
|
|
2
2
|
<v-card class="mx-auto elevation-0" v-if="position">
|
3
3
|
<slot name="balloon-header" :attrs="{ ...$props, ...$attrs }">
|
4
4
|
<v-list-item class="px-1">
|
5
|
-
<template #prepend>
|
6
|
-
<
|
7
|
-
<
|
8
|
-
|
5
|
+
<template #prepend="prependScope">
|
6
|
+
<slot name="prepend" v-bind="prependScope">
|
7
|
+
<div class="pl-1 pr-2">
|
8
|
+
<v-icon color="primary" :size="iconSize"> $vcsInfo </v-icon>
|
9
|
+
</div>
|
10
|
+
</slot>
|
9
11
|
</template>
|
10
|
-
<
|
11
|
-
<
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
12
|
+
<slot name="balloon-title" :attrs="{ ...$props, ...$attrs }">
|
13
|
+
<v-list-item-title>
|
14
|
+
<h3 class="font-weight-bold">
|
15
|
+
{{ $st(balloonTitle) }}
|
16
|
+
</h3>
|
17
|
+
</v-list-item-title>
|
18
|
+
<v-list-item-subtitle v-if="balloonSubtitle">
|
19
|
+
{{ $st(balloonSubtitle) }}
|
20
|
+
</v-list-item-subtitle>
|
21
|
+
</slot>
|
18
22
|
<template #append>
|
19
23
|
<VcsButton
|
20
24
|
@click.stop="close"
|
@@ -73,6 +77,7 @@
|
|
73
77
|
import { setupBalloonPositionListener } from './balloonHelper.js';
|
74
78
|
import VcsButton from '../components/buttons/VcsButton.vue';
|
75
79
|
import { getTag, getTagOptions } from '../components/tables/VcsTable.vue';
|
80
|
+
import { useIconSize } from '../vuePlugins/vuetify.js';
|
76
81
|
|
77
82
|
/**
|
78
83
|
* @description A balloon viewing feature attributes. Size dynamic dependent on number of attributes.
|
@@ -84,7 +89,9 @@
|
|
84
89
|
* @vue-prop {Object} tags - optional object containing keys rendered as tags
|
85
90
|
* @vue-prop {Array<import("ol/coordinate").Coordinate>} position - clicked position balloon is rendered at
|
86
91
|
* @vue-data {slot} [#balloon-header] - slot to override balloon header, $props and $attrs are passed to `attrs`
|
92
|
+
* @vue-data {slot} [#balloon-title] - slot to override balloon title and subtitle, $props and $attrs are passed to `attrs`. Is overwritten by balloon-header slot.
|
87
93
|
* @vue-data {slot} [#default] - slot to override balloon content, $props and $attrs are passed to `attrs`
|
94
|
+
* @vue-data {slot} [#prepend] - slot to override balloon header icon
|
88
95
|
*/
|
89
96
|
export default {
|
90
97
|
name: 'BalloonComponent',
|
@@ -186,8 +193,9 @@
|
|
186
193
|
app.windowManager.remove(attrs['window-state'].id);
|
187
194
|
destroyListener();
|
188
195
|
};
|
189
|
-
|
196
|
+
const iconSize = useIconSize();
|
190
197
|
return {
|
198
|
+
iconSize,
|
191
199
|
close,
|
192
200
|
getTag,
|
193
201
|
getTagOptions,
|
@@ -103,7 +103,7 @@ export type FeatureInfoViewOptions = import("@vcmap/core").VcsObjectOptions & {
|
|
103
103
|
keyMapping?: Record<string, string>;
|
104
104
|
valueMapping?: Record<string, string | Record<string, string>>;
|
105
105
|
tags?: Record<string, HTMLTagOptions>;
|
106
|
-
window?: import("../manager/window/windowManager.js").WindowComponentOptions
|
106
|
+
window?: Pick<import("../manager/window/windowManager.js").WindowComponentOptions, 'state' | 'slot' | 'position'>;
|
107
107
|
};
|
108
108
|
/**
|
109
109
|
* Abstract class to be extended by FeatureInfoView classes
|
@@ -145,7 +145,7 @@ declare class AbstractFeatureInfoView extends VcsObject {
|
|
145
145
|
[x: string]: HTMLTagOptions;
|
146
146
|
};
|
147
147
|
/**
|
148
|
-
* @type {import("../manager/window/windowManager.js").WindowComponentOptions|Object}
|
148
|
+
* @type {Pick<import("../manager/window/windowManager.js").WindowComponentOptions,'state'|'slot'|'position'>|Object}
|
149
149
|
* @private
|
150
150
|
*/
|
151
151
|
private _window;
|
@@ -156,9 +156,9 @@ declare class AbstractFeatureInfoView extends VcsObject {
|
|
156
156
|
private _component;
|
157
157
|
/**
|
158
158
|
* window options, configured in a module, used only internally by AbstractFeatureInfoView or subclass
|
159
|
-
* @type {import("../manager/window/windowManager.js").WindowComponentOptions|Object}
|
159
|
+
* @type {Pick<import("../manager/window/windowManager.js").WindowComponentOptions<FeatureInfoProps>,'state'|'slot'|'position'>|Object}
|
160
160
|
*/
|
161
|
-
get window(): Object | import("../manager/window/windowManager.js").WindowComponentOptions<
|
161
|
+
get window(): Object | Pick<import("../manager/window/windowManager.js").WindowComponentOptions<FeatureInfoProps>, "slot" | "state" | "position">;
|
162
162
|
/**
|
163
163
|
* component provided by a FeatureInfoView class, passed to featureInfo via `getWindowComponentOptions()`
|
164
164
|
* @type {import("vue").Component<FeatureInfoProps, unknown, unknown>|undefined}
|