├── .babelrc ├── .editorconfig ├── .eslintignore ├── .eslintrc.js ├── .gitignore ├── README.md ├── android └── package.apk ├── build ├── build.js ├── check-versions.js ├── dev-client.js ├── dev-server.js ├── utils.js ├── webpack.base.conf.js ├── webpack.dev.conf.js └── webpack.prod.conf.js ├── config ├── dev.env.js ├── index.js └── prod.env.js ├── dist ├── index.html └── static │ ├── css │ ├── app.9c1bc29583ba23d74418dc614111a69b.css │ ├── app.9c1bc29583ba23d74418dc614111a69b.css.map │ └── reset.css │ ├── img │ ├── loading.a16fbec.gif │ └── ring.9de6849.gif │ └── js │ ├── app.c0a9f42f709e0f1489b3.js │ ├── app.c0a9f42f709e0f1489b3.js.map │ ├── manifest.c890dc60da653af3d4c5.js │ ├── manifest.c890dc60da653af3d4c5.js.map │ ├── vendor.dccd940dd61805c5e189.js │ └── vendor.dccd940dd61805c5e189.js.map ├── index.html ├── package.json ├── src ├── App.vue ├── assets │ ├── VSCodeSetup-1.9.1.exe │ ├── about.png │ ├── add_star.png │ ├── enter.png │ ├── error.png │ ├── ewm.png │ ├── good.png │ ├── good_active.png │ ├── head.png │ ├── hire.png │ ├── loading.gif │ ├── login.png │ ├── main.png │ ├── marrow.png │ ├── message.png │ ├── msg.png │ ├── pen.png │ ├── publish.png │ ├── qa.png │ ├── quit.png │ ├── read.png │ ├── reply.png │ ├── ring.gif │ ├── share.png │ ├── star.png │ ├── success.png │ ├── to.png │ ├── to_top.png │ ├── top.png │ ├── view.png │ └── wait_read.png ├── components │ ├── about │ │ └── about.vue │ ├── article │ │ └── articleDetail.vue │ ├── content │ │ └── all.vue │ ├── loading │ │ └── loading.vue │ ├── login │ │ └── login.vue │ ├── message │ │ └── message.vue │ ├── more │ │ └── dialog.vue │ ├── person │ │ └── person.vue │ └── publish │ │ └── publish.vue ├── libs │ ├── style.css │ └── utils.js ├── main.js ├── normal │ ├── style │ │ └── markdown.css │ └── stylus │ │ └── normal.styl └── store │ └── store.js └── static ├── .gitkeep └── css └── reset.css /.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["es2015", "stage-2"], 3 | "plugins": ["transform-runtime"], 4 | "comments": false, 5 | "env": { 6 | "test": { 7 | "plugins": [ "istanbul" ] 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | charset = utf-8 5 | indent_style = space 6 | indent_size = 2 7 | end_of_line = lf 8 | insert_final_newline = true 9 | trim_trailing_whitespace = true 10 | -------------------------------------------------------------------------------- /.eslintignore: -------------------------------------------------------------------------------- 1 | build/*.js 2 | config/*.js 3 | -------------------------------------------------------------------------------- /.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | root: true, 3 | parser: 'babel-eslint', 4 | parserOptions: { 5 | sourceType: 'module' 6 | }, 7 | // https://github.com/feross/standard/blob/master/RULES.md#javascript-standard-style 8 | extends: 'standard', 9 | // required to lint *.vue files 10 | plugins: [ 11 | 'html' 12 | ], 13 | // add your custom rules here 14 | 'rules': { 15 | // allow paren-less arrow functions 16 | 'arrow-parens': 0, 17 | 'no-multiple-empty-lines': 0, 18 | // allow async-await 19 | 'generator-star-spacing': 0, 20 | // allow debugger during development 21 | 'no-debugger': process.env.NODE_ENV === 'production' ? 2 : 0 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules/ 3 | npm-debug.log 4 | .idea/ 5 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # vue-cnode 2 | 3 | > A Vue.js project base on cnode.org api 4 | 5 | > 项目开发中,一个基于cnode社区api的vue 2.0应用 6 | 7 | > 主要依赖: vue-router/axios/mint-ui/marked 8 | 9 | > axios代替vue-resource成为一代新宠,不得不学 10 | 11 | > mint-ui作为新一代的UI库,基于vue深度定制,值得一用 12 | 13 | > 预期功能: 14 | > * 各模块贴子的浏览 √ 15 | > * 登陆及退出 √ 16 | > * 回帖,顶帖 √ 17 | > * 待续 18 | 19 | 20 | 已打包为android app [点击下载](http://fengfu.space/vue-cnode/android/package.apk) 21 | 22 | ## Build Setup 23 | 24 | ``` bash 25 | # install dependencies 26 | npm install 27 | 28 | # serve with hot reload at localhost:8888 29 | npm run dev 30 | 31 | # build for production with minification 32 | npm run build 33 | cd dist 34 | open index.html in a server. 35 | ``` 36 | 37 | For detailed explanation on how things work, checkout the [guide](http://vuejs-templates.github.io/webpack/) and [docs for vue-loader](http://vuejs.github.io/vue-loader). 38 | 39 | 40 | # 基于vue.js的cnode社区 41 | 42 | ### 分享 43 | 44 | [线上预览](http://fengfu.space/vue-cnode/dist/index.html) 45 | 46 | [android App](http://fengfu.space/vue-cnode/android/package.apk) 47 | 48 | [github 地址](https://github.com/feng-fu/vue-cnode) 49 | 50 | 厚着脸皮来要个star 51 | 52 | ### 缘起 53 | 一直想着学习一个框架,现阶段而言,最火的框架到该就是vue.js,angular和React了,前前后后纠结了一阵,终于从入门到放弃了几次之后,痛定思痛把目光放在vue.js上,虽不能说真的学会了,但是终归还是能够写出一个入不了法眼的东西来了,就顺便着记一下这过程中学过的东西吧,也算是给自己的一个总结。 54 | 55 | ### 初步 56 | 学一个东西,最好的教材当然是它的官方文档,并且对于vue而言,可能是拥有最完整中文社区的框架了吧,按着教程一步步的走过一遍之后还是有了一个初步的理解,有时候总想着去找一些博客看看,最后发现这些博客还不都是对这官方文档的依葫芦画瓢,甚至有的还画的不那么真切,所以静下心来画个两个晚上的时间将所有的例子都是先一遍,这真的就算是入门了啊。 57 | 58 | ### 巧遇 59 | 60 | 都说学一个东西最好的方式就是实践,所以纸上谈兵想来不受人待见,这也不是没有道理的事情,至少来说,在自己一次次的摸索中,可以发现自己所欠缺的东西,这时候恰巧可而去学一学,说不定下次再用到的时候就变得的心应手了,这不,可能你和我一样,在看上面例子的时候自己已经厌倦,甚至都不能快乐的将全部的内容看完,更别说全部敲上一遍了(到这里顺便鄙视一波在上弥漫说让别人画两个晚上敲完例子的自己,毕竟自己都没有这个闲心),闲时总喜欢逛逛gayhub,看看有什么好的东西,可以顺便练练手什么的,到这里总算说道正题了,这不,搜到了一个基于cnode社区api的项目,这下可算是如获至宝了。 61 | 62 | ### 实践 63 | 64 | 我发现自己正在将一个技术分享帖往闲碎小说的方向发展,接下来终于使正题了,在这里呢,我选用了可算是现阶段的vue.js全家桶,包括vue 2.0 vue-router axios vuex这几项东西,然后选择了mint-ui作为懒得写样式和不会设计的自己的一个替代品,开始了这个随性而起的项目。 65 | 66 | 既然提到用到这些技术,当然用到了它们的招牌功能,可能有人说不该用到vuex,那不就说图个新鲜嘛,刚学的心情不都想着要全部实践一番,最后用Cordova进行了打包,这里只有android App,到现在我都还没搞明白打包成IOS App需要什么样的条件,我还以为只要我在模拟器中能跑起来就能找到安装包,看来还是我自己太天真,毕竟我没有苹果的开发者账号。 67 | -------------------------------------------------------------------------------- /android/package.apk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/feng-fu/vue-cnode/4694a41849b123fd6ad2eb4492d8ac2f121138b5/android/package.apk -------------------------------------------------------------------------------- /build/build.js: -------------------------------------------------------------------------------- 1 | // https://github.com/shelljs/shelljs 2 | require('./check-versions')() 3 | require('shelljs/global') 4 | env.NODE_ENV = 'production' 5 | 6 | var path = require('path') 7 | var config = require('../config') 8 | var ora = require('ora') 9 | var webpack = require('webpack') 10 | var webpackConfig = require('./webpack.prod.conf') 11 | 12 | console.log( 13 | ' Tip:\n' + 14 | ' Built files are meant to be served over an HTTP server.\n' + 15 | ' Opening index.html over file:// won\'t work.\n' 16 | ) 17 | 18 | var spinner = ora('building for production...') 19 | spinner.start() 20 | 21 | var assetsPath = path.join(config.build.assetsRoot, config.build.assetsSubDirectory) 22 | rm('-rf', assetsPath) 23 | mkdir('-p', assetsPath) 24 | cp('-R', 'static/*', assetsPath) 25 | 26 | webpack(webpackConfig, function (err, stats) { 27 | spinner.stop() 28 | if (err) throw err 29 | process.stdout.write(stats.toString({ 30 | colors: true, 31 | modules: false, 32 | children: false, 33 | chunks: false, 34 | chunkModules: false 35 | }) + '\n') 36 | }) 37 | -------------------------------------------------------------------------------- /build/check-versions.js: -------------------------------------------------------------------------------- 1 | var semver = require('semver') 2 | var chalk = require('chalk') 3 | var packageConfig = require('../package.json') 4 | var exec = function (cmd) { 5 | return require('child_process') 6 | .execSync(cmd).toString().trim() 7 | } 8 | 9 | var versionRequirements = [ 10 | { 11 | name: 'node', 12 | currentVersion: semver.clean(process.version), 13 | versionRequirement: packageConfig.engines.node 14 | }, 15 | { 16 | name: 'npm', 17 | currentVersion: exec('npm --version'), 18 | versionRequirement: packageConfig.engines.npm 19 | } 20 | ] 21 | 22 | module.exports = function () { 23 | var warnings = [] 24 | for (var i = 0; i < versionRequirements.length; i++) { 25 | var mod = versionRequirements[i] 26 | if (!semver.satisfies(mod.currentVersion, mod.versionRequirement)) { 27 | warnings.push(mod.name + ': ' + 28 | chalk.red(mod.currentVersion) + ' should be ' + 29 | chalk.green(mod.versionRequirement) 30 | ) 31 | } 32 | } 33 | 34 | if (warnings.length) { 35 | console.log('') 36 | console.log(chalk.yellow('To use this template, you must update following to modules:')) 37 | console.log() 38 | for (var i = 0; i < warnings.length; i++) { 39 | var warning = warnings[i] 40 | console.log(' ' + warning) 41 | } 42 | console.log() 43 | process.exit(1) 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /build/dev-client.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | require('eventsource-polyfill') 3 | var hotClient = require('webpack-hot-middleware/client?noInfo=true&reload=true') 4 | 5 | hotClient.subscribe(function (event) { 6 | if (event.action === 'reload') { 7 | window.location.reload() 8 | } 9 | }) 10 | -------------------------------------------------------------------------------- /build/dev-server.js: -------------------------------------------------------------------------------- 1 | require('./check-versions')() 2 | var config = require('../config') 3 | if (!process.env.NODE_ENV) process.env.NODE_ENV = JSON.parse(config.dev.env.NODE_ENV) 4 | var path = require('path') 5 | var express = require('express') 6 | var webpack = require('webpack') 7 | var opn = require('opn') 8 | var proxyMiddleware = require('http-proxy-middleware') 9 | var webpackConfig = require('./webpack.dev.conf') 10 | 11 | // default port where dev server listens for incoming traffic 12 | var port = process.env.PORT || config.dev.port 13 | // Define HTTP proxies to your custom API backend 14 | // https://github.com/chimurai/http-proxy-middleware 15 | var proxyTable = config.dev.proxyTable 16 | 17 | var app = express() 18 | var compiler = webpack(webpackConfig) 19 | 20 | var devMiddleware = require('webpack-dev-middleware')(compiler, { 21 | publicPath: webpackConfig.output.publicPath, 22 | quiet: true 23 | }) 24 | 25 | var hotMiddleware = require('webpack-hot-middleware')(compiler, { 26 | log: () => {} 27 | }) 28 | // force page reload when html-webpack-plugin template changes 29 | compiler.plugin('compilation', function (compilation) { 30 | compilation.plugin('html-webpack-plugin-after-emit', function (data, cb) { 31 | hotMiddleware.publish({ action: 'reload' }) 32 | cb() 33 | }) 34 | }) 35 | 36 | // proxy api requests 37 | Object.keys(proxyTable).forEach(function (context) { 38 | var options = proxyTable[context] 39 | if (typeof options === 'string') { 40 | options = { target: options } 41 | } 42 | app.use(proxyMiddleware(context, options)) 43 | }) 44 | 45 | // handle fallback for HTML5 history API 46 | app.use(require('connect-history-api-fallback')()) 47 | 48 | // serve webpack bundle output 49 | app.use(devMiddleware) 50 | 51 | // enable hot-reload and state-preserving 52 | // compilation error display 53 | app.use(hotMiddleware) 54 | 55 | // serve pure static assets 56 | var staticPath = path.posix.join(config.dev.assetsPublicPath, config.dev.assetsSubDirectory) 57 | app.use(staticPath, express.static('./static')) 58 | 59 | var uri = 'http://localhost:' + port 60 | 61 | devMiddleware.waitUntilValid(function () { 62 | console.log('> Listening at ' + uri + '\n') 63 | }) 64 | 65 | module.exports = app.listen(port, function (err) { 66 | if (err) { 67 | console.log(err) 68 | return 69 | } 70 | 71 | // when env is testing, don't need open it 72 | if (process.env.NODE_ENV !== 'testing') { 73 | opn(uri) 74 | } 75 | }) 76 | -------------------------------------------------------------------------------- /build/utils.js: -------------------------------------------------------------------------------- 1 | var path = require('path') 2 | var config = require('../config') 3 | var ExtractTextPlugin = require('extract-text-webpack-plugin') 4 | 5 | exports.assetsPath = function (_path) { 6 | var assetsSubDirectory = process.env.NODE_ENV === 'production' 7 | ? config.build.assetsSubDirectory 8 | : config.dev.assetsSubDirectory 9 | return path.posix.join(assetsSubDirectory, _path) 10 | } 11 | 12 | exports.cssLoaders = function (options) { 13 | options = options || {} 14 | // generate loader string to be used with extract text plugin 15 | function generateLoaders (loaders) { 16 | var sourceLoader = loaders.map(function (loader) { 17 | var extraParamChar 18 | if (/\?/.test(loader)) { 19 | loader = loader.replace(/\?/, '-loader?') 20 | extraParamChar = '&' 21 | } else { 22 | loader = loader + '-loader' 23 | extraParamChar = '?' 24 | } 25 | return loader + (options.sourceMap ? extraParamChar + 'sourceMap' : '') 26 | }).join('!') 27 | 28 | // Extract CSS when that option is specified 29 | // (which is the case during production build) 30 | if (options.extract) { 31 | return ExtractTextPlugin.extract('vue-style-loader', sourceLoader) 32 | } else { 33 | return ['vue-style-loader', sourceLoader].join('!') 34 | } 35 | } 36 | 37 | // http://vuejs.github.io/vue-loader/en/configurations/extract-css.html 38 | return { 39 | css: generateLoaders(['css']), 40 | postcss: generateLoaders(['css']), 41 | less: generateLoaders(['css', 'less']), 42 | sass: generateLoaders(['css', 'sass?indentedSyntax']), 43 | scss: generateLoaders(['css', 'sass']), 44 | stylus: generateLoaders(['css', 'stylus']), 45 | styl: generateLoaders(['css', 'stylus']) 46 | } 47 | } 48 | 49 | // Generate loaders for standalone style files (outside of .vue) 50 | exports.styleLoaders = function (options) { 51 | var output = [] 52 | var loaders = exports.cssLoaders(options) 53 | for (var extension in loaders) { 54 | var loader = loaders[extension] 55 | output.push({ 56 | test: new RegExp('\\.' + extension + '$'), 57 | loader: loader 58 | }) 59 | } 60 | return output 61 | } 62 | -------------------------------------------------------------------------------- /build/webpack.base.conf.js: -------------------------------------------------------------------------------- 1 | var path = require('path') 2 | var config = require('../config') 3 | var utils = require('./utils') 4 | var projectRoot = path.resolve(__dirname, '../') 5 | 6 | var env = process.env.NODE_ENV 7 | // check env & config/index.js to decide whether to enable CSS source maps for the 8 | // various preprocessor loaders added to vue-loader at the end of this file 9 | var cssSourceMapDev = (env === 'development' && config.dev.cssSourceMap) 10 | var cssSourceMapProd = (env === 'production' && config.build.productionSourceMap) 11 | var useCssSourceMap = cssSourceMapDev || cssSourceMapProd 12 | 13 | module.exports = { 14 | entry: { 15 | app: './src/main.js' 16 | }, 17 | output: { 18 | path: config.build.assetsRoot, 19 | publicPath: process.env.NODE_ENV === 'production' ? config.build.assetsPublicPath : config.dev.assetsPublicPath, 20 | filename: '[name].js' 21 | }, 22 | resolve: { 23 | extensions: ['', '.js', '.vue', '.json'], 24 | fallback: [path.join(__dirname, '../node_modules')], 25 | alias: { 26 | 'vue$': 'vue/dist/vue.common.js', 27 | 'src': path.resolve(__dirname, '../src'), 28 | 'assets': path.resolve(__dirname, '../src/assets'), 29 | 'components': path.resolve(__dirname, '../src/components') 30 | } 31 | }, 32 | resolveLoader: { 33 | fallback: [path.join(__dirname, '../node_modules')] 34 | }, 35 | module: { 36 | preLoaders: [ 37 | { 38 | test: /\.vue$/, 39 | loader: 'eslint', 40 | include: [ 41 | path.join(projectRoot, 'src') 42 | ], 43 | exclude: /node_modules/ 44 | }, 45 | { 46 | test: /\.js$/, 47 | loader: 'eslint', 48 | include: [ 49 | path.join(projectRoot, 'src') 50 | ], 51 | exclude: /node_modules/ 52 | } 53 | ], 54 | loaders: [ 55 | { 56 | test: /\.vue$/, 57 | loader: 'vue' 58 | }, 59 | { 60 | test: /\.js$/, 61 | loader: 'babel', 62 | include: [ 63 | path.join(projectRoot, 'src') 64 | ], 65 | exclude: /node_modules/ 66 | }, 67 | { 68 | test: /\.json$/, 69 | loader: 'json' 70 | }, 71 | { 72 | test: /\.(png|jpe?g|gif|svg)(\?.*)?$/, 73 | loader: 'url', 74 | query: { 75 | limit: 10000, 76 | name: utils.assetsPath('/img/[name].[hash:7].[ext]') 77 | } 78 | }, 79 | { 80 | test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/, 81 | loader: 'url', 82 | query: { 83 | limit: 10000, 84 | name: utils.assetsPath('./fonts/[name].[hash:7].[ext]') 85 | } 86 | } 87 | ] 88 | }, 89 | eslint: { 90 | formatter: require('eslint-friendly-formatter') 91 | }, 92 | vue: { 93 | loaders: utils.cssLoaders({ sourceMap: useCssSourceMap }), 94 | postcss: [ 95 | require('autoprefixer')({ 96 | browsers: ['last 2 versions'] 97 | }) 98 | ] 99 | } 100 | } 101 | -------------------------------------------------------------------------------- /build/webpack.dev.conf.js: -------------------------------------------------------------------------------- 1 | var config = require('../config') 2 | var webpack = require('webpack') 3 | var merge = require('webpack-merge') 4 | var utils = require('./utils') 5 | var baseWebpackConfig = require('./webpack.base.conf') 6 | var HtmlWebpackPlugin = require('html-webpack-plugin') 7 | var FriendlyErrors = require('friendly-errors-webpack-plugin') 8 | 9 | // add hot-reload related code to entry chunks 10 | Object.keys(baseWebpackConfig.entry).forEach(function (name) { 11 | baseWebpackConfig.entry[name] = ['./build/dev-client'].concat(baseWebpackConfig.entry[name]) 12 | }) 13 | 14 | module.exports = merge(baseWebpackConfig, { 15 | module: { 16 | loaders: utils.styleLoaders({ sourceMap: config.dev.cssSourceMap }) 17 | }, 18 | // eval-source-map is faster for development 19 | devtool: '#eval-source-map', 20 | plugins: [ 21 | new webpack.DefinePlugin({ 22 | 'process.env': config.dev.env 23 | }), 24 | // https://github.com/glenjamin/webpack-hot-middleware#installation--usage 25 | new webpack.optimize.OccurrenceOrderPlugin(), 26 | new webpack.HotModuleReplacementPlugin(), 27 | new webpack.NoErrorsPlugin(), 28 | // https://github.com/ampedandwired/html-webpack-plugin 29 | new HtmlWebpackPlugin({ 30 | filename: 'index.html', 31 | template: 'index.html', 32 | inject: true 33 | }), 34 | new FriendlyErrors() 35 | ] 36 | }) 37 | -------------------------------------------------------------------------------- /build/webpack.prod.conf.js: -------------------------------------------------------------------------------- 1 | var path = require('path') 2 | var config = require('../config') 3 | var utils = require('./utils') 4 | var webpack = require('webpack') 5 | var merge = require('webpack-merge') 6 | var baseWebpackConfig = require('./webpack.base.conf') 7 | var ExtractTextPlugin = require('extract-text-webpack-plugin') 8 | var HtmlWebpackPlugin = require('html-webpack-plugin') 9 | var env = config.build.env 10 | 11 | var webpackConfig = merge(baseWebpackConfig, { 12 | module: { 13 | loaders: utils.styleLoaders({ sourceMap: config.build.productionSourceMap, extract: true }) 14 | }, 15 | devtool: config.build.productionSourceMap ? '#source-map' : false, 16 | output: { 17 | path: config.build.assetsRoot, 18 | filename: utils.assetsPath('js/[name].[chunkhash].js'), 19 | chunkFilename: utils.assetsPath('js/[id].[chunkhash].js') 20 | }, 21 | vue: { 22 | loaders: utils.cssLoaders({ 23 | sourceMap: config.build.productionSourceMap, 24 | extract: true 25 | }) 26 | }, 27 | plugins: [ 28 | // http://vuejs.github.io/vue-loader/en/workflow/production.html 29 | new webpack.DefinePlugin({ 30 | 'process.env': env 31 | }), 32 | new webpack.optimize.UglifyJsPlugin({ 33 | compress: { 34 | warnings: false 35 | } 36 | }), 37 | new webpack.optimize.OccurrenceOrderPlugin(), 38 | // extract css into its own file 39 | new ExtractTextPlugin(utils.assetsPath('css/[name].[contenthash].css')), 40 | // generate dist index.html with correct asset hash for caching. 41 | // you can customize output by editing /index.html 42 | // see https://github.com/ampedandwired/html-webpack-plugin 43 | new HtmlWebpackPlugin({ 44 | filename: config.build.index, 45 | template: 'index.html', 46 | inject: true, 47 | minify: { 48 | removeComments: true, 49 | collapseWhitespace: true, 50 | removeAttributeQuotes: true 51 | // more options: 52 | // https://github.com/kangax/html-minifier#options-quick-reference 53 | }, 54 | // necessary to consistently work with multiple chunks via CommonsChunkPlugin 55 | chunksSortMode: 'dependency' 56 | }), 57 | // split vendor js into its own file 58 | new webpack.optimize.CommonsChunkPlugin({ 59 | name: 'vendor', 60 | minChunks: function (module, count) { 61 | // any required modules inside node_modules are extracted to vendor 62 | return ( 63 | module.resource && 64 | /\.js$/.test(module.resource) && 65 | module.resource.indexOf( 66 | path.join(__dirname, '../node_modules') 67 | ) === 0 68 | ) 69 | } 70 | }), 71 | // extract webpack runtime and module manifest to its own file in order to 72 | // prevent vendor hash from being updated whenever app bundle is updated 73 | new webpack.optimize.CommonsChunkPlugin({ 74 | name: 'manifest', 75 | chunks: ['vendor'] 76 | }) 77 | ] 78 | }) 79 | 80 | if (config.build.productionGzip) { 81 | var CompressionWebpackPlugin = require('compression-webpack-plugin') 82 | 83 | webpackConfig.plugins.push( 84 | new CompressionWebpackPlugin({ 85 | asset: '[path].gz[query]', 86 | algorithm: 'gzip', 87 | test: new RegExp( 88 | '\\.(' + 89 | config.build.productionGzipExtensions.join('|') + 90 | ')$' 91 | ), 92 | threshold: 10240, 93 | minRatio: 0.8 94 | }) 95 | ) 96 | } 97 | 98 | module.exports = webpackConfig 99 | -------------------------------------------------------------------------------- /config/dev.env.js: -------------------------------------------------------------------------------- 1 | var merge = require('webpack-merge') 2 | var prodEnv = require('./prod.env') 3 | 4 | module.exports = merge(prodEnv, { 5 | NODE_ENV: '"development"' 6 | }) 7 | -------------------------------------------------------------------------------- /config/index.js: -------------------------------------------------------------------------------- 1 | // see http://vuejs-templates.github.io/webpack for documentation. 2 | var path = require('path') 3 | 4 | module.exports = { 5 | build: { 6 | env: require('./prod.env'), 7 | index: path.resolve(__dirname, '../dist/index.html'), 8 | assetsRoot: path.resolve(__dirname, '../dist'), 9 | assetsSubDirectory: 'static', 10 | assetsPublicPath: '/', 11 | productionSourceMap: true, 12 | // Gzip off by default as many popular static hosts such as 13 | // Surge or Netlify already gzip all static assets for you. 14 | // Before setting to `true`, make sure to: 15 | // npm install --save-dev compression-webpack-plugin 16 | productionGzip: false, 17 | productionGzipExtensions: ['js', 'css'] 18 | }, 19 | dev: { 20 | env: require('./dev.env'), 21 | port: 8888, 22 | assetsSubDirectory: 'static', 23 | assetsPublicPath: '/', 24 | proxyTable: {}, 25 | // CSS Sourcemaps off by default because relative paths are "buggy" 26 | // with this option, according to the CSS-Loader README 27 | // (https://github.com/webpack/css-loader#sourcemaps) 28 | // In our experience, they generally work as expected, 29 | // just be aware of this issue when enabling this option. 30 | cssSourceMap: false 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /config/prod.env.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | NODE_ENV: '"production"' 3 | } 4 | -------------------------------------------------------------------------------- /dist/index.html: -------------------------------------------------------------------------------- 1 | vue-cnode
-------------------------------------------------------------------------------- /dist/static/css/reset.css: -------------------------------------------------------------------------------- 1 | /** 2 | * Eric Meyer's Reset CSS v2.0 (http://meyerweb.com/eric/tools/css/reset/) 3 | * http://cssreset.com 4 | */ 5 | html, body, div, span, applet, object, iframe, 6 | h1, h2, h3, h4, h5, h6, p, blockquote, pre, 7 | a, abbr, acronym, address, big, cite, code, 8 | del, dfn, em, img, ins, kbd, q, s, samp, 9 | small, strike, strong, sub, sup, tt, var, 10 | b, u, i, center, 11 | dl, dt, dd, ol, ul, li, 12 | fieldset, form, label, legend, 13 | table, caption, tbody, tfoot, thead, tr, th, td, 14 | article, aside, canvas, details, embed, 15 | figure, figcaption, footer, header, 16 | menu, nav, output, ruby, section, summary, 17 | time, mark, audio, video, input { 18 | margin: 0; 19 | padding: 0; 20 | border: 0; 21 | font-size: 100%; 22 | font-weight: normal; 23 | vertical-align: baseline; 24 | } 25 | 26 | /* HTML5 display-role reset for older browsers */ 27 | article, aside, details, figcaption, figure, 28 | footer, header, menu, nav, section { 29 | display: block; 30 | } 31 | 32 | body { 33 | line-height: 1; 34 | font-family: SF UI Display,Arial,PingFang SC,Hiragino Sans GB,Microsoft YaHei,WenQuanYi Micro Hei,sans-serif; 35 | } 36 | 37 | blockquote, q { 38 | quotes: none; 39 | } 40 | 41 | blockquote:before, blockquote:after, 42 | q:before, q:after { 43 | content: none; 44 | } 45 | 46 | table { 47 | border-collapse: collapse; 48 | border-spacing: 0; 49 | } 50 | 51 | /* custom */ 52 | a { 53 | color: #7e8c8d; 54 | text-decoration: none; 55 | -webkit-backface-visibility: hidden; 56 | } 57 | 58 | li { 59 | list-style: none; 60 | } 61 | 62 | ::-webkit-scrollbar { 63 | width: 5px; 64 | height: 5px; 65 | } 66 | 67 | ::-webkit-scrollbar-track-piece { 68 | background-color: rgba(0, 0, 0, 0.2); 69 | -webkit-border-radius: 6px; 70 | } 71 | 72 | ::-webkit-scrollbar-thumb:vertical { 73 | height: 5px; 74 | background-color: rgba(125, 125, 125, 0.7); 75 | -webkit-border-radius: 6px; 76 | } 77 | 78 | ::-webkit-scrollbar-thumb:horizontal { 79 | width: 5px; 80 | background-color: rgba(125, 125, 125, 0.7); 81 | -webkit-border-radius: 6px; 82 | } 83 | 84 | html, body { 85 | width: 100%; 86 | } 87 | 88 | body { 89 | -webkit-text-size-adjust: none; 90 | -webkit-tap-highlight-color: rgba(0, 0, 0, 0); 91 | } 92 | 93 | .clearfix:after { 94 | content: ''; 95 | display: block; 96 | clear: both; 97 | } 98 | -------------------------------------------------------------------------------- /dist/static/img/loading.a16fbec.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/feng-fu/vue-cnode/4694a41849b123fd6ad2eb4492d8ac2f121138b5/dist/static/img/loading.a16fbec.gif -------------------------------------------------------------------------------- /dist/static/img/ring.9de6849.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/feng-fu/vue-cnode/4694a41849b123fd6ad2eb4492d8ac2f121138b5/dist/static/img/ring.9de6849.gif -------------------------------------------------------------------------------- /dist/static/js/manifest.c890dc60da653af3d4c5.js: -------------------------------------------------------------------------------- 1 | !function(e){function t(n){if(r[n])return r[n].exports;var a=r[n]={exports:{},id:n,loaded:!1};return e[n].call(a.exports,a,a.exports,t),a.loaded=!0,a.exports}var n=window.webpackJsonp;window.webpackJsonp=function(c,o){for(var p,s,l=0,i=[];l 2 | 3 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | vue-cnode 51 | 52 | 53 | 54 |
55 | 56 | 66 | 67 | 68 | 69 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "vue-cnode", 3 | "version": "1.0.0", 4 | "description": "A Vue.js project", 5 | "author": "duocai", 6 | "private": true, 7 | "scripts": { 8 | "dev": "node build/dev-server.js", 9 | "build": "node build/build.js", 10 | "lint": "eslint --ext .js,.vue src" 11 | }, 12 | "dependencies": { 13 | "axios": "^0.15.3", 14 | "marked": "^0.3.6", 15 | "mint-ui": "^2.1.0", 16 | "vue": "^2.1.0", 17 | "vue-axios": "^1.2.2", 18 | "vue-router": "^2.1.0", 19 | "vuex": "^2.1.1" 20 | }, 21 | "devDependencies": { 22 | "autoprefixer": "^6.4.0", 23 | "stylus": "^0.54.5", 24 | "stylus-loader": "^2.1.1", 25 | "babel-core": "^6.0.0", 26 | "babel-eslint": "^7.0.0", 27 | "babel-loader": "^6.0.0", 28 | "babel-plugin-transform-runtime": "^6.0.0", 29 | "babel-preset-es2015": "^6.0.0", 30 | "babel-preset-stage-2": "^6.0.0", 31 | "babel-register": "^6.0.0", 32 | "chalk": "^1.1.3", 33 | "connect-history-api-fallback": "^1.1.0", 34 | "css-loader": "^0.25.0", 35 | "eslint": "^3.7.1", 36 | "eslint-friendly-formatter": "^2.0.5", 37 | "eslint-loader": "^1.5.0", 38 | "eslint-plugin-html": "^1.3.0", 39 | "eslint-config-standard": "^6.1.0", 40 | "eslint-plugin-promise": "^3.4.0", 41 | "eslint-plugin-standard": "^2.0.1", 42 | "eventsource-polyfill": "^0.9.6", 43 | "express": "^4.13.3", 44 | "extract-text-webpack-plugin": "^1.0.1", 45 | "file-loader": "^0.9.0", 46 | "friendly-errors-webpack-plugin": "^1.1.2", 47 | "function-bind": "^1.0.2", 48 | "html-webpack-plugin": "^2.8.1", 49 | "http-proxy-middleware": "^0.17.2", 50 | "json-loader": "^0.5.4", 51 | "semver": "^5.3.0", 52 | "opn": "^4.0.2", 53 | "ora": "^0.3.0", 54 | "shelljs": "^0.7.4", 55 | "url-loader": "^0.5.7", 56 | "vue-loader": "^10.0.0", 57 | "vue-style-loader": "^1.0.0", 58 | "vue-template-compiler": "^2.1.0", 59 | "webpack": "^1.13.2", 60 | "webpack-dev-middleware": "^1.8.3", 61 | "webpack-hot-middleware": "^2.12.2", 62 | "webpack-merge": "^0.14.1" 63 | }, 64 | "engines": { 65 | "node": ">= 4.0.0", 66 | "npm": ">= 3.0.0" 67 | } 68 | } 69 | -------------------------------------------------------------------------------- /src/App.vue: -------------------------------------------------------------------------------- 1 | 8 | 9 | 19 | 20 | 32 | -------------------------------------------------------------------------------- /src/assets/VSCodeSetup-1.9.1.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/feng-fu/vue-cnode/4694a41849b123fd6ad2eb4492d8ac2f121138b5/src/assets/VSCodeSetup-1.9.1.exe -------------------------------------------------------------------------------- /src/assets/about.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/feng-fu/vue-cnode/4694a41849b123fd6ad2eb4492d8ac2f121138b5/src/assets/about.png -------------------------------------------------------------------------------- /src/assets/add_star.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/feng-fu/vue-cnode/4694a41849b123fd6ad2eb4492d8ac2f121138b5/src/assets/add_star.png -------------------------------------------------------------------------------- /src/assets/enter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/feng-fu/vue-cnode/4694a41849b123fd6ad2eb4492d8ac2f121138b5/src/assets/enter.png -------------------------------------------------------------------------------- /src/assets/error.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/feng-fu/vue-cnode/4694a41849b123fd6ad2eb4492d8ac2f121138b5/src/assets/error.png -------------------------------------------------------------------------------- /src/assets/ewm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/feng-fu/vue-cnode/4694a41849b123fd6ad2eb4492d8ac2f121138b5/src/assets/ewm.png -------------------------------------------------------------------------------- /src/assets/good.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/feng-fu/vue-cnode/4694a41849b123fd6ad2eb4492d8ac2f121138b5/src/assets/good.png -------------------------------------------------------------------------------- /src/assets/good_active.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/feng-fu/vue-cnode/4694a41849b123fd6ad2eb4492d8ac2f121138b5/src/assets/good_active.png -------------------------------------------------------------------------------- /src/assets/head.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/feng-fu/vue-cnode/4694a41849b123fd6ad2eb4492d8ac2f121138b5/src/assets/head.png -------------------------------------------------------------------------------- /src/assets/hire.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/feng-fu/vue-cnode/4694a41849b123fd6ad2eb4492d8ac2f121138b5/src/assets/hire.png -------------------------------------------------------------------------------- /src/assets/loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/feng-fu/vue-cnode/4694a41849b123fd6ad2eb4492d8ac2f121138b5/src/assets/loading.gif -------------------------------------------------------------------------------- /src/assets/login.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/feng-fu/vue-cnode/4694a41849b123fd6ad2eb4492d8ac2f121138b5/src/assets/login.png -------------------------------------------------------------------------------- /src/assets/main.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/feng-fu/vue-cnode/4694a41849b123fd6ad2eb4492d8ac2f121138b5/src/assets/main.png -------------------------------------------------------------------------------- /src/assets/marrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/feng-fu/vue-cnode/4694a41849b123fd6ad2eb4492d8ac2f121138b5/src/assets/marrow.png -------------------------------------------------------------------------------- /src/assets/message.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/feng-fu/vue-cnode/4694a41849b123fd6ad2eb4492d8ac2f121138b5/src/assets/message.png -------------------------------------------------------------------------------- /src/assets/msg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/feng-fu/vue-cnode/4694a41849b123fd6ad2eb4492d8ac2f121138b5/src/assets/msg.png -------------------------------------------------------------------------------- /src/assets/pen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/feng-fu/vue-cnode/4694a41849b123fd6ad2eb4492d8ac2f121138b5/src/assets/pen.png -------------------------------------------------------------------------------- /src/assets/publish.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/feng-fu/vue-cnode/4694a41849b123fd6ad2eb4492d8ac2f121138b5/src/assets/publish.png -------------------------------------------------------------------------------- /src/assets/qa.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/feng-fu/vue-cnode/4694a41849b123fd6ad2eb4492d8ac2f121138b5/src/assets/qa.png -------------------------------------------------------------------------------- /src/assets/quit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/feng-fu/vue-cnode/4694a41849b123fd6ad2eb4492d8ac2f121138b5/src/assets/quit.png -------------------------------------------------------------------------------- /src/assets/read.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/feng-fu/vue-cnode/4694a41849b123fd6ad2eb4492d8ac2f121138b5/src/assets/read.png -------------------------------------------------------------------------------- /src/assets/reply.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/feng-fu/vue-cnode/4694a41849b123fd6ad2eb4492d8ac2f121138b5/src/assets/reply.png -------------------------------------------------------------------------------- /src/assets/ring.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/feng-fu/vue-cnode/4694a41849b123fd6ad2eb4492d8ac2f121138b5/src/assets/ring.gif -------------------------------------------------------------------------------- /src/assets/share.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/feng-fu/vue-cnode/4694a41849b123fd6ad2eb4492d8ac2f121138b5/src/assets/share.png -------------------------------------------------------------------------------- /src/assets/star.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/feng-fu/vue-cnode/4694a41849b123fd6ad2eb4492d8ac2f121138b5/src/assets/star.png -------------------------------------------------------------------------------- /src/assets/success.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/feng-fu/vue-cnode/4694a41849b123fd6ad2eb4492d8ac2f121138b5/src/assets/success.png -------------------------------------------------------------------------------- /src/assets/to.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/feng-fu/vue-cnode/4694a41849b123fd6ad2eb4492d8ac2f121138b5/src/assets/to.png -------------------------------------------------------------------------------- /src/assets/to_top.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/feng-fu/vue-cnode/4694a41849b123fd6ad2eb4492d8ac2f121138b5/src/assets/to_top.png -------------------------------------------------------------------------------- /src/assets/top.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/feng-fu/vue-cnode/4694a41849b123fd6ad2eb4492d8ac2f121138b5/src/assets/top.png -------------------------------------------------------------------------------- /src/assets/view.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/feng-fu/vue-cnode/4694a41849b123fd6ad2eb4492d8ac2f121138b5/src/assets/view.png -------------------------------------------------------------------------------- /src/assets/wait_read.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/feng-fu/vue-cnode/4694a41849b123fd6ad2eb4492d8ac2f121138b5/src/assets/wait_read.png -------------------------------------------------------------------------------- /src/components/about/about.vue: -------------------------------------------------------------------------------- 1 | 19 | 20 | 31 | 53 | -------------------------------------------------------------------------------- /src/components/article/articleDetail.vue: -------------------------------------------------------------------------------- 1 | 43 | 44 | 185 | 186 | 290 | -------------------------------------------------------------------------------- /src/components/content/all.vue: -------------------------------------------------------------------------------- 1 | 40 | 41 | 161 | 242 | -------------------------------------------------------------------------------- /src/components/loading/loading.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 14 | 33 | -------------------------------------------------------------------------------- /src/components/login/login.vue: -------------------------------------------------------------------------------- 1 | 22 | 23 | 63 | 90 | -------------------------------------------------------------------------------- /src/components/message/message.vue: -------------------------------------------------------------------------------- 1 | 59 | 60 | 128 | 129 | 243 | -------------------------------------------------------------------------------- /src/components/more/dialog.vue: -------------------------------------------------------------------------------- 1 | 46 | 47 | 69 | 78 | -------------------------------------------------------------------------------- /src/components/person/person.vue: -------------------------------------------------------------------------------- 1 | 39 | 40 | 72 | 125 | -------------------------------------------------------------------------------- /src/components/publish/publish.vue: -------------------------------------------------------------------------------- 1 | 17 | 18 | 85 | 103 | -------------------------------------------------------------------------------- /src/libs/style.css: -------------------------------------------------------------------------------- 1 | /* Cell Component */ 2 | /* Header Component */ 3 | /* Button Component */ 4 | /* Tab Item Component */ 5 | /* Tabbar Component */ 6 | /* Navbar Component */ 7 | /* Checklist Component */ 8 | /* Radio Component */ 9 | /* z-index */ 10 | .mint-header { 11 | -webkit-box-align: center; 12 | -ms-flex-align: center; 13 | align-items: center; 14 | background-color: #26a2ff; 15 | box-sizing: border-box; 16 | color: #fff; 17 | display: -webkit-box; 18 | display: -ms-flexbox; 19 | display: flex; 20 | font-size: 14px; 21 | height: 40px; 22 | line-height: 1; 23 | padding: 0 10px; 24 | position: relative; 25 | text-align: center; 26 | white-space: nowrap; 27 | } 28 | .mint-header .mint-button { 29 | background-color: transparent; 30 | border: 0; 31 | box-shadow: none; 32 | color: inherit; 33 | display: inline-block; 34 | padding: 0; 35 | font-size: inherit 36 | } 37 | .mint-header .mint-button::after { 38 | content: none; 39 | } 40 | .mint-header.is-fixed { 41 | top: 0; 42 | right: 0; 43 | left: 0; 44 | position: fixed; 45 | z-index: 1; 46 | } 47 | .mint-header-button { 48 | -webkit-box-flex: .5; 49 | -ms-flex: .5; 50 | flex: .5; 51 | } 52 | .mint-header-button > a { 53 | color: inherit; 54 | } 55 | .mint-header-button.is-right { 56 | text-align: right; 57 | } 58 | .mint-header-button.is-left { 59 | text-align: left; 60 | } 61 | .mint-header-title { 62 | overflow: hidden; 63 | text-overflow: ellipsis; 64 | white-space: nowrap; 65 | font-size: inherit; 66 | font-weight: 400; 67 | -webkit-box-flex: 1; 68 | -ms-flex: 1; 69 | flex: 1; 70 | } 71 | /* Cell Component */ 72 | /* Header Component */ 73 | /* Button Component */ 74 | /* Tab Item Component */ 75 | /* Tabbar Component */ 76 | /* Navbar Component */ 77 | /* Checklist Component */ 78 | /* Radio Component */ 79 | /* z-index */ 80 | .mint-button { 81 | -webkit-appearance: none; 82 | -moz-appearance: none; 83 | appearance: none; 84 | border-radius: 4px; 85 | border: 0; 86 | box-sizing: border-box; 87 | color: inherit; 88 | display: block; 89 | font-size: 18px; 90 | height: 41px; 91 | outline: 0; 92 | overflow: hidden; 93 | position: relative; 94 | text-align: center 95 | } 96 | .mint-button::after { 97 | background-color: #000; 98 | content: " "; 99 | opacity: 0; 100 | top: 0; 101 | right: 0; 102 | bottom: 0; 103 | left: 0; 104 | position: absolute 105 | } 106 | .mint-button:not(.is-disabled):active::after { 107 | opacity: .4 108 | } 109 | .mint-button.is-disabled { 110 | opacity: .6 111 | } 112 | .mint-button-icon { 113 | vertical-align: middle; 114 | display: inline-block 115 | } 116 | .mint-button--default { 117 | color: #656b79; 118 | background-color: #f6f8fa; 119 | box-shadow: 0 0 1px #b8bbbf 120 | } 121 | .mint-button--default.is-plain { 122 | border: 1px solid #5a5a5a; 123 | background-color: transparent; 124 | box-shadow: none; 125 | color: #5a5a5a 126 | } 127 | .mint-button--primary { 128 | color: #fff; 129 | background-color: #26a2ff 130 | } 131 | .mint-button--primary.is-plain { 132 | border: 1px solid #26a2ff; 133 | background-color: transparent; 134 | color: #26a2ff 135 | } 136 | .mint-button--danger { 137 | color: #fff; 138 | background-color: #ef4f4f 139 | } 140 | .mint-button--danger.is-plain { 141 | border: 1px solid #ef4f4f; 142 | background-color: transparent; 143 | color: #ef4f4f 144 | } 145 | .mint-button--large { 146 | display: block; 147 | width: 100% 148 | } 149 | .mint-button--normal { 150 | display: inline-block; 151 | padding: 0 12px 152 | } 153 | .mint-button--small { 154 | display: inline-block; 155 | font-size: 14px; 156 | padding: 0 12px; 157 | height: 33px 158 | } 159 | /* Cell Component */ 160 | /* Header Component */ 161 | /* Button Component */ 162 | /* Tab Item Component */ 163 | /* Tabbar Component */ 164 | /* Navbar Component */ 165 | /* Checklist Component */ 166 | /* Radio Component */ 167 | /* z-index */ 168 | .mint-cell { 169 | background-color:#fff; 170 | box-sizing:border-box; 171 | color:inherit; 172 | min-height:48px; 173 | display:block; 174 | overflow:hidden; 175 | position:relative; 176 | text-decoration:none; 177 | } 178 | .mint-cell img { 179 | vertical-align:middle; 180 | } 181 | .mint-cell:first-child .mint-cell-wrapper { 182 | background-origin:border-box; 183 | } 184 | .mint-cell:last-child { 185 | background-image:-webkit-linear-gradient(bottom, #d9d9d9, #d9d9d9 50%, transparent 50%); 186 | background-image:linear-gradient(0deg, #d9d9d9, #d9d9d9 50%, transparent 50%); 187 | background-size:100% 1px; 188 | background-repeat:no-repeat; 189 | background-position:bottom; 190 | } 191 | .mint-cell-wrapper { 192 | background-image:-webkit-linear-gradient(top, #d9d9d9, #d9d9d9 50%, transparent 50%); 193 | background-image:linear-gradient(180deg, #d9d9d9, #d9d9d9 50%, transparent 50%); 194 | background-size: 120% 1px; 195 | background-repeat: no-repeat; 196 | background-position: top left; 197 | background-origin: content-box; 198 | -webkit-box-align: center; 199 | -ms-flex-align: center; 200 | align-items: center; 201 | box-sizing: border-box; 202 | display: -webkit-box; 203 | display: -ms-flexbox; 204 | display: flex; 205 | font-size: 16px; 206 | line-height: 1; 207 | min-height: inherit; 208 | overflow: hidden; 209 | padding: 0 10px; 210 | width: 100%; 211 | } 212 | .mint-cell-mask {} 213 | .mint-cell-mask::after { 214 | background-color:#000; 215 | content:" "; 216 | opacity:0; 217 | top:0; 218 | right:0; 219 | bottom:0; 220 | left:0; 221 | position:absolute; 222 | } 223 | .mint-cell-mask:active::after { 224 | opacity:.1; 225 | } 226 | .mint-cell-text { 227 | vertical-align: middle; 228 | } 229 | .mint-cell-label { 230 | color: #888; 231 | display: block; 232 | font-size: 12px; 233 | margin-top: 6px; 234 | } 235 | .mint-cell-title { 236 | -webkit-box-flex: 1; 237 | -ms-flex: 1; 238 | flex: 1; 239 | } 240 | .mint-cell-value { 241 | color: #888; 242 | display: -webkit-box; 243 | display: -ms-flexbox; 244 | display: flex; 245 | -webkit-box-align: center; 246 | -ms-flex-align: center; 247 | align-items: center; 248 | } 249 | .mint-cell-value.is-link { 250 | margin-right:24px; 251 | } 252 | .mint-cell-left { 253 | position: absolute; 254 | height: 100%; 255 | left: 0; 256 | -webkit-transform: translate3d(-100%, 0, 0); 257 | transform: translate3d(-100%, 0, 0); 258 | } 259 | .mint-cell-right { 260 | position: absolute; 261 | height: 100%; 262 | right: 0; 263 | top: 0; 264 | -webkit-transform: translate3d(100%, 0, 0); 265 | transform: translate3d(100%, 0, 0); 266 | } 267 | .mint-cell-allow-right::after { 268 | border: solid 2px #c8c8cd; 269 | border-bottom-width: 0; 270 | border-left-width: 0; 271 | content: " "; 272 | top:50%; 273 | right:20px; 274 | position: absolute; 275 | width:5px; 276 | height:5px; 277 | -webkit-transform: translateY(-50%) rotate(45deg); 278 | transform: translateY(-50%) rotate(45deg); 279 | } 280 | /* Cell Component */ 281 | /* Header Component */ 282 | /* Button Component */ 283 | /* Tab Item Component */ 284 | /* Tabbar Component */ 285 | /* Navbar Component */ 286 | /* Checklist Component */ 287 | /* Radio Component */ 288 | /* z-index */ 289 | .mint-cell-swipe .mint-cell-wrapper, .mint-cell-swipe .mint-cell-left, .mint-cell-swipe .mint-cell-right { 290 | -webkit-transition: -webkit-transform 150ms ease-in-out; 291 | transition: -webkit-transform 150ms ease-in-out; 292 | transition: transform 150ms ease-in-out; 293 | transition: transform 150ms ease-in-out, -webkit-transform 150ms ease-in-out; 294 | } 295 | .mint-cell-swipe-buttongroup { 296 | height: 100%; 297 | } 298 | .mint-cell-swipe-button { 299 | height: 100%; 300 | display: inline-block; 301 | padding: 0 10px; 302 | line-height: 48px; 303 | } 304 | /* Cell Component */ 305 | /* Header Component */ 306 | /* Button Component */ 307 | /* Tab Item Component */ 308 | /* Tabbar Component */ 309 | /* Navbar Component */ 310 | /* Checklist Component */ 311 | /* Radio Component */ 312 | /* z-index */ 313 | .mint-field { 314 | display: -webkit-box; 315 | display: -ms-flexbox; 316 | display: flex; 317 | } 318 | .mint-field .mint-cell-title { 319 | width: 105px; 320 | -webkit-box-flex: 0; 321 | -ms-flex: none; 322 | flex: none; 323 | } 324 | .mint-field .mint-cell-value { 325 | -webkit-box-flex: 1; 326 | -ms-flex: 1; 327 | flex: 1; 328 | color: inherit; 329 | display: -webkit-box; 330 | display: -ms-flexbox; 331 | display: flex; 332 | } 333 | .mint-field.is-nolabel .mint-cell-title { 334 | display: none; 335 | } 336 | .mint-field.is-textarea { 337 | -webkit-box-align: inherit; 338 | -ms-flex-align: inherit; 339 | align-items: inherit; 340 | } 341 | .mint-field.is-textarea .mint-cell-title { 342 | padding: 10px 0; 343 | } 344 | .mint-field.is-textarea .mint-cell-value { 345 | padding: 5px 0; 346 | } 347 | .mint-field-core { 348 | -webkit-appearance: none; 349 | -moz-appearance: none; 350 | appearance: none; 351 | border-radius: 0; 352 | border: 0; 353 | -webkit-box-flex: 1; 354 | -ms-flex: 1; 355 | flex: 1; 356 | outline: 0; 357 | line-height: 1.6; 358 | font-size: inherit; 359 | width: 100%; 360 | } 361 | .mint-field-clear { 362 | opacity: .2; 363 | } 364 | .mint-field-state { 365 | color: inherit; 366 | margin-left: 20px; 367 | } 368 | .mint-field-state .mintui { 369 | font-size: 20px; 370 | } 371 | .mint-field-state.is-default { 372 | margin-left: 0; 373 | } 374 | .mint-field-state.is-success { 375 | color: #4caf50; 376 | } 377 | .mint-field-state.is-warning { 378 | color: #ffc107; 379 | } 380 | .mint-field-state.is-error { 381 | color: #f44336; 382 | } 383 | .mint-field-other { 384 | top: 0; 385 | right: 0; 386 | position: absolute; 387 | } 388 | /* Cell Component */ 389 | /* Header Component */ 390 | /* Button Component */ 391 | /* Tab Item Component */ 392 | /* Tabbar Component */ 393 | /* Navbar Component */ 394 | /* Checklist Component */ 395 | /* Radio Component */ 396 | /* z-index */ 397 | .mint-badge { 398 | color: #fff; 399 | text-align: center; 400 | display: inline-block 401 | } 402 | .mint-badge.is-size-large { 403 | border-radius: 14px; 404 | font-size: 18px; 405 | padding: 2px 10px 406 | } 407 | .mint-badge.is-size-small { 408 | border-radius: 8px; 409 | font-size: 12px; 410 | padding: 2px 6px 411 | } 412 | .mint-badge.is-size-normal { 413 | border-radius: 12px; 414 | font-size: 15px; 415 | padding: 2px 8px 416 | } 417 | .mint-badge.is-warning { 418 | background-color: #ffc107 419 | } 420 | .mint-badge.is-error { 421 | background-color: #f44336 422 | } 423 | .mint-badge.is-primary { 424 | background-color: #26a2ff 425 | } 426 | .mint-badge.is-success { 427 | background-color: #4caf50 428 | } 429 | /* Cell Component */ 430 | /* Header Component */ 431 | /* Button Component */ 432 | /* Tab Item Component */ 433 | /* Tabbar Component */ 434 | /* Navbar Component */ 435 | /* Checklist Component */ 436 | /* Radio Component */ 437 | /* z-index */ 438 | .mint-switch { 439 | display: -webkit-box; 440 | display: -ms-flexbox; 441 | display: flex; 442 | -webkit-box-align: center; 443 | -ms-flex-align: center; 444 | align-items: center; 445 | position: relative 446 | } 447 | .mint-switch-label { 448 | margin-left: 10px; 449 | display: inline-block 450 | } 451 | .mint-switch-label:empty { 452 | margin-left: 0 453 | } 454 | .mint-switch-core { 455 | display: inline-block; 456 | position: relative; 457 | width: 52px; 458 | height: 32px; 459 | border: 1px solid #d9d9d9; 460 | border-radius: 16px; 461 | box-sizing: border-box; 462 | background: #d9d9d9 463 | } 464 | .mint-switch-core::after, .mint-switch-core::before { 465 | content: " "; 466 | top: 0; 467 | left: 0; 468 | position: absolute; 469 | -webkit-transition: -webkit-transform .3s; 470 | transition: -webkit-transform .3s; 471 | transition: transform .3s; 472 | transition: transform .3s, -webkit-transform .3s; 473 | border-radius: 15px 474 | } 475 | .mint-switch-core::after { 476 | width: 30px; 477 | height: 30px; 478 | background-color: #fff; 479 | box-shadow: 0 1px 3px rgba(0, 0, 0, .4) 480 | } 481 | .mint-switch-core::before { 482 | width: 50px; 483 | height: 30px; 484 | background-color: #fdfdfd 485 | } 486 | .mint-switch-input { 487 | display: none 488 | } 489 | .mint-switch-input:checked + .mint-switch-core { 490 | border-color: #26a2ff; 491 | background-color: #26a2ff 492 | } 493 | .mint-switch-input:checked + .mint-switch-core::before { 494 | -webkit-transform: scale(0); 495 | transform: scale(0) 496 | } 497 | .mint-switch-input:checked + .mint-switch-core::after { 498 | -webkit-transform: translateX(20px); 499 | transform: translateX(20px) 500 | } 501 | 502 | .mint-spinner-snake { 503 | -webkit-animation: mint-spinner-rotate 0.8s infinite linear; 504 | animation: mint-spinner-rotate 0.8s infinite linear; 505 | border: 4px solid transparent; 506 | border-radius: 50%; 507 | } 508 | @-webkit-keyframes mint-spinner-rotate { 509 | 0% { 510 | -webkit-transform: rotate(0deg); 511 | transform: rotate(0deg); 512 | } 513 | 100% { 514 | -webkit-transform: rotate(360deg); 515 | transform: rotate(360deg); 516 | } 517 | } 518 | @keyframes mint-spinner-rotate { 519 | 0% { 520 | -webkit-transform: rotate(0deg); 521 | transform: rotate(0deg); 522 | } 523 | 100% { 524 | -webkit-transform: rotate(360deg); 525 | transform: rotate(360deg); 526 | } 527 | } 528 | 529 | .mint-spinner-double-bounce { 530 | position: relative; 531 | } 532 | .mint-spinner-double-bounce-bounce1, .mint-spinner-double-bounce-bounce2 { 533 | width: 100%; 534 | height: 100%; 535 | border-radius: 50%; 536 | opacity: 0.6; 537 | position: absolute; 538 | top: 0; 539 | left: 0; 540 | -webkit-animation: mint-spinner-double-bounce 2.0s infinite ease-in-out; 541 | animation: mint-spinner-double-bounce 2.0s infinite ease-in-out; 542 | } 543 | .mint-spinner-double-bounce-bounce2 { 544 | -webkit-animation-delay: -1.0s; 545 | animation-delay: -1.0s; 546 | } 547 | @-webkit-keyframes mint-spinner-double-bounce { 548 | 0%, 100% { 549 | -webkit-transform: scale(0.0); 550 | transform: scale(0.0); 551 | } 552 | 50% { 553 | -webkit-transform: scale(1.0); 554 | transform: scale(1.0); 555 | } 556 | } 557 | @keyframes mint-spinner-double-bounce { 558 | 0%, 100% { 559 | -webkit-transform: scale(0.0); 560 | transform: scale(0.0); 561 | } 562 | 50% { 563 | -webkit-transform: scale(1.0); 564 | transform: scale(1.0); 565 | } 566 | } 567 | 568 | .mint-spinner-triple-bounce {} 569 | .mint-spinner-triple-bounce-bounce1, .mint-spinner-triple-bounce-bounce2, .mint-spinner-triple-bounce-bounce3 { 570 | border-radius: 100%; 571 | display: inline-block; 572 | -webkit-animation: mint-spinner-triple-bounce 1.4s infinite ease-in-out both; 573 | animation: mint-spinner-triple-bounce 1.4s infinite ease-in-out both; 574 | } 575 | .mint-spinner-triple-bounce-bounce1 { 576 | -webkit-animation-delay: -0.32s; 577 | animation-delay: -0.32s; 578 | } 579 | .mint-spinner-triple-bounce-bounce2 { 580 | -webkit-animation-delay: -0.16s; 581 | animation-delay: -0.16s; 582 | } 583 | @-webkit-keyframes mint-spinner-triple-bounce { 584 | 0%, 80%, 100% { 585 | -webkit-transform: scale(0); 586 | transform: scale(0); 587 | } 588 | 40% { 589 | -webkit-transform: scale(1.0); 590 | transform: scale(1.0); 591 | } 592 | } 593 | @keyframes mint-spinner-triple-bounce { 594 | 0%, 80%, 100% { 595 | -webkit-transform: scale(0); 596 | transform: scale(0); 597 | } 598 | 40% { 599 | -webkit-transform: scale(1.0); 600 | transform: scale(1.0); 601 | } 602 | } 603 | 604 | .mint-spinner-fading-circle { 605 | position: relative 606 | } 607 | .mint-spinner-fading-circle-circle { 608 | width: 100%; 609 | height: 100%; 610 | top: 0; 611 | left: 0; 612 | position: absolute 613 | } 614 | .mint-spinner-fading-circle-circle::before { 615 | content: " "; 616 | display: block; 617 | margin: 0 auto; 618 | width: 15%; 619 | height: 15%; 620 | border-radius: 100%; 621 | -webkit-animation: mint-fading-circle 1.2s infinite ease-in-out both; 622 | animation: mint-fading-circle 1.2s infinite ease-in-out both 623 | } 624 | .mint-spinner-fading-circle-circle.is-circle2 { 625 | -webkit-transform: rotate(30deg); 626 | transform: rotate(30deg) 627 | } 628 | .mint-spinner-fading-circle-circle.is-circle2::before { 629 | -webkit-animation-delay: -1.1s; 630 | animation-delay: -1.1s 631 | } 632 | .mint-spinner-fading-circle-circle.is-circle3 { 633 | -webkit-transform: rotate(60deg); 634 | transform: rotate(60deg) 635 | } 636 | .mint-spinner-fading-circle-circle.is-circle3::before { 637 | -webkit-animation-delay: -1s; 638 | animation-delay: -1s 639 | } 640 | .mint-spinner-fading-circle-circle.is-circle4 { 641 | -webkit-transform: rotate(90deg); 642 | transform: rotate(90deg) 643 | } 644 | .mint-spinner-fading-circle-circle.is-circle4::before { 645 | -webkit-animation-delay: -0.9s; 646 | animation-delay: -0.9s 647 | } 648 | .mint-spinner-fading-circle-circle.is-circle5 { 649 | -webkit-transform: rotate(120deg); 650 | transform: rotate(120deg) 651 | } 652 | .mint-spinner-fading-circle-circle.is-circle5::before { 653 | -webkit-animation-delay: -0.8s; 654 | animation-delay: -0.8s 655 | } 656 | .mint-spinner-fading-circle-circle.is-circle6 { 657 | -webkit-transform: rotate(150deg); 658 | transform: rotate(150deg) 659 | } 660 | .mint-spinner-fading-circle-circle.is-circle6::before { 661 | -webkit-animation-delay: -0.7s; 662 | animation-delay: -0.7s 663 | } 664 | .mint-spinner-fading-circle-circle.is-circle7 { 665 | -webkit-transform: rotate(180deg); 666 | transform: rotate(180deg) 667 | } 668 | .mint-spinner-fading-circle-circle.is-circle7::before { 669 | -webkit-animation-delay: -0.6s; 670 | animation-delay: -0.6s 671 | } 672 | .mint-spinner-fading-circle-circle.is-circle8 { 673 | -webkit-transform: rotate(210deg); 674 | transform: rotate(210deg) 675 | } 676 | .mint-spinner-fading-circle-circle.is-circle8::before { 677 | -webkit-animation-delay: -0.5s; 678 | animation-delay: -0.5s 679 | } 680 | .mint-spinner-fading-circle-circle.is-circle9 { 681 | -webkit-transform: rotate(240deg); 682 | transform: rotate(240deg) 683 | } 684 | .mint-spinner-fading-circle-circle.is-circle9::before { 685 | -webkit-animation-delay: -0.4s; 686 | animation-delay: -0.4s 687 | } 688 | .mint-spinner-fading-circle-circle.is-circle10 { 689 | -webkit-transform: rotate(270deg); 690 | transform: rotate(270deg) 691 | } 692 | .mint-spinner-fading-circle-circle.is-circle10::before { 693 | -webkit-animation-delay: -0.3s; 694 | animation-delay: -0.3s 695 | } 696 | .mint-spinner-fading-circle-circle.is-circle11 { 697 | -webkit-transform: rotate(300deg); 698 | transform: rotate(300deg) 699 | } 700 | .mint-spinner-fading-circle-circle.is-circle11::before { 701 | -webkit-animation-delay: -0.2s; 702 | animation-delay: -0.2s 703 | } 704 | .mint-spinner-fading-circle-circle.is-circle12 { 705 | -webkit-transform: rotate(330deg); 706 | transform: rotate(330deg) 707 | } 708 | .mint-spinner-fading-circle-circle.is-circle12::before { 709 | -webkit-animation-delay: -0.1s; 710 | animation-delay: -0.1s 711 | } 712 | @-webkit-keyframes mint-fading-circle { 713 | 0%, 39%, 100% { 714 | opacity: 0 715 | } 716 | 40% { 717 | opacity: 1 718 | } 719 | } 720 | @keyframes mint-fading-circle { 721 | 0%, 39%, 100% { 722 | opacity: 0 723 | } 724 | 40% { 725 | opacity: 1 726 | } 727 | } 728 | /* Cell Component */ 729 | /* Header Component */ 730 | /* Button Component */ 731 | /* Tab Item Component */ 732 | /* Tabbar Component */ 733 | /* Navbar Component */ 734 | /* Checklist Component */ 735 | /* Radio Component */ 736 | /* z-index */ 737 | .mint-tab-item { 738 | display: block; 739 | padding: 7px 0; 740 | -webkit-box-flex: 1; 741 | -ms-flex: 1; 742 | flex: 1; 743 | text-decoration: none 744 | } 745 | .mint-tab-item-icon { 746 | width: 24px; 747 | height: 24px; 748 | margin: 0 auto 5px 749 | } 750 | .mint-tab-item-icon:empty { 751 | display: none 752 | } 753 | .mint-tab-item-icon > * { 754 | display: block; 755 | width: 100%; 756 | height: 100% 757 | } 758 | .mint-tab-item-label { 759 | color: inherit; 760 | font-size: 12px; 761 | line-height: 1 762 | } 763 | 764 | .mint-tab-container-item { 765 | -ms-flex-negative: 0; 766 | flex-shrink: 0; 767 | width: 100% 768 | } 769 | 770 | .mint-tab-container { 771 | overflow: hidden; 772 | position: relative; 773 | } 774 | .mint-tab-container .swipe-transition { 775 | -webkit-transition: -webkit-transform 150ms ease-in-out; 776 | transition: -webkit-transform 150ms ease-in-out; 777 | transition: transform 150ms ease-in-out; 778 | transition: transform 150ms ease-in-out, -webkit-transform 150ms ease-in-out; 779 | } 780 | .mint-tab-container-wrap { 781 | display: -webkit-box; 782 | display: -ms-flexbox; 783 | display: flex; 784 | } 785 | /* Cell Component */ 786 | /* Header Component */ 787 | /* Button Component */ 788 | /* Tab Item Component */ 789 | /* Tabbar Component */ 790 | /* Navbar Component */ 791 | /* Checklist Component */ 792 | /* Radio Component */ 793 | /* z-index */ 794 | .mint-navbar { 795 | background-color: #fff; 796 | display: -webkit-box; 797 | display: -ms-flexbox; 798 | display: flex; 799 | text-align: center; 800 | } 801 | .mint-navbar .mint-tab-item { 802 | padding: 17px 0; 803 | font-size: 15px 804 | } 805 | .mint-navbar .mint-tab-item:last-child { 806 | border-right: 0; 807 | } 808 | .mint-navbar .mint-tab-item.is-selected { 809 | border-bottom: 3px solid #26a2ff; 810 | color: #26a2ff; 811 | margin-bottom: -3px; 812 | } 813 | .mint-navbar.is-fixed { 814 | top: 0; 815 | right: 0; 816 | left: 0; 817 | position: fixed; 818 | z-index: 1; 819 | } 820 | /* Cell Component */ 821 | /* Header Component */ 822 | /* Button Component */ 823 | /* Tab Item Component */ 824 | /* Tabbar Component */ 825 | /* Navbar Component */ 826 | /* Checklist Component */ 827 | /* Radio Component */ 828 | /* z-index */ 829 | .mint-tabbar { 830 | background-image: -webkit-linear-gradient(top, #d9d9d9, #d9d9d9 50%, transparent 50%); 831 | background-image: linear-gradient(180deg, #d9d9d9, #d9d9d9 50%, transparent 50%); 832 | background-size: 100% 1px; 833 | background-repeat: no-repeat; 834 | background-position: top left; 835 | position: relative; 836 | background-color: #fafafa; 837 | display: -webkit-box; 838 | display: -ms-flexbox; 839 | display: flex; 840 | right: 0; 841 | bottom: 0; 842 | left: 0; 843 | position: absolute; 844 | text-align: center; 845 | } 846 | .mint-tabbar > .mint-tab-item.is-selected { 847 | background-color: #eaeaea; 848 | color: #26a2ff; 849 | } 850 | .mint-tabbar.is-fixed { 851 | right: 0; 852 | bottom: 0; 853 | left: 0; 854 | position: fixed; 855 | z-index: 1; 856 | } 857 | /* Cell Component */ 858 | /* Header Component */ 859 | /* Button Component */ 860 | /* Tab Item Component */ 861 | /* Tabbar Component */ 862 | /* Navbar Component */ 863 | /* Checklist Component */ 864 | /* Radio Component */ 865 | /* z-index */ 866 | .mint-search { 867 | height: 100%; 868 | height: 100vh; 869 | overflow: hidden; 870 | } 871 | .mint-searchbar { 872 | position: relative; 873 | -webkit-box-align: center; 874 | -ms-flex-align: center; 875 | align-items: center; 876 | background-color: #d9d9d9; 877 | box-sizing: border-box; 878 | display: -webkit-box; 879 | display: -ms-flexbox; 880 | display: flex; 881 | padding: 8px 10px; 882 | z-index: 1; 883 | } 884 | .mint-searchbar-inner { 885 | -webkit-box-align: center; 886 | -ms-flex-align: center; 887 | align-items: center; 888 | background-color: #fff; 889 | border-radius: 2px; 890 | display: -webkit-box; 891 | display: -ms-flexbox; 892 | display: flex; 893 | -webkit-box-flex: 1; 894 | -ms-flex: 1; 895 | flex: 1; 896 | height: 28px; 897 | padding: 4px 6px; 898 | } 899 | .mint-searchbar-inner .mintui-search { 900 | font-size: 12px; 901 | color: #d9d9d9; 902 | } 903 | .mint-searchbar-core { 904 | -webkit-appearance: none; 905 | -moz-appearance: none; 906 | appearance: none; 907 | border: 0; 908 | box-sizing: border-box; 909 | height: 100%; 910 | outline: 0; 911 | } 912 | .mint-searchbar-placeholder { 913 | -webkit-box-align: center; 914 | -ms-flex-align: center; 915 | align-items: center; 916 | color: #9b9b9b; 917 | display: -webkit-box; 918 | display: -ms-flexbox; 919 | display: flex; 920 | font-size: 12px; 921 | -webkit-box-pack: center; 922 | -ms-flex-pack: center; 923 | justify-content: center; 924 | top: 0; 925 | right: 0; 926 | bottom: 0; 927 | left: 0; 928 | position: absolute; 929 | } 930 | .mint-searchbar-placeholder .mintui-search { 931 | font-size: 12px; 932 | } 933 | .mint-searchbar-cancel { 934 | color: #26a2ff; 935 | margin-left: 10px; 936 | text-decoration: none; 937 | } 938 | .mint-search-list { 939 | overflow: auto; 940 | padding-top: 44px; 941 | top: 0; 942 | right: 0; 943 | bottom: 0; 944 | left: 0; 945 | position: absolute; 946 | } 947 | /* Cell Component */ 948 | /* Header Component */ 949 | /* Button Component */ 950 | /* Tab Item Component */ 951 | /* Tabbar Component */ 952 | /* Navbar Component */ 953 | /* Checklist Component */ 954 | /* Radio Component */ 955 | /* z-index */ 956 | .mint-checklist .mint-cell { 957 | padding: 0; 958 | } 959 | .mint-checklist.is-limit .mint-checkbox-core:not(:checked) { 960 | background-color: #d9d9d9; 961 | border-color: #d9d9d9; 962 | } 963 | .mint-checklist-label { 964 | display: block; 965 | padding: 0 10px; 966 | } 967 | .mint-checklist-title { 968 | color: #888; 969 | display: block; 970 | font-size: 12px; 971 | margin: 8px; 972 | } 973 | .mint-checkbox {} 974 | .mint-checkbox.is-right { 975 | float: right; 976 | } 977 | .mint-checkbox-label { 978 | vertical-align: middle; 979 | margin-left: 6px; 980 | } 981 | .mint-checkbox-input { 982 | display: none; 983 | } 984 | .mint-checkbox-input:checked + .mint-checkbox-core { 985 | background-color: #26a2ff; 986 | border-color: #26a2ff; 987 | } 988 | .mint-checkbox-input:checked + .mint-checkbox-core::after { 989 | border-color: #fff; 990 | -webkit-transform: rotate(45deg) scale(1); 991 | transform: rotate(45deg) scale(1); 992 | } 993 | .mint-checkbox-input[disabled] + .mint-checkbox-core { 994 | background-color: #d9d9d9; 995 | border-color: #ccc; 996 | } 997 | .mint-checkbox-core { 998 | display: inline-block; 999 | background-color: #fff; 1000 | border-radius: 100%; 1001 | border: 1px solid #ccc; 1002 | position: relative; 1003 | width: 20px; 1004 | height: 20px; 1005 | vertical-align: middle; 1006 | } 1007 | .mint-checkbox-core::after { 1008 | border: 2px solid transparent; 1009 | border-left: 0; 1010 | border-top: 0; 1011 | content: " "; 1012 | top: 3px; 1013 | left: 6px; 1014 | position: absolute; 1015 | width: 4px; 1016 | height: 8px; 1017 | -webkit-transform: rotate(45deg) scale(0); 1018 | transform: rotate(45deg) scale(0); 1019 | -webkit-transition: -webkit-transform .2s; 1020 | transition: -webkit-transform .2s; 1021 | transition: transform .2s; 1022 | transition: transform .2s, -webkit-transform .2s; 1023 | } 1024 | /* Cell Component */ 1025 | /* Header Component */ 1026 | /* Button Component */ 1027 | /* Tab Item Component */ 1028 | /* Tabbar Component */ 1029 | /* Navbar Component */ 1030 | /* Checklist Component */ 1031 | /* Radio Component */ 1032 | /* z-index */ 1033 | .mint-radiolist .mint-cell { 1034 | padding: 0; 1035 | } 1036 | .mint-radiolist-label { 1037 | display: block; 1038 | padding: 0 10px; 1039 | } 1040 | .mint-radiolist-title { 1041 | font-size: 12px; 1042 | margin: 8px; 1043 | display: block; 1044 | color: #888; 1045 | } 1046 | .mint-radio {} 1047 | .mint-radio.is-right { 1048 | float: right; 1049 | } 1050 | .mint-radio-label { 1051 | vertical-align: middle; 1052 | margin-left: 6px; 1053 | } 1054 | .mint-radio-input { 1055 | display: none; 1056 | } 1057 | .mint-radio-input:checked + .mint-radio-core { 1058 | background-color: #26a2ff; 1059 | border-color: #26a2ff; 1060 | } 1061 | .mint-radio-input:checked + .mint-radio-core::after { 1062 | background-color: #fff; 1063 | -webkit-transform: scale(1); 1064 | transform: scale(1); 1065 | } 1066 | .mint-radio-input[disabled] + .mint-radio-core { 1067 | background-color: #d9d9d9; 1068 | border-color: #ccc; 1069 | } 1070 | .mint-radio-core { 1071 | display: inline-block; 1072 | background-color: #fff; 1073 | border-radius: 100%; 1074 | border: 1px solid #ccc; 1075 | position: relative; 1076 | width: 20px; 1077 | height: 20px; 1078 | vertical-align: middle; 1079 | } 1080 | .mint-radio-core::after { 1081 | content: " "; 1082 | border-radius: 100%; 1083 | top: 5px; 1084 | left: 5px; 1085 | position: absolute; 1086 | width: 8px; 1087 | height: 8px; 1088 | -webkit-transition: -webkit-transform .2s; 1089 | transition: -webkit-transform .2s; 1090 | transition: transform .2s; 1091 | transition: transform .2s, -webkit-transform .2s; 1092 | -webkit-transform: scale(0); 1093 | transform: scale(0); 1094 | } 1095 | 1096 | .mint-loadmore { 1097 | overflow: hidden 1098 | } 1099 | .mint-loadmore-content {} 1100 | .mint-loadmore-content.is-dropped { 1101 | -webkit-transition: .2s; 1102 | transition: .2s 1103 | } 1104 | .mint-loadmore-top, .mint-loadmore-bottom { 1105 | text-align: center; 1106 | height: 50px; 1107 | line-height: 50px 1108 | } 1109 | .mint-loadmore-top { 1110 | margin-top: -50px 1111 | } 1112 | .mint-loadmore-bottom { 1113 | margin-bottom: -50px 1114 | } 1115 | .mint-loadmore-spinner { 1116 | display: inline-block; 1117 | margin-right: 5px; 1118 | vertical-align: middle 1119 | } 1120 | .mint-loadmore-text { 1121 | vertical-align: middle 1122 | } 1123 | 1124 | .mint-actionsheet { 1125 | position: fixed; 1126 | background: #e0e0e0; 1127 | width: 100%; 1128 | text-align: center; 1129 | bottom: 0; 1130 | left: 50%; 1131 | -webkit-transform: translate3d(-50%, 0, 0); 1132 | transform: translate3d(-50%, 0, 0); 1133 | -webkit-backface-visibility: hidden; 1134 | backface-visibility: hidden; 1135 | -webkit-transition: -webkit-transform .3s ease-out; 1136 | transition: -webkit-transform .3s ease-out; 1137 | transition: transform .3s ease-out; 1138 | transition: transform .3s ease-out, -webkit-transform .3s ease-out; 1139 | } 1140 | .mint-actionsheet-list { 1141 | list-style: none; 1142 | padding: 0; 1143 | margin: 0; 1144 | } 1145 | .mint-actionsheet-listitem { 1146 | border-bottom: solid 1px #e0e0e0; 1147 | } 1148 | .mint-actionsheet-listitem, .mint-actionsheet-button { 1149 | display: block; 1150 | width: 100%; 1151 | height: 45px; 1152 | line-height: 45px; 1153 | font-size: 18px; 1154 | color: #333; 1155 | background-color: #fff; 1156 | } 1157 | .mint-actionsheet-listitem:active, .mint-actionsheet-button:active { 1158 | background-color: #f0f0f0; 1159 | } 1160 | .actionsheet-float-enter, .actionsheet-float-leave-active { 1161 | -webkit-transform: translate3d(-50%, 100%, 0); 1162 | transform: translate3d(-50%, 100%, 0); 1163 | } 1164 | .v-modal-enter { 1165 | -webkit-animation: v-modal-in .2s ease; 1166 | animation: v-modal-in .2s ease; 1167 | } 1168 | 1169 | .v-modal-leave { 1170 | -webkit-animation: v-modal-out .2s ease forwards; 1171 | animation: v-modal-out .2s ease forwards; 1172 | } 1173 | 1174 | @-webkit-keyframes v-modal-in { 1175 | 0% { 1176 | opacity: 0; 1177 | } 1178 | 100% { 1179 | } 1180 | } 1181 | 1182 | @keyframes v-modal-in { 1183 | 0% { 1184 | opacity: 0; 1185 | } 1186 | 100% { 1187 | } 1188 | } 1189 | 1190 | @-webkit-keyframes v-modal-out { 1191 | 0% { 1192 | } 1193 | 100% { 1194 | opacity: 0; 1195 | } 1196 | } 1197 | 1198 | @keyframes v-modal-out { 1199 | 0% { 1200 | } 1201 | 100% { 1202 | opacity: 0; 1203 | } 1204 | } 1205 | 1206 | .v-modal { 1207 | position: fixed; 1208 | left: 0; 1209 | top: 0; 1210 | width: 100%; 1211 | height: 100%; 1212 | opacity: 0.5; 1213 | background: #000; 1214 | } 1215 | 1216 | .mint-popup { 1217 | position: fixed; 1218 | background: #fff; 1219 | top: 50%; 1220 | left: 50%; 1221 | -webkit-transform: translate3d(-50%, -50%, 0); 1222 | transform: translate3d(-50%, -50%, 0); 1223 | -webkit-backface-visibility: hidden; 1224 | backface-visibility: hidden; 1225 | -webkit-transition: .2s ease-out; 1226 | transition: .2s ease-out; 1227 | } 1228 | .mint-popup-top { 1229 | top: 0; 1230 | right: auto; 1231 | bottom: auto; 1232 | left: 50%; 1233 | -webkit-transform: translate3d(-50%, 0, 0); 1234 | transform: translate3d(-50%, 0, 0); 1235 | } 1236 | .mint-popup-right { 1237 | top: 50%; 1238 | right: 0; 1239 | bottom: auto; 1240 | left: auto; 1241 | -webkit-transform: translate3d(0, -50%, 0); 1242 | transform: translate3d(0, -50%, 0); 1243 | } 1244 | .mint-popup-bottom { 1245 | top: auto; 1246 | right: auto; 1247 | bottom: 0; 1248 | left: 50%; 1249 | -webkit-transform: translate3d(-50%, 0, 0); 1250 | transform: translate3d(-50%, 0, 0); 1251 | } 1252 | .mint-popup-left { 1253 | top: 50%; 1254 | right: auto; 1255 | bottom: auto; 1256 | left: 0; 1257 | -webkit-transform: translate3d(0, -50%, 0); 1258 | transform: translate3d(0, -50%, 0); 1259 | } 1260 | .popup-slide-top-enter, .popup-slide-top-leave-active { 1261 | -webkit-transform: translate3d(-50%, -100%, 0); 1262 | transform: translate3d(-50%, -100%, 0); 1263 | } 1264 | .popup-slide-right-enter, .popup-slide-right-leave-active { 1265 | -webkit-transform: translate3d(100%, -50%, 0); 1266 | transform: translate3d(100%, -50%, 0); 1267 | } 1268 | .popup-slide-bottom-enter, .popup-slide-bottom-leave-active { 1269 | -webkit-transform: translate3d(-50%, 100%, 0); 1270 | transform: translate3d(-50%, 100%, 0); 1271 | } 1272 | .popup-slide-left-enter, .popup-slide-left-leave-active { 1273 | -webkit-transform: translate3d(-100%, -50%, 0); 1274 | transform: translate3d(-100%, -50%, 0); 1275 | } 1276 | .popup-fade-enter, .popup-fade-leave-active { 1277 | opacity: 0; 1278 | } 1279 | 1280 | .mint-swipe { 1281 | overflow: hidden; 1282 | position: relative; 1283 | height: 100%; 1284 | } 1285 | .mint-swipe-items-wrap { 1286 | position: relative; 1287 | overflow: hidden; 1288 | height: 100%; 1289 | } 1290 | .mint-swipe-items-wrap > div { 1291 | position: absolute; 1292 | -webkit-transform: translateX(-100%); 1293 | transform: translateX(-100%); 1294 | width: 100%; 1295 | height: 100%; 1296 | display: none 1297 | } 1298 | .mint-swipe-items-wrap > div.is-active { 1299 | display: block; 1300 | -webkit-transform: none; 1301 | transform: none; 1302 | } 1303 | .mint-swipe-indicators { 1304 | position: absolute; 1305 | bottom: 10px; 1306 | left: 50%; 1307 | -webkit-transform: translateX(-50%); 1308 | transform: translateX(-50%); 1309 | } 1310 | .mint-swipe-indicator { 1311 | width: 8px; 1312 | height: 8px; 1313 | display: inline-block; 1314 | border-radius: 100%; 1315 | background: #000; 1316 | opacity: 0.2; 1317 | margin: 0 3px; 1318 | } 1319 | .mint-swipe-indicator.is-active { 1320 | background: #fff; 1321 | } 1322 | 1323 | 1324 | .mt-range { 1325 | position: relative; 1326 | display: -webkit-box; 1327 | display: -ms-flexbox; 1328 | display: flex; 1329 | height: 30px; 1330 | line-height: 30px 1331 | } 1332 | .mt-range > * { 1333 | display: -ms-flexbox; 1334 | display: flex; 1335 | display: -webkit-box 1336 | } 1337 | .mt-range *[slot=start] { 1338 | margin-right: 5px 1339 | } 1340 | .mt-range *[slot=end] { 1341 | margin-left: 5px 1342 | } 1343 | .mt-range-content { 1344 | position: relative; 1345 | -webkit-box-flex: 1; 1346 | -ms-flex: 1; 1347 | flex: 1; 1348 | margin-right: 30px 1349 | } 1350 | .mt-range-runway { 1351 | position: absolute; 1352 | top: 50%; 1353 | -webkit-transform: translateY(-50%); 1354 | transform: translateY(-50%); 1355 | left: 0; 1356 | right: -30px; 1357 | border-top-color: #a9acb1; 1358 | border-top-style: solid 1359 | } 1360 | .mt-range-thumb { 1361 | background-color: #fff; 1362 | position: absolute; 1363 | left: 0; 1364 | top: 0; 1365 | width: 30px; 1366 | height: 30px; 1367 | border-radius: 100%; 1368 | cursor: move; 1369 | box-shadow: 0 1px 3px rgba(0,0,0,.4) 1370 | } 1371 | .mt-range-progress { 1372 | position: absolute; 1373 | display: block; 1374 | background-color: #26a2ff; 1375 | top: 50%; 1376 | -webkit-transform: translateY(-50%); 1377 | transform: translateY(-50%); 1378 | width: 0 1379 | } 1380 | .mt-range--disabled { 1381 | opacity: 0.5 1382 | } 1383 | 1384 | .picker { 1385 | overflow: hidden; 1386 | } 1387 | .picker-toolbar { 1388 | height: 40px; 1389 | } 1390 | .picker-items { 1391 | display: -webkit-box; 1392 | display: -ms-flexbox; 1393 | display: flex; 1394 | -webkit-box-pack: center; 1395 | -ms-flex-pack: center; 1396 | justify-content: center; 1397 | padding: 0; 1398 | text-align: right; 1399 | font-size: 24px; 1400 | position: relative; 1401 | } 1402 | .picker-center-highlight { 1403 | height: 36px; 1404 | box-sizing: border-box; 1405 | position: absolute; 1406 | left: 0; 1407 | width: 100%; 1408 | top: 50%; 1409 | margin-top: -18px; 1410 | pointer-events: none 1411 | } 1412 | .picker-center-highlight:before, .picker-center-highlight:after { 1413 | content: ''; 1414 | position: absolute; 1415 | height: 1px; 1416 | width: 100%; 1417 | background-color: #eaeaea; 1418 | display: block; 1419 | z-index: 15; 1420 | -webkit-transform: scaleY(0.5); 1421 | transform: scaleY(0.5); 1422 | } 1423 | .picker-center-highlight:before { 1424 | left: 0; 1425 | top: 0; 1426 | bottom: auto; 1427 | right: auto; 1428 | } 1429 | .picker-center-highlight:after { 1430 | left: 0; 1431 | bottom: 0; 1432 | right: auto; 1433 | top: auto; 1434 | } 1435 | 1436 | .picker-slot { 1437 | font-size: 18px; 1438 | overflow: hidden; 1439 | position: relative; 1440 | max-height: 100% 1441 | } 1442 | .picker-slot.picker-slot-left { 1443 | text-align: left; 1444 | } 1445 | .picker-slot.picker-slot-center { 1446 | text-align: center; 1447 | } 1448 | .picker-slot.picker-slot-right { 1449 | text-align: right; 1450 | } 1451 | .picker-slot.picker-slot-divider { 1452 | color: #000; 1453 | display: -webkit-box; 1454 | display: -ms-flexbox; 1455 | display: flex; 1456 | -webkit-box-align: center; 1457 | -ms-flex-align: center; 1458 | align-items: center 1459 | } 1460 | .picker-slot-wrapper { 1461 | -webkit-transition-duration: 0.3s; 1462 | transition-duration: 0.3s; 1463 | -webkit-transition-timing-function: ease-out; 1464 | transition-timing-function: ease-out; 1465 | -webkit-backface-visibility: hidden; 1466 | backface-visibility: hidden; 1467 | } 1468 | .picker-slot-wrapper.dragging, .picker-slot-wrapper.dragging .picker-item { 1469 | -webkit-transition-duration: 0s; 1470 | transition-duration: 0s; 1471 | } 1472 | .picker-item { 1473 | height: 36px; 1474 | line-height: 36px; 1475 | padding: 0 10px; 1476 | white-space: nowrap; 1477 | position: relative; 1478 | overflow: hidden; 1479 | text-overflow: ellipsis; 1480 | color: #707274; 1481 | left: 0; 1482 | top: 0; 1483 | width: 100%; 1484 | box-sizing: border-box; 1485 | -webkit-transition-duration: .3s; 1486 | transition-duration: .3s; 1487 | -webkit-backface-visibility: hidden; 1488 | backface-visibility: hidden; 1489 | } 1490 | .picker-slot-absolute .picker-item { 1491 | position: absolute; 1492 | } 1493 | .picker-item.picker-item-far { 1494 | pointer-events: none 1495 | } 1496 | .picker-item.picker-selected { 1497 | color: #000; 1498 | -webkit-transform: translate3d(0, 0, 0) rotateX(0); 1499 | transform: translate3d(0, 0, 0) rotateX(0); 1500 | } 1501 | .picker-3d .picker-items { 1502 | overflow: hidden; 1503 | -webkit-perspective: 700px; 1504 | perspective: 700px; 1505 | } 1506 | .picker-3d .picker-item, .picker-3d .picker-slot, .picker-3d .picker-slot-wrapper { 1507 | -webkit-transform-style: preserve-3d; 1508 | transform-style: preserve-3d 1509 | } 1510 | .picker-3d .picker-slot { 1511 | overflow: visible 1512 | } 1513 | .picker-3d .picker-item { 1514 | -webkit-transform-origin: center center; 1515 | transform-origin: center center; 1516 | -webkit-backface-visibility: hidden; 1517 | backface-visibility: hidden; 1518 | -webkit-transition-timing-function: ease-out; 1519 | transition-timing-function: ease-out 1520 | } 1521 | 1522 | .mt-progress { 1523 | position: relative; 1524 | display: -webkit-box; 1525 | display: -ms-flexbox; 1526 | display: flex; 1527 | height: 30px; 1528 | line-height: 30px 1529 | } 1530 | .mt-progress > * { 1531 | display: -ms-flexbox; 1532 | display: flex; 1533 | display: -webkit-box 1534 | } 1535 | .mt-progress *[slot="start"] { 1536 | margin-right: 5px 1537 | } 1538 | .mt-progress *[slot="end"] { 1539 | margin-left: 5px 1540 | } 1541 | .mt-progress-content { 1542 | position: relative; 1543 | -webkit-box-flex: 1; 1544 | -ms-flex: 1; 1545 | flex: 1 1546 | } 1547 | .mt-progress-runway { 1548 | position: absolute; 1549 | -webkit-transform: translate(0, -50%); 1550 | transform: translate(0, -50%); 1551 | top: 50%; 1552 | left: 0; 1553 | right: 0; 1554 | background-color: #ebebeb; 1555 | height: 3px 1556 | } 1557 | .mt-progress-progress { 1558 | position: absolute; 1559 | display: block; 1560 | background-color: #26a2ff; 1561 | top: 50%; 1562 | -webkit-transform: translate(0, -50%); 1563 | transform: translate(0, -50%); 1564 | width: 0 1565 | } 1566 | 1567 | .mint-toast { 1568 | position: fixed; 1569 | max-width: 80%; 1570 | border-radius: 5px; 1571 | background: rgba(0, 0, 0, 0.7); 1572 | color: #fff; 1573 | box-sizing: border-box; 1574 | text-align: center; 1575 | z-index: 1000; 1576 | -webkit-transition: opacity .3s linear; 1577 | transition: opacity .3s linear 1578 | } 1579 | .mint-toast.is-placebottom { 1580 | bottom: 50px; 1581 | left: 50%; 1582 | -webkit-transform: translate(-50%, 0); 1583 | transform: translate(-50%, 0) 1584 | } 1585 | .mint-toast.is-placemiddle { 1586 | left: 50%; 1587 | top: 50%; 1588 | -webkit-transform: translate(-50%, -50%); 1589 | transform: translate(-50%, -50%) 1590 | } 1591 | .mint-toast.is-placetop { 1592 | top: 50px; 1593 | left: 50%; 1594 | -webkit-transform: translate(-50%, 0); 1595 | transform: translate(-50%, 0) 1596 | } 1597 | .mint-toast-icon { 1598 | display: block; 1599 | text-align: center; 1600 | font-size: 56px 1601 | } 1602 | .mint-toast-text { 1603 | font-size: 14px; 1604 | display: block; 1605 | text-align: center 1606 | } 1607 | .mint-toast-pop-enter, .mint-toast-pop-leave-active { 1608 | opacity: 0 1609 | } 1610 | 1611 | .mint-indicator { 1612 | -webkit-transition: opacity .2s linear; 1613 | transition: opacity .2s linear; 1614 | } 1615 | .mint-indicator-wrapper { 1616 | top: 50%; 1617 | left: 50%; 1618 | position: fixed; 1619 | -webkit-transform: translate(-50%, -50%); 1620 | transform: translate(-50%, -50%); 1621 | border-radius: 5px; 1622 | background: rgba(0, 0, 0, 0.7); 1623 | color: white; 1624 | box-sizing: border-box; 1625 | text-align: center; 1626 | } 1627 | .mint-indicator-text { 1628 | display: block; 1629 | color: #fff; 1630 | text-align: center; 1631 | margin-top: 10px; 1632 | font-size: 16px; 1633 | } 1634 | .mint-indicator-spin { 1635 | display: inline-block; 1636 | text-align: center; 1637 | } 1638 | .mint-indicator-mask { 1639 | top: 0; 1640 | left: 0; 1641 | position: fixed; 1642 | width: 100%; 1643 | height: 100%; 1644 | opacity: 0; 1645 | background: transparent; 1646 | } 1647 | .mint-indicator-enter, .mint-indicator-leave-active { 1648 | opacity: 0; 1649 | } 1650 | 1651 | .mint-msgbox { 1652 | position: fixed; 1653 | top: 50%; 1654 | left: 50%; 1655 | -webkit-transform: translate3d(-50%, -50%, 0); 1656 | transform: translate3d(-50%, -50%, 0); 1657 | background-color: #fff; 1658 | width: 85%; 1659 | border-radius: 3px; 1660 | font-size: 16px; 1661 | -webkit-user-select: none; 1662 | overflow: hidden; 1663 | -webkit-backface-visibility: hidden; 1664 | backface-visibility: hidden; 1665 | -webkit-transition: .2s; 1666 | transition: .2s; 1667 | } 1668 | .mint-msgbox-header { 1669 | padding: 15px 0 0; 1670 | } 1671 | .mint-msgbox-content { 1672 | padding: 10px 20px 15px; 1673 | border-bottom: 1px solid #ddd; 1674 | min-height: 36px; 1675 | position: relative; 1676 | } 1677 | .mint-msgbox-input { 1678 | padding-top: 15px; 1679 | } 1680 | .mint-msgbox-input input { 1681 | border: 1px solid #dedede; 1682 | border-radius: 5px; 1683 | padding: 4px 5px; 1684 | width: 100%; 1685 | -webkit-appearance: none; 1686 | -moz-appearance: none; 1687 | appearance: none; 1688 | outline: none; 1689 | } 1690 | .mint-msgbox-input input.invalid { 1691 | border-color: #ff4949; 1692 | } 1693 | .mint-msgbox-input input.invalid:focus { 1694 | border-color: #ff4949; 1695 | } 1696 | .mint-msgbox-errormsg { 1697 | color: red; 1698 | font-size: 12px; 1699 | min-height: 18px; 1700 | margin-top: 2px; 1701 | } 1702 | .mint-msgbox-title { 1703 | text-align: center; 1704 | padding-left: 0; 1705 | margin-bottom: 0; 1706 | font-size: 16px; 1707 | font-weight: 700; 1708 | color: #333; 1709 | } 1710 | .mint-msgbox-message { 1711 | color: #999; 1712 | margin: 0; 1713 | text-align: center; 1714 | line-height: 36px; 1715 | } 1716 | .mint-msgbox-btns { 1717 | display: -webkit-box; 1718 | display: -ms-flexbox; 1719 | display: flex; 1720 | height: 40px; 1721 | line-height: 40px; 1722 | } 1723 | .mint-msgbox-btn { 1724 | line-height: 35px; 1725 | display: block; 1726 | background-color: #fff; 1727 | -webkit-box-flex: 1; 1728 | -ms-flex: 1; 1729 | flex: 1; 1730 | margin: 0; 1731 | border: 0; 1732 | } 1733 | .mint-msgbox-btn:focus { 1734 | outline: none; 1735 | } 1736 | .mint-msgbox-btn:active { 1737 | background-color: #fff; 1738 | } 1739 | .mint-msgbox-cancel { 1740 | width: 50%; 1741 | border-right: 1px solid #ddd; 1742 | } 1743 | .mint-msgbox-cancel:active { 1744 | color: #000; 1745 | } 1746 | .mint-msgbox-confirm { 1747 | color: #26a2ff; 1748 | width: 50%; 1749 | } 1750 | .mint-msgbox-confirm:active { 1751 | color: #26a2ff; 1752 | } 1753 | .msgbox-bounce-enter { 1754 | opacity: 0; 1755 | -webkit-transform: translate3d(-50%, -50%, 0) scale(0.7); 1756 | transform: translate3d(-50%, -50%, 0) scale(0.7); 1757 | } 1758 | .msgbox-bounce-leave-active { 1759 | opacity: 0; 1760 | -webkit-transform: translate3d(-50%, -50%, 0) scale(0.9); 1761 | transform: translate3d(-50%, -50%, 0) scale(0.9); 1762 | } 1763 | 1764 | .v-modal-enter { 1765 | -webkit-animation: v-modal-in .2s ease; 1766 | animation: v-modal-in .2s ease; 1767 | } 1768 | .v-modal-leave { 1769 | -webkit-animation: v-modal-out .2s ease forwards; 1770 | animation: v-modal-out .2s ease forwards; 1771 | } 1772 | @-webkit-keyframes v-modal-in { 1773 | 0% { 1774 | opacity: 0; 1775 | } 1776 | 100% { 1777 | } 1778 | } 1779 | @keyframes v-modal-in { 1780 | 0% { 1781 | opacity: 0; 1782 | } 1783 | 100% { 1784 | } 1785 | } 1786 | @-webkit-keyframes v-modal-out { 1787 | 0% { 1788 | } 1789 | 100% { 1790 | opacity: 0; 1791 | } 1792 | } 1793 | @keyframes v-modal-out { 1794 | 0% { 1795 | } 1796 | 100% { 1797 | opacity: 0; 1798 | } 1799 | } 1800 | .v-modal { 1801 | position: fixed; 1802 | left: 0; 1803 | top: 0; 1804 | width: 100%; 1805 | height: 100%; 1806 | opacity: 0.5; 1807 | background: #000; 1808 | } 1809 | /* Cell Component */ 1810 | /* Header Component */ 1811 | /* Button Component */ 1812 | /* Tab Item Component */ 1813 | /* Tabbar Component */ 1814 | /* Navbar Component */ 1815 | /* Checklist Component */ 1816 | /* Radio Component */ 1817 | /* z-index */ 1818 | .mint-datetime { 1819 | width: 100%; 1820 | } 1821 | .mint-datetime .picker-slot-wrapper, .mint-datetime .picker-item { 1822 | -webkit-backface-visibility: hidden; 1823 | backface-visibility: hidden; 1824 | } 1825 | .mint-datetime .picker-toolbar { 1826 | border-bottom: solid 1px #eaeaea; 1827 | } 1828 | .mint-datetime-action { 1829 | display: inline-block; 1830 | width: 50%; 1831 | text-align: center; 1832 | line-height: 40px; 1833 | font-size: 16px; 1834 | color: #26a2ff; 1835 | } 1836 | .mint-datetime-cancel { 1837 | float: left; 1838 | } 1839 | .mint-datetime-confirm { 1840 | float: right; 1841 | } 1842 | /* Cell Component */ 1843 | /* Header Component */ 1844 | /* Button Component */ 1845 | /* Tab Item Component */ 1846 | /* Tabbar Component */ 1847 | /* Navbar Component */ 1848 | /* Checklist Component */ 1849 | /* Radio Component */ 1850 | /* z-index */ 1851 | .mint-indexlist { 1852 | width: 100%; 1853 | position: relative; 1854 | overflow: hidden 1855 | } 1856 | .mint-indexlist-content { 1857 | margin: 0; 1858 | padding: 0; 1859 | overflow: auto 1860 | } 1861 | .mint-indexlist-nav { 1862 | position: absolute; 1863 | top: 0; 1864 | bottom: 0; 1865 | right: 0; 1866 | margin: 0; 1867 | background-color: #fff; 1868 | border-left: solid 1px #ddd; 1869 | text-align: center; 1870 | max-height: 100%; 1871 | display: -webkit-box; 1872 | display: -ms-flexbox; 1873 | display: flex; 1874 | -webkit-box-orient: vertical; 1875 | -webkit-box-direction: normal; 1876 | -ms-flex-direction: column; 1877 | flex-direction: column; 1878 | -webkit-box-pack: center; 1879 | -ms-flex-pack: center; 1880 | justify-content: center 1881 | } 1882 | .mint-indexlist-navlist { 1883 | padding: 0; 1884 | margin: 0; 1885 | list-style: none; 1886 | max-height: 100%; 1887 | display: -webkit-box; 1888 | display: -ms-flexbox; 1889 | display: flex; 1890 | -webkit-box-orient: vertical; 1891 | -webkit-box-direction: normal; 1892 | -ms-flex-direction: column; 1893 | flex-direction: column 1894 | } 1895 | .mint-indexlist-navitem { 1896 | padding: 2px 6px; 1897 | font-size: 12px; 1898 | -webkit-user-select: none; 1899 | -moz-user-select: none; 1900 | -ms-user-select: none; 1901 | user-select: none; 1902 | -webkit-touch-callout: none 1903 | } 1904 | .mint-indexlist-indicator { 1905 | position: absolute; 1906 | width: 50px; 1907 | height: 50px; 1908 | top: 50%; 1909 | left: 50%; 1910 | -webkit-transform: translate(-50%, -50%); 1911 | transform: translate(-50%, -50%); 1912 | text-align: center; 1913 | line-height: 50px; 1914 | background-color: rgba(0, 0, 0, .7); 1915 | border-radius: 5px; 1916 | color: #fff; 1917 | font-size: 22px 1918 | } 1919 | 1920 | .mint-indexsection { 1921 | padding: 0; 1922 | margin: 0 1923 | } 1924 | .mint-indexsection-index { 1925 | margin: 0; 1926 | padding: 10px; 1927 | background-color: #fafafa 1928 | } 1929 | .mint-indexsection-index + ul { 1930 | padding: 0 1931 | } 1932 | 1933 | .mint-palette-button{ 1934 | display:inline-block; 1935 | position:relative; 1936 | border-radius:50%; 1937 | width: 56px; 1938 | height:56px; 1939 | line-height:56px; 1940 | text-align:center; 1941 | -webkit-transition:-webkit-transform .1s ease-in-out; 1942 | transition:-webkit-transform .1s ease-in-out; 1943 | transition:transform .1s ease-in-out; 1944 | transition:transform .1s ease-in-out, -webkit-transform .1s ease-in-out; 1945 | } 1946 | .mint-main-button{ 1947 | position:absolute; 1948 | top:0; 1949 | left:0; 1950 | width:100%; 1951 | height:100%; 1952 | border-radius:50%; 1953 | background-color:blue; 1954 | font-size:2em; 1955 | } 1956 | .mint-palette-button-active{ 1957 | -webkit-animation: mint-zoom 0.5s ease-in-out; 1958 | animation: mint-zoom 0.5s ease-in-out; 1959 | } 1960 | .mint-sub-button-container>*{ 1961 | position:absolute; 1962 | top:15px; 1963 | left:15px; 1964 | width:25px; 1965 | height:25px; 1966 | -webkit-transition:-webkit-transform .3s ease-in-out; 1967 | transition:-webkit-transform .3s ease-in-out; 1968 | transition:transform .3s ease-in-out; 1969 | transition: transform .3s ease-in-out, -webkit-transform .3s ease-in-out; 1970 | } 1971 | @-webkit-keyframes mint-zoom{ 1972 | 0% {-webkit-transform:scale(1);transform:scale(1) 1973 | } 1974 | 10% {-webkit-transform:scale(1.1);transform:scale(1.1) 1975 | } 1976 | 30% {-webkit-transform:scale(0.9);transform:scale(0.9) 1977 | } 1978 | 50% {-webkit-transform:scale(1.05);transform:scale(1.05) 1979 | } 1980 | 70% {-webkit-transform:scale(0.95);transform:scale(0.95) 1981 | } 1982 | 90% {-webkit-transform:scale(1.01);transform:scale(1.01) 1983 | } 1984 | 100% {-webkit-transform:scale(1);transform:scale(1) 1985 | } 1986 | } 1987 | @keyframes mint-zoom{ 1988 | 0% {-webkit-transform:scale(1);transform:scale(1) 1989 | } 1990 | 10% {-webkit-transform:scale(1.1);transform:scale(1.1) 1991 | } 1992 | 30% {-webkit-transform:scale(0.9);transform:scale(0.9) 1993 | } 1994 | 50% {-webkit-transform:scale(1.05);transform:scale(1.05) 1995 | } 1996 | 70% {-webkit-transform:scale(0.95);transform:scale(0.95) 1997 | } 1998 | 90% {-webkit-transform:scale(1.01);transform:scale(1.01) 1999 | } 2000 | 100% {-webkit-transform:scale(1);transform:scale(1) 2001 | } 2002 | } 2003 | 2004 | @font-face {font-family: "mintui"; 2005 | src: url(data:application/x-font-ttf;base64,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) 2006 | } 2007 | 2008 | .mintui { 2009 | font-family:"mintui" !important; 2010 | font-size:16px; 2011 | font-style:normal; 2012 | -webkit-font-smoothing: antialiased; 2013 | -webkit-text-stroke-width: 0.2px; 2014 | -moz-osx-font-smoothing: grayscale; 2015 | } 2016 | .mintui-search:before { content: "\E604"; } 2017 | .mintui-more:before { content: "\E601"; } 2018 | .mintui-back:before { content: "\E600"; } 2019 | .mintui-field-error:before { content: "\E605"; } 2020 | .mintui-field-warning:before { content: "\E608"; } 2021 | .mintui-success:before { content: "\E602"; } 2022 | .mintui-field-success:before { content: "\E609"; } 2023 | -------------------------------------------------------------------------------- /src/libs/utils.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | // 间隔时间获取 3 | /* 4 | * 时间格式:"2017-01-17T03:06:12.591Z" 5 | */ 6 | 7 | exports.getIntervalTime = (time) => { 8 | // 2014-10-07T13:05:32.158Z 9 | var now = new Date() 10 | var nowYear = now.getFullYear() 11 | var nowMonth = now.getMonth() + 1 12 | var nowDate = now.getDate() 13 | var nowHour = now.getHours() 14 | var nowMin = now.getMinutes() 15 | var nowSec = now.getSeconds() 16 | var year = nowYear - Number(time.substr(0, 4)) 17 | var month = nowMonth - Number(time.substr(5, 2)) 18 | var date = nowDate - Number(time.substr(8, 2)) 19 | var hour = nowHour - Number(time.substr(11, 2)) - 8 20 | var min = nowMin - Number(time.substr(14, 2)) 21 | var sec = nowSec - Number(time.substr(18, 2)) 22 | var timesec = year * 365 * 24 * 60 * 60 + month * 30 * 24 * 60 * 60 + date * 24 * 60 * 60 + hour * 60 * 60 + min * 60 + sec 23 | var timeNow = timesec / 60 / 60 / 24 / 365 24 | if (timeNow >= 1) { 25 | return parseInt(timeNow) + '年前' 26 | } else if (timeNow * 365 / 30 >= 1) { 27 | return parseInt(timeNow * 365 / 30) + '个月前' 28 | } else if (timeNow * 365 >= 1) { 29 | return parseInt(timeNow * 365) + '天前' 30 | } else if (timeNow * 365 * 24 >= 1) { 31 | return parseInt(timeNow * 365 * 24) + '小时前' 32 | } else if (timeNow * 365 * 24 * 60 >= 1) { 33 | return parseInt(timesec / 60) + '分钟前' 34 | } else { 35 | return timesec + '秒前' 36 | } 37 | } 38 | 39 | // NOTE: 判断类目 40 | exports.getCategory = (top, good, tab) => { 41 | var str = '' 42 | var className = '' 43 | if (top) { 44 | str = '置顶' 45 | className = 'top' 46 | } else if (good) { 47 | str = '精华' 48 | className = 'good' 49 | } else { 50 | switch (tab) { 51 | case 'share': 52 | str = '分享' 53 | className = 'share' 54 | break 55 | case 'ask': 56 | str = '问答' 57 | className = 'ask' 58 | break 59 | case 'job': 60 | str = '招聘' 61 | className = 'job' 62 | break 63 | default: 64 | str = '暂无' 65 | className = 'default' 66 | break 67 | } 68 | } 69 | return { 70 | str: str, 71 | className: className 72 | } 73 | } 74 | -------------------------------------------------------------------------------- /src/main.js: -------------------------------------------------------------------------------- 1 | // The Vue build version to load with the `import` command 2 | // (runtime-only or standalone) has been set in webpack.base.conf with an alias. 3 | import Vue from 'vue' 4 | import App from './App' 5 | import VueRouter from 'vue-router' 6 | import axios from 'axios' 7 | import VueAxios from 'vue-axios' 8 | import all from 'components/content/all' 9 | import message from 'components/message/message' 10 | import about from 'components/about/about' 11 | import MintUi from 'mint-ui' 12 | import articleDetail from 'components/article/articleDetail' 13 | import Dialog from 'components/more/dialog' 14 | import Login from 'components/login/login' 15 | import Person from 'components/person/person' 16 | import Publish from 'components/publish/publish' 17 | import Store from './store/store' 18 | import './libs/style.css' 19 | const store = Store.store 20 | 21 | Vue.use(VueRouter) 22 | Vue.use(VueAxios, axios) 23 | Vue.use(MintUi) 24 | 25 | const routes = [ 26 | { 27 | path: '/', 28 | component: all 29 | }, 30 | { 31 | path: '/all', 32 | component: all 33 | }, 34 | { 35 | path: '/message', 36 | component: message, 37 | beforeEnter: (to, from, next) => { 38 | if (store.getters.getLoginState.loginState) { 39 | next() 40 | } else { 41 | next({ path: '/login' }) 42 | } 43 | } 44 | }, 45 | { 46 | path: '/publish', 47 | component: Publish, 48 | beforeEnter: (to, from, next) => { 49 | if (store.getters.getLoginState.loginState) { 50 | next() 51 | } else { 52 | next({ path: '/login' }) 53 | } 54 | } 55 | }, 56 | { 57 | path: '/about', 58 | component: about 59 | }, 60 | { 61 | path: '/all/:id', 62 | component: all 63 | }, 64 | { 65 | path: '/topic/:id', 66 | component: articleDetail 67 | }, 68 | { 69 | path: '/dialog', 70 | component: Dialog 71 | }, 72 | { 73 | path: '/login', 74 | component: Login 75 | }, 76 | { 77 | path: '/person', 78 | component: Person 79 | } 80 | ] 81 | 82 | const router = new VueRouter({ 83 | linkActiveClass: 'active', 84 | routes, 85 | scrollBehavior (to, from, savedPosition) { 86 | return { x: 0, y: 0 } 87 | } 88 | }) 89 | /* eslint-disable no-new */ 90 | new Vue({ 91 | el: '#app', 92 | template: '', 93 | router, 94 | components: { App } 95 | }) 96 | -------------------------------------------------------------------------------- /src/normal/style/markdown.css: -------------------------------------------------------------------------------- 1 | @font-face { 2 | font-family: octicons-link; 3 | src: url(data:font/woff;charset=utf-8;base64,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) format('woff'); 4 | } 5 | 6 | .markdown-body { 7 | -ms-text-size-adjust: 100%; 8 | -webkit-text-size-adjust: 100%; 9 | line-height: 1.5; 10 | color: #333; 11 | font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; 12 | font-size: 16px; 13 | line-height: 1.5; 14 | word-wrap: break-word; 15 | } 16 | 17 | .markdown-body .pl-c { 18 | color: #969896; 19 | } 20 | 21 | .markdown-body .pl-c1, 22 | .markdown-body .pl-s .pl-v { 23 | color: #0086b3; 24 | } 25 | 26 | .markdown-body .pl-e, 27 | .markdown-body .pl-en { 28 | color: #795da3; 29 | } 30 | 31 | .markdown-body .pl-smi, 32 | .markdown-body .pl-s .pl-s1 { 33 | color: #333; 34 | } 35 | 36 | .markdown-body .pl-ent { 37 | color: #63a35c; 38 | } 39 | 40 | .markdown-body .pl-k { 41 | color: #a71d5d; 42 | } 43 | 44 | .markdown-body .pl-s, 45 | .markdown-body .pl-pds, 46 | .markdown-body .pl-s .pl-pse .pl-s1, 47 | .markdown-body .pl-sr, 48 | .markdown-body .pl-sr .pl-cce, 49 | .markdown-body .pl-sr .pl-sre, 50 | .markdown-body .pl-sr .pl-sra { 51 | color: #183691; 52 | } 53 | 54 | .markdown-body .pl-v { 55 | color: #ed6a43; 56 | } 57 | 58 | .markdown-body .pl-id { 59 | color: #b52a1d; 60 | } 61 | 62 | .markdown-body .pl-ii { 63 | color: #f8f8f8; 64 | background-color: #b52a1d; 65 | } 66 | 67 | .markdown-body .pl-sr .pl-cce { 68 | font-weight: bold; 69 | color: #63a35c; 70 | } 71 | 72 | .markdown-body .pl-ml { 73 | color: #693a17; 74 | } 75 | 76 | .markdown-body .pl-mh, 77 | .markdown-body .pl-mh .pl-en, 78 | .markdown-body .pl-ms { 79 | font-weight: bold; 80 | color: #1d3e81; 81 | } 82 | 83 | .markdown-body .pl-mq { 84 | color: #008080; 85 | } 86 | 87 | .markdown-body .pl-mi { 88 | font-style: italic; 89 | color: #333; 90 | } 91 | 92 | .markdown-body .pl-mb { 93 | font-weight: bold; 94 | color: #333; 95 | } 96 | 97 | .markdown-body .pl-md { 98 | color: #bd2c00; 99 | background-color: #ffecec; 100 | } 101 | 102 | .markdown-body .pl-mi1 { 103 | color: #55a532; 104 | background-color: #eaffea; 105 | } 106 | 107 | .markdown-body .pl-mdr { 108 | font-weight: bold; 109 | color: #795da3; 110 | } 111 | 112 | .markdown-body .pl-mo { 113 | color: #1d3e81; 114 | } 115 | 116 | .markdown-body .octicon { 117 | display: inline-block; 118 | vertical-align: text-top; 119 | fill: currentColor; 120 | } 121 | 122 | .markdown-body a { 123 | background-color: transparent; 124 | -webkit-text-decoration-skip: objects; 125 | } 126 | 127 | .markdown-body a:active, 128 | .markdown-body a:hover { 129 | outline-width: 0; 130 | } 131 | 132 | .markdown-body strong { 133 | font-weight: inherit; 134 | } 135 | 136 | .markdown-body strong { 137 | font-weight: bolder; 138 | } 139 | 140 | .markdown-body h1 { 141 | font-size: 2em; 142 | margin: 0.67em 0; 143 | } 144 | 145 | .markdown-body img { 146 | border-style: none; 147 | } 148 | 149 | .markdown-body svg:not(:root) { 150 | overflow: hidden; 151 | } 152 | 153 | .markdown-body code, 154 | .markdown-body kbd, 155 | .markdown-body pre { 156 | font-family: monospace, monospace; 157 | font-size: 1em; 158 | } 159 | 160 | .markdown-body hr { 161 | box-sizing: content-box; 162 | height: 0; 163 | overflow: visible; 164 | } 165 | 166 | .markdown-body input { 167 | font: inherit; 168 | margin: 0; 169 | } 170 | 171 | .markdown-body input { 172 | overflow: visible; 173 | } 174 | 175 | .markdown-body [type="checkbox"] { 176 | box-sizing: border-box; 177 | padding: 0; 178 | } 179 | 180 | .markdown-body * { 181 | box-sizing: border-box; 182 | } 183 | 184 | .markdown-body input { 185 | font-family: inherit; 186 | font-size: inherit; 187 | line-height: inherit; 188 | } 189 | 190 | .markdown-body a { 191 | color: #4078c0; 192 | text-decoration: none; 193 | } 194 | 195 | .markdown-body a:hover, 196 | .markdown-body a:active { 197 | text-decoration: underline; 198 | } 199 | 200 | .markdown-body strong { 201 | font-weight: 600; 202 | } 203 | 204 | .markdown-body hr { 205 | height: 0; 206 | margin: 15px 0; 207 | overflow: hidden; 208 | background: transparent; 209 | border: 0; 210 | border-bottom: 1px solid #ddd; 211 | } 212 | 213 | .markdown-body hr::before { 214 | display: table; 215 | content: ""; 216 | } 217 | 218 | .markdown-body hr::after { 219 | display: table; 220 | clear: both; 221 | content: ""; 222 | } 223 | 224 | .markdown-body table { 225 | border-spacing: 0; 226 | border-collapse: collapse; 227 | } 228 | 229 | .markdown-body td, 230 | .markdown-body th { 231 | padding: 0; 232 | } 233 | 234 | .markdown-body h1, 235 | .markdown-body h2, 236 | .markdown-body h3, 237 | .markdown-body h4, 238 | .markdown-body h5, 239 | .markdown-body h6 { 240 | margin-top: 0; 241 | margin-bottom: 0; 242 | } 243 | 244 | .markdown-body h1 { 245 | font-size: 32px; 246 | font-weight: 600; 247 | } 248 | 249 | .markdown-body h2 { 250 | font-size: 24px; 251 | font-weight: 600; 252 | } 253 | 254 | .markdown-body h3 { 255 | font-size: 20px; 256 | font-weight: 600; 257 | } 258 | 259 | .markdown-body h4 { 260 | font-size: 16px; 261 | font-weight: 600; 262 | } 263 | 264 | .markdown-body h5 { 265 | font-size: 14px; 266 | font-weight: 600; 267 | } 268 | 269 | .markdown-body h6 { 270 | font-size: 12px; 271 | font-weight: 600; 272 | } 273 | 274 | .markdown-body p { 275 | margin-top: 0; 276 | margin-bottom: 10px; 277 | } 278 | 279 | .markdown-body blockquote { 280 | margin: 0; 281 | } 282 | 283 | .markdown-body ul, 284 | .markdown-body ol { 285 | padding-left: 0; 286 | margin-top: 0; 287 | margin-bottom: 0; 288 | } 289 | 290 | .markdown-body ol ol, 291 | .markdown-body ul ol { 292 | list-style-type: lower-roman; 293 | } 294 | 295 | .markdown-body ul ul ol, 296 | .markdown-body ul ol ol, 297 | .markdown-body ol ul ol, 298 | .markdown-body ol ol ol { 299 | list-style-type: lower-alpha; 300 | } 301 | 302 | .markdown-body dd { 303 | margin-left: 0; 304 | } 305 | 306 | .markdown-body code { 307 | font-family: Consolas, "Liberation Mono", Menlo, Courier, monospace; 308 | font-size: 12px; 309 | } 310 | 311 | .markdown-body pre { 312 | margin-top: 0; 313 | margin-bottom: 0; 314 | font: 12px Consolas, "Liberation Mono", Menlo, Courier, monospace; 315 | } 316 | 317 | .markdown-body .octicon { 318 | vertical-align: text-bottom; 319 | } 320 | 321 | .markdown-body input { 322 | -webkit-font-feature-settings: "liga" 0; 323 | font-feature-settings: "liga" 0; 324 | } 325 | 326 | .markdown-body::before { 327 | display: table; 328 | content: ""; 329 | } 330 | 331 | .markdown-body::after { 332 | display: table; 333 | clear: both; 334 | content: ""; 335 | } 336 | 337 | .markdown-body>*:first-child { 338 | margin-top: 0 !important; 339 | } 340 | 341 | .markdown-body>*:last-child { 342 | margin-bottom: 0 !important; 343 | } 344 | 345 | .markdown-body a:not([href]) { 346 | color: inherit; 347 | text-decoration: none; 348 | } 349 | 350 | .markdown-body .anchor { 351 | float: left; 352 | padding-right: 4px; 353 | margin-left: -20px; 354 | line-height: 1; 355 | } 356 | 357 | .markdown-body .anchor:focus { 358 | outline: none; 359 | } 360 | 361 | .markdown-body p, 362 | .markdown-body blockquote, 363 | .markdown-body ul, 364 | .markdown-body ol, 365 | .markdown-body dl, 366 | .markdown-body table, 367 | .markdown-body pre { 368 | margin-top: 0; 369 | margin-bottom: 16px; 370 | } 371 | 372 | .markdown-body hr { 373 | height: 0.25em; 374 | padding: 0; 375 | margin: 24px 0; 376 | background-color: #e7e7e7; 377 | border: 0; 378 | } 379 | 380 | .markdown-body blockquote { 381 | padding: 0 1em; 382 | color: #777; 383 | border-left: 0.25em solid #ddd; 384 | } 385 | 386 | .markdown-body blockquote>:first-child { 387 | margin-top: 0; 388 | } 389 | 390 | .markdown-body blockquote>:last-child { 391 | margin-bottom: 0; 392 | } 393 | 394 | .markdown-body kbd { 395 | display: inline-block; 396 | padding: 3px 5px; 397 | font-size: 11px; 398 | line-height: 10px; 399 | color: #555; 400 | vertical-align: middle; 401 | background-color: #fcfcfc; 402 | border: solid 1px #ccc; 403 | border-bottom-color: #bbb; 404 | border-radius: 3px; 405 | box-shadow: inset 0 -1px 0 #bbb; 406 | } 407 | 408 | .markdown-body h1, 409 | .markdown-body h2, 410 | .markdown-body h3, 411 | .markdown-body h4, 412 | .markdown-body h5, 413 | .markdown-body h6 { 414 | margin-top: 24px; 415 | margin-bottom: 16px; 416 | font-weight: 600; 417 | line-height: 1.25; 418 | } 419 | 420 | .markdown-body h1 .octicon-link, 421 | .markdown-body h2 .octicon-link, 422 | .markdown-body h3 .octicon-link, 423 | .markdown-body h4 .octicon-link, 424 | .markdown-body h5 .octicon-link, 425 | .markdown-body h6 .octicon-link { 426 | color: #000; 427 | vertical-align: middle; 428 | visibility: hidden; 429 | } 430 | 431 | .markdown-body h1:hover .anchor, 432 | .markdown-body h2:hover .anchor, 433 | .markdown-body h3:hover .anchor, 434 | .markdown-body h4:hover .anchor, 435 | .markdown-body h5:hover .anchor, 436 | .markdown-body h6:hover .anchor { 437 | text-decoration: none; 438 | } 439 | 440 | .markdown-body h1:hover .anchor .octicon-link, 441 | .markdown-body h2:hover .anchor .octicon-link, 442 | .markdown-body h3:hover .anchor .octicon-link, 443 | .markdown-body h4:hover .anchor .octicon-link, 444 | .markdown-body h5:hover .anchor .octicon-link, 445 | .markdown-body h6:hover .anchor .octicon-link { 446 | visibility: visible; 447 | } 448 | 449 | .markdown-body h1 { 450 | padding-bottom: 0.3em; 451 | font-size: 2em; 452 | border-bottom: 1px solid #eee; 453 | } 454 | 455 | .markdown-body h2 { 456 | padding-bottom: 0.3em; 457 | font-size: 1.5em; 458 | border-bottom: 1px solid #eee; 459 | } 460 | 461 | .markdown-body h3 { 462 | font-size: 1.25em; 463 | } 464 | 465 | .markdown-body h4 { 466 | font-size: 1em; 467 | } 468 | 469 | .markdown-body h5 { 470 | font-size: 0.875em; 471 | } 472 | 473 | .markdown-body h6 { 474 | font-size: 0.85em; 475 | color: #777; 476 | } 477 | 478 | .markdown-body ul, 479 | .markdown-body ol { 480 | padding-left: 2em; 481 | } 482 | 483 | .markdown-body ul ul, 484 | .markdown-body ul ol, 485 | .markdown-body ol ol, 486 | .markdown-body ol ul { 487 | margin-top: 0; 488 | margin-bottom: 0; 489 | } 490 | 491 | .markdown-body li>p { 492 | margin-top: 16px; 493 | } 494 | 495 | .markdown-body li+li { 496 | margin-top: 0.25em; 497 | } 498 | 499 | .markdown-body dl { 500 | padding: 0; 501 | } 502 | 503 | .markdown-body dl dt { 504 | padding: 0; 505 | margin-top: 16px; 506 | font-size: 1em; 507 | font-style: italic; 508 | font-weight: bold; 509 | } 510 | 511 | .markdown-body dl dd { 512 | padding: 0 16px; 513 | margin-bottom: 16px; 514 | } 515 | 516 | .markdown-body table { 517 | display: block; 518 | width: 100%; 519 | overflow: auto; 520 | } 521 | 522 | .markdown-body table th { 523 | font-weight: bold; 524 | } 525 | 526 | .markdown-body table th, 527 | .markdown-body table td { 528 | padding: 6px 13px; 529 | border: 1px solid #ddd; 530 | } 531 | 532 | .markdown-body table tr { 533 | background-color: #fff; 534 | border-top: 1px solid #ccc; 535 | } 536 | 537 | .markdown-body table tr:nth-child(2n) { 538 | background-color: #f8f8f8; 539 | } 540 | 541 | .markdown-body img { 542 | max-width: 100%; 543 | box-sizing: content-box; 544 | background-color: #fff; 545 | } 546 | 547 | .markdown-body code { 548 | padding: 0; 549 | padding-top: 0.2em; 550 | padding-bottom: 0.2em; 551 | margin: 0; 552 | font-size: 85%; 553 | background-color: rgba(0,0,0,0.04); 554 | border-radius: 3px; 555 | } 556 | 557 | .markdown-body code::before, 558 | .markdown-body code::after { 559 | letter-spacing: -0.2em; 560 | content: "\00a0"; 561 | } 562 | 563 | .markdown-body pre { 564 | word-wrap: normal; 565 | } 566 | 567 | .markdown-body pre>code { 568 | padding: 0; 569 | margin: 0; 570 | font-size: 100%; 571 | word-break: normal; 572 | white-space: pre; 573 | background: transparent; 574 | border: 0; 575 | } 576 | 577 | .markdown-body .highlight { 578 | margin-bottom: 16px; 579 | } 580 | 581 | .markdown-body .highlight pre { 582 | margin-bottom: 0; 583 | word-break: normal; 584 | } 585 | 586 | .markdown-body .highlight pre, 587 | .markdown-body pre { 588 | padding: 16px; 589 | overflow: auto; 590 | font-size: 85%; 591 | line-height: 1.45; 592 | background-color: #f7f7f7; 593 | border-radius: 3px; 594 | } 595 | 596 | .markdown-body pre code { 597 | display: inline; 598 | max-width: auto; 599 | padding: 0; 600 | margin: 0; 601 | overflow: visible; 602 | line-height: inherit; 603 | word-wrap: normal; 604 | background-color: transparent; 605 | border: 0; 606 | } 607 | 608 | .markdown-body pre code::before, 609 | .markdown-body pre code::after { 610 | content: normal; 611 | } 612 | 613 | .markdown-body .pl-0 { 614 | padding-left: 0 !important; 615 | } 616 | 617 | .markdown-body .pl-1 { 618 | padding-left: 3px !important; 619 | } 620 | 621 | .markdown-body .pl-2 { 622 | padding-left: 6px !important; 623 | } 624 | 625 | .markdown-body .pl-3 { 626 | padding-left: 12px !important; 627 | } 628 | 629 | .markdown-body .pl-4 { 630 | padding-left: 24px !important; 631 | } 632 | 633 | .markdown-body .pl-5 { 634 | padding-left: 36px !important; 635 | } 636 | 637 | .markdown-body .pl-6 { 638 | padding-left: 48px !important; 639 | } 640 | 641 | .markdown-body .full-commit .btn-outline:not(:disabled):hover { 642 | color: #4078c0; 643 | border: 1px solid #4078c0; 644 | } 645 | 646 | .markdown-body kbd { 647 | display: inline-block; 648 | padding: 3px 5px; 649 | font: 11px Consolas, "Liberation Mono", Menlo, Courier, monospace; 650 | line-height: 10px; 651 | color: #555; 652 | vertical-align: middle; 653 | background-color: #fcfcfc; 654 | border: solid 1px #ccc; 655 | border-bottom-color: #bbb; 656 | border-radius: 3px; 657 | box-shadow: inset 0 -1px 0 #bbb; 658 | } 659 | 660 | .markdown-body :checked+.radio-label { 661 | position: relative; 662 | z-index: 1; 663 | border-color: #4078c0; 664 | } 665 | 666 | .markdown-body .task-list-item { 667 | list-style-type: none; 668 | } 669 | 670 | .markdown-body .task-list-item+.task-list-item { 671 | margin-top: 3px; 672 | } 673 | 674 | .markdown-body .task-list-item input { 675 | margin: 0 0.2em 0.25em -1.6em; 676 | vertical-align: middle; 677 | } 678 | 679 | .markdown-body hr { 680 | border-bottom-color: #eee; 681 | } 682 | -------------------------------------------------------------------------------- /src/normal/stylus/normal.styl: -------------------------------------------------------------------------------- 1 | lh-height($height) 2 | height $height 3 | line-height $height 4 | 5 | border-npx($height,$color) 6 | position: relative 7 | &:after 8 | display block 9 | content '' 10 | width 100% 11 | height $height 12 | background-color $color 13 | position: absolute 14 | bottom: 0 15 | left: 0 16 | ellipsis($width) 17 | width: $width 18 | white-space: nowrap 19 | text-overflow: ellipsis 20 | overflow: hidden 21 | 22 | @media (-webkit-min-device-pixel-ratio: 1.5),(min-device-pixel-ratio: 1.5) 23 | .border-npx 24 | &:after 25 | transform: scaleY(0.7) 26 | 27 | @media (-webkit-min-device-pixel-ratio: 2),(min-device-pixel-ratio: 2) 28 | border-npx 29 | &:after 30 | transform: scaleY(0.5) 31 | 32 | @media (-webkit-min-device-pixel-ratio: 3),(min-device-pixel-ratio: 3) 33 | border-npx 34 | &:after 35 | transform: scaleY(0.33) 36 | -------------------------------------------------------------------------------- /src/store/store.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | import Vuex from 'vuex' 3 | Vue.use(Vuex) 4 | 5 | let local = { 6 | setLocalItem () { 7 | window.localStorage.setItem('loginState', arguments[0]) 8 | window.localStorage.setItem('accessToken', arguments[1]) 9 | window.localStorage.setItem('userName', arguments[2]) 10 | }, 11 | getLocalItem (a, b, c) { 12 | a = window.localStorage.getItem('loginState') 13 | b = window.localStorage.getItem('accessToken') 14 | c = window.localStorage.getItem('userName') 15 | return [a, b, c] 16 | }, 17 | deleteLocalItem () { 18 | window.localStorage.clear() 19 | } 20 | } 21 | 22 | const store = new Vuex.Store({ 23 | state: { 24 | loginState: false, 25 | accessToken: '', 26 | userName: '' 27 | }, 28 | mutations: { 29 | loginIn (state, reload) { 30 | state.loginState = true 31 | state.accessToken = reload.accessToken 32 | state.userName = reload.loginname 33 | local.setLocalItem(true, reload.accessToken, reload.loginname) 34 | }, 35 | loginOut (state) { 36 | state.loginState = false 37 | state.accessToken = '' 38 | state.userName = '' 39 | local.deleteLocalItem() 40 | } 41 | }, 42 | getters: { 43 | getLoginState (state) { 44 | let arr = local.getLocalItem() 45 | state.loginState = arr[0] 46 | state.accessToken = arr[1] 47 | state.userName = arr[2] 48 | return state 49 | } 50 | } 51 | }) 52 | 53 | export default({ 54 | store: store 55 | }) 56 | -------------------------------------------------------------------------------- /static/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/feng-fu/vue-cnode/4694a41849b123fd6ad2eb4492d8ac2f121138b5/static/.gitkeep -------------------------------------------------------------------------------- /static/css/reset.css: -------------------------------------------------------------------------------- 1 | /** 2 | * Eric Meyer's Reset CSS v2.0 (http://meyerweb.com/eric/tools/css/reset/) 3 | * http://cssreset.com 4 | */ 5 | html, body, div, span, applet, object, iframe, 6 | h1, h2, h3, h4, h5, h6, p, blockquote, pre, 7 | a, abbr, acronym, address, big, cite, code, 8 | del, dfn, em, img, ins, kbd, q, s, samp, 9 | small, strike, strong, sub, sup, tt, var, 10 | b, u, i, center, 11 | dl, dt, dd, ol, ul, li, 12 | fieldset, form, label, legend, 13 | table, caption, tbody, tfoot, thead, tr, th, td, 14 | article, aside, canvas, details, embed, 15 | figure, figcaption, footer, header, 16 | menu, nav, output, ruby, section, summary, 17 | time, mark, audio, video, input { 18 | margin: 0; 19 | padding: 0; 20 | border: 0; 21 | font-size: 100%; 22 | font-weight: normal; 23 | vertical-align: baseline; 24 | } 25 | 26 | /* HTML5 display-role reset for older browsers */ 27 | article, aside, details, figcaption, figure, 28 | footer, header, menu, nav, section { 29 | display: block; 30 | } 31 | 32 | body { 33 | line-height: 1; 34 | font-family: SF UI Display,Arial,PingFang SC,Hiragino Sans GB,Microsoft YaHei,WenQuanYi Micro Hei,sans-serif; 35 | } 36 | 37 | blockquote, q { 38 | quotes: none; 39 | } 40 | 41 | blockquote:before, blockquote:after, 42 | q:before, q:after { 43 | content: none; 44 | } 45 | 46 | table { 47 | border-collapse: collapse; 48 | border-spacing: 0; 49 | } 50 | 51 | /* custom */ 52 | a { 53 | color: #7e8c8d; 54 | text-decoration: none; 55 | -webkit-backface-visibility: hidden; 56 | } 57 | 58 | li { 59 | list-style: none; 60 | } 61 | 62 | ::-webkit-scrollbar { 63 | width: 5px; 64 | height: 5px; 65 | } 66 | 67 | ::-webkit-scrollbar-track-piece { 68 | background-color: rgba(0, 0, 0, 0.2); 69 | -webkit-border-radius: 6px; 70 | } 71 | 72 | ::-webkit-scrollbar-thumb:vertical { 73 | height: 5px; 74 | background-color: rgba(125, 125, 125, 0.7); 75 | -webkit-border-radius: 6px; 76 | } 77 | 78 | ::-webkit-scrollbar-thumb:horizontal { 79 | width: 5px; 80 | background-color: rgba(125, 125, 125, 0.7); 81 | -webkit-border-radius: 6px; 82 | } 83 | 84 | html, body { 85 | width: 100%; 86 | } 87 | 88 | body { 89 | -webkit-text-size-adjust: none; 90 | -webkit-tap-highlight-color: rgba(0, 0, 0, 0); 91 | } 92 | 93 | .clearfix:after { 94 | content: ''; 95 | display: block; 96 | clear: both; 97 | } 98 | --------------------------------------------------------------------------------