mirror of
				https://github.com/NativeScript/NativeScript.git
				synced 2025-10-31 07:59:06 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			103 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			103 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| import { TextFieldBase, secureProperty } from './text-field-common';
 | |
| import { keyboardTypeProperty } from '../editable-text-base';
 | |
| 
 | |
| export * from './text-field-common';
 | |
| 
 | |
| export class TextField extends TextFieldBase {
 | |
| 	public _configureEditText(editText: android.widget.EditText) {
 | |
| 		editText.setInputType(android.text.InputType.TYPE_CLASS_TEXT | android.text.InputType.TYPE_TEXT_VARIATION_NORMAL | android.text.InputType.TYPE_TEXT_FLAG_CAP_SENTENCES | android.text.InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS);
 | |
| 		editText.setLines(1);
 | |
| 		editText.setMaxLines(1);
 | |
| 		editText.setHorizontallyScrolling(true);
 | |
| 	}
 | |
| 
 | |
| 	public _onReturnPress() {
 | |
| 		this.notify({ eventName: TextField.returnPressEvent, object: this });
 | |
| 	}
 | |
| 
 | |
| 	[secureProperty.setNative]() {
 | |
| 		this.setSecureAndKeyboardType();
 | |
| 	}
 | |
| 
 | |
| 	[keyboardTypeProperty.setNative]() {
 | |
| 		this.setSecureAndKeyboardType();
 | |
| 	}
 | |
| 
 | |
| 	setSecureAndKeyboardType(): void {
 | |
| 		let inputType: number;
 | |
| 
 | |
| 		// Check for a passed in Number value
 | |
| 		const value = +this.keyboardType;
 | |
| 		if (typeof this.keyboardType !== 'boolean' && !isNaN(value)) {
 | |
| 			this._setInputType(value);
 | |
| 			return;
 | |
| 		}
 | |
| 
 | |
| 		// Password variations are supported only for Text and Number classes.
 | |
| 		if (this.secure) {
 | |
| 			if (this.keyboardType === 'number') {
 | |
| 				inputType = android.text.InputType.TYPE_CLASS_NUMBER | android.text.InputType.TYPE_NUMBER_VARIATION_PASSWORD;
 | |
| 			} else {
 | |
| 				inputType = android.text.InputType.TYPE_CLASS_TEXT | android.text.InputType.TYPE_TEXT_VARIATION_PASSWORD;
 | |
| 			}
 | |
| 		} else {
 | |
| 			// default
 | |
| 			inputType = android.text.InputType.TYPE_CLASS_TEXT | android.text.InputType.TYPE_TEXT_VARIATION_NORMAL;
 | |
| 
 | |
| 			// add autocorrect flags
 | |
| 			if (this.autocorrect) {
 | |
| 				inputType = inputType | android.text.InputType.TYPE_TEXT_FLAG_AUTO_COMPLETE;
 | |
| 				inputType = inputType | android.text.InputType.TYPE_TEXT_FLAG_AUTO_CORRECT;
 | |
| 				inputType = inputType & ~android.text.InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS;
 | |
| 			}
 | |
| 
 | |
| 			// add autocapitalization type
 | |
| 			switch (this.autocapitalizationType) {
 | |
| 				case 'words':
 | |
| 					inputType = inputType | android.text.InputType.TYPE_TEXT_FLAG_CAP_WORDS; //8192 (0x00020000) 14th bit
 | |
| 					break;
 | |
| 				case 'sentences':
 | |
| 					inputType = inputType | android.text.InputType.TYPE_TEXT_FLAG_CAP_SENTENCES; //16384(0x00040000) 15th bit
 | |
| 					break;
 | |
| 				case 'allcharacters':
 | |
| 					inputType = inputType | android.text.InputType.TYPE_TEXT_FLAG_CAP_CHARACTERS; //4096 (0x00010000) 13th bit
 | |
| 					break;
 | |
| 				default:
 | |
| 					break;
 | |
| 			}
 | |
| 
 | |
| 			// add keyboardType flags.
 | |
| 			// They override previous if set.
 | |
| 			switch (this.keyboardType) {
 | |
| 				case 'datetime':
 | |
| 					inputType = android.text.InputType.TYPE_CLASS_DATETIME | android.text.InputType.TYPE_DATETIME_VARIATION_NORMAL;
 | |
| 					break;
 | |
| 				case 'phone':
 | |
| 					inputType = android.text.InputType.TYPE_CLASS_PHONE;
 | |
| 					break;
 | |
| 				case 'number':
 | |
| 					inputType = android.text.InputType.TYPE_CLASS_NUMBER | android.text.InputType.TYPE_NUMBER_VARIATION_NORMAL | android.text.InputType.TYPE_NUMBER_FLAG_SIGNED | android.text.InputType.TYPE_NUMBER_FLAG_DECIMAL;
 | |
| 					break;
 | |
| 				case 'decimal':
 | |
| 					inputType = android.text.InputType.TYPE_CLASS_NUMBER | android.text.InputType.TYPE_NUMBER_FLAG_DECIMAL | android.text.InputType.TYPE_NUMBER_FLAG_SIGNED;
 | |
| 					break;
 | |
| 				case 'url':
 | |
| 					inputType = android.text.InputType.TYPE_CLASS_TEXT | android.text.InputType.TYPE_TEXT_VARIATION_URI;
 | |
| 					break;
 | |
| 				case 'email':
 | |
| 					inputType = android.text.InputType.TYPE_CLASS_TEXT | android.text.InputType.TYPE_TEXT_VARIATION_EMAIL_ADDRESS;
 | |
| 					break;
 | |
| 				case 'integer':
 | |
| 					inputType = android.text.InputType.TYPE_CLASS_NUMBER;
 | |
| 					break;
 | |
| 				default:
 | |
| 					break;
 | |
| 			}
 | |
| 		}
 | |
| 
 | |
| 		this._setInputType(inputType);
 | |
| 	}
 | |
| }
 | |
| 
 | |
| TextField.prototype._isSingleLine = true;
 | 
