Skip to content

Migrating from UICollapse to HighRise Accordion

UICollapseHLAccordion/HLAccordionItem. HL renames the component and adjusts props but keeps the same conceptual model of expanding named panels.

Component Implementation Changes

Import Changes

diff
- import { UICollapse, UICollapseItem } from '@gohighlevel/ghl-ui'
+ import { HLAccordion, HLAccordionItem } from '@platform-ui/highrise'

Basic Usage Changes

diff
- <UICollapse v-model="activeNames">
-   <UICollapseItem name="1" title="Section 1">Content 1</UICollapseItem>
- </UICollapse>
+ <HLAccordion :expanded-names="activeNames" arrow-placement="right">
+   <HLAccordionItem id="item-1" name="1" title="Section 1">Content 1</HLAccordionItem>
+ </HLAccordion>

Props Changes

Accordion (wrapper)

ghl-ui PropHighRise PropNotes
v-modelexpanded-namesControlled expanded names.
default-active-namesdefault-expanded-namesInitial expanded names.
accordionaccordionSame behavior; default true.
display-directivedisplay-directiveif (default) or show.
arrow-placementarrow-placementleft or right (default right).
-sizesm, md (default), lg.
-border-positiondefault (one outer border) or item (border per item).
-borderShow container/item borders; default true.
-zero-paddingRemoves default padding from items; default false.
trigger-areasRemoved; HL standardizes header click target.
idid (optional)Set for testing/accessibility if needed.

AccordionItem

ghl-ui PropHighRise PropNotes
titletitleSame.
namenameSame; required for identification.
disableddisabledSame.
-hover-effectToggle hover background (default true).
-idRequired on each item in HighRise.

Events & Slots

  • @update:modelValue@itemHeaderClick on HLAccordion (fires with item name when a header is clicked). Use v-model for state updates.
  • Slots on HLAccordionItem: header, header-extra, arrow, and default content.

Examples

Multiple Panel Mode

vue
<template>
  <HLAccordion :expanded-names="active" :accordion="false" size="md">
    <HLAccordionItem id="item-1" name="one" title="Section 1">Content 1</HLAccordionItem>
    <HLAccordionItem id="item-2" name="two" title="Section 2">Content 2</HLAccordionItem>
  </HLAccordion>
</template>

<script setup>
import { ref } from 'vue'
const active = ref(['one'])
</script>

Border-per-Item

vue
<HLAccordion border-position="item" :border="true">
  <HLAccordionItem id="faq-1" name="faq-1" title="Question A">Answer A</HLAccordionItem>
</HLAccordion>