forked from MapComplete/MapComplete
		
	Make mapcontrol-button svgs styleable by colour
This commit is contained in:
		
							parent
							
								
									403bd54b96
								
							
						
					
					
						commit
						15e21544ba
					
				
					 5 changed files with 86 additions and 23 deletions
				
			
		|  | @ -1,4 +1,3 @@ | ||||||
| import {CenterFlexedElement} from "./UI/Base/CenterFlexedElement"; |  | ||||||
| import {FixedUiElement} from "./UI/Base/FixedUiElement"; | import {FixedUiElement} from "./UI/Base/FixedUiElement"; | ||||||
| import Toggle from "./UI/Input/Toggle"; | import Toggle from "./UI/Input/Toggle"; | ||||||
| import {Basemap} from "./UI/BigComponents/Basemap"; | import {Basemap} from "./UI/BigComponents/Basemap"; | ||||||
|  | @ -197,25 +196,23 @@ export class InitUiElements { | ||||||
|                     State.state.currentGPSLocation, |                     State.state.currentGPSLocation, | ||||||
|                     State.state.leafletMap, |                     State.state.leafletMap, | ||||||
|                     State.state.layoutToUse |                     State.state.layoutToUse | ||||||
|                 ) |                 ), { | ||||||
|  |                     dontStyle : true | ||||||
|  |                 } | ||||||
|             ), |             ), | ||||||
|             undefined, |             undefined, | ||||||
|             State.state.featureSwitchGeolocation |             State.state.featureSwitchGeolocation | ||||||
|         ); |         ); | ||||||
| 
 | 
 | ||||||
|         const plus = new MapControlButton( |         const plus = new MapControlButton( | ||||||
|             new CenterFlexedElement( |                 Svg.plus_zoom_svg() | ||||||
|                 Img.AsImageElement(Svg.plus_zoom, "", "width:1.25rem;height:1.25rem") |  | ||||||
|             ) |  | ||||||
|         ).onClick(() => { |         ).onClick(() => { | ||||||
|             State.state.locationControl.data.zoom++; |             State.state.locationControl.data.zoom++; | ||||||
|             State.state.locationControl.ping(); |             State.state.locationControl.ping(); | ||||||
|         }); |         }); | ||||||
| 
 | 
 | ||||||
