tav-ui
Version:
103 lines (98 loc) • 4.16 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', { value: true });
var vue = require('vue');
var index = require('../../button/index2.js');
require('../../../hooks/index2.js');
require('../../../utils/index2.js');
var types = require('./types2.js');
var pluginVue_exportHelper = require('../../../../_virtual/plugin-vue_export-helper.js');
var useScrollToCenter = require('../../../hooks/event/useScrollToCenter2.js');
var is = require('../../../utils/is2.js');
const _sfc_main = vue.defineComponent({
name: "TaButtonGroup",
components: { Button: index.TaButton },
props: types.buttonGroupProps,
emits: ["btnClick", "update:active"],
setup(props, { emit }) {
const scrollRef = vue.ref(null);
const clickHandle = (data, index, event) => {
if (data.value == props.active)
return;
emit("update:active", data.value);
emit("btnClick", data);
};
const { scrollToCenter } = useScrollToCenter.useScrollToCenter(scrollRef);
vue.watch(() => props.active, (v) => {
const buttonIndex = props.buttons.findIndex((btn) => btn.value === v);
const buttonEl = scrollRef.value?.querySelectorAll("button")[buttonIndex];
buttonEl && scrollToCenter(buttonEl);
}, {
immediate: true
});
const getNumber = (num, item) => {
if (is.isNullOrUnDef(num)) {
return 0;
}
const badgeMax = item.badgeMax || props.badgeMax;
if (props.badgeMax) {
return num > badgeMax ? `${badgeMax}+` : num;
} else {
return num;
}
};
return {
scrollRef,
getNumber,
clickHandle
};
}
});
const _hoisted_1 = {
ref: "scrollRef",
class: "ta-button-group-inner"
};
const _hoisted_2 = { key: 0 };
const _hoisted_3 = {
key: 1,
class: "badge-count"
};
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
const _component_Button = vue.resolveComponent("Button");
return vue.openBlock(), vue.createElementBlock("div", {
class: "ta-button-group",
onClick: _cache[0] || (_cache[0] = vue.withModifiers(() => {
}, ["stop"]))
}, [
vue.createElementVNode("div", _hoisted_1, [
(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(_ctx.buttons, (item, index) => {
return vue.openBlock(), vue.createBlock(_component_Button, {
key: item.value,
type: _ctx.active == item.value ? "primary" : "default",
disabled: item.disabled,
loading: item.loading,
permission: item.permission,
"permission-code": item.permissionCode,
"use-permission": item.usePermission,
onClick: ($event) => _ctx.clickHandle(item, index, $event)
}, {
default: vue.withCtx(() => [
vue.createTextVNode(vue.toDisplayString(item.label) + " ", 1),
item.number != null ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_2, "\uFF08" + vue.toDisplayString(item.number) + "\uFF09", 1)) : vue.createCommentVNode("v-if", true),
item.badge != null ? (vue.openBlock(), vue.createElementBlock("sup", _hoisted_3, [
item.badge !== true ? (vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: 0 }, [
vue.createTextVNode(vue.toDisplayString(_ctx.getNumber(item.badge, item)), 1)
], 2112)) : item.number != null ? (vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: 1 }, [
vue.createTextVNode(vue.toDisplayString(_ctx.getNumber(item.number, item)), 1)
], 2112)) : vue.createCommentVNode("v-if", true)
])) : vue.createCommentVNode("v-if", true)
]),
_: 2
}, 1032, ["type", "disabled", "loading", "permission", "permission-code", "use-permission", "onClick"]);
}), 128))
], 512),
vue.renderSlot(_ctx.$slots, "default")
]);
}
var ButtonGroup = /* @__PURE__ */ pluginVue_exportHelper["default"](_sfc_main, [["render", _sfc_render], ["__file", "/home/runner/work/tav-ui/tav-ui/packages/components/button-group/src/button-group.vue"]]);
exports["default"] = ButtonGroup;
//# sourceMappingURL=button-group2.js.map