UNPKG

fastlion-amis

Version:

一种MIS页面生成工具

115 lines (114 loc) 6.78 kB
"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