song-ui-u
Version:
vue3 + js的PC前端组件库
189 lines (178 loc) • 6.8 kB
JavaScript
'use strict';
var vue = require('vue');
var index$1 = require('../../../hook/use-namespace/index.cjs');
var index = require('../../../hook/use-parent/index.cjs');
var icons = require('song-ui-pro-icon');
require('../../../hook/use-zindex/index.cjs');
require('../index.cjs');
require('../../buttonGroup/index.cjs');
var index$2 = require('../../icon/index.cjs');
require('../../input/index.cjs');
require('../../textarea/index.cjs');
require('../../row/index.cjs');
require('../../col/index.cjs');
require('../../container/index.cjs');
require('../../checkbox/index.cjs');
require('../../switch/index.cjs');
require('../../form/index.cjs');
require('../../message/index.cjs');
require('../../mask/src/mask.cjs');
require('../../modal/index.cjs');
require('../../messageBox/index.cjs');
require('../../drawer/index.cjs');
require('../../badge/index.cjs');
require('../../space/index.cjs');
require('../../image/index.cjs');
require('../../radio/index.cjs');
require('../../divider/index.cjs');
require('../../chat/index.cjs');
require('../../progress/index.cjs');
require('../../upload/index.cjs');
require('../../vTree/index.cjs');
require('../../table/index.cjs');
require('../../tabs/index.cjs');
require('../../menu/index.cjs');
require('../../steps/index.cjs');
require('../../header/index.cjs');
require('../../breadcrumble/index.cjs');
require('../../datePicker/index.cjs');
require('../../tooltip/index.cjs');
require('../../popover/index.cjs');
require('../../timePicker/index.cjs');
require('../../select/index.cjs');
require('../../collapse/index.cjs');
require('../../card/index.cjs');
require('../../timeline/index.cjs');
require('../../tag/index.cjs');
require('../../result/index.cjs');
require('../../sender/index.cjs');
var _pluginVue_exportHelper = require('../../../_virtual/_plugin-vue_export-helper.cjs');
var useFormItem = require('../../form/src/composables/use-form-item.cjs');
// useFormItem
const __default__ = { name: "x-button" };
const _sfc_main = /*#__PURE__*/Object.assign(__default__, {
props: {
type: {
type: String,
default: "default",
},
size: {
type: String,
default: "default",
},
icon: {
type: [String, Object],
default: "",
},
iconfont: {
type: String,
default: "",
},
round: Boolean, // 圆形按钮
disabled: Boolean, // 禁用按钮
text: Boolean, // 文字按钮
link: Boolean, // 链接按钮
border: Boolean, // 边框按钮
dashed: Boolean, // 虚线边框按钮
block: Boolean, // 块级按钮
circle: Boolean, // 圆形按钮
loading: Boolean, // 加载按钮
beforeChange: Function,
},
emits: ["click"],
setup(__props, { expose: __expose, emit: __emit }) {
__expose();
const { formContent, fromItemContent } = useFormItem.useFormItem();
const ns = index$1.useNamespace("button");
const parent = index.useParent("button-group");
/** emit */
const emit = __emit;
/** props */
const props = __props;
/** computed */
const isGroup = parent.group();
const isGroupSize = parent.props("size");
const controlSize = vue.computed(
() => isGroupSize || formContent?.size?.value || props.size
);
/** loading */
const _loading = vue.ref(false);
/**
* 点击事件
*/
const handlerChange = (ev) => {
const isFunction =
Object.prototype.toString.call(props.beforeChange) === "[object Function]";
if (!isFunction) {
emit("click", ev);
return false;
}
// 启用加载
_loading.value = true;
props.beforeChange().finally(() => (_loading.value = false));
};
const __returned__ = { formContent, fromItemContent, ns, parent, emit, props, isGroup, isGroupSize, controlSize, _loading, handlerChange, ref: vue.ref, computed: vue.computed, get useNamespace() { return index$1.useNamespace }, get useParent() { return index.useParent }, get useFormItem() { return useFormItem.useFormItem }, get XIcon() { return index$2.XIcon }, get Loader() { return icons.Loader } };
Object.defineProperty(__returned__, '__isScriptSetup', { enumerable: false, value: true });
return __returned__
}
});
const _hoisted_1 = ["disabled"];
const _hoisted_2 = { key: 2 };
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
return (vue.openBlock(), vue.createElementBlock("button", {
disabled: $props.disabled || $props.loading || $setup._loading,
class: vue.normalizeClass([
$setup.ns.b(),
$setup.ns.m($props.type),
$setup.ns.m('size', $setup.controlSize),
$setup.ns.is('round', $props.round),
$setup.ns.is('disabled', $props.disabled),
$setup.ns.is('loading', $props.loading || $setup._loading),
$setup.ns.is('text', $props.text),
$setup.ns.is('link', $props.link),
$setup.ns.is('border', $props.border),
$setup.ns.is('block', $props.block),
$setup.ns.is('dashed', $props.dashed),
$setup.ns.is('circle', $props.circle),
$setup.ns.is('button-group', $setup.isGroup),
]),
onClick: $setup.handlerChange,
type: "button"
}, [
($props.loading || $setup._loading)
? (vue.openBlock(), vue.createBlock($setup["XIcon"], { key: 0 }, {
default: vue.withCtx(() => [
vue.createVNode($setup["Loader"], {
class: vue.normalizeClass([`${$setup.ns.is('loading-transition', $props.loading || $setup._loading)}`])
}, null, 8 /* PROPS */, ["class"])
]),
_: 1 /* STABLE */
}))
: (vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: 1 }, [
($props.icon || $props.iconfont)
? (vue.openBlock(), vue.createBlock($setup["XIcon"], { key: 0 }, {
default: vue.withCtx(() => [
($props.iconfont)
? (vue.openBlock(), vue.createElementBlock("i", {
key: 0,
class: vue.normalizeClass(["iconfont", $props.iconfont])
}, null, 2 /* CLASS */))
: vue.createCommentVNode("v-if", true),
($props.icon)
? (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent($props.icon), { key: 1 }))
: vue.createCommentVNode("v-if", true)
]),
_: 1 /* STABLE */
}))
: vue.createCommentVNode("v-if", true)
], 64 /* STABLE_FRAGMENT */)),
(_ctx.$slots.default)
? (vue.openBlock(), vue.createElementBlock("span", _hoisted_2, [
vue.renderSlot(_ctx.$slots, "default")
]))
: vue.createCommentVNode("v-if", true)
], 10 /* CLASS, PROPS */, _hoisted_1))
}
var Button = /*#__PURE__*/_pluginVue_exportHelper(_sfc_main, [['render',_sfc_render],['__file',"E:\\code\\my-code\\song-ui-ultra\\packages\\components\\button\\src\\index.vue"]]);
module.exports = Button;
//# sourceMappingURL=index.vue.cjs.map