UNPKG

tdesign-vue-next

Version:
1 lines 20.1 kB
{"version":3,"file":"linear-gradient.mjs","sources":["../../../../../components/color-picker/components/panel/linear-gradient.tsx"],"sourcesContent":["import { defineComponent, onBeforeUnmount, onMounted, reactive, ref, watch } from 'vue';\nimport { cloneDeep } from 'lodash-es';\nimport { GRADIENT_SLIDER_DEFAULT_WIDTH } from '@tdesign/common-js/color-picker/constants';\nimport { genGradientPoint, gradientColors2string, GradientColorPoint } from '../../utils';\nimport { InputNumber as TInputNumber } from '../../../input-number';\nimport { useBaseClassName } from '../../hooks';\nimport { useCommonClassName } from '@tdesign/shared-hooks';\nimport baseProps from './base-props';\n\nconst DELETE_KEYS: string[] = ['delete', 'backspace'];\n\nexport default defineComponent({\n name: 'LinearGradient',\n inheritAttrs: false,\n props: {\n ...baseProps,\n enableMultipleGradient: {\n type: Boolean,\n default: true,\n },\n },\n setup(props) {\n const baseClassName = useBaseClassName();\n const { STATUS } = useCommonClassName();\n const statusClassNames = STATUS.value;\n const refSlider = ref<HTMLElement>(null);\n const sliderRect = reactive({\n left: 0,\n width: GRADIENT_SLIDER_DEFAULT_WIDTH,\n });\n const isDragging = ref<boolean>(false);\n const isMoved = ref<boolean>(false);\n const degree = ref(props.color.gradientDegree);\n const selectedId = ref(props.color.gradientSelectedId);\n const colors = ref<GradientColorPoint[]>(cloneDeep(props.color.gradientColors));\n\n watch(\n () => props.color.gradientDegree,\n (value) => (degree.value = value),\n );\n watch(\n () => props.color.gradientSelectedId,\n (value) => (selectedId.value = value),\n );\n watch(\n () => props.color.gradientColors,\n (value) => {\n colors.value = cloneDeep(value);\n },\n {\n deep: true,\n },\n );\n\n const handleChange = (key: 'degree' | 'selectedId' | 'colors', payload: any, addUsedColor?: boolean) => {\n if (props.disabled) {\n return;\n }\n props.onChange({\n key,\n payload,\n addUsedColor,\n });\n };\n\n const handleDegreeChange = (value: number) => {\n if (props.disabled || value === props.color.gradientDegree) {\n return;\n }\n degree.value = value;\n handleChange('degree', value, true);\n };\n\n const handleSelectedIdChange = (value: string) => {\n if (props.disabled) {\n return;\n }\n selectedId.value = value;\n handleChange('selectedId', value);\n };\n\n const handleColorsChange = (value: GradientColorPoint[], isEnded?: boolean) => {\n if (props.disabled) {\n return;\n }\n colors.value = value;\n handleChange('colors', value, isEnded);\n };\n\n /**\n * 设置bar的位置\n * @param left\n * @returns\n */\n const updateActiveThumbLeft = (left: number) => {\n const index = colors.value.findIndex((c) => c.id === selectedId.value);\n if (index === -1) {\n return;\n }\n const point = colors.value[index];\n left = Math.max(0, Math.min(sliderRect.width, left));\n const percentLeft = (left / sliderRect.width) * 100;\n colors.value.splice(index, 1, {\n color: point.color,\n left: percentLeft,\n id: point.id,\n });\n handleColorsChange(colors.value);\n };\n\n // 移动开始\n const handleStart = (id: string) => {\n const rect = refSlider.value.getBoundingClientRect();\n sliderRect.left = rect.left;\n sliderRect.width = rect.width || GRADIENT_SLIDER_DEFAULT_WIDTH;\n if (isDragging.value || props.disabled) {\n return;\n }\n isMoved.value = false;\n isDragging.value = true;\n handleSelectedIdChange(id);\n // 让slider获取焦点,以便键盘事件生效。\n refSlider.value.focus();\n window.addEventListener('mousemove', handleMove, false);\n window.addEventListener('mouseup', handleEnd, false);\n window.addEventListener('contextmenu', handleEnd, false);\n };\n\n // 移动中\n const handleMove = (e: MouseEvent) => {\n if (!isDragging.value || props.disabled) {\n return;\n }\n const left = e.clientX - sliderRect.left;\n isMoved.value = true;\n updateActiveThumbLeft(left);\n };\n\n // 移动结束\n const handleEnd = () => {\n if (!isDragging.value) {\n return;\n }\n setTimeout(() => {\n isDragging.value = false;\n }, 0);\n if (isMoved.value) {\n handleColorsChange(colors.value, true);\n isMoved.value = false;\n }\n window.removeEventListener('mousemove', handleMove, false);\n window.removeEventListener('mouseup', handleEnd, false);\n window.removeEventListener('contextmenu', handleEnd, false);\n };\n\n const handleKeyup = (e: KeyboardEvent) => {\n if (props.disabled) {\n return;\n }\n const points = colors.value;\n let pos = points.findIndex((c) => c.id === selectedId.value);\n const { length } = points;\n // 必须保证有两个点\n if (DELETE_KEYS.includes(e.key.toLocaleLowerCase()) && length > 2 && pos >= 0 && pos <= length - 1) {\n points.splice(pos, 1);\n if (!points[pos]) {\n // eslint-disable-next-line no-nested-ternary\n pos = points[pos + 1] ? pos + 1 : points[pos - 1] ? pos - 1 : 0;\n }\n const current = points[pos];\n handleColorsChange(points, true);\n handleSelectedIdChange(current?.id);\n }\n };\n\n const handleThumbBarClick = (e: MouseEvent) => {\n if (props.disabled || !props.enableMultipleGradient) {\n return;\n }\n const left = e.offsetX;\n const percentLeft = (left / sliderRect.width) * 100;\n const newPoint = genGradientPoint(percentLeft, props.color.rgba);\n colors.value.push(newPoint);\n handleColorsChange(colors.value, true);\n handleSelectedIdChange(newPoint.id);\n };\n\n onMounted(() => {\n const rect = refSlider.value.getBoundingClientRect();\n sliderRect.left = rect.left;\n sliderRect.width = rect.width || GRADIENT_SLIDER_DEFAULT_WIDTH;\n });\n\n onBeforeUnmount(() => {\n window.removeEventListener('mousemove', handleMove, false);\n window.removeEventListener('mouseup', handleEnd, false);\n window.removeEventListener('contextmenu', handleEnd, false);\n });\n\n return () => {\n const { linearGradient, gradientColors } = props.color;\n const thumbBackground = gradientColors2string({\n points: gradientColors,\n degree: 90,\n });\n return (\n <div class={`${baseClassName.value}__gradient`}>\n <div class={`${baseClassName.value}__gradient-slider`}>\n <div\n class={[`${baseClassName.value}__slider`, `${baseClassName.value}--bg-alpha`]}\n onKeyup={handleKeyup}\n tabindex={0}\n ref={refSlider}\n >\n <ul\n class=\"gradient-thumbs\"\n onClick={handleThumbBarClick}\n style={{\n background: thumbBackground,\n }}\n >\n {colors.value.map((t) => {\n const left = `${Math.round(t.left * 100) / 100}%`;\n return (\n <li\n class={[\n `${baseClassName.value}__thumb`,\n 'gradient-thumbs__item',\n selectedId.value === t.id ? statusClassNames.active : '',\n ]}\n key={t.id}\n title={`${t.color} ${left}`}\n style={{\n color: t.color,\n left,\n }}\n onClick={(e: MouseEvent) => e.stopPropagation()}\n onMousedown={() => handleStart(t.id)}\n >\n <span class={['gradient-thumbs__item-inner', `${baseClassName.value}--bg-alpha`]}></span>\n </li>\n );\n })}\n </ul>\n </div>\n </div>\n <div class={`${baseClassName.value}__gradient-degree`} title={`${degree.value}deg`}>\n <TInputNumber\n size=\"small\"\n theme=\"normal\"\n min={0}\n max={360}\n step={1}\n format={(value: number) => `${value}°`}\n v-model={degree.value}\n onBlur={handleDegreeChange}\n onEnter={handleDegreeChange}\n disabled={props.disabled}\n />\n </div>\n <div class={[`${baseClassName.value}__gradient-preview`, `${baseClassName.value}--bg-alpha`]}>\n <span\n class=\"preview-inner\"\n style={{\n background: linearGradient,\n }}\n ></span>\n </div>\n </div>\n );\n };\n },\n});\n"],"names":["DELETE_KEYS","defineComponent","name","inheritAttrs","props","_objectSpread","baseProps","enableMultipleGradient","type","Boolean","setup","baseClassName","useBaseClassName","_useCommonClassName","useCommonClassName","STATUS","statusClassNames","value","refSlider","ref","sliderRect","reactive","left","width","GRADIENT_SLIDER_DEFAULT_WIDTH","isDragging","isMoved","degree","color","gradientDegree","selectedId","gradientSelectedId","colors","cloneDeep","gradientColors","watch","deep","handleChange","key","payload","addUsedColor","disabled","onChange","handleDegreeChange","handleSelectedIdChange","handleColorsChange","isEnded","updateActiveThumbLeft","index","findIndex","c","id","point","Math","max","min","percentLeft","splice","handleStart","rect","getBoundingClientRect","focus","window","addEventListener","handleMove","handleEnd","e","clientX","setTimeout","removeEventListener","handleKeyup","points","pos","length","includes","toLocaleLowerCase","current","handleThumbBarClick","offsetX","newPoint","genGradientPoint","rgba","push","onMounted","onBeforeUnmount","_props$color","linearGradient","thumbBackground","gradientColors2string","_createVNode","concat","background","map","t","round","active","onClick","stopPropagation","onMousedown","TInputNumber","format","onUpdateModelValue","$event"],"mappings":"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"}