@cmstops/pro-compo 3.9.1-rc.7 → 3.9.1-stable.1
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/README.md +76 -103
- package/es/selectThumb/component.js +18 -7
- package/lib/selectThumb/component.js +18 -7
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,134 +1,107 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Arco 物料项目
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
[物料平台文档中心](https://arco.design/docs/material/guide)
|
|
4
4
|
|
|
5
|
-
##
|
|
5
|
+
## 快速开始
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
**在 `npm run dev` 前,请运行 `npm run add:component -- ComponentName` 创建第一个组件,否则 dev 将会因缺少 Story 入口而报错。**
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
按理论来讲业务组件的版本和产品的版本不应该有强关联(即产品的版本是 3.0,业务组件可以是 1.0)
|
|
14
|
-
但是因为产品的买家(即甲方爸爸)使用的产品可能是 3.1、3.2、3.3...,并且会有强定制的情况
|
|
15
|
-
|
|
16
|
-
所以这里我们需要有一个约定,以便研发人员更好的溯源 & 协作 & 维护~
|
|
9
|
+
```
|
|
10
|
+
# 添加组件
|
|
11
|
+
npm run add:component -- YourComponentName
|
|
17
12
|
|
|
18
|
-
|
|
13
|
+
# 开发
|
|
14
|
+
npm run dev
|
|
19
15
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
| **主分支** | main | 研发自测完毕并 _可以上线_ 的需求 | 预发布环境 | x.x.x-**rc**.y |
|
|
23
|
-
| **版本分支** | release/xxx | 经过完整测试的需求 | 线上/项目环境 | x.x.x-**stable**.y |
|
|
24
|
-
| **定制分支** | release/xxx-{{project.name}} | 经过测试的 _定制_ 需求 | 项目环境 | x.x.x-**{{project.name}}**.y |
|
|
25
|
-
| **开发分支** | develop | 研发自测完毕的需求 | 测试环境 | x.x.x-**alpha**.y |
|
|
16
|
+
# 构建
|
|
17
|
+
npm run build
|
|
26
18
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
> 1. 是指当前产品发布计划中是否有该功能,如果有,则可以合并至 main,否则不可以
|
|
30
|
-
> 2. 该功能是所有版本通用的功能,无论产品版本是多少,都可以合并至 main
|
|
19
|
+
# 发布前预览
|
|
20
|
+
npm run prepublishOnly && arco preview
|
|
31
21
|
|
|
32
|
-
|
|
22
|
+
# 发布至物料平台(需先发布 NPM 包)
|
|
23
|
+
arco sync
|
|
24
|
+
```
|
|
33
25
|
|
|
34
|
-
假设当前产品版本是 3.2.0
|
|
35
|
-
此时:
|
|
36
26
|
|
|
37
|
-
|
|
38
|
-
- 版本分支 release/v3.2.0 版本号为 3.2.0-stable.0
|
|
39
|
-
- 开发分支 develop 版本号为 3.2.0-alpha.0
|
|
27
|
+
## 提供 Demo
|
|
40
28
|
|
|
41
|
-
|
|
29
|
+
Demo 目录位于 `src/demo`。你可以在此目录中加入多个 Demo,它们将被展示在物料平台的预览页。在 `src/demo/index.js` 中,通过 JSDoc 的语法提供物料及各个 Demo 的相关信息。
|
|
42
30
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
3. 第三步:bug-B 修复后,将 hotfix/v3.2.0-B 合并至 develop 自测并发布 3.2.0-alpha.**2**
|
|
46
|
-
4. 第四步:自测完毕后,将 hotfix/v3.2.0-A & hotfix/v3.2.0-B 合并至 main 并发布 3.2.0-rc.**1** 交付测试
|
|
47
|
-
5. 第五步:测试完毕后,将 hotfix/v3.2.0-A & hotfix/v3.2.0-B 合并至 release/v3.2.0 并发布 3.2.0-stable.**1** 交付线上
|
|
31
|
+
```javascript
|
|
32
|
+
// src/demo/index.js
|
|
48
33
|
|
|
49
|
-
|
|
50
|
-
|
|
34
|
+
/**
|
|
35
|
+
* @file
|
|
36
|
+
* @title 组件名
|
|
37
|
+
* @memberOf 组件类型,例如:数据输入
|
|
38
|
+
* @description 描述你的组件。
|
|
39
|
+
*/
|
|
51
40
|
|
|
52
|
-
|
|
41
|
+
/**
|
|
42
|
+
* @title 基本用法
|
|
43
|
+
* @description 描述你的例子
|
|
44
|
+
*/
|
|
45
|
+
import Basic from './basic.vue';
|
|
53
46
|
|
|
54
|
-
|
|
55
|
-
graph TD
|
|
56
|
-
A[release/v3.2.0] --> B[hotfix/v3.2.0-A]
|
|
57
|
-
A --> C[hotfix/v3.2.0-B]
|
|
58
|
-
B --> D[develop 3.2.0-alpha.1]
|
|
59
|
-
C --> E[develop 3.2.0-alpha.2]
|
|
60
|
-
D --> F[main 3.2.0-rc.1]
|
|
61
|
-
E --> F
|
|
62
|
-
F --> G[release/v3.2.0 3.2.0-stable.1]
|
|
47
|
+
export const BasicDemo = () => Basic;
|
|
63
48
|
```
|
|
64
49
|
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
50
|
+
## API 文档
|
|
51
|
+
|
|
52
|
+
**为了帮助他人更好地使用你的组件,请提供详细的 API 文档。**
|
|
53
|
+
|
|
54
|
+
### 书写注释
|
|
55
|
+
|
|
56
|
+
我们使用了 [Vue Styleguidist](https://vue-styleguidist.github.io/) 来提取组件 Props 的注释,然后自动生成组件的 API 文档。为此,如果你想对外暴露一个 Property,请参照Vue Styleguidist 的规则书写注释:
|
|
57
|
+
|
|
58
|
+
```vue
|
|
59
|
+
// ✅ 可以被正确提取的注释
|
|
60
|
+
props: {
|
|
61
|
+
/**
|
|
62
|
+
* 提示文字
|
|
63
|
+
*/
|
|
64
|
+
tip: String,
|
|
65
|
+
/**
|
|
66
|
+
* 按钮组件Props
|
|
67
|
+
*/
|
|
68
|
+
buttonProps: {
|
|
69
|
+
// 如果使用PropType,请使用对象的形式定义
|
|
70
|
+
type: Object as PropType<Record<string, any>>,
|
|
71
|
+
},
|
|
72
|
+
},
|
|
73
|
+
|
|
74
|
+
// ❌ 没有书写注释的属性会被忽略
|
|
75
|
+
props: {
|
|
76
|
+
disabled: Boolean,
|
|
77
|
+
},
|
|
82
78
|
```
|
|
83
79
|
|
|
84
|
-
|
|
85
|
-
> **如果按照社区常见的版本迭代规则,bug 的解决应该是在最新版本,旧版本的代码是不会改动的。**
|
|
86
|
-
> **但是实际我们自己的业务场景必须低版本也要能解决,为了尽量不去重复写代码,只能去手动的维护一下该操作。**
|
|
80
|
+
### 扩展 TEMPLATE.md
|
|
87
81
|
|
|
88
|
-
|
|
82
|
+
`TEMPLATE.md` 是用于自动文档生成的模板,你可以修改此文件添加更多组件的使用帮助信息,但请不要删除其原有的内容,否则可能导致内容替换失败。
|
|
89
83
|
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
84
|
+
```markdown
|
|
85
|
+
// TEMPLATE.md
|
|
86
|
+
---
|
|
87
|
+
file: index
|
|
88
|
+
---
|
|
94
89
|
|
|
95
|
-
|
|
90
|
+
# TooltipButton
|
|
96
91
|
|
|
97
|
-
|
|
98
|
-
graph TD
|
|
99
|
-
A[release/v3.2.0] --> B[feature/v3.3.0-D]
|
|
100
|
-
B --> C[develop 3.3.0-alpha.0]
|
|
101
|
-
C --> D[main 3.3.0-rc.0]
|
|
102
|
-
A --> E[release/v3.3.0]
|
|
103
|
-
D --> E
|
|
104
|
-
```
|
|
92
|
+
## 属性/Props
|
|
105
93
|
|
|
106
|
-
|
|
94
|
+
%%Props%%
|
|
107
95
|
|
|
108
|
-
|
|
109
|
-
2. 第二步:Feat-E 开发完毕后,将 feature/v3.0.0-E 合并至 develop 自测,并发布 3.3.0-alpha.**1**
|
|
110
|
-
3. 第三步:自测完毕后,将 feature/v3.0.0-E 合并至 main,并发布 3.3.0-rc.**1**
|
|
111
|
-
4. 第四步:测试完毕后,将 feature/v3.0.0-E 合并至 release/v3.0.0、releaes/v3.1.0、release/v3.2.0、release/v3.3.0
|
|
96
|
+
### OtherProps
|
|
112
97
|
|
|
113
|
-
|
|
114
|
-
> 一般是指又抽离出了一个产品的核心业务,而这个核心业务与产品的 **版本** 关联性不强,所有版本均可使用的这种功能
|
|
98
|
+
在这里你可以书写更多组件帮助文档。
|
|
115
99
|
|
|
116
|
-
|
|
100
|
+
## Demos
|
|
117
101
|
|
|
118
|
-
|
|
119
|
-
graph TD
|
|
120
|
-
A[release/v3.0.0] --> B[feature/v3.0.0-E]
|
|
121
|
-
B --> C[develop 3.3.0-alpha.1]
|
|
122
|
-
C --> D[main 3.3.0-rc.1]
|
|
123
|
-
D --> E[release/v3.0.0]
|
|
124
|
-
D --> F[release/v3.1.0]
|
|
125
|
-
D --> G[release/v3.2.0]
|
|
126
|
-
D --> H[release/v3.3.0]
|
|
102
|
+
%%Demos%%
|
|
127
103
|
```
|
|
128
104
|
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
1. 第一步:基于 release/v3.1.0 切出:feature/v3.1.0-G-F
|
|
132
|
-
2. 第二步:Feat-F 开发完毕后,基于 release/v3.1.0 切出 release/v3.1.0-G,将 feature/v3.1.0-G-F 合并至 release/v3.1.0-G,并发布 3.1.0-G.**0**
|
|
105
|
+
## 测试
|
|
133
106
|
|
|
134
|
-
|
|
107
|
+
测试目录位于 `src/__test__`。你可以在 `index.test.tsx` 中编写你的测试用例,在 `demo.test.tsx` 中可以进行基于 Demo 的快照测试。
|
|
@@ -351,11 +351,9 @@ const _sfc_main = defineComponent({
|
|
|
351
351
|
if (!props.dataValue)
|
|
352
352
|
return;
|
|
353
353
|
if (styleData.value.model === oldData.value.model) {
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
styleData.value.cover_colorList = oldData.value.cover_colorList;
|
|
358
|
-
});
|
|
354
|
+
styleData.value.data = oldData.value.data;
|
|
355
|
+
styleData.value.cover_theme_color = oldData.value.cover_theme_color;
|
|
356
|
+
styleData.value.cover_colorList = oldData.value.cover_colorList;
|
|
359
357
|
} else {
|
|
360
358
|
styleData.value.data = [];
|
|
361
359
|
}
|
|
@@ -411,8 +409,21 @@ const _sfc_main = defineComponent({
|
|
|
411
409
|
callback(styleData2);
|
|
412
410
|
};
|
|
413
411
|
onMounted(() => {
|
|
414
|
-
if (!styleData.value.cover_url)
|
|
415
|
-
|
|
412
|
+
if (!styleData.value.cover_url) {
|
|
413
|
+
setTimeout(() => {
|
|
414
|
+
styleData.value.cover_url = styleData.value.data[0].url;
|
|
415
|
+
const getColors = getThemeColor(BASE_API, styleData.value.data[0].url);
|
|
416
|
+
getColors.then((themes) => {
|
|
417
|
+
styleData.value.cover_colorList = JSON.parse(JSON.stringify(themes));
|
|
418
|
+
styleData.value.cover_theme_color = `rgb(${themes[1]})`;
|
|
419
|
+
oldData.value = JSON.parse(JSON.stringify(styleData.value));
|
|
420
|
+
callback(styleData.value);
|
|
421
|
+
}).catch((e) => {
|
|
422
|
+
styleData.value.banner_theme_color = `rgb(255, 255, 255)`;
|
|
423
|
+
callback(styleData.value);
|
|
424
|
+
});
|
|
425
|
+
}, 700);
|
|
426
|
+
}
|
|
416
427
|
});
|
|
417
428
|
return (_ctx, _cache) => {
|
|
418
429
|
var _a, _b, _c, _d, _e, _f;
|
|
@@ -352,11 +352,9 @@ const _sfc_main = vue.defineComponent({
|
|
|
352
352
|
if (!props.dataValue)
|
|
353
353
|
return;
|
|
354
354
|
if (styleData.value.model === oldData.value.model) {
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
styleData.value.cover_colorList = oldData.value.cover_colorList;
|
|
359
|
-
});
|
|
355
|
+
styleData.value.data = oldData.value.data;
|
|
356
|
+
styleData.value.cover_theme_color = oldData.value.cover_theme_color;
|
|
357
|
+
styleData.value.cover_colorList = oldData.value.cover_colorList;
|
|
360
358
|
} else {
|
|
361
359
|
styleData.value.data = [];
|
|
362
360
|
}
|
|
@@ -412,8 +410,21 @@ const _sfc_main = vue.defineComponent({
|
|
|
412
410
|
callback(styleData2);
|
|
413
411
|
};
|
|
414
412
|
vue.onMounted(() => {
|
|
415
|
-
if (!styleData.value.cover_url)
|
|
416
|
-
|
|
413
|
+
if (!styleData.value.cover_url) {
|
|
414
|
+
setTimeout(() => {
|
|
415
|
+
styleData.value.cover_url = styleData.value.data[0].url;
|
|
416
|
+
const getColors = index.getThemeColor(BASE_API, styleData.value.data[0].url);
|
|
417
|
+
getColors.then((themes) => {
|
|
418
|
+
styleData.value.cover_colorList = JSON.parse(JSON.stringify(themes));
|
|
419
|
+
styleData.value.cover_theme_color = `rgb(${themes[1]})`;
|
|
420
|
+
oldData.value = JSON.parse(JSON.stringify(styleData.value));
|
|
421
|
+
callback(styleData.value);
|
|
422
|
+
}).catch((e) => {
|
|
423
|
+
styleData.value.banner_theme_color = `rgb(255, 255, 255)`;
|
|
424
|
+
callback(styleData.value);
|
|
425
|
+
});
|
|
426
|
+
}, 700);
|
|
427
|
+
}
|
|
417
428
|
});
|
|
418
429
|
return (_ctx, _cache) => {
|
|
419
430
|
var _a, _b, _c, _d, _e, _f;
|