You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

70 lines
3.1 KiB

3 months ago
  1. 'use strict';
  2. Object.defineProperty(exports, '__esModule', { value: true });
  3. var vue = require('vue');
  4. var tinycolor = require('@ctrl/tinycolor');
  5. var useFormCommonProps = require('../../form/src/hooks/use-form-common-props.js');
  6. var index = require('../../../hooks/use-namespace/index.js');
  7. function darken(color, amount = 20) {
  8. return color.mix("#141414", amount).toString();
  9. }
  10. function useButtonCustomStyle(props) {
  11. const _disabled = useFormCommonProps.useFormDisabled();
  12. const ns = index.useNamespace("button");
  13. return vue.computed(() => {
  14. let styles = {};
  15. let buttonColor = props.color;
  16. if (buttonColor) {
  17. const match = buttonColor.match(/var\((.*?)\)/);
  18. if (match) {
  19. buttonColor = window.getComputedStyle(window.document.documentElement).getPropertyValue(match[1]);
  20. }
  21. const color = new tinycolor.TinyColor(buttonColor);
  22. const activeBgColor = props.dark ? color.tint(20).toString() : darken(color, 20);
  23. if (props.plain) {
  24. styles = ns.cssVarBlock({
  25. "bg-color": props.dark ? darken(color, 90) : color.tint(90).toString(),
  26. "text-color": buttonColor,
  27. "border-color": props.dark ? darken(color, 50) : color.tint(50).toString(),
  28. "hover-text-color": `var(${ns.cssVarName("color-white")})`,
  29. "hover-bg-color": buttonColor,
  30. "hover-border-color": buttonColor,
  31. "active-bg-color": activeBgColor,
  32. "active-text-color": `var(${ns.cssVarName("color-white")})`,
  33. "active-border-color": activeBgColor
  34. });
  35. if (_disabled.value) {
  36. styles[ns.cssVarBlockName("disabled-bg-color")] = props.dark ? darken(color, 90) : color.tint(90).toString();
  37. styles[ns.cssVarBlockName("disabled-text-color")] = props.dark ? darken(color, 50) : color.tint(50).toString();
  38. styles[ns.cssVarBlockName("disabled-border-color")] = props.dark ? darken(color, 80) : color.tint(80).toString();
  39. }
  40. } else {
  41. const hoverBgColor = props.dark ? darken(color, 30) : color.tint(30).toString();
  42. const textColor = color.isDark() ? `var(${ns.cssVarName("color-white")})` : `var(${ns.cssVarName("color-black")})`;
  43. styles = ns.cssVarBlock({
  44. "bg-color": buttonColor,
  45. "text-color": textColor,
  46. "border-color": buttonColor,
  47. "hover-bg-color": hoverBgColor,
  48. "hover-text-color": textColor,
  49. "hover-border-color": hoverBgColor,
  50. "active-bg-color": activeBgColor,
  51. "active-border-color": activeBgColor
  52. });
  53. if (_disabled.value) {
  54. const disabledButtonColor = props.dark ? darken(color, 50) : color.tint(50).toString();
  55. styles[ns.cssVarBlockName("disabled-bg-color")] = disabledButtonColor;
  56. styles[ns.cssVarBlockName("disabled-text-color")] = props.dark ? "rgba(255, 255, 255, 0.5)" : `var(${ns.cssVarName("color-white")})`;
  57. styles[ns.cssVarBlockName("disabled-border-color")] = disabledButtonColor;
  58. }
  59. }
  60. }
  61. return styles;
  62. });
  63. }
  64. exports.darken = darken;
  65. exports.useButtonCustomStyle = useButtonCustomStyle;
  66. //# sourceMappingURL=button-custom.js.map