import _defineProperty from 'babel-runtime/helpers/defineProperty';
import _mergeJSXProps from 'babel-helper-vue-jsx-merge-props';
import _extends from 'babel-runtime/helpers/extends';
import PropTypes from '../../../_util/vue-types';
import BaseMixin from '../../../_util/BaseMixin';
import { getOptionProps } from '../../../_util/props-util';
import TodayButton from './TodayButton';
import OkButton from './OkButton';
import TimePickerButton from './TimePickerButton';

var CalendarFooter = {
  mixins: [BaseMixin],
  props: {
    prefixCls: PropTypes.string,
    showDateInput: PropTypes.bool,
    disabledTime: PropTypes.any,
    timePicker: PropTypes.any,
    selectedValue: PropTypes.any,
    showOk: PropTypes.bool,
    // onSelect: PropTypes.func,
    value: PropTypes.object,
    renderFooter: PropTypes.func,
    defaultValue: PropTypes.object,
    locale: PropTypes.object,
    showToday: PropTypes.bool,
    disabledDate: PropTypes.func,
    showTimePicker: PropTypes.bool,
    okDisabled: PropTypes.bool
  },
  methods: {
    onSelect: function onSelect(value) {
      this.__emit('select', value);
    },
    getRootDOMNode: function getRootDOMNode() {
      return this.$el;
    }
  },

  render: function render() {
    var h = arguments[0];

    var props = getOptionProps(this);
    var $listeners = this.$listeners;
    var value = props.value,
        prefixCls = props.prefixCls,
        showOk = props.showOk,
        timePicker = props.timePicker,
        renderFooter = props.renderFooter,
        showToday = props.showToday;

    var footerEl = null;
    var extraFooter = renderFooter();
    if (showToday || timePicker || extraFooter) {
      var _cls;

      var btnProps = {
        props: _extends({}, props, {
          value: value
        }),
        on: $listeners
      };
      var nowEl = null;
      if (showToday) {
        nowEl = h(TodayButton, _mergeJSXProps([{ key: 'todayButton' }, btnProps]));
      }
      delete btnProps.props.value;
      var okBtn = null;
      if (showOk === true || showOk !== false && !!timePicker) {
        okBtn = h(OkButton, _mergeJSXProps([{ key: 'okButton' }, btnProps]));
      }
      var timePickerBtn = null;
      if (timePicker) {
        timePickerBtn = h(TimePickerButton, _mergeJSXProps([{ key: 'timePickerButton' }, btnProps]));
      }

      var footerBtn = void 0;
      if (nowEl || timePickerBtn || okBtn || extraFooter) {
        footerBtn = h(
          'span',
          { 'class': prefixCls + '-footer-btn' },
          [extraFooter, nowEl, timePickerBtn, okBtn]
        );
      }
      var cls = (_cls = {}, _defineProperty(_cls, prefixCls + '-footer', true), _defineProperty(_cls, prefixCls + '-footer-show-ok', !!okBtn), _cls);
      footerEl = h(
        'div',
        { 'class': cls },
        [footerBtn]
      );
    }
    return footerEl;
  }
};

export default CalendarFooter;