bee-plus 1.0.0
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.
- package/dist/index.js +534 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +526 -0
- package/dist/index.mjs.map +1 -0
- package/package.json +19 -0
package/dist/index.js
ADDED
|
@@ -0,0 +1,534 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var vue = require('vue');
|
|
6
|
+
|
|
7
|
+
const ButtonType = [
|
|
8
|
+
"primary",
|
|
9
|
+
"success",
|
|
10
|
+
"info",
|
|
11
|
+
"warning",
|
|
12
|
+
"danger",
|
|
13
|
+
"default"
|
|
14
|
+
];
|
|
15
|
+
const ButtonSize = ["large", "default", "small"];
|
|
16
|
+
const buttonProps = {
|
|
17
|
+
type: {
|
|
18
|
+
type: String,
|
|
19
|
+
values: ButtonType,
|
|
20
|
+
default: "default"
|
|
21
|
+
},
|
|
22
|
+
size: {
|
|
23
|
+
type: String,
|
|
24
|
+
values: ButtonSize,
|
|
25
|
+
default: "default"
|
|
26
|
+
},
|
|
27
|
+
plain: Boolean,
|
|
28
|
+
round: Boolean,
|
|
29
|
+
circle: Boolean,
|
|
30
|
+
disabled: Boolean,
|
|
31
|
+
icon: String,
|
|
32
|
+
loading: Boolean
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
const _hoisted_1$1 = ["disabled"];
|
|
36
|
+
const _hoisted_2$1 = {
|
|
37
|
+
key: 0,
|
|
38
|
+
class: "bee-icon-loading"
|
|
39
|
+
};
|
|
40
|
+
const _hoisted_3$1 = { key: 2 };
|
|
41
|
+
var script$1 = /* @__PURE__ */ vue.defineComponent({
|
|
42
|
+
...{
|
|
43
|
+
name: "BeeButton"
|
|
44
|
+
},
|
|
45
|
+
__name: "button",
|
|
46
|
+
props: buttonProps,
|
|
47
|
+
emits: ["click"],
|
|
48
|
+
setup(__props, { emit: __emit }) {
|
|
49
|
+
const props = __props;
|
|
50
|
+
const emit = __emit;
|
|
51
|
+
const handleClick = (evt) => {
|
|
52
|
+
if (props.disabled || props.loading) return;
|
|
53
|
+
emit("click", evt);
|
|
54
|
+
};
|
|
55
|
+
return (_ctx, _cache) => {
|
|
56
|
+
return vue.openBlock(), vue.createElementBlock("button", {
|
|
57
|
+
class: vue.normalizeClass(["bee-button", [
|
|
58
|
+
_ctx.type ? "bee-button--" + _ctx.type : "",
|
|
59
|
+
_ctx.size ? "bee-button--" + _ctx.size : "",
|
|
60
|
+
{
|
|
61
|
+
"is-plain": _ctx.plain,
|
|
62
|
+
"is-round": _ctx.round,
|
|
63
|
+
"is-circle": _ctx.circle,
|
|
64
|
+
"is-disabled": _ctx.disabled,
|
|
65
|
+
"is-loading": _ctx.loading
|
|
66
|
+
}
|
|
67
|
+
]]),
|
|
68
|
+
disabled: _ctx.disabled || _ctx.loading,
|
|
69
|
+
onClick: handleClick
|
|
70
|
+
}, [
|
|
71
|
+
_ctx.loading ? (vue.openBlock(), vue.createElementBlock("i", _hoisted_2$1)) : vue.createCommentVNode("v-if", true),
|
|
72
|
+
_ctx.icon && !_ctx.loading ? (vue.openBlock(), vue.createElementBlock(
|
|
73
|
+
"i",
|
|
74
|
+
{
|
|
75
|
+
key: 1,
|
|
76
|
+
class: vue.normalizeClass(`bee-icon-${_ctx.icon}`)
|
|
77
|
+
},
|
|
78
|
+
null,
|
|
79
|
+
2
|
|
80
|
+
/* CLASS */
|
|
81
|
+
)) : vue.createCommentVNode("v-if", true),
|
|
82
|
+
_ctx.$slots.default ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_3$1, [
|
|
83
|
+
vue.renderSlot(_ctx.$slots, "default")
|
|
84
|
+
])) : vue.createCommentVNode("v-if", true)
|
|
85
|
+
], 10, _hoisted_1$1);
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
});
|
|
89
|
+
|
|
90
|
+
script$1.__file = "packages/components/button/src/button.vue";
|
|
91
|
+
|
|
92
|
+
const withInstall = (com) => {
|
|
93
|
+
com.install = function(app) {
|
|
94
|
+
app.component(com.name, com);
|
|
95
|
+
};
|
|
96
|
+
return com;
|
|
97
|
+
};
|
|
98
|
+
|
|
99
|
+
var index = withInstall(script$1);
|
|
100
|
+
|
|
101
|
+
const progressProps = {
|
|
102
|
+
percentage: {
|
|
103
|
+
type: Number,
|
|
104
|
+
default: 0,
|
|
105
|
+
required: true,
|
|
106
|
+
validator: (val) => val >= 0 && val <= 100
|
|
107
|
+
},
|
|
108
|
+
type: {
|
|
109
|
+
type: String,
|
|
110
|
+
default: "line",
|
|
111
|
+
values: ["line", "circle", "dashboard"]
|
|
112
|
+
},
|
|
113
|
+
strokeWidth: {
|
|
114
|
+
type: Number,
|
|
115
|
+
default: 6
|
|
116
|
+
},
|
|
117
|
+
textInside: {
|
|
118
|
+
type: Boolean,
|
|
119
|
+
default: false
|
|
120
|
+
},
|
|
121
|
+
status: {
|
|
122
|
+
type: String,
|
|
123
|
+
values: ["success", "warning", "exception", ""],
|
|
124
|
+
default: ""
|
|
125
|
+
},
|
|
126
|
+
color: {
|
|
127
|
+
type: [String, Function, Array],
|
|
128
|
+
default: ""
|
|
129
|
+
},
|
|
130
|
+
width: {
|
|
131
|
+
type: Number,
|
|
132
|
+
default: 126
|
|
133
|
+
},
|
|
134
|
+
showText: {
|
|
135
|
+
type: Boolean,
|
|
136
|
+
default: true
|
|
137
|
+
},
|
|
138
|
+
strokeLinecap: {
|
|
139
|
+
type: String,
|
|
140
|
+
default: "round"
|
|
141
|
+
},
|
|
142
|
+
useCanvas: {
|
|
143
|
+
type: Boolean,
|
|
144
|
+
default: false
|
|
145
|
+
},
|
|
146
|
+
animated: {
|
|
147
|
+
type: Boolean,
|
|
148
|
+
default: true
|
|
149
|
+
},
|
|
150
|
+
format: {
|
|
151
|
+
type: Function,
|
|
152
|
+
default: (percentage) => `${percentage}%`
|
|
153
|
+
}
|
|
154
|
+
};
|
|
155
|
+
|
|
156
|
+
const _hoisted_1 = ["aria-valuenow"];
|
|
157
|
+
const _hoisted_2 = {
|
|
158
|
+
key: 0,
|
|
159
|
+
class: "bee-progress-canvas"
|
|
160
|
+
};
|
|
161
|
+
const _hoisted_3 = ["width", "height"];
|
|
162
|
+
const _hoisted_4 = {
|
|
163
|
+
key: 0,
|
|
164
|
+
class: "bee-progress-bar"
|
|
165
|
+
};
|
|
166
|
+
const _hoisted_5 = {
|
|
167
|
+
key: 0,
|
|
168
|
+
class: "bee-progress-bar__innerText"
|
|
169
|
+
};
|
|
170
|
+
const _hoisted_6 = { viewBox: "0 0 100 100" };
|
|
171
|
+
const _hoisted_7 = ["d", "stroke-width"];
|
|
172
|
+
const _hoisted_8 = ["d", "stroke-width"];
|
|
173
|
+
const _hoisted_9 = { key: 0 };
|
|
174
|
+
var script = /* @__PURE__ */ vue.defineComponent({
|
|
175
|
+
...{
|
|
176
|
+
name: "BeeProgress"
|
|
177
|
+
},
|
|
178
|
+
__name: "progress",
|
|
179
|
+
props: progressProps,
|
|
180
|
+
setup(__props) {
|
|
181
|
+
const props = __props;
|
|
182
|
+
const currentValue = vue.ref(props.percentage);
|
|
183
|
+
const animationFrameId = vue.ref(null);
|
|
184
|
+
const canvasRef = vue.ref(null);
|
|
185
|
+
const content = vue.computed(() => props.format(Math.round(currentValue.value)));
|
|
186
|
+
const progressTextSize = vue.computed(() => {
|
|
187
|
+
return props.type === "line" ? 12 + props.strokeWidth * 0.4 : props.width * 0.111111 + 2;
|
|
188
|
+
});
|
|
189
|
+
const statusIconClass = vue.computed(() => {
|
|
190
|
+
if (props.status === "warning") return "bee-icon-warning";
|
|
191
|
+
if (props.status === "success") return "bee-icon-check";
|
|
192
|
+
if (props.status === "exception") return "bee-icon-close";
|
|
193
|
+
return "";
|
|
194
|
+
});
|
|
195
|
+
const getCurrentColor = (percentage) => {
|
|
196
|
+
if (typeof props.color === "function") {
|
|
197
|
+
return props.color(percentage);
|
|
198
|
+
} else if (typeof props.color === "string" && props.color) {
|
|
199
|
+
return props.color;
|
|
200
|
+
} else {
|
|
201
|
+
return getLevelColor(percentage);
|
|
202
|
+
}
|
|
203
|
+
};
|
|
204
|
+
const getLevelColor = (percentage) => {
|
|
205
|
+
if (Array.isArray(props.color)) {
|
|
206
|
+
const colorArray = [...props.color].sort((a, b) => a.percentage - b.percentage);
|
|
207
|
+
for (let i = 0; i < colorArray.length; i++) {
|
|
208
|
+
if (colorArray[i].percentage > percentage) {
|
|
209
|
+
return colorArray[i].color;
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
return colorArray[colorArray.length - 1]?.color;
|
|
213
|
+
}
|
|
214
|
+
return props.status === "success" ? "#2ed573" : props.status === "warning" ? "#ffa502" : props.status === "exception" ? "#ff4757" : "#409eff";
|
|
215
|
+
};
|
|
216
|
+
const barStyle = vue.computed(() => {
|
|
217
|
+
return {
|
|
218
|
+
width: `${currentValue.value}%`,
|
|
219
|
+
backgroundColor: getCurrentColor(currentValue.value),
|
|
220
|
+
transition: "none"
|
|
221
|
+
// Remove CSS transition to avoid conflict with JS animation
|
|
222
|
+
};
|
|
223
|
+
});
|
|
224
|
+
const relativeStrokeWidth = vue.computed(() => {
|
|
225
|
+
return props.strokeWidth / props.width * 100;
|
|
226
|
+
});
|
|
227
|
+
const radius = vue.computed(() => {
|
|
228
|
+
if (props.type === "circle" || props.type === "dashboard") {
|
|
229
|
+
return 50 - relativeStrokeWidth.value / 2;
|
|
230
|
+
}
|
|
231
|
+
return 0;
|
|
232
|
+
});
|
|
233
|
+
const trackPath = vue.computed(() => {
|
|
234
|
+
const r = radius.value;
|
|
235
|
+
const isDashboard = props.type === "dashboard";
|
|
236
|
+
return `
|
|
237
|
+
M 50 50
|
|
238
|
+
m 0 ${isDashboard ? "" : "-"}${r}
|
|
239
|
+
a ${r} ${r} 0 1 1 0 ${isDashboard ? "-" : ""}${r * 2}
|
|
240
|
+
a ${r} ${r} 0 1 1 0 ${isDashboard ? "" : "-"}${r * 2}
|
|
241
|
+
`;
|
|
242
|
+
});
|
|
243
|
+
const perimeter = vue.computed(() => {
|
|
244
|
+
return 2 * Math.PI * radius.value;
|
|
245
|
+
});
|
|
246
|
+
const rate = vue.computed(() => {
|
|
247
|
+
return props.type === "dashboard" ? 0.75 : 1;
|
|
248
|
+
});
|
|
249
|
+
const strokeDashoffset = vue.computed(() => {
|
|
250
|
+
const offset = -1 * perimeter.value * (1 - rate.value) / 2;
|
|
251
|
+
return `${offset}px`;
|
|
252
|
+
});
|
|
253
|
+
const circlePathStyle = vue.computed(() => {
|
|
254
|
+
return {
|
|
255
|
+
strokeDasharray: `${perimeter.value * rate.value * (currentValue.value / 100)}px, ${perimeter.value}px`,
|
|
256
|
+
strokeDashoffset: strokeDashoffset.value,
|
|
257
|
+
transition: "none",
|
|
258
|
+
stroke: getCurrentColor(currentValue.value)
|
|
259
|
+
};
|
|
260
|
+
});
|
|
261
|
+
const trackStyle = vue.computed(() => {
|
|
262
|
+
return {
|
|
263
|
+
strokeDasharray: `${perimeter.value * rate.value}px, ${perimeter.value}px`,
|
|
264
|
+
strokeDashoffset: strokeDashoffset.value
|
|
265
|
+
};
|
|
266
|
+
});
|
|
267
|
+
const canvasWidth = vue.computed(() => props.type === "line" ? 300 : props.width);
|
|
268
|
+
const canvasHeight = vue.computed(() => props.type === "line" ? props.strokeWidth * 3 : props.width);
|
|
269
|
+
const drawLine = (ctx) => {
|
|
270
|
+
const w = canvasWidth.value;
|
|
271
|
+
const h = props.strokeWidth;
|
|
272
|
+
const r = h / 2;
|
|
273
|
+
const y = (canvasHeight.value - h) / 2;
|
|
274
|
+
ctx.beginPath();
|
|
275
|
+
ctx.fillStyle = "#f3f3f3";
|
|
276
|
+
ctx.roundRect(0, y, w, h, r);
|
|
277
|
+
ctx.fill();
|
|
278
|
+
const progressW = currentValue.value / 100 * w;
|
|
279
|
+
if (progressW > 0) {
|
|
280
|
+
ctx.beginPath();
|
|
281
|
+
ctx.fillStyle = getCurrentColor(currentValue.value);
|
|
282
|
+
ctx.roundRect(0, y, progressW, h, r);
|
|
283
|
+
ctx.fill();
|
|
284
|
+
}
|
|
285
|
+
if (props.textInside && props.showText) {
|
|
286
|
+
ctx.fillStyle = "#fff";
|
|
287
|
+
ctx.font = "12px Rubik";
|
|
288
|
+
ctx.textAlign = "right";
|
|
289
|
+
ctx.textBaseline = "middle";
|
|
290
|
+
if (progressW > 30) {
|
|
291
|
+
ctx.fillText(`${Math.round(currentValue.value)}%`, progressW - 5, y + h / 2);
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
};
|
|
295
|
+
const drawCircle = (ctx, isDashboard) => {
|
|
296
|
+
const cx = canvasWidth.value / 2;
|
|
297
|
+
const cy = canvasHeight.value / 2;
|
|
298
|
+
const r = (props.width - props.strokeWidth) / 2;
|
|
299
|
+
const startAngle = isDashboard ? Math.PI * 0.75 : -Math.PI * 0.5;
|
|
300
|
+
const totalAngle = isDashboard ? Math.PI * 1.5 : Math.PI * 2;
|
|
301
|
+
const endAngle = startAngle + totalAngle * (currentValue.value / 100);
|
|
302
|
+
const trackEndAngle = startAngle + totalAngle;
|
|
303
|
+
ctx.lineCap = props.strokeLinecap;
|
|
304
|
+
ctx.lineWidth = props.strokeWidth;
|
|
305
|
+
ctx.beginPath();
|
|
306
|
+
ctx.strokeStyle = "#f3f3f3";
|
|
307
|
+
ctx.arc(cx, cy, r, startAngle, trackEndAngle);
|
|
308
|
+
ctx.stroke();
|
|
309
|
+
if (currentValue.value > 0) {
|
|
310
|
+
ctx.beginPath();
|
|
311
|
+
ctx.strokeStyle = getCurrentColor(currentValue.value);
|
|
312
|
+
ctx.arc(cx, cy, r, startAngle, endAngle);
|
|
313
|
+
ctx.stroke();
|
|
314
|
+
}
|
|
315
|
+
};
|
|
316
|
+
const renderCanvas = () => {
|
|
317
|
+
const canvas = canvasRef.value;
|
|
318
|
+
if (!canvas) return;
|
|
319
|
+
const ctx = canvas.getContext("2d");
|
|
320
|
+
if (!ctx) return;
|
|
321
|
+
ctx.clearRect(0, 0, canvas.width, canvas.height);
|
|
322
|
+
if (props.type === "line") {
|
|
323
|
+
drawLine(ctx);
|
|
324
|
+
} else {
|
|
325
|
+
drawCircle(ctx, props.type === "dashboard");
|
|
326
|
+
}
|
|
327
|
+
};
|
|
328
|
+
const animateProgress = () => {
|
|
329
|
+
if (animationFrameId.value) cancelAnimationFrame(animationFrameId.value);
|
|
330
|
+
const target = props.percentage;
|
|
331
|
+
const animated = props.animated;
|
|
332
|
+
const speed = 2;
|
|
333
|
+
if (!animated) {
|
|
334
|
+
currentValue.value = target;
|
|
335
|
+
if (props.useCanvas) renderCanvas();
|
|
336
|
+
return;
|
|
337
|
+
}
|
|
338
|
+
if (Math.abs(currentValue.value - target) < speed) {
|
|
339
|
+
currentValue.value = target;
|
|
340
|
+
if (props.useCanvas) renderCanvas();
|
|
341
|
+
return;
|
|
342
|
+
}
|
|
343
|
+
if (currentValue.value < target) {
|
|
344
|
+
currentValue.value += speed;
|
|
345
|
+
} else {
|
|
346
|
+
currentValue.value -= speed;
|
|
347
|
+
}
|
|
348
|
+
if (props.useCanvas) renderCanvas();
|
|
349
|
+
animationFrameId.value = requestAnimationFrame(animateProgress);
|
|
350
|
+
};
|
|
351
|
+
vue.watch(() => props.percentage, animateProgress);
|
|
352
|
+
vue.watch(() => props.animated, animateProgress);
|
|
353
|
+
vue.watch(() => props.useCanvas, (val) => {
|
|
354
|
+
if (val) renderCanvas();
|
|
355
|
+
});
|
|
356
|
+
vue.watch(() => [props.type, props.strokeWidth, props.width, props.color], () => {
|
|
357
|
+
if (props.useCanvas) renderCanvas();
|
|
358
|
+
});
|
|
359
|
+
vue.onMounted(() => {
|
|
360
|
+
if (props.useCanvas) renderCanvas();
|
|
361
|
+
});
|
|
362
|
+
vue.onUnmounted(() => {
|
|
363
|
+
if (animationFrameId.value) cancelAnimationFrame(animationFrameId.value);
|
|
364
|
+
});
|
|
365
|
+
return (_ctx, _cache) => {
|
|
366
|
+
return vue.openBlock(), vue.createElementBlock("div", {
|
|
367
|
+
class: vue.normalizeClass(["bee-progress", [
|
|
368
|
+
"bee-progress--" + _ctx.type,
|
|
369
|
+
_ctx.status ? "is-" + _ctx.status : "",
|
|
370
|
+
{
|
|
371
|
+
"bee-progress--without-text": !_ctx.showText,
|
|
372
|
+
"bee-progress--text-inside": _ctx.textInside
|
|
373
|
+
}
|
|
374
|
+
]]),
|
|
375
|
+
role: "progressbar",
|
|
376
|
+
"aria-valuenow": currentValue.value,
|
|
377
|
+
"aria-valuemin": "0",
|
|
378
|
+
"aria-valuemax": "100"
|
|
379
|
+
}, [
|
|
380
|
+
vue.createCommentVNode(" Canvas Mode "),
|
|
381
|
+
_ctx.useCanvas ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2, [
|
|
382
|
+
vue.createElementVNode("canvas", {
|
|
383
|
+
ref_key: "canvasRef",
|
|
384
|
+
ref: canvasRef,
|
|
385
|
+
width: canvasWidth.value,
|
|
386
|
+
height: canvasHeight.value
|
|
387
|
+
}, null, 8, _hoisted_3)
|
|
388
|
+
])) : (vue.openBlock(), vue.createElementBlock(
|
|
389
|
+
vue.Fragment,
|
|
390
|
+
{ key: 1 },
|
|
391
|
+
[
|
|
392
|
+
vue.createCommentVNode(" DOM/SVG Mode "),
|
|
393
|
+
vue.createCommentVNode(" Line Progress "),
|
|
394
|
+
_ctx.type === "line" ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_4, [
|
|
395
|
+
vue.createElementVNode(
|
|
396
|
+
"div",
|
|
397
|
+
{
|
|
398
|
+
class: "bee-progress-bar__outer",
|
|
399
|
+
style: vue.normalizeStyle({ height: _ctx.strokeWidth + "px" })
|
|
400
|
+
},
|
|
401
|
+
[
|
|
402
|
+
vue.createElementVNode(
|
|
403
|
+
"div",
|
|
404
|
+
{
|
|
405
|
+
class: "bee-progress-bar__inner",
|
|
406
|
+
style: vue.normalizeStyle(barStyle.value)
|
|
407
|
+
},
|
|
408
|
+
[
|
|
409
|
+
_ctx.textInside && _ctx.showText ? (vue.openBlock(), vue.createElementBlock(
|
|
410
|
+
"div",
|
|
411
|
+
_hoisted_5,
|
|
412
|
+
vue.toDisplayString(content.value),
|
|
413
|
+
1
|
|
414
|
+
/* TEXT */
|
|
415
|
+
)) : vue.createCommentVNode("v-if", true)
|
|
416
|
+
],
|
|
417
|
+
4
|
|
418
|
+
/* STYLE */
|
|
419
|
+
)
|
|
420
|
+
],
|
|
421
|
+
4
|
|
422
|
+
/* STYLE */
|
|
423
|
+
)
|
|
424
|
+
])) : (vue.openBlock(), vue.createElementBlock(
|
|
425
|
+
vue.Fragment,
|
|
426
|
+
{ key: 1 },
|
|
427
|
+
[
|
|
428
|
+
vue.createCommentVNode(" Circle / Dashboard Progress "),
|
|
429
|
+
vue.createElementVNode(
|
|
430
|
+
"div",
|
|
431
|
+
{
|
|
432
|
+
class: "bee-progress-circle",
|
|
433
|
+
style: vue.normalizeStyle({ width: _ctx.width + "px", height: _ctx.width + "px" })
|
|
434
|
+
},
|
|
435
|
+
[
|
|
436
|
+
(vue.openBlock(), vue.createElementBlock("svg", _hoisted_6, [
|
|
437
|
+
vue.createElementVNode("path", {
|
|
438
|
+
class: "bee-progress-circle__track",
|
|
439
|
+
d: trackPath.value,
|
|
440
|
+
fill: "none",
|
|
441
|
+
"stroke-width": relativeStrokeWidth.value,
|
|
442
|
+
style: vue.normalizeStyle(trackStyle.value)
|
|
443
|
+
}, null, 12, _hoisted_7),
|
|
444
|
+
vue.createElementVNode("path", {
|
|
445
|
+
class: "bee-progress-circle__path",
|
|
446
|
+
d: trackPath.value,
|
|
447
|
+
fill: "none",
|
|
448
|
+
"stroke-linecap": "round",
|
|
449
|
+
"stroke-width": relativeStrokeWidth.value,
|
|
450
|
+
style: vue.normalizeStyle(circlePathStyle.value)
|
|
451
|
+
}, null, 12, _hoisted_8)
|
|
452
|
+
]))
|
|
453
|
+
],
|
|
454
|
+
4
|
|
455
|
+
/* STYLE */
|
|
456
|
+
)
|
|
457
|
+
],
|
|
458
|
+
2112
|
|
459
|
+
/* STABLE_FRAGMENT, DEV_ROOT_FRAGMENT */
|
|
460
|
+
))
|
|
461
|
+
],
|
|
462
|
+
64
|
|
463
|
+
/* STABLE_FRAGMENT */
|
|
464
|
+
)),
|
|
465
|
+
vue.createCommentVNode(" Text (Outside) "),
|
|
466
|
+
!_ctx.textInside && _ctx.showText ? (vue.openBlock(), vue.createElementBlock(
|
|
467
|
+
"div",
|
|
468
|
+
{
|
|
469
|
+
key: 2,
|
|
470
|
+
class: "bee-progress__text",
|
|
471
|
+
style: vue.normalizeStyle({ fontSize: progressTextSize.value + "px" })
|
|
472
|
+
},
|
|
473
|
+
[
|
|
474
|
+
_ctx.$slots.default ? vue.renderSlot(_ctx.$slots, "default", { key: 0 }) : (vue.openBlock(), vue.createElementBlock(
|
|
475
|
+
vue.Fragment,
|
|
476
|
+
{ key: 1 },
|
|
477
|
+
[
|
|
478
|
+
!_ctx.status ? (vue.openBlock(), vue.createElementBlock(
|
|
479
|
+
"span",
|
|
480
|
+
_hoisted_9,
|
|
481
|
+
vue.toDisplayString(content.value),
|
|
482
|
+
1
|
|
483
|
+
/* TEXT */
|
|
484
|
+
)) : (vue.openBlock(), vue.createElementBlock(
|
|
485
|
+
"i",
|
|
486
|
+
{
|
|
487
|
+
key: 1,
|
|
488
|
+
class: vue.normalizeClass(statusIconClass.value)
|
|
489
|
+
},
|
|
490
|
+
null,
|
|
491
|
+
2
|
|
492
|
+
/* CLASS */
|
|
493
|
+
))
|
|
494
|
+
],
|
|
495
|
+
64
|
|
496
|
+
/* STABLE_FRAGMENT */
|
|
497
|
+
))
|
|
498
|
+
],
|
|
499
|
+
4
|
|
500
|
+
/* STYLE */
|
|
501
|
+
)) : vue.createCommentVNode("v-if", true)
|
|
502
|
+
], 10, _hoisted_1);
|
|
503
|
+
};
|
|
504
|
+
}
|
|
505
|
+
});
|
|
506
|
+
|
|
507
|
+
script.__file = "packages/components/progress/src/progress.vue";
|
|
508
|
+
|
|
509
|
+
const BeeProgress = withInstall(script);
|
|
510
|
+
|
|
511
|
+
var components = /*#__PURE__*/Object.freeze({
|
|
512
|
+
__proto__: null,
|
|
513
|
+
BeeButton: index,
|
|
514
|
+
BeeProgress: BeeProgress
|
|
515
|
+
});
|
|
516
|
+
|
|
517
|
+
var Installer = {
|
|
518
|
+
install(app) {
|
|
519
|
+
Object.values(components).forEach((component) => {
|
|
520
|
+
if (component && component.install) {
|
|
521
|
+
app.use(component);
|
|
522
|
+
}
|
|
523
|
+
});
|
|
524
|
+
}
|
|
525
|
+
};
|
|
526
|
+
|
|
527
|
+
const install = Installer.install;
|
|
528
|
+
|
|
529
|
+
exports.BeeButton = index;
|
|
530
|
+
exports.BeeProgress = BeeProgress;
|
|
531
|
+
exports.default = Installer;
|
|
532
|
+
exports.install = install;
|
|
533
|
+
exports.withInstall = withInstall;
|
|
534
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../components/button/src/button.ts","../../components/button/src/button.vue","../../utils/with-install.ts","../../components/button/index.ts","../../components/progress/src/progress.ts","../../components/progress/src/progress.vue","../../components/progress/index.ts","../defaults.ts","../index.ts"],"sourcesContent":["import type { ExtractPropTypes } from \"vue\";\n\nexport const ButtonType = [\n \"primary\",\n \"success\",\n \"info\",\n \"warning\",\n \"danger\",\n \"default\",\n] as const;\n\nexport const ButtonSize = [\"large\", \"default\", \"small\"] as const;\n\nexport const buttonProps = {\n type: {\n type: String,\n values: ButtonType,\n default: \"default\",\n },\n size: {\n type: String,\n values: ButtonSize,\n default: \"default\",\n },\n plain: Boolean,\n round: Boolean,\n circle: Boolean,\n disabled: Boolean,\n icon: String,\n loading: Boolean,\n} as const;\n\nexport type ButtonProps = ExtractPropTypes<typeof buttonProps>;\n","<template>\n <button\n class=\"bee-button\"\n :class=\"[\n type ? 'bee-button--' + type : '',\n size ? 'bee-button--' + size : '',\n {\n 'is-plain': plain,\n 'is-round': round,\n 'is-circle': circle,\n 'is-disabled': disabled,\n 'is-loading': loading,\n },\n ]\"\n :disabled=\"disabled || loading\"\n @click=\"handleClick\"\n >\n <i v-if=\"loading\" class=\"bee-icon-loading\"></i>\n <i v-if=\"icon && !loading\" :class=\"`bee-icon-${icon}`\"></i>\n <span v-if=\"$slots.default\">\n <slot></slot>\n </span>\n </button>\n</template>\n\n<script lang=\"ts\" setup>\nimport { buttonProps } from \"./button\";\n\ndefineOptions({\n name: \"BeeButton\",\n});\n\nconst props = defineProps(buttonProps);\nconst emit = defineEmits([\"click\"]);\n\nconst handleClick = (evt: MouseEvent) => {\n if (props.disabled || props.loading) return;\n emit(\"click\", evt);\n};\n</script>\n","// 该文件会导出一个工具方法,该方法用于组件的安装\n\nimport type { App, Plugin } from \"vue\";\n\n// 这里定义了一个新的 SFCWithInstall 的类型\n// 这是一个泛型类型,代表的是一个即是类型 T 又是 Plugin 类型的类型\n// 也就是说,这个类型的对象既有 T 类型的所有属性和方法,也有 Plugin 的所有属性和方法\nexport type SFCWithInstall<T> = T & {\n install(app: App): void;\n};\n\nexport const withInstall = <T>(com: T) => {\n (com as SFCWithInstall<T>).install = function (app: App) {\n app.component((com as any).name, com as SFCWithInstall<T>);\n }\n return com as SFCWithInstall<T>;\n};\n\n// 之后外部在使用这个 withInstall 的时候,大致是这么使用\n\n// withInstall(MyComponent) ---> 这里其实就是对这个组件做一个增强效果,添加了一个 install 方法\n\n// 之后在其他项目中:\n\n// app.use(MyComponent)\n","// 每个组件的入口文件\n\nimport Button from \"./src/button.vue\";\nimport { withInstall } from \"@bee-plus/utils\";\n\nexport default withInstall(Button);\n","import type { ExtractPropTypes, PropType } from 'vue'\n\nexport type ProgressType = 'line' | 'circle' | 'dashboard'\n\nexport const progressProps = {\n percentage: {\n type: Number,\n default: 0,\n required: true,\n validator: (val: number) => val >= 0 && val <= 100\n },\n type: {\n type: String as PropType<ProgressType>,\n default: 'line',\n values: ['line', 'circle', 'dashboard']\n },\n strokeWidth: {\n type: Number,\n default: 6\n },\n textInside: {\n type: Boolean,\n default: false\n },\n status: {\n type: String,\n values: ['success', 'warning', 'exception', ''],\n default: ''\n },\n color: {\n type: [String, Function, Array] as PropType<string | Function | Array<any>>,\n default: ''\n },\n width: {\n type: Number,\n default: 126\n },\n showText: {\n type: Boolean,\n default: true\n },\n strokeLinecap: {\n type: String,\n default: 'round'\n },\n useCanvas: {\n type: Boolean,\n default: false\n },\n animated: {\n type: Boolean,\n default: true\n },\n format: {\n type: Function,\n default: (percentage: number) => `${percentage}%`\n }\n}\n\nexport type ProgressProps = ExtractPropTypes<typeof progressProps>\n","<template>\n <div\n class=\"bee-progress\"\n :class=\"[\n 'bee-progress--' + type,\n status ? 'is-' + status : '',\n {\n 'bee-progress--without-text': !showText,\n 'bee-progress--text-inside': textInside,\n }\n ]\"\n role=\"progressbar\"\n :aria-valuenow=\"currentValue\"\n aria-valuemin=\"0\"\n aria-valuemax=\"100\"\n >\n <!-- Canvas Mode -->\n <div v-if=\"useCanvas\" class=\"bee-progress-canvas\">\n <canvas ref=\"canvasRef\" :width=\"canvasWidth\" :height=\"canvasHeight\"></canvas>\n </div>\n\n <!-- DOM/SVG Mode -->\n <template v-else>\n <!-- Line Progress -->\n <div v-if=\"type === 'line'\" class=\"bee-progress-bar\">\n <div\n class=\"bee-progress-bar__outer\"\n :style=\"{ height: strokeWidth + 'px' }\"\n >\n <div\n class=\"bee-progress-bar__inner\"\n :style=\"barStyle\"\n >\n <div v-if=\"textInside && showText\" class=\"bee-progress-bar__innerText\">\n {{ content }}\n </div>\n </div>\n </div>\n </div>\n\n <!-- Circle / Dashboard Progress -->\n <div\n v-else\n class=\"bee-progress-circle\"\n :style=\"{ width: width + 'px', height: width + 'px' }\"\n >\n <svg viewBox=\"0 0 100 100\">\n <path\n class=\"bee-progress-circle__track\"\n :d=\"trackPath\"\n fill=\"none\"\n :stroke-width=\"relativeStrokeWidth\"\n :style=\"trackStyle\"\n ></path>\n <path\n class=\"bee-progress-circle__path\"\n :d=\"trackPath\"\n fill=\"none\"\n stroke-linecap=\"round\"\n :stroke-width=\"relativeStrokeWidth\"\n :style=\"circlePathStyle\"\n ></path>\n </svg>\n </div>\n </template>\n\n <!-- Text (Outside) -->\n <div\n v-if=\"!textInside && showText\"\n class=\"bee-progress__text\"\n :style=\"{ fontSize: progressTextSize + 'px' }\"\n >\n <slot v-if=\"$slots.default\"></slot>\n <template v-else>\n <span v-if=\"!status\">{{ content }}</span>\n <i v-else :class=\"statusIconClass\"></i>\n </template>\n </div>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, ref, onMounted, onUnmounted, watch } from 'vue'\nimport { progressProps } from './progress'\n\ndefineOptions({\n name: 'BeeProgress'\n})\n\nconst props = defineProps(progressProps)\n\nconst currentValue = ref(props.percentage)\nconst animationFrameId = ref<number | null>(null)\nconst canvasRef = ref<HTMLCanvasElement | null>(null)\n\n// --- Common Logic ---\nconst content = computed(() => props.format(Math.round(currentValue.value)))\n\nconst progressTextSize = computed(() => {\n return props.type === 'line' ? 12 + props.strokeWidth * 0.4 : props.width * 0.111111 + 2\n})\n\nconst statusIconClass = computed(() => {\n if (props.status === 'warning') return 'bee-icon-warning'\n if (props.status === 'success') return 'bee-icon-check'\n if (props.status === 'exception') return 'bee-icon-close'\n return ''\n})\n\nconst getCurrentColor = (percentage: number) => {\n if (typeof props.color === 'function') {\n return props.color(percentage)\n } else if (typeof props.color === 'string' && props.color) {\n return props.color\n } else {\n return getLevelColor(percentage)\n }\n}\n\nconst getLevelColor = (percentage: number) => {\n if (Array.isArray(props.color)) {\n const colorArray = [...props.color].sort((a, b) => a.percentage - b.percentage);\n for (let i = 0; i < colorArray.length; i++) {\n if (colorArray[i].percentage > percentage) {\n return colorArray[i].color\n }\n }\n return colorArray[colorArray.length - 1]?.color\n }\n return props.status === 'success' ? '#2ed573' :\n props.status === 'warning' ? '#ffa502' :\n props.status === 'exception' ? '#ff4757' : '#409eff'\n}\n\n// --- DOM / SVG Logic ---\n\nconst barStyle = computed(() => {\n return {\n width: `${currentValue.value}%`,\n backgroundColor: getCurrentColor(currentValue.value),\n transition: 'none' // Remove CSS transition to avoid conflict with JS animation\n }\n})\n\nconst relativeStrokeWidth = computed(() => {\n return (props.strokeWidth / props.width) * 100\n})\n\nconst radius = computed(() => {\n if (props.type === 'circle' || props.type === 'dashboard') {\n return 50 - relativeStrokeWidth.value / 2\n }\n return 0\n})\n\nconst trackPath = computed(() => {\n const r = radius.value\n const isDashboard = props.type === 'dashboard'\n return `\n M 50 50\n m 0 ${isDashboard ? '' : '-'}${r}\n a ${r} ${r} 0 1 1 0 ${isDashboard ? '-' : ''}${r * 2}\n a ${r} ${r} 0 1 1 0 ${isDashboard ? '' : '-'}${r * 2}\n `\n})\n\nconst perimeter = computed(() => {\n return 2 * Math.PI * radius.value\n})\n\nconst rate = computed(() => {\n return props.type === 'dashboard' ? 0.75 : 1\n})\n\nconst strokeDashoffset = computed(() => {\n const offset = -1 * perimeter.value * (1 - rate.value) / 2\n return `${offset}px`\n})\n\nconst circlePathStyle = computed(() => {\n return {\n strokeDasharray: `${perimeter.value * rate.value * (currentValue.value / 100)}px, ${perimeter.value}px`,\n strokeDashoffset: strokeDashoffset.value,\n transition: 'none',\n stroke: getCurrentColor(currentValue.value)\n }\n})\n\nconst trackStyle = computed(() => {\n return {\n strokeDasharray: `${perimeter.value * rate.value}px, ${perimeter.value}px`,\n strokeDashoffset: strokeDashoffset.value,\n }\n})\n\n// --- Canvas Logic ---\nconst canvasWidth = computed(() => props.type === 'line' ? 300 : props.width)\nconst canvasHeight = computed(() => props.type === 'line' ? props.strokeWidth * 3 : props.width)\n\n\n\nconst drawLine = (ctx: CanvasRenderingContext2D) => {\n const w = canvasWidth.value\n const h = props.strokeWidth\n const r = h / 2\n const y = (canvasHeight.value - h) / 2\n\n // Track (Background)\n ctx.beginPath()\n ctx.fillStyle = '#f3f3f3'\n ctx.roundRect(0, y, w, h, r)\n ctx.fill()\n\n // Bar (Progress)\n const progressW = (currentValue.value / 100) * w\n if (progressW > 0) {\n ctx.beginPath()\n ctx.fillStyle = getCurrentColor(currentValue.value)\n ctx.roundRect(0, y, progressW, h, r)\n ctx.fill()\n }\n\n // Text Inside Canvas?\n if (props.textInside && props.showText) {\n ctx.fillStyle = '#fff'\n ctx.font = '12px Rubik'\n ctx.textAlign = 'right'\n ctx.textBaseline = 'middle'\n if (progressW > 30) {\n ctx.fillText(`${Math.round(currentValue.value)}%`, progressW - 5, y + h / 2)\n }\n }\n}\n\nconst drawCircle = (ctx: CanvasRenderingContext2D, isDashboard: boolean) => {\n const cx = canvasWidth.value / 2\n const cy = canvasHeight.value / 2\n const r = (props.width - props.strokeWidth) / 2\n const startAngle = isDashboard ? Math.PI * 0.75 : -Math.PI * 0.5\n const totalAngle = isDashboard ? Math.PI * 1.5 : Math.PI * 2\n const endAngle = startAngle + totalAngle * (currentValue.value / 100)\n const trackEndAngle = startAngle + totalAngle\n\n ctx.lineCap = props.strokeLinecap as CanvasLineCap\n ctx.lineWidth = props.strokeWidth\n\n // Track\n ctx.beginPath()\n ctx.strokeStyle = '#f3f3f3'\n ctx.arc(cx, cy, r, startAngle, trackEndAngle)\n ctx.stroke()\n\n // Process\n if (currentValue.value > 0) {\n ctx.beginPath()\n ctx.strokeStyle = getCurrentColor(currentValue.value)\n ctx.arc(cx, cy, r, startAngle, endAngle)\n ctx.stroke()\n }\n}\n\nconst renderCanvas = () => {\n const canvas = canvasRef.value\n if (!canvas) return\n const ctx = canvas.getContext('2d')\n if (!ctx) return\n\n ctx.clearRect(0, 0, canvas.width, canvas.height)\n\n if (props.type === 'line') {\n drawLine(ctx)\n } else {\n drawCircle(ctx, props.type === 'dashboard')\n }\n}\n\n// --- Unified Animation Logic ---\nconst animateProgress = () => {\n if (animationFrameId.value) cancelAnimationFrame(animationFrameId.value)\n\n const target = props.percentage\n const animated = props.animated\n const speed = 2.0 // Animation speed increased\n\n if (!animated) {\n currentValue.value = target\n if (props.useCanvas) renderCanvas()\n return\n }\n\n if (Math.abs(currentValue.value - target) < speed) {\n currentValue.value = target\n if (props.useCanvas) renderCanvas()\n return\n }\n\n if (currentValue.value < target) {\n currentValue.value += speed\n } else {\n currentValue.value -= speed\n }\n\n if (props.useCanvas) renderCanvas()\n animationFrameId.value = requestAnimationFrame(animateProgress)\n}\n\nwatch(() => props.percentage, animateProgress)\nwatch(() => props.animated, animateProgress)\nwatch(() => props.useCanvas, (val) => {\n if (val) renderCanvas()\n})\nwatch(() => [props.type, props.strokeWidth, props.width, props.color], () => {\n if(props.useCanvas) renderCanvas()\n})\n\nonMounted(() => {\n if (props.useCanvas) renderCanvas()\n})\n\nonUnmounted(() => {\n if (animationFrameId.value) cancelAnimationFrame(animationFrameId.value)\n})\n\n</script>\n","import Progress from \"./src/progress.vue\";\nimport { withInstall } from \"@bee-plus/utils\";\n\nexport const BeeProgress = withInstall(Progress);\nexport default BeeProgress;\n","import * as components from '@bee-plus/components'\nimport type { App, Plugin } from 'vue'\n\nexport default {\n install(app: App) {\n Object.values(components).forEach((component) => {\n if (component && (component as any).install) { // Check if it has install method (added by withInstall)\n app.use(component as any)\n }\n })\n }\n} as Plugin\n","import Installer from './defaults'\n\nexport * from '@bee-plus/components'\nexport * from '@bee-plus/utils'\n// export * from '@bee-plus/theme-chalk' // Styles are usually imported separately, but if needed.\n\nexport const install = Installer.install\nexport default Installer\n"],"names":["_createElementBlock","type","size","plain","round","circle","disabled","loading","_openBlock","_hoisted_2","icon","$slots","_hoisted_3","_renderSlot","Button","ref","computed","watch","onMounted","onUnmounted","status","showText","textInside","_createCommentVNode","useCanvas","_createElementVNode","_Fragment","strokeWidth","_toDisplayString","_normalizeStyle","width","Progress"],"mappings":"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"}
|
package/dist/index.mjs
ADDED
|
@@ -0,0 +1,526 @@
|
|
|
1
|
+
import { defineComponent, createElementBlock, openBlock, normalizeClass, createCommentVNode, renderSlot, ref, computed, watch, onMounted, onUnmounted, createElementVNode, Fragment, normalizeStyle, toDisplayString } from 'vue';
|
|
2
|
+
|
|
3
|
+
const ButtonType = [
|
|
4
|
+
"primary",
|
|
5
|
+
"success",
|
|
6
|
+
"info",
|
|
7
|
+
"warning",
|
|
8
|
+
"danger",
|
|
9
|
+
"default"
|
|
10
|
+
];
|
|
11
|
+
const ButtonSize = ["large", "default", "small"];
|
|
12
|
+
const buttonProps = {
|
|
13
|
+
type: {
|
|
14
|
+
type: String,
|
|
15
|
+
values: ButtonType,
|
|
16
|
+
default: "default"
|
|
17
|
+
},
|
|
18
|
+
size: {
|
|
19
|
+
type: String,
|
|
20
|
+
values: ButtonSize,
|
|
21
|
+
default: "default"
|
|
22
|
+
},
|
|
23
|
+
plain: Boolean,
|
|
24
|
+
round: Boolean,
|
|
25
|
+
circle: Boolean,
|
|
26
|
+
disabled: Boolean,
|
|
27
|
+
icon: String,
|
|
28
|
+
loading: Boolean
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
const _hoisted_1$1 = ["disabled"];
|
|
32
|
+
const _hoisted_2$1 = {
|
|
33
|
+
key: 0,
|
|
34
|
+
class: "bee-icon-loading"
|
|
35
|
+
};
|
|
36
|
+
const _hoisted_3$1 = { key: 2 };
|
|
37
|
+
var script$1 = /* @__PURE__ */ defineComponent({
|
|
38
|
+
...{
|
|
39
|
+
name: "BeeButton"
|
|
40
|
+
},
|
|
41
|
+
__name: "button",
|
|
42
|
+
props: buttonProps,
|
|
43
|
+
emits: ["click"],
|
|
44
|
+
setup(__props, { emit: __emit }) {
|
|
45
|
+
const props = __props;
|
|
46
|
+
const emit = __emit;
|
|
47
|
+
const handleClick = (evt) => {
|
|
48
|
+
if (props.disabled || props.loading) return;
|
|
49
|
+
emit("click", evt);
|
|
50
|
+
};
|
|
51
|
+
return (_ctx, _cache) => {
|
|
52
|
+
return openBlock(), createElementBlock("button", {
|
|
53
|
+
class: normalizeClass(["bee-button", [
|
|
54
|
+
_ctx.type ? "bee-button--" + _ctx.type : "",
|
|
55
|
+
_ctx.size ? "bee-button--" + _ctx.size : "",
|
|
56
|
+
{
|
|
57
|
+
"is-plain": _ctx.plain,
|
|
58
|
+
"is-round": _ctx.round,
|
|
59
|
+
"is-circle": _ctx.circle,
|
|
60
|
+
"is-disabled": _ctx.disabled,
|
|
61
|
+
"is-loading": _ctx.loading
|
|
62
|
+
}
|
|
63
|
+
]]),
|
|
64
|
+
disabled: _ctx.disabled || _ctx.loading,
|
|
65
|
+
onClick: handleClick
|
|
66
|
+
}, [
|
|
67
|
+
_ctx.loading ? (openBlock(), createElementBlock("i", _hoisted_2$1)) : createCommentVNode("v-if", true),
|
|
68
|
+
_ctx.icon && !_ctx.loading ? (openBlock(), createElementBlock(
|
|
69
|
+
"i",
|
|
70
|
+
{
|
|
71
|
+
key: 1,
|
|
72
|
+
class: normalizeClass(`bee-icon-${_ctx.icon}`)
|
|
73
|
+
},
|
|
74
|
+
null,
|
|
75
|
+
2
|
|
76
|
+
/* CLASS */
|
|
77
|
+
)) : createCommentVNode("v-if", true),
|
|
78
|
+
_ctx.$slots.default ? (openBlock(), createElementBlock("span", _hoisted_3$1, [
|
|
79
|
+
renderSlot(_ctx.$slots, "default")
|
|
80
|
+
])) : createCommentVNode("v-if", true)
|
|
81
|
+
], 10, _hoisted_1$1);
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
});
|
|
85
|
+
|
|
86
|
+
script$1.__file = "packages/components/button/src/button.vue";
|
|
87
|
+
|
|
88
|
+
const withInstall = (com) => {
|
|
89
|
+
com.install = function(app) {
|
|
90
|
+
app.component(com.name, com);
|
|
91
|
+
};
|
|
92
|
+
return com;
|
|
93
|
+
};
|
|
94
|
+
|
|
95
|
+
var index = withInstall(script$1);
|
|
96
|
+
|
|
97
|
+
const progressProps = {
|
|
98
|
+
percentage: {
|
|
99
|
+
type: Number,
|
|
100
|
+
default: 0,
|
|
101
|
+
required: true,
|
|
102
|
+
validator: (val) => val >= 0 && val <= 100
|
|
103
|
+
},
|
|
104
|
+
type: {
|
|
105
|
+
type: String,
|
|
106
|
+
default: "line",
|
|
107
|
+
values: ["line", "circle", "dashboard"]
|
|
108
|
+
},
|
|
109
|
+
strokeWidth: {
|
|
110
|
+
type: Number,
|
|
111
|
+
default: 6
|
|
112
|
+
},
|
|
113
|
+
textInside: {
|
|
114
|
+
type: Boolean,
|
|
115
|
+
default: false
|
|
116
|
+
},
|
|
117
|
+
status: {
|
|
118
|
+
type: String,
|
|
119
|
+
values: ["success", "warning", "exception", ""],
|
|
120
|
+
default: ""
|
|
121
|
+
},
|
|
122
|
+
color: {
|
|
123
|
+
type: [String, Function, Array],
|
|
124
|
+
default: ""
|
|
125
|
+
},
|
|
126
|
+
width: {
|
|
127
|
+
type: Number,
|
|
128
|
+
default: 126
|
|
129
|
+
},
|
|
130
|
+
showText: {
|
|
131
|
+
type: Boolean,
|
|
132
|
+
default: true
|
|
133
|
+
},
|
|
134
|
+
strokeLinecap: {
|
|
135
|
+
type: String,
|
|
136
|
+
default: "round"
|
|
137
|
+
},
|
|
138
|
+
useCanvas: {
|
|
139
|
+
type: Boolean,
|
|
140
|
+
default: false
|
|
141
|
+
},
|
|
142
|
+
animated: {
|
|
143
|
+
type: Boolean,
|
|
144
|
+
default: true
|
|
145
|
+
},
|
|
146
|
+
format: {
|
|
147
|
+
type: Function,
|
|
148
|
+
default: (percentage) => `${percentage}%`
|
|
149
|
+
}
|
|
150
|
+
};
|
|
151
|
+
|
|
152
|
+
const _hoisted_1 = ["aria-valuenow"];
|
|
153
|
+
const _hoisted_2 = {
|
|
154
|
+
key: 0,
|
|
155
|
+
class: "bee-progress-canvas"
|
|
156
|
+
};
|
|
157
|
+
const _hoisted_3 = ["width", "height"];
|
|
158
|
+
const _hoisted_4 = {
|
|
159
|
+
key: 0,
|
|
160
|
+
class: "bee-progress-bar"
|
|
161
|
+
};
|
|
162
|
+
const _hoisted_5 = {
|
|
163
|
+
key: 0,
|
|
164
|
+
class: "bee-progress-bar__innerText"
|
|
165
|
+
};
|
|
166
|
+
const _hoisted_6 = { viewBox: "0 0 100 100" };
|
|
167
|
+
const _hoisted_7 = ["d", "stroke-width"];
|
|
168
|
+
const _hoisted_8 = ["d", "stroke-width"];
|
|
169
|
+
const _hoisted_9 = { key: 0 };
|
|
170
|
+
var script = /* @__PURE__ */ defineComponent({
|
|
171
|
+
...{
|
|
172
|
+
name: "BeeProgress"
|
|
173
|
+
},
|
|
174
|
+
__name: "progress",
|
|
175
|
+
props: progressProps,
|
|
176
|
+
setup(__props) {
|
|
177
|
+
const props = __props;
|
|
178
|
+
const currentValue = ref(props.percentage);
|
|
179
|
+
const animationFrameId = ref(null);
|
|
180
|
+
const canvasRef = ref(null);
|
|
181
|
+
const content = computed(() => props.format(Math.round(currentValue.value)));
|
|
182
|
+
const progressTextSize = computed(() => {
|
|
183
|
+
return props.type === "line" ? 12 + props.strokeWidth * 0.4 : props.width * 0.111111 + 2;
|
|
184
|
+
});
|
|
185
|
+
const statusIconClass = computed(() => {
|
|
186
|
+
if (props.status === "warning") return "bee-icon-warning";
|
|
187
|
+
if (props.status === "success") return "bee-icon-check";
|
|
188
|
+
if (props.status === "exception") return "bee-icon-close";
|
|
189
|
+
return "";
|
|
190
|
+
});
|
|
191
|
+
const getCurrentColor = (percentage) => {
|
|
192
|
+
if (typeof props.color === "function") {
|
|
193
|
+
return props.color(percentage);
|
|
194
|
+
} else if (typeof props.color === "string" && props.color) {
|
|
195
|
+
return props.color;
|
|
196
|
+
} else {
|
|
197
|
+
return getLevelColor(percentage);
|
|
198
|
+
}
|
|
199
|
+
};
|
|
200
|
+
const getLevelColor = (percentage) => {
|
|
201
|
+
if (Array.isArray(props.color)) {
|
|
202
|
+
const colorArray = [...props.color].sort((a, b) => a.percentage - b.percentage);
|
|
203
|
+
for (let i = 0; i < colorArray.length; i++) {
|
|
204
|
+
if (colorArray[i].percentage > percentage) {
|
|
205
|
+
return colorArray[i].color;
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
return colorArray[colorArray.length - 1]?.color;
|
|
209
|
+
}
|
|
210
|
+
return props.status === "success" ? "#2ed573" : props.status === "warning" ? "#ffa502" : props.status === "exception" ? "#ff4757" : "#409eff";
|
|
211
|
+
};
|
|
212
|
+
const barStyle = computed(() => {
|
|
213
|
+
return {
|
|
214
|
+
width: `${currentValue.value}%`,
|
|
215
|
+
backgroundColor: getCurrentColor(currentValue.value),
|
|
216
|
+
transition: "none"
|
|
217
|
+
// Remove CSS transition to avoid conflict with JS animation
|
|
218
|
+
};
|
|
219
|
+
});
|
|
220
|
+
const relativeStrokeWidth = computed(() => {
|
|
221
|
+
return props.strokeWidth / props.width * 100;
|
|
222
|
+
});
|
|
223
|
+
const radius = computed(() => {
|
|
224
|
+
if (props.type === "circle" || props.type === "dashboard") {
|
|
225
|
+
return 50 - relativeStrokeWidth.value / 2;
|
|
226
|
+
}
|
|
227
|
+
return 0;
|
|
228
|
+
});
|
|
229
|
+
const trackPath = computed(() => {
|
|
230
|
+
const r = radius.value;
|
|
231
|
+
const isDashboard = props.type === "dashboard";
|
|
232
|
+
return `
|
|
233
|
+
M 50 50
|
|
234
|
+
m 0 ${isDashboard ? "" : "-"}${r}
|
|
235
|
+
a ${r} ${r} 0 1 1 0 ${isDashboard ? "-" : ""}${r * 2}
|
|
236
|
+
a ${r} ${r} 0 1 1 0 ${isDashboard ? "" : "-"}${r * 2}
|
|
237
|
+
`;
|
|
238
|
+
});
|
|
239
|
+
const perimeter = computed(() => {
|
|
240
|
+
return 2 * Math.PI * radius.value;
|
|
241
|
+
});
|
|
242
|
+
const rate = computed(() => {
|
|
243
|
+
return props.type === "dashboard" ? 0.75 : 1;
|
|
244
|
+
});
|
|
245
|
+
const strokeDashoffset = computed(() => {
|
|
246
|
+
const offset = -1 * perimeter.value * (1 - rate.value) / 2;
|
|
247
|
+
return `${offset}px`;
|
|
248
|
+
});
|
|
249
|
+
const circlePathStyle = computed(() => {
|
|
250
|
+
return {
|
|
251
|
+
strokeDasharray: `${perimeter.value * rate.value * (currentValue.value / 100)}px, ${perimeter.value}px`,
|
|
252
|
+
strokeDashoffset: strokeDashoffset.value,
|
|
253
|
+
transition: "none",
|
|
254
|
+
stroke: getCurrentColor(currentValue.value)
|
|
255
|
+
};
|
|
256
|
+
});
|
|
257
|
+
const trackStyle = computed(() => {
|
|
258
|
+
return {
|
|
259
|
+
strokeDasharray: `${perimeter.value * rate.value}px, ${perimeter.value}px`,
|
|
260
|
+
strokeDashoffset: strokeDashoffset.value
|
|
261
|
+
};
|
|
262
|
+
});
|
|
263
|
+
const canvasWidth = computed(() => props.type === "line" ? 300 : props.width);
|
|
264
|
+
const canvasHeight = computed(() => props.type === "line" ? props.strokeWidth * 3 : props.width);
|
|
265
|
+
const drawLine = (ctx) => {
|
|
266
|
+
const w = canvasWidth.value;
|
|
267
|
+
const h = props.strokeWidth;
|
|
268
|
+
const r = h / 2;
|
|
269
|
+
const y = (canvasHeight.value - h) / 2;
|
|
270
|
+
ctx.beginPath();
|
|
271
|
+
ctx.fillStyle = "#f3f3f3";
|
|
272
|
+
ctx.roundRect(0, y, w, h, r);
|
|
273
|
+
ctx.fill();
|
|
274
|
+
const progressW = currentValue.value / 100 * w;
|
|
275
|
+
if (progressW > 0) {
|
|
276
|
+
ctx.beginPath();
|
|
277
|
+
ctx.fillStyle = getCurrentColor(currentValue.value);
|
|
278
|
+
ctx.roundRect(0, y, progressW, h, r);
|
|
279
|
+
ctx.fill();
|
|
280
|
+
}
|
|
281
|
+
if (props.textInside && props.showText) {
|
|
282
|
+
ctx.fillStyle = "#fff";
|
|
283
|
+
ctx.font = "12px Rubik";
|
|
284
|
+
ctx.textAlign = "right";
|
|
285
|
+
ctx.textBaseline = "middle";
|
|
286
|
+
if (progressW > 30) {
|
|
287
|
+
ctx.fillText(`${Math.round(currentValue.value)}%`, progressW - 5, y + h / 2);
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
};
|
|
291
|
+
const drawCircle = (ctx, isDashboard) => {
|
|
292
|
+
const cx = canvasWidth.value / 2;
|
|
293
|
+
const cy = canvasHeight.value / 2;
|
|
294
|
+
const r = (props.width - props.strokeWidth) / 2;
|
|
295
|
+
const startAngle = isDashboard ? Math.PI * 0.75 : -Math.PI * 0.5;
|
|
296
|
+
const totalAngle = isDashboard ? Math.PI * 1.5 : Math.PI * 2;
|
|
297
|
+
const endAngle = startAngle + totalAngle * (currentValue.value / 100);
|
|
298
|
+
const trackEndAngle = startAngle + totalAngle;
|
|
299
|
+
ctx.lineCap = props.strokeLinecap;
|
|
300
|
+
ctx.lineWidth = props.strokeWidth;
|
|
301
|
+
ctx.beginPath();
|
|
302
|
+
ctx.strokeStyle = "#f3f3f3";
|
|
303
|
+
ctx.arc(cx, cy, r, startAngle, trackEndAngle);
|
|
304
|
+
ctx.stroke();
|
|
305
|
+
if (currentValue.value > 0) {
|
|
306
|
+
ctx.beginPath();
|
|
307
|
+
ctx.strokeStyle = getCurrentColor(currentValue.value);
|
|
308
|
+
ctx.arc(cx, cy, r, startAngle, endAngle);
|
|
309
|
+
ctx.stroke();
|
|
310
|
+
}
|
|
311
|
+
};
|
|
312
|
+
const renderCanvas = () => {
|
|
313
|
+
const canvas = canvasRef.value;
|
|
314
|
+
if (!canvas) return;
|
|
315
|
+
const ctx = canvas.getContext("2d");
|
|
316
|
+
if (!ctx) return;
|
|
317
|
+
ctx.clearRect(0, 0, canvas.width, canvas.height);
|
|
318
|
+
if (props.type === "line") {
|
|
319
|
+
drawLine(ctx);
|
|
320
|
+
} else {
|
|
321
|
+
drawCircle(ctx, props.type === "dashboard");
|
|
322
|
+
}
|
|
323
|
+
};
|
|
324
|
+
const animateProgress = () => {
|
|
325
|
+
if (animationFrameId.value) cancelAnimationFrame(animationFrameId.value);
|
|
326
|
+
const target = props.percentage;
|
|
327
|
+
const animated = props.animated;
|
|
328
|
+
const speed = 2;
|
|
329
|
+
if (!animated) {
|
|
330
|
+
currentValue.value = target;
|
|
331
|
+
if (props.useCanvas) renderCanvas();
|
|
332
|
+
return;
|
|
333
|
+
}
|
|
334
|
+
if (Math.abs(currentValue.value - target) < speed) {
|
|
335
|
+
currentValue.value = target;
|
|
336
|
+
if (props.useCanvas) renderCanvas();
|
|
337
|
+
return;
|
|
338
|
+
}
|
|
339
|
+
if (currentValue.value < target) {
|
|
340
|
+
currentValue.value += speed;
|
|
341
|
+
} else {
|
|
342
|
+
currentValue.value -= speed;
|
|
343
|
+
}
|
|
344
|
+
if (props.useCanvas) renderCanvas();
|
|
345
|
+
animationFrameId.value = requestAnimationFrame(animateProgress);
|
|
346
|
+
};
|
|
347
|
+
watch(() => props.percentage, animateProgress);
|
|
348
|
+
watch(() => props.animated, animateProgress);
|
|
349
|
+
watch(() => props.useCanvas, (val) => {
|
|
350
|
+
if (val) renderCanvas();
|
|
351
|
+
});
|
|
352
|
+
watch(() => [props.type, props.strokeWidth, props.width, props.color], () => {
|
|
353
|
+
if (props.useCanvas) renderCanvas();
|
|
354
|
+
});
|
|
355
|
+
onMounted(() => {
|
|
356
|
+
if (props.useCanvas) renderCanvas();
|
|
357
|
+
});
|
|
358
|
+
onUnmounted(() => {
|
|
359
|
+
if (animationFrameId.value) cancelAnimationFrame(animationFrameId.value);
|
|
360
|
+
});
|
|
361
|
+
return (_ctx, _cache) => {
|
|
362
|
+
return openBlock(), createElementBlock("div", {
|
|
363
|
+
class: normalizeClass(["bee-progress", [
|
|
364
|
+
"bee-progress--" + _ctx.type,
|
|
365
|
+
_ctx.status ? "is-" + _ctx.status : "",
|
|
366
|
+
{
|
|
367
|
+
"bee-progress--without-text": !_ctx.showText,
|
|
368
|
+
"bee-progress--text-inside": _ctx.textInside
|
|
369
|
+
}
|
|
370
|
+
]]),
|
|
371
|
+
role: "progressbar",
|
|
372
|
+
"aria-valuenow": currentValue.value,
|
|
373
|
+
"aria-valuemin": "0",
|
|
374
|
+
"aria-valuemax": "100"
|
|
375
|
+
}, [
|
|
376
|
+
createCommentVNode(" Canvas Mode "),
|
|
377
|
+
_ctx.useCanvas ? (openBlock(), createElementBlock("div", _hoisted_2, [
|
|
378
|
+
createElementVNode("canvas", {
|
|
379
|
+
ref_key: "canvasRef",
|
|
380
|
+
ref: canvasRef,
|
|
381
|
+
width: canvasWidth.value,
|
|
382
|
+
height: canvasHeight.value
|
|
383
|
+
}, null, 8, _hoisted_3)
|
|
384
|
+
])) : (openBlock(), createElementBlock(
|
|
385
|
+
Fragment,
|
|
386
|
+
{ key: 1 },
|
|
387
|
+
[
|
|
388
|
+
createCommentVNode(" DOM/SVG Mode "),
|
|
389
|
+
createCommentVNode(" Line Progress "),
|
|
390
|
+
_ctx.type === "line" ? (openBlock(), createElementBlock("div", _hoisted_4, [
|
|
391
|
+
createElementVNode(
|
|
392
|
+
"div",
|
|
393
|
+
{
|
|
394
|
+
class: "bee-progress-bar__outer",
|
|
395
|
+
style: normalizeStyle({ height: _ctx.strokeWidth + "px" })
|
|
396
|
+
},
|
|
397
|
+
[
|
|
398
|
+
createElementVNode(
|
|
399
|
+
"div",
|
|
400
|
+
{
|
|
401
|
+
class: "bee-progress-bar__inner",
|
|
402
|
+
style: normalizeStyle(barStyle.value)
|
|
403
|
+
},
|
|
404
|
+
[
|
|
405
|
+
_ctx.textInside && _ctx.showText ? (openBlock(), createElementBlock(
|
|
406
|
+
"div",
|
|
407
|
+
_hoisted_5,
|
|
408
|
+
toDisplayString(content.value),
|
|
409
|
+
1
|
|
410
|
+
/* TEXT */
|
|
411
|
+
)) : createCommentVNode("v-if", true)
|
|
412
|
+
],
|
|
413
|
+
4
|
|
414
|
+
/* STYLE */
|
|
415
|
+
)
|
|
416
|
+
],
|
|
417
|
+
4
|
|
418
|
+
/* STYLE */
|
|
419
|
+
)
|
|
420
|
+
])) : (openBlock(), createElementBlock(
|
|
421
|
+
Fragment,
|
|
422
|
+
{ key: 1 },
|
|
423
|
+
[
|
|
424
|
+
createCommentVNode(" Circle / Dashboard Progress "),
|
|
425
|
+
createElementVNode(
|
|
426
|
+
"div",
|
|
427
|
+
{
|
|
428
|
+
class: "bee-progress-circle",
|
|
429
|
+
style: normalizeStyle({ width: _ctx.width + "px", height: _ctx.width + "px" })
|
|
430
|
+
},
|
|
431
|
+
[
|
|
432
|
+
(openBlock(), createElementBlock("svg", _hoisted_6, [
|
|
433
|
+
createElementVNode("path", {
|
|
434
|
+
class: "bee-progress-circle__track",
|
|
435
|
+
d: trackPath.value,
|
|
436
|
+
fill: "none",
|
|
437
|
+
"stroke-width": relativeStrokeWidth.value,
|
|
438
|
+
style: normalizeStyle(trackStyle.value)
|
|
439
|
+
}, null, 12, _hoisted_7),
|
|
440
|
+
createElementVNode("path", {
|
|
441
|
+
class: "bee-progress-circle__path",
|
|
442
|
+
d: trackPath.value,
|
|
443
|
+
fill: "none",
|
|
444
|
+
"stroke-linecap": "round",
|
|
445
|
+
"stroke-width": relativeStrokeWidth.value,
|
|
446
|
+
style: normalizeStyle(circlePathStyle.value)
|
|
447
|
+
}, null, 12, _hoisted_8)
|
|
448
|
+
]))
|
|
449
|
+
],
|
|
450
|
+
4
|
|
451
|
+
/* STYLE */
|
|
452
|
+
)
|
|
453
|
+
],
|
|
454
|
+
2112
|
|
455
|
+
/* STABLE_FRAGMENT, DEV_ROOT_FRAGMENT */
|
|
456
|
+
))
|
|
457
|
+
],
|
|
458
|
+
64
|
|
459
|
+
/* STABLE_FRAGMENT */
|
|
460
|
+
)),
|
|
461
|
+
createCommentVNode(" Text (Outside) "),
|
|
462
|
+
!_ctx.textInside && _ctx.showText ? (openBlock(), createElementBlock(
|
|
463
|
+
"div",
|
|
464
|
+
{
|
|
465
|
+
key: 2,
|
|
466
|
+
class: "bee-progress__text",
|
|
467
|
+
style: normalizeStyle({ fontSize: progressTextSize.value + "px" })
|
|
468
|
+
},
|
|
469
|
+
[
|
|
470
|
+
_ctx.$slots.default ? renderSlot(_ctx.$slots, "default", { key: 0 }) : (openBlock(), createElementBlock(
|
|
471
|
+
Fragment,
|
|
472
|
+
{ key: 1 },
|
|
473
|
+
[
|
|
474
|
+
!_ctx.status ? (openBlock(), createElementBlock(
|
|
475
|
+
"span",
|
|
476
|
+
_hoisted_9,
|
|
477
|
+
toDisplayString(content.value),
|
|
478
|
+
1
|
|
479
|
+
/* TEXT */
|
|
480
|
+
)) : (openBlock(), createElementBlock(
|
|
481
|
+
"i",
|
|
482
|
+
{
|
|
483
|
+
key: 1,
|
|
484
|
+
class: normalizeClass(statusIconClass.value)
|
|
485
|
+
},
|
|
486
|
+
null,
|
|
487
|
+
2
|
|
488
|
+
/* CLASS */
|
|
489
|
+
))
|
|
490
|
+
],
|
|
491
|
+
64
|
|
492
|
+
/* STABLE_FRAGMENT */
|
|
493
|
+
))
|
|
494
|
+
],
|
|
495
|
+
4
|
|
496
|
+
/* STYLE */
|
|
497
|
+
)) : createCommentVNode("v-if", true)
|
|
498
|
+
], 10, _hoisted_1);
|
|
499
|
+
};
|
|
500
|
+
}
|
|
501
|
+
});
|
|
502
|
+
|
|
503
|
+
script.__file = "packages/components/progress/src/progress.vue";
|
|
504
|
+
|
|
505
|
+
const BeeProgress = withInstall(script);
|
|
506
|
+
|
|
507
|
+
var components = /*#__PURE__*/Object.freeze({
|
|
508
|
+
__proto__: null,
|
|
509
|
+
BeeButton: index,
|
|
510
|
+
BeeProgress: BeeProgress
|
|
511
|
+
});
|
|
512
|
+
|
|
513
|
+
var Installer = {
|
|
514
|
+
install(app) {
|
|
515
|
+
Object.values(components).forEach((component) => {
|
|
516
|
+
if (component && component.install) {
|
|
517
|
+
app.use(component);
|
|
518
|
+
}
|
|
519
|
+
});
|
|
520
|
+
}
|
|
521
|
+
};
|
|
522
|
+
|
|
523
|
+
const install = Installer.install;
|
|
524
|
+
|
|
525
|
+
export { index as BeeButton, BeeProgress, Installer as default, install, withInstall };
|
|
526
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../../components/button/src/button.ts","../../components/button/src/button.vue","../../utils/with-install.ts","../../components/button/index.ts","../../components/progress/src/progress.ts","../../components/progress/src/progress.vue","../../components/progress/index.ts","../defaults.ts","../index.ts"],"sourcesContent":["import type { ExtractPropTypes } from \"vue\";\n\nexport const ButtonType = [\n \"primary\",\n \"success\",\n \"info\",\n \"warning\",\n \"danger\",\n \"default\",\n] as const;\n\nexport const ButtonSize = [\"large\", \"default\", \"small\"] as const;\n\nexport const buttonProps = {\n type: {\n type: String,\n values: ButtonType,\n default: \"default\",\n },\n size: {\n type: String,\n values: ButtonSize,\n default: \"default\",\n },\n plain: Boolean,\n round: Boolean,\n circle: Boolean,\n disabled: Boolean,\n icon: String,\n loading: Boolean,\n} as const;\n\nexport type ButtonProps = ExtractPropTypes<typeof buttonProps>;\n","<template>\n <button\n class=\"bee-button\"\n :class=\"[\n type ? 'bee-button--' + type : '',\n size ? 'bee-button--' + size : '',\n {\n 'is-plain': plain,\n 'is-round': round,\n 'is-circle': circle,\n 'is-disabled': disabled,\n 'is-loading': loading,\n },\n ]\"\n :disabled=\"disabled || loading\"\n @click=\"handleClick\"\n >\n <i v-if=\"loading\" class=\"bee-icon-loading\"></i>\n <i v-if=\"icon && !loading\" :class=\"`bee-icon-${icon}`\"></i>\n <span v-if=\"$slots.default\">\n <slot></slot>\n </span>\n </button>\n</template>\n\n<script lang=\"ts\" setup>\nimport { buttonProps } from \"./button\";\n\ndefineOptions({\n name: \"BeeButton\",\n});\n\nconst props = defineProps(buttonProps);\nconst emit = defineEmits([\"click\"]);\n\nconst handleClick = (evt: MouseEvent) => {\n if (props.disabled || props.loading) return;\n emit(\"click\", evt);\n};\n</script>\n","// 该文件会导出一个工具方法,该方法用于组件的安装\n\nimport type { App, Plugin } from \"vue\";\n\n// 这里定义了一个新的 SFCWithInstall 的类型\n// 这是一个泛型类型,代表的是一个即是类型 T 又是 Plugin 类型的类型\n// 也就是说,这个类型的对象既有 T 类型的所有属性和方法,也有 Plugin 的所有属性和方法\nexport type SFCWithInstall<T> = T & {\n install(app: App): void;\n};\n\nexport const withInstall = <T>(com: T) => {\n (com as SFCWithInstall<T>).install = function (app: App) {\n app.component((com as any).name, com as SFCWithInstall<T>);\n }\n return com as SFCWithInstall<T>;\n};\n\n// 之后外部在使用这个 withInstall 的时候,大致是这么使用\n\n// withInstall(MyComponent) ---> 这里其实就是对这个组件做一个增强效果,添加了一个 install 方法\n\n// 之后在其他项目中:\n\n// app.use(MyComponent)\n","// 每个组件的入口文件\n\nimport Button from \"./src/button.vue\";\nimport { withInstall } from \"@bee-plus/utils\";\n\nexport default withInstall(Button);\n","import type { ExtractPropTypes, PropType } from 'vue'\n\nexport type ProgressType = 'line' | 'circle' | 'dashboard'\n\nexport const progressProps = {\n percentage: {\n type: Number,\n default: 0,\n required: true,\n validator: (val: number) => val >= 0 && val <= 100\n },\n type: {\n type: String as PropType<ProgressType>,\n default: 'line',\n values: ['line', 'circle', 'dashboard']\n },\n strokeWidth: {\n type: Number,\n default: 6\n },\n textInside: {\n type: Boolean,\n default: false\n },\n status: {\n type: String,\n values: ['success', 'warning', 'exception', ''],\n default: ''\n },\n color: {\n type: [String, Function, Array] as PropType<string | Function | Array<any>>,\n default: ''\n },\n width: {\n type: Number,\n default: 126\n },\n showText: {\n type: Boolean,\n default: true\n },\n strokeLinecap: {\n type: String,\n default: 'round'\n },\n useCanvas: {\n type: Boolean,\n default: false\n },\n animated: {\n type: Boolean,\n default: true\n },\n format: {\n type: Function,\n default: (percentage: number) => `${percentage}%`\n }\n}\n\nexport type ProgressProps = ExtractPropTypes<typeof progressProps>\n","<template>\n <div\n class=\"bee-progress\"\n :class=\"[\n 'bee-progress--' + type,\n status ? 'is-' + status : '',\n {\n 'bee-progress--without-text': !showText,\n 'bee-progress--text-inside': textInside,\n }\n ]\"\n role=\"progressbar\"\n :aria-valuenow=\"currentValue\"\n aria-valuemin=\"0\"\n aria-valuemax=\"100\"\n >\n <!-- Canvas Mode -->\n <div v-if=\"useCanvas\" class=\"bee-progress-canvas\">\n <canvas ref=\"canvasRef\" :width=\"canvasWidth\" :height=\"canvasHeight\"></canvas>\n </div>\n\n <!-- DOM/SVG Mode -->\n <template v-else>\n <!-- Line Progress -->\n <div v-if=\"type === 'line'\" class=\"bee-progress-bar\">\n <div\n class=\"bee-progress-bar__outer\"\n :style=\"{ height: strokeWidth + 'px' }\"\n >\n <div\n class=\"bee-progress-bar__inner\"\n :style=\"barStyle\"\n >\n <div v-if=\"textInside && showText\" class=\"bee-progress-bar__innerText\">\n {{ content }}\n </div>\n </div>\n </div>\n </div>\n\n <!-- Circle / Dashboard Progress -->\n <div\n v-else\n class=\"bee-progress-circle\"\n :style=\"{ width: width + 'px', height: width + 'px' }\"\n >\n <svg viewBox=\"0 0 100 100\">\n <path\n class=\"bee-progress-circle__track\"\n :d=\"trackPath\"\n fill=\"none\"\n :stroke-width=\"relativeStrokeWidth\"\n :style=\"trackStyle\"\n ></path>\n <path\n class=\"bee-progress-circle__path\"\n :d=\"trackPath\"\n fill=\"none\"\n stroke-linecap=\"round\"\n :stroke-width=\"relativeStrokeWidth\"\n :style=\"circlePathStyle\"\n ></path>\n </svg>\n </div>\n </template>\n\n <!-- Text (Outside) -->\n <div\n v-if=\"!textInside && showText\"\n class=\"bee-progress__text\"\n :style=\"{ fontSize: progressTextSize + 'px' }\"\n >\n <slot v-if=\"$slots.default\"></slot>\n <template v-else>\n <span v-if=\"!status\">{{ content }}</span>\n <i v-else :class=\"statusIconClass\"></i>\n </template>\n </div>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, ref, onMounted, onUnmounted, watch } from 'vue'\nimport { progressProps } from './progress'\n\ndefineOptions({\n name: 'BeeProgress'\n})\n\nconst props = defineProps(progressProps)\n\nconst currentValue = ref(props.percentage)\nconst animationFrameId = ref<number | null>(null)\nconst canvasRef = ref<HTMLCanvasElement | null>(null)\n\n// --- Common Logic ---\nconst content = computed(() => props.format(Math.round(currentValue.value)))\n\nconst progressTextSize = computed(() => {\n return props.type === 'line' ? 12 + props.strokeWidth * 0.4 : props.width * 0.111111 + 2\n})\n\nconst statusIconClass = computed(() => {\n if (props.status === 'warning') return 'bee-icon-warning'\n if (props.status === 'success') return 'bee-icon-check'\n if (props.status === 'exception') return 'bee-icon-close'\n return ''\n})\n\nconst getCurrentColor = (percentage: number) => {\n if (typeof props.color === 'function') {\n return props.color(percentage)\n } else if (typeof props.color === 'string' && props.color) {\n return props.color\n } else {\n return getLevelColor(percentage)\n }\n}\n\nconst getLevelColor = (percentage: number) => {\n if (Array.isArray(props.color)) {\n const colorArray = [...props.color].sort((a, b) => a.percentage - b.percentage);\n for (let i = 0; i < colorArray.length; i++) {\n if (colorArray[i].percentage > percentage) {\n return colorArray[i].color\n }\n }\n return colorArray[colorArray.length - 1]?.color\n }\n return props.status === 'success' ? '#2ed573' :\n props.status === 'warning' ? '#ffa502' :\n props.status === 'exception' ? '#ff4757' : '#409eff'\n}\n\n// --- DOM / SVG Logic ---\n\nconst barStyle = computed(() => {\n return {\n width: `${currentValue.value}%`,\n backgroundColor: getCurrentColor(currentValue.value),\n transition: 'none' // Remove CSS transition to avoid conflict with JS animation\n }\n})\n\nconst relativeStrokeWidth = computed(() => {\n return (props.strokeWidth / props.width) * 100\n})\n\nconst radius = computed(() => {\n if (props.type === 'circle' || props.type === 'dashboard') {\n return 50 - relativeStrokeWidth.value / 2\n }\n return 0\n})\n\nconst trackPath = computed(() => {\n const r = radius.value\n const isDashboard = props.type === 'dashboard'\n return `\n M 50 50\n m 0 ${isDashboard ? '' : '-'}${r}\n a ${r} ${r} 0 1 1 0 ${isDashboard ? '-' : ''}${r * 2}\n a ${r} ${r} 0 1 1 0 ${isDashboard ? '' : '-'}${r * 2}\n `\n})\n\nconst perimeter = computed(() => {\n return 2 * Math.PI * radius.value\n})\n\nconst rate = computed(() => {\n return props.type === 'dashboard' ? 0.75 : 1\n})\n\nconst strokeDashoffset = computed(() => {\n const offset = -1 * perimeter.value * (1 - rate.value) / 2\n return `${offset}px`\n})\n\nconst circlePathStyle = computed(() => {\n return {\n strokeDasharray: `${perimeter.value * rate.value * (currentValue.value / 100)}px, ${perimeter.value}px`,\n strokeDashoffset: strokeDashoffset.value,\n transition: 'none',\n stroke: getCurrentColor(currentValue.value)\n }\n})\n\nconst trackStyle = computed(() => {\n return {\n strokeDasharray: `${perimeter.value * rate.value}px, ${perimeter.value}px`,\n strokeDashoffset: strokeDashoffset.value,\n }\n})\n\n// --- Canvas Logic ---\nconst canvasWidth = computed(() => props.type === 'line' ? 300 : props.width)\nconst canvasHeight = computed(() => props.type === 'line' ? props.strokeWidth * 3 : props.width)\n\n\n\nconst drawLine = (ctx: CanvasRenderingContext2D) => {\n const w = canvasWidth.value\n const h = props.strokeWidth\n const r = h / 2\n const y = (canvasHeight.value - h) / 2\n\n // Track (Background)\n ctx.beginPath()\n ctx.fillStyle = '#f3f3f3'\n ctx.roundRect(0, y, w, h, r)\n ctx.fill()\n\n // Bar (Progress)\n const progressW = (currentValue.value / 100) * w\n if (progressW > 0) {\n ctx.beginPath()\n ctx.fillStyle = getCurrentColor(currentValue.value)\n ctx.roundRect(0, y, progressW, h, r)\n ctx.fill()\n }\n\n // Text Inside Canvas?\n if (props.textInside && props.showText) {\n ctx.fillStyle = '#fff'\n ctx.font = '12px Rubik'\n ctx.textAlign = 'right'\n ctx.textBaseline = 'middle'\n if (progressW > 30) {\n ctx.fillText(`${Math.round(currentValue.value)}%`, progressW - 5, y + h / 2)\n }\n }\n}\n\nconst drawCircle = (ctx: CanvasRenderingContext2D, isDashboard: boolean) => {\n const cx = canvasWidth.value / 2\n const cy = canvasHeight.value / 2\n const r = (props.width - props.strokeWidth) / 2\n const startAngle = isDashboard ? Math.PI * 0.75 : -Math.PI * 0.5\n const totalAngle = isDashboard ? Math.PI * 1.5 : Math.PI * 2\n const endAngle = startAngle + totalAngle * (currentValue.value / 100)\n const trackEndAngle = startAngle + totalAngle\n\n ctx.lineCap = props.strokeLinecap as CanvasLineCap\n ctx.lineWidth = props.strokeWidth\n\n // Track\n ctx.beginPath()\n ctx.strokeStyle = '#f3f3f3'\n ctx.arc(cx, cy, r, startAngle, trackEndAngle)\n ctx.stroke()\n\n // Process\n if (currentValue.value > 0) {\n ctx.beginPath()\n ctx.strokeStyle = getCurrentColor(currentValue.value)\n ctx.arc(cx, cy, r, startAngle, endAngle)\n ctx.stroke()\n }\n}\n\nconst renderCanvas = () => {\n const canvas = canvasRef.value\n if (!canvas) return\n const ctx = canvas.getContext('2d')\n if (!ctx) return\n\n ctx.clearRect(0, 0, canvas.width, canvas.height)\n\n if (props.type === 'line') {\n drawLine(ctx)\n } else {\n drawCircle(ctx, props.type === 'dashboard')\n }\n}\n\n// --- Unified Animation Logic ---\nconst animateProgress = () => {\n if (animationFrameId.value) cancelAnimationFrame(animationFrameId.value)\n\n const target = props.percentage\n const animated = props.animated\n const speed = 2.0 // Animation speed increased\n\n if (!animated) {\n currentValue.value = target\n if (props.useCanvas) renderCanvas()\n return\n }\n\n if (Math.abs(currentValue.value - target) < speed) {\n currentValue.value = target\n if (props.useCanvas) renderCanvas()\n return\n }\n\n if (currentValue.value < target) {\n currentValue.value += speed\n } else {\n currentValue.value -= speed\n }\n\n if (props.useCanvas) renderCanvas()\n animationFrameId.value = requestAnimationFrame(animateProgress)\n}\n\nwatch(() => props.percentage, animateProgress)\nwatch(() => props.animated, animateProgress)\nwatch(() => props.useCanvas, (val) => {\n if (val) renderCanvas()\n})\nwatch(() => [props.type, props.strokeWidth, props.width, props.color], () => {\n if(props.useCanvas) renderCanvas()\n})\n\nonMounted(() => {\n if (props.useCanvas) renderCanvas()\n})\n\nonUnmounted(() => {\n if (animationFrameId.value) cancelAnimationFrame(animationFrameId.value)\n})\n\n</script>\n","import Progress from \"./src/progress.vue\";\nimport { withInstall } from \"@bee-plus/utils\";\n\nexport const BeeProgress = withInstall(Progress);\nexport default BeeProgress;\n","import * as components from '@bee-plus/components'\nimport type { App, Plugin } from 'vue'\n\nexport default {\n install(app: App) {\n Object.values(components).forEach((component) => {\n if (component && (component as any).install) { // Check if it has install method (added by withInstall)\n app.use(component as any)\n }\n })\n }\n} as Plugin\n","import Installer from './defaults'\n\nexport * from '@bee-plus/components'\nexport * from '@bee-plus/utils'\n// export * from '@bee-plus/theme-chalk' // Styles are usually imported separately, but if needed.\n\nexport const install = Installer.install\nexport default Installer\n"],"names":["_createElementBlock","type","size","plain","round","circle","disabled","loading","_openBlock","_hoisted_2","icon","$slots","_hoisted_3","_renderSlot","Button","status","showText","textInside","_createCommentVNode","useCanvas","_createElementVNode","_Fragment","strokeWidth","_toDisplayString","_normalizeStyle","width","Progress"],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "bee-plus",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "Vue 3 component library for bee-plus",
|
|
5
|
+
"main": "./dist/index.js",
|
|
6
|
+
"module": "./dist/index.mjs",
|
|
7
|
+
"types": "./dist/packages/bee-plus/index.d.ts",
|
|
8
|
+
"files": [
|
|
9
|
+
"dist"
|
|
10
|
+
],
|
|
11
|
+
"exports": {
|
|
12
|
+
".": {
|
|
13
|
+
"import": "./dist/index.mjs",
|
|
14
|
+
"require": "./dist/index.js",
|
|
15
|
+
"types": "./dist/packages/bee-plus/index.d.ts"
|
|
16
|
+
},
|
|
17
|
+
"./dist/style.css": "./dist/index.css"
|
|
18
|
+
}
|
|
19
|
+
}
|