Skip to content

Accordion Component Demo ​

This page demonstrates the Accordion component with various configurations and examples.

Basic Accordion ​

A simple accordion with default settings.

vue
<template>
  <OAccordion accordionTextRef="Click to expand/collapse">
    <template #accordionContent>
      <p>
        This is the content that will be shown when the accordion is expanded.
      </p>
      <p>You can include any HTML or components here.</p>
    </template>
  </OAccordion>
</template>
Click to expand/collapse

This is the content that will be shown when the accordion is expanded.

You can include any HTML or components here.

Multiple Accordions ​

Multiple accordions can be used together to create a collapsible content section.

vue
<template>
  <div class="accordion-group">
    <OAccordion accordionTextRef="Section 1">
      <template #accordionContent>
        <p>Content for section 1</p>
        <p>You can include any HTML or components here.</p>
      </template>
    </OAccordion>

    <OAccordion accordionTextRef="Section 2">
      <template #accordionContent>
        <p>Content for section 2</p>
        <p>This section can be expanded or collapsed independently.</p>
      </template>
    </OAccordion>

    <OAccordion accordionTextRef="Section 3">
      <template #accordionContent>
        <p>Content for section 3</p>
        <p>Each accordion operates independently of the others.</p>
      </template>
    </OAccordion>
  </div>
</template>

<style>
.accordion-group {
  display: flex;
  flex-direction: column;
  gap: 8px;
}
</style>
Section 1

Content for section 1

You can include any HTML or components here.

Section 2

Content for section 2

This section can be expanded or collapsed independently.

Section 3

Content for section 3

Each accordion operates independently of the others.

Accordion with Rich Content ​

Accordions can contain any type of content, including other components, images, and formatted text.

vue
<template>
  <OAccordion accordionTextRef="Rich Content Example">
    <template #accordionContent>
      <div class="rich-content">
        <h3>Nested Heading</h3>
        <p>This accordion contains rich content with various elements.</p>

        <div class="image-container">
          <img
            src="https://via.placeholder.com/300x150"
            alt="Placeholder Image"
          />
        </div>

        <h4>Features List</h4>
        <ul>
          <li>Feature 1: Lorem ipsum dolor sit amet</li>
          <li>Feature 2: Consectetur adipiscing elit</li>
          <li>Feature 3: Sed do eiusmod tempor incididunt</li>
        </ul>

        <div class="code-example">
          <h4>Code Example</h4>
          <pre>
            <code>
                function example() {
                  console.log("This is an example");
                }
            </code>
          </pre>
        </div>
      </div>
    </template>
  </OAccordion>
</template>

<style>
.rich-content {
  padding: 16px;
}

.image-container {
  margin: 16px 0;
  text-align: center;
}

.image-container img {
  max-width: 100%;
  height: auto;
  border-radius: 4px;
}

.code-example {
  background-color: #f5f5f5;
  border-radius: 4px;
  padding: 16px;
  margin: 16px 0;
  overflow-x: auto;
}

.code-example pre {
  margin: 0;
}
</style>
Rich Content Example

Nested Heading

This accordion contains rich content with various elements.

Random Image

Features List

  • Feature 1: Lorem ipsum dolor sit amet
  • Feature 2: Consectetur adipiscing elit
  • Feature 3: Sed do eiusmod tempor incididunt

Code Example

          
            
            function example() {
              console.log("This is an example");
            }
          
        

Nested Accordions ​

Accordions can be nested inside each other to create hierarchical content.

vue
<template>
  <OAccordion accordionTextRef="Parent Accordion">
    <template #accordionContent>
      <p>This is the parent accordion content.</p>

      <OAccordion accordionTextRef="Child Accordion 1">
        <template #accordionContent>
          <p>This is the content of the first child accordion.</p>
        </template>
      </OAccordion>

      <OAccordion accordionTextRef="Child Accordion 2">
        <template #accordionContent>
          <p>This is the content of the second child accordion.</p>
        </template>
      </OAccordion>
    </template>
  </OAccordion>
</template>
Parent Accordion

This is the parent accordion content.

Child Accordion 1

This is the content of the first child accordion.

Child Accordion 2

This is the content of the second child accordion.