@extclp/vexip-ui
Version:
A Vue 3 UI library, Highly customizability, full TypeScript, performance pretty good
1 lines • 9.61 kB
Source Map (JSON)
{"version":3,"file":"avatar-group.vue2.mjs","sources":["../../../components/avatar/avatar-group.vue"],"sourcesContent":["<script setup lang=\"ts\">\r\nimport { Avatar } from '@/components/avatar'\r\nimport { Renderer } from '@/components/renderer'\r\nimport { Tooltip } from '@/components/tooltip'\r\n\r\nimport { computed, provide, ref, watchEffect } from 'vue'\r\n\r\nimport { useNameHelper, useProps } from '@vexip-ui/config'\r\nimport { avatarGroupProps } from './props'\r\nimport { GROUP_STATE } from './symbol'\r\n\r\nimport type { ComponentSize } from '@vexip-ui/config'\r\nimport type { AvatarGroupSlots, AvatarOption } from './symbol'\r\n\r\ndefineOptions({ name: 'AvatarGroup' })\r\n\r\nconst _props = defineProps(avatarGroupProps)\r\nconst props = useProps('avatarGroup', _props, {\r\n size: 'default',\r\n options: {\r\n default: () => [],\r\n static: true,\r\n },\r\n circle: false,\r\n max: null,\r\n showTip: false,\r\n tipTrigger: 'hover',\r\n vertical: false,\r\n offset: null,\r\n restColor: null,\r\n restBackground: null,\r\n slots: () => ({}),\r\n})\r\n\r\ndefineSlots<AvatarGroupSlots>()\r\n\r\nconst nh = useNameHelper('avatar-group')\r\n\r\nconst renderAvatars = ref<AvatarOption[]>([])\r\nconst restAvatars = ref<AvatarOption[]>([])\r\n\r\nwatchEffect(() => {\r\n const size = props.options.length\r\n\r\n if (props.max > 0 && size > props.max) {\r\n renderAvatars.value = props.options.slice(0, props.max - 1)\r\n restAvatars.value = props.options.slice(props.max - 1)\r\n } else {\r\n renderAvatars.value = Array.from(props.options)\r\n restAvatars.value = []\r\n }\r\n})\r\n\r\nprovide(GROUP_STATE, props)\r\n\r\nconst className = computed(() => {\r\n return {\r\n [nh.b()]: true,\r\n [nh.ns('avatar-vars')]: true,\r\n [nh.bm('inherit')]: props.inherit,\r\n [nh.bm(props.size as ComponentSize)]:\r\n typeof props.size !== 'number' && props.size !== 'default',\r\n [nh.bm('circle')]: props.circle,\r\n [nh.bm('vertical')]: props.vertical,\r\n }\r\n})\r\nconst style = computed(() => {\r\n const style: Record<string, string> = {}\r\n\r\n if (typeof props.offset === 'number') {\r\n style[nh.cv('offset')] = `${props.offset}px`\r\n }\r\n\r\n return style\r\n})\r\n</script>\r\n\r\n<template>\r\n <div :class=\"className\" role=\"group\" :style=\"style\">\r\n <div v-for=\"(option, index) in renderAvatars\" :key=\"index\" :class=\"nh.be('item')\">\r\n <slot :option=\"option\" :index=\"index\">\r\n <Renderer :renderer=\"props.slots.default\" :data=\"{ option, index }\">\r\n <Avatar\r\n inherit\r\n :src=\"option.src\"\r\n :icon=\"option.icon\"\r\n :alt=\"option.alt\"\r\n :fit=\"option.fit\"\r\n :src-set=\"option.srcSet\"\r\n :gap=\"option.gap\"\r\n :icon-scale=\"option.iconScale\"\r\n :fallback-src=\"option.fallbackSrc\"\r\n >\r\n {{ option.text }}\r\n </Avatar>\r\n </Renderer>\r\n </slot>\r\n </div>\r\n <div v-if=\"restAvatars.length\" :class=\"[nh.be('item'), nh.bem('item', 'rest')]\">\r\n <Tooltip\r\n v-if=\"props.showTip\"\r\n inherit\r\n :trigger=\"props.tipTrigger\"\r\n :tip-class=\"nh.be('rest')\"\r\n >\r\n <template #trigger>\r\n <slot name=\"rest\" :options=\"restAvatars\" :count=\"restAvatars.length\">\r\n <Renderer\r\n :renderer=\"props.slots.rest\"\r\n :data=\"{ options: restAvatars, count: restAvatars.length }\"\r\n >\r\n <Avatar inherit :color=\"props.restColor\" :background=\"props.restBackground\">\r\n {{ `+${restAvatars.length}` }}\r\n </Avatar>\r\n </Renderer>>\r\n </slot>\r\n </template>\r\n <slot name=\"tip\" :options=\"restAvatars\" :count=\"restAvatars.length\">\r\n <Renderer\r\n :renderer=\"props.slots.tip\"\r\n :data=\"{ options: restAvatars, count: restAvatars.length }\"\r\n >\r\n <Avatar\r\n v-for=\"(option, index) in restAvatars\"\r\n :key=\"index\"\r\n inherit\r\n :src=\"option.src\"\r\n :icon=\"option.icon\"\r\n :alt=\"option.alt\"\r\n :fit=\"option.fit\"\r\n :src-set=\"option.srcSet\"\r\n :gap=\"option.gap\"\r\n :icon-scale=\"option.iconScale\"\r\n :fallback-src=\"option.fallbackSrc\"\r\n >\r\n {{ option.text }}\r\n </Avatar>\r\n </Renderer>\r\n </slot>\r\n </Tooltip>\r\n <slot\r\n v-else\r\n name=\"rest\"\r\n :options=\"restAvatars\"\r\n :count=\"restAvatars.length\"\r\n >\r\n <Renderer\r\n :renderer=\"props.slots.rest\"\r\n :data=\"{ options: restAvatars, count: restAvatars.length }\"\r\n >\r\n <Avatar inherit :color=\"props.restColor\" :background=\"props.restBackground\">\r\n {{ `+${restAvatars.length}` }}\r\n </Avatar>\r\n </Renderer>\r\n </slot>\r\n </div>\r\n </div>\r\n</template>\r\n"],"names":["props","useProps","__props","nh","useNameHelper","renderAvatars","ref","restAvatars","watchEffect","size","provide","GROUP_STATE","className","computed","style","_createElementBlock","_openBlock","_Fragment","_renderList","option","index","_normalizeClass","_unref","_renderSlot","_ctx","_createVNode","Renderer","Avatar","_createTextVNode","_toDisplayString","_createBlock","Tooltip"],"mappings":";;;;;;;;;;;;;;;AAiBM,UAAAA,IAAQC,EAAS,eADRC,GAC+B;AAAA,MAC5C,MAAM;AAAA,MACN,SAAS;AAAA,QACP,SAAS,MAAM,CAAC;AAAA,QAChB,QAAQ;AAAA,MACV;AAAA,MACA,QAAQ;AAAA,MACR,KAAK;AAAA,MACL,SAAS;AAAA,MACT,YAAY;AAAA,MACZ,UAAU;AAAA,MACV,QAAQ;AAAA,MACR,WAAW;AAAA,MACX,gBAAgB;AAAA,MAChB,OAAO,OAAO,CAAC;AAAA,IAAA,CAChB,GAIKC,IAAKC,EAAc,cAAc,GAEjCC,IAAgBC,EAAoB,EAAE,GACtCC,IAAcD,EAAoB,EAAE;AAE1C,IAAAE,EAAY,MAAM;AACV,YAAAC,IAAOT,EAAM,QAAQ;AAE3B,MAAIA,EAAM,MAAM,KAAKS,IAAOT,EAAM,OAChCK,EAAc,QAAQL,EAAM,QAAQ,MAAM,GAAGA,EAAM,MAAM,CAAC,GAC1DO,EAAY,QAAQP,EAAM,QAAQ,MAAMA,EAAM,MAAM,CAAC,MAErDK,EAAc,QAAQ,MAAM,KAAKL,EAAM,OAAO,GAC9CO,EAAY,QAAQ,CAAC;AAAA,IACvB,CACD,GAEDG,EAAQC,GAAaX,CAAK;AAEpB,UAAAY,IAAYC,EAAS,OAClB;AAAA,MACL,CAACV,EAAG,EAAE,CAAC,GAAG;AAAA,MACV,CAACA,EAAG,GAAG,aAAa,CAAC,GAAG;AAAA,MACxB,CAACA,EAAG,GAAG,SAAS,CAAC,GAAGH,EAAM;AAAA,MAC1B,CAACG,EAAG,GAAGH,EAAM,IAAqB,CAAC,GACjC,OAAOA,EAAM,QAAS,YAAYA,EAAM,SAAS;AAAA,MACnD,CAACG,EAAG,GAAG,QAAQ,CAAC,GAAGH,EAAM;AAAA,MACzB,CAACG,EAAG,GAAG,UAAU,CAAC,GAAGH,EAAM;AAAA,IAC7B,EACD,GACKc,IAAQD,EAAS,MAAM;AAC3B,YAAMC,IAAgC,CAAC;AAEnC,aAAA,OAAOd,EAAM,UAAW,aAC1Bc,EAAMX,EAAG,GAAG,QAAQ,CAAC,IAAI,GAAGH,EAAM,MAAM,OAGnCc;AAAAA,IAAA,CACR;2BAICC,EA8EM,OAAA;AAAA,MA9EA,SAAOH,EAAS,KAAA;AAAA,MAAE,MAAK;AAAA,MAAS,SAAOE,EAAK,KAAA;AAAA,IAAA;OAChDE,EAAA,EAAA,GAAAD,EAkBME,GAlByB,MAAAC,EAAAb,EAAA,OAAlB,CAAAc,GAAQC,YAArBL,EAkBM,OAAA;AAAA,QAlByC,KAAKK;AAAA,QAAQ,OAAKC,EAAEC,EAAEnB,CAAA,EAAC,GAAE,MAAA,CAAA;AAAA,MAAA;QACtEoB,EAgBOC,EAAA,QAAA,WAAA;AAAA,UAhBA,QAAAL;AAAA,UAAiB,OAAAC;AAAA,QAAA,GAAxB,MAgBO;AAAA,UAfLK,EAcWH,EAAAI,CAAA,GAAA;AAAA,YAdA,UAAUJ,EAAAtB,CAAA,EAAM,MAAM;AAAA,YAAU,MAAI,EAAI,QAAAmB,GAAQ,OAAAC,EAAK;AAAA,UAAA;uBAC9D,MAYS;AAAA,cAZTK,EAYSH,EAAAK,CAAA,GAAA;AAAA,gBAXP,SAAA;AAAA,gBACC,KAAKR,EAAO;AAAA,gBACZ,MAAMA,EAAO;AAAA,gBACb,KAAKA,EAAO;AAAA,gBACZ,KAAKA,EAAO;AAAA,gBACZ,WAASA,EAAO;AAAA,gBAChB,KAAKA,EAAO;AAAA,gBACZ,cAAYA,EAAO;AAAA,gBACnB,gBAAcA,EAAO;AAAA,cAAA;2BAEtB,MAAiB;AAAA,kBAAdS,EAAAC,EAAAV,EAAO,IAAI,GAAA,CAAA;AAAA,gBAAA;;;;;;;;MAKXZ,EAAA,MAAY,eAAvBQ,EAyDM,OAAA;AAAA;QAzD0B,UAAQO,EAAEnB,CAAA,EAAC,GAAY,MAAA,GAAAmB,EAAAnB,CAAA,EAAG,IAAG,QAAA,MAAA,CAAA,CAAA;AAAA,MAAA;QAEnDmB,EAAAtB,CAAA,EAAM,aADd,GAAA8B,EAwCUR,EAAAS,CAAA,GAAA;AAAA;UAtCR,SAAA;AAAA,UACC,SAAST,EAAKtB,CAAA,EAAC;AAAA,UACf,aAAWsB,EAAEnB,CAAA,EAAC,GAAE,MAAA;AAAA,QAAA;UAEN,WACT,MASO;AAAA,YATPoB,EASOC,EAAA,QAAA,QAAA;AAAA,cATY,SAASjB,EAAW;AAAA,cAAG,OAAOA,EAAW,MAAC;AAAA,YAAA,GAA7D,MASO;AAAA,cARLkB,EAOWH,EAAAI,CAAA,GAAA;AAAA,gBANR,UAAUJ,EAAAtB,CAAA,EAAM,MAAM;AAAA,gBACtB,MAAiB,EAAA,SAAAO,EAAA,OAAoB,OAAAA,EAAA,MAAY,OAAM;AAAA,cAAA;2BAExD,MAES;AAAA,kBAFTkB,EAESH,EAAAK,CAAA,GAAA;AAAA,oBAFD,SAAA;AAAA,oBAAS,OAAOL,EAAKtB,CAAA,EAAC;AAAA,oBAAY,YAAYsB,EAAKtB,CAAA,EAAC;AAAA,kBAAA;+BAC1D,MAA8B;AAAA,sBAAvB4B,EAAAC,EAAA,IAAAtB,EAAA,MAAY,MAAM,EAAA,GAAA,CAAA;AAAA,oBAAA;;;;;;gCAElB,IACb;AAAA;;qBAEF,MAqBO;AAAA,YArBPgB,EAqBOC,EAAA,QAAA,OAAA;AAAA,cArBW,SAASjB,EAAW;AAAA,cAAG,OAAOA,EAAW,MAAC;AAAA,YAAA,GAA5D,MAqBO;AAAA,cApBLkB,EAmBWH,EAAAI,CAAA,GAAA;AAAA,gBAlBR,UAAUJ,EAAAtB,CAAA,EAAM,MAAM;AAAA,gBACtB,MAAiB,EAAA,SAAAO,EAAA,OAAoB,OAAAA,EAAA,MAAY,OAAM;AAAA,cAAA;2BAGtD,MAAsC;AAAA,mBADxCS,EAAA,EAAA,GAAAD,EAcSE,GAbmB,MAAAC,EAAAX,EAAA,OAAlB,CAAAY,GAAQC,YADlBU,EAcSR,EAAAK,CAAA,GAAA;AAAA,oBAZN,KAAKP;AAAA,oBACN,SAAA;AAAA,oBACC,KAAKD,EAAO;AAAA,oBACZ,MAAMA,EAAO;AAAA,oBACb,KAAKA,EAAO;AAAA,oBACZ,KAAKA,EAAO;AAAA,oBACZ,WAASA,EAAO;AAAA,oBAChB,KAAKA,EAAO;AAAA,oBACZ,cAAYA,EAAO;AAAA,oBACnB,gBAAcA,EAAO;AAAA,kBAAA;+BAEtB,MAAiB;AAAA,sBAAdS,EAAAC,EAAAV,EAAO,IAAI,GAAA,CAAA;AAAA,oBAAA;;;;;;;;;2CAKtBI,EAcOC,EAAA,QAAA,QAAA;AAAA;UAXJ,SAASjB,EAAW;AAAA,UACpB,OAAOA,EAAW,MAAC;AAAA,QAAA,GAJtB,MAcO;AAAA,UARLkB,EAOWH,EAAAI,CAAA,GAAA;AAAA,YANR,UAAUJ,EAAAtB,CAAA,EAAM,MAAM;AAAA,YACtB,MAAiB,EAAA,SAAAO,EAAA,OAAoB,OAAAA,EAAA,MAAY,OAAM;AAAA,UAAA;uBAExD,MAES;AAAA,cAFTkB,EAESH,EAAAK,CAAA,GAAA;AAAA,gBAFD,SAAA;AAAA,gBAAS,OAAOL,EAAKtB,CAAA,EAAC;AAAA,gBAAY,YAAYsB,EAAKtB,CAAA,EAAC;AAAA,cAAA;2BAC1D,MAA8B;AAAA,kBAAvB4B,EAAAC,EAAA,IAAAtB,EAAA,MAAY,MAAM,EAAA,GAAA,CAAA;AAAA,gBAAA;;;;;;;;;;;"}