ng-ptplibraries
Version:
143 lines (142 loc) • 12.1 kB
JavaScript
/**
* @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=