tav-ui
Version:
196 lines (191 loc) • 7.46 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', { value: true });
var vue = require('vue');
var antDesignVue = require('ant-design-vue');
var core = require('@vueuse/core');
var propTypes = require('../../../utils/propTypes2.js');
var index = require('../../basic-title/index2.js');
var index$1 = require('../../icon/index2.js');
require('../../../locales/index2.js');
var pluginVue_exportHelper = require('../../../../_virtual/plugin-vue_export-helper.js');
var transfer = require('../../../locales/transfer2.js');
var ToolbarEnum = /* @__PURE__ */ ((ToolbarEnum2) => {
ToolbarEnum2[ToolbarEnum2["SELECT_ALL"] = 0] = "SELECT_ALL";
ToolbarEnum2[ToolbarEnum2["UN_SELECT_ALL"] = 1] = "UN_SELECT_ALL";
ToolbarEnum2[ToolbarEnum2["EXPAND_ALL"] = 2] = "EXPAND_ALL";
ToolbarEnum2[ToolbarEnum2["UN_EXPAND_ALL"] = 3] = "UN_EXPAND_ALL";
ToolbarEnum2[ToolbarEnum2["CHECK_STRICTLY"] = 4] = "CHECK_STRICTLY";
ToolbarEnum2[ToolbarEnum2["CHECK_UN_STRICTLY"] = 5] = "CHECK_UN_STRICTLY";
return ToolbarEnum2;
})(ToolbarEnum || {});
const _sfc_main = vue.defineComponent({
name: "BasicTreeHeader",
components: {
BasicTitle: index.TaBasicTitle,
Icon: index$1.TaIcon,
Dropdown: antDesignVue.Dropdown,
Menu: antDesignVue.Menu,
MenuItem: antDesignVue.Menu.Item,
MenuDivider: antDesignVue.Menu.Divider,
InputSearch: antDesignVue.Input.Search
},
props: {
helpMessage: {
type: [String, Array],
default: ""
},
title: propTypes.propTypes.string,
toolbar: propTypes.propTypes.bool,
checkable: propTypes.propTypes.bool,
search: propTypes.propTypes.bool,
checkAll: propTypes.propTypes.func,
expandAll: propTypes.propTypes.func,
searchText: propTypes.propTypes.string,
onStrictlyChange: propTypes.propTypes.func
},
emits: ["strictly-change", "search"],
setup(props, { emit, slots }) {
const searchValue = vue.ref("");
const getInputSearchCls = vue.computed(() => {
const titleExists = slots.headerTitle || props.title;
return [
"mr-1",
"w-full",
{
["ml-5"]: titleExists
}
];
});
const toolbarList = vue.computed(() => {
const { checkable } = props;
const defaultToolbarList = [
{ label: transfer.tavI18n("Tav.tree.1"), value: 2 },
{
label: transfer.tavI18n("Tav.tree.2"),
value: 3,
divider: checkable
}
];
return checkable ? [
{ label: transfer.tavI18n("Tav.tree.3"), value: 0 },
{
label: transfer.tavI18n("Tav.tree.4"),
value: 1,
divider: checkable
},
...defaultToolbarList,
{ label: transfer.tavI18n("Tav.tree.5"), value: 4 },
{ label: transfer.tavI18n("Tav.tree.6"), value: 5 }
] : defaultToolbarList;
});
function handleMenuClick(e) {
const { key } = e;
switch (key) {
case 0:
props.checkAll?.(true);
break;
case 1:
props.checkAll?.(false);
break;
case 2:
props.expandAll?.(true);
break;
case 3:
props.expandAll?.(false);
break;
case 4:
emit("strictly-change", false);
break;
case 5:
emit("strictly-change", true);
break;
}
}
function emitChange(value) {
emit("search", value);
}
const debounceEmitChange = core.useDebounceFn(emitChange, 200);
vue.watch(() => props.searchText, (v) => {
if (v !== searchValue.value) {
searchValue.value = v;
}
});
function handleSearch(e) {
debounceEmitChange(e);
}
return { tavI18n: transfer.tavI18n, toolbarList, handleMenuClick, searchValue, getInputSearchCls, handleSearch };
}
});
const _hoisted_1 = { class: "flex px-2 py-1.5 items-center basic-tree-header" };
const _hoisted_2 = {
key: 2,
class: "flex flex-1 justify-self-stretch items-center cursor-pointer"
};
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
const _component_BasicTitle = vue.resolveComponent("BasicTitle");
const _component_InputSearch = vue.resolveComponent("InputSearch");
const _component_Icon = vue.resolveComponent("Icon");
const _component_MenuItem = vue.resolveComponent("MenuItem");
const _component_MenuDivider = vue.resolveComponent("MenuDivider");
const _component_Menu = vue.resolveComponent("Menu");
const _component_Dropdown = vue.resolveComponent("Dropdown");
return vue.openBlock(), vue.createElementBlock("div", _hoisted_1, [
_ctx.$slots.headerTitle ? vue.renderSlot(_ctx.$slots, "headerTitle", { key: 0 }) : vue.createCommentVNode("v-if", true),
!_ctx.$slots.headerTitle && _ctx.title ? (vue.openBlock(), vue.createBlock(_component_BasicTitle, {
key: 1,
"help-message": _ctx.helpMessage
}, {
default: vue.withCtx(() => [
vue.createTextVNode(vue.toDisplayString(_ctx.title), 1)
]),
_: 1
}, 8, ["help-message"])) : vue.createCommentVNode("v-if", true),
_ctx.search || _ctx.toolbar ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2, [
_ctx.search ? (vue.openBlock(), vue.createElementBlock("div", {
key: 0,
class: vue.normalizeClass(_ctx.getInputSearchCls)
}, [
vue.createVNode(_component_InputSearch, {
value: _ctx.searchValue,
"onUpdate:value": _cache[0] || (_cache[0] = ($event) => _ctx.searchValue = $event),
placeholder: _ctx.tavI18n("Tav.common.searchText"),
"allow-clear": "",
onSearch: _ctx.handleSearch
}, null, 8, ["value", "placeholder", "onSearch"])
], 2)) : vue.createCommentVNode("v-if", true),
_ctx.toolbar ? (vue.openBlock(), vue.createBlock(_component_Dropdown, {
key: 1,
onClick: _cache[1] || (_cache[1] = vue.withModifiers(() => {
}, ["prevent"]))
}, {
overlay: vue.withCtx(() => [
vue.createVNode(_component_Menu, { onClick: _ctx.handleMenuClick }, {
default: vue.withCtx(() => [
(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(_ctx.toolbarList, (item) => {
return vue.openBlock(), vue.createElementBlock(vue.Fragment, {
key: item.value
}, [
vue.createVNode(_component_MenuItem, vue.normalizeProps(vue.guardReactiveProps({ key: item.value })), {
default: vue.withCtx(() => [
vue.createTextVNode(vue.toDisplayString(item.label), 1)
]),
_: 2
}, 1040),
item.divider ? (vue.openBlock(), vue.createBlock(_component_MenuDivider, { key: 0 })) : vue.createCommentVNode("v-if", true)
], 64);
}), 128))
]),
_: 1
}, 8, ["onClick"])
]),
default: vue.withCtx(() => [
vue.createVNode(_component_Icon, { icon: "ion:ellipsis-vertical" })
]),
_: 1
})) : vue.createCommentVNode("v-if", true)
])) : vue.createCommentVNode("v-if", true)
]);
}
var TreeHeader = /* @__PURE__ */ pluginVue_exportHelper["default"](_sfc_main, [["render", _sfc_render], ["__file", "/home/runner/work/tav-ui/tav-ui/packages/components/tree/src/TreeHeader.vue"]]);
exports["default"] = TreeHeader;
//# sourceMappingURL=TreeHeader2.js.map