Modal

현재 작업에 집중하도록 별도의 대화상자를 표시합니다.

Live preview
컴포넌트를 조작하면 여기에 결과가 표시됩니다.
코드 보기
HTML
<sy-modal
  closable
  oktext="확인"
  canceltext="취소"
  width="300"
  variant="dialog"
  animation="none"
  id="sample"
><span slot="header">프로젝트 설정</span>
  <p slot="body">설정 내용을 확인한 뒤 진행하세요. 예제 밖의 데이터에는 영향을 주지 않습니다.</p>
</sy-modal>
<div class="demo-actions"
  style="display:flex;flex-wrap:wrap;gap:8px;margin-top:16px"
>
  <sy-button id="action-0" size="small">대화상자 열기</sy-button>
</div>
<output id="demo-result" aria-live="polite"></output>

<script type="module">
  const describeResult = value => JSON.stringify(value, (_key, item) => {
    if (item instanceof File) return {
      name: item.name,
      size: item.size,
      type: item.type
    };
    if (item instanceof Element) return `<${item.localName}>`;
    return item;
  }) ?? '완료';
  const actionTarget0 = document.querySelector("#sample");
  document.querySelector('#action-0').addEventListener('click', async () => {
    const result = await actionTarget0.setOpen();
    document.querySelector('#demo-result').textContent = describeResult(result);
  });
</script>

사용 가이드

#

현재 작업을 잠시 멈추고 확인이나 제한된 입력을 완료해야 할 때 사용합니다. 짧은 확인은 Popconfirm, 병행 작업은 Modeless가 알맞습니다.

  1. 결정에 필요한 내용 구성

    header·body·footer 슬롯을 나누고 okText·cancelText로 동작을 구체적으로 표현하세요. hideFooter로 기본 하단을 숨길 수 있습니다.

  2. 대화상자 열고 닫기

    setOpen()으로 열고 setOk()·setCancel()·setClose()로 종료할 수 있습니다.

  3. 종료 이유에 맞춰 처리

    closed.detail.event의 ok·cancel·close와 value를 읽으세요.

기능별 예제

#

22개 주제에서 필요한 기능을 선택하세요. 속성 설정, 메서드 호출, 이벤트 결과와 슬롯 구성을 실행 화면과 코드로 확인할 수 있습니다.

사용 예제 · Overview

선택한 예제를 직접 조작해 보세요. 여러 구성이 있는 주제는 세부 예제를 바꿀 수 있습니다.

코드 보기
HTML
예제를 불러오고 있습니다.

속성 · Animation

설정에 따라 표시와 동작이 어떻게 달라지는지 확인하세요.

코드 보기
HTML
예제를 불러오고 있습니다.

속성 · AnimationSpeed

설정에 따라 표시와 동작이 어떻게 달라지는지 확인하세요.

코드 보기
HTML
예제를 불러오고 있습니다.

속성 · Cancel Text

설정에 따라 표시와 동작이 어떻게 달라지는지 확인하세요.

코드 보기
HTML
예제를 불러오고 있습니다.

속성 · Closable

설정에 따라 표시와 동작이 어떻게 달라지는지 확인하세요.

코드 보기
HTML
예제를 불러오고 있습니다.

속성 · Enable Maximize

설정에 따라 표시와 동작이 어떻게 달라지는지 확인하세요.

코드 보기
HTML
예제를 불러오고 있습니다.

속성 · Hide Footer

설정에 따라 표시와 동작이 어떻게 달라지는지 확인하세요.

코드 보기
HTML
예제를 불러오고 있습니다.

속성 · Mask Closable

설정에 따라 표시와 동작이 어떻게 달라지는지 확인하세요.

코드 보기
HTML
예제를 불러오고 있습니다.

속성 · Maskless

설정에 따라 표시와 동작이 어떻게 달라지는지 확인하세요.

코드 보기
HTML
예제를 불러오고 있습니다.

속성 · Ok Text

설정에 따라 표시와 동작이 어떻게 달라지는지 확인하세요.

코드 보기
HTML
예제를 불러오고 있습니다.

속성 · Open

설정에 따라 표시와 동작이 어떻게 달라지는지 확인하세요.

코드 보기
HTML
예제를 불러오고 있습니다.

속성 · Position

설정에 따라 표시와 동작이 어떻게 달라지는지 확인하세요.

코드 보기
HTML
예제를 불러오고 있습니다.

속성 · Variant

설정에 따라 표시와 동작이 어떻게 달라지는지 확인하세요.

