@alifd/chat 0.3.11-beta.2 → 0.3.11-beta.3
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/docs/balloon/852.css +1 -1
- package/dist/docs/balloon/main.js +1 -1
- package/dist/docs/button/852.css +1 -1
- package/dist/docs/button/main.js +1 -1
- package/dist/docs/card/852.css +1 -1
- package/dist/docs/card/main.js +1 -1
- package/dist/docs/card-loading/852.css +1 -1
- package/dist/docs/card-loading/main.js +1 -1
- package/dist/docs/date-picker/852.css +1 -1
- package/dist/docs/date-picker/main.js +1 -1
- package/dist/docs/drawer/852.css +1 -1
- package/dist/docs/drawer/main.js +1 -1
- package/dist/docs/feedback/852.css +1 -1
- package/dist/docs/feedback/main.js +1 -1
- package/dist/docs/float-button/852.css +1 -1
- package/dist/docs/float-button/main.js +1 -1
- package/dist/docs/form/852.css +1 -1
- package/dist/docs/form/main.js +1 -1
- package/dist/docs/html-render/852.css +1 -1
- package/dist/docs/html-render/main.js +1 -1
- package/dist/docs/icon/852.css +1 -1
- package/dist/docs/icon/main.js +1 -1
- package/dist/docs/image-preview/852.css +1 -1
- package/dist/docs/image-preview/main.js +1 -1
- package/dist/docs/input/852.css +1 -1
- package/dist/docs/input/main.js +1 -1
- package/dist/docs/list/852.css +1 -1
- package/dist/docs/list/main.js +1 -1
- package/dist/docs/loading/852.css +1 -1
- package/dist/docs/loading/main.js +1 -1
- package/dist/docs/markdown/852.css +1 -1
- package/dist/docs/markdown/main.js +1 -1
- package/dist/docs/message/852.css +1 -1
- package/dist/docs/message/main.js +1 -1
- package/dist/docs/origin/852.css +1 -1
- package/dist/docs/origin/main.js +1 -1
- package/dist/docs/person-picker/852.css +1 -1
- package/dist/docs/person-picker/main.js +1 -1
- package/dist/docs/recommend/852.css +1 -1
- package/dist/docs/recommend/main.js +1 -1
- package/dist/docs/reference/main.css +1 -1
- package/dist/docs/reference/main.js +1 -1
- package/dist/docs/step/852.css +1 -1
- package/dist/docs/step/main.js +1 -1
- package/dist/docs/stop-generate/852.css +1 -1
- package/dist/docs/stop-generate/main.js +1 -1
- package/dist/docs/time-picker/852.css +1 -1
- package/dist/docs/time-picker/main.js +1 -1
- package/es/core/variables.scss +6 -1
- package/es/index.js +1 -1
- package/es/reference/index.js +33 -7
- package/es/reference/main.scss +95 -11
- package/es/reference/types.d.ts +14 -0
- package/lib/core/variables.scss +6 -1
- package/lib/index.js +1 -1
- package/lib/reference/index.js +33 -7
- package/lib/reference/main.scss +95 -11
- package/lib/reference/types.d.ts +14 -0
- package/package.json +1 -1
package/es/core/variables.scss
CHANGED
|
@@ -27,7 +27,7 @@ $s-7: var(---s-7, 28px) !default;
|
|
|
27
27
|
$s-8: var(---s-8, 32px) !default;
|
|
28
28
|
$s-9: var(---s-9, 36px) !default;
|
|
29
29
|
$s-10: var(---s-10, 40px) !default;
|
|
30
|
-
|
|
30
|
+
$s-15: var(---s-15, 60px) !default;
|
|
31
31
|
|
|
32
32
|
$font-size-headline: var(--font-size-headline, 24px) !default;
|
|
33
33
|
$font-size-title: var(--font-size-title, 20px) !default;
|
|
@@ -36,6 +36,9 @@ $font-size-body-2: var(--font-size-body-2, 14px) !default;
|
|
|
36
36
|
$font-size-body-1: var(--font-size-body-1, 14px) !default;
|
|
37
37
|
$font-size-caption: var(--font-size-caption, 12px) !default;
|
|
38
38
|
|
|
39
|
+
$font-lineheight-2: var(--font-lineheight-2, 1.5) !default;
|
|
40
|
+
|
|
41
|
+
|
|
39
42
|
/// 禁用
|
|
40
43
|
$color-text1-1: var(--color-text1-1, #cccccc) !default;
|
|
41
44
|
/// 水印/提示
|
|
@@ -86,6 +89,8 @@ $color-data1-9: var(--color-data1-9, #ec4589) !default; // ?
|
|
|
86
89
|
|
|
87
90
|
$color-data1-10: var(--color-data1-10, #6f9200) !default; // ?
|
|
88
91
|
|
|
92
|
+
$color-link-2: var(--color-link-2, #5584ff) !default; // ?
|
|
93
|
+
|
|
89
94
|
$color-link-3: var(--color-link-3, #0056ff) !default; // ?
|
|
90
95
|
|
|
91
96
|
$color-bg-1: var(--color-bg-1, #ffffff) !default; // ?
|
package/es/index.js
CHANGED
|
@@ -24,4 +24,4 @@ export { default as Step } from './step';
|
|
|
24
24
|
export { default as StopGenerate } from './stop-generate';
|
|
25
25
|
export { default as Reference } from './reference';
|
|
26
26
|
export { default as Recommend } from './recommend';
|
|
27
|
-
export const version = '0.3.11-beta.
|
|
27
|
+
export const version = '0.3.11-beta.3';
|
package/es/reference/index.js
CHANGED
|
@@ -9,36 +9,62 @@ import { ConfigProvider, Icon } from '@alifd/next';
|
|
|
9
9
|
import cs from 'classnames';
|
|
10
10
|
import { PREFIX_DEFAULT, renderCommonIcon } from '../utils';
|
|
11
11
|
const DEFAULT_REFERENCE_ICON = 'https://img.alicdn.com/imgextra/i3/O1CN01hpxNXz26hRw9Jz4O1_!!6000000007693-55-tps-200-200.svg';
|
|
12
|
-
const Reference = forwardRef(({ className, defaultExpanded = false, header, listItems = [], onToggle, onItemClick }, ref) => {
|
|
12
|
+
const Reference = forwardRef(({ className, defaultExpanded = false, header, listItems = [], onToggle, onItemClick, mode = 'simple', onClose, onDetailClick }, ref) => {
|
|
13
13
|
const [isExpanded, setIsExpanded] = useState(defaultExpanded);
|
|
14
14
|
const handleToggle = () => {
|
|
15
15
|
setIsExpanded(!isExpanded);
|
|
16
16
|
onToggle && onToggle(!isExpanded);
|
|
17
17
|
};
|
|
18
18
|
const renderHeader = () => {
|
|
19
|
+
if (mode === 'detail') {
|
|
20
|
+
return renderDetailHeader();
|
|
21
|
+
}
|
|
19
22
|
let headerIcon = (header === null || header === void 0 ? void 0 : header.icon) || DEFAULT_REFERENCE_ICON;
|
|
20
23
|
const iconType = isExpanded ? 'arrow-up' : 'arrow-down';
|
|
21
|
-
return (React.createElement("div", { className:
|
|
24
|
+
return (React.createElement("div", { className: `reference-header ${mode}`, onClick: handleToggle },
|
|
22
25
|
React.createElement("div", { className: 'reference-name' },
|
|
23
26
|
renderCommonIcon(headerIcon),
|
|
24
27
|
React.createElement("div", { className: 'reference-title' }, header === null || header === void 0 ? void 0 : header.title)),
|
|
25
28
|
React.createElement("div", { className: 'reference-operate' },
|
|
26
29
|
React.createElement(Icon, { type: iconType, size: 'xxs' }))));
|
|
27
30
|
};
|
|
31
|
+
const renderDetailHeader = () => {
|
|
32
|
+
return (React.createElement("div", { className: `reference-header ${mode}` },
|
|
33
|
+
React.createElement("div", { className: 'reference-text' }, "\u5F15\u7528\u4FE1\u606F"),
|
|
34
|
+
React.createElement("div", { className: 'reference-close', onClick: () => {
|
|
35
|
+
onClose === null || onClose === void 0 ? void 0 : onClose();
|
|
36
|
+
} }, renderCommonIcon('close', 'small'))));
|
|
37
|
+
};
|
|
28
38
|
const handleReferenceClick = (item, index) => {
|
|
29
39
|
onItemClick === null || onItemClick === void 0 ? void 0 : onItemClick(item, index);
|
|
30
40
|
(item === null || item === void 0 ? void 0 : item.url) && window.open(item === null || item === void 0 ? void 0 : item.url, '_blank');
|
|
31
41
|
};
|
|
42
|
+
const renderDetailList = () => {
|
|
43
|
+
return listItems.map((item, index) => (React.createElement("div", { key: index, className: 'reference-item', onClick: () => handleReferenceClick(item, index) },
|
|
44
|
+
React.createElement("div", { className: 'reference-title' },
|
|
45
|
+
(item === null || item === void 0 ? void 0 : item.sourceIcon) && renderCommonIcon(item === null || item === void 0 ? void 0 : item.sourceIcon),
|
|
46
|
+
(item === null || item === void 0 ? void 0 : item.modifyTime) && React.createElement("div", { className: 'reference-time' }, item === null || item === void 0 ? void 0 : item.modifyTime)),
|
|
47
|
+
React.createElement("div", { className: 'reference-name' }, item === null || item === void 0 ? void 0 : item.name),
|
|
48
|
+
(item === null || item === void 0 ? void 0 : item.content) && React.createElement("div", { className: 'reference-content' }, item === null || item === void 0 ? void 0 : item.content))));
|
|
49
|
+
};
|
|
32
50
|
const renderList = () => {
|
|
33
|
-
if (!listItems || listItems.length === 0
|
|
51
|
+
if (!listItems || listItems.length === 0) {
|
|
52
|
+
return null;
|
|
53
|
+
}
|
|
54
|
+
if (!isExpanded && mode === 'simple') {
|
|
34
55
|
return null;
|
|
35
56
|
}
|
|
36
|
-
return (React.createElement("div", { className:
|
|
37
|
-
|
|
38
|
-
|
|
57
|
+
return (React.createElement("div", { className: `reference-list ${mode}`, onClick: () => {
|
|
58
|
+
onDetailClick === null || onDetailClick === void 0 ? void 0 : onDetailClick();
|
|
59
|
+
} },
|
|
60
|
+
isExpanded && mode === 'simple' && listItems.map((item, index) => (React.createElement("div", { key: index, className: 'reference-item' },
|
|
61
|
+
(item === null || item === void 0 ? void 0 : item.sourceIcon) && renderCommonIcon(item === null || item === void 0 ? void 0 : item.sourceIcon),
|
|
62
|
+
React.createElement("div", { className: 'reference-text', onClick: () => handleReferenceClick(item, index) }, item === null || item === void 0 ? void 0 : item.name),
|
|
63
|
+
(item === null || item === void 0 ? void 0 : item.modifyTime) && React.createElement("div", { className: 'reference-time' }, item === null || item === void 0 ? void 0 : item.modifyTime)))),
|
|
64
|
+
mode === 'detail' && renderDetailList()));
|
|
39
65
|
};
|
|
40
66
|
const statusClassName = isExpanded ? 'expand' : '';
|
|
41
|
-
return (React.createElement("div", { className: cs(`${PREFIX_DEFAULT}reference ${statusClassName}`, className), ref: ref },
|
|
67
|
+
return (React.createElement("div", { className: cs(`${PREFIX_DEFAULT}reference ${mode} ${statusClassName}`, className), ref: ref },
|
|
42
68
|
renderHeader(),
|
|
43
69
|
renderList()));
|
|
44
70
|
});
|
package/es/reference/main.scss
CHANGED
|
@@ -12,30 +12,50 @@
|
|
|
12
12
|
width: 100%;
|
|
13
13
|
}
|
|
14
14
|
|
|
15
|
+
&.detail {
|
|
16
|
+
background-color: white;
|
|
17
|
+
}
|
|
18
|
+
|
|
15
19
|
.reference-header {
|
|
16
20
|
display: flex;
|
|
17
21
|
justify-content: space-between;
|
|
18
22
|
cursor: pointer;
|
|
19
|
-
|
|
23
|
+
align-items: center;
|
|
24
|
+
|
|
25
|
+
&.detail {
|
|
26
|
+
border-bottom: solid 1px $color-line1-0;
|
|
27
|
+
height: $s-15;
|
|
28
|
+
margin: 0 $s-4;
|
|
29
|
+
|
|
30
|
+
.reference-text {
|
|
31
|
+
line-height: $s-15;
|
|
32
|
+
font-size: $s-6;
|
|
33
|
+
font-weight: bold;
|
|
34
|
+
}
|
|
35
|
+
.reference-close {
|
|
36
|
+
width: fit-content;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
}
|
|
20
40
|
|
|
21
41
|
.reference-name{
|
|
22
42
|
display: flex;
|
|
23
43
|
align-items: center;
|
|
24
44
|
.reference-title{
|
|
25
45
|
color: $color-text1-4;
|
|
26
|
-
font-size:
|
|
46
|
+
font-size: $font-size-caption;
|
|
27
47
|
font-weight: 600;
|
|
28
|
-
line-height:
|
|
48
|
+
line-height: $font-lineheight-2;
|
|
29
49
|
}
|
|
30
50
|
.common-icon {
|
|
31
|
-
margin-right:
|
|
51
|
+
margin-right: $s-1;
|
|
32
52
|
color: $color-brand1-6;
|
|
33
53
|
}
|
|
34
54
|
}
|
|
35
55
|
|
|
36
56
|
.reference-operate{
|
|
37
57
|
cursor: pointer;
|
|
38
|
-
margin:
|
|
58
|
+
margin: 0 $s-1;
|
|
39
59
|
width: $s-3;
|
|
40
60
|
height: $s-5;
|
|
41
61
|
display: flex;
|
|
@@ -49,6 +69,58 @@
|
|
|
49
69
|
}
|
|
50
70
|
|
|
51
71
|
.reference-list {
|
|
72
|
+
|
|
73
|
+
&.detail {
|
|
74
|
+
// padding: 0px $s-4;
|
|
75
|
+
.reference-item {
|
|
76
|
+
display:block;
|
|
77
|
+
padding: $s-2 $s-4;
|
|
78
|
+
|
|
79
|
+
&:hover {
|
|
80
|
+
background: $color-fill1-1;
|
|
81
|
+
}
|
|
82
|
+
.reference-title {
|
|
83
|
+
display: flex;
|
|
84
|
+
align-items: center;
|
|
85
|
+
margin-bottom: $s-2;
|
|
86
|
+
|
|
87
|
+
.common-icon {
|
|
88
|
+
img {
|
|
89
|
+
height: $s-6;
|
|
90
|
+
width: auto;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
.reference-time {
|
|
95
|
+
margin-left: $s-2;
|
|
96
|
+
color: $color-text1-1;
|
|
97
|
+
font-size: $font-size-body-1;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
.reference-name {
|
|
102
|
+
margin-bottom: $s-2;
|
|
103
|
+
line-height: $s-6;
|
|
104
|
+
color: $color-link-3;
|
|
105
|
+
font-size: $s-4;
|
|
106
|
+
overflow: hidden; /* 隐藏超出部分 */
|
|
107
|
+
display: -webkit-box; /* 使其成为弹性盒子 */
|
|
108
|
+
-webkit-box-orient: vertical; /* 垂直排列 */
|
|
109
|
+
-webkit-line-clamp: 2; /* 限制显示3行 */
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
.reference-content {
|
|
113
|
+
font-size: $font-size-body-1;
|
|
114
|
+
line-height: $font-lineheight-2;
|
|
115
|
+
color: $color-text1-4;
|
|
116
|
+
overflow: hidden; /* 隐藏超出部分 */
|
|
117
|
+
display: -webkit-box; /* 使其成为弹性盒子 */
|
|
118
|
+
-webkit-box-orient: vertical; /* 垂直排列 */
|
|
119
|
+
-webkit-line-clamp: 3; /* 限制显示3行 */
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
|
|
52
124
|
margin-top: $s-1;
|
|
53
125
|
.reference-item{
|
|
54
126
|
display: flex;
|
|
@@ -60,26 +132,38 @@
|
|
|
60
132
|
margin-bottom: 0;
|
|
61
133
|
}
|
|
62
134
|
.common-icon {
|
|
63
|
-
margin-right:
|
|
64
|
-
&.svg {
|
|
135
|
+
margin-right: $s-1;
|
|
65
136
|
|
|
137
|
+
&.svg {
|
|
66
138
|
}
|
|
67
139
|
|
|
68
|
-
|
|
69
|
-
|
|
140
|
+
img {
|
|
141
|
+
height: $s-4;
|
|
142
|
+
width: auto;
|
|
70
143
|
}
|
|
71
144
|
|
|
72
145
|
&.node {
|
|
73
146
|
|
|
74
147
|
}
|
|
75
148
|
}
|
|
149
|
+
|
|
76
150
|
.reference-text {
|
|
77
|
-
font-size: $
|
|
151
|
+
font-size: $font-size-caption;
|
|
78
152
|
color: $color-link-2;
|
|
79
153
|
white-space: nowrap; /* 禁止换行 */
|
|
80
154
|
overflow: hidden; /* 超出部分隐藏 */
|
|
81
155
|
text-overflow: ellipsis; /* 以省略号显示溢出文本 */
|
|
82
|
-
line-height:
|
|
156
|
+
line-height: $font-lineheight-2;
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
.reference-time {
|
|
160
|
+
font-size: $s-3;
|
|
161
|
+
color: $color-text1-1;
|
|
162
|
+
line-height: $font-lineheight-2;
|
|
163
|
+
margin-left: $s-1;
|
|
164
|
+
white-space: nowrap; /* 禁止换行 */
|
|
165
|
+
overflow: hidden; /* 超出部分隐藏 */
|
|
166
|
+
text-overflow: ellipsis; /* 以省略号显示溢出文本 */
|
|
83
167
|
}
|
|
84
168
|
}
|
|
85
169
|
}
|
package/es/reference/types.d.ts
CHANGED
|
@@ -6,6 +6,8 @@ export interface ReferenceItemProps {
|
|
|
6
6
|
url?: string;
|
|
7
7
|
sourceIcon?: string;
|
|
8
8
|
sourceCode?: string;
|
|
9
|
+
modifyTime?: string;
|
|
10
|
+
content?: string;
|
|
9
11
|
}
|
|
10
12
|
/**
|
|
11
13
|
* 参考来源属性
|
|
@@ -39,4 +41,16 @@ export interface ReferenceProps extends React.HTMLAttributes<HTMLElement>, Commo
|
|
|
39
41
|
* 点击对应参考来源项
|
|
40
42
|
*/
|
|
41
43
|
onItemClick?: (item: ReferenceItemProps, index: number) => void;
|
|
44
|
+
/**
|
|
45
|
+
* 来源展示的模式
|
|
46
|
+
*/
|
|
47
|
+
mode?: 'simple' | 'detail';
|
|
48
|
+
/**
|
|
49
|
+
* 关闭参考来源点击
|
|
50
|
+
*/
|
|
51
|
+
onClose?: () => void;
|
|
52
|
+
/**
|
|
53
|
+
* 参考来源面板点击回调(区别于每个参考来源项的点击/头部展开点击)
|
|
54
|
+
*/
|
|
55
|
+
onDetailClick?: () => void;
|
|
42
56
|
}
|
package/lib/core/variables.scss
CHANGED
|
@@ -27,7 +27,7 @@ $s-7: var(---s-7, 28px) !default;
|
|
|
27
27
|
$s-8: var(---s-8, 32px) !default;
|
|
28
28
|
$s-9: var(---s-9, 36px) !default;
|
|
29
29
|
$s-10: var(---s-10, 40px) !default;
|
|
30
|
-
|
|
30
|
+
$s-15: var(---s-15, 60px) !default;
|
|
31
31
|
|
|
32
32
|
$font-size-headline: var(--font-size-headline, 24px) !default;
|
|
33
33
|
$font-size-title: var(--font-size-title, 20px) !default;
|
|
@@ -36,6 +36,9 @@ $font-size-body-2: var(--font-size-body-2, 14px) !default;
|
|
|
36
36
|
$font-size-body-1: var(--font-size-body-1, 14px) !default;
|
|
37
37
|
$font-size-caption: var(--font-size-caption, 12px) !default;
|
|
38
38
|
|
|
39
|
+
$font-lineheight-2: var(--font-lineheight-2, 1.5) !default;
|
|
40
|
+
|
|
41
|
+
|
|
39
42
|
/// 禁用
|
|
40
43
|
$color-text1-1: var(--color-text1-1, #cccccc) !default;
|
|
41
44
|
/// 水印/提示
|
|
@@ -86,6 +89,8 @@ $color-data1-9: var(--color-data1-9, #ec4589) !default; // ?
|
|
|
86
89
|
|
|
87
90
|
$color-data1-10: var(--color-data1-10, #6f9200) !default; // ?
|
|
88
91
|
|
|
92
|
+
$color-link-2: var(--color-link-2, #5584ff) !default; // ?
|
|
93
|
+
|
|
89
94
|
$color-link-3: var(--color-link-3, #0056ff) !default; // ?
|
|
90
95
|
|
|
91
96
|
$color-bg-1: var(--color-bg-1, #ffffff) !default; // ?
|
package/lib/index.js
CHANGED
|
@@ -54,4 +54,4 @@ var reference_1 = require("./reference");
|
|
|
54
54
|
Object.defineProperty(exports, "Reference", { enumerable: true, get: function () { return tslib_1.__importDefault(reference_1).default; } });
|
|
55
55
|
var recommend_1 = require("./recommend");
|
|
56
56
|
Object.defineProperty(exports, "Recommend", { enumerable: true, get: function () { return tslib_1.__importDefault(recommend_1).default; } });
|
|
57
|
-
exports.version = '0.3.11-beta.
|
|
57
|
+
exports.version = '0.3.11-beta.3';
|
package/lib/reference/index.js
CHANGED
|
@@ -12,36 +12,62 @@ const next_1 = require("@alifd/next");
|
|
|
12
12
|
const classnames_1 = tslib_1.__importDefault(require("classnames"));
|
|
13
13
|
const utils_1 = require("../utils");
|
|
14
14
|
const DEFAULT_REFERENCE_ICON = 'https://img.alicdn.com/imgextra/i3/O1CN01hpxNXz26hRw9Jz4O1_!!6000000007693-55-tps-200-200.svg';
|
|
15
|
-
const Reference = (0, react_1.forwardRef)(({ className, defaultExpanded = false, header, listItems = [], onToggle, onItemClick }, ref) => {
|
|
15
|
+
const Reference = (0, react_1.forwardRef)(({ className, defaultExpanded = false, header, listItems = [], onToggle, onItemClick, mode = 'simple', onClose, onDetailClick }, ref) => {
|
|
16
16
|
const [isExpanded, setIsExpanded] = (0, react_1.useState)(defaultExpanded);
|
|
17
17
|
const handleToggle = () => {
|
|
18
18
|
setIsExpanded(!isExpanded);
|
|
19
19
|
onToggle && onToggle(!isExpanded);
|
|
20
20
|
};
|
|
21
21
|
const renderHeader = () => {
|
|
22
|
+
if (mode === 'detail') {
|
|
23
|
+
return renderDetailHeader();
|
|
24
|
+
}
|
|
22
25
|
let headerIcon = (header === null || header === void 0 ? void 0 : header.icon) || DEFAULT_REFERENCE_ICON;
|
|
23
26
|
const iconType = isExpanded ? 'arrow-up' : 'arrow-down';
|
|
24
|
-
return (react_1.default.createElement("div", { className:
|
|
27
|
+
return (react_1.default.createElement("div", { className: `reference-header ${mode}`, onClick: handleToggle },
|
|
25
28
|
react_1.default.createElement("div", { className: 'reference-name' },
|
|
26
29
|
(0, utils_1.renderCommonIcon)(headerIcon),
|
|
27
30
|
react_1.default.createElement("div", { className: 'reference-title' }, header === null || header === void 0 ? void 0 : header.title)),
|
|
28
31
|
react_1.default.createElement("div", { className: 'reference-operate' },
|
|
29
32
|
react_1.default.createElement(next_1.Icon, { type: iconType, size: 'xxs' }))));
|
|
30
33
|
};
|
|
34
|
+
const renderDetailHeader = () => {
|
|
35
|
+
return (react_1.default.createElement("div", { className: `reference-header ${mode}` },
|
|
36
|
+
react_1.default.createElement("div", { className: 'reference-text' }, "\u5F15\u7528\u4FE1\u606F"),
|
|
37
|
+
react_1.default.createElement("div", { className: 'reference-close', onClick: () => {
|
|
38
|
+
onClose === null || onClose === void 0 ? void 0 : onClose();
|
|
39
|
+
} }, (0, utils_1.renderCommonIcon)('close', 'small'))));
|
|
40
|
+
};
|
|
31
41
|
const handleReferenceClick = (item, index) => {
|
|
32
42
|
onItemClick === null || onItemClick === void 0 ? void 0 : onItemClick(item, index);
|
|
33
43
|
(item === null || item === void 0 ? void 0 : item.url) && window.open(item === null || item === void 0 ? void 0 : item.url, '_blank');
|
|
34
44
|
};
|
|
45
|
+
const renderDetailList = () => {
|
|
46
|
+
return listItems.map((item, index) => (react_1.default.createElement("div", { key: index, className: 'reference-item', onClick: () => handleReferenceClick(item, index) },
|
|
47
|
+
react_1.default.createElement("div", { className: 'reference-title' },
|
|
48
|
+
(item === null || item === void 0 ? void 0 : item.sourceIcon) && (0, utils_1.renderCommonIcon)(item === null || item === void 0 ? void 0 : item.sourceIcon),
|
|
49
|
+
(item === null || item === void 0 ? void 0 : item.modifyTime) && react_1.default.createElement("div", { className: 'reference-time' }, item === null || item === void 0 ? void 0 : item.modifyTime)),
|
|
50
|
+
react_1.default.createElement("div", { className: 'reference-name' }, item === null || item === void 0 ? void 0 : item.name),
|
|
51
|
+
(item === null || item === void 0 ? void 0 : item.content) && react_1.default.createElement("div", { className: 'reference-content' }, item === null || item === void 0 ? void 0 : item.content))));
|
|
52
|
+
};
|
|
35
53
|
const renderList = () => {
|
|
36
|
-
if (!listItems || listItems.length === 0
|
|
54
|
+
if (!listItems || listItems.length === 0) {
|
|
55
|
+
return null;
|
|
56
|
+
}
|
|
57
|
+
if (!isExpanded && mode === 'simple') {
|
|
37
58
|
return null;
|
|
38
59
|
}
|
|
39
|
-
return (react_1.default.createElement("div", { className:
|
|
40
|
-
|
|
41
|
-
|
|
60
|
+
return (react_1.default.createElement("div", { className: `reference-list ${mode}`, onClick: () => {
|
|
61
|
+
onDetailClick === null || onDetailClick === void 0 ? void 0 : onDetailClick();
|
|
62
|
+
} },
|
|
63
|
+
isExpanded && mode === 'simple' && listItems.map((item, index) => (react_1.default.createElement("div", { key: index, className: 'reference-item' },
|
|
64
|
+
(item === null || item === void 0 ? void 0 : item.sourceIcon) && (0, utils_1.renderCommonIcon)(item === null || item === void 0 ? void 0 : item.sourceIcon),
|
|
65
|
+
react_1.default.createElement("div", { className: 'reference-text', onClick: () => handleReferenceClick(item, index) }, item === null || item === void 0 ? void 0 : item.name),
|
|
66
|
+
(item === null || item === void 0 ? void 0 : item.modifyTime) && react_1.default.createElement("div", { className: 'reference-time' }, item === null || item === void 0 ? void 0 : item.modifyTime)))),
|
|
67
|
+
mode === 'detail' && renderDetailList()));
|
|
42
68
|
};
|
|
43
69
|
const statusClassName = isExpanded ? 'expand' : '';
|
|
44
|
-
return (react_1.default.createElement("div", { className: (0, classnames_1.default)(`${utils_1.PREFIX_DEFAULT}reference ${statusClassName}`, className), ref: ref },
|
|
70
|
+
return (react_1.default.createElement("div", { className: (0, classnames_1.default)(`${utils_1.PREFIX_DEFAULT}reference ${mode} ${statusClassName}`, className), ref: ref },
|
|
45
71
|
renderHeader(),
|
|
46
72
|
renderList()));
|
|
47
73
|
});
|
package/lib/reference/main.scss
CHANGED
|
@@ -12,30 +12,50 @@
|
|
|
12
12
|
width: 100%;
|
|
13
13
|
}
|
|
14
14
|
|
|
15
|
+
&.detail {
|
|
16
|
+
background-color: white;
|
|
17
|
+
}
|
|
18
|
+
|
|
15
19
|
.reference-header {
|
|
16
20
|
display: flex;
|
|
17
21
|
justify-content: space-between;
|
|
18
22
|
cursor: pointer;
|
|
19
|
-
|
|
23
|
+
align-items: center;
|
|
24
|
+
|
|
25
|
+
&.detail {
|
|
26
|
+
border-bottom: solid 1px $color-line1-0;
|
|
27
|
+
height: $s-15;
|
|
28
|
+
margin: 0 $s-4;
|
|
29
|
+
|
|
30
|
+
.reference-text {
|
|
31
|
+
line-height: $s-15;
|
|
32
|
+
font-size: $s-6;
|
|
33
|
+
font-weight: bold;
|
|
34
|
+
}
|
|
35
|
+
.reference-close {
|
|
36
|
+
width: fit-content;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
}
|
|
20
40
|
|
|
21
41
|
.reference-name{
|
|
22
42
|
display: flex;
|
|
23
43
|
align-items: center;
|
|
24
44
|
.reference-title{
|
|
25
45
|
color: $color-text1-4;
|
|
26
|
-
font-size:
|
|
46
|
+
font-size: $font-size-caption;
|
|
27
47
|
font-weight: 600;
|
|
28
|
-
line-height:
|
|
48
|
+
line-height: $font-lineheight-2;
|
|
29
49
|
}
|
|
30
50
|
.common-icon {
|
|
31
|
-
margin-right:
|
|
51
|
+
margin-right: $s-1;
|
|
32
52
|
color: $color-brand1-6;
|
|
33
53
|
}
|
|
34
54
|
}
|
|
35
55
|
|
|
36
56
|
.reference-operate{
|
|
37
57
|
cursor: pointer;
|
|
38
|
-
margin:
|
|
58
|
+
margin: 0 $s-1;
|
|
39
59
|
width: $s-3;
|
|
40
60
|
height: $s-5;
|
|
41
61
|
display: flex;
|
|
@@ -49,6 +69,58 @@
|
|
|
49
69
|
}
|
|
50
70
|
|
|
51
71
|
.reference-list {
|
|
72
|
+
|
|
73
|
+
&.detail {
|
|
74
|
+
// padding: 0px $s-4;
|
|
75
|
+
.reference-item {
|
|
76
|
+
display:block;
|
|
77
|
+
padding: $s-2 $s-4;
|
|
78
|
+
|
|
79
|
+
&:hover {
|
|
80
|
+
background: $color-fill1-1;
|
|
81
|
+
}
|
|
82
|
+
.reference-title {
|
|
83
|
+
display: flex;
|
|
84
|
+
align-items: center;
|
|
85
|
+
margin-bottom: $s-2;
|
|
86
|
+
|
|
87
|
+
.common-icon {
|
|
88
|
+
img {
|
|
89
|
+
height: $s-6;
|
|
90
|
+
width: auto;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
.reference-time {
|
|
95
|
+
margin-left: $s-2;
|
|
96
|
+
color: $color-text1-1;
|
|
97
|
+
font-size: $font-size-body-1;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
.reference-name {
|
|
102
|
+
margin-bottom: $s-2;
|
|
103
|
+
line-height: $s-6;
|
|
104
|
+
color: $color-link-3;
|
|
105
|
+
font-size: $s-4;
|
|
106
|
+
overflow: hidden; /* 隐藏超出部分 */
|
|
107
|
+
display: -webkit-box; /* 使其成为弹性盒子 */
|
|
108
|
+
-webkit-box-orient: vertical; /* 垂直排列 */
|
|
109
|
+
-webkit-line-clamp: 2; /* 限制显示3行 */
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
.reference-content {
|
|
113
|
+
font-size: $font-size-body-1;
|
|
114
|
+
line-height: $font-lineheight-2;
|
|
115
|
+
color: $color-text1-4;
|
|
116
|
+
overflow: hidden; /* 隐藏超出部分 */
|
|
117
|
+
display: -webkit-box; /* 使其成为弹性盒子 */
|
|
118
|
+
-webkit-box-orient: vertical; /* 垂直排列 */
|
|
119
|
+
-webkit-line-clamp: 3; /* 限制显示3行 */
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
|
|
52
124
|
margin-top: $s-1;
|
|
53
125
|
.reference-item{
|
|
54
126
|
display: flex;
|
|
@@ -60,26 +132,38 @@
|
|
|
60
132
|
margin-bottom: 0;
|
|
61
133
|
}
|
|
62
134
|
.common-icon {
|
|
63
|
-
margin-right:
|
|
64
|
-
&.svg {
|
|
135
|
+
margin-right: $s-1;
|
|
65
136
|
|
|
137
|
+
&.svg {
|
|
66
138
|
}
|
|
67
139
|
|
|
68
|
-
|
|
69
|
-
|
|
140
|
+
img {
|
|
141
|
+
height: $s-4;
|
|
142
|
+
width: auto;
|
|
70
143
|
}
|
|
71
144
|
|
|
72
145
|
&.node {
|
|
73
146
|
|
|
74
147
|
}
|
|
75
148
|
}
|
|
149
|
+
|
|
76
150
|
.reference-text {
|
|
77
|
-
font-size: $
|
|
151
|
+
font-size: $font-size-caption;
|
|
78
152
|
color: $color-link-2;
|
|
79
153
|
white-space: nowrap; /* 禁止换行 */
|
|
80
154
|
overflow: hidden; /* 超出部分隐藏 */
|
|
81
155
|
text-overflow: ellipsis; /* 以省略号显示溢出文本 */
|
|
82
|
-
line-height:
|
|
156
|
+
line-height: $font-lineheight-2;
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
.reference-time {
|
|
160
|
+
font-size: $s-3;
|
|
161
|
+
color: $color-text1-1;
|
|
162
|
+
line-height: $font-lineheight-2;
|
|
163
|
+
margin-left: $s-1;
|
|
164
|
+
white-space: nowrap; /* 禁止换行 */
|
|
165
|
+
overflow: hidden; /* 超出部分隐藏 */
|
|
166
|
+
text-overflow: ellipsis; /* 以省略号显示溢出文本 */
|
|
83
167
|
}
|
|
84
168
|
}
|
|
85
169
|
}
|
package/lib/reference/types.d.ts
CHANGED
|
@@ -6,6 +6,8 @@ export interface ReferenceItemProps {
|
|
|
6
6
|
url?: string;
|
|
7
7
|
sourceIcon?: string;
|
|
8
8
|
sourceCode?: string;
|
|
9
|
+
modifyTime?: string;
|
|
10
|
+
content?: string;
|
|
9
11
|
}
|
|
10
12
|
/**
|
|
11
13
|
* 参考来源属性
|
|
@@ -39,4 +41,16 @@ export interface ReferenceProps extends React.HTMLAttributes<HTMLElement>, Commo
|
|
|
39
41
|
* 点击对应参考来源项
|
|
40
42
|
*/
|
|
41
43
|
onItemClick?: (item: ReferenceItemProps, index: number) => void;
|
|
44
|
+
/**
|
|
45
|
+
* 来源展示的模式
|
|
46
|
+
*/
|
|
47
|
+
mode?: 'simple' | 'detail';
|
|
48
|
+
/**
|
|
49
|
+
* 关闭参考来源点击
|
|
50
|
+
*/
|
|
51
|
+
onClose?: () => void;
|
|
52
|
+
/**
|
|
53
|
+
* 参考来源面板点击回调(区别于每个参考来源项的点击/头部展开点击)
|
|
54
|
+
*/
|
|
55
|
+
onDetailClick?: () => void;
|
|
42
56
|
}
|