UNPKG

@cqmcui/cqmcui

Version:

轻量级移动端 Vue2、Vue3 组件库(支持小程序开发)

76 lines (75 loc) 2.52 kB
import { c as createComponent } from "./component-81a4c1d0.js"; import { h } from "vue"; import "../locale/lang"; const { componentName, create } = createComponent("config-provider"); const _sfc_main = create({ props: { theme: { type: String, default: "" }, themeVars: { type: Object, default: {} }, tag: { type: String, default: "div" } }, setup(props, { slots }) { const kebabCase = (str) => { str = str.replace(str.charAt(0), str.charAt(0).toLocaleLowerCase()); return str.replace(/([a-z])([A-Z])/g, (_, p1, p2) => p1 + "-" + p2.toLowerCase()); }; const colorRgb = (str) => { if (!str) return; var sColor = str.toLowerCase(); var reg = /^#([0-9a-fA-f]{3}|[0-9a-fA-f]{6})$/; if (sColor && reg.test(sColor)) { if (sColor.length === 4) { var sColorNew = "#"; for (var i = 1; i < 4; i += 1) { sColorNew += sColor.slice(i, i + 1).concat(sColor.slice(i, i + 1)); } sColor = sColorNew; } var sColorChange = []; for (var i = 1; i < 7; i += 2) { sColorChange.push(parseInt("0x" + sColor.slice(i, i + 2))); } return sColorChange.join(","); } return null; }; const mapThemeVarsToCSSVars = (themeVars) => { var _a; if (!themeVars) return; const cssVars = {}; const primaryColor = (_a = props == null ? void 0 : props.themeVars) == null ? void 0 : _a.primaryColor; if (primaryColor) { cssVars[`--cqmc-address-region-tab-line`] = `linear-gradient(90deg, ${primaryColor} 0%, rgba(${colorRgb( primaryColor )},0.15) 100%) `; cssVars[`--cqmc-tabs-horizontal-tab-line-color`] = `linear-gradient(90deg, ${primaryColor} 0%, rgba(${colorRgb( primaryColor )},0.15)100%)`; cssVars[`--cqmc-tabs-vertical-tab-line-color`] = `linear-gradient(180deg, ${primaryColor} 0%, rgba(${colorRgb( primaryColor )},0.15) 100%) `; } Object.keys(themeVars).forEach((key) => { cssVars[`--cqmc-${kebabCase(key)}`] = themeVars[key]; }); return cssVars; }; return () => { var _a; const defaultSlots = (_a = slots.default) == null ? void 0 : _a.call(slots); return h( props.tag, { class: `cqmc-theme-${props.theme}`, style: mapThemeVarsToCSSVars(props.themeVars) }, defaultSlots ); }; } }); export { _sfc_main as default };