코드 보기
HTML
예제를 불러오고 있습니다.

속성 · Width

설정에 따라 표시와 동작이 어떻게 달라지는지 확인하세요.

코드 보기
HTML
예제를 불러오고 있습니다.

메서드 · Nested

예제 안의 버튼으로 메서드를 호출하고 실제 결과를 확인하세요.

코드 보기
HTML
예제를 불러오고 있습니다.

메서드 · setCancel

예제 안의 버튼으로 메서드를 호출하고 실제 결과를 확인하세요.

코드 보기
HTML
예제를 불러오고 있습니다.

메서드 · setClose

예제 안의 버튼으로 메서드를 호출하고 실제 결과를 확인하세요.

코드 보기
HTML
예제를 불러오고 있습니다.

메서드 · setMaximum

예제 안의 버튼으로 메서드를 호출하고 실제 결과를 확인하세요.

코드 보기
HTML
예제를 불러오고 있습니다.

메서드 · setOk

예제 안의 버튼으로 메서드를 호출하고 실제 결과를 확인하세요.

코드 보기
HTML
예제를 불러오고 있습니다.

메서드 · setOpen

예제 안의 버튼으로 메서드를 호출하고 실제 결과를 확인하세요.

코드 보기
HTML
예제를 불러오고 있습니다.

이벤트 · Closed

컴포넌트를 조작하면 아래 실행 화면에 이벤트 이름과 전달 값이 표시됩니다.

코드 보기
HTML
예제를 불러오고 있습니다.

슬롯 ·

컴포넌트 안에 배치한 내용과 코드의 slot 이름을 함께 확인하세요.

코드 보기
HTML
예제를 불러오고 있습니다.

API reference

#

이름에 마우스를 올리거나 키보드로 선택하면 적용 코드를 확인할 수 있습니다. 터치 화면에서는 이름을 누르세요.

<sy-modal>

Properties

Attribute / PropertyTypeDefaultDescription
string''취소 버튼 문구입니다.
booleanfalse닫기 버튼을 표시합니다.
booleanfalse대화상자 최대화 동작을 허용합니다.
booleanfalse기본 하단 동작 영역을 숨깁니다.
booleanfalse배경 클릭으로 닫습니다.
booleanfalse배경 마스크를 생략합니다.
string''확인 버튼 문구입니다.
booleanfalse하위 메뉴가 펼쳐진 상태입니다.
number0대화상자 너비(px)입니다. 0은 기본 크기입니다.
number0대화상자 높이(px)입니다. 0은 내용에 맞춥니다.
string'-1'화면 위쪽 위치입니다. -1은 자동 가운데 정렬입니다.
string'-1'화면 왼쪽 위치입니다. -1은 자동 가운데 정렬입니다.
'modal' | 'dialog''dialog'modal 또는 dialog 스타일입니다.
| 'none' | 'fade' | 'fade-scale' | 'zoom' | 'pop' | 'slide-top' | 'slide-bottom' | 'slide-left' | 'slide-right' | 'slide-fade-top' | 'slide-fade-bottom' | 'slide-fade-left' | 'slide-fade-right' | 'reveal-top' | 'reveal-bottom' | 'reveal-left' | 'reveal-right' | 'flip-x' | 'flip-y' | 'bounce' | 'spin''none'Enter/exit animation type. `none` (default) toggles instantly. Direction-aware values are explicit (`slide-top`, `slide-fade-left`, `reveal-bottom`, …) because the modal has no `position` attribute to derive direction from. Direction-less values (`fade`, `pop`, `flip-*`, `bounce`, `spin`) play the same regardless of orientation.
'x-fast' | 'fast' | 'medium' | 'slow' | 'x-slow''fast'Animation playback speed token. Maps to `--transition-*` global tokens.

Events

EventDetailDescription
CustomEvent<{ event: 'ok' | 'cancel' | 'close'; value: any; maximized: boolean; position: { top: string; left: string }; }>Fires when the modal closes. `detail.event` distinguishes ok / cancel / close.

Methods

MethodReturnsDescription
Promise<void>하위 메뉴를 펼칩니다.
Promise<void>항목을 닫습니다.
Promise<void>취소 결과와 함께 대화상자를 닫습니다.
Promise<void>확인 결과와 함께 대화상자를 닫습니다.
Promise<void>창을 최대화합니다.

Slots

SlotDescription
header 영역에 표시할 내용입니다.
body 영역에 표시할 내용입니다.
footer 영역에 표시할 내용입니다.