From d627e322d55ca96cdaf6924db7fc6618358a76af Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=D0=94=D0=BC=D0=B8=D1=82=D1=80=D0=B8=D0=B9=20=D0=9C=D0=B0?=
 =?UTF-8?q?=D0=BB=D1=8E=D0=B3=D0=B8=D0=BD?= <d.malygin@iqdev.digital>
Date: Wed, 29 Jan 2025 15:49:17 +0500
Subject: [PATCH] fix: 'Checkbox', 'Select', 'Rating', 'ProgressBar' and 'Knob'
 for 'Table' work

---
 src/components/Checkbox/Checkbox.vue       | 3 ++-
 src/components/Knob/Knob.vue               | 2 ++
 src/components/ProgressBar/ProgressBar.vue | 5 ++---
 src/components/Rating/Rating.vue           | 2 ++
 src/components/Select/Select.vue           | 3 ++-
 5 files changed, 10 insertions(+), 5 deletions(-)

diff --git a/src/components/Checkbox/Checkbox.vue b/src/components/Checkbox/Checkbox.vue
index 49378d4..eae61a0 100644
--- a/src/components/Checkbox/Checkbox.vue
+++ b/src/components/Checkbox/Checkbox.vue
@@ -24,7 +24,8 @@ const emit = defineEmits(['update']);
 if (props.active) {
   active.value = props.active;
 }
-
+const propActive = computed(() => props.active);
+watch(propActive, () => (active.value = propActive.value));
 watch(active, () => emit('update', active));
 
 const themeColor = computed(() => convertThemeToColor(props.theme, props.darknessTheme));
diff --git a/src/components/Knob/Knob.vue b/src/components/Knob/Knob.vue
index 80861ad..c1fb4ef 100644
--- a/src/components/Knob/Knob.vue
+++ b/src/components/Knob/Knob.vue
@@ -30,6 +30,8 @@ const emit = defineEmits(['update']);
 if (props.value) {
   value.value = props.value;
 }
+const propValue = computed(() => props.value);
+watch(propValue, () => (value.value = propValue.value));
 watch(value, () => emit('update', value));
 
 const isClickHold = ref<boolean>(false);
diff --git a/src/components/ProgressBar/ProgressBar.vue b/src/components/ProgressBar/ProgressBar.vue
index 5245203..4936a0d 100644
--- a/src/components/ProgressBar/ProgressBar.vue
+++ b/src/components/ProgressBar/ProgressBar.vue
@@ -17,9 +17,8 @@ const props = withDefaults(defineProps<IProgressBarProps>(), {
 const value = defineModel() as Ref<number>;
 const emit = defineEmits(['update']);
 
-if (props.value) {
-  value.value = props.value;
-}
+const propValue = computed(() => props.value);
+watch(propValue, () => (value.value = propValue.value), { immediate: true });
 watch(value, () => emit('update', value));
 
 const active = computed(() => `${(value.value / props.max) * 100}%`);
diff --git a/src/components/Rating/Rating.vue b/src/components/Rating/Rating.vue
index df733be..db8d860 100644
--- a/src/components/Rating/Rating.vue
+++ b/src/components/Rating/Rating.vue
@@ -21,6 +21,8 @@ const emit = defineEmits(['update']);
 if (props.value) {
   value.value = props.value;
 }
+const propValue = computed(() => props.value);
+watch(propValue, () => (value.value = propValue.value));
 watch(value, () => emit('update', value));
 
 const onHoverIndex = ref();
diff --git a/src/components/Select/Select.vue b/src/components/Select/Select.vue
index 44e5dc4..92bec55 100644
--- a/src/components/Select/Select.vue
+++ b/src/components/Select/Select.vue
@@ -25,7 +25,8 @@ const emit = defineEmits(['update']);
 if (props.selected) {
   selected.value = props.selected;
 }
-
+const propSelected = computed(() => props.selected);
+watch(propSelected, () => (selected.value = propSelected.value));
 watch(selected, () => emit('update', selected));
 
 const isOpen = ref<boolean>(false);
-- 
GitLab