window.data = [
{ html: `
xm-select始于layui, 前身formSelects, 此版本引入第三方preact库, 利用jsx渲染页面结构
作者: 热爱前端的Java程序猿
QQ号: 707200833
QQ群: 769620939
↓↓↓ 捐赠作者 ↓↓↓
你们的支持, 是我们坚持的动力
`, js: `
xmSelect.render({
// 这里是指定渲染的地方
el: '#test01',
// 这里是渲染的数据
data: [{name: '水果', value: 1}, {name: '蔬菜', value: 2}]
})
`, comment: `
简单的使用方法:
1. 引入xm-select.js文件
2.
3. 使用js渲染指定元素
`, brush: 'html', title: '简介'},
{ html: `
如果有bug欢迎提issues, 或者在群内@群主进行反馈
更新日志
`, js: ``, comment: `
[2019-07-27] v1.0.0.0727
1. 新增单选模式, {radio: true|false}
2. 新增重复选模式, {repeat: true|false}
3. 新增配置, 可以控制是否自动关闭下拉框, {clickClose: true|false}
4. 新增on方法, 可以监听已选择数据, data: {arr, item, selected}
更新文档演示
[---] v1.0.0
很久很久以前...
`, brush: 'html', title: '更新日志'},
{ html: `
默认配置项options
`, comment: `
{
//多选数据
data: [],
//默认选中数据, 优先级大于selected
initValue: null,
//默认提示
tips: '请选择', //please selected
//空数据提示
empty: '暂无数据', //no data
//搜索延迟 ms
delay: 500,
//搜索默认提示
searchTips: setting.searchTips,
//是否开始本地搜索
filterable: false,
//本地搜索过滤方法
filterMethod: function(val, item, index, prop){
if(!val) return true;
return item[prop.name].indexOf(val) != -1;
},
//下拉方向
direction: 'auto',
//自定义样式
style: {},
//是否开启单选模式
radio: false,
//是否开启重复选模式
repeat: false,
//是否点击选项后自动关闭下拉框
clickClose: false,
//自定义属性名称
prop: {
name: 'name',
value: 'value',
selected: 'selected',
disabled: 'disabled',
},
//主题配置
theme: {
color: '#009688',
},
//模型
model: {
label: {
type: 'block',
text: {
left: '',
right: '',
separator: ', ',
},
block: {
showCount: 0,
showIcon: true,
},
count: {
template(data, sels){
return '已选中 '+sels.length+' 项, 共 '+data.length+' 项'
}
},
},
},
// 展开下拉框
show(){
},
// 隐藏下拉框
hidn(){
},
// 模板组成, 当前option数据, 已经选中的数据, name, value
template({ item, sels, name, value }){
return name;
},
//监听选中事件
on({ arr, item, selected }){
}
}
`, brush: 'js', title: '默认配置项'},
{ html: `
所有的方法
`, comment: `
//更新组件
xmSelect: update(options)
//重置组件
xmSelect: reset()
//重新渲染
xmSelect: render(options)
//主动关闭
xmSelect: opened()
//主动关闭
xmSelect: closed()
//获取已选中数据
xmSelect: getValue()
//设置选中数据, array: 选中数据, show: 是否展开下拉框
xmSelect: setValue(array, show)
`, brush: 'js', title: '所有的方法method'},
{ html: `
这是一个国语版
`, js: `
var demo1 = xmSelect.render({
el: '#demo1',
language: 'zn',
data: ''.padEnd(100, ' ').split('').map((a, i) => ( {name: 'name' + i, value: i} )),
})
`, brush: 'js', title: '这是一个国语版'},
{ html: `
这是一个国际版(English)
`, js: `
var demo02 = xmSelect.render({
el: '#demo2',
language: 'en',
data: ''.padEnd(100, ' ').split('').map((a, i) => ( {name: 'name' + i, value: i} )),
})
`, brush: 'js', title: '这是一个国际版(English)'},
{ html: `
有基础数据
`, js: `
var demo3 = xmSelect.render({
el: '#demo3',
data: [
{name: '水果', value: 1},
{name: '蔬菜', value: 2},
{name: '桌子', value: 3},
]
})
`, brush: 'js', title: '有基础数据'},
{ html: `
有选中, 禁用的
`, js: `
var demo4 = xmSelect.render({
el: '#demo4',
data: [
{name: '水果', value: 1, selected: true, disabled: true},
{name: '蔬菜', value: 2, selected: true},
{name: '桌子', value: 3, disabled: true},
{name: '北京', value: 4},
]
})
`, brush: 'js', title: '有选中, 禁用的'},
{ html: `
自定义key
`, js: `
var demo5 = xmSelect.render({
el: '#demo5',
data: [
{label: '水果', val: 1, sel: true, dis: true},
{label: '蔬菜', val: 2, sel: true},
{label: '桌子', val: 3, dis: true},
{label: '北京', val: 4},
],
prop: {
name: 'label',
value: 'val',
selected: 'sel',
disabled: 'dis'
}
})
`, brush: 'js', title: '自定义key'},
{ html: `
使用template自己构建选项1
`, js: `
var demo6 = xmSelect.render({
el: '#demo6',
data: [
{name: '水果', value: 1, selected: true, disabled: true},
{name: '蔬菜', value: 2, selected: true},
{name: '桌子', value: 3, disabled: true},
{name: '北京', value: 4},
],
template: function({item, arr, name, value}){
return name + ''+value+''
}
})
`, brush: 'js', title: '使用template自己构建选项1'},
{ html: `
使用template自己构建选项2
`, js: `
var demo7 = xmSelect.render({
el: '#demo7',
data: [
{name: '水果', value: 1, selected: true, disabled: true},
{name: '蔬菜', value: 2, selected: true},
{name: '桌子', value: 3, disabled: true},
{name: '北京', value: 4},
],
template: function({item, arr, name, value}){
return name + ''+value+''
}
})
`, brush: 'js', title: '使用template自己构建选项2'},
{ html: `
简单的展示形式1
`, js: `
var demo8 = xmSelect.render({
el: '#demo8',
data: [
{name: '水果', value: 1, selected: true, disabled: true},
{name: '蔬菜', value: 2, selected: true},
{name: '桌子', value: 3, disabled: true},
{name: '北京', value: 4},
],
model: {
label: {
type: 'text',
text: {
left: '<',
right: '>',
separator: ', ',
},
}
}
})
`, brush: 'js', title: '简单的展示形式1'},
{ html: `
简单的展示形式2
`, js: `
var demo9 = xmSelect.render({
el: '#demo9',
data: [
{name: '水果', value: 1, selected: true, disabled: true},
{name: '蔬菜', value: 2, selected: true},
{name: '桌子', value: 3, disabled: true},
{name: '北京', value: 4},
],
model: {
label: {
type: 'count',
count: {
template: function(data, arr){
return "已选中 " + arr.length + " 项, 共 " + data.length + " 项"
}
}
}
}
})
`, brush: 'js', title: '简单的展示形式2'},
{ html: `
自定义展示
`, js: `
var demo10 = xmSelect.render({
el: '#demo10',
data: [
{name: '水果', value: 1, selected: true, disabled: true},
{name: '蔬菜', value: 2, selected: true},
{name: '桌子', value: 3, disabled: true},
{name: '北京', value: 4},
],
model: {
label: {
type: 'count',
count: {
template: function(data, arr){
return "我是自定义的... 已选中 " + arr.length + " 项, 共 " + data.length + " 项"
}
}
}
}
})
`, brush: 'js', title: '自定义展示'},
{ html: `
多余的用 +隐藏
`, js: `
var demo11 = xmSelect.render({
el: '#demo11',
data: [
{name: '水果', value: 1, selected: true, disabled: true},
{name: '蔬菜', value: 2, selected: true},
{name: '桌子', value: 3, disabled: true},
{name: '北京', value: 4},
],
model: {
label: {
type: 'block',
block: {
showCount: 1,
showIcon: true,
}
}
}
})
`, brush: 'js', title: '多余的用 +隐藏'},
{ html: `
不显示删除图标
`, js: `
var demo12 = xmSelect.render({
el: '#demo12',
data: [
{name: '水果', value: 1, selected: true, disabled: true},
{name: '蔬菜', value: 2, selected: true},
{name: '桌子', value: 3, disabled: true},
{name: '北京', value: 4},
],
model: {
label: {
type: 'block',
block: {
showCount: 1,
showIcon: false,
}
}
}
})
`, brush: 'js', title: '不显示删除图标'},
{ html: `
换一个主题
`, js: `
var demo13 = xmSelect.render({
el: '#demo13',
data: [
{name: '水果', value: 1, selected: true, disabled: true},
{name: '蔬菜', value: 2, selected: true},
{name: '桌子', value: 3, disabled: true},
{name: '北京', value: 4},
],
theme: {
color: 'red',
},
})
`, brush: 'js', title: '换一个主题'},
{ html: `
开启搜索模式
`, js: `
var demo14 = xmSelect.render({
el: '#demo14',
data: [
{name: '水果', value: 1, selected: true, disabled: true},
{name: '蔬菜', value: 2, selected: true},
{name: '桌子', value: 3, disabled: true},
{name: '北京', value: 4},
],
filterable: true, //开启搜索
})
`, brush: 'js', title: '开启搜索模式'},
{ html: `
自定义搜索方法
`, js: `
var demo15 = xmSelect.render({
el: '#demo15',
data: [
{name: '水果', value: 1, selected: true, disabled: true},
{name: '蔬菜', value: 2, selected: true},
{name: '桌子', value: 3, disabled: true},
{name: '北京', value: 4},
],
filterable: true, //开启搜索
filterMethod: function(val, item, index, prop){
if(!val) return true;
return item[prop.name].indexOf(val) != -1;
},
})
`, brush: 'js', title: '自定义搜索方法'},
{ html: `
自定义搜索延迟 和 提示
`, js: `
var demo16 = xmSelect.render({
el: '#demo16',
data: [
{name: '水果', value: 1, selected: true, disabled: true},
{name: '蔬菜', value: 2, selected: true},
{name: '桌子', value: 3, disabled: true},
{name: '北京', value: 4},
],
filterable: true, //开启搜索
delay: 2000,
searchTips: '搜索呀 搜索呀...',
})
`, brush: 'js', title: '自定义搜索延迟 和 提示'},
{ html: `
1000条数据测试
`, js: `
var startTime = Date.now();
var demo17 = xmSelect.render({
el: '#demo17',
data: ''.padEnd(1000, ' ').split('').map((a, i) => ( {name: 'name' + i, value: i} )),
filterable: true, //开启搜索
})
console.log('1000条数据渲染耗时: ' + (Date.now() - startTime) + 'ms');
`, brush: 'js', title: '1000条数据测试'},
{ html: `
自动判断下拉方向
`, js: `
var demo18 = xmSelect.render({
el: '#demo18',
data: ''.padEnd(100, ' ').split('').map((a, i) => ( {name: 'name' + i, value: i} )),
filterable: true, //开启搜索
direction: 'auto',
})
`, brush: 'js', title: '自动判断下拉方向'},
{ html: `
只会往下
`, js: `
var demo19 = xmSelect.render({
el: '#demo19',
data: ''.padEnd(100, ' ').split('').map((a, i) => ( {name: 'name' + i, value: i} )),
filterable: true, //开启搜索
direction: 'down',
})
`, brush: 'js', title: '只会往下'},
{ html: `
只会往上
`, js: `
var demo20 = xmSelect.render({
el: '#demo20',
data: ''.padEnd(100, ' ').split('').map((a, i) => ( {name: 'name' + i, value: i} )),
filterable: true, //开启搜索
direction: 'up',
})
`, brush: 'js', title: '只会往上'},
{ html: `
自定义style样式
`, js: `
var demo21 = xmSelect.render({
el: '#demo21',
data: ''.padEnd(100, ' ').split('').map((a, i) => ( {name: 'name' + i, value: i} )),
filterable: true, //开启搜索
style: {
width: '200px',
marginLeft: '20px',
}
})
`, brush: 'js', title: '自定义style样式'},
{ html: `
单选模式
`, js: `
var demo22 = xmSelect.render({
el: '#demo22',
data: ''.padEnd(100, ' ').split('').map((a, i) => ( {name: 'name' + i, value: i} )),
radio: true,
clickClose: true,
})
`, brush: 'js', title: '单选模式'},
{ html: `
重复选模式
`, js: `
var demo23 = xmSelect.render({
el: '#demo23',
data: ''.padEnd(100, ' ').split('').map((a, i) => ( {name: 'name' + i, value: i} )),
repeat: true,
})
`, brush: 'js', title: '重复选模式'},
{ html: `
多选选完即关闭下拉选
`, js: `
var demo24 = xmSelect.render({
el: '#demo24',
data: ''.padEnd(100, ' ').split('').map((a, i) => ( {name: 'name' + i, value: i} )),
clickClose: true,
})
`, brush: 'js', title: '多选选完即关闭下拉选'},
{ html: `
监听已选择数据
`, js: `
var demo25 = xmSelect.render({
el: '#demo25',
data: ''.padEnd(100, ' ').split('').map((a, i) => ( {name: 'name' + i, value: i} )),
on: function({ arr, item, selected }){
console.log('已选择: ', arr);
console.log('点击选项: ', item);
console.log('点击状态: ', selected);
alert('选择: ' + JSON.stringify(item) + ', 状态: ' + selected);
}
})
`, brush: 'js', title: '监听已选择数据on'},
{ html: `
监听下拉框的打开与关闭
`, js: `
var demo26 = xmSelect.render({
el: '#demo26',
data: ''.padEnd(100, ' ').split('').map((a, i) => ( {name: 'name' + i, value: i} )),
show: function(){
alert('打开了');
},
hidn: function(){
alert('关闭了');
}
})
`, brush: 'js', title: '监听下拉框的打开与关闭'},
{ html: `
控制下拉框的打开与关闭
`, js: `
var demo27 = xmSelect.render({
el: '#demo27',
data: ''.padEnd(100, ' ').split('').map((a, i) => ( {name: 'name' + i, value: i} )),
show: function(){
//这里也可以组件受控
//return false;
},
hidn: function(){
var arr = demo27.getValue();
//如果已选择数据小于1, 则不会关闭下拉框
if(arr.length < 1){
return false;//组件受控
}
}
})
`, brush: 'js', title: '控制下拉框的打开与关闭'},
];