UNPKG

@alifd/meet-react

Version:

Fusion Mobile React UI System Component

311 lines (310 loc) 13.7 kB
"use strict"; exports.__esModule = true; exports.default = void 0; var _classnames = _interopRequireDefault(require("classnames")); var _dayjs = _interopRequireDefault(require("dayjs")); var _react = _interopRequireWildcard(require("react")); var _meetReactComponentOne = require("@alifd/meet-react-component-one"); var _view = _interopRequireDefault(require("../view")); var _utils = require("./utils"); var _types = require("./types"); function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); } function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var YEAR_ROW_CELLS = 3; var MONTH_ROW_CELLS = 7; var CalendarContent = function (props) { var _classNames7; var selectedDate = props.selectedDate, visibleDate = props.visibleDate, mode = props.mode, type = props.type, maxDate = props.maxDate, minDate = props.minDate, _props$onDateChange = props.onDateChange, onDateChange = _props$onDateChange === void 0 ? function () {} : _props$onDateChange, disabledDate = props.disabledDate, enableTimePicker = props.enableTimePicker, locale = props.locale, prefix = props.prefix, renderCellBottom = props.renderCellBottom, renderCellRight = props.renderCellRight, dateCellRender = props.dateCellRender, monthCellRender = props.monthCellRender, _props$firstDay = props.firstDay, firstDay = _props$firstDay === void 0 ? 0 : _props$firstDay; var onItemClick = function (newDate) { if (!newDate) { return; } if (type === 'multi') { if (!Array.isArray(selectedDate)) { if (onDateChange) { onDateChange([newDate], newDate); } return; } var vIndex = (0, _utils.isHaveDate)(newDate, selectedDate); if (vIndex === -1) { selectedDate.push(newDate); if (onDateChange) { onDateChange(selectedDate, newDate); } return; } selectedDate.splice(vIndex, 1); if (onDateChange) { onDateChange(selectedDate, newDate); } return; } if (type === 'range') { if (!Array.isArray(selectedDate)) { return; } if (selectedDate.length === 0) { if (onDateChange) { onDateChange([newDate], newDate); } return; } if (selectedDate.length === 2) { if (onDateChange) { onDateChange([newDate], newDate); } return; } if (newDate.getTime() < selectedDate[0].getTime()) { if (onDateChange) { onDateChange([newDate, selectedDate[0]], newDate); } return; } if (onDateChange) { onDateChange([selectedDate[0], newDate], newDate); } return; } if (onDateChange) { onDateChange(newDate, newDate); } }; var renderYearContent = function () { var totalMonths = (0, _utils.getMonthList)(visibleDate, locale); var rowCount = totalMonths.length / YEAR_ROW_CELLS; var rows = []; for (var i = 0; i < rowCount; i++) { var datas = totalMonths.slice(i * YEAR_ROW_CELLS, (i + 1) * YEAR_ROW_CELLS); rows.push(renderRow(datas, i === 0 ? true : false, i)); } var headPrefix = prefix + "calendar-content-real"; return /*#__PURE__*/(0, _react.createElement)(_view.default, { className: (0, _classnames.default)("" + headPrefix, headPrefix + "-year") }, rows); }; var renderYearCell = function (cellDate, isFirstLine) { var _classNames; var cellType = (0, _utils.getCellStatus)(cellDate && cellDate.value, selectedDate, mode, type, disabledDate, maxDate, minDate, 'year'); var cellPrefix = prefix + "calendar-cell"; if (cellType === _types.CellStatusType.begin) { if (Object.prototype.toString.call(selectedDate) === '[object Array]') { if (selectedDate.length === 1) { cellType = _types.CellStatusType.selected; } } } return /*#__PURE__*/(0, _react.createElement)(_view.default, { key: cellDate && cellDate.label, className: (0, _classnames.default)(cellPrefix, cellPrefix + "-" + mode, (_classNames = {}, _classNames[cellPrefix + "-" + mode + "-" + cellType] = isFirstLine === false, _classNames[cellPrefix + "-" + mode + "-firstline-" + cellType] = isFirstLine === true, _classNames)), onClick: function onClick() { if (cellType === _types.CellStatusType.disabled) { return; } if (onItemClick) { onItemClick(cellDate && cellDate.value); } } }, /*#__PURE__*/(0, _react.createElement)(_meetReactComponentOne.Text, { className: (0, _classnames.default)(cellPrefix + "-" + mode + "-text-" + cellType) }, cellDate && cellDate.label)); }; var renderDateCell = function (cellDate, rowPrefix, rowCount, cellPrefix, cellType, realDisable) { var _classNames2, _classNames3; return /*#__PURE__*/(0, _react.createElement)(_view.default, { key: "date-cell-" + cellDate.label, className: (0, _classnames.default)("" + cellPrefix + rowPrefix, cellPrefix + "-" + mode, (_classNames2 = {}, _classNames2[cellPrefix + "-" + mode + "--short"] = rowCount === 6, _classNames2)), onClick: function onClick() { if (realDisable) { return; } if (onItemClick) { onItemClick(cellDate && cellDate.value); } } }, /*#__PURE__*/(0, _react.createElement)(_view.default, { className: (0, _classnames.default)(cellPrefix + "-left-" + cellType, "" + cellPrefix + rowPrefix + "-left-" + cellType) }), /*#__PURE__*/(0, _react.createElement)(_view.default, { className: (0, _classnames.default)(cellPrefix + "-right-" + cellType, "" + cellPrefix + rowPrefix + "-right-" + cellType) }), /*#__PURE__*/(0, _react.createElement)(_meetReactComponentOne.Text, { className: (0, _classnames.default)(cellPrefix + "-text", cellPrefix + "-text-" + cellType, "" + cellPrefix + rowPrefix + "-text-" + cellType, (_classNames3 = {}, _classNames3[cellPrefix + "-text--short"] = rowCount === 6, _classNames3)) }, cellDate && cellDate.label), renderCellBottom ? /*#__PURE__*/(0, _react.createElement)(_view.default, { className: (0, _classnames.default)(cellPrefix + "-contain-bottom-" + cellType, "" + cellPrefix + rowPrefix + "-contain-bottom-" + cellType) }, renderCellBottom(cellDate && cellDate.value)) : null, renderCellRight ? /*#__PURE__*/(0, _react.createElement)(_view.default, { className: (0, _classnames.default)(cellPrefix + "-contain-right-" + cellType, "" + cellPrefix + rowPrefix + "-contain-right-" + cellType) }, renderCellRight(cellDate && cellDate.value)) : null); }; var renderDateContent = function (cells, datas, i, firstLine, rowCount) { var _classNames4, _classNames5; var cellPrefix = prefix + "calendar-cell"; var _getDateCellStatus = (0, _utils.getDateCellStatus)({ cellDate: datas[i], selectedDate: selectedDate, mode: mode, type: type, disabledDate: disabledDate, maxDate: maxDate, minDate: minDate, visibleDate: visibleDate }), cellType = _getDateCellStatus[0], realDisable = _getDateCellStatus[1]; var rowPrefix = ''; var rowEnd = i === datas.length - 1; if (i === 0) { rowPrefix = '-row-begin'; } if (rowEnd) { rowPrefix = '-row-end'; } var dateCellClassName = { cell: (0, _classnames.default)("" + cellPrefix + rowPrefix, cellPrefix + "-" + mode, (_classNames4 = {}, _classNames4[cellPrefix + "-" + mode + "--short"] = rowCount === 6, _classNames4)), cellLeft: (0, _classnames.default)(cellPrefix + "-left-" + cellType, "" + cellPrefix + rowPrefix + "-left-" + cellType), cellRight: (0, _classnames.default)(cellPrefix + "-right-" + cellType, "" + cellPrefix + rowPrefix + "-right-" + cellType), cellLabel: (0, _classnames.default)(cellPrefix + "-text", cellPrefix + "-text-" + cellType, "" + cellPrefix + rowPrefix + "-text-" + cellType, (_classNames5 = {}, _classNames5[cellPrefix + "-text--short"] = rowCount === 6, _classNames5)), containRight: (0, _classnames.default)(cellPrefix + "-contain-right-" + cellType, "" + cellPrefix + rowPrefix + "-contain-right-" + cellType), containBottom: (0, _classnames.default)(cellPrefix + "-contain-bottom-" + cellType, "" + cellPrefix + rowPrefix + "-contain-bottom-" + cellType) }; if (dateCellRender) { cells.push( /*#__PURE__*/(0, _react.createElement)(_react.Fragment, { key: i }, dateCellRender(datas[i] && datas[i].value, { dateCellClassName: dateCellClassName, onClick: function onClick() { return onItemClick(datas[i] && datas[i].value); }, defaultDateCell: renderDateCell(datas[i], rowPrefix, rowCount, cellPrefix, cellType, realDisable), context: { firstLine: firstLine, rowCount: rowCount, cellType: cellType, disabled: realDisable } }))); } else { cells.push(renderDateCell(datas[i], rowPrefix, rowCount, cellPrefix, cellType, realDisable)); } }; var renderRow = function (datas, firstLine, key, rowCount) { var _classNames6; if (datas === void 0) { datas = []; } if (rowCount === void 0) { rowCount = 5; } var cells = []; for (var i = 0; i < datas.length; i++) { if (!datas[i]) { continue; } if (mode === 'year') { if (monthCellRender) { cells.push( /*#__PURE__*/(0, _react.createElement)(_react.Fragment, { key: i }, monthCellRender(datas[i] && datas[i].value))); } else { cells.push( /*#__PURE__*/(0, _react.createElement)(_react.Fragment, { key: i }, renderYearCell(datas[i], firstLine))); } } else { renderDateContent(cells, datas, i, firstLine, rowCount); } } var headPrefix = prefix + "calendar-content-row"; return /*#__PURE__*/(0, _react.createElement)(_view.default, { key: headPrefix + "-" + mode + "-" + key, className: (0, _classnames.default)("" + headPrefix, headPrefix + "-" + mode, (_classNames6 = {}, _classNames6[headPrefix + "--short"] = rowCount === 6, _classNames6)) }, cells); }; var renderMonthContent = function () { var totalDays = (0, _utils.getCurrentMonthList)(visibleDate, locale); var rowCount = totalDays.length / MONTH_ROW_CELLS; var rows = []; for (var i = 0; i < rowCount; i++) { var datas = totalDays.slice(i * MONTH_ROW_CELLS, (i + 1) * MONTH_ROW_CELLS); rows.push(renderRow(datas, i === 0 ? true : false, i, rowCount)); } var headPrefix = prefix + "calendar-content-real"; return /*#__PURE__*/(0, _react.createElement)(_view.default, { className: (0, _classnames.default)("" + headPrefix, headPrefix + "-month") }, rows); }; var renderWeekContent = function () { var rows = []; var fD = (0, _dayjs.default)(visibleDate).day(firstDay); var datas = new Array(7).fill(0).map(function (key, index) { var day = fD.add(index, 'day'); return { label: day.date().toString(), value: new Date(day.valueOf()) }; }); rows.push(renderRow(datas, true, 0)); var headPrefix = prefix + "calendar-content-real"; return /*#__PURE__*/(0, _react.createElement)(_view.default, { className: (0, _classnames.default)("" + headPrefix, headPrefix + "-week") }, rows); }; var top = function renderTopArea() { if (mode === 'year') { return null; } var headPrefix = prefix + "calendar-content-top"; var weeks = (0, _utils.getDayList)(locale); var tops = []; for (var i = 0; i < weeks.length; i++) { var index = firstDay + i > 6 ? firstDay + i - 7 : firstDay + i; if (!weeks[index]) { continue; } tops.push( /*#__PURE__*/(0, _react.createElement)(_meetReactComponentOne.Text, { className: headPrefix + "-item", key: headPrefix + "-item-" + weeks[index].value }, weeks[index].label)); } return /*#__PURE__*/(0, _react.createElement)(_view.default, { className: "" + headPrefix }, tops); }(); var content = function renRealContent() { var rContent = null; switch (mode) { case 'year': rContent = renderYearContent(); break; case 'week': rContent = renderWeekContent(); break; case 'month': default: rContent = renderMonthContent(); break; } return rContent; }(); return /*#__PURE__*/(0, _react.createElement)(_view.default, { className: (0, _classnames.default)(prefix + "calendar-content", prefix + "calendar-content-" + mode, (_classNames7 = {}, _classNames7[prefix + "calendar-content--no-bottom"] = enableTimePicker, _classNames7)) }, top, content); }; var _default = exports.default = CalendarContent;