UNPKG

zmp-vue

Version:

Build full featured iOS & Android apps using ZMP & Vue

94 lines (84 loc) 3.21 kB
"use strict"; exports.__esModule = true; exports.default = void 0; var _vue = require("vue"); var _utils = require("../shared/utils"); var _constants = require("../../common/constants"); var _avatar = _interopRequireDefault(require("./avatar")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function render(_ctx, _cache) { var _component_Avatar = (0, _vue.resolveComponent)("Avatar"); return (0, _vue.openBlock)(), (0, _vue.createBlock)("div", (0, _vue.mergeProps)(_ctx.$attrs, { class: _ctx.classes }), [((0, _vue.openBlock)(true), (0, _vue.createBlock)(_vue.Fragment, null, (0, _vue.renderList)(_ctx.dataToDisplay, function (_ref, index) { var props = _ref.props, children = _ref.children; return (0, _vue.openBlock)(), (0, _vue.createBlock)(_component_Avatar, (0, _vue.mergeProps)(props, { class: "avatar-group-item", key: props.id || "avatar-" + index, story: false, online: false, size: "24" }), { default: (0, _vue.withCtx)(function () { var _children$default$; return [(0, _vue.createTextVNode)((0, _vue.toDisplayString)(children == null ? void 0 : children.default == null ? void 0 : (_children$default$ = children.default()[0]) == null ? void 0 : _children$default$.children), 1)]; }), _: 2 }, 1040); }), 128)), _ctx.total > _ctx.maxCounter ? ((0, _vue.openBlock)(), (0, _vue.createBlock)(_component_Avatar, { key: 0, onClick: _cache[1] || (_cache[1] = function ($event) { return _ctx.$emit('counterClick'); }), class: "avatar-group-item avatar-max-counter", size: "24" }, { default: (0, _vue.withCtx)(function () { return [(0, _vue.createTextVNode)("+" + (0, _vue.toDisplayString)(_ctx.total - _ctx.maxCounter), 1)]; }), _: 1 })) : (0, _vue.createCommentVNode)("", true)], 16); } var _default = { name: 'zmp-avatar-group', render: render, props: { maxCounter: { type: Number, default: _constants.DEFAULT_AVATAR_GROUP_COUNTER }, horizontal: Boolean }, emits: ['counterClick'], components: { Avatar: _avatar.default }, setup: function setup(props, _ref2) { var slots = _ref2.slots; var maxCounter = (0, _vue.computed)(function () { return props.maxCounter < _constants.DEFAULT_AVATAR_GROUP_COUNTER ? _constants.DEFAULT_AVATAR_GROUP_COUNTER : props.maxCounter; }); var horizontal = (0, _vue.computed)(function () { return maxCounter.value > _constants.DEFAULT_AVATAR_GROUP_COUNTER ? true : props.horizontal; }); var childrens = (0, _vue.computed)(function () { return slots.default ? slots.default() : []; }); var total = (0, _vue.computed)(function () { return childrens.value.length; }); var dataToDisplay = (0, _vue.computed)(function () { return childrens.value.length ? childrens.value.slice(0, maxCounter.value) : []; }); var classes = (0, _utils.classNames)('avatar-group', { 'avatar-group-horizontal': horizontal.value }); return { total: total, dataToDisplay: dataToDisplay, classes: classes }; } }; exports.default = _default;