完成Badge组件

master
chenjiajian 2023-03-27 10:23:18 +08:00
parent b9829c6f22
commit cdc037e712
2 changed files with 115 additions and 16 deletions

View File

@ -1,33 +1,33 @@
# @bd/wcui # @bd/wcui
百搭WCUI组件库, 基于web components开发。面向下一代的UI组件库
百搭 WCUI 组件库, 基于 web components 开发。面向下一代的 UI 组件库
### 开发环境 ### 开发环境
+ vscode 开源编辑器 - vscode 开源编辑器
- `Prettier`插件, 格式化代码用
- `string-html-css`, 可高亮显示js中的`html/css`文本, 并支持`emmet`
- `simple http`, 可快速配置http服务器,支持history路由
- ...
+ @bd/core 针对`web components`的核心封装库, 以数据驱动, 可以更方便的开发wc组件
- `Prettier`插件, 格式化代码用
- `string-html-css`, 可高亮显示 js 中的`html/css`文本, 并支持`emmet`
- `simple http`, 可快速配置 http 服务器,支持 history 路由
- ...
- @bd/core 针对`web components`的核心封装库, 以数据驱动, 可以更方便的开发 wc 组件
### 开发进度 && 计划 ### 开发进度 && 计划
- [x] `wc-card`卡片组件 - [x] `wc-card`卡片组件
- [x] `wc-space`间隔组件 - [x] `wc-space`间隔组件
- [ ] `wc-avatar`头像组件 - [ ] `wc-avatar`头像组件
- [ ] `wc-badge`徽标组件 - [x] `wc-badge`徽标组件
- [ ] `wc-counter`倒计时组件 - [ ] `wc-counter`倒计时组件
- [ ] `wc-drag`拖拽组件 - [ ] `wc-drag`拖拽组件
- [x] `wc-button`表单组件-按钮 - [x] `wc-button`表单组件-按钮
- [x] `wc-link`表单组件-链接按钮 - [x] `wc-link`表单组件-链接按钮
- [x] `wc-checkbox`表单组件-复选框 - [x] `wc-checkbox`表单组件-复选框
- [ ] `wc-input`表单组件-文本输入框 - [ ] `wc-input`表单组件-文本输入框
- [x] `wc-passwd`表单组件-文本输入框 - [x] `wc-passwd`表单组件-文本输入框
- [ ] `wc-number`表单组件-步进数字输入 - [x] `wc-textarea`表单组件-多行文本输入框
- [x] `wc-number`表单组件-步进数字输入
- [ ] `wc-star`表单组件-评分 - [ ] `wc-star`表单组件-评分
- [x] `wc-radio`表单组件-单选框 - [x] `wc-radio`表单组件-单选框
- [ ] `wc-select`表单组件-下拉选择 - [ ] `wc-select`表单组件-下拉选择
@ -35,8 +35,8 @@
- [ ] `wc-switch`表单组件-开关 - [ ] `wc-switch`表单组件-开关
- [x] `wc-icon`图标组件 - [x] `wc-icon`图标组件
- [ ] `wc-layer` 弹层组件 - [ ] `wc-layer` 弹层组件
- [x] `wc-markd`markdown组件 - [x] `wc-markd`markdown 组件
- [ ] `wc-meditor`md文本编辑器 - [ ] `wc-meditor`md 文本编辑器
- [ ] `wc-neditor`富文本编辑器 - [ ] `wc-neditor`富文本编辑器
- [ ] `wc-pager`分页组件 - [ ] `wc-pager`分页组件
- [ ] `wc-colorpicker`颜色选择器 - [ ] `wc-colorpicker`颜色选择器
@ -44,12 +44,11 @@
- [ ] `wc-timepicker`时间选择器 - [ ] `wc-timepicker`时间选择器
- [x] `wc-code`代码高亮插件 - [x] `wc-code`代码高亮插件
- [x] `wc-scroll`滚动组件 - [x] `wc-scroll`滚动组件
- [ ] `wc-silder`滑块组件 - [x] `wc-silder`滑块组件
- [ ] `wc-progress`进度条组件 - [ ] `wc-progress`进度条组件
- [ ] `wc-tree`树形菜单组件 - [ ] `wc-tree`树形菜单组件
- [ ] `wc-uploader`上传组件 - [ ] `wc-uploader`上传组件
### 测试预览 ### 测试预览
[测试预览](./develop.md) [测试预览](./develop.md)

100
src/badge/index.js Normal file
View File

@ -0,0 +1,100 @@
/**
* {}
* @author yutent<yutent.io@gmail.com>
* @date 2023/03/21 16:14:10
*/
import { css, html, Component } from '@bd/core'
class Badge extends Component {
static props = {
value: '',
type: 'info',
max: {
type: Number,
default: null
},
hidden: false,
'is-dot': false
}
static styles = [
css`
:host {
position: relative;
display: inline-block;
}
.num {
z-index: 100;
position: absolute;
display: inline-flex;
justify-content: center;
align-items: center;
left: calc(100% - 9px);
top: -10px;
height: 18px;
padding: 0 6px;
border-radius: 10px;
font-size: 12px;
white-space: nowrap;
color: #fff;
background: var(--color-blue-3);
}
:host([is-dot])::after {
z-index: 100;
position: absolute;
height: 8px;
width: 8px;
top: -4px;
left: calc(100% - 4px);
background: var(--color-blue-3);
border-radius: 50%;
content: '';
}
:host([hidden])::after {
display: none;
content: '';
}
`,
//配色
css`
$colors: (
primary: 'teal',
info: 'blue',
success: 'green',
warning: 'orange',
danger: 'red',
secondary: 'dark',
help: 'grey'
);
@loop $t, $c in $colors {
:host([type='#{$t}']) {
.num {
background-color: var(--color-#{$c}-3);
}
&::after {
background-color: var(--color-#{$c}-3);
}
}
}
`
]
render() {
return html`
<div class="badge" ref="bad">
<slot></slot>
${!this['is-dot'] && !this.hidden
? html`<div class="num">
${this.max && this.value >= this.max
? this.max + '+'
: this.value}
</div>`
: ''}
</div>
`
}
}
Badge.reg('badge')