Files
vxe-table/lib/button/src/button.js
xuliangzhan dea836bcb7 update
2019-09-19 21:45:07 +08:00

123 lines
4.4 KiB
JavaScript

"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _xeUtils = _interopRequireDefault(require("xe-utils/methods/xe-utils"));
var _conf = _interopRequireDefault(require("../../conf"));
var _tools = require("../../tools");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
var _default = {
name: 'VxeButton',
props: {
type: String,
size: String,
name: [String, Number],
disabled: Boolean,
loading: Boolean
},
computed: {
vSize: function vSize() {
return this.size || this.$parent.size || this.$parent.vSize;
}
},
render: function render(h) {
var _ref2,
_this = this,
_ref3;
var $scopedSlots = this.$scopedSlots,
$listeners = this.$listeners,
type = this.type,
vSize = this.vSize,
name = this.name,
disabled = this.disabled,
loading = this.loading;
var isText = type === 'text';
return $scopedSlots.dropdowns ? h('div', {
class: ['vxe-button--dropdown', _defineProperty({}, "size--".concat(vSize), vSize)]
}, [h('button', {
class: ['vxe-button', "type--".concat(isText ? type : 'button'), (_ref2 = {}, _defineProperty(_ref2, "size--".concat(vSize), vSize), _defineProperty(_ref2, "theme--".concat(type), type && !isText), _defineProperty(_ref2, 'is--disabled', disabled || loading), _defineProperty(_ref2, 'is--loading', loading), _ref2)],
attrs: {
name: name,
disabled: disabled || loading
},
on: Object.assign({
mouseenter: this.mouseenterEvent,
mouseleave: this.mouseleaveEvent
}, _xeUtils.default.objectMap($listeners, function (cb, type) {
return function (evnt) {
return _this.$emit(type, evnt);
};
}))
}, [h('span', $scopedSlots.default.call(this)), h('i', {
class: "vxe-button--dropdown-arrow ".concat(_conf.default.icon.dropdownBottom)
})]), h('div', {
class: 'vxe-button--dropdown-wrapper',
on: {
click: this.clickDropdownEvent,
mouseenter: this.mouseenterEvent,
mouseleave: this.mouseleaveEvent
}
}, $scopedSlots.dropdowns.call(this))]) : h('button', {
class: ['vxe-button', "type--".concat(isText ? type : 'button'), (_ref3 = {}, _defineProperty(_ref3, "size--".concat(vSize), vSize), _defineProperty(_ref3, "theme--".concat(type), type && !isText), _defineProperty(_ref3, 'is--disabled', disabled || loading), _defineProperty(_ref3, 'is--loading', loading), _ref3)],
attrs: {
name: name,
disabled: disabled || loading
},
on: _xeUtils.default.objectMap($listeners, function (cb, type) {
return function (evnt) {
return _this.$emit(type, evnt);
};
})
}, (loading ? [h('i', {
class: ['vxe-button--loading-icon', _conf.default.icon.btnLoading]
})] : []).concat($scopedSlots.default.call(this)));
},
methods: {
clickDropdownEvent: function clickDropdownEvent(evnt) {
var dropdownElem = evnt.currentTarget;
var wrapperElem = dropdownElem.parentNode;
var _DomTools$getEventTar = _tools.DomTools.getEventTargetNode(evnt, dropdownElem, 'vxe-button'),
flag = _DomTools$getEventTar.flag,
targetElem = _DomTools$getEventTar.targetElem;
if (flag) {
wrapperElem.dataset.active = 'N';
_tools.DomTools.removeClass(wrapperElem, 'is--active');
_tools.UtilTools.emitEvent(this, 'dropdown-click', [{
name: targetElem.getAttribute('name')
}, evnt]);
}
},
mouseenterEvent: function mouseenterEvent(evnt) {
var dropdownElem = evnt.currentTarget;
var wrapperElem = dropdownElem.parentNode;
wrapperElem.dataset.active = 'Y';
_tools.DomTools.addClass(wrapperElem, 'is--active');
},
mouseleaveEvent: function mouseleaveEvent(evnt) {
var dropdownElem = evnt.currentTarget;
var wrapperElem = dropdownElem.parentNode;
wrapperElem.dataset.active = 'N';
setTimeout(function () {
if (wrapperElem.dataset.active !== 'Y') {
_tools.DomTools.removeClass(wrapperElem, 'is--active');
}
}, 300);
}
}
};
exports.default = _default;