@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.
- package/README.md +36 -18
- package/app.config.json +2 -4
- package/build/.eslintrc +3 -0
- package/build/build.js +184 -174
- package/build/buildCesium.js +32 -19
- package/build/buildHelpers.js +117 -48
- package/build/buildPreview.js +7 -4
- package/build/commonViteConfig.js +1 -3
- package/build/determineHost.js +17 -4
- package/build/generateOLLib.js +13 -16
- package/build/getPluginProxies.js +16 -3
- package/build/info/conf.json +21 -21
- package/build/info/publish.js +15 -4
- package/config/aerowest.config.json +16 -44
- package/config/base.config.json +71 -246
- package/config/codes.config.json +3 -1
- package/config/dev.config.json +5 -13
- package/config/graphFeatureInfo.config.json +55 -16
- package/config/projects.config.json +5 -2
- package/config/www.config.json +96 -297
- package/dist/assets/cesium/Workers/{ArcType-ce2e50ab.js → ArcType-2d9abbbc.js} +4 -4
- package/dist/assets/cesium/Workers/{AttributeCompression-b646d393.js → AttributeCompression-f9f6c717.js} +24 -24
- package/dist/assets/cesium/Workers/{AxisAlignedBoundingBox-ff186ccc.js → AxisAlignedBoundingBox-85d9e53a.js} +3 -3
- package/dist/assets/cesium/Workers/{BoundingRectangle-be5924f4.js → BoundingRectangle-1ee7eb47.js} +18 -18
- package/dist/assets/cesium/Workers/{BoxGeometry-12eeccaf.js → BoxGeometry-3b2be784.js} +9 -9
- package/dist/assets/cesium/Workers/{Check-666ab1a0.js → Check-6ede7e26.js} +22 -22
- package/dist/assets/cesium/Workers/{Color-a84038cb.js → Color-f107c84d.js} +59 -59
- package/dist/assets/cesium/Workers/{ComponentDatatype-f7b11d02.js → ComponentDatatype-cf1fa08e.js} +16 -16
- package/dist/assets/cesium/Workers/{CoplanarPolygonGeometryLibrary-3272c1b3.js → CoplanarPolygonGeometryLibrary-78d71993.js} +1 -1
- package/dist/assets/cesium/Workers/{CorridorGeometryLibrary-0170e093.js → CorridorGeometryLibrary-50d99b33.js} +1 -1
- package/dist/assets/cesium/Workers/{CylinderGeometry-7c5da648.js → CylinderGeometry-51b0d9bf.js} +12 -12
- package/dist/assets/cesium/Workers/{CylinderGeometryLibrary-372c07d8.js → CylinderGeometryLibrary-7bf291b4.js} +1 -1
- package/dist/assets/cesium/Workers/{EllipseGeometry-797d580e.js → EllipseGeometry-bcfb5d87.js} +20 -20
- package/dist/assets/cesium/Workers/{EllipseGeometryLibrary-2939e1dc.js → EllipseGeometryLibrary-e94f8472.js} +1 -1
- package/dist/assets/cesium/Workers/{EllipseOutlineGeometry-8b50870f.js → EllipseOutlineGeometry-28e3a1bb.js} +15 -15
- package/dist/assets/cesium/Workers/{EllipsoidGeodesic-98c62a56.js → EllipsoidGeodesic-5b3623dc.js} +6 -6
- package/dist/assets/cesium/Workers/{EllipsoidGeometry-21c0e3a5.js → EllipsoidGeometry-b222fa63.js} +14 -14
- package/dist/assets/cesium/Workers/{EllipsoidOutlineGeometry-eff247c8.js → EllipsoidOutlineGeometry-38a3fb5b.js} +15 -15
- package/dist/assets/cesium/Workers/{EllipsoidRhumbLine-19756602.js → EllipsoidRhumbLine-ef872433.js} +9 -9
- package/dist/assets/cesium/Workers/{EllipsoidTangentPlane-214683dc.js → EllipsoidTangentPlane-8c89f28c.js} +1 -1
- package/dist/assets/cesium/Workers/{EncodedCartesian3-81f70735.js → EncodedCartesian3-57415c8a.js} +6 -6
- package/dist/assets/cesium/Workers/{FrustumGeometry-ac42a6d9.js → FrustumGeometry-bdd3a04d.js} +139 -111
- package/dist/assets/cesium/Workers/{GeometryAttribute-7d6f1732.js → GeometryAttribute-153115c5.js} +20 -20
- package/dist/assets/cesium/Workers/{GeometryAttributes-f06a2792.js → GeometryAttributes-ad136444.js} +1 -1
- package/dist/assets/cesium/Workers/{GeometryInstance-451dc1cd.js → GeometryInstance-34d9e21e.js} +6 -6
- package/dist/assets/cesium/Workers/{GeometryPipeline-ce4339ed.js → GeometryPipeline-acb2399c.js} +22 -22
- package/dist/assets/cesium/Workers/{IndexDatatype-a55ceaa1.js → IndexDatatype-2643aa47.js} +13 -13
- package/dist/assets/cesium/Workers/{IntersectionTests-f6e6bd8a.js → IntersectionTests-271e513e.js} +37 -37
- package/dist/assets/cesium/Workers/{Math-2dbd6b93.js → Math-0a2ac845.js} +149 -139
- package/dist/assets/cesium/Workers/{Matrix2-13178034.js → Matrix2-e1298525.js} +256 -256
- package/dist/assets/cesium/Workers/{Matrix3-315394f6.js → Matrix3-41c58dde.js} +150 -150
- package/dist/assets/cesium/Workers/{OrientedBoundingBox-04920dc7.js → OrientedBoundingBox-5e04e31f.js} +19 -17
- package/dist/assets/cesium/Workers/{Plane-900aa728.js → Plane-4c3d403b.js} +5 -5
- package/dist/assets/cesium/Workers/{PolygonGeometryLibrary-a8680d96.js → PolygonGeometryLibrary-6762b65b.js} +6 -6
- package/dist/assets/cesium/Workers/PolygonPipeline-7dc7a431.js +1344 -0
- package/dist/assets/cesium/Workers/{PolylinePipeline-32f36d2a.js → PolylinePipeline-15fde655.js} +16 -16
- package/dist/assets/cesium/Workers/{PolylineVolumeGeometryLibrary-a510d657.js → PolylineVolumeGeometryLibrary-ba7dfed5.js} +7 -7
- package/dist/assets/cesium/Workers/{PrimitivePipeline-ba38434a.js → PrimitivePipeline-68f0b9a2.js} +6 -6
- package/dist/assets/cesium/Workers/{RectangleGeometryLibrary-bdba697e.js → RectangleGeometryLibrary-8eaf23da.js} +1 -1
- package/dist/assets/cesium/Workers/{RuntimeError-06c93819.js → RuntimeError-ef395448.js} +5 -5
- package/dist/assets/cesium/Workers/{TerrainEncoding-833187da.js → TerrainEncoding-eb8a645a.js} +30 -30
- package/dist/assets/cesium/Workers/Transforms-f6451f99.js +14698 -0
- package/dist/assets/cesium/Workers/{VertexFormat-6b480673.js → VertexFormat-030f11ff.js} +14 -14
- package/dist/assets/cesium/Workers/{WallGeometryLibrary-919eed92.js → WallGeometryLibrary-feef3109.js} +1 -1
- package/dist/assets/cesium/Workers/{WebGLConstants-a8cc3e8c.js → WebGLConstants-0b1ce7ba.js} +1 -1
- package/dist/assets/cesium/Workers/{WebMercatorProjection-13a90d41.js → WebMercatorProjection-13ed1a6e.js} +6 -6
- package/dist/assets/cesium/Workers/{arrayRemoveDuplicates-c2038105.js → arrayRemoveDuplicates-d2061e85.js} +5 -5
- package/dist/assets/cesium/Workers/cesiumWorkerBootstrapper.js +5 -5
- package/dist/assets/cesium/Workers/{combine-ca22a614.js → combine-d9581036.js} +5 -5
- package/dist/assets/cesium/Workers/combineGeometry.js +1 -1
- package/dist/assets/cesium/Workers/createBoxGeometry.js +1 -1
- package/dist/assets/cesium/Workers/createBoxOutlineGeometry.js +9 -9
- package/dist/assets/cesium/Workers/createCircleGeometry.js +13 -13
- package/dist/assets/cesium/Workers/createCircleOutlineGeometry.js +13 -13
- package/dist/assets/cesium/Workers/createCoplanarPolygonGeometry.js +11 -11
- package/dist/assets/cesium/Workers/createCoplanarPolygonOutlineGeometry.js +9 -9
- package/dist/assets/cesium/Workers/createCorridorGeometry.js +14 -14
- package/dist/assets/cesium/Workers/createCorridorOutlineGeometry.js +12 -12
- package/dist/assets/cesium/Workers/createCylinderGeometry.js +1 -1
- package/dist/assets/cesium/Workers/createCylinderOutlineGeometry.js +13 -13
- package/dist/assets/cesium/Workers/createEllipseGeometry.js +1 -1
- package/dist/assets/cesium/Workers/createEllipseOutlineGeometry.js +1 -1
- package/dist/assets/cesium/Workers/createEllipsoidGeometry.js +1 -1
- package/dist/assets/cesium/Workers/createEllipsoidOutlineGeometry.js +1 -1
- package/dist/assets/cesium/Workers/createFrustumGeometry.js +1 -1
- package/dist/assets/cesium/Workers/createFrustumOutlineGeometry.js +8 -8
- package/dist/assets/cesium/Workers/createGeometry.js +1 -1
- package/dist/assets/cesium/Workers/createGroundPolylineGeometry.js +33 -33
- package/dist/assets/cesium/Workers/createPlaneGeometry.js +8 -8
- package/dist/assets/cesium/Workers/createPlaneOutlineGeometry.js +6 -6
- package/dist/assets/cesium/Workers/createPolygonGeometry.js +25 -25
- package/dist/assets/cesium/Workers/createPolygonOutlineGeometry.js +17 -17
- package/dist/assets/cesium/Workers/createPolylineGeometry.js +11 -11
- package/dist/assets/cesium/Workers/createPolylineVolumeGeometry.js +9 -9
- package/dist/assets/cesium/Workers/createPolylineVolumeOutlineGeometry.js +9 -9
- package/dist/assets/cesium/Workers/createRectangleGeometry.js +16 -16
- package/dist/assets/cesium/Workers/createRectangleOutlineGeometry.js +12 -12
- package/dist/assets/cesium/Workers/createSimplePolylineGeometry.js +10 -10
- package/dist/assets/cesium/Workers/createSphereGeometry.js +11 -11
- package/dist/assets/cesium/Workers/createSphereOutlineGeometry.js +12 -12
- package/dist/assets/cesium/Workers/createTaskProcessorWorker.js +2 -2
- package/dist/assets/cesium/Workers/createVectorTileClampedPolylines.js +1 -1
- package/dist/assets/cesium/Workers/createVectorTileGeometries.js +8 -8
- package/dist/assets/cesium/Workers/createVectorTilePoints.js +1 -1
- package/dist/assets/cesium/Workers/createVectorTilePolygons.js +1 -1
- package/dist/assets/cesium/Workers/createVectorTilePolylines.js +1 -1
- package/dist/assets/cesium/Workers/createVerticesFromGoogleEarthEnterpriseBuffer.js +1 -1
- package/dist/assets/cesium/Workers/createVerticesFromHeightmap.js +27 -28
- package/dist/assets/cesium/Workers/createVerticesFromQuantizedTerrainMesh.js +33 -38
- package/dist/assets/cesium/Workers/createWallGeometry.js +14 -14
- package/dist/assets/cesium/Workers/createWallOutlineGeometry.js +14 -14
- package/dist/assets/cesium/Workers/decodeDraco.js +10 -2
- package/dist/assets/cesium/Workers/decodeGoogleEarthEnterprisePacket.js +15 -15
- package/dist/assets/cesium/Workers/decodeI3S.js +1 -1
- package/dist/assets/cesium/Workers/{defaultValue-0a909f67.js → defaultValue-fe22d8c0.js} +2 -2
- package/dist/assets/cesium/Workers/package.js +1 -1
- package/dist/assets/cesium/Workers/transcodeKTX2.js +46 -26
- package/dist/assets/cesium/Workers/transferTypedArrayTest.js +1 -1
- package/dist/assets/cesium/Workers/upsampleQuantizedTerrainMesh.js +24 -24
- package/dist/assets/{cesium.166f91.js → cesium.253914.js} +36578 -33768
- package/dist/assets/cesium.js +1 -1
- package/dist/assets/{core.9342a1.js → core.3a8205.js} +53 -58
- package/dist/assets/core.js +1 -1
- package/dist/assets/{index.fd041928.js → index.91ae2d55.js} +1 -1
- package/dist/assets/{ol.d2cba3.js → ol.1c946a.js} +5550 -5491
- package/dist/assets/ol.js +1 -1
- package/dist/assets/ui.0025be.css +5 -0
- package/dist/assets/{ui.c27597.js → ui.0025be.js} +5494 -4759
- package/dist/assets/ui.js +1 -1
- package/dist/assets/vue.js +2 -2
- package/dist/assets/{vuetify.2f1432.css → vuetify.6efa21.css} +2 -2
- package/dist/assets/{vuetify.2f1432.js → vuetify.6efa21.js} +1 -1
- package/dist/assets/vuetify.js +2 -2
- package/dist/index.html +27 -7
- package/index.html +26 -6
- package/index.js +65 -15
- package/lib/cesium.js +1 -1
- package/lib/core.js +1 -1
- package/lib/ui.js +1 -1
- package/lib/vue.js +2 -2
- package/lib/vuetify.js +2 -2
- package/package.json +18 -9
- package/plugins/.eslintrc +9 -0
- package/plugins/@vcmap/create-link/fallbackCreateLink.vue +13 -9
- package/plugins/@vcmap/create-link/index.js +15 -6
- package/plugins/@vcmap/project-selector/ModulesListComponent.vue +4 -8
- package/plugins/@vcmap/project-selector/ProjectSelectorComponent.vue +5 -10
- package/plugins/@vcmap/project-selector/README.md +4 -2
- package/plugins/@vcmap/project-selector/config.json +13 -13
- package/plugins/@vcmap/project-selector/de.json +2 -2
- package/plugins/@vcmap/project-selector/en.json +2 -2
- package/plugins/@vcmap/project-selector/index.js +63 -28
- package/plugins/@vcmap/search-nominatim/LICENSE.md +5 -6
- package/plugins/@vcmap/search-nominatim/README.md +2 -1
- package/plugins/@vcmap/search-nominatim/config.json +1 -2
- package/plugins/@vcmap/search-nominatim/index.js +7 -4
- package/plugins/@vcmap/search-nominatim/nominatim.js +7 -2
- package/plugins/@vcmap/search-nominatim/package.json +2 -36
- package/plugins/@vcmap/simple-graph/README.md +29 -9
- package/plugins/@vcmap/simple-graph/SimpleGraphComponent.vue +2 -7
- package/plugins/@vcmap/simple-graph/index.js +1 -1
- package/plugins/@vcmap/simple-graph/simpleGraphView.js +3 -1
- package/plugins/@vcmap/theme-changer/README.md +5 -3
- package/plugins/@vcmap/theme-changer/ThemeChangerComponent.vue +6 -10
- package/plugins/@vcmap/theme-changer/config.json +67 -67
- package/plugins/@vcmap/theme-changer/index.js +11 -5
- package/plugins/@vcmap-show-case/buttons-example/ButtonsExample.vue +76 -11
- package/plugins/@vcmap-show-case/buttons-example/index.js +10 -8
- package/plugins/@vcmap-show-case/category-tester/Categories.vue +143 -116
- package/plugins/@vcmap-show-case/category-tester/Category.vue +46 -26
- package/plugins/@vcmap-show-case/category-tester/index.js +9 -3
- package/plugins/@vcmap-show-case/config-editor/{editor.vue → ConfigEditor.vue} +20 -24
- package/plugins/@vcmap-show-case/config-editor/index.js +13 -11
- package/plugins/@vcmap-show-case/context-menu-tester/index.js +18 -10
- package/plugins/@vcmap-show-case/form-inputs-example/FormInputsExample.vue +89 -118
- package/plugins/@vcmap-show-case/form-inputs-example/config.json +3 -3
- package/plugins/@vcmap-show-case/form-inputs-example/exampleActions.js +14 -4
- package/plugins/@vcmap-show-case/form-inputs-example/index.js +41 -19
- package/plugins/@vcmap-show-case/form-inputs-example/validation.js +2 -1
- package/plugins/@vcmap-show-case/icons-example/README.md +1 -1
- package/plugins/@vcmap-show-case/icons-example/allIconsComponent.vue +10 -10
- package/plugins/@vcmap-show-case/icons-example/index.js +10 -8
- package/plugins/@vcmap-show-case/list-example/ListExample.vue +221 -103
- package/plugins/@vcmap-show-case/list-example/index.js +10 -8
- package/plugins/@vcmap-show-case/notifier-tester/index.js +9 -3
- package/plugins/@vcmap-show-case/notifier-tester/notifierTester.vue +15 -21
- package/plugins/@vcmap-show-case/table-example/DataTableExample.vue +22 -41
- package/plugins/@vcmap-show-case/table-example/index.js +10 -8
- package/plugins/@vcmap-show-case/textfields-example/TextfieldsExample.vue +7 -30
- package/plugins/@vcmap-show-case/textfields-example/index.js +10 -4
- package/plugins/@vcmap-show-case/window-tester/WindowExample.vue +16 -13
- package/plugins/@vcmap-show-case/window-tester/emptyComponent.vue +4 -7
- package/plugins/@vcmap-show-case/window-tester/index.js +26 -20
- package/plugins/@vcmap-show-case/window-tester/myCustomHeader.vue +7 -3
- package/plugins/@vcmap-show-case/window-tester/toolbox-data.js +82 -5
- package/plugins/@vcmap-show-case/window-tester/windowExampleContent.vue +3 -7
- package/plugins/@vcmap-show-case/wizard-example/index.js +9 -3
- package/plugins/@vcmap-show-case/wizard-example/wizardExample.vue +36 -38
- package/src/actions/actionHelper.js +49 -11
- package/src/actions/styleSelector.vue +20 -11
- package/src/application/VcsApp.vue +117 -80
- package/src/application/VcsAttributions.vue +8 -9
- package/src/application/VcsAttributionsFooter.vue +12 -9
- package/src/application/VcsMap.vue +9 -5
- package/src/application/VcsNavbar.vue +44 -27
- package/src/application/VcsSettings.vue +5 -12
- package/src/application/attributionsHelper.js +23 -11
- package/src/application/vcsAppWrapper.vue +1 -3
- package/src/components/buttons/VcsActionButtonList.vue +20 -17
- package/src/components/buttons/VcsButton.vue +19 -23
- package/src/components/buttons/VcsFormButton.vue +176 -0
- package/src/components/form-inputs-controls/VcsCheckbox.vue +6 -7
- package/src/components/form-inputs-controls/VcsDatePicker.vue +50 -19
- package/src/components/form-inputs-controls/VcsFormSection.vue +11 -12
- package/src/components/form-inputs-controls/VcsLabel.vue +9 -10
- package/src/components/form-inputs-controls/VcsRadio.vue +44 -44
- package/src/components/form-inputs-controls/VcsSelect.vue +16 -13
- package/src/components/form-inputs-controls/VcsTextArea.vue +21 -14
- package/src/components/form-inputs-controls/VcsTextField.vue +26 -12
- package/src/components/form-inputs-controls/VcsWizard.vue +78 -78
- package/src/components/form-inputs-controls/VcsWizardStep.vue +20 -20
- package/src/components/form-inputs-controls/composables.js +13 -8
- package/src/components/form-output/VcsFormattedNumber.vue +26 -26
- package/src/components/icons/+all.js +13 -5
- package/src/components/icons/2DAreaIcon.vue +62 -10
- package/src/components/icons/2DDistanceIcon.vue +14 -2
- package/src/components/icons/3DAreaIcon.vue +62 -10
- package/src/components/icons/3DDistanceIcon.vue +14 -2
- package/src/components/icons/3DHeightIcon.vue +14 -2
- package/src/components/icons/AngleIcon.vue +12 -3
- package/src/components/icons/AssociationsIcon.vue +6 -1
- package/src/components/icons/AxisIcon.vue +34 -5
- package/src/components/icons/BoundingBoxIcon.vue +31 -5
- package/src/components/icons/CheckboxCheckedIcon.vue +4 -1
- package/src/components/icons/CheckboxIcon.vue +1 -8
- package/src/components/icons/CheckboxIndeterminateIcon.vue +9 -2
- package/src/components/icons/CircleIcon.vue +24 -4
- package/src/components/icons/ClippingHorizontalIcon.vue +14 -2
- package/src/components/icons/ClippingIcon.vue +13 -2
- package/src/components/icons/ClippingVerticalIcon.vue +14 -2
- package/src/components/icons/ColorPickerIcon.vue +13 -2
- package/src/components/icons/ColorSwatchIcon.vue +7 -1
- package/src/components/icons/CommentIcon.vue +6 -1
- package/src/components/icons/CompassIcon.vue +21 -3
- package/src/components/icons/ComponentsIcon.vue +14 -2
- package/src/components/icons/ConeIcon.vue +26 -4
- package/src/components/icons/DimensionsHouseIcon.vue +7 -1
- package/src/components/icons/EditIcon.vue +13 -2
- package/src/components/icons/ElevationProfileIcon.vue +6 -1
- package/src/components/icons/ExportAreaIcon.vue +13 -2
- package/src/components/icons/ExportFlightIcon.vue +13 -2
- package/src/components/icons/ExportIcon.vue +14 -2
- package/src/components/icons/ExternalLinkIcon.vue +18 -3
- package/src/components/icons/EyeIcon.vue +12 -2
- package/src/components/icons/FastForwardIcon.vue +13 -2
- package/src/components/icons/FilterIcon.vue +13 -2
- package/src/components/icons/GlobalTerrainIcon.vue +12 -2
- package/src/components/icons/GlobeNatureIcon.vue +7 -1
- package/src/components/icons/GroundIcon.vue +12 -2
- package/src/components/icons/HealthCareIndustriesIcon.vue +6 -1
- package/src/components/icons/HelpIcon.vue +12 -2
- package/src/components/icons/HideIcon.vue +17 -3
- package/src/components/icons/HomePointIcon.vue +13 -3
- package/src/components/icons/HospitalsIcon.vue +6 -1
- package/src/components/icons/HouseIcon.vue +20 -3
- package/src/components/icons/ImportIcon.vue +21 -3
- package/src/components/icons/InfoIcon.vue +19 -3
- package/src/components/icons/KebabIcon.vue +12 -2
- package/src/components/icons/LabelIcon.vue +21 -3
- package/src/components/icons/LayersIcon.vue +12 -2
- package/src/components/icons/LegendIcon.vue +13 -3
- package/src/components/icons/LineIcon.vue +20 -3
- package/src/components/icons/LinkIcon.vue +13 -2
- package/src/components/icons/LogoutIcon.vue +13 -2
- package/src/components/icons/MapIcon.vue +14 -2
- package/src/components/icons/MenuIcon.vue +7 -1
- package/src/components/icons/MinusIcon.vue +14 -2
- package/src/components/icons/ObjectAttributeIcon.vue +13 -2
- package/src/components/icons/ObjectSelectIcon.vue +14 -2
- package/src/components/icons/ObliqueViewIcon.vue +11 -2
- package/src/components/icons/PdfIcon.vue +12 -2
- package/src/components/icons/PedestrianIcon.vue +13 -2
- package/src/components/icons/PenIcon.vue +13 -3
- package/src/components/icons/PlayCircleIcon.vue +20 -3
- package/src/components/icons/PlusIcon.vue +14 -3
- package/src/components/icons/PoiIcon.vue +17 -3
- package/src/components/icons/PointSelectIcon.vue +12 -2
- package/src/components/icons/PolygonIcon.vue +7 -1
- package/src/components/icons/PresentationModeIcon.vue +13 -2
- package/src/components/icons/ProgressIcon.vue +8 -6
- package/src/components/icons/QueryIcon.vue +31 -5
- package/src/components/icons/RectangleIcon.vue +24 -4
- package/src/components/icons/ReturnIcon.vue +13 -2
- package/src/components/icons/RewindIcon.vue +13 -2
- package/src/components/icons/RotateLeftIcon.vue +13 -2
- package/src/components/icons/RotateRightIcon.vue +13 -2
- package/src/components/icons/ScreenshotIcon.vue +52 -10
- package/src/components/icons/SearchIcon.vue +13 -3
- package/src/components/icons/ShadowIcon.vue +14 -3
- package/src/components/icons/ShapesIcon.vue +13 -3
- package/src/components/icons/ShareIcon.vue +17 -4
- package/src/components/icons/SimpleCircleFilledIcon.vue +14 -10
- package/src/components/icons/SimpleCircleHalfFilledIcon.vue +6 -1
- package/src/components/icons/SimpleCircleOutlinedIcon.vue +14 -10
- package/src/components/icons/SkipNextIcon.vue +11 -2
- package/src/components/icons/SkipPreviousIcon.vue +17 -3
- package/src/components/icons/SplitViewIcon.vue +6 -1
- package/src/components/icons/TerrainBoxIcon.vue +12 -2
- package/src/components/icons/TextStyleIcon.vue +7 -1
- package/src/components/icons/ThreeDimensionsIcon.vue +13 -2
- package/src/components/icons/ToolsIcon.vue +12 -2
- package/src/components/icons/TouchIcon.vue +13 -2
- package/src/components/icons/TrashCanIcon.vue +13 -2
- package/src/components/icons/TriangleIcon.vue +6 -2
- package/src/components/icons/TwoDimensionsIcon.vue +14 -2
- package/src/components/icons/UploadIcon.vue +13 -2
- package/src/components/icons/UserProfileIcon.vue +13 -2
- package/src/components/icons/UserShareIcon.vue +12 -2
- package/src/components/icons/VideoRecorderIcon.vue +16 -3
- package/src/components/icons/ViewpointFlightIcon.vue +22 -4
- package/src/components/icons/ViewpointIcon.vue +22 -4
- package/src/components/icons/Viewshed360Icon.vue +14 -2
- package/src/components/icons/ViewshedConeIcon.vue +13 -2
- package/src/components/icons/ViewshedIcon.vue +14 -2
- package/src/components/icons/WalkingIcon.vue +13 -2
- package/src/components/icons/WallIcon.vue +19 -3
- package/src/components/icons/WandIcon.vue +129 -21
- package/src/components/imageElementInjector.vue +1 -3
- package/src/components/lists/VcsActionList.vue +21 -18
- package/src/components/lists/VcsList.vue +208 -98
- package/src/components/lists/VcsTreeview.vue +30 -26
- package/src/components/lists/VcsTreeviewLeaf.vue +23 -22
- package/src/components/lists/VcsTreeviewSearchbar.vue +19 -15
- package/src/components/notification/VcsBadge.vue +4 -6
- package/src/components/notification/VcsTooltip.vue +95 -94
- package/src/components/notification/validation.js +1 -1
- package/src/components/tables/VcsDataTable.vue +107 -95
- package/src/components/tables/VcsTable.vue +38 -30
- package/src/contentTree/LayerTree.vue +2 -3
- package/src/contentTree/contentTreeCollection.js +48 -22
- package/src/contentTree/contentTreeItem.js +36 -14
- package/src/contentTree/groupContentTreeItem.js +44 -22
- package/src/contentTree/layerContentTreeItem.js +42 -20
- package/src/contentTree/layerGroupContentTreeItem.js +53 -31
- package/src/contentTree/nodeContentTreeItem.js +18 -7
- package/src/contentTree/obliqueCollectionContentTreeItem.js +45 -20
- package/src/contentTree/subContentTreeItem.js +13 -4
- package/src/contentTree/vcsObjectContentTreeItem.js +24 -15
- package/src/contentTree/viewpointContentTreeItem.js +19 -6
- package/src/downloadHelper.js +4 -1
- package/src/featureInfo/AddressBalloonComponent.vue +11 -16
- package/src/featureInfo/BalloonComponent.vue +35 -26
- package/src/featureInfo/abstractFeatureInfoView.js +29 -13
- package/src/featureInfo/addressBalloonFeatureInfoView.js +19 -7
- package/src/featureInfo/balloonFeatureInfoView.js +22 -9
- package/src/featureInfo/balloonHelper.js +61 -42
- package/src/featureInfo/featureInfo.js +71 -31
- package/src/featureInfo/featureInfoInteraction.js +13 -7
- package/src/featureInfo/iframeFeatureInfoView.js +3 -1
- package/src/featureInfo/tableFeatureInfoView.js +15 -5
- package/src/i18n/i18nCollection.js +183 -155
- package/src/init.js +124 -121
- package/src/legend/legendHelper.js +11 -6
- package/src/legend/styleLegendItem.vue +18 -12
- package/src/legend/vcsLegend.vue +15 -17
- package/src/manager/buttonManager.js +6 -3
- package/src/manager/categoryManager/CategoryComponent.vue +52 -25
- package/src/manager/categoryManager/CategoryComponentList.vue +33 -8
- package/src/manager/categoryManager/CategoryManager.vue +4 -5
- package/src/manager/categoryManager/categoryManager.js +82 -37
- package/src/manager/contextMenu/contextMenuComponent.vue +2 -6
- package/src/manager/contextMenu/contextMenuInteraction.js +6 -1
- package/src/manager/contextMenu/contextMenuManager.js +37 -22
- package/src/manager/navbarManager.js +15 -8
- package/src/manager/toolbox/GroupToolboxComponent.vue +22 -21
- package/src/manager/toolbox/SelectToolboxComponent.vue +36 -35
- package/src/manager/toolbox/ToolboxManager.vue +18 -10
- package/src/manager/toolbox/toolboxManager.js +30 -12
- package/src/manager/window/WindowComponent.vue +18 -21
- package/src/manager/window/WindowComponentHeader.vue +34 -26
- package/src/manager/window/WindowManager.vue +33 -22
- package/src/manager/window/windowHelper.js +79 -23
- package/src/manager/window/windowManager.js +61 -32
- package/src/navigation/mapNavCompass.vue +17 -3
- package/src/navigation/mapNavigation.vue +59 -40
- package/src/navigation/obliqueRotation.vue +6 -8
- package/src/navigation/orientationToolsButton.vue +6 -9
- package/src/navigation/overviewMap.js +72 -41
- package/src/navigation/overviewMapClickedInteraction.js +6 -1
- package/src/navigation/tiltSlider.vue +6 -10
- package/src/navigation/vcsCompass.vue +1 -9
- package/src/navigation/vcsZoomButton.vue +16 -17
- package/src/notifier/notifier.js +22 -13
- package/src/notifier/notifierComponent.vue +21 -21
- package/src/pluginHelper.js +23 -9
- package/src/search/resultItem.vue +10 -15
- package/src/search/resultsComponent.vue +30 -24
- package/src/search/search.js +36 -19
- package/src/search/searchComponent.vue +20 -10
- package/src/setup.js +9 -9
- package/src/state.js +22 -6
- package/src/styles/_typography.scss +0 -1
- package/src/styles/shades.scss +4 -2
- package/src/styles/utils/_border.scss +1 -1
- package/src/styles/utils/_display.scss +1 -1
- package/src/styles/variables.scss +39 -34
- package/src/styles/vcsFont.scss +6 -5
- package/src/styles/vcsGrid.scss +9 -0
- package/src/uiConfig.js +3 -1
- package/src/vcsUiApp.js +156 -59
- package/src/vuePlugins/i18n.js +4 -4
- package/src/vuePlugins/vuetify.js +4 -0
- package/dist/assets/cesium/Workers/PolygonPipeline-844aab0a.js +0 -1345
- package/dist/assets/cesium/Workers/Transforms-40229881.js +0 -14696
- package/dist/assets/ui.c27597.css +0 -5
- /package/dist/assets/cesium/Workers/{GeometryOffsetAttribute-04332ce7.js → GeometryOffsetAttribute-9ad0019c.js} +0 -0
- /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
|
-
|
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
|
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
|
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 =
|
73
|
-
:
|
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="
|
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="
|
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="
|
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-
|
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
|
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
|
-
*
|
158
|
-
*
|
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
|
-
|
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(
|
263
|
-
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
|
268
|
-
|
269
|
-
.
|
270
|
-
|
271
|
-
|
272
|
-
|
273
|
-
|
274
|
-
|
275
|
-
|
276
|
-
.
|
277
|
-
|
278
|
-
|
279
|
-
|
280
|
-
|
281
|
-
|
282
|
-
|
283
|
-
|
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(
|
288
|
-
|
289
|
-
|
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 (
|
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 (
|
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
|
-
|
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
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
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
|
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
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
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
|
-
|
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
|
};
|