@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,58 +1,41 @@
1
1
  <template>
2
- <div
3
- class="d-contents"
4
- >
2
+ <div class="d-contents">
5
3
  <vcs-treeview-searchbar
6
4
  v-if="searchable"
7
5
  :placeholder="searchbarPlaceholder"
8
6
  v-model="query"
9
7
  />
10
- <v-list
11
- dense
12
- >
13
- <v-list-item
14
- v-if="showTitle"
15
- class="font-weight-bold"
16
- >
17
- <v-list-item-action
18
- v-if="selectable"
19
- >
8
+ <v-list dense>
9
+ <v-list-item v-if="showTitle" class="font-weight-bold">
10
+ <v-list-item-action v-if="selectable">
20
11
  <v-spacer v-if="singleSelect" />
21
12
  <v-icon
22
13
  v-else-if="selected.length === renderingItems.length"
23
14
  @click="clear"
24
15
  >
25
- mdi-check-circle-outline
26
- </v-icon>
27
- <v-icon
28
- v-else-if="selected.length > 0 && selected.length < renderingItems.length"
29
- @click="selectAll()"
30
- >
31
- mdi-minus-circle-outline
16
+ mdi-check-circle
32
17
  </v-icon>
33
18
  <v-icon
34
- v-else
19
+ v-else-if="
20
+ selected.length > 0 && selected.length < renderingItems.length
21
+ "
35
22
  @click="selectAll()"
36
23
  >
37
- mdi-circle-outline
24
+ mdi-minus-circle
38
25
  </v-icon>
26
+ <v-icon v-else @click="selectAll()"> mdi-circle-outline </v-icon>
39
27
  </v-list-item-action>
40
-
41
28
  <v-list-item-content>
42
29
  <v-icon v-if="icon">
43
30
  {{ icon }}
44
31
  </v-icon>
45
-
46
- <VcsTooltip
47
- :tooltip="tooltip || title"
48
- >
32
+ <VcsTooltip :tooltip="$t(listHeaderTooltip)">
49
33
  <template #activator="{ on, attrs }">
50
- <v-list-item-title v-bind="attrs" v-on="on">
34
+ <v-list-item-title v-bind="attrs" v-on="on" ref="listHeader">
51
35
  {{ $t(title) }}
52
36
  </v-list-item-title>
53
37
  </template>
54
38
  </VcsTooltip>
55
-
56
39
  <vcs-action-button-list
57
40
  v-if="actions?.length > 0"
58
41
  :actions="actions"
@@ -69,50 +52,58 @@
69
52
  :disabled="item.disabled"
70
53
  @mousedown.shift="$event.preventDefault()"
71
54
  @mouseover="hovering = index"
72
- @mouseout="hovering = null"
73
- :class="{ 'v-list-item__lighten_even': lightenEven, 'v-list-item__lighten_odd': !lightenEven }"
55
+ @mouseout="hovering = undefined"
56
+ :draggable="isDraggable"
57
+ @dragstart="drag($event, item, index)"
58
+ @mouseup="drop($event, index)"
59
+ :class="{
60
+ 'v-list-item__lighten_even': lightenEven,
61
+ 'v-list-item__lighten_odd': !lightenEven,
62
+ 'vcs-draggable-item': isDraggable,
63
+ 'v-list-item__dragged': dragging === index,
64
+ 'border-bottom': borderBottom(index),
65
+ 'border-top': borderTop(index),
66
+ }"
74
67
  >
75
- <v-list-item-action
76
- v-if="selectable"
77
- >
78
- <v-icon
79
- v-if="selected.includes(item)"
80
- @click="remove(item)"
81
- >
82
- mdi-check-circle-outline
68
+ <v-list-item-action v-if="selectable">
69
+ <v-icon v-if="selected.includes(item)" @click="remove(item)">
70
+ mdi-check-circle
83
71
  </v-icon>
84
72
  <v-icon
85
- v-else-if="hovering === index || (!singleSelect && selected.length > 0)"
73
+ v-else-if="
74
+ hovering === index || (!singleSelect && selected.length > 0)
75
+ "
86
76
  @click="singleSelect ? select(item, $event) : add(item)"
87
77
  >
88
78
  mdi-circle-outline
89
79
  </v-icon>
