UNPKG

vexip-ui

Version:

A Vue 3 UI library, Highly customizability, full TypeScript, performance pretty good

1 lines 9.12 kB
{"version":3,"file":"tag.cjs","sources":["../../../components/tag/tag.tsx"],"sourcesContent":["import { Icon } from '@/components/icon'\nimport { Renderer } from '@/components/renderer'\n\nimport { computed, defineComponent, renderSlot } from 'vue'\n\nimport { createSizeProp, emitEvent, useIcons, useNameHelper, useProps } from '@vexip-ui/config'\nimport { adjustAlpha, isClient, mixColor, parseColorToRgba } from '@vexip-ui/utils'\nimport { tagProps } from './props'\n\nimport type { TagType } from './symbol'\n\nconst tagTypes = Object.freeze<TagType[]>([\n 'default',\n 'primary',\n 'info',\n 'success',\n 'error',\n 'warning',\n 'lime',\n 'pink',\n 'magenta',\n 'tomato',\n 'orange',\n 'cyan',\n 'navy',\n 'gold',\n 'purple',\n])\n\nexport default defineComponent({\n name: 'Tag',\n components: {\n Icon,\n },\n props: tagProps,\n emits: [],\n setup(_props, { slots }) {\n const props = useProps('tag', _props, {\n size: createSizeProp(),\n type: {\n default: 'default',\n validator: (value: TagType) => tagTypes.includes(value),\n },\n border: false,\n closable: false,\n color: null,\n simple: false,\n circle: false,\n prefix: '',\n prefixBg: '',\n prefixColor: '',\n suffix: '',\n suffixBg: '',\n suffixColor: '',\n disabled: false,\n slots: () => ({}),\n })\n\n const nh = useNameHelper('tag')\n const icons = useIcons()\n\n const className = computed(() => {\n return {\n [nh.b()]: true,\n [nh.bs('vars')]: true,\n [nh.bm('inherit')]: props.inherit,\n [nh.bm(props.size)]: props.size !== 'default',\n [nh.bm(props.type)]: props.type !== 'default',\n [nh.bm('border')]: props.border,\n [nh.bm('simple')]: props.simple,\n [nh.bm('circle')]: props.circle,\n [nh.bm('closable')]: props.closable,\n [nh.bm('disabled')]: props.disabled,\n }\n })\n const style = computed(() => {\n if (!props.color) return undefined\n\n const rootStyle = isClient ? getComputedStyle(document.documentElement) : null\n const white = parseColorToRgba(rootStyle?.getPropertyValue(nh.nv('color-white')) || '#fff')\n const baseColor = parseColorToRgba(props.color)\n const base = baseColor.toString()\n\n return nh.cvm({\n color: 'var(--vxp-color-white)',\n 'bg-color': base,\n 'b-color': base,\n 'close-color': 'var(--vxp-color-white)',\n 'd-color': mixColor(white, baseColor, 0.3).toString(),\n ...(props.simple || props.border\n ? {\n color: base,\n 'close-color': base,\n }\n : {}),\n ...(props.simple\n ? {\n 'bg-color': adjustAlpha(baseColor, 0.2).toString(),\n }\n : {}),\n })\n })\n\n function handleClose(event: MouseEvent) {\n if (!props.closable || props.disabled || event.button > 0) {\n return false\n }\n\n event.stopPropagation()\n emitEvent(props.onClose)\n }\n\n function renderClose() {\n if (!props.closable) return null\n\n return (\n <button type={'button'} class={nh.be('close')} onClick={handleClose}>\n <Icon {...icons.value.close} label={'close'}></Icon>\n </button>\n )\n }\n\n return () => {\n const hasPrefix = !!(props.prefix === 0 || props.prefix || slots.prefix || props.slots.prefix)\n const hasSuffix = !!(props.suffix === 0 || props.suffix || slots.suffix || props.slots.suffix)\n\n return (\n <div class={className.value} style={style.value}>\n {hasPrefix ? (\n <span\n class={[nh.be('unit'), nh.be('prefix')]}\n style={{\n color: props.prefixColor,\n backgroundColor: props.prefixBg,\n borderColor: props.prefixBg,\n }}\n >\n {renderSlot(slots, 'prefix', undefined, () => [\n <Renderer renderer={props.slots.prefix}>{props.prefix}</Renderer>,\n ])}\n </span>\n ) : null}\n <span class={[nh.be('unit'), nh.be('content')]}>\n {renderSlot(slots, 'default', undefined, () => [\n <Renderer renderer={props.slots.default}></Renderer>,\n ])}\n {!hasSuffix && renderClose()}\n </span>\n {hasSuffix ? (\n <span\n class={[nh.be('unit'), nh.be('suffix')]}\n style={{\n color: props.suffixColor,\n backgroundColor: props.suffixBg,\n borderColor: props.suffixBg,\n }}\n >\n {renderSlot(slots, 'suffix', undefined, () => [\n <Renderer renderer={props.slots.suffix}>{props.suffix}</Renderer>,\n ])}\n {renderClose()}\n </span>\n ) : null}\n </div>\n )\n }\n },\n})\n"],"names":["tagTypes","Object","freeze","defineComponent","name","components","Icon","props","tagProps","emits","setup","_props","slots","useProps","size","createSizeProp","type","default","validator","value","includes","border","closable","color","simple","circle","prefix","prefixBg","prefixColor","suffix","suffixBg","suffixColor","disabled","nh","useNameHelper","icons","useIcons","className","computed","b","bs","bm","inherit","style","rootStyle","isClient","getComputedStyle","document","documentElement","white","parseColorToRgba","getPropertyValue","nv","baseColor","base","toString","cvm","mixColor","adjustAlpha","handleClose","event","button","stopPropagation","emitEvent","onClose","renderClose","_createVNode","be","_mergeProps","close","hasPrefix","hasSuffix","backgroundColor","borderColor","renderSlot","undefined","Renderer"],"mappings":"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"}