Pagination

데이터를 페이지 단위로 나누고 페이지 번호와 표시 개수를 선택합니다.

Live preview
컴포넌트를 조작하면 여기에 결과가 표시됩니다.
코드 보기
HTML
<sy-pagination
  totalitems="123"
  pagesize="10"
  activepage="1"
  pagesizeoptions="10,20,50"
  total
></sy-pagination>

사용 가이드

#

많은 항목을 페이지 단위로 나눠 조회할 때 사용합니다. 실제 데이터 요청은 앱에서 처리합니다.

  1. 전체 개수 전달

    totalItems는 페이지 수가 아닌 항목 수입니다.

  2. 현재 페이지 반영

    activePage는 1부터 시작합니다. 조회 결과와 페이지 상태를 함께 유지하세요.

  3. 변경 시 다시 조회

    pageChanged·pageSizeChanged에서 새 조건으로 데이터를 불러오세요. 컴포넌트가 서버 요청을 대신하지 않습니다.

예제

#

페이지 이동

번호와 이전·다음 컨트롤로 페이지를 이동합니다.

코드 보기
HTML
<sy-pagination
  totalitems="123"
  pagesize="10"
  activepage="3"
></sy-pagination>

페이지당 개수

10·20·50개 중 하나를 고릅니다. 현재 페이지가 마지막 페이지를 넘어가면 유효 범위에 맞춥니다.

코드 보기
HTML
<sy-pagination
  totalitems="123"
  pagesize="20"
  pagesizeoptions="10,20,50"
  total
></sy-pagination>

페이지 직접 입력

목표 페이지 번호를 입력합니다. 범위를 벗어난 값은 첫 페이지 또는 마지막 페이지로 보정합니다.

코드 보기
HTML
<sy-pagination
  totalitems="200"
  jumper
  total
></sy-pagination>

비활성화

페이지 이동과 개수 변경, 직접 입력을 함께 비활성화합니다.

코드 보기
HTML
<sy-pagination
  totalitems="123"
  pagesizeoptions="10,20,50"
  jumper
  disabled
></sy-pagination>

한 페이지일 때

첫 번째는 컨트롤을 유지하고 두 번째는 hideonSingle로 숨깁니다.

코드 보기
HTML
<div style="display:grid;gap:16px;width:100%"><span>컨트롤 유지</span>
  <sy-pagination totalitems="8"></sy-pagination><span>한 페이지에서는 숨김</span>
  <sy-pagination totalitems="8" hideonsingle></sy-pagination>
</div>

이벤트와 전달 값

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

코드 보기
HTML
<sy-pagination
  totalitems="123"
  pagesize="10"
  activepage="1"
  pagesizeoptions="10,20,50"
  total
></sy-pagination>
<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 ["pageChanged", "pageSizeChanged"]) {
    document.addEventListener(name, event => {
      document.querySelector('#demo-events').textContent =
        `${event.target.localName} · ${name}: ${describeResult(event.detail)}`;
    });
  }
</script>

API reference

#

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

<sy-pagination>

Properties

Attribute / PropertyTypeDefaultDescription
number1현재 페이지 번호입니다. 1부터 시작합니다.
booleanfalse사용자 조작과 키보드 포커스를 차단합니다.
booleanfalse전체 데이터가 한 페이지 이하면 컨트롤을 숨깁니다.
booleanfalse이동할 페이지 번호 입력란을 표시합니다.
number10한 페이지에 표시할 항목 수입니다.
stringundefined쉼표로 구분한 페이지 크기 선택 값입니다. 예: 10,20,50.
booleanfalse전체 항목 수를 표시합니다.
number0전체 데이터 항목 수입니다.

Events

EventDetailDescription
CustomEvent<number>이벤트의 detail에서 결과를 확인하세요.
CustomEvent<number>이벤트의 detail에서 결과를 확인하세요.