DialogWrap.js 3.24 KB
'use strict';

Object.defineProperty(exports, "__esModule", {
  value: true
});

var _objectWithoutProperties2 = require('babel-runtime/helpers/objectWithoutProperties');

var _objectWithoutProperties3 = _interopRequireDefault(_objectWithoutProperties2);

var _extends2 = require('babel-runtime/helpers/extends');

var _extends3 = _interopRequireDefault(_extends2);

var _Dialog = require('./Dialog');

var _Dialog2 = _interopRequireDefault(_Dialog);

var _ContainerRender = require('../_util/ContainerRender');

var _ContainerRender2 = _interopRequireDefault(_ContainerRender);

var _IDialogPropTypes = require('./IDialogPropTypes');

var _IDialogPropTypes2 = _interopRequireDefault(_IDialogPropTypes);

var _propsUtil = require('../_util/props-util');

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }

var IDialogPropTypes = (0, _IDialogPropTypes2['default'])();
var DialogWrap = {
  props: (0, _extends3['default'])({}, IDialogPropTypes, {
    visible: IDialogPropTypes.visible.def(false)
  }),
  data: function data() {
    this.renderComponent = function () {};
    this.removeContainer = function () {};
    return {};
  },
  beforeDestroy: function beforeDestroy() {
    if (this.visible) {
      this.renderComponent({
        afterClose: this.removeContainer,
        visible: false,
        on: {
          close: function close() {}
        }
      });
    } else {
      this.removeContainer();
    }
  },

  methods: {
    getComponent: function getComponent() {
      var extra = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
      var h = this.$createElement;
      var $attrs = this.$attrs,
          $listeners = this.$listeners,
          $props = this.$props,
          $slots = this.$slots;
      var on = extra.on,
          otherProps = (0, _objectWithoutProperties3['default'])(extra, ['on']);

      var dialogProps = {
        props: (0, _extends3['default'])({}, $props, {
          dialogClass: (0, _propsUtil.getClass)(this),
          dialogStyle: (0, _propsUtil.getStyle)(this)
        }, otherProps),
        attrs: $attrs,
        ref: '_component',
        key: 'dialog',
        on: (0, _extends3['default'])({}, $listeners, on)
      };
      return h(
        _Dialog2['default'],
        dialogProps,
        [$slots['default']]
      );
    },
    getContainer2: function getContainer2() {
      var container = document.createElement('div');
      if (this.getContainer) {
        this.getContainer().appendChild(container);
      } else {
        document.body.appendChild(container);
      }
      return container;
    }
  },

  render: function render() {
    var _this = this;

    var h = arguments[0];
    var visible = this.visible;

    return h(_ContainerRender2['default'], {
      attrs: {
        parent: this,
        visible: visible,
        autoDestroy: false,
        getComponent: this.getComponent,
        getContainer: this.getContainer2,
        children: function children(_ref) {
          var renderComponent = _ref.renderComponent,
              removeContainer = _ref.removeContainer;

          _this.renderComponent = renderComponent;
          _this.removeContainer = removeContainer;
          return null;
        }
      }
    });
  }
};

exports['default'] = DialogWrap;