UNPKG

nativescript-masked-text-field

Version:
106 lines (105 loc) 5.26 kB
"use strict"; function __export(m) { for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]; } Object.defineProperty(exports, "__esModule", { value: true }); var text_base_1 = require("ui/text-base"); var masked_text_field_common_1 = require("./masked-text-field-common"); __export(require("./masked-text-field-common")); var MaskedTextField = (function (_super) { __extends(MaskedTextField, _super); function MaskedTextField() { return _super !== null && _super.apply(this, arguments) || this; } MaskedTextField.prototype.initNativeView = function () { _super.prototype.initNativeView.call(this); this._delegate = MaskedTextFieldDelegate.initWithOwnerAndDefaultImplementation(new WeakRef(this), this._delegate); }; MaskedTextField.prototype[masked_text_field_common_1.textProperty.getDefault] = function () { return ""; }; MaskedTextField.prototype[masked_text_field_common_1.textProperty.setNative] = function (value) { this._setNativeText(value); }; MaskedTextField.prototype._setNativeText = function (value) { var style = this.style; var dict = new Map(); switch (style.textDecoration) { case "none": break; case "underline": dict.set(NSUnderlineStyleAttributeName, 1); break; case "line-through": dict.set(NSStrikethroughStyleAttributeName, 1); break; case "underline line-through": dict.set(NSUnderlineStyleAttributeName, 1); dict.set(NSStrikethroughStyleAttributeName, 1); break; default: throw new Error("Invalid text decoration value: " + style.textDecoration + ". Valid values are: 'none', 'underline', 'line-through', 'underline line-through'."); } if (style.letterSpacing !== 0) { dict.set(NSKernAttributeName, style.letterSpacing * this.nativeView.font.pointSize); } if (style.color) { dict.set(NSForegroundColorAttributeName, style.color.ios); } var stringValue = (value === undefined || value === null) ? "" : value.toString(); var source = text_base_1.getTransformedText(stringValue, this.textTransform); if (dict.size > 0) { var result = NSMutableAttributedString.alloc().initWithString(source); result.setAttributesRange(dict, { location: 0, length: source.length }); this.nativeView.attributedText = result; } else { this.nativeView.attributedText = undefined; this.nativeView.text = source; } }; return MaskedTextField; }(masked_text_field_common_1.MaskedTextFieldBase)); exports.MaskedTextField = MaskedTextField; var MaskedTextFieldDelegate = (function (_super) { __extends(MaskedTextFieldDelegate, _super); function MaskedTextFieldDelegate() { return _super !== null && _super.apply(this, arguments) || this; } MaskedTextFieldDelegate_1 = MaskedTextFieldDelegate; MaskedTextFieldDelegate.initWithOwnerAndDefaultImplementation = function (owner, defaultImplementation) { var delegate = MaskedTextFieldDelegate_1.new(); delegate._owner = owner; delegate._defaultImplementation = defaultImplementation; return delegate; }; MaskedTextFieldDelegate.prototype.textFieldShouldBeginEditing = function (textField) { return this._defaultImplementation.textFieldShouldBeginEditing(textField); }; MaskedTextFieldDelegate.prototype.textFieldDidBeginEditing = function (textField) { this._defaultImplementation.textFieldDidBeginEditing(textField); textField.selectedTextRange = textField.textRangeFromPositionToPosition(textField.beginningOfDocument, textField.beginningOfDocument); }; MaskedTextFieldDelegate.prototype.textFieldDidEndEditing = function (textField) { this._defaultImplementation.textFieldDidEndEditing(textField); }; MaskedTextFieldDelegate.prototype.textFieldShouldClear = function (textField) { return this._defaultImplementation.textFieldShouldClear(textField); }; MaskedTextFieldDelegate.prototype.textFieldShouldReturn = function (textField) { return this._defaultImplementation.textFieldShouldReturn(textField); }; MaskedTextFieldDelegate.prototype.textFieldShouldChangeCharactersInRangeReplacementString = function (textField, range, replacementString) { var owner = this._owner.get(); var isBackwardsIn = (replacementString === ""); var newCaretPositionNumber = owner._updateMaskedText(range.location, range.length, replacementString, isBackwardsIn); var caretPosition = textField.positionFromPositionOffset(textField.beginningOfDocument, newCaretPositionNumber); textField.selectedTextRange = textField.textRangeFromPositionToPosition(caretPosition, caretPosition); return false; }; var MaskedTextFieldDelegate_1; MaskedTextFieldDelegate = MaskedTextFieldDelegate_1 = __decorate([ ObjCClass(UITextFieldDelegate) ], MaskedTextFieldDelegate); return MaskedTextFieldDelegate; }(NSObject));