@vcmap/ui 6.0.0-rc.2 → 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.
Files changed (278) hide show
  1. package/build/build.js +40 -60
  2. package/build/buildHelpers.js +62 -19
  3. package/build/bundle.js +1 -1
  4. package/build/info/conf.json +1 -1
  5. package/build/info/publish.js +25 -31
  6. package/build/lintTypes.js +5 -0
  7. package/config/base.config.json +2 -1
  8. package/config/dev.config.json +7 -1
  9. package/config/projects.config.json +2 -1
  10. package/config/splashscreen.config.json +45 -0
  11. package/config/www.config.json +25 -22
  12. package/dist/.htaccess +7 -0
  13. package/dist/assets/@mdi/font/README.md +25 -0
  14. package/dist/assets/@mdi/font/css/materialdesignicons.min-680621ca.css +3 -0
  15. package/dist/assets/@mdi/font/css/materialdesignicons.min.css.map +16 -0
  16. package/dist/assets/@mdi/font/fonts/materialdesignicons-webfont.woff2 +0 -0
  17. package/dist/assets/{cesium.0b750d.js → cesium-126f111a.js} +272 -385
  18. package/dist/assets/cesium.js +1 -1
  19. package/dist/assets/{core.cbf44a.js → core-1c8b8674.js} +2015 -2019
  20. package/dist/assets/core.js +1 -1
  21. package/dist/assets/{ol.86e93c.js → ol-27f9b3f3.js} +42521 -44394
  22. package/dist/assets/ol.js +1 -1
  23. package/dist/assets/ui-7214428e.css +1 -0
  24. package/dist/assets/{ui.7c276c.js → ui-7214428e.js} +13968 -13907
  25. package/dist/assets/ui.js +1 -1
  26. package/dist/assets/vue-c78a5f76.js +6083 -0
  27. package/dist/assets/vue.js +1 -1
  28. package/dist/assets/{vuetify.4d18fe.css → vuetify-88a2fabe.css} +2 -2
  29. package/dist/assets/{vuetify.4d18fe.js → vuetify-88a2fabe.js} +7793 -7940
  30. package/dist/assets/vuetify.js +1 -1
  31. package/dist/index.html +11 -10
  32. package/index.d.ts +11 -11
  33. package/index.html +5 -5
  34. package/index.js +9 -7
  35. package/lib/olLib.js +84 -23
  36. package/package.json +19 -19
  37. package/plugins/@vcmap-show-case/flight-component-example/src/FlightExample.vue +41 -1
  38. package/plugins/@vcmap-show-case/form-inputs-example/src/FormInputsExample.vue +71 -32
  39. package/plugins/@vcmap-show-case/form-inputs-example/src/exampleActions.js +7 -11
  40. package/plugins/@vcmap-show-case/form-inputs-example/src/index.js +2 -2
  41. package/plugins/@vcmap-show-case/list-example/src/ListExample.vue +21 -8
  42. package/plugins/@vcmap-show-case/project-selector/src/ModulesListComponent.vue +18 -11
  43. package/plugins/@vcmap-show-case/search-example/src/index.js +1 -0
  44. package/plugins/@vcmap-show-case/search-example/src/searchImpl.js +35 -5
  45. package/plugins/@vcmap-show-case/style-input-example/src/StyleExample.vue +29 -90
  46. package/plugins/@vcmap-show-case/toolbox-example/src/index.js +2 -1
  47. package/plugins/package.json +3 -23
  48. package/public/assets/@mdi/font/README.md +25 -0
  49. package/public/assets/@mdi/font/css/materialdesignicons.min.css +2 -2
  50. package/public/assets/@mdi/font/css/materialdesignicons.min.css.map +16 -0
  51. package/public/assets/@mdi/font/fonts/materialdesignicons-webfont.woff2 +0 -0
  52. package/src/actions/StyleSelector.vue +1 -1
  53. package/src/actions/actionHelper.js +33 -22
  54. package/src/actions/flightActions.js +5 -5
  55. package/src/actions/listActions.d.ts +4 -11
  56. package/src/actions/listActions.js +6 -22
  57. package/src/actions/stateRefAction.js +2 -2
  58. package/src/application/VcsApp.vue +147 -57
  59. package/src/application/VcsApp.vue.d.ts +298 -4
  60. package/src/application/VcsAttributions.vue +2 -13
  61. package/src/application/VcsAttributionsFooter.vue +10 -11
  62. package/src/application/VcsContainer.vue +26 -9
  63. package/src/application/VcsContainer.vue.d.ts +237 -0
  64. package/src/application/VcsMainMap.vue +7 -7
  65. package/src/application/VcsMainMap.vue.d.ts +2 -2
  66. package/src/application/VcsNavbar.vue +5 -1
  67. package/src/application/VcsPositionDisplay.vue +8 -23
  68. package/src/application/VcsPositionDisplay.vue.d.ts +0 -1
  69. package/src/application/VcsSettings.vue +10 -17
  70. package/src/application/VcsSplashScreen.vue +21 -40
  71. package/src/application/VcsSplashScreen.vue.d.ts +0 -2
  72. package/src/application/VcsTextPage.vue +12 -43
  73. package/src/application/VcsTextPage.vue.d.ts +4 -8
  74. package/src/application/VcsTextPageFooter.vue +23 -40
  75. package/src/components/buttons/VcsActionButtonList.vue +59 -3
  76. package/src/components/buttons/VcsActionButtonList.vue.d.ts +28 -0
  77. package/src/components/extent/VcsExtentEditor.vue +1 -1
  78. package/src/components/flight/VcsFlightAnchorsComponent.vue +63 -36
  79. package/src/components/flight/VcsFlightComponent.vue +16 -21
  80. package/src/components/flight/VcsFlightPlayer.vue +27 -5
  81. package/src/components/form-inputs-controls/VcsCheckbox.vue +9 -5
  82. package/src/components/form-inputs-controls/VcsChipArrayInput.vue +15 -13
  83. package/src/components/form-inputs-controls/VcsChipArrayInput.vue.d.ts +3 -4
  84. package/src/components/form-inputs-controls/VcsCoordinate.vue +17 -4
  85. package/src/components/form-inputs-controls/VcsCoordinate.vue.d.ts +5 -2
  86. package/src/components/form-inputs-controls/VcsDatePicker.vue +34 -60
  87. package/src/components/form-inputs-controls/VcsDatePicker.vue.d.ts +1 -63
  88. package/src/components/form-inputs-controls/VcsFileInput.vue +17 -18
  89. package/src/components/form-inputs-controls/VcsFileInput.vue.d.ts +1 -0
  90. package/src/components/form-inputs-controls/VcsLabel.vue +1 -1
  91. package/src/components/form-inputs-controls/VcsRadio.vue +17 -3
  92. package/src/components/form-inputs-controls/VcsRadio.vue.d.ts +1 -0
  93. package/src/components/form-inputs-controls/VcsSelect.vue +40 -31
  94. package/src/components/form-inputs-controls/VcsSelect.vue.d.ts +5 -2
  95. package/src/components/form-inputs-controls/VcsSlider.vue +13 -1
  96. package/src/components/form-inputs-controls/VcsSlider.vue.d.ts +1 -0
  97. package/src/components/form-inputs-controls/VcsTextArea.vue +27 -26
  98. package/src/components/form-inputs-controls/VcsTextArea.vue.d.ts +1 -0
  99. package/src/components/form-inputs-controls/VcsTextField.vue +20 -4
  100. package/src/components/form-inputs-controls/VcsTextField.vue.d.ts +9 -0
  101. package/src/components/form-inputs-controls/VcsWizardStep.vue +3 -6
  102. package/src/components/form-inputs-controls/vcsTextField.scss +9 -12
  103. package/src/components/form-output/VcsFormattedNumber.vue +21 -5
  104. package/src/components/form-output/VcsFormattedNumber.vue.d.ts +9 -0
  105. package/src/components/form-output/VcsMarkdown.vue +15 -12
  106. package/src/components/form-output/VcsMarkdown.vue.d.ts +1 -0
  107. package/src/components/form-output/markdownHelper.d.ts +30 -0
  108. package/src/components/form-output/markdownHelper.js +398 -0
  109. package/src/components/import/VcsFileDrop.vue +8 -5
  110. package/src/components/import/VcsImportComponent.vue +4 -3
  111. package/src/components/import/VcsImportComponent.vue.d.ts +1 -2
  112. package/src/components/lists/VcsActionList.vue +11 -7
  113. package/src/components/lists/VcsList.vue +30 -52
  114. package/src/components/lists/VcsList.vue.d.ts +14 -59
  115. package/src/components/lists/{VcsListItem.vue → VcsListItemComponent.vue} +68 -22
  116. package/src/components/lists/VcsListItemComponent.vue.d.ts +69 -0
  117. package/src/components/lists/VcsTreeview.vue +43 -16
  118. package/src/components/lists/VcsTreeview.vue.d.ts +14 -3
  119. package/src/components/lists/VcsTreeviewLeaf.vue +15 -6
  120. package/src/components/lists/VcsTreeviewSearchbar.vue +2 -2
  121. package/src/components/notification/VcsHelp.vue +1 -1
  122. package/src/components/notification/VcsHelp.vue.d.ts +3 -2
  123. package/src/components/section/VcsExpansionPanel.vue +101 -0
  124. package/src/components/section/VcsExpansionPanel.vue.d.ts +19 -0
  125. package/src/components/{form-inputs-controls → section}/VcsFormSection.vue +10 -4
  126. package/src/components/{form-inputs-controls → section}/VcsFormSection.vue.d.ts +1 -2
  127. package/src/components/style/MenuWrapper.vue +24 -26
  128. package/src/components/style/MenuWrapper.vue.d.ts +4 -4
  129. package/src/components/style/VcsFillMenu.vue +9 -16
  130. package/src/components/style/VcsFillMenu.vue.d.ts +0 -18
  131. package/src/components/style/VcsFillSelector.vue +13 -16
  132. package/src/components/style/VcsImageMenu.vue +8 -25
  133. package/src/components/style/VcsImageMenu.vue.d.ts +0 -27
  134. package/src/components/style/VcsImageSelector.vue +102 -167
  135. package/src/components/style/VcsImageSelector.vue.d.ts +15 -15
  136. package/src/components/style/VcsStrokeMenu.vue +8 -15
  137. package/src/components/style/VcsStrokeMenu.vue.d.ts +0 -18
  138. package/src/components/style/VcsStrokeSelector.vue +11 -18
  139. package/src/components/style/VcsTextMenu.vue +9 -12
  140. package/src/components/style/VcsTextMenu.vue.d.ts +0 -9
  141. package/src/components/style/VcsTextSelector.vue +79 -95
  142. package/src/components/style/VcsTextSelector.vue.d.ts +20 -22
  143. package/src/components/style/VcsVectorStyleComponent.vue +8 -19
  144. package/src/components/style/VcsVectorStyleComponent.vue.d.ts +1 -1
  145. package/src/components/style/composables.d.ts +0 -14
  146. package/src/components/style/composables.js +0 -49
  147. package/src/components/tables/VcsDataTable.vue +28 -22
  148. package/src/components/tables/VcsTable.vue +45 -62
  149. package/src/components/tables/VcsTable.vue.d.ts +30 -17
  150. package/src/components/tables/VcsTableCell.vue +72 -0
  151. package/src/components/tables/VcsTableCell.vue.d.ts +13 -0
  152. package/src/components/vector-properties/VcsFeatureEditingWindow.vue +43 -9
  153. package/src/components/vector-properties/VcsFeatureTransforms.vue +5 -0
  154. package/src/components/vector-properties/VcsVectorPropertiesComponent.vue +1 -1
  155. package/src/components/viewpoint/VcsViewpointComponent.vue +23 -10
  156. package/src/components/viewpoint/VcsViewpointEditor.vue +2 -1
  157. package/src/contentTree/LayerTree.vue +9 -27
  158. package/src/contentTree/LayerTree.vue.d.ts +1 -1
  159. package/src/contentTree/contentTreeCollection.d.ts +1 -0
  160. package/src/contentTree/contentTreeCollection.js +45 -11
  161. package/src/contentTree/contentTreeItem.d.ts +2 -2
  162. package/src/contentTree/contentTreeItem.js +7 -7
  163. package/src/featureInfo/BalloonComponent.vue +14 -15
  164. package/src/featureInfo/MarkdownBalloonComponent.vue +4 -2
  165. package/src/featureInfo/MarkdownBalloonComponent.vue.d.ts +2 -2
  166. package/src/featureInfo/abstractFeatureInfoView.d.ts +6 -0
  167. package/src/featureInfo/abstractFeatureInfoView.js +15 -7
  168. package/src/featureInfo/featureInfo.d.ts +5 -5
  169. package/src/featureInfo/featureInfo.js +59 -41
  170. package/src/featureInfo/iframeFeatureInfoView.d.ts +8 -2
  171. package/src/featureInfo/iframeFeatureInfoView.js +15 -5
  172. package/src/featureInfo/markdownBalloonFeatureInfoView.d.ts +1 -1
  173. package/src/featureInfo/markdownBalloonFeatureInfoView.js +5 -5
  174. package/src/featureInfo/markdownFeatureInfoView.d.ts +1 -1
  175. package/src/featureInfo/markdownFeatureInfoView.js +9 -11
  176. package/src/featureInfo/tableFeatureInfoView.js +13 -4
  177. package/src/init.d.ts +5 -38
  178. package/src/init.js +19 -18
  179. package/src/legend/StyleLegendItem.vue +4 -9
  180. package/src/legend/VcsLegend.vue +28 -54
  181. package/src/manager/buttonManager.js +4 -4
  182. package/src/manager/collectionManager/CollectionComponent.vue +17 -42
  183. package/src/manager/collectionManager/CollectionComponent.vue.d.ts +4 -2
  184. package/src/manager/collectionManager/CollectionComponentContent.vue +7 -6
  185. package/src/manager/collectionManager/CollectionComponentContent.vue.d.ts +3 -1
  186. package/src/manager/collectionManager/CollectionComponentList.vue +11 -9
  187. package/src/manager/collectionManager/CollectionComponentList.vue.d.ts +6 -4
  188. package/src/manager/collectionManager/CollectionComponentProvider.vue +1 -1
  189. package/src/manager/collectionManager/CollectionComponentStandalone.vue +3 -2
  190. package/src/manager/collectionManager/CollectionManager.vue +1 -1
  191. package/src/manager/collectionManager/collectionComponentClass.d.ts +1 -1
  192. package/src/manager/collectionManager/collectionComponentClass.js +7 -10
  193. package/src/manager/collectionManager/collectionManager.js +10 -10
  194. package/src/manager/collectionManager/editorCollectionComponentClass.js +6 -5
  195. package/src/manager/contextMenu/contextMenuManager.js +2 -2
  196. package/src/manager/navbarManager.js +2 -2
  197. package/src/manager/panel/PanelComponent.vue +2 -9
  198. package/src/manager/panel/PanelManagerComponent.vue +7 -3
  199. package/src/manager/panel/panelHelper.js +3 -3
  200. package/src/manager/panel/panelManager.d.ts +9 -1
  201. package/src/manager/panel/panelManager.js +18 -6
  202. package/src/manager/toolbox/GroupToolboxComponent.vue +8 -4
  203. package/src/manager/toolbox/GroupToolboxComponent.vue.d.ts +1 -0
  204. package/src/manager/toolbox/SelectToolboxComponent.vue +7 -4
  205. package/src/manager/toolbox/SelectToolboxComponent.vue.d.ts +1 -0
  206. package/src/manager/toolbox/ToolboxManager.vue +9 -6
  207. package/src/manager/toolbox/ToolboxManager.vue.d.ts +1 -0
  208. package/src/manager/toolbox/toolboxManager.js +10 -10
  209. package/src/manager/window/WindowComponent.vue +12 -8
  210. package/src/manager/window/WindowComponentHeader.vue +29 -8
  211. package/src/manager/window/WindowComponentHeader.vue.d.ts +2 -0
  212. package/src/manager/window/WindowManager.vue +2 -2
  213. package/src/manager/window/windowManager.d.ts +2 -2
  214. package/src/manager/window/windowManager.js +4 -4
  215. package/src/navigation/MapNavigation.vue +20 -0
  216. package/src/navigation/locatorHelper.js +1 -1
  217. package/src/navigation/overviewMap.js +1 -1
  218. package/src/notifier/NotifierComponent.vue +18 -15
  219. package/src/search/ResultItem.vue +18 -6
  220. package/src/search/ResultsComponent.vue +31 -20
  221. package/src/search/ResultsComponent.vue.d.ts +2 -1
  222. package/src/search/SearchComponent.vue +8 -14
  223. package/src/search/SearchComponent.vue.d.ts +1 -0
  224. package/src/search/search.js +2 -2
  225. package/src/siteConfig.js +9 -9
  226. package/src/state.js +4 -4
  227. package/src/styles/_typography.scss +0 -2
  228. package/src/styles/main.scss +0 -4
  229. package/src/uiConfig.d.ts +300 -5
  230. package/src/uiConfig.js +28 -16
  231. package/src/vcsUiApp.d.ts +21 -17
  232. package/src/vcsUiApp.js +11 -10
  233. package/src/vuePlugins/vuetify.d.ts +2 -0
  234. package/src/vuePlugins/vuetify.js +14 -0
  235. package/dist/assets/@mdi/font/css/materialdesignicons.css.map +0 -16
  236. package/dist/assets/@mdi/font/css/materialdesignicons.min.e3f476.css +0 -3
  237. package/dist/assets/index-8eGauqjA.js +0 -1
  238. package/dist/assets/ui.7c276c.css +0 -1
  239. package/dist/assets/vue.a3cd64.js +0 -6096
  240. package/public/assets/@mdi/font/css/materialdesignicons.css.map +0 -16
  241. package/src/application/VcsCustomScreen.vue +0 -45
  242. package/src/application/VcsCustomScreen.vue.d.ts +0 -15
  243. package/src/application/markdownHelper.d.ts +0 -12
  244. package/src/application/markdownHelper.js +0 -70
  245. package/src/components/lists/VcsListItem.vue.d.ts +0 -21
  246. package/src/components/notification/VcsTooltip.vue +0 -156
  247. package/src/components/notification/VcsTooltip.vue.d.ts +0 -27
  248. package/src/featureInfo/MarkdownComponent.vue +0 -16
  249. package/src/featureInfo/MarkdownComponent.vue.d.ts +0 -7
  250. package/src/styles/_theming.scss +0 -73
  251. package/src/styles/settings.scss +0 -6
  252. package/src/styles/shades.scss +0 -4
  253. package/src/styles/variables.scss +0 -140
  254. package/src/styles/vcsFont.scss +0 -2
  255. package/src/styles/vcsGrid.scss +0 -3
  256. /package/dist/assets/{favicon-128.4c4ce5.png → favicon-128-4c4ce5df.png} +0 -0
  257. /package/dist/assets/{favicon-180.5b99c0.png → favicon-180-4c4ce5df.png} +0 -0
  258. /package/dist/assets/{favicon-192.0e205e.png → favicon-192-4c4ce5df.png} +0 -0
  259. /package/dist/assets/{favicon-32.6b9add.png → favicon-32-4c4ce5df.png} +0 -0
  260. /package/dist/assets/{favicon.d5ec97.svg → favicon-4c4ce5df.svg} +0 -0
  261. /package/dist/assets/font/{TitilliumWeb-Regular.9ca076.woff2 → TitilliumWeb-Regular-9ca076be.woff2} +0 -0
  262. /package/dist/assets/style/{icon-marker.70960f.png → icon-marker-70960f05.png} +0 -0
  263. /package/dist/assets/style/{icon-marker-blue.534e37.png → icon-marker-blue-534e374b.png} +0 -0
  264. /package/dist/assets/style/{icon-marker-green.0b6a92.png → icon-marker-green-0b6a92bc.png} +0 -0
  265. /package/dist/assets/style/{icon-marker-o.036477.png → icon-marker-o-036477fa.png} +0 -0
  266. /package/dist/assets/style/{icon-marker-o-blue.7b6d62.png → icon-marker-o-blue-7b6d6279.png} +0 -0
  267. /package/dist/assets/style/{icon-marker-o-green.c863c0.png → icon-marker-o-green-c863c0fa.png} +0 -0
  268. /package/dist/assets/style/{icon-marker-o-red.93ff58.png → icon-marker-o-red-93ff58df.png} +0 -0
  269. /package/dist/assets/style/{icon-marker-red.313d03.png → icon-marker-red-313d03e8.png} +0 -0
  270. /package/dist/assets/style/{icon-pin.b7ce77.png → icon-pin-b7ce771e.png} +0 -0
  271. /package/dist/assets/style/{icon-pin-blue.7be369.png → icon-pin-blue-7be369a3.png} +0 -0
  272. /package/dist/assets/style/{icon-pin-green.cbb935.png → icon-pin-green-cbb935fe.png} +0 -0
  273. /package/dist/assets/style/{icon-pin-red.3f25b2.png → icon-pin-red-3f25b245.png} +0 -0
  274. /package/public/assets/{favicon-128.png → favicon-128-4c4ce5df.png} +0 -0
  275. /package/public/assets/{favicon-180.png → favicon-180-4c4ce5df.png} +0 -0
  276. /package/public/assets/{favicon-192.png → favicon-192-4c4ce5df.png} +0 -0
  277. /package/public/assets/{favicon-32.png → favicon-32-4c4ce5df.png} +0 -0
  278. /package/public/assets/{favicon.svg → favicon-4c4ce5df.svg} +0 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vcmap/ui",
