ngx-upper-case-directive
Version:
This directive helps to convert an input text value to upper case.
84 lines (78 loc) • 4.09 kB
JavaScript
import * as i0 from '@angular/core';
import { Directive, Input, HostListener, NgModule } from '@angular/core';
class NgxUpperCaseDirective {
getCaret(el) {
return {
start: el.selectionStart,
end: el.selectionEnd,
};
}
setCaret(el, start, end) {
el.selectionStart = start;
el.selectionEnd = end;
el.focus();
}
dispatchEvent(el, eventType) {
const event = document.createEvent('Event');
event.initEvent(eventType, false, false);
el.dispatchEvent(event);
}
convertValue(el, value) {
el.value = value.toUpperCase();
this.dispatchEvent(el, 'input');
}
onBlur(el, value) {
if ((!this.upperCase || 'blur' === this.upperCase) && 'function' === typeof value.toUpperCase && value.toUpperCase() !== value) {
this.convertValue(el, value);
this.dispatchEvent(el, 'blur'); // in case updateOn is set to blur
}
}
onInput(el, value) {
if (!this.upperCase && 'function' === typeof value.toUpperCase && value.toUpperCase() !== value) {
let { start, end } = this.getCaret(el);
if (value[0] === ' ' && start === 1 && end === 1) {
start = 0;
end = 0;
}
this.convertValue(el, value);
this.setCaret(el, start, end);
}
}
}
/** @nocollapse */ /** @nocollapse */ NgxUpperCaseDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: NgxUpperCaseDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
/** @nocollapse */ /** @nocollapse */ NgxUpperCaseDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.2.3", type: NgxUpperCaseDirective, selector: "input[upperCase]:not([lowerCase]),textarea[upperCase]:not([lowerCase])", inputs: { upperCase: "upperCase" }, host: { listeners: { "blur": "onBlur($event.target,$event.target.value)", "input": "onInput($event.target,$event.target.value)" } }, ngImport: i0 });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: NgxUpperCaseDirective, decorators: [{
type: Directive,
args: [{
selector: 'input[upperCase]:not([lowerCase]),textarea[upperCase]:not([lowerCase])',
}]
}], propDecorators: { upperCase: [{
type: Input
}], onBlur: [{
type: HostListener,
args: ['blur', ['$event.target', '$event.target.value']]
}], onInput: [{
type: HostListener,
args: ['input', ['$event.target', '$event.target.value']]
}] } });
class NgxUpperCaseDirectiveModule {
}
/** @nocollapse */ /** @nocollapse */ NgxUpperCaseDirectiveModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: NgxUpperCaseDirectiveModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
/** @nocollapse */ /** @nocollapse */ NgxUpperCaseDirectiveModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: NgxUpperCaseDirectiveModule, declarations: [NgxUpperCaseDirective], exports: [NgxUpperCaseDirective] });
/** @nocollapse */ /** @nocollapse */ NgxUpperCaseDirectiveModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: NgxUpperCaseDirectiveModule, imports: [[]] });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.3", ngImport: i0, type: NgxUpperCaseDirectiveModule, decorators: [{
type: NgModule,
args: [{
imports: [],
declarations: [NgxUpperCaseDirective],
exports: [NgxUpperCaseDirective],
}]
}] });
/*
* Public API Surface of ngx-upper-case-directive
*/
/**
* Generated bundle index. Do not edit.
*/
export { NgxUpperCaseDirective, NgxUpperCaseDirectiveModule };
//# sourceMappingURL=ngx-upper-case-directive.mjs.map