LVRS Storyboard Frame

components/surfaces/Alert.svx

Path: components/surfaces/Alert.svx

Last modified:

경고

위치: qml/components/surfaces/Alert.qml

Alert는 구성 가능한 1/2/3 액션 레이아웃을 갖춘 중앙 오버레이 다이얼로그 표면입니다.

목적

  • 앱 수준의 차단/주의 대화 상자를 제공합니다.
  • 1차/2차/3차 행동 패턴을 하나의 구성 요소에서 지원합니다.

API

상태 및 텍스트:

  • open
  • buttonCount (0=auto, 2, 3)
  • title
  • message
  • primaryText, secondaryText, tertiaryText
  • primaryEnabled, secondaryEnabled, tertiaryEnabled

행동:

  • dismissOnBackground
  • useOverlayLayer

크기/시각:

  • minWidth, maxWidth, preferredWidth
  • backdropColor
  • cardBackgroundColor
  • appIconBackgroundColor, appIconFrameColor, appIconInnerColor

파생 레이아웃 플래그:

  • hasSecondaryAction
  • hasTertiaryAction
  • useVerticalActionLayout

신호:

  • primaryClicked()
  • secondaryClicked()
  • tertiaryClicked()
  • dismissed()

동작 레이아웃 규칙

  • buttonCount == 3 -> 수직 3-버튼 스택
  • buttonCount == 2 -> 가로 2-버튼 행
  • buttonCount == 0 (자동) + 3차 존재 -> 수직 3-버튼 스택
  • buttonCount == 0 (자동) + 3차 부재 + 2차 존재 → 수평 2-버튼 행
  • 기본만 -> 단일 전체 너비 기본 버튼

buttonCount가 명시적일 경우(2 또는 3), 빈 secondaryText / tertiaryText는 동작 카운트 계약을 유지하기 위해 자동으로 "Button"로 교체됩니다.

사용법

import LVRS 1.0 as LV

LV.Alert {
    open: state.showDeleteDialog
    buttonCount: 2
    title: "Delete Scene?"
    message: "This action cannot be undone."
    primaryText: "Delete"
    secondaryText: "Cancel"
    onPrimaryClicked: confirmDelete()
    onSecondaryClicked: state.showDeleteDialog = false
}

동작 원리

  • 열려 있을 때, 구성 요소가 구성될 때 오버레이 레이어를 다시 부모로 합니다.
  • 백드롭 클릭 해제 동작은 옵트인(dismissOnBackground)입니다.
  • 카드 배경 기본값은 대비를 안정적으로 유지하기 위해 동작 레이아웃에 따라 다릅니다.

고급 예시: 3- 액션 수직 레이아웃

import LVRS 1.0 as LV

LV.Alert {
    open: true
    buttonCount: 3
    title: "Unsaved Changes"
    message: "Choose how to proceed."
    primaryText: "Save"
    secondaryText: "Discard"
    tertiaryText: "Cancel"
}

운영 참고 사항

  • buttonCount가 명시적으로 2 / 3 로 설정된 경우, 해당 값이 레이아웃 선택에 우선 순위가 부여됩니다.
  • buttonCount == 0(자동)일 때, tertiaryText의 존재가 수직 레이아웃과 수평 레이아웃을 결정합니다.
  • dismissed()를 사용하여 백그라운드 디스미스 상태 정리를 통합하십시오.
  • 앱 상태 스토어에서 open를 단일 기준로 유지하여 오래된 오버레이 가시성을 방지하십시오.

실패 패턴

여러 구성 요소에서 별도의 로컬 open 플래그를 유지하면 대화 상태가 동기화되지 않을 수 있습니다. 알림 가시성을 위해 단일 앱 수준의 기준 원본를 사용하십시오.