3
- "version": "6.0.0-rc.2",
3
+ "version": "6.0.0-rc.5",
4
4
  "author": "Virtual City Systems",
5
5
  "license": "MIT",
6
6
  "scripts": {
@@ -45,47 +45,47 @@
45
45
  ],
46
46
  "dependencies": {
47
47
  "@intlify/core-base": "^9.13.1",
48
- "@vcsuite/check": "^1.1.2",
48
+ "@vcsuite/check": "^2.1.0",
49
49
  "@vcsuite/logger": "^1.0.1",
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.2",
61
- "ol": "^7.5.2",
62
- "vue": "~3.4.27",
63
- "vuetify": "^3.6.8"
60
+ "@vcmap/core": "6.0.0-rc.3",
61
+ "ol": "^10.0.0",
62
+ "vue": "~3.4.38",
63
+ "vuetify": "^3.7.0"
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",
@@ -17,7 +17,16 @@
17
17
 
18
18
  <script>
19
19
  import { VSheet } from 'vuetify/components';
20
- import { provide, ref, shallowRef, nextTick } from 'vue';
20
+ import {
21
+ provide,
22
+ ref,
23
+ shallowRef,
24
+ nextTick,
25
+ toRaw,
26
+ isReactive,
27
+ reactive,
28
+ watch,
29
+ } from 'vue';
21
30
  import { VcsFlightComponent, VcsFormButton } from '@vcmap/ui';
22
31
  import { FlightInstance } from '@vcmap/core';
23
32
 
@@ -36,6 +45,37 @@
36
45
  const hasFlightInstance = ref(true);
37
46
  provide('flightInstance', flightInstance);
38
47
 
48
+ const obj = ref({
49
+ foo: {
50
+ bar: true,
51
+ array: [1, 2, 3],
52
+ obj: {
53
+ baz: 'abc',
54
+ },
55
+ },
56
+ });
57
+ console.log('obj', obj);
58
+ const raw = toRaw(obj);
59
+ console.log('toRaw obj', raw);
60
+ console.log('isReactive obj', isReactive(raw));
61
+ console.log('isReactive foo', isReactive(raw.foo));
62
+ console.log('isReactive array', isReactive(raw.array));
63
+
64
+ const props = reactive({
65
+ raw,
66
+ });
67
+
68
+ const internal = ref(structuredClone(toRaw(props.raw)));
69
+
70
+ watch(
71
+ internal,
72
+ (newObj) => {
73
+ console.log('watch', newObj);
74
+ },
75
+ { deep: true },
76
+ );
77
+ internal.value.foo.array[2] = 5;
78
+
39
79
  return {
40
80
  hasFlightInstance,
41
81
  async reset() {
@@ -20,13 +20,18 @@
20
20
  <template #default>
21
21
  <v-container class="py-0 px-1">
22
22
  <v-row no-gutters>
23
- <v-col class="w-max-half">
24
- <VcsLabel html-for="selectInput">
23
+ <v-col>
24
+ <VcsLabel
25
+ :disabled="disabled"
26
+ html-for="selectInput"
27
+ tooltip="labelTooltip"
28
+ >
25
29
  {{ $t('form-inputs-example.select') }}
26
30
  </VcsLabel>
27
31
  </v-col>
28
- <v-col class="w-max-half">
32
+ <v-col>
29
33
  <VcsSelect
34
+ :disabled="disabled"
30
35
  id="selectInput"
31
36
  loading="primary"
32
37
  :items="selectOptions"
@@ -37,12 +42,13 @@
37
42
  </v-row>
38
43
  <v-row no-gutters>
39
44
  <v-col>
40
- <VcsLabel html-for="conditionalInput">
45
+ <VcsLabel :disabled="disabled" html-for="conditionalInput">
41
46
  ConditionalInput
42
47
  </VcsLabel>
43
48
  </v-col>
44
49
  <v-col>
45
50
  <VcsTextField
51
+ :disabled="disabled"
46
52
  id="conditionalInput"
47
53
  clearable
48
54
  :rules="[
@@ -54,16 +60,24 @@
54
60
  </v-col>
55
61
  </v-row>
56
62
  <v-row no-gutters>
57
- <v-col class="w-max-half">
58
- <VcsLabel html-for="arrayInput"> Array Input </VcsLabel>
63
+ <v-col>
64
+ <VcsCheckbox :disabled="disabled" label="Checkbox"></VcsCheckbox>
65
+ </v-col>
66
+ </v-row>
67
+ <v-row no-gutters>
68
+ <v-col>
69
+ <VcsLabel :disabled="disabled" html-for="arrayInput">
70
+ Array Input
71
+ </VcsLabel>
59
72
  </v-col>
60
73
  </v-row>
61
74
  <v-row no-gutters>
62
75
  <v-col>
63
76
  <VcsChipArrayInput
77
+ :disabled="disabled"
64
78
  id="arrayInput"
65
79
  type="number"
66
- v-model="array"
80
+ v-model="state.arrayInput"
67
81
  :rules="[arrayTest]"
68
82
  />
69
83
  </v-col>
@@ -71,6 +85,7 @@
71
85
  <v-row no-gutters>
72
86
  <v-col>
73
87
  <VcsChipArrayInput
88
+ :disabled="disabled"
74
89
  id="arrayInput"
75
90
  v-model="state.arrayInputString"
76
91
  column
@@ -80,6 +95,7 @@
80
95
  <v-row no-gutters>
81
96
  <v-col>
82
97
  <VcsTextField
98
+ :disabled="disabled"
83
99
  v-model="state.initialTextInput"
84
100
  :rules="[isValidText]"
85
101
  :loading="
@@ -98,7 +114,7 @@
98
114
  <v-row no-gutters>
99
115
  <v-col>
100
116
  <VcsTextArea
101
- :dense="dense"
117
+ :disabled="disabled"
102
118
  :rules="[(v) => !!v || 'text area must not be empty']"
103
119
  placeholder="This is a text area"
104
120
  tooltip="This is a tooltip"
@@ -108,10 +124,13 @@
108
124
  </v-row>
109
125
  <v-row no-gutters>
110
126
  <v-col>
111
- <VcsLabel html-for="emailInput" required> Email </VcsLabel>
127
+ <VcsLabel :disabled="disabled" html-for="emailInput" required>
128
+ Email
129
+ </VcsLabel>
112
130
  </v-col>
113
131
  <v-col>
114
132
  <VcsTextField
133
+ :disabled="disabled"
115
134
  id="emailInput"
116
135
  type="email"
117
136
  :rules="[isValidEmail]"
@@ -122,10 +141,13 @@
122
141
  </v-row>
123
142
  <v-row no-gutters>
124
143
  <v-col>
125
- <VcsLabel html-for="prependedInput"> String With Icon </VcsLabel>
144
+ <VcsLabel :disabled="disabled" html-for="prependedInput">
145
+ String With Icon
146
+ </VcsLabel>
126
147
  </v-col>
127
148
  <v-col>
128
149
  <VcsTextField
150
+ :disabled="disabled"
129
151
  id="prependedInput"
130
152
  prepend-icon="mdi-map-marker"
131
153
  v-model="state.prependedInput"
@@ -135,10 +157,13 @@
135
157
  </v-row>
136
158
  <v-row no-gutters>
137
159
  <v-col>
138
- <VcsLabel html-for="fileInput"> File input </VcsLabel>
160
+ <VcsLabel :disabled="disabled" html-for="fileInput">
161
+ File input
162
+ </VcsLabel>
139
163
  </v-col>
140
164
  <v-col>
141
165
  <VcsFileInput
166
+ :disabled="disabled"
142
167
  id="fileInput"
143
168
  multiple
144
169
  tooltip="Click to select a file."
@@ -148,10 +173,12 @@
148
173
  </v-row>
149
174
  <v-row no-gutters>
150
175
  <v-col>
151
- <VcsLabel html-for="dateInput"> Date </VcsLabel>
176
+ <VcsLabel :disabled="disabled" html-for="dateInput">
177
+ Date
178
+ </VcsLabel>
152
179
  </v-col>
153
180
  <v-col>
154
- <VcsDatePicker id="dateInput" v-model="state.dateInput" />
181
+ <VcsDatePicker :disabled="disabled" id="dateInput" />
155
182
  </v-col>
156
183
  </v-row>
157
184
  </v-container>
@@ -165,10 +192,13 @@
165
192
  <v-container class="py-0 px-1">
166
193
  <v-row no-gutters>
167
194
  <v-col>
168
- <VcsLabel html-for="numberInput"> NumberInput </VcsLabel>
195
+ <VcsLabel :disabled="disabled" html-for="numberInput">
196
+ NumberInput
197
+ </VcsLabel>
169
198
  </v-col>
170
199
  <v-col>
171
200
  <VcsTextField
201
+ :disabled="disabled"
172
202
  id="numberInput"
173
203
  type="number"
174
204
  step="1"
@@ -180,12 +210,14 @@
180
210
  </v-row>
181
211
  <v-row no-gutters class="align-center">
182
212
  <v-col>
183
- <VcsLabel html-for="sliderInput"> Slider </VcsLabel>
213
+ <VcsLabel :disabled="disabled" html-for="sliderInput">
214
+ Slider
215
+ </VcsLabel>
184
216
  </v-col>
185
217
  <v-col>
186
218
  <VcsSlider
219
+ :disabled="disabled"
187
220
  id="sliderInput"
188
- :dense="dense"
189
221
  type="number"
190
222
  step="1"
191
223
  v-model.number="state.numberInput"
@@ -194,53 +226,53 @@
194
226
  </v-row>
195
227
  <v-row no-gutters>
196
228
  <v-col>
197
- <VcsLabel html-for="formattedNumber">
229
+ <VcsLabel :disabled="disabled" html-for="formattedNumber">
198
230
  VcsFormattedNumber
199
231
  </VcsLabel>
200
232
  </v-col>
201
233
  <v-col class="d-flex justify-end">
202
234
  <VcsFormattedNumber
235
+ :disabled="disabled"
203
236
  id="formattedNumber"
204
237
  :value="state.numberInput"
205
238
  unit="cm"
206
239
  :fraction-digits="1"
207
- :dense="dense"
208
240
  />
209
241
  </v-col>
210
242
  </v-row>
211
243
  <v-row no-gutters class="gc-2">
212
244
  <v-col>
213
245
  <VcsFormattedNumber
246
+ :disabled="disabled"
214
247
  id="formattedNumber"
215
248
  :value="state.numberInput"
216
249
  prefix="X"
217
250
  unit="cm"
218
251
  :fraction-digits="1"
219
- :dense="dense"
220
252
  />
221
253
  </v-col>
222
254
  <v-col>
223
255
  <VcsFormattedNumber
256
+ :disabled="disabled"
224
257
  id="formattedNumber"
225
258
  :value="state.numberInput"
226
259
  prefix="Y"
227
260
  unit="cm"
228
261
  :fraction-digits="1"
229
- :dense="dense"
230
262
  />
231
263
  </v-col>
232
264
  <v-col>
233
265
  <VcsFormattedNumber
266
+ :disabled="disabled"
234
267
  id="formattedNumber"
235
268
  :value="state.numberInput"
236
269
  prefix="Z"
237
270
  unit="cm"
238
271
  :fraction-digits="1"
239
- :dense="dense"
240
272
  />
241
273
  </v-col>
242
274
  </v-row>
243
- <VcsCoordinate v-model="array" />
275
+ <VcsCoordinate :disabled="disabled" v-model="state.arrayInput" />
244
276
  </v-container>
245
277
  </template>
246
278
  </VcsFormSection>
@@ -254,6 +286,7 @@
254
286
  <v-row no-gutters>
255
287
  <v-col>
256
288
  <VcsRadio
289
+ :disabled="disabled"
257
290
  :items="[
258
291
  ...selectOptions,
259
292
  {
@@ -270,12 +303,13 @@
270
303
  </v-row>
271
304
  <v-row no-gutters>
272
305
  <v-col>
273
- <VcsLabel> Radio with img label </VcsLabel>
306
+ <VcsLabel :disabled="disabled"> Radio with img label </VcsLabel>
274
307
  </v-col>
275
308
  </v-row>
276
309
  <v-row no-gutters>
277
310
  <v-col>
278
311
  <VcsRadio
312
+ :disabled="disabled"
279
313
  v-model="state.selected"
280
314
  :items="[
281
315
  { value: 'AAAAAAAA', src: 'mdi-circle-outline' },
@@ -283,7 +317,6 @@
283
317
  { value: 'C', src: 'mdi-triangle-outline' },
284
318
  { value: 'D', src: 'mdi-square-outline' },
285
319
  ]"
286
- :dense="dense"
287
320
  :rules="[(v) => v !== 'D' || 'Square is not allowed']"
288
321
  tooltip="This is a radio grid"
289
322
  inline
@@ -313,6 +346,7 @@
313
346
  <v-row no-gutters>
314
347
  <v-col>
315
348
  <VcsCheckbox
349
+ :disabled="disabled"
316
350
  id="checkboxInput"
317
351
  label="CheckboxInput"
318
352
  tooltip="This is a checkbox for terms of usage"
@@ -324,6 +358,7 @@
324
358
  </v-col>
325
359
  <v-col>
326
360
  <VcsFormButton
361
+ :disabled="disabled"
327
362
  :is-active="state.checkboxInput"
328
363
  @click="state.checkboxInput = !state.checkboxInput"
329
364
  tooltip="toggle button"
@@ -349,29 +384,35 @@
349
384
  <v-container class="py-0 px-1">
350
385
  <v-row>
351
386
  <v-col cols="1">
352
- <VcsLabel html-for="textInput" class="text-caption"> 1 </VcsLabel>
387
+ <VcsLabel
388
+ :disabled="disabled"
389
+ html-for="textInput"
390
+ class="text-caption"
391
+ >
392
+ 1
393
+ </VcsLabel>
353
394
  </v-col>
354
395
  <v-col>
355
396
  <VcsSelect
397
+ :disabled="disabled"
356
398
  :items="[
357
399
  { value: 'one', i18n: 'form-inputs-example.numbers.one' },
358
400
  { value: 'two', i18n: 'form-inputs-example.numbers.two' },
359
401
  { value: 'three', i18n: 'form-inputs-example.numbers.three' },
360
402
  ]"
361
403
  :item-text="(item) => item.i18n"
362
- :dense="dense"
363
404
  placeholder="Numbers"
364
405
  />
365
406
  </v-col>
366
407
  <v-col>
367
408
  <VcsSelect
409
+ :disabled="disabled"
368
410
  :items="[
369
411
  { value: 'Anna', fullName: 'Annabella' },
370
412
  { value: 'Bella', fullName: 'Belladonna' },
371
413
  { value: 'Claudi', fullName: 'Claudine' },
372
414
  ]"
373
415
  :item-text="(item) => item.fullName"
374
- :dense="dense"
375
416
  multiple
376
417
  v-model="state.selectedMultiple"
377
418
  :rules="[
@@ -404,16 +445,15 @@
404
445
  <template #default>
405
446
  <v-container class="py-0 px-1">
406
447
  <v-row no-gutters>
407
- <v-col class="w-max-half">
448
+ <v-col>
408
449
  <VcsLabel html-for="selectInput2" disabled>
409
450
  {{ $t('form-inputs-example.select') }}
410
451
  </VcsLabel>
411
452
  </v-col>
412
- <v-col class="w-max-half">
453
+ <v-col>
413
454
  <VcsSelect
414
455
  id="selectInput2"
415
456
  :items="selectOptions"
416
- :dense="dense"
417
457
  :rules="[(v) => v !== 'D' || 'D is not allowed']"
418
458
  v-model="state.selected"
419
459
  :disabled="true"
@@ -499,7 +539,7 @@
499
539
  type: Array,
500
540
  required: true,
501
541
  },
