forked from MapComplete/MapComplete
		
	
		
			
				
	
	
		
			46 lines
		
	
	
		
			No EOL
		
	
	
		
			1.3 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			46 lines
		
	
	
		
			No EOL
		
	
	
		
			1.3 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| import {UIElement} from "../UIElement";
 | |
| import {UIEventSource} from "../UIEventSource";
 | |
| 
 | |
| 
 | |
| export class TextField extends UIElement {
 | |
| 
 | |
|     public value = new UIEventSource("");
 | |
|     /**
 | |
|      * Pings and has the value data
 | |
|      */
 | |
|     public enterPressed = new UIEventSource<string>(undefined);
 | |
|     private _placeholder: UIEventSource<string>;
 | |
| 
 | |
|     constructor(placeholder : UIEventSource<string>) {
 | |
|         super(placeholder);
 | |
|         this._placeholder = placeholder;
 | |
|     }
 | |
| 
 | |
|     protected InnerRender(): string {
 | |
|         return "<form onSubmit='return false' class='form-text-field'>" +
 | |
|             "<input type='text' placeholder='"+this._placeholder.data+"' id='text-" + this.id + "'>" +
 | |
|             "</form>";
 | |
|     }
 | |
| 
 | |
|     InnerUpdate(htmlElement: HTMLElement) {
 | |
|         super.InnerUpdate(htmlElement);
 | |
|         const field = document.getElementById('text-' + this.id);
 | |
|         const self = this;
 | |
|         field.oninput = () => {
 | |
|             self.value.setData(field.value);
 | |
|         };
 | |
| 
 | |
|         field.addEventListener("keyup", function (event) {
 | |
|             if (event.key === "Enter") {
 | |
|                 self.enterPressed.setData(field.value);
 | |
|             }
 | |
|         });
 | |
|     }
 | |
| 
 | |
|     Clear() {
 | |
|         const field = document.getElementById('text-' + this.id);
 | |
|         if (field !== undefined) {
 | |
|             field.value = "";
 | |
|         }
 | |
|     }
 | |
| } |