UNPKG

@kre-form/ionic

Version:

220 lines 19.7 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { Input, ContentChild, Directive, Renderer2, ElementRef, } from "@angular/core"; import { Platform, IonText } from "@ionic/angular"; import * as _ from "lodash"; var IonKreFormFloat = /** @class */ (function () { function IonKreFormFloat(el, renderer, plt) { this.el = el; this.plt = plt; this.selectedColor = ""; this.decimalNumber = -1; // 保留小数位数,默认不限制 // 保留小数位数,默认不限制 this.max = 6; this.floattype = "base"; // 固定整数取6位 base:兼容除流程外的数字精度显示,为base表示整数固定取6位 // 固定整数取6位 base:兼容除流程外的数字精度显示,为base表示整数固定取6位 this.allowminus = true; // 允许负数 -true 允许 -false 不允许 this.isblur = false; } /** * @param {?} e * @return {?} */ IonKreFormFloat.prototype.onfocus = /** * @param {?} e * @return {?} */ function (e) { this.isblur = false; }; /** * @param {?} e * @return {?} */ IonKreFormFloat.prototype.onBlur = /** * @param {?} e * @return {?} */ function (e) { this.isblur = true; if (e.currentTarget.value !== "" && !isNaN(e.currentTarget.value)) { /** @type {?} */ var val = e.currentTarget.value; if (this.decimalNumber > -1) { val = Number(e.currentTarget.value).toFixed(this.decimalNumber); } e.currentTarget.value = val; } else { e.currentTarget.value = ""; } }; /** * @param {?} event * @return {?} */ IonKreFormFloat.prototype.onModelChange = /** * @param {?} event * @return {?} */ function (event) { if (this.isblur) return; var value = event.detail.value; if (value === 0) value = ""; if (!_.isNumber(value)) { event.currentTarget.value = value; } else { event.currentTarget.value = value = this.checkValue(value); } }; /** * @param {?} event * @return {?} */ IonKreFormFloat.prototype.checkValue = /** * @param {?} event * @return {?} */ function (event) { /** @type {?} */ var oldValue = event; /** @type {?} */ var mark = ""; if (this.allowminus) { mark = event.charAt(0); } if (this.decimalNumber === 0) { if (_.isNumber(oldValue)) { oldValue = Number(oldValue).toFixed(0); // 保留整数 } else { // oldValue = oldValue; } } else { oldValue = oldValue.replace(/[^\d\.]/g, ""); // 清除"数字"和"."以外的字符 } /** @type {?} */ var newValue = ""; if (oldValue === ".") { newValue = ""; } else if (oldValue.indexOf(".") >= 0) { if (this.floattype !== "base") { /** @type {?} */ var index = event.indexOf("."); /** @type {?} */ var opintInLast = event.lastIndexOf(".") === event.length - 1; /** @type {?} */ var totlaLength = index !== -1 && !opintInLast ? this.max + 1 : this.max; event = totlaLength > 0 ? event.substr(0, totlaLength) : event; oldValue = oldValue.split("."); oldValue.length = 2; /** @type {?} */ var floatLength = oldValue[1] ? oldValue[1].length : 0; floatLength = floatLength > this.decimalNumber ? this.decimalNumber : floatLength; /** @type {?} */ var intPart = this.max > 0 ? oldValue[0].substr(0, this.max - floatLength) : oldValue[0]; if (this.decimalNumber === 0 || intPart.length >= this.max) { newValue = String(Math.abs(Number(intPart))); } else { /** @type {?} */ var floatPart = floatLength ? oldValue[1].substr(0, floatLength) : oldValue[1].substr(0, 3); newValue = String(Math.abs(Number(intPart)) + "." + floatPart); } } else { if (this.decimalNumber > 0) { newValue = oldValue.split(".")[0].substr(0, 6) + "." + oldValue.split(".")[1].substr(0, this.decimalNumber); } else { newValue = oldValue.split(".")[0].substr(0, 6) + "." + oldValue.split(".")[1].substr(0); } } } else { if (this.floattype !== "base") { newValue = oldValue.substr(0, this.max); } else { newValue = oldValue.substr(0, 6); } } if (String(newValue).substr(0, 1) === "0" && String(newValue).substr(1, 1) !== ".") { newValue = "0"; } if (this.allowminus && mark === "-") { event = "" + mark + newValue; newValue = "" + mark + newValue; } else { event = newValue; } return event; }; IonKreFormFloat.decorators = [ { type: Directive, args: [{ selector: "[ionKreFormFloat]", host: { "(ionBlur)": "onBlur($event)", "(ionChange)": "onModelChange($event)", "(ionFocus)": "onfocus($event)", }, },] } ]; /** @nocollapse */ IonKreFormFloat.ctorParameters = function () { return [ { type: ElementRef }, { type: Renderer2 }, { type: Platform } ]; }; IonKreFormFloat.propDecorators = { selectedColor: [{ type: Input }], decimalNumber: [{ type: Input }], max: [{ type: Input }], floattype: [{ type: Input }], allowminus: [{ type: Input }], _ionInput: [{ type: ContentChild, args: [IonText, { static: false },] }] }; return IonKreFormFloat; }()); export { IonKreFormFloat }; if (false) { /** @type {?} */ IonKreFormFloat.prototype.selectedColor; /** @type {?} */ IonKreFormFloat.prototype.decimalNumber; /** @type {?} */ IonKreFormFloat.prototype.max; /** @type {?} */ IonKreFormFloat.prototype.floattype; /** @type {?} */ IonKreFormFloat.prototype.allowminus; /** @type {?} */ IonKreFormFloat.prototype._ionInput; /** @type {?} */ IonKreFormFloat.prototype.isblur; /** @type {?} */ IonKreFormFloat.prototype.el; /** @type {?} */ IonKreFormFloat.prototype.plt; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia3JlLWZvcm0uZmxvYXQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Aa3JlLWZvcm0vaW9uaWMvIiwic291cmNlcyI6WyJsaWIva3JlLWZvcm0uZmxvYXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFDTCxLQUFLLEVBQ0wsWUFBWSxFQUNaLFNBQVMsRUFDVCxTQUFTLEVBQ1QsVUFBVSxHQUNYLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkQsT0FBTyxLQUFLLENBQUMsTUFBTSxRQUFRLENBQUM7QUFFNUI7SUFpQkUseUJBQ1MsRUFBYyxFQUNyQixRQUFtQixFQUNaLEdBQWE7UUFGYixPQUFFLEdBQUYsRUFBRSxDQUFZO1FBRWQsUUFBRyxHQUFILEdBQUcsQ0FBVTtRQVhiLGtCQUFhLEdBQUcsRUFBRSxDQUFDO1FBQ25CLGtCQUFhLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxlQUFlOztRQUNuQyxRQUFHLEdBQUcsQ0FBQyxDQUFDO1FBQ1IsY0FBUyxHQUFHLE1BQU0sQ0FBQyxDQUFDLDRDQUE0Qzs7UUFDaEUsZUFBVSxHQUFHLElBQUksQ0FBQyxDQUFDLDRCQUE0QjtRQUV4RCxXQUFNLEdBQUcsS0FBSyxDQUFDO0lBTVosQ0FBQzs7Ozs7SUFDSixpQ0FBTzs7OztJQUFQLFVBQVEsQ0FBQztRQUNQLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO0lBQ3RCLENBQUM7Ozs7O0lBQ0QsZ0NBQU07Ozs7SUFBTixVQUFPLENBQUM7UUFDTixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztRQUVuQixJQUFJLENBQUMsQ0FBQyxhQUFhLENBQUMsS0FBSyxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxFQUFFOztnQkFDN0QsR0FBRyxHQUFRLENBQUMsQ0FBQyxhQUFhLENBQUMsS0FB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LFFBQVEsRUFBRSxtQkFBbUI7b0JBQzdCLElBQUksRUFBRTt3QkFDSixXQUFXLEVBQUUsZ0JBQWdCO3dCQUM3QixhQUFhLEVBQUUsdUJBQXVCO3dCQUN0QyxZQUFZLEVBQUUsaUJBQWlCO3FCQUNoQztpQkFDRjs7OztnQkFaQyxVQUFVO2dCQURWLFNBQVM7Z0JBR0YsUUFBUTs7O2dDQVlkLEtBQUs7Z0NBQ0wsS0FBSztzQkFDTCxLQUFLOzRCQUNMLEtBQUs7NkJBQ0wsS0FBSzs0QkFDTCxZQUFZLFNBQUMsT0FBTyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTs7SUFrSDFDLHNCQUFDO0NBQUEsQUFoSUQsSUFnSUM7U0F4SFksZUFBZTs7O0lBQzFCLHdDQUE0Qjs7SUFDNUIsd0NBQTRCOztJQUM1Qiw4QkFBaUI7O0lBQ2pCLG9DQUE0Qjs7SUFDNUIscUNBQTJCOztJQUMzQixvQ0FBNkQ7O0lBQzdELGlDQUFlOztJQUdiLDZCQUFxQjs7SUFFckIsOEJBQW9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgSW5wdXQsXG4gIENvbnRlbnRDaGlsZCxcbiAgRGlyZWN0aXZlLFxuICBSZW5kZXJlcjIsXG4gIEVsZW1lbnRSZWYsXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBQbGF0Zm9ybSwgSW9uVGV4dCB9IGZyb20gXCJAaW9uaWMvYW5ndWxhclwiO1xuaW1wb3J0ICogYXMgXyBmcm9tIFwibG9kYXNoXCI7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogXCJbaW9uS3JlRm9ybUZsb2F0XVwiLFxuICBob3N0OiB7XG4gICAgXCIoaW9uQmx1cilcIjogXCJvbkJsdXIoJGV2ZW50KVwiLFxuICAgIFwiKGlvbkNoYW5nZSlcIjogXCJvbk1vZGVsQ2hhbmdlKCRldmVudClcIixcbiAgICBcIihpb25Gb2N1cylcIjogXCJvbmZvY3VzKCRldmVudClcIixcbiAgfSxcbn0pXG5leHBvcnQgY2xhc3MgSW9uS3JlRm9ybUZsb2F0IHtcbiAgQElucHV0KCkgc2VsZWN0ZWRDb2xvciA9IFwiXCI7XG4gIEBJbnB1dCgpIGRlY2ltYWxOdW1iZXIgPSAtMTsgLy8g5L+d55WZ5bCP5pWw5L2N5pWwLOm7mOiupOS4jemZkOWItlxuICBASW5wdXQoKSBtYXggPSA2O1xuICBASW5wdXQoKSBmbG9hdHR5cGUgPSBcImJhc2VcIjsgLy8g5Zu65a6a5pW05pWw5Y+WNuS9jSBiYXNlOuWFvOWuuemZpOa1geeoi+WklueahOaVsOWtl+eyvuW6puaYvuekuu+8jOS4umJhc2XooajnpLrmlbTmlbDlm7rlrprlj5Y25L2NXG4gIEBJbnB1dCgpIGFsbG93bWludXMgPSB0cnVlOyAvLyDlhYHorrjotJ/mlbAgIC10cnVlIOWFgeiuuCAtZmFsc2Ug5LiN5YWB6K64XG4gIEBDb250ZW50Q2hpbGQoSW9uVGV4dCwgeyBzdGF0aWM6IGZhbHNlIH0pIF9pb25JbnB1dDogSW9uVGV4dDtcbiAgaXNibHVyID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGVsOiBFbGVtZW50UmVmLFxuICAgIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgcHVibGljIHBsdDogUGxhdGZvcm1cbiAgKSB7fVxuICBvbmZvY3VzKGUpIHtcbiAgICB0aGlzLmlzYmx1ciA9IGZhbHNlO1xuICB9XG4gIG9uQmx1cihlKSB7XG4gICAgdGhpcy5pc2JsdXIgPSB0cnVlO1xuXG4gICAgaWYgKGUuY3VycmVudFRhcmdldC52YWx1ZSAhPT0gXCJcIiAmJiAhaXNOYU4oZS5jdXJyZW50VGFyZ2V0LnZhbHVlKSkge1xuICAgICAgbGV0IHZhbDogYW55ID0gZS5jdXJyZW50VGFyZ2V0LnZhbHVlO1xuXG4gICAgICBpZiAodGhpcy5kZWNpbWFsTnVtYmVyID4gLTEpIHtcbiAgICAgICAgdmFsID0gTnVtYmVyKGUuY3VycmVudFRhcmdldC52YWx1ZSkudG9GaXhlZCh0aGlzLmRlY2ltYWxOdW1iZXIpO1xuICAgICAgfVxuICAgICAgZS5jdXJyZW50VGFyZ2V0LnZhbHVlID0gdmFsO1xuICAgIH0gZWxzZSB7XG4gICAgICBlLmN1cnJlbnRUYXJnZXQudmFsdWUgPSBcIlwiO1xuICAgIH1cbiAgfVxuICBvbk1vZGVsQ2hhbmdlKGV2ZW50KSB7XG4gICAgaWYgKHRoaXMuaXNibHVyKSByZXR1cm47XG4gICAgbGV0IHsgdmFsdWUgfSA9IGV2ZW50LmRldGFpbDtcbiAgICBpZiAodmFsdWUgPT09IDApIHZhbHVlID0gXCJcIjtcbiAgICBpZiAoIV8uaXNOdW1iZXIodmFsdWUpKSB7XG4gICAgICBldmVudC5jdXJyZW50VGFyZ2V0LnZhbHVlID0gdmFsdWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGV2ZW50LmN1cnJlbnRUYXJnZXQudmFsdWUgPSB2YWx1ZSA9IHRoaXMuY2hlY2tWYWx1ZSh2YWx1ZSk7XG4gICAgfVxuICB9XG4gIGNoZWNrVmFsdWUoZXZlbnQpIHtcbiAgICBsZXQgb2xkVmFsdWUgPSBldmVudDtcbiAgICBsZXQgbWFyayA9IFwiXCI7XG4gICAgaWYgKHRoaXMuYWxsb3dtaW51cykge1xuICAgICAgbWFyayA9IGV2ZW50LmNoYXJBdCgwKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuZGVjaW1hbE51bWJlciA9PT0gMCkge1xuICAgICAgaWYgKF8uaXNOdW1iZXIob2xkVmFsdWUpKSB7XG4gICAgICAgIG9sZFZhbHVlID0gTnVtYmVyKG9sZFZhbHVlKS50b0ZpeGVkKDApOyAvLyAg5L+d55WZ5pW05pWwXG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBvbGRWYWx1ZSA9IG9sZFZhbHVlO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBvbGRWYWx1ZSA9IG9sZFZhbHVlLnJlcGxhY2UoL1teXFxkXFwuXS9nLCBcIlwiKTsgLy8g5riF6ZmkXCLmlbDlrZdcIuWSjFwiLlwi5Lul5aSW55qE5a2X56ymXG4gICAgfVxuICAgIGxldCBuZXdWYWx1ZTogYW55ID0gXCJcIjtcblxuICAgIGlmIChvbGRWYWx1ZSA9PT0gXCIuXCIpIHtcbiAgICAgIG5ld1ZhbHVlID0gXCJcIjtcbiAgICB9IGVsc2UgaWYgKG9sZFZhbHVlLmluZGV4T2YoXCIuXCIpID49IDApIHtcbiAgICAgIGlmICh0aGlzLmZsb2F0dHlwZSAhPT0gXCJiYXNlXCIpIHtcbiAgICAgICAgY29uc3QgaW5kZXggPSBldmVudC5pbmRleE9mKFwiLlwiKTtcbiAgICAgICAgY29uc3Qgb3BpbnRJbkxhc3QgPSBldmVudC5sYXN0SW5kZXhPZihcIi5cIikgPT09IGV2ZW50Lmxlbmd0aCAtIDE7XG4gICAgICAgIGNvbnN0IHRvdGxhTGVuZ3RoID1cbiAgICAgICAgICBpbmRleCAhPT0gLTEgJiYgIW9waW50SW5MYXN0ID8gdGhpcy5tYXggKyAxIDogdGhpcy5tYXg7XG4gICAgICAgIGV2ZW50ID0gdG90bGFMZW5ndGggPiAwID8gZXZlbnQuc3Vic3RyKDAsIHRvdGxhTGVuZ3RoKSA6IGV2ZW50O1xuXG4gICAgICAgIG9sZFZhbHVlID0gb2xkVmFsdWUuc3BsaXQoXCIuXCIpO1xuICAgICAgICBvbGRWYWx1ZS5sZW5ndGggPSAyO1xuICAgICAgICBsZXQgZmxvYXRMZW5ndGggPSBvbGRWYWx1ZVsxXSA/IG9sZFZhbHVlWzFdLmxlbmd0aCA6IDA7XG4gICAgICAgIGZsb2F0TGVuZ3RoID1cbiAgICAgICAgICBmbG9hdExlbmd0aCA+IHRoaXMuZGVjaW1hbE51bWJlciA/IHRoaXMuZGVjaW1hbE51bWJlciA6IGZsb2F0TGVuZ3RoO1xuICAgICAgICBjb25zdCBpbnRQYXJ0ID1cbiAgICAgICAgICB0aGlzLm1heCA+IDBcbiAgICAgICAgICAgID8gb2xkVmFsdWVbMF0uc3Vic3RyKDAsIHRoaXMubWF4IC0gZmxvYXRMZW5ndGgpXG4gICAgICAgICAgICA6IG9sZFZhbHVlWzBdO1xuXG4gICAgICAgIGlmICh0aGlzLmRlY2ltYWxOdW1iZXIgPT09IDAgfHwgaW50UGFydC5sZW5ndGggPj0gdGhpcy5tYXgpIHtcbiAgICAgICAgICBuZXdWYWx1ZSA9IFN0cmluZyhNYXRoLmFicyhOdW1iZXIoaW50UGFydCkpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCBmbG9hdFBhcnQgPSBmbG9hdExlbmd0aFxuICAgICAgICAgICAgPyBvbGRWYWx1ZVsxXS5zdWJzdHIoMCwgZmxvYXRMZW5ndGgpXG4gICAgICAgICAgICA6IG9sZFZhbHVlWzFdLnN1YnN0cigwLCAzKTtcbiAgICAgICAgICBuZXdWYWx1ZSA9IFN0cmluZyhNYXRoLmFicyhOdW1iZXIoaW50UGFydCkpICsgXCIuXCIgKyBmbG9hdFBhcnQpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAodGhpcy5kZWNpbWFsTnVtYmVyID4gMCkge1xuICAgICAgICAgIG5ld1ZhbHVlID1cbiAgICAgICAgICAgIG9sZFZhbHVlLnNwbGl0KFwiLlwiKVswXS5zdWJzdHIoMCwgNikgK1xuICAgICAgICAgICAgXCIuXCIgK1xuICAgICAgICAgICAgb2xkVmFsdWUuc3BsaXQoXCIuXCIpWzFdLnN1YnN0cigwLCB0aGlzLmRlY2ltYWxOdW1iZXIpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG5ld1ZhbHVlID1cbiAgICAgICAgICAgIG9sZFZhbHVlLnNwbGl0KFwiLlwiKVswXS5zdWJzdHIoMCwgNikgK1xuICAgICAgICAgICAgXCIuXCIgK1xuICAgICAgICAgICAgb2xkVmFsdWUuc3BsaXQoXCIuXCIpWzFdLnN1YnN0cigwKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodGhpcy5mbG9hdHR5cGUgIT09IFwiYmFzZVwiKSB7XG4gICAgICAgIG5ld1ZhbHVlID0gb2xkVmFsdWUuc3Vic3RyKDAsIHRoaXMubWF4KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG5ld1ZhbHVlID0gb2xkVmFsdWUuc3Vic3RyKDAsIDYpO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoXG4gICAgICBTdHJpbmcobmV3VmFsdWUpLnN1YnN0cigwLCAxKSA9PT0gXCIwXCIgJiZcbiAgICAgIFN0cmluZyhuZXdWYWx1ZSkuc3Vic3RyKDEsIDEpICE9PSBcIi5cIlxuICAgICkge1xuICAgICAgbmV3VmFsdWUgPSBcIjBcIjtcbiAgICB9XG4gICAgaWYgKHRoaXMuYWxsb3dtaW51cyAmJiBtYXJrID09PSBcIi1cIikge1xuICAgICAgZXZlbnQgPSBgJHttYXJrfSR7bmV3VmFsdWV9YDtcbiAgICAgIG5ld1ZhbHVlID0gYCR7bWFya30ke25ld1ZhbHVlfWA7XG4gICAgfSBlbHNlIHtcbiAgICAgIGV2ZW50ID0gbmV3VmFsdWU7XG4gICAgfVxuICAgIHJldHVybiBldmVudDtcbiAgfVxufVxuIl19