0.9.1 • Published 5 years ago

uxcore-cascade-multi-select v0.9.1

Weekly downloads
19
License
MIT
Repository
github
Last release
5 years ago

uxcore-cascade-multi-select

级联多选组件,推荐所有层级的每一个候选 option 的 key 都是不重复的。

NPM version build status Test Coverage Dependency Status devDependency Status NPM downloads

Sauce Test Status

Development

git clone https://github.com/uxcore/uxcore-cascade-multi-select
cd uxcore-cascade-multi-select
npm install
npm run server

if you'd like to save your install time,you can use uxcore-tools globally.

npm install uxcore-tools -g
git clone https://github.com/uxcore/uxcore-cascade-multi-select
cd uxcore-cascade-multi-select
npm install
npm run dep
npm run start

Test Case

npm run test

Coverage

npm run coverage

Demo

http://uxcore.github.io/components/cascade-multi-select

Contribute

Yes please! See the CONTRIBUTING for details.

CascadeMultiSelect

API

Props

选项描述类型必填默认值
prefixCls默认的类名前缀Stringfalse"kuma-cascade-multi"
className自定义类名Stringfalse""
dropdownClassNamedropdown 部分的定制类名Stringfalse""
config每一级的特殊配置项,可参考下方案例Arrayfalse[]
options横向级联的数据,可参考下方案例Arraytrue[]
value可由外部控制的值,可参考下方案例Arrayfalse[]
defaultValue初始默认的值,格式同 valueArrayfalse[]
cascadeSize级联层级数numberfalse3
placeholderplaceholderstringfalse'Please Select' 或 '请选择'
notFoundContent没有子项级联数据时显示内容Stringfalse'No Data' 或 '没有数据'
allowClear是否允许清空boolfalsetrue
disabled禁用模式,只能看到被禁掉的输入框boolfalsefalse
readOnly只读模式,只能看到纯文本boolfalsefalse
locale'zh-cn' or 'en-us'Stringfalse'zh-cn'
onSelect选中选项的回调函数functionfalse(valueList, labelList, leafList, cascadeSelected) => {}
onItemClick点击选项事件,返回选项信息functionfalse(item) => {}
onOk点击确认按钮回调函数functionfalse(valueList, labelList, leafList, cascadeSelected) => {}
onCancel取消选择时回调函数,通常不点确定,直接隐藏下拉框也会触发这个函数functionfalse() => {}
beforeRender处理在input中预显示的内容,具体用法参考下方的案例functionfalse(value, options) => {}
keyCouldDuplicated是否允许除了第一级和最后一级以外的 id 重复boolfalsefalse
isCleanDisabledLabel已禁用选项是否可被清除boolfalsefalse
labelWithPath是否启用已选Label按层级方式显示boolfalsefalse

props.config

示例

const config = [{
  checkable: false,
  showSearch: true, // 显示过滤项,默认为 false
}, {
  checkable: false, // 设置第二级不可选
}, {
  checkable: false,
}]

config 为一个数组,每一项的配置如下:

  • checkable: (boolean) 该级是否可选,默认为 true
  • showSearch: (boolean) 该级是否展示过滤搜索框,默认为 false

props.options

选项描述类型必填默认值
value选项的值Stringtrue""
label选项的名称Stringtrue""
children选项的子项集Arrayfalse[]
disabled是否禁止选中booleanfalseundefined

示例

const options = [{
  value: 'zhejiang',
  label: '浙江',
  children: [{
    value: 'hangzhou',
    label: '杭州',
    children: [{
      value: 'xihu',
      label: '西湖',
      disabled: true,
    }],
  }],
}, {
  value: 'jiangsu',
  label: '江苏',
  children: [{
    value: 'nanjing',
    label: '南京',
    children: [{
      value: 'zhonghuamen',
      label: '中华门',
    }],
  }],
}];

props.value

props.value 传递的是 key 构成的数组,这里的 key 可以是任意级别,除非当 prop keyCouldDuplicated 为 true 时,必须传 叶子节点的 key 数组

const value = ['xihu', 'bingjiang'];

示例

<CascadeMultiSelect
  options={options}
  value={['xihu', 'nanjing']}
/>

props.beforeRender

props.beforeRender = (value, options) => { return '渲染你自己想要的字符串'; }

beforeRender 返回一个字符串,用来渲染进展开面板触发器的 input 内容。beforeRender 有两个参数,第一个 value 就是当前所有选中的 value 值数组,比较重要的是 options,options 对应的就是 props.options,并且带有每一个选项的选中状态。比如,对于 [{ label: 'label1', children: [{ label: 'label1-1' }] }],当用户选中了 label1 时,options 的结构为:

