@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
package/dist/assets/vuetify.js
CHANGED
@@ -1 +1 @@
|
|
1
|
-
export * from "./vuetify-
|
1
|
+
export * from "./vuetify-4c4e4217.js";
|
package/index.d.ts
CHANGED
@@ -46,6 +46,8 @@ export { default as PanelComponent } from "./src/manager/panel/PanelComponent.vu
|
|
46
46
|
export type * from "./src/manager/panel/PanelComponent.vue.d.ts";
|
47
47
|
export { default as ButtonManager } from "./src/manager/buttonManager.js";
|
48
48
|
export type * from "./src/manager/buttonManager.d.ts";
|
49
|
+
export { default as ToolboxManagerComponent } from "./src/manager/toolbox/ToolboxManagerComponent.vue";
|
50
|
+
export type * from "./src/manager/toolbox/ToolboxManagerComponent.vue.d.ts";
|
49
51
|
export { default as CategoryManager } from "./src/manager/collectionManager/categoryManager.js";
|
50
52
|
export type * from "./src/manager/collectionManager/categoryManager.d.ts";
|
51
53
|
export { default as CollectionManager } from "./src/manager/collectionManager/collectionManager.js";
|
@@ -102,8 +104,8 @@ export { default as VcsCompass } from "./src/navigation/VcsCompass.vue";
|
|
102
104
|
export type * from "./src/navigation/VcsCompass.vue.d.ts";
|
103
105
|
export { default as VcsZoomButton } from "./src/navigation/VcsZoomButton.vue";
|
104
106
|
export type * from "./src/navigation/VcsZoomButton.vue.d.ts";
|
105
|
-
export {
|
106
|
-
export type * from "./src/
|
107
|
+
export { default as UiConfig } from "./src/uiConfig.js";
|
108
|
+
export type * from "./src/uiConfig.d.ts";
|
107
109
|
export { default as VcsUiApp } from "./src/vcsUiApp.js";
|
108
110
|
export type * from "./src/vcsUiApp.d.ts";
|
109
111
|
export { default as Icons } from "./src/components/icons/+all.js";
|
@@ -162,8 +164,8 @@ export { default as VcsListItemComponent } from "./src/components/lists/VcsListI
|
|
162
164
|
export type * from "./src/components/lists/VcsListItemComponent.vue.d.ts";
|
163
165
|
export { default as VcsTreeview } from "./src/components/lists/VcsTreeview.vue";
|
164
166
|
export type * from "./src/components/lists/VcsTreeview.vue.d.ts";
|
165
|
-
export { default as
|
166
|
-
export type * from "./src/components/lists/
|
167
|
+
export { default as VcsTreeviewTitle } from "./src/components/lists/VcsTreeviewTitle.vue";
|
168
|
+
export type * from "./src/components/lists/VcsTreeviewTitle.vue.d.ts";
|
167
169
|
export { default as VcsTreeviewSearchbar } from "./src/components/lists/VcsTreeviewSearchbar.vue";
|
168
170
|
export type * from "./src/components/lists/VcsTreeviewSearchbar.vue.d.ts";
|
169
171
|
export { default as VcsBadge } from "./src/components/notification/VcsBadge.vue";
|
@@ -214,10 +216,14 @@ export { default as VcsExpansionPanel } from "./src/components/section/VcsExpans
|
|
214
216
|
export type * from "./src/components/section/VcsExpansionPanel.vue.d.ts";
|
215
217
|
export { default as VcsSplashScreen } from "./src/application/VcsSplashScreen.vue";
|
216
218
|
export type * from "./src/application/VcsSplashScreen.vue.d.ts";
|
219
|
+
export * from "./src/application/attributionsHelper.js";
|
220
|
+
export type * from "./src/application/attributionsHelper.d.ts";
|
217
221
|
export * from "./src/components/attrsHelpers.js";
|
218
222
|
export type * from "./src/components/attrsHelpers.d.ts";
|
219
223
|
export * from "./src/components/modelHelper.js";
|
220
224
|
export type * from "./src/components/modelHelper.d.ts";
|
225
|
+
export * from "./src/components/composables.js";
|
226
|
+
export type * from "./src/components/composables.d.ts";
|
221
227
|
export { createMapButtonAction, createToggleAction, createOverviewMapAction, createModalAction, createLinkAction, createGoToViewpointAction, createZoomToFeatureAction } from "./src/actions/actionHelper.js";
|
222
228
|
export type * from "./src/actions/actionHelper.d.ts";
|
223
229
|
export { parseAndSanitizeMarkdown, renderTemplate } from "./src/components/form-output/markdownHelper.js";
|
@@ -264,7 +270,9 @@ export { getWindowComponentOptions, default as OverviewMap } from "./src/navigat
|
|
264
270
|
export type * from "./src/navigation/overviewMap.d.ts";
|
265
271
|
export { createVueI18n, setupI18n } from "./src/vuePlugins/i18n.js";
|
266
272
|
export type * from "./src/vuePlugins/i18n.d.ts";
|
267
|
-
export {
|
273
|
+
export { default as I18nCollection, i18nPluginSymbol } from "./src/i18n/i18nCollection.js";
|
274
|
+
export type * from "./src/i18n/i18nCollection.d.ts";
|
275
|
+
export { createVcsThemes, createVcsVuetify, isDark, getDefaultPrimaryColor, getColorByKey, useFontSize } from "./src/vuePlugins/vuetify.js";
|
268
276
|
export type * from "./src/vuePlugins/vuetify.d.ts";
|
269
277
|
export { downloadURI, downloadBlob, downloadText, downloadCanvas } from "./src/downloadHelper.js";
|
270
278
|
export type * from "./src/downloadHelper.d.ts";
|
@@ -288,11 +296,15 @@ export { default as VcsFeatureEditingWindow, EditorTransformationIcons, getAllow
|
|
288
296
|
export type * from "./src/components/vector-properties/VcsFeatureEditingWindow.vue.d.ts";
|
289
297
|
|
290
298
|
declare module 'vue' {
|
291
|
-
type ReplaceFirstParam<TParams extends readonly any[], TReplace> = {
|
292
|
-
[K in keyof TParams]: K extends "0" ? TReplace : TParams[K]
|
293
|
-
}
|
294
|
-
|
295
299
|
interface ComponentCustomProperties {
|
296
|
-
$st
|
300
|
+
$st(key: string | number | undefined | null): string;
|
301
|
+
$st(key: string | number | undefined | null, plural: number, options?: import("vue-i18n").TranslateOptions<import("vue-i18n").Locale>): string;
|
302
|
+
$st(key: string | number | undefined | null, defaultMsg: string, options?: import("vue-i18n").TranslateOptions<import("vue-i18n").Locale>): string;
|
303
|
+
$st(key: string | number | undefined | null, list: unknown[], options?: import("vue-i18n").TranslateOptions<import("vue-i18n").Locale>): string;
|
304
|
+
$st(key: string | number | undefined | null, list: unknown[], plural: number): string;
|
305
|
+
$st(key: string | number | undefined | null, list: unknown[], defaultMsg: string): string;
|
306
|
+
$st(key: string | number | undefined | null, named: import("vue-i18n").NamedValue, options?: import("vue-i18n").TranslateOptions<import("vue-i18n").Locale>): string;
|
307
|
+
$st(key: string | number | undefined | null, named: import("vue-i18n").NamedValue, plural: number): string;
|
308
|
+
$st(key: string | number | undefined | null, named: import("vue-i18n").NamedValue, defaultMsg: string): string;
|
297
309
|
}
|
298
310
|
}
|
package/index.js
CHANGED
@@ -124,6 +124,7 @@ export {
|
|
124
124
|
ToolboxType,
|
125
125
|
defaultToolboxName,
|
126
126
|
} from './src/manager/toolbox/toolboxManager.js';
|
127
|
+
export { default as ToolboxManagerComponent } from './src/manager/toolbox/ToolboxManagerComponent.vue';
|
127
128
|
export { default as CategoryManager } from './src/manager/collectionManager/categoryManager.js';
|
128
129
|
export { default as CollectionManager } from './src/manager/collectionManager/collectionManager.js';
|
129
130
|
export { default as CollectionManagerComponent } from './src/manager/collectionManager/CollectionManager.vue';
|
@@ -185,14 +186,17 @@ export { default as VcsCompass } from './src/navigation/VcsCompass.vue';
|
|
185
186
|
export { default as VcsZoomButton } from './src/navigation/VcsZoomButton.vue';
|
186
187
|
//
|
187
188
|
export { createVueI18n, setupI18n } from './src/vuePlugins/i18n.js';
|
188
|
-
export {
|
189
|
+
export {
|
190
|
+
default as I18nCollection,
|
191
|
+
i18nPluginSymbol,
|
192
|
+
} from './src/i18n/i18nCollection.js';
|
193
|
+
export { default as UiConfig } from './src/uiConfig.js'; // export UiConfig types
|
189
194
|
export {
|
190
195
|
createVcsThemes,
|
191
196
|
createVcsVuetify,
|
192
197
|
isDark,
|
193
198
|
getDefaultPrimaryColor,
|
194
199
|
getColorByKey,
|
195
|
-
useItemHeight,
|
196
200
|
useFontSize,
|
197
201
|
} from './src/vuePlugins/vuetify.js';
|
198
202
|
export {
|
@@ -262,7 +266,7 @@ export {
|
|
262
266
|
export { default as VcsList } from './src/components/lists/VcsList.vue';
|
263
267
|
export { default as VcsListItemComponent } from './src/components/lists/VcsListItemComponent.vue';
|
264
268
|
export { default as VcsTreeview } from './src/components/lists/VcsTreeview.vue';
|
265
|
-
export { default as
|
269
|
+
export { default as VcsTreeviewTitle } from './src/components/lists/VcsTreeviewTitle.vue';
|
266
270
|
export { default as VcsTreeviewSearchbar } from './src/components/lists/VcsTreeviewSearchbar.vue';
|
267
271
|
export { default as VcsBadge } from './src/components/notification/VcsBadge.vue';
|
268
272
|
export { default as VcsDefaultLogo } from './src/logo.svg';
|
@@ -307,5 +311,7 @@ export { default as VcsFileDrop } from './src/components/import/VcsFileDrop.vue'
|
|
307
311
|
export { default as VcsImportComponent } from './src/components/import/VcsImportComponent.vue';
|
308
312
|
export { default as VcsExpansionPanel } from './src/components/section/VcsExpansionPanel.vue';
|
309
313
|
export { default as VcsSplashScreen } from './src/application/VcsSplashScreen.vue';
|
314
|
+
export * from './src/application/attributionsHelper.js';
|
310
315
|
export * from './src/components/attrsHelpers.js';
|
311
316
|
export * from './src/components/modelHelper.js';
|
317
|
+
export * from './src/components/composables.js';
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@vcmap/ui",
|
3
|
-
"version": "6.0.0-rc.
|
3
|
+
"version": "6.0.0-rc.6",
|
4
4
|
"author": "Virtual City Systems",
|
5
5
|
"license": "MIT",
|
6
6
|
"scripts": {
|
@@ -57,10 +57,10 @@
|
|
57
57
|
},
|
58
58
|
"peerDependencies": {
|
59
59
|
"@vcmap-cesium/engine": "^10.0.1",
|
60
|
-
"@vcmap/core": "6.0.0-rc.
|
60
|
+
"@vcmap/core": "^6.0.0-rc.5",
|
61
61
|
"ol": "^10.0.0",
|
62
62
|
"vue": "~3.4.38",
|
63
|
-
"vuetify": "^3.7.
|
63
|
+
"vuetify": "^3.7.1"
|
64
64
|
},
|
65
65
|
"devDependencies": {
|
66
66
|
"@histoire/plugin-vue": "^0.17.17",
|
@@ -0,0 +1 @@
|
|
1
|
+
<svg fill="#000000" width="200px" height="200px" viewBox="0 0 480 480" xmlns="http://www.w3.org/2000/svg"><path id="test" d="M296.482 395.294c0 31.144 -25.327 56.471 -56.471 56.471s-56.471 -25.327 -56.471 -56.471zM240.011 56.471c85.609 0 155.294 69.656 155.294 155.294v98.823c0 21.685 8.188 41.477 21.6 56.471H63.089c13.44 -14.993 21.628 -34.786 21.628 -56.471V211.765c0 -85.638 69.656 -155.294 155.294 -155.294m183.53 254.118V211.765c0 -96.424 -74.823 -175.567 -169.412 -182.823V0H225.894v28.941c-94.617 7.256 -169.412 86.4 -169.412 182.823v98.823c0 31.143 -25.327 56.471 -56.471 56.471v28.235h155.294c0 46.701 37.977 84.706 84.706 84.706 46.701 0 84.706 -38.005 84.706 -84.706h155.294v-28.235c-31.143 0 -56.471 -25.327 -56.471 -56.471Z" fill-rule="evenodd"/></svg>
|
@@ -0,0 +1,90 @@
|
|
1
|
+
<template>
|
2
|
+
<div>
|
3
|
+
<VcsFormSection heading="VIcon">
|
4
|
+
<v-row no-gutters v-for="icon in icons" :key="icon.title">
|
5
|
+
<v-col cols="6">
|
6
|
+
<VcsLabel>{{ icon.title }}</VcsLabel>
|
7
|
+
</v-col>
|
8
|
+
<v-col>
|
9
|
+
<VIcon size="x-small">{{ `${icon.set}:${icon.icon}` }}</VIcon>
|
10
|
+
</v-col>
|
11
|
+
<v-col>
|
12
|
+
<VIcon>{{ `${icon.set}:${icon.icon}` }}</VIcon>
|
13
|
+
</v-col>
|
14
|
+
<v-col>
|
15
|
+
<VIcon size="large">{{ `${icon.set}:${icon.icon}` }}</VIcon>
|
16
|
+
</v-col>
|
17
|
+
</v-row>
|
18
|
+
</VcsFormSection>
|
19
|
+
</div>
|
20
|
+
</template>
|
21
|
+
|
22
|
+
<script>
|
23
|
+
import { VcsFormSection, VcsLabel } from '@vcmap/ui';
|
24
|
+
import { VRow, VCol, VIcon } from 'vuetify/components';
|
25
|
+
|
26
|
+
export default {
|
27
|
+
name: 'CustomIconsExample',
|
28
|
+
components: {
|
29
|
+
VcsLabel,
|
30
|
+
VcsFormSection,
|
31
|
+
VIcon,
|
32
|
+
VRow,
|
33
|
+
VCol,
|
34
|
+
},
|
35
|
+
setup() {
|
36
|
+
const icons = [
|
37
|
+
{
|
38
|
+
title: 'Base64 image',
|
39
|
+
set: 'imageUrl',
|
40
|
+
icon: 'data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/Pgo8IS0tIEdlbmVyYXRvcjogQWRvYmUgSWxsdXN0cmF0b3IgMTkuMC4wLCBTVkcgRXhwb3J0IFBsdWctSW4gLiBTVkcgVmVyc2lvbjogNi4wMCBCdWlsZCAwKSAgLS0+CjwhLS0gTGljZW5zZTogQ0MwLiBNYWRlIGJ5IFNWRyBSZXBvOiBodHRwczovL3d3dy5zdmdyZXBvLmNvbS9zdmcvNjUxNjMvYmVhY2ggLS0+CjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0iTGF5ZXJfMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiCgkgdmlld0JveD0iMCAwIDUxMiA1MTIiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDUxMiA1MTI7IiB4bWw6c3BhY2U9InByZXNlcnZlIj4KPHJlY3QgeT0iMjcwLjMyNyIgc3R5bGU9ImZpbGw6IzNGQTlGNTsiIHdpZHRoPSI1MTIiIGhlaWdodD0iMTA0LjQ5Ii8+CjxyZWN0IHk9IjM3NC44MTciIHN0eWxlPSJmaWxsOiNGRkQ0NkE7IiB3aWR0aD0iNTEyIiBoZWlnaHQ9IjEzMC42MTIiLz4KPHBhdGggc3R5bGU9ImZpbGw6I0ZGRDI0ODsiIGQ9Ik00MTIuNzM1LDcxLjc5OWMzNC41ODYsMCw2Mi42OTQsMjguMTA4LDYyLjY5NCw2Mi42OTRzLTI4LjEwOCw2Mi42OTQtNjIuNjk0LDYyLjY5NAoJcy02Mi42OTQtMjguMTA4LTYyLjY5NC02Mi42OTRTMzc4LjE0OSw3MS43OTksNDEyLjczNSw3MS43OTl6Ii8+CjxwYXRoIHN0eWxlPSJmaWxsOiNCM0IzQjM7IiBkPSJNMjQ1LjU1MSwxOTcuMTg2aC02Mi42OTRjMC02Mi42OTQtMzYuNTcxLTk5LjI2NS0zNi41NzEtOTkuMjY1CglDMjAxLjE0Myw5Ny45MjEsMjQ1LjU1MSwxNDIuMzI5LDI0NS41NTEsMTk3LjE4NnoiLz4KPHBhdGggc3R5bGU9ImZpbGw6I0NDQ0NDQzsiIGQ9Ik0xNDYuMjg2LDk3LjkyMWMwLDAsMzYuNTcxLDM2LjU3MSwzNi41NzEsOTkuMjY1aC0zNi41NzFIMTA0LjQ5CglDMTA0LjQ5LDE0NC45NDEsMTQ2LjI4Niw5Ny45MjEsMTQ2LjI4Niw5Ny45MjF6Ii8+CjxwYXRoIHN0eWxlPSJmaWxsOiNFNkU2RTY7IiBkPSJNMTQ2LjI4Niw5Ny45MjFjMCwwLTQxLjc5Niw0Ny4wMi00MS43OTYsOTkuMjY1SDQ3LjAyQzQ3LjAyLDE0Mi4zMjksOTEuNDI5LDk3LjkyMSwxNDYuMjg2LDk3LjkyMXoiCgkvPgo8cGF0aCBkPSJNMTgwLjI0NSw0MC40NTJoMTUuNjczYzAtNS4xODYsNC40NzItOS43NTcsMTMuMjkyLTEzLjU5YzguMDg5LTMuNTE0LDE2LjQ3OS00Ljc2NSwxNi41NjMtNC43NzZsLTEuMTItNy43NTZsLTEuMTA5LTcuNzU4CgljLTEwLjY1LDEuNTIyLTI2LjE4NCw2LjMtMzUuNDYzLDE1LjcwM2MtOS4yNzktOS40MDMtMjQuODEzLTE0LjE4MS0zNS40NjMtMTUuNzAzbC0yLjIxNiwxNS41MTcKCUMxNTYuNzA2LDIyLjk4OCwxODAuMjQ1LDI4Ljc0NCwxODAuMjQ1LDQwLjQ1MnoiLz4KPHBhdGggZD0iTTI2My44MzcsOTIuNjk3aDE1LjY3M2MwLTUuMTg2LDQuNDcyLTkuNzU3LDEzLjI5Mi0xMy41OWM4LjA4OS0zLjUxNCwxNi40NzktNC43NjUsMTYuNTYzLTQuNzc2bC0xLjEyLTcuNzU2bC0xLjEwOS03Ljc1OAoJYy0xMC42NSwxLjUyMS0yNi4xODUsNi4zLTM1LjQ2MywxNS43MDNjLTkuMjc5LTkuNDAzLTI0LjgxMy0xNC4xODEtMzUuNDYzLTE1LjcwM2wtMi4yMTYsMTUuNTE3CglDMjQwLjI5OCw3NS4yMzMsMjYzLjgzNyw4MC45ODgsMjYzLjgzNyw5Mi42OTd6Ii8+CjxyZWN0IHg9IjI2LjEyMiIgeT0iNDUwLjU3MiIgd2lkdGg9IjIwLjg5OCIgaGVpZ2h0PSIxNS42NzMiLz4KPHJlY3QgeD0iNjcuOTE4IiB5PSI0MDguNzc2IiB3aWR0aD0iMjAuODk4IiBoZWlnaHQ9IjE1LjY3MyIvPgo8cmVjdCB4PSI2Ny45MTgiIHk9IjQ3MS40NyIgd2lkdGg9IjIwLjg5OCIgaGVpZ2h0PSIxNS42NzMiLz4KPHJlY3QgeD0iMTMwLjYxMiIgeT0iNDYxLjAyMSIgd2lkdGg9IjIwLjg5OCIgaGVpZ2h0PSIxNS42NzMiLz4KPHJlY3QgeD0iMjAzLjc1NSIgeT0iNDcxLjQ3IiB3aWR0aD0iMjAuODk4IiBoZWlnaHQ9IjE1LjY3MyIvPgo8cmVjdCB4PSIyMDMuNzU1IiB5PSI0MTkuMjI1IiB3aWR0aD0iMjAuODk4IiBoZWlnaHQ9IjE1LjY3MyIvPgo8cmVjdCB4PSIyNjYuNDQ5IiB5PSI0MDguNzc2IiB3aWR0aD0iMjAuODk4IiBoZWlnaHQ9IjE1LjY3MyIvPgo8cmVjdCB4PSIzMzkuNTkyIiB5PSI0NDAuMTIzIiB3aWR0aD0iMjAuODk4IiBoZWlnaHQ9IjE1LjY3MyIvPgo8cmVjdCB4PSIyODcuMzQ3IiB5PSI0NzEuNDciIHdpZHRoPSIyMC44OTgiIGhlaWdodD0iMTUuNjczIi8+CjxyZWN0IHg9IjM5MS44MzciIHk9IjQwOC43NzYiIHdpZHRoPSIyMC44OTgiIGhlaWdodD0iMTUuNjczIi8+CjxyZWN0IHg9IjM5MS44MzciIHk9IjQ3MS40NyIgd2lkdGg9IjIwLjg5OCIgaGVpZ2h0PSIxNS42NzMiLz4KPHJlY3QgeD0iNDY0Ljk4IiB5PSI0NDAuMTIzIiB3aWR0aD0iMjAuODk4IiBoZWlnaHQ9IjE1LjY3MyIvPgo8cmVjdCB4PSIyMTkuNDI5IiB5PSIzMDkuNTExIiB3aWR0aD0iNDcuMDIiIGhlaWdodD0iMTUuNjczIi8+CjxyZWN0IHg9IjI3Ni44OTgiIHk9IjMwOS41MTEiIHdpZHRoPSIyMC44OTgiIGhlaWdodD0iMTUuNjczIi8+CjxyZWN0IHg9IjIwLjg5OCIgeT0iMzMwLjQwOSIgd2lkdGg9IjQ3LjAyIiBoZWlnaHQ9IjE1LjY3MyIvPgo8cmVjdCB4PSI3OC4zNjciIHk9IjMzMC40MDkiIHdpZHRoPSIyMC44OTgiIGhlaWdodD0iMTUuNjczIi8+CjxyZWN0IHg9IjQwNy41MSIgeT0iMzMwLjQwOSIgd2lkdGg9IjQ3LjAyIiBoZWlnaHQ9IjE1LjY3MyIvPgo8cmVjdCB4PSIzNzYuMTYzIiB5PSIzMzAuNDA5IiB3aWR0aD0iMjAuODk4IiBoZWlnaHQ9IjE1LjY3MyIvPgo8cGF0aCBkPSJNNTEyLDI2Mi40OTJIMTU0LjEyMnYtNTcuNDY5aDk5LjI2NXYtNy44MzdjMC01OS4wNTctNDguMDQ1LTEwNy4xMDItMTA3LjEwMi0xMDcuMTAyUzM5LjE4NCwxMzguMTMsMzkuMTg0LDE5Ny4xODZ2Ny44MzcKCWg5OS4yNjV2NTcuNDY5SDB2MTUuNjczaDEzOC40NDl2ODguODE2SDB2MTUuNjczaDEzOC40NDl2MzEuMzQ3aC0yMy41MXYxNS42NzNoNjIuNjk0di0xNS42NzNoLTIzLjUxdi0zMS4zNDdINTEydi0xNS42NzNIMTU0LjEyMgoJdi04OC44MTZINTEyVjI2Mi40OTJ6IE0xMTIuNjY2LDE4OS4zNWMyLjg2OC0zNC4xODEsMjMuNTI2LTY1LjQ2NiwzMy43NjMtNzkuMDY2YzkuMTUxLDEyLjA3NCwyNi4yOTUsMzkuNywyOC4zNjQsNzkuMDY2SDExMi42NjZ6CgkgTTIzNy4zODIsMTg5LjM1aC00Ni44OTFjLTEuNzY4LTM4LjA1NC0xNi4wMzktNjYuMDQyLTI2Ljc1NS04MS45MjFDMjAzLjMzMiwxMTUuMTEzLDIzMy44OTEsMTQ4LjQzLDIzNy4zODIsMTg5LjM1egoJIE0xMjkuMTAzLDEwNy4zODRjLTEyLjA3LDE3LjI2OC0yOS43MjcsNDcuODktMzIuMTY1LDgxLjk2Nkg1NS4xODlDNTguNjg5LDE0OC4zMzgsODkuMzc4LDExNC45NywxMjkuMTAzLDEwNy4zODR6Ii8+CjxwYXRoIGQ9Ik00MTIuNzM1LDIwNS4wMjNjMzguODkxLDAsNzAuNTMxLTMxLjY0LDcwLjUzMS03MC41MzFzLTMxLjY0LTcwLjUzMS03MC41MzEtNzAuNTMxcy03MC41MzEsMzEuNjQtNzAuNTMxLDcwLjUzMQoJUzM3My44NDQsMjA1LjAyMyw0MTIuNzM1LDIwNS4wMjN6IE00MTIuNzM1LDc5LjYzNWMzMC4yNDgsMCw1NC44NTcsMjQuNjA4LDU0Ljg1Nyw1NC44NTdzLTI0LjYwOSw1NC44NTctNTQuODU3LDU0Ljg1NwoJcy01NC44NTctMjQuNjA4LTU0Ljg1Ny01NC44NTdTMzgyLjQ4Nyw3OS42MzUsNDEyLjczNSw3OS42MzV6Ii8+Cjwvc3ZnPgo=',
|
41
|
+
},
|
42
|
+
{
|
43
|
+
title: 'Image file',
|
44
|
+
set: 'imageUrl',
|
45
|
+
icon: './plugins/@vcmap-show-case/custom-icons-example/assets/imageExample.png',
|
46
|
+
},
|
47
|
+
{
|
48
|
+
title: 'SVG File as image',
|
49
|
+
set: 'imageUrl',
|
50
|
+
icon: './plugins/@vcmap-show-case/custom-icons-example/assets/svgExample.svg',
|
51
|
+
},
|
52
|
+
{
|
53
|
+
title: 'SVG Path',
|
54
|
+
set: 'svgPathData',
|
55
|
+
icon: 'M20.1 15.9A10 10 0 0 1 19.5 12.3v-3A8 8 0 0 0 17.6 4.1 8 8 0 0 0 12.7 1.5a10 10 0 0 0 -3.1 0.3 10 10 0 0 0 -2.7 1.6 10 10 0 0 0 -1.8 2.5 10 10 0 0 0 -0.6 3v3.3a10 10 0 0 1 -0.6 3.6L3 18.5l0.7 1H9q0 1.3 0.9 2.1T12 22.5C13.2 22.5 13.6 22.2 14.1 21.6S15 20.3 15 19.5h5.3L21 18.5zm-7 4.7A2 2 0 0 1 12 21 2 2 0 0 1 10.9 20.6 2 2 0 0 1 10.5 19.5h3a1 1 0 0 1 -0.4 1.1M4.8 18 5.4 16.3a10 10 0 0 0 0.7 -4V9q0 -1.3 0.5 -2.4a4 4 0 0 1 1.5 -2 10 10 0 0 1 2.2 -1.3Q11.6 2.9 12.8 3a6 6 0 0 1 3.9 2.1 6 6 0 0 1 1.5 4.2v3q0 2 0.7 4L19.5 18H5.1z',
|
56
|
+
},
|
57
|
+
{
|
58
|
+
title: 'SVG File',
|
59
|
+
set: 'svgString',
|
60
|
+
icon: `<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
61
|
+
viewBox="0 0 475.279 475.279" style="enable-background:new 0 0 475.279 475.279;" xml:space="preserve">
|
62
|
+
<g>
|
63
|
+
<path d="M361.531,395.98c-33.02,0-50.146,11.539-65.257,21.718c-13.766,9.274-24.639,16.599-48.496,16.599
|
64
|
+
c-23.856,0-34.729-7.325-48.495-16.599c-15.111-10.18-32.237-21.718-65.257-21.718c-2.381,0-4.67,0.067-6.891,0.182V236.423
|
65
|
+
c23.946,6.592,41.592,28.547,41.592,54.559h30c0-28.366-13.71-53.59-34.852-69.394c14.009,2.427,27.128,10.074,36.125,22.457
|
66
|
+
l24.271-17.634c-16.673-22.948-42.59-35.296-68.983-35.655c12.76-6.271,27.868-7.796,42.424-3.066l9.271-28.531
|
67
|
+
c-22.013-7.154-45.479-5.311-66.078,5.185c-11.382,5.799-21.13,13.869-28.791,23.635c-21.817-27.68-59.396-40.329-94.824-28.82
|
68
|
+
l9.271,28.532c14.556-4.729,29.664-3.205,42.424,3.066C42.59,191.115,16.672,203.463,0,226.411l24.271,17.634
|
69
|
+
c8.997-12.385,22.116-20.032,36.126-22.458c-21.143,15.804-34.854,41.028-34.854,69.395h30c0-26.012,17.646-47.967,41.592-54.559
|
70
|
+
v165.655c-11.486,4.257-20.22,10.135-28.364,15.621c-13.765,9.273-24.637,16.599-48.492,16.599v30
|
71
|
+
c33.018,0,50.145-11.539,65.255-21.719c13.765-9.273,24.637-16.599,48.492-16.599c23.856,0,34.729,7.325,48.495,16.599
|
72
|
+
c15.111,10.18,32.237,21.718,65.257,21.718s50.146-11.539,65.257-21.718c13.766-9.274,24.639-16.599,48.496-16.599
|
73
|
+
c23.855,0,34.728,7.325,48.493,16.599c15.11,10.18,32.237,21.719,65.255,21.719v-30c-23.855,0-34.728-7.325-48.493-16.599
|
74
|
+
C411.676,407.519,394.55,395.98,361.531,395.98z"/>
|
75
|
+
<path d="M438.776,105.982c-1.944-9.575-5.72-18.48-10.933-26.351l25.824-25.824l-21.213-21.213l-25.824,25.824
|
76
|
+
c-7.871-5.213-16.777-8.989-26.351-10.933V10.982h-30v36.503c-9.575,1.944-18.48,5.72-26.351,10.933l-25.824-25.824l-21.213,21.213
|
77
|
+
l25.824,25.824c-5.213,7.871-8.989,16.777-10.933,26.351h-36.503v30h36.503c1.944,9.575,5.72,18.48,10.933,26.351l-25.824,25.824
|
78
|
+
l21.213,21.213l25.824-25.824c7.871,5.213,16.777,8.989,26.351,10.933v36.503h30v-36.503c9.575-1.944,18.48-5.72,26.351-10.933
|
79
|
+
l25.824,25.824l21.213-21.213l-25.824-25.824c5.213-7.871,8.989-16.777,10.933-26.351h36.503v-30H438.776z"/>
|
80
|
+
</g>
|
81
|
+
</svg>`,
|
82
|
+
},
|
83
|
+
];
|
84
|
+
|
85
|
+
return {
|
86
|
+
icons,
|
87
|
+
};
|
88
|
+
},
|
89
|
+
};
|
90
|
+
</script>
|
@@ -0,0 +1,45 @@
|
|
1
|
+
import { ButtonLocation, createToggleAction } from '@vcmap/ui';
|
2
|
+
import CustomIconsExample from './CustomIconsExample.vue';
|
3
|
+
import packageJSON from '../package.json';
|
4
|
+
|
5
|
+
export default async function customIconExample() {
|
6
|
+
return {
|
7
|
+
get name() {
|
8
|
+
return packageJSON.name;
|
9
|
+
},
|
10
|
+
get version() {
|
11
|
+
return packageJSON.version;
|
12
|
+
},
|
13
|
+
get mapVersion() {
|
14
|
+
return packageJSON.mapVersion;
|
15
|
+
},
|
16
|
+
onVcsAppMounted(app) {
|
17
|
+
const { action, destroy } = createToggleAction(
|
18
|
+
{
|
19
|
+
name: 'Custom icons example',
|
20
|
+
},
|
21
|
+
{
|
22
|
+
id: 'custom-icons-example',
|
23
|
+
state: {
|
24
|
+
headerTitle: 'Custom icons example',
|
25
|
+
},
|
26
|
+
component: CustomIconsExample,
|
27
|
+
},
|
28
|
+
app.windowManager,
|
29
|
+
packageJSON.name,
|
30
|
+
);
|
31
|
+
app.navbarManager.add(
|
32
|
+
{ id: 'custom-icons-example', action },
|
33
|
+
packageJSON.name,
|
34
|
+
ButtonLocation.TOOL,
|
35
|
+
);
|
36
|
+
this._destoryAction = [destroy];
|
37
|
+
},
|
38
|
+
destroy() {
|
39
|
+
if (this._destroyActions) {
|
40
|
+
this._destroyActions.forEach((cb) => cb());
|
41
|
+
this._destroyActions = null;
|
42
|
+
}
|
43
|
+
},
|
44
|
+
};
|
45
|
+
}
|
@@ -1,15 +1,21 @@
|
|
1
1
|
<template>
|
2
|
-
<
|
2
|
+
<div>
|
3
|
+
<VcsHelp
|
4
|
+
text="Below all config editors provided by plugins are listed. Important Note: Changes made in editors are not applied!"
|
5
|
+
></VcsHelp>
|
6
|
+
<VcsList :items="plugins" :show-title="false" />
|
7
|
+
</div>
|
3
8
|
</template>
|
4
9
|
|
5
10
|
<script>
|
6
11
|
import { inject, onUnmounted, ref } from 'vue';
|
7
|
-
import { VcsList, createToggleAction, WindowSlot } from '@vcmap/ui';
|
12
|
+
import { VcsList, createToggleAction, WindowSlot, VcsHelp } from '@vcmap/ui';
|
8
13
|
import { name } from '../package.json';
|
9
14
|
|
10
15
|
export default {
|
11
16
|
name: 'PluginEditors',
|
12
17
|
components: {
|
18
|
+
VcsHelp,
|
13
19
|
VcsList,
|
14
20
|
},
|
15
21
|
setup() {
|
@@ -41,12 +47,10 @@
|
|
41
47
|
if (config) {
|
42
48
|
vcsApp.notifier.add({
|
43
49
|
type: 'info',
|
44
|
-
|
45
|
-
|
46
|
-
null,
|
47
|
-
2,
|
48
|
-
)}`,
|
50
|
+
title: plugin.name,
|
51
|
+
message: JSON.stringify(config, null, 2),
|
49
52
|
});
|
53
|
+
console.log(config);
|
50
54
|
} else {
|
51
55
|
vcsApp.notifier.add({
|
52
56
|
type: 'warning',
|
@@ -0,0 +1,116 @@
|
|
1
|
+
<template>
|
2
|
+
<VCard>
|
3
|
+
<VcsFormSection heading="Colors" expandable start-open>
|
4
|
+
<v-container class="px-1 py-0">
|
5
|
+
<v-row
|
6
|
+
v-for="key in Object.keys(currentTheme.colors)"
|
7
|
+
:key="key"
|
8
|
+
no-gutters
|
9
|
+
>
|
10
|
+
<v-col>
|
11
|
+
<VcsLabel>{{ key }}</VcsLabel>
|
12
|
+
</v-col>
|
13
|
+
<v-col>
|
14
|
+
<VcsTextField
|
15
|
+
v-model="currentTheme.colors[key]"
|
16
|
+
:bg-color="currentTheme.colors[key]"
|
17
|
+
></VcsTextField>
|
18
|
+
</v-col>
|
19
|
+
</v-row>
|
20
|
+
</v-container>
|
21
|
+
</VcsFormSection>
|
22
|
+
<VcsFormSection heading="Variables" expandable start-open>
|
23
|
+
<v-container class="px-1 py-0">
|
24
|
+
<v-row
|
25
|
+
no-gutters
|
26
|
+
v-for="key in Object.keys(currentTheme.variables)"
|
27
|
+
:key="key"
|
28
|
+
>
|
29
|
+
<v-col>
|
30
|
+
<VcsLabel>{{ key }}</VcsLabel>
|
31
|
+
</v-col>
|
32
|
+
<v-col>
|
33
|
+
<VcsTextField v-model="currentTheme.variables[key]"></VcsTextField>
|
34
|
+
</v-col>
|
35
|
+
</v-row>
|
36
|
+
</v-container>
|
37
|
+
</VcsFormSection>
|
38
|
+
<v-container class="px-1 py-0">
|
39
|
+
<VcsFormButton @click="reset"> Reset default </VcsFormButton>
|
40
|
+
</v-container>
|
41
|
+
</VCard>
|
42
|
+
</template>
|
43
|
+
|
44
|
+
<script>
|
45
|
+
import {
|
46
|
+
createVcsThemes,
|
47
|
+
VcsTextField,
|
48
|
+
VcsLabel,
|
49
|
+
VcsFormSection,
|
50
|
+
VcsFormButton,
|
51
|
+
isDark,
|
52
|
+
} from '@vcmap/ui';
|
53
|
+
import {
|
54
|
+
watch,
|
55
|
+
inject,
|
56
|
+
ref,
|
57
|
+
computed,
|
58
|
+
toRaw,
|
59
|
+
onMounted,
|
60
|
+
onUnmounted,
|
61
|
+
} from 'vue';
|
62
|
+
import { VCard, VCol, VRow, VContainer } from 'vuetify/components';
|
63
|
+
|
64
|
+
export default {
|
65
|
+
name: 'ThemingExample',
|
66
|
+
components: {
|
67
|
+
VcsLabel,
|
68
|
+
VcsFormSection,
|
69
|
+
VcsFormButton,
|
70
|
+
VcsTextField,
|
71
|
+
VContainer,
|
72
|
+
VCard,
|
73
|
+
VRow,
|
74
|
+
VCol,
|
75
|
+
},
|
76
|
+
setup() {
|
77
|
+
const app = inject('vcsApp');
|
78
|
+
const theming = ref(createVcsThemes());
|
79
|
+
const currentTheme = computed(() => {
|
80
|
+
if (isDark(app)) {
|
81
|
+
return theming.value.dark;
|
82
|
+
} else {
|
83
|
+
return theming.value.light;
|
84
|
+
}
|
85
|
+
});
|
86
|
+
onMounted(() => {
|
87
|
+
app.uiConfig.override({
|
88
|
+
name: 'vuetifyTheme',
|
89
|
+
value: toRaw(theming.value),
|
90
|
+
});
|
91
|
+
});
|
92
|
+
onUnmounted(() => {
|
93
|
+
app.uiConfig.remove(app.uiConfig.getByKey('vuetifyTheme'));
|
94
|
+
});
|
95
|
+
watch(
|
96
|
+
() => theming.value,
|
97
|
+
() => {
|
98
|
+
app.uiConfig.replace({
|
99
|
+
name: 'vuetifyTheme',
|
100
|
+
value: toRaw(theming.value),
|
101
|
+
});
|
102
|
+
},
|
103
|
+
{ deep: true },
|
104
|
+
);
|
105
|
+
return {
|
106
|
+
reset: () => {
|
107
|
+
theming.value = createVcsThemes();
|
108
|
+
},
|
109
|
+
theming,
|
110
|
+
currentTheme,
|
111
|
+
};
|
112
|
+
},
|
113
|
+
};
|
114
|
+
</script>
|
115
|
+
|
116
|
+
<style scoped></style>
|
@@ -0,0 +1,53 @@
|
|
1
|
+
import { createToggleAction, ButtonLocation, WindowSlot } from '@vcmap/ui';
|
2
|
+
import packageJSON from '../package.json';
|
3
|
+
import ThemingExample from './ThemingExample.vue';
|
4
|
+
|
5
|
+
/**
|
6
|
+
* @returns {VcsPlugin}
|
7
|
+
*/
|
8
|
+
export default async () => {
|
9
|
+
return {
|
10
|
+
get name() {
|
11
|
+
return packageJSON.name;
|
12
|
+
},
|
13
|
+
get version() {
|
14
|
+
return packageJSON.version;
|
15
|
+
},
|
16
|
+
get mapVersion() {
|
17
|
+
return packageJSON.mapVersion;
|
18
|
+
},
|
19
|
+
onVcsAppMounted(app) {
|
20
|
+
const { action, destroy } = createToggleAction(
|
21
|
+
{
|
22
|
+
name: 'Theming Example',
|
23
|
+
icon: '$vcsWand',
|
24
|
+
title: 'Theming Example Plugin',
|
25
|
+
},
|
26
|
+
{
|
27
|
+
id: 'theming-example',
|
28
|
+
component: ThemingExample,
|
29
|
+
slot: WindowSlot.DYNAMIC_LEFT,
|
30
|
+
state: {
|
31
|
+
headerTitle: 'Theming Example',
|
32
|
+
headerIcon: '$vcsWand',
|
33
|
+
styles: { width: '350px', height: 'auto' },
|
34
|
+
},
|
35
|
+
},
|
36
|
+
app.windowManager,
|
37
|
+
packageJSON.name,
|
38
|
+
);
|
39
|
+
app.navbarManager.add(
|
40
|
+
{ id: 'theming-example', action },
|
41
|
+
packageJSON.name,
|
42
|
+
ButtonLocation.MENU,
|
43
|
+
);
|
44
|
+
this._destroyAction = destroy;
|
45
|
+
},
|
46
|
+
destroy() {
|
47
|
+
if (this._destroyAction) {
|
48
|
+
this._destroyAction();
|
49
|
+
this._destroyAction = null;
|
50
|
+
}
|
51
|
+
},
|
52
|
+
};
|
53
|
+
};
|
package/plugins/package.json
CHANGED
@@ -2,6 +2,10 @@
|
|
2
2
|
"dependencies": {
|
3
3
|
"@vcmap/print": "https://github.com/virtualcitySYSTEMS/map-print.git#main",
|
4
4
|
"@vcmap/multi-view": "https://github.com/virtualcitySYSTEMS/map-multi-view.git",
|
5
|
-
"@vcmap/transparent-terrain": "https://github.com/virtualcitySYSTEMS/map-transparent-terrain.git"
|
5
|
+
"@vcmap/transparent-terrain": "https://github.com/virtualcitySYSTEMS/map-transparent-terrain.git",
|
6
|
+
"@vcmap/walk": "https://github.com/virtualcitySYSTEMS/map-walk.git#main",
|
7
|
+
"@vcmap/clipping-tool": "https://github.com/virtualcitySYSTEMS/map-clipping-tool.git#main",
|
8
|
+
"@vcmap/viewshed": "https://github.com/virtualcitySYSTEMS/map-viewshed.git#main",
|
9
|
+
"@vcmap/link-button": "https://github.com/virtualcitySYSTEMS/map-link-button.git#main"
|
6
10
|
}
|
7
11
|
}
|
@@ -1,11 +1,8 @@
|
|
1
1
|
/**
|
2
|
-
* @typedef {
|
3
|
-
* @property {string} name
|
4
|
-
* @property {string} [title]
|
5
|
-
* @property {string} [icon]
|
2
|
+
* @typedef {Omit<VcsAction, 'callback'>} ActionOptions
|
6
3
|
*/
|
7
4
|
/**
|
8
|
-
* @typedef {
|
5
|
+
* @typedef {(p?: PointerEvent) => (void | Promise<void>)} ActionCallback
|
9
6
|
*/
|
10
7
|
/**
|
11
8
|
* @typedef {Object} VcsAction
|
@@ -110,12 +107,8 @@ export function getViewpointFromFeature(feature: import("ol").Feature): Viewpoin
|
|
110
107
|
* @returns {VcsAction|null} returns null if the feature does not have a geometry with a valid extent
|
111
108
|
*/
|
112
109
|
export function createZoomToFeatureAction(actionOptions: ActionOptions, feature: import("ol").Feature, mapCollection: import("@vcmap/core").MapCollection): VcsAction | null;
|
113
|
-
export type ActionOptions =
|
114
|
-
|
115
|
-
title?: string | undefined;
|
116
|
-
icon?: string | undefined;
|
117
|
-
};
|
118
|
-
export type ActionCallback = (arg0: PointerEvent) => void | Promise<void>;
|
110
|
+
export type ActionOptions = Omit<VcsAction, 'callback'>;
|
111
|
+
export type ActionCallback = (p?: PointerEvent) => (void | Promise<void>);
|
119
112
|
export type VcsAction = {
|
120
113
|
/**
|
121
114
|
* - reactive and translatable name rendered in overflow
|
@@ -19,14 +19,11 @@ import {
|
|
19
19
|
import SearchComponent from '../search/SearchComponent.vue';
|
20
20
|
|
21
21
|
/**
|
22
|
-
* @typedef {
|
23
|
-
* @property {string} name
|
24
|
-
* @property {string} [title]
|
25
|
-
* @property {string} [icon]
|
22
|
+
* @typedef {Omit<VcsAction, 'callback'>} ActionOptions
|
26
23
|
*/
|
27
24
|
|
28
25
|
/**
|
29
|
-
* @typedef {
|
26
|
+
* @typedef {(p?: PointerEvent) => (void | Promise<void>)} ActionCallback
|
30
27
|
*/
|
31
28
|
|
32
29
|
/**
|
@@ -6,14 +6,14 @@
|
|
6
6
|
* @template {Object} T
|
7
7
|
* @returns {import("./actionHelper.js").VcsAction}
|
8
8
|
*/
|
9
|
-
export function createListItemDeleteAction<T extends Object>(collection: import("@vcmap/core").Collection<T>, item: T, actionOptions?: Partial<import("./actionHelper.js").
|
9
|
+
export function createListItemDeleteAction<T extends Object>(collection: import("@vcmap/core").Collection<T>, item: T, actionOptions?: Partial<Omit<import("./actionHelper.js").VcsAction, "callback">> | undefined): import("./actionHelper.js").VcsAction;
|
10
10
|
/**
|
11
11
|
* Creates an action based on a provided selection
|
12
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/VcsListItemComponent.vue").VcsListItem>>, actionOptions?: (import("./actionHelper.js").
|
16
|
+
export function createListItemBulkAction(selection: import("vue").Ref<Array<import("../components/lists/VcsListItemComponent.vue").VcsListItem>>, actionOptions?: (Omit<import("./actionHelper.js").VcsAction, "callback"> & {
|
17
17
|
callback: import("./actionHelper.js").ActionCallback;
|
18
18
|
}) | undefined): {
|
19
19
|
action: import("vue").UnwrapRef<import("./actionHelper.js").VcsAction>;
|