@coffic/cosy-ui 0.9.67 → 0.9.68
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -60,7 +60,7 @@
|
|
|
60
60
|
* @prop {string} [formmethod] - 表单提交方法,支持 dialog 等特殊值
|
|
61
61
|
* @prop {string} [href] - 链接地址,设置后按钮变为链接形式
|
|
62
62
|
* @prop {boolean} [loading=false] - 是否显示加载状态,设置为 true 时显示加载动画
|
|
63
|
-
* @prop {
|
|
63
|
+
* @prop {Function} [onClick] - 点击事件处理函数
|
|
64
64
|
* @prop {('circle'|'square')} [shape] - 按钮形状,支持 circle(圆形)和 square(方形)
|
|
65
65
|
* @prop {('lg'|'md'|'sm'|'xs')} [size='md'] - 按钮尺寸,支持 lg、md、sm、xs 四种尺寸
|
|
66
66
|
* @prop {string} [target] - 链接目标,支持 _self、_blank、_parent、_top
|
|
@@ -101,7 +101,7 @@ const {
|
|
|
101
101
|
|
|
102
102
|
// 使用共用的工具函数计算基础类名
|
|
103
103
|
const baseButtonClasses = getBaseButtonClasses({
|
|
104
|
-
variant
|
|
104
|
+
variant,
|
|
105
105
|
size,
|
|
106
106
|
shape,
|
|
107
107
|
wide,
|
|
@@ -110,45 +110,8 @@ const baseButtonClasses = getBaseButtonClasses({
|
|
|
110
110
|
class: className,
|
|
111
111
|
});
|
|
112
112
|
|
|
113
|
-
// 添加渐变变体的特殊处理(仅在 Astro 版本中支持)
|
|
114
|
-
const gradientClasses = {
|
|
115
|
-
"gradient-sky":
|
|
116
|
-
"cosy:bg-gradient-to-r cosy:from-sky-400 cosy:to-indigo-500 cosy:text-white hover:cosy:from-sky-500 hover:cosy:to-indigo-600",
|
|
117
|
-
"gradient-watermelon":
|
|
118
|
-
"cosy:bg-gradient-to-r cosy:from-green-300 cosy:via-pink-400 cosy:to-red-500 cosy:text-white hover:cosy:from-green-400 hover:cosy:to-red-600",
|
|
119
|
-
"gradient-lemon":
|
|
120
|
-
"cosy:bg-gradient-to-r cosy:from-yellow-200 cosy:via-yellow-400 cosy:to-yellow-600 cosy:text-gray-900 hover:cosy:from-yellow-300 hover:cosy:to-yellow-700",
|
|
121
|
-
"gradient-grape":
|
|
122
|
-
"cosy:bg-gradient-to-r cosy:from-purple-400 cosy:via-indigo-500 cosy:to-purple-700 cosy:text-white hover:cosy:from-purple-500 hover:cosy:to-purple-800",
|
|
123
|
-
"gradient-mango":
|
|
124
|
-
"cosy:bg-gradient-to-r cosy:from-yellow-300 cosy:via-orange-400 cosy:to-orange-600 cosy:text-white hover:cosy:from-yellow-400 hover:cosy:to-orange-700",
|
|
125
|
-
"gradient-forest":
|
|
126
|
-
"cosy:bg-gradient-to-r cosy:from-green-700 cosy:to-lime-300 cosy:text-white hover:cosy:from-green-800 hover:cosy:to-lime-400",
|
|
127
|
-
"gradient-ocean":
|
|
128
|
-
"cosy:bg-gradient-to-r cosy:from-cyan-400 cosy:to-blue-700 cosy:text-white hover:cosy:from-cyan-500 hover:cosy:to-blue-800",
|
|
129
|
-
"gradient-sunset":
|
|
130
|
-
"cosy:bg-gradient-to-r cosy:from-orange-400 cosy:via-pink-500 cosy:to-red-500 cosy:text-white hover:cosy:from-orange-500 hover:cosy:to-red-600",
|
|
131
|
-
"gradient-flower":
|
|
132
|
-
"cosy:bg-gradient-to-r cosy:from-pink-300 cosy:via-purple-400 cosy:to-fuchsia-500 cosy:text-white hover:cosy:from-pink-400 hover:cosy:to-fuchsia-600",
|
|
133
|
-
"gradient-pitaya":
|
|
134
|
-
"cosy:bg-gradient-to-r cosy:from-pink-200 cosy:via-fuchsia-400 cosy:to-lime-300 cosy:text-white hover:cosy:from-pink-300 hover:cosy:to-lime-400",
|
|
135
|
-
"gradient-banana":
|
|
136
|
-
"cosy:bg-gradient-to-r cosy:from-yellow-100 cosy:via-yellow-300 cosy:to-yellow-500 cosy:text-gray-900 hover:cosy:from-yellow-200 hover:cosy:to-yellow-600",
|
|
137
|
-
"gradient-blueberry":
|
|
138
|
-
"cosy:bg-gradient-to-r cosy:from-blue-400 cosy:via-blue-600 cosy:to-indigo-700 cosy:text-white hover:cosy:from-blue-500 hover:cosy:to-indigo-800",
|
|
139
|
-
"gradient-kiwi":
|
|
140
|
-
"cosy:bg-gradient-to-r cosy:from-lime-200 cosy:via-green-400 cosy:to-green-700 cosy:text-white hover:cosy:from-lime-300 hover:cosy:to-green-800",
|
|
141
|
-
};
|
|
142
|
-
|
|
143
113
|
// 合并所有类名
|
|
144
|
-
const buttonClasses =
|
|
145
|
-
...baseButtonClasses,
|
|
146
|
-
variant && gradientClasses[variant as keyof typeof gradientClasses]
|
|
147
|
-
? gradientClasses[variant as keyof typeof gradientClasses]
|
|
148
|
-
: "",
|
|
149
|
-
]
|
|
150
|
-
.filter(Boolean)
|
|
151
|
-
.join(" ");
|
|
114
|
+
const buttonClasses = baseButtonClasses.filter(Boolean).join(" ");
|
|
152
115
|
---
|
|
153
116
|
|
|
154
117
|
{
|
|
@@ -157,7 +120,9 @@ const buttonClasses = [
|
|
|
157
120
|
href={href}
|
|
158
121
|
class={buttonClasses}
|
|
159
122
|
target={target}
|
|
160
|
-
onclick={
|
|
123
|
+
onclick={
|
|
124
|
+
onClick ? `${onClick.toString()}; return false;` : undefined
|
|
125
|
+
}
|
|
161
126
|
data-variant={variant}
|
|
162
127
|
{...rest}>
|
|
163
128
|
<span class="cosy:flex cosy:items-center cosy:gap-2">
|
|
@@ -171,7 +136,9 @@ const buttonClasses = [
|
|
|
171
136
|
type={formmethod === 'dialog' ? 'submit' : type}
|
|
172
137
|
class={buttonClasses}
|
|
173
138
|
disabled={disabled}
|
|
174
|
-
onclick={
|
|
139
|
+
onclick={
|
|
140
|
+
onClick ? `${onClick.toString()}; return false;` : undefined
|
|
141
|
+
}
|
|
175
142
|
formmethod={formmethod}
|
|
176
143
|
data-variant={variant}
|
|
177
144
|
{...rest}>
|
|
@@ -17,7 +17,7 @@ import { getButtonCombinedClassesVue } from "./class";
|
|
|
17
17
|
* @props {string} [type='button'] - 按钮类型,支持 button、submit、reset
|
|
18
18
|
* @props {string} [href] - 链接地址,设置后按钮变为链接形式
|
|
19
19
|
* @props {string} [target] - 链接目标,支持 _self、_blank、_parent、_top
|
|
20
|
-
* @props {
|
|
20
|
+
* @props {Function} [onClick] - 点击事件处理函数
|
|
21
21
|
*/
|
|
22
22
|
|
|
23
23
|
const props = withDefaults(defineProps<IButtonProps>(), {
|
|
@@ -35,16 +35,9 @@ const buttonClasses = computed(() => getButtonCombinedClassesVue(props));
|
|
|
35
35
|
|
|
36
36
|
// 处理点击事件
|
|
37
37
|
const handleClick = (event: Event) => {
|
|
38
|
-
// 如果提供了 onClick
|
|
39
|
-
if (props.onClick) {
|
|
40
|
-
|
|
41
|
-
// 这里为了保持与 Astro 版本的一致性而实现,但在生产环境中应谨慎使用
|
|
42
|
-
try {
|
|
43
|
-
// 创建一个函数并执行 onClick 字符串中的代码
|
|
44
|
-
new Function("event", props.onClick)(event);
|
|
45
|
-
} catch (error) {
|
|
46
|
-
console.error("Error executing onClick handler:", error);
|
|
47
|
-
}
|
|
38
|
+
// 如果提供了 onClick 属性,则执行相应的函数
|
|
39
|
+
if (props.onClick && typeof props.onClick === "function") {
|
|
40
|
+
props.onClick();
|
|
48
41
|
}
|
|
49
42
|
};
|
|
50
43
|
</script>
|