UNPKG

@douglas-serena/ng-inputs

Version:
86 lines 11.5 kB
import { DatePipe } from '@angular/common'; import { Injectable } from '@angular/core'; import IMask from 'imask'; import SimpleMaskMoney from 'simple-mask-money'; import { NgInputConfigService } from './ng-input-config.service'; import calcJs from '@douglas-serena/calc.js'; import { MASKS } from './MASKS'; import * as i0 from "@angular/core"; import * as i1 from "./ng-input-config.service"; import * as i2 from "@angular/common"; export class NgInputMasksService { constructor(configService, datePipe) { this.configService = configService; this.datePipe = datePipe; } format(value, masksType, options) { masksType = masksType.toUpperCase(); if (masksType === 'DATE') { return this.datePipe.transform(value, (options === null || options === void 0 ? void 0 : options.mask) === undefined ? 'dd/MM/yyyy' : options.mask); } if (masksType === 'CURRENCY' || masksType === 'PERCENT') { const config = this.configService[masksType.toLowerCase()]; if ((options === null || options === void 0 ? void 0 : options.allowNegative) !== undefined) config.allowNegative = options.allowNegative; value = calcJs(`${value}`.replace(/[,.]/g, '.')) .toString() .replace('.', config.decimalSeparator) .replace(config.decimalSeparator + '00', ''); return SimpleMaskMoney.formatToCurrency(value, config); } if (masksType === 'AMOUNT') { value = `${value}`; if (/^0/g.test(value)) { value = value.replace(/0+/, ''); } let result = Number(value); if (Number.isNaN(result)) { result = 0; } return result.toFixed(3); } let mask = null; if (masksType) mask = MASKS[masksType]; if (options === null || options === void 0 ? void 0 : options.mask) { mask = { mask: options === null || options === void 0 ? void 0 : options.mask.split('|').map((mask) => ({ mask, })), }; } return IMask.pipe(value, mask); } set(element, masksType, options) { masksType = masksType.toUpperCase(); if (masksType === 'CURRENCY' || masksType === 'PERCENT') { const config = this.configService[masksType.toLowerCase()]; if ((options === null || options === void 0 ? void 0 : options.allowNegative) !== undefined) config.allowNegative = options.allowNegative; return SimpleMaskMoney.setMask(element, config); } let mask = null; if (masksType) { mask = MASKS[masksType]; } if (options === null || options === void 0 ? void 0 : options.mask) { mask = { mask: options === null || options === void 0 ? void 0 : options.mask.split('|').map((mask) => ({ mask, })), }; } return IMask(element, mask); } } NgInputMasksService.ɵprov = i0.ɵɵdefineInjectable({ factory: function NgInputMasksService_Factory() { return new NgInputMasksService(i0.ɵɵinject(i1.NgInputConfigService), i0.ɵɵinject(i2.DatePipe)); }, token: NgInputMasksService, providedIn: "root" }); NgInputMasksService.decorators = [ { type: Injectable, args: [{ providedIn: 'root', },] } ]; NgInputMasksService.ctorParameters = () => [ { type: NgInputConfigService }, { type: DatePipe } ]; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctaW5wdXQtbWFza3Muc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWlucHV0cy9zcmMvbGliL2NvcmUvbmctaW5wdXQtbWFza3Muc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDMUIsT0FBTyxlQUFlLE1BQU0sbUJBQW1CLENBQUM7QUFDaEQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFakUsT0FBTyxNQUFNLE1BQU0seUJBQXlCLENBQUM7QUFDN0MsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLFNBQVMsQ0FBQzs7OztBQUtoQyxNQUFNLE9BQU8sbUJBQW1CO0lBQzlCLFlBQ1UsYUFBbUMsRUFDbkMsUUFBa0I7UUFEbEIsa0JBQWEsR0FBYixhQUFhLENBQXNCO1FBQ25DLGFBQVEsR0FBUixRQUFRLENBQVU7SUFDekIsQ0FBQztJQUVKLE1BQU0sQ0FBQyxLQUFzQixFQUFFLFNBQWtCLEVBQUUsT0FBa0I7UUFDbkUsU0FBUyxHQUFHLFNBQVMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNwQyxJQUFJLFNBQVMsS0FBSyxNQUFNLEVBQUU7WUFDeEIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FDNUIsS0FBSyxFQUNMLENBQUEsT0FBTyxhQUFQLE9BQU8sdUJBQVAsT0FBTyxDQUFFLElBQUksTUFBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FDMUQsQ0FBQztTQUNIO1FBQ0QsSUFBSSxTQUFTLEtBQUssVUFBVSxJQUFJLFNBQVMsS0FBSyxTQUFTLEVBQUU7WUFDdkQs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QUFFLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztvQkFDNUMsSUFBSTtpQkFDTCxDQUFDLENBQUM7YUFDc0IsQ0FBQztTQUM3QjtRQUVELE9BQU8sS0FBSyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztJQUM5QixDQUFDOzs7O1lBaEZGLFVBQVUsU0FBQztnQkFDVixVQUFVLEVBQUUsTUFBTTthQUNuQjs7O1lBUFEsb0JBQW9CO1lBTHBCLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEYXRlUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCBJTWFzayBmcm9tICdpbWFzayc7XHJcbmltcG9ydCBTaW1wbGVNYXNrTW9uZXkgZnJvbSAnc2ltcGxlLW1hc2stbW9uZXknO1xyXG5pbXBvcnQgeyBOZ0lucHV0Q29uZmlnU2VydmljZSB9IGZyb20gJy4vbmctaW5wdXQtY29uZmlnLnNlcnZpY2UnO1xyXG5cclxuaW1wb3J0IGNhbGNKcyBmcm9tICdAZG91Z2xhcy1zZXJlbmEvY2FsYy5qcyc7XHJcbmltcG9ydCB7IE1BU0tTIH0gZnJvbSAnLi9NQVNLUyc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgTmdJbnB1dE1hc2tzU2VydmljZSB7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGNvbmZpZ1NlcnZpY2U6IE5nSW5wdXRDb25maWdTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBkYXRlUGlwZTogRGF0ZVBpcGVcclxuICApIHt9XHJcblxyXG4gIGZvcm1hdCh2YWx1ZTogc3RyaW5nIHwgbnVtYmVyLCBtYXNrc1R5cGU/OiBzdHJpbmcsIG9wdGlvbnM/OiBJT3B0aW9ucykge1xyXG4gICAgbWFza3NUeXBlID0gbWFza3NUeXBlLnRvVXBwZXJDYXNlKCk7XHJcbiAgICBpZiAobWFza3NUeXBlID09PSAnREFURScpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKFxyXG4gICAgICAgIHZhbHVlLFxyXG4gICAgICAgIG9wdGlvbnM/Lm1hc2sgPT09IHVuZGVmaW5lZCA/ICdkZC9NTS95eXl5JyA6IG9wdGlvbnMubWFza1xyXG4gICAgICApO1xyXG4gICAgfVxyXG4gICAgaWYgKG1hc2tzVHlwZSA9PT0gJ0NVUlJFTkNZJyB8fCBtYXNrc1R5cGUgPT09ICdQRVJDRU5UJykge1xyXG4gICAgICBjb25zdCBjb25maWcgPSB0aGlzLmNvbmZpZ1NlcnZpY2VbbWFza3NUeXBlLnRvTG93ZXJDYXNlKCldO1xyXG4gICAgICBpZiAob3B0aW9ucz8uYWxsb3dOZWdhdGl2ZSAhPT0gdW5kZWZpbmVkKVxyXG4gICAgICAgIGNvbmZpZy5hbGxvd05lZ2F0aXZlID0gb3B0aW9ucy5hbGxvd05lZ2F0aXZlO1xyXG5cclxuICAgICAgdmFsdWUgPSBjYWxjSnMoYCR7dmFsdWV9YC5yZXBsYWNlKC9bLC5dL2csICcuJykpXHJcbiAgICAgICAgLnRvU3RyaW5nKClcclxuICAgICAgICAucmVwbGFjZSgnLicsIGNvbmZpZy5kZWNpbWFsU2VwYXJhdG9yIGFzIHN0cmluZylcclxuICAgICAgICAucmVwbGFjZSgoY29uZmlnLmRlY2ltYWxTZXBhcmF0b3IgYXMgc3RyaW5nKSArICcwMCcsICcnKTtcclxuXHJcbiAgICAgIHJldHVybiBTaW1wbGVNYXNrTW9uZXkuZm9ybWF0VG9DdXJyZW5jeSh2YWx1ZSwgY29uZmlnKTtcclxuICAgIH1cclxuICAgIGlmIChtYXNrc1R5cGUgPT09ICdBTU9VTlQnKSB7XHJcbiAgICAgIHZhbHVlID0gYCR7dmFsdWV9YDtcclxuXHJcbiAgICAgIGlmICgvXjAvZy50ZXN0KHZhbHVlKSkge1xyXG4gICAgICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZSgvMCsvLCAnJyk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGxldCByZXN1bHQgPSBOdW1iZXIodmFsdWUpO1xyXG5cclxuICAgICAgaWYgKE51bWJlci5pc05hTihyZXN1bHQpKSB7XHJcbiAgICAgICAgcmVzdWx0ID0gMDtcclxuICAgICAgfVxyXG5cclxuICAgICAgcmV0dXJuIHJlc3VsdC50b0ZpeGVkKDMpO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBtYXNrOiBhbnkgPSBudWxsO1xyXG4gICAgaWYgKG1hc2tzVHlwZSkgbWFzayA9IE1BU0tTW21hc2tzVHlwZSBhcyBhbnldO1xyXG4gICAgaWYgKG9wdGlvbnM/Lm1hc2spIHtcclxuICAgICAgbWFzayA9IHtcclxuICAgICAgICBtYXNrOiBvcHRpb25zPy5tYXNrLnNwbGl0KCd8JykubWFwKChtYXNrKSA9PiAoe1xyXG4gICAgICAgICAgbWFzayxcclxuICAgICAgICB9KSksXHJcbiAgICAgIH0gYXMgSU1hc2suQW55TWFza2VkT3B0aW9ucztcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gSU1hc2sucGlwZSh2YWx1ZSwgbWFzayk7XHJcbiAgfVxyXG5cclxuICBzZXQoZWxlbWVudDogSFRNTElucHV0RWxlbWVudCwgbWFza3NUeXBlOiBzdHJpbmcsIG9wdGlvbnM/OiBJT3B0aW9ucykge1xyXG4gICAgbWFza3NUeXBlID0gbWFza3NUeXBlLnRvVXBwZXJDYXNlKCk7XHJcbiAgICBpZiAobWFza3NUeXBlID09PSAnQ1VSUkVOQ1knIHx8IG1hc2tzVHlwZSA9PT0gJ1BFUkNFTlQnKSB7XHJcbiAgICAgIGNvbnN0IGNvbmZpZyA9IHRoaXMuY29uZmlnU2VydmljZVttYXNrc1R5cGUudG9Mb3dlckNhc2UoKV07XHJcbiAgICAgIGlmIChvcHRpb25zPy5hbGxvd05lZ2F0aXZlICE9PSB1bmRlZmluZWQpXHJcbiAgICAgICAgY29uZmlnLmFsbG93TmVnYXRpdmUgPSBvcHRpb25zLmFsbG93TmVnYXRpdmU7XHJcbiAgICAgIHJldHVybiBTaW1wbGVNYXNrTW9uZXkuc2V0TWFzayhlbGVtZW50LCBjb25maWcpO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBtYXNrOiBhbnkgPSBudWxsO1xyXG4gICAgaWYgKG1hc2tzVHlwZSkge1xyXG4gICAgICBtYXNrID0gTUFTS1NbbWFza3NUeXBlIGFzIGFueV07XHJcbiAgICB9XHJcbiAgICBpZiAob3B0aW9ucz8ubWFzaykge1xyXG4gICAgICBtYXNrID0ge1xyXG4gICAgICAgIG1hc2s6IG9wdGlvbnM/Lm1hc2suc3BsaXQoJ3wnKS5tYXAoKG1hc2spID0+ICh7XHJcbiAgICAgICAgICBtYXNrLFxyXG4gICAgICAgIH0pKSxcclxuICAgICAgfSBhcyBJTWFzay5BbnlNYXNrZWRPcHRpb25zO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBJTWFzayhlbGVtZW50LCBtYXNrKTtcclxuICB9XHJcbn1cclxuXHJcbmludGVyZmFjZSBJT3B0aW9ucyB7XHJcbiAgYWxsb3dOZWdhdGl2ZT86IGJvb2xlYW47XHJcbiAgbWFzaz86IHN0cmluZztcclxufVxyXG4iXX0=