UNPKG

element-plus

Version:

A Component Library for Vue 3

1 lines 4.03 kB
{"version":3,"file":"avatar-group.mjs","names":["cloneVNode","defineComponent","isVNode","provide","reactive","toRef","createTextVNode","_createTextVNode","createVNode","_createVNode","flattedChildren","ElTooltip","useNamespace","ElAvatar","avatarGroupContextKey","avatarGroupProps","name","props","setup","slots","ns","size","shape","avatars","default","visibleAvatars","showCollapseAvatar","collapseAvatars","length","maxCollapseAvatars","slice","hiddenAvatars","push","popperClass","popperStyle","placement","effect","collapseAvatarsTooltip","collapseClass","collapseStyle","content","e","map","node","idx","key","b"],"sources":["../../../../../../packages/components/avatar/src/avatar-group.tsx"],"sourcesContent":["import {\n cloneVNode,\n defineComponent,\n isVNode,\n provide,\n reactive,\n toRef,\n} from 'vue'\nimport { flattedChildren } from '@element-plus/utils'\nimport ElTooltip from '@element-plus/components/tooltip'\nimport { useNamespace } from '@element-plus/hooks'\nimport ElAvatar from './avatar.vue'\nimport { avatarGroupContextKey } from './constants'\nimport { avatarGroupProps } from './avatar-group-props'\n\nexport default defineComponent({\n name: 'ElAvatarGroup',\n props: avatarGroupProps,\n setup(props, { slots }) {\n const ns = useNamespace('avatar-group')\n\n provide(\n avatarGroupContextKey,\n reactive({\n size: toRef(props, 'size'),\n shape: toRef(props, 'shape'),\n })\n )\n\n return () => {\n const avatars = flattedChildren(slots.default?.() ?? [])\n let visibleAvatars = avatars\n\n const showCollapseAvatar =\n props.collapseAvatars && avatars.length > props.maxCollapseAvatars\n\n if (showCollapseAvatar) {\n visibleAvatars = avatars.slice(0, props.maxCollapseAvatars)\n const hiddenAvatars = avatars.slice(props.maxCollapseAvatars)\n\n visibleAvatars.push(\n <ElTooltip\n popperClass={props.popperClass}\n popperStyle={props.popperStyle}\n placement={props.placement}\n effect={props.effect}\n disabled={!props.collapseAvatarsTooltip}\n >\n {{\n default: () => (\n <ElAvatar\n size={props.size}\n shape={props.shape}\n class={props.collapseClass}\n style={props.collapseStyle}\n >\n + {hiddenAvatars.length}\n </ElAvatar>\n ),\n content: () => (\n <div class={ns.e('collapse-avatars')}>\n {hiddenAvatars.map((node, idx) =>\n isVNode(node)\n ? cloneVNode(node, { key: node.key ?? idx })\n : node\n )}\n </div>\n ),\n }}\n </ElTooltip>\n )\n }\n\n return <div class={ns.b()}>{visibleAvatars}</div>\n }\n },\n})\n"],"mappings":";;;;;;;;;AAeA,2BAAeC,gCAAgB;CAC7Be,MAAM;CACNC,OAAOF;CACPG,MAAMD,OAAO,EAAEE,SAAS;EACtB,MAAMC,KAAKR,aAAa,eAAe;AAEvCT,UACEW,uBACAV,SAAS;GACPiB,MAAMhB,MAAMY,OAAO,OAAO;GAC1BK,OAAOjB,MAAMY,OAAO,QAAO;GAC5B,CACH,CAAC;AAED,eAAa;GACX,MAAMM,UAAUb,gBAAgBS,MAAMK,WAAW,IAAI,EAAE,CAAC;GACxD,IAAIC,iBAAiBF;AAKrB,OAFEN,MAAMU,mBAAmBJ,QAAQK,SAASX,MAAMY,oBAE1B;AACtBJ,qBAAiBF,QAAQO,MAAM,GAAGb,MAAMY,mBAAmB;IAC3D,MAAME,gBAAgBR,QAAQO,MAAMb,MAAMY,mBAAmB;AAE7DJ,mBAAeO,KAAIvB,YAAAE,WAAA;KAAA,eAEFM,MAAMgB;KAAW,eACjBhB,MAAMiB;KAAW,aACnBjB,MAAMkB;KAAS,UAClBlB,MAAMmB;KAAM,YACV,CAACnB,MAAMoB;KAAsB,EAAA;KAGrCb,eAASf,YAAAI,gBAAA;MAAA,QAECI,MAAMI;MAAI,SACTJ,MAAMK;MAAK,SACXL,MAAMqB;MAAa,SACnBrB,MAAMsB;MAAa,EAAA,EAAAf,eAAA,CAAAjB,gBAAA,KAAA,EAEvBwB,cAAcH,OAAM,EAAA,CAE1B;KACDY,eAAS/B,YAAA,OAAA,EAAA,SACKW,GAAGqB,EAAE,mBAAkB,EAAC,EAAA,CACjCV,cAAcW,KAAKC,MAAMC,QACxB1C,QAAQyC,KAAK,GACT3C,WAAW2C,MAAM,EAAEE,KAAKF,KAAKE,OAAOD,KAAK,CAAC,GAC1CD,KACL,CAAA,CAAA;KAEJ,CAGP,CAAC;;AAGH,UAAAlC,YAAA,OAAA,EAAA,SAAmBW,GAAG0B,GAAE,EAAC,EAAA,CAAGrB,eAAc,CAAA;;;CAG/C,CAAC"}