UNPKG

song-ui-u

Version:

vue3 + js的PC前端组件库

189 lines (178 loc) 6.8 kB
'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