vue-slim-modal
Version:
Slim modal component for Vue.js
77 lines (67 loc) • 1.7 kB
JavaScript
/*!
* vue-slim-modal v1.0.4
* (c) 2017-present EGOIST <0x142857@gmail.com> (github.com/egoist)
* Released under the MIT License.
*/
;
function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
var _mergeJSXProps = _interopDefault(require('babel-helper-vue-jsx-merge-props'));
var index = {
name: 'slim-modal',
functional: true,
props: {
isOpen: {
type: Boolean,
required: true
},
clickOutside: {
type: Function,
default: function _default() {
return function () {
return null;
};
}
},
isCenter: {
type: Boolean,
default: false
},
overlayClass: {
type: String
}
},
render: function render(h, ctx) {
var _ctx$props = ctx.props,
isOpen = _ctx$props.isOpen,
isCenter = _ctx$props.isCenter,
clickOutside = _ctx$props.clickOutside,
overlayClass = _ctx$props.overlayClass;
if (!isOpen) return;
var contentClassNames = 'modal' + (isCenter ? ' modal__center' : '');
var overlayClassNames = 'modal-overlay' + (overlayClass ? ' ' + overlayClass : '');
return h(
'div',
{ 'class': 'modal-wrapper' },
[h(
'div',
{ 'class': overlayClassNames, on: {
'click': clickOutside
}
},
[]
), h(
'div',
_mergeJSXProps([{
'class': contentClassNames,
on: {
'click': function click(e) {
return e.stopPropagation();
}
}
}, ctx.data]),
[ctx.children]
)]
);
}
};
module.exports = index;