@vcmap/ui 5.0.0-rc.23 → 5.0.0-rc.24

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 (417) hide show
  1. package/README.md +36 -18
  2. package/app.config.json +2 -4
  3. package/build/.eslintrc +3 -0
  4. package/build/build.js +184 -174
  5. package/build/buildCesium.js +32 -19
  6. package/build/buildHelpers.js +117 -48
  7. package/build/buildPreview.js +7 -4
  8. package/build/commonViteConfig.js +1 -3
  9. package/build/determineHost.js +17 -4
  10. package/build/generateOLLib.js +13 -16
  11. package/build/getPluginProxies.js +16 -3
  12. package/build/info/conf.json +21 -21
  13. package/build/info/publish.js +15 -4
  14. package/config/aerowest.config.json +16 -44
  15. package/config/base.config.json +71 -246
  16. package/config/codes.config.json +3 -1
  17. package/config/dev.config.json +5 -13
  18. package/config/graphFeatureInfo.config.json +55 -16
  19. package/config/projects.config.json +5 -2
  20. package/config/www.config.json +96 -297
  21. package/dist/assets/cesium/Workers/{ArcType-ce2e50ab.js → ArcType-2d9abbbc.js} +4 -4
  22. package/dist/assets/cesium/Workers/{AttributeCompression-b646d393.js → AttributeCompression-f9f6c717.js} +24 -24
  23. package/dist/assets/cesium/Workers/{AxisAlignedBoundingBox-ff186ccc.js → AxisAlignedBoundingBox-85d9e53a.js} +3 -3
  24. package/dist/assets/cesium/Workers/{BoundingRectangle-be5924f4.js → BoundingRectangle-1ee7eb47.js} +18 -18
  25. package/dist/assets/cesium/Workers/{BoxGeometry-12eeccaf.js → BoxGeometry-3b2be784.js} +9 -9
  26. package/dist/assets/cesium/Workers/{Check-666ab1a0.js → Check-6ede7e26.js} +22 -22
  27. package/dist/assets/cesium/Workers/{Color-a84038cb.js → Color-f107c84d.js} +59 -59
  28. package/dist/assets/cesium/Workers/{ComponentDatatype-f7b11d02.js → ComponentDatatype-cf1fa08e.js} +16 -16
  29. package/dist/assets/cesium/Workers/{CoplanarPolygonGeometryLibrary-3272c1b3.js → CoplanarPolygonGeometryLibrary-78d71993.js} +1 -1
  30. package/dist/assets/cesium/Workers/{CorridorGeometryLibrary-0170e093.js → CorridorGeometryLibrary-50d99b33.js} +1 -1
  31. package/dist/assets/cesium/Workers/{CylinderGeometry-7c5da648.js → CylinderGeometry-51b0d9bf.js} +12 -12
  32. package/dist/assets/cesium/Workers/{CylinderGeometryLibrary-372c07d8.js → CylinderGeometryLibrary-7bf291b4.js} +1 -1
  33. package/dist/assets/cesium/Workers/{EllipseGeometry-797d580e.js → EllipseGeometry-bcfb5d87.js} +20 -20
  34. package/dist/assets/cesium/Workers/{EllipseGeometryLibrary-2939e1dc.js → EllipseGeometryLibrary-e94f8472.js} +1 -1
  35. package/dist/assets/cesium/Workers/{EllipseOutlineGeometry-8b50870f.js → EllipseOutlineGeometry-28e3a1bb.js} +15 -15
  36. package/dist/assets/cesium/Workers/{EllipsoidGeodesic-98c62a56.js → EllipsoidGeodesic-5b3623dc.js} +6 -6
  37. package/dist/assets/cesium/Workers/{EllipsoidGeometry-21c0e3a5.js → EllipsoidGeometry-b222fa63.js} +14 -14
  38. package/dist/assets/cesium/Workers/{EllipsoidOutlineGeometry-eff247c8.js → EllipsoidOutlineGeometry-38a3fb5b.js} +15 -15
  39. package/dist/assets/cesium/Workers/{EllipsoidRhumbLine-19756602.js → EllipsoidRhumbLine-ef872433.js} +9 -9
  40. package/dist/assets/cesium/Workers/{EllipsoidTangentPlane-214683dc.js → EllipsoidTangentPlane-8c89f28c.js} +1 -1
  41. package/dist/assets/cesium/Workers/{EncodedCartesian3-81f70735.js → EncodedCartesian3-57415c8a.js} +6 -6
  42. package/dist/assets/cesium/Workers/{FrustumGeometry-ac42a6d9.js → FrustumGeometry-bdd3a04d.js} +139 -111
  43. package/dist/assets/cesium/Workers/{GeometryAttribute-7d6f1732.js → GeometryAttribute-153115c5.js} +20 -20
  44. package/dist/assets/cesium/Workers/{GeometryAttributes-f06a2792.js → GeometryAttributes-ad136444.js} +1 -1
  45. package/dist/assets/cesium/Workers/{GeometryInstance-451dc1cd.js → GeometryInstance-34d9e21e.js} +6 -6
  46. package/dist/assets/cesium/Workers/{GeometryPipeline-ce4339ed.js → GeometryPipeline-acb2399c.js} +22 -22
  47. package/dist/assets/cesium/Workers/{IndexDatatype-a55ceaa1.js → IndexDatatype-2643aa47.js} +13 -13
  48. package/dist/assets/cesium/Workers/{IntersectionTests-f6e6bd8a.js → IntersectionTests-271e513e.js} +37 -37
  49. package/dist/assets/cesium/Workers/{Math-2dbd6b93.js → Math-0a2ac845.js} +149 -139
  50. package/dist/assets/cesium/Workers/{Matrix2-13178034.js → Matrix2-e1298525.js} +256 -256
  51. package/dist/assets/cesium/Workers/{Matrix3-315394f6.js → Matrix3-41c58dde.js} +150 -150
  52. package/dist/assets/cesium/Workers/{OrientedBoundingBox-04920dc7.js → OrientedBoundingBox-5e04e31f.js} +19 -17
  53. package/dist/assets/cesium/Workers/{Plane-900aa728.js → Plane-4c3d403b.js} +5 -5
  54. package/dist/assets/cesium/Workers/{PolygonGeometryLibrary-a8680d96.js → PolygonGeometryLibrary-6762b65b.js} +6 -6
  55. package/dist/assets/cesium/Workers/PolygonPipeline-7dc7a431.js +1344 -0
  56. package/dist/assets/cesium/Workers/{PolylinePipeline-32f36d2a.js → PolylinePipeline-15fde655.js} +16 -16
  57. package/dist/assets/cesium/Workers/{PolylineVolumeGeometryLibrary-a510d657.js → PolylineVolumeGeometryLibrary-ba7dfed5.js} +7 -7
  58. package/dist/assets/cesium/Workers/{PrimitivePipeline-ba38434a.js → PrimitivePipeline-68f0b9a2.js} +6 -6
  59. package/dist/assets/cesium/Workers/{RectangleGeometryLibrary-bdba697e.js → RectangleGeometryLibrary-8eaf23da.js} +1 -1
  60. package/dist/assets/cesium/Workers/{RuntimeError-06c93819.js → RuntimeError-ef395448.js} +5 -5
  61. package/dist/assets/cesium/Workers/{TerrainEncoding-833187da.js → TerrainEncoding-eb8a645a.js} +30 -30
  62. package/dist/assets/cesium/Workers/Transforms-f6451f99.js +14698 -0
  63. package/dist/assets/cesium/Workers/{VertexFormat-6b480673.js → VertexFormat-030f11ff.js} +14 -14
  64. package/dist/assets/cesium/Workers/{WallGeometryLibrary-919eed92.js → WallGeometryLibrary-feef3109.js} +1 -1
  65. package/dist/assets/cesium/Workers/{WebGLConstants-a8cc3e8c.js → WebGLConstants-0b1ce7ba.js} +1 -1
  66. package/dist/assets/cesium/Workers/{WebMercatorProjection-13a90d41.js → WebMercatorProjection-13ed1a6e.js} +6 -6
  67. package/dist/assets/cesium/Workers/{arrayRemoveDuplicates-c2038105.js → arrayRemoveDuplicates-d2061e85.js} +5 -5
  68. package/dist/assets/cesium/Workers/cesiumWorkerBootstrapper.js +5 -5
  69. package/dist/assets/cesium/Workers/{combine-ca22a614.js → combine-d9581036.js} +5 -5
  70. package/dist/assets/cesium/Workers/combineGeometry.js +1 -1
  71. package/dist/assets/cesium/Workers/createBoxGeometry.js +1 -1
  72. package/dist/assets/cesium/Workers/createBoxOutlineGeometry.js +9 -9
  73. package/dist/assets/cesium/Workers/createCircleGeometry.js +13 -13
  74. package/dist/assets/cesium/Workers/createCircleOutlineGeometry.js +13 -13
  75. package/dist/assets/cesium/Workers/createCoplanarPolygonGeometry.js +11 -11
  76. package/dist/assets/cesium/Workers/createCoplanarPolygonOutlineGeometry.js +9 -9
  77. package/dist/assets/cesium/Workers/createCorridorGeometry.js +14 -14
  78. package/dist/assets/cesium/Workers/createCorridorOutlineGeometry.js +12 -12
  79. package/dist/assets/cesium/Workers/createCylinderGeometry.js +1 -1
  80. package/dist/assets/cesium/Workers/createCylinderOutlineGeometry.js +13 -13
  81. package/dist/assets/cesium/Workers/createEllipseGeometry.js +1 -1
  82. package/dist/assets/cesium/Workers/createEllipseOutlineGeometry.js +1 -1
  83. package/dist/assets/cesium/Workers/createEllipsoidGeometry.js +1 -1
  84. package/dist/assets/cesium/Workers/createEllipsoidOutlineGeometry.js +1 -1
  85. package/dist/assets/cesium/Workers/createFrustumGeometry.js +1 -1
  86. package/dist/assets/cesium/Workers/createFrustumOutlineGeometry.js +8 -8
  87. package/dist/assets/cesium/Workers/createGeometry.js +1 -1
  88. package/dist/assets/cesium/Workers/createGroundPolylineGeometry.js +33 -33
  89. package/dist/assets/cesium/Workers/createPlaneGeometry.js +8 -8
  90. package/dist/assets/cesium/Workers/createPlaneOutlineGeometry.js +6 -6
  91. package/dist/assets/cesium/Workers/createPolygonGeometry.js +25 -25
  92. package/dist/assets/cesium/Workers/createPolygonOutlineGeometry.js +17 -17
  93. package/dist/assets/cesium/Workers/createPolylineGeometry.js +11 -11
  94. package/dist/assets/cesium/Workers/createPolylineVolumeGeometry.js +9 -9
  95. package/dist/assets/cesium/Workers/createPolylineVolumeOutlineGeometry.js +9 -9
  96. package/dist/assets/cesium/Workers/createRectangleGeometry.js +16 -16
  97. package/dist/assets/cesium/Workers/createRectangleOutlineGeometry.js +12 -12
  98. package/dist/assets/cesium/Workers/createSimplePolylineGeometry.js +10 -10
  99. package/dist/assets/cesium/Workers/createSphereGeometry.js +11 -11
  100. package/dist/assets/cesium/Workers/createSphereOutlineGeometry.js +12 -12
  101. package/dist/assets/cesium/Workers/createTaskProcessorWorker.js +2 -2
  102. package/dist/assets/cesium/Workers/createVectorTileClampedPolylines.js +1 -1
  103. package/dist/assets/cesium/Workers/createVectorTileGeometries.js +8 -8
  104. package/dist/assets/cesium/Workers/createVectorTilePoints.js +1 -1
  105. package/dist/assets/cesium/Workers/createVectorTilePolygons.js +1 -1
  106. package/dist/assets/cesium/Workers/createVectorTilePolylines.js +1 -1
  107. package/dist/assets/cesium/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js +1 -1
  108. package/dist/assets/cesium/Workers/createVerticesFromHeightmap.js +27 -28
  109. package/dist/assets/cesium/Workers/createVerticesFromQuantizedTerrainMesh.js +33 -38
  110. package/dist/assets/cesium/Workers/createWallGeometry.js +14 -14
  111. package/dist/assets/cesium/Workers/createWallOutlineGeometry.js +14 -14
  112. package/dist/assets/cesium/Workers/decodeDraco.js +10 -2
  113. package/dist/assets/cesium/Workers/decodeGoogleEarthEnterprisePacket.js +15 -15
  114. package/dist/assets/cesium/Workers/decodeI3S.js +1 -1
  115. package/dist/assets/cesium/Workers/{defaultValue-0a909f67.js → defaultValue-fe22d8c0.js} +2 -2
  116. package/dist/assets/cesium/Workers/package.js +1 -1
  117. package/dist/assets/cesium/Workers/transcodeKTX2.js +46 -26
  118. package/dist/assets/cesium/Workers/transferTypedArrayTest.js +1 -1
  119. package/dist/assets/cesium/Workers/upsampleQuantizedTerrainMesh.js +24 -24
  120. package/dist/assets/{cesium.166f91.js → cesium.253914.js} +36578 -33768
  121. package/dist/assets/cesium.js +1 -1
  122. package/dist/assets/{core.9342a1.js → core.3a8205.js} +53 -58
  123. package/dist/assets/core.js +1 -1
  124. package/dist/assets/{index.fd041928.js → index.91ae2d55.js} +1 -1
  125. package/dist/assets/{ol.d2cba3.js → ol.1c946a.js} +5550 -5491
  126. package/dist/assets/ol.js +1 -1
  127. package/dist/assets/ui.0025be.css +5 -0
  128. package/dist/assets/{ui.c27597.js → ui.0025be.js} +5494 -4759
  129. package/dist/assets/ui.js +1 -1
  130. package/dist/assets/vue.js +2 -2
  131. package/dist/assets/{vuetify.2f1432.css → vuetify.6efa21.css} +2 -2
  132. package/dist/assets/{vuetify.2f1432.js → vuetify.6efa21.js} +1 -1
  133. package/dist/assets/vuetify.js +2 -2
  134. package/dist/index.html +27 -7
  135. package/index.html +26 -6
  136. package/index.js +65 -15
  137. package/lib/cesium.js +1 -1
  138. package/lib/core.js +1 -1
  139. package/lib/ui.js +1 -1
  140. package/lib/vue.js +2 -2
  141. package/lib/vuetify.js +2 -2
  142. package/package.json +18 -9
  143. package/plugins/.eslintrc +9 -0
  144. package/plugins/@vcmap/create-link/fallbackCreateLink.vue +13 -9
  145. package/plugins/@vcmap/create-link/index.js +15 -6
  146. package/plugins/@vcmap/project-selector/ModulesListComponent.vue +4 -8
  147. package/plugins/@vcmap/project-selector/ProjectSelectorComponent.vue +5 -10
  148. package/plugins/@vcmap/project-selector/README.md +4 -2
  149. package/plugins/@vcmap/project-selector/config.json +13 -13
  150. package/plugins/@vcmap/project-selector/de.json +2 -2
  151. package/plugins/@vcmap/project-selector/en.json +2 -2
  152. package/plugins/@vcmap/project-selector/index.js +63 -28
  153. package/plugins/@vcmap/search-nominatim/LICENSE.md +5 -6
  154. package/plugins/@vcmap/search-nominatim/README.md +2 -1
  155. package/plugins/@vcmap/search-nominatim/config.json +1 -2
  156. package/plugins/@vcmap/search-nominatim/index.js +7 -4
  157. package/plugins/@vcmap/search-nominatim/nominatim.js +7 -2
  158. package/plugins/@vcmap/search-nominatim/package.json +2 -36
  159. package/plugins/@vcmap/simple-graph/README.md +29 -9
  160. package/plugins/@vcmap/simple-graph/SimpleGraphComponent.vue +2 -7
  161. package/plugins/@vcmap/simple-graph/index.js +1 -1
  162. package/plugins/@vcmap/simple-graph/simpleGraphView.js +3 -1
  163. package/plugins/@vcmap/theme-changer/README.md +5 -3
  164. package/plugins/@vcmap/theme-changer/ThemeChangerComponent.vue +6 -10
  165. package/plugins/@vcmap/theme-changer/config.json +67 -67
  166. package/plugins/@vcmap/theme-changer/index.js +11 -5
  167. package/plugins/@vcmap-show-case/buttons-example/ButtonsExample.vue +76 -11
  168. package/plugins/@vcmap-show-case/buttons-example/index.js +10 -8
  169. package/plugins/@vcmap-show-case/category-tester/Categories.vue +143 -116
  170. package/plugins/@vcmap-show-case/category-tester/Category.vue +46 -26
  171. package/plugins/@vcmap-show-case/category-tester/index.js +9 -3
  172. package/plugins/@vcmap-show-case/config-editor/{editor.vue → ConfigEditor.vue} +20 -24
  173. package/plugins/@vcmap-show-case/config-editor/index.js +13 -11
  174. package/plugins/@vcmap-show-case/context-menu-tester/index.js +18 -10
  175. package/plugins/@vcmap-show-case/form-inputs-example/FormInputsExample.vue +89 -118
  176. package/plugins/@vcmap-show-case/form-inputs-example/config.json +3 -3
  177. package/plugins/@vcmap-show-case/form-inputs-example/exampleActions.js +14 -4
  178. package/plugins/@vcmap-show-case/form-inputs-example/index.js +41 -19
  179. package/plugins/@vcmap-show-case/form-inputs-example/validation.js +2 -1
  180. package/plugins/@vcmap-show-case/icons-example/README.md +1 -1
  181. package/plugins/@vcmap-show-case/icons-example/allIconsComponent.vue +10 -10
  182. package/plugins/@vcmap-show-case/icons-example/index.js +10 -8
  183. package/plugins/@vcmap-show-case/list-example/ListExample.vue +221 -103
  184. package/plugins/@vcmap-show-case/list-example/index.js +10 -8
  185. package/plugins/@vcmap-show-case/notifier-tester/index.js +9 -3
  186. package/plugins/@vcmap-show-case/notifier-tester/notifierTester.vue +15 -21
  187. package/plugins/@vcmap-show-case/table-example/DataTableExample.vue +22 -41
  188. package/plugins/@vcmap-show-case/table-example/index.js +10 -8
  189. package/plugins/@vcmap-show-case/textfields-example/TextfieldsExample.vue +7 -30
  190. package/plugins/@vcmap-show-case/textfields-example/index.js +10 -4
  191. package/plugins/@vcmap-show-case/window-tester/WindowExample.vue +16 -13
  192. package/plugins/@vcmap-show-case/window-tester/emptyComponent.vue +4 -7
  193. package/plugins/@vcmap-show-case/window-tester/index.js +26 -20
  194. package/plugins/@vcmap-show-case/window-tester/myCustomHeader.vue +7 -3
  195. package/plugins/@vcmap-show-case/window-tester/toolbox-data.js +82 -5
  196. package/plugins/@vcmap-show-case/window-tester/windowExampleContent.vue +3 -7
  197. package/plugins/@vcmap-show-case/wizard-example/index.js +9 -3
  198. package/plugins/@vcmap-show-case/wizard-example/wizardExample.vue +36 -38
  199. package/src/actions/actionHelper.js +49 -11
  200. package/src/actions/styleSelector.vue +20 -11
  201. package/src/application/VcsApp.vue +117 -80
  202. package/src/application/VcsAttributions.vue +8 -9
  203. package/src/application/VcsAttributionsFooter.vue +12 -9
  204. package/src/application/VcsMap.vue +9 -5
  205. package/src/application/VcsNavbar.vue +44 -27
  206. package/src/application/VcsSettings.vue +5 -12
  207. package/src/application/attributionsHelper.js +23 -11
  208. package/src/application/vcsAppWrapper.vue +1 -3
  209. package/src/components/buttons/VcsActionButtonList.vue +20 -17
  210. package/src/components/buttons/VcsButton.vue +19 -23
  211. package/src/components/buttons/VcsFormButton.vue +176 -0
  212. package/src/components/form-inputs-controls/VcsCheckbox.vue +6 -7
  213. package/src/components/form-inputs-controls/VcsDatePicker.vue +50 -19
  214. package/src/components/form-inputs-controls/VcsFormSection.vue +11 -12
  215. package/src/components/form-inputs-controls/VcsLabel.vue +9 -10
  216. package/src/components/form-inputs-controls/VcsRadio.vue +44 -44
  217. package/src/components/form-inputs-controls/VcsSelect.vue +16 -13
  218. package/src/components/form-inputs-controls/VcsTextArea.vue +21 -14
  219. package/src/components/form-inputs-controls/VcsTextField.vue +26 -12
  220. package/src/components/form-inputs-controls/VcsWizard.vue +78 -78
  221. package/src/components/form-inputs-controls/VcsWizardStep.vue +20 -20
  222. package/src/components/form-inputs-controls/composables.js +13 -8
  223. package/src/components/form-output/VcsFormattedNumber.vue +26 -26
  224. package/src/components/icons/+all.js +13 -5
  225. package/src/components/icons/2DAreaIcon.vue +62 -10
  226. package/src/components/icons/2DDistanceIcon.vue +14 -2
  227. package/src/components/icons/3DAreaIcon.vue +62 -10
  228. package/src/components/icons/3DDistanceIcon.vue +14 -2
  229. package/src/components/icons/3DHeightIcon.vue +14 -2
  230. package/src/components/icons/AngleIcon.vue +12 -3
  231. package/src/components/icons/AssociationsIcon.vue +6 -1
  232. package/src/components/icons/AxisIcon.vue +34 -5
  233. package/src/components/icons/BoundingBoxIcon.vue +31 -5
  234. package/src/components/icons/CheckboxCheckedIcon.vue +4 -1
  235. package/src/components/icons/CheckboxIcon.vue +1 -8
  236. package/src/components/icons/CheckboxIndeterminateIcon.vue +9 -2
  237. package/src/components/icons/CircleIcon.vue +24 -4
  238. package/src/components/icons/ClippingHorizontalIcon.vue +14 -2
  239. package/src/components/icons/ClippingIcon.vue +13 -2
  240. package/src/components/icons/ClippingVerticalIcon.vue +14 -2
  241. package/src/components/icons/ColorPickerIcon.vue +13 -2
  242. package/src/components/icons/ColorSwatchIcon.vue +7 -1
  243. package/src/components/icons/CommentIcon.vue +6 -1
  244. package/src/components/icons/CompassIcon.vue +21 -3
  245. package/src/components/icons/ComponentsIcon.vue +14 -2
  246. package/src/components/icons/ConeIcon.vue +26 -4
  247. package/src/components/icons/DimensionsHouseIcon.vue +7 -1
  248. package/src/components/icons/EditIcon.vue +13 -2
  249. package/src/components/icons/ElevationProfileIcon.vue +6 -1
  250. package/src/components/icons/ExportAreaIcon.vue +13 -2
  251. package/src/components/icons/ExportFlightIcon.vue +13 -2
  252. package/src/components/icons/ExportIcon.vue +14 -2
  253. package/src/components/icons/ExternalLinkIcon.vue +18 -3
  254. package/src/components/icons/EyeIcon.vue +12 -2
  255. package/src/components/icons/FastForwardIcon.vue +13 -2
  256. package/src/components/icons/FilterIcon.vue +13 -2
  257. package/src/components/icons/GlobalTerrainIcon.vue +12 -2
  258. package/src/components/icons/GlobeNatureIcon.vue +7 -1
  259. package/src/components/icons/GroundIcon.vue +12 -2
  260. package/src/components/icons/HealthCareIndustriesIcon.vue +6 -1
  261. package/src/components/icons/HelpIcon.vue +12 -2
  262. package/src/components/icons/HideIcon.vue +17 -3
  263. package/src/components/icons/HomePointIcon.vue +13 -3
  264. package/src/components/icons/HospitalsIcon.vue +6 -1
  265. package/src/components/icons/HouseIcon.vue +20 -3
  266. package/src/components/icons/ImportIcon.vue +21 -3
  267. package/src/components/icons/InfoIcon.vue +19 -3
  268. package/src/components/icons/KebabIcon.vue +12 -2
  269. package/src/components/icons/LabelIcon.vue +21 -3
  270. package/src/components/icons/LayersIcon.vue +12 -2
  271. package/src/components/icons/LegendIcon.vue +13 -3
  272. package/src/components/icons/LineIcon.vue +20 -3
  273. package/src/components/icons/LinkIcon.vue +13 -2
  274. package/src/components/icons/LogoutIcon.vue +13 -2
  275. package/src/components/icons/MapIcon.vue +14 -2
  276. package/src/components/icons/MenuIcon.vue +7 -1
  277. package/src/components/icons/MinusIcon.vue +14 -2
  278. package/src/components/icons/ObjectAttributeIcon.vue +13 -2
  279. package/src/components/icons/ObjectSelectIcon.vue +14 -2
  280. package/src/components/icons/ObliqueViewIcon.vue +11 -2
  281. package/src/components/icons/PdfIcon.vue +12 -2
  282. package/src/components/icons/PedestrianIcon.vue +13 -2
  283. package/src/components/icons/PenIcon.vue +13 -3
  284. package/src/components/icons/PlayCircleIcon.vue +20 -3
  285. package/src/components/icons/PlusIcon.vue +14 -3
  286. package/src/components/icons/PoiIcon.vue +17 -3
  287. package/src/components/icons/PointSelectIcon.vue +12 -2
  288. package/src/components/icons/PolygonIcon.vue +7 -1
  289. package/src/components/icons/PresentationModeIcon.vue +13 -2
  290. package/src/components/icons/ProgressIcon.vue +8 -6
  291. package/src/components/icons/QueryIcon.vue +31 -5
  292. package/src/components/icons/RectangleIcon.vue +24 -4
  293. package/src/components/icons/ReturnIcon.vue +13 -2
  294. package/src/components/icons/RewindIcon.vue +13 -2
  295. package/src/components/icons/RotateLeftIcon.vue +13 -2
  296. package/src/components/icons/RotateRightIcon.vue +13 -2
  297. package/src/components/icons/ScreenshotIcon.vue +52 -10
  298. package/src/components/icons/SearchIcon.vue +13 -3
  299. package/src/components/icons/ShadowIcon.vue +14 -3
  300. package/src/components/icons/ShapesIcon.vue +13 -3
  301. package/src/components/icons/ShareIcon.vue +17 -4
  302. package/src/components/icons/SimpleCircleFilledIcon.vue +14 -10
  303. package/src/components/icons/SimpleCircleHalfFilledIcon.vue +6 -1
  304. package/src/components/icons/SimpleCircleOutlinedIcon.vue +14 -10
  305. package/src/components/icons/SkipNextIcon.vue +11 -2
  306. package/src/components/icons/SkipPreviousIcon.vue +17 -3
  307. package/src/components/icons/SplitViewIcon.vue +6 -1
  308. package/src/components/icons/TerrainBoxIcon.vue +12 -2
  309. package/src/components/icons/TextStyleIcon.vue +7 -1
  310. package/src/components/icons/ThreeDimensionsIcon.vue +13 -2
  311. package/src/components/icons/ToolsIcon.vue +12 -2
  312. package/src/components/icons/TouchIcon.vue +13 -2
  313. package/src/components/icons/TrashCanIcon.vue +13 -2
  314. package/src/components/icons/TriangleIcon.vue +6 -2
  315. package/src/components/icons/TwoDimensionsIcon.vue +14 -2
  316. package/src/components/icons/UploadIcon.vue +13 -2
  317. package/src/components/icons/UserProfileIcon.vue +13 -2
  318. package/src/components/icons/UserShareIcon.vue +12 -2
  319. package/src/components/icons/VideoRecorderIcon.vue +16 -3
  320. package/src/components/icons/ViewpointFlightIcon.vue +22 -4
  321. package/src/components/icons/ViewpointIcon.vue +22 -4
  322. package/src/components/icons/Viewshed360Icon.vue +14 -2
  323. package/src/components/icons/ViewshedConeIcon.vue +13 -2
  324. package/src/components/icons/ViewshedIcon.vue +14 -2
  325. package/src/components/icons/WalkingIcon.vue +13 -2
  326. package/src/components/icons/WallIcon.vue +19 -3
  327. package/src/components/icons/WandIcon.vue +129 -21
  328. package/src/components/imageElementInjector.vue +1 -3
  329. package/src/components/lists/VcsActionList.vue +21 -18
  330. package/src/components/lists/VcsList.vue +208 -98
  331. package/src/components/lists/VcsTreeview.vue +30 -26
  332. package/src/components/lists/VcsTreeviewLeaf.vue +23 -22
  333. package/src/components/lists/VcsTreeviewSearchbar.vue +19 -15
  334. package/src/components/notification/VcsBadge.vue +4 -6
  335. package/src/components/notification/VcsTooltip.vue +95 -94
  336. package/src/components/notification/validation.js +1 -1
  337. package/src/components/tables/VcsDataTable.vue +107 -95
  338. package/src/components/tables/VcsTable.vue +38 -30
  339. package/src/contentTree/LayerTree.vue +2 -3
  340. package/src/contentTree/contentTreeCollection.js +48 -22
  341. package/src/contentTree/contentTreeItem.js +36 -14
  342. package/src/contentTree/groupContentTreeItem.js +44 -22
  343. package/src/contentTree/layerContentTreeItem.js +42 -20
  344. package/src/contentTree/layerGroupContentTreeItem.js +53 -31
  345. package/src/contentTree/nodeContentTreeItem.js +18 -7
  346. package/src/contentTree/obliqueCollectionContentTreeItem.js +45 -20
  347. package/src/contentTree/subContentTreeItem.js +13 -4
  348. package/src/contentTree/vcsObjectContentTreeItem.js +24 -15
  349. package/src/contentTree/viewpointContentTreeItem.js +19 -6
  350. package/src/downloadHelper.js +4 -1
  351. package/src/featureInfo/AddressBalloonComponent.vue +11 -16
  352. package/src/featureInfo/BalloonComponent.vue +35 -26
  353. package/src/featureInfo/abstractFeatureInfoView.js +29 -13
  354. package/src/featureInfo/addressBalloonFeatureInfoView.js +19 -7
  355. package/src/featureInfo/balloonFeatureInfoView.js +22 -9
  356. package/src/featureInfo/balloonHelper.js +61 -42
  357. package/src/featureInfo/featureInfo.js +71 -31
  358. package/src/featureInfo/featureInfoInteraction.js +13 -7
  359. package/src/featureInfo/iframeFeatureInfoView.js +3 -1
  360. package/src/featureInfo/tableFeatureInfoView.js +15 -5
  361. package/src/i18n/i18nCollection.js +183 -155
  362. package/src/init.js +124 -121
  363. package/src/legend/legendHelper.js +11 -6
  364. package/src/legend/styleLegendItem.vue +18 -12
  365. package/src/legend/vcsLegend.vue +15 -17
  366. package/src/manager/buttonManager.js +6 -3
  367. package/src/manager/categoryManager/CategoryComponent.vue +52 -25
  368. package/src/manager/categoryManager/CategoryComponentList.vue +33 -8
  369. package/src/manager/categoryManager/CategoryManager.vue +4 -5
  370. package/src/manager/categoryManager/categoryManager.js +82 -37
  371. package/src/manager/contextMenu/contextMenuComponent.vue +2 -6
  372. package/src/manager/contextMenu/contextMenuInteraction.js +6 -1
  373. package/src/manager/contextMenu/contextMenuManager.js +37 -22
  374. package/src/manager/navbarManager.js +15 -8
  375. package/src/manager/toolbox/GroupToolboxComponent.vue +22 -21
  376. package/src/manager/toolbox/SelectToolboxComponent.vue +36 -35
  377. package/src/manager/toolbox/ToolboxManager.vue +18 -10
  378. package/src/manager/toolbox/toolboxManager.js +30 -12
  379. package/src/manager/window/WindowComponent.vue +18 -21
  380. package/src/manager/window/WindowComponentHeader.vue +34 -26
  381. package/src/manager/window/WindowManager.vue +33 -22
  382. package/src/manager/window/windowHelper.js +79 -23
  383. package/src/manager/window/windowManager.js +61 -32
  384. package/src/navigation/mapNavCompass.vue +17 -3
  385. package/src/navigation/mapNavigation.vue +59 -40
  386. package/src/navigation/obliqueRotation.vue +6 -8
  387. package/src/navigation/orientationToolsButton.vue +6 -9
  388. package/src/navigation/overviewMap.js +72 -41
  389. package/src/navigation/overviewMapClickedInteraction.js +6 -1
  390. package/src/navigation/tiltSlider.vue +6 -10
  391. package/src/navigation/vcsCompass.vue +1 -9
  392. package/src/navigation/vcsZoomButton.vue +16 -17
  393. package/src/notifier/notifier.js +22 -13
  394. package/src/notifier/notifierComponent.vue +21 -21
  395. package/src/pluginHelper.js +23 -9
  396. package/src/search/resultItem.vue +10 -15
  397. package/src/search/resultsComponent.vue +30 -24
  398. package/src/search/search.js +36 -19
  399. package/src/search/searchComponent.vue +20 -10
  400. package/src/setup.js +9 -9
  401. package/src/state.js +22 -6
  402. package/src/styles/_typography.scss +0 -1
  403. package/src/styles/shades.scss +4 -2
  404. package/src/styles/utils/_border.scss +1 -1
  405. package/src/styles/utils/_display.scss +1 -1
  406. package/src/styles/variables.scss +39 -34
  407. package/src/styles/vcsFont.scss +6 -5
  408. package/src/styles/vcsGrid.scss +9 -0
  409. package/src/uiConfig.js +3 -1
  410. package/src/vcsUiApp.js +156 -59
  411. package/src/vuePlugins/i18n.js +4 -4
  412. package/src/vuePlugins/vuetify.js +4 -0
  413. package/dist/assets/cesium/Workers/PolygonPipeline-844aab0a.js +0 -1345
  414. package/dist/assets/cesium/Workers/Transforms-40229881.js +0 -14696
  415. package/dist/assets/ui.c27597.css +0 -5
  416. /package/dist/assets/cesium/Workers/{GeometryOffsetAttribute-04332ce7.js → GeometryOffsetAttribute-9ad0019c.js} +0 -0
  417. /package/dist/assets/{vue.5d00e9.js → vue.c1ece7.js} +0 -0