90
- <v-icon
91
- v-else
92
- @click="select(item, $event)"
93
- >
80
+ <v-icon v-else @click="select(item, $event)">
94
81
  mdi-circle-small
95
82
  </v-icon>
96
83
  </v-list-item-action>
97
-
98
84
  <v-list-item-content
99
- :class="[selectable ? 'cursor-pointer' : '']"
85
+ :class="[selectable && !isDraggable ? 'cursor-pointer' : '']"
100
86
  @click="select(item, $event)"
101
87
  >
102
88
  <v-icon v-if="item.icon">
103
89
  {{ item.icon }}
104
90
  </v-icon>
105
-
106
91
  <VcsTooltip
107
- :tooltip="item.tooltip || item.title"
92
+ :tooltip="
93
+ dragging !== undefined
94
+ ? undefined
95
+ : $t(item.tooltip || overflowTitle(index, item.title))
96
+ "
108
97
  >
109
98
  <template #activator="{ on, attrs }">
110
- <v-list-item-title v-bind="attrs" v-on="on">
99
+ <v-list-item-title v-bind="attrs" v-on="on" ref="titles">
111
100
  {{ $t(item.title) }}
112
101
  </v-list-item-title>
113
102
  </template>
114
103
  </VcsTooltip>
115
-
104
+ </v-list-item-content>
105
+ <VcsBadge v-if="item.hasUpdate" :color="'warning'" />
106
+ <v-list-item-action>
116
107
  <vcs-action-button-list
117
108
  v-if="item.actions?.length > 0"
118
109
  :actions="item.actions"
@@ -120,7 +111,7 @@
120
111
  :overflow-count="actionButtonListOverflowCount"
121
112
  small
122
113
  />
123
- </v-list-item-content>
114
+ </v-list-item-action>
124
115
  </v-list-item>
125
116
  </v-list>
126
117
  </div>
@@ -140,6 +131,7 @@
140
131
  import VcsActionButtonList from '../buttons/VcsActionButtonList.vue';
141
132
  import VcsTooltip from '../notification/VcsTooltip.vue';
142
133
  import VcsTreeviewSearchbar from './VcsTreeviewSearchbar.vue';
134
+ import VcsBadge from '../notification/VcsBadge.vue';
143
135
 
144
136
  /**
145
137
  * @typedef {Object} VcsListItem
@@ -148,14 +140,21 @@
148
140
  * @property {boolean} [disabled] - Whether this item should be displayed as disabled.
149
141
  * @property {string} title - The title to be displayed
150
142
  * @property {string} [tooltip]
151
- * @property {string|HTMLCanvasElement|HTMLImageElement|undefined} [icon] - An optional icon to display with this item. Can be an URL or HTMLElement.
143
+ * @property {string|HTMLCanvasElement|HTMLImageElement|undefined} [icon] - An optional icon to display with this item. Can be a URL or HTMLElement.
144
+ * @property {boolean} [hasUpdate] - Shows badge, if item has an update.
152
145
  * @property {Array<VcsAction>} [actions]
153
146
  * @property {function(boolean):void} [selectionChanged] - A callback called if the selection changes with the current selection status. called before value update
154
147
  */
155
148
 
156
149
  /**
157
- * The VCS list is intended to render items. Items can be selectable (by default, more then one) or only a single item can
158
- * be selected. If items are disabled they cannot selected. Items which are not visible are not rendered. This items can
150
+ * @typedef {Object} ItemMovedEvent
151
+ * @property {VcsListItem} item
152
+ * @property {number} targetIndex
153
+ */
154
+
155
+ /**
156
+ * The VCS list is intended to render items. Items can be selectable (by default, more than one) or only a single item can
157
+ * be selected. If items are disabled they cannot be selected. Items which are not visible are not rendered. These items can
159
158
  * no longer be selected or deselected either. Making a selected item invisible can lead to undefined behavior
160
159
  * in the selection state.
161
160
  * Clicking an unselected item selects it.
@@ -165,6 +164,7 @@
165
164
  * Clicking with SHIFT will create a selection range, starting or ending with the first item in the list
166
165
  * or the last normally selected item (not the last item clicked with CTRL for instance).
167
166
  * @vue-prop {Array<VcsListItem>} items
167
+ * @vue-prop {boolean} [draggable=false]
168
168
  * @vue-prop {boolean} [selectable=false]
169
169
  * @vue-prop {boolean} [singleSelect=false]
170
170
  * @vue-prop {Array<VcsListItem>} [value=[]] - the initial items to be selected.
@@ -176,10 +176,12 @@
176
176
  * @vue-prop {string} [icon] - icon to prepend to the list title
177
177
  * @vue-prop {string} [tooltip] - tooltip to render on the list title
178
178
  * @vue-prop {Array<VcsAction>} [actions] - actions to render in the list title
179
+ * @vue-event {ItemMovedEvent} item-moved - event triggered after item was dragged and is dropped
179
180
  */
