UNPKG

hyj-ui

Version:

测试文件

242 lines (207 loc) 11 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck")); var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass")); var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var _dayjs = _interopRequireDefault(require("dayjs")); var _solarlunar = _interopRequireDefault(require("solarlunar")); var _common = require("../utils/common"); require("./assets/styles/index.less"); var _month = _interopRequireDefault(require("./panel/month")); var _year = _interopRequireDefault(require("./panel/year")); function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; } function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; } var Calendar = /*#__PURE__*/function () { function Calendar(mountNode) { (0, _classCallCheck2.default)(this, Calendar); (0, _defineProperty2.default)(this, "value", void 0); (0, _defineProperty2.default)(this, "mountNode", void 0); (0, _defineProperty2.default)(this, "monthDays", void 0); (0, _defineProperty2.default)(this, "firstWeekDay", void 0); (0, _defineProperty2.default)(this, "count", void 0); (0, _defineProperty2.default)(this, "contentHtml", void 0); (0, _defineProperty2.default)(this, "options", void 0); (0, _defineProperty2.default)(this, "mounted", void 0); (0, _defineProperty2.default)(this, "selectedDate", void 0); (0, _defineProperty2.default)(this, "weekDay", ['日', '一', '二', '三', '四', '五', '六']); this.options = { weekStartOrder: 'Sunday', showWeekHeader: true, mode: 'month' }; this.mountNode = mountNode; this.mounted = false; this.value = new Date().toLocaleDateString(); this.monthDays = (0, _common.getMonthDays)(new Date().getFullYear(), new Date().getMonth() + 1); this.firstWeekDay = (0, _common.getFirstDayOfMonth)(new Date().getFullYear(), new Date().getMonth() + 1); this.selectedDate = (0, _dayjs.default)().format('YYYY-MM-DD'); this.contentHtml = ''; this.count = 0; } (0, _createClass2.default)(Calendar, [{ key: "setDate", value: function setDate(value, format) { this.value = (0, _dayjs.default)(value, format).format('YYYY-MM-DD'); this.update(); } }, { key: "solarToLunar", value: function solarToLunar(year, month, day) { var lunarData = _solarlunar.default.solar2lunar(year, month, day); if (lunarData.dayCn === '初一') { lunarData.dayCn = lunarData.monthCn; } return lunarData; } }, { key: "bindEventHandle", value: function bindEventHandle() { this.render(true); } }, { key: "update", value: function update() { this.monthDays = (0, _common.getMonthDays)((0, _dayjs.default)(this.value).year(), (0, _dayjs.default)(this.value).month() + 1); this.firstWeekDay = (0, _common.getFirstDayOfMonth)((0, _dayjs.default)(this.value).year(), (0, _dayjs.default)(this.value).month() + 1); this.render(); this.bindEventHandle(); } // 获取渲染日历的行数 }, { key: "getRenderRows", value: function getRenderRows(firstWeekDay, monthDays, renderOrder) { var renderRows = 0; if (renderOrder === 'Monday') { // console.log('哈哈哈哈哈', firstWeekDay, monthDays); if (firstWeekDay === 0) { // 星期天 renderRows = Math.ceil((firstWeekDay + monthDays + 6 - (0, _dayjs.default)(this.value).endOf('month').day() + 7) / 7); } else { renderRows = Math.ceil((firstWeekDay + monthDays + 6 - (0, _dayjs.default)(this.value).endOf('month').day()) / 7); } } else if (renderOrder === 'Sunday') { if (firstWeekDay === 6) { // 星期六 renderRows = Math.ceil((firstWeekDay + monthDays + 6 - (0, _dayjs.default)(this.value).endOf('month').day() + 7) / 7); } else { renderRows = Math.ceil((firstWeekDay + monthDays + 6 - (0, _dayjs.default)(this.value).endOf('month').day()) / 7); } } return renderRows; } }, { key: "getOtherMonthDays", value: function getOtherMonthDays(row, weekDay, // 星期几 currentMonth, firstWeekDay) { var dateString = ''; var lunarData = {}; var nowDay = 0; if (row === 0) { if (firstWeekDay === 0 && this.options.weekStartOrder === 'Monday') { dateString = (0, _dayjs.default)("".concat((0, _dayjs.default)(this.value).year(), "-").concat(currentMonth, "-", 1)).subtract(firstWeekDay - weekDay + 6, 'day').format('YYYY-MM-DD'); } else { // 从星期天开始 dateString = (0, _dayjs.default)("".concat((0, _dayjs.default)(this.value).year(), "-").concat(currentMonth, "-", 1)).subtract(firstWeekDay - weekDay, 'day').format('YYYY-MM-DD'); } lunarData = this.solarToLunar((0, _dayjs.default)(dateString).year(), (0, _dayjs.default)(dateString).month() + 1, (0, _dayjs.default)(dateString).date()); nowDay = (0, _dayjs.default)(dateString).date(); } else { if (this.options.weekStartOrder === 'Monday') { // dateString = dayjs(this.value); dateString = (0, _dayjs.default)("".concat((0, _dayjs.default)(this.value).year(), "-").concat(currentMonth, "-").concat(this.monthDays)).add(weekDay - (0, _dayjs.default)("".concat((0, _dayjs.default)(this.value).year(), "-").concat(currentMonth, "-").concat(this.monthDays)).day(), 'day').format('YYYY-MM-DD'); } else { dateString = (0, _dayjs.default)("".concat((0, _dayjs.default)(this.value).year(), "-").concat(currentMonth, "-").concat(this.monthDays)).add(weekDay - (0, _dayjs.default)("".concat((0, _dayjs.default)(this.value).year(), "-").concat(currentMonth, "-").concat(this.monthDays)).day() - 1, 'day').format('YYYY-MM-DD'); } lunarData = this.solarToLunar((0, _dayjs.default)(dateString).year(), (0, _dayjs.default)(dateString).month() + 1, (0, _dayjs.default)(dateString).date() + 1); nowDay = (0, _dayjs.default)(dateString).endOf('day').add(1, 'day').date(); } return { dateString: dateString, lunarData: lunarData, weekDay: weekDay, nowDay: nowDay }; } }, { key: "getRenderStartWeek", value: function getRenderStartWeek(rowIndex, weekIndex) { // firstWeekDay= 0代表星期天 var renderStartWeek = false; if (this.options.weekStartOrder === 'Monday') { // 星期一开始展示 renderStartWeek = rowIndex === 0 && weekIndex + 1 === this.firstWeekDay || rowIndex === 0 && weekIndex === 6 && this.firstWeekDay === 0; } else { // 星期天开始展示 renderStartWeek = rowIndex === 0 && weekIndex === this.firstWeekDay || rowIndex === 0 && weekIndex === 0 && this.firstWeekDay === 0; } return renderStartWeek; } }, { key: "render", value: function render(bindEvent) { var rootNode = document.querySelector(this.mountNode); this.count = 0; if (rootNode) { if (this.options.mode === 'month') { this.contentHtml = _month.default.bind(this)(bindEvent); } else { this.options = _objectSpread(_objectSpread({}, this.options), {}, { showWeekHeader: false }); this.contentHtml = _year.default.bind(this)(bindEvent); } if (!bindEvent) { rootNode.innerHTML = this.contentHtml; } } } /** * 创建一个日历 * @param {options.dateCellRender} dateCellRender: (dateString: string, nowDay: number, weekDay: number) => string; 日期单元格渲染函数 * @param {options.dateCellClick} dateCellClick: (dateString: string, nowDay: number, weekDay: number) => void; // 点击日期的回调 * @param {options.weekText} weekText: string[]; // 自定义星期 文字 * @param {options.initValue} initValue: string; // 初始化日期 * @param {options.showLunaCalendar} showLunaCalendar: boolean; // 是否显示农历 * @param {options.headClassName} headClassName: string; // 头部样式 * @param {options.weekStartOrder} weekStartOrder: 'Monday' | 'Sunday'; 渲染顺序 * @param {options.mountNode} mountNode: string; // 挂载节点 * @param {options.mode} mode: 'month' | 'year'; 模式 * @param {options.showWeekHeader} showWeekHeader: boolean; 是否显示星期 */ }, { key: "create", value: function create(options) { this.options = _objectSpread(_objectSpread({}, this.options), options); if (options !== null && options !== void 0 && options.weekText && options.weekText.length !== 7) { throw new Error('weekText长度必须为7'); } else { this.weekDay = (options === null || options === void 0 ? void 0 : options.weekText) || ['日', '一', '二', '三', '四', '五', '六']; } if ((options === null || options === void 0 ? void 0 : options.weekStartOrder) === 'Monday' && !(options !== null && options !== void 0 && options.weekText)) { this.weekDay = ['一', '二', '三', '四', '五', '六', '日']; } if (options !== null && options !== void 0 && options.initValue) { try { this.value = (0, _dayjs.default)(options.initValue).format('YYYY-MM-DD'); this.firstWeekDay = (0, _common.getFirstDayOfMonth)((0, _dayjs.default)(this.value).year(), (0, _dayjs.default)(this.value).month() + 1); this.monthDays = (0, _dayjs.default)(this.value).daysInMonth(); } catch (error) { throw new Error('initValue格式错误,请输入YYYY-MM-DD格式的日期'); } } var rootNode = document.querySelector(this.mountNode); if (rootNode) { this.render(); this.bindEventHandle(); } else { throw new Error('mountNode is not found'); } } }]); return Calendar; }(); var _default = Calendar; exports.default = _default;