@tapie-kr/inspire-react
Version:
React Component Collection for INSPIRE
26 lines (22 loc) • 2.15 kB
JavaScript
'use client';
/* eslint-disable */
/*
* INSPIRE : Creative Kit
* React Component Collection for INSPIRE
*
* This file is generated automatically. Do not modify it manually
* Generated at : 2025. 3. 4. 오후 6:18:13
* @tapie-kr/inspire-react version: 0.2.15
*
* (c) 2025 TAPIE. All rights reserved.
* MIT License
*/
;
var jsxRuntime = require('react/jsx-runtime');
var component_css = require('../../../lib/style/contract/component.css.js');
var index = require('../../miscellaneous/layout/HStack/index.js');
var React = require('react');
var button = require('./button.js');
var shared = require('./shared.js');
function Pagination(props){const[currentPage,setCurrentPage]=React.useState(props.defaultPage||props.min);const getCurrentVisiblePages=React.useCallback(()=>shared.getCurrentItems(props.min,props.max,props.visiblePages||10,currentPage),[currentPage,props.max,props.min,props.visiblePages]);const[currentItems,setCurrentItems]=React.useState(getCurrentVisiblePages());const handleNext=React.useCallback(()=>{setCurrentPage(prev=>{const newValue=Math.min(prev+1,props.max);props.onPageChange?.(newValue);return newValue});},[props]);const handlePrevious=React.useCallback(()=>{setCurrentPage(prev=>{const newValue=Math.max(prev-1,props.min);props.onPageChange?.(newValue);return newValue});},[props]);React.useEffect(()=>{setCurrentItems(getCurrentVisiblePages());},[currentPage,getCurrentVisiblePages,props]);return jsxRuntime.jsxs(index.HStack,{fullWidth:true,spacing:component_css.spacingVars.moderate,children:[jsxRuntime.jsx(button.ControlButton,{type:"previous",onClick:handlePrevious}),jsxRuntime.jsx(index.HStack,{spacing:component_css.spacingVars.micro,children:currentItems.map(c=>{if(c.type==="ellipsis"){return jsxRuntime.jsx(button.Square,{children:"..."},c.type)}if(!c.value)return null;const handleClick=()=>{if(c.value){setCurrentPage(c.value);props.onPageChange?.(c.value);}};return jsxRuntime.jsx(button.PageButton,{page:c.value,isActive:currentPage===c.value,onClick:handleClick})})}),jsxRuntime.jsx(button.ControlButton,{type:"next",onClick:handleNext})]})}
exports.Pagination = Pagination;