react-application-core
Version:
A react-based application core for the business applications.
193 lines • 8.03 kB
JavaScript
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) {
extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
return extendStatics(d, b);
};
return function (d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
var __assign = (this && this.__assign) || function () {
__assign = Object.assign || function(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p];
}
return t;
};
return __assign.apply(this, arguments);
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.Calendar = void 0;
var React = require("react");
var generic_component_1 = require("../base/generic.component");
var definition_1 = require("../../definition");
var grid_component_1 = require("../grid/grid.component");
var util_1 = require("../../util");
/**
* @component-impl
* @stable [29.12.2020]
*/
var Calendar = /** @class */ (function (_super) {
__extends(Calendar, _super);
/**
* @stable [29.12.2020]
* @param originalProps
*/
function Calendar(originalProps) {
var _this = _super.call(this, originalProps) || this;
_this.getCellElement = _this.getCellElement.bind(_this);
_this.getColumnClassName = _this.getColumnClassName.bind(_this);
_this.onClick = _this.onClick.bind(_this);
return _this;
}
/**
* @stable [29.12.2020]
*/
Calendar.prototype.render = function () {
var _this = this;
var _a = this.originalProps, className = _a.className, _b = _a.gridConfiguration, gridConfiguration = _b === void 0 ? {} : _b;
var itemConfiguration = gridConfiguration.itemConfiguration;
var $calendarEntity = this.calendarEntity;
var listEntity = __assign(__assign({}, definition_1.INITIAL_REDUX_LIST_ENTITY), { data: $calendarEntity.days });
var columns = $calendarEntity
.daysLabels
.map(function (day, index) { return ({
align: 'center',
columnClassName: _this.getColumnClassName,
headerRenderer: function (column) { return _this.getTitleElement($calendarEntity, column); },
index: index,
onColumnContentClick: _this.onClick,
renderer: _this.getCellElement,
title: day,
}); });
return (React.createElement(grid_component_1.Grid, __assign({ headerRendered: false }, gridConfiguration, { itemConfiguration: __assign(__assign({}, itemConfiguration), { highlightOdd: false, hovered: false }), columnsConfiguration: columns, className: util_1.ClsUtils.joinClassName(definition_1.CalendarClassesEnum.CALENDAR, util_1.CalcUtils.calc(gridConfiguration.className), util_1.CalcUtils.calc(className)) }, listEntity)));
};
/**
* @stable [29.12.2020]
* @param payload
* @private
*/
Calendar.prototype.getColumnClassName = function (payload) {
var entity = this.asCalendarDayEntity(payload);
var isDaySelected = this.isDaySelected(entity);
var isFirstSelectedDay = this.isFirstSelectedDay(entity);
var isLastSelectedDay = this.isLastSelectedDay(entity);
var isMiddleSelectedDay = this.isMiddleSelectedDay(entity);
return util_1.ClsUtils.joinClassName(entity.current && definition_1.CalendarClassesEnum.CURRENT_DAY, entity.today && definition_1.CalendarClassesEnum.TODAY, isDaySelected && definition_1.CalendarClassesEnum.SELECTED_DAY, !isDaySelected && !entity.today && definition_1.CalendarClassesEnum.BASIC_DAY, isFirstSelectedDay && definition_1.CalendarClassesEnum.FIRST_SELECTED_DAY, isMiddleSelectedDay && definition_1.CalendarClassesEnum.MIDDLE_SELECTED_DAY, isLastSelectedDay && definition_1.CalendarClassesEnum.LAST_SELECTED_DAY);
};
/**
* @stable [29.12.2020]
* @param entity
* @private
*/
Calendar.prototype.isDaySelected = function (entity) {
var _a = this.originalProps, isSelected = _a.isSelected, _b = _a.selectedDays, selectedDays = _b === void 0 ? [] : _b;
return util_1.TypeUtils.isFn(isSelected)
? isSelected(entity)
: selectedDays.includes(entity.day) && entity.current;
};
/**
* @stable [29.12.2020]
* @param entity
* @private
*/
Calendar.prototype.isFirstSelectedDay = function (entity) {
var isFirstSelected = this.originalProps.isFirstSelected;
return util_1.TypeUtils.isFn(isFirstSelected) && isFirstSelected(entity);
};
/**
* @stable [29.12.2020]
* @param entity
* @private
*/
Calendar.prototype.isLastSelectedDay = function (entity) {
var isLastSelected = this.originalProps.isLastSelected;
return util_1.TypeUtils.isFn(isLastSelected) && isLastSelected(entity);
};
/**
* @stable [29.12.2020]
* @param entity
* @private
*/
Calendar.prototype.isMiddleSelectedDay = function (entity) {
var isMiddleSelected = this.originalProps.isMiddleSelected;
return util_1.TypeUtils.isFn(isMiddleSelected)
? isMiddleSelected(entity)
: (!this.isFirstSelectedDay(entity) && !this.isLastSelectedDay(entity));
};
/**
* @stable [31.12.2020]
* @param item
* @param column
* @private
*/
Calendar.prototype.getCellElement = function (item, column) {
var _a = this.originalProps, renderer = _a.renderer, showOnlyCurrentDays = _a.showOnlyCurrentDays;
var dayEntity = item[column.index];
if (showOnlyCurrentDays && !dayEntity.current) {
return null;
}
if (util_1.TypeUtils.isFn(renderer)) {
return renderer(dayEntity);
}
return (React.createElement(React.Fragment, null, dayEntity.date.getDate()));
};
/**
* @stable [31.12.2020]
* @param calendarEntity
* @param column
* @private
*/
Calendar.prototype.getTitleElement = function (calendarEntity, column) {
var headerRenderer = this.originalProps.headerRenderer;
var index = column.index;
if (util_1.TypeUtils.isFn(headerRenderer)) {
return headerRenderer(index);
}
return calendarEntity.daysLabels[index];
};
/**
* @stable [29.12.2020]
* @param payload
* @private
*/
Calendar.prototype.onClick = function (payload) {
var onSelect = this.originalProps.onSelect;
if (util_1.TypeUtils.isFn(onSelect)) {
onSelect(this.asCalendarDayEntity(payload));
}
};
/**
* @stable [29.12.2020]
* @param payload
* @private
*/
Calendar.prototype.asCalendarDayEntity = function (payload) {
return payload.entity[payload.index];
};
Object.defineProperty(Calendar.prototype, "calendarEntity", {
/**
* @stable [29.12.2020]
* @private
*/
get: function () {
var calendarEntity = this.originalProps.calendarEntity;
return calendarEntity || this.dc.asCalendar({ useSyntheticCalendar: true });
},
enumerable: false,
configurable: true
});
Calendar.defaultProps = {
showOnlyCurrentDays: false,
};
return Calendar;
}(generic_component_1.GenericComponent));
exports.Calendar = Calendar;
//# sourceMappingURL=calendar.component.js.map