@vcmap/ui 6.0.0-rc.3 → 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.
Files changed (235) hide show
  1. package/build/buildHelpers.js +60 -11
  2. package/build/buildTypes.js +9 -5
  3. package/build/bundle.js +1 -1
  4. package/build/info/publish.js +25 -31
  5. package/build/lintTypes.js +5 -0
  6. package/config/base.config.json +2 -7
  7. package/config/dev.config.json +11 -1
  8. package/config/projects.config.json +2 -1
  9. package/config/theming.config.json +68 -0
  10. package/config/www.config.json +27 -23
  11. package/dist/assets/@mdi/font/css/{materialdesignicons.min-7a4f6be0.css → materialdesignicons.min-680621ca.css} +1 -1
  12. package/dist/assets/{cesium-cb4dbfba.js → cesium-ccb4cc30.js} +272 -385
  13. package/dist/assets/cesium.js +1 -1
  14. package/dist/assets/{core-72f21835.js → core-e06aa7a6.js} +2313 -2321
  15. package/dist/assets/core.js +1 -1
  16. package/dist/assets/{ol-2d33bc8b.js → ol-e7981d5c.js} +233 -329
  17. package/dist/assets/ol.js +1 -1
  18. package/dist/assets/ui-5dda32d2.css +1 -0
  19. package/dist/assets/{ui-2ab43a16.js → ui-5dda32d2.js} +11344 -11078
  20. package/dist/assets/ui.js +1 -1
  21. package/dist/assets/vue-87bc6efe.js +6083 -0
  22. package/dist/assets/vue.js +1 -1
  23. package/dist/assets/{vuetify-760ced3b.css → vuetify-4c4e4217.css} +2 -2
  24. package/dist/assets/{vuetify-760ced3b.js → vuetify-4c4e4217.js} +8063 -8262
  25. package/dist/assets/vuetify.js +1 -1
  26. package/index.d.ts +27 -17
  27. package/index.js +16 -8
  28. package/package.json +17 -17
  29. package/plugins/@vcmap-show-case/custom-icons-example/README.md +3 -0
  30. package/plugins/@vcmap-show-case/custom-icons-example/assets/imageExample.png +0 -0
  31. package/plugins/@vcmap-show-case/custom-icons-example/assets/svgExample.svg +1 -0
  32. package/plugins/@vcmap-show-case/custom-icons-example/package.json +5 -0
  33. package/plugins/@vcmap-show-case/custom-icons-example/src/CustomIconsExample.vue +90 -0
  34. package/plugins/@vcmap-show-case/custom-icons-example/src/index.js +45 -0
  35. package/plugins/@vcmap-show-case/form-inputs-example/src/FormInputsExample.vue +2 -3
  36. package/plugins/@vcmap-show-case/plugin-editors/src/PluginEditors.vue +11 -7
  37. package/plugins/@vcmap-show-case/project-selector/src/ModulesListComponent.vue +18 -11
  38. package/plugins/@vcmap-show-case/search-example/src/index.js +1 -0
  39. package/plugins/@vcmap-show-case/search-example/src/searchImpl.js +35 -5
  40. package/plugins/@vcmap-show-case/theming-example/README.md +3 -0
  41. package/plugins/@vcmap-show-case/theming-example/package.json +5 -0
  42. package/plugins/@vcmap-show-case/theming-example/src/ThemingExample.vue +116 -0
  43. package/plugins/@vcmap-show-case/theming-example/src/index.js +53 -0
  44. package/plugins/@vcmap-show-case/toolbox-example/src/index.js +2 -1
  45. package/plugins/package.json +7 -23
  46. package/public/assets/@mdi/font/css/materialdesignicons.min.css +1 -1
  47. package/src/actions/StyleSelector.vue +1 -1
  48. package/src/actions/actionHelper.d.ts +4 -11
  49. package/src/actions/actionHelper.js +15 -7
  50. package/src/actions/listActions.d.ts +5 -5
  51. package/src/actions/listActions.js +2 -2
  52. package/src/application/VcsApp.vue +113 -50
  53. package/src/application/VcsApp.vue.d.ts +301 -4
  54. package/src/application/VcsAttributionsFooter.vue.d.ts +1 -1
  55. package/src/application/VcsContainer.vue +27 -10
  56. package/src/application/VcsContainer.vue.d.ts +241 -0
  57. package/src/application/VcsMainMap.vue +7 -7
  58. package/src/application/VcsMainMap.vue.d.ts +2 -2
  59. package/src/application/VcsNavbar.vue +14 -2
  60. package/src/application/VcsNavbar.vue.d.ts +1 -0
  61. package/src/application/VcsSplashScreen.vue +33 -26
  62. package/src/application/VcsTextPageFooter.vue +2 -1
  63. package/src/application/attributionsHelper.d.ts +20 -22
  64. package/src/application/attributionsHelper.js +4 -4
  65. package/src/callback/vcsCallback.d.ts +2 -2
  66. package/src/callback/vcsCallback.js +1 -1
  67. package/src/components/buttons/VcsActionButtonList.vue +61 -6
  68. package/src/components/buttons/VcsActionButtonList.vue.d.ts +28 -0
  69. package/src/components/buttons/VcsButton.vue +2 -4
  70. package/src/components/buttons/VcsButton.vue.d.ts +1 -1
  71. package/src/components/buttons/VcsFormButton.vue +4 -4
  72. package/src/components/buttons/VcsToolButton.vue +4 -2
  73. package/src/components/buttons/VcsToolButton.vue.d.ts +2 -2
  74. package/src/components/composables.d.ts +5 -0
  75. package/src/components/composables.js +79 -9
  76. package/src/components/extent/VcsExtent.vue +10 -6
  77. package/src/components/extent/VcsExtent.vue.d.ts +1 -0
  78. package/src/components/flight/VcsFlightComponent.vue +13 -13
  79. package/src/components/flight/VcsFlightComponent.vue.d.ts +1 -0
  80. package/src/components/form-inputs-controls/VcsCheckbox.vue +8 -3
  81. package/src/components/form-inputs-controls/VcsChipArrayInput.vue +13 -16
  82. package/src/components/form-inputs-controls/VcsChipArrayInput.vue.d.ts +2 -4
  83. package/src/components/form-inputs-controls/VcsCoordinate.vue +4 -4
  84. package/src/components/form-inputs-controls/VcsFileInput.vue +1 -1
  85. package/src/components/form-inputs-controls/VcsLabel.vue +1 -1
  86. package/src/components/form-inputs-controls/VcsRadio.vue +8 -6
  87. package/src/components/form-inputs-controls/VcsRadio.vue.d.ts +1 -0
  88. package/src/components/form-inputs-controls/VcsSelect.vue +2 -5
  89. package/src/components/form-inputs-controls/VcsSlider.vue +5 -6
  90. package/src/components/form-inputs-controls/VcsSlider.vue.d.ts +2 -4
  91. package/src/components/form-inputs-controls/VcsTextArea.vue +2 -5
  92. package/src/components/form-inputs-controls/VcsTextField.vue +24 -1
  93. package/src/components/form-inputs-controls/VcsTextField.vue.d.ts +11 -1
  94. package/src/components/form-inputs-controls/VcsWizard.vue +3 -3
  95. package/src/components/form-inputs-controls/VcsWizardStep.vue +6 -5
  96. package/src/components/form-inputs-controls/vcsTextField.scss +8 -5
  97. package/src/components/form-output/VcsFormattedNumber.vue +7 -5
  98. package/src/components/form-output/VcsMarkdown.vue +15 -12
  99. package/src/components/form-output/VcsMarkdown.vue.d.ts +1 -0
  100. package/src/components/form-output/markdownHelper.d.ts +30 -0
  101. package/src/components/form-output/markdownHelper.js +398 -0
  102. package/src/components/import/VcsFileDrop.vue +8 -5
  103. package/src/components/import/VcsImportComponent.vue +8 -4
  104. package/src/components/import/VcsImportComponent.vue.d.ts +1 -2
  105. package/src/components/lists/VcsActionList.vue +6 -6
  106. package/src/components/lists/VcsList.vue +22 -37
  107. package/src/components/lists/VcsList.vue.d.ts +14 -55
  108. package/src/components/lists/{VcsListItem.vue → VcsListItemComponent.vue} +37 -11
  109. package/src/components/lists/VcsListItemComponent.vue.d.ts +79 -0
  110. package/src/components/lists/VcsTreeview.vue +95 -26
  111. package/src/components/lists/VcsTreeview.vue.d.ts +16 -3
  112. package/src/components/lists/VcsTreeviewSearchbar.vue +16 -5
  113. package/src/components/lists/VcsTreeviewSearchbar.vue.d.ts +3 -1
  114. package/src/components/lists/VcsTreeviewTitle.vue +36 -0
  115. package/src/components/modelHelper.d.ts +10 -8
  116. package/src/components/modelHelper.js +8 -6
  117. package/src/components/notification/VcsHelp.vue +6 -7
  118. package/src/components/notification/VcsHelp.vue.d.ts +0 -8
  119. package/src/components/plugins/AbstractConfigEditor.vue +1 -22
  120. package/src/components/plugins/AbstractConfigEditor.vue.d.ts +6 -29
  121. package/src/components/section/VcsExpansionPanel.vue +9 -3
  122. package/src/components/section/VcsExpansionPanel.vue.d.ts +2 -2
  123. package/src/components/section/VcsFormSection.vue +13 -7
  124. package/src/components/section/VcsFormSection.vue.d.ts +2 -3
  125. package/src/components/style/VcsImageSelector.vue +14 -6
  126. package/src/components/style/VcsImageSelector.vue.d.ts +1 -0
  127. package/src/components/style/VcsStrokeSelector.vue +5 -2
  128. package/src/components/style/VcsStrokeSelector.vue.d.ts +1 -0
  129. package/src/components/style/VcsTextMenu.vue +3 -3
  130. package/src/components/style/VcsVectorStyleComponent.vue +1 -1
  131. package/src/components/tables/VcsDataTable.vue +42 -32
  132. package/src/components/tables/VcsDataTable.vue.d.ts +1 -0
  133. package/src/components/tables/VcsTable.vue +45 -62
  134. package/src/components/tables/VcsTable.vue.d.ts +30 -17
  135. package/src/components/tables/VcsTableCell.vue +72 -0
  136. package/src/components/tables/VcsTableCell.vue.d.ts +13 -0
  137. package/src/components/vector-properties/VcsFeatureEditingWindow.vue +6 -5
  138. package/src/components/vector-properties/VcsFeatureTransforms.vue +5 -0
  139. package/src/components/vector-properties/VcsVectorPropertiesComponent.vue +42 -31
  140. package/src/components/vector-properties/VcsVectorPropertiesComponent.vue.d.ts +1 -0
  141. package/src/components/viewpoint/VcsViewpointComponent.vue +14 -11
  142. package/src/components/viewpoint/VcsViewpointComponent.vue.d.ts +1 -0
  143. package/src/components/viewpoint/VcsViewpointEditor.vue +2 -2
  144. package/src/contentTree/LayerTree.vue +9 -27
  145. package/src/contentTree/LayerTree.vue.d.ts +1 -1
  146. package/src/contentTree/contentTreeCollection.d.ts +1 -0
  147. package/src/contentTree/contentTreeCollection.js +45 -11
  148. package/src/contentTree/contentTreeItem.d.ts +2 -2
  149. package/src/contentTree/contentTreeItem.js +1 -1
  150. package/src/featureInfo/BalloonComponent.vue +32 -25
  151. package/src/featureInfo/BalloonComponent.vue.d.ts +1 -0
  152. package/src/featureInfo/MarkdownBalloonComponent.vue +4 -2
  153. package/src/featureInfo/MarkdownBalloonComponent.vue.d.ts +2 -2
  154. package/src/featureInfo/abstractFeatureInfoView.d.ts +10 -4
  155. package/src/featureInfo/abstractFeatureInfoView.js +19 -11
  156. package/src/featureInfo/featureInfo.d.ts +7 -7
  157. package/src/featureInfo/featureInfo.js +51 -31
  158. package/src/featureInfo/iframeFeatureInfoView.d.ts +8 -2
  159. package/src/featureInfo/iframeFeatureInfoView.js +15 -5
  160. package/src/featureInfo/markdownBalloonFeatureInfoView.d.ts +1 -1
  161. package/src/featureInfo/markdownBalloonFeatureInfoView.js +5 -5
  162. package/src/featureInfo/markdownFeatureInfoView.d.ts +1 -1
  163. package/src/featureInfo/markdownFeatureInfoView.js +9 -11
  164. package/src/featureInfo/tableFeatureInfoView.js +13 -4
  165. package/src/i18n/i18nCollection.d.ts +9 -15
  166. package/src/i18n/i18nCollection.js +3 -3
  167. package/src/legend/VcsLegend.vue +6 -2
  168. package/src/legend/VcsLegend.vue.d.ts +1 -0
  169. package/src/manager/collectionManager/CollectionComponentList.vue +2 -2
  170. package/src/manager/collectionManager/CollectionComponentList.vue.d.ts +2 -2
  171. package/src/manager/collectionManager/categoryManager.d.ts +1 -1
  172. package/src/manager/collectionManager/collectionComponentClass.d.ts +3 -3
  173. package/src/manager/collectionManager/collectionComponentClass.js +6 -6
  174. package/src/manager/collectionManager/collectionManager.d.ts +1 -1
  175. package/src/manager/collectionManager/editorCollectionComponentClass.js +2 -1
  176. package/src/manager/panel/PanelComponent.vue +2 -9
  177. package/src/manager/panel/PanelManagerComponent.vue +7 -3
  178. package/src/manager/panel/panelHelper.js +3 -3
  179. package/src/manager/panel/panelManager.d.ts +9 -1
  180. package/src/manager/panel/panelManager.js +15 -3
  181. package/src/manager/toolbox/GroupToolboxComponent.vue +11 -5
  182. package/src/manager/toolbox/GroupToolboxComponent.vue.d.ts +1 -0
  183. package/src/manager/toolbox/SelectToolboxComponent.vue +11 -6
  184. package/src/manager/toolbox/SelectToolboxComponent.vue.d.ts +1 -0
  185. package/src/manager/toolbox/{ToolboxManager.vue → ToolboxManagerComponent.vue} +13 -7
  186. package/src/manager/toolbox/{ToolboxManager.vue.d.ts → ToolboxManagerComponent.vue.d.ts} +1 -0
  187. package/src/manager/window/WindowComponent.vue +12 -8
  188. package/src/manager/window/WindowComponentHeader.vue +33 -9
  189. package/src/manager/window/WindowComponentHeader.vue.d.ts +3 -0
  190. package/src/manager/window/WindowManager.vue +2 -2
  191. package/src/manager/window/windowManager.d.ts +6 -6
  192. package/src/manager/window/windowManager.js +3 -3
  193. package/src/navigation/MapNavigation.vue +20 -0
  194. package/src/navigation/OrientationToolsButton.vue +2 -4
  195. package/src/navigation/TiltSlider.vue +3 -5
  196. package/src/navigation/locatorHelper.js +1 -1
  197. package/src/navigation/overviewMap.js +1 -1
  198. package/src/notifier/NotifierComponent.vue +18 -15
  199. package/src/search/ResultItem.vue +18 -6
  200. package/src/search/ResultsComponent.vue +31 -20
  201. package/src/search/ResultsComponent.vue.d.ts +2 -1
  202. package/src/search/SearchComponent.vue +11 -15
  203. package/src/search/SearchComponent.vue.d.ts +1 -0
  204. package/src/siteConfig.js +8 -8
  205. package/src/styles/_typography.scss +0 -2
  206. package/src/styles/main.scss +0 -4
  207. package/src/styles/vcsList.scss +1 -1
  208. package/src/uiConfig.d.ts +311 -7
  209. package/src/uiConfig.js +30 -17
  210. package/src/vcsUiApp.d.ts +48 -63
  211. package/src/vcsUiApp.js +44 -37
  212. package/src/vuePlugins/vuetify.d.ts +88 -62
  213. package/src/vuePlugins/vuetify.js +119 -20
  214. package/dist/assets/ui-2ab43a16.css +0 -1
  215. package/dist/assets/vue-03b265aa.js +0 -6096
  216. package/plugins/@vcmap-show-case/theme-changer/README.md +0 -23
  217. package/plugins/@vcmap-show-case/theme-changer/config.json +0 -69
  218. package/plugins/@vcmap-show-case/theme-changer/package.json +0 -11
  219. package/plugins/@vcmap-show-case/theme-changer/src/ThemeChangerComponent.vue +0 -120
  220. package/plugins/@vcmap-show-case/theme-changer/src/index.js +0 -108
  221. package/src/application/markdownHelper.d.ts +0 -12
  222. package/src/application/markdownHelper.js +0 -70
  223. package/src/components/lists/VcsListItem.vue.d.ts +0 -27
  224. package/src/components/lists/VcsTreeviewLeaf.vue +0 -83
  225. package/src/components/notification/VcsTooltip.vue +0 -156
  226. package/src/components/notification/VcsTooltip.vue.d.ts +0 -27
  227. package/src/featureInfo/MarkdownComponent.vue +0 -16
  228. package/src/featureInfo/MarkdownComponent.vue.d.ts +0 -7
  229. package/src/styles/_theming.scss +0 -73
  230. package/src/styles/settings.scss +0 -6
  231. package/src/styles/shades.scss +0 -4
  232. package/src/styles/variables.scss +0 -140
  233. package/src/styles/vcsFont.scss +0 -2
  234. package/src/styles/vcsGrid.scss +0 -3
  235. /package/src/components/lists/{VcsTreeviewLeaf.vue.d.ts → VcsTreeviewTitle.vue.d.ts} +0 -0
