]>
git.wh0rd.org - tt-rss.git/blob - lib/dijit/form/CurrencyTextBox.js.uncompressed.js
1 define("dijit/form/CurrencyTextBox", [
2 "dojo/currency", // currency._mixInDefaults currency.format currency.parse currency.regexp
3 "dojo/_base/declare", // declare
4 "dojo/_base/lang", // lang.hitch
6 ], function(currency
, declare
, lang
, NumberTextBox
){
9 // dijit/form/CurrencyTextBox
12 var __Constraints = declare([NumberTextBox.__Constraints, currency.__FormatOptions, currency.__ParseOptions], {
14 // Specifies both the rules on valid/invalid values (minimum, maximum,
15 // number of required decimal places), and also formatting options for
16 // displaying the value when the field is not focused (currency symbol,
19 // Follows the pattern of `dijit/form/NumberTextBox.__Constraints`.
20 // In general developers won't need to set this parameter
22 // To ensure that the user types in the cents (for example, 1.00 instead of just 1):
23 // | {fractional:true}
27 return declare("dijit.form.CurrencyTextBox", NumberTextBox
, {
29 // A validating currency textbox
31 // CurrencyTextBox is similar to `dijit/form/NumberTextBox` but has a few
32 // extra features related to currency:
34 // 1. After specifying the currency type (american dollars, euros, etc.) it automatically
35 // sets parse/format options such as how many decimal places to show.
36 // 2. The currency mark (dollar sign, euro mark, etc.) is displayed when the field is blurred
37 // but erased during editing, so that the user can just enter a plain number.
39 // currency: [const] String
40 // the [ISO4217](http://en.wikipedia.org/wiki/ISO_4217) currency code, a three letter sequence like "USD"
44 // constraints: __Constraints
45 // Despite the name, this parameter specifies both constraints on the input
46 // (including minimum/maximum allowed values) as well as
47 // formatting options.
51 baseClass
: "dijitTextBox dijitCurrencyTextBox",
53 // Override pattern ValidationTextBox.pattern.... we use a reg-ex generating function rather
54 // than a straight regexp to deal with locale (plus formatting options too?)
55 pattern: function(constraints
){
56 // if focused, accept either currency data or NumberTextBox format
57 return '(' + (this.focused
? this.inherited(arguments
, [ lang
.mixin({}, constraints
, this.editOptions
) ]) + '|' : '')
58 + currency
.regexp(constraints
) + ')';
61 // Override NumberTextBox._formatter to deal with currencies, ex: converts "123.45" to "$123.45"
62 _formatter
: currency
.format
,
64 _parser
: currency
.parse
,
66 parse: function(/*String*/ value
, /*Object*/ constraints
){
68 // Parses string value as a Currency, according to the constraints object
70 // protected extension
71 var v
= this.inherited(arguments
);
72 if(isNaN(v
) && /\d+/.test(value
)){ // currency parse failed, but it could be because they are using NumberTextBox format so try its parse
73 v
= lang
.hitch(lang
.mixin({}, this, { _parser
: NumberTextBox
.prototype._parser
}), "inherited")(arguments
);
78 _setConstraintsAttr: function(/*Object*/ constraints
){
79 if(!constraints
.currency
&& this.currency
){
80 constraints
.currency
= this.currency
;
82 this.inherited(arguments
, [ currency
._mixInDefaults(lang
.mixin(constraints
, { exponent
: false })) ]); // get places