11<template >
22 <s-text-field class =" input monospace" label =" 颜色" v-model.trim =" color" >
3- <s-popup slot =" end" align = " right " ref =" popup" @show =" pickerKey = Symbol()" >
3+ <s-popup slot =" end" ref =" popup" @show =" pickerKey = Symbol()" >
44 <s-icon-button
55 slot =" trigger"
66 class =" colorpicker-button"
77 :style =" { color }"
88 >
99 <SIconPalette />
1010 </s-icon-button >
11- <ColorPicker
12- :color =" processedColor"
13- sucker-hide
14- @changeColor =" changeColor"
15- :key =" pickerKey"
16- />
11+ <div class =" colorpicker-popup-shell" >
12+ <ColorPicker
13+ :color =" processedColor"
14+ sucker-hide
15+ @changeColor =" changeColor"
16+ :key =" pickerKey"
17+ />
18+ </div >
1719 </s-popup >
1820 </s-text-field >
1921</template >
2022
2123<script lang="ts" setup>
22- import { nameToHex } from " ./coloUtils" ;
24+ import { hexToRgba , nameToHex } from " ./coloUtils" ;
2325import SIconPalette from " @/ui/icons/palette.vue" ;
2426import { computed , ref } from " vue" ;
2527import { ColorPicker } from " vue-color-kit" ;
@@ -33,9 +35,11 @@ interface ColorPickerArgs {
3335}
3436
3537const processedColor = computed (() => {
36- const colorstr = color .value .trim () || " #4682B4" ;
37- if (colorstr .startsWith (" #" ) || colorstr .startsWith (" rgb" )) return colorstr ;
38- return nameToHex (colorstr ) ?? colorstr ;
38+ let colorstr = color .value .trim () || " #4682B4" ;
39+ colorstr = nameToHex (colorstr ) ?? colorstr ;
40+ if (colorstr .startsWith (" rgb" )) return colorstr ;
41+ if (colorstr .startsWith (" #" )) return hexToRgba (colorstr );
42+ return colorstr ;
3943});
4044
4145function changeColor(newColor : ColorPickerArgs ) {
0 commit comments