diff --git a/app/src/displays/color/color.vue b/app/src/displays/color/color.vue
index 93c56a5940..b37ec1e126 100644
--- a/app/src/displays/color/color.vue
+++ b/app/src/displays/color/color.vue
@@ -1,6 +1,6 @@
@@ -9,7 +9,7 @@
import { defineComponent, computed, PropType } from '@vue/composition-api';
import formatTitle from '@directus/format-title';
import Color from 'color';
-import colorString from 'color-string';
+import { isHex } from '@/utils/color';
export default defineComponent({
props: {
@@ -20,7 +20,7 @@ export default defineComponent({
defaultColor: {
type: String,
default: '#B0BEC5',
- validator: (value: string) => colorString.get.rgb(value) !== null,
+ validator: (value: string) => value === null || isHex(value),
},
},
setup(props) {
@@ -31,17 +31,14 @@ export default defineComponent({
const styles = computed(() => {
const style: Record = { 'background-color': props.defaultColor };
- if (Color(props.value) !== undefined) style['background-color'] = props.value;
+ if (props.value !== null) style['background-color'] = props.value;
- const pageColorString = getComputedStyle(document.body).getPropertyValue('--background-page');
+ const pageColorString = getComputedStyle(document.body).getPropertyValue('--background-page').trim();
- const pageColorRGB = colorString.get.rgb(pageColorString) || colorString.get.rgb('#FFF');
- const colorRGB = colorString.get.rgb(props.value) || colorString.get.rgb(props.defaultColor);
+ const pageColorRGB = Color(pageColorString);
+ const colorRGB = props.value === null ? Color(props.defaultColor) : Color(props.value);
- if (pageColorRGB == null || colorRGB == null) return {};
-
- if (Color.rgb(...colorRGB.slice(0.3)).contrast(Color.rgb(...pageColorRGB.slice(0, 3))) < 3)
- style['border'] = '1px solid var(--border-normal-alt)';
+ if (colorRGB.contrast(pageColorRGB) < 3) style['border'] = '1px solid var(--border-normal-alt)';
return style;
});
diff --git a/app/src/interfaces/color/color.vue b/app/src/interfaces/color/color.vue
index 08d3bdf784..241760da55 100644
--- a/app/src/interfaces/color/color.vue
+++ b/app/src/interfaces/color/color.vue
@@ -4,20 +4,20 @@
-
+
@@ -36,28 +36,11 @@
-
-
-
-
@@ -108,14 +74,15 @@
icon
:style="{ '--v-button-background-color': preset.color }"
v-tooltip="preset.name"
- @click="() => (hexValue = preset.color)"
+ @click="() => (hex = preset.color)"
/>