Skip to content

Migrating from ghl-ui CheckboxGroup to HighRise CheckboxGroup

HLCheckboxGroup is a replacement for UICheckboxGroup with HighRise styling. IDs are optional, sizing tokens follow HighRise common sizes, and validation is handled by HLFormItem (no built-in status or validation-message props).

Component Implementation Changes

Import Changes

diff
- import { UICheckboxGroup, UICheckbox } from '@gohighlevel/ghl-ui'
+ import { HLCheckboxGroup, HLCheckbox } from '@platform-ui/highrise'

Basic Usage Changes

diff
- <UICheckboxGroup v-model:value="selectedValues">
-   <UICheckbox value="1">Option 1</UICheckbox>
-   <UICheckbox value="2">Option 2</UICheckbox>
- </UICheckboxGroup>
+ <HLCheckboxGroup v-model:value="selectedValues">
+   <HLCheckbox value="1">Option 1</HLCheckbox>
+   <HLCheckbox value="2">Option 2</HLCheckbox>
+ </HLCheckboxGroup>

Props Changes

ghl-ui PropHighRise PropNotes
v-modelv-model:valueSame binding; default value is [].
sizesizeUses HighRise common sizes (3xslg); default inherits form size or md.
directiondirectionhorizontal (default) or vertical.
disableddisabledDisables the whole group; you can still disable individual HLCheckbox items.
idid (optional)Provide when you need a stable DOM id.
label, status, validation-messageNot provided on the group. Use HLFormItem for labels/validation.

Examples

Basic CheckboxGroup

vue
<template>
  <HLCheckboxGroup v-model:value="selectedValues">
    <HLCheckbox value="1">Option 1</HLCheckbox>
    <HLCheckbox value="2">Option 2</HLCheckbox>
    <HLCheckbox value="3">Option 3</HLCheckbox>
  </HLCheckboxGroup>
</template>

<script setup>
import { ref } from 'vue'

const selectedValues = ref<string[]>([])
</script>

Vertical Layout with Disabled Items

vue
<template>
  <HLCheckboxGroup v-model:value="preferences" direction="vertical">
    <HLCheckbox value="email">Email</HLCheckbox>
    <HLCheckbox value="sms" disabled>SMS</HLCheckbox>
    <HLCheckbox value="push">Push</HLCheckbox>
  </HLCheckboxGroup>
</template>

<script setup>
import { ref } from 'vue'

const preferences = ref<string[]>([])
</script>

Inside a Form Item

vue
<template>
  <HLForm :model="formModel" :rules="rules">
    <HLFormItem label="Notifications" path="notifications" required>
      <HLCheckboxGroup v-model:value="formModel.notifications">
        <HLCheckbox value="email">Email</HLCheckbox>
        <HLCheckbox value="sms">SMS</HLCheckbox>
        <HLCheckbox value="push">Push</HLCheckbox>
      </HLCheckboxGroup>
    </HLFormItem>
  </HLForm>
</template>

<script setup>
import { reactive } from 'vue'

const formModel = reactive({ notifications: [] as string[] })
const rules = {
  notifications: [{ required: true, message: 'Choose at least one', trigger: 'change' }],
}
</script>