├── lib ├── index.css ├── index.js ├── less │ ├── settings.less │ ├── simple.less │ ├── full.less │ ├── ghost.less │ ├── solid.less │ ├── group.less │ └── index.less ├── createDataDefault.js ├── props.js ├── renderStyleDefault.js ├── render.js ├── template.js └── createData.js ├── .gitignore ├── doc ├── theme │ ├── face │ │ ├── icons │ │ │ └── fonts │ │ │ │ ├── FontAwesome.otf │ │ │ │ ├── fontawesome-webfont.eot │ │ │ │ ├── fontawesome-webfont.ttf │ │ │ │ ├── fontawesome-webfont.woff │ │ │ │ └── fontawesome-webfont.woff2 │ │ └── font │ │ │ ├── y7lebkjgREBJK96VQi37Zgt_Rm691LTebKfY2ZkKSmI.woff2 │ │ │ ├── y7lebkjgREBJK96VQi37Zl4sYYdJg5dU2qzJEVSuta0.woff2 │ │ │ ├── y7lebkjgREBJK96VQi37ZlBW26QxpSj-_ZKm_xT4hWw.woff2 │ │ │ ├── y7lebkjgREBJK96VQi37Zogp9Q8gbYrhqGlRav_IXfk.woff2 │ │ │ ├── y7lebkjgREBJK96VQi37ZqE8kM4xWR1_1bYURRojRGc.woff2 │ │ │ ├── y7lebkjgREBJK96VQi37ZtDiNsR5a-9Oe_Ivpu8XWlY.woff2 │ │ │ ├── y7lebkjgREBJK96VQi37ZvZraR2Tg8w2lzm7kLNL0-w.woff2 │ │ │ └── index.css │ ├── template │ │ ├── post.ejs │ │ ├── home.ejs │ │ └── default.ejs │ ├── head.html │ ├── media │ │ ├── index.html │ │ ├── logo.svg │ │ ├── filter.svg │ │ ├── user.svg │ │ ├── browser-5.svg │ │ ├── keyword.svg │ │ ├── smartphone.svg │ │ ├── loupe.svg │ │ ├── online-shop.svg │ │ ├── browser-4.svg │ │ ├── bar-chart.svg │ │ ├── online-shop-1.svg │ │ ├── mailing.svg │ │ ├── analytics-1.svg │ │ ├── promotion.svg │ │ ├── browser-3.svg │ │ ├── line-chart.svg │ │ ├── browsers-1.svg │ │ ├── search.svg │ │ ├── growth.svg │ │ ├── rating.svg │ │ ├── share.svg │ │ ├── update.svg │ │ ├── aim.svg │ │ ├── browser-1.svg │ │ ├── browser.svg │ │ ├── stats.svg │ │ ├── optimization.svg │ │ ├── laptop.svg │ │ ├── speedometer.svg │ │ ├── ads.svg │ │ └── blog.svg │ ├── foot.html │ └── polyfill │ │ └── es6-promise.auto.js ├── createData.demo.js ├── template.demo.js ├── intro.md ├── sidebar.html └── README.md ├── compile ├── open.js ├── webpack.online.version.config.js ├── getConfig.js ├── webpack.karma.config.js ├── livereload.js ├── deploy-gh.js ├── server.js ├── webpack.online.config.js ├── karma.ci.js ├── karma.conf.js └── webpack.config.js ├── developers-to-read.md ├── README.md ├── package.json └── compile.js /lib/index.css: -------------------------------------------------------------------------------- 1 | @import "./less/index.less"; 2 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | output 3 | npm-debug.log 4 | yarn.lock 5 | .DS_Store 6 | -------------------------------------------------------------------------------- /doc/theme/face/icons/fonts/FontAwesome.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/onface/paging-js/HEAD/doc/theme/face/icons/fonts/FontAwesome.otf -------------------------------------------------------------------------------- /doc/theme/face/icons/fonts/fontawesome-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/onface/paging-js/HEAD/doc/theme/face/icons/fonts/fontawesome-webfont.eot -------------------------------------------------------------------------------- /doc/theme/face/icons/fonts/fontawesome-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/onface/paging-js/HEAD/doc/theme/face/icons/fonts/fontawesome-webfont.ttf -------------------------------------------------------------------------------- /doc/theme/face/icons/fonts/fontawesome-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/onface/paging-js/HEAD/doc/theme/face/icons/fonts/fontawesome-webfont.woff -------------------------------------------------------------------------------- /doc/theme/face/icons/fonts/fontawesome-webfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/onface/paging-js/HEAD/doc/theme/face/icons/fonts/fontawesome-webfont.woff2 -------------------------------------------------------------------------------- /doc/theme/face/font/y7lebkjgREBJK96VQi37Zgt_Rm691LTebKfY2ZkKSmI.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/onface/paging-js/HEAD/doc/theme/face/font/y7lebkjgREBJK96VQi37Zgt_Rm691LTebKfY2ZkKSmI.woff2 -------------------------------------------------------------------------------- /doc/theme/face/font/y7lebkjgREBJK96VQi37Zl4sYYdJg5dU2qzJEVSuta0.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/onface/paging-js/HEAD/doc/theme/face/font/y7lebkjgREBJK96VQi37Zl4sYYdJg5dU2qzJEVSuta0.woff2 -------------------------------------------------------------------------------- /doc/theme/face/font/y7lebkjgREBJK96VQi37ZlBW26QxpSj-_ZKm_xT4hWw.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/onface/paging-js/HEAD/doc/theme/face/font/y7lebkjgREBJK96VQi37ZlBW26QxpSj-_ZKm_xT4hWw.woff2 -------------------------------------------------------------------------------- /doc/theme/face/font/y7lebkjgREBJK96VQi37Zogp9Q8gbYrhqGlRav_IXfk.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/onface/paging-js/HEAD/doc/theme/face/font/y7lebkjgREBJK96VQi37Zogp9Q8gbYrhqGlRav_IXfk.woff2 -------------------------------------------------------------------------------- /doc/theme/face/font/y7lebkjgREBJK96VQi37ZqE8kM4xWR1_1bYURRojRGc.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/onface/paging-js/HEAD/doc/theme/face/font/y7lebkjgREBJK96VQi37ZqE8kM4xWR1_1bYURRojRGc.woff2 -------------------------------------------------------------------------------- /doc/theme/face/font/y7lebkjgREBJK96VQi37ZtDiNsR5a-9Oe_Ivpu8XWlY.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/onface/paging-js/HEAD/doc/theme/face/font/y7lebkjgREBJK96VQi37ZtDiNsR5a-9Oe_Ivpu8XWlY.woff2 -------------------------------------------------------------------------------- /doc/theme/face/font/y7lebkjgREBJK96VQi37ZvZraR2Tg8w2lzm7kLNL0-w.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/onface/paging-js/HEAD/doc/theme/face/font/y7lebkjgREBJK96VQi37ZvZraR2Tg8w2lzm7kLNL0-w.woff2 -------------------------------------------------------------------------------- /compile/open.js: -------------------------------------------------------------------------------- 1 | var open = require("open") 2 | var config = require('./getConfig')() 3 | setTimeout(function () { 4 | open("http://127.0.0.1:" + config.serverPort + '?若不显示则刷新页面') 5 | }, 500) 6 | -------------------------------------------------------------------------------- /lib/index.js: -------------------------------------------------------------------------------- 1 | var output = { 2 | createData: require('./createData'), 3 | render: require('./render'), 4 | template: require('./template') 5 | } 6 | module.exports = output 7 | export default output 8 | -------------------------------------------------------------------------------- /doc/createData.demo.js: -------------------------------------------------------------------------------- 1 | var paging = require('paging') 2 | var jsonFormat = require('json-format') 3 | document.getElementById('dataNode').innerHTML = jsonFormat( 4 | paging.createData({ 5 | page: 1, 6 | pageCount: 20 7 | }) 8 | ) 9 | -------------------------------------------------------------------------------- /compile/webpack.online.version.config.js: -------------------------------------------------------------------------------- 1 | var path = require('path') 2 | var iPackage = require('../package.json') 3 | var webpackConfig = require('./webpack.online.config.js') 4 | webpackConfig.output.path = path.join(__dirname, '../output', iPackage.version) 5 | module.exports = webpackConfig 6 | -------------------------------------------------------------------------------- /compile/getConfig.js: -------------------------------------------------------------------------------- 1 | var hashPort = require('hash-to-port') 2 | var iPackgae = require('../package.json') 3 | module.exports = function () { 4 | return { 5 | serverPort: hashPort('server' + iPackgae.name), 6 | livereloadServerPort: hashPort('livereloadServer' + iPackgae.name) 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /compile/webpack.karma.config.js: -------------------------------------------------------------------------------- 1 | var webpackConfig = require('./webpack.config.js') 2 | webpackConfig = { 3 | module: webpackConfig.module, 4 | devtool: '#inline-source-map', 5 | externals: { 6 | 'react/lib/ExecutionEnvironment': true, 7 | 'react/lib/ReactContext': true 8 | } 9 | } 10 | module.exports = webpackConfig 11 | -------------------------------------------------------------------------------- /lib/less/settings.less: -------------------------------------------------------------------------------- 1 | @face-paging-prefix: face-paging; 2 | @face-paging-text-color: rgba(0, 0, 0, 0.55); 3 | @face-paging-primary-color: #4387fd; 4 | @face-paging-border-color: #d9d9d9; 5 | @face-paging-disabled-text-color: rgba(0, 0, 0, 0.25); 6 | @face-paging-background-color: #f7f7f7; 7 | @face-paging-line-height: 1.8; 8 | @face-pading-focus-color: rgba(98, 164, 239, 0.3); 9 | @face-pading-focus-border-color: #4a99f3; 10 | -------------------------------------------------------------------------------- /doc/template.demo.js: -------------------------------------------------------------------------------- 1 | var paging = require('paging') 2 | paging.render( 3 | { 4 | page: 1, 5 | pageCount: 20 6 | }, 7 | { 8 | template: ''+ 9 | '上一页' + 10 | '{{page}}/{{pageCount}}'+ 11 | '下一页' 12 | }, 13 | document.getElementById('tempalteRenderNode') 14 | ) 15 | 16 | document.getElementById('templateNode').innerHTML = paging.template() 17 | -------------------------------------------------------------------------------- /compile/livereload.js: -------------------------------------------------------------------------------- 1 | var livereload = require('livereload') 2 | var config = require('./getConfig')() 3 | var path = require('path') 4 | var lrserver = livereload.createServer({ 5 | port: config.livereloadServerPort, 6 | delay: 100, 7 | exclusions: [/\\.git\//, /\\.svn\//, /\\.hg\//, /\.js/] 8 | }) 9 | var watchPath = path.join(__dirname, '../output') 10 | lrserver.watch(watchPath) 11 | console.log('Livereload: http://127.0.0.1:' + config.livereloadServerPort + '\n\t' + watchPath) 12 | -------------------------------------------------------------------------------- /compile/deploy-gh.js: -------------------------------------------------------------------------------- 1 | var ghpages = require('gh-pages') 2 | var path = require('path') 3 | var fs = require('fs') 4 | ghpages.publish(path.join(__dirname, '../output'), { 5 | message: 'onface/module auto-generated commit', 6 | logger: function(message) { 7 | console.log(message) 8 | }, 9 | add: true 10 | }, function(err) { 11 | console.log(err) 12 | if (err) {throw err} 13 | console.log('push success') 14 | }); 15 | console.log('git branch gh-pages pushing...') 16 | -------------------------------------------------------------------------------- /lib/createDataDefault.js: -------------------------------------------------------------------------------- 1 | module.exports = function () { 2 | return { 3 | /* 4 | required settings: 5 | Plan A: 6 | page: 1, 7 | pageCount: 11, 8 | Plan B: 9 | page: 1, 10 | pageSize: 10, 11 | dataTotal: 110 12 | */ 13 | prevBatch: 3, 14 | nextBatch: 3, 15 | prevSomePage: 5, 16 | nextSomePage: 5 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /compile/server.js: -------------------------------------------------------------------------------- 1 | var webpack = require('webpack') 2 | var compiler = webpack(require('./webpack.config.js')) 3 | var express = require('express') 4 | var path = require('path') 5 | var app = express(); 6 | require('./livereload.js') 7 | app.use(express.static(path.join(__dirname, '../output'))) 8 | app.use(require("webpack-dev-middleware")(compiler, { 9 | publicPath: '/', 10 | })); 11 | app.use(require("webpack-hot-middleware")(compiler)) 12 | var config = require('./getConfig')() 13 | app.listen(config.serverPort) 14 | -------------------------------------------------------------------------------- /developers-to-read.md: -------------------------------------------------------------------------------- 1 | ## Automated Builds 2 | 3 | You can use travis & saucelabs test your code. 4 | 5 | ### Travis environment Variables 6 | 7 | [travis](https://travis-ci.org/) 8 | 9 |  10 | 11 | ## SAUCE_USERNAME & SAUCE_ACCESS_KEY 12 | 13 | [Saucelabs signup OSS](https://saucelabs.com/beta/signup/OSS/None) 14 | 15 |  16 | -------------------------------------------------------------------------------- /lib/props.js: -------------------------------------------------------------------------------- 1 | import PropTypes from "prop-types-0.2.0" 2 | const createData = { 3 | defaultProps: require('./createDataDefault.js'), 4 | propTypes: { 5 | page: PropTypes.number.isRequired, 6 | pageCount: PropTypes.number, 7 | dataTotal: PropTypes.number, 8 | pageSize: PropTypes.number, 9 | prevBatch: PropTypes.number, 10 | nextBatch: PropTypes.number, 11 | prevSomePage: PropTypes.number, 12 | nextSomePage: PropTypes.number 13 | } 14 | } 15 | module.exports = { 16 | createData: createData 17 | } 18 | -------------------------------------------------------------------------------- /doc/intro.md: -------------------------------------------------------------------------------- 1 | # 指引 2 | 3 | > 使用一个组件或模块之前,应当知道它能解决的问题是什么,不能解决的问题是什么。使用的最佳实践是什么? 4 | 5 | 6 | 分页生成在 Web 开发中非常常见,市面上也存在很多用于生成分页的分页函数。但都难以做到**完全自定义界面**。 7 | 8 | > 这里的完全自定义界面指的是分页生成的 HTML 不限制为 `
|
26 |
27 |
32 | 29 | 定制开发
30 | 提供渲染数据接口便于二次开发
31 | |
33 |
34 |
35 |
40 | 37 | 用户体验
38 | 可配置跳转前/后指定页
39 | |
41 | 42 | 48 | | 49 |
60 |
61 |
62 | 63 | NimoChu
64 |
65 | |
66 |