From 30d4edc3dfbbaa6988d180debb81caf3b2303c55 Mon Sep 17 00:00:00 2001 From: Ramesh Mane <101566080+rameshmane7218@users.noreply.github.com> Date: Tue, 12 Mar 2024 06:44:57 +0000 Subject: [PATCH] fix(nc-gui): update base icon color picker model with new design --- .../general/BaseIconColorPicker.vue | 138 +++++++----------- ...iderWrapper.vue => ColorSliderWrapper.vue} | 18 ++- packages/nc-gui/lang/en.json | 2 +- packages/nc-gui/store/bases.ts | 1 + 4 files changed, 65 insertions(+), 94 deletions(-) rename packages/nc-gui/components/general/{ColorHueSliderWrapper.vue => ColorSliderWrapper.vue} (62%) diff --git a/packages/nc-gui/components/general/BaseIconColorPicker.vue b/packages/nc-gui/components/general/BaseIconColorPicker.vue index 72a91bcabd..316358b558 100644 --- a/packages/nc-gui/components/general/BaseIconColorPicker.vue +++ b/packages/nc-gui/components/general/BaseIconColorPicker.vue @@ -16,28 +16,29 @@ const emit = defineEmits(['colorSelected']) const { hue, size = 'medium', readonly } = props const defaultHueColor = { - h: 0, - s: 0, - v: 0, + h: 199, + s: 79, + v: 100, } const defaultHueValue = 199 const isOpen = ref(false) -const isOpenHuePicker = ref(false) - const colorRef = ref({ ...defaultHueColor, h: !(hue !== 0 && !hue) ? hue : defaultHueValue, }) +const updateColorHue = (value?: string | number | null) => { + colorRef.value.h = !isNaN(parseInt(`${value}`)) ? +Math.min(parseInt(`${value}`), 360) : 0 +} + function selectColor(value: number) { colorRef.value.h = value emit('colorSelected', value) - isOpenHuePicker.value = false isOpen.value = false } @@ -50,14 +51,10 @@ const onClick = (e: Event) => { } watch( - isOpenHuePicker, - () => { - if (!isOpenHuePicker.value && colorRef.value.h !== hue) { - if (hue !== 0 && !hue) { - colorRef.value.h = defaultHueValue - } else { - colorRef.value.h = hue - } + isOpen, + (value) => { + if (!value && colorRef.value.h !== hue) { + emit('colorSelected', colorRef.value.h) } }, { @@ -130,15 +127,12 @@ watch( @@ -214,25 +188,19 @@ watch( } } -:deep(.nc-hue-color-picker) { - &.vc-slider { - width: 297px; - } - .vc-slider-swatches { - @apply hidden; - } - .vc-hue { - @apply rounded-lg; +.nc-color-hue-input { + @apply outline-none text-sm rounded-lg border-gray-200 py-1 px-3 w-14 text-center; + -moz-appearance: textfield; + + &:focus { + @apply ring-transparent border-brand-500; } - .vc-slider-hue-warp { - height: 6px; - .vc-hue-pointer { - top: -3px !important; - } - .vc-hue-picker { - background-color: white; - box-shadow: 0 0 0 3px var(--nc-hue-slider-pointer-color) !important; - } + + /* Chrome, Safari, Edge, Opera */ + &::-webkit-outer-spin-button, + &::-webkit-inner-spin-button { + -webkit-appearance: none; + margin: 0; } } diff --git a/packages/nc-gui/components/general/ColorHueSliderWrapper.vue b/packages/nc-gui/components/general/ColorSliderWrapper.vue similarity index 62% rename from packages/nc-gui/components/general/ColorHueSliderWrapper.vue rename to packages/nc-gui/components/general/ColorSliderWrapper.vue index 500dfc87a8..3ac7f7a7c1 100644 --- a/packages/nc-gui/components/general/ColorHueSliderWrapper.vue +++ b/packages/nc-gui/components/general/ColorSliderWrapper.vue @@ -8,17 +8,19 @@ interface Props { } const props = withDefaults(defineProps(), { - modelValue: () => ({ h: 199, s: 0, v: 0 }), + modelValue: () => '#3069FE', mode: () => 'hsv', }) const emit = defineEmits(['update:modelValue', 'input']) const picked = computed({ - get: () => props.modelValue || { h: 199, s: 0, v: 0 }, + get: () => tinycolor(props.modelValue || '#3069FE').toHsv() as any, set: (val) => { - emit('update:modelValue', val[props.mode] || null) - emit('input', val[props.mode] || null) + if (val) { + emit('update:modelValue', val[props.mode] || null) + emit('input', val[props.mode] || null) + } }, }) @@ -26,15 +28,15 @@ const picked = computed({