123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163 |
- "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;
|