zarm-web
Version:
基于 React 的桌面端UI库
60 lines (55 loc) • 1.35 kB
JavaScript
import React from 'react';
import classnames from 'classnames';
import { isAddon } from '../PropsType';
import { handleFillType } from '../handler';
export default function Addon(props) {
const {
addon,
size,
param,
shape,
composePosition
} = props;
const cls = classnames({
[`shape-${shape}`]: !!shape,
'ui-addon': true,
[`size-${size}`]: !!size,
[`compose-position-${composePosition}`]: !!composePosition
});
const params = Array.isArray(param) ? [param] : param;
if (typeof addon === 'function') {
// eslint-disable-next-line
return addon.apply(undefined, params);
}
if (isAddon(addon)) {
const {
fillType
} = addon;
const addonElem = addon.addon;
let childElem;
if (typeof addonElem === 'function') {
// eslint-disable-next-line
childElem = addonElem.apply(undefined, params);
} else {
childElem = addonElem;
}
const bgColor = handleFillType(fillType);
return React.createElement("div", {
className: cls,
style: {
backgroundColor: bgColor
}
}, childElem);
}
const bgColor = handleFillType('default');
return React.createElement("div", {
className: cls,
style: {
backgroundColor: bgColor
}
}, addon);
}
Addon.defaultProps = {
position: 'before',
shape: 'radius'
};