UNPKG

@asi-ngtools/lib

Version:

This project is a little components library, simple to use, which will help you to simplify your project.

236 lines (235 loc) 16.8 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc */ import * as tslib_1 from "tslib"; import { AsiCalendarComponent } from './../asi-calendar/asi-calendar.component'; import { DefaultControlValueAccessor } from './../common/default-control-value-accessor'; import { NG_VALUE_ACCESSOR, FormControl } from '@angular/forms'; import { Component, forwardRef, Input, ElementRef, ViewChild, Renderer2 } from '@angular/core'; import moment from 'moment'; var AsiDatePickerComponent = /** @class */ (function (_super) { tslib_1.__extends(AsiDatePickerComponent, _super); function AsiDatePickerComponent(renderer, elementRef) { var _this = _super.call(this) || this; _this.renderer = renderer; _this.elementRef = elementRef; /** * Label position */ _this.labelPosition = 'top'; /** * placeholder if not null else will be the date display pattern */ _this.placeholder = null; /** * date display pattern */ _this.pattern = 'DD/MM/YYYY'; /** * min year selectable */ _this.minYear = 1900; /** * max year selectable */ _this.maxYear = new Date().getFullYear() + 1; /** * open automatically when the input is focused */ _this.autoOpen = true; _this.inputControl = new FormControl(); return _this; } /** * @return {?} */ AsiDatePickerComponent.prototype.ngOnInit = /** * @return {?} */ function () { this.renderer.addClass(this.elementRef.nativeElement, 'label-' + this.labelPosition); if (this.placeholder == null) { this.placeholder = this.pattern.toLowerCase(); } }; /** * @return {?} */ AsiDatePickerComponent.prototype.ngAfterViewInit = /** * @return {?} */ function () { var _this = this; this.inputControl.valueChanges.subscribe(function (val) { if (val === '' || val == null) { _this.value = null; } else { /** @type {?} */ var momentTest = moment.utc(val, _this.pattern); if (momentTest.isValid()) { if (val.length === _this.pattern.length) { _this.value = momentTest.toDate(); } else { _this.value = { error: 'Invalid_Date', value: val }; } } else { _this.value = { error: 'Invalid_Date', value: val }; } } }); }; /** * @return {?} */ AsiDatePickerComponent.prototype.openCalendar = /** * @return {?} */ function () { if (this.autoOpen) { this.calendarElement.openCalendar(); } }; /** * @param {?} date * @return {?} */ AsiDatePickerComponent.prototype.onDatePicked = /** * @param {?} date * @return {?} */ function (date) { /** @type {?} */ var formattedValue = moment(date).format(this.pattern); this.inputControl.setValue(formattedValue); }; /** * @param {?} value * @return {?} */ AsiDatePickerComponent.prototype.writeValue = /** * @param {?} value * @return {?} */ function (value) { if (value != null) { /** @type {?} */ var momentValue = moment.utc(value); this._value = momentValue.toDate(); /** @type {?} */ var formattedValue = momentValue.format(this.pattern); this.inputControl.setValue(formattedValue, { emitEvent: false }); } else { this._value = value; this.inputControl.setValue(null, { emitEvent: false }); } }; AsiDatePickerComponent.decorators = [ { type: Component, args: [{ selector: 'asi-datepicker', host: { class: 'asi-component asi-datepicker' }, template: "<label class=\"input-label\" *ngIf=\"label != null\">{{ label | translate }}</label>\n<div class=\"asi-datepicker-container\">\n <input\n #input\n [attr.disabled]=\"disabled ? '' : null\"\n class=\"asi-focus-error\"\n [placeholder]=\"placeholder\"\n (click)=\"openCalendar()\"\n [formControl]=\"inputControl\"\n />\n <asi-calendar\n #calendar\n [relativeTo]=\"inputElement\"\n [disableDayOfWeek]=\"disableDayOfWeek\"\n [disabled]=\"disabled\"\n [(ngModel)]=\"value\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n [minYear]=\"minYear\"\n [maxYear]=\"maxYear\"\n (onDatePicked)=\"onDatePicked($event)\"\n ></asi-calendar>\n</div>\n", providers: [ { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(function () { return AsiDatePickerComponent; }), multi: true } ] }] } ]; /** @nocollapse */ AsiDatePickerComponent.ctorParameters = function () { return [ { type: Renderer2 }, { type: ElementRef } ]; }; AsiDatePickerComponent.propDecorators = { label: [{ type: Input }], labelPosition: [{ type: Input }], placeholder: [{ type: Input }], pattern: [{ type: Input }], minDate: [{ type: Input }], maxDate: [{ type: Input }], minYear: [{ type: Input }], maxYear: [{ type: Input }], autoOpen: [{ type: Input }], disableDayOfWeek: [{ type: Input }], inputElement: [{ type: ViewChild, args: ['input',] }], calendarElement: [{ type: ViewChild, args: ['calendar',] }] }; return AsiDatePickerComponent; }(DefaultControlValueAccessor)); export { AsiDatePickerComponent }; if (false) { /** * Label to display (is translated) * @type {?} */ AsiDatePickerComponent.prototype.label; /** * Label position * @type {?} */ AsiDatePickerComponent.prototype.labelPosition; /** * placeholder if not null else will be the date display pattern * @type {?} */ AsiDatePickerComponent.prototype.placeholder; /** * date display pattern * @type {?} */ AsiDatePickerComponent.prototype.pattern; /** * min date available * @type {?} */ AsiDatePickerComponent.prototype.minDate; /** * max date available * @type {?} */ AsiDatePickerComponent.prototype.maxDate; /** * min year selectable * @type {?} */ AsiDatePickerComponent.prototype.minYear; /** * max year selectable * @type {?} */ AsiDatePickerComponent.prototype.maxYear; /** * open automatically when the input is focused * @type {?} */ AsiDatePickerComponent.prototype.autoOpen; /** * allow you to disable day of week exemple [disableDayOfWeek]="[1, 2]"" while disabled monday and tusday * @type {?} */ AsiDatePickerComponent.prototype.disableDayOfWeek; /** @type {?} */ AsiDatePickerComponent.prototype.inputControl; /** @type {?} */ AsiDatePickerComponent.prototype.inputElement; /** @type {?} */ AsiDatePickerComponent.prototype.calendarElement; /** @type {?} */ AsiDatePickerComponent.prototype.renderer; /** @type {?} */ AsiDatePickerComponent.prototype.elementRef; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNpLWRhdGVwaWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGFzaS1uZ3Rvb2xzL2xpYi8iLCJzb3VyY2VzIjpbImxpYi9jb21wb25lbnRzL2FzaS1kYXRlcGlja2VyL2FzaS1kYXRlcGlja2VyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQ3pGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNoRSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUF5QixTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXRILE9BQU8sTUFBTSxNQUFNLFFBQVEsQ0FBQzs7SUFjZ0Isa0RBQTJCO0lBaUNyRSxnQ0FBb0IsUUFBbUIsRUFBVSxVQUFzQjtRQUF2RSxZQUNFLGlCQUFPLFNBQ1I7UUFGbUIsY0FBUSxHQUFSLFFBQVEsQ0FBVztRQUFVLGdCQUFVLEdBQVYsVUFBVSxDQUFZOzs7OzhCQTdCd0IsS0FBSzs7Ozs0QkFFN0UsSUFBSTs7Ozt3QkFHUixZQUFZOzs7O3dCQVFKLElBQUk7Ozs7d0JBR0osSUFBSSxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsR0FBRyxDQUFDOzs7O3lCQUduQyxJQUFJOzZCQUtULElBQUksV0FBVyxFQUFFOztLQU8vQjs7OztJQUVELHlDQUFROzs7SUFBUjtRQUNFLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxFQUFFLFFBQVEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDckYsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsQ0FB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RUFBdEIsQ0FBc0IsQ0FBQzs0QkFDckQsS0FBSyxFQUFFLElBQUk7eUJBQ1o7cUJBQ0Y7aUJBQ0Y7Ozs7Z0JBZm9GLFNBQVM7Z0JBQXZELFVBQVU7Ozt3QkFrQjlDLEtBQUs7Z0NBRUwsS0FBSzs4QkFFTCxLQUFLOzBCQUdMLEtBQUs7MEJBR0wsS0FBSzswQkFFTCxLQUFLOzBCQUdMLEtBQUs7MEJBR0wsS0FBSzsyQkFHTCxLQUFLO21DQUdMLEtBQUs7K0JBSUwsU0FBUyxTQUFDLE9BQU87a0NBQ2pCLFNBQVMsU0FBQyxVQUFVOztpQ0FsRHZCO0VBbUI0QywyQkFBMkI7U0FBMUQsc0JBQXNCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXNpQ2FsZW5kYXJDb21wb25lbnQgfSBmcm9tICcuLy4uL2FzaS1jYWxlbmRhci9hc2ktY2FsZW5kYXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRGVmYXVsdENvbnRyb2xWYWx1ZUFjY2Vzc29yIH0gZnJvbSAnLi8uLi9jb21tb24vZGVmYXVsdC1jb250cm9sLXZhbHVlLWFjY2Vzc29yJztcclxuaW1wb3J0IHsgTkdfVkFMVUVfQUNDRVNTT1IsIEZvcm1Db250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIGZvcndhcmRSZWYsIElucHV0LCBFbGVtZW50UmVmLCBPbkluaXQsIEFmdGVyVmlld0luaXQsIFZpZXdDaGlsZCwgUmVuZGVyZXIyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FzaS1kYXRlcGlja2VyJyxcclxuICBob3N0OiB7IGNsYXNzOiAnYXNpLWNvbXBvbmVudCBhc2ktZGF0ZXBpY2tlcicgfSxcclxuICB0ZW1wbGF0ZVVybDogJ2FzaS1kYXRlcGlja2VyLmNvbXBvbmVudC5odG1sJyxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEFzaURhdGVQaWNrZXJDb21wb25lbnQpLFxyXG4gICAgICBtdWx0aTogdHJ1ZVxyXG4gICAgfVxyXG4gIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIEFzaURhdGVQaWNrZXJDb21wb25lbnQgZXh0ZW5kcyBEZWZhdWx0Q29udHJvbFZhbHVlQWNjZXNzb3IgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQge1xyXG4gIC8qKiBMYWJlbCB0byBkaXNwbGF5IChpcyB0cmFuc2xhdGVkKSAqL1xyXG4gIEBJbnB1dCgpIGxhYmVsOiBzdHJpbmc7XHJcbiAgLyoqIExhYmVsIHBvc2l0aW9uICovXHJcbiAgQElucHV0KCkgbGFiZWxQb3NpdGlvbjogJ3RvcCcgfCAnbGVmdCcgfCAncmlnaHQnIHwgJ2JvdHRvbScgfCAnYm90dG9tLWNlbnRlcicgfCAndG9wLWNlbnRlcicgPSAndG9wJztcclxuICAvKiogcGxhY2Vob2xkZXIgaWYgbm90IG51bGwgZWxzZSB3aWxsIGJlIHRoZSBkYXRlIGRpc3BsYXkgcGF0dGVybiAqL1xyXG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyID0gbnVsbDtcclxuXHJcbiAgLyoqIGRhdGUgZGlzcGxheSBwYXR0ZXJuICovXHJcbiAgQElucHV0KCkgcGF0dGVybiA9ICdERC9NTS9ZWVlZJztcclxuXHJcbiAgLyoqIG1pbiBkYXRlIGF2YWlsYWJsZSAqL1xyXG4gIEBJbnB1dCgpIG1pbkRhdGU6IERhdGU7XHJcbiAgLyoqIG1heCBkYXRlIGF2YWlsYWJsZSAqL1xyXG4gIEBJbnB1dCgpIG1heERhdGU6IERhdGU7XHJcblxyXG4gIC8qKiBtaW4geWVhciBzZWxlY3RhYmxlICovXHJcbiAgQElucHV0KCkgbWluWWVhcjogbnVtYmVyID0gMTkwMDtcclxuXHJcbiAgLyoqIG1heCB5ZWFyIHNlbGVjdGFibGUgKi9cclxuICBASW5wdXQoKSBtYXhZZWFyOiBudW1iZXIgPSBuZXcgRGF0ZSgpLmdldEZ1bGxZZWFyKCkgKyAxO1xyXG5cclxuICAvKiogb3BlbiBhdXRvbWF0aWNhbGx5IHdoZW4gdGhlIGlucHV0IGlzIGZvY3VzZWQqL1xyXG4gIEBJbnB1dCgpIGF1dG9PcGVuID0gdHJ1ZTtcclxuXHJcbiAgLyoqIGFsbG93IHlvdSB0byBkaXNhYmxlIGRheSBvZiB3ZWVrIGV4ZW1wbGUgW2Rpc2FibGVEYXlPZldlZWtdPVwiWzEsIDJdXCJcIiB3aGlsZSBkaXNhYmxlZCBtb25kYXkgYW5kIHR1c2RheSAqL1xyXG4gIEBJbnB1dCgpIGRpc2FibGVEYXlPZldlZWs6IG51bWJlciB8IEFycmF5PG51bWJlcj47XHJcblxyXG4gIGlucHV0Q29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCgpO1xyXG5cclxuICBAVmlld0NoaWxkKCdpbnB1dCcpIGlucHV0RWxlbWVudDogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKCdjYWxlbmRhcicpIGNhbGVuZGFyRWxlbWVudDogQXNpQ2FsZW5kYXJDb21wb25lbnQ7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMiwgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAnbGFiZWwtJyArIHRoaXMubGFiZWxQb3NpdGlvbik7XHJcbiAgICBpZiAodGhpcy5wbGFjZWhvbGRlciA9PSBudWxsKSB7XHJcbiAgICAgIHRoaXMucGxhY2Vob2xkZXIgPSB0aGlzLnBhdHRlcm4udG9Mb3dlckNhc2UoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgIHRoaXMuaW5wdXRDb250cm9sLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKHZhbCkgPT4ge1xyXG4gICAgICBpZiAodmFsID09PSAnJyB8fCB2YWwgPT0gbnVsbCkge1xyXG4gICAgICAgIHRoaXMudmFsdWUgPSBudWxsO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGxldCBtb21lbnRUZXN0ID0gbW9tZW50LnV0Yyh2YWwsIHRoaXMucGF0dGVybik7XHJcbiAgICAgICAgaWYgKG1vbWVudFRlc3QuaXNWYWxpZCgpKSB7XHJcbiAgICAgICAgICBpZiAodmFsLmxlbmd0aCA9PT0gdGhpcy5wYXR0ZXJuLmxlbmd0aCkge1xyXG4gICAgICAgICAgICB0aGlzLnZhbHVlID0gbW9tZW50VGVzdC50b0RhdGUoKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMudmFsdWUgPSB7XHJcbiAgICAgICAgICAgICAgZXJyb3I6ICdJbnZhbGlkX0RhdGUnLFxyXG4gICAgICAgICAgICAgIHZhbHVlOiB2YWxcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy52YWx1ZSA9IHtcclxuICAgICAgICAgICAgZXJyb3I6ICdJbnZhbGlkX0RhdGUnLFxyXG4gICAgICAgICAgICB2YWx1ZTogdmFsXHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBvcGVuQ2FsZW5kYXIoKSB7XHJcbiAgICBpZiAodGhpcy5hdXRvT3Blbikge1xyXG4gICAgICB0aGlzLmNhbGVuZGFyRWxlbWVudC5vcGVuQ2FsZW5kYXIoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uRGF0ZVBpY2tlZChkYXRlOiBEYXRlKSB7XHJcbiAgICBsZXQgZm9ybWF0dGVkVmFsdWUgPSBtb21lbnQoZGF0ZSkuZm9ybWF0KHRoaXMucGF0dGVybik7XHJcbiAgICB0aGlzLmlucHV0Q29udHJvbC5zZXRWYWx1ZShmb3JtYXR0ZWRWYWx1ZSk7XHJcbiAgfVxyXG5cclxuICB3cml0ZVZhbHVlKHZhbHVlOiBEYXRlKSB7XHJcbiAgICBpZiAodmFsdWUgIT0gbnVsbCkge1xyXG4gICAgICBsZXQgbW9tZW50VmFsdWUgPSBtb21lbnQudXRjKHZhbHVlKTtcclxuICAgICAgdGhpcy5fdmFsdWUgPSBtb21lbnRWYWx1ZS50b0RhdGUoKTtcclxuICAgICAgbGV0IGZvcm1hdHRlZFZhbHVlID0gbW9tZW50VmFsdWUuZm9ybWF0KHRoaXMucGF0dGVybik7XHJcbiAgICAgIHRoaXMuaW5wdXRDb250cm9sLnNldFZhbHVlKGZvcm1hdHRlZFZhbHVlLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLl92YWx1ZSA9IHZhbHVlO1xyXG4gICAgICB0aGlzLmlucHV0Q29udHJvbC5zZXRWYWx1ZShudWxsLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==