UNPKG

@ngx-kit/core

Version:

ngx-kit - core module

207 lines 13.3 kB
/** * @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