@vcmap/ui 6.0.0-rc.3 → 6.0.0-rc.5
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 +60 -11
- package/build/bundle.js +1 -1
- package/build/info/publish.js +25 -31
- package/build/lintTypes.js +5 -0
- package/config/base.config.json +2 -1
- package/config/dev.config.json +7 -1
- package/config/www.config.json +25 -22
- package/dist/assets/@mdi/font/css/{materialdesignicons.min-7a4f6be0.css → materialdesignicons.min-680621ca.css} +1 -1
- package/dist/assets/{cesium-cb4dbfba.js → cesium-126f111a.js} +272 -385
- package/dist/assets/cesium.js +1 -1
- package/dist/assets/{core-72f21835.js → core-1c8b8674.js} +1417 -1453
- package/dist/assets/core.js +1 -1
- package/dist/assets/{ol-2d33bc8b.js → ol-27f9b3f3.js} +233 -329
- package/dist/assets/ol.js +1 -1
- package/dist/assets/ui-7214428e.css +1 -0
- package/dist/assets/{ui-2ab43a16.js → ui-7214428e.js} +9573 -9438
- package/dist/assets/ui.js +1 -1
- package/dist/assets/vue-c78a5f76.js +6083 -0
- package/dist/assets/vue.js +1 -1
- package/dist/assets/{vuetify-760ced3b.css → vuetify-88a2fabe.css} +2 -2
- package/dist/assets/{vuetify-760ced3b.js → vuetify-88a2fabe.js} +7672 -7877
- package/dist/assets/vuetify.js +1 -1
- package/index.d.ts +6 -8
- package/index.js +7 -5
- package/package.json +16 -16
- package/plugins/@vcmap-show-case/form-inputs-example/src/FormInputsExample.vue +2 -3
- package/plugins/@vcmap-show-case/project-selector/src/ModulesListComponent.vue +18 -11
- package/plugins/@vcmap-show-case/search-example/src/index.js +1 -0
- package/plugins/@vcmap-show-case/search-example/src/searchImpl.js +35 -5
- package/plugins/@vcmap-show-case/toolbox-example/src/index.js +2 -1
- package/plugins/package.json +3 -23
- package/public/assets/@mdi/font/css/materialdesignicons.min.css +1 -1
- package/src/actions/StyleSelector.vue +1 -1
- package/src/actions/actionHelper.js +13 -2
- package/src/actions/listActions.d.ts +4 -4
- package/src/actions/listActions.js +2 -2
- package/src/application/VcsApp.vue +96 -31
- package/src/application/VcsApp.vue.d.ts +297 -4
- package/src/application/VcsContainer.vue +26 -9
- package/src/application/VcsContainer.vue.d.ts +237 -0
- package/src/application/VcsMainMap.vue +7 -7
- package/src/application/VcsMainMap.vue.d.ts +2 -2
- package/src/application/VcsNavbar.vue +5 -1
- package/src/application/VcsSplashScreen.vue +24 -26
- package/src/application/VcsTextPageFooter.vue +2 -1
- package/src/components/buttons/VcsActionButtonList.vue +59 -3
- package/src/components/buttons/VcsActionButtonList.vue.d.ts +28 -0
- package/src/components/form-inputs-controls/VcsChipArrayInput.vue +15 -13
- package/src/components/form-inputs-controls/VcsChipArrayInput.vue.d.ts +3 -4
- package/src/components/form-inputs-controls/VcsCoordinate.vue +4 -3
- package/src/components/form-inputs-controls/VcsSelect.vue +1 -4
- package/src/components/form-inputs-controls/VcsSlider.vue +0 -1
- package/src/components/form-inputs-controls/VcsSlider.vue.d.ts +2 -4
- package/src/components/form-inputs-controls/VcsTextArea.vue +1 -4
- package/src/components/form-inputs-controls/VcsTextField.vue +14 -0
- package/src/components/form-inputs-controls/VcsTextField.vue.d.ts +9 -0
- package/src/components/form-inputs-controls/VcsWizardStep.vue +2 -5
- package/src/components/form-inputs-controls/vcsTextField.scss +1 -4
- package/src/components/form-output/VcsFormattedNumber.vue +6 -4
- package/src/components/form-output/VcsMarkdown.vue +15 -12
- package/src/components/form-output/VcsMarkdown.vue.d.ts +1 -0
- package/src/components/form-output/markdownHelper.d.ts +30 -0
- package/src/components/form-output/markdownHelper.js +398 -0
- package/src/components/import/VcsFileDrop.vue +8 -5
- package/src/components/import/VcsImportComponent.vue +4 -3
- package/src/components/import/VcsImportComponent.vue.d.ts +1 -2
- package/src/components/lists/VcsActionList.vue +4 -0
- package/src/components/lists/VcsList.vue +22 -37
- package/src/components/lists/VcsList.vue.d.ts +14 -55
- package/src/components/lists/{VcsListItem.vue → VcsListItemComponent.vue} +17 -1
- package/src/components/lists/VcsListItemComponent.vue.d.ts +69 -0
- package/src/components/lists/VcsTreeview.vue +43 -16
- package/src/components/lists/VcsTreeview.vue.d.ts +14 -3
- package/src/components/lists/VcsTreeviewLeaf.vue +15 -6
- package/src/components/lists/VcsTreeviewSearchbar.vue +2 -2
- package/src/components/notification/VcsHelp.vue +1 -1
- package/src/components/notification/VcsHelp.vue.d.ts +3 -2
- package/src/components/section/VcsExpansionPanel.vue +2 -2
- package/src/components/section/VcsFormSection.vue +10 -4
- package/src/components/section/VcsFormSection.vue.d.ts +1 -2
- package/src/components/style/VcsTextMenu.vue +1 -1
- package/src/components/style/VcsVectorStyleComponent.vue +1 -1
- package/src/components/tables/VcsDataTable.vue +28 -22
- package/src/components/tables/VcsTable.vue +45 -62
- package/src/components/tables/VcsTable.vue.d.ts +30 -17
- package/src/components/tables/VcsTableCell.vue +72 -0
- package/src/components/tables/VcsTableCell.vue.d.ts +13 -0
- package/src/components/vector-properties/VcsFeatureEditingWindow.vue +6 -5
- package/src/components/vector-properties/VcsFeatureTransforms.vue +5 -0
- package/src/components/viewpoint/VcsViewpointComponent.vue +2 -2
- package/src/components/viewpoint/VcsViewpointEditor.vue +2 -2
- package/src/contentTree/LayerTree.vue +9 -27
- package/src/contentTree/LayerTree.vue.d.ts +1 -1
- package/src/contentTree/contentTreeCollection.d.ts +1 -0
- package/src/contentTree/contentTreeCollection.js +45 -11
- package/src/featureInfo/BalloonComponent.vue +14 -15
- package/src/featureInfo/MarkdownBalloonComponent.vue +4 -2
- package/src/featureInfo/MarkdownBalloonComponent.vue.d.ts +2 -2
- package/src/featureInfo/abstractFeatureInfoView.d.ts +6 -0
- package/src/featureInfo/abstractFeatureInfoView.js +15 -7
- package/src/featureInfo/featureInfo.d.ts +5 -5
- package/src/featureInfo/featureInfo.js +51 -31
- package/src/featureInfo/iframeFeatureInfoView.d.ts +8 -2
- package/src/featureInfo/iframeFeatureInfoView.js +15 -5
- package/src/featureInfo/markdownBalloonFeatureInfoView.d.ts +1 -1
- package/src/featureInfo/markdownBalloonFeatureInfoView.js +5 -5
- package/src/featureInfo/markdownFeatureInfoView.d.ts +1 -1
- package/src/featureInfo/markdownFeatureInfoView.js +9 -11
- package/src/featureInfo/tableFeatureInfoView.js +13 -4
- package/src/manager/collectionManager/CollectionComponentList.vue +1 -1
- package/src/manager/collectionManager/CollectionComponentList.vue.d.ts +2 -2
- package/src/manager/collectionManager/collectionComponentClass.d.ts +1 -1
- package/src/manager/collectionManager/collectionComponentClass.js +2 -2
- package/src/manager/collectionManager/editorCollectionComponentClass.js +2 -1
- package/src/manager/panel/PanelComponent.vue +2 -9
- package/src/manager/panel/PanelManagerComponent.vue +7 -3
- package/src/manager/panel/panelHelper.js +3 -3
- package/src/manager/panel/panelManager.d.ts +9 -1
- package/src/manager/panel/panelManager.js +15 -3
- package/src/manager/toolbox/GroupToolboxComponent.vue +8 -4
- package/src/manager/toolbox/GroupToolboxComponent.vue.d.ts +1 -0
- package/src/manager/toolbox/SelectToolboxComponent.vue +7 -4
- package/src/manager/toolbox/SelectToolboxComponent.vue.d.ts +1 -0
- package/src/manager/toolbox/ToolboxManager.vue +9 -6
- package/src/manager/toolbox/ToolboxManager.vue.d.ts +1 -0
- package/src/manager/window/WindowComponent.vue +12 -8
- package/src/manager/window/WindowComponentHeader.vue +29 -8
- package/src/manager/window/WindowComponentHeader.vue.d.ts +2 -0
- package/src/manager/window/WindowManager.vue +2 -2
- package/src/navigation/MapNavigation.vue +20 -0
- package/src/navigation/locatorHelper.js +1 -1
- package/src/navigation/overviewMap.js +1 -1
- package/src/notifier/NotifierComponent.vue +18 -15
- package/src/search/ResultItem.vue +18 -6
- package/src/search/ResultsComponent.vue +31 -20
- package/src/search/ResultsComponent.vue.d.ts +2 -1
- package/src/search/SearchComponent.vue +8 -14
- package/src/search/SearchComponent.vue.d.ts +1 -0
- package/src/siteConfig.js +8 -8
- package/src/styles/_typography.scss +0 -2
- package/src/styles/main.scss +0 -4
- package/src/uiConfig.d.ts +300 -5
- package/src/uiConfig.js +28 -16
- package/src/vcsUiApp.d.ts +7 -7
- package/src/vcsUiApp.js +10 -9
- package/src/vuePlugins/vuetify.js +3 -0
- package/dist/assets/ui-2ab43a16.css +0 -1
- package/dist/assets/vue-03b265aa.js +0 -6096
- package/src/application/markdownHelper.d.ts +0 -12
- package/src/application/markdownHelper.js +0 -70
- package/src/components/lists/VcsListItem.vue.d.ts +0 -27
- package/src/components/notification/VcsTooltip.vue +0 -156
- package/src/components/notification/VcsTooltip.vue.d.ts +0 -27
- package/src/featureInfo/MarkdownComponent.vue +0 -16
- package/src/featureInfo/MarkdownComponent.vue.d.ts +0 -7
- package/src/styles/_theming.scss +0 -73
- package/src/styles/settings.scss +0 -6
- package/src/styles/shades.scss +0 -4
- package/src/styles/variables.scss +0 -140
- package/src/styles/vcsFont.scss +0 -2
- package/src/styles/vcsGrid.scss +0 -3
@@ -153,11 +153,17 @@ export function createToggleAction(
|
|
153
153
|
export function createSearchButtonAction(app) {
|
154
154
|
let destroyAction = () => {};
|
155
155
|
const searchAction = ref(null);
|
156
|
+
const uiConfig = app.uiConfig.config;
|
157
|
+
|
156
158
|
const determineAction = () => {
|
157
159
|
if (app.windowManager.has('searchId')) {
|
158
160
|
app.windowManager.remove('searchId');
|
159
161
|
}
|
160
|
-
if (
|
162
|
+
if (
|
163
|
+
!uiConfig.hideSearch &&
|
164
|
+
app.search.size > 0 &&
|
165
|
+
searchAction.value === null
|
166
|
+
) {
|
161
167
|
const action = createToggleAction(
|
162
168
|
{
|
163
169
|
name: 'search.title',
|
@@ -178,7 +184,10 @@ export function createSearchButtonAction(app) {
|
|
178
184
|
);
|
179
185
|
destroyAction = action.destroy;
|
180
186
|
searchAction.value = reactive(action.action);
|
181
|
-
} else if (
|
187
|
+
} else if (
|
188
|
+
(uiConfig.hideSearch || app.search.size === 0) &&
|
189
|
+
searchAction.value !== null
|
190
|
+
) {
|
182
191
|
destroyAction();
|
183
192
|
destroyAction = () => {};
|
184
193
|
searchAction.value = null;
|
@@ -186,6 +195,8 @@ export function createSearchButtonAction(app) {
|
|
186
195
|
};
|
187
196
|
determineAction();
|
188
197
|
const listeners = [
|
198
|
+
app.uiConfig.added.addEventListener(determineAction),
|
199
|
+
app.uiConfig.removed.addEventListener(determineAction),
|
189
200
|
app.search.added.addEventListener(determineAction),
|
190
201
|
app.search.removed.addEventListener(determineAction),
|
191
202
|
];
|
@@ -9,23 +9,23 @@
|
|
9
9
|
export function createListItemDeleteAction<T extends Object>(collection: import("@vcmap/core").Collection<T>, item: T, actionOptions?: Partial<import("./actionHelper.js").ActionOptions> | undefined): import("./actionHelper.js").VcsAction;
|
10
10
|
/**
|
11
11
|
* Creates an action based on a provided selection
|
12
|
-
* @param {import("vue").Ref<Array<import("../components/lists/
|
12
|
+
* @param {import("vue").Ref<Array<import("../components/lists/VcsListItemComponent.vue").VcsListItem>>} selection
|
13
13
|
* @param {import("./actionHelper.js").ActionOptions & {callback:import("./actionHelper.js").ActionCallback}} [actionOptions]
|
14
14
|
* @returns {{action: import("vue").UnwrapRef<import("./actionHelper.js").VcsAction>, destroy: import("vue").WatchStopHandle}}
|
15
15
|
*/
|
16
|
-
export function createListItemBulkAction(selection: import("vue").Ref<Array<import("../components/lists/
|
16
|
+
export function createListItemBulkAction(selection: import("vue").Ref<Array<import("../components/lists/VcsListItemComponent.vue").VcsListItem>>, actionOptions?: (import("./actionHelper.js").ActionOptions & {
|
17
17
|
callback: import("./actionHelper.js").ActionCallback;
|
18
18
|
}) | undefined): {
|
19
19
|
action: import("vue").UnwrapRef<import("./actionHelper.js").VcsAction>;
|
20
20
|
destroy: import("vue").WatchStopHandle;
|
21
21
|
};
|
22
22
|
/**
|
23
|
-
* @param {import("vue").Ref<Array<import("../components/lists/
|
23
|
+
* @param {import("vue").Ref<Array<import("../components/lists/VcsListItemComponent.vue").VcsListItem>>} selection
|
24
24
|
* @param {import("./actionHelper.js").ActionCallback} exportCallback
|
25
25
|
* @param {string|symbol} owner
|
26
26
|
* @returns {{action: import("../manager/collectionManager/collectionManager.js").OwnedAction, destroy: (function(): void)}}
|
27
27
|
*/
|
28
|
-
export function createListExportAction(selection: import("vue").Ref<Array<import("../components/lists/
|
28
|
+
export function createListExportAction(selection: import("vue").Ref<Array<import("../components/lists/VcsListItemComponent.vue").VcsListItem>>, exportCallback: import("./actionHelper.js").ActionCallback, owner: string | symbol): {
|
29
29
|
action: import("../manager/collectionManager/collectionManager.js").OwnedAction;
|
30
30
|
destroy: (() => void);
|
31
31
|
};
|
@@ -34,7 +34,7 @@ export function createListItemDeleteAction(
|
|
34
34
|
|
35
35
|
/**
|
36
36
|
* Creates an action based on a provided selection
|
37
|
-
* @param {import("vue").Ref<Array<import("../components/lists/
|
37
|
+
* @param {import("vue").Ref<Array<import("../components/lists/VcsListItemComponent.vue").VcsListItem>>} selection
|
38
38
|
* @param {import("./actionHelper.js").ActionOptions & {callback:import("./actionHelper.js").ActionCallback}} [actionOptions]
|
39
39
|
* @returns {{action: import("vue").UnwrapRef<import("./actionHelper.js").VcsAction>, destroy: import("vue").WatchStopHandle}}
|
40
40
|
*/
|
@@ -59,7 +59,7 @@ export function createListItemBulkAction(selection, actionOptions) {
|
|
59
59
|
}
|
60
60
|
|
61
61
|
/**
|
62
|
-
* @param {import("vue").Ref<Array<import("../components/lists/
|
62
|
+
* @param {import("vue").Ref<Array<import("../components/lists/VcsListItemComponent.vue").VcsListItem>>} selection
|
63
63
|
* @param {import("./actionHelper.js").ActionCallback} exportCallback
|
64
64
|
* @param {string|symbol} owner
|
65
65
|
* @returns {{action: import("../manager/collectionManager/collectionManager.js").OwnedAction, destroy: (function(): void)}}
|
@@ -5,10 +5,10 @@
|
|
5
5
|
:options="splashScreen"
|
6
6
|
v-model="splashScreenRef"
|
7
7
|
></VcsSplashScreen>
|
8
|
-
<VcsNavbar />
|
8
|
+
<VcsNavbar v-if="!config.hideHeader" />
|
9
9
|
<VcsContainer :attribution-action="attributionAction" />
|
10
10
|
<v-footer
|
11
|
-
v-if="
|
11
|
+
v-if="showFooter"
|
12
12
|
app
|
13
13
|
absolute
|
14
14
|
:height="footerHeight"
|
@@ -75,6 +75,37 @@
|
|
75
75
|
import VcsDefaultLogoMobile from '../logo-mobile.svg';
|
76
76
|
import VcsPositionDisplay from './VcsPositionDisplay.vue';
|
77
77
|
|
78
|
+
/**
|
79
|
+
* This helper checks the uiConfig and depending on the value will setup/teardown the providedSetupFunction
|
80
|
+
* @param {import("../vcsUiApp.js").default} app
|
81
|
+
* @param {(import("../vcsUiApp.js").default) => () => void} setupFunction
|
82
|
+
* @param {string} configOption parameter name of a uiConfig parameter, for example `app.uiConfig.config.hideContentTree`
|
83
|
+
* @returns {function():void} - cleanup function
|
84
|
+
*/
|
85
|
+
export function setupUIConfigDependency(app, setupFunction, configOption) {
|
86
|
+
let destroyFunction = null;
|
87
|
+
function handler() {
|
88
|
+
if (!app.uiConfig.config[configOption] && !destroyFunction) {
|
89
|
+
destroyFunction = setupFunction(app);
|
90
|
+
} else if (app.uiConfig.config[configOption] && destroyFunction) {
|
91
|
+
destroyFunction();
|
92
|
+
destroyFunction = null;
|
93
|
+
}
|
94
|
+
}
|
95
|
+
handler();
|
96
|
+
const listeners = [
|
97
|
+
app.uiConfig.added.addEventListener(handler),
|
98
|
+
app.uiConfig.added.addEventListener(handler),
|
99
|
+
];
|
100
|
+
|
101
|
+
return () => {
|
102
|
+
if (destroyFunction) {
|
103
|
+
destroyFunction();
|
104
|
+
}
|
105
|
+
listeners.forEach((cb) => cb());
|
106
|
+
};
|
107
|
+
}
|
108
|
+
|
78
109
|
/**
|
79
110
|
* You should call this function in the component providing the vcsUiApp to your
|
80
111
|
* application in the components mounted hook. This will call VcsAppMounted on all plugins in the app
|
@@ -109,6 +140,7 @@
|
|
109
140
|
/**
|
110
141
|
* This helper function will add a map action button based on the default icons
|
111
142
|
* to the apps NavbarManager. Furthermore, all maps on the app are synced for adding and removing.
|
143
|
+
* The buttons can be removed with the uiConfig hideMapButtons
|
112
144
|
* @param {import("../vcsUiApp.js").default} app
|
113
145
|
* @returns {function():void}
|
114
146
|
*/
|
@@ -231,8 +263,11 @@
|
|
231
263
|
if (layersWithLegend < 1 && stylesWithLegend < 1) {
|
232
264
|
app.navbarManager.remove('legend');
|
233
265
|
app.windowManager.remove('legend');
|
266
|
+
} else {
|
267
|
+
addLegend();
|
234
268
|
}
|
235
269
|
};
|
270
|
+
handleLegend();
|
236
271
|
|
237
272
|
const listeners = [
|
238
273
|
app.layers.added.addEventListener((layer) => {
|
@@ -250,6 +285,8 @@
|
|
250
285
|
];
|
251
286
|
|
252
287
|
return () => {
|
288
|
+
app.navbarManager.remove('legend');
|
289
|
+
app.windowManager.remove('legend');
|
253
290
|
destroy();
|
254
291
|
legendDestroy();
|
255
292
|
listeners.forEach((cb) => cb());
|
@@ -263,7 +300,7 @@
|
|
263
300
|
*/
|
264
301
|
function setupCustomScreen(app) {
|
265
302
|
function setupCustomScreenAction() {
|
266
|
-
const { customScreen } = app.uiConfig.config
|
303
|
+
const { customScreen } = app.uiConfig.config;
|
267
304
|
const { action: customScreenAction, destroy: customScreenDestroy } =
|
268
305
|
createToggleAction(
|
269
306
|
{
|
@@ -301,7 +338,7 @@
|
|
301
338
|
}
|
302
339
|
let customScreen;
|
303
340
|
const stopCustomScreenWatcher = watch(
|
304
|
-
() => app.uiConfig.config.
|
341
|
+
() => app.uiConfig.config.customScreen,
|
305
342
|
(newCustomScreen) => {
|
306
343
|
if (app.navbarManager.has('customScreenToggle')) {
|
307
344
|
app.navbarManager.remove('customScreenToggle');
|
@@ -327,7 +364,7 @@
|
|
327
364
|
*/
|
328
365
|
function setupSplashScreen(app, splashScreenRef) {
|
329
366
|
function setupSplashScreenAction() {
|
330
|
-
const { splashScreen } = app.uiConfig.config
|
367
|
+
const { splashScreen } = app.uiConfig.config;
|
331
368
|
if (splashScreen) {
|
332
369
|
splashScreenRef.value = true;
|
333
370
|
}
|
@@ -379,6 +416,7 @@
|
|
379
416
|
* @returns {function():void}
|
380
417
|
*/
|
381
418
|
export function setupSettingsWindow(app) {
|
419
|
+
const settingsWindowId = 'vcsSettings';
|
382
420
|
const { action: settingsAction, destroy: settingsDestroy } =
|
383
421
|
createToggleAction(
|
384
422
|
{
|
@@ -387,7 +425,7 @@
|
|
387
425
|
title: 'settings.tooltip',
|
388
426
|
},
|
389
427
|
{
|
390
|
-
id:
|
428
|
+
id: settingsWindowId,
|
391
429
|
component: VcsSettings,
|
392
430
|
state: { headerIcon: 'mdi-cog', headerTitle: 'settings.title' },
|
393
431
|
slot: WindowSlot.DYNAMIC_RIGHT,
|
@@ -397,13 +435,15 @@
|
|
397
435
|
);
|
398
436
|
app.navbarManager.add(
|
399
437
|
{
|
400
|
-
id:
|
438
|
+
id: settingsWindowId,
|
401
439
|
action: settingsAction,
|
402
440
|
},
|
403
441
|
vcsAppSymbol,
|
404
442
|
ButtonLocation.MENU,
|
405
443
|
);
|
406
444
|
return () => {
|
445
|
+
app.navbarManager.remove(settingsWindowId);
|
446
|
+
app.windowManager.remove(settingsWindowId);
|
407
447
|
settingsDestroy();
|
408
448
|
};
|
409
449
|
}
|
@@ -431,6 +471,11 @@
|
|
431
471
|
);
|
432
472
|
}
|
433
473
|
|
474
|
+
/**
|
475
|
+
* @type {string}
|
476
|
+
*/
|
477
|
+
export const categoryManagerWindowId = 'category-manager';
|
478
|
+
|
434
479
|
/**
|
435
480
|
* This helper function will add a category manager button to the navbar. The category Manager
|
436
481
|
* will only be shown if there is at least one category under management in the categoryManager.
|
@@ -438,15 +483,14 @@
|
|
438
483
|
* @returns {function():void}
|
439
484
|
*/
|
440
485
|
export function setupCategoryManagerWindow(app) {
|
441
|
-
const id = 'category-manager';
|
442
486
|
const { action: categoryManagerAction, destroy } = createToggleAction(
|
443
487
|
{
|
444
|
-
name:
|
488
|
+
name: categoryManagerWindowId,
|
445
489
|
icon: '$vcsComponents',
|
446
490
|
title: 'categoryManager.tooltip',
|
447
491
|
},
|
448
492
|
{
|
449
|
-
id,
|
493
|
+
id: categoryManagerWindowId,
|
450
494
|
state: {
|
451
495
|
headerTitle: 'categoryManager.title',
|
452
496
|
headerIcon: '$vcsComponents',
|
@@ -472,9 +516,9 @@
|
|
472
516
|
* @param {import("../manager/collectionManager/collectionComponentClass.js").default} collectionComponent
|
473
517
|
*/
|
474
518
|
function handleAdded(collectionComponent) {
|
475
|
-
if (!app.navbarManager.has(
|
519
|
+
if (!app.navbarManager.has(categoryManagerWindowId)) {
|
476
520
|
app.navbarManager.add(
|
477
|
-
{ id, action: categoryManagerAction },
|
521
|
+
{ id: categoryManagerWindowId, action: categoryManagerAction },
|
478
522
|
vcsAppSymbol,
|
479
523
|
ButtonLocation.CONTENT,
|
480
524
|
);
|
@@ -483,7 +527,7 @@
|
|
483
527
|
collectionComponent.id,
|
484
528
|
collectionComponent.collection.added.addEventListener((item) => {
|
485
529
|
if (
|
486
|
-
!app.windowManager.has(
|
530
|
+
!app.windowManager.has(categoryManagerWindowId) &&
|
487
531
|
item[moduleIdSymbol] === app.dynamicModuleId
|
488
532
|
) {
|
489
533
|
categoryManagerAction.hasUpdate = true;
|
@@ -502,8 +546,8 @@
|
|
502
546
|
collectionListeners.delete(collectionComponent.id);
|
503
547
|
|
504
548
|
if (!app.categoryManager.componentIds.length) {
|
505
|
-
app.windowManager.remove(
|
506
|
-
app.navbarManager.remove(
|
549
|
+
app.windowManager.remove(categoryManagerWindowId);
|
550
|
+
app.navbarManager.remove(categoryManagerWindowId);
|
507
551
|
categoryManagerAction.hasUpdate = false;
|
508
552
|
}
|
509
553
|
}
|
@@ -520,13 +564,15 @@
|
|
520
564
|
|
521
565
|
const windowListener = app.windowManager.added.addEventListener(
|
522
566
|
(windowComponent) => {
|
523
|
-
if (windowComponent.id ===
|
567
|
+
if (windowComponent.id === categoryManagerWindowId) {
|
524
568
|
categoryManagerAction.hasUpdate = false;
|
525
569
|
}
|
526
570
|
},
|
527
571
|
);
|
528
572
|
|
529
573
|
return () => {
|
574
|
+
app.windowManager.remove(categoryManagerWindowId);
|
575
|
+
app.navbarManager.remove(categoryManagerWindowId);
|
530
576
|
destroy();
|
531
577
|
addedListener();
|
532
578
|
removedListener();
|
@@ -671,14 +717,30 @@
|
|
671
717
|
/** @type {import("../vcsUiApp.js").default} */
|
672
718
|
const app = getVcsAppById(props.appId);
|
673
719
|
provide('vcsApp', app);
|
674
|
-
const mapNavbarListener =
|
675
|
-
|
676
|
-
|
720
|
+
const mapNavbarListener = setupUIConfigDependency(
|
721
|
+
app,
|
722
|
+
setupMapNavbar,
|
723
|
+
'hideMapButtons',
|
724
|
+
);
|
725
|
+
const legendDestroy = setupUIConfigDependency(
|
726
|
+
app,
|
727
|
+
setupLegendWindow,
|
728
|
+
'hideLegend',
|
729
|
+
);
|
730
|
+
const settingsDestroy = setupUIConfigDependency(
|
731
|
+
app,
|
732
|
+
setupSettingsWindow,
|
733
|
+
'hideSettings',
|
734
|
+
);
|
677
735
|
const stopCustomScreen = setupCustomScreen(app);
|
678
736
|
const splashScreenRef = ref(true);
|
679
737
|
const stopSplashScreen = setupSplashScreen(app, splashScreenRef);
|
680
738
|
setupHelpButton(app);
|
681
|
-
const
|
739
|
+
const destroyMyWorkspace = setupUIConfigDependency(
|
740
|
+
app,
|
741
|
+
setupCategoryManagerWindow,
|
742
|
+
'hideMyWorkspace',
|
743
|
+
);
|
682
744
|
const destroyThemingListener = setupUiConfigTheming(app);
|
683
745
|
const destroyDisplayQualityListener = setupUiConfigDisplayQuality(app);
|
684
746
|
const { attributionEntries, attributionAction, destroyAttributions } =
|
@@ -698,10 +760,10 @@
|
|
698
760
|
settingsDestroy();
|
699
761
|
stopCustomScreen();
|
700
762
|
stopSplashScreen();
|
701
|
-
|
763
|
+
destroyMyWorkspace();
|
702
764
|
destroyThemingListener();
|
703
|
-
destroyAttributions();
|
704
765
|
destroyDisplayQualityListener();
|
766
|
+
destroyAttributions();
|
705
767
|
});
|
706
768
|
|
707
769
|
const { smAndUp } = useDisplay();
|
@@ -711,37 +773,40 @@
|
|
711
773
|
});
|
712
774
|
|
713
775
|
return {
|
714
|
-
|
776
|
+
config: app.uiConfig.config,
|
777
|
+
showFooter: computed(() => {
|
778
|
+
return !app.uiConfig.config.hideFooter && smAndUp.value;
|
779
|
+
}),
|
715
780
|
footerHeight,
|
716
781
|
mobileLogo: computed(
|
717
782
|
() =>
|
718
|
-
app.uiConfig.config.
|
719
|
-
app.uiConfig.config.
|
783
|
+
app.uiConfig.config.mobileLogo ??
|
784
|
+
app.uiConfig.config.logo ??
|
720
785
|
VcsDefaultLogoMobile,
|
721
786
|
),
|
722
787
|
imprint: computed(() => {
|
723
|
-
if (app.uiConfig.config.
|
788
|
+
if (app.uiConfig.config.imprint) {
|
724
789
|
return {
|
725
790
|
title: 'footer.imprint.title',
|
726
791
|
tooltip: 'footer.imprint.tooltip',
|
727
|
-
...app.uiConfig.config.
|
792
|
+
...app.uiConfig.config.imprint,
|
728
793
|
};
|
729
794
|
}
|
730
795
|
return undefined;
|
731
796
|
}),
|
732
797
|
dataProtection: computed(() => {
|
733
|
-
if (app.uiConfig.config.
|
798
|
+
if (app.uiConfig.config.dataProtection) {
|
734
799
|
return {
|
735
800
|
title: 'footer.dataProtection.title',
|
736
801
|
tooltip: 'footer.dataProtection.tooltip',
|
737
|
-
...app.uiConfig.config.
|
802
|
+
...app.uiConfig.config.dataProtection,
|
738
803
|
};
|
739
804
|
}
|
740
805
|
return undefined;
|
741
806
|
}),
|
742
807
|
splashScreenRef,
|
743
808
|
splashScreen: computed(() => {
|
744
|
-
if (app.uiConfig.config.
|
809
|
+
if (app.uiConfig.config.splashScreen) {
|
745
810
|
return {
|
746
811
|
title: 'components.splashScreen.name',
|
747
812
|
tooltip: 'components.splashScreen.tooltip',
|
@@ -749,7 +814,7 @@
|
|
749
814
|
width: '800px',
|
750
815
|
height: '400px',
|
751
816
|
},
|
752
|
-
...app.uiConfig.config.
|
817
|
+
...app.uiConfig.config.splashScreen,
|
753
818
|
};
|
754
819
|
}
|
755
820
|
return undefined;
|