forked from MapComplete/MapComplete
		
	
		
			
				
	
	
		
			42 lines
		
	
	
	
		
			1.5 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			42 lines
		
	
	
	
		
			1.5 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| import { VariableUiElement } from "./Base/VariableUIElement"
 | |
| import { OsmConnection } from "../Logic/Osm/OsmConnection"
 | |
| import Svg from "../Svg"
 | |
| import Img from "./Base/Img"
 | |
| import Combine from "./Base/Combine"
 | |
| import { FixedUiElement } from "./Base/FixedUiElement"
 | |
| import BaseUIElement from "./BaseUIElement"
 | |
| 
 | |
| export default class LoggedInUserIndicator extends VariableUiElement {
 | |
|     constructor(
 | |
|         osmConnection: OsmConnection,
 | |
|         options?: {
 | |
|             size?: "small" | "medium" | "large"
 | |
|             firstLine?: BaseUIElement
 | |
|         }
 | |
|     ) {
 | |
|         options = options ?? {}
 | |
|         let size = "w-8 h-8 mr-2"
 | |
|         if (options.size == "medium") {
 | |
|             size = "w-16 h-16 mr-4"
 | |
|         } else if (options.size == "large") {
 | |
|             size = "w-32 h-32 mr-6"
 | |
|         }
 | |
|         super(
 | |
|             osmConnection.userDetails.mapD((ud) => {
 | |
|                 let img = Svg.person_svg().SetClass(
 | |
|                     "rounded-full border border-black overflow-hidden"
 | |
|                 )
 | |
|                 if (ud.img) {
 | |
|                     img = new Img(ud.img)
 | |
|                 }
 | |
|                 let contents: BaseUIElement = new FixedUiElement(ud.name).SetClass("font-bold")
 | |
|                 if (options?.firstLine) {
 | |
|                     contents = new Combine([options.firstLine, contents]).SetClass("flex flex-col")
 | |
|                 }
 | |
|                 return new Combine([img.SetClass("rounded-full " + size), contents]).SetClass(
 | |
|                     "flex items-center"
 | |
|                 )
 | |
|             })
 | |
|         )
 | |
|     }
 | |
| }
 |