@alauda-fe/common
Version:
Alauda frontend team common codes.
57 lines • 7.38 kB
JavaScript
import { coerceAttrBoolean } from '@alauda/ui';
import { Directive, forwardRef, Input } from '@angular/core';
import { DefaultValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';
import * as i0 from "@angular/core";
export class CoerceNumberDirective extends DefaultValueAccessor {
constructor() {
super(...arguments);
// eslint-disable-next-line @angular-eslint/no-input-rename
this.aclCoerceNumberEnabled = true;
}
_handleInput(value) {
if (!coerceAttrBoolean(this.aclCoerceNumberEnabled)) {
this.onChange(value);
return;
}
const coercedValue = Number(value);
if (value == null || value === '' || isNaN(coercedValue)) {
return this.onChange(value);
}
this.onChange(coercedValue);
}
static { this.ɵfac = /*@__PURE__*/ (() => { let ɵCoerceNumberDirective_BaseFactory; return function CoerceNumberDirective_Factory(t) { return (ɵCoerceNumberDirective_BaseFactory || (ɵCoerceNumberDirective_BaseFactory = i0.ɵɵgetInheritedFactory(CoerceNumberDirective)))(t || CoerceNumberDirective); }; })(); }
static { this.ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: CoerceNumberDirective, selectors: [["input", "formControlName", "", "aclCoerceNumber", ""], ["input", "ngModel", "", "aclCoerceNumber", ""], ["input", "formControl", "", "aclCoerceNumber", ""]], hostBindings: function CoerceNumberDirective_HostBindings(rf, ctx) { if (rf & 1) {
i0.ɵɵlistener("input", function CoerceNumberDirective_input_HostBindingHandler($event) { return ctx._handleInput($event.target.value); })("blur", function CoerceNumberDirective_blur_HostBindingHandler() { return ctx.onTouched(); })("compositionstart", function CoerceNumberDirective_compositionstart_HostBindingHandler() { return ctx._compositionStart(); })("compositionend", function CoerceNumberDirective_compositionend_HostBindingHandler($event) { return ctx._compositionEnd($event.target.value); });
} }, inputs: { aclCoerceNumberEnabled: [0, "aclCoerceNumber", "aclCoerceNumberEnabled"] }, standalone: true, features: [i0.ɵɵProvidersFeature([
{
provide: NG_VALUE_ACCESSOR,
useExisting: forwardRef(() => CoerceNumberDirective),
multi: true,
},
]), i0.ɵɵInheritDefinitionFeature] }); }
}
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CoerceNumberDirective, [{
type: Directive,
args: [{
selector: 'input[formControlName][aclCoerceNumber],input[ngModel][aclCoerceNumber],input[formControl][aclCoerceNumber]',
// eslint-disable-next-line @angular-eslint/no-host-metadata-property
host: {
'(input)': '$any(this)._handleInput($event.target.value)',
'(blur)': 'onTouched()',
'(compositionstart)': '$any(this)._compositionStart()',
'(compositionend)': '$any(this)._compositionEnd($event.target.value)',
},
providers: [
{
provide: NG_VALUE_ACCESSOR,
useExisting: forwardRef(() => CoerceNumberDirective),
multi: true,
},
],
standalone: true,
}]
}], null, { aclCoerceNumberEnabled: [{
type: Input,
args: ['aclCoerceNumber']
}] }); })();
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29lcmNlLW51bWJlci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9zcmMvZWZmZWN0LWRpcmVjdGl2ZS9jb2VyY2UtbnVtYmVyLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDOztBQXFCekUsTUFBTSxPQUFPLHFCQUFzQixTQUFRLG9CQUFvQjtJQW5CL0Q7O1FBb0JFLDJEQUEyRDtRQUUzRCwyQkFBc0IsR0FBaUIsSUFBSSxDQUFDO0tBZ0I3QztJQWRDLFlBQVksQ0FBQyxLQUFVO1FBQ3JCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsRUFBRSxDQUFDO1lBQ3BELElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDckIsT0FBTztRQUNULENBQUM7UUFFRCxNQUFNLFlBQVksR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFbkMsSUFBSSxLQUFLLElBQUksSUFBSSxJQUFJLEtBQUssS0FBSyxFQUFFLElBQUksS0FBSyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUM7WUFDekQsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzlCLENBQUM7UUFFRCxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQzlCLENBQUM7d1BBbEJVLHFCQUFxQixTQUFyQixxQkFBcUI7b0VBQXJCLHFCQUFxQjtZQUFyQixnR0FBQSxxQ0FBNEMsSUFBdkIsMkVBQXJCLGVBQVcsSUFBVSxtR0FBckIsdUJBQThCLElBQVQscUdBQXJCLHdDQUErQyxJQUExQjtzSkFUckI7Z0JBQ1Q7b0JBQ0UsT0FBTyxFQUFFLGlCQUFpQjtvQkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQztvQkFDcEQsS0FBSyxFQUFFLElBQUk7aUJBQ1o7YUFDRjs7aUZBR1UscUJBQXFCO2NBbkJqQyxTQUFTO2VBQUM7Z0JBQ1QsUUFBUSxFQUNOLDZHQUE2RztnQkFDL0cscUVBQXFFO2dCQUNyRSxJQUFJLEVBQUU7b0JBQ0osU0FBUyxFQUFFLDhDQUE4QztvQkFDekQsUUFBUSxFQUFFLGFBQWE7b0JBQ3ZCLG9CQUFvQixFQUFFLGdDQUFnQztvQkFDdEQsa0JBQWtCLEVBQUUsaURBQWlEO2lCQUN0RTtnQkFDRCxTQUFTLEVBQUU7b0JBQ1Q7d0JBQ0UsT0FBTyxFQUFFLGlCQUFpQjt3QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsc0JBQXNCLENBQUM7d0JBQ3BELEtBQUssRUFBRSxJQUFJO3FCQUNaO2lCQUNGO2dCQUNELFVBQVUsRUFBRSxJQUFJO2FBQ2pCO2dCQUlDLHNCQUFzQjtrQkFEckIsS0FBSzttQkFBQyxpQkFBaUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb2VyY2VBdHRyQm9vbGVhbiB9IGZyb20gJ0BhbGF1ZGEvdWknO1xuaW1wb3J0IHsgRGlyZWN0aXZlLCBmb3J3YXJkUmVmLCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRGVmYXVsdFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6XG4gICAgJ2lucHV0W2Zvcm1Db250cm9sTmFtZV1bYWNsQ29lcmNlTnVtYmVyXSxpbnB1dFtuZ01vZGVsXVthY2xDb2VyY2VOdW1iZXJdLGlucHV0W2Zvcm1Db250cm9sXVthY2xDb2VyY2VOdW1iZXJdJyxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1ob3N0LW1ldGFkYXRhLXByb3BlcnR5XG4gIGhvc3Q6IHtcbiAgICAnKGlucHV0KSc6ICckYW55KHRoaXMpLl9oYW5kbGVJbnB1dCgkZXZlbnQudGFyZ2V0LnZhbHVlKScsXG4gICAgJyhibHVyKSc6ICdvblRvdWNoZWQoKScsXG4gICAgJyhjb21wb3NpdGlvbnN0YXJ0KSc6ICckYW55KHRoaXMpLl9jb21wb3NpdGlvblN0YXJ0KCknLFxuICAgICcoY29tcG9zaXRpb25lbmQpJzogJyRhbnkodGhpcykuX2NvbXBvc2l0aW9uRW5kKCRldmVudC50YXJnZXQudmFsdWUpJyxcbiAgfSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBDb2VyY2VOdW1iZXJEaXJlY3RpdmUpLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgQ29lcmNlTnVtYmVyRGlyZWN0aXZlIGV4dGVuZHMgRGVmYXVsdFZhbHVlQWNjZXNzb3Ige1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0LXJlbmFtZVxuICBASW5wdXQoJ2FjbENvZXJjZU51bWJlcicpXG4gIGFjbENvZXJjZU51bWJlckVuYWJsZWQ6IGJvb2xlYW4gfCAnJyA9IHRydWU7XG5cbiAgX2hhbmRsZUlucHV0KHZhbHVlOiBhbnkpIHtcbiAgICBpZiAoIWNvZXJjZUF0dHJCb29sZWFuKHRoaXMuYWNsQ29lcmNlTnVtYmVyRW5hYmxlZCkpIHtcbiAgICAgIHRoaXMub25DaGFuZ2UodmFsdWUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGNvZXJjZWRWYWx1ZSA9IE51bWJlcih2YWx1ZSk7XG5cbiAgICBpZiAodmFsdWUgPT0gbnVsbCB8fCB2YWx1ZSA9PT0gJycgfHwgaXNOYU4oY29lcmNlZFZhbHVlKSkge1xuICAgICAgcmV0dXJuIHRoaXMub25DaGFuZ2UodmFsdWUpO1xuICAgIH1cblxuICAgIHRoaXMub25DaGFuZ2UoY29lcmNlZFZhbHVlKTtcbiAgfVxufVxuIl19