UNPKG

element-plus

Version:

A Component Library for Vue 3

1 lines 6.73 kB
{"version":3,"file":"button-custom.mjs","sources":["../../../../../../packages/components/button/src/button-custom.ts"],"sourcesContent":["import { computed } from 'vue'\nimport { TinyColor } from '@ctrl/tinycolor'\nimport { useNamespace } from '@element-plus/hooks'\nimport { useFormDisabled } from '@element-plus/components/form'\n\nimport type { ButtonProps } from './button'\n\nexport function darken(color: TinyColor, amount = 20) {\n return color.mix('#141414', amount).toString()\n}\n\nexport function useButtonCustomStyle(props: ButtonProps) {\n const _disabled = useFormDisabled()\n const ns = useNamespace('button')\n\n // calculate hover & active color by custom color\n // only work when custom color\n return computed(() => {\n let styles: Record<string, string> = {}\n\n let buttonColor = props.color\n\n if (buttonColor) {\n const match = (buttonColor as string).match(/var\\((.*?)\\)/)\n if (match) {\n buttonColor = window\n .getComputedStyle(window.document.documentElement)\n .getPropertyValue(match[1])\n }\n const color = new TinyColor(buttonColor)\n const activeBgColor = props.dark\n ? color.tint(20).toString()\n : darken(color, 20)\n\n if (props.plain) {\n styles = ns.cssVarBlock({\n 'bg-color': props.dark\n ? darken(color, 90)\n : color.tint(90).toString(),\n 'text-color': buttonColor,\n 'border-color': props.dark\n ? darken(color, 50)\n : color.tint(50).toString(),\n 'hover-text-color': `var(${ns.cssVarName('color-white')})`,\n 'hover-bg-color': buttonColor,\n 'hover-border-color': buttonColor,\n 'active-bg-color': activeBgColor,\n 'active-text-color': `var(${ns.cssVarName('color-white')})`,\n 'active-border-color': activeBgColor,\n })\n\n if (_disabled.value) {\n styles[ns.cssVarBlockName('disabled-bg-color')] = props.dark\n ? darken(color, 90)\n : color.tint(90).toString()\n styles[ns.cssVarBlockName('disabled-text-color')] = props.dark\n ? darken(color, 50)\n : color.tint(50).toString()\n styles[ns.cssVarBlockName('disabled-border-color')] = props.dark\n ? darken(color, 80)\n : color.tint(80).toString()\n }\n } else {\n const hoverBgColor = props.dark\n ? darken(color, 30)\n : color.tint(30).toString()\n const textColor = color.isDark()\n ? `var(${ns.cssVarName('color-white')})`\n : `var(${ns.cssVarName('color-black')})`\n styles = ns.cssVarBlock({\n 'bg-color': buttonColor,\n 'text-color': textColor,\n 'border-color': buttonColor,\n 'hover-bg-color': hoverBgColor,\n 'hover-text-color': textColor,\n 'hover-border-color': hoverBgColor,\n 'active-bg-color': activeBgColor,\n 'active-border-color': activeBgColor,\n })\n\n if (_disabled.value) {\n const disabledButtonColor = props.dark\n ? darken(color, 50)\n : color.tint(50).toString()\n styles[ns.cssVarBlockName('disabled-bg-color')] = disabledButtonColor\n styles[ns.cssVarBlockName('disabled-text-color')] = props.dark\n ? 'rgba(255, 255, 255, 0.5)'\n : `var(${ns.cssVarName('color-white')})`\n styles[ns.cssVarBlockName('disabled-border-color')] =\n disabledButtonColor\n }\n }\n }\n\n return styles\n })\n}\n"],"names":[],"mappings":"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"}