Skip to content

Instantly share code, notes, and snippets.

@timfish
Created April 29, 2020 15:02
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save timfish/a3b53139792834478ea4e0815751eaf3 to your computer and use it in GitHub Desktop.
Save timfish/a3b53139792834478ea4e0815751eaf3 to your computer and use it in GitHub Desktop.
autonumeric
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Dumber Gist</title>
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1.0, user-scalable=no">
<base href="/">
</head>
<!--
Dumber gist uses dumber bundler, the default bundle file
is /dist/entry-bundle.js.
The starting module is pointed to aurelia-bootstrapper
(data-main attribute on script) for Aurelia,
The aurelia bootstrapper then loads up user module "main"
(aurelia-app attribute on <body>) which is your src/main.ts.
-->
<body aurelia-app="main">
<script src="https://unpkg.com/autonumeric"></script>
<script src="/dist/entry-bundle.js" data-main="aurelia-bootstrapper"></script>
</body>
</html>
{
"dependencies": {
"aurelia-bootstrapper": "^2.3.3"
}
}
<template>
<!-- Try to create a css/scss/sass/less file then require it here -->
<h1>${message}</h1>
<input autonumeric="val.bind: value" />
<p>${value}</p>
</template>
export class App {
public message: string = 'Hello Aurelia!';
public value: number = 1.23;
}
import { customAttribute, bindable, inject, DOM, bindingMode } from 'aurelia-framework';
@customAttribute('autonumeric')
@inject(DOM.Element)
export class AutonumericAttribute {
private autoElement:
@bindable({defaultBindingMode: bindingMode.twoWay})
public val: number;
constructor(public element: HTMLInputElement) {
const autoNumericOptionsEuro = {
digitGroupSeparator : '.',
decimalCharacter : ',',
decimalCharacterAlternative: '.',
currencySymbol : '\u202f€',
currencySymbolPlacement : AutoNumeric.options.currencySymbolPlacement.suffix,
roundingMethod : AutoNumeric.options.roundingMethod.halfUpSymmetric,
};
this.autoElement = new AutoNumeric(element, autoNumericOptionsEuro)
}
public attached(){
this.element.addEventListener('change', this.updateVal);
}
public detached() {
this.element.removeEventListener('change', this.updateVal);
}
public valChanged(newVal:number, oldVal:number){
this.autoElement.set(newVal);
}
private updateVal = () => {
this.val = this.autoElement.get();
}
}
import { Aurelia } from 'aurelia-framework';
import { AutonumericAttribute } from './autonumeric';
export function configure(aurelia: Aurelia) {
aurelia.use
.standardConfiguration()
.developmentLogging('info')
.globalResources([AutonumericAttribute]);
aurelia.start().then(() => aurelia.setRoot());
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment