@ngx-kit/core
Version:
ngx-kit - core module
207 lines • 13.3 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { Directive, forwardRef, Input } from '@angular/core';
import { Subject } from 'rxjs';
import { KitMomentProvider } from '../kit-moment/kit-moment-provider';
import { KitModelInterceptor } from '../kit-value-accessor/kit-model-interceptor';
/**
* Displays date in an input in any format and store JS Date-object in model.
*
*
* ### Usage
*
* Use the directive:
*
* ```html
* <input [(ngModel)]="date"
* kitInputDate>
* ```
*
* #### Format
*
* You can define rendering/parsing format:
*
* ```html
* <input [(ngModel)]="date"
* kitInputDate
* format="YYYY/DD/MM">
* ```
*
* __Requires Moment.js.__
*
*
* ### Example
*
* * collection:date-picker -
* [sources](https://github.com/ngx-kit/ngx-kit/tree/master/packages/collection/lib/ui-date-picker),
* [demo](http://ngx-kit.com/collection/module/ui-date-picker)
*/
var KitInputDateDirective = /** @class */ (function () {
function KitInputDateDirective(momentProvider) {
this.momentProvider = momentProvider;
/**
* `Date.toLocaleDateString()` options.
*/
this.options = {};
this.viewStateChanges = new Subject();
this.modelStateChanges = new Subject();
this.moment = null;
this.moment = this.momentProvider.moment;
}
/**
* @return {?}
*/
KitInputDateDirective.prototype.ngOnChanges = /**
* @return {?}
*/
function () {
if (this.format && !this.moment) {
throw new Error('KitInputDateDirective: Format option requires moment.js!\n' +
'==========\n' +
'Possible solution:\n' +
' 1. Install moment: npm install moment\n' +
/* tslint:disable-next-line */
' 2. Provide moment with `kitMomentInstance` injection token (in root module): `{provide: kitMomentInstance, useValue: moment}` \n' +
'==========\n');
}
};
/**
* Handle input changing by user.
*/
/**
* Handle input changing by user.
* @param {?} value
* @param {?} event
* @return {?}
*/
KitInputDateDirective.prototype.input = /**
* Handle input changing by user.
* @param {?} value
* @param {?} event
* @return {?}
*/
function (value, event) {
/** @type {?} */
var date = this.parse(value);
this.modelStateChanges.next(this.isValid(date) ? date : null);
};
/**
* @param {?} event
* @return {?}
*/
KitInputDateDirective.prototype.keyDown = /**
* @param {?} event
* @return {?}
*/
function (event) {
};
/**
* Handle external modal changing.
*/
/**
* Handle external modal changing.
* @param {?} value
* @return {?}
*/
KitInputDateDirective.prototype.writeValue = /**
* Handle external modal changing.
* @param {?} value
* @return {?}
*/
function (value) {
/** @type {?} */
var date = this.parse(value);
this.viewStateChanges.next(this.isValid(date)
? this.moment && this.format ? this.moment(date).format(this.format) : date.toDateString()
: '');
};
/**
* @private
* @param {?} raw
* @return {?}
*/
KitInputDateDirective.prototype.parse = /**
* @private
* @param {?} raw
* @return {?}
*/
function (raw) {
return this.moment && this.format
? this.moment(raw, this.format).toDate()
: new Date(Date.parse(raw));
};
/**
* @private
* @param {?} raw
* @return {?}
*/
KitInputDateDirective.prototype.isValid = /**
* @private
* @param {?} raw
* @return {?}
*/
function (raw) {
/** @type {?} */
var date = new Date(raw);
return !isNaN(date.getTime());
};
KitInputDateDirective.decorators = [
{ type: Directive, args: [{
selector: '[kitInputDate]',
providers: [
{
provide: KitModelInterceptor,
useExisting: forwardRef((/**
* @return {?}
*/
function () { return KitInputDateDirective; })),
},
],
},] }
];
/** @nocollapse */
KitInputDateDirective.ctorParameters = function () { return [
{ type: KitMomentProvider }
]; };
KitInputDateDirective.propDecorators = {
kitInputDate: [{ type: Input }],
options: [{ type: Input }],
format: [{ type: Input }]
};
return KitInputDateDirective;
}());
export { KitInputDateDirective };
if (false) {
/**
* \@internal
* @type {?}
*/
KitInputDateDirective.prototype.kitInputDate;
/**
* `Date.toLocaleDateString()` options.
* @type {?}
*/
KitInputDateDirective.prototype.options;
/**
* Parse and render format (works only with moment.js).
* @type {?}
*/
KitInputDateDirective.prototype.format;
/** @type {?} */
KitInputDateDirective.prototype.viewStateChanges;
/** @type {?} */
KitInputDateDirective.prototype.modelStateChanges;
/**
* @type {?}
* @private
*/
KitInputDateDirective.prototype.moment;
/**
* @type {?}
* @private
*/
KitInputDateDirective.prototype.momentProvider;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2l0LWlucHV0LWRhdGUuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQG5neC1raXQvY29yZS8iLCJzb3VyY2VzIjpbInNyYy9raXQtaW5wdXQtZGF0ZS9raXQtaW5wdXQtZGF0ZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUN4RSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDZDQUE2QyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFrQ2xGO0lBK0JFLCtCQUFvQixjQUFzQztRQUF0QyxtQkFBYyxHQUFkLGNBQWMsQ0FBd0I7Ozs7UUFiakQsWUFBTyxHQUFRLEVBQUUsQ0FBQztRQU9sQixxQkFBZ0IsR0FBRyxJQUFJLE9BQU8sRUFBVSxDQUFDO1FBRXpDLHNCQUFpQixHQUFHLElBQUksT0FBTyxFQUFPLENBQUM7UUFFeEMsV0FBTSxHQUFRLElBQUksQ0FBQztRQUd6QixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDO0lBQzNDLENBQUM7Ozs7SUFFRCwyQ0FBVzs7O0lBQVg7UUFDRSxJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQy9CLE1BQU0sSUFBSSxLQUFLLENBQ2IsNERBQTREO2dCQUM1RCxjQUFjO2dCQUNkLHNCQUFzQjtnQkFDdEIsMkNBQTJDO2dCQUMzQyw4QkFBOEI7Z0JBQzlCLG9JQUFvSTtnQkFDcEksY0FBYyxDQUNmLENBQUM7U0FDSDtJQUNILENBQUM7SUFFRDs7T0FFRzs7Ozs7OztJQUNILHFDQUFLOzs7Ozs7SUFBTCxVQUFNLEtBQWEsRUFBRSxLQUFVOztZQUN2QixJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUM7UUFDOUIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2hFLENBQUM7Ozs7O0lBRUQsdUNBQU87Ozs7SUFBUCxVQUFRLEtBQVU7SUFDbEIsQ0FBQztJQUVEOztPQUVHOzs7Ozs7SUFDSCwwQ0FBVTs7Ozs7SUFBVixVQUFXLEtBQVU7O1lBQ2IsSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDO1FBQzlCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQ3hCLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDO1lBQ2hCLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRTtZQUMxRixDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDWixDQUFDOzs7Ozs7SUFFTyxxQ0FBSzs7Ozs7SUFBYixVQUFjLEdBQVE7UUFDcEIsT0FBTyxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxNQUFNO1lBQy9CLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxFQUFFO1lBQ3hDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDaEMsQ0FBQzs7Ozs7O0lBRU8sdUNBQU87Ozs7O0lBQWYsVUFBZ0IsR0FBUzs7WUFDakIsSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQztRQUMxQixPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQ2hDLENBQUM7O2dCQWhGRixTQUFTLFNBQUM7b0JBQ1QsUUFBUSxFQUFFLGdCQUFnQjtvQkFDMUIsU0FBUyxFQUFFO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxtQkFBbUI7NEJBQzVCLFdBQVcsRUFBRSxVQUFVOzs7NEJBQUMsY0FBTSxPQUFBLHFCQUFxQixFQUFyQixDQUFxQixFQUFDO3lCQUNyRDtxQkFDRjtpQkFDRjs7OztnQkEzQ1EsaUJBQWlCOzs7K0JBZ0R2QixLQUFLOzBCQUtMLEtBQUs7eUJBS0wsS0FBSzs7SUEwRFIsNEJBQUM7Q0FBQSxBQWpGRCxJQWlGQztTQXhFWSxxQkFBcUI7Ozs7OztJQUloQyw2Q0FBNEI7Ozs7O0lBSzVCLHdDQUEyQjs7Ozs7SUFLM0IsdUNBQXdCOztJQUV4QixpREFBa0Q7O0lBRWxELGtEQUFnRDs7Ozs7SUFFaEQsdUNBQTJCOzs7OztJQUVmLCtDQUE4QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgZm9yd2FyZFJlZiwgSW5wdXQsIE9uQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEtpdE1vbWVudFByb3ZpZGVyIH0gZnJvbSAnLi4va2l0LW1vbWVudC9raXQtbW9tZW50LXByb3ZpZGVyJztcclxuaW1wb3J0IHsgS2l0TW9kZWxJbnRlcmNlcHRvciB9IGZyb20gJy4uL2tpdC12YWx1ZS1hY2Nlc3Nvci9raXQtbW9kZWwtaW50ZXJjZXB0b3InO1xyXG5cclxuLyoqXHJcbiAqIERpc3BsYXlzIGRhdGUgaW4gYW4gaW5wdXQgaW4gYW55IGZvcm1hdCBhbmQgc3RvcmUgSlMgRGF0ZS1vYmplY3QgaW4gbW9kZWwuXHJcbiAqXHJcbiAqXHJcbiAqICMjIyBVc2FnZVxyXG4gKlxyXG4gKiBVc2UgdGhlIGRpcmVjdGl2ZTpcclxuICpcclxuICogYGBgaHRtbFxyXG4gKiA8aW5wdXQgWyhuZ01vZGVsKV09XCJkYXRlXCJcclxuICogICAgICAgIGtpdElucHV0RGF0ZT5cclxuICogYGBgXHJcbiAqXHJcbiAqICMjIyMgRm9ybWF0XHJcbiAqXHJcbiAqIFlvdSBjYW4gZGVmaW5lIHJlbmRlcmluZy9wYXJzaW5nIGZvcm1hdDpcclxuICpcclxuICogYGBgaHRtbFxyXG4gKiA8aW5wdXQgWyhuZ01vZGVsKV09XCJkYXRlXCJcclxuICogICAgICAgIGtpdElucHV0RGF0ZVxyXG4gKiAgICAgICAgZm9ybWF0PVwiWVlZWS9ERC9NTVwiPlxyXG4gKiBgYGBcclxuICpcclxuICogX19SZXF1aXJlcyBNb21lbnQuanMuX19cclxuICpcclxuICpcclxuICogIyMjIEV4YW1wbGVcclxuICpcclxuICogKiBjb2xsZWN0aW9uOmRhdGUtcGlja2VyIC1cclxuICogW3NvdXJjZXNdKGh0dHBzOi8vZ2l0aHViLmNvbS9uZ3gta2l0L25neC1raXQvdHJlZS9tYXN0ZXIvcGFja2FnZXMvY29sbGVjdGlvbi9saWIvdWktZGF0ZS1waWNrZXIpLFxyXG4gKiBbZGVtb10oaHR0cDovL25neC1raXQuY29tL2NvbGxlY3Rpb24vbW9kdWxlL3VpLWRhdGUtcGlja2VyKVxyXG4gKi9cclxuQERpcmVjdGl2ZSh7XHJcbiAgc2VsZWN0b3I6ICdba2l0SW5wdXREYXRlXScsXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6IEtpdE1vZGVsSW50ZXJjZXB0b3IsXHJcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEtpdElucHV0RGF0ZURpcmVjdGl2ZSksXHJcbiAgICB9LFxyXG4gIF0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBLaXRJbnB1dERhdGVEaXJlY3RpdmUgaW1wbGVtZW50cyBLaXRNb2RlbEludGVyY2VwdG9yLCBPbkNoYW5nZXMge1xyXG4gIC8qKlxyXG4gICAqIEBpbnRlcm5hbFxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGtpdElucHV0RGF0ZTogdm9pZDtcclxuXHJcbiAgLyoqXHJcbiAgICogYERhdGUudG9Mb2NhbGVEYXRlU3RyaW5nKClgIG9wdGlvbnMuXHJcbiAgICovXHJcbiAgQElucHV0KCkgb3B0aW9uczogYW55ID0ge307XHJcblxyXG4gIC8qKlxyXG4gICAqIFBhcnNlIGFuZCByZW5kZXIgZm9ybWF0ICh3b3JrcyBvbmx5IHdpdGggbW9tZW50LmpzKS5cclxuICAgKi9cclxuICBASW5wdXQoKSBmb3JtYXQ6IHN0cmluZztcclxuXHJcbiAgcmVhZG9ubHkgdmlld1N0YXRlQ2hhbmdlcyA9IG5ldyBTdWJqZWN0PHN0cmluZz4oKTtcclxuXHJcbiAgcmVhZG9ubHkgbW9kZWxTdGF0ZUNoYW5nZXMgPSBuZXcgU3ViamVjdDxhbnk+KCk7XHJcblxyXG4gIHByaXZhdGUgbW9tZW50OiBhbnkgPSBudWxsO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIG1vbWVudFByb3ZpZGVyOiBLaXRNb21lbnRQcm92aWRlcjxhbnk+KSB7XHJcbiAgICB0aGlzLm1vbWVudCA9IHRoaXMubW9tZW50UHJvdmlkZXIubW9tZW50O1xyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoKSB7XHJcbiAgICBpZiAodGhpcy5mb3JtYXQgJiYgIXRoaXMubW9tZW50KSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihcclxuICAgICAgICAnS2l0SW5wdXREYXRlRGlyZWN0aXZlOiBGb3JtYXQgb3B0aW9uIHJlcXVpcmVzIG1vbWVudC5qcyFcXG4nICtcclxuICAgICAgICAnPT09PT09PT09PVxcbicgK1xyXG4gICAgICAgICdQb3NzaWJsZSBzb2x1dGlvbjpcXG4nICtcclxuICAgICAgICAnICAxLiBJbnN0YWxsIG1vbWVudDogbnBtIGluc3RhbGwgbW9tZW50XFxuJyArXHJcbiAgICAgICAgLyogdHNsaW50OmRpc2FibGUtbmV4dC1saW5lICovXHJcbiAgICAgICAgJyAgMi4gUHJvdmlkZSBtb21lbnQgd2l0aCBga2l0TW9tZW50SW5zdGFuY2VgIGluamVjdGlvbiB0b2tlbiAoaW4gcm9vdCBtb2R1bGUpOiBge3Byb3ZpZGU6IGtpdE1vbWVudEluc3RhbmNlLCB1c2VWYWx1ZTogbW9tZW50fWAgXFxuJyArXHJcbiAgICAgICAgJz09PT09PT09PT1cXG4nLFxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSGFuZGxlIGlucHV0IGNoYW5naW5nIGJ5IHVzZXIuXHJcbiAgICovXHJcbiAgaW5wdXQodmFsdWU6IHN0cmluZywgZXZlbnQ6IGFueSkge1xyXG4gICAgY29uc3QgZGF0ZSA9IHRoaXMucGFyc2UodmFsdWUpO1xyXG4gICAgdGhpcy5tb2RlbFN0YXRlQ2hhbmdlcy5uZXh0KHRoaXMuaXNWYWxpZChkYXRlKSA/IGRhdGUgOiBudWxsKTtcclxuICB9XHJcblxyXG4gIGtleURvd24oZXZlbnQ6IGFueSkge1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSGFuZGxlIGV4dGVybmFsIG1vZGFsIGNoYW5naW5nLlxyXG4gICAqL1xyXG4gIHdyaXRlVmFsdWUodmFsdWU6IGFueSkge1xyXG4gICAgY29uc3QgZGF0ZSA9IHRoaXMucGFyc2UodmFsdWUpO1xyXG4gICAgdGhpcy52aWV3U3RhdGVDaGFuZ2VzLm5leHQoXHJcbiAgICAgIHRoaXMuaXNWYWxpZChkYXRlKVxyXG4gICAgICAgID8gdGhpcy5tb21lbnQgJiYgdGhpcy5mb3JtYXQgPyB0aGlzLm1vbWVudChkYXRlKS5mb3JtYXQodGhpcy5mb3JtYXQpIDogZGF0ZS50b0RhdGVTdHJpbmcoKVxyXG4gICAgICAgIDogJycpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBwYXJzZShyYXc6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMubW9tZW50ICYmIHRoaXMuZm9ybWF0XHJcbiAgICAgID8gdGhpcy5tb21lbnQocmF3LCB0aGlzLmZvcm1hdCkudG9EYXRlKClcclxuICAgICAgOiBuZXcgRGF0ZShEYXRlLnBhcnNlKHJhdykpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBpc1ZhbGlkKHJhdzogRGF0ZSkge1xyXG4gICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKHJhdyk7XHJcbiAgICByZXR1cm4gIWlzTmFOKGRhdGUuZ2V0VGltZSgpKTtcclxuICB9XHJcbn1cclxuIl19