UNPKG

qt-public-ui

Version:

新设计规范下业务组件库

161 lines (160 loc) 5.08 kB
import _extends from "@babel/runtime/helpers/esm/extends"; import variable from '../../theme/g2.var'; export { default as i18n } from './i18n'; export var assert = function assert(condition, message) { if (!condition) return; if (message instanceof Error) { throw message; } else { throw new Error(message); } }; export var checkEmpty = function checkEmpty(value, defaultValue) { return [null, false, undefined, '', NaN].includes(value) ? defaultValue : value; }; // 仅判断字面量是否为空 export var notEmpty = function notEmpty(value) { if ([null, false, undefined, '', NaN].includes(value)) { return false; } if (typeof value === 'object') { return Object.keys(value).length !== 0; } return true; }; var numberWithCommas = function numberWithCommas(x) { if (x === null || x === undefined) return '-'; var parts = x.toString().split('.'); parts[0] = parts[0].replace(/\B(?=(\d{3})+(?!\d))/g, ','); if (parts[1] === '00') { // 当value是整数时,不需要保留两位小数 parts.splice(1, 1); } return parts.join('.'); }; export var formatValue = function formatValue(type, defaultValue) { if (type === void 0) { type = 'string'; } if (defaultValue === void 0) { defaultValue = '-'; } return function (value) { var checkedVal = checkEmpty(value, defaultValue); if (checkedVal === defaultValue) return checkedVal; switch (type) { case 'string': return checkedVal; case 'number': return numberWithCommas(checkedVal); case 'decimal': return checkedVal.toFixed(2); case 'percent': return numberWithCommas(checkedVal) + "%"; case 'decimal_percent': return numberWithCommas(checkedVal.toFixed(2)) + "%"; default: return checkedVal; } }; }; export var emptyFun = function emptyFun() {}; export var getCycleColor = function getCycleColor(name) { var colorList = variable[name] || []; var index = 0; return { next: function next() { if (index >= colorList.length) index = 0; return colorList[index++]; }, reset: function reset() { index = 0; } }; }; export var removeProperty = function removeProperty(target) { if (Array.isArray(target)) { return target.map(function (tar) { return removeProperty(tar); }); } var _result = _extends({}, target); for (var _len = arguments.length, keys = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { keys[_key - 1] = arguments[_key]; } keys.forEach(function (key) { delete _result[key]; }); return _result; }; export var getCeaseDiff = function getCeaseDiff(value, prevValue) { if (value === void 0) { value = []; } if (prevValue === void 0) { prevValue = []; } var operator = value.length < prevValue.length ? 'delete' : 'add'; var diff = ''; if (operator === 'delete') { diff = prevValue.find(function (prev) { return !value.includes(prev); }) || ''; } else { diff = value.find(function (val) { return !prevValue.includes(val); }) || ''; } return [diff, operator]; }; export var loadScript = function loadScript(url, cb) { var el = document.createElement('script'); el.charset = 'utf-8'; el.onload = function () { el.onload = null; cb && cb(); }; document.querySelectorAll('head')[0].appendChild(el); el.src = url; }; export function formartBiz(num) { return parseFloat(String(Number.isNaN(num) ? 0 : num)).toLocaleString(); } export var getPopupContainer = function getPopupContainer(triggerNode) { var currentEle = triggerNode; while (currentEle && currentEle.parentElement) { var computedStyle = getComputedStyle(currentEle.parentElement); if (/^(auto)|(scroll)$/.test(computedStyle.getPropertyValue('overflow-y')) && currentEle.parentElement.scrollHeight > currentEle.parentElement.clientHeight) { if (computedStyle.getPropertyValue('position') === 'static') { currentEle.parentElement.style.position = 'relative'; } return currentEle.parentElement; } else { currentEle = currentEle.parentElement; } } return document.body; }; export var getTextWidthAndHeight = function getTextWidthAndHeight(text, fontSize, fontFamily) { var text_span = document.createElement('span'); var result = { width: 0, height: 0 }; result.width = text_span.offsetWidth; result.height = text_span.offsetHeight; text_span.style.visibility = 'hidden'; text_span.style.fontSize = fontSize || '12px'; text_span.style.fontFamily = fontFamily || 'Alibaba-PuHuiTi-Regular'; text_span.style.display = 'inline-block'; document.body.appendChild(text_span); if (typeof text_span.textContent !== 'undefined') { text_span.textContent = text; } else { text_span.innerText = text; } result.width = parseFloat(window.getComputedStyle(text_span).width) - result.width; result.height = parseFloat(window.getComputedStyle(text_span).height) - result.height; document.body.removeChild(text_span); return result; };