@next-bricks/ai-portal 0.70.0 → 0.70.2
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/bricks.json +42 -42
- package/dist/chunks/7202.a893b0e6.js.map +1 -1
- package/dist/chunks/action-buttons.68666920.js.map +1 -1
- package/dist/chunks/activity-timeline.96e7aaea.js.map +1 -1
- package/dist/chunks/ai-agents.cffd08a0.js.map +1 -1
- package/dist/chunks/ai-employees.267c3626.js.map +1 -1
- package/dist/chunks/blank-state.648eea95.js.map +1 -1
- package/dist/chunks/chat-input.444c80bb.js.map +1 -1
- package/dist/chunks/chat-panel-welcome.2f7c6c8b.js.map +1 -1
- package/dist/chunks/chat-panel.3160f2e8.js.map +1 -1
- package/dist/chunks/chat-stream.393c8241.js.map +1 -1
- package/dist/chunks/cruise-canvas.bfae3138.js.map +1 -1
- package/dist/chunks/dropdown-select.336442ba.js.map +1 -1
- package/dist/chunks/elevo-card.49b42ed0.js.map +1 -1
- package/dist/chunks/elevo-logo.25e3b889.js.map +1 -1
- package/dist/chunks/elevo-sidebar.a197a77f.js.map +1 -1
- package/dist/chunks/flow-tabs.ee1290c2.js.map +1 -1
- package/dist/chunks/goal-card-list.74ab5767.js.map +1 -1
- package/dist/chunks/home-container.f1829834.js.map +1 -1
- package/dist/chunks/icon-button.545ffb24.js.map +1 -1
- package/dist/chunks/mcp-tools.f132c502.js.map +1 -1
- package/dist/chunks/notice-dropdown.63cb2415.js.map +1 -1
- package/dist/chunks/page-container.2185f2e0.js.map +1 -1
- package/dist/chunks/preview-container.a0ca6e2f.js.map +1 -1
- package/dist/chunks/project-knowledges.51731410.js.map +1 -1
- package/dist/chunks/running-flow.37a428cf.js.map +1 -1
- package/dist/chunks/show-case.44e995fc.js.map +1 -1
- package/dist/chunks/show-cases.c3921ea0.js.map +1 -1
- package/dist/chunks/space-chat-guide.84f4a1e7.js.map +1 -1
- package/dist/chunks/space-logo.994f7a25.js.map +1 -1
- package/dist/chunks/space-workbench.8c064898.js.map +1 -1
- package/dist/chunks/stage-flow.9b6fad93.js.map +1 -1
- package/dist/chunks/stat-with-mini-chart.1509cf8c.js.map +1 -1
- package/dist/chunks/sticky-container.d3f7054e.js.map +1 -1
- package/dist/chunks/tab-list.ee97567f.js.map +1 -1
- package/dist/examples.json +52 -40
- package/dist/{index.8e0adc27.js → index.94998c36.js} +2 -2
- package/dist/{index.8e0adc27.js.map → index.94998c36.js.map} +1 -1
- package/dist/manifest.json +594 -313
- package/dist/types.json +796 -796
- package/dist-types/action-buttons/index.d.ts +10 -1
- package/dist-types/activity-timeline/index.d.ts +10 -1
- package/dist-types/ai-agents/index.d.ts +10 -1
- package/dist-types/ai-employees/index.d.ts +16 -1
- package/dist-types/blank-state/index.d.ts +10 -1
- package/dist-types/chat-input/index.d.ts +37 -1
- package/dist-types/chat-panel/index.d.ts +45 -3
- package/dist-types/chat-stream/index.d.ts +62 -1
- package/dist-types/cruise-canvas/index.d.ts +71 -1
- package/dist-types/dropdown-select/index.d.ts +3 -1
- package/dist-types/elevo-card/index.d.ts +5 -1
- package/dist-types/elevo-logo/index.d.ts +3 -1
- package/dist-types/elevo-sidebar/index.d.ts +19 -2
- package/dist-types/flow-tabs/index.d.ts +5 -1
- package/dist-types/gantt-chart/index.d.ts +3 -1
- package/dist-types/goal-card-list/index.d.ts +8 -1
- package/dist-types/home-container/index.d.ts +4 -1
- package/dist-types/icon-button/index.d.ts +4 -1
- package/dist-types/mcp-tools/index.d.ts +3 -1
- package/dist-types/page-container/index.d.ts +7 -0
- package/dist-types/preview-container/index.d.ts +4 -0
- package/dist-types/project-knowledges/index.d.ts +5 -0
- package/dist-types/running-flow/index.d.ts +3 -0
- package/dist-types/show-case/index.d.ts +5 -0
- package/dist-types/show-cases/index.d.ts +4 -0
- package/dist-types/space-workbench/chat-panel-welcome/index.d.ts +3 -0
- package/dist-types/space-workbench/index.d.ts +7 -0
- package/dist-types/space-workbench/space-chat-guide/index.d.ts +3 -0
- package/dist-types/space-workbench/space-logo/index.d.ts +1 -0
- package/dist-types/stage-flow/index.d.ts +21 -0
- package/dist-types/stat-with-mini-chart/index.d.ts +10 -0
- package/dist-types/sticky-container/index.d.ts +3 -0
- package/dist-types/tab-list/index.d.ts +4 -0
- package/docs/action-buttons.md +59 -10
- package/docs/action-buttons.react.md +80 -0
- package/docs/activity-timeline.md +51 -7
- package/docs/activity-timeline.react.md +109 -0
- package/docs/ai-agents.md +62 -2
- package/docs/ai-agents.react.md +73 -0
- package/docs/ai-employees.md +76 -2
- package/docs/ai-employees.react.md +106 -0
- package/docs/blank-state.md +62 -2
- package/docs/blank-state.react.md +77 -0
- package/docs/chat-box.md +134 -52
- package/docs/chat-box.react.md +142 -0
- package/docs/chat-input.md +117 -1
- package/docs/chat-input.react.md +117 -0
- package/docs/chat-panel-welcome.md +39 -0
- package/docs/chat-panel-welcome.react.md +41 -0
- package/docs/chat-panel.md +86 -3
- package/docs/chat-panel.react.md +109 -0
- package/docs/chat-stream.md +149 -2
- package/docs/chat-stream.react.md +155 -0
- package/docs/cruise-canvas.md +159 -0
- package/docs/cruise-canvas.react.md +159 -0
- package/docs/dropdown-select.md +37 -8
- package/docs/dropdown-select.react.md +144 -0
- package/docs/elevo-card.md +75 -1
- package/docs/elevo-card.react.md +104 -0
- package/docs/elevo-logo.md +13 -1
- package/docs/elevo-logo.react.md +27 -0
- package/docs/elevo-sidebar.md +150 -1
- package/docs/elevo-sidebar.react.md +149 -0
- package/docs/flow-tabs.md +97 -2
- package/docs/flow-tabs.react.md +102 -0
- package/docs/gantt-chart.md +101 -0
- package/docs/gantt-chart.react.md +125 -0
- package/docs/goal-card-list.md +149 -13
- package/docs/goal-card-list.react.md +185 -0
- package/docs/home-container.md +48 -2
- package/docs/home-container.react.md +51 -0
- package/docs/icon-button.md +128 -2
- package/docs/icon-button.react.md +120 -0
- package/docs/mcp-tools.md +105 -2
- package/docs/mcp-tools.react.md +117 -0
- package/docs/notice-dropdown.md +53 -10
- package/docs/notice-dropdown.react.md +167 -0
- package/docs/notice-list.md +53 -5
- package/docs/notice-list.react.md +121 -0
- package/docs/page-container.md +80 -3
- package/docs/page-container.react.md +83 -0
- package/docs/preview-container.md +22 -32
- package/docs/preview-container.react.md +71 -0
- package/docs/project-conversations.md +85 -4
- package/docs/project-conversations.react.md +110 -0
- package/docs/project-knowledges.md +73 -8
- package/docs/project-knowledges.react.md +85 -0
- package/docs/running-flow.md +57 -2
- package/docs/running-flow.react.md +90 -0
- package/docs/show-case.md +48 -3
- package/docs/show-case.react.md +60 -0
- package/docs/show-cases.md +52 -2
- package/docs/show-cases.react.md +92 -0
- package/docs/space-chat-guide.md +32 -0
- package/docs/space-chat-guide.react.md +39 -0
- package/docs/space-logo.md +53 -0
- package/docs/space-logo.react.md +46 -0
- package/docs/space-workbench.md +45 -2
- package/docs/space-workbench.react.md +102 -0
- package/docs/stage-flow.md +122 -26
- package/docs/stage-flow.react.md +112 -0
- package/docs/stat-with-mini-chart.md +64 -159
- package/docs/stat-with-mini-chart.react.md +113 -0
- package/docs/sticky-container.md +56 -3
- package/docs/sticky-container.react.md +60 -0
- package/docs/tab-list.md +74 -3
- package/docs/tab-list.react.md +73 -0
- package/package.json +2 -2
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
---
|
|
2
|
+
tagName: ai-portal.chat-box
|
|
3
|
+
displayName: WrappedAiPortalChatBox
|
|
4
|
+
description: 大型聊天输入框,用于首页,支持命令联想、@提及数字人、文件上传等功能。
|
|
5
|
+
category: ai-portal
|
|
6
|
+
source: "@next-bricks/ai-portal"
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# WrappedAiPortalChatBox
|
|
10
|
+
|
|
11
|
+
> 大型聊天输入框,用于首页,支持命令联想、@提及数字人、文件上传等功能。
|
|
12
|
+
|
|
13
|
+
## 导入
|
|
14
|
+
|
|
15
|
+
```tsx
|
|
16
|
+
import { WrappedAiPortalChatBox } from "@easyops/wrapped-components";
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## Props
|
|
20
|
+
|
|
21
|
+
| 属性 | 类型 | 必填 | 默认值 | 说明 |
|
|
22
|
+
| ------------- | ---------------------------- | ---- | ------ | ----------------------------------- |
|
|
23
|
+
| disabled | `boolean \| undefined` | 否 | - | 是否禁用输入框 |
|
|
24
|
+
| placeholder | `string \| undefined` | 否 | - | 输入框占位文字 |
|
|
25
|
+
| autoFocus | `boolean \| undefined` | 否 | - | 是否自动聚焦 |
|
|
26
|
+
| aiEmployees | `AIEmployee[] \| undefined` | 否 | - | 可 @ 提及的数字人列表 |
|
|
27
|
+
| commands | `Command[] \| undefined` | 否 | - | 命令列表,支持通过 / 或搜索触发联想 |
|
|
28
|
+
| uploadOptions | `UploadOptions \| undefined` | 否 | - | 文件上传配置 |
|
|
29
|
+
|
|
30
|
+
## Events
|
|
31
|
+
|
|
32
|
+
| 事件 | detail | 说明 |
|
|
33
|
+
| --------------- | ----------------------------------------------------------------------------------------------------------- | ------------------------------------------------- |
|
|
34
|
+
| onMessageSubmit | `string` — 用户输入的消息文本内容 | 用户提交消息时触发(已废弃,请使用 onChatSubmit) |
|
|
35
|
+
| onChatSubmit | `ChatPayload` — { content: 消息内容, files: 上传的文件列表, cmd: 命令载荷, aiEmployeeId: @提及的数字人 ID } | 用户提交聊天消息时触发 |
|
|
36
|
+
|
|
37
|
+
## Methods
|
|
38
|
+
|
|
39
|
+
| 方法 | 参数 | 返回值 | 说明 |
|
|
40
|
+
| ------------ | ------------------------- | ------ | ------------------ |
|
|
41
|
+
| setValue | `(value: string) => void` | `void` | 设置输入框的值 |
|
|
42
|
+
| getValue | `() => void` | `void` | 获取输入框当前的值 |
|
|
43
|
+
| focusOnInput | `() => void` | `void` | 使输入框获得焦点 |
|
|
44
|
+
|
|
45
|
+
## Slots
|
|
46
|
+
|
|
47
|
+
| 名称 | 说明 |
|
|
48
|
+
| ------- | -------------------------------------------- |
|
|
49
|
+
| actions | 操作栏左侧插槽,用于放置动作按钮等自定义内容 |
|
|
50
|
+
|
|
51
|
+
## Examples
|
|
52
|
+
|
|
53
|
+
### Basic
|
|
54
|
+
|
|
55
|
+
展示大型聊天输入框的基本用法,配置占位文字和提交事件监听。
|
|
56
|
+
|
|
57
|
+
```tsx
|
|
58
|
+
<WrappedAiPortalChatBox
|
|
59
|
+
placeholder="请输入您的问题,按 Enter 发送"
|
|
60
|
+
onChatSubmit={(e) => console.log(e.detail)}
|
|
61
|
+
/>
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
### With Action Buttons
|
|
65
|
+
|
|
66
|
+
通过 actions 插槽添加动作按钮,实现深度思考和联网搜索等功能入口。
|
|
67
|
+
|
|
68
|
+
```tsx
|
|
69
|
+
<WrappedAiPortalChatBox
|
|
70
|
+
placeholder="请输入您的问题"
|
|
71
|
+
onChatSubmit={(e) => console.log(e.detail)}
|
|
72
|
+
>
|
|
73
|
+
<WrappedAiPortalActionButtons
|
|
74
|
+
slot="actions"
|
|
75
|
+
items={[
|
|
76
|
+
{
|
|
77
|
+
key: "think",
|
|
78
|
+
text: "深度思考",
|
|
79
|
+
icon: { lib: "antd", theme: "outlined", icon: "reddit" },
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
key: "networking",
|
|
83
|
+
text: "联网搜索",
|
|
84
|
+
icon: { lib: "antd", theme: "outlined", icon: "global" },
|
|
85
|
+
},
|
|
86
|
+
]}
|
|
87
|
+
/>
|
|
88
|
+
</WrappedAiPortalChatBox>
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
### With File Upload
|
|
92
|
+
|
|
93
|
+
配置 uploadOptions 属性,启用文件上传功能。
|
|
94
|
+
|
|
95
|
+
```tsx
|
|
96
|
+
<WrappedAiPortalChatBox
|
|
97
|
+
placeholder="请输入您的问题,或拖入文件"
|
|
98
|
+
uploadOptions={{
|
|
99
|
+
enabled: true,
|
|
100
|
+
accept: "image/*,.pdf",
|
|
101
|
+
maxFiles: 5,
|
|
102
|
+
maxSize: 10485760,
|
|
103
|
+
readableAccept: "图片或 PDF",
|
|
104
|
+
readableMaxSize: "10MB",
|
|
105
|
+
}}
|
|
106
|
+
onChatSubmit={(e) => console.log(e.detail)}
|
|
107
|
+
/>
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
### With AI Employees
|
|
111
|
+
|
|
112
|
+
配置 aiEmployees 属性,支持在输入时 @ 提及数字人。
|
|
113
|
+
|
|
114
|
+
```tsx
|
|
115
|
+
<WrappedAiPortalChatBox
|
|
116
|
+
placeholder="输入 @ 可提及数字人"
|
|
117
|
+
aiEmployees={[
|
|
118
|
+
{ employeeId: "emp001", name: "运维工程师小李" },
|
|
119
|
+
{ employeeId: "emp002", name: "数据分析师小张" },
|
|
120
|
+
]}
|
|
121
|
+
onChatSubmit={(e) => console.log(e.detail)}
|
|
122
|
+
/>
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
### Programmatic Control
|
|
126
|
+
|
|
127
|
+
通过方法调用控制输入框,实现预填内容和焦点管理。
|
|
128
|
+
|
|
129
|
+
```tsx
|
|
130
|
+
const ref = useRef<any>();
|
|
131
|
+
|
|
132
|
+
<>
|
|
133
|
+
<button onClick={() => ref.current?.setValue("如何优化服务器性能?")}>
|
|
134
|
+
填写示例问题
|
|
135
|
+
</button>
|
|
136
|
+
<WrappedAiPortalChatBox
|
|
137
|
+
ref={ref}
|
|
138
|
+
placeholder="请输入您的问题"
|
|
139
|
+
onChatSubmit={(e) => console.log(e.detail)}
|
|
140
|
+
/>
|
|
141
|
+
</>;
|
|
142
|
+
```
|
package/docs/chat-input.md
CHANGED
|
@@ -1,9 +1,125 @@
|
|
|
1
|
-
|
|
1
|
+
---
|
|
2
|
+
tagName: ai-portal.chat-input
|
|
3
|
+
displayName: WrappedAiPortalChatInput
|
|
4
|
+
description: 小型聊天输入框,用于对话等页面,支持命令联想、@提及数字人、文件上传及终止任务等功能。
|
|
5
|
+
category: ai-portal
|
|
6
|
+
source: "@next-bricks/ai-portal"
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# ai-portal.chat-input
|
|
10
|
+
|
|
11
|
+
> 小型聊天输入框,用于对话等页面,支持命令联想、@提及数字人、文件上传及终止任务等功能。
|
|
12
|
+
|
|
13
|
+
## Props
|
|
14
|
+
|
|
15
|
+
| 属性 | 类型 | 必填 | 默认值 | 说明 |
|
|
16
|
+
| -------------------- | -------------------------------- | ---- | ---------- | ------------------------------------------------------- |
|
|
17
|
+
| placeholder | `string \| undefined` | 否 | - | 输入框占位文字 |
|
|
18
|
+
| autoFocus | `boolean \| undefined` | 否 | - | 是否自动聚焦 |
|
|
19
|
+
| submitDisabled | `boolean \| undefined` | 否 | - | 是否禁用发送按钮,通常在 AI 正在处理时设为 true |
|
|
20
|
+
| supportsTerminate | `boolean \| undefined` | 否 | - | 是否显示终止任务按钮,需与 submitDisabled 配合使用 |
|
|
21
|
+
| terminating | `boolean \| undefined` | 否 | - | 是否正在终止任务,为 true 时显示加载状态 |
|
|
22
|
+
| autoFade | `boolean \| undefined` | 否 | - | 是否在输入框为空时自动淡出,通过 CSS 属性选择器控制样式 |
|
|
23
|
+
| uploadOptions | `UploadOptions \| undefined` | 否 | - | 文件上传配置 |
|
|
24
|
+
| aiEmployees | `AIEmployee[] \| undefined` | 否 | - | 可 @ 提及的数字人列表 |
|
|
25
|
+
| commands | `Command[] \| undefined` | 否 | - | 命令列表,支持通过 / 或搜索触发联想 |
|
|
26
|
+
| suggestionsPlacement | `"top" \| "bottom" \| undefined` | 否 | `"bottom"` | 命令/提及联想弹出层的显示位置 |
|
|
27
|
+
|
|
28
|
+
## Events
|
|
29
|
+
|
|
30
|
+
| 事件 | detail | 说明 |
|
|
31
|
+
| -------------- | ----------------------------------------------------------------------------------------------------------- | ----------------------------------------------------- |
|
|
32
|
+
| message.submit | `string` — 用户输入的消息文本内容 | 用户提交消息时触发(已废弃,请使用 chat.submit 事件) |
|
|
33
|
+
| chat.submit | `ChatPayload` — { content: 消息内容, files: 上传的文件列表, cmd: 命令载荷, aiEmployeeId: @提及的数字人 ID } | 用户提交聊天消息时触发 |
|
|
34
|
+
| terminate | `void` | 点击终止按钮时触发 |
|
|
35
|
+
|
|
36
|
+
## Methods
|
|
37
|
+
|
|
38
|
+
| 方法 | 参数 | 返回值 | 说明 |
|
|
39
|
+
| -------- | ------------------------- | ------ | -------------------- |
|
|
40
|
+
| setValue | `(value: string) => void` | `void` | 设置输入框的值并聚焦 |
|
|
2
41
|
|
|
3
42
|
## Examples
|
|
4
43
|
|
|
5
44
|
### Basic
|
|
6
45
|
|
|
46
|
+
展示小型聊天输入框的基本用法。
|
|
47
|
+
|
|
48
|
+
```yaml preview
|
|
49
|
+
brick: ai-portal.chat-input
|
|
50
|
+
properties:
|
|
51
|
+
placeholder: 请输入您的问题
|
|
52
|
+
events:
|
|
53
|
+
chat.submit:
|
|
54
|
+
action: console.log
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
### With Terminate Support
|
|
58
|
+
|
|
59
|
+
配置终止任务按钮,在 AI 处理时显示停止操作。
|
|
60
|
+
|
|
61
|
+
```yaml preview
|
|
62
|
+
brick: ai-portal.chat-input
|
|
63
|
+
properties:
|
|
64
|
+
placeholder: 请输入您的问题
|
|
65
|
+
submitDisabled: true
|
|
66
|
+
supportsTerminate: true
|
|
67
|
+
terminating: false
|
|
68
|
+
events:
|
|
69
|
+
chat.submit:
|
|
70
|
+
action: console.log
|
|
71
|
+
terminate:
|
|
72
|
+
action: console.log
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
### With File Upload
|
|
76
|
+
|
|
77
|
+
配置 uploadOptions 属性,启用文件上传功能。
|
|
78
|
+
|
|
79
|
+
```yaml preview
|
|
80
|
+
brick: ai-portal.chat-input
|
|
81
|
+
properties:
|
|
82
|
+
placeholder: 请输入您的问题,或拖入文件
|
|
83
|
+
uploadOptions:
|
|
84
|
+
enabled: true
|
|
85
|
+
accept: image/*,.pdf
|
|
86
|
+
maxFiles: 3
|
|
87
|
+
readableAccept: 图片或 PDF
|
|
88
|
+
events:
|
|
89
|
+
chat.submit:
|
|
90
|
+
action: console.log
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
### With AI Employees and Commands
|
|
94
|
+
|
|
95
|
+
同时配置 aiEmployees 和 commands,支持 @ 提及和 / 命令联想。
|
|
96
|
+
|
|
97
|
+
```yaml preview
|
|
98
|
+
brick: ai-portal.chat-input
|
|
99
|
+
properties:
|
|
100
|
+
placeholder: 输入 / 或 @ 触发联想
|
|
101
|
+
suggestionsPlacement: top
|
|
102
|
+
aiEmployees:
|
|
103
|
+
- employeeId: emp001
|
|
104
|
+
name: 运维工程师小李
|
|
105
|
+
commands:
|
|
106
|
+
- command: analyze
|
|
107
|
+
description: 分析数据
|
|
108
|
+
events:
|
|
109
|
+
chat.submit:
|
|
110
|
+
action: console.log
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
### With Auto Fade
|
|
114
|
+
|
|
115
|
+
启用 autoFade 属性,使输入框在空内容时通过 CSS 淡出。
|
|
116
|
+
|
|
7
117
|
```yaml preview
|
|
8
118
|
brick: ai-portal.chat-input
|
|
119
|
+
properties:
|
|
120
|
+
placeholder: 请输入您的问题
|
|
121
|
+
autoFade: true
|
|
122
|
+
events:
|
|
123
|
+
chat.submit:
|
|
124
|
+
action: console.log
|
|
9
125
|
```
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
---
|
|
2
|
+
tagName: ai-portal.chat-input
|
|
3
|
+
displayName: WrappedAiPortalChatInput
|
|
4
|
+
description: 小型聊天输入框,用于对话等页面,支持命令联想、@提及数字人、文件上传及终止任务等功能。
|
|
5
|
+
category: ai-portal
|
|
6
|
+
source: "@next-bricks/ai-portal"
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# WrappedAiPortalChatInput
|
|
10
|
+
|
|
11
|
+
> 小型聊天输入框,用于对话等页面,支持命令联想、@提及数字人、文件上传及终止任务等功能。
|
|
12
|
+
|
|
13
|
+
## 导入
|
|
14
|
+
|
|
15
|
+
```tsx
|
|
16
|
+
import { WrappedAiPortalChatInput } from "@easyops/wrapped-components";
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## Props
|
|
20
|
+
|
|
21
|
+
| 属性 | 类型 | 必填 | 默认值 | 说明 |
|
|
22
|
+
| -------------------- | -------------------------------- | ---- | ---------- | ------------------------------------------------------- |
|
|
23
|
+
| placeholder | `string \| undefined` | 否 | - | 输入框占位文字 |
|
|
24
|
+
| autoFocus | `boolean \| undefined` | 否 | - | 是否自动聚焦 |
|
|
25
|
+
| submitDisabled | `boolean \| undefined` | 否 | - | 是否禁用发送按钮,通常在 AI 正在处理时设为 true |
|
|
26
|
+
| supportsTerminate | `boolean \| undefined` | 否 | - | 是否显示终止任务按钮,需与 submitDisabled 配合使用 |
|
|
27
|
+
| terminating | `boolean \| undefined` | 否 | - | 是否正在终止任务,为 true 时显示加载状态 |
|
|
28
|
+
| autoFade | `boolean \| undefined` | 否 | - | 是否在输入框为空时自动淡出,通过 CSS 属性选择器控制样式 |
|
|
29
|
+
| uploadOptions | `UploadOptions \| undefined` | 否 | - | 文件上传配置 |
|
|
30
|
+
| aiEmployees | `AIEmployee[] \| undefined` | 否 | - | 可 @ 提及的数字人列表 |
|
|
31
|
+
| commands | `Command[] \| undefined` | 否 | - | 命令列表,支持通过 / 或搜索触发联想 |
|
|
32
|
+
| suggestionsPlacement | `"top" \| "bottom" \| undefined` | 否 | `"bottom"` | 命令/提及联想弹出层的显示位置 |
|
|
33
|
+
|
|
34
|
+
## Events
|
|
35
|
+
|
|
36
|
+
| 事件 | detail | 说明 |
|
|
37
|
+
| --------------- | ----------------------------------------------------------------------------------------------------------- | ------------------------------------------------- |
|
|
38
|
+
| onMessageSubmit | `string` — 用户输入的消息文本内容 | 用户提交消息时触发(已废弃,请使用 onChatSubmit) |
|
|
39
|
+
| onChatSubmit | `ChatPayload` — { content: 消息内容, files: 上传的文件列表, cmd: 命令载荷, aiEmployeeId: @提及的数字人 ID } | 用户提交聊天消息时触发 |
|
|
40
|
+
| onTerminate | `void` | 点击终止按钮时触发 |
|
|
41
|
+
|
|
42
|
+
## Methods
|
|
43
|
+
|
|
44
|
+
| 方法 | 参数 | 返回值 | 说明 |
|
|
45
|
+
| -------- | ------------------------- | ------ | -------------------- |
|
|
46
|
+
| setValue | `(value: string) => void` | `void` | 设置输入框的值并聚焦 |
|
|
47
|
+
|
|
48
|
+
## Examples
|
|
49
|
+
|
|
50
|
+
### Basic
|
|
51
|
+
|
|
52
|
+
展示小型聊天输入框的基本用法。
|
|
53
|
+
|
|
54
|
+
```tsx
|
|
55
|
+
<WrappedAiPortalChatInput
|
|
56
|
+
placeholder="请输入您的问题"
|
|
57
|
+
onChatSubmit={(e) => console.log(e.detail)}
|
|
58
|
+
/>
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
### With Terminate Support
|
|
62
|
+
|
|
63
|
+
配置终止任务按钮,在 AI 处理时显示停止操作。
|
|
64
|
+
|
|
65
|
+
```tsx
|
|
66
|
+
<WrappedAiPortalChatInput
|
|
67
|
+
placeholder="请输入您的问题"
|
|
68
|
+
submitDisabled={true}
|
|
69
|
+
supportsTerminate={true}
|
|
70
|
+
terminating={false}
|
|
71
|
+
onChatSubmit={(e) => console.log(e.detail)}
|
|
72
|
+
onTerminate={(e) => console.log(e.detail)}
|
|
73
|
+
/>
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
### With File Upload
|
|
77
|
+
|
|
78
|
+
配置 uploadOptions 属性,启用文件上传功能。
|
|
79
|
+
|
|
80
|
+
```tsx
|
|
81
|
+
<WrappedAiPortalChatInput
|
|
82
|
+
placeholder="请输入您的问题,或拖入文件"
|
|
83
|
+
uploadOptions={{
|
|
84
|
+
enabled: true,
|
|
85
|
+
accept: "image/*,.pdf",
|
|
86
|
+
maxFiles: 3,
|
|
87
|
+
readableAccept: "图片或 PDF",
|
|
88
|
+
}}
|
|
89
|
+
onChatSubmit={(e) => console.log(e.detail)}
|
|
90
|
+
/>
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
### With AI Employees and Commands
|
|
94
|
+
|
|
95
|
+
同时配置 aiEmployees 和 commands,支持 @ 提及和 / 命令联想。
|
|
96
|
+
|
|
97
|
+
```tsx
|
|
98
|
+
<WrappedAiPortalChatInput
|
|
99
|
+
placeholder="输入 / 或 @ 触发联想"
|
|
100
|
+
suggestionsPlacement="top"
|
|
101
|
+
aiEmployees={[{ employeeId: "emp001", name: "运维工程师小李" }]}
|
|
102
|
+
commands={[{ command: "analyze", description: "分析数据" }]}
|
|
103
|
+
onChatSubmit={(e) => console.log(e.detail)}
|
|
104
|
+
/>
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
### With Auto Fade
|
|
108
|
+
|
|
109
|
+
启用 autoFade 属性,使输入框在空内容时通过 CSS 淡出。
|
|
110
|
+
|
|
111
|
+
```tsx
|
|
112
|
+
<WrappedAiPortalChatInput
|
|
113
|
+
placeholder="请输入您的问题"
|
|
114
|
+
autoFade={true}
|
|
115
|
+
onChatSubmit={(e) => console.log(e.detail)}
|
|
116
|
+
/>
|
|
117
|
+
```
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
---
|
|
2
|
+
tagName: ai-portal.chat-panel-welcome
|
|
3
|
+
displayName: WrappedAiPortalChatPanelWelcome
|
|
4
|
+
description: 聊天面板欢迎语构件,展示带有 Elevo 头像的欢迎消息。
|
|
5
|
+
category: ""
|
|
6
|
+
source: "@next-bricks/ai-portal"
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# ai-portal.chat-panel-welcome
|
|
10
|
+
|
|
11
|
+
> 聊天面板欢迎语构件,展示带有 Elevo 头像的欢迎消息。
|
|
12
|
+
|
|
13
|
+
## Props
|
|
14
|
+
|
|
15
|
+
| 属性 | 类型 | 必填 | 默认值 | 说明 |
|
|
16
|
+
| ---- | -------- | ---- | ------ | -------------- |
|
|
17
|
+
| text | `string` | 否 | - | 欢迎语文本内容 |
|
|
18
|
+
|
|
19
|
+
## Examples
|
|
20
|
+
|
|
21
|
+
### 基础使用
|
|
22
|
+
|
|
23
|
+
展示带 Elevo 头像和欢迎语文本的欢迎消息。
|
|
24
|
+
|
|
25
|
+
```yaml preview
|
|
26
|
+
brick: ai-portal.chat-panel-welcome
|
|
27
|
+
properties:
|
|
28
|
+
text: "你好!我是 Elevo,你的 AI 助手。有什么可以帮助你的吗?"
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
### 自定义欢迎语
|
|
32
|
+
|
|
33
|
+
根据业务场景配置个性化的欢迎文案。
|
|
34
|
+
|
|
35
|
+
```yaml preview
|
|
36
|
+
brick: ai-portal.chat-panel-welcome
|
|
37
|
+
properties:
|
|
38
|
+
text: "欢迎来到产品设计空间!我可以帮助你进行需求分析、流程设计和问题排查。"
|
|
39
|
+
```
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
---
|
|
2
|
+
tagName: ai-portal.chat-panel-welcome
|
|
3
|
+
displayName: WrappedAiPortalChatPanelWelcome
|
|
4
|
+
description: 聊天面板欢迎语构件,展示带有 Elevo 头像的欢迎消息。
|
|
5
|
+
category: ""
|
|
6
|
+
source: "@next-bricks/ai-portal"
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# WrappedAiPortalChatPanelWelcome
|
|
10
|
+
|
|
11
|
+
> 聊天面板欢迎语构件,展示带有 Elevo 头像的欢迎消息。
|
|
12
|
+
|
|
13
|
+
## 导入
|
|
14
|
+
|
|
15
|
+
```tsx
|
|
16
|
+
import { WrappedAiPortalChatPanelWelcome } from "@easyops/wrapped-components";
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## Props
|
|
20
|
+
|
|
21
|
+
| 属性 | 类型 | 必填 | 默认值 | 说明 |
|
|
22
|
+
| ---- | -------- | ---- | ------ | -------------- |
|
|
23
|
+
| text | `string` | 否 | - | 欢迎语文本内容 |
|
|
24
|
+
|
|
25
|
+
## Examples
|
|
26
|
+
|
|
27
|
+
### 基础使用
|
|
28
|
+
|
|
29
|
+
展示带 Elevo 头像和欢迎语文本的欢迎消息。
|
|
30
|
+
|
|
31
|
+
```tsx
|
|
32
|
+
<WrappedAiPortalChatPanelWelcome text="你好!我是 Elevo,你的 AI 助手。有什么可以帮助你的吗?" />
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
### 自定义欢迎语
|
|
36
|
+
|
|
37
|
+
根据业务场景配置个性化的欢迎文案。
|
|
38
|
+
|
|
39
|
+
```tsx
|
|
40
|
+
<WrappedAiPortalChatPanelWelcome text="欢迎来到产品设计空间!我可以帮助你进行需求分析、流程设计和问题排查。" />
|
|
41
|
+
```
|
package/docs/chat-panel.md
CHANGED
|
@@ -1,13 +1,45 @@
|
|
|
1
|
-
|
|
1
|
+
---
|
|
2
|
+
tagName: ai-portal.chat-panel
|
|
3
|
+
displayName: WrappedAiPortalChatPanel
|
|
4
|
+
description: 弹出式 AI 对话面板,以模态框形式展示对话界面,支持与 AI 助手进行多轮对话。
|
|
5
|
+
category: ai-portal
|
|
6
|
+
source: "@next-bricks/ai-portal"
|
|
7
|
+
---
|
|
2
8
|
|
|
3
|
-
|
|
9
|
+
# ai-portal.chat-panel
|
|
4
10
|
|
|
5
|
-
弹出式 AI
|
|
11
|
+
> 弹出式 AI 对话面板,以模态框形式展示对话界面,支持与 AI 助手进行多轮对话。
|
|
12
|
+
|
|
13
|
+
## Props
|
|
14
|
+
|
|
15
|
+
| 属性 | 类型 | 必填 | 默认值 | 说明 |
|
|
16
|
+
| ------------- | ----------------------------------------- | ---- | ------- | ------------------------------------ |
|
|
17
|
+
| panelTitle | `string \| undefined` | 否 | - | 面板标题 |
|
|
18
|
+
| aiEmployeeId | `string \| undefined` | 否 | - | 预设数字人 ID,对话提交时会携带该 ID |
|
|
19
|
+
| cmd | `CommandPayload \| undefined` | 否 | - | 预设命令载荷,对话提交时会携带该命令 |
|
|
20
|
+
| width | `string \| number \| undefined` | 否 | - | 面板宽度 |
|
|
21
|
+
| height | `string \| number \| undefined` | 否 | - | 面板高度 |
|
|
22
|
+
| placeholder | `string \| undefined` | 否 | - | 输入框占位文字 |
|
|
23
|
+
| uploadOptions | `UploadOptions \| undefined` | 否 | - | 文件上传配置 |
|
|
24
|
+
| help | `{ useBrick: UseBrickConf } \| undefined` | 否 | - | 无对话时显示的帮助内容配置 |
|
|
25
|
+
| maskClosable | `boolean \| undefined` | 否 | `false` | 是否点击遮罩关闭面板 |
|
|
26
|
+
|
|
27
|
+
## Methods
|
|
28
|
+
|
|
29
|
+
| 方法 | 参数 | 返回值 | 说明 |
|
|
30
|
+
| ------------- | -------------------------------- | ------ | -------------------- |
|
|
31
|
+
| open | `() => void` | `void` | 打开对话面板 |
|
|
32
|
+
| close | `() => void` | `void` | 关闭对话面板 |
|
|
33
|
+
| setInputValue | `(content: string) => void` | `void` | 设置输入框的内容 |
|
|
34
|
+
| send | `(payload: ChatPayload) => void` | `void` | 直接发送一条消息 |
|
|
35
|
+
| showFile | `(file: FileInfo) => void` | `void` | 在面板中显示文件预览 |
|
|
6
36
|
|
|
7
37
|
## Examples
|
|
8
38
|
|
|
9
39
|
### Basic
|
|
10
40
|
|
|
41
|
+
通过按钮触发打开 AI 对话面板。
|
|
42
|
+
|
|
11
43
|
```yaml preview
|
|
12
44
|
- brick: eo-button
|
|
13
45
|
properties:
|
|
@@ -25,3 +57,54 @@
|
|
|
25
57
|
panelTitle: AI 助手
|
|
26
58
|
placeholder: 请输入您的问题...
|
|
27
59
|
```
|
|
60
|
+
|
|
61
|
+
### With Upload Options
|
|
62
|
+
|
|
63
|
+
配置文件上传功能的对话面板。
|
|
64
|
+
|
|
65
|
+
```yaml preview
|
|
66
|
+
- brick: eo-button
|
|
67
|
+
properties:
|
|
68
|
+
themeVariant: elevo
|
|
69
|
+
textContent: 打开对话面板
|
|
70
|
+
events:
|
|
71
|
+
click:
|
|
72
|
+
target: "#chatPanel"
|
|
73
|
+
method: open
|
|
74
|
+
- brick: ai-portal.chat-panel
|
|
75
|
+
properties:
|
|
76
|
+
id: chatPanel
|
|
77
|
+
panelTitle: AI 文档助手
|
|
78
|
+
placeholder: 请上传文件或输入问题
|
|
79
|
+
maskClosable: true
|
|
80
|
+
uploadOptions:
|
|
81
|
+
enabled: true
|
|
82
|
+
accept: .pdf,.docx
|
|
83
|
+
maxFiles: 3
|
|
84
|
+
readableAccept: PDF 或 Word 文档
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
### Programmatic Send
|
|
88
|
+
|
|
89
|
+
通过调用 send 方法直接发起对话。
|
|
90
|
+
|
|
91
|
+
```yaml preview
|
|
92
|
+
- brick: eo-button
|
|
93
|
+
properties:
|
|
94
|
+
themeVariant: elevo
|
|
95
|
+
textContent: 发起分析请求
|
|
96
|
+
events:
|
|
97
|
+
click:
|
|
98
|
+
- target: "#chatPanel"
|
|
99
|
+
method: open
|
|
100
|
+
- target: "#chatPanel"
|
|
101
|
+
method: send
|
|
102
|
+
args:
|
|
103
|
+
- content: 请帮我分析当前系统的性能瓶颈
|
|
104
|
+
- brick: ai-portal.chat-panel
|
|
105
|
+
properties:
|
|
106
|
+
id: chatPanel
|
|
107
|
+
panelTitle: AI 分析助手
|
|
108
|
+
width: 700
|
|
109
|
+
height: 600
|
|
110
|
+
```
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
---
|
|
2
|
+
tagName: ai-portal.chat-panel
|
|
3
|
+
displayName: WrappedAiPortalChatPanel
|
|
4
|
+
description: 弹出式 AI 对话面板,以模态框形式展示对话界面,支持与 AI 助手进行多轮对话。
|
|
5
|
+
category: ai-portal
|
|
6
|
+
source: "@next-bricks/ai-portal"
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# WrappedAiPortalChatPanel
|
|
10
|
+
|
|
11
|
+
> 弹出式 AI 对话面板,以模态框形式展示对话界面,支持与 AI 助手进行多轮对话。
|
|
12
|
+
|
|
13
|
+
## 导入
|
|
14
|
+
|
|
15
|
+
```tsx
|
|
16
|
+
import { WrappedAiPortalChatPanel } from "@easyops/wrapped-components";
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## Props
|
|
20
|
+
|
|
21
|
+
| 属性 | 类型 | 必填 | 默认值 | 说明 |
|
|
22
|
+
| ------------- | ----------------------------------------- | ---- | ------- | ------------------------------------ |
|
|
23
|
+
| panelTitle | `string \| undefined` | 否 | - | 面板标题 |
|
|
24
|
+
| aiEmployeeId | `string \| undefined` | 否 | - | 预设数字人 ID,对话提交时会携带该 ID |
|
|
25
|
+
| cmd | `CommandPayload \| undefined` | 否 | - | 预设命令载荷,对话提交时会携带该命令 |
|
|
26
|
+
| width | `string \| number \| undefined` | 否 | - | 面板宽度 |
|
|
27
|
+
| height | `string \| number \| undefined` | 否 | - | 面板高度 |
|
|
28
|
+
| placeholder | `string \| undefined` | 否 | - | 输入框占位文字 |
|
|
29
|
+
| uploadOptions | `UploadOptions \| undefined` | 否 | - | 文件上传配置 |
|
|
30
|
+
| help | `{ useBrick: UseBrickConf } \| undefined` | 否 | - | 无对话时显示的帮助内容配置 |
|
|
31
|
+
| maskClosable | `boolean \| undefined` | 否 | `false` | 是否点击遮罩关闭面板 |
|
|
32
|
+
|
|
33
|
+
## Methods
|
|
34
|
+
|
|
35
|
+
| 方法 | 参数 | 返回值 | 说明 |
|
|
36
|
+
| ------------- | -------------------------------- | ------ | -------------------- |
|
|
37
|
+
| open | `() => void` | `void` | 打开对话面板 |
|
|
38
|
+
| close | `() => void` | `void` | 关闭对话面板 |
|
|
39
|
+
| setInputValue | `(content: string) => void` | `void` | 设置输入框的内容 |
|
|
40
|
+
| send | `(payload: ChatPayload) => void` | `void` | 直接发送一条消息 |
|
|
41
|
+
| showFile | `(file: FileInfo) => void` | `void` | 在面板中显示文件预览 |
|
|
42
|
+
|
|
43
|
+
## Examples
|
|
44
|
+
|
|
45
|
+
### Basic
|
|
46
|
+
|
|
47
|
+
通过按钮触发打开 AI 对话面板。
|
|
48
|
+
|
|
49
|
+
```tsx
|
|
50
|
+
const ref = useRef<any>();
|
|
51
|
+
|
|
52
|
+
<>
|
|
53
|
+
<button onClick={() => ref.current?.open()}>打开对话面板</button>
|
|
54
|
+
<WrappedAiPortalChatPanel
|
|
55
|
+
ref={ref}
|
|
56
|
+
width={600}
|
|
57
|
+
height={800}
|
|
58
|
+
panelTitle="AI 助手"
|
|
59
|
+
placeholder="请输入您的问题..."
|
|
60
|
+
/>
|
|
61
|
+
</>;
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
### With Upload Options
|
|
65
|
+
|
|
66
|
+
配置文件上传功能的对话面板。
|
|
67
|
+
|
|
68
|
+
```tsx
|
|
69
|
+
const ref = useRef<any>();
|
|
70
|
+
|
|
71
|
+
<>
|
|
72
|
+
<button onClick={() => ref.current?.open()}>打开对话面板</button>
|
|
73
|
+
<WrappedAiPortalChatPanel
|
|
74
|
+
ref={ref}
|
|
75
|
+
panelTitle="AI 文档助手"
|
|
76
|
+
placeholder="请上传文件或输入问题"
|
|
77
|
+
maskClosable={true}
|
|
78
|
+
uploadOptions={{
|
|
79
|
+
enabled: true,
|
|
80
|
+
accept: ".pdf,.docx",
|
|
81
|
+
maxFiles: 3,
|
|
82
|
+
readableAccept: "PDF 或 Word 文档",
|
|
83
|
+
}}
|
|
84
|
+
/>
|
|
85
|
+
</>;
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
### Programmatic Send
|
|
89
|
+
|
|
90
|
+
通过调用 send 方法直接发起对话。
|
|
91
|
+
|
|
92
|
+
```tsx
|
|
93
|
+
const ref = useRef<any>();
|
|
94
|
+
|
|
95
|
+
const handleAnalyze = () => {
|
|
96
|
+
ref.current?.open();
|
|
97
|
+
ref.current?.send({ content: "请帮我分析当前系统的性能瓶颈" });
|
|
98
|
+
};
|
|
99
|
+
|
|
100
|
+
<>
|
|
101
|
+
<button onClick={handleAnalyze}>发起分析请求</button>
|
|
102
|
+
<WrappedAiPortalChatPanel
|
|
103
|
+
ref={ref}
|
|
104
|
+
panelTitle="AI 分析助手"
|
|
105
|
+
width={700}
|
|
106
|
+
height={600}
|
|
107
|
+
/>
|
|
108
|
+
</>;
|
|
109
|
+
```
|