502
- dense: {
542
+ disabled: {
503
543
  type: Boolean,
504
544
  required: true,
505
545
  },
@@ -516,7 +556,6 @@
516
556
  return {
517
557
  // no object-destruction of reactive objects! or use toRef()
518
558
  state: plugin.state,
519
- array: ref([1, 2, 3]),
520
559
  // do not put the whole config here, since it would become reactive
521
560
  selectOptions: plugin.config.selectOptions,
522
561
  form,
@@ -1,21 +1,17 @@
1
1
  import { reactive, ref } from 'vue';
2
2
 
3
3
  export default function createExampleActions() {
4
- const dense = ref(false);
4
+ const disabled = ref(false);
5
5
  const showSection = ref(true);
6
6
 
7
7
  const actions = [
8
8
  reactive({
9
- name: 'denseSelection',
10
- title: 'change row height',
11
- icon: dense.value
12
- ? 'mdi-arrow-split-horizontal'
13
- : 'mdi-arrow-collapse-vertical',
9
+ name: 'disabledSelection',
10
+ title: 'Changed Disabled',
11
+ icon: disabled.value ? 'mdi-airplane' : 'mdi-airplane-off',
14
12
  callback() {
15
- dense.value = !dense.value;
16
- this.icon = dense.value
17
- ? 'mdi-arrow-split-horizontal'
18
- : 'mdi-arrow-collapse-vertical';
13
+ disabled.value = !disabled.value;
14
+ this.icon = disabled.value ? 'mdi-airplane' : 'mdi-airplane-off';
19
15
  },
20
16
  }),
21
17
  {
@@ -32,5 +28,5 @@ export default function createExampleActions() {
32
28
  },
33
29
  ];
34
30
 
35
- return { actions, dense, showSection };
31
+ return { actions, disabled, showSection };
36
32
  }
@@ -178,7 +178,7 @@ export default function formInputsExample(config) {
178
178
  getSerializedState,
179
179
  setSerializedState,
180
180
  onVcsAppMounted(app) {
181
- const { actions, dense } = createExampleActions();
181
+ const { actions, disabled } = createExampleActions();
182
182
 
183
183
  const { action, destroy } = createToggleAction(
184
184
  {
@@ -199,7 +199,7 @@ export default function formInputsExample(config) {
199
199
  },
200
200
  props: reactive({
201
201
  actions,
202
- dense,
202
+ disabled,
203
203
  }),
204
204
  },
205
205
  app.windowManager,
@@ -87,9 +87,10 @@
87
87
  <v-switch label="disabled" v-model="newItem.disabled" />
88
88
  <v-switch label="random icon" v-model="newItem.icon" />
89
89
  <v-switch label="hasUpdate" v-model="newItem.hasUpdate" />
90
+ <v-switch label="rename action" v-model="newItem.renamable" />
90
91
  <v-switch
91
- label="rename action"
92
- v-model="newItem.renameAction"
92
+ label="toggle rename action"
93
+ v-model="newItem.toggleRename"
93
94
  />
94
95
  <v-switch label="console.log action" v-model="newItem.action" />
95
96
  <v-switch
@@ -162,7 +163,6 @@
162
163
  VcsTextField,
163
164
  Icons,
164
165
  VcsFormSection,
165
- createListItemRenameAction,
166
166
  } from '@vcmap/ui';
167
167
  import {
168
168
  VSwitch,
@@ -247,7 +247,8 @@
247
247
  disabled: false,
248
248
  visible: true,
249
249
  icon: false,
250
- renameAction: false,
250
+ renamable: false,
251
+ toggleRename: false,
251
252
  action: false,
252
253
  clicked: false,
253
254
  selected: false,
@@ -281,6 +282,7 @@
281
282
  disabled: newItem.value.disabled,
282
283
  visible: newItem.value.visible,
283
284
  hasUpdate: newItem.value.hasUpdate,
285
+ renamable: newItem.value.renamable,
284
286
  });
285
287
 
286
288
  if (newItem.value.icon) {
@@ -289,9 +291,13 @@
289
291
 
290
292
  item.actions = [];
291
293
 
292
- if (newItem.value.renameAction) {
293
- item.rename = false;
294
- item.actions.push(createListItemRenameAction(item));
294
+ if (newItem.value.toggleRename) {
295
+ item.actions.push({
296
+ name: 'toggle rename',
297
+ callback() {
298
+ item.renamable = !item.renamable;
299
+ },
300
+ });
295
301
  }
296
302
 
297
303
  if (newItem.value.action) {
@@ -320,6 +326,13 @@
320
326
  }
321
327
  };
322
328
  }
329
+
330
+ if (newItem.value.renamable) {
331
+ item.titleChanged = (newTitle) => {
332
+ item.title = newTitle;
333
+ };
334
+ }
335
+
323
336
  items.value.push(item);
324
337
  newItem.value = {
325
338
  name: 'foo',
@@ -327,7 +340,7 @@
327
340
  disabled: false,
328
341
  visible: true,
329
342
  icon: false,
330
- renameAction: false,
343
+ renamable: false,
331
344
  action: false,
332
345
  clicked: false,
333
346
  selected: false,
@@ -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
  },