Global Header

제품 이름, 주요 화면, 공통 동작을 한곳에 배치하는 상단 헤더입니다.

Live preview
컴포넌트를 조작하면 여기에 결과가 표시됩니다.
코드 보기
HTML
<sy-global-header
  title="Syidax"
  information
  notification
></sy-global-header>

사용 가이드

#

앱 전체에서 사용하는 브랜드·탐색·공통 동작을 모읍니다. 개별 화면의 제목은 본문에 두세요.

브랜드
logo 슬롯에 로고를 넣습니다.
탐색
tabs 슬롯에 탭을 배치하세요. 탭 본문과 연결하려면 sy-tab-group 안에 구성해야 합니다.
공통 동작
actions 슬롯에 계정·설정 등의 동작을 배치합니다.

예제

#

제품 이름과 공통 동작

도움말과 알림을 클릭하면 동작 이벤트가 발생합니다.

코드 보기
HTML
<sy-global-header
  title="Syidax"
  information
  notification
></sy-global-header>

브랜드와 사용자 동작

logo와 actions 슬롯에 실제 버튼 등 원하는 내용을 배치합니다.

코드 보기
HTML
<sy-global-header title="Syidax"><strong slot="logo"
    style="font-size:20px">S</strong>
  <sy-button slot="actions" size="small">내 계정</sy-button>
</sy-global-header>

탭과 내용 연결

탭을 바꾸면 같은 tabkey와 name을 가진 콘텐츠가 표시됩니다. 공간이 부족한 탭은 더보기 메뉴에 들어갑니다.

코드 보기
HTML
<sy-tab-group active="0" style="width:100%;height:260px">
  <sy-global-header title="Syidax">
    <div slot="tabs">
      <sy-tab tabkey="tab-0">개요</sy-tab>
      <sy-tab tabkey="tab-1">활동</sy-tab>
      <sy-tab tabkey="tab-2">설정</sy-tab>
    </div>
  </sy-global-header>
  <sy-tab-content name="tab-0">
    <p style="margin:20px 0">프로젝트 현황을 한눈에 확인합니다.</p>
  </sy-tab-content>
  <sy-tab-content name="tab-1">
    <p style="margin:20px 0">최근 변경 사항과 팀의 활동을 확인합니다.</p>
  </sy-tab-content>
  <sy-tab-content name="tab-2">
    <p style="margin:20px 0">프로젝트의 기본 설정을 관리합니다.</p>
  </sy-tab-content>
</sy-tab-group>

이벤트와 전달 값

컴포넌트를 조작하고 최근 이벤트의 이름과 detail 값을 확인하세요. 코드에는 이 컴포넌트와 하위 구성 요소가 보내는 이벤트의 구독 방법이 모두 포함되어 있습니다.

코드 보기
HTML
<sy-global-header
  title="Syidax"
  information
  notification
></sy-global-header>
<output id="demo-events" 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;
  }) ?? '완료';
  for (const name of ["changed", "actionClick", "selected"]) {
    document.addEventListener(name, event => {
      document.querySelector('#demo-events').textContent =
        `${event.target.localName} · ${name}: ${describeResult(event.detail)}`;
    });
  }
</script>

탭 넘침 다시 계산

앱 레이아웃을 바꾼 뒤 updateOverflowTabs()로 현재 너비에 맞는 탭 넘침을 다시 계산할 수 있습니다.

코드 보기
HTML
<sy-global-header
  title="Syidax"
  information
  notification
  id="supplement-1"
></sy-global-header>
<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 component1 = document.querySelector("#supplement-1");
  Object.assign(component1, {});
  const actionTarget0 = document.querySelector("#supplement-1");
  document.querySelector('#action-0').addEventListener('click', async () => {
    const result = await actionTarget0.updateOverflowTabs();
    document.querySelector('#demo-result').textContent = describeResult(result);
  });
</script>

API reference

#

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

<sy-global-header>

Properties

Attribute / PropertyTypeDefaultDescription
string''헤더에 표시할 제품 이름입니다. HTML 속성은 title입니다.
booleanfalse가장 가까운 스크롤 영역의 상단에 고정합니다.
booleanfalse검색 입력란을 표시합니다.
booleanfalse도움말 동작 버튼을 표시합니다.
booleanfalse알림 동작 버튼을 표시합니다.

Events

EventDetailDescription
CustomEvent<unknown>값 또는 선택 상태가 바뀔 때 발생합니다.
CustomEvent<unknown>이벤트의 detail에서 결과를 확인하세요.
CustomEvent<unknown>사용자가 항목을 선택했을 때 발생합니다.

Methods

MethodReturnsDescription
Promise<void>현재 너비에 맞춰 더보기 메뉴에 표시할 탭을 다시 계산합니다.

Slots

SlotDescription
logo 영역에 표시할 내용입니다.
tabs 영역에 표시할 내용입니다.
actions 영역에 표시할 내용입니다.