180
181
  export default {
181
182
  name: 'VcsList',
182
183
  components: {
184
+ VcsBadge,
183
185
  VcsTreeviewSearchbar,
184
186
  VcsActionButtonList,
185
187
  VcsTooltip,
@@ -192,11 +194,14 @@
192
194
  VSpacer,
193
195
  },
194
196
  props: {
195
- /** @type {Array<VcsListItem>} */
196
197
  items: {
197
198
  type: Array,
198
199
  required: true,
199
200
  },
201
+ draggable: {
202
+ type: Boolean,
203
+ default: false,
204
+ },
200
205
  selectable: {
201
206
  type: Boolean,
202
207
  default: false,
@@ -205,7 +210,6 @@
205
210
  type: Boolean,
206
211
  default: false,
207
212
  },
208
- /** @type {Array<VcsListItem>} */
209
213
  value: {
210
214
  type: Array,
211
215
  default: () => [],
@@ -253,53 +257,117 @@
253
257
  const selected = ref(props.value);
254
258
  /** @type {import("vue").Ref<string>} */
255
259
  const query = ref('');
256
- const hovering = ref(null);
260
+ /** @type {import("vue").Ref<number|undefined>} */
261
+ const hovering = ref(undefined);
262
+ /** @type {import("vue").Ref<number|undefined>} */
263
+ const dragging = ref(undefined);
264
+ const borderBottom = (index) => {
265
+ return (
266
+ dragging.value !== undefined &&
267
+ dragging.value < index &&
268
+ index === hovering.value
269
+ );
270
+ };
271
+ const borderTop = (index) => {
272
+ return (
273
+ dragging.value !== undefined &&
274
+ dragging.value > index &&
275
+ index === hovering.value
276
+ );
277
+ };
257
278
  const lightenEven = computed(() => {
258
279
  return !(!props.searchable && !props.showTitle);
259
280
  });
260
281
  let firstSelected = null;
282
+ const titles = ref([]);
283
+ const listHeader = ref(null);
261
284
 
262
- watch(props, () => {
263
- if (selected.value !== props.value) {
264
- selected.value = props.value;
265
- }
266
- if (props.singleSelect && selected.value.length > 1) {
267
- selected.value
268
- .filter((i, index) => index && i.selectionChanged)
269
- .forEach(i => i.selectionChanged(false));
270
- selected.value = [selected.value[0]];
271
- emit('input', selected);
272
- }
273
- if (!props.selectable && selected.value.length > 0) {
274
- selected.value
275
- .filter(i => i.selectionChanged)
276
- .forEach(i => i.selectionChanged(false));
277
- selected.value = [];
278
- emit('input', selected);
279
- }
280
- if (!props.searchable) {
281
- query.value = '';
282
- }
283
- }, { immediate: true, deep: false });
285
+ watch(
286
+ props,
287
+ () => {
288
+ if (selected.value !== props.value) {
289
+ selected.value = props.value;
290
+ }
291
+ if (props.singleSelect && selected.value.length > 1) {
292
+ selected.value
293
+ .filter((i, index) => index && i.selectionChanged)
294
+ .forEach((i) => i.selectionChanged(false));
295
+ selected.value = [selected.value[0]];
296
+ emit('input', selected);
297
+ }
298
+ if (!props.selectable && selected.value.length > 0) {
299
+ selected.value
300
+ .filter((i) => i.selectionChanged)
301
+ .forEach((i) => i.selectionChanged(false));
302
+ selected.value = [];
303
+ emit('input', selected);
304
+ }
305
+ if (!props.searchable) {
306
+ query.value = '';
307
+ }
308
+ },
309
+ { immediate: true, deep: false },
310
+ );
284
311
 
285
312
  const vm = getCurrentInstance().proxy;
286
313
  /** @type {function(VcsListItem, string):boolean} */
287
- const filterPredicate = inject('filterPredicate', (item, queryString = '') => {
288
- const translatedTitle = vm.$t(item.title);
289
- return translatedTitle.toLocaleLowerCase().includes(queryString.toLocaleLowerCase());
290
- });
314
+ const filterPredicate = inject(
315
+ 'filterPredicate',
316
+ (item, queryString = '') => {
317
+ const translatedTitle = vm.$t(item.title);
318
+ return translatedTitle
319
+ .toLocaleLowerCase()
320
+ .includes(queryString.toLocaleLowerCase());
321
+ },
322
+ );
323
+
324
+ /**
325
+ * @type {VcsListItem|null}
326
+ */
327
+ let draggedItem = null;
328
+
329
+ /**
330
+ * @param {MouseEvent} e
331
+ * @param {number} targetIndex
332
+ */
333
+ function drop(e, targetIndex) {
334
+ if (draggedItem !== null && targetIndex !== undefined) {
335
+ emit('item-moved', { item: draggedItem, targetIndex });
336
+ }
337
+ draggedItem = null;
338
+ dragging.value = undefined;
339
+ document.removeEventListener('mouseup', drop);
340
+ }
341
+
342
+ /**
343
+ * @param {MouseEvent} e
344
+ * @param {VcsListItem} item
345
+ * @param {number} index
346
+ */
347
+ function drag(e, item, index) {
348
+ dragging.value = index;
349
+ draggedItem = item;
350
+ e.dataTransfer.effectAllowed = 'move';
351
+ document.addEventListener('mouseup', drop);
352
+ }
291
353
 
292
354
  return {
293
355
  query,
294
356
  hovering,
357
+ dragging,
358
+ isDraggable: computed(() => {
359
+ return query.value === '' && props.draggable;
360
+ }),
361
+ borderBottom,
362
+ borderTop,
295
363
  lightenEven,
296
364
  /**
297
365
  * @type {import("vue").ComputedRef<Array<VcsListItem>>}
298
366
  */
299
367
  renderingItems: computed(() => {
300
- let items = props.items.filter(i => i.visible !== false);
368
+ let items = props.items.filter((i) => i.visible !== false);
301
369
  if (query.value) {
302
- items = items.filter(i => filterPredicate(i, query.value));
370
+ items = items.filter((i) => filterPredicate(i, query.value));
303
371
  }
304
372
  return items;
305
373
  }),
@@ -337,30 +405,36 @@
337
405
  Math.max(firstIndex, currentIndex) + 1,
338
406
  );
339
407
  currentSelection.forEach((oldItem) => {
340
- if (oldItem.selectionChanged && !selected.value.includes(oldItem)) {
408
+ if (
409
+ oldItem.selectionChanged &&
410
+ !selected.value.includes(oldItem)
411
+ ) {
341
412
  oldItem.selectionChanged(false);
342
413
  }
343
414
  });
344
415
  selected.value.forEach((newItem) => {
345
- if (newItem.selectionChanged && !currentSelection.includes(newItem)) {
416
+ if (
417
+ newItem.selectionChanged &&
418
+ !currentSelection.includes(newItem)
419
+ ) {
346
420
  newItem.selectionChanged(true);
347
421
  }
348
422
  });
349
423
  } else {
350
424
  selected.value
351
- .filter(i => i !== item && i.selectionChanged)
352
- .forEach(i => i.selectionChanged(false));
425
+ .filter((i) => i !== item && i.selectionChanged)
426
+ .forEach((i) => i.selectionChanged(false));
353
427
  selected.value = [];
354
428
  firstSelected = null;
355
429
  }
356
430
  } else if (selected.value.includes(item)) {
357
431
  if (event.ctrlKey) {
358
432
  item.selectionChanged?.(false);
359
- selected.value = selected.value.filter(i => i !== item);
433
+ selected.value = selected.value.filter((i) => i !== item);
360
434
  } else if (selected.value.length > 1) {
361
435
  selected.value
362
- .filter(i => i !== item && i.selectionChanged)
363
- .forEach(i => i.selectionChanged(false));
436
+ .filter((i) => i !== item && i.selectionChanged)
437
+ .forEach((i) => i.selectionChanged(false));
364
438
  selected.value = [item];
365
439
  firstSelected = item;
366
440
  } else {
@@ -376,8 +450,8 @@
376
450
  }
377
451
  } else {
378
452
  selected.value
379
- .filter(i => i !== item && i.selectionChanged)
380
- .forEach(i => i.selectionChanged(false));
453
+ .filter((i) => i !== item && i.selectionChanged)
454
+ .forEach((i) => i.selectionChanged(false));
381
455
  item.selectionChanged?.(true);
382
456
  selected.value = [item];
383
457
  firstSelected = item;
@@ -401,14 +475,14 @@
401
475
  remove(item) {
402
476
  if (selected.value.includes(item) && !item.disabled) {
403
477
  item.selectionChanged?.(false);
404
- selected.value = selected.value.filter(i => i !== item);
478
+ selected.value = selected.value.filter((i) => i !== item);
405
479
  emit('input', selected.value);
406
480
  }
407
481
  },
408
482
  clear() {
409
483
  selected.value
410
- .filter(i => i.selectionChanged)
411
- .forEach(i => i.selectionChanged(false));
484
+ .filter((i) => i.selectionChanged)
485
+ .forEach((i) => i.selectionChanged(false));
412
486
  selected.value = [];
413
487
  firstSelected = null;
414
488
  emit('input', selected.value);
@@ -423,6 +497,27 @@
423
497
  });
424
498
  emit('input', selected.value);
425
499
  },
500
+ drag,
501
+ drop,
502
+ titles,
503
+ overflowTitle(index, alternative) {
504
+ const elem = titles.value[index];
505
+ if (elem && elem.offsetWidth < elem.scrollWidth) {
506
+ return alternative;
507
+ }
508
+ return '';
509
+ },
510
+ listHeader,
511
+ listHeaderTooltip: computed(() => {
512
+ if (props.tooltip) {
513
+ return props.tooltip;
514
+ }
515
+ const elem = listHeader.value;
516
+ if (elem && elem.offsetWidth < elem.scrollWidth) {
517
+ return props.title;
518
+ }
519
+ return '';
520
+ }),
426
521
  };
427
522
  },
