调整头像组件的默认宽高; 增加聊天气泡组件
parent
27d8b191a1
commit
02f1e88459
|
@ -16,7 +16,7 @@
|
||||||
|
|
||||||
- @bd/core 针对`web components`的核心封装库, 以数据驱动, 可以更方便的开发 wc 组件
|
- @bd/core 针对`web components`的核心封装库, 以数据驱动, 可以更方便的开发 wc 组件
|
||||||
|
|
||||||
### 开发进度 && 计划 (36/54)
|
### 开发进度 && 计划 (37/54)
|
||||||
|
|
||||||
- [x] `wc-card` 卡片组件
|
- [x] `wc-card` 卡片组件
|
||||||
- [x] `wc-space` 间隔组件
|
- [x] `wc-space` 间隔组件
|
||||||
|
@ -67,7 +67,7 @@
|
||||||
- [ ] `wc-tag` 标签组件
|
- [ ] `wc-tag` 标签组件
|
||||||
- [ ] `wc-tooltip` 文字提示组件
|
- [ ] `wc-tooltip` 文字提示组件
|
||||||
- [x] `wc-popconfirm` 气泡确认框组件
|
- [x] `wc-popconfirm` 气泡确认框组件
|
||||||
- [ ] `wc-chatbox` 聊天气泡组件
|
- [ ] `wc-chatbubble` 聊天气泡组件
|
||||||
- [x] `wc-divider` 分割线组件
|
- [x] `wc-divider` 分割线组件
|
||||||
- [ ] `wc-table` 表格组件
|
- [ ] `wc-table` 表格组件
|
||||||
- [ ] `wc-result` 结果反馈组件
|
- [ ] `wc-result` 结果反馈组件
|
||||||
|
|
|
@ -18,6 +18,8 @@ class Avatar extends Component {
|
||||||
css`
|
css`
|
||||||
:host {
|
:host {
|
||||||
display: inline-flex;
|
display: inline-flex;
|
||||||
|
width: 32px;
|
||||||
|
height: 32px;
|
||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,121 @@
|
||||||
|
/**
|
||||||
|
* {聊天消息气泡组件}
|
||||||
|
* @author yutent<yutent.io@gmail.com>
|
||||||
|
* @date 2023/05/05 14:56:34
|
||||||
|
*/
|
||||||
|
import { css, html, Component } from '@bd/core'
|
||||||
|
|
||||||
|
import '../avatar/index.js'
|
||||||
|
|
||||||
|
class Bubble extends Component {
|
||||||
|
static props = {
|
||||||
|
type: 'text',
|
||||||
|
content: '',
|
||||||
|
avatar: ''
|
||||||
|
}
|
||||||
|
|
||||||
|
static styles = [
|
||||||
|
css`
|
||||||
|
:host {
|
||||||
|
display: block;
|
||||||
|
width: 100%;
|
||||||
|
font-size: 14px;
|
||||||
|
color: var(--color-dark-1);
|
||||||
|
}
|
||||||
|
|
||||||
|
.container {
|
||||||
|
display: flex;
|
||||||
|
width: 100%;
|
||||||
|
margin-top: 16px;
|
||||||
|
|
||||||
|
.content {
|
||||||
|
position: relative;
|
||||||
|
margin-left: 16px;
|
||||||
|
padding: 8px 16px;
|
||||||
|
word-break: break-word;
|
||||||
|
border-radius: 6px;
|
||||||
|
background: #fff;
|
||||||
|
|
||||||
|
a,
|
||||||
|
img {
|
||||||
|
-webkit-user-drag: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
&::before {
|
||||||
|
position: absolute;
|
||||||
|
left: -6px;
|
||||||
|
top: 10px;
|
||||||
|
width: 12px;
|
||||||
|
height: 12px;
|
||||||
|
border-radius: 3px;
|
||||||
|
background: #fff;
|
||||||
|
transform: rotate(45deg);
|
||||||
|
content: '';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
:host([align='right']) {
|
||||||
|
.container {
|
||||||
|
flex-direction: row-reverse;
|
||||||
|
|
||||||
|
.content {
|
||||||
|
margin-left: unset;
|
||||||
|
margin-right: 16px;
|
||||||
|
background: #d9ecff;
|
||||||
|
|
||||||
|
&::before {
|
||||||
|
right: -6px;
|
||||||
|
left: unset;
|
||||||
|
background: #d9ecff;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
`,
|
||||||
|
css`
|
||||||
|
.img-thumb,
|
||||||
|
::slotted(img) {
|
||||||
|
max-width: 128px;
|
||||||
|
min-width: 32px;
|
||||||
|
max-height: 160px;
|
||||||
|
object-fit: contain;
|
||||||
|
-webkit-user-drag: none;
|
||||||
|
}
|
||||||
|
`
|
||||||
|
]
|
||||||
|
|
||||||
|
#drawContent() {
|
||||||
|
switch (this.type) {
|
||||||
|
case 'text':
|
||||||
|
return this.content
|
||||||
|
|
||||||
|
case 'image':
|
||||||
|
return html`<img class="img-thumb" src=${this.content} />`
|
||||||
|
|
||||||
|
case 'voice':
|
||||||
|
return html`<audio src="" controls></audio>`
|
||||||
|
|
||||||
|
case 'media':
|
||||||
|
return html`<audio src=""></audio>`
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
render() {
|
||||||
|
return html`
|
||||||
|
<div class="container">
|
||||||
|
<wc-avatar
|
||||||
|
size="xl"
|
||||||
|
round
|
||||||
|
class="avatar"
|
||||||
|
src=${this.avatar}
|
||||||
|
></wc-avatar>
|
||||||
|
<div class="content">
|
||||||
|
<slot>${this.#drawContent()}</slot>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
`
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Bubble.reg('chat-bubble')
|
Loading…
Reference in New Issue