[{ label: 'label1', checked: true, children: [{ label: 'label1-1', checked: true }] }]

你在业务中通过获取 checked 的值,就可以知道用户选中了哪些选项,此外,当用户未全选某一级时,还会有 halfChecked 属性。

props.onSelect

(valueList, labelList, leafList, cascadeList) => {
  valueList: 选中选项的value列表
  labelList: 选中选项的label列表
  leafList: 选中所有子项的{value, label}列表
  cascadeList: 所有级联结构,如果 item 被选中,则会有一个属性 `checked: true`
}

注:如果选项的子集全部选中,则返回该选项值

CascadeMultiPanel

API

Props

选项描述类型必填默认值
className自定义类名Stringfalse""
prefixCls默认的类名前缀Stringfalse"kuma-cascade-multi"
config配置项Arrayfalse[]
options横向级联的数据Arraytrue[]
value可由外部控制的值Arrayfalse[]
cascadeSize级联层级数numberfalse3
notFoundContent没有子项级联数据时显示内容Stringfalse'No Data' 或 '没有数据'
allowClear是否允许清空boolfalsetrue
locale'zh-cn' or 'en-us'Stringfalse'zh-cn'
onSelect选中选项的回调函数functionfalse(valueList, labelList, leafList) => {}
onItemClick点击选项事件,返回选项信息functionfalse(item) => {}
keyCouldDuplicated是否允许除了第一级和最后一级以外的 id 重复boolfalsefalse

CascadeMultiModal

API

Props

选项描述类型必填默认值
prefixCls默认的类名前缀Stringfalse"kuma-cascade-multi"
className自定义类名Stringfalse""
config配置项Arrayfalse[]
options横向级联的数据Arraytrue[]
value可由外部控制的值Arrayfalse[]
cascadeSize级联层级数numberfalse3
notFoundContent没有子项级联数据时显示内容Stringfalse'No Data' 或 '没有数据'
allowClear是否允许清空boolfalsetrue
locale'zh-cn' or 'en-us'Stringfalse'zh-cn'
onSelect选中选项的回调函数functionfalse(valueList, labelList, leafList) => {}
onItemClick点击选项事件,返回选项信息functionfalse(item, level) => {}
title标题Stringfalse'级联选择'
widthdialog 宽度Numberfalse672
onOk成功按钮回调函数Functionfalse(valueList, labelList, leafList) => {}
onCancel取消的回调函数Functionfalse() => {}

props 复用 uxcore-cascade-multi-select 的 props.

继承了部分Dialog的props,

onOk

(valueList, labelList, leafList, cascadeList) => {
  valueList: 选中选项的value列表
  labelList: 选中选项的label列表
  leafList: 选中所有子项的{value, label}列表
  cascadeList: 所有级联结构,如果 item 被选中,则会有一个属性 `checked: true`
}

使用方法

import CascadeMultiSelect from 'uxcore-cascade-multi-select';

const {
  CascadeMultiPanel,
  CascadeMultiModal,
} = CascadeMultiSelect;

render() {
  return () {
    <div>
      <CascadeMultiPanel />
      <CascadeMultiSelect />
      <CascadeMultiModal />
    </div>
  }
}
0.9.1

5 years ago

0.9.0

5 years ago

0.8.9

6 years ago

0.8.8

6 years ago

0.8.7

6 years ago

0.8.6

6 years ago

0.8.5

7 years ago

0.8.4

7 years ago

0.8.3

7 years ago

0.8.2

7 years ago

0.8.1

7 years ago

0.8.0

7 years ago

0.7.3

7 years ago

0.7.2

7 years ago

0.7.1

7 years ago

0.7.0

8 years ago

0.6.3

8 years ago

0.6.2

8 years ago

0.6.1

8 years ago

0.6.0

8 years ago

0.5.8

8 years ago

0.5.7

8 years ago

0.5.6

8 years ago

0.5.5

8 years ago

0.5.4

8 years ago

0.5.3

8 years ago

0.5.2

8 years ago

0.5.1

8 years ago

0.5.0

8 years ago

0.4.0

8 years ago

0.3.3

8 years ago

0.3.2

8 years ago

0.3.1

8 years ago

0.3.0

8 years ago

0.2.7

8 years ago

0.2.6

8 years ago

0.2.5

8 years ago

0.2.4

8 years ago

0.2.2

8 years ago

0.2.1

8 years ago

0.2.0

8 years ago

0.1.8

8 years ago

0.1.7

8 years ago

0.1.6

8 years ago

0.1.5

8 years ago

0.1.4

8 years ago

0.1.3

8 years ago

0.1.2

8 years ago

0.1.1

8 years ago