@extclp/vexip-ui
Version:
A Vue 3 UI library, Highly customizability, full TypeScript, performance pretty good
1 lines • 5.16 kB
Source Map (JSON)
{"version":3,"file":"badge.vue2.mjs","sources":["../../../components/badge/badge.vue"],"sourcesContent":["<script setup lang=\"ts\">\r\nimport { Renderer } from '@/components/renderer'\r\n\r\nimport { computed } from 'vue'\r\n\r\nimport { emitEvent, useNameHelper, useProps } from '@vexip-ui/config'\r\nimport { badgeProps } from './props'\r\nimport { badgeTypes } from './symbol'\r\n\r\nimport type { BadgeSlots } from './symbol'\r\n\r\ndefineOptions({ name: 'Badge' })\r\n\r\nconst _props = defineProps(badgeProps)\r\nconst props = useProps('badge', _props, {\r\n content: {\r\n default: null,\r\n static: true,\r\n },\r\n max: 0,\r\n disabled: false,\r\n isDot: false,\r\n type: {\r\n default: 'error',\r\n validator: value => badgeTypes.includes(value),\r\n },\r\n color: null,\r\n slots: () => ({}),\r\n})\r\n\r\nconst slots = defineSlots<BadgeSlots>()\r\n\r\nconst nh = useNameHelper('badge')\r\n\r\nconst hasSlot = computed(() => {\r\n return !!slots.default\r\n})\r\nconst className = computed(() => {\r\n return {\r\n [nh.b()]: true,\r\n [nh.bs('vars')]: true,\r\n [nh.bm('inherit')]: props.inherit,\r\n [nh.bm('not-wrapper')]: !hasSlot.value,\r\n [nh.bm('is-dot')]: props.isDot,\r\n }\r\n})\r\nconst renderContent = computed(() => {\r\n if (props.isDot) return ''\r\n\r\n if (typeof props.content === 'number' && props.max > 0) {\r\n return props.content > props.max ? `${props.max}+` : props.content\r\n }\r\n\r\n return props.content\r\n})\r\nconst transitionName = computed(() => {\r\n return hasSlot.value ? nh.bs('badge-zoom') : nh.bs('zoom')\r\n})\r\nconst title = computed(() => {\r\n return props.content || props.content === 0 ? props.content.toString() : undefined\r\n})\r\nconst showSub = computed(() => {\r\n return !props.disabled && (props.content || props.content === 0 || props.isDot)\r\n})\r\n\r\nfunction handleBadgeClick(event: MouseEvent) {\r\n emitEvent(props.onBadgeClick, event)\r\n}\r\n</script>\r\n\r\n<template>\r\n <div :class=\"className\">\r\n <slot>\r\n <Renderer :renderer=\"props.slots.default\"></Renderer>\r\n </slot>\r\n <Transition :name=\"transitionName\">\r\n <sup\r\n v-show=\"showSub\"\r\n :class=\"{\r\n [nh.be('content')]: true,\r\n [nh.bem('content', 'fixed')]: hasSlot,\r\n [nh.bem('content', props.type)]: props.type !== 'error'\r\n }\"\r\n :style=\"{ backgroundColor: props.color }\"\r\n :title=\"title\"\r\n @click=\"handleBadgeClick\"\r\n >\r\n <slot name=\"content\" :content=\"renderContent\">\r\n <Renderer :renderer=\"props.slots.content\" :data=\"{ content: renderContent }\">\r\n {{ renderContent }}\r\n </Renderer>\r\n </slot>\r\n </sup>\r\n </Transition>\r\n </div>\r\n</template>\r\n"],"names":["props","useProps","__props","value","badgeTypes","slots","_useSlots","nh","useNameHelper","hasSlot","computed","className","renderContent","transitionName","title","showSub","handleBadgeClick","event","emitEvent","_createElementBlock","_renderSlot","_ctx","_createVNode","_unref","Renderer","_Transition","_createElementVNode","_normalizeClass","_normalizeStyle"],"mappings":";;;;;;;;;;;AAcM,UAAAA,IAAQC,EAAS,SADRC,GACyB;AAAA,MACtC,SAAS;AAAA,QACP,SAAS;AAAA,QACT,QAAQ;AAAA,MACV;AAAA,MACA,KAAK;AAAA,MACL,UAAU;AAAA,MACV,OAAO;AAAA,MACP,MAAM;AAAA,QACJ,SAAS;AAAA,QACT,WAAW,CAAAC,MAASC,EAAW,SAASD,CAAK;AAAA,MAC/C;AAAA,MACA,OAAO;AAAA,MACP,OAAO,OAAO,CAAC;AAAA,IAAA,CAChB,GAEKE,IAAQC,EAAyB,GAEjCC,IAAKC,EAAc,OAAO,GAE1BC,IAAUC,EAAS,MAChB,CAAC,CAACL,EAAM,OAChB,GACKM,IAAYD,EAAS,OAClB;AAAA,MACL,CAACH,EAAG,EAAE,CAAC,GAAG;AAAA,MACV,CAACA,EAAG,GAAG,MAAM,CAAC,GAAG;AAAA,MACjB,CAACA,EAAG,GAAG,SAAS,CAAC,GAAGP,EAAM;AAAA,MAC1B,CAACO,EAAG,GAAG,aAAa,CAAC,GAAG,CAACE,EAAQ;AAAA,MACjC,CAACF,EAAG,GAAG,QAAQ,CAAC,GAAGP,EAAM;AAAA,IAC3B,EACD,GACKY,IAAgBF,EAAS,MACzBV,EAAM,QAAc,KAEpB,OAAOA,EAAM,WAAY,YAAYA,EAAM,MAAM,KAC5CA,EAAM,UAAUA,EAAM,MAAM,GAAGA,EAAM,GAAG,MAG1CA,EAAM,OACd,GACKa,IAAiBH,EAAS,MACvBD,EAAQ,QAAQF,EAAG,GAAG,YAAY,IAAIA,EAAG,GAAG,MAAM,CAC1D,GACKO,IAAQJ,EAAS,MACdV,EAAM,WAAWA,EAAM,YAAY,IAAIA,EAAM,QAAQ,SAAa,IAAA,MAC1E,GACKe,IAAUL,EAAS,MAChB,CAACV,EAAM,aAAaA,EAAM,WAAWA,EAAM,YAAY,KAAKA,EAAM,MAC1E;AAED,aAASgB,EAAiBC,GAAmB;AACjC,MAAAC,EAAAlB,EAAM,cAAciB,CAAK;AAAA,IAAA;2BAKnCE,EAuBM,OAAA;AAAA,MAvBA,SAAOR,EAAS,KAAA;AAAA,IAAA;MACpBS,EAEOC,yBAFP,MAEO;AAAA,QADLC,EAAqDC,EAAAC,CAAA,GAAA;AAAA,UAA1C,UAAUD,EAAAvB,CAAA,EAAM,MAAM;AAAA,QAAA;;MAEnCsB,EAkBaG,GAAA,EAlBA,MAAMZ,EAAc,SAAA;AAAA,mBAC/B,MAgBM;AAAA,YAhBNa,EAgBM,OAAA;AAAA,YAdH,OAAKC,EAAA;AAAA,cAAgB,CAAAJ,EAAAhB,CAAA,EAAG,GAAE,SAAA,CAAA,GAAA;AAAA,eAAgCgB,EAAEhB,CAAA,EAAC,IAAG,WAAA,OAAA,CAAA,GAAuBE,EAAO;AAAA,eAAcc,EAAEhB,CAAA,EAAC,IAAe,WAAAgB,EAAAvB,CAAA,EAAM,IAAI,CAAA,GAAIuB,EAAKvB,CAAA,EAAC,SAAI;AAAA,YAAA;YAKtJ,OAAK4B,EAAA,EAAA,iBAAqBL,EAAKvB,CAAA,EAAC,OAAK;AAAA,YACrC,OAAOc,EAAK;AAAA,YACZ,SAAOE;AAAA,UAAA;YAERI,EAIOC,EAJe,QAAA,WAAA,EAAA,SAAST,EAAA,SAA/B,MAIO;AAAA,cAHLU,EAEWC,EAAAC,CAAA,GAAA;AAAA,gBAFA,UAAUD,EAAAvB,CAAA,EAAM,MAAM;AAAA,gBAAU,iBAAiBY,EAAa,MAAA;AAAA,cAAA;2BACvE,MAAmB;AAAA,sBAAhBA,EAAa,KAAA,GAAA,CAAA;AAAA,gBAAA;;;;;gBAZZG,EAAO,KAAA;AAAA;;;;;;;"}