forked from MapComplete/MapComplete
		
	
		
			
				
	
	
		
			33 lines
		
	
	
	
		
			1 KiB
		
	
	
	
		
			Svelte
		
	
	
	
	
	
			
		
		
	
	
			33 lines
		
	
	
	
		
			1 KiB
		
	
	
	
		
			Svelte
		
	
	
	
	
	
<script lang="ts">
 | 
						|
  /**
 | 
						|
   * Constructs an input helper element for the given type.
 | 
						|
   * Note that all values are stringified
 | 
						|
   */
 | 
						|
 | 
						|
  import { UIEventSource } from "../../Logic/UIEventSource"
 | 
						|
  import type { ValidatorType } from "./Validators"
 | 
						|
  import InputHelpers from "./InputHelpers"
 | 
						|
  import ToSvelte from "../Base/ToSvelte.svelte"
 | 
						|
  import type { Feature } from "geojson"
 | 
						|
  import BaseUIElement from "../BaseUIElement"
 | 
						|
  import { VariableUiElement } from "../Base/VariableUIElement"
 | 
						|
 | 
						|
  export let type: ValidatorType
 | 
						|
  export let value: UIEventSource<string>
 | 
						|
 | 
						|
  export let feature: Feature
 | 
						|
  export let args: (string | number | boolean)[] = undefined
 | 
						|
 | 
						|
  let properties = { feature, args: args ?? [] }
 | 
						|
  let construct = new UIEventSource<(value, extraProperties) => BaseUIElement>(undefined)
 | 
						|
  $: {
 | 
						|
    construct.setData(InputHelpers.AvailableInputHelpers[type])
 | 
						|
  }
 | 
						|
</script>
 | 
						|
 | 
						|
{#if construct !== undefined}
 | 
						|
  <ToSvelte
 | 
						|
    construct={() =>
 | 
						|
      new VariableUiElement(construct.mapD((construct) => construct(value, properties)))}
 | 
						|
  />
 | 
						|
{/if}
 |