@@ -1 +1 @@
1
- export * from "./vuetify-760ced3b.js";
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 { i18nPluginSymbol } from "./src/i18n/i18nCollection.js";
106
- export type * from "./src/i18n/i18nCollection.d.ts";
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";
@@ -116,8 +118,6 @@ export { default as VcsFormButton } from "./src/components/buttons/VcsFormButton
116
118
  export type * from "./src/components/buttons/VcsFormButton.vue.d.ts";
117
119
  export { default as VcsActionButtonList } from "./src/components/buttons/VcsActionButtonList.vue";
118
120
  export type * from "./src/components/buttons/VcsActionButtonList.vue.d.ts";
119
- export { default as VcsTooltip } from "./src/components/notification/VcsTooltip.vue";
120
- export type * from "./src/components/notification/VcsTooltip.vue.d.ts";
121
121
  export { default as VcsHelp } from "./src/components/notification/VcsHelp.vue";
122
122
  export type * from "./src/components/notification/VcsHelp.vue.d.ts";
123
123
  export { default as VcsTable } from "./src/components/tables/VcsTable.vue";
@@ -160,12 +160,12 @@ export { default as VcsTextPage } from "./src/application/VcsTextPage.vue";
160
160
  export type * from "./src/application/VcsTextPage.vue.d.ts";
