UNPKG

@ray-js/smart-ui

Version:

轻量、可靠的智能小程序 UI 组件库

91 lines (90 loc) 3.9 kB
"use strict"; 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); }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.Calendar = void 0; var jsx_runtime_1 = require("react/jsx-runtime"); /* eslint-disable prefer-destructuring */ var Calendar_1 = __importDefault(require("./Calendar")); var SmartCalendar = Calendar_1.default; var wrapUtc = function (dt, targetOffset) { var date = new Date(dt); var offset = date.getTimezoneOffset(); // 获取当前时区的偏移 // 假设我们想要将时间调整为 UTC+8(比如北京时区) var timeDifference = offset - targetOffset; // 计算差值 // 创建一个新的日期对象,将其调整为目标时区 var adjustedDate = new Date(date.getTime() + timeDifference * 60000); // 时间差转换为毫秒 return adjustedDate.getTime(); }; var unwrapUtc = function (dt, targetOffset) { var date = new Date(dt); var offset = date.getTimezoneOffset(); // 获取当前时区的偏移 // 计算反向差值 var timeDifference = targetOffset - offset; // 目标时区偏移量和当前时区偏移量之间的差异 // 创建一个新的日期对象,将其调整回 UTC var utcDate = new Date(date.getTime() - timeDifference * 60000); // 时间差转换为毫秒 return utcDate.getTime(); }; var Calendar = function (props) { var _a; var utcOffset = (_a = props.utcOffset) !== null && _a !== void 0 ? _a : -480; var defaultDate = props.defaultDate; var maxDate = props.maxDate; var minDate = props.minDate; if (utcOffset) { if (props.defaultDate) { if (Array.isArray(props.defaultDate)) { defaultDate = props.defaultDate.map(function (date) { return wrapUtc(date, utcOffset); }); } else { defaultDate = wrapUtc(props.defaultDate, utcOffset); } } if (props.maxDate) { maxDate = wrapUtc(props.maxDate, utcOffset); } if (props.minDate) { minDate = wrapUtc(props.minDate, utcOffset); } } return ((0, jsx_runtime_1.jsx)(SmartCalendar, __assign({}, props, { defaultDate: defaultDate, minDate: minDate, maxDate: maxDate, onConfirm: function (event) { if (props.onConfirm) { var detail = event.detail; if (utcOffset) { if (Array.isArray(event.detail)) { detail = event.detail.map(function (date) { return new Date(unwrapUtc(date, utcOffset)); }); } else { detail = new Date(unwrapUtc(event.detail, utcOffset)); } } props.onConfirm(__assign(__assign({}, event), { detail: detail })); } }, onSelect: function (event) { if (props.onSelect) { var detail = event.detail; if (utcOffset) { if (Array.isArray(event.detail)) { detail = event.detail.map(function (date) { return new Date(unwrapUtc(date, utcOffset)); }); } else { detail = new Date(unwrapUtc(event.detail, utcOffset)); } } props.onSelect(__assign(__assign({}, event), { detail: detail })); } } }))); }; exports.Calendar = Calendar;