68 lines
2.3 KiB
Java
68 lines
2.3 KiB
Java
import _extends from 'babel-runtime/helpers/extends';
|
|
import _defineProperty from 'babel-runtime/helpers/defineProperty';
|
|
import animation from '../_util/openAnimation';
|
|
import { getOptionProps, initDefaultProps, getComponentFromProp, isValidElement, getListeners } from '../_util/props-util';
|
|
import { cloneElement } from '../_util/vnode';
|
|
import VcCollapse, { collapseProps } from '../vc-collapse';
|
|
import Icon from '../icon';
|
|
import { ConfigConsumerProps } from '../config-provider/configConsumerProps';
|
|
|
|
export default {
|
|
name: 'ACollapse',
|
|
model: {
|
|
prop: 'activeKey',
|
|
event: 'change'
|
|
},
|
|
props: initDefaultProps(collapseProps(), {
|
|
bordered: true,
|
|
openAnimation: animation,
|
|
expandIconPosition: 'left'
|
|
}),
|
|
inject: {
|
|
configProvider: { 'default': function _default() {
|
|
return ConfigConsumerProps;
|
|
} }
|
|
},
|
|
methods: {
|
|
renderExpandIcon: function renderExpandIcon(panelProps, prefixCls) {
|
|
var h = this.$createElement;
|
|
|
|
var expandIcon = getComponentFromProp(this, 'expandIcon', panelProps);
|
|
var icon = expandIcon || h(Icon, {
|
|
attrs: { type: 'right', rotate: panelProps.isActive ? 90 : undefined }
|
|
});
|
|
return isValidElement(Array.isArray(expandIcon) ? icon[0] : icon) ? cloneElement(icon, {
|
|
'class': prefixCls + '-arrow'
|
|
}) : icon;
|
|
}
|
|
},
|
|
render: function render() {
|
|
var _collapseClassName,
|
|
_this = this;
|
|
|
|
var h = arguments[0];
|
|
var customizePrefixCls = this.prefixCls,
|
|
bordered = this.bordered,
|
|
expandIconPosition = this.expandIconPosition;
|
|
|
|
var getPrefixCls = this.configProvider.getPrefixCls;
|
|
var prefixCls = getPrefixCls('collapse', customizePrefixCls);
|
|
|
|
var collapseClassName = (_collapseClassName = {}, _defineProperty(_collapseClassName, prefixCls + '-borderless', !bordered), _defineProperty(_collapseClassName, prefixCls + '-icon-position-' + expandIconPosition, true), _collapseClassName);
|
|
var rcCollapeProps = {
|
|
props: _extends({}, getOptionProps(this), {
|
|
prefixCls: prefixCls,
|
|
expandIcon: function expandIcon(panelProps) {
|
|
return _this.renderExpandIcon(panelProps, prefixCls);
|
|
}
|
|
}),
|
|
'class': collapseClassName,
|
|
on: getListeners(this)
|
|
};
|
|
return h(
|
|
VcCollapse,
|
|
rcCollapeProps,
|
|
[this.$slots['default']]
|
|
);
|
|
}
|
|
}; |