@suyouwanggang/p-ui
v1.0.1
Published
`p-ui`是一套使用原生`Web Components`规范开发的跨框架UI组件库,基于`lit-elment`库开发。 [github项目地址](https://github.com/suyouwanggang/p-ui)
Downloads
2
Maintainers
Readme
p-ui
p-ui
是一套使用原生Web Components
规范开发的跨框架UI组件库,基于lit-elment
库开发。
github项目地址
特性
- 跨框架。无论是
react
、vue
还是原生项目均可使用。 - 组件化,基于lit-element,lit-html 实现。
shadow dom
真正意义上实现了样式和功能的组件化。 - 纯原生,无需任何预处理器编译。
- 所有组件都支持主题颜色,大小定制,以后会有文档专门说明。
支持的组件
p-icon
组件。基于ant design svg 图标组件 .
name
图标名称- 支持·
color
改颜色. path
svg 可以通过svg 路径配置svg 图标 .size
大小
p-tips
组件,类似 html title 属性,效果唯美。
dir
配置tip 位置,支持top topleft topright ,bottom bottomleft bottomright left lefttop leftbuttom right righttop rightbottom auto位置
color
配置tip 颜色type
内置风格success warning error
show
手动控制是否显示,默认hover
显示tips
配置
p-loading
组件 ,svg 图标加载效果
color
,font-size
控制颜色和字体大小
p-button
组件,代替原始的button 组件,内置动画效果。
type
内置风格flat,primary,danger,dashed
href
则渲染为a
标签,此时可以配置target
,rel
,download
,icon
配置图标checked
toogle 切换是否点击过value
loading
效果shape
形状,circle
,其他形状to do
block
则为快级按钮p-button-group
按钮组支持,默认是横排风格,竖排vertical
待实现,按钮组支持change
事件
p-switch
组件
name
,value
表单属性checked
选中disabled
效果change
事件支持
p-checkbox
组件,代替原始的checkbox 组件,显示效果各浏览器统一。
name
,value
表单属性checked
是否选中- 内置验证,支持
required
,errortips
配置自定义验证不通过提示可以通过novalidate
关闭验证 change
事件支持disabled
效果支持readonly
效果支持
p-checkbox-group
组件,p-checkbox
组支持
- 支持横排风格,
vertical
则显示为竖排风格 . change
事件支持.- 内置
min
,max
验证,novilidate
关闭验证 readonly
,disabled
效果
p-radio
组件,代替原始的radio 组件,显示效果各浏览器统一
name
,value
disabled
控制checked
控制选中
p-radio-group
组件 radio组
name
,value
disabled
控制change
事件- 内置
reqiure
验证
p-input
输入组件 代替原始的input 组件
name
,value
属性支持type
支持input
,number
,password
,email
,url
,search
type
为number
,可以通过scale
控制输入的小数的位数,例如2,则只能输入2位小数clear
=true ,右侧图标能清空内容,type
为'password' 时,支持查看password 内容- 左右支持配置icon,通过
leftIcon
,rightIcon
控制左右图标 input
事件,支持debounce
防抖,throttle
节流change
事件- 内置
required
,min
,max
,minlength
,maxlength
验证 - 支持通过
validateObject
自定义验证,格式为interface { method(input:PInput):boolean ,tips?:string }
p-rate
评分组件
name
,value
表单属性支持disabled
效果icon
自定义评分图标onColor
和offColor
配置得分,未得分颜色hoverable
效果,控制鼠标滑过,是否设置当前评分size
图标大小支持number
默认5分制,控制评分图标个数tipStrings
数组控制每一分提示,例如: ['terrible','bad','normal','good','wonderful'];change
事件
p-page-btn
分页组件
name
,value
表单属性支持pagesize
,total
控制分页大小和总数,value
为当前页数,默认为第一页simple
和默认两种风格change
事件- 键盘控制分页,
left
和right
支持 pagesize
默认为20,可以调整size
图标大小支持number
默认5分制,控制评分图标个数tipStrings
数组控制每一分提示,例如: ['terrible','bad','normal','good','wonderful'];change
事件
兼容性
现代浏览器。
包括移动端,不支持IE
。
IE
不支持原生customElements
,webcomponentsjs可以实现对IE
的兼容,不过很多CSS
特性仍然无效,暂时不考虑兼容IE11 及以下.
- 直接在
github
上获取最新文件。
目录如下:
.
|___p-ui
├── elements //功能组件
| ├── p-icon
| ├── p-tips
| ├── p-input
| ├── p-checkbox
| ├── p-radio
| ├── p-button
| ├── p-switch
| ├── p-rate
| |—— p-tips
| |—— p-pagebtn
| |—— p-tab
| |—— p-tree
| └── ...
└── iconfont //图标库
└── icon.svg
将整个文件夹放入项目当中。
html引用
<script type="module">
import './node_modules/p-ui/index.js'; //推荐
//如需单独使用,文档中都是单独使用的情况,推荐全部引用,即第一种方式。
import './node_modules/p-ui/components/p-button.js';
</script>
<xy-button>button</xy-button>
现代浏览器支持原生
import
语法,不过需要注意script
的类型type="module"
。
js引用
import 'p-ui';//推荐
//如需单独使用
import 'p-ui/elements/p-button.js';
let button=document.createElement('p-button');
button.loading=true;
关于
react
中使用Web Components
的注意细节可参考https://react.docschina.org/docs/web-components.html
vue项目引用
与原生类似,没任何差别。
其他
大部分情况下,可以把组件当成普通的html
标签,
比如给<p-button>button</p-button>
添加事件,有以下几种方式
<p-button onclick="alert(5)">button</p-button>
btn.onclick = function(){
alert(5)
}
btn.addEventListener('click',function(){
alert(5)
})
自定义事件只能通过
addEventListener
绑定
比如元素的获取,完全符合html
规则
<p-tab>
<p-tab-content label="tab1">tab1</p-tab-content>
<p-tab-content label="tab2">tab2</p-tab-content>
<p-tab-content label="tab3" id="tab3">tab3</p-tab-content>
</p-tab>
const tab3 = document.getElementById('tab3');
tab3.parentNode;//p-tab
组件的布尔类型的属性也遵从原生规范(添加和移除属性),比如
<p-tips show='true' ></p-tips> <!-- 显示,特例 -->
<p-button disabled>button</p-button> <!-- 禁用 -->
<p-button>button</p-button> <!-- 正常 -->
<p-button loading>button</p-button> <!-- 加载中 -->
<p-checkbox checked value='1'>button</p-checkbox> <!--选中 -->