diff --git a/apps/web-naive/src/locales/langs/en-US.json b/apps/web-naive/src/locales/langs/en-US.json index 5f48dc4c..c22d75df 100644 --- a/apps/web-naive/src/locales/langs/en-US.json +++ b/apps/web-naive/src/locales/langs/en-US.json @@ -2,7 +2,8 @@ "page": { "demos": { "title": "Demos", - "naive": "Naive UI" + "naive": "Naive UI", + "table": "Table" } } } diff --git a/apps/web-naive/src/locales/langs/zh-CN.json b/apps/web-naive/src/locales/langs/zh-CN.json index 69b85185..50535ba3 100644 --- a/apps/web-naive/src/locales/langs/zh-CN.json +++ b/apps/web-naive/src/locales/langs/zh-CN.json @@ -2,7 +2,8 @@ "page": { "demos": { "title": "演示", - "naive": "Naive UI" + "naive": "Naive UI", + "table": "Table" } } } diff --git a/apps/web-naive/src/router/routes/modules/demos.ts b/apps/web-naive/src/router/routes/modules/demos.ts index 54ee5baa..8ddf81eb 100644 --- a/apps/web-naive/src/router/routes/modules/demos.ts +++ b/apps/web-naive/src/router/routes/modules/demos.ts @@ -24,6 +24,15 @@ const routes: RouteRecordRaw[] = [ path: '/demos/naive', component: () => import('#/views/demos/naive/index.vue'), }, + { + meta: { + icon: 'mdi:shield-key-outline', + title: $t('page.demos.table'), + }, + name: 'Table', + path: '/demos/table', + component: () => import('#/views/demos/table/index.vue'), + }, ], }, ]; diff --git a/apps/web-naive/src/views/demos/table/index.vue b/apps/web-naive/src/views/demos/table/index.vue new file mode 100644 index 00000000..02acf580 --- /dev/null +++ b/apps/web-naive/src/views/demos/table/index.vue @@ -0,0 +1,31 @@ + + + + + diff --git a/packages/@core/base/shared/src/colorful/convert.ts b/packages/@core/base/shared/src/colorful/convert.ts index d8d29813..f4fcc819 100644 --- a/packages/@core/base/shared/src/colorful/convert.ts +++ b/packages/@core/base/shared/src/colorful/convert.ts @@ -40,5 +40,34 @@ function isValidColor(color?: string) { } return new TinyColor(color).isValid; } +/** + * 将HLS字符串转换为RGB颜色字符串 + * + * 本函数接收一个表示HLS值的字符串,移除其中的度量单位, + * 并将其转换为TinyColor对象,以便进行颜色处理。 + * 如果转换后的颜色无效,则直接返回原始字符串; + * 否则,返回转换后的RGB颜色字符串 + * + * @param str 表示HLS颜色值的字符串,可能包含度量单位如'deg'、'grad'、'rad'或'turn' + * @returns 如果颜色值有效,则返回对应的RGB颜色字符串;如果无效,则返回原始字符串 + */ +function hlsStringToRGBString(str: string): string { + // 移除HLS字符串中的度量单位,以便正确解析 + const color = new TinyColor( + `hsl(${str.replaceAll(/deg|grad|rad|turn/g, '')})`, + ); + // 检查颜色是否有效,如果无效则直接返回原始字符串 + if (!color.isValid) { + return str; + } + // 返回转换后的RGB颜色字符串 + return color.toRgbString(); +} -export { convertToHsl, convertToHslCssVar, isValidColor, TinyColor }; +export { + convertToHsl, + convertToHslCssVar, + hlsStringToRGBString, + isValidColor, + TinyColor, +}; diff --git a/packages/effects/hooks/src/use-design-tokens.ts b/packages/effects/hooks/src/use-design-tokens.ts index 9839aa34..b4719cd9 100644 --- a/packages/effects/hooks/src/use-design-tokens.ts +++ b/packages/effects/hooks/src/use-design-tokens.ts @@ -1,7 +1,7 @@ import { reactive, watch } from 'vue'; import { preferences } from '@vben/preferences'; -import { updateCSSVariables } from '@vben/utils'; +import { hlsStringToRGBString, updateCSSVariables } from '@vben/utils'; /** * 用于适配各个框架的设计系统 @@ -102,7 +102,7 @@ export function useNaiveDesignTokens() { const getCssVariableValue = (variable: string, isColor: boolean = true) => { const value = rootStyles.getPropertyValue(variable); - return isColor ? `hsl(${value})` : value; + return isColor ? hlsStringToRGBString(value) : value; }; watch( @@ -150,7 +150,6 @@ export function useNaiveDesignTokens() { }, { immediate: true }, ); - return { commonTokens, };