@@ -1,7 +1,6 @@
1
1
  import { ref, reactive, watch } from 'vue';
2
2
  import { getLogger as getLoggerByName } from '@vcsuite/logger';
3
3
 
4
-
5
4
  import { ButtonLocation, createToggleAction, WindowSlot } from '@vcmap/ui';
6
5
  import packageJSON from './package.json';
7
6
  import defaultConfig from './config.json';
@@ -46,7 +45,7 @@ export function getDefaultConfig() {
46
45
  * @param {FormInputsExampleConfig} config
47
46
  * @returns {VcsPlugin}
48
47
  */
49
- export default function (config) {
48
+ export default function formInputsExample(config) {
50
49
  /**
51
50
  * @type {FormInputsExampleConfig}
52
51
  */
@@ -54,7 +53,9 @@ export default function (config) {
54
53
  // not reactive can be put without using reactive or ref
55
54
  nonReactiveProp: 'nonReactive',
56
55
  // no validation, ref to track config changes; use reactive on nested arrays or objects
57
- selectOptions: ref([...config.selectOptions] || [...defaultConfig.selectOptions]),
56
+ selectOptions: ref(
57
+ [...config.selectOptions] || [...defaultConfig.selectOptions],
58
+ ),
58
59
  // ref prop with getter setter --> validation
59
60
  _initialTextInput: ref(defaultConfig.initialTextInput),
60
61
  set initialTextInput(value) {
@@ -62,10 +63,15 @@ export default function (config) {
62
63
  if (validation === true) {
63
64
  this._initialTextInput.value = value;
64
65
  } else {
65
- getLogger().error('Error setting initialTextInput on plugin config:', validation);
66
+ getLogger().error(
67
+ 'Error setting initialTextInput on plugin config:',
68
+ validation,
69
+ );
66
70
  }
67
71
  },
68
- get initialTextInput() { return this._initialTextInput; },
72
+ get initialTextInput() {
73
+ return this._initialTextInput;
74
+ },
69
75
  };
70
76
  if (config.initialTextInput) {
71
77
  pluginConfig.initialTextInput = config.initialTextInput;
@@ -90,7 +96,6 @@ export default function (config) {
90
96
  /** @type {FormInputsExampleState} */
91
97
  const defaultState = JSON.parse(JSON.stringify(pluginState));
92
98
 
93
-
94
99
  /**
95
100
  * watcher to update state, when specific config properties are changed
96
101
  * @see https://v3.vuejs.org/guide/reactivity-computed-watchers.html#watching-multiple-sources
@@ -100,7 +105,7 @@ export default function (config) {
100
105
  * - if reactive objects or arrays shall be watched, you'll need to add option `{ deep: true }`
101
106
  * @see https://v3.vuejs.org/guide/reactivity-computed-watchers.html#watching-reactive-objects
102
107
  * in this case you may need a separate watcher, since watching multiple sources seems only to work for refs
103
- * @returns {WatchStopHandle}
108
+ * @returns {import("vue").WatchStopHandle}
104
109
  */
105
110
  const stopWatching = watch(
106
111
  [pluginConfig.selectOptions, pluginConfig.initialTextInput],
@@ -133,14 +138,20 @@ export default function (config) {
133
138
  * @type {Object<string, true|string>}
134
139
  */
135
140
  const validation = {
136
- conditionalInput: conditionalTest(stateObject.conditionalInput, stateObject.selected),
141
+ conditionalInput: conditionalTest(
142
+ stateObject.conditionalInput,
143
+ stateObject.selected,
144
+ ),
137
145
  initialTextInput: isValidText(stateObject.initialTextInput),
138
146
  email: isValidEmail(stateObject.email),
139
147
  };
140
148
  Object.keys(validation).forEach((key) => {
141
149
  if (validation[key] !== true) {
142
150
  // XXX warning or error???
143
- getLogger().warning(`Validation failed for state property "${key}":`, validation[key]);
151
+ getLogger().warning(
152
+ `Validation failed for state property "${key}":`,
153
+ validation[key],
154
+ );
144
155
  // XXX should invalid props be assigned or not?
145
156
  delete stateObject[key];
146
157
  }
@@ -149,12 +160,19 @@ export default function (config) {
149
160
  }
150
161
 
151
162
  return {
152
- get name() { return packageJSON.name; },
153
- get version() { return packageJSON.version; },
154
- get vcMapVersion() { return packageJSON.vcMapVersion; },
163
+ get name() {
164
+ return packageJSON.name;
165
+ },
166
+ get version() {
167
+ return packageJSON.version;
168
+ },
169
+ get vcMapVersion() {
170
+ return packageJSON.vcMapVersion;
171
+ },
155
172
  config: pluginConfig,
156
173
  state: reactive(pluginState),
157
- resetState: () => Object.assign(pluginState, JSON.parse(JSON.stringify(defaultState))),
174
+ resetState: () =>
175
+ Object.assign(pluginState, JSON.parse(JSON.stringify(defaultState))),
158
176
  getSerializedState,
159
177
  setSerializedState,
160
178
  onVcsAppMounted(app) {
@@ -209,9 +227,11 @@ export default function (config) {
209
227
  tooltip: 'Form Inputs Beispiel Plugin',
210
228
  help: 'Geben Sie eine Zahl in das Feld NumberInput ein. VcsFormattedNumber rundet auf eine Dezimalstelle.',
211
229
  help1: 'Wählen Sie eine Option',
212
- help1desc: 'Wenn \'Option A\' gewählt ist, muss der bedingte Input \'test\' sein.',
213
- help2: 'Ändern Sie den Wert von \'myInitialText\'',
214
- help2desc: 'InitialTextInput bleibt solange im Lade-Status, bis sich der Wert \'myInitialText\' ändert.',
230
+ help1desc:
231
+ "Wenn 'Option A' gewählt ist, muss der bedingte Input 'test' sein.",
232
+ help2: "Ändern Sie den Wert von 'myInitialText'",
233
+ help2desc:
234
+ "InitialTextInput bleibt solange im Lade-Status, bis sich der Wert 'myInitialText' ändert.",
215
235
  help3: 'Geben Sie eine Email Adresse ein',
216
236
  help3desc: 'Email Adressen werden validiert.',
217
237
  numbers: {
@@ -228,9 +248,11 @@ export default function (config) {
228
248
  tooltip: 'Form Inputs Example Plugin',
229
249
  help: 'Enter a number to the NumberInput field. VcsFormattedNumber rounds to one decimal digit.',
230
250
  help1: 'Select an option',
231
- help1desc: 'If \'Option A\' is chosen, conditional input must be \'test\'.',
232
- help2: 'Change \'myInitialText\' to some other value',
233
- help2desc: 'InitialTextInput text field stays in loading state, as long as \'myInitialText\' is not changed.',
251
+ help1desc:
252
+ "If 'Option A' is chosen, conditional input must be 'test'.",
253
+ help2: "Change 'myInitialText' to some other value",
254
+ help2desc:
255
+ "InitialTextInput text field stays in loading state, as long as 'myInitialText' is not changed.",
234
256
  help3: 'Enter an email address.',
235
257
  help3desc: 'Emails get validated.',
236
258
  numbers: {
@@ -25,6 +25,7 @@ export function conditionalTest(value, condition) {
25
25
  * @returns {boolean|string}
26
26
  */
27
27
  export function isValidEmail(value) {
28
- const pattern = /^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
28
+ const pattern =
29
+ /^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
29
30
  return pattern.test(value) || 'Invalid e-mail.';
30
31
  }
@@ -1,5 +1,5 @@
1
1
  # Icons Example
2
2
 
3
- This is a show-case plugin demonstrating the usage of icons.
3
+ This is a show-case plugin demonstrating the usage of icons.
4
4
  Lists all available VCS icons.
5
5
  See [icons](../../../src/components/icons) for the used components.
@@ -1,10 +1,6 @@
1
1
  <template>
2
2
  <v-sheet class="overflow-auto icons-window">
3
- <vcs-list
4
- :items="icons"
5
- :searchable="true"
6
- :show-title="false"
7
- />
3
+ <vcs-list :items="icons" :searchable="true" :show-title="false" />
8
4
  </v-sheet>
9
5
  </template>
10
6
 
@@ -31,21 +27,25 @@
31
27
  name: 'copy-icon-to-clipboard',
32
28
  icon: 'mdi-content-copy',
33
29
  title: `Copy ${key}`,
34
- callback: async () => { await navigator.clipboard.writeText(key); },
30
+ callback: async () => {
31
+ await navigator.clipboard.writeText(key);
32
+ },
35
33
  },
36
34
  ],
37
35
  };
38
36
  };
39
37
 
40
38
  return {
41
- icons: computed(() => Object.keys(Icons).map(icon => createListItem(icon))),
39
+ icons: computed(() =>
40
+ Object.keys(Icons).map((icon) => createListItem(icon)),
41
+ ),
42
42
  };
43
43
  },
44
44
  };
45
45
  </script>
46
46
 
47
47
  <style scoped>
48
- .icons-window {
49
- max-height: 600px;
50
- }
48
+ .icons-window {
49
+ max-height: 600px;
50
+ }
51
51
  </style>
@@ -7,9 +7,15 @@ import AllIconsComponent from './allIconsComponent.vue';
7
7
  */
8
8
  export default async function iconsExample() {
9
9
  return {
10
- get name() { return packageJSON.name; },
11
- get version() { return packageJSON.version; },
12
- get vcMapVersion() { return packageJSON.vcMapVersion; },
10
+ get name() {
11
+ return packageJSON.name;
12
+ },
13
+ get version() {
14
+ return packageJSON.version;
15
+ },
16
+ get vcMapVersion() {
17
+ return packageJSON.vcMapVersion;
18
+ },
13
19
  onVcsAppMounted(app) {
14
20
  const { action, destroy } = createToggleAction(
15
21
  {
@@ -27,11 +33,7 @@ export default async function iconsExample() {
27
33
  app.windowManager,
28
34
  packageJSON.name,
29
35
  );
30
- app.navbarManager.add(
31
- { action },
32
- packageJSON.name,
33
- ButtonLocation.TOOL,
34
- );
36
+ app.navbarManager.add({ action }, packageJSON.name, ButtonLocation.TOOL);
35
37
  this._destroyAction = destroy;
36
38
  },
37
39
  destroy() {
@@ -1,92 +1,182 @@
1
1
  <template>
2
2
  <v-sheet>
3
- <v-sheet class="px-2 d-grid">
4
- <v-switch
5
- v-model="selectable"
6
- label="Selectable"
7
- />
8
- <v-switch
9
- :disabled="!selectable"
10
- v-model="selectSingle"
11
- label=" Single Select"
12
- />
13
- <v-switch
14
- v-model="searchable"
15
- label="Searchable"
16
- />
17
- <v-dialog
18
- v-model="dialog"
19
- width="400"
20
- >
21
- <template #activator="{ on }">
22
- <vcs-button v-on="on">
23
- Add An item
24
- </vcs-button>
25
- </template>
26
- <v-card class="pa-2">
27
- <v-form
28
- @submit.prevent="add"
29
- >
30
- <vcs-text-field
31
- v-model="newItem.name"
32
- label="Name"
33
- :rules="required"
3
+ <VcsFormSection heading="Settings">
4
+ <v-container class="py-0 px-1">
5
+ <v-row no-gutters>
6
+ <v-col>
7
+ <v-switch
8
+ v-model="selectable"
9
+ label="Selectable"
10
+ class="ma-0"
11
+ dense
12
+ />
13
+ </v-col>
14
+ <v-col>
15
+ <v-switch
16
+ :disabled="!selectable"
17
+ v-model="selectSingle"
18
+ label=" Single Select"
19
+ class="ma-0"
20
+ dense
21
+ />
22
+ </v-col>
23
+ </v-row>
24
+ <v-row no-gutters>
25
+ <v-col>
26
+ <v-switch
27
+ dense
28
+ v-model="searchable"
29
+ label="Searchable"
30
+ class="ma-0"
34
31
  />
32
+ </v-col>
33
+ <v-col>
34
+ <v-switch
35
+ dense
36
+ v-model="draggable"
37
+ label="Draggable"
38
+ class="ma-0"
39
+ />
40
+ </v-col>
41
+ </v-row>
42
+ </v-container>
43
+ </VcsFormSection>
44
+ <VcsFormSection heading="Title">
45
+ <v-container class="py-0 px-1">
46
+ <v-row no-gutters>
47
+ <v-col>
48
+ <v-switch
49
+ dense
50
+ v-model="showTitle"
51
+ label="Show Title"
52
+ class="ma-0"
53
+ />
54
+ </v-col>
55
+ <v-col>
35
56
  <vcs-text-field
36
- v-model="newItem.title"
37
- label="Title"
38
- :rules="required"
57
+ v-model="title"
58
+ placeholder="Title"
59
+ :disabled="!showTitle"
60
+ />
61
+ </v-col>
62
+ </v-row>
63
+ <v-row no-gutters>
64
+ <v-col>
65
+ <v-switch
66
+ v-model="titleActions"
67
+ label="Title Actions"
68
+ class="ma-0"
69
+ dense
39
70
  />
40
- <v-switch label="visible" v-model="newItem.visible" />
41
- <v-switch label="disabled" v-model="newItem.disabled" />
42
- <v-switch label="random icon" v-model="newItem.icon" />
43
- <v-switch label="console.log action" v-model="newItem.action" />
44
- <v-switch label="console.log on clicked" v-model="newItem.clicked" />
45
- <v-switch label="console.log selected state" v-model="newItem.selected" />
46
- <vcs-button
47
- type="submit"
48
- >
49
- Add
50
- </vcs-button>
51
- </v-form>
52
- </v-card>
53
- </v-dialog>
54
- <v-divider class="ma-2" />
55
- <v-switch
56
- v-model="showTitle"
57
- label="Show Title"
58
- />
59
- <vcs-text-field v-model="title" placeholder="Title" />
60
- <v-switch
61
- v-model="titleActions"
62
- label="Title Actions"
63
- />
64
- <v-switch
65
- v-model="titleIcon"
66
- label="Title Icon"
67
- />
68
- <v-divider class="ma-2" />
69
- <template v-if="selectable">
70
- <vcs-button
71
- @click="selected = []"
72
- >
73
- Clear Selection
74
- </vcs-button>
75
- <v-switch v-model="showSelection" label="Show Selection" />
76
- <ul v-if="showSelection">
77
- <li
78
- v-for="(i, index) in selected"
79
- :key="`item-${index}`"
80
- >
81
- {{ i.title }}
82
- </li>
83
- </ul>
84
- </template>
85
- <v-divider class="ma-2" />
86
- </v-sheet>
71
+ </v-col>
72
+ <v-col>
73
+ <v-switch
74
+ dense
75
+ v-model="titleIcon"
76
+ label="Title Icon"
77
+ class="ma-0"
78
+ />
79
+ </v-col>
80
+ </v-row>
81
+ </v-container>
82
+ </VcsFormSection>
83
+ <VcsFormSection heading="Item">
84
+ <v-container class="py-1 px-1">
85
+ <v-row no-gutters>
86
+ <v-dialog v-model="dialog" width="400">
87
+ <template #activator="{ on }">
88
+ <vcs-form-button v-on="on"> Add An item </vcs-form-button>
89
+ </template>
90
+ <v-card class="pa-2">
91
+ <v-form @submit.prevent="add">
92
+ <vcs-text-field
93
+ v-model="newItem.name"
94
+ label="Name"
95
+ :rules="required"
96
+ />
97
+ <vcs-text-field
98
+ v-model="newItem.title"
99
+ label="Title"
100
+ :rules="required"
101
+ />
102
+ <v-switch
103
+ dense
104
+ label="visible"
105
+ v-model="newItem.visible"
106
+ class="ma-0"
107
+ />
108
+ <v-switch
109
+ dense
110
+ label="disabled"
111
+ v-model="newItem.disabled"
112
+ class="ma-0"
113
+ />
114
+ <v-switch
115
+ dense
116
+ label="random icon"
117
+ v-model="newItem.icon"
118
+ class="ma-0"
119
+ />
120
+ <v-switch
121
+ dense
122
+ label="hasUpdate"
123
+ v-model="newItem.hasUpdate"
124
+ class="ma-0"
125
+ />
126
+ <v-switch
127
+ dense
128
+ label="console.log action"
129
+ v-model="newItem.action"
130
+ class="ma-0"
131
+ />
132
+ <v-switch
133
+ label="console.log on clicked"
134
+ v-model="newItem.clicked"
135
+ class="ma-0"
136
+ />
137
+ <v-switch
138
+ dense
139
+ label="console.log selected state"
140
+ v-model="newItem.selected"
141
+ class="ma-0"
142
+ />
143
+ <vcs-form-button type="submit"> Add </vcs-form-button>
144
+ </v-form>
145
+ </v-card>
146
+ </v-dialog>
147
+ </v-row>
148
+ </v-container>
149
+ </VcsFormSection>
150
+ <VcsFormSection heading="Selection">
151
+ <v-container class="py-1 px-1">
152
+ <v-row no-gutters>
153
+ <template v-if="selectable">
154
+ <v-col>
155
+ <vcs-form-button @click="selected = []"> Clear </vcs-form-button>
156
+ </v-col>
157
+ <v-col>
158
+ <v-switch
159
+ v-model="showSelection"
160
+ label="Show Selection"
161
+ dense
162
+ class="ma-0"
163
+ />
164
+ </v-col>
165
+ </template>
166
+ </v-row>
167
+ <v-row no-gutters>
168
+ <ul v-if="showSelection" class="mx-2">
169
+ <li v-for="(i, index) in selected" :key="`item-${index}`">
170
+ {{ i.title }}
171
+ </li>
172
+ </ul>
173
+ </v-row>
174
+ </v-container>
175
+ </VcsFormSection>
87
176
 
88
177
  <vcs-list
89
178
  :items="items"
179
+ :draggable="draggable"
90
180
  :selectable="selectable"
91
181
  :single-select="selectSingle"
92
182
  :searchable="searchable"
@@ -95,19 +185,28 @@
95
185
  :actions="titleActionsArray"
96
186
  :title="title"
97
187
  v-model="selected"
188
+ @item-moved="move"
98
189
  />
99
190
  </v-sheet>
100
191
  </template>
101
192
 
102
193
  <script>
103
- import { VcsList, VcsButton, VcsTextField, Icons } from '@vcmap/ui';
194
+ import {
195
+ VcsList,
196
+ VcsFormButton,
197
+ VcsTextField,
198
+ Icons,
199
+ VcsFormSection,
200
+ } from '@vcmap/ui';
104
201
  import {
105
202
  VSwitch,
106
- VDivider,
107
203
  VSheet,
108
204
  VDialog,
109
205
  VCard,
110
206
  VForm,
207
+ VContainer,
208
+ VRow,
209
+ VCol,
111
210
  } from 'vuetify/lib';
112
211
  import { computed, ref } from 'vue';
113
212
 
@@ -123,12 +222,11 @@
123
222
  title: 'Foo',
124
223
  tooltip: 'this is the foo',
125
224
  icon: 'mdi-pen',
126
- selectionChanged: value => console.log('changed cb foo', value),
225
+ selectionChanged: (value) => console.log('changed cb foo', value),
127
226
  },
128
227
  {
129
228
  name: 'bar',
130
229
  title: 'Bar',
131
- tooltip: 'just a bar',
132
230
  actions: [
133
231
  {
134
232
  name: 'console.log',
@@ -137,13 +235,13 @@
137
235
  },
138
236
  },
139
237
  ],
140
- selectionChanged: value => console.log('changed cb bar', value),
238
+ selectionChanged: (value) => console.log('changed cb bar', value),
141
239
  },
142
240
  {
143
241
  name: 'baz',
144
242
  title: 'Baz',
145
243
  tooltip: 'special baz',
146
- selectionChanged: value => console.log('bchanged cb baz', value),
244
+ selectionChanged: (value) => console.log('bchanged cb baz', value),
147
245
  },
148
246
  ];
149
247
 
@@ -151,16 +249,20 @@
151
249
  name: 'ListExample',
152
250
  components: {
153
251
  VcsList,
154
- VcsButton,
252
+ VcsFormButton,
155
253
  VcsTextField,
254
+ VcsFormSection,
156
255
  VSwitch,
157
- VDivider,
158
256
  VSheet,
159
257
  VDialog,
160
258
  VCard,
161
259
  VForm,
260
+ VContainer,
261
+ VRow,
262
+ VCol,
162
263
  },
163
264
  setup() {
265
+ const draggable = ref(true);
164
266
  const selectable = ref(true);
165
267
  const searchable = ref(true);
166
268
  const selectSingle = ref(false);
@@ -184,6 +286,7 @@
184
286
  const dialog = ref(false);
185
287
 
186
288
  return {
289
+ draggable,
187
290
  selectable,
188
291
  searchable,
189
292
  selectSingle,
@@ -197,8 +300,8 @@
197
300
  newItem,
198
301
  dialog,
199
302
  required: [
200
- v => !!v || 'Input may not be null',
201
- v => v.length > 0 || 'Input must have a length',
303
+ (v) => !!v || 'Input may not be null',
304
+ (v) => v.length > 0 || 'Input must have a length',
202
305
  ],
203
306
  add() {
204
307
  const item = {
@@ -206,6 +309,7 @@
206
309
  title: newItem.value.title,
207
310
  disabled: newItem.value.disabled,
208
311
  visible: newItem.value.visible,
312
+ hasUpdate: newItem.value.hasUpdate,
209
313
  };
210
314
 
211
315
  if (newItem.value.icon) {
@@ -217,7 +321,7 @@
217
321
  {
218
322
  name: 'console.log',
219
323
  callback() {
220
- console.log('hi, i\'m: ', item.name);
324
+ console.log("hi, i'm: ", item.name);
221
325
  },
222
326
  },
223
327
  ];
@@ -230,8 +334,8 @@
230
334
  }
231
335
 
232
336
  if (newItem.value.selected) {
233
- item.selectionChanged = (selected) => {
234
- if (selected) {
337
+ item.selectionChanged = (selectedValue) => {
338
+ if (selectedValue) {
235
339
  console.log(`${item.name} is selected`);
236
340
  } else {
237
341
  console.log(`${item.name} is no longer selected`);
@@ -248,6 +352,7 @@
248
352
  action: false,
249
353
  clicked: false,
250
354
  selected: false,
355
+ hasUpdate: false,
251
356
  };
252
357
  dialog.value = false;
253
358
  },
@@ -257,12 +362,14 @@
257
362
  },
258
363
  set(value) {
259
364
  if (value) {
260
- titleActionsArray.value = [{
261
- name: 'console.log foo',
262
- callback() {
263
- console.log('foo');
365
+ titleActionsArray.value = [
366
+ {
367
+ name: 'console.log foo',
368
+ callback() {
369
+ console.log('foo');
370
+ },
264
371
  },
265
- }];
372
+ ];
266
373
  } else {
267
374
  titleActionsArray.value = [];
268
375
  }
@@ -280,14 +387,25 @@
280
387
  }
281
388
  },
282
389
  }),
390
+ move({ item, targetIndex }) {
391
+ let target = targetIndex;
392
+ target = target >= 0 ? target : 0;
393
+ target =
394
+ target < items.value.length ? target : items.value.length - 1;
395
+ const from = items.value.indexOf(item);
396
+ if (from !== target) {
397
+ items.value.splice(from, 1);
398
+ items.value.splice(target, 0, item);
399
+ }
400
+ },
283
401
  };
284
402
  },
285
403
  };
286
404
  </script>
287
405
 
288
406
  <style lang="scss" scoped>
289
- .d-grid{
290
- display: grid;
291
- grid-template-columns: 1fr 1fr;
292
- }
407
+ .d-grid {
408
+ display: grid;
409
+ grid-template-columns: 1fr 1fr;
410
+ }
293
411
  </style>