element-plus
Version:
A Component Library for Vue 3
1 lines • 19.3 kB
Source Map (JSON)
{"version":3,"file":"rate.vue2.mjs","sources":["../../../../../../packages/components/rate/src/rate.vue"],"sourcesContent":["<template>\n <div\n :id=\"inputId\"\n :class=\"[rateClasses, ns.is('disabled', rateDisabled)]\"\n role=\"slider\"\n :aria-label=\"!isLabeledByFormItem ? ariaLabel || 'rating' : undefined\"\n :aria-labelledby=\"\n isLabeledByFormItem ? formItemContext?.labelId : undefined\n \"\n :aria-valuenow=\"currentValue\"\n :aria-valuetext=\"text || undefined\"\n aria-valuemin=\"0\"\n :aria-valuemax=\"max\"\n tabindex=\"0\"\n :style=\"rateStyles\"\n @keydown=\"handleKey\"\n >\n <span\n v-for=\"(item, key) in max\"\n :key=\"key\"\n :class=\"ns.e('item')\"\n @mousemove=\"setCurrentValue(item, $event)\"\n @mouseleave=\"resetCurrentValue\"\n @click=\"selectValue(item)\"\n >\n <el-icon\n ref=\"iconRefs\"\n :class=\"[\n ns.e('icon'),\n { hover: hoverIndex === item },\n ns.is('active', item <= currentValue),\n ns.is('focus-visible', item === Math.ceil(currentValue || 1)),\n ]\"\n >\n <component\n :is=\"activeComponent\"\n v-show=\"!showDecimalIcon(item) && item <= currentValue\"\n />\n <component\n :is=\"voidComponent\"\n v-show=\"!showDecimalIcon(item) && item > currentValue\"\n />\n <component\n :is=\"voidComponent\"\n v-show=\"showDecimalIcon(item)\"\n :class=\"[ns.em('decimal', 'box')]\"\n />\n <el-icon\n v-show=\"showDecimalIcon(item)\"\n :style=\"decimalStyle\"\n :class=\"[ns.e('icon'), ns.e('decimal')]\"\n >\n <component :is=\"decimalIconComponent\" />\n </el-icon>\n </el-icon>\n </span>\n <span\n v-if=\"showText || showScore\"\n :class=\"ns.e('text')\"\n :style=\"{ color: textColor }\"\n >\n {{ text }}\n </span>\n </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, inject, markRaw, ref, watch } from 'vue'\nimport { clamp } from 'lodash-unified'\nimport {\n CHANGE_EVENT,\n EVENT_CODE,\n UPDATE_MODEL_EVENT,\n} from '@element-plus/constants'\nimport { getEventCode, isArray, isObject, isString } from '@element-plus/utils'\nimport {\n formItemContextKey,\n useFormDisabled,\n useFormItemInputId,\n useFormSize,\n} from '@element-plus/components/form'\nimport { ElIcon } from '@element-plus/components/icon'\nimport { Star, StarFilled } from '@element-plus/icons-vue'\nimport { useNamespace } from '@element-plus/hooks'\nimport { rateEmits } from './rate'\n\nimport type { CSSProperties, Component } from 'vue'\nimport type { IconInstance } from '@element-plus/components/icon'\nimport type { RateProps } from './rate'\n\nfunction getValueFromMap<T>(\n value: number,\n map: Record<string, T | { excluded?: boolean; value: T }>\n) {\n const isExcludedObject = (\n val: unknown\n ): val is { excluded?: boolean } & Record<any, unknown> => isObject(val)\n\n const matchedKeys = Object.keys(map)\n .map((key) => +key)\n .filter((key) => {\n const val = map[key]\n const excluded = isExcludedObject(val) ? val.excluded : false\n return excluded ? value < key : value <= key\n })\n .sort((a, b) => a - b)\n const matchedValue = map[matchedKeys[0]]\n return (isExcludedObject(matchedValue) && matchedValue.value) || matchedValue\n}\n\ndefineOptions({\n name: 'ElRate',\n})\n\nconst props = withDefaults(defineProps<RateProps>(), {\n modelValue: 0,\n id: undefined,\n lowThreshold: 2,\n highThreshold: 4,\n max: 5,\n colors: () => ['', '', ''],\n voidColor: '',\n disabledVoidColor: '',\n icons: () => [StarFilled, StarFilled, StarFilled],\n voidIcon: () => Star,\n disabledVoidIcon: () => StarFilled,\n disabled: undefined,\n textColor: '',\n texts: () => [\n 'Extremely bad',\n 'Disappointed',\n 'Fair',\n 'Satisfied',\n 'Surprise',\n ],\n scoreTemplate: '{value}',\n})\nconst emit = defineEmits(rateEmits)\n\nconst formItemContext = inject(formItemContextKey, undefined)\nconst rateSize = useFormSize()\nconst ns = useNamespace('rate')\nconst { inputId, isLabeledByFormItem } = useFormItemInputId(props, {\n formItemContext,\n})\n\nconst currentValue = ref(clamp(props.modelValue, 0, props.max))\nconst hoverIndex = ref(-1)\nconst pointerAtLeftHalf = ref(true)\n\nconst iconRefs = ref<IconInstance[]>([])\nconst iconClientWidths = computed<number[]>(() =>\n iconRefs.value.map((icon) => icon.$el.clientWidth)\n)\nconst rateClasses = computed(() => [ns.b(), ns.m(rateSize.value)])\nconst rateDisabled = useFormDisabled()\nconst rateStyles = computed(() => {\n return ns.cssVarBlock({\n 'void-color': props.voidColor,\n 'disabled-void-color': props.disabledVoidColor,\n 'fill-color': activeColor.value,\n }) as CSSProperties\n})\n\nconst text = computed(() => {\n let result = ''\n if (props.showScore) {\n result = props.scoreTemplate.replace(\n /\\{\\s*value\\s*\\}/,\n rateDisabled.value ? `${props.modelValue}` : `${currentValue.value}`\n )\n } else if (props.showText) {\n result = props.texts[Math.ceil(currentValue.value) - 1]\n }\n return result\n})\nconst valueDecimal = computed(\n () => props.modelValue * 100 - Math.floor(props.modelValue) * 100\n)\nconst colorMap = computed(() =>\n isArray(props.colors)\n ? {\n [props.lowThreshold]: props.colors[0],\n [props.highThreshold]: { value: props.colors[1], excluded: true },\n [props.max]: props.colors[2],\n }\n : props.colors\n)\nconst activeColor = computed(() => {\n const color = getValueFromMap(currentValue.value, colorMap.value)\n // {value: '', excluded: true} returned\n return isObject(color) ? '' : color\n})\nconst decimalStyle = computed(() => {\n let width = ''\n if (rateDisabled.value) {\n width = `${valueDecimal.value}%`\n } else if (props.allowHalf) {\n width = '50%'\n }\n return {\n color: activeColor.value,\n width,\n }\n})\nconst componentMap = computed(() => {\n let icons = isArray(props.icons) ? [...props.icons] : { ...props.icons }\n icons = markRaw(icons) as\n | Array<string | Component>\n | Record<number, string | Component>\n return isArray(icons)\n ? {\n [props.lowThreshold]: icons[0],\n [props.highThreshold]: {\n value: icons[1],\n excluded: true,\n },\n [props.max]: icons[2],\n }\n : icons\n})\nconst decimalIconComponent = computed(() =>\n getValueFromMap(props.modelValue, componentMap.value)\n)\nconst voidComponent = computed(() =>\n rateDisabled.value\n ? isString(props.disabledVoidIcon)\n ? props.disabledVoidIcon\n : (markRaw(props.disabledVoidIcon) as Component)\n : isString(props.voidIcon)\n ? props.voidIcon\n : (markRaw(props.voidIcon) as Component)\n)\nconst activeComponent = computed(() =>\n getValueFromMap(currentValue.value, componentMap.value)\n)\n\nfunction showDecimalIcon(item: number) {\n const showWhenDisabled =\n rateDisabled.value &&\n valueDecimal.value > 0 &&\n item - 1 < props.modelValue &&\n item > props.modelValue\n const showWhenAllowHalf =\n props.allowHalf &&\n pointerAtLeftHalf.value &&\n item - 0.5 <= currentValue.value &&\n item > currentValue.value\n return showWhenDisabled || showWhenAllowHalf\n}\n\nfunction emitValue(value: number) {\n // if allow clear, and selected value is same as modelValue, reset value to 0\n if (props.clearable && value === props.modelValue) {\n value = 0\n }\n\n emit(UPDATE_MODEL_EVENT, value)\n if (props.modelValue !== value) {\n emit(CHANGE_EVENT, value)\n }\n}\n\nfunction selectValue(value: number) {\n if (rateDisabled.value) {\n return\n }\n if (props.allowHalf && pointerAtLeftHalf.value) {\n emitValue(currentValue.value)\n } else {\n emitValue(value)\n }\n}\n\nfunction handleKey(e: KeyboardEvent) {\n if (rateDisabled.value) {\n return\n }\n const code = getEventCode(e)\n const step = props.allowHalf ? 0.5 : 1\n let _currentValue = currentValue.value\n\n switch (code) {\n case EVENT_CODE.up:\n case EVENT_CODE.right:\n _currentValue += step\n break\n case EVENT_CODE.left:\n case EVENT_CODE.down:\n _currentValue -= step\n break\n }\n\n _currentValue = clamp(_currentValue, 0, props.max)\n\n if (_currentValue === currentValue.value) {\n return\n }\n\n e.stopPropagation()\n e.preventDefault()\n emit(UPDATE_MODEL_EVENT, _currentValue)\n emit(CHANGE_EVENT, _currentValue)\n return _currentValue\n}\n\nfunction setCurrentValue(value: number, event?: MouseEvent) {\n if (rateDisabled.value) {\n return\n }\n if (props.allowHalf && event) {\n pointerAtLeftHalf.value =\n event.offsetX * 2 <= iconClientWidths.value[value - 1]\n currentValue.value = pointerAtLeftHalf.value ? value - 0.5 : value\n } else {\n currentValue.value = value\n }\n hoverIndex.value = value\n}\n\nfunction resetCurrentValue() {\n if (rateDisabled.value) {\n return\n }\n if (props.allowHalf) {\n pointerAtLeftHalf.value = props.modelValue !== Math.floor(props.modelValue)\n }\n currentValue.value = clamp(props.modelValue, 0, props.max)\n hoverIndex.value = -1\n}\n\nwatch(\n () => props.modelValue,\n (val) => {\n currentValue.value = clamp(val, 0, props.max)\n pointerAtLeftHalf.value = props.modelValue !== Math.floor(props.modelValue)\n }\n)\n\nif (!props.modelValue) {\n emit(UPDATE_MODEL_EVENT, 0)\n}\n\ndefineExpose({\n /** @description set current value */\n setCurrentValue,\n /** @description reset current value */\n resetCurrentValue,\n})\n</script>\n"],"names":["_createElementBlock","_unref","_openBlock","_Fragment","_renderList","_normalizeClass","_createVNode","_withDirectives","_createBlock","_resolveDynamicComponent","_vShow"],"mappings":"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"}