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 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
+ }