UNPKG

autonumeric

Version:

autoNumeric is a standalone Javascript library that provides live *as-you-type* formatting for international numbers and currencies. It supports most international numeric formats and currencies including those used in Europe, Asia, and North and South Am

239 lines (222 loc) 12.5 kB
/** * Pre-defined options for AutoNumeric.js * @author Alexandre Bonneau <alexandre.bonneau@linuxfr.eu> * @copyright © 2023 Alexandre Bonneau * * The MIT License (http://www.opensource.org/licenses/mit-license.php) * * Permission is hereby granted, free of charge, to any person * obtaining a copy of this software and associated documentation * files (the "Software"), to deal in the Software without * restriction, including without limitation the rights to use, * copy, modify, merge, publish, distribute, sub license, and/or sell * copies of the Software, and to permit persons to whom the * Software is furnished to do so, subject to the following * conditions: * * The above copyright notice and this permission notice shall be * included in all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR * OTHER DEALINGS IN THE SOFTWARE. */ import AutoNumeric from './AutoNumeric'; import AutoNumericHelper from './AutoNumericHelper'; const euro = { // Français digitGroupSeparator : AutoNumeric.options.digitGroupSeparator.dot, // or '\u202f' decimalCharacter : AutoNumeric.options.decimalCharacter.comma, decimalCharacterAlternative : AutoNumeric.options.decimalCharacterAlternative.dot, currencySymbol : '\u202f€', currencySymbolPlacement : AutoNumeric.options.currencySymbolPlacement.suffix, negativePositiveSignPlacement: AutoNumeric.options.negativePositiveSignPlacement.prefix, }; const dollar = { digitGroupSeparator : AutoNumeric.options.digitGroupSeparator.comma, decimalCharacter : AutoNumeric.options.decimalCharacter.dot, currencySymbol : AutoNumeric.options.currencySymbol.dollar, currencySymbolPlacement : AutoNumeric.options.currencySymbolPlacement.prefix, negativePositiveSignPlacement: AutoNumeric.options.negativePositiveSignPlacement.right, }; const japanese = { // 日本語 digitGroupSeparator : AutoNumeric.options.digitGroupSeparator.comma, decimalCharacter : AutoNumeric.options.decimalCharacter.dot, currencySymbol : AutoNumeric.options.currencySymbol.yen, currencySymbolPlacement : AutoNumeric.options.currencySymbolPlacement.prefix, negativePositiveSignPlacement: AutoNumeric.options.negativePositiveSignPlacement.right, }; // Here we need to clone the initial objects in order to be able to edit the clones without affecting the originals const euroF = AutoNumericHelper.cloneObject(euro); euroF.formulaMode = AutoNumeric.options.formulaMode.enabled; const euroPos = AutoNumericHelper.cloneObject(euro); euroPos.minimumValue = 0; const euroNeg = AutoNumericHelper.cloneObject(euro); euroNeg.maximumValue = 0; euroNeg.negativePositiveSignPlacement = AutoNumeric.options.negativePositiveSignPlacement.prefix; const euroSpace = AutoNumericHelper.cloneObject(euro); euroSpace.digitGroupSeparator = AutoNumeric.options.digitGroupSeparator.normalSpace; const euroSpacePos = AutoNumericHelper.cloneObject(euroSpace); euroSpacePos.minimumValue = 0; const euroSpaceNeg = AutoNumericHelper.cloneObject(euroSpace); euroSpaceNeg.maximumValue = 0; euroSpaceNeg.negativePositiveSignPlacement = AutoNumeric.options.negativePositiveSignPlacement.prefix; const percentageEU2dec = AutoNumericHelper.cloneObject(euro); percentageEU2dec.currencySymbol = AutoNumeric.options.currencySymbol.none; percentageEU2dec.suffixText = `\u202f${AutoNumeric.options.suffixText.percentage}`; percentageEU2dec.wheelStep = 0.0001; // This targets the `rawValue`, not the formatted one percentageEU2dec.rawValueDivisor = AutoNumeric.options.rawValueDivisor.percentage; const percentageEU2decPos = AutoNumericHelper.cloneObject(percentageEU2dec); percentageEU2decPos.minimumValue = 0; const percentageEU2decNeg = AutoNumericHelper.cloneObject(percentageEU2dec); percentageEU2decNeg.maximumValue = 0; percentageEU2decNeg.negativePositiveSignPlacement = AutoNumeric.options.negativePositiveSignPlacement.prefix; const percentageEU3dec = AutoNumericHelper.cloneObject(percentageEU2dec); percentageEU3dec.decimalPlaces = 3; const percentageEU3decPos = AutoNumericHelper.cloneObject(percentageEU2decPos); percentageEU3decPos.decimalPlaces = 3; const percentageEU3decNeg = AutoNumericHelper.cloneObject(percentageEU2decNeg); percentageEU3decNeg.decimalPlaces = 3; const dollarF = AutoNumericHelper.cloneObject(dollar); dollarF.formulaMode = AutoNumeric.options.formulaMode.enabled; const dollarPos = AutoNumericHelper.cloneObject(dollar); dollarPos.minimumValue = 0; const dollarNeg = AutoNumericHelper.cloneObject(dollar); dollarNeg.maximumValue = 0; dollarNeg.negativePositiveSignPlacement = AutoNumeric.options.negativePositiveSignPlacement.prefix; const dollarNegBrackets = AutoNumericHelper.cloneObject(dollarNeg); dollarNegBrackets.negativeBracketsTypeOnBlur = AutoNumeric.options.negativeBracketsTypeOnBlur.parentheses; const percentageUS2dec = AutoNumericHelper.cloneObject(dollar); percentageUS2dec.currencySymbol = AutoNumeric.options.currencySymbol.none; percentageUS2dec.suffixText = AutoNumeric.options.suffixText.percentage; percentageUS2dec.wheelStep = 0.0001; percentageUS2dec.rawValueDivisor = AutoNumeric.options.rawValueDivisor.percentage; const percentageUS2decPos = AutoNumericHelper.cloneObject(percentageUS2dec); percentageUS2decPos.minimumValue = 0; const percentageUS2decNeg = AutoNumericHelper.cloneObject(percentageUS2dec); percentageUS2decNeg.maximumValue = 0; percentageUS2decNeg.negativePositiveSignPlacement = AutoNumeric.options.negativePositiveSignPlacement.prefix; const percentageUS3dec = AutoNumericHelper.cloneObject(percentageUS2dec); percentageUS3dec.decimalPlaces = 3; const percentageUS3decPos = AutoNumericHelper.cloneObject(percentageUS2decPos); percentageUS3decPos.decimalPlaces = 3; const percentageUS3decNeg = AutoNumericHelper.cloneObject(percentageUS2decNeg); percentageUS3decNeg.decimalPlaces = 3; const turkish = AutoNumericHelper.cloneObject(euro); turkish.currencySymbol = AutoNumeric.options.currencySymbol.lira; /** * Predefined options for the most common languages */ AutoNumeric.predefinedOptions = { euro, euroPos, euroNeg, euroSpace, euroSpacePos, euroSpaceNeg, percentageEU2dec, percentageEU2decPos, percentageEU2decNeg, percentageEU3dec, percentageEU3decPos, percentageEU3decNeg, dollar, dollarPos, dollarNeg, dollarNegBrackets, percentageUS2dec, percentageUS2decPos, percentageUS2decNeg, percentageUS3dec, percentageUS3decPos, percentageUS3decNeg, French : euro, // Français Spanish : euro, // Español NorthAmerican : dollar, British : { digitGroupSeparator : AutoNumeric.options.digitGroupSeparator.comma, decimalCharacter : AutoNumeric.options.decimalCharacter.dot, currencySymbol : AutoNumeric.options.currencySymbol.pound, currencySymbolPlacement : AutoNumeric.options.currencySymbolPlacement.prefix, negativePositiveSignPlacement: AutoNumeric.options.negativePositiveSignPlacement.right, }, Swiss : { // Suisse digitGroupSeparator : AutoNumeric.options.digitGroupSeparator.apostrophe, decimalCharacter : AutoNumeric.options.decimalCharacter.dot, currencySymbol : '\u202fCHF', currencySymbolPlacement : AutoNumeric.options.currencySymbolPlacement.suffix, negativePositiveSignPlacement: AutoNumeric.options.negativePositiveSignPlacement.prefix, }, Japanese : japanese, // 日本語 Chinese : japanese, // 中国語 (Chinese) Brazilian : { digitGroupSeparator : AutoNumeric.options.digitGroupSeparator.dot, decimalCharacter : AutoNumeric.options.decimalCharacter.comma, currencySymbol : AutoNumeric.options.currencySymbol.real, currencySymbolPlacement : AutoNumeric.options.currencySymbolPlacement.prefix, negativePositiveSignPlacement: AutoNumeric.options.negativePositiveSignPlacement.right, }, Turkish : turkish, dotDecimalCharCommaSeparator: { digitGroupSeparator: AutoNumeric.options.digitGroupSeparator.comma, decimalCharacter : AutoNumeric.options.decimalCharacter.dot, }, commaDecimalCharDotSeparator: { digitGroupSeparator : AutoNumeric.options.digitGroupSeparator.dot, decimalCharacter : AutoNumeric.options.decimalCharacter.comma, decimalCharacterAlternative: AutoNumeric.options.decimalCharacterAlternative.dot, }, integer : { decimalPlaces: 0, }, integerPos : { minimumValue : AutoNumeric.options.minimumValue.zero, decimalPlaces: 0, }, integerNeg : { maximumValue : AutoNumeric.options.maximumValue.zero, decimalPlaces: 0, }, float : { allowDecimalPadding: AutoNumeric.options.allowDecimalPadding.never, }, floatPos : { allowDecimalPadding: AutoNumeric.options.allowDecimalPadding.never, minimumValue : AutoNumeric.options.minimumValue.zero, maximumValue : AutoNumeric.options.maximumValue.tenTrillions, }, floatNeg : { allowDecimalPadding: AutoNumeric.options.allowDecimalPadding.never, minimumValue : AutoNumeric.options.minimumValue.tenTrillions, maximumValue : AutoNumeric.options.maximumValue.zero, }, numeric : { digitGroupSeparator: AutoNumeric.options.digitGroupSeparator.noSeparator, decimalCharacter : AutoNumeric.options.decimalCharacter.dot, currencySymbol : AutoNumeric.options.currencySymbol.none, }, numericPos : { digitGroupSeparator: AutoNumeric.options.digitGroupSeparator.noSeparator, decimalCharacter : AutoNumeric.options.decimalCharacter.dot, currencySymbol : AutoNumeric.options.currencySymbol.none, minimumValue : AutoNumeric.options.minimumValue.zero, maximumValue : AutoNumeric.options.maximumValue.tenTrillions, }, numericNeg : { digitGroupSeparator: AutoNumeric.options.digitGroupSeparator.noSeparator, decimalCharacter : AutoNumeric.options.decimalCharacter.dot, currencySymbol : AutoNumeric.options.currencySymbol.none, minimumValue : AutoNumeric.options.minimumValue.tenTrillions, maximumValue : AutoNumeric.options.maximumValue.zero, }, }; Object.getOwnPropertyNames(AutoNumeric.predefinedOptions).forEach(optionName => { Object.freeze(AutoNumeric.predefinedOptions[optionName]); }); Object.freeze(AutoNumeric.predefinedOptions); Object.defineProperty(AutoNumeric, 'predefinedOptions', { configurable: false, writable: false }); export default {};