ukelli-ui
Version:
Base on React's UI lib. Make frontend's dev simpler and faster.
117 lines (116 loc) • 3.54 kB
JavaScript
import { defineGlobalScope } from 'basic-helper/registe-global-funcs';
import { IsFunc } from 'basic-helper';
import chKeyMapper from '../i18n/zh-CN';
import enKeyMapper from '../i18n/en-US';
import defaultIconMapper from './icon-mapper';
var defaultLanguage = 'zh-CN';
var ukeLangConfig = {
'zh-CN': chKeyMapper,
'en-US': enKeyMapper,
};
var translateMapper = {
'zh-CN': {},
'en-US': {},
};
var language = defaultLanguage;
var ukelliui = {
iconMapper: {},
iconPrefix: function (s) { return "fa" + s + " fa-"; },
};
/**
* 兼容旧版本的设置
*/
Object.defineProperties(ukelliui, {
queryCAPTCHAData: {
set: function () {
console.warn('queryCAPTCHAData 已废弃,请使用 Captcha.setAPI');
}
},
queryQRCodeData: {
set: function () {
console.warn('queryQRCodeData 已废弃,请使用 QRCode.setAPI');
}
},
});
function _translate(langConfig) {
return function (key) {
var keyMapper = langConfig[language] || langConfig[defaultLanguage];
return keyMapper[key] || key;
};
}
/**
* 内部翻译接口
* @param {string} key 需要翻译的内容
*/
var $T_UKE = _translate(ukeLangConfig);
/**
* 外部内容翻译接口
* @param {string} key 需要翻译的内容
*/
var $T = _translate(translateMapper);
function setUkeLang(lang) {
language = lang;
}
/**
* 设置 uke 内部语言配置
* @param {UkeLangStruct} config
*/
function setUkeLangConfig(config) {
Object.assign(ukeLangConfig, config);
}
/**
* 设置外部翻译数据
* @param {object} nextTranslate 翻译的内容
*/
function setLangTranslate(nextTranslate) {
Object.assign(translateMapper, nextTranslate);
window.$UKE && window.$UKE.registe({
$T: $T, $T_UKE: $T_UKE, translateMapper: translateMapper
});
}
/**
* 设置 ukelli ui 配置
* @param {ukelliui} config ukelli ui 的配置
*/
function setUkelliConfig(config) {
Object.assign(ukelliui, config);
window.$UKE && window.$UKE.registe(config);
return ukelliui;
}
export function getIsMobile() {
return /iPhone|Android|iOS/.test(navigator.userAgent);
}
/**
* 获取 ukelli ui 配置
* @param {string} configKey 配置的 key
*/
function getUkelliConfig(configKey) {
var _ukelliui = Object.assign({}, ukelliui);
return configKey ? (_ukelliui[configKey] || false) : _ukelliui;
}
function getIconMapper() {
return Object.assign({}, defaultIconMapper, ukelliui.iconMapper);
}
/**
* 合并参数,返回 icon 的 className
* @param {string} iconName icon 对应的名字
* @param {string} iconStyle 对应的 style
* @param {string[] | string} mergeClassNames 需要合并的 classNames
* @param {boolean} useIconConfig 是否使用内置的配置
*/
function getIcon(iconName, iconStyle, mergeClassNames, useIconConfig) {
if (useIconConfig === void 0) { useIconConfig = true; }
var iconMapper = getIconMapper();
var iconPrefix = getUkelliConfig('iconPrefix');
if (!iconName)
return iconName;
var moreClassNameArr = Array.isArray(mergeClassNames) ? mergeClassNames : [mergeClassNames];
var resultStr = '';
if (useIconConfig) {
resultStr = (IsFunc(iconPrefix) ? iconPrefix(iconStyle) : iconPrefix);
}
resultStr = resultStr + (iconMapper[iconName] || iconName) + " " + moreClassNameArr.join(' ');
return resultStr;
}
export { $T, $T_UKE, getUkelliConfig, setUkelliConfig, getIcon, setUkeLang, setUkeLangConfig, setLangTranslate, };
defineGlobalScope('$UKE', ukelliui);