UNPKG

@sixbell-telco/sdk

Version:

A collection of reusable components designed for use in Sixbell Telco Angular projects

87 lines (82 loc) 3.5 kB
import * as i0 from '@angular/core'; import { input, HostListener, Directive } from '@angular/core'; /** * Directive that restricts input to numeric characters only. * * Use the `stOnlyNumbers` selector to enable numeric-only input restriction. * For backward compatibility, the `stJustNumbers` selector is also supported but is deprecated. * * @example * ```html * <!-- Modern usage (recommended) --> * <input stOnlyNumbers /> * <input [stOnlyNumbers]="true" /> * ``` */ class OnlyNumbersDirective { /** * Enable numeric-only input restriction. * @default false */ stOnlyNumbers = input(false); /** * @deprecated Use `stOnlyNumbers` input instead. * This input is maintained for backward compatibility and will be removed in a future major version. */ justNumbers = input(false); constructor() { } blockPaste(event) { if (!this.getEnabled()) return true; const justNumbersReg = new RegExp('^[0-9]+$'); const clipboardData = event.clipboardData; if (!clipboardData) return true; const pastedValue = clipboardData.getData('Text'); if (!justNumbersReg.test(pastedValue)) { event.preventDefault(); return false; } return true; } onKeyPress(event) { if (!this.getEnabled()) return true; const key = event.key; if (!/^[0-9]$/.test(key)) { event.preventDefault(); return false; } return true; } /** * Determines if the numeric-only restriction is enabled. * Checks both the new and deprecated inputs for backward compatibility. * @private */ getEnabled() { // Check new input first, fallback to deprecated input for backward compatibility return this.stOnlyNumbers() || this.justNumbers(); } static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.0", ngImport: i0, type: OnlyNumbersDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.2.0", type: OnlyNumbersDirective, isStandalone: true, selector: "[stOnlyNumbers], [stJustNumbers]", inputs: { stOnlyNumbers: { classPropertyName: "stOnlyNumbers", publicName: "stOnlyNumbers", isSignal: true, isRequired: false, transformFunction: null }, justNumbers: { classPropertyName: "justNumbers", publicName: "justNumbers", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "paste": "blockPaste($event)", "keypress": "onKeyPress($event)" } }, ngImport: i0 }); } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.0", ngImport: i0, type: OnlyNumbersDirective, decorators: [{ type: Directive, args: [{ selector: '[stOnlyNumbers], [stJustNumbers]', standalone: true, }] }], ctorParameters: () => [], propDecorators: { blockPaste: [{ type: HostListener, args: ['paste', ['$event']] }], onKeyPress: [{ type: HostListener, args: ['keypress', ['$event']] }] } }); // Export the new directive without deprecation /** * Generated bundle index. Do not edit. */ export { OnlyNumbersDirective as JustNumbersDirective, OnlyNumbersDirective }; //# sourceMappingURL=sixbell-telco-sdk-directives-only-numbers.mjs.map