@ray-js/smart-ui
Version:
轻量、可靠的智能小程序 UI 组件库
93 lines (92 loc) • 3.97 kB
JavaScript
;
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) {
if (props.utcOffset === undefined) {
return (0, jsx_runtime_1.jsx)(SmartCalendar, __assign({}, props));
}
var utcOffset = props.utcOffset;
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;