본문으로 바로가기 본문 바로가기
WIKI 기술 지식 베이스

Panel 패널

원문 보기 위키 갱신

내용을 그룹으로 묶어 보여 주는 콘텐츠 패널이에요.

출처: 문서

본문

내용을 그룹으로 묶는 데 사용하는 콘텐츠 패널이에요.

언제 사용하나요?

페이지 내용을 그룹으로 나눠 보여 줘야 할 때 사용해요. 보통 헤더, 콘텐츠 영역, 푸터 세 부분으로 이루어져요.

기본 사용법

:::demo

<template>
  <d-panel>
    <d-panel-header>Click me to expand</d-panel-header>
    <d-panel-body>This is body</d-panel-body>
  </d-panel>
</template>

:::

기본 상태

:::demo is-collapsed를 true로 설정하면 패널이 기본으로 펼쳐져 있어요.

<template>
  <d-panel :is-collapsed="true">
    <d-panel-header>Panel header</d-panel-header>
    <d-panel-body>This is body</d-panel-body>
  </d-panel>
</template>

:::

패널 유형

:::demo 패널 유형은 5가지예요: primary / success / danger / warning / info, 기본값은 info예요.

<template>
  <d-panel :is-collapsed="true">
    <d-panel-header>Panel with info Type</d-panel-header>
    <d-panel-body>This is body</d-panel-body>
  </d-panel>
  <br>
  <d-panel type="primary" :is-collapsed="true">
    <d-panel-header>Panel with primary Type</d-panel-header>
    <d-panel-body>This is body</d-panel-body>
  </d-panel>
  <br>
  <d-panel type="success" :is-collapsed="true">
    <d-panel-header>Panel with success Type</d-panel-header>
    <d-panel-body>This is body</d-panel-body>
  </d-panel>
  <br>
  <d-panel type="warning" :is-collapsed="true">
    <d-panel-header>Panel with warning Type</d-panel-header>
    <d-panel-body>This is body</d-panel-body>
  </d-panel>
  <br>
  <d-panel type="danger" :is-collapsed="true">
    <d-panel-header>Panel with danger Type</d-panel-header>
    <d-panel-body>This is body</d-panel-body>
  </d-panel>
</template>

:::

패널 스타일

:::demo

<template>
  <d-panel @toggle="toggle" :is-collapsed="true" :has-left-padding="false">
    <d-panel-header>
      Panel has no left padding
      <em :class="`icon icon-chevron-${toggleState ? 'down' : 'up'}`"></em>
    </d-panel-header>
    <d-panel-body>This is body</d-panel-body>
  </d-panel>
  <br>
  <d-panel :is-collapsed="true">
    <d-panel-header>Panel with header and footer</d-panel-header>
    <d-panel-body>This is body</d-panel-body>
    <d-panel-footer>This is footer</d-panel-footer>
  </d-panel>
</template>
<script>
import { defineComponent, ref } from 'vue';

export default defineComponent({
  setup() {
    const toggleState = ref(true);

    const toggle = (value) => {
      toggleState.value = value;
    };

    return {
      toggle,
      toggleState
    };
  }
});
</script>

:::

접힘 막기

:::demo before-toggle을 사용하면 패널이 접히는 것을 막을 수 있어요. 조건을 판단해서 Panel이 펼쳐져 있을 때 접힘 방지 버튼을 누르면 Panel을 접을 수 없고, Panel이 펼쳐져 있을 때는 조작에 영향을 주지 않아요.

<template>
  <d-panel
    type="primary"
    :is-collapsed="isCollapsed"
    @toggle="handleToggle"
    :before-toggle="beforeToggle"
  >
    <d-panel-header>
      Panel header
      <i :class="`icon-chevron-${toggle ? 'down' : 'up'}`"></i>
    </d-panel-header>
    <d-panel-body>This is body</d-panel-body>
  </d-panel>
  <br>
  <d-button @click="panelToggle = !panelToggle">
    {{ panelToggle ? '阻止折叠' : '允许折叠' }}
  </d-button>
</template>
<script>
import { defineComponent, ref } from 'vue';

export default defineComponent({
  setup() {
    let isCollapsed = ref(true);
    let panelToggle = ref(true);
    let toggle = ref(true);
    let showAnimation = ref(true);

    const handleToggle = (value) => {
      toggle.value = value;
    };
    
    const beforeToggle = () => {
      return panelToggle.value;
    };

    return {
      toggle,
      panelToggle,
      beforeToggle,
      isCollapsed,
      handleToggle,
    };
  }
});
</script>

:::

Panel 파라미터

파라미터 타입 기본값 설명
type PanelType 'info' 선택, 패널 유형
is-collapsed boolean false 선택, 기본으로 펼칠지 여부
has-left-padding boolean true 선택, 왼쪽 패딩을 표시할지 여부
show-animation boolean true 선택, 애니메이션을 표시할지 여부
before-toggle (value: boolean, done?: () => void) => void -- 선택, 패널 접힘 상태가 바뀌기 전의 콜백 함수.
파라미터 value는 현재 상태를,
파라미터 done()은 Panel의 열림/닫힘을 제어해요

Panel 이벤트

이벤트명 타입 설명
toggle (value: boolean) => void 선택, 패널을 토글하는 이벤트

Panel 타입 정의

PanelType

export type PanelType = 'primary' | 'success' | 'danger' | 'warning' | 'info';

더 알아보기 (Learn more)

d-panel은 헤더를 눌러 접었다 펼칠 수 있는 콘텐츠 묶음이에요. before-toggle 콜백에서 조건을 검사해 특정 상황에서는 접히지 않도록 막을 수 있다는 점이 특히 유용해요.