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 @@