Skip to content

ScPagination

ScPagination 컴포넌트는 목록과 같은 페이징이 필요한 UI에서 이전/다음 10단위 이동, 첫/마지막 페이지 바로가기, 페이지 번호, 직접 이동 입력 기능을 제공합니다.


✅ 기본 사용법

1
2
3
4
5
6
7
8
9
10
...
1235
rowsPerPage
currentPage
totalItems
{ "rowsPerPage": 10, "currentPage": 1, "totalItems": 12345 }
vue
<sc-pagination v-model="page" @change="search" />

<div class="w-[250px] inline-grid grid-cols-2 gap-2 mt-[50px]">
  <div>rowsPerPage</div>
  <sc-text-field v-model.number="page.rowsPerPage" />
  <div>currentPage</div>
  <sc-text-field v-model.number="page.currentPage" />
  <div>totalItems</div>
  <sc-text-field v-model="page.totalItems" type="number" />
</div>

<div>
  {{JSON.stringify(page, null, 2)}}
</div>

<script setup>
  import { usePage } from 'slsoft-components';

  const { page, rowsPerPageItems, pageParams } = usePage();

  // 페이지 샘플 초기값
  page.value = {
    rowsPerPage: 10,
    currentPage: 1,
    totalItems: 12345,
  };

  const search = async (pageNumber = 1) => {
    console.log('페이지 검색:', pageNumber);
    page.value.currentPage = pageNumber; // 현재 페이지 업데이트

    // 여기에 페이지 변경에 따른 검색 로직을 추가하세요.
    // 예: API 호출, 데이터 필터링 등
    const params = {
      ...pageParams.value,
      searchType: 'TITLE',
      searchKeyword: '검색어',
    };

    console.log('검색 파라미터:', params);
    // const response = await fetchData(params); // API 호출 예시
    // console.log('검색 결과:', response);
    // response를 통해 페이지 데이터 업데이트 로직 추가

    // 페이지 데이터 업데이트
    page.value.totalItems = 12345; // response.totalItems 예시로 총 항목 수를 업데이트
  };


</script>

🛠️ Props

이름타입기본값설명
modelValueObject{ rowsPerPage: 10, currentPage: 1, totalItems: 0 }페이지네이션 설정(v-model)

modelValue 필드

필드명타입설명
rowsPerPageNumber한 페이지당 항목 개수
currentPageNumber현재 페이지 번호
totalItemsNumber전체 항목 수

📤 이벤트 (Emits)

이벤트파라미터설명
update:modelValuenewModelValuev-model 업데이트 시 발생
changepage (Number)페이지 변경 완료 시 발생

🔳 슬롯 (Slots)

이 컴포넌트는 슬롯을 제공하지 않습니다.


🎨 스타일 클래스

클래스명설명
sc-pagination컴포넌트 최상위 래퍼
sc-pagination-navi이전/다음 버튼 래퍼
sc-pagination-icon-disable비활성화된 버튼 상태
sc-pagination-number페이지 번호 버튼
sc-pagination-selected현재 페이지 강조
sc-pagination-number-dots생략 구분자(…)
sc-pagination-goto직접 이동 입력 영역
sc-counter / sc-counter-medium / sc-counter-input입력 필드 스타일
sc-button-border / sc-button-defaultGO 버튼 스타일