UNPKG

vexip-ui

Version:

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

1 lines 7.75 kB
{"version":3,"file":"progress.vue2.cjs","sources":["../../../components/progress/progress.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { Bubble } from '@/components/bubble'\nimport { Renderer } from '@/components/renderer'\n\nimport { computed } from 'vue'\n\nimport { createStateProp, useNameHelper, useProps } from '@vexip-ui/config'\nimport { callIfFunc, toFixed } from '@vexip-ui/utils'\nimport { progressProps } from './props'\nimport { infoTypes } from './symbol'\n\nimport type { CSSProperties } from 'vue'\n\ndefineOptions({ name: 'Progress' })\n\nconst _props = defineProps(progressProps)\nconst props = useProps('progress', _props, {\n percentage: {\n default: 0,\n validator: value => value >= 0 && value <= 100,\n static: true,\n },\n state: createStateProp(),\n strokeWidth: 8,\n infoType: {\n default: 'outside',\n validator: value => infoTypes.includes(value),\n },\n precision: 2,\n activated: false,\n strokeColor: {\n default: null,\n validator: value => !(Array.isArray(value) && (!value[0] || !value[1])),\n },\n slots: () => ({}),\n})\n\nconst nh = useNameHelper('progress')\n\nconst className = computed(() => {\n return [\n nh.b(),\n nh.bs('vars'),\n nh.bm(`info-${props.infoType}`),\n {\n [nh.bm('inherit')]: props.inherit,\n [nh.bm(props.state)]: props.state !== 'default',\n [nh.bm('activated')]: props.activated,\n },\n ]\n})\nconst style = computed(() => {\n return { [nh.cv('percentage')]: props.percentage }\n})\nconst trackStyle = computed(() => {\n return {\n height: `${props.strokeWidth}px`,\n borderRadius: `${props.strokeWidth}px`,\n }\n})\nconst fillerStyle = computed(() => {\n const style: CSSProperties = {\n borderRadius: `${props.strokeWidth}px`,\n }\n\n const strokeColor = callIfFunc(props.strokeColor, props.percentage)\n\n if (typeof strokeColor === 'string') {\n style.backgroundColor = strokeColor\n } else if (Array.isArray(strokeColor)) {\n style.backgroundImage = `linear-gradient(to right, ${strokeColor[0]} 0%, ${strokeColor[1]} 100%)`\n }\n\n return style\n})\nconst useBubble = computed(() => {\n return props.infoType.includes('bubble')\n})\nconst bubbleType = computed(() => {\n if (useBubble.value) {\n return props.infoType.split('-').pop() === 'bottom' ? 'bottom' : 'top'\n }\n\n return 'top'\n})\nconst bubbleStyle = computed(() => {\n if (!useBubble.value) return {}\n\n const type = bubbleType.value === 'top' ? 'bottom' : 'top'\n\n return {\n [type]: `${props.strokeWidth}px`,\n }\n})\nconst percentValue = computed(() => toFixed(props.percentage, props.precision))\n\ndefineExpose({ percentValue })\n</script>\n\n<template>\n <div\n :class=\"className\"\n :style=\"style\"\n role=\"progressbar\"\n :aria-valuenow=\"percentValue\"\n :aria-valuetext=\"`${percentValue}%`\"\n aria-valuemin=\"0\"\n aria-valuemax=\"100\"\n >\n <div :class=\"nh.be('track')\" :style=\"trackStyle\">\n <div :class=\"nh.be('filler')\" :style=\"fillerStyle\"></div>\n <div v-if=\"props.infoType === 'inside'\" :class=\"nh.be('info')\">\n <slot>\n <Renderer :renderer=\"props.slots.default\">\n <span :class=\"nh.be('percentage')\">\n {{ `${percentValue}%` }}\n </span>\n </Renderer>\n </slot>\n </div>\n </div>\n <div v-if=\"useBubble\" :class=\"nh.be('reference')\">\n <Bubble\n inherit\n :class=\"nh.be('bubble')\"\n :style=\"bubbleStyle\"\n :placement=\"bubbleType\"\n :content-class=\"nh.be('info')\"\n >\n <slot>\n <Renderer :renderer=\"props.slots.default\">\n <span :class=\"nh.be('percentage')\">\n {{ `${percentValue}%` }}\n </span>\n </Renderer>\n </slot>\n </Bubble>\n </div>\n <div v-else-if=\"props.infoType === 'outside'\" :class=\"nh.be('info')\">\n <slot>\n <Renderer :renderer=\"props.slots.default\">\n <span :class=\"nh.be('percentage')\">\n {{ `${percentValue}%` }}\n </span>\n </Renderer>\n </slot>\n </div>\n </div>\n</template>\n"],"names":["_props","__props","props","useProps","value","createStateProp","infoTypes","nh","useNameHelper","className","computed","style","trackStyle","fillerStyle","strokeColor","callIfFunc","useBubble","bubbleType","bubbleStyle","percentValue","toFixed","__expose","_createElementBlock","_createElementVNode","_normalizeClass","_unref","_renderSlot","_ctx","_createVNode","Renderer","Bubble"],"mappings":"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"}