UNPKG

tav-ui

Version:
196 lines (191 loc) 7.46 kB
'use strict'; 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