Skip to content

Modal Component

A customizable modal dialog component with animation, multiple sizes, headers, footers, and close behavior.

Usage

vue
<template>
  <div>
    <button @click="isOpen = true">Open Modal</button>

    <coc-modal
      v-model="isOpen"
      title="My Modal Title"
      size="md"
      border="warning"
      :close="true"
      :close-button="true"
      :header="true"
      :scroll="true"
    >
      <template #modal-body>
        <p>This is the modal body content.</p>
      </template>
    </coc-modal>
  </div>
</template>

<script> 

export default { 
  data() {
    return {
      isOpen: false,
    };
  },
};
</script>

Props

PropTypeDefaultDescription
openBooleanfalseControls the modal visibility (v-model)
titleString""Title shown in header
sizeString"default"Modal size (lg, md, tablet, full)
borderString"default"Border style (default, danger, warning)
closeBooleantrueWhether modal can be closed
headerBooleantrueShow/hide modal header
closeButtonBooleantrueShow/hide close button
scrollBooleantrueEnable scroll in body
bodyClassString""Custom class for modal body

Slots

SlotDescription
modal-headerCustom header content (replaces default title & close button)
modal-bodyMain modal body content

Examples

Basic Modal

vue
<coc-modal v-model="isOpen" title="Basic Modal">
  <template #modal-body>
    <p>Hello from the modal!</p>
  </template>
</coc-modal>

Large Modal with Danger Border

vue
<coc-modal v-model="isOpen" title="Delete Confirmation" size="lg" border="danger">
  <template #modal-body>
    <p>Are you sure you want to delete this item?</p>
  </template>
</coc-modal>