cjd-parkball
Version:
> 中后台业务组件库,中后台就像公园,进入需要买门票(登录),所以以 Parkball(公园球) 命名,公园内必定捕获!作为一个组件库,提供使用方法文档,方便开发者的调用
42 lines (39 loc) • 1.28 kB
JavaScript
import React, { isValidElement } from 'react'
import { Menu, Dropdown, Divider } from 'antd'
import './index.scss'
export default (argOperation, operationItemLength = 2) => {
if (Array.isArray(argOperation)) {
let operation = argOperation.filter(o => !!o || o === 0)
if (operation.length > operationItemLength) {
const foldedItems = operation.splice(operationItemLength, operation.length)
operation = operation.slice(0, operationItemLength)
const overlay = (
<Menu>
{foldedItems.map((v, i) => (<Menu.Item key={i}>{v}</Menu.Item>))}
</Menu>
)
const foldMenu = (
<Dropdown overlay={overlay}>
<a className="ant-dropdown-link">···</a>
</Dropdown>
)
operation.push(foldMenu)
}
return operation.map((oper, i) => {
let loop = oper
if (isValidElement(operation[i])) {
loop = React.cloneElement(
operation[i],
{ key: `pk-element-${i}` },
)
} else if (operation[i] instanceof Function) {
loop = operation[i]({ key: `pk-element-${i}` })
}
return [
loop,
i !== operation.length - 1 ? <Divider type="vertical" key={`pk-divider-${i}`} /> : null,
]
})
}
return argOperation
}