"use strict"; /** * EGroupware eTemplate2 - JS Number object * * @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License * @package etemplate * @subpackage api * @link http://www.egroupware.org * @author Nathan Gray */ var __extends = (this && this.__extends) || (function () { var extendStatics = function (d, b) { extendStatics = Object.setPrototypeOf || ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; return extendStatics(d, b); }; return function (d, b) { extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; })(); Object.defineProperty(exports, "__esModule", { value: true }); /*egw:uses et2_widget_textbox; */ var et2_widget_textbox_1 = require("./et2_widget_textbox"); var et2_core_widget_1 = require("./et2_core_widget"); var et2_core_inheritance_1 = require("./et2_core_inheritance"); /** * Class which implements the "int" and textbox type=float XET-Tags * * @augments et2_textbox */ var et2_number = /** @class */ (function (_super_1) { __extends(et2_number, _super_1); /** * Constructor * * @memberOf et2_number */ function et2_number(_parent, _attrs, _child) { var _this = _super_1.call(this, _parent, _attrs, et2_core_inheritance_1.ClassWithAttributes.extendAttributes(et2_number._attributes, _child || {})) || this; _this.min = null; _this.max = null; return _this; } et2_number.prototype.transformAttributes = function (_attrs) { _super_1.prototype.transformAttributes.call(this, _attrs); if (typeof _attrs.validator == 'undefined') { _attrs.validator = _attrs.type == 'float' ? '/^-?[0-9]*[,.]?[0-9]*$/' : '/^-?[0-9]*$/'; } }; /** * Clientside validation using regular expression in "validator" attribute * * @param {array} _messages */ et2_number.prototype.isValid = function (_messages) { var ok = true; // if we have a html5 validation error, show it, as this.input.val() will be empty! if (this.input && this.input[0] && this.input[0].validationMessage && !this.input[0].validity.stepMismatch) { _messages.push(this.input[0].validationMessage); ok = false; } return _super_1.prototype.isValid.call(this, _messages) && ok; }; et2_number.prototype.createInputWidget = function () { this.input = jQuery(document.createElement("input")); this.input.attr("type", "number"); this.input.addClass("et2_textbox"); // bind invalid event to change, to trigger our validation this.input.on('invalid', jQuery.proxy(this.change, this)); if (this.options.onkeypress && typeof this.options.onkeypress == 'function') { var self = this; this.input.keypress(function (_ev) { return self.options.onkeypress.call(this, _ev, self); }); } this.setDOMNode(this.input[0]); }; /** * Set input widget size * * Overwritten from et2_textbox as input type=number seems to ignore size, * therefore we set width in em instead, if not et2_fullWidth given. * * @param _size Rather arbitrary size units, approximately characters */ et2_number.prototype.set_size = function (_size) { if (typeof _size != 'undefined' && _size != this.input.attr("size")) { this.size = _size; this.input.attr("size", this.size); if (typeof this.options.class == 'undefined' || this.options.class.search('et2_fullWidth') == -1) { this.input.css('width', _size + 'em'); } } }; et2_number.prototype.set_min = function (_value) { this.min = _value; if (this.min == null) { this.input.removeAttr("min"); } else { this.input.attr("min", this.min); } }; et2_number.prototype.set_max = function (_value) { this.max = _value; if (this.max == null) { this.input.removeAttr("max"); } else { this.input.attr("max", this.max); } }; return et2_number; }(et2_widget_textbox_1.et2_textbox)); et2_core_widget_1.et2_register_widget(et2_number, ["int", "integer", "float"]); /** * Extend read-only to tell it to ignore special attributes, which * would cause warnings otherwise * @augments et2_textbox_ro * @class */ var et2_number_ro = /** @class */ (function (_super_1) { __extends(et2_number_ro, _super_1); function et2_number_ro() { return _super_1 !== null && _super_1.apply(this, arguments) || this; } et2_number_ro.prototype.set_value = function (_value) { if (typeof this.options.precision != 'undefined' && "" + _value != "") { _value = parseFloat(_value).toFixed(this.options.precision); } this._super.call(this, _value); }; return et2_number_ro; }(et2_textbox_ro)); et2_core_widget_1.et2_register_widget(et2_number_ro, ["int_ro", "integer_ro", "float_ro"]); //# sourceMappingURL=et2_widget_number.js.map