├── .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 |
2 |
3 |
4 |
5 |
6 |
7 |
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 |
2 |
3 |
4 |
5 |
6 |
7 |
这是一个基于vue的项目
8 |
主要采用的技术包括:
9 |
12 |
如果你觉得有用,就来给个star吧
13 |
14 |
扫描二维码预览:
15 |

16 |
Android App 下载
17 |
18 |
19 |
20 |
31 |
53 |
--------------------------------------------------------------------------------
/src/components/article/articleDetail.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | {{content.title}}
8 |
9 |
10 |
![avatar]()
11 |
{{content.author.loginname}}
12 |
作者
13 |
14 |
15 |
发表于:{{getChineseDate(content.create_at)}}
16 |
17 |
34 |
35 |
36 |
37 |
38 |
提交
39 |
40 |
41 |
42 |
43 |
44 |
185 |
186 |
290 |
--------------------------------------------------------------------------------
/src/components/content/all.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
30 |
31 |
32 |
加载更多
33 |
加载失败
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
161 |
242 |
--------------------------------------------------------------------------------
/src/components/loading/loading.vue:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
7 |
14 |
33 |
--------------------------------------------------------------------------------
/src/components/login/login.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 | 登录
11 |
12 |
16 | {{loginResult}}
17 |
18 |
19 |
20 |
21 |
22 |
23 |
63 |
90 |
--------------------------------------------------------------------------------
/src/components/message/message.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
已读消息
8 |
未读消息
9 |
我的收藏
10 |
11 |
56 |
57 |
58 |
59 |
60 |
128 |
129 |
243 |
--------------------------------------------------------------------------------
/src/components/more/dialog.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
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 |
69 |
78 |
--------------------------------------------------------------------------------
/src/components/person/person.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
20 |
21 | -
22 |
23 |
24 |
![avatar]()
25 |
{{item.author.loginname}}
26 |
最后回复:{{getlastReplayTime(item.last_reply_at)}}
27 |
28 | {{item.title}}
29 |
30 |
31 |
32 |
暂无更多动态
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
72 |
125 |
--------------------------------------------------------------------------------
/src/components/publish/publish.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
13 |
14 | 发布
15 |
16 |
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 |
--------------------------------------------------------------------------------