161
161
  export { default as VcsList } from "./src/components/lists/VcsList.vue";
162
162
  export type * from "./src/components/lists/VcsList.vue.d.ts";
163
- export { default as VcsListItem } from "./src/components/lists/VcsListItem.vue";
164
- export type * from "./src/components/lists/VcsListItem.vue.d.ts";
163
+ export { default as VcsListItemComponent } from "./src/components/lists/VcsListItemComponent.vue";
164
+ export type * from "./src/components/lists/VcsListItemComponent.vue.d.ts";
165
165
  export { default as VcsTreeview } from "./src/components/lists/VcsTreeview.vue";
166
166
  export type * from "./src/components/lists/VcsTreeview.vue.d.ts";
167
- export { default as VcsTreeviewLeaf } from "./src/components/lists/VcsTreeviewLeaf.vue";
168
- export type * from "./src/components/lists/VcsTreeviewLeaf.vue.d.ts";
167
+ export { default as VcsTreeviewTitle } from "./src/components/lists/VcsTreeviewTitle.vue";
168
+ export type * from "./src/components/lists/VcsTreeviewTitle.vue.d.ts";
169
169
  export { default as VcsTreeviewSearchbar } from "./src/components/lists/VcsTreeviewSearchbar.vue";
170
170
  export type * from "./src/components/lists/VcsTreeviewSearchbar.vue.d.ts";
