UNPKG

@tapie-kr/inspire-react

Version:

React Component Collection for INSPIRE

26 lines (22 loc) 2.15 kB
'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 */ 'use strict'; 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;