UNPKG

react-application-core

Version:

A react-based application core for the business applications.

193 lines 8.03 kB
"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