428
523
  };
@@ -441,9 +536,24 @@
441
536
  background-color: var(--v-base-lighten4);
442
537
  }
443
538
  }
539
+ .v-list-item__dragged {
540
+ background-color: var(--v-base-lighten2) !important;
541
+ }
444
542
  .v-list-item {
445
543
  padding: 4px 8px 4px 16px;
446
- &:after{
544
+ &.vcs-draggable-item:hover {
545
+ cursor: grab;
546
+ user-select: none;
547
+ }
548
+ &.border-bottom {
549
+ border-bottom: solid;
550
+ border-bottom-color: var(--v-base-lighten2);
551
+ }
552
+ &.border-top {
553
+ border-top: solid;
554
+ border-top-color: var(--v-base-lighten2);
555
+ }
556
+ &:after {
447
557
  display: none;
448
558
  }
449
559
  &.font-weight-bold {
@@ -7,7 +7,7 @@
7
7
  />
8
8
  <v-treeview
9
9
  class="vcs-treeview"
10
- v-bind="{...$props, ...$attrs}"
10
+ v-bind="{ ...$props, ...$attrs }"
11
11
  v-on="$listeners"
12
12
  expand-icon="mdi-chevron-down"
13
13
  item-key="name"
@@ -25,32 +25,35 @@
25
25
  </div>
26
26
  </template>
27
27
  <style lang="scss" scoped>
28
- .vcs-treeview {
29
- ::v-deep {
30
- // Root Level Entries should be 40px high
31
- > .v-treeview-node > .v-treeview-node__root {
32
- min-height: 40px;
33
- }
34
- // Border around root nodes with children included
35
- > .v-treeview-node:not(:last-child) {
36
- border-bottom: 1px solid var(--v-base-lighten2);
37
- }
38
- // Only Root Entries have a bold font
39
- > .v-treeview-node > .v-treeview-node__root > .v-treeview-node__content > .v-treeview-node__label {
40
- font-weight: 700;
41
- }
42
- // remove ripple effect from expand icon
43
- .v-icon.v-icon {
44
- &::after{
45
- background-color: transparent;
28
+ .vcs-treeview {
29
+ ::v-deep {
30
+ // Root Level Entries should be 40px high
31
+ > .v-treeview-node > .v-treeview-node__root {
32
+ min-height: 40px;
33
+ }
34
+ // Border around root nodes with children included
35
+ > .v-treeview-node:not(:last-child) {
36
+ border-bottom: 1px solid var(--v-base-lighten2);
37
+ }
38
+ // Only Root Entries have a bold font
39
+ > .v-treeview-node
40
+ > .v-treeview-node__root
41
+ > .v-treeview-node__content
42
+ > .v-treeview-node__label {
43
+ font-weight: 700;
44
+ }
45
+ // remove ripple effect from expand icon
46
+ .v-icon.v-icon {
47
+ &::after {
48
+ background-color: transparent;
49
+ }
50
+ }
51
+ // Toggle Item Chevron with should be 16px
52
+ .v-treeview-node__toggle {
53
+ width: 16px;
46
54
  }
47
- }
48
- // Toggle Item Chevron with should be 16px
49
- .v-treeview-node__toggle {
50
- width: 16px;
51
55
  }
52
56
  }
53
- }
54
57
  </style>
55
58
 
56
59
  <script>
@@ -95,7 +98,9 @@
95
98
  */
96
99
  const handleFilter = (treeNode, q = '') => {
97
100
  const translatedTitle = vm.$t(treeNode.title);
98
- return translatedTitle.toLocaleLowerCase().includes(q.toLocaleLowerCase());
101
+ return translatedTitle
102
+ .toLocaleLowerCase()
103
+ .includes(q.toLocaleLowerCase());
99
104
  };
100
105
 
101
106
  return {
@@ -105,4 +110,3 @@
105
110
  },
106
111
  };
107
112
  </script>
108
-
@@ -1,32 +1,21 @@
1
1
  <template>
2
- <div
3
- class="d-flex flex-row align-center"
4
- v-if="item"
5
- >
6
- <div
7
- class="position-relative col-8 pa-0 d-flex align-center"
8
- >
9
- <span
10
- v-if="item.icon"
11
- class="d-inline-flex"
12
- >
13
- <v-icon
14
- v-if="isStringIcon"
15
- v-text="item.icon"
16
- :size="16"
17
- class="mr-1"
18
- />
2
+ <div class="d-flex flex-row align-center" v-if="item">
3
+ <div class="position-relative col-8 pa-0 d-flex align-center">
4
+ <span v-if="item.icon" class="d-inline-flex">
5
+ <v-icon v-if="isStringIcon" :size="16" class="mr-1">
6
+ {{ item.icon }}
7
+ </v-icon>
19
8
  <ImageElementInjector :element="item.icon" v-else />
20
9
  </span>
21
- <VcsTooltip
22
- :tooltip="item.tooltip || item.title"
23
- >
10
+ <VcsTooltip :tooltip="tooltip">
24
11
  <template #activator="{ on, attrs }">
25
12
  <span
26
13
  v-bind="attrs"
27
14
  v-on="on"
28
15
  class="d-inline-block text-truncate"
29
- >{{ $t(item.title) }}</span>
16
+ ref="titleElem"
17
+ >{{ $t(item.title) }}</span
18
+ >
30
19
  </template>
31
20
  </VcsTooltip>
32
21
  </div>
@@ -44,7 +33,7 @@
44
33
  </template>
45
34
 
46
35
  <script>
47
- import { computed } from 'vue';
36
+ import { computed, ref } from 'vue';
48
37
  import { VIcon } from 'vuetify/lib';
49
38
  import VcsActionButtonList from '../buttons/VcsActionButtonList.vue';
50
39
  import ImageElementInjector from '../imageElementInjector.vue';
@@ -71,10 +60,22 @@
71
60
  },
72
61
  setup(props) {
73
62
  const leaf = computed(() => props.item?.children?.length === 0);
63
+ const titleElem = ref(null);
74
64
 
75
65
  return {
76
66
  isStringIcon: computed(() => typeof props.item.icon === 'string'),
77
67
  leaf,
68
+ titleElem,
69
+ tooltip: computed(() => {
70
+ if (props.item.tooltip) {
71
+ return props.item.tooltip;
72
+ }
73
+ const elem = titleElem.value;
74
+ if (elem && elem.offsetWidth < elem.scrollWidth) {
75
+ return props.item.title;
76
+ }
77
+ return '';
78
+ }),
78
79
  };
79
80
  },
80
81
  };