demarches-normaliennes/app/javascript/controllers/format_controller.ts

43 lines
1.1 KiB
TypeScript
Raw Normal View History

import { ApplicationController } from './application_controller';
export class FormatController extends ApplicationController {
connect() {
const format = this.element.getAttribute('data-format');
switch (format) {
case 'list':
this.on('change', (event) => {
const target = event.target as HTMLInputElement;
target.value = this.formatList(target.value);
});
break;
case 'iban':
this.on('input', (event) => {
const target = event.target as HTMLInputElement;
target.value = this.formatIBAN(target.value);
});
2023-05-30 14:42:36 +02:00
break;
case 'integer':
this.on('input', (event) => {
const target = event.target as HTMLInputElement;
target.value = this.formatInteger(target.value);
});
}
}
private formatList(value: string) {
return value.replace(/;/g, ',');
}
private formatIBAN(value: string) {
return value
.replace(/[^\dA-Z]/gi, '')
.replace(/(.{4})/g, '$1 ')
.trim()
.toUpperCase();
}
2023-05-30 14:42:36 +02:00
private formatInteger(value: string) {
return value.replace(/[^\d]/g, '');
}
}