ngx-pluto
Version:
184 lines • 15.8 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { Component, ViewEncapsulation, Input, ViewChild, Output, EventEmitter } from "@angular/core";
import * as moment_ from 'moment';
/** @type {?} */
const moment = moment_;
import { NpDatePickerService } from "../date-picker.service";
import { NpDatePickerPopup } from "./date-picker-popup";
import { trigger, transition, style, animate } from "@angular/animations";
/**
* Date range picker popup组件
*/
export class NpDateRangePickerPopup {
/**
* @param {?} datePickerService
*/
constructor(datePickerService) {
this.datePickerService = datePickerService;
this.datePickerType = 'date-range-picker';
this.footerItems = [];
this.onStartDayClicked = new EventEmitter();
this.onEndDayClicked = new EventEmitter();
this.onItemLabelClicked = new EventEmitter();
this.nowDate = moment();
}
/**
* @return {?}
*/
ngOnInit() {
this.buildPicker();
setTimeout((/**
* @return {?}
*/
() => {
this.buildDayPanelStyle(moment(this.startDate));
}), 0);
}
/**
* @param {?} dayData
* @return {?}
*/
onStartPickerDayClicked(dayData) {
/** @type {?} */
let dates = this.buildStartAndEndDates();
this.onStartDayClicked.emit({ day: dayData, dates: dates });
}
/**
* @param {?} dayData
* @return {?}
*/
onEndPickerDayClicked(dayData) {
/** @type {?} */
let dates = this.buildStartAndEndDates();
this.onEndDayClicked.emit({ day: dayData, dates: dates });
}
/**
* @param {?} dayData
* @return {?}
*/
onStartPickerDayMouseover(dayData) {
this.buildDayPanelStyle(dayData.date);
}
/**
* @param {?} dayData
* @return {?}
*/
onEndPickerDayMouseover(dayData) {
this.buildDayPanelStyle(dayData.date);
}
/**
* @param {?} item
* @return {?}
*/
onFooterItemLabelClicked(item) {
this.onItemLabelClicked.emit(item);
}
/**
* @return {?}
*/
ngOnChanges() {
}
/**
* @private
* @param {?} date
* @return {?}
*/
buildDayPanelStyle(date) {
/** @type {?} */
let dates = this.buildStartAndEndDates();
this.startPicker.buildPanelForRangePicker(date, dates);
this.endPicker.buildPanelForRangePicker(date, dates);
}
/**
* @private
* @return {?}
*/
buildPicker() {
if (this.startPicker) {
this.startPicker.datePickerType = this.datePickerType;
}
if (this.endPicker) {
this.endPicker.datePickerType = this.datePickerType;
}
}
/**
* @private
* @return {?}
*/
buildStartAndEndDates() {
if (!this.datePickerService.isValid(this.startDate) || !this.datePickerService.isValid(this.endDate)) {
return [];
}
if (moment(this.startDate) < moment(this.endDate)) {
return [this.startDate, this.endDate];
}
return [this.endDate, this.startDate];
}
}
NpDateRangePickerPopup.decorators = [
{ type: Component, args: [{
selector: `np-date-range-picker-popup`,
template: "<div class=\"np-date-range-picker-popup-wrapper flex-wrap row-flex\">\r\n <np-date-picker-popup class=\"start-picker\" #startPicker [date]=\"startDate\" [footerItems]=\"footerItems\"\r\n (onItemLabelClicked)=\"onFooterItemLabelClicked($event)\" (onDayClicked)=\"onStartPickerDayClicked($event)\"\r\n (onDayMouseover)=\"onStartPickerDayMouseover($event)\">\r\n </np-date-picker-popup>\r\n <np-date-picker-popup class=\"end-picker\" #endPicker [date]=\"endDate\" (onDayClicked)=\"onEndPickerDayClicked($event)\"\r\n (onDayMouseover)=\"onEndPickerDayMouseover($event)\"></np-date-picker-popup>\r\n</div>\r\n",
encapsulation: ViewEncapsulation.None,
animations: [trigger('date-picker-animations', [
transition(':enter', [
style({ opacity: 0 }),
animate(300, style({ opacity: 1 })),
]),
transition(':leave', [
animate(300, style({ opacity: 0 })),
]),
])],
styles: [""]
}] }
];
/** @nocollapse */
NpDateRangePickerPopup.ctorParameters = () => [
{ type: NpDatePickerService }
];
NpDateRangePickerPopup.propDecorators = {
startDate: [{ type: Input }],
endDate: [{ type: Input }],
onStartDayClicked: [{ type: Output }],
onEndDayClicked: [{ type: Output }],
onItemLabelClicked: [{ type: Output }],
startPicker: [{ type: ViewChild, args: ['startPicker',] }],
endPicker: [{ type: ViewChild, args: ['endPicker',] }]
};
if (false) {
/** @type {?} */
NpDateRangePickerPopup.prototype.datePickerType;
/** @type {?} */
NpDateRangePickerPopup.prototype.footerItems;
/**
* 传入的第一个datepicker的时间,可以是moment实例,也可以是可转换为moment的字符串
* @type {?}
*/
NpDateRangePickerPopup.prototype.startDate;
/**
* 传入的第二个datepicker的时间,可以是moment实例,也可以是可转换为moment的字符串
* @type {?}
*/
NpDateRangePickerPopup.prototype.endDate;
/** @type {?} */
NpDateRangePickerPopup.prototype.onStartDayClicked;
/** @type {?} */
NpDateRangePickerPopup.prototype.onEndDayClicked;
/** @type {?} */
NpDateRangePickerPopup.prototype.onItemLabelClicked;
/** @type {?} */
NpDateRangePickerPopup.prototype.startPicker;
/** @type {?} */
NpDateRangePickerPopup.prototype.endPicker;
/** @type {?} */
NpDateRangePickerPopup.prototype.nowDate;
/**
* @type {?}
* @private
*/
NpDateRangePickerPopup.prototype.datePickerService;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1yYW5nZS1waWNrZXItcG9wdXAuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZ3gtcGx1dG8vIiwic291cmNlcyI6WyJsaWIvZGF0ZS1waWNrZXIvY29tcG9uZW50cy9kYXRlLXJhbmdlLXBpY2tlci1wb3B1cC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBVSxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0csT0FBTyxLQUFLLE9BQU8sTUFBTSxRQUFRLENBQUM7O01BQU8sTUFBTSxHQUFHLE9BQU87QUFDekQsT0FBTyxFQUFtQixtQkFBbUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRTlFLE9BQU8sRUFBRSxpQkFBaUIsRUFBa0IsTUFBTSxxQkFBcUIsQ0FBQztBQUN4RSxPQUFPLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7Ozs7QUFxQjFFLE1BQU0sT0FBTyxzQkFBc0I7Ozs7SUFzQmpDLFlBQW9CLGlCQUFzQztRQUF0QyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQXFCO1FBckIxRCxtQkFBYyxHQUFtQixtQkFBbUIsQ0FBQztRQUNyRCxnQkFBVyxHQUEyQixFQUFFLENBQUM7UUFXL0Isc0JBQWlCLEdBQUcsSUFBSSxZQUFZLEVBQW1FLENBQUM7UUFDeEcsb0JBQWUsR0FBRyxJQUFJLFlBQVksRUFBbUUsQ0FBQztRQUN0Ryx1QkFBa0IsR0FBRyxJQUFJLFlBQVksRUFBd0IsQ0FBQztRQUt4RSxZQUFPLEdBQUcsTUFBTSxFQUFFLENBQUM7SUFFMkMsQ0FBQzs7OztJQUUvRCxRQUFRO1FBQ04sSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBRW5CLFVBQVU7OztRQUFDLEdBQUcsRUFBRTtZQUNkLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsSUFB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Qzt3QkFDRixVQUFVLENBQUMsUUFBUSxFQUFFOzRCQUNuQixPQUFPLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO3lCQUNwQyxDQUFDO3FCQUNILENBQUMsQ0FBQzs7YUFDSjs7OztZQXRCeUIsbUJBQW1COzs7d0JBK0IxQyxLQUFLO3NCQUlMLEtBQUs7Z0NBRUwsTUFBTTs4QkFDTixNQUFNO2lDQUNOLE1BQU07MEJBRU4sU0FBUyxTQUFDLGFBQWE7d0JBQ3ZCLFNBQVMsU0FBQyxXQUFXOzs7O0lBakJ0QixnREFBcUQ7O0lBQ3JELDZDQUF5Qzs7Ozs7SUFLekMsMkNBQXdCOzs7OztJQUl4Qix5Q0FBc0I7O0lBRXRCLG1EQUFrSDs7SUFDbEgsaURBQWdIOztJQUNoSCxvREFBd0U7O0lBRXhFLDZDQUF5RDs7SUFDekQsMkNBQXFEOztJQUVyRCx5Q0FBbUI7Ozs7O0lBRVAsbURBQThDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBWaWV3RW5jYXBzdWxhdGlvbiwgT25Jbml0LCBJbnB1dCwgVmlld0NoaWxkLCBPdXRwdXQsIEV2ZW50RW1pdHRlciB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCAqIGFzIG1vbWVudF8gZnJvbSAnbW9tZW50JzsgY29uc3QgbW9tZW50ID0gbW9tZW50X1xyXG5pbXBvcnQgeyBEYXlEYXRhUGVyTW9udGgsIE5wRGF0ZVBpY2tlclNlcnZpY2UgfSBmcm9tIFwiLi4vZGF0ZS1waWNrZXIuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBEYXRlUGlja2VyRm9vdGVySXRlbSB9IGZyb20gXCIuL2RhdGUtcGlja2VyLWZvb3RlclwiO1xyXG5pbXBvcnQgeyBOcERhdGVQaWNrZXJQb3B1cCwgRGF0ZVBpY2tlclR5cGUgfSBmcm9tIFwiLi9kYXRlLXBpY2tlci1wb3B1cFwiO1xyXG5pbXBvcnQgeyB0cmlnZ2VyLCB0cmFuc2l0aW9uLCBzdHlsZSwgYW5pbWF0ZSB9IGZyb20gXCJAYW5ndWxhci9hbmltYXRpb25zXCI7XHJcblxyXG4vKipcclxuICogRGF0ZSByYW5nZSBwaWNrZXIgcG9wdXDnu4Tku7ZcclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBgbnAtZGF0ZS1yYW5nZS1waWNrZXItcG9wdXBgLFxyXG4gIHRlbXBsYXRlVXJsOiAnZGF0ZS1yYW5nZS1waWNrZXItcG9wdXAuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJ2RhdGUtcmFuZ2UtcGlja2VyLXBvcHVwLnNjc3MnXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG4gIGFuaW1hdGlvbnM6IFt0cmlnZ2VyKCdkYXRlLXBpY2tlci1hbmltYXRpb25zJywgW1xyXG4gICAgdHJhbnNpdGlvbignOmVudGVyJywgW1xyXG4gICAgICBzdHlsZSh7IG9wYWNpdHk6IDAgfSksXHJcbiAgICAgIGFuaW1hdGUoMzAwLCBzdHlsZSh7IG9wYWNpdHk6IDEgfSkpLFxyXG4gICAgXSksXHJcbiAgICB0cmFuc2l0aW9uKCc6bGVhdmUnLCBbXHJcbiAgICAgIGFuaW1hdGUoMzAwLCBzdHlsZSh7IG9wYWNpdHk6IDAgfSkpLFxyXG4gICAgXSksXHJcbiAgXSldXHJcbn0pXHJcblxyXG5leHBvcnQgY2xhc3MgTnBEYXRlUmFuZ2VQaWNrZXJQb3B1cCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgZGF0ZVBpY2tlclR5cGU6IERhdGVQaWNrZXJUeXBlID0gJ2RhdGUtcmFuZ2UtcGlja2VyJztcclxuICBmb290ZXJJdGVtczogRGF0ZVBpY2tlckZvb3Rlckl0ZW1bXSA9IFtdO1xyXG5cclxuICAvKipcclxuICAgKiDkvKDlhaXnmoTnrKzkuIDkuKpkYXRlcGlja2Vy55qE5pe26Ze077yM5Y+v5Lul5pivbW9tZW505a6e5L6L77yM5Lmf5Y+v5Lul5piv5Y+v6L2s5o2i5Li6bW9tZW5055qE5a2X56ym5LiyXHJcbiAgICovXHJcbiAgQElucHV0KCkgc3RhcnREYXRlOiBhbnk7XHJcbiAgLyoqXHJcbiAgICog5Lyg5YWl55qE56ys5LqM5LiqZGF0ZXBpY2tlcueahOaXtumXtO+8jOWPr+S7peaYr21vbWVudOWunuS+i++8jOS5n+WPr+S7peaYr+WPr+i9rOaNouS4um1vbWVudOeahOWtl+espuS4slxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIGVuZERhdGU6IGFueTtcclxuXHJcbiAgQE91dHB1dCgpIG9uU3RhcnREYXlDbGlja2VkID0gbmV3IEV2ZW50RW1pdHRlcjx7IGRheTogRGF5RGF0YVBlck1vbnRoLCBkYXRlczogQXJyYXk8bW9tZW50Xy5Nb21lbnQgfCBzdHJpbmc+IH0+KCk7XHJcbiAgQE91dHB1dCgpIG9uRW5kRGF5Q2xpY2tlZCA9IG5ldyBFdmVudEVtaXR0ZXI8eyBkYXk6IERheURhdGFQZXJNb250aCwgZGF0ZXM6IEFycmF5PG1vbWVudF8uTW9tZW50IHwgc3RyaW5nPiB9PigpO1xyXG4gIEBPdXRwdXQoKSBvbkl0ZW1MYWJlbENsaWNrZWQgPSBuZXcgRXZlbnRFbWl0dGVyPERhdGVQaWNrZXJGb290ZXJJdGVtPigpO1xyXG5cclxuICBAVmlld0NoaWxkKCdzdGFydFBpY2tlcicpIHN0YXJ0UGlja2VyOiBOcERhdGVQaWNrZXJQb3B1cDtcclxuICBAVmlld0NoaWxkKCdlbmRQaWNrZXInKSBlbmRQaWNrZXI6IE5wRGF0ZVBpY2tlclBvcHVwO1xyXG5cclxuICBub3dEYXRlID0gbW9tZW50KCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZGF0ZVBpY2tlclNlcnZpY2U6IE5wRGF0ZVBpY2tlclNlcnZpY2UpIHsgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuYnVpbGRQaWNrZXIoKTtcclxuXHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5idWlsZERheVBhbmVsU3R5bGUobW9tZW50KHRoaXMuc3RhcnREYXRlKSk7XHJcbiAgICB9LCAwKTtcclxuICB9XHJcblxyXG4gIG9uU3RhcnRQaWNrZXJEYXlDbGlja2VkKGRheURhdGE6IERheURhdGFQZXJNb250aCkge1xyXG4gICAgbGV0IGRhdGVzID0gdGhpcy5idWlsZFN0YXJ0QW5kRW5kRGF0ZXMoKTtcclxuICAgIHRoaXMub25TdGFydERheUNsaWNrZWQuZW1pdCh7IGRheTogZGF5RGF0YSwgZGF0ZXM6IGRhdGVzIH0pO1xyXG4gIH1cclxuXHJcbiAgb25FbmRQaWNrZXJEYXlDbGlja2VkKGRheURhdGE6IERheURhdGFQZXJNb250aCkge1xyXG4gICAgbGV0IGRhdGVzID0gdGhpcy5idWlsZFN0YXJ0QW5kRW5kRGF0ZXMoKTtcclxuICAgIHRoaXMub25FbmREYXlDbGlja2VkLmVtaXQoeyBkYXk6IGRheURhdGEsIGRhdGVzOiBkYXRlcyB9KTtcclxuICB9XHJcblxyXG4gIG9uU3RhcnRQaWNrZXJEYXlNb3VzZW92ZXIoZGF5RGF0YTogRGF5RGF0YVBlck1vbnRoKSB7XHJcbiAgICB0aGlzLmJ1aWxkRGF5UGFuZWxTdHlsZShkYXlEYXRhLmRhdGUpO1xyXG4gIH1cclxuXHJcbiAgb25FbmRQaWNrZXJEYXlNb3VzZW92ZXIoZGF5RGF0YTogRGF5RGF0YVBlck1vbnRoKSB7XHJcbiAgICB0aGlzLmJ1aWxkRGF5UGFuZWxTdHlsZShkYXlEYXRhLmRhdGUpO1xyXG4gIH1cclxuXHJcbiAgb25Gb290ZXJJdGVtTGFiZWxDbGlja2VkKGl0ZW06IERhdGVQaWNrZXJGb290ZXJJdGVtKSB7XHJcbiAgICB0aGlzLm9uSXRlbUxhYmVsQ2xpY2tlZC5lbWl0KGl0ZW0pO1xyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoKSB7XHJcblxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBidWlsZERheVBhbmVsU3R5bGUoZGF0ZTogbW9tZW50Xy5Nb21lbnQpIHtcclxuICAgIGxldCBkYXRlcyA9IHRoaXMuYnVpbGRTdGFydEFuZEVuZERhdGVzKCk7XHJcbiAgICB0aGlzLnN0YXJ0UGlja2VyLmJ1aWxkUGFuZWxGb3JSYW5nZVBpY2tlcihkYXRlLCBkYXRlcyk7XHJcbiAgICB0aGlzLmVuZFBpY2tlci5idWlsZFBhbmVsRm9yUmFuZ2VQaWNrZXIoZGF0ZSwgZGF0ZXMpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBidWlsZFBpY2tlcigpIHtcclxuICAgIGlmICh0aGlzLnN0YXJ0UGlja2VyKSB7XHJcbiAgICAgIHRoaXMuc3RhcnRQaWNrZXIuZGF0ZVBpY2tlclR5cGUgPSB0aGlzLmRhdGVQaWNrZXJUeXBlO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmVuZFBpY2tlcikge1xyXG4gICAgICB0aGlzLmVuZFBpY2tlci5kYXRlUGlja2VyVHlwZSA9IHRoaXMuZGF0ZVBpY2tlclR5cGU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGJ1aWxkU3RhcnRBbmRFbmREYXRlcygpIHtcclxuICAgIGlmICghdGhpcy5kYXRlUGlja2VyU2VydmljZS5pc1ZhbGlkKHRoaXMuc3RhcnREYXRlKSB8fCAhdGhpcy5kYXRlUGlja2VyU2VydmljZS5pc1ZhbGlkKHRoaXMuZW5kRGF0ZSkpIHtcclxuICAgICAgcmV0dXJuIFtdO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChtb21lbnQodGhpcy5zdGFydERhdGUpIDwgbW9tZW50KHRoaXMuZW5kRGF0ZSkpIHtcclxuICAgICAgcmV0dXJuIFt0aGlzLnN0YXJ0RGF0ZSwgdGhpcy5lbmREYXRlXTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gW3RoaXMuZW5kRGF0ZSwgdGhpcy5zdGFydERhdGVdO1xyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IHR5cGUgRGF0ZVJhbmdlUGlja2VyVHlwZSA9ICdkYXRlLXJhbmdlLXBpY2tlcicgfCAnZGF0ZXRpbWUtcmFuZ2UtcGlja2VyJzsiXX0=