@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.
@@ -36,9 +36,9 @@ export interface IButtonPropsBase {
36
36
  loading?: boolean;
37
37
 
38
38
  /**
39
- * 点击事件处理函数,支持内联 JavaScript 代码
39
+ * 点击事件处理函数
40
40
  */
41
- onClick?: string;
41
+ onClick?: () => void;
42
42
 
43
43
  /**
44
44
  * 按钮形状,支持 circle(圆形)和 square(方形)
@@ -60,7 +60,7 @@
60
60
  * @prop {string} [formmethod] - 表单提交方法,支持 dialog 等特殊值
61
61
  * @prop {string} [href] - 链接地址,设置后按钮变为链接形式
62
62
  * @prop {boolean} [loading=false] - 是否显示加载状态,设置为 true 时显示加载动画
63
- * @prop {string} [onClick] - 点击事件处理函数,支持内联 JavaScript 代码
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: variant as any, // 注意:这里我们只传递基础变体,渐变变体在 Astro 版本中特殊处理
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={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={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 {string} [onClick] - 点击事件处理函数,支持内联 JavaScript 代码
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 属性,则执行相应的 JavaScript 代码
39
- if (props.onClick) {
40
- // 注意:在实际应用中,直接执行字符串形式的 JavaScript 代码可能存在安全风险
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>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@coffic/cosy-ui",
3
- "version": "0.9.67",
3
+ "version": "0.9.68",
4
4
  "description": "An astro component library",
5
5
  "author": {
6
6
  "name": "nookery",