"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); exports.__esModule = true; exports.default = void 0; var _babelHelperVueJsxMergeProps = _interopRequireDefault(require("@vue/babel-helper-vue-jsx-merge-props")); var _utils = require("../utils"); var _functional = require("../utils/functional"); var _icon = _interopRequireDefault(require("../icon")); var _sidebar = _interopRequireDefault(require("../sidebar")); var _sidebarItem = _interopRequireDefault(require("../sidebar-item")); // Utils // Components var _createNamespace = (0, _utils.createNamespace)('tree-select'), createComponent = _createNamespace[0], bem = _createNamespace[1]; function TreeSelect(h, props, slots, ctx) { var items = props.items, height = props.height, activeId = props.activeId, selectedIcon = props.selectedIcon, mainActiveIndex = props.mainActiveIndex; if (process.env.NODE_ENV === 'development') { if (ctx.listeners.navclick) { console.warn('[Vant] TreeSelect: "navclick" event is deprecated, use "click-nav" instead.'); } if (ctx.listeners.itemclick) { console.warn('[Vant] TreeSelect: "itemclick" event is deprecated, use "click-item" instead.'); } } var selectedItem = items[+mainActiveIndex] || {}; var subItems = selectedItem.children || []; var isMultiple = Array.isArray(activeId); function isActiveItem(id) { return isMultiple ? activeId.indexOf(id) !== -1 : activeId === id; } var Navs = items.map(function (item) { var _item$badge; return h(_sidebarItem.default, { "attrs": { "dot": item.dot, "info": (_item$badge = item.badge) != null ? _item$badge : item.info, "title": item.text, "disabled": item.disabled }, "class": [bem('nav-item'), item.className] }); }); function Content() { if (slots.content) { return slots.content(); } return subItems.map(function (item) { return h("div", { "key": item.id, "class": ['van-ellipsis', bem('item', { active: isActiveItem(item.id), disabled: item.disabled })], "on": { "click": function click() { if (!item.disabled) { var newActiveId = item.id; if (isMultiple) { newActiveId = activeId.slice(); var index = newActiveId.indexOf(item.id); if (index !== -1) { newActiveId.splice(index, 1); } else if (newActiveId.length < props.max) { newActiveId.push(item.id); } } (0, _functional.emit)(ctx, 'update:active-id', newActiveId); (0, _functional.emit)(ctx, 'click-item', item); // compatible with legacy usage, should be removed in next major version (0, _functional.emit)(ctx, 'itemclick', item); } } } }, [item.text, isActiveItem(item.id) && h(_icon.default, { "attrs": { "name": selectedIcon }, "class": bem('selected') })]); }); } return h("div", (0, _babelHelperVueJsxMergeProps.default)([{ "class": bem(), "style": { height: (0, _utils.addUnit)(height) } }, (0, _functional.inherit)(ctx)]), [h(_sidebar.default, { "class": bem('nav'), "attrs": { "activeKey": mainActiveIndex }, "on": { "change": function change(index) { (0, _functional.emit)(ctx, 'update:main-active-index', index); (0, _functional.emit)(ctx, 'click-nav', index); // compatible with legacy usage, should be removed in next major version (0, _functional.emit)(ctx, 'navclick', index); } } }, [Navs]), h("div", { "class": bem('content') }, [Content()])]); } TreeSelect.props = { max: { type: [Number, String], default: Infinity }, items: { type: Array, default: function _default() { return []; } }, height: { type: [Number, String], default: 300 }, activeId: { type: [Number, String, Array], default: 0 }, selectedIcon: { type: String, default: 'success' }, mainActiveIndex: { type: [Number, String], default: 0 } }; var _default2 = createComponent(TreeSelect); exports.default = _default2;