UNPKG

@asi-ngtools/lib

Version:

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

253 lines (252 loc) 19.5 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc */ import * as tslib_1 from "tslib"; import { DefaultControlValueAccessor } from './../common/default-control-value-accessor'; import { Component, forwardRef, Input, Inject, PLATFORM_ID, Injector, Renderer2, ElementRef } from '@angular/core'; import { NG_VALUE_ACCESSOR } from '@angular/forms'; import * as dmyConstants from './asi-dmypicker-constants'; import * as nh from '../../native-helper'; import { isPlatformBrowser } from '@angular/common'; var AsiDmyPickerComponent = /** @class */ (function (_super) { tslib_1.__extends(AsiDmyPickerComponent, _super); function AsiDmyPickerComponent(platformId, injector, renderer, elementRef) { var _this = _super.call(this) || this; _this.platformId = platformId; _this.injector = injector; _this.renderer = renderer; _this.elementRef = elementRef; /** * Label position */ _this.labelPosition = 'top'; /** * hide day list */ _this.dayHidden = false; _this.days = []; _this.months = []; _this.years = []; return _this; } /** * @return {?} */ AsiDmyPickerComponent.prototype.ngOnInit = /** * @return {?} */ function () { this.renderer.addClass(this.elementRef.nativeElement, 'label-' + this.labelPosition); if (this.isFr()) { this.months = dmyConstants.months_fr; this.dayLabel = 'Jour'; this.monthLabel = 'Mois'; this.yearLabel = 'Annee'; } else { this.months = dmyConstants.months_en; this.dayLabel = 'Day'; this.monthLabel = 'Month'; this.yearLabel = 'Year'; } this.initDays(); this.initYears(); }; /** * @return {?} */ AsiDmyPickerComponent.prototype.isFr = /** * @return {?} */ function () { if (isPlatformBrowser(this.platformId)) { return navigator.language === 'fr' || navigator.language === 'fr-FR'; } else { /** @type {?} */ var request = this.injector.get('request'); if (request && request.asiNgtools) { /** @type {?} */ var language = request.asiNgtools.language; if (language) { return language.substring(0, 2) === 'fr'; } } return false; } }; /** * @return {?} */ AsiDmyPickerComponent.prototype.initDays = /** * @return {?} */ function () { var _this = this; nh.times(31, function (time) { _this.days.push(time + 1); }); }; /** * @return {?} */ AsiDmyPickerComponent.prototype.initYears = /** * @return {?} */ function () { /** @type {?} */ var results = new Array(); /** @type {?} */ var currentYear = new Date().getFullYear(); for (var year = currentYear; year >= 1900; year--) { results.push(year); } this.years = results; }; /** * @param {?} month * @return {?} */ AsiDmyPickerComponent.prototype.onMonthChange = /** * @param {?} month * @return {?} */ function (month) { this.value = { day: this.day, month: month != null ? month.num : null, year: this.year }; }; /** * @param {?} year * @return {?} */ AsiDmyPickerComponent.prototype.onYearChange = /** * @param {?} year * @return {?} */ function (year) { this.value = { day: this.day, month: this.month != null ? this.month.num : null, year: year }; }; /** * @param {?} day * @return {?} */ AsiDmyPickerComponent.prototype.onDayChange = /** * @param {?} day * @return {?} */ function (day) { this.value = { day: day, month: this.month != null ? this.month.num : null, year: this.year }; }; // Controle value accessor /** * @param {?} value * @return {?} */ AsiDmyPickerComponent.prototype.writeValue = /** * @param {?} value * @return {?} */ function (value) { if (value != null) { this.day = value.day; this.month = this.getMontFromNum(value.month); this.year = value.year; } else { this.day = null; this.month = null; this.year = null; } this._value = { day: this.day, month: this.month, year: this.year }; }; /** * @param {?} monthNum * @return {?} */ AsiDmyPickerComponent.prototype.getMontFromNum = /** * @param {?} monthNum * @return {?} */ function (monthNum) { if (monthNum == null) { return null; } return nh.find(this.months, function (month) { return month.num === monthNum; }); }; AsiDmyPickerComponent.decorators = [ { type: Component, args: [{ selector: 'asi-dmypicker', host: { 'class': 'asi-component asi-dmypicker' }, template: "<label class=\"input-label\" [translate]=\"label\"></label>\r\n<div class=\"asi-dmypicker-container\">\r\n <asi-select class=\"asi-dmy-days\" [disabled]=\"disabled\" [withEmptyValue]=\"true\" [hidden]=\"dayHidden\" [data]=\"days\" [(ngModel)]=\"day\"\r\n (ngModelChange)=\"onDayChange($event)\">\r\n <asi-empty *asiEmptyDef>{{dayLabel}}</asi-empty>\r\n <asi-selected *asiSelectedDef=\"let data\">{{data}}</asi-selected>\r\n <asi-option *asiOptionDef=\"let data\">{{data}}</asi-option>\r\n </asi-select>\r\n <asi-select class=\"asi-dmy-months\" [disabled]=\"disabled\" [withEmptyValue]=\"true\" [data]=\"months\" [(ngModel)]=\"month\" (ngModelChange)=\"onMonthChange($event)\">\r\n <asi-empty *asiEmptyDef>{{monthLabel}}</asi-empty>\r\n <asi-selected *asiSelectedDef=\"let data\">{{data.num + \" - \" + data.libelle}}</asi-selected>\r\n <asi-option *asiOptionDef=\"let data\">{{data.num + \" - \" + data.libelle}}</asi-option>\r\n </asi-select>\r\n <asi-select class=\"asi-dmy-years\" [disabled]=\"disabled\" [withEmptyValue]=\"true\" [data]=\"years\" [(ngModel)]=\"year\" (ngModelChange)=\"onYearChange($event)\">\r\n <asi-empty *asiEmptyDef>{{yearLabel}}</asi-empty>\r\n <asi-selected *asiSelectedDef=\"let data\">{{data}}</asi-selected>\r\n <asi-option *asiOptionDef=\"let data\">{{data}}</asi-option>\r\n </asi-select>\r\n</div>", providers: [ { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(function () { return AsiDmyPickerComponent; }), multi: true } ] }] } ]; /** @nocollapse */ AsiDmyPickerComponent.ctorParameters = function () { return [ { type: undefined, decorators: [{ type: Inject, args: [PLATFORM_ID,] }] }, { type: Injector }, { type: Renderer2 }, { type: ElementRef } ]; }; AsiDmyPickerComponent.propDecorators = { label: [{ type: Input }], labelPosition: [{ type: Input }], dayHidden: [{ type: Input }] }; return AsiDmyPickerComponent; }(DefaultControlValueAccessor)); export { AsiDmyPickerComponent }; if (false) { /** * Label to display (is translated) * @type {?} */ AsiDmyPickerComponent.prototype.label; /** * Label position * @type {?} */ AsiDmyPickerComponent.prototype.labelPosition; /** * hide day list * @type {?} */ AsiDmyPickerComponent.prototype.dayHidden; /** @type {?} */ AsiDmyPickerComponent.prototype.day; /** @type {?} */ AsiDmyPickerComponent.prototype.month; /** @type {?} */ AsiDmyPickerComponent.prototype.year; /** @type {?} */ AsiDmyPickerComponent.prototype.dayLabel; /** @type {?} */ AsiDmyPickerComponent.prototype.monthLabel; /** @type {?} */ AsiDmyPickerComponent.prototype.yearLabel; /** @type {?} */ AsiDmyPickerComponent.prototype.days; /** @type {?} */ AsiDmyPickerComponent.prototype.months; /** @type {?} */ AsiDmyPickerComponent.prototype.years; /** @type {?} */ AsiDmyPickerComponent.prototype.language; /** @type {?} */ AsiDmyPickerComponent.prototype.platformId; /** @type {?} */ AsiDmyPickerComponent.prototype.injector; /** @type {?} */ AsiDmyPickerComponent.prototype.renderer; /** @type {?} */ AsiDmyPickerComponent.prototype.elementRef; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNpLWRteXBpY2tlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYXNpLW5ndG9vbHMvbGliLyIsInNvdXJjZXMiOlsibGliL2NvbXBvbmVudHMvYXNpLWRteXBpY2tlci9hc2ktZG15cGlja2VyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUNBLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQ3pGLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBVSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNILE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRW5ELE9BQU8sS0FBSyxZQUFZLE1BQU0sMkJBQTJCLENBQUM7QUFDMUQsT0FBTyxLQUFLLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUUxQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7SUFjVCxpREFBMkI7SUF5QnBFLCtCQUF5QyxVQUFlLEVBQVUsUUFBa0IsRUFDMUUsVUFBNkIsVUFBc0I7UUFEN0QsWUFFRSxpQkFBTyxTQUNSO1FBSHdDLGdCQUFVLEdBQVYsVUFBVSxDQUFLO1FBQVUsY0FBUSxHQUFSLFFBQVEsQ0FBVTtRQUMxRSxjQUFRLEdBQVIsUUFBUTtRQUFxQixnQkFBVSxHQUFWLFVBQVUsQ0FBWTs7Ozs4QkFwQmtDLEtBQUs7Ozs7MEJBRy9FLEtBQUs7cUJBVUosRUFBRTt1QkFDWSxFQUFFO3NCQUNmLEVBQUU7O0tBT3hCOzs7O0lBRUQsd0NBQVE7OztJQUFSO1FBQ0UsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLEVBQUUsUUFBUSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNyRixFQUFFLENBQUMsQ0FB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LE1BQU0sQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsVUFBQyxLQUFLO1lBQ2hDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxLQUFLLFFBQVEsQ0FBQztTQUMvQixDQUFDLENBQUM7OztnQkExSE4sU0FBUyxTQUFDO29CQUNULFFBQVEsRUFBRSxlQUFlO29CQUN6QixJQUFJLEVBQUUsRUFBRSxPQUFPLEVBQUUsNkJBQTZCLEVBQUU7b0JBQ2hELG0yQ0FBNkM7b0JBQzdDLFNBQVMsRUFBRTt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLGNBQU0sT0FBQSxxQkFBcUIsRUFBckIsQ0FBcUIsQ0FBQzs0QkFDcEQsS0FBSyxFQUFFLElBQUk7eUJBQ1o7cUJBQ0Y7aUJBQ0Y7Ozs7Z0RBMEJjLE1BQU0sU0FBQyxXQUFXO2dCQTdDMkIsUUFBUTtnQkFBVSxTQUFTO2dCQUFFLFVBQVU7Ozt3QkF1QmhHLEtBQUs7Z0NBR0wsS0FBSzs0QkFHTCxLQUFLOztnQ0EvQlI7RUFzQjJDLDJCQUEyQjtTQUF6RCxxQkFBcUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNb250aCB9IGZyb20gJy4vYXNpLWRteXBpY2tlci1jb25zdGFudHMnO1xuaW1wb3J0IHsgRGVmYXVsdENvbnRyb2xWYWx1ZUFjY2Vzc29yIH0gZnJvbSAnLi8uLi9jb21tb24vZGVmYXVsdC1jb250cm9sLXZhbHVlLWFjY2Vzc29yJztcbmltcG9ydCB7IENvbXBvbmVudCwgZm9yd2FyZFJlZiwgSW5wdXQsIEluamVjdCwgUExBVEZPUk1fSUQsIEluamVjdG9yLCBPbkluaXQsIFJlbmRlcmVyMiwgRWxlbWVudFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCAqIGFzIGRteUNvbnN0YW50cyBmcm9tICcuL2FzaS1kbXlwaWNrZXItY29uc3RhbnRzJztcbmltcG9ydCAqIGFzIG5oIGZyb20gJy4uLy4uL25hdGl2ZS1oZWxwZXInO1xuXG5pbXBvcnQgeyBpc1BsYXRmb3JtQnJvd3NlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FzaS1kbXlwaWNrZXInLFxuICBob3N0OiB7ICdjbGFzcyc6ICdhc2ktY29tcG9uZW50IGFzaS1kbXlwaWNrZXInIH0sXG4gIHRlbXBsYXRlVXJsOiAnLi9hc2ktZG15cGlja2VyLmNvbXBvbmVudC5odG1sJyxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBBc2lEbXlQaWNrZXJDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWVcbiAgICB9XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgQXNpRG15UGlja2VyQ29tcG9uZW50IGV4dGVuZHMgRGVmYXVsdENvbnRyb2xWYWx1ZUFjY2Vzc29yIGltcGxlbWVudHMgT25Jbml0IHtcblxuICAvKiogTGFiZWwgdG8gZGlzcGxheSAoaXMgdHJhbnNsYXRlZCkgKi9cbiAgQElucHV0KCkgbGFiZWw6IHN0cmluZztcblxuICAvKiogTGFiZWwgcG9zaXRpb24gKi9cbiAgQElucHV0KCkgbGFiZWxQb3NpdGlvbjogJ3RvcCcgfCAnbGVmdCcgfCAncmlnaHQnIHwgJ2JvdHRvbScgfCAnYm90dG9tLWNlbnRlcicgfCAndG9wLWNlbnRlcicgPSAndG9wJztcblxuICAvKiogaGlkZSBkYXkgbGlzdCAqL1xuICBASW5wdXQoKSBkYXlIaWRkZW4gPSBmYWxzZTtcblxuICBkYXk6IG51bWJlcjtcbiAgbW9udGg6IE1vbnRoO1xuICB5ZWFyOiBudW1iZXI7XG5cbiAgZGF5TGFiZWw6IHN0cmluZztcbiAgbW9udGhMYWJlbDogc3RyaW5nO1xuICB5ZWFyTGFiZWw6IHN0cmluZztcblxuICBkYXlzOiBBcnJheTxOdW1iZXI+ID0gW107XG4gIG1vbnRoczogQXJyYXk8ZG15Q29uc3RhbnRzLk1vbnRoPiA9IFtdO1xuICB5ZWFyczogQXJyYXk8TnVtYmVyPiA9IFtdO1xuXG4gIGxhbmd1YWdlOiBhbnk7XG5cbiAgY29uc3RydWN0b3IoQEluamVjdChQTEFURk9STV9JRCkgcHJpdmF0ZSBwbGF0Zm9ybUlkOiBhbnksIHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMiwgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3ModGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdsYWJlbC0nICsgdGhpcy5sYWJlbFBvc2l0aW9uKTtcbiAgICBpZiAodGhpcy5pc0ZyKCkpIHtcbiAgICAgIHRoaXMubW9udGhzID0gZG15Q29uc3RhbnRzLm1vbnRoc19mcjtcbiAgICAgIHRoaXMuZGF5TGFiZWwgPSAnSm91cic7XG4gICAgICB0aGlzLm1vbnRoTGFiZWwgPSAnTW9pcyc7XG4gICAgICB0aGlzLnllYXJMYWJlbCA9ICdBbm5lZSc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubW9udGhzID0gZG15Q29uc3RhbnRzLm1vbnRoc19lbjtcbiAgICAgIHRoaXMuZGF5TGFiZWwgPSAnRGF5JztcbiAgICAgIHRoaXMubW9udGhMYWJlbCA9ICdNb250aCc7XG4gICAgICB0aGlzLnllYXJMYWJlbCA9ICdZZWFyJztcbiAgICB9XG4gICAgdGhpcy5pbml0RGF5cygpO1xuICAgIHRoaXMuaW5pdFllYXJzKCk7XG4gIH1cblxuICBwcml2YXRlIGlzRnIoKTogYm9vbGVhbiB7XG4gICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHtcbiAgICAgIHJldHVybiBuYXZpZ2F0b3IubGFuZ3VhZ2UgPT09ICdmcicgfHwgbmF2aWdhdG9yLmxhbmd1YWdlID09PSAnZnItRlInO1xuICAgIH0gZWxzZSB7XG5cbiAgICAgIGNvbnN0IHJlcXVlc3QgPSB0aGlzLmluamVjdG9yLmdldCgncmVxdWVzdCcpO1xuICAgICAgaWYgKHJlcXVlc3QgJiYgcmVxdWVzdC5hc2lOZ3Rvb2xzKSB7XG4gICAgICAgIGNvbnN0IGxhbmd1YWdlID0gcmVxdWVzdC5hc2lOZ3Rvb2xzLmxhbmd1YWdlO1xuICAgICAgICBpZiAobGFuZ3VhZ2UpIHtcbiAgICAgICAgICByZXR1cm4gbGFuZ3VhZ2Uuc3Vic3RyaW5nKDAsIDIpID09PSAnZnInO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgaW5pdERheXMoKSB7XG4gICAgbmgudGltZXMoMzEsICh0aW1lKSA9PiB7XG4gICAgICB0aGlzLmRheXMucHVzaCh0aW1lICsgMSk7XG4gICAgfSk7XG4gIH1cblxuICBpbml0WWVhcnMoKSB7XG4gICAgbGV0IHJlc3VsdHMgPSBuZXcgQXJyYXk8bnVtYmVyPigpO1xuICAgIGxldCBjdXJyZW50WWVhciA9IG5ldyBEYXRlKCkuZ2V0RnVsbFllYXIoKTtcbiAgICBmb3IgKGxldCB5ZWFyID0gY3VycmVudFllYXI7IHllYXIgPj0gMTkwMDsgeWVhci0tKSB7XG4gICAgICByZXN1bHRzLnB1c2goeWVhcik7XG4gICAgfVxuICAgIHRoaXMueWVhcnMgPSByZXN1bHRzO1xuICB9XG5cbiAgcHVibGljIG9uTW9udGhDaGFuZ2UobW9udGg6IE1vbnRoKTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZSA9IHsgZGF5OiB0aGlzLmRheSwgbW9udGg6IG1vbnRoICE9IG51bGwgPyBtb250aC5udW0gOiBudWxsLCB5ZWFyOiB0aGlzLnllYXIgfTtcbiAgfVxuXG4gIHB1YmxpYyBvblllYXJDaGFuZ2UoeWVhcjogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZSA9IHsgZGF5OiB0aGlzLmRheSwgbW9udGg6IHRoaXMubW9udGggIT0gbnVsbCA/IHRoaXMubW9udGgubnVtIDogbnVsbCwgeWVhcjogeWVhciB9O1xuICB9XG5cbiAgcHVibGljIG9uRGF5Q2hhbmdlKGRheTogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZSA9IHsgZGF5OiBkYXksIG1vbnRoOiB0aGlzLm1vbnRoICE9IG51bGwgPyB0aGlzLm1vbnRoLm51bSA6IG51bGwsIHllYXI6IHRoaXMueWVhciB9O1xuICB9XG5cbiAgLy8gQ29udHJvbGUgdmFsdWUgYWNjZXNzb3JcbiAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KSB7XG4gICAgaWYgKHZhbHVlICE9IG51bGwpIHtcbiAgICAgIHRoaXMuZGF5ID0gdmFsdWUuZGF5O1xuICAgICAgdGhpcy5tb250aCA9IHRoaXMuZ2V0TW9udEZyb21OdW0odmFsdWUubW9udGgpO1xuICAgICAgdGhpcy55ZWFyID0gdmFsdWUueWVhcjtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5kYXkgPSBudWxsO1xuICAgICAgdGhpcy5tb250aCA9IG51bGw7XG4gICAgICB0aGlzLnllYXIgPSBudWxsO1xuICAgIH1cbiAgICB0aGlzLl92YWx1ZSA9IHsgZGF5OiB0aGlzLmRheSwgbW9udGg6IHRoaXMubW9udGgsIHllYXI6IHRoaXMueWVhciB9O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRNb250RnJvbU51bShtb250aE51bTogbnVtYmVyKTogTW9udGgge1xuICAgIGlmIChtb250aE51bSA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIG5oLmZpbmQodGhpcy5tb250aHMsIChtb250aCkgPT4ge1xuICAgICAgcmV0dXJuIG1vbnRoLm51bSA9PT0gbW9udGhOdW07XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==