UNPKG

gd-sprest-js

Version:

SharePoint 2013/Online js components.

130 lines (129 loc) 5.47 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var _1 = require("."); /** * Number Field Types */ var NumberFieldTypes; (function (NumberFieldTypes) { NumberFieldTypes[NumberFieldTypes["Integer"] = 0] = "Integer"; NumberFieldTypes[NumberFieldTypes["Number"] = 1] = "Number"; NumberFieldTypes[NumberFieldTypes["Percentage"] = 2] = "Percentage"; })(NumberFieldTypes = exports.NumberFieldTypes || (exports.NumberFieldTypes = {})); /** * Number Field */ exports.NumberField = function (props) { // Method to get the value var getValue = function () { // Ensure a value exists var value = _numberfield.getValue(); if (value) { switch (props.type) { case NumberFieldTypes.Integer: value = parseInt(value); return typeof (value) === "number" ? value : null; case NumberFieldTypes.Number: value = parseFloat(value); return typeof (value) === "number" ? value : null; case NumberFieldTypes.Percentage: value = parseFloat(value); return typeof (value) === "number" ? value / 100 : null; } } // Return nothing return null; }; // Method to validate the value var validate = function (value) { var maxValue = typeof (props.minValue) === "number" ? props.maxValue : Number.MAX_VALUE; var minValue = typeof (props.minValue) === "number" ? props.minValue : Number.MAX_VALUE * -1; var numberValue = null; var valueExists = (value || "").length > 0; // Clear the error message _numberfield.setErrorMessage(""); // Ensure a value exists if (valueExists) { // Validate based on the type switch (props.type) { // Integer case NumberFieldTypes.Integer: // Ensure this is an integer numberValue = parseInt(value); if (numberValue.toString() != value) { // Set the error message _numberfield.setErrorMessage("The value is not an integer"); // Validation failed return false; } // Ensure it's between the min/max range if (!(numberValue >= minValue && numberValue <= maxValue)) { // Set the error message _numberfield.setErrorMessage("The value must be between " + minValue + " and " + maxValue + "."); // Validation failed return false; } break; case NumberFieldTypes.Number: // Ensure this is a number numberValue = parseFloat(value); if (numberValue != value) { // Set the error message _numberfield.setErrorMessage("The value is not an number"); // Validation failed return false; } // Ensure it's between the min/max range if (!(numberValue >= minValue && numberValue <= maxValue)) { // Set the error message _numberfield.setErrorMessage("The value must be between " + minValue + " and " + maxValue + "."); // Validation failed return false; } break; case NumberFieldTypes.Percentage: // Update the min/max values maxValue = maxValue == Number.MAX_VALUE ? 100 : maxValue; minValue = minValue == Number.MAX_VALUE * -1 ? 0 : minValue; // Ensure this is a number numberValue = parseFloat(value); if (numberValue != value) { // Set the error message _numberfield.setErrorMessage("The value is not an number"); // Validation failed return false; } // Ensure it's between the min/max range if (!(numberValue >= minValue && numberValue <= maxValue)) { // Set the error message _numberfield.setErrorMessage("The value must be between " + minValue + " and " + maxValue + "."); // Validation failed return false; } break; } } // Call the change event props.onChange ? props.onChange(value) : null; // Validation passed return true; }; // Render the number field var _numberfield = _1.TextField({ className: props.className, disable: props.disable, el: props.el, label: props.label, onChange: validate, placeholder: props.placeholder, required: props.required, value: props.value }); // Return the number field return { get: _numberfield.get, getValue: getValue, setErrorMessage: _numberfield.setErrorMessage, setValue: _numberfield.setValue }; };