ng-zorro-antd-mobile
Version:
An enterprise-class mobile UI components based on Ant Design and Angular
242 lines • 21.8 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { Component, ViewEncapsulation, HostBinding, Input, ElementRef } from '@angular/core';
import { DateModels } from '../date/DataTypes';
export class CalendarSingleMonthComponent {
/**
* @param {?} _elementRef
*/
constructor(_elementRef) {
this._elementRef = _elementRef;
this.props = (/** @type {?} */ ({
rowSize: 'normal'
}));
this.state = {
weekComponents: []
};
this.singleMonth = true;
this.genWeek = (/**
* @param {?} weeksData
* @param {?} index
* @return {?}
*/
(weeksData, index) => {
const { getDateExtra, monthData, onCellClick, locale, rowSize } = this.props;
/** @type {?} */
let rowCls = 'row';
/** @type {?} */
let weeksDataList = [];
if (rowSize === 'xl') {
rowCls += ' row-xl';
}
weeksData.forEach((/**
* @param {?} day
* @param {?} dayOfWeek
* @return {?}
*/
(day, dayOfWeek) => {
/** @type {?} */
const extra = (getDateExtra && getDateExtra(new Date(day.tick))) || {};
/** @type {?} */
let info = extra.info;
/** @type {?} */
const disable = extra.disable || day.outOfDate;
/** @type {?} */
let cls = 'date';
/** @type {?} */
let lCls = 'left';
/** @type {?} */
let rCls = 'right';
/** @type {?} */
let infoCls = 'info';
if (dayOfWeek === 0 || dayOfWeek === 6) {
cls += ' grey';
}
if (disable) {
cls += ' disable';
}
else if (info) {
cls += ' important';
}
if (day.selected) {
cls += ' date-selected';
/** @type {?} */
let styleType = day.selected;
switch (styleType) {
case DateModels.SelectType.Only:
info = locale.begin;
infoCls += ' date-selected';
break;
case DateModels.SelectType.All:
info = locale.begin_over;
infoCls += ' date-selected';
break;
case DateModels.SelectType.Start:
info = locale.begin;
infoCls += ' date-selected';
if (dayOfWeek === 6 || day.isLastOfMonth) {
styleType = DateModels.SelectType.All;
}
break;
case DateModels.SelectType.Middle:
if (dayOfWeek === 0 || day.isFirstOfMonth) {
if (day.isLastOfMonth || dayOfWeek === 6) {
styleType = DateModels.SelectType.All;
}
else {
styleType = DateModels.SelectType.Start;
}
}
else if (dayOfWeek === 6 || day.isLastOfMonth) {
styleType = DateModels.SelectType.End;
}
break;
case DateModels.SelectType.End:
info = locale.over;
infoCls += ' date-selected';
if (dayOfWeek === 0 || day.isFirstOfMonth) {
styleType = DateModels.SelectType.All;
}
break;
}
switch (styleType) {
case DateModels.SelectType.Single:
case DateModels.SelectType.Only:
case DateModels.SelectType.All:
cls += ' selected-single';
break;
case DateModels.SelectType.Start:
cls += ' selected-start';
rCls += ' date-selected';
break;
case DateModels.SelectType.Middle:
cls += ' selected-middle';
lCls += ' date-selected';
rCls += ' date-selected';
break;
case DateModels.SelectType.End:
cls += ' selected-end';
lCls += ' date-selected';
break;
}
}
weeksDataList[dayOfWeek] = {
lCls,
cls,
day,
rCls,
infoCls,
info,
extra,
disable,
onCellClick: onCellClick,
monthData
};
}));
this.state.weekComponents[index] = {
index: index,
rowCls,
weeksDataList
};
});
this.updateWeeks = (/**
* @param {?=} monthData
* @return {?}
*/
(monthData) => {
(monthData || this.props.monthData).weeks.forEach((/**
* @param {?} week
* @param {?} index
* @return {?}
*/
(week, index) => {
this.genWeek(week, index);
}));
});
this.setWarpper = (/**
* @param {?} dom
* @return {?}
*/
(dom) => {
this.wrapperDivDOM = dom;
});
}
/**
* @param {?} value
* @return {?}
*/
set data(value) {
this.props = Object.assign({}, this.props, value);
}
/**
* @param {?} item
* @return {?}
*/
onClickCell(item) {
if (!item.disable && item.onCellClick) {
item.onCellClick(item.day, item.monthData);
}
}
/**
* @return {?}
*/
ngOnInit() {
this.setWarpper(this._elementRef.nativeElement);
this.props.monthData.weeks.forEach((/**
* @param {?} week
* @param {?} index
* @return {?}
*/
(week, index) => {
this.genWeek(week, index);
}));
}
/**
* @return {?}
*/
ngAfterViewInit() {
this.ref = this.props.ref;
this.ref(this);
}
}
CalendarSingleMonthComponent.decorators = [
{ type: Component, args: [{
selector: 'CalendarSingleMonth, nzm-single-month',
template: "<div class=\"month-title\">\n {{ props.monthData.title }}\n</div>\n<div class=\"date\">\n <div *ngFor=\"let row of state.weekComponents; let i = index\" [ngClass]=\"row.rowCls\">\n <div\n *ngFor=\"let cell of row.weeksDataList; let j = index\"\n class=\"{{ 'cell ' + ((row.extra && row.extra.cellCls) || '') }}\"\n (click)=\"onClickCell(cell)\"\n >\n <div *ngIf=\"row.extra && row.extra.cellRender\">test</div>\n <div *ngIf=\"!row.extra || (row.extra && row.extra.cellRender)\" class=\"date-wrapper\">\n <span [ngClass]=\"cell.lCls\"></span>\n <div [ngClass]=\"cell.cls\">\n {{ (cell.day && cell.day.dayOfMonth) || '' }}\n </div>\n <span [ngClass]=\"cell.rCls\"></span>\n </div>\n <div *ngIf=\"!row.extra || (row.extra && row.extra.cellRender)\" [ngClass]=\"cell.infoCls\">\n {{ cell.info }}\n </div>\n </div>\n </div>\n</div>\n",
encapsulation: ViewEncapsulation.None
}] }
];
/** @nocollapse */
CalendarSingleMonthComponent.ctorParameters = () => [
{ type: ElementRef }
];
CalendarSingleMonthComponent.propDecorators = {
data: [{ type: Input }],
singleMonth: [{ type: HostBinding, args: ['class.single-month',] }]
};
if (false) {
/** @type {?} */
CalendarSingleMonthComponent.prototype.props;
/** @type {?} */
CalendarSingleMonthComponent.prototype.state;
/** @type {?} */
CalendarSingleMonthComponent.prototype.ref;
/** @type {?} */
CalendarSingleMonthComponent.prototype.wrapperDivDOM;
/** @type {?} */
CalendarSingleMonthComponent.prototype.singleMonth;
/** @type {?} */
CalendarSingleMonthComponent.prototype.genWeek;
/** @type {?} */
CalendarSingleMonthComponent.prototype.updateWeeks;
/** @type {?} */
CalendarSingleMonthComponent.prototype.setWarpper;
/**
* @type {?}
* @private
*/
CalendarSingleMonthComponent.prototype._elementRef;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2luZ2xlLW1vbnRoLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25nLXpvcnJvLWFudGQtbW9iaWxlLyIsInNvdXJjZXMiOlsiY2FsZW5kYXIvc2luZ2xlLW1vbnRoL3NpbmdsZS1tb250aC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsaUJBQWlCLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQ3BILE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQVEvQyxNQUFNLE9BQU8sNEJBQTRCOzs7O0lBcUJ2QyxZQUFvQixXQUF1QjtRQUF2QixnQkFBVyxHQUFYLFdBQVcsQ0FBWTtRQXBCM0MsVUFBSyxHQUFHLG1CQUFBO1lBQ04sT0FBTyxFQUFFLFFBQVE7U0FDbEIsRUFBZ0MsQ0FBQztRQUVsQyxVQUFLLEdBQUc7WUFDTixjQUFjLEVBQUUsRUFBRTtTQUNuQixDQUFDO1FBWWlDLGdCQUFXLEdBQVksSUFBSSxDQUFDO1FBSS9ELFlBQU87Ozs7O1FBQUcsQ0FBQyxTQUFnQyxFQUFFLEtBQWEsRUFBRSxFQUFFO2tCQUN0RCxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSzs7Z0JBQ3hFLE1BQU0sR0FBRyxLQUFLOztnQkFDZCxhQUFhLEdBQUcsRUFBRTtZQUN0QixJQUFJLE9BQU8sS0FBSyxJQUFJLEVBQUU7Z0JBQ3BCLE1BQU0sSUFBSSxTQUFTLENBQUM7YUFDckI7WUFFRCxTQUFTLENBQUMsT0FBTzs7Ozs7WUFBQyxDQUFDLEdBQUcsRUFBRSxTQUFTLEVBQUUsRUFBRTs7c0JBQzdCLEtBQUssR0FBRyxDQUFDLFlBQVksSUFBSSxZQUFZLENBQUMsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMs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SUM7O0lBRUQsa0RBRUM7Ozs7O0lBekhXLG1EQUErQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBWaWV3RW5jYXBzdWxhdGlvbiwgSG9zdEJpbmRpbmcsIElucHV0LCBFbGVtZW50UmVmLCBBZnRlclZpZXdJbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEYXRlTW9kZWxzIH0gZnJvbSAnLi4vZGF0ZS9EYXRhVHlwZXMnO1xuaW1wb3J0IHsgQ2FsZW5kYXJTaW5nbGVNb250aFByb3BzVHlwZSB9IGZyb20gJy4vUHJvcHNUeXBlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnQ2FsZW5kYXJTaW5nbGVNb250aCwgbnptLXNpbmdsZS1tb250aCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9zaW5nbGUtbW9udGguY29tcG9uZW50Lmh0bWwnLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuZXhwb3J0IGNsYXNzIENhbGVuZGFyU2luZ2xlTW9udGhDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQge1xuICBwcm9wcyA9IHtcbiAgICByb3dTaXplOiAnbm9ybWFsJ1xuICB9IGFzIENhbGVuZGFyU2luZ2xlTW9udGhQcm9wc1R5cGU7XG5cbiAgc3RhdGUgPSB7XG4gICAgd2Vla0NvbXBvbmVudHM6IFtdXG4gIH07XG4gIHJlZjogKGRvbSkgPT4gdm9pZDtcbiAgd3JhcHBlckRpdkRPTTogSFRNTERpdkVsZW1lbnQgfCBudWxsO1xuXG4gIEBJbnB1dCgpXG4gIHNldCBkYXRhKHZhbHVlKSB7XG4gICAgdGhpcy5wcm9wcyA9IHtcbiAgICAgIC4uLnRoaXMucHJvcHMsXG4gICAgICAuLi52YWx1ZVxuICAgIH07XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnNpbmdsZS1tb250aCcpIHNpbmdsZU1vbnRoOiBib29sZWFuID0gdHJ1ZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9lbGVtZW50UmVmOiBFbGVtZW50UmVmKSB7fVxuXG4gIGdlbldlZWsgPSAod2Vla3NEYXRhOiBEYXRlTW9kZWxzLkNlbGxEYXRhW10sIGluZGV4OiBudW1iZXIpID0+IHtcbiAgICBjb25zdCB7IGdldERhdGVFeHRyYSwgbW9udGhEYXRhLCBvbkNlbGxDbGljaywgbG9jYWxlLCByb3dTaXplIH0gPSB0aGlzLnByb3BzO1xuICAgIGxldCByb3dDbHMgPSAncm93JztcbiAgICBsZXQgd2Vla3NEYXRhTGlzdCA9IFtdO1xuICAgIGlmIChyb3dTaXplID09PSAneGwnKSB7XG4gICAgICByb3dDbHMgKz0gJyByb3cteGwnO1xuICAgIH1cblxuICAgIHdlZWtzRGF0YS5mb3JFYWNoKChkYXksIGRheU9mV2VlaykgPT4ge1xuICAgICAgY29uc3QgZXh0cmEgPSAoZ2V0RGF0ZUV4dHJhICYmIGdldERhdGVFeHRyYShuZXcgRGF0ZShkYXkudGljaykpKSB8fCB7fTtcbiAgICAgIGxldCBpbmZvID0gZXh0cmEuaW5mbztcbiAgICAgIGNvbnN0IGRpc2FibGUgPSBleHRyYS5kaXNhYmxlIHx8IGRheS5vdXRPZkRhdGU7XG5cbiAgICAgIGxldCBjbHMgPSAnZGF0ZSc7XG4gICAgICBsZXQgbENscyA9ICdsZWZ0JztcbiAgICAgIGxldCByQ2xzID0gJ3JpZ2h0JztcbiAgICAgIGxldCBpbmZvQ2xzID0gJ2luZm8nO1xuXG4gICAgICBpZiAoZGF5T2ZXZWVrID09PSAwIHx8IGRheU9mV2VlayA9PT0gNikge1xuICAgICAgICBjbHMgKz0gJyBncmV5JztcbiAgICAgIH1cblxuICAgICAgaWYgKGRpc2FibGUpIHtcbiAgICAgICAgY2xzICs9ICcgZGlzYWJsZSc7XG4gICAgICB9IGVsc2UgaWYgKGluZm8pIHtcbiAgICAgICAgY2xzICs9ICcgaW1wb3J0YW50JztcbiAgICAgIH1cblxuICAgICAgaWYgKGRheS5zZWxlY3RlZCkge1xuICAgICAgICBjbHMgKz0gJyBkYXRlLXNlbGVjdGVkJztcbiAgICAgICAgbGV0IHN0eWxlVHlwZSA9IGRheS5zZWxlY3RlZDtcbiAgICAgICAgc3dpdGNoIChzdHlsZVR5cGUpIHtcbiAgICAgICAgICBjYXNlIERhdGVNb2RlbHMuU2VsZWN0VHlwZS5Pbmx5OlxuICAgICAgICAgICAgaW5mbyA9IGxvY2FsZS5iZWdpbjtcbiAgICAgICAgICAgIGluZm9DbHMgKz0gJyBkYXRlLXNlbGVjdGVkJztcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgRGF0ZU1vZGVscy5TZWxlY3RUeXBlLkFsbDpcbiAgICAgICAgICAgIGluZm8gPSBsb2NhbGUuYmVnaW5fb3ZlcjtcbiAgICAgICAgICAgIGluZm9DbHMgKz0gJyBkYXRlLXNlbGVjdGVkJztcbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgY2FzZSBEYXRlTW9kZWxzLlNlbGVjdFR5cGUuU3RhcnQ6XG4gICAgICAgICAgICBpbmZvID0gbG9jYWxlLmJlZ2luO1xuICAgICAgICAgICAgaW5mb0NscyArPSAnIGRhdGUtc2VsZWN0ZWQnO1xuICAgICAgICAgICAgaWYgKGRheU9mV2VlayA9PT0gNiB8fCBkYXkuaXNMYXN0T2ZNb250aCkge1xuICAgICAgICAgICAgICBzdHlsZVR5cGUgPSBEYXRlTW9kZWxzLlNlbGVjdFR5cGUuQWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSBEYXRlTW9kZWxzLlNlbGVjdFR5cGUuTWlkZGxlOlxuICAgICAgICAgICAgaWYgKGRheU9mV2VlayA9PT0gMCB8fCBkYXkuaXNGaXJzdE9mTW9udGgpIHtcbiAgICAgICAgICAgICAgaWYgKGRheS5pc0xhc3RPZk1vbnRoIHx8IGRheU9mV2VlayA9PT0gNikge1xuICAgICAgICAgICAgICAgIHN0eWxlVHlwZSA9IERhdGVNb2RlbHMuU2VsZWN0VHlwZS5BbGw7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgc3R5bGVUeXBlID0gRGF0ZU1vZGVscy5TZWxlY3RUeXBlLlN0YXJ0O1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGRheU9mV2VlayA9PT0gNiB8fCBkYXkuaXNMYXN0T2ZNb250aCkge1xuICAgICAgICAgICAgICBzdHlsZVR5cGUgPSBEYXRlTW9kZWxzLlNlbGVjdFR5cGUuRW5kO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSBEYXRlTW9kZWxzLlNlbGVjdFR5cGUuRW5kOlxuICAgICAgICAgICAgaW5mbyA9IGxvY2FsZS5vdmVyO1xuICAgICAgICAgICAgaW5mb0NscyArPSAnIGRhdGUtc2VsZWN0ZWQnO1xuICAgICAgICAgICAgaWYgKGRheU9mV2VlayA9PT0gMCB8fCBkYXkuaXNGaXJzdE9mTW9udGgpIHtcbiAgICAgICAgICAgICAgc3R5bGVUeXBlID0gRGF0ZU1vZGVscy5TZWxlY3RUeXBlLkFsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgc3dpdGNoIChzdHlsZVR5cGUpIHtcbiAgICAgICAgICBjYXNlIERhdGVNb2RlbHMuU2VsZWN0VHlwZS5TaW5nbGU6XG4gICAgICAgICAgY2FzZSBEYXRlTW9kZWxzLlNlbGVjdFR5cGUuT25seTpcbiAgICAgICAgICBjYXNlIERhdGVNb2RlbHMuU2VsZWN0VHlwZS5BbGw6XG4gICAgICAgICAgICBjbHMgKz0gJyBzZWxlY3RlZC1zaW5nbGUnO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSBEYXRlTW9kZWxzLlNlbGVjdFR5cGUuU3RhcnQ6XG4gICAgICAgICAgICBjbHMgKz0gJyBzZWxlY3RlZC1zdGFydCc7XG4gICAgICAgICAgICByQ2xzICs9ICcgZGF0ZS1zZWxlY3RlZCc7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIERhdGVNb2RlbHMuU2VsZWN0VHlwZS5NaWRkbGU6XG4gICAgICAgICAgICBjbHMgKz0gJyBzZWxlY3RlZC1taWRkbGUnO1xuICAgICAgICAgICAgbENscyArPSAnIGRhdGUtc2VsZWN0ZWQnO1xuICAgICAgICAgICAgckNscyArPSAnIGRhdGUtc2VsZWN0ZWQnO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSBEYXRlTW9kZWxzLlNlbGVjdFR5cGUuRW5kOlxuICAgICAgICAgICAgY2xzICs9ICcgc2VsZWN0ZWQtZW5kJztcbiAgICAgICAgICAgIGxDbHMgKz0gJyBkYXRlLXNlbGVjdGVkJztcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHdlZWtzRGF0YUxpc3RbZGF5T2ZXZWVrXSA9IHtcbiAgICAgICAgbENscyxcbiAgICAgICAgY2xzLFxuICAgICAgICBkYXksXG4gICAgICAgIHJDbHMsXG4gICAgICAgIGluZm9DbHMsXG4gICAgICAgIGluZm8sXG4gICAgICAgIGV4dHJhLFxuICAgICAgICBkaXNhYmxlLFxuICAgICAgICBvbkNlbGxDbGljazogb25DZWxsQ2xpY2ssXG4gICAgICAgIG1vbnRoRGF0YVxuICAgICAgfTtcbiAgICB9KTtcblxuICAgIHRoaXMuc3RhdGUud2Vla0NvbXBvbmVudHNbaW5kZXhdID0ge1xuICAgICAgaW5kZXg6IGluZGV4LFxuICAgICAgcm93Q2xzLFxuICAgICAgd2Vla3NEYXRhTGlzdFxuICAgIH07XG4gIH1cblxuICB1cGRhdGVXZWVrcyA9IChtb250aERhdGE/OiBEYXRlTW9kZWxzLk1vbnRoRGF0YSkgPT4ge1xuICAgIChtb250aERhdGEgfHwgdGhpcy5wcm9wcy5tb250aERhdGEpLndlZWtzLmZvckVhY2goKHdlZWssIGluZGV4KSA9PiB7XG4gICAgICB0aGlzLmdlbldlZWsod2VlaywgaW5kZXgpO1xuICAgIH0pO1xuICB9XG5cbiAgc2V0V2FycHBlciA9IChkb206IEhUTUxEaXZFbGVtZW50KSA9PiB7XG4gICAgdGhpcy53cmFwcGVyRGl2RE9NID0gZG9tO1xuICB9XG5cbiAgb25DbGlja0NlbGwoaXRlbSkge1xuICAgIGlmICghaXRlbS5kaXNhYmxlICYmIGl0ZW0ub25DZWxsQ2xpY2spIHtcbiAgICAgIGl0ZW0ub25DZWxsQ2xpY2soaXRlbS5kYXksIGl0ZW0ubW9udGhEYXRhKTtcbiAgICB9XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnNldFdhcnBwZXIodGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KTtcbiAgICB0aGlzLnByb3BzLm1vbnRoRGF0YS53ZWVrcy5mb3JFYWNoKCh3ZWVrLCBpbmRleCkgPT4ge1xuICAgICAgdGhpcy5nZW5XZWVrKHdlZWssIGluZGV4KTtcbiAgICB9KTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICB0aGlzLnJlZiA9IHRoaXMucHJvcHMucmVmO1xuICAgIHRoaXMucmVmKHRoaXMpO1xuICB9XG59XG4iXX0=