|         const min = new MapControlButton( |         const min = new MapControlButton( | ||||||
|             new CenterFlexedElement( |            Svg.min_zoom_svg() | ||||||
|                 Img.AsImageElement(Svg.min_zoom, "", "width:1.25rem;height:1.25rem") |  | ||||||
|             ) |  | ||||||
|         ).onClick(() => { |         ).onClick(() => { | ||||||
|             State.state.locationControl.data.zoom--; |             State.state.locationControl.data.zoom--; | ||||||
|             State.state.locationControl.ping(); |             State.state.locationControl.ping(); | ||||||
|  | @ -383,9 +380,7 @@ export class InitUiElements { | ||||||
|              |              | ||||||
| 
 | 
 | ||||||
|         const filterMapControlButton = new MapControlButton( |         const filterMapControlButton = new MapControlButton( | ||||||
|             new CenterFlexedElement( |             Svg.filter_svg() | ||||||
|                 Img.AsImageElement(Svg.filter, "", "width:1.25rem;height:1.25rem") |  | ||||||
|             ) |  | ||||||
|         ); |         ); | ||||||
| 
 | 
 | ||||||
|         const filterButton = new Toggle( |         const filterButton = new Toggle( | ||||||
|  |  | ||||||
|  | @ -5,7 +5,7 @@ import Img from "../../UI/Base/Img"; | ||||||
| import {LocalStorageSource} from "../Web/LocalStorageSource"; | import {LocalStorageSource} from "../Web/LocalStorageSource"; | ||||||
| import LayoutConfig from "../../Customizations/JSON/LayoutConfig"; | import LayoutConfig from "../../Customizations/JSON/LayoutConfig"; | ||||||
| import {VariableUiElement} from "../../UI/Base/VariableUIElement"; | import {VariableUiElement} from "../../UI/Base/VariableUIElement"; | ||||||
| import {CenterFlexedElement} from "../../UI/Base/CenterFlexedElement"; | import BaseUIElement from "../../UI/BaseUIElement"; | ||||||
| 
 | 
 | ||||||
| export default class GeoLocationHandler extends VariableUiElement { | export default class GeoLocationHandler extends VariableUiElement { | ||||||
|     /** |     /** | ||||||
|  | @ -79,25 +79,23 @@ export default class GeoLocationHandler extends VariableUiElement { | ||||||
|         super( |         super( | ||||||
|             hasLocation.map( |             hasLocation.map( | ||||||
|                 (hasLocationData) => { |                 (hasLocationData) => { | ||||||
|                     let icon: string; |                     let icon: BaseUIElement; | ||||||
| 
 | 
 | ||||||
|                     if (isLocked.data) { |                     if (isLocked.data) { | ||||||
|                         icon = Svg.location; |                         icon = Svg.location_svg(); | ||||||
|                     } else if (hasLocationData) { |                     } else if (hasLocationData) { | ||||||
|                         icon = Svg.location_empty; |                         icon = Svg.location_empty_svg(); | ||||||
|                     } else if (isActive.data) { |                     } else if (isActive.data) { | ||||||
|                         icon = Svg.location_empty; |                         icon = Svg.location_empty_svg(); | ||||||
|                     } else { |                     } else { | ||||||
|                         icon = Svg.location_circle; |                         icon = Svg.location_circle_svg(); | ||||||
|                     } |                     } | ||||||
| 
 |                     return icon | ||||||
|                     return new CenterFlexedElement( |  | ||||||
|                         Img.AsImageElement(icon, "", "width:1.25rem;height:1.25rem") |  | ||||||
|                     ); |  | ||||||
|                 }, |                 }, | ||||||
|                 [isActive, isLocked] |                 [isActive, isLocked] | ||||||
|             ) |             ) | ||||||
|         ); |         ); | ||||||
|  |         this.SetClass("mapcontrol") | ||||||
|         this._isActive = isActive; |         this._isActive = isActive; | ||||||
|         this._isLocked = isLocked; |         this._isLocked = isLocked; | ||||||
|         this._permission = new UIEventSource<string>(""); |         this._permission = new UIEventSource<string>(""); | ||||||
|  |  | ||||||
|  | @ -5,8 +5,13 @@ import Combine from "./Base/Combine"; | ||||||
|  * A button floating above the map, in a uniform style |  * A button floating above the map, in a uniform style | ||||||
|  */ |  */ | ||||||
| export default class MapControlButton extends Combine { | export default class MapControlButton extends Combine { | ||||||
|   constructor(contents: BaseUIElement) { |   constructor(contents: BaseUIElement, options?:{ | ||||||
|  |     dontStyle?: boolean | ||||||
|  |   }) { | ||||||
|     super([contents]); |     super([contents]); | ||||||
|  |     if(!options?.dontStyle){ | ||||||
|  |     contents.SetClass("mapcontrol p-1") | ||||||
|  |     } | ||||||
|     this.SetClass( |     this.SetClass( | ||||||
|       "relative block rounded-full w-10 h-10 p-1 pointer-events-auto z-above-map subtle-background m-0.5 md:m-1" |       "relative block rounded-full w-10 h-10 p-1 pointer-events-auto z-above-map subtle-background m-0.5 md:m-1" | ||||||
|     ); |     ); | ||||||
|  |  | ||||||
|  | @ -1 +1,62 @@ | ||||||
| <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><defs><style>.cls-1{fill:#fff;}.cls-2{fill:none;stroke:#fff;stroke-miterlimit:10;stroke-width:1.5px;}</style></defs><g id="Calque_1" data-name="Calque 1"><path class="cls-1" d="M12,7.71a4.37,4.37,0,0,1,2.4.73,4.3,4.3,0,0,1,1.83,4.43,4.31,4.31,0,0,1-3.39,3.39A4.32,4.32,0,1,1,12,7.71Z"/><path class="cls-2" d="M12,4.7a7.36,7.36,0,0,1,6.8,4.54,7.36,7.36,0,0,1-12.92,6.9A7.36,7.36,0,0,1,12,4.7Z"/></g></svg> | <?xml version="1.0" encoding="UTF-8" standalone="no"?> | ||||||
|  | <svg | ||||||
|  |    xmlns:dc="http://purl.org/dc/elements/1.1/" | ||||||
|  |    xmlns:cc="http://creativecommons.org/ns#" | ||||||
|  |    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" | ||||||
|  |    xmlns:svg="http://www.w3.org/2000/svg" | ||||||
|  |    xmlns="http://www.w3.org/2000/svg" | ||||||
|  |    xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" | ||||||
|  |    xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" | ||||||
|  |    viewBox="0 0 24 24" | ||||||
|  |    version="1.1" | ||||||
|  |    id="svg11" | ||||||
|  |    sodipodi:docname="location-circle.svg" | ||||||
|  |    inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)"> | ||||||
|  |   <metadata | ||||||
|  |      id="metadata15"> | ||||||
|  |     <rdf:RDF> | ||||||
|  |       <cc:Work | ||||||
|  |          rdf:about=""> | ||||||
|  |         <dc:format>image/svg+xml</dc:format> | ||||||
|  |         <dc:type | ||||||
|  |            rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> | ||||||
|  |       </cc:Work> | ||||||
|  |     </rdf:RDF> | ||||||
|  |   </metadata> | ||||||
|  |   <sodipodi:namedview | ||||||
|  |      pagecolor="#ffffff" | ||||||
|  |      bordercolor="#666666" | ||||||
|  |      borderopacity="1" | ||||||
|  |      objecttolerance="10" | ||||||
|  |      gridtolerance="10" | ||||||
|  |      guidetolerance="10" | ||||||
|  |      inkscape:pageopacity="0" | ||||||
|  |      inkscape:pageshadow="2" | ||||||
|  |      inkscape:window-width="1920" | ||||||
|  |      inkscape:window-height="999" | ||||||
|  |      id="namedview13" | ||||||
|  |      showgrid="false" | ||||||
|  |      inkscape:zoom="19.666667" | ||||||
|  |      inkscape:cx="15.349556" | ||||||
|  |      inkscape:cy="11.585617" | ||||||
|  |      inkscape:window-x="1680" | ||||||
|  |      inkscape:window-y="0" | ||||||
|  |      inkscape:window-maximized="1" | ||||||
|  |      inkscape:current-layer="svg11" /> | ||||||
|  |   <defs | ||||||
|  |      id="defs4"> | ||||||
|  |     <style | ||||||
|  |        id="style2">.cls-1{fill:#000;}.cls-2{fill:none;stroke:#000;stroke-miterlimit:10;stroke-width:1.5px;}</style> | ||||||
|  |   </defs> | ||||||
|  |   <path | ||||||
|  |      style="fill:#000000" | ||||||
|  |      inkscape:connector-curvature="0" | ||||||
|  |      id="path6" | ||||||
|  |      d="m 12,7.71 a 4.37,4.37 0 0 1 2.4,0.73 4.3,4.3 0 0 1 1.83,4.43 4.31,4.31 0 0 1 -3.39,3.39 A 4.32,4.32 0 1 1 12,7.71 Z" | ||||||
|  |      class="cls-1" /> | ||||||
|  |   <path | ||||||
|  |      style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.5px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" | ||||||
|  |      d="M 12,3.9492188 C 5.5686003,3.954127 1.690624,11.203882 5.2558594,16.556641 h 0.00195 c 2.6718604,3.989543 7.2401435,4.412862 10.5585935,2.640625 3.318451,-1.772238 5.507368,-5.802848 3.677735,-10.2421879 l -0.002,-0.00195 C 18.236517,5.9260126 15.277212,3.9484722 12,3.9492188 Z m 0,1.5 c 2.674974,-6.094e-4 5.0825,1.6072908 6.107422,4.078125 1.553254,3.7713402 -0.246448,6.8781492 -2.998047,8.3476562 -2.751726,1.469575 -6.3350719,1.238395 -8.6054688,-2.150391 v -0.002 C 3.5579114,11.297176 6.6831292,5.4532764 12,5.4492188 Z" | ||||||
|  |      id="path8" | ||||||
|  |      inkscape:connector-curvature="0" /> | ||||||
|  | </svg> | ||||||
|  |  | ||||||
| Before Width: | Height: | Size: 464 B After Width: | Height: | Size: 3.6 KiB | 
|  | @ -93,6 +93,10 @@ svg, img { | ||||||
|     display: unset; |     display: unset; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | .mapcontrol svg path{ | ||||||
|  |     fill: var(--subtle-detail-color-contrast); | ||||||
|  | } | ||||||
|  | 
 | ||||||
| a { | a { | ||||||
|     color: var(--foreground-color); |     color: var(--foreground-color); | ||||||
| } | } | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue