Skip to content

Instantly share code, notes, and snippets.

@fkleuver
Forked from alaraasa/app.html
Last active April 25, 2019 17:55
Show Gist options
  • Save fkleuver/3138ac92b6a0d3c0376af04db037203c to your computer and use it in GitHub Desktop.
Save fkleuver/3138ac92b6a0d3c0376af04db037203c to your computer and use it in GitHub Desktop.
Number format convert
<template>
<require from="./card-number-format-value-converter"></require>
<input type="text" id="cardNumber" placeholder="1234 5678 9123 4567"
value.bind="cardNumber & cardNumberFormat">
<br>
</template>
export class App {
}
export class CardNumberFormatBindingBehavior {
bind(binding, source, lookupFunctions) {
binding.originalUpdateSource = binding.updateSource;
binding.updateSource = value => {
const cleanValue = value.replace(/[^\d]/g, '');
binding.updateTarget(cleanValue);
console.log(`updateSource, cleanValue=${cleanValue}, value=${value}`);
binding.originalUpdateSource(cleanValue);
}
binding.originalUpdateTarget = binding.updateTarget;
binding.updateTarget = value => {
let cardNumberBlocks = this.createCardNumberBlocks(value);
if (cardNumberBlocks) {
console.log("Returning " + cardNumberBlocks.join(" "))
binding.originalUpdateTarget(cardNumberBlocks.join(" "));
} else {
console.log("Returning nothing.")
binding.originalUpdateTarget("");
}
}
}
unbind(binding, source) {
binding.updateSource = binding.originalUpdateSource;
delete binding.originalUpdateSource;
binding.updateTarget = binding.originalUpdateTarget;
delete binding.originalUpdateTarget;
}
createCardNumberBlocks(value) {
if (!value) return "";
return value.match(/\d{1,4}/g);
}
}
<!doctype html>
<html>
<head>
<title>Aurelia</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
</head>
<body aurelia-app>
<h1>Loading...</h1>
<script src="https://cdn.rawgit.com/jdanyow/aurelia-bundle/v1.0.3/jspm_packages/system.js"></script>
<script src="https://cdn.rawgit.com/jdanyow/aurelia-bundle/v1.0.3/config.js"></script>
<script>
System.import('aurelia-bootstrapper');
</script>
</body>
</html>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment