"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: 'PlxButton', props: { type: String, size: String, name: [String, Number], icon: String, 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: ['plx-button--dropdown', _defineProperty({}, "size--".concat(vSize), vSize)] }, [h('button', { class: ['plx-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); }; })) }, this.renderContent(h).concat([h('i', { class: "plx-button--dropdown-arrow ".concat(_conf.default.icon.dropdownBottom) })])), h('div', { class: 'plx-button--dropdown-wrapper', on: { click: this.clickDropdownEvent, mouseenter: this.mouseenterEvent, mouseleave: this.mouseleaveEvent } }, $scopedSlots.dropdowns.call(this))]) : h('button', { class: ['plx-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); }; }) }, this.renderContent(h)); }, methods: { renderContent: function renderContent(h) { var $scopedSlots = this.$scopedSlots, icon = this.icon, loading = this.loading; var contents = []; if (loading) { contents.push(h('i', { class: ['plx-button--loading-icon', _conf.default.icon.btnLoading] })); } else if (icon) { contents.push(h('i', { class: ['plx-button--icon', icon] })); } if ($scopedSlots.default) { contents.push($scopedSlots.default.call(this)); } return contents; }, clickDropdownEvent: function clickDropdownEvent(evnt) { var dropdownElem = evnt.currentTarget; var wrapperElem = dropdownElem.parentNode; var _DomTools$getEventTar = _tools.DomTools.getEventTargetNode(evnt, dropdownElem, 'plx-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;