forked from MapComplete/MapComplete
		
	Fix: normalization of URLs, formatting, stabilize inputHelper
This commit is contained in:
		
							parent
							
								
									cc60d2a5fb
								
							
						
					
					
						commit
						441c4df4f6
					
				
					 3 changed files with 25 additions and 28 deletions
				
			
		|  | @ -9,6 +9,8 @@ | ||||||
|     import InputHelpers from "./InputHelpers"; |     import InputHelpers from "./InputHelpers"; | ||||||
|     import ToSvelte from "../Base/ToSvelte.svelte"; |     import ToSvelte from "../Base/ToSvelte.svelte"; | ||||||
|     import type {Feature} from "geojson"; |     import type {Feature} from "geojson"; | ||||||
|  |     import BaseUIElement from "../BaseUIElement"; | ||||||
|  |     import {VariableUiElement} from "../Base/VariableUIElement"; | ||||||
| 
 | 
 | ||||||
|     export let type: ValidatorType; |     export let type: ValidatorType; | ||||||
|     export let value: UIEventSource<string>; |     export let value: UIEventSource<string>; | ||||||
|  | @ -17,10 +19,14 @@ | ||||||
|     export let args: (string | number | boolean)[] = undefined; |     export let args: (string | number | boolean)[] = undefined; | ||||||
| 
 | 
 | ||||||
|     let properties = {feature, args: args ?? []}; |     let properties = {feature, args: args ?? []}; | ||||||
|   let construct = InputHelpers.AvailableInputHelpers[type]; |     let construct = new UIEventSource<(value, extraProperties) => BaseUIElement>(undefined) | ||||||
|  |     $: { | ||||||
|  |         construct.setData(InputHelpers.AvailableInputHelpers[type]) | ||||||
|  |     } | ||||||
|  | 
 | ||||||
| 
 | 
 | ||||||
| </script> | </script> | ||||||
| 
 | 
 | ||||||
| {#if construct !== undefined} | {#if construct !== undefined} | ||||||
|   <ToSvelte construct={() => construct(value, properties)} /> |     <ToSvelte construct={() => new VariableUiElement(construct.mapD(construct => construct(value, properties)))}/> | ||||||
| {/if} | {/if} | ||||||
|  |  | ||||||
|  | @ -11,10 +11,10 @@ | ||||||
|   export let value: UIEventSource<string>; |   export let value: UIEventSource<string>; | ||||||
|   // Internal state, only copied to 'value' so that no invalid values leak outside |   // Internal state, only copied to 'value' so that no invalid values leak outside | ||||||
|   let _value = new UIEventSource(value.data ?? ""); |   let _value = new UIEventSource(value.data ?? ""); | ||||||
|   onDestroy(value.addCallbackAndRunD(v => _value.setData(v ?? ""))); |  | ||||||
|   export let type: ValidatorType; |   export let type: ValidatorType; | ||||||
|   export let feedback: UIEventSource<Translation> | undefined = undefined; |   export let feedback: UIEventSource<Translation> | undefined = undefined; | ||||||
|   export let getCountry: () => string | undefined |   export let getCountry: () => string | undefined | ||||||
|  |    | ||||||
|   let validator : Validator = Validators.get(type) |   let validator : Validator = Validators.get(type) | ||||||
|   $: { |   $: { | ||||||
|     // The type changed -> reset some values |     // The type changed -> reset some values | ||||||
|  | @ -23,11 +23,6 @@ | ||||||
|     feedback =  feedback?.setData(validator?.getFeedback(_value.data, getCountry)); |     feedback =  feedback?.setData(validator?.getFeedback(_value.data, getCountry)); | ||||||
|   } |   } | ||||||
|    |    | ||||||
|   onDestroy(value.addCallbackAndRun(v => { |  | ||||||
|     if(v === undefined || v === ""){ |  | ||||||
|       _value.setData("") |  | ||||||
|     } |  | ||||||
|   })) |  | ||||||
|   onDestroy(_value.addCallbackAndRun(v => { |   onDestroy(_value.addCallbackAndRun(v => { | ||||||
|     if (validator.isValid(v, getCountry)) { |     if (validator.isValid(v, getCountry)) { | ||||||
|       feedback?.setData(undefined); |       feedback?.setData(undefined); | ||||||
|  |  | ||||||
|  | @ -45,10 +45,6 @@ export default class UrlValidator extends Validator { | ||||||
|                 cleaned = cleaned.substr(0, cleaned.length - 1) |                 cleaned = cleaned.substr(0, cleaned.length - 1) | ||||||
|             } |             } | ||||||
| 
 | 
 | ||||||
|             if (!str.startsWith("http") && cleaned.startsWith("https://")) { |  | ||||||
|                 cleaned = cleaned.substr("https://".length) |  | ||||||
|             } |  | ||||||
| 
 |  | ||||||
|             return cleaned |             return cleaned | ||||||
|         } catch (e) { |         } catch (e) { | ||||||
|             console.error(e) |             console.error(e) | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue