v1.0.0
15 Sep 2026First release.
Added
- An amount that is never a float. The state is the digits that were typed, and
every value is a string:
getValue()gives'1234.56'andgetMinor()gives'123456', which is exactly what Devix VAT Calculator takes. - The number of decimal places taken from ISO 4217 rather than from
Intl. The two disagree for eight currencies, andIntlreports none for the Pakistani rupee — a field built on it refuses the paisa someone just typed. - Separators, digit shapes, grouping sizes and the currency's position from
Intl, soen-INgroups 12,34,567 and German writes the euro last. - A caret counted in digits rather than characters, so inserting a grouping separator as the number grows cannot move it.
- A fraction that is padded when the field is left and never while it is being
typed into, because
12.5becoming12.50under the caret makes12.55impossible to type. typing: 'cents', which fills from the right the way a card terminal does, backspace included.- Both decimal separators accepted in either locale — two different characters means the last is the decimal point — and Arabic-Indic, Persian, Devanagari and Thai digits read as digits.
- A decimal separator typed into a currency with no minor unit kept on screen with every digit after it refused, rather than dropped silently, which would turn ¥1,234 into ¥123,456.
- The plain decimal posted for you through a hidden field, so a form submit
never sends
AED 1,234.56to a server. minandmaxas decimal strings, refused as they are typed.- Negatives behind
allowNegative, withaccountingbrackets for a ledger. setCurrency(), which re-reads the amount through the new currency's decimals.- A DOM-free core —
parse,format,toMinor,decimalsFor— for formatting a stored amount into a table, an invoice or a PDF on the server. - React, Vue, Svelte,
<dx-amount-input>and a CDN build over one core. - 3.6 kB gzip, zero dependencies.