Collapse.js 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. import _extends from 'babel-runtime/helpers/extends';
  2. import _defineProperty from 'babel-runtime/helpers/defineProperty';
  3. import animation from '../_util/openAnimation';
  4. import { getOptionProps, initDefaultProps, getComponentFromProp, isValidElement, getListeners } from '../_util/props-util';
  5. import { cloneElement } from '../_util/vnode';
  6. import VcCollapse, { collapseProps } from '../vc-collapse';
  7. import Icon from '../icon';
  8. import { ConfigConsumerProps } from '../config-provider/configConsumerProps';
  9. export default {
  10. name: 'ACollapse',
  11. model: {
  12. prop: 'activeKey',
  13. event: 'change'
  14. },
  15. props: initDefaultProps(collapseProps(), {
  16. bordered: true,
  17. openAnimation: animation,
  18. expandIconPosition: 'left'
  19. }),
  20. inject: {
  21. configProvider: { 'default': function _default() {
  22. return ConfigConsumerProps;
  23. } }
  24. },
  25. methods: {
  26. renderExpandIcon: function renderExpandIcon(panelProps, prefixCls) {
  27. var h = this.$createElement;
  28. var expandIcon = getComponentFromProp(this, 'expandIcon', panelProps);
  29. var icon = expandIcon || h(Icon, {
  30. attrs: { type: 'right', rotate: panelProps.isActive ? 90 : undefined }
  31. });
  32. return isValidElement(Array.isArray(expandIcon) ? icon[0] : icon) ? cloneElement(icon, {
  33. 'class': prefixCls + '-arrow'
  34. }) : icon;
  35. }
  36. },
  37. render: function render() {
  38. var _collapseClassName,
  39. _this = this;
  40. var h = arguments[0];
  41. var customizePrefixCls = this.prefixCls,
  42. bordered = this.bordered,
  43. expandIconPosition = this.expandIconPosition;
  44. var getPrefixCls = this.configProvider.getPrefixCls;
  45. var prefixCls = getPrefixCls('collapse', customizePrefixCls);
  46. var collapseClassName = (_collapseClassName = {}, _defineProperty(_collapseClassName, prefixCls + '-borderless', !bordered), _defineProperty(_collapseClassName, prefixCls + '-icon-position-' + expandIconPosition, true), _collapseClassName);
  47. var rcCollapeProps = {
  48. props: _extends({}, getOptionProps(this), {
  49. prefixCls: prefixCls,
  50. expandIcon: function expandIcon(panelProps) {
  51. return _this.renderExpandIcon(panelProps, prefixCls);
  52. }
  53. }),
  54. 'class': collapseClassName,
  55. on: getListeners(this)
  56. };
  57. return h(
  58. VcCollapse,
  59. rcCollapeProps,
  60. [this.$slots['default']]
  61. );
  62. }
  63. };