UNPKG

ukelli-ui

Version:

Base on React's UI lib. Make frontend's dev simpler and faster.

117 lines (116 loc) 3.54 kB
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);