UNPKG

dijit

Version:

Dijit provides a complete collection of user interface controls based on Dojo, giving you the power to create web applications that are highly optimized for usability, performance, internationalization, accessibility, but above all deliver an incredible u

82 lines (69 loc) 3.13 kB
define([ "dojo/currency", // currency._mixInDefaults currency.format currency.parse currency.regexp "dojo/_base/declare", // declare "dojo/_base/lang", // lang.hitch "./NumberTextBox" ], function(currency, declare, lang, NumberTextBox){ // module: // dijit/form/CurrencyTextBox var CurrencyTextBox = declare("dijit.form.CurrencyTextBox", NumberTextBox, { // summary: // A validating currency textbox // description: // CurrencyTextBox is similar to `dijit/form/NumberTextBox` but has a few // extra features related to currency: // // 1. After specifying the currency type (american dollars, euros, etc.) it automatically // sets parse/format options such as how many decimal places to show. // 2. The currency mark (dollar sign, euro mark, etc.) is displayed when the field is blurred // but erased during editing, so that the user can just enter a plain number. // currency: [const] String // the [ISO4217](http://en.wikipedia.org/wiki/ISO_4217) currency code, a three letter sequence like "USD" currency: "", /*===== // constraints: CurrencyTextBox.__Constraints // Despite the name, this parameter specifies both constraints on the input // (including minimum/maximum allowed values) as well as // formatting options. See `dijit/form/CurrencyTextBox.__Constraints` for details. constraints: {}, ======*/ baseClass: "dijitTextBox dijitCurrencyTextBox", // Override NumberTextBox._formatter to deal with currencies, ex: converts "123.45" to "$123.45" _formatter: currency.format, _parser: currency.parse, _regExpGenerator: currency.regexp, parse: function(/*String*/ value, /*Object*/ constraints){ // summary: // Parses string value as a Currency, according to the constraints object // tags: // protected extension var v = this.inherited(arguments); if(isNaN(v) && /\d+/.test(value)){ // currency parse failed, but it could be because they are using NumberTextBox format so try its parse v = lang.hitch(lang.delegate(this, { _parser: NumberTextBox.prototype._parser }), "inherited")(arguments); } return v; }, _setConstraintsAttr: function(/*Object*/ constraints){ if(!constraints.currency && this.currency){ constraints.currency = this.currency; } this.inherited(arguments, [ currency._mixInDefaults(lang.mixin(constraints, { exponent: false })) ]); // get places } }); /*===== CurrencyTextBox.__Constraints = declare([NumberTextBox.__Constraints, currency.__FormatOptions, currency.__ParseOptions], { // summary: // Specifies both the rules on valid/invalid values (minimum, maximum, // number of required decimal places), and also formatting options for // displaying the value when the field is not focused (currency symbol, // etc.) // description: // Follows the pattern of `dijit/form/NumberTextBox.__Constraints`. // In general developers won't need to set this parameter. // example: // To ensure that the user types in the cents (for example, 1.00 instead of just 1): // | {fractional:true} }); =====*/ return CurrencyTextBox; });