{"version":3,"file":"index.61963cbc.js","sources":["../../src/components/Pagination/interface.ts","../../src/components/Pagination/index.tsx"],"sourcesContent":["\r\n\r\nexport const getPaginationItem = (active: number,total: number,pageSize: number) => {\r\n const len: number = Math.floor(total / pageSize) + (total % pageSize && 1 | 0)\r\n if(active>3 && total>10 && active <= len-3){\r\n return [active-2,active-1,active,active+1,active+2]\r\n }\r\n if(len>10 && active > len-3){\r\n return [len-5,len-4,len-3,len-2,len-1]\r\n }\r\n else {\r\n let json: any = []\r\n if (len > 10) {\r\n json = [1, 2, 3, 4, 5]\r\n } else {\r\n for (let i = 1; i < len; i++) {\r\n json.push(i)\r\n }\r\n }\r\n return json\r\n }\r\n}","import React, {useEffect, useState} from \"react\";\r\nimport './index.less'\r\nimport {getPaginationItem} from \"./interface\";\r\n\r\n// type size = 'default' | 'small'\r\n\r\nexport interface IPaginationProps{\r\n onChange?: (num:number) => void // 页码或 pageSize 改变的回调,参数是改变后的页码及每页条数\r\n total?: number //\t数据总数\r\n defaultCurrent?: number // 默认的当前页数\r\n defaultPageSize?: number // 默认的每页条数\r\n // hide?: boolean // 只有一页时是否隐藏分页器\r\n pageSize?: number // 每页条数\r\n // size?:size // 当为 small 时,是小尺寸分页\r\n}\r\n\r\nconst Pagination = (props: IPaginationProps) => {\r\n const {\r\n onChange,\r\n total = 0,\r\n defaultCurrent = 1,\r\n // hide = true,\r\n pageSize = 10,\r\n // size = 'default'\r\n } = props\r\n const [pages,setPages] = useState([])\r\n const [totalPage,setTotalPage] = useState(1)\r\n const [active,setActive] = useState(defaultCurrent)\r\n const [pre,setPre] = useState('•••')\r\n const [next,setNext] = useState('•••')\r\n\r\n const changePage = (num: number) => {\r\n if(active < 1 || active > totalPage)return\r\n setActive(active+Math.min(totalPage-active,num))\r\n onChange && onChange(active+Math.min(totalPage-active,num))\r\n }\r\n\r\n useEffect(() => {\r\n const len: number = Math.floor(total / pageSize) + (total % pageSize && 1 | 0)\r\n setTotalPage(len)\r\n if(active<1){\r\n setActive(1)\r\n }\r\n if(active>=totalPage){\r\n setActive(totalPage)\r\n }\r\n setPages(getPaginationItem(active,total,pageSize))\r\n },[active,pageSize,total])\r\n const changeSelect = (num: number) => {\r\n setActive(num)\r\n setNext('•••')\r\n setPre('•••')\r\n onChange && onChange(num)\r\n }\r\n return(\r\n <>\r\n { total >= 1 &&\r\n
\r\n
changePage(-1)}> <\r\n
\r\n {totalPage > 10 && active > 3 &&\r\n
changeSelect(1)}>1
}\r\n {active > 4 && totalPage > 10 &&\r\n
setNext('<<')}\r\n onMouseOut={() => setNext('•••')}\r\n onClick={() => changePage(-5)}\r\n title='向前5页'\r\n >{next}\r\n
}\r\n\r\n {\r\n pages?.map((i: any, index: number) =>\r\n changeSelect(i)}\r\n >{i}
)\r\n }\r\n\r\n {totalPage > 10 && active < totalPage - 3 &&\r\n
setPre('>>')}\r\n onMouseOut={() => setPre('•••')}\r\n onClick={() => changePage(5)}\r\n title='向后5页'\r\n >{pre}\r\n
}\r\n\r\n
changeSelect(totalPage)}>{totalPage}
\r\n changePage(1)}> >\r\n \r\n
共 {total} 条记录
\r\n \r\n || ''}\r\n \r\n\r\n )\r\n}\r\n\r\nexport default Pagination"],"names":["getPaginationItem","active","total","pageSize","len","Math","floor","json","i","push","Pagination","props","onChange","defaultCurrent","pages","setPages","useState","totalPage","setTotalPage","setActive","pre","setPre","next","setNext","changePage","num","min","changeSelect","map","index"],"mappings":"8DAEaA,GAAoB,CAACC,EAAeC,EAAcC,IAAqB,MAC1EC,GAAcC,KAAKC,MAAMJ,EAAQC,MAAqBA,GAAY,EAAI,MAC1EF,EAAO,GAAKC,EAAM,IAAMD,GAAUG,EAAI,QAC9B,CAACH,EAAO,EAAEA,EAAO,EAAEA,EAAOA,EAAO,EAAEA,EAAO,MAElDG,EAAI,IAAMH,EAASG,EAAI,QACf,CAACA,EAAI,EAAEA,EAAI,EAAEA,EAAI,EAAEA,EAAI,EAAEA,EAAI,GAEnC,IACGG,GAAY,MACZH,EAAM,KACC,CAAC,EAAG,EAAG,EAAG,EAAG,eAEXI,GAAI,EAAGA,EAAIJ,EAAKI,MAChBC,KAAKD,SAGXD,KCHRG,EAAa,AAACC,GAA4B,MACtC,CACFC,WACAV,QAAQ,EACRW,iBAAiB,EAEjBV,WAAW,IAEXQ,EACE,CAACG,EAAMC,GAAYC,mBAAc,IACjC,CAACC,EAAUC,GAAgBF,mBAAiB,GAC5C,CAACf,EAAOkB,GAAaH,mBAAiBH,GACtC,CAACO,EAAIC,GAAUL,mBAAS,sBACxB,CAACM,EAAKC,GAAWP,mBAAS,sBAE1BQ,EAAa,AAACC,GAAgB,CAC7BxB,EAAS,GAAKA,EAASgB,MAChBhB,EAAOI,KAAKqB,IAAIT,EAAUhB,EAAOwB,OAC/Bb,EAASX,EAAOI,KAAKqB,IAAIT,EAAUhB,EAAOwB,0BAGhD,IAAM,MACNrB,GAAcC,KAAKC,MAAMJ,EAAQC,MAAqBA,GAAY,EAAI,KAC/DC,GACVH,EAAO,KACI,GAEXA,GAAQgB,KACGA,KAELjB,EAAkBC,EAAOC,EAAMC,KAC1C,CAACF,EAAOE,EAASD,SACbyB,GAAe,AAACF,GAAgB,GACxBA,KACF,wBACD,yBACKb,EAASa,yBAIfvB,GAAS,YACN,UAAU,mCACN,UAAY,wCAAuCD,IAAW,GAAK,+BACnE,MAAM,qBAAM,QAAS,IAAMuB,EAAW,yBAE1CP,EAAY,IAAMhB,EAAS,YACvB,UAAY,sBAAqBA,IAAW,GAAK,8BAA+B,MAAM,IACtF,QAAS,IAAM0B,EAAa,kBAChC1B,EAAS,GAAKgB,EAAY,aACtB,UAAU,8BACV,aAAc,IAAMM,EAAQ,MAC5B,WAAY,IAAMA,EAAQ,sBAC1B,QAAS,IAAMC,EAAW,IAC1B,MAAM,+BACTF,IAIER,iBAAOc,IAAI,CAACpB,EAAQqB,aAEZ,UAAY,sBAAqB5B,IAAWO,GAAK,8BAEjD,MAAOA,EACP,QAAS,IAAMmB,EAAanB,YAC9BA,GAHOqB,IAMhBZ,EAAY,IAAMhB,EAASgB,EAAY,YACnC,UAAU,8BACV,aAAc,IAAMI,EAAO,MAC3B,WAAY,IAAMA,EAAO,sBACzB,QAAS,IAAMG,EAAW,GAC1B,MAAM,+BACTJ,aAGG,UAAY,sBAAqBnB,IAAWgB,GAAa,8BACzD,QAAS,IAAMU,EAAaV,YAAaA,aAE1C,UAAY,0CAAyChB,IAAWgB,GAAa,+BAC7E,MAAM,qBAAM,QAAS,IAAMO,EAAW,iCAErC,UAAU,4BAAWtB,+BAE3B"}