UNPKG

ng-ptplibraries

Version:

143 lines (142 loc) 12.1 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc */ import { Component, Input, forwardRef, Inject } from '@angular/core'; import { NG_VALUE_ACCESSOR } from '@angular/forms'; import { DateHelper } from '../../helpers/date.helper'; export class PTPDateBoxComponent { /** * @param {?} dateHelper */ constructor(dateHelper) { this.dateHelper = dateHelper; this.MONTH = []; this.DAY = []; this.YEAR = []; this.date = {}; this.propagateChange = (_) => { }; this.onTouched = () => { }; } /** * @return {?} */ ngOnInit() { this.Initialize(); } /** * @return {?} */ Initialize() { this.MONTH = this.dateHelper.getMonths(); this.YEAR = this.dateHelper.getYears(120, 18); this.DAY = this.dateHelper.getRange(31); this.InitalizeDates(); } /** * @return {?} */ InitalizeDates() { this.date.month = 'MM'; this.date.day = 'DD'; this.date.year = 'YYYY'; } /** * @return {?} */ reset() { this.InitalizeDates(); this.dateOfBirth = null; this.propagateChange(this.dateOfBirth); } /** * @param {?} value * @return {?} */ writeValue(value) { if (value !== undefined) { this.dateOfBirth = value; } } /** * @param {?} fn * @return {?} */ registerOnChange(fn) { this.propagateChange = fn; } /** * @param {?} fn * @return {?} */ registerOnTouched(fn) { this.onTouched = fn; } /** * @return {?} */ generateMonthDay() { this.DAY = this.dateHelper.generateMonthDay(Number(this.date.month), Number(this.date.year)); if (this.date.month !== 'MM' && this.date.day !== 'DD' && this.date.year !== 'YYYY') { this.propagateChange((this.date.month) + '/' + this.date.day + '/' + this.date.year); } } } PTPDateBoxComponent.decorators = [ { type: Component, args: [{ selector: 'ptp-datebox-field', template: `<div class="form-inline"> <select class="form-control form-control-sm mr-2" [(ngModel)]="date.month" [ngModelOptions]="{standalone: true}" [ngClass]="{'is-invalid': date.month === 'MM' && isTouched }" (change)="generateMonthDay()" aria-required="true"> <option disabled>MM</option> <option *ngFor="let value of MONTH; let i = index" [attr.value]="i+1">{{value}}</option> </select> <select class="form-control form-control-sm mr-2" [(ngModel)]="date.day" [ngModelOptions]="{standalone: true}" [ngClass]="{'is-invalid': date.day === 'DD' && isTouched }" (change)="generateMonthDay()" aria-required="true"> <option disabled>DD</option> <option *ngFor="let value of DAY" value="{{value}}">{{value}}</option> </select> <select class="form-control form-control-sm mr-2" [(ngModel)]="date.year" [ngModelOptions]="{standalone: true}" [ngClass]="{'is-invalid': date.year === 'YYYY' && isTouched }" (change)="generateMonthDay()" aria-required="true"> <option disabled>YYYY</option> <option *ngFor="let value of YEAR" value="{{value}}">{{value}}</option> </select> <div *ngIf="date.day === 'DD' || date.month === 'MM' || date.year === 'YYYY' && isTouched" class="invalid-feedback"> <span>Please enter a valid date!</span> </div> </div>`, providers: [ { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => PTPDateBoxComponent), multi: true } ] },] }, ]; /** @nocollapse */ PTPDateBoxComponent.ctorParameters = () => [ { type: DateHelper, decorators: [{ type: Inject, args: [DateHelper,] }] } ]; PTPDateBoxComponent.propDecorators = { isTouched: [{ type: Input }] }; if (false) { /** @type {?} */ PTPDateBoxComponent.prototype.dateOfBirth; /** @type {?} */ PTPDateBoxComponent.prototype.MONTH; /** @type {?} */ PTPDateBoxComponent.prototype.DAY; /** @type {?} */ PTPDateBoxComponent.prototype.YEAR; /** @type {?} */ PTPDateBoxComponent.prototype.date; /** @type {?} */ PTPDateBoxComponent.prototype.isTouched; /** @type {?} */ PTPDateBoxComponent.prototype.propagateChange; /** @type {?} */ PTPDateBoxComponent.prototype.onTouched; /** @type {?} */ PTPDateBoxComponent.prototype.dateHelper; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZWJveC1maWVsZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZy1wdHBsaWJyYXJpZXMvIiwic291cmNlcyI6WyJsaWIvY29tcG9uZW50cy9kYXRlYm94LWZpZWxkL2RhdGVib3gtZmllbGQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdFLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUErQnZELE1BQU0sT0FBTyxtQkFBbUI7Ozs7SUFrQjVCLFlBQ2dDLFVBQXNCO1FBQXRCLGVBQVUsR0FBVixVQUFVLENBQVk7UUFoQnRELGFBQVEsRUFBRSxDQUFDO1FBQ1gsV0FBTSxFQUFFLENBQUM7UUFDVCxZQUFPLEVBQUUsQ0FBQztRQUVWLFlBSUksRUFBRSxDQUFDO1FBSVAsdUJBQWtCLENBQUMsQ0FBTSxFQUFFLEVBQUUsSUFBSSxDQUFDO1FBQ2xDLGlCQUFpQixHQUFHLEVBQUUsSUFBSSxDQUFDO0tBSXZCOzs7O0lBRUosUUFBUTtRQUNKLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztLQUNyQjs7OztJQUVELFVBQVU7UUFDTixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDekMsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDOUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN4QyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7S0FDekI7Ozs7SUFFRCxjQUFjO1FBQ1YsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQztRQUNyQixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxNQUFNLENBQUM7S0FDM0I7Ozs7SUFFRCxLQUFLO1FBQ0QsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0tBQzFDOzs7OztJQUVELFVBQVUsQ0FBQyxLQUFVO1FBQ2pCLElBQUksS0FBSyxLQUFLLFNBQVMsRUFBRTtZQUNyQixJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztTQUM1QjtLQUNKOzs7OztJQUVELGdCQUFnQixDQUFDLEVBQUU7UUFDZixJQUFJLENBQUMsZUFBZSxHQUFHLEVBQUUsQ0FBQztLQUM3Qjs7Ozs7SUFFRCxpQkFBaUIsQ0FBQyxFQUFFO1FBQ2hCLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO0tBQ3ZCOzs7O0lBRUQsZ0JBQWdCO1FBQ1osSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDN0YsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssS0FBSyxJQUFJLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEtBQUssSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLE1BQU0sRUFBRTtZQUNqRixJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDeEY7S0FDSjs7O1lBN0ZKLFNBQVMsU0FBQztnQkFDUCxRQUFRLEVBQUUsbUJBQW1CO2dCQUM3QixRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQXFCUDtnQkFDSCxTQUFTLEVBQUU7b0JBQ1AsRUFBRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUU7aUJBQ2xHO2FBQ0o7Ozs7WUE3QlEsVUFBVSx1QkFrRFYsTUFBTSxTQUFDLFVBQVU7Ozt3QkFOckIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCwgZm9yd2FyZFJlZiwgSW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBEYXRlSGVscGVyIH0gZnJvbSAnLi4vLi4vaGVscGVycy9kYXRlLmhlbHBlcic7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncHRwLWRhdGVib3gtZmllbGQnLFxuICAgIHRlbXBsYXRlOiBgPGRpdiBjbGFzcz1cImZvcm0taW5saW5lXCI+XG4gICAgPHNlbGVjdCBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc20gbXItMlwiIFsobmdNb2RlbCldPVwiZGF0ZS5tb250aFwiIFtuZ01vZGVsT3B0aW9uc109XCJ7c3RhbmRhbG9uZTogdHJ1ZX1cIiBbbmdDbGFzc109XCJ7J2lzLWludmFsaWQnOiBkYXRlLm1vbnRoID09PSAnTU0nICYmIGlzVG91Y2hlZCB9XCJcbiAgICAgICAgKGNoYW5nZSk9XCJnZW5lcmF0ZU1vbnRoRGF5KClcIiBhcmlhLXJlcXVpcmVkPVwidHJ1ZVwiPlxuICAgICAgICA8b3B0aW9uIGRpc2FibGVkPk1NPC9vcHRpb24+XG4gICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IHZhbHVlIG9mIE1PTlRIOyBsZXQgaSA9IGluZGV4XCIgW2F0dHIudmFsdWVdPVwiaSsxXCI+e3t2YWx1ZX19PC9vcHRpb24+XG4gICAgPC9zZWxlY3Q+XG4gICAgPHNlbGVjdCBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc20gbXItMlwiIFsobmdNb2RlbCldPVwiZGF0ZS5kYXlcIiBbbmdNb2RlbE9wdGlvbnNdPVwie3N0YW5kYWxvbmU6IHRydWV9XCIgW25nQ2xhc3NdPVwieydpcy1pbnZhbGlkJzogZGF0ZS5kYXkgPT09ICdERCcgJiYgaXNUb3VjaGVkIH1cIlxuICAgICAgICAoY2hhbmdlKT1cImdlbmVyYXRlTW9udGhEYXkoKVwiIGFyaWEtcmVxdWlyZWQ9XCJ0cnVlXCI+XG4gICAgICAgIDxvcHRpb24gZGlzYWJsZWQ+REQ8L29wdGlvbj5cbiAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgdmFsdWUgb2YgREFZXCIgdmFsdWU9XCJ7e3ZhbHVlfX1cIj57e3ZhbHVlfX08L29wdGlvbj5cbiAgICA8L3NlbGVjdD5cbiAgICA8c2VsZWN0IGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbSBtci0yXCIgWyhuZ01vZGVsKV09XCJkYXRlLnllYXJcIiBbbmdNb2RlbE9wdGlvbnNdPVwie3N0YW5kYWxvbmU6IHRydWV9XCIgW25nQ2xhc3NdPVwieydpcy1pbnZhbGlkJzogZGF0ZS55ZWFyID09PSAnWVlZWScgJiYgaXNUb3VjaGVkIH1cIlxuICAgICAgICAoY2hhbmdlKT1cImdlbmVyYXRlTW9udGhEYXkoKVwiIGFyaWEtcmVxdWlyZWQ9XCJ0cnVlXCI+XG4gICAgICAgIDxvcHRpb24gZGlzYWJsZWQ+WVlZWTwvb3B0aW9uPlxuICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCB2YWx1ZSBvZiBZRUFSXCIgdmFsdWU9XCJ7e3ZhbHVlfX1cIj57e3ZhbHVlfX08L29wdGlvbj5cbiAgICA8L3NlbGVjdD5cbiAgICA8ZGl2ICpuZ0lmPVwiZGF0ZS5kYXkgPT09ICdERCcgfHxcbiAgICAgICAgICAgICAgZGF0ZS5tb250aCA9PT0gJ01NJyB8fFxuICAgICAgICAgICAgICBkYXRlLnllYXIgPT09ICdZWVlZJyAmJiBpc1RvdWNoZWRcIiBjbGFzcz1cImludmFsaWQtZmVlZGJhY2tcIj5cbiAgICAgICAgPHNwYW4+UGxlYXNlIGVudGVyIGEgdmFsaWQgZGF0ZSE8L3NwYW4+XG4gICAgPC9kaXY+XG48L2Rpdj5gLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7IHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLCB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBQVFBEYXRlQm94Q29tcG9uZW50KSwgbXVsdGk6IHRydWUgfVxuICAgIF1cbn0pXG5cbmV4cG9ydCBjbGFzcyBQVFBEYXRlQm94Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBDb250cm9sVmFsdWVBY2Nlc3NvciAge1xuXG4gICAgZGF0ZU9mQmlydGg7XG4gICAgTU9OVEggPSBbXTtcbiAgICBEQVkgPSBbXTtcbiAgICBZRUFSID0gW107XG5cbiAgICBkYXRlOiB7XG4gICAgICAgIHllYXI/OiBzdHJpbmcsXG4gICAgICAgIG1vbnRoPzogc3RyaW5nLFxuICAgICAgICBkYXk/OiBzdHJpbmdcbiAgICB9ID0ge307XG5cbiAgICBASW5wdXQoKSBwdWJsaWMgaXNUb3VjaGVkOiBib29sZWFuO1xuXG4gICAgcHJvcGFnYXRlQ2hhbmdlID0gKF86IGFueSkgPT4geyB9O1xuICAgIG9uVG91Y2hlZDogYW55ID0gKCkgPT4geyB9O1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIEBJbmplY3QoRGF0ZUhlbHBlcikgcHJpdmF0ZSBkYXRlSGVscGVyOiBEYXRlSGVscGVyLFxuICAgICkge31cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLkluaXRpYWxpemUoKTtcbiAgICB9XG5cbiAgICBJbml0aWFsaXplKCkge1xuICAgICAgICB0aGlzLk1PTlRIID0gdGhpcy5kYXRlSGVscGVyLmdldE1vbnRocygpO1xuICAgICAgICB0aGlzLllFQVIgPSB0aGlzLmRhdGVIZWxwZXIuZ2V0WWVhcnMoMTIwLCAxOCk7XG4gICAgICAgIHRoaXMuREFZID0gdGhpcy5kYXRlSGVscGVyLmdldFJhbmdlKDMxKTtcbiAgICAgICAgdGhpcy5Jbml0YWxpemVEYXRlcygpO1xuICAgIH1cblxuICAgIEluaXRhbGl6ZURhdGVzKCkge1xuICAgICAgICB0aGlzLmRhdGUubW9udGggPSAnTU0nO1xuICAgICAgICB0aGlzLmRhdGUuZGF5ID0gJ0REJztcbiAgICAgICAgdGhpcy5kYXRlLnllYXIgPSAnWVlZWSc7XG4gICAgfVxuXG4gICAgcmVzZXQoKSB7XG4gICAgICAgIHRoaXMuSW5pdGFsaXplRGF0ZXMoKTtcbiAgICAgICAgdGhpcy5kYXRlT2ZCaXJ0aCA9IG51bGw7XG4gICAgICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlKHRoaXMuZGF0ZU9mQmlydGgpO1xuICAgIH1cblxuICAgIHdyaXRlVmFsdWUodmFsdWU6IGFueSkge1xuICAgICAgICBpZiAodmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhpcy5kYXRlT2ZCaXJ0aCA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmVnaXN0ZXJPbkNoYW5nZShmbikge1xuICAgICAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZSA9IGZuO1xuICAgIH1cblxuICAgIHJlZ2lzdGVyT25Ub3VjaGVkKGZuKSB7XG4gICAgICAgIHRoaXMub25Ub3VjaGVkID0gZm47XG4gICAgfVxuXG4gICAgZ2VuZXJhdGVNb250aERheSgpIHtcbiAgICAgICAgdGhpcy5EQVkgPSB0aGlzLmRhdGVIZWxwZXIuZ2VuZXJhdGVNb250aERheShOdW1iZXIodGhpcy5kYXRlLm1vbnRoKSwgTnVtYmVyKHRoaXMuZGF0ZS55ZWFyKSk7XG4gICAgICAgIGlmICh0aGlzLmRhdGUubW9udGggIT09ICdNTScgJiYgdGhpcy5kYXRlLmRheSAhPT0gJ0REJyAmJiB0aGlzLmRhdGUueWVhciAhPT0gJ1lZWVknKSB7XG4gICAgICAgICAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZSgodGhpcy5kYXRlLm1vbnRoKSArICcvJyArIHRoaXMuZGF0ZS5kYXkgKyAnLycgKyB0aGlzLmRhdGUueWVhcik7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=