Migrating from ghl-ui ColorPicker to HighRise ColorPicker
This guide will help you migrate from the ghl-ui ColorPicker component to the new HighRise ColorPicker component.
Component Implementation Changes
Import Changes
diff
- import { UIColorPicker } from '@gohighlevel/ghl-ui'
+ import { HLColorPicker } from '@platform-ui/highrise'
Basic Usage Changes
diff
- <UIColorPicker
- v-model="selectedColor"
- label="Select Color"
- />
+ <HLColorPicker
+ id="color-picker"
+ v-model:value="selectedColor"
+ label="Select Color"
+ />
Form Integration Changes
diff
- <UIForm :model="formModel">
- <UIFormItem label="Theme Color">
- <UIColorPicker
- v-model="formModel.themeColor"
- label="Select Color"
- />
- </UIFormItem>
- </UIForm>
+ <HLForm :model="formModel" :rules="rules">
+ <HLFormItem
+ label="Theme Color"
+ path="themeColor"
+ required
+ >
+ <HLColorPicker
+ id="theme-color"
+ v-model:value="formModel.themeColor"
+ label="Select Color"
+ />
+ </HLFormItem>
+ </HLForm>
Props Changes
ghl-ui Prop | HighRise Prop | Notes |
---|---|---|
v-model | v-model:value | Changed to use value prop |
status | status | New prop for validation status |
validation-message | validation-message | New prop for validation feedback |
clearable | clearable | New prop for clearing selection |
size | size | New size options: 'sm', 'md', 'lg' |
showAlpha | showAlpha | New prop for alpha channel control |
modes | modes | New prop for color picker modes |
swatches | swatches | New prop for predefined colors |
Examples
Basic ColorPicker
vue
<template>
<HLColorPicker id="basic-colorpicker" v-model:value="selectedColor" label="Select Color" />
</template>
<script setup>
import { ref } from 'vue'
import { HLColorPicker } from '@platform-ui/highrise'
const selectedColor = ref('#000000')
</script>
ColorPicker with Validation
vue
<template>
<HLForm :model="formModel" :rules="rules">
<HLFormItem label="Theme Color" path="themeColor" required>
<HLColorPicker
id="theme-color"
v-model:value="formModel.themeColor"
label="Select Color"
:status="validationStatus"
:validation-message="validationMessage"
/>
</HLFormItem>
</HLForm>
</template>
<script setup>
import { ref, computed } from 'vue'
import { HLForm, HLFormItem, HLColorPicker } from '@platform-ui/highrise'
const formModel = ref({
themeColor: '#000000',
})
const validationStatus = computed(() => {
if (!formModel.value.themeColor) return 'error'
return undefined
})
const validationMessage = computed(() => {
if (!formModel.value.themeColor) return 'Please select a color'
return undefined
})
const rules = {
themeColor: [
{
required: true,
message: 'Please select a color',
trigger: 'change',
},
],
}
</script>
ColorPicker with Different Sizes
vue
<template>
<div class="space-y-4">
<HLColorPicker id="colorpicker-lg" v-model:value="value" size="lg" label="Large ColorPicker" />
<HLColorPicker id="colorpicker-md" v-model:value="value" size="md" label="Medium ColorPicker" />
<HLColorPicker id="colorpicker-sm" v-model:value="value" size="sm" label="Small ColorPicker" />
</div>
</template>
<script setup>
import { ref } from 'vue'
import { HLColorPicker } from '@platform-ui/highrise'
const value = ref('#000000')
</script>
ColorPicker with Alpha Channel
vue
<template>
<HLColorPicker id="colorpicker-alpha" v-model:value="selectedColor" label="Select Color" :showAlpha="true" />
</template>
<script setup>
import { ref } from 'vue'
import { HLColorPicker } from '@platform-ui/highrise'
const selectedColor = ref('rgba(0, 0, 0, 1)')
</script>
ColorPicker with Swatches
vue
<template>
<HLColorPicker id="colorpicker-swatches" v-model:value="selectedColor" label="Select Color" :swatches="colorSwatches" />
</template>
<script setup>
import { ref } from 'vue'
import { HLColorPicker } from '@platform-ui/highrise'
const selectedColor = ref('#000000')
const colorSwatches = ['#000000', '#FFFFFF', '#FF0000', '#00FF00', '#0000FF']
</script>
Best Practices
- Always provide a unique
id
for accessibility - Use
v-model:value
for two-way binding - Implement proper form validation
- Use appropriate size variants
- Consider mobile responsiveness
- Add proper ARIA labels
- Handle loading states appropriately
- Use descriptive labels
- Implement proper error handling
- Consider using tooltips for additional information
- Handle disabled states properly
- Use consistent spacing and alignment
- Consider color format preferences
- Handle color accessibility
- Use appropriate color swatches
- Consider color mode preferences
Additional Notes
- The component automatically handles focus states
- Error states are managed through validation status
- Supports keyboard navigation
- Maintains consistent styling with other form components
- Handles disabled states consistently
- Integrates seamlessly with form validation
- Maintains accessibility standards
- Supports custom styling through CSS variables
- Provides clear visual feedback for all states
- Works well on both desktop and mobile devices
- Supports both controlled and uncontrolled modes
- Includes built-in validation support
- Supports color format conversion
- Handles color parsing and formatting
- Supports custom color formats
- Provides clear color input validation
- Supports color mode switching
- Handles color swatch selection