| 
									
										
										
										
											2023-03-29 17:56:42 +02:00
										 |  |  | import { Validator } from "./Validator" | 
					
						
							| 
									
										
										
										
											2023-03-29 17:21:20 +02:00
										 |  |  | import StringValidator from "./Validators/StringValidator" | 
					
						
							|  |  |  | import TextValidator from "./Validators/TextValidator" | 
					
						
							|  |  |  | import DateValidator from "./Validators/DateValidator" | 
					
						
							| 
									
										
										
										
											2023-03-29 17:56:42 +02:00
										 |  |  | import NatValidator from "./Validators/NatValidator" | 
					
						
							| 
									
										
										
										
											2023-03-29 17:21:20 +02:00
										 |  |  | import IntValidator from "./Validators/IntValidator" | 
					
						
							| 
									
										
										
										
											2023-03-29 17:56:42 +02:00
										 |  |  | import LengthValidator from "./Validators/LengthValidator" | 
					
						
							| 
									
										
										
										
											2023-03-29 17:21:20 +02:00
										 |  |  | import DirectionValidator from "./Validators/DirectionValidator" | 
					
						
							| 
									
										
										
										
											2023-03-29 17:56:42 +02:00
										 |  |  | import WikidataValidator from "./Validators/WikidataValidator" | 
					
						
							|  |  |  | import PNatValidator from "./Validators/PNatValidator" | 
					
						
							|  |  |  | import FloatValidator from "./Validators/FloatValidator" | 
					
						
							| 
									
										
										
										
											2023-03-29 17:21:20 +02:00
										 |  |  | import PFloatValidator from "./Validators/PFloatValidator" | 
					
						
							| 
									
										
										
										
											2023-03-29 17:56:42 +02:00
										 |  |  | import EmailValidator from "./Validators/EmailValidator" | 
					
						
							| 
									
										
										
										
											2023-03-29 17:21:20 +02:00
										 |  |  | import UrlValidator from "./Validators/UrlValidator" | 
					
						
							| 
									
										
										
										
											2023-03-29 17:56:42 +02:00
										 |  |  | import PhoneValidator from "./Validators/PhoneValidator" | 
					
						
							|  |  |  | import OpeningHoursValidator from "./Validators/OpeningHoursValidator" | 
					
						
							|  |  |  | import ColorValidator from "./Validators/ColorValidator" | 
					
						
							|  |  |  | import BaseUIElement from "../BaseUIElement" | 
					
						
							|  |  |  | import Combine from "../Base/Combine" | 
					
						
							|  |  |  | import Title from "../Base/Title" | 
					
						
							| 
									
										
										
										
											2023-03-29 17:21:20 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-06-14 20:44:01 +02:00
										 |  |  | export type ValidatorType = (typeof Validators.availableTypes)[number] | 
					
						
							| 
									
										
										
										
											2023-03-30 04:51:56 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-03-29 17:21:20 +02:00
										 |  |  | export default class Validators { | 
					
						
							| 
									
										
										
										
											2023-03-30 04:51:56 +02:00
										 |  |  |     public static readonly availableTypes = [ | 
					
						
							|  |  |  |         "string", | 
					
						
							|  |  |  |         "text", | 
					
						
							|  |  |  |         "date", | 
					
						
							|  |  |  |         "nat", | 
					
						
							|  |  |  |         "int", | 
					
						
							|  |  |  |         "distance", | 
					
						
							|  |  |  |         "direction", | 
					
						
							|  |  |  |         "wikidata", | 
					
						
							|  |  |  |         "pnat", | 
					
						
							|  |  |  |         "float", | 
					
						
							|  |  |  |         "pfloat", | 
					
						
							|  |  |  |         "email", | 
					
						
							|  |  |  |         "url", | 
					
						
							|  |  |  |         "phone", | 
					
						
							|  |  |  |         "opening_hours", | 
					
						
							|  |  |  |         "color", | 
					
						
							|  |  |  |     ] as const | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     public static readonly AllValidators: ReadonlyArray<Validator> = [ | 
					
						
							| 
									
										
										
										
											2023-03-29 17:21:20 +02:00
										 |  |  |         new StringValidator(), | 
					
						
							|  |  |  |         new TextValidator(), | 
					
						
							|  |  |  |         new DateValidator(), | 
					
						
							|  |  |  |         new NatValidator(), | 
					
						
							|  |  |  |         new IntValidator(), | 
					
						
							|  |  |  |         new LengthValidator(), | 
					
						
							|  |  |  |         new DirectionValidator(), | 
					
						
							|  |  |  |         new WikidataValidator(), | 
					
						
							|  |  |  |         new PNatValidator(), | 
					
						
							|  |  |  |         new FloatValidator(), | 
					
						
							|  |  |  |         new PFloatValidator(), | 
					
						
							|  |  |  |         new EmailValidator(), | 
					
						
							|  |  |  |         new UrlValidator(), | 
					
						
							|  |  |  |         new PhoneValidator(), | 
					
						
							|  |  |  |         new OpeningHoursValidator(), | 
					
						
							|  |  |  |         new ColorValidator(), | 
					
						
							|  |  |  |     ] | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-03-30 04:51:56 +02:00
										 |  |  |     private static _byType = Validators._byTypeConstructor() | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     private static _byTypeConstructor(): Map<ValidatorType, Validator> { | 
					
						
							|  |  |  |         const map = new Map<ValidatorType, Validator>() | 
					
						
							|  |  |  |         for (const validator of Validators.AllValidators) { | 
					
						
							|  |  |  |             map.set(<ValidatorType>validator.name, validator) | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |         return map | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2023-03-29 17:21:20 +02:00
										 |  |  |     public static HelpText(): BaseUIElement { | 
					
						
							|  |  |  |         const explanations: BaseUIElement[] = Validators.AllValidators.map((type) => | 
					
						
							|  |  |  |             new Combine([new Title(type.name, 3), type.explanation]).SetClass("flex flex-col") | 
					
						
							|  |  |  |         ) | 
					
						
							|  |  |  |         return new Combine([ | 
					
						
							|  |  |  |             new Title("Available types for text fields", 1), | 
					
						
							|  |  |  |             "The listed types here trigger a special input element. Use them in `tagrendering.freeform.type` of your tagrendering to activate them", | 
					
						
							|  |  |  |             ...explanations, | 
					
						
							|  |  |  |         ]).SetClass("flex flex-col") | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-03-30 04:51:56 +02:00
										 |  |  |     static get(type: ValidatorType): Validator { | 
					
						
							|  |  |  |         return Validators._byType.get(type) | 
					
						
							| 
									
										
										
										
											2023-03-29 17:21:20 +02:00
										 |  |  |     } | 
					
						
							|  |  |  | } |