171
171
  export { default as VcsBadge } from "./src/components/notification/VcsBadge.vue";
@@ -216,14 +216,18 @@ export { default as VcsExpansionPanel } from "./src/components/section/VcsExpans
216
216
  export type * from "./src/components/section/VcsExpansionPanel.vue.d.ts";
217
217
  export { default as VcsSplashScreen } from "./src/application/VcsSplashScreen.vue";
218
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";
219
221
  export * from "./src/components/attrsHelpers.js";
220
222
  export type * from "./src/components/attrsHelpers.d.ts";
221
223
  export * from "./src/components/modelHelper.js";
222
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";
223
227
  export { createMapButtonAction, createToggleAction, createOverviewMapAction, createModalAction, createLinkAction, createGoToViewpointAction, createZoomToFeatureAction } from "./src/actions/actionHelper.js";
224
228
  export type * from "./src/actions/actionHelper.d.ts";
225
- export { parseAndSanitizeMarkdown, replaceAttributes } from "./src/application/markdownHelper.js";
226
- export type * from "./src/application/markdownHelper.d.ts";
229
+ export { parseAndSanitizeMarkdown, renderTemplate } from "./src/components/form-output/markdownHelper.js";
230
+ export type * from "./src/components/form-output/markdownHelper.d.ts";
227
231
  export { createStateRefAction, StateActionState } from "./src/actions/stateRefAction.js";
228
232
  export type * from "./src/actions/stateRefAction.d.ts";
229
233
  export { createLayerToggleAction, createZoomToExtentAction, createExtentFeatureAction, setupExtentComponentActions } from "./src/actions/extentActions.js";
@@ -234,7 +238,7 @@ export { createListItemDeleteAction, createListItemBulkAction, createListExportA
234
238
  export type * from "./src/actions/listActions.d.ts";
235
239
  export { default as VcsCallback, executeCallbacks } from "./src/callback/vcsCallback.js";
236
240
  export type * from "./src/callback/vcsCallback.d.ts";
237
- export { default as VcsApp, setupMapNavbar, setupPluginMountedListeners, setupCategoryManagerWindow } from "./src/application/VcsApp.vue";
241
+ export { default as VcsApp, setupMapNavbar, setupPluginMountedListeners, setupCategoryManagerWindow, categoryManagerWindowId } from "./src/application/VcsApp.vue";
238
242
  export type * from "./src/application/VcsApp.vue.d.ts";
239
243
  export { default as ContentTreeCollection, createContentTreeCollection } from "./src/contentTree/contentTreeCollection.js";
240
244
  export type * from "./src/contentTree/contentTreeCollection.d.ts";
@@ -266,7 +270,9 @@ export { getWindowComponentOptions, default as OverviewMap } from "./src/navigat
266
270
  export type * from "./src/navigation/overviewMap.d.ts";
267
271
  export { createVueI18n, setupI18n } from "./src/vuePlugins/i18n.js";
268
272
  export type * from "./src/vuePlugins/i18n.d.ts";
269
- export { createVcsThemes, createVcsVuetify, getColorByKey, getDefaultPrimaryColor, useItemHeight } from "./src/vuePlugins/vuetify.js";
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";
270
276
  export type * from "./src/vuePlugins/vuetify.d.ts";
271
277
  export { downloadURI, downloadBlob, downloadText, downloadCanvas } from "./src/downloadHelper.js";
272
278
  export type * from "./src/downloadHelper.d.ts";
@@ -290,11 +296,15 @@ export { default as VcsFeatureEditingWindow, EditorTransformationIcons, getAllow
290
296
  export type * from "./src/components/vector-properties/VcsFeatureEditingWindow.vue.d.ts";
291
297
 
292
298
  declare module 'vue' {
293
- type ReplaceFirstParam<TParams extends readonly any[], TReplace> = {
294
- [K in keyof TParams]: K extends "0" ? TReplace : TParams[K]
295
- }
296
-
297
299
  interface ComponentCustomProperties {
298
- $st: (...params: ReplaceFirstParam<Parameters<import("vue-i18n").ComposerTranslation>, string | null | undefined>) => ReturnType<import("vue-i18n").ComposerTranslation>
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;
299
309
  }
300
310
  }
package/index.js CHANGED
@@ -13,8 +13,8 @@ export {
13
13
  } from './src/actions/actionHelper.js';
14
14
  export {
15
15
  parseAndSanitizeMarkdown,
16
- replaceAttributes,
17
- } from './src/application/markdownHelper.js';
16
+ renderTemplate,
17
+ } from './src/components/form-output/markdownHelper.js';
18
18
  export {
19
19
  createStateRefAction,
20
20
  StateActionState,
@@ -58,6 +58,7 @@ export {
58
58
  setupMapNavbar,
59
59
  setupPluginMountedListeners,
60
60
  setupCategoryManagerWindow,
61
+ categoryManagerWindowId,
61
62
  } from './src/application/VcsApp.vue';
62
63
  export { default as VcsAppWrapper } from './src/application/VcsAppWrapper.vue';
63
64
  export { default as VcsMap } from './src/application/VcsMap.vue';
@@ -123,6 +124,7 @@ export {
123
124
  ToolboxType,
124
125
  defaultToolboxName,
125
126
  } from './src/manager/toolbox/toolboxManager.js';
127
+ export { default as ToolboxManagerComponent } from './src/manager/toolbox/ToolboxManagerComponent.vue';
126
128
  export { default as CategoryManager } from './src/manager/collectionManager/categoryManager.js';
127
129
  export { default as CollectionManager } from './src/manager/collectionManager/collectionManager.js';
128
130
  export { default as CollectionManagerComponent } from './src/manager/collectionManager/CollectionManager.vue';
@@ -184,13 +186,18 @@ export { default as VcsCompass } from './src/navigation/VcsCompass.vue';
184
186
  export { default as VcsZoomButton } from './src/navigation/VcsZoomButton.vue';
185
187
  //
186
188
  export { createVueI18n, setupI18n } from './src/vuePlugins/i18n.js';
187
- export { i18nPluginSymbol } from './src/i18n/i18nCollection.js';
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
188
194
  export {
189
195
  createVcsThemes,
190
196
  createVcsVuetify,
191
- getColorByKey,
197
+ isDark,
192
198
  getDefaultPrimaryColor,
193
- useItemHeight,
199
+ getColorByKey,
200
+ useFontSize,
194
201
  } from './src/vuePlugins/vuetify.js';
195
202
  export {
196
203
  downloadURI,
@@ -231,7 +238,6 @@ export { default as VcsButton } from './src/components/buttons/VcsButton.vue';
231
238
  export { default as VcsToolButton } from './src/components/buttons/VcsToolButton.vue';
232
239
  export { default as VcsFormButton } from './src/components/buttons/VcsFormButton.vue';
233
240
  export { default as VcsActionButtonList } from './src/components/buttons/VcsActionButtonList.vue';
234
- export { default as VcsTooltip } from './src/components/notification/VcsTooltip.vue';
235
241
  export { default as VcsHelp } from './src/components/notification/VcsHelp.vue';
236
242
  export { default as VcsTable } from './src/components/tables/VcsTable.vue';
237
243
  export { default as VcsDataTable } from './src/components/tables/VcsDataTable.vue';
@@ -258,9 +264,9 @@ export {
258
264
  validateActions,
259
265
  } from './src/components/lists/VcsActionList.vue';
260
266
  export { default as VcsList } from './src/components/lists/VcsList.vue';
261
- export { default as VcsListItem } from './src/components/lists/VcsListItem.vue';
267
+ export { default as VcsListItemComponent } from './src/components/lists/VcsListItemComponent.vue';
262
268
  export { default as VcsTreeview } from './src/components/lists/VcsTreeview.vue';
263
- export { default as VcsTreeviewLeaf } from './src/components/lists/VcsTreeviewLeaf.vue';
269
+ export { default as VcsTreeviewTitle } from './src/components/lists/VcsTreeviewTitle.vue';
264
270
  export { default as VcsTreeviewSearchbar } from './src/components/lists/VcsTreeviewSearchbar.vue';
265
271
  export { default as VcsBadge } from './src/components/notification/VcsBadge.vue';
266
272
  export { default as VcsDefaultLogo } from './src/logo.svg';
@@ -305,5 +311,7 @@ export { default as VcsFileDrop } from './src/components/import/VcsFileDrop.vue'
305
311
  export { default as VcsImportComponent } from './src/components/import/VcsImportComponent.vue';
306
312
  export { default as VcsExpansionPanel } from './src/components/section/VcsExpansionPanel.vue';
307
313
  export { default as VcsSplashScreen } from './src/application/VcsSplashScreen.vue';
314
+ export * from './src/application/attributionsHelper.js';
308
315
  export * from './src/components/attrsHelpers.js';
309
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",
3
+ "version": "6.0.0-rc.6",
4
4
  "author": "Virtual City Systems",
5
5
  "license": "MIT",
6
6
  "scripts": {
@@ -50,42 +50,42 @@
50
50
  "@vcsuite/parsers": "^1.0.3",
51
51
  "dompurify": "^3.1.6",
52
52
  "fast-deep-equal": "^3.1.3",
53
- "marked": "^13.0.2",
54
- "semver": "^7.5.4",
53
+ "marked": "^14.0.0",
54
+ "semver": "^7.6.3",
55
55
  "uuid": "^10.0.0",
56
56
  "vue-i18n": "^9.13.1"
57
57
  },
58
58
  "peerDependencies": {
59
59
  "@vcmap-cesium/engine": "^10.0.1",
60
- "@vcmap/core": "6.0.0-rc.3",
60
+ "@vcmap/core": "^6.0.0-rc.5",
61
61
  "ol": "^10.0.0",
62
- "vue": "~3.4.27",
63
- "vuetify": "^3.6.13"
62
+ "vue": "~3.4.38",
63
+ "vuetify": "^3.7.1"
64
64
  },
65
65
  "devDependencies": {
66
66
  "@histoire/plugin-vue": "^0.17.17",
67
67
  "@vcmap/rollup-plugin-vcs-ol": "^1.0.2",
68
68
  "@vcsuite/eslint-config": "^3.0.5",
69
- "@vitejs/plugin-vue": "^5.0.4",
70
- "@vitest/coverage-v8": "^1.6.0",
69
+ "@vitejs/plugin-vue": "^5.1.2",
70
+ "@vitest/coverage-v8": "^2.0.5",
71
71
  "@vue/test-utils": "^2.4.6",
72
72
  "eslint-import-resolver-alias": "^1.1.2",
73
73
  "eslint-plugin-vuetify": "^2.4.0",
74
74
  "histoire": "^0.17.17",
75
75
  "jest-canvas-mock": "^2.5.2",
76
- "jsdoc": "^3.6.7",
76
+ "jsdoc": "^4.0.3",
77
77
  "jsdoc-plugin-intersection": "^1.0.4",
78
- "jsdoc-plugin-typescript": "^2.0.6",
79
- "jsdom": "^22.1.0",
78
+ "jsdoc-plugin-typescript": "^2.2.1",
79
+ "jsdom": "^24.1.1",
80
80
  "resize-observer-polyfill": "1.5.1",
81
81
  "rollup-plugin-strip-pragma": "^1.0.0",
82
- "sass": "^1.77.1",
83
- "tar": "^6.1.14",
82
+ "sass": "^1.77.8",
83
+ "tar": "^7.4.3",
84
84
  "typescript": "^5.4.5",
85
- "vite": "^5.2.11",
86
- "vite-plugin-vuetify": "^2.0.3",
87
- "vitest": "^1.6.0",
88
- "vue-tsc": "^2.0.17"
85
+ "vite": "^5.4.1",
86
+ "vite-plugin-vuetify": "^2.0.4",
87
+ "vitest": "^2.0.5",
88
+ "vue-tsc": "^2.0.29"
89
89
  },
90
90
  "stylelint": {
91
91
  "extends": "stylelint-config-standard",
@@ -0,0 +1,3 @@
1
+ # Custom icons example
2
+
3
+ This is a show-case plugin demonstrating the usage of [custom icons](../../../documentation/CUSTOM_ICONS.md)
@@ -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,5 @@
1
+ {
2
+ "name": "@vcmap-show-case/custom-icon-tester",
3
+ "version": "1.0.0",
4
+ "mapVersion": "^6.0"
5
+ }
@@ -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
+ }
@@ -77,7 +77,7 @@
77
77
  :disabled="disabled"
78
78
  id="arrayInput"
79
79
  type="number"
80
- v-model="array"
80
+ v-model="state.arrayInput"
81
81
  :rules="[arrayTest]"
82
82
  />
83
83
  </v-col>
@@ -272,7 +272,7 @@
272
272
  />
273
273
  </v-col>
274
274
  </v-row>
275
- <VcsCoordinate :disabled="disabled" v-model="array" />
275
+ <VcsCoordinate :disabled="disabled" v-model="state.arrayInput" />
276
276
  </v-container>
277
277
  </template>
278
278
  </VcsFormSection>
@@ -556,7 +556,6 @@
556
556
  return {
557
557
  // no object-destruction of reactive objects! or use toRef()
558
558
  state: plugin.state,
559
- array: ref([1, 2, 3]),
560
559
  // do not put the whole config here, since it would become reactive
561
560
  selectOptions: plugin.config.selectOptions,
562
561
  form,
@@ -1,15 +1,21 @@
1
1
  <template>
2
- <VcsList :items="plugins" :show-title="false" />
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
- message: `${plugin.name}: ${JSON.stringify(
45
- config,
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',
@@ -10,29 +10,36 @@
10
10
  @click="toggle(module)"
11
11
  >
12
12
  {{ module.name || module.configUrl }}
13
- <VcsTooltip
13
+ <v-icon
14
14
  v-if="module.description && toggleable"
15
- :tooltip="module.description"
15
+ right
16
+ v-bind="{ ...$attrs, ...props }"
16
17
  >
17
- <template #activator="{ props }">
18
- <v-icon right v-bind="{ ...$attrs, ...props }">
19
- mdi-help-circle
20
- </v-icon>
21
- </template>
22
- </VcsTooltip>
18
+ mdi-help-circle
19
+ </v-icon>
20
+ <v-tooltip
21
+ v-if="module.description && toggleable"
22
+ :text="module.description"
23
+ activator="parent"
24
+ />
23
25
  </v-chip>
24
26
  </v-list>
25
27
  </v-container>
26
28
  </template>
27
29
 
28
30
  <script>
29
- import { VcsTooltip } from '@vcmap/ui';
30
- import { VChip, VContainer, VIcon, VList } from 'vuetify/components';
31
+ import {
32
+ VChip,
33
+ VContainer,
34
+ VIcon,
35
+ VList,
36
+ VTooltip,
37
+ } from 'vuetify/components';
31
38
 
32
39
  export default {
33
40
  name: 'ModulesListComponent',
34
41
  components: {
35
- VcsTooltip,
42
+ VTooltip,
36
43
  VContainer,
37
44
  VList,
38
45
  VChip,
@@ -65,6 +65,7 @@ export default function searchExample(config) {
65
65
  config.lines ?? defaultLines,
66
66
  config.withIcon ?? true,
67
67
  config.withPOI ?? true,
68
+ config.withActions ?? true,
68
69
  );
69
70
  app.search.add(impl, name);
70
71
  },
@@ -36,17 +36,42 @@ function randomPOI(title) {
36
36
  return feature;
37
37
  }
38
38
 
39
+ function getRandomIcon() {
40
+ const keys = Object.keys(Icons);
41
+ const index = Math.floor(keys.length * Math.random());
42
+ return `$${keys[index]}`;
43
+ }
44
+
39
45
  /**
40
46
  * @param {string} line
41
47
  * @param {boolean} withIcon
42
48
  * @param {boolean} withPOI
49
+ * @param {boolean} withActions
43
50
  * @returns {import("@vcmap/ui").ResultItem}
44
51
  */
45
- function lineToResultItem(line, withIcon, withPOI) {
52
+ function lineToResultItem(line, withIcon, withPOI, withActions) {
46
53
  let icon;
47
54
  if (withIcon) {
48
- const icons = Object.keys(Icons);
49
- icon = icons[Math.floor(Math.random() * icons.length)];
55
+ icon = getRandomIcon();
56
+ }
57
+
58
+ let actions;
59
+ if (withActions) {
60
+ actions = [
61
+ {
62
+ name: 'action-1',
63
+ icon,
64
+ callback() {
65
+ console.log('Action 1');
66
+ },
67
+ },
68
+ {
69
+ name: 'action-2',
70
+ callback() {
71
+ console.log('Action 2');
72
+ },
73
+ },
74
+ ];
50
75
  }
51
76
 
52
77
  let clicked;
@@ -64,6 +89,7 @@ function lineToResultItem(line, withIcon, withPOI) {
64
89
  icon,
65
90
  clicked,
66
91
  feature,
92
+ actions,
67
93
  };
68
94
  }
69
95
 
@@ -75,19 +101,23 @@ export default class SearchImpl {
75
101
  * @param {string[]} lines
76
102
  * @param {boolean} withIcon
77
103
  * @param {boolean} withPOI
104
+ * @param {boolean} withActions
78
105
  */
79
- constructor(lines, withIcon, withPOI) {
106
+ constructor(lines, withIcon, withPOI, withActions) {
80
107
  this.name = name;
81
108
  this.lines = lines;
82
109
  this.withIcon = withIcon;
83
110
  this.withPOI = withPOI;
111
+ this.withActions = withActions;
84
112
  }
85
113
 
86
114
  search(query) {
87
115
  return Promise.resolve(
88
116
  this.lines
89
117
  .filter((l) => l.toLowerCase().includes(query.toLowerCase()))
90
- .map((line) => lineToResultItem(line, this.withIcon, this.withPOI)),
118
+ .map((line) =>
119
+ lineToResultItem(line, this.withIcon, this.withPOI, this.withActions),
120
+ ),
91
121
  );
92
122
  }
93
123
 
@@ -0,0 +1,3 @@
1
+ # Theming Example
2
+
3
+ This is a show-case plugin demonstrating the different Theming options.
@@ -0,0 +1,5 @@
1
+ {
2
+ "name": "@vcmap-show-case/theming-example",
3
+ "version": "1.0.0",
4
+ "mapVersion": "^6.0.0"
5
+ }