fastlion-amis
Version:
一种MIS页面生成工具
115 lines (114 loc) • 6.78 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var tslib_1 = require("tslib");
var react_1 = tslib_1.__importStar(require("react"));
var storage_1 = require("../utils/storage");
var icons_1 = require("@ant-design/icons");
var helper_1 = require("../utils/helper");
var antd_1 = require("antd");
var LOCALSTORAGEDISPLAYKEY = 'tipsDisplay';
// 判断日期是否已经过了一天
function isDatePassedOneDay(dateToCheck) {
var oneDayInMilliseconds = 24 * 60 * 60 * 1000; // 一天的毫秒数
var currentDate = new Date();
// 获取当前日期的年、月、日
var currentYear = currentDate.getFullYear();
var currentMonth = currentDate.getMonth();
var currentDay = currentDate.getDate();
// 获取目标日期的年、月、日
var targetYear = dateToCheck.getFullYear();
var targetMonth = dateToCheck.getMonth();
var targetDay = dateToCheck.getDate();
// 比较日期部分是否相等
return (currentYear === targetYear &&
currentMonth === targetMonth &&
Math.abs(currentDay - targetDay) >= 1);
}
var TipsContanier = function (_a) {
var data = _a.data, cx = _a.cx, pageUniqueMark = _a.pageUniqueMark, style = _a.style, tipsContent = _a.tipsContent, contentString = _a.contentString, props = _a.props;
var render = props.render;
var container = (0, react_1.useRef)(null);
// 初始化渲染节点
if (tipsContent)
tipsContent = Array.isArray(tipsContent) ? tipsContent : [tipsContent];
(0, storage_1.setLocalStorage)(LOCALSTORAGEDISPLAYKEY, (0, storage_1.getLocalStorage)(LOCALSTORAGEDISPLAYKEY) || {});
var _b = (0, react_1.useState)(function () {
var _a;
var tipsDisplayStorage = (0, storage_1.getLocalStorage)(LOCALSTORAGEDISPLAYKEY);
// 有页眉展示时间并且 没过一天 都不展示
if (tipsDisplayStorage[pageUniqueMark] && !isDatePassedOneDay(new Date((_a = tipsDisplayStorage[pageUniqueMark]) === null || _a === void 0 ? void 0 : _a.timeStamp))) {
return false;
}
else {
delete tipsDisplayStorage[pageUniqueMark];
(0, storage_1.setLocalStorage)(LOCALSTORAGEDISPLAYKEY, tipsDisplayStorage);
}
return true;
}), showTips = _b[0], setShowTips = _b[1];
// 是否超出文本
var _c = (0, react_1.useState)(false), overShow = _c[0], setOverShow = _c[1];
// 是否展示超出文本
var _d = (0, react_1.useState)(false), showAll = _d[0], setShowAll = _d[1];
// tips展示
var _e = (0, react_1.useState)(false), tipsShow = _e[0], setTipsShow = _e[1];
var getDefaultStorageItem = function () { return ({
timeStamp: new Date().getTime()
}); };
// 没有内容直接返回
if (!(tipsContent === null || tipsContent === void 0 ? void 0 : tipsContent.length))
return null;
(0, react_1.useEffect)(function () {
// 延迟一下计算的时机 防止计算出错
setTimeout(function () {
requestAnimationFrame(function () {
var _a;
var realHigh = ((_a = container.current) === null || _a === void 0 ? void 0 : _a.scrollHeight) || 0;
if (48 < realHigh)
setOverShow(true);
});
}, 800);
}, [container.current]);
var closeDialogOnThisDay = function () {
// 设置localStorage
var tipsDisplayStorage = (0, storage_1.getLocalStorage)(LOCALSTORAGEDISPLAYKEY);
tipsDisplayStorage[pageUniqueMark] = getDefaultStorageItem();
(0, storage_1.setLocalStorage)(LOCALSTORAGEDISPLAYKEY, tipsDisplayStorage);
closeShow();
};
// 关闭弹窗
var closeShow = function () {
setShowTips(false);
};
var tipsContentElement = tipsContent ? tipsContent === null || tipsContent === void 0 ? void 0 : tipsContent.map(function (_, index) {
// 渲染节点
return render("tipsContanier/" + index, _, {
footer: _.footer,
data: data,
classnames: props.classnames,
render: props.render,
});
}) : contentString;
return (react_1.default.createElement(react_1.default.Fragment, null,
react_1.default.createElement("div", { onClick: function (e) {
if (!(0, helper_1.isMobile)())
return;
e.stopPropagation();
setTipsShow(true);
}, ref: container, className: cx === null || cx === void 0 ? void 0 : cx('Tips-Container'), style: (0, tslib_1.__assign)({ display: showTips ? '' : 'none', overflow: 'hidden', whiteSpace: 'normal', maxHeight: showAll ? 'unset' : '46px' }, style) },
!(0, helper_1.isMobile)() ? react_1.default.createElement("div", { className: 'tool-bars' },
react_1.default.createElement("a", { onClick: closeDialogOnThisDay }, "\u4ECA\u5929\u4E0D\u518D\u663E\u793A"),
react_1.default.createElement("a", { onClick: closeShow }, "\u9690\u85CF")) : null,
tipsContentElement,
(overShow && !(0, helper_1.isMobile)()) ? react_1.default.createElement(icons_1.MoreOutlined, { className: 'more', onClick: function (e) {
e.stopPropagation();
setShowAll(!showAll);
}, style: (0, tslib_1.__assign)({ fontSize: '20px', transform: 'rotate(90deg) translateY(50%)', position: 'absolute', left: '50%', bottom: '-7px', cursor: 'pointer' }, style) }) : null),
react_1.default.createElement(antd_1.Modal, { maskStyle: { zIndex: 1111 }, closable: false, centered: true, wrapClassName: "summary-modal-wrap", className: "summary-modal", width: 300, getContainer: function () { return document.getElementById('amis-modal-container') || document.body; }, footer: react_1.default.createElement("div", null,
react_1.default.createElement(antd_1.Button, { block: true, ghost: true, type: 'link', style: { letterSpacing: '5px', fontSize: '16px', width: 'unset' }, onTouchEnd: function () { return setTipsShow(false); } }, "\u786E\u5B9A"),
react_1.default.createElement(antd_1.Button, { block: true, ghost: true, type: 'link', style: { letterSpacing: '5px', fontSize: '16px', width: 'unset', borderLeft: '1px solid rgb(221 227 240)' }, onTouchEnd: function () {
setTipsShow(false);
closeDialogOnThisDay();
} }, "\u4ECA\u65E5\u4E0D\u518D\u63D0\u793A")), title: "\u63D0\u793A", open: tipsShow }, tipsContentElement)));
};
exports.default = react_1.default.memo(TipsContanier);
//# sourceMappingURL=./components/TipsContanier.js.map