UNPKG

@fremtind/jkl-formatters-util

Version:
123 lines (122 loc) 4.52 kB
"use strict"; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __hasOwnProp = Object.prototype.hasOwnProperty; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); var registerWithMask_exports = {}; __export(registerWithMask_exports, { registerWithMasks: () => registerWithMasks }); module.exports = __toCommonJS(registerWithMask_exports); var import_formatDate = require("../date/formatDate"); var import_formatFodselsnummer = require("../fodselsnummer/formatFodselsnummer"); var import_formatKontonummer = require("../kontonummer/formatKontonummer"); var import_formatKortnummer = require("../kortnummer/formatKortnummer"); var import_formatOrganisasjonsnummer = require("../organisasjonsnummer/formatOrganisasjonsnummer"); var import_formatTelefonnummer = require("../telefonnummer/formatTelefonnummer"); var import_formatNumber = require("./formatNumber"); const formatters = { date: import_formatDate.formatDateString, fodselsnummer: import_formatFodselsnummer.formatFodselsnummer, kortnummer: import_formatKortnummer.formatKortnummer, kontonummer: import_formatKontonummer.formatKontonummer, telefonnummer: import_formatTelefonnummer.formatTelefonnummer, number: import_formatNumber.formatNumber, organisasjonsnummer: import_formatOrganisasjonsnummer.formatOrganisasjonsnummer }; const createRegisterFunctionWithMask = (formatter, form) => { return (name, options) => { let onKeyDownCaretPosition = 0; let onKeyDownKeyPressed = ""; const setValueAs = (value) => value.replace(/\s/g, ""); const onChange = (event) => { var _a; (_a = options == null ? void 0 : options.onChange) == null ? void 0 : _a.call(options, event); let onChangeCaretPosition = 0; const inputLength = event.target.value.length; if (event.target.selectionStart !== null) { onChangeCaretPosition = event.target.selectionStart; } form.setValue( name, formatters[formatter](event.target.value, { partial: true }) ); let newPosition = null; if (["Delete", "Backspace"].includes(onKeyDownKeyPressed)) { const delta = onKeyDownCaretPosition - onChangeCaretPosition; newPosition = onKeyDownCaretPosition - delta; } else if (onChangeCaretPosition < event.target.value.length) { const delta = event.target.value.length - inputLength; newPosition = onChangeCaretPosition + delta; } if (newPosition !== null) { event.target.setSelectionRange( newPosition, newPosition, void 0 ); } }; const registerOptions = { setValueAs, onChange }; if (options) { Object.assign(registerOptions, options); } const register = form.register(name, registerOptions); const onKeyDown = (event) => { if (event.target.selectionStart !== null) { onKeyDownCaretPosition = event.target.selectionStart; } onKeyDownKeyPressed = event.key; }; const extra = { onKeyDown }; if (formatter === "number") { extra.align = "right"; } return Object.assign(register, extra); }; }; const registerWithMasks = (form) => ({ registerWithFodselsnummerMask: createRegisterFunctionWithMask( "fodselsnummer", form ), registerWithKortnummerMask: createRegisterFunctionWithMask( "kortnummer", form ), registerWithKontonummerMask: createRegisterFunctionWithMask( "kontonummer", form ), registerWithTelefonnummerMask: createRegisterFunctionWithMask( "telefonnummer", form ), registerWithOrganisasjonsnummerMask: createRegisterFunctionWithMask( "organisasjonsnummer", form ), registerWithDateMask: createRegisterFunctionWithMask("date", form), registerWithNumber: createRegisterFunctionWithMask("number", form) }); //# sourceMappingURL=registerWithMask.js.map