ng-date-value-accessor
Version:
Date value accessor for Angular
54 lines (53 loc) • 2.15 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var core_1 = require("@angular/core");
var forms_1 = require("@angular/forms");
exports.DATE_VALUE_ACCESSOR = {
provide: forms_1.NG_VALUE_ACCESSOR,
useExisting: core_1.forwardRef(function () { return DateValueAccessor; }),
multi: true
};
var DateValueAccessor = (function () {
function DateValueAccessor(renderer, elementRef) {
this.renderer = renderer;
this.elementRef = elementRef;
this.onChange = function (_) { };
this.onTouched = function () { };
}
DateValueAccessor.prototype.writeValue = function (value) {
if (!value) {
this.renderer.setProperty(this.elementRef.nativeElement, "value", null);
return;
}
this.renderer.setProperty(this.elementRef.nativeElement, "valueAsDate", new Date(Date.UTC(value.getFullYear(), value.getMonth(), value.getDate())));
};
DateValueAccessor.prototype.registerOnChange = function (fn) {
this.onChange = function (v) {
return fn(v instanceof Date
? new Date(v.getFullYear(), v.getMonth(), v.getDate())
: v);
};
};
DateValueAccessor.prototype.registerOnTouched = function (fn) {
this.onTouched = fn;
};
DateValueAccessor.prototype.setDisabledState = function (isDisabled) {
this.renderer.setProperty(this.elementRef.nativeElement, "disabled", isDisabled);
};
DateValueAccessor.decorators = [
{ type: core_1.Directive, args: [{
selector: "[dateInput]",
providers: [exports.DATE_VALUE_ACCESSOR]
},] },
];
DateValueAccessor.ctorParameters = function () { return [
{ type: core_1.Renderer2, },
{ type: core_1.ElementRef, },
]; };
DateValueAccessor.propDecorators = {
"onChange": [{ type: core_1.HostListener, args: ["input", ["$event.target.valueAsDate"],] },],
"onTouched": [{ type: core_1.HostListener, args: ["blur", [],] },],
};
return DateValueAccessor;
}());
exports.DateValueAccessor = DateValueAccessor;