├── .DS_Store
├── .babelrc
├── .csscomb.json
├── .editorconfig
├── .eslintrc.js
├── .gitignore
├── .npmignore
├── build
├── build.js
├── dev-client.js
├── dev-server.js
├── utils.js
├── webpack.base.conf.js
├── webpack.dev.conf.js
├── webpack.prod.conf.js
└── webpack.publish.conf.js
├── config
├── dev.env.js
├── index.js
├── prod.env.js
└── test.env.js
├── directives
├── ripple.js
└── tooltips.js
├── dist
├── index.html
├── readme.md
└── static
│ ├── app.c9f001167ed2501cdbb85da626973963.css
│ ├── app.c9f001167ed2501cdbb85da626973963.css.map
│ ├── app.db8e8b52e4e2df3d221a.js
│ └── app.db8e8b52e4e2df3d221a.js.map
├── example
├── .gitignore
├── App.vue
├── assets
│ └── logo.png
├── components
│ ├── avatar.vue
│ ├── buttons.vue
│ ├── card.vue
│ ├── checkbox.vue
│ ├── datePicker.vue
│ ├── dialog.vue
│ ├── input.vue
│ ├── layout.vue
│ ├── lists.vue
│ ├── menu.vue
│ ├── pagination.vue
│ ├── radio.vue
│ ├── radioGroup.vue
│ ├── search.vue
│ ├── select.vue
│ ├── snackbar.vue
│ ├── spinner.vue
│ ├── switch.vue
│ ├── tables.vue
│ ├── tabs.vue
│ ├── toolbar.vue
│ └── tooltips.vue
├── example-code.vue
├── header.vue
├── home.vue
├── main.js
├── readme.md
├── route-config.js
└── sidebar.vue
├── filters
└── .gitkeep
├── index.html
├── package.json
├── readme.md
├── src
├── avatar
│ └── avatar.vue
├── buttons
│ └── buttons.vue
├── card
│ └── card.vue
├── checkbox
│ └── checkbox.vue
├── datePicker
│ ├── components
│ │ ├── footer.vue
│ │ ├── header.vue
│ │ ├── pickDate.vue
│ │ ├── pickMonth.vue
│ │ └── pickYear.vue
│ └── datePicker.vue
├── dialog
│ └── dialog.vue
├── index.js
├── input
│ └── input.vue
├── layout
│ └── layout.vue
├── lists
│ ├── list.vue
│ ├── listOneLine.vue
│ ├── listThreeLine.vue
│ └── listTwoLine.vue
├── menu
│ └── menu.vue
├── pagination
│ └── pagination.vue
├── panel
│ └── panel.vue
├── radio
│ ├── radio.vue
│ └── radioGroup.vue
├── search
│ └── search.vue
├── select
│ └── select.vue
├── slider
│ └── slider.vue
├── snackbar
│ └── snackbar.vue
├── spinner
│ └── spinner.vue
├── switch
│ └── switch.vue
├── tables
│ └── tables.vue
├── tabs
│ └── tabs.vue
├── toolbar
│ └── toolbar.vue
└── tooltips
│ └── tooltips.vue
├── static
└── .gitkeep
├── utils
├── handleEvent.js
└── parseHtml.js
└── vue-material.js
/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/taoche/vue-material/d6a75840614d4eeed6bbb3bbb3211f2db90d0826/.DS_Store
--------------------------------------------------------------------------------
/.babelrc:
--------------------------------------------------------------------------------
1 | {
2 | "presets": ["es2015", "stage-2"],
3 | "plugins": ["transform-runtime"],
4 | "comments": false
5 | }
6 |
--------------------------------------------------------------------------------
/.csscomb.json:
--------------------------------------------------------------------------------
1 | {
2 | "always-semicolon": true,
3 | "block-indent": 2,
4 | "color-case": "lower",
5 | "color-shorthand": true,
6 | "eof-newline": true,
7 | "leading-zero": false,
8 | "remove-empty-rulesets": true,
9 | "space-after-colon": 1,
10 | "space-after-combinator": 1,
11 | "space-before-selector-delimiter": 0,
12 | "space-between-declarations": "\n",
13 | "space-after-opening-brace": "\n",
14 | "space-before-closing-brace": "\n",
15 | "space-before-colon": 0,
16 | "space-before-combinator": 1,
17 | "space-before-opening-brace": 1,
18 | "strip-spaces": true,
19 | "unitless-zero": true,
20 | "vendor-prefix-align": true,
21 | "sort-order": [
22 | [
23 | "position",
24 | "top",
25 | "right",
26 | "bottom",
27 | "left",
28 | "z-index",
29 | "display",
30 | "float",
31 | "width",
32 | "min-width",
33 | "max-width",
34 | "height",
35 | "min-height",
36 | "max-height",
37 | "-webkit-box-sizing",
38 | "-moz-box-sizing",
39 | "box-sizing",
40 | "-webkit-appearance",
41 | "padding",
42 | "padding-top",
43 | "padding-right",
44 | "padding-bottom",
45 | "padding-left",
46 | "margin",
47 | "margin-top",
48 | "margin-right",
49 | "margin-bottom",
50 | "margin-left",
51 | "overflow",
52 | "overflow-x",
53 | "overflow-y",
54 | "-webkit-overflow-scrolling",
55 | "-ms-overflow-x",
56 | "-ms-overflow-y",
57 | "-ms-overflow-style",
58 | "clip",
59 | "clear",
60 | "font",
61 | "font-family",
62 | "font-size",
63 | "font-style",
64 | "font-weight",
65 | "font-variant",
66 | "font-size-adjust",
67 | "font-stretch",
68 | "font-effect",
69 | "font-emphasize",
70 | "font-emphasize-position",
71 | "font-emphasize-style",
72 | "font-smooth",
73 | "-webkit-hyphens",
74 | "-moz-hyphens",
75 | "hyphens",
76 | "line-height",
77 | "color",
78 | "text-align",
79 | "-webkit-text-align-last",
80 | "-moz-text-align-last",
81 | "-ms-text-align-last",
82 | "text-align-last",
83 | "text-emphasis",
84 | "text-emphasis-color",
85 | "text-emphasis-style",
86 | "text-emphasis-position",
87 | "text-decoration",
88 | "text-indent",
89 | "text-justify",
90 | "text-outline",
91 | "-ms-text-overflow",
92 | "text-overflow",
93 | "text-overflow-ellipsis",
94 | "text-overflow-mode",
95 | "text-shadow",
96 | "text-transform",
97 | "text-wrap",
98 | "-webkit-text-size-adjust",
99 | "-ms-text-size-adjust",
100 | "letter-spacing",
101 | "-ms-word-break",
102 | "word-break",
103 | "word-spacing",
104 | "-ms-word-wrap",
105 | "word-wrap",
106 | "-moz-tab-size",
107 | "-o-tab-size",
108 | "tab-size",
109 | "white-space",
110 | "vertical-align",
111 | "list-style",
112 | "list-style-position",
113 | "list-style-type",
114 | "list-style-image",
115 | "pointer-events",
116 | "-ms-touch-action",
117 | "touch-action",
118 | "cursor",
119 | "visibility",
120 | "zoom",
121 | "flex-direction",
122 | "flex-order",
123 | "flex-pack",
124 | "flex-align",
125 | "table-layout",
126 | "empty-cells",
127 | "caption-side",
128 | "border-spacing",
129 | "border-collapse",
130 | "content",
131 | "quotes",
132 | "counter-reset",
133 | "counter-increment",
134 | "resize",
135 | "-webkit-user-select",
136 | "-moz-user-select",
137 | "-ms-user-select",
138 | "-o-user-select",
139 | "user-select",
140 | "nav-index",
141 | "nav-up",
142 | "nav-right",
143 | "nav-down",
144 | "nav-left",
145 | "background",
146 | "background-color",
147 | "background-image",
148 | "-ms-filter:\\'progid:DXImageTransform.Microsoft.gradient",
149 | "filter:progid:DXImageTransform.Microsoft.gradient",
150 | "filter:progid:DXImageTransform.Microsoft.AlphaImageLoader",
151 | "filter",
152 | "background-repeat",
153 | "background-attachment",
154 | "background-position",
155 | "background-position-x",
156 | "background-position-y",
157 | "-webkit-background-clip",
158 | "-moz-background-clip",
159 | "background-clip",
160 | "background-origin",
161 | "-webkit-background-size",
162 | "-moz-background-size",
163 | "-o-background-size",
164 | "background-size",
165 | "border",
166 | "border-color",
167 | "border-style",
168 | "border-width",
169 | "border-top",
170 | "border-top-color",
171 | "border-top-style",
172 | "border-top-width",
173 | "border-right",
174 | "border-right-color",
175 | "border-right-style",
176 | "border-right-width",
177 | "border-bottom",
178 | "border-bottom-color",
179 | "border-bottom-style",
180 | "border-bottom-width",
181 | "border-left",
182 | "border-left-color",
183 | "border-left-style",
184 | "border-left-width",
185 | "border-radius",
186 | "border-top-left-radius",
187 | "border-top-right-radius",
188 | "border-bottom-right-radius",
189 | "border-bottom-left-radius",
190 | "-webkit-border-image",
191 | "-moz-border-image",
192 | "-o-border-image",
193 | "border-image",
194 | "-webkit-border-image-source",
195 | "-moz-border-image-source",
196 | "-o-border-image-source",
197 | "border-image-source",
198 | "-webkit-border-image-slice",
199 | "-moz-border-image-slice",
200 | "-o-border-image-slice",
201 | "border-image-slice",
202 | "-webkit-border-image-width",
203 | "-moz-border-image-width",
204 | "-o-border-image-width",
205 | "border-image-width",
206 | "-webkit-border-image-outset",
207 | "-moz-border-image-outset",
208 | "-o-border-image-outset",
209 | "border-image-outset",
210 | "-webkit-border-image-repeat",
211 | "-moz-border-image-repeat",
212 | "-o-border-image-repeat",
213 | "border-image-repeat",
214 | "outline",
215 | "outline-width",
216 | "outline-style",
217 | "outline-color",
218 | "outline-offset",
219 | "-webkit-box-shadow",
220 | "-moz-box-shadow",
221 | "box-shadow",
222 | "filter:progid:DXImageTransform.Microsoft.Alpha(Opacity",
223 | "-ms-filter:\\'progid:DXImageTransform.Microsoft.Alpha",
224 | "opacity",
225 | "-ms-interpolation-mode",
226 | "-webkit-transition",
227 | "-moz-transition",
228 | "-ms-transition",
229 | "-o-transition",
230 | "transition",
231 | "-webkit-transition-delay",
232 | "-moz-transition-delay",
233 | "-ms-transition-delay",
234 | "-o-transition-delay",
235 | "transition-delay",
236 | "-webkit-transition-timing-function",
237 | "-moz-transition-timing-function",
238 | "-ms-transition-timing-function",
239 | "-o-transition-timing-function",
240 | "transition-timing-function",
241 | "-webkit-transition-duration",
242 | "-moz-transition-duration",
243 | "-ms-transition-duration",
244 | "-o-transition-duration",
245 | "transition-duration",
246 | "-webkit-transition-property",
247 | "-moz-transition-property",
248 | "-ms-transition-property",
249 | "-o-transition-property",
250 | "transition-property",
251 | "-webkit-transform",
252 | "-moz-transform",
253 | "-ms-transform",
254 | "-o-transform",
255 | "transform",
256 | "-webkit-transform-origin",
257 | "-moz-transform-origin",
258 | "-ms-transform-origin",
259 | "-o-transform-origin",
260 | "transform-origin",
261 | "-webkit-animation",
262 | "-moz-animation",
263 | "-ms-animation",
264 | "-o-animation",
265 | "animation",
266 | "-webkit-animation-name",
267 | "-moz-animation-name",
268 | "-ms-animation-name",
269 | "-o-animation-name",
270 | "animation-name",
271 | "-webkit-animation-duration",
272 | "-moz-animation-duration",
273 | "-ms-animation-duration",
274 | "-o-animation-duration",
275 | "animation-duration",
276 | "-webkit-animation-play-state",
277 | "-moz-animation-play-state",
278 | "-ms-animation-play-state",
279 | "-o-animation-play-state",
280 | "animation-play-state",
281 | "-webkit-animation-timing-function",
282 | "-moz-animation-timing-function",
283 | "-ms-animation-timing-function",
284 | "-o-animation-timing-function",
285 | "animation-timing-function",
286 | "-webkit-animation-delay",
287 | "-moz-animation-delay",
288 | "-ms-animation-delay",
289 | "-o-animation-delay",
290 | "animation-delay",
291 | "-webkit-animation-iteration-count",
292 | "-moz-animation-iteration-count",
293 | "-ms-animation-iteration-count",
294 | "-o-animation-iteration-count",
295 | "animation-iteration-count",
296 | "-webkit-animation-direction",
297 | "-moz-animation-direction",
298 | "-ms-animation-direction",
299 | "-o-animation-direction",
300 | "animation-direction"
301 | ]
302 | ]
303 | }
304 |
--------------------------------------------------------------------------------
/.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 |
--------------------------------------------------------------------------------
/.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 | // allow async-await
18 | 'generator-star-spacing': 0,
19 | // allow debugger during development
20 | 'no-debugger': process.env.NODE_ENV === 'production' ? 2 : 0
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 | node_modules
3 | TODO.md
4 | config.codekit
5 | examples/**/build.js
6 | /.DS_Store
7 |
--------------------------------------------------------------------------------
/.npmignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 | *.log
3 | examples
4 | dist
5 | build
6 | config
7 |
8 |
--------------------------------------------------------------------------------
/build/build.js:
--------------------------------------------------------------------------------
1 | // https://github.com/shelljs/shelljs
2 | require('shelljs/global')
3 | env.NODE_ENV = 'production'
4 |
5 | var path = require('path')
6 | var config = require('../config')
7 | var ora = require('ora')
8 | var webpack = require('webpack')
9 | var webpackConfig = require('./webpack.prod.conf')
10 |
11 | console.log(
12 | ' Tip:\n' +
13 | ' Built files are meant to be served over an HTTP server.\n' +
14 | ' Opening index.html over file:// won\'t work.\n'
15 | )
16 |
17 | var spinner = ora('building for production...')
18 | spinner.start()
19 |
20 | var assetsPath = path.join(config.build.assetsRoot, config.build.assetsSubDirectory)
21 | rm('-rf', assetsPath)
22 | mkdir('-p', assetsPath)
23 | cp('-R', 'static/', assetsPath)
24 |
25 | webpack(webpackConfig, function (err, stats) {
26 | spinner.stop()
27 | if (err) throw err
28 | process.stdout.write(stats.toString({
29 | colors: true,
30 | modules: false,
31 | children: false,
32 | chunks: false,
33 | chunkModules: false
34 | }) + '\n')
35 | })
36 |
--------------------------------------------------------------------------------
/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 | var path = require('path')
2 | var express = require('express')
3 | var webpack = require('webpack')
4 | var config = require('../config')
5 | var proxyMiddleware = require('http-proxy-middleware')
6 | var webpackConfig = process.env.NODE_ENV === 'testing'
7 | ? require('./webpack.prod.conf')
8 | : require('./webpack.dev.conf')
9 |
10 | // default port where dev server listens for incoming traffic
11 | var port = process.env.PORT || config.dev.port
12 | // Define HTTP proxies to your custom API backend
13 | // https://github.com/chimurai/http-proxy-middleware
14 | var proxyTable = config.dev.proxyTable
15 |
16 | var app = express()
17 | var compiler = webpack(webpackConfig)
18 |
19 | var devMiddleware = require('webpack-dev-middleware')(compiler, {
20 | publicPath: webpackConfig.output.publicPath,
21 | stats: {
22 | colors: true,
23 | chunks: false
24 | }
25 | })
26 |
27 | var hotMiddleware = require('webpack-hot-middleware')(compiler)
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 | module.exports = app.listen(port, function (err) {
60 | if (err) {
61 | console.log(err)
62 | return
63 | }
64 | console.log('Listening at http://localhost:' + port + '\n')
65 | })
66 |
--------------------------------------------------------------------------------
/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 | if (options.extract) {
29 | return ExtractTextPlugin.extract('vue-style-loader', sourceLoader)
30 | } else {
31 | return ['vue-style-loader', sourceLoader].join('!')
32 | }
33 | }
34 |
35 | // http://vuejs.github.io/vue-loader/configurations/extract-css.html
36 | return {
37 | css: generateLoaders(['css']),
38 | postcss: generateLoaders(['css']),
39 | less: generateLoaders(['css', 'less']),
40 | sass: generateLoaders(['css', 'sass?indentedSyntax']),
41 | scss: generateLoaders(['css', 'sass']),
42 | stylus: generateLoaders(['css', 'stylus']),
43 | styl: generateLoaders(['css', 'stylus'])
44 | }
45 | }
46 |
47 | // Generate loaders for standalone style files (outside of .vue)
48 | exports.styleLoaders = function (options) {
49 | var output = []
50 | var loaders = exports.cssLoaders(options)
51 | for (var extension in loaders) {
52 | var loader = loaders[extension]
53 | output.push({
54 | test: new RegExp('\\.' + extension + '$'),
55 | loader: loader
56 | })
57 | }
58 | return output
59 | }
60 |
--------------------------------------------------------------------------------
/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 | module.exports = {
7 | entry: {
8 | app: './example/main.js'
9 | },
10 | output: {
11 | path: config.build.assetsRoot,
12 | publicPath: process.env.NODE_ENV === 'production' ? config.build.assetsPublicPath : config.dev.assetsPublicPath,
13 | filename: '[name].js'
14 | },
15 | resolve: {
16 | extensions: ['', '.js', '.vue'],
17 | fallback: [path.join(__dirname, '../node_modules')],
18 | alias: {
19 | 'src': path.resolve(__dirname, '../src'),
20 | 'utils': path.resolve(__dirname, '../utils'),
21 | 'directives': path.resolve(__dirname, '../directives'),
22 | 'assets': path.resolve(__dirname, '../src/assets'),
23 | 'components': path.resolve(__dirname, '../src/components')
24 | }
25 | },
26 | resolveLoader: {
27 | fallback: [path.join(__dirname, '../node_modules')]
28 | },
29 | module: {
30 | preLoaders: [
31 | {
32 | test: /\.vue$/,
33 | loader: 'eslint',
34 | include: projectRoot,
35 | exclude: /node_modules/
36 | },
37 | {
38 | test: /\.js$/,
39 | loader: 'eslint',
40 | include: projectRoot,
41 | exclude: /node_modules/
42 | }
43 | ],
44 | loaders: [
45 | {
46 | test: /\.vue$/,
47 | loader: 'vue'
48 | },
49 | {
50 | test: /\.js$/,
51 | loader: 'babel',
52 | include: projectRoot,
53 | exclude: /node_modules/
54 | },
55 | {
56 | test: /\.json$/,
57 | loader: 'json'
58 | },
59 | {
60 | test: /\.html$/,
61 | loader: 'vue-html'
62 | },
63 | {
64 | test: /\.(png|jpe?g|gif|svg)(\?.*)?$/,
65 | loader: 'url',
66 | query: {
67 | limit: 10000,
68 | name: utils.assetsPath('img/[name].[hash:7].[ext]')
69 | }
70 | },
71 | {
72 | test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/,
73 | loader: 'url',
74 | query: {
75 | limit: 10000,
76 | name: utils.assetsPath('fonts/[name].[hash:7].[ext]')
77 | }
78 | }
79 | ]
80 | },
81 | eslint: {
82 | formatter: require('eslint-friendly-formatter')
83 | },
84 | vue: {
85 | loaders: utils.cssLoaders()
86 | }
87 | }
88 |
--------------------------------------------------------------------------------
/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 |
8 | // add hot-reload related code to entry chunks
9 | Object.keys(baseWebpackConfig.entry).forEach(function (name) {
10 | baseWebpackConfig.entry[name] = ['./build/dev-client'].concat(baseWebpackConfig.entry[name])
11 | })
12 |
13 | module.exports = merge(baseWebpackConfig, {
14 | module: {
15 | loaders: utils.styleLoaders({ sourceMap: config.dev.cssSourceMap })
16 | },
17 | // eval-source-map is faster for development
18 | devtool: '#eval-source-map',
19 | plugins: [
20 | new webpack.DefinePlugin({
21 | 'process.env': config.dev.env
22 | }),
23 | // https://github.com/glenjamin/webpack-hot-middleware#installation--usage
24 | new webpack.optimize.OccurenceOrderPlugin(),
25 | new webpack.HotModuleReplacementPlugin(),
26 | new webpack.NoErrorsPlugin(),
27 | // https://github.com/ampedandwired/html-webpack-plugin
28 | new HtmlWebpackPlugin({
29 | filename: 'index.html',
30 | template: 'index.html',
31 | inject: true
32 | })
33 | ]
34 | })
35 |
--------------------------------------------------------------------------------
/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 = process.env.NODE_ENV === 'testing'
10 | ? require('../config/test.env')
11 | : config.build.env
12 |
13 | var webpackConfig = merge(baseWebpackConfig, {
14 | module: {
15 | loaders: utils.styleLoaders({ sourceMap: config.build.productionSourceMap, extract: true })
16 | },
17 | devtool: config.build.productionSourceMap ? '#source-map' : false,
18 | output: {
19 | path: config.build.assetsRoot,
20 | filename: utils.assetsPath('js/[name].[chunkhash].js'),
21 | chunkFilename: utils.assetsPath('js/[id].[chunkhash].js')
22 | },
23 | vue: {
24 | loaders: utils.cssLoaders({
25 | sourceMap: config.build.productionSourceMap,
26 | extract: true
27 | })
28 | },
29 | plugins: [
30 | // http://vuejs.github.io/vue-loader/workflow/production.html
31 | new webpack.DefinePlugin({
32 | 'process.env': env
33 | }),
34 | new webpack.optimize.UglifyJsPlugin({
35 | compress: {
36 | warnings: false
37 | }
38 | }),
39 | new webpack.optimize.OccurenceOrderPlugin(),
40 | // extract css into its own file
41 | new ExtractTextPlugin(utils.assetsPath('css/[name].[contenthash].css')),
42 | // generate dist index.html with correct asset hash for caching.
43 | // you can customize output by editing /index.html
44 | // see https://github.com/ampedandwired/html-webpack-plugin
45 | new HtmlWebpackPlugin({
46 | filename: process.env.NODE_ENV === 'testing'
47 | ? 'index.html'
48 | : config.build.index,
49 | template: 'index.html',
50 | inject: true,
51 | minify: {
52 | removeComments: true,
53 | collapseWhitespace: true,
54 | removeAttributeQuotes: true
55 | // more options:
56 | // https://github.com/kangax/html-minifier#options-quick-reference
57 | },
58 | // necessary to consistently work with multiple chunks via CommonsChunkPlugin
59 | chunksSortMode: 'dependency'
60 | }),
61 | // split vendor js into its own file
62 | new webpack.optimize.CommonsChunkPlugin({
63 | name: 'vendor',
64 | minChunks: function (module, count) {
65 | // any required modules inside node_modules are extracted to vendor
66 | return (
67 | module.resource &&
68 | /\.js$/.test(module.resource) &&
69 | module.resource.indexOf(
70 | path.join(__dirname, '../node_modules')
71 | ) === 0
72 | )
73 | }
74 | }),
75 | // extract webpack runtime and module manifest to its own file in order to
76 | // prevent vendor hash from being updated whenever app bundle is updated
77 | new webpack.optimize.CommonsChunkPlugin({
78 | name: 'manifest',
79 | chunks: ['vendor']
80 | })
81 | ]
82 | })
83 |
84 | if (config.build.productionGzip) {
85 | var CompressionWebpackPlugin = require('compression-webpack-plugin')
86 |
87 | webpackConfig.plugins.push(
88 | new CompressionWebpackPlugin({
89 | asset: '[path].gz[query]',
90 | algorithm: 'gzip',
91 | test: new RegExp(
92 | '\\.(' +
93 | config.build.productionGzipExtensions.join('|') +
94 | ')$'
95 | ),
96 | threshold: 10240,
97 | minRatio: 0.8
98 | })
99 | )
100 | }
101 |
102 | module.exports = webpackConfig
103 |
--------------------------------------------------------------------------------
/build/webpack.publish.conf.js:
--------------------------------------------------------------------------------
1 | var path = require('path');
2 | var utils = require('./utils');
3 | var webpack = require('webpack');
4 | var ExtractTextPlugin = require('extract-text-webpack-plugin');
5 |
6 | var config = {
7 | entry: path.resolve(__dirname, '../src/index.js'),
8 | output: {
9 | path: './',
10 | filename: 'vue-material.js',
11 | libraryTarget: 'umd'
12 | },
13 | resolve: {
14 | extensions: ['', '.js', '.vue'],
15 | fallback: [path.join(__dirname, '../node_modules')],
16 | alias: {
17 | 'src': path.resolve(__dirname, '../src'),
18 | 'utils': path.resolve(__dirname, '../utils'),
19 | 'directives': path.resolve(__dirname, '../directives'),
20 | 'assets': path.resolve(__dirname, '../src/assets'),
21 | 'components': path.resolve(__dirname, '../src/components')
22 | }
23 | },
24 | resolveLoader: {
25 | fallback: [path.join(__dirname, '../node_modules')]
26 | },
27 | module: {
28 | loaders: [{
29 | test: /\.vue$/,
30 | loader: 'vue'
31 | }, {
32 | test: /\.js$/,
33 | loader: 'babel',
34 | exclude: /node_modules/
35 | }, {
36 | test: /\.json$/,
37 | loader: 'json'
38 | }, {
39 | test: /\.html$/,
40 | loader: 'vue-html'
41 | }, {
42 | test: /\.(png|jpg|gif|svg)$/,
43 | loader: 'url',
44 | query: {
45 | limit: 10000,
46 | name: '[name].[ext]?[hash]'
47 | }
48 | }]
49 | },
50 | vue: {
51 | loaders: utils.cssLoaders(),
52 | autoprefixer: {
53 | browsers: ['last 2 versions', 'ie > 8', 'Firefox ESR']
54 | }
55 | },
56 | babel: {
57 | presets: ['es2015', 'stage-2'],
58 | plugins: ['transform-runtime'],
59 | comments: false
60 | },
61 | }
62 |
63 | config.plugins = [
64 | new webpack.DefinePlugin({
65 | 'process.env': {
66 | NODE_ENV: '"production"'
67 | }
68 | }),
69 |
70 | new webpack.optimize.UglifyJsPlugin({
71 | compress: {
72 | warnings: false
73 | }
74 | }),
75 |
76 | new webpack.optimize.OccurenceOrderPlugin()
77 | ];
78 |
79 | module.exports = config;
80 |
--------------------------------------------------------------------------------
/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: 8081,
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 |
--------------------------------------------------------------------------------
/config/test.env.js:
--------------------------------------------------------------------------------
1 | var merge = require('webpack-merge')
2 | var devEnv = require('./dev.env')
3 |
4 | module.exports = merge(devEnv, {
5 | NODE_ENV: '"testing"'
6 | })
7 |
--------------------------------------------------------------------------------
/directives/ripple.js:
--------------------------------------------------------------------------------
1 | import parseHtml from 'utils/parseHtml'
2 | import handleEvent from 'utils/handleEvent'
3 |
4 | const ripple = (x, y) => {
5 | return parseHtml(` `)
6 | }
7 |
8 | export default {
9 | bind () {
10 | const mousedownHandle = (event) => {
11 | let x = '50%'
12 | let y = '50%'
13 |
14 | if (!this.modifiers.static) {
15 | x = event.pageX - event.currentTarget.offsetLeft
16 | y = event.pageY - event.currentTarget.offsetTop
17 | }
18 |
19 | let domRipple = ripple(x, y)
20 |
21 | this.el.appendChild(domRipple)
22 |
23 | const rippleHandle = handleEvent('animationend', {
24 | element: domRipple,
25 | callback: () => {
26 | rippleHandle.destroy()
27 | this.el.removeChild(domRipple)
28 | }
29 | })
30 | }
31 |
32 | this.mousedownHandle = handleEvent('mousedown', {
33 | element: this.el,
34 | callback: mousedownHandle
35 | })
36 | },
37 | unbind () {
38 | this.mousedownHandle.destroy()
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/directives/tooltips.js:
--------------------------------------------------------------------------------
1 | import parseHtml from 'utils/parseHtml'
2 | import handleEvent from 'utils/handleEvent'
3 |
4 | const templateTooltip = (text, direction) => {
5 | return parseHtml(`
6 | ${text}
7 |
`)
8 | }
9 |
10 | export default {
11 | bind () {
12 | const direction = {
13 | top: {
14 | x: 0,
15 | y: -30
16 | },
17 | right: {
18 | x: 30,
19 | y: 0
20 | },
21 | bottom: {
22 | x: 0,
23 | y: 30
24 | },
25 | left: {
26 | x: -30,
27 | y: 0
28 | }
29 | }
30 |
31 | const $tooltip = templateTooltip(this.expression, direction[this.arg] || 'bottom')
32 |
33 | const enterHanlder = () => {
34 | this.el.appendChild($tooltip)
35 | }
36 |
37 | const leaveHanlder = () => {
38 | this.el.removeChild($tooltip)
39 | }
40 |
41 | this.enterHanlder = handleEvent('mouseenter', {
42 | element: this.el,
43 | callback: enterHanlder
44 | })
45 |
46 | this.leaveHanlder = handleEvent('mouseleave', {
47 | element: this.el,
48 | callback: leaveHanlder
49 | })
50 | },
51 | unbind () {
52 | this.enterHanlder.destroy()
53 | this.leaveHanlder.destroy()
54 | }
55 | }
56 |
--------------------------------------------------------------------------------
/dist/index.html:
--------------------------------------------------------------------------------
1 | example
--------------------------------------------------------------------------------
/dist/readme.md:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/taoche/vue-material/d6a75840614d4eeed6bbb3bbb3211f2db90d0826/dist/readme.md
--------------------------------------------------------------------------------
/dist/static/app.c9f001167ed2501cdbb85da626973963.css:
--------------------------------------------------------------------------------
1 | code,pre{font-size:14px;background-color:#f8f8f8;-webkit-font-smoothing:antialiased;color:#34495e;font-family:Source Code Pro,Roboto Mono,Monaco,courier,monospace}pre{padding:5px 10px}pre .constant,pre .function .keyword{color:#0092db}pre .attribute,pre .keyword{color:#e96900}pre .literal,pre .number{color:#ae81ff}pre .change,pre .clojure .built_in,pre .flow,pre .lisp .title,pre .nginx .title,pre .tag,pre .tag .title,pre .tex .special,pre .winutils{color:#2973b7}pre .regexp,pre .symbol,pre .symbol .string,pre .value{color:#42b983}pre .title{color:#83b917}pre .addition,pre .apache .cbracket,pre .apache .tag,pre .attr_selector,pre .built_in,pre .django .filter .argument,pre .django .template_tag,pre .django .variable,pre .envvar,pre .haskell .type,pre .javadoc,pre .preprocessor,pre .prompt,pre .pseudo,pre .ruby .class .parent,pre .smalltalk .array,pre .smalltalk .class,pre .smalltalk .localvars,pre .sql .aggregate,pre .stream,pre .string,pre .subst,pre .tag .value,pre .tex .command{color:#42b983}pre .apache .sqbracket,pre .comment,pre .doctype,pre .java .annotation,pre .pi,pre .python .decorator,pre .shebang,pre .template_comment,pre .tex .formula{color:#b3b3b3}pre .deletion{color:#ba4545}pre .coffeescript .javascript,pre .javascript .xml,pre .tex .formula,pre .xml .cdata,pre .xml .css,pre .xml .javascript,pre .xml .vbscript{opacity:.5}.component-avatar{margin:0 10px}.component-avatar{display:inline-block}.component-avatar.large .avatar{line-height:60px;width:60px;height:60px}.component-avatar.large .avatar .letter{font-size:26px}.component-avatar.small .avatar{line-height:24px;width:24px;height:24px}.component-avatar.small .avatar .letter{font-size:12px}.component-avatar .avatar{font-size:0;line-height:41px;display:inline-block;box-sizing:border-box;width:41px;height:41px;text-align:center;vertical-align:middle;color:#fff;border-radius:50%}.component-avatar .avatar.is-letter{background-color:#0884ce}.component-avatar .avatar .img{display:block;width:100%;height:100%;border-radius:50%;background-repeat:no-repeat;background-position:50%}.component-avatar .avatar .letter{font-size:18px}.component-button{overflow:hidden}.component-button .ripple{position:absolute;display:block;width:4px;height:4px;-webkit-transform:scale(100);transform:scale(100);-webkit-animation:button-ripple 1.4s;animation:button-ripple 1.4s;opacity:0;border-radius:50%;background:#fff}@-webkit-keyframes button-ripple{0%{-webkit-transform:scale(0);transform:scale(0);opacity:.5}to{-webkit-transform:scale(100);transform:scale(100);opacity:0}}@keyframes button-ripple{0%{-webkit-transform:scale(0);transform:scale(0);opacity:.5}to{-webkit-transform:scale(100);transform:scale(100);opacity:0}}.component-checkbox{cursor:pointer}.component-checkbox.disabled .checkbox-tag{display:none}.component-checkbox.disabled .checkbox-bd{border:2px solid #c1c1c1!important;background-color:#c1c1c1}.component-checkbox .ripple{position:absolute;top:50%;left:50%;display:block;width:4px;height:4px;margin:-2px;-webkit-transform:scale(13);transform:scale(13);-webkit-animation:checkbox-ripple .8s;animation:checkbox-ripple .8s;opacity:0;border-radius:50%;background:rgba(0,0,0,.5)}@-webkit-keyframes checkbox-ripple{0%{-webkit-transform:scale(0);transform:scale(0);opacity:.5}to{-webkit-transform:scale(13);transform:scale(13);opacity:0}}@keyframes checkbox-ripple{0%{-webkit-transform:scale(0);transform:scale(0);opacity:.5}to{-webkit-transform:scale(13);transform:scale(13);opacity:0}}.date-picker{position:fixed;z-index:998;top:0;left:0;width:100%;height:100%;-webkit-transition:opacity .3s ease;transition:opacity .3s ease;background-color:rgba(0,0,0,.5)}.date-picker .date-picker-wrapper{position:absolute;right:0;left:0}.date-picker .date-picker-wrapper .date-picker-container{z-index:999;width:320px;margin:0 auto;-webkit-user-select:none;-webkit-transition:all .3s ease;transition:all .3s ease;text-align:center;border-radius:2px;background:#fff;box-shadow:0 14px 45px rgba(0,0,0,.25),0 10px 18px rgba(0,0,0,.22)}.date-picker.date-enter,.date-picker.date-leave{opacity:0}.date-picker.date-enter .date-picker-container,.date-picker.date-leave .date-picker-container{-webkit-transform:scale(1.1);transform:scale(1.1)}.date-picker .date-header{height:72px;padding:20px;text-align:left;background:#0884ce}.date-picker .date-header h2,.date-picker .date-header h4{color:hsla(0,0%,100%,.7);cursor:pointer}.date-picker .date-header h4{font-weight:400;margin:0}.date-picker .date-header .date-year{overflow:hidden;height:16px}.date-picker .date-header .date{overflow:hidden;height:40px;margin:15px 0 0}.date-picker .date-header .date h2{font-size:36px;margin:0}.date-picker .date-header .ani-up{-webkit-animation:runUp .4s;animation:runUp .4s}.date-picker .date-header .ani-down{-webkit-animation:runDown .4s;animation:runDown .4s}.date-picker .date-header .active{color:#fff}@-webkit-keyframes runUp{0%{-webkit-transform:translateY(-20px)}to{-webkit-transform:translateY(0)}}@-webkit-keyframes runDown{0%{-webkit-transform:translateY(20px)}to{-webkit-transform:translateY(0)}}.date-picker .date-footer{padding:15px 10px 10px;text-align:right}.date-picker .date-footer button{padding:8px 20px;cursor:pointer;color:red;color:#0884ce;border:none;background:transparent}.date-picker .date-footer button:hover{-webkit-animation:btn-fade-in .5s ease both;animation:btn-fade-in .5s ease both;color:#fff}.date-picker .date-footer button:focus{outline:none}@-webkit-keyframes btn-fade-in{0%{background:rgba(9,148,231,.1)}to{background:rgba(9,148,231,.5)}}.date-picker .select-month{display:block;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;padding:10px 0 5px;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center}.date-picker .select-month .date{width:77%}.date-picker .select-month .disabled{cursor:default;box-shadow:inset 2px -2px #dce0e5}.date-picker .arrow{padding:5px;cursor:pointer}.date-picker .select-date{width:inherit;width:300px;margin:0 auto;border-spacing:0;border-collapse:collapse;text-align:center;color:#4e647b}.date-picker .select-date .week-header{font-size:12px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;padding:10px 0;color:#a5a5a5;-webkit-justify-content:space-around;-ms-flex-pack:distribute;justify-content:space-around}.date-picker .select-date tbody{display:block;width:inherit;margin-top:10px}.date-picker .select-date tbody tr{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-justify-content:space-around;-ms-flex-pack:distribute;justify-content:space-around}.date-picker .select-date tbody tr .not-current-month{height:0;cursor:default;opacity:0;color:#a7b2bd}.date-picker .select-date tbody tr td{font-size:12px;line-height:36px;display:inline-block;width:36px;height:36px;margin:2px 0;cursor:pointer;border-radius:50%;-webkit-touch-callout:none}.date-picker .select-date tbody tr td.disabled{cursor:default;color:#dce0e5}.date-picker .select-date tbody tr td.today{font-weight:700;color:#0884ce}.date-picker .select-date tbody tr td.selected{color:#fff;background:#0884ce}.date-picker .select-date tbody tr td:not(.selected):not(.disabled):hover{position:relative;z-index:1;color:#fff}.date-picker .select-date tbody tr td:not(.selected):not(.disabled):hover:after{position:absolute;z-index:-1;top:0;display:block;width:36px;height:36px;content:'';-webkit-transform:translateZ(0);transform:translateZ(0);-webkit-animation:dateBackground .3s;animation:dateBackground .3s;border-radius:50%;background:rgba(8,132,206,.7)}.date-left,.date-right{overflow:hidden}.date-right .date-enter{-webkit-animation:dateRight .5s;animation:dateRight .5s}.date-left .date-enter{-webkit-animation:dateLeft .5s;animation:dateLeft .5s}@-webkit-keyframes dateLeft{0%{-webkit-transform:translateX(-40px)}to{-webkit-transform:translateX(0)}}@-webkit-keyframes dateBackground{0%{-webkit-transform:scale(.2);transform:scale(.2)}to{-webkit-transform:scale(1);transform:scale(1)}}@-webkit-keyframes dateRight{0%{-webkit-transform:translateX(40px)}to{-webkit-transform:translateX(0)}}.date-picker .select-year{overflow:hidden;overflow-y:scroll;height:290px;padding-top:10px}.date-picker .select-year::-webkit-scrollbar{display:none}.date-picker .select-year ol{margin:0;padding:0;list-style:none}.date-picker .select-year ol li{font-size:18px;padding:6px 0;cursor:pointer}.date-picker .select-year ol li.active{font-size:22px;font-weight:800;margin:5px 0;color:#0884ce}.component-dialog .dialog-container{width:360px}.component-dialog{position:fixed;z-index:9998;top:0;left:0;display:table;width:100%;height:100%;-webkit-transition:opacity .3s ease;transition:opacity .3s ease;background-color:rgba(0,0,0,.15)}.component-dialog .dialog-wrap{display:table-cell;vertical-align:middle}.component-dialog .dialog-wrap .dialog-container{position:relative;padding:14px;margin:0 auto;-webkit-transition:all .3s ease;transition:all .3s ease;border-radius:2px;background-color:#fff;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;-ms-grid-row-align:center;align-items:center;box-shadow:0 9px 46px 8px rgba(0,0,0,.14),0 11px 15px -7px rgba(0,0,0,.12),0 24px 38px 3px rgba(0,0,0,.2)}.component-dialog .dialog-wrap .dialog-container .dialog-content{padding:20px 24px 24px;color:rgba(0,0,0,.54)}.component-dialog .dialog-wrap .dialog-container .dialog-actions{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-webkit-flex-direction:row-reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}.component-dialog.dialog-enter,.component-dialog.dialog-leave{opacity:0}.component-dialog.dialog-enter .dialog-container,.component-dialog.dialog-leave .dialog-container{-webkit-transform:scale(1.1);transform:scale(1.1)}.component-input .m-input.error~.bar:after,.component-input .m-input.error~.bar:before,.component-input .m-input:not([readonly]):not(.error):focus~.bar:after,.component-input .m-input:not([readonly]):not(.error):focus~.bar:before,.component-input .m-input:not([readonly]):not(.error):valid~.bar:after,.component-input .m-input:not([readonly]):not(.error):valid~.bar:before{width:50%;border-bottom:0}.component-input,.component-input .m-input{position:relative;display:inline-block}.component-input .m-input{font-size:16px;line-height:32px;box-sizing:border-box;width:100%;height:32px;padding-bottom:1px;padding-left:10px;border:none;border-bottom:1px solid #e0e0e0;outline:none;background:none}.component-input .m-input::-webkit-input-placeholder{font-size:12px;color:rbga(0,0,0,.38)}.component-input .m-input.error~.bar:after,.component-input .m-input.error~.bar:before{background:#f44b45}.component-input .m-input.disabled,.component-input .m-input:disabled{cursor:not-allowed;color:#b2b2b2;border-bottom-style:dotted}.component-input .m-input:not([readonly]):not(.error):focus~.bar:after,.component-input .m-input:not([readonly]):not(.error):focus~.bar:before{background:#3c80f6}.component-input .m-input:not([readonly]):not(.error):valid~.bar:after,.component-input .m-input:not([readonly]):not(.error):valid~.bar:before{background:#42b68a}.component-input .bar{position:relative;display:block}.component-input .bar:after,.component-input .bar:before{position:absolute;bottom:.5px;width:0;height:2px;content:'';-webkit-transition:.2s ease all;transition:.2s ease all;background:#3c80f6}.component-input .bar:before{left:50%}.component-input .bar:after{right:50%}.component-pagination{margin-top:20px}.component-pagination svg{cursor:pointer;-webkit-user-select:none;vertical-align:middle}.component-pagination svg:hover polyline{stroke:rgba(0,0,0,.87)}.component-pagination .disabled svg{cursor:not-allowed}.component-pagination .disabled svg polyline{stroke:rgba(0,0,0,.3)}.component-search{position:relative;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;width:100%;height:100%;padding:10px 0;border:1px solid rgba(0,0,0,.16);border-radius:2px;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center}.component-search .search-icon{width:15px;height:15px;margin-left:10px;fill:rgba(0,0,0,.56)}.component-search .search{margin:auto 8px;color:#fff}.component-search .search-input{box-sizing:border-box;text-indent:10px;color:rgba(0,0,0,.56);border:none;outline:none;background:transparent;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}.component-search .search-input::-webkit-input-placeholder{color:rgba(0,0,0,.56)}.component-select,.component-select .select-input{position:relative;display:inline-block}.component-select .select-input{font-size:16px;line-height:32px;box-sizing:border-box;width:100%;min-width:180px;height:32px;padding-left:10px;border-bottom:1px solid #e0e0e0;outline:none}.component-select .select-input:focus,.component-select .select-input:hover{border-bottom:2px solid #3c80f6}.component-select .select-input:focus .select-triangle svg,.component-select .select-input:hover .select-triangle svg{color:#3c80f6}.component-select .select-input .select-triangle{position:absolute;right:5px;width:12px;-webkit-transform:rotate(90deg);transform:rotate(90deg);color:rgba(0,0,0,.54)}.component-select .select-input .select-triangle svg{-webkit-transition:-webkit-transform .3s ease-in-out;transition:-webkit-transform .3s ease-in-out;transition:transform .3s ease-in-out;transition:transform .3s ease-in-out,-webkit-transform .3s ease-in-out}.component-select .select-input .select-triangle.open svg{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.component-select .list-box{position:absolute;z-index:1;top:32px;overflow:hidden;overflow-y:auto;width:180px;max-height:300px;-webkit-transition:all .3s ease-in-out;transition:all .3s ease-in-out;border-radius:2px;background-color:#fff}.component-select .list-box .select-search-bar{font-size:12px;height:10px;border:none;border-bottom:1px solid rgba(0,0,0,.16);border-radius:0}.component-select .list-box .select-search-bar .search-icon{width:12px;height:12px}.component-select .list-box li{overflow:hidden;padding:5px 0;cursor:pointer;white-space:nowrap;text-indent:20px;text-overflow:ellipsis;color:rgba(0,0,0,.87)}.component-select .list-box li.active,.component-select .list-box li:focus,.component-select .list-box li:hover{background:rgba(0,0,0,.031)}.component-select .list-box.select-list-transition{-webkit-transition:all .3s ease-in-out;transition:all .3s ease-in-out}.component-select .list-box.select-list-enter,.component-select .list-box.select-list-leave{height:0;opacity:0}.example-tooltips a{color:#000;display:inline-block;margin:0 20px}.example-tooltips a:hover{color:#000}.component-tooltip{position:absolute;-webkit-transition:-webkit-transform .3s ease;transition:-webkit-transform .3s ease;transition:transform .3s ease;transition:transform .3s ease,-webkit-transform .3s ease}.component-tooltip .tooltip-container{font-size:10px;line-height:22px;overflow:hidden;height:22px;padding:0 8px;opacity:.9;color:#fff;border-radius:2px;background:#747474}.component-tooltip.tooltip-enter,.component-tooltip.tooltip-leave{-webkit-transform:scale(1.1);transform:scale(1.1);opacity:0}.component-snackbar{position:fixed;bottom:0;left:50%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;min-width:288px;max-width:568px;padding:14px 24px;-webkit-transform:translate(-50%);transform:translate(-50%);color:#fff;border-radius:2px;background-color:#323232;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between}.component-snackbar .action{margin-left:48px;cursor:pointer}.component-snackbar.snackbar-transition{-webkit-transition:all .3s ease-in-out;transition:all .3s ease-in-out}.component-snackbar.snackbar-enter,.component-snackbar.snackbar-leave{bottom:-50px}.component-table{position:relative;width:100%;margin:0 auto;padding-top:48px;border:1px solid rgba(0,0,0,.12);background:#fff}.component-table>.container{max-height:300px;overflow-y:auto}.component-table>.container table{width:100%;border-spacing:0}.component-table>.container table td,.component-table>.container table th{font-size:14px;font-weight:100;line-height:48px;height:48px;padding:0 25px;color:#757575}.component-table>.container table th{line-height:0;height:0;padding-top:0;padding-bottom:0;white-space:nowrap;color:transparent;border:none}.component-table>.container table thead th>div{line-height:normal;position:absolute;top:0;margin-left:-25px;padding:15px 25px;color:rgba(0,0,0,.54);background:transparent}.component-table>.container table tbody tr{cursor:pointer}.component-table>.container table tbody tr td{border-top:1px solid rgba(0,0,0,.12)}.component-table>.container table tbody tr.active{background:#f5f5f5}.component-table>.container table tbody tr:hover{background:#eee}.component-tabs{position:relative;height:48px;background:#3993e5}.component-tabs .tabs{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;width:100%;height:100%;text-align:center;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center}.component-tabs .tabs .tabs-item{cursor:pointer;color:hsla(0,0%,100%,.7);-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}.component-tabs .tabs .tabs-item.active{color:#fff}.component-tabs .indicator{position:absolute;bottom:0;left:0;height:2px;-webkit-transition:all .3s ease-out;transition:all .3s ease-out;background:#ffff86}.app{padding-top:40px}.app>.header{width:100%;z-index:99;height:60px;background:#fff;position:fixed;top:0;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center}.app>.header .logo{padding-left:30px}.app>.header nav li{display:inline-block;margin:0 20px}.app>.header a{color:rgba(0,0,0,.56)}.app>.main{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;padding:60px 35px}.app>.main .sidebar{position:fixed}.app>.main .sidebar span{font-size:18px;color:#7f8c8d}.app>.main .sidebar span.active{color:#42b983}.app>.main .sidebar ul{padding-left:20px;line-height:30px}.app>.main .sidebar ul a{color:#34495e}.app>.main .sidebar ul a.active{color:#42b983}.app>.main .page-main{margin:0 auto;width:60%}.app h3{margin:3em 0 1.2em}.app h3:first-child{margin-top:8px}.app h1,.app h2,.app h3,.app h4,.app strong{font-weight:600;color:#2c3e50}.app .example{display:block;margin:10px 0;padding:5px 20px}
2 | /*# sourceMappingURL=app.c9f001167ed2501cdbb85da626973963.css.map*/
--------------------------------------------------------------------------------
/dist/static/app.c9f001167ed2501cdbb85da626973963.css.map:
--------------------------------------------------------------------------------
1 | {"version":3,"sources":["webpack:///webpack:///example/example-code.vue","webpack:///webpack:///example/components/avatar.vue","webpack:///webpack:///src/avatar/avatar.vue","webpack:///webpack:///src/buttons/buttons.vue","webpack:///webpack:///src/checkbox/checkbox.vue","webpack:///webpack:///src/datePicker/datePicker.vue","webpack:///webpack:///src/datePicker/components/header.vue","webpack:///webpack:///src/datePicker/components/footer.vue","webpack:///webpack:///src/datePicker/components/pickMonth.vue","webpack:///webpack:///src/datePicker/components/pickDate.vue","webpack:///webpack:///src/datePicker/components/pickYear.vue","webpack:///webpack:///example/components/dialog.vue","webpack:///webpack:///src/dialog/dialog.vue","webpack:///webpack:///src/input/input.vue","webpack:///webpack:///src/pagination/pagination.vue","webpack:///webpack:///src/search/search.vue","webpack:///webpack:///src/select/select.vue","webpack:///webpack:///example/components/tooltips.vue","webpack:///webpack:///src/tooltips/tooltips.vue","webpack:///webpack:///src/snackbar/snackbar.vue","webpack:///webpack:///src/tables/tables.vue","webpack:///webpack:///src/tabs/tabs.vue","webpack:///webpack:///example/App.vue"],"names":[],"mappings":"AAAA,SAAS,eAAe,yBAAyB,mCAAmC,cAAc,gEAAwE,CAAC,IAAI,gBAAgB,CAAC,qCAAqC,aAAa,CAAC,4BAA4B,aAAa,CAAC,yBAAyB,aAAa,CAAC,yIAAyI,aAAa,CAAC,uDAAuD,aAAa,CAAC,WAAW,aAAa,CAAC,kbAAkb,aAAa,CAAC,2JAA2J,aAAa,CAAC,cAAc,aAAa,CAAC,2IAA2I,UAAU,CCCn1C,kBACE,aAAe,CCFjB,kBAAkB,oBAAoB,CAAC,gCAAgC,iBAAiB,WAAW,WAAW,CAAC,wCAAwC,cAAc,CAAC,gCAAgC,iBAAiB,WAAW,WAAW,CAAC,wCAAwC,cAAc,CAAC,0BAA0B,YAAY,iBAAiB,qBAAqB,sBAAsB,WAAW,YAAY,kBAAkB,sBAAsB,WAAW,iBAAiB,CAAC,oCAAoC,wBAAwB,CAAC,+BAA+B,cAAc,WAAW,YAAY,kBAAkB,4BAA4B,uBAA0B,CAAC,kCAAkC,cAAc,CCA7tB,kBAAkB,eAAe,CAAC,0BAA0B,kBAAkB,cAAc,UAAU,WAAW,6BAA6B,qBAAqB,qCAAqC,6BAA6B,UAAU,kBAAkB,eAAe,CAAC,iCAAiC,GAAK,2BAA2B,mBAAmB,UAAU,CAAC,GAAG,6BAA6B,qBAAqB,SAAS,CAAC,CAAC,yBAAyB,GAAK,2BAA2B,mBAAmB,UAAU,CAAC,GAAG,6BAA6B,qBAAqB,SAAS,CAAC,CCAtkB,oBAAoB,cAAc,CAAC,2CAA2C,YAAY,CAAC,0CAA0C,mCAAoC,wBAAwB,CAAC,4BAA4B,kBAAkB,QAAQ,SAAS,cAAc,UAAU,WAAW,YAAY,4BAA4B,oBAAoB,sCAAsC,8BAA8B,UAAU,kBAAkB,yBAA0B,CAAC,mCAAmC,GAAK,2BAA2B,mBAAmB,UAAU,CAAC,GAAG,4BAA4B,oBAAoB,SAAS,CAAC,CAAC,2BAA2B,GAAK,2BAA2B,mBAAmB,UAAU,CAAC,GAAG,4BAA4B,oBAAoB,SAAS,CAAC,CCAhxB,aAAa,eAAe,YAAY,MAAM,OAAO,WAAW,YAAY,oCAAoC,4BAA4B,+BAAgC,CAAC,kCAAkC,kBAAkB,QAAQ,MAAM,CAAC,yDAAyD,YAAY,YAAY,cAAc,yBAAyB,gCAAgC,wBAAwB,kBAAkB,kBAAkB,gBAAgB,kEAAoE,CAAC,gDAAgD,SAAS,CAAC,8FAA8F,6BAA6B,oBAAoB,CCAluB,0BAA0B,YAAY,aAAa,gBAAgB,kBAAkB,CAAC,0DAA0D,yBAA4B,cAAc,CAAC,6BAA6B,gBAAgB,QAAQ,CAAC,qCAAqC,gBAAgB,WAAW,CAAC,gCAAgC,gBAAgB,YAAY,eAAiB,CAAC,mCAAmC,eAAe,QAAQ,CAAC,kCAAkC,4BAA4B,mBAAmB,CAAC,oCAAoC,8BAA8B,qBAAqB,CAAC,kCAAkC,UAAU,CAAC,yBAAyB,GAAG,mCAAmC,CAAC,GAAK,+BAA+B,CAAC,CAAC,2BAA2B,GAAG,kCAAkC,CAAC,GAAK,+BAA+B,CAAC,CCA91B,0BAA0B,uBAA4B,gBAAgB,CAAC,iCAAiC,iBAAiB,eAAe,UAAU,cAAc,YAAY,sBAAsB,CAAC,uCAAuC,4CAA4C,oCAAoC,UAAU,CAAC,uCAAuC,YAAY,CAAC,+BAA+B,GAAG,6BAA8B,CAAC,GAAK,6BAA8B,CAAC,CCA9d,2BAA2B,cAAc,oBAAoB,qBAAqB,oBAAoB,aAAa,mBAAqB,wBAAwB,+BAA+B,qBAAqB,sBAAsB,CAAC,iCAAiC,SAAS,CAAC,qCAAqC,eAAe,iCAAiC,CAAC,oBAAoB,YAAY,cAAc,CCA1Z,0BAA0B,cAAc,YAAY,cAAc,iBAAiB,yBAAyB,kBAAkB,aAAa,CAAC,uCAAuC,eAAe,oBAAoB,qBAAqB,oBAAoB,aAAa,eAAe,cAAc,qCAAqC,yBAAyB,4BAA4B,CAAC,gCAAgC,cAAc,cAAc,eAAe,CAAC,mCAAmC,oBAAoB,qBAAqB,oBAAoB,aAAa,qCAAqC,yBAAyB,4BAA4B,CAAC,sDAAsD,SAAS,eAAe,UAAU,aAAa,CAAC,sCAAsC,eAAe,iBAAiB,qBAAqB,WAAW,YAAY,aAAa,eAAe,kBAAkB,0BAA0B,CAAC,+CAA+C,eAAe,aAAa,CAAC,4CAA4C,gBAAiB,aAAa,CAAC,+CAA+C,WAAW,kBAAkB,CAAC,0EAA0E,kBAAkB,UAAU,UAAU,CAAC,gFAAiF,kBAAkB,WAAW,MAAM,cAAc,WAAW,YAAY,WAAW,gCAAuC,wBAA+B,qCAAqC,6BAA6B,kBAAkB,6BAA8B,CAAC,uBAAuB,eAAe,CAAC,wBAAwB,gCAAgC,uBAAuB,CAAC,uBAAuB,+BAA+B,sBAAsB,CAAC,4BAA4B,GAAG,mCAAmC,CAAC,GAAK,+BAA+B,CAAC,CAAC,kCAAkC,GAAG,4BAA6B,mBAAoB,CAAC,GAAK,2BAA2B,kBAAkB,CAAC,CAAC,6BAA6B,GAAG,kCAAkC,CAAC,GAAK,+BAA+B,CAAC,CCA3oE,0BAA0B,gBAAgB,kBAAkB,aAAa,gBAAgB,CAAC,6CAA6C,YAAY,CAAC,6BAA6B,SAAS,UAAU,eAAe,CAAC,gCAAgC,eAAe,cAAc,cAAc,CAAC,uCAAuC,eAAe,gBAAgB,aAAa,aAAa,CCAhY,oCAAoC,WAAW,CCA/C,kBAAkB,eAAe,aAAa,MAAM,OAAO,cAAc,WAAW,YAAY,oCAAoC,4BAA4B,gCAAiC,CAAC,+BAA+B,mBAAmB,qBAAqB,CAAC,iDAAiD,kBAAkB,aAAa,cAAc,gCAAgC,wBAAwB,kBAAkB,sBAAsB,wBAAwB,+BAA+B,qBAAqB,uBAAuB,yBAAyB,2BAA2B,sBAAsB,0BAA0B,mBAAmB,yGAA4G,CAAC,iEAAiE,uBAA4B,qBAAsB,CAAC,iEAAiE,oBAAoB,qBAAqB,oBAAoB,aAAa,8BAA8B,8BAA8B,mCAAmC,+BAA+B,2BAA2B,uBAAuB,mBAAmB,cAAc,CAAC,8DAA8D,SAAS,CAAC,kGAAkG,6BAA6B,oBAAoB,CCA37C,qXAAiY,UAAU,eAAe,CAAyD,2CAAvC,kBAAkB,oBAAoB,CAA6P,0BAAlO,eAAe,iBAAwD,sBAAsB,WAAW,YAAY,mBAAmB,kBAAkB,YAAY,gCAAgC,aAAa,eAAe,CAAC,qDAAqD,eAAe,qBAAyB,CAAC,uFAA2F,kBAAkB,CAAC,sEAAsE,mBAAmB,cAAc,0BAA0B,CAAC,+IAAmJ,kBAAkB,CAAC,+IAAmJ,kBAAkB,CAAC,sBAAsB,kBAAkB,aAAa,CAAC,yDAAyD,kBAAkB,YAAY,QAAQ,WAAW,WAAW,gCAAgC,wBAAwB,kBAAkB,CAAC,6BAA6B,QAAQ,CAAC,4BAA4B,SAAS,CCA1qD,sBAAsB,eAAe,CAAC,0BAA0B,eAAe,yBAAyB,qBAAqB,CAAC,yCAAyC,sBAAuB,CAAC,oCAAoC,kBAAkB,CAAC,6CAA6C,qBAAsB,CCAzT,kBAAkB,kBAAkB,oBAAoB,qBAAqB,oBAAoB,aAAa,WAAW,YAAY,eAAe,iCAAkC,kBAAkB,wBAAwB,+BAA+B,qBAAqB,uBAAuB,yBAAyB,2BAA2B,sBAAsB,kBAAkB,CAAC,+BAA+B,WAAW,YAAY,iBAAiB,oBAAqB,CAAC,0BAA0B,gBAAgB,UAAU,CAAC,gCAAgC,sBAAsB,iBAAiB,sBAAuB,YAAY,aAAa,uBAAuB,mBAAmB,eAAe,WAAW,MAAM,CAAC,2DAA2D,qBAAsB,CCApvB,kDAAvC,kBAAkB,oBAAoB,CAAoO,gCAAnM,eAAe,iBAAwD,sBAAsB,WAAW,gBAAgB,YAAY,kBAAkB,gCAAgC,YAAY,CAAC,4EAA4E,+BAA+B,CAAC,sHAAsH,aAAa,CAAC,iDAAiD,kBAAkB,UAAU,WAAW,gCAAgC,wBAAwB,qBAAsB,CAAC,qDAAqD,qDAAqD,6CAA6C,qCAAqC,sEAAuE,CAAC,0DAA0D,iCAAiC,wBAAwB,CAAC,4BAA4B,kBAAkB,UAAU,SAAS,gBAAgB,gBAAgB,YAAY,iBAAiB,uCAAuC,+BAA+B,kBAAkB,qBAAqB,CAAC,+CAA+C,eAAe,YAAY,YAAY,wCAAyC,eAAe,CAAC,4DAA4D,WAAW,WAAW,CAAC,+BAA+B,gBAAgB,cAAc,eAAe,mBAAmB,iBAAiB,uBAAuB,qBAAsB,CAAC,gHAAgH,2BAA4B,CAAC,mDAAmD,uCAAuC,8BAA8B,CAAC,4FAA4F,SAAS,SAAS,CCA3gE,oBAAoB,WAAW,qBAAqB,aAAa,CAAC,0BAA0B,UAAU,CCAtG,mBAAmB,kBAAkB,8CAA8C,sCAAsC,8BAA8B,wDAAyD,CAAC,sCAAsC,eAAe,iBAAiB,gBAAgB,YAAY,cAAc,WAAW,WAAW,kBAAkB,kBAAkB,CAAC,kEAAkE,6BAA6B,qBAAqB,SAAS,CCAzf,oBAAoB,eAAe,SAAS,SAAS,oBAAoB,qBAAqB,oBAAoB,aAAa,gBAAgB,gBAAgB,kBAAkB,kCAAkC,0BAA0B,WAAW,kBAAkB,yBAAyB,yBAAyB,sCAAsC,sBAAsB,6BAA6B,CAAC,4BAA4B,iBAAiB,cAAc,CAAC,wCAAwC,uCAAuC,8BAA8B,CAAC,sEAAsE,YAAY,CCAlpB,iBAAiB,kBAAkB,WAAW,cAAc,iBAAiB,iCAAkC,eAAe,CAAC,4BAA4B,iBAAiB,eAAe,CAAC,kCAAkC,WAAW,gBAAgB,CAAC,0EAA0E,eAAe,gBAAgB,iBAAiB,YAAY,eAAe,aAAa,CAAC,qCAAqC,cAAc,SAAS,cAAc,iBAAiB,mBAAmB,kBAAkB,WAAW,CAAC,+CAA+C,mBAAmB,kBAAkB,MAAM,kBAAkB,kBAAkB,sBAAuB,sBAAsB,CAAC,2CAA2C,cAAc,CAAC,8CAA8C,oCAAqC,CAAC,kDAAkD,kBAAkB,CAAC,iDAAiD,eAAe,CCAx+B,gBAAgB,kBAAkB,YAAY,kBAAkB,CAAC,sBAAsB,oBAAoB,qBAAqB,oBAAoB,aAAa,WAAW,YAAY,kBAAkB,yBAAyB,2BAA2B,sBAAsB,kBAAkB,CAAC,iCAAiC,eAAe,yBAA4B,mBAAmB,eAAe,WAAW,MAAM,CAAC,wCAAwC,UAAU,CAAC,2BAA2B,kBAAkB,SAAS,OAAO,WAAW,oCAAoC,4BAA4B,kBAAkB,CCApnB,KAAK,gBAAgB,CAAC,aAAa,WAAW,WAAW,YAAY,gBAAgB,eAAe,MAAM,oBAAoB,qBAAqB,oBAAoB,aAAa,yBAAyB,sCAAsC,sBAAsB,8BAA8B,yBAAyB,2BAA2B,sBAAsB,kBAAkB,CAAC,mBAAmB,iBAAiB,CAAC,oBAAoB,qBAAqB,aAAa,CAAC,eAAe,qBAAsB,CAAC,WAAW,oBAAoB,qBAAqB,oBAAoB,aAAa,iBAAiB,CAAC,oBAAoB,cAAc,CAAC,yBAAyB,eAAe,aAAa,CAAC,gCAAgC,aAAa,CAAC,uBAAuB,kBAAkB,gBAAgB,CAAC,yBAAyB,aAAa,CAAC,gCAAgC,aAAa,CAAC,sBAAsB,cAAc,SAAS,CAAC,QAAQ,kBAAkB,CAAC,oBAAoB,cAAc,CAAC,4CAA4C,gBAAgB,aAAa,CAAC,cAAc,cAAc,cAAc,gBAAgB","file":"static/app.c9f001167ed2501cdbb85da626973963.css","sourcesContent":["code,pre{font-size:14px;background-color:#f8f8f8;-webkit-font-smoothing:antialiased;color:#34495e;font-family:'Source Code Pro', 'Roboto Mono', Monaco, courier, monospace}pre{padding:5px 10px}pre .function .keyword,pre .constant{color:#0092db}pre .keyword,pre .attribute{color:#e96900}pre .number,pre .literal{color:#ae81ff}pre .tag,pre .tag .title,pre .change,pre .winutils,pre .flow,pre .lisp .title,pre .clojure .built_in,pre .nginx .title,pre .tex .special{color:#2973b7}pre .symbol,pre .symbol .string,pre .value,pre .regexp{color:#42b983}pre .title{color:#83b917}pre .tag .value,pre .string,pre .subst,pre .haskell .type,pre .preprocessor,pre .ruby .class .parent,pre .built_in,pre .sql .aggregate,pre .django .template_tag,pre .django .variable,pre .smalltalk .class,pre .javadoc,pre .django .filter .argument,pre .smalltalk .localvars,pre .smalltalk .array,pre .attr_selector,pre .pseudo,pre .addition,pre .stream,pre .envvar,pre .apache .tag,pre .apache .cbracket,pre .tex .command,pre .prompt{color:#42b983}pre .comment,pre .java .annotation,pre .python .decorator,pre .template_comment,pre .pi,pre .doctype,pre .shebang,pre .apache .sqbracket,pre .tex .formula{color:#b3b3b3}pre .deletion{color:#ba4545}pre .coffeescript .javascript,pre .javascript .xml,pre .tex .formula,pre .xml .javascript,pre .xml .vbscript,pre .xml .css,pre .xml .cdata{opacity:.5}\n\n\n\n/** WEBPACK FOOTER **\n ** webpack:///example/example-code.vue\n **/","\n.component-avatar{\n margin: 0 10px;\n}\n\n\n\n/** WEBPACK FOOTER **\n ** webpack:///example/components/avatar.vue\n **/",".component-avatar{display:inline-block}.component-avatar.large .avatar{line-height:60px;width:60px;height:60px}.component-avatar.large .avatar .letter{font-size:26px}.component-avatar.small .avatar{line-height:24px;width:24px;height:24px}.component-avatar.small .avatar .letter{font-size:12px}.component-avatar .avatar{font-size:0;line-height:41px;display:inline-block;box-sizing:border-box;width:41px;height:41px;text-align:center;vertical-align:middle;color:#fff;border-radius:50%}.component-avatar .avatar.is-letter{background-color:#0884ce}.component-avatar .avatar .img{display:block;width:100%;height:100%;border-radius:50%;background-repeat:no-repeat;background-position:center}.component-avatar .avatar .letter{font-size:18px}\n\n\n\n/** WEBPACK FOOTER **\n ** webpack:///src/avatar/avatar.vue\n **/",".component-button{overflow:hidden}.component-button .ripple{position:absolute;display:block;width:4px;height:4px;-webkit-transform:scale(100);transform:scale(100);-webkit-animation:button-ripple 1.4s;animation:button-ripple 1.4s;opacity:0;border-radius:50%;background:#fff}@-webkit-keyframes button-ripple{from{-webkit-transform:scale(0);transform:scale(0);opacity:.5}to{-webkit-transform:scale(100);transform:scale(100);opacity:0}}@keyframes button-ripple{from{-webkit-transform:scale(0);transform:scale(0);opacity:.5}to{-webkit-transform:scale(100);transform:scale(100);opacity:0}}\n\n\n\n/** WEBPACK FOOTER **\n ** webpack:///src/buttons/buttons.vue\n **/",".component-checkbox{cursor:pointer}.component-checkbox.disabled .checkbox-tag{display:none}.component-checkbox.disabled .checkbox-bd{border:2px solid #c1c1c1 !important;background-color:#c1c1c1}.component-checkbox .ripple{position:absolute;top:50%;left:50%;display:block;width:4px;height:4px;margin:-2px;-webkit-transform:scale(13);transform:scale(13);-webkit-animation:checkbox-ripple .8s;animation:checkbox-ripple .8s;opacity:0;border-radius:50%;background:rgba(0,0,0,0.5)}@-webkit-keyframes checkbox-ripple{from{-webkit-transform:scale(0);transform:scale(0);opacity:.5}to{-webkit-transform:scale(13);transform:scale(13);opacity:0}}@keyframes checkbox-ripple{from{-webkit-transform:scale(0);transform:scale(0);opacity:.5}to{-webkit-transform:scale(13);transform:scale(13);opacity:0}}\n\n\n\n/** WEBPACK FOOTER **\n ** webpack:///src/checkbox/checkbox.vue\n **/",".date-picker{position:fixed;z-index:998;top:0;left:0;width:100%;height:100%;-webkit-transition:opacity .3s ease;transition:opacity .3s ease;background-color:rgba(0,0,0,0.5)}.date-picker .date-picker-wrapper{position:absolute;right:0;left:0}.date-picker .date-picker-wrapper .date-picker-container{z-index:999;width:320px;margin:0 auto;-webkit-user-select:none;-webkit-transition:all .3s ease;transition:all .3s ease;text-align:center;border-radius:2px;background:#fff;box-shadow:0 14px 45px rgba(0,0,0,0.25),0 10px 18px rgba(0,0,0,0.22)}.date-picker.date-enter,.date-picker.date-leave{opacity:0}.date-picker.date-enter .date-picker-container,.date-picker.date-leave .date-picker-container{-webkit-transform:scale(1.1);transform:scale(1.1)}\n\n\n\n/** WEBPACK FOOTER **\n ** webpack:///src/datePicker/datePicker.vue\n **/",".date-picker .date-header{height:72px;padding:20px;text-align:left;background:#0884ce}.date-picker .date-header h4,.date-picker .date-header h2{color:rgba(255,255,255,0.7);cursor:pointer}.date-picker .date-header h4{font-weight:400;margin:0}.date-picker .date-header .date-year{overflow:hidden;height:16px}.date-picker .date-header .date{overflow:hidden;height:40px;margin:15px 0 0 0}.date-picker .date-header .date h2{font-size:36px;margin:0}.date-picker .date-header .ani-up{-webkit-animation:runUp .4s;animation:runUp .4s}.date-picker .date-header .ani-down{-webkit-animation:runDown .4s;animation:runDown .4s}.date-picker .date-header .active{color:#fff}@-webkit-keyframes runUp{0%{-webkit-transform:translateY(-20px)}100%{-webkit-transform:translateY(0)}}@-webkit-keyframes runDown{0%{-webkit-transform:translateY(20px)}100%{-webkit-transform:translateY(0)}}\n\n\n\n/** WEBPACK FOOTER **\n ** webpack:///src/datePicker/components/header.vue\n **/",".date-picker .date-footer{padding:15px 10px 10px 10px;text-align:right}.date-picker .date-footer button{padding:8px 20px;cursor:pointer;color:red;color:#0884ce;border:none;background:transparent}.date-picker .date-footer button:hover{-webkit-animation:btn-fade-in .5s ease both;animation:btn-fade-in .5s ease both;color:#fff}.date-picker .date-footer button:focus{outline:none}@-webkit-keyframes btn-fade-in{0%{background:rgba(9,148,231,0.1)}100%{background:rgba(9,148,231,0.5)}}\n\n\n\n/** WEBPACK FOOTER **\n ** webpack:///src/datePicker/components/footer.vue\n **/",".date-picker .select-month{display:block;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;padding:10px 0 5px 0;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center}.date-picker .select-month .date{width:77%}.date-picker .select-month .disabled{cursor:default;box-shadow:2px -2px #dce0e5 inset}.date-picker .arrow{padding:5px;cursor:pointer}\n\n\n\n/** WEBPACK FOOTER **\n ** webpack:///src/datePicker/components/pickMonth.vue\n **/",".date-picker .select-date{width:inherit;width:300px;margin:0 auto;border-spacing:0;border-collapse:collapse;text-align:center;color:#4e647b}.date-picker .select-date .week-header{font-size:12px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;padding:10px 0;color:#a5a5a5;-webkit-justify-content:space-around;-ms-flex-pack:distribute;justify-content:space-around}.date-picker .select-date tbody{display:block;width:inherit;margin-top:10px}.date-picker .select-date tbody tr{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-justify-content:space-around;-ms-flex-pack:distribute;justify-content:space-around}.date-picker .select-date tbody tr .not-current-month{height:0;cursor:default;opacity:0;color:#a7b2bd}.date-picker .select-date tbody tr td{font-size:12px;line-height:36px;display:inline-block;width:36px;height:36px;margin:2px 0;cursor:pointer;border-radius:50%;-webkit-touch-callout:none}.date-picker .select-date tbody tr td.disabled{cursor:default;color:#dce0e5}.date-picker .select-date tbody tr td.today{font-weight:bold;color:#0884ce}.date-picker .select-date tbody tr td.selected{color:#fff;background:#0884ce}.date-picker .select-date tbody tr td:not(.selected):not(.disabled):hover{position:relative;z-index:1;color:#fff}.date-picker .select-date tbody tr td:not(.selected):not(.disabled):hover::after{position:absolute;z-index:-1;top:0;display:block;width:36px;height:36px;content:'';-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0);-webkit-animation:dateBackground .3s;animation:dateBackground .3s;border-radius:50%;background:rgba(8,132,206,0.7)}.date-right,.date-left{overflow:hidden}.date-right .date-enter{-webkit-animation:dateRight .5s;animation:dateRight .5s}.date-left .date-enter{-webkit-animation:dateLeft .5s;animation:dateLeft .5s}@-webkit-keyframes dateLeft{0%{-webkit-transform:translateX(-40px)}100%{-webkit-transform:translateX(0)}}@-webkit-keyframes dateBackground{0%{-webkit-transform:scale(0.2);transform:scale(0.2)}100%{-webkit-transform:scale(1);transform:scale(1)}}@-webkit-keyframes dateRight{0%{-webkit-transform:translateX(40px)}100%{-webkit-transform:translateX(0)}}\n\n\n\n/** WEBPACK FOOTER **\n ** webpack:///src/datePicker/components/pickDate.vue\n **/",".date-picker .select-year{overflow:hidden;overflow-y:scroll;height:290px;padding-top:10px}.date-picker .select-year::-webkit-scrollbar{display:none}.date-picker .select-year ol{margin:0;padding:0;list-style:none}.date-picker .select-year ol li{font-size:18px;padding:6px 0;cursor:pointer}.date-picker .select-year ol li.active{font-size:22px;font-weight:800;margin:5px 0;color:#0884ce}\n\n\n\n/** WEBPACK FOOTER **\n ** webpack:///src/datePicker/components/pickYear.vue\n **/",".component-dialog .dialog-container{width:360px}\n\n\n\n/** WEBPACK FOOTER **\n ** webpack:///example/components/dialog.vue\n **/",".component-dialog{position:fixed;z-index:9998;top:0;left:0;display:table;width:100%;height:100%;-webkit-transition:opacity .3s ease;transition:opacity .3s ease;background-color:rgba(0,0,0,0.15)}.component-dialog .dialog-wrap{display:table-cell;vertical-align:middle}.component-dialog .dialog-wrap .dialog-container{position:relative;padding:14px;margin:0 auto;-webkit-transition:all .3s ease;transition:all .3s ease;border-radius:2px;background-color:#fff;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;-ms-grid-row-align:center;align-items:center;box-shadow:0 9px 46px 8px rgba(0,0,0,0.14),0 11px 15px -7px rgba(0,0,0,0.12),0 24px 38px 3px rgba(0,0,0,0.2)}.component-dialog .dialog-wrap .dialog-container .dialog-content{padding:20px 24px 24px 24px;color:rgba(0,0,0,0.54)}.component-dialog .dialog-wrap .dialog-container .dialog-actions{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-webkit-flex-direction:row-reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}.component-dialog.dialog-enter,.component-dialog.dialog-leave{opacity:0}.component-dialog.dialog-enter .dialog-container,.component-dialog.dialog-leave .dialog-container{-webkit-transform:scale(1.1);transform:scale(1.1)}\n\n\n\n/** WEBPACK FOOTER **\n ** webpack:///src/dialog/dialog.vue\n **/",".component-input .m-input.error ~ .bar:before,.component-input .m-input.error ~ .bar:after,.component-input .m-input:not([readonly]):not(.error):focus ~ .bar:before,.component-input .m-input:not([readonly]):not(.error):focus ~ .bar:after,.component-input .m-input:not([readonly]):not(.error):valid ~ .bar:before,.component-input .m-input:not([readonly]):not(.error):valid ~ .bar:after{width:50%;border-bottom:0}.component-input{position:relative;display:inline-block}.component-input .m-input{font-size:16px;line-height:32px;position:relative;display:inline-block;box-sizing:border-box;width:100%;height:32px;padding-bottom:1px;padding-left:10px;border:none;border-bottom:1px solid #e0e0e0;outline:none;background:none}.component-input .m-input::-webkit-input-placeholder{font-size:12px;color:rbga(0, 0, 0, 0.38)}.component-input .m-input.error ~ .bar:before,.component-input .m-input.error ~ .bar:after{background:#f44b45}.component-input .m-input:disabled,.component-input .m-input.disabled{cursor:not-allowed;color:#b2b2b2;border-bottom-style:dotted}.component-input .m-input:not([readonly]):not(.error):focus ~ .bar:before,.component-input .m-input:not([readonly]):not(.error):focus ~ .bar:after{background:#3c80f6}.component-input .m-input:not([readonly]):not(.error):valid ~ .bar:before,.component-input .m-input:not([readonly]):not(.error):valid ~ .bar:after{background:#42b68a}.component-input .bar{position:relative;display:block}.component-input .bar:before,.component-input .bar:after{position:absolute;bottom:.5px;width:0;height:2px;content:'';-webkit-transition:.2s ease all;transition:.2s ease all;background:#3c80f6}.component-input .bar:before{left:50%}.component-input .bar:after{right:50%}\n\n\n\n/** WEBPACK FOOTER **\n ** webpack:///src/input/input.vue\n **/",".component-pagination{margin-top:20px}.component-pagination svg{cursor:pointer;-webkit-user-select:none;vertical-align:middle}.component-pagination svg:hover polyline{stroke:rgba(0,0,0,0.87)}.component-pagination .disabled svg{cursor:not-allowed}.component-pagination .disabled svg polyline{stroke:rgba(0,0,0,0.3)}\n\n\n\n/** WEBPACK FOOTER **\n ** webpack:///src/pagination/pagination.vue\n **/",".component-search{position:relative;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;width:100%;height:100%;padding:10px 0;border:1px solid rgba(0,0,0,0.16);border-radius:2px;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center}.component-search .search-icon{width:15px;height:15px;margin-left:10px;fill:rgba(0,0,0,0.56)}.component-search .search{margin:auto 8px;color:#fff}.component-search .search-input{box-sizing:border-box;text-indent:10px;color:rgba(0,0,0,0.56);border:none;outline:none;background:transparent;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}.component-search .search-input::-webkit-input-placeholder{color:rgba(0,0,0,0.56)}\n\n\n\n/** WEBPACK FOOTER **\n ** webpack:///src/search/search.vue\n **/",".component-select{position:relative;display:inline-block}.component-select .select-input{font-size:16px;line-height:32px;position:relative;display:inline-block;box-sizing:border-box;width:100%;min-width:180px;height:32px;padding-left:10px;border-bottom:1px solid #e0e0e0;outline:none}.component-select .select-input:focus,.component-select .select-input:hover{border-bottom:2px solid #3c80f6}.component-select .select-input:focus .select-triangle svg,.component-select .select-input:hover .select-triangle svg{color:#3c80f6}.component-select .select-input .select-triangle{position:absolute;right:5px;width:12px;-webkit-transform:rotate(90deg);transform:rotate(90deg);color:rgba(0,0,0,0.54)}.component-select .select-input .select-triangle svg{-webkit-transition:-webkit-transform .3s ease-in-out;transition:-webkit-transform .3s ease-in-out;transition:transform .3s ease-in-out;transition:transform .3s ease-in-out, -webkit-transform .3s ease-in-out}.component-select .select-input .select-triangle.open svg{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.component-select .list-box{position:absolute;z-index:1;top:32px;overflow:hidden;overflow-y:auto;width:180px;max-height:300px;-webkit-transition:all .3s ease-in-out;transition:all .3s ease-in-out;border-radius:2px;background-color:#fff}.component-select .list-box .select-search-bar{font-size:12px;height:10px;border:none;border-bottom:1px solid rgba(0,0,0,0.16);border-radius:0}.component-select .list-box .select-search-bar .search-icon{width:12px;height:12px}.component-select .list-box li{overflow:hidden;padding:5px 0;cursor:pointer;white-space:nowrap;text-indent:20px;text-overflow:ellipsis;color:rgba(0,0,0,0.87)}.component-select .list-box li:focus,.component-select .list-box li:hover,.component-select .list-box li.active{background:rgba(0,0,0,0.031)}.component-select .list-box.select-list-transition{-webkit-transition:all .3s ease-in-out;transition:all .3s ease-in-out}.component-select .list-box.select-list-enter,.component-select .list-box.select-list-leave{height:0;opacity:0}\n\n\n\n/** WEBPACK FOOTER **\n ** webpack:///src/select/select.vue\n **/",".example-tooltips a{color:#000;display:inline-block;margin:0 20px}.example-tooltips a:hover{color:#000}\n\n\n\n/** WEBPACK FOOTER **\n ** webpack:///example/components/tooltips.vue\n **/",".component-tooltip{position:absolute;-webkit-transition:-webkit-transform .3s ease;transition:-webkit-transform .3s ease;transition:transform .3s ease;transition:transform .3s ease, -webkit-transform .3s ease}.component-tooltip .tooltip-container{font-size:10px;line-height:22px;overflow:hidden;height:22px;padding:0 8px;opacity:.9;color:#fff;border-radius:2px;background:#747474}.component-tooltip.tooltip-enter,.component-tooltip.tooltip-leave{-webkit-transform:scale(1.1);transform:scale(1.1);opacity:0}\n\n\n\n/** WEBPACK FOOTER **\n ** webpack:///src/tooltips/tooltips.vue\n **/",".component-snackbar{position:fixed;bottom:0;left:50%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;min-width:288px;max-width:568px;padding:14px 24px;-webkit-transform:translate(-50%);transform:translate(-50%);color:#fff;border-radius:2px;background-color:#323232;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between}.component-snackbar .action{margin-left:48px;cursor:pointer}.component-snackbar.snackbar-transition{-webkit-transition:all .3s ease-in-out;transition:all .3s ease-in-out}.component-snackbar.snackbar-enter,.component-snackbar.snackbar-leave{bottom:-50px}\n\n\n\n/** WEBPACK FOOTER **\n ** webpack:///src/snackbar/snackbar.vue\n **/",".component-table{position:relative;width:100%;margin:0 auto;padding-top:48px;border:1px solid rgba(0,0,0,0.12);background:#fff}.component-table>.container{max-height:300px;overflow-y:auto}.component-table>.container table{width:100%;border-spacing:0}.component-table>.container table td,.component-table>.container table th{font-size:14px;font-weight:100;line-height:48px;height:48px;padding:0 25px;color:#757575}.component-table>.container table th{line-height:0;height:0;padding-top:0;padding-bottom:0;white-space:nowrap;color:transparent;border:none}.component-table>.container table thead th>div{line-height:normal;position:absolute;top:0;margin-left:-25px;padding:15px 25px;color:rgba(0,0,0,0.54);background:transparent}.component-table>.container table tbody tr{cursor:pointer}.component-table>.container table tbody tr td{border-top:1px solid rgba(0,0,0,0.12)}.component-table>.container table tbody tr.active{background:#f5f5f5}.component-table>.container table tbody tr:hover{background:#eee}\n\n\n\n/** WEBPACK FOOTER **\n ** webpack:///src/tables/tables.vue\n **/",".component-tabs{position:relative;height:48px;background:#3993e5}.component-tabs .tabs{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;width:100%;height:100%;text-align:center;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center}.component-tabs .tabs .tabs-item{cursor:pointer;color:rgba(255,255,255,0.7);-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}.component-tabs .tabs .tabs-item.active{color:#fff}.component-tabs .indicator{position:absolute;bottom:0;left:0;height:2px;-webkit-transition:all .3s ease-out;transition:all .3s ease-out;background:#ffff86}\n\n\n\n/** WEBPACK FOOTER **\n ** webpack:///src/tabs/tabs.vue\n **/",".app{padding-top:40px}.app>.header{width:100%;z-index:99;height:60px;background:#fff;position:fixed;top:0;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center}.app>.header .logo{padding-left:30px}.app>.header nav li{display:inline-block;margin:0 20px}.app>.header a{color:rgba(0,0,0,0.56)}.app>.main{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;padding:60px 35px}.app>.main .sidebar{position:fixed}.app>.main .sidebar span{font-size:18px;color:#7f8c8d}.app>.main .sidebar span.active{color:#42b983}.app>.main .sidebar ul{padding-left:20px;line-height:30px}.app>.main .sidebar ul a{color:#34495e}.app>.main .sidebar ul a.active{color:#42b983}.app>.main .page-main{margin:0 auto;width:60%}.app h3{margin:3em 0 1.2em}.app h3:first-child{margin-top:8px}.app h1,.app h2,.app h3,.app h4,.app strong{font-weight:600;color:#2c3e50}.app .example{display:block;margin:10px 0;padding:5px 20px}\n\n\n\n/** WEBPACK FOOTER **\n ** webpack:///example/App.vue\n **/"],"sourceRoot":""}
--------------------------------------------------------------------------------
/example/.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 | node_modules/
3 | dist/
4 | npm-debug.log
5 | selenium-debug.log
6 | test/unit/coverage
7 | test/e2e/reports
8 |
--------------------------------------------------------------------------------
/example/App.vue:
--------------------------------------------------------------------------------
1 |
2 |
9 |
10 |
11 |
22 |
23 |
95 |
--------------------------------------------------------------------------------
/example/assets/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/taoche/vue-material/d6a75840614d4eeed6bbb3bbb3211f2db90d0826/example/assets/logo.png
--------------------------------------------------------------------------------
/example/components/avatar.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
17 |
18 |
19 |
20 |
21 |
38 |
39 |
44 |
--------------------------------------------------------------------------------
/example/components/buttons.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
基础使用
4 |
5 | 按钮
6 |
7 |
8 |
9 | 按钮
10 |
11 |
12 |
13 | 按钮
14 |
15 |
16 |
17 | 按钮
18 |
19 |
20 |
21 |
38 |
39 |
40 | 事件
41 |
42 | 按钮
43 |
44 |
45 |
46 | 按钮
47 |
48 |
49 |
50 | 事件触发
51 |
52 |
53 |
54 |
77 |
78 |
79 |
80 |
81 |
98 |
--------------------------------------------------------------------------------
/example/components/card.vue:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/taoche/vue-material/d6a75840614d4eeed6bbb3bbb3211f2db90d0826/example/components/card.vue
--------------------------------------------------------------------------------
/example/components/checkbox.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
基础使用
4 |
5 |
6 |
7 |
8 |
12 |
13 |
14 | 事件
15 |
16 |
17 |
18 | {{checkboxState | json}}
19 |
20 |
21 |
22 |
25 |
26 |
27 |
28 |
29 |
30 | {{eventOnState | json}}
31 |
32 |
33 |
34 |
48 |
49 |
50 |
51 |
52 |
53 |
76 |
77 |
80 |
--------------------------------------------------------------------------------
/example/components/datePicker.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
基础使用
4 |
5 |
8 |
9 |
10 |
16 |
17 |
18 |
19 |
20 |
38 |
39 |
41 |
--------------------------------------------------------------------------------
/example/components/dialog.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
基础使用
4 |
显示dialog
5 |
6 |
显示带modal的dialog
7 |
8 |
9 |
10 |
你知道如何使用 Dialog 组件吗 ?
11 |
基本的 Dialog 组件的使用
12 |
13 |
14 |
15 |
16 |
17 |
18 |
你知道如何使用 Dialog 组件吗 ?
19 |
基本的 Dialog 组件的使用
20 |
21 |
22 |
23 |
24 |
33 |
34 |
35 |
36 |
46 |
47 |
48 |
49 |
50 |
68 |
69 |
76 |
--------------------------------------------------------------------------------
/example/components/input.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
基础使用
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
18 |
19 |
20 | 事件
21 |
22 |
23 |
24 | value: {{exampleValue | json}}
25 |
26 |
27 |
28 |
31 |
32 |
33 |
34 |
35 |
36 |
53 |
54 |
56 |
--------------------------------------------------------------------------------
/example/components/layout.vue:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/taoche/vue-material/d6a75840614d4eeed6bbb3bbb3211f2db90d0826/example/components/layout.vue
--------------------------------------------------------------------------------
/example/components/lists.vue:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/taoche/vue-material/d6a75840614d4eeed6bbb3bbb3211f2db90d0826/example/components/lists.vue
--------------------------------------------------------------------------------
/example/components/menu.vue:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/taoche/vue-material/d6a75840614d4eeed6bbb3bbb3211f2db90d0826/example/components/menu.vue
--------------------------------------------------------------------------------
/example/components/pagination.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
基础使用
4 |
5 |
6 |
7 |
10 |
11 |
12 | 事件
13 |
14 |
15 |
16 | 当前页码 : {{currentPage | json}}
17 |
18 |
19 |
20 |
40 |
41 |
42 |
43 |
44 |
66 |
67 |
70 |
--------------------------------------------------------------------------------
/example/components/radio.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
基础使用
4 |
5 |
6 |
7 |
8 |
9 |
10 |
23 |
24 |
25 |
26 |
27 |
45 |
46 |
51 |
--------------------------------------------------------------------------------
/example/components/radioGroup.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
基础使用
4 |
5 |
6 |
7 | 选择的radio : {{activeName | json}}
8 |
9 |
10 |
11 |
12 |
13 | 选择的radio : {{activeName | json}}
14 |
15 |
16 |
17 |
18 |
19 |
23 |
24 |
25 |
26 |
27 |
55 |
56 |
61 |
--------------------------------------------------------------------------------
/example/components/search.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
基础使用
4 |
5 |
6 |
7 |
8 |
12 |
13 |
14 | 事件
15 |
16 |
17 | 搜索关键字: {{quertText | json}}
18 |
19 |
20 |
23 |
24 |
25 |
26 |
27 |
44 |
45 |
47 |
--------------------------------------------------------------------------------
/example/components/select.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
基础使用
4 |
5 |
6 |
7 | selected: {{selected | json}}
8 |
9 |
10 |
11 |
21 |
22 |
23 |
24 | 拓展——选择数量超过10个 支持搜索 和 键盘选择
25 |
26 |
27 |
28 | selected: {{moreSelected | json}}
29 |
30 |
31 |
32 |
42 |
43 |
44 |
45 |
46 |
66 |
67 |
69 |
--------------------------------------------------------------------------------
/example/components/snackbar.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
基础使用
4 | snackbar
5 |
7 |
8 |
9 |
19 |
20 |
21 | 事件
22 |
23 |
33 |
34 |
35 |
36 |
37 |
59 |
60 |
62 |
--------------------------------------------------------------------------------
/example/components/spinner.vue:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/taoche/vue-material/d6a75840614d4eeed6bbb3bbb3211f2db90d0826/example/components/spinner.vue
--------------------------------------------------------------------------------
/example/components/switch.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
基础使用
4 |
5 |
6 |
7 |
8 |
9 |
14 |
15 |
16 |
17 |
18 |
19 | isCheck: {{isCheck | json}}
20 |
21 |
22 |
23 |
38 |
39 |
40 |
41 |
42 |
43 |
70 |
71 |
73 |
--------------------------------------------------------------------------------
/example/components/tables.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
基础使用
4 |
5 |
6 |
7 | 动态数据 : {{mockData | json}}
8 |
9 |
10 |
11 |
47 |
48 |
49 | 固定头部
50 |
51 |
52 |
53 |
104 |
105 |
106 |
107 |
108 |
195 |
--------------------------------------------------------------------------------
/example/components/tabs.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
基础使用
4 |
5 |
6 |
7 | 配合 Vue ':is' 使用 可以很简单的实现.. tab切换, 简单且优雅
8 | 动态数据 : {{activeTabIndex | json}}
9 |
10 |
11 |
12 |
27 |
28 |
29 |
30 |
31 |
49 |
50 |
52 |
--------------------------------------------------------------------------------
/example/components/toolbar.vue:
--------------------------------------------------------------------------------
1 | a
2 |
3 |
基础使用
4 |
5 |
6 |
7 |
8 |
24 |
25 |
27 |
--------------------------------------------------------------------------------
/example/components/tooltips.vue:
--------------------------------------------------------------------------------
1 |
2 |
25 |
26 |
27 |
61 |
62 |
75 |
--------------------------------------------------------------------------------
/example/example-code.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
31 |
32 |
136 |
--------------------------------------------------------------------------------
/example/header.vue:
--------------------------------------------------------------------------------
1 |
2 |
21 |
22 |
23 |
28 |
--------------------------------------------------------------------------------
/example/home.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
Vue Material UI
4 |
目前还不是很完善....
5 |
如何使用
6 |
7 |
8 |
13 |
14 |
15 |
16 |
17 |
27 |
--------------------------------------------------------------------------------
/example/main.js:
--------------------------------------------------------------------------------
1 | import 'babel-polyfill'
2 | import Vue from 'vue'
3 | import VueRouter from 'vue-router'
4 | import { configRouter } from './route-config'
5 |
6 | import App from './App'
7 |
8 | // styles
9 | require('lancer-css/src/application.scss')
10 |
11 | Vue.config.debug = true
12 |
13 | // install router
14 | Vue.use(VueRouter)
15 |
16 | // create router
17 | const router = new VueRouter({
18 | history: false,
19 | saveScrollPosition: true
20 | })
21 |
22 | // configure router
23 | configRouter(router)
24 |
25 | router.beforeEach(function () {
26 | window.scrollTo(0, 0)
27 | })
28 |
29 | router.redirect({
30 | '*': '/home'
31 | })
32 |
33 | router.start(App, 'app')
34 |
--------------------------------------------------------------------------------
/example/readme.md:
--------------------------------------------------------------------------------
1 | # example
2 |
3 | > A Vue.js project
4 |
5 | ## Build Setup
6 |
7 | ``` bash
8 | # install dependencies
9 | npm install
10 |
11 | # serve with hot reload at localhost:8080
12 | npm run dev
13 |
14 | # build for production with minification
15 | npm run build
16 |
17 | # run unit tests
18 | npm run unit
19 |
20 | # run e2e tests
21 | npm run e2e
22 |
23 | # run all tests
24 | npm test
25 | ```
26 |
27 | For detailed explanation on how things work, checkout the [guide](https://github.com/vuejs-templates/webpack#vue-webpack-boilerplate) and [docs for vue-loader](http://vuejs.github.io/vue-loader).
28 |
--------------------------------------------------------------------------------
/example/route-config.js:
--------------------------------------------------------------------------------
1 | export function configRouter (router) {
2 | router.map({
3 | '/home': {
4 | name: 'home',
5 | component: require('./home')
6 | },
7 | '/avatar': {
8 | name: 'avatar',
9 | component: require('./components/avatar')
10 | },
11 | '/buttons': {
12 | name: 'buttons',
13 | component: require('./components/buttons')
14 | },
15 | '/checkbox': {
16 | name: 'checkbox',
17 | component: require('./components/checkbox')
18 | },
19 | '/datePicker': {
20 | name: 'datePicker',
21 | component: require('./components/datePicker')
22 | },
23 | '/dialog': {
24 | name: 'dialog',
25 | component: require('./components/dialog')
26 | },
27 | '/input': {
28 | name: 'input',
29 | component: require('./components/input')
30 | },
31 | '/pagination': {
32 | name: 'pagination',
33 | component: require('./components/pagination')
34 | },
35 | '/radio': {
36 | name: 'radio',
37 | component: require('./components/radio')
38 | },
39 | '/radioGroup': {
40 | name: 'radioGroup',
41 | component: require('./components/radioGroup')
42 | },
43 | '/search': {
44 | name: 'search',
45 | component: require('./components/search')
46 | },
47 | '/select': {
48 | name: 'select',
49 | component: require('./components/select')
50 | },
51 | '/switch': {
52 | name: 'switch',
53 | component: require('./components/switch')
54 | },
55 | '/tooltips': {
56 | name: 'tooltips',
57 | component: require('./components/tooltips')
58 | },
59 | '/snackbar': {
60 | name: 'snackbar',
61 | component: require('./components/snackbar')
62 | },
63 | '/tables': {
64 | name: 'tables',
65 | component: require('./components/tables')
66 | },
67 | '/tabs': {
68 | name: 'tabs',
69 | component: require('./components/tabs')
70 | }
71 | })
72 | }
73 |
--------------------------------------------------------------------------------
/example/sidebar.vue:
--------------------------------------------------------------------------------
1 |
2 |
16 |
17 |
18 |
36 |
--------------------------------------------------------------------------------
/filters/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/taoche/vue-material/d6a75840614d4eeed6bbb3bbb3211f2db90d0826/filters/.gitkeep
--------------------------------------------------------------------------------
/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | example
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "vue-material-ui",
3 | "version": "0.0.39-rc9",
4 | "description": "a UI Components use vue and Material Design",
5 | "repository": {
6 | "type": "git",
7 | "url": "taoche/vue-material"
8 | },
9 | "main": "vue-material.js",
10 | "scripts": {
11 | "dev": "node build/dev-server.js",
12 | "build": "node build/build.js",
13 | "lib": "webpack --progress --hide-modules --config ./build/webpack.publish.conf.js",
14 | "lint": "eslint --ext .js,.vue src test/unit/specs test/e2e/specs"
15 | },
16 | "devDependencies": {
17 | "babel-core": "^6.0.0",
18 | "babel-eslint": "^6.1.2",
19 | "babel-loader": "^6.0.0",
20 | "babel-plugin-transform-runtime": "^6.0.0",
21 | "babel-polyfill": "^6.7.4",
22 | "babel-preset-es2015": "^6.0.0",
23 | "babel-preset-stage-2": "^6.0.0",
24 | "babel-register": "^6.0.0",
25 | "connect-history-api-fallback": "^1.1.0",
26 | "css-loader": "^0.23.0",
27 | "eslint": "^3.7.1",
28 | "eslint-friendly-formatter": "^2.0.5",
29 | "eslint-loader": "^1.5.0",
30 | "eslint-plugin-html": "^1.3.0",
31 | "eslint-config-standard": "^6.1.0",
32 | "eslint-plugin-promise": "^2.0.1",
33 | "eslint-plugin-standard": "^2.0.1",
34 | "eventsource-polyfill": "^0.9.6",
35 | "express": "^4.13.3",
36 | "extract-text-webpack-plugin": "^1.0.1",
37 | "file-loader": "^0.8.4",
38 | "function-bind": "^1.0.2",
39 | "highlight.js": "^9.2.0",
40 | "html-webpack-plugin": "^2.8.1",
41 | "http-proxy-middleware": "^0.12.0",
42 | "json-loader": "^0.5.4",
43 | "lancer-css": "0.0.9",
44 | "node-sass": "^3.4.2",
45 | "ora": "^0.2.0",
46 | "sass-loader": "^3.0.0",
47 | "shelljs": "^0.6.0",
48 | "showdown": "^1.3.0",
49 | "style-loader": "^0.13.1",
50 | "url-loader": "^0.5.7",
51 | "vue": "^1.0.26",
52 | "vue-hot-reload-api": "^1.2.0",
53 | "vue-html-loader": "^1.0.0",
54 | "vue-loader": "^8.3.0",
55 | "vue-router": "^0.7.11",
56 | "vue-style-loader": "^1.0.0",
57 | "webpack": "^1.12.2",
58 | "webpack-dev-middleware": "^1.4.0",
59 | "webpack-hot-middleware": "^2.6.0",
60 | "webpack-merge": "^0.8.3"
61 | }
62 | }
63 |
--------------------------------------------------------------------------------
/readme.md:
--------------------------------------------------------------------------------
1 | ## 基于 Vue.js 与 Material Design 的 UI Components
2 |
3 | #[DEMO](http://www.aruoyi.cn/)
4 |
5 | ### 正在大规模重构,敬请期待....
6 |
7 | ### 项目在初始阶段
8 |
9 | ### 不建议大家使用在生产环境
10 |
--------------------------------------------------------------------------------
/src/avatar/avatar.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
9 | {{letter}}
10 |
11 |
12 |
13 |
14 |
25 |
26 |
77 |
--------------------------------------------------------------------------------
/src/buttons/buttons.vue:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
9 |
10 |
11 |
46 |
47 |
74 |
--------------------------------------------------------------------------------
/src/card/card.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
{{cardData.cardHead.title}}
5 |
{{cardData.cardHead.subTitle}}
6 |
7 |
8 |
15 |
16 |
17 |
{{cardData.cardText.content}}
18 |
19 |
20 |
21 |
22 |
23 |
24 |
34 |
35 |
98 |
--------------------------------------------------------------------------------
/src/checkbox/checkbox.vue:
--------------------------------------------------------------------------------
1 |
2 |
11 |
12 |
13 |
42 |
43 |
82 |
--------------------------------------------------------------------------------
/src/datePicker/components/footer.vue:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
8 |
9 |
26 |
27 |
58 |
--------------------------------------------------------------------------------
/src/datePicker/components/header.vue:
--------------------------------------------------------------------------------
1 |
2 |
21 |
22 |
23 |
70 |
71 |
135 |
--------------------------------------------------------------------------------
/src/datePicker/components/pickDate.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
7 |
8 |
9 |
11 |
12 |
13 | {{ day.day }}
20 |
21 |
22 |
23 |
24 |
25 |
108 |
109 |
236 |
--------------------------------------------------------------------------------
/src/datePicker/components/pickMonth.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
7 |
8 |
9 |
10 |
11 |
{{currentInfo.monthName}} {{currentInfo.year}}
12 |
13 |
16 |
17 |
19 |
20 |
21 |
22 |
23 |
24 |
63 |
64 |
89 |
--------------------------------------------------------------------------------
/src/datePicker/components/pickYear.vue:
--------------------------------------------------------------------------------
1 |
2 |
9 |
10 |
11 |
41 |
42 |
71 |
--------------------------------------------------------------------------------
/src/datePicker/datePicker.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
11 |
12 |
13 |
26 |
27 |
28 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
172 |
173 |
208 |
--------------------------------------------------------------------------------
/src/dialog/dialog.vue:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 | 确认
15 |
16 |
17 | 取消
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
61 |
62 |
113 |
--------------------------------------------------------------------------------
/src/index.js:
--------------------------------------------------------------------------------
1 | import Avatar from './avatar/avatar'
2 | import Buttons from './buttons/buttons'
3 | import Card from './card/card'
4 | import Checkbox from './checkbox/checkbox'
5 | import DatePicker from './datePicker/datePicker'
6 | import Dialog from './dialog/dialog'
7 | import Input from './input/input'
8 | import Menu from './menu/menu'
9 | import Pagination from './pagination/pagination'
10 | import Radio from './radio/radio'
11 | import RadioGroup from './radio/radioGroup'
12 | import Search from './search/search'
13 | import Select from './select/select'
14 | import Slider from './slider/slider'
15 | import Snackbar from './snackbar/snackbar'
16 | import Switch from './switch/switch'
17 | import Tables from './tables/tables'
18 | import Tabs from './tabs/tabs'
19 | import Toolbar from './toolbar/toolbar'
20 | import Tooltips from './tooltips/tooltips'
21 |
22 | export const components = {
23 | Avatar,
24 | Buttons,
25 | Card,
26 | Checkbox,
27 | DatePicker,
28 | Dialog,
29 | Input,
30 | Menu,
31 | Pagination,
32 | Radio,
33 | RadioGroup,
34 | Search,
35 | Select,
36 | Slider,
37 | Snackbar,
38 | Switch,
39 | Tables,
40 | Tabs,
41 | Toolbar,
42 | Tooltips
43 | }
44 |
45 | export default {
46 | install (Vue, options) {
47 | Object.keys(components).forEach((name) => {
48 | Vue.component(`${options.prefix}${name}`, components[name])
49 | })
50 | }
51 | }
52 |
--------------------------------------------------------------------------------
/src/input/input.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
10 |
11 |
12 |
13 |
14 |
42 |
43 |
119 |
--------------------------------------------------------------------------------
/src/layout/layout.vue:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
9 |
14 |
15 |
29 |
--------------------------------------------------------------------------------
/src/lists/list.vue:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
10 |
15 |
--------------------------------------------------------------------------------
/src/lists/listOneLine.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | {{item.title}}
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
21 |
--------------------------------------------------------------------------------
/src/lists/listThreeLine.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Bryan Cranston
7 |
8 | Bryan Cranston played the role of Bryan Cranston in Breaking Bad,he is also know
9 | for playing Hal in Malcom in the Middle. Lorem ipsum dolor sit amet, consectetur adipiscing elit.
10 | Curabitur venenatis urna eget cursus varius. Donec ultrices quis arcu quis euismod.
11 | Mauris sollicitudin neque lectus, id bibendum libero eleifend sed.
12 |
13 |
14 |
15 |
16 | Actor
17 |
18 |
19 |
20 |
21 |
22 |
24 |
--------------------------------------------------------------------------------
/src/lists/listTwoLine.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Bryan Cranston
6 | 62 Episodes
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 | Aaron Paul
15 | 62 Episodes
16 |
17 |
18 | Actor
19 |
20 |
21 |
22 |
23 |
24 |
26 |
--------------------------------------------------------------------------------
/src/menu/menu.vue:
--------------------------------------------------------------------------------
1 |
2 |
30 |
31 |
32 |
118 |
119 |
199 |
--------------------------------------------------------------------------------
/src/pagination/pagination.vue:
--------------------------------------------------------------------------------
1 |
2 |
29 |
30 |
31 |
138 |
139 |
162 |
--------------------------------------------------------------------------------
/src/panel/panel.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | default
5 |
6 |
7 |
8 |
9 |
19 |
--------------------------------------------------------------------------------
/src/radio/radio.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | {{label}}
6 |
7 |
8 |
9 |
22 |
23 |
24 |
25 |
61 |
62 |
105 |
--------------------------------------------------------------------------------
/src/radio/radioGroup.vue:
--------------------------------------------------------------------------------
1 |
2 |
4 |
{{label}}
5 |
6 |
7 |
15 |
16 |
17 |
18 |
19 |
20 |
57 |
--------------------------------------------------------------------------------
/src/search/search.vue:
--------------------------------------------------------------------------------
1 |
2 |
15 |
16 |
17 |
55 |
56 |
94 |
--------------------------------------------------------------------------------
/src/select/select.vue:
--------------------------------------------------------------------------------
1 |
2 |
29 |
30 |
31 |
115 |
116 |
203 |
--------------------------------------------------------------------------------
/src/slider/slider.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
72 |
73 |
85 |
--------------------------------------------------------------------------------
/src/snackbar/snackbar.vue:
--------------------------------------------------------------------------------
1 |
2 |
6 | {{msg}}
7 | {{actionText}}
10 |
11 |
12 |
13 |
55 |
56 |
84 |
--------------------------------------------------------------------------------
/src/spinner/spinner.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
78 |
--------------------------------------------------------------------------------
/src/switch/switch.vue:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
10 |
40 |
41 |
69 |
--------------------------------------------------------------------------------
/src/tables/tables.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 | checkbox
9 |
10 |
11 |
12 |
13 |
14 | {{item}}
15 | {{item}}
16 |
17 |
18 |
19 |
20 |
21 |
25 |
26 |
27 |
28 |
29 | {{ele}}
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
99 |
100 |
161 |
--------------------------------------------------------------------------------
/src/tabs/tabs.vue:
--------------------------------------------------------------------------------
1 |
2 |
12 |
13 |
14 |
45 |
46 |
77 |
--------------------------------------------------------------------------------
/src/toolbar/toolbar.vue:
--------------------------------------------------------------------------------
1 |
2 |
13 |
14 |
15 |
20 |
21 |
51 |
--------------------------------------------------------------------------------
/src/tooltips/tooltips.vue:
--------------------------------------------------------------------------------
1 |
2 |
9 |
10 | {{text}}
11 |
12 |
13 |
14 |
15 |
99 |
100 |
122 |
--------------------------------------------------------------------------------
/static/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/taoche/vue-material/d6a75840614d4eeed6bbb3bbb3211f2db90d0826/static/.gitkeep
--------------------------------------------------------------------------------
/utils/handleEvent.js:
--------------------------------------------------------------------------------
1 | const handleEvent = (eventName, { element, callback, useCapture = false } = {}, thisArg) => {
2 | const $element = element || document.documentElement
3 |
4 | const handler = (event) => {
5 | if (typeof callback === 'function') {
6 | callback.call(thisArg, event)
7 | }
8 | }
9 |
10 | handler.destroy = function () {
11 | return $element.removeEventListener(eventName, handler, useCapture)
12 | }
13 |
14 | $element.addEventListener(eventName, handler, useCapture)
15 |
16 | return handler
17 | }
18 |
19 | export default handleEvent
20 |
--------------------------------------------------------------------------------
/utils/parseHtml.js:
--------------------------------------------------------------------------------
1 | const parseHtml = (fragments) => {
2 | let tmp = document.implementation.createHTMLDocument()
3 | tmp.body.innerHTML = fragments
4 | return tmp.body.children[0]
5 | }
6 |
7 | export default parseHtml
8 |
--------------------------------------------------------------------------------