├── .babelrc
├── .editorconfig
├── .eslintignore
├── .eslintrc.js
├── .gitignore
├── .postcssrc.js
├── README.md
├── build
├── build.js
├── check-versions.js
├── logo.png
├── utils.js
├── vue-loader.conf.js
├── webpack.base.conf.js
├── webpack.dev.conf.js
└── webpack.prod.conf.js
├── config
├── dev.env.js
├── index.js
└── prod.env.js
├── dist
├── index.html
└── static
│ ├── css
│ ├── app.cb9d69e9d64b994d48bae8c4859415a4.css
│ └── app.cb9d69e9d64b994d48bae8c4859415a4.css.map
│ └── js
│ ├── app.f7a84d7a3c723f0c4136.js
│ ├── app.f7a84d7a3c723f0c4136.js.map
│ ├── manifest.25fc6a34a71a20c9ed6f.js
│ ├── manifest.25fc6a34a71a20c9ed6f.js.map
│ ├── vendor.7dd0f9296fb1e0232208.js
│ └── vendor.7dd0f9296fb1e0232208.js.map
├── index.html
├── package-lock.json
├── package.json
├── src
├── App.vue
├── assets
│ ├── css
│ │ └── normalize.css
│ └── images
│ │ └── cart.svg
├── components
│ ├── AllNotebooks.vue
│ ├── AllProducts.vue
│ ├── AllSmartphones.vue
│ ├── Btn.vue
│ ├── CartCheckout.vue
│ ├── ListOfProducts.vue
│ ├── Mask.vue
│ ├── Menu.vue
│ ├── Modal.vue
│ ├── Popupcart.vue
│ ├── Product.vue
│ └── Stars.vue
├── main.js
├── router
│ └── index.js
└── store.js
└── static
└── .gitkeep
/.babelrc:
--------------------------------------------------------------------------------
1 | {
2 | "presets": [
3 | ["env", {
4 | "modules": false,
5 | "targets": {
6 | "browsers": ["> 1%", "last 2 versions", "not ie <= 8"]
7 | }
8 | }],
9 | "stage-2"
10 | ],
11 | "plugins": ["transform-vue-jsx", "transform-runtime"]
12 | }
13 |
--------------------------------------------------------------------------------
/.editorconfig:
--------------------------------------------------------------------------------
1 | root = true
2 |
3 | [*]
4 | charset = utf-8
5 | indent_style = space
6 | indent_size = 2
7 | end_of_line = lf
8 | insert_final_newline = true
9 | trim_trailing_whitespace = true
10 |
--------------------------------------------------------------------------------
/.eslintignore:
--------------------------------------------------------------------------------
1 | /build/
2 | /config/
3 | /dist/
4 | /*.js
5 |
--------------------------------------------------------------------------------
/.eslintrc.js:
--------------------------------------------------------------------------------
1 | // https://eslint.org/docs/user-guide/configuring
2 |
3 | module.exports = {
4 | root: true,
5 | parserOptions: {
6 | parser: 'babel-eslint'
7 | },
8 | env: {
9 | browser: true,
10 | },
11 | // https://github.com/vuejs/eslint-plugin-vue#priority-a-essential-error-prevention
12 | // consider switching to `plugin:vue/strongly-recommended` or `plugin:vue/recommended` for stricter rules.
13 | extends: ['plugin:vue/essential', 'airbnb-base'],
14 | // required to lint *.vue files
15 | plugins: [
16 | 'vue'
17 | ],
18 | // check if imports actually resolve
19 | settings: {
20 | 'import/resolver': {
21 | webpack: {
22 | config: 'build/webpack.base.conf.js'
23 | }
24 | }
25 | },
26 | // add your custom rules here
27 | rules: {
28 | // don't require .vue extension when importing
29 | 'import/extensions': ['error', 'always', {
30 | js: 'never',
31 | vue: 'never'
32 | }],
33 | // disallow reassignment of function parameters
34 | // disallow parameter object manipulation except for specific exclusions
35 | 'no-param-reassign': ['error', {
36 | props: true,
37 | ignorePropertyModificationsFor: [
38 | 'state', // for vuex state
39 | 'acc', // for reduce accumulators
40 | 'e' // for e.returnvalue
41 | ]
42 | }],
43 | // allow optionalDependencies
44 | 'import/no-extraneous-dependencies': ['error', {
45 | optionalDependencies: ['test/unit/index.js']
46 | }],
47 | // allow debugger during development
48 | 'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off'
49 | }
50 | }
51 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 | node_modules/
3 | npm-debug.log*
4 | yarn-debug.log*
5 | yarn-error.log*
6 |
7 | # Editor directories and files
8 | .idea
9 | .vscode
10 | *.suo
11 | *.ntvs*
12 | *.njsproj
13 | *.sln
14 |
--------------------------------------------------------------------------------
/.postcssrc.js:
--------------------------------------------------------------------------------
1 | // https://github.com/michael-ciniawsky/postcss-load-config
2 |
3 | module.exports = {
4 | "plugins": {
5 | "postcss-import": {},
6 | "postcss-url": {},
7 | // to edit target browsers: use "browserslist" field in package.json
8 | "autoprefixer": {}
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # vue-cart
2 |
3 | > A Vue.js project
4 | > This project was made using vue, vuex and vue-router.
5 |
6 | ### https://crisgon.github.io/vue-cart/dist/
7 |
8 | 
9 |
10 | ## Build Setup
11 |
12 | ``` bash
13 | # install dependencies
14 | npm install
15 |
16 | # serve with hot reload at localhost:8080
17 | npm run dev
18 |
19 | # build for production with minification
20 | npm run build
21 |
22 | # build for production and view the bundle analyzer report
23 | npm run build --report
24 | ```
25 |
26 | For a detailed explanation on how things work, check out the [guide](http://vuejs-templates.github.io/webpack/) and [docs for vue-loader](http://vuejs.github.io/vue-loader).
27 |
--------------------------------------------------------------------------------
/build/build.js:
--------------------------------------------------------------------------------
1 | 'use strict'
2 | require('./check-versions')()
3 |
4 | process.env.NODE_ENV = 'production'
5 |
6 | const ora = require('ora')
7 | const rm = require('rimraf')
8 | const path = require('path')
9 | const chalk = require('chalk')
10 | const webpack = require('webpack')
11 | const config = require('../config')
12 | const webpackConfig = require('./webpack.prod.conf')
13 |
14 | const spinner = ora('building for production...')
15 | spinner.start()
16 |
17 | rm(path.join(config.build.assetsRoot, config.build.assetsSubDirectory), err => {
18 | if (err) throw err
19 | webpack(webpackConfig, (err, stats) => {
20 | spinner.stop()
21 | if (err) throw err
22 | process.stdout.write(stats.toString({
23 | colors: true,
24 | modules: false,
25 | children: false, // If you are using ts-loader, setting this to true will make TypeScript errors show up during build.
26 | chunks: false,
27 | chunkModules: false
28 | }) + '\n\n')
29 |
30 | if (stats.hasErrors()) {
31 | console.log(chalk.red(' Build failed with errors.\n'))
32 | process.exit(1)
33 | }
34 |
35 | console.log(chalk.cyan(' Build complete.\n'))
36 | console.log(chalk.yellow(
37 | ' Tip: built files are meant to be served over an HTTP server.\n' +
38 | ' Opening index.html over file:// won\'t work.\n'
39 | ))
40 | })
41 | })
42 |
--------------------------------------------------------------------------------
/build/check-versions.js:
--------------------------------------------------------------------------------
1 | 'use strict'
2 | const chalk = require('chalk')
3 | const semver = require('semver')
4 | const packageConfig = require('../package.json')
5 | const shell = require('shelljs')
6 |
7 | function exec (cmd) {
8 | return require('child_process').execSync(cmd).toString().trim()
9 | }
10 |
11 | const versionRequirements = [
12 | {
13 | name: 'node',
14 | currentVersion: semver.clean(process.version),
15 | versionRequirement: packageConfig.engines.node
16 | }
17 | ]
18 |
19 | if (shell.which('npm')) {
20 | versionRequirements.push({
21 | name: 'npm',
22 | currentVersion: exec('npm --version'),
23 | versionRequirement: packageConfig.engines.npm
24 | })
25 | }
26 |
27 | module.exports = function () {
28 | const warnings = []
29 |
30 | for (let i = 0; i < versionRequirements.length; i++) {
31 | const mod = versionRequirements[i]
32 |
33 | if (!semver.satisfies(mod.currentVersion, mod.versionRequirement)) {
34 | warnings.push(mod.name + ': ' +
35 | chalk.red(mod.currentVersion) + ' should be ' +
36 | chalk.green(mod.versionRequirement)
37 | )
38 | }
39 | }
40 |
41 | if (warnings.length) {
42 | console.log('')
43 | console.log(chalk.yellow('To use this template, you must update following to modules:'))
44 | console.log()
45 |
46 | for (let i = 0; i < warnings.length; i++) {
47 | const warning = warnings[i]
48 | console.log(' ' + warning)
49 | }
50 |
51 | console.log()
52 | process.exit(1)
53 | }
54 | }
55 |
--------------------------------------------------------------------------------
/build/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crisgon/vue-cart/c7bb886f6133ff8f950de2555558b0ed4950db76/build/logo.png
--------------------------------------------------------------------------------
/build/utils.js:
--------------------------------------------------------------------------------
1 | 'use strict'
2 | const path = require('path')
3 | const config = require('../config')
4 | const ExtractTextPlugin = require('extract-text-webpack-plugin')
5 | const packageConfig = require('../package.json')
6 |
7 | exports.assetsPath = function (_path) {
8 | const assetsSubDirectory = process.env.NODE_ENV === 'production'
9 | ? config.build.assetsSubDirectory
10 | : config.dev.assetsSubDirectory
11 |
12 | return path.posix.join(assetsSubDirectory, _path)
13 | }
14 |
15 | exports.cssLoaders = function (options) {
16 | options = options || {}
17 |
18 | const cssLoader = {
19 | loader: 'css-loader',
20 | options: {
21 | sourceMap: options.sourceMap
22 | }
23 | }
24 |
25 | const postcssLoader = {
26 | loader: 'postcss-loader',
27 | options: {
28 | sourceMap: options.sourceMap
29 | }
30 | }
31 |
32 | // generate loader string to be used with extract text plugin
33 | function generateLoaders (loader, loaderOptions) {
34 | const loaders = options.usePostCSS ? [cssLoader, postcssLoader] : [cssLoader]
35 |
36 | if (loader) {
37 | loaders.push({
38 | loader: loader + '-loader',
39 | options: Object.assign({}, loaderOptions, {
40 | sourceMap: options.sourceMap
41 | })
42 | })
43 | }
44 |
45 | // Extract CSS when that option is specified
46 | // (which is the case during production build)
47 | if (options.extract) {
48 | return ExtractTextPlugin.extract({
49 | use: loaders,
50 | fallback: 'vue-style-loader'
51 | })
52 | } else {
53 | return ['vue-style-loader'].concat(loaders)
54 | }
55 | }
56 |
57 | // https://vue-loader.vuejs.org/en/configurations/extract-css.html
58 | return {
59 | css: generateLoaders(),
60 | postcss: generateLoaders(),
61 | less: generateLoaders('less'),
62 | sass: generateLoaders('sass', { indentedSyntax: true }),
63 | scss: generateLoaders('sass'),
64 | stylus: generateLoaders('stylus'),
65 | styl: generateLoaders('stylus')
66 | }
67 | }
68 |
69 | // Generate loaders for standalone style files (outside of .vue)
70 | exports.styleLoaders = function (options) {
71 | const output = []
72 | const loaders = exports.cssLoaders(options)
73 |
74 | for (const extension in loaders) {
75 | const loader = loaders[extension]
76 | output.push({
77 | test: new RegExp('\\.' + extension + '$'),
78 | use: loader
79 | })
80 | }
81 |
82 | return output
83 | }
84 |
85 | exports.createNotifierCallback = () => {
86 | const notifier = require('node-notifier')
87 |
88 | return (severity, errors) => {
89 | if (severity !== 'error') return
90 |
91 | const error = errors[0]
92 | const filename = error.file && error.file.split('!').pop()
93 |
94 | notifier.notify({
95 | title: packageConfig.name,
96 | message: severity + ': ' + error.name,
97 | subtitle: filename || '',
98 | icon: path.join(__dirname, 'logo.png')
99 | })
100 | }
101 | }
102 |
--------------------------------------------------------------------------------
/build/vue-loader.conf.js:
--------------------------------------------------------------------------------
1 | 'use strict'
2 | const utils = require('./utils')
3 | const config = require('../config')
4 | const isProduction = process.env.NODE_ENV === 'production'
5 | const sourceMapEnabled = isProduction
6 | ? config.build.productionSourceMap
7 | : config.dev.cssSourceMap
8 |
9 | module.exports = {
10 | loaders: utils.cssLoaders({
11 | sourceMap: sourceMapEnabled,
12 | extract: isProduction
13 | }),
14 | cssSourceMap: sourceMapEnabled,
15 | cacheBusting: config.dev.cacheBusting,
16 | transformToRequire: {
17 | video: ['src', 'poster'],
18 | source: 'src',
19 | img: 'src',
20 | image: 'xlink:href'
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/build/webpack.base.conf.js:
--------------------------------------------------------------------------------
1 | 'use strict'
2 | const path = require('path')
3 | const utils = require('./utils')
4 | const config = require('../config')
5 | const vueLoaderConfig = require('./vue-loader.conf')
6 |
7 | function resolve (dir) {
8 | return path.join(__dirname, '..', dir)
9 | }
10 |
11 | const createLintingRule = () => ({
12 | test: /\.(js|vue)$/,
13 | loader: 'eslint-loader',
14 | enforce: 'pre',
15 | include: [resolve('src'), resolve('test')],
16 | options: {
17 | formatter: require('eslint-friendly-formatter'),
18 | emitWarning: !config.dev.showEslintErrorsInOverlay
19 | }
20 | })
21 |
22 | module.exports = {
23 | context: path.resolve(__dirname, '../'),
24 | entry: {
25 | app: './src/main.js'
26 | },
27 | output: {
28 | path: config.build.assetsRoot,
29 | filename: '[name].js',
30 | publicPath: process.env.NODE_ENV === 'production'
31 | ? config.build.assetsPublicPath
32 | : config.dev.assetsPublicPath
33 | },
34 | resolve: {
35 | extensions: ['.js', '.vue', '.json'],
36 | alias: {
37 | 'vue$': 'vue/dist/vue.esm.js',
38 | '@': resolve('src'),
39 | }
40 | },
41 | module: {
42 | rules: [
43 | ...(config.dev.useEslint ? [createLintingRule()] : []),
44 | {
45 | test: /\.vue$/,
46 | loader: 'vue-loader',
47 | options: vueLoaderConfig
48 | },
49 | {
50 | test: /\.js$/,
51 | loader: 'babel-loader',
52 | include: [resolve('src'), resolve('test'), resolve('node_modules/webpack-dev-server/client')]
53 | },
54 | {
55 | test: /\.(png|jpe?g|gif|svg)(\?.*)?$/,
56 | loader: 'url-loader',
57 | options: {
58 | limit: 10000,
59 | name: utils.assetsPath('img/[name].[hash:7].[ext]')
60 | }
61 | },
62 | {
63 | test: /\.(mp4|webm|ogg|mp3|wav|flac|aac)(\?.*)?$/,
64 | loader: 'url-loader',
65 | options: {
66 | limit: 10000,
67 | name: utils.assetsPath('media/[name].[hash:7].[ext]')
68 | }
69 | },
70 | {
71 | test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/,
72 | loader: 'url-loader',
73 | options: {
74 | limit: 10000,
75 | name: utils.assetsPath('fonts/[name].[hash:7].[ext]')
76 | }
77 | }
78 | ]
79 | },
80 | node: {
81 | // prevent webpack from injecting useless setImmediate polyfill because Vue
82 | // source contains it (although only uses it if it's native).
83 | setImmediate: false,
84 | // prevent webpack from injecting mocks to Node native modules
85 | // that does not make sense for the client
86 | dgram: 'empty',
87 | fs: 'empty',
88 | net: 'empty',
89 | tls: 'empty',
90 | child_process: 'empty'
91 | }
92 | }
93 |
--------------------------------------------------------------------------------
/build/webpack.dev.conf.js:
--------------------------------------------------------------------------------
1 | 'use strict'
2 | const utils = require('./utils')
3 | const webpack = require('webpack')
4 | const config = require('../config')
5 | const merge = require('webpack-merge')
6 | const path = require('path')
7 | const baseWebpackConfig = require('./webpack.base.conf')
8 | const CopyWebpackPlugin = require('copy-webpack-plugin')
9 | const HtmlWebpackPlugin = require('html-webpack-plugin')
10 | const FriendlyErrorsPlugin = require('friendly-errors-webpack-plugin')
11 | const portfinder = require('portfinder')
12 |
13 | const HOST = process.env.HOST
14 | const PORT = process.env.PORT && Number(process.env.PORT)
15 |
16 | const devWebpackConfig = merge(baseWebpackConfig, {
17 | module: {
18 | rules: utils.styleLoaders({ sourceMap: config.dev.cssSourceMap, usePostCSS: true })
19 | },
20 | // cheap-module-eval-source-map is faster for development
21 | devtool: config.dev.devtool,
22 |
23 | // these devServer options should be customized in /config/index.js
24 | devServer: {
25 | clientLogLevel: 'warning',
26 | historyApiFallback: {
27 | rewrites: [
28 | { from: /.*/, to: path.posix.join(config.dev.assetsPublicPath, 'index.html') },
29 | ],
30 | },
31 | hot: true,
32 | contentBase: false, // since we use CopyWebpackPlugin.
33 | compress: true,
34 | host: HOST || config.dev.host,
35 | port: PORT || config.dev.port,
36 | open: config.dev.autoOpenBrowser,
37 | overlay: config.dev.errorOverlay
38 | ? { warnings: false, errors: true }
39 | : false,
40 | publicPath: config.dev.assetsPublicPath,
41 | proxy: config.dev.proxyTable,
42 | quiet: true, // necessary for FriendlyErrorsPlugin
43 | watchOptions: {
44 | poll: config.dev.poll,
45 | }
46 | },
47 | plugins: [
48 | new webpack.DefinePlugin({
49 | 'process.env': require('../config/dev.env')
50 | }),
51 | new webpack.HotModuleReplacementPlugin(),
52 | new webpack.NamedModulesPlugin(), // HMR shows correct file names in console on update.
53 | new webpack.NoEmitOnErrorsPlugin(),
54 | // https://github.com/ampedandwired/html-webpack-plugin
55 | new HtmlWebpackPlugin({
56 | filename: 'index.html',
57 | template: 'index.html',
58 | inject: true
59 | }),
60 | // copy custom static assets
61 | new CopyWebpackPlugin([
62 | {
63 | from: path.resolve(__dirname, '../static'),
64 | to: config.dev.assetsSubDirectory,
65 | ignore: ['.*']
66 | }
67 | ])
68 | ]
69 | })
70 |
71 | module.exports = new Promise((resolve, reject) => {
72 | portfinder.basePort = process.env.PORT || config.dev.port
73 | portfinder.getPort((err, port) => {
74 | if (err) {
75 | reject(err)
76 | } else {
77 | // publish the new Port, necessary for e2e tests
78 | process.env.PORT = port
79 | // add port to devServer config
80 | devWebpackConfig.devServer.port = port
81 |
82 | // Add FriendlyErrorsPlugin
83 | devWebpackConfig.plugins.push(new FriendlyErrorsPlugin({
84 | compilationSuccessInfo: {
85 | messages: [`Your application is running here: http://${devWebpackConfig.devServer.host}:${port}`],
86 | },
87 | onErrors: config.dev.notifyOnErrors
88 | ? utils.createNotifierCallback()
89 | : undefined
90 | }))
91 |
92 | resolve(devWebpackConfig)
93 | }
94 | })
95 | })
96 |
--------------------------------------------------------------------------------
/build/webpack.prod.conf.js:
--------------------------------------------------------------------------------
1 | 'use strict'
2 | const path = require('path')
3 | const utils = require('./utils')
4 | const webpack = require('webpack')
5 | const config = require('../config')
6 | const merge = require('webpack-merge')
7 | const baseWebpackConfig = require('./webpack.base.conf')
8 | const CopyWebpackPlugin = require('copy-webpack-plugin')
9 | const HtmlWebpackPlugin = require('html-webpack-plugin')
10 | const ExtractTextPlugin = require('extract-text-webpack-plugin')
11 | const OptimizeCSSPlugin = require('optimize-css-assets-webpack-plugin')
12 | const UglifyJsPlugin = require('uglifyjs-webpack-plugin')
13 |
14 | const env = require('../config/prod.env')
15 |
16 | const webpackConfig = merge(baseWebpackConfig, {
17 | module: {
18 | rules: utils.styleLoaders({
19 | sourceMap: config.build.productionSourceMap,
20 | extract: true,
21 | usePostCSS: true
22 | })
23 | },
24 | devtool: config.build.productionSourceMap ? config.build.devtool : false,
25 | output: {
26 | path: config.build.assetsRoot,
27 | filename: utils.assetsPath('js/[name].[chunkhash].js'),
28 | chunkFilename: utils.assetsPath('js/[id].[chunkhash].js')
29 | },
30 | plugins: [
31 | // http://vuejs.github.io/vue-loader/en/workflow/production.html
32 | new webpack.DefinePlugin({
33 | 'process.env': env
34 | }),
35 | new UglifyJsPlugin({
36 | uglifyOptions: {
37 | compress: {
38 | warnings: false
39 | }
40 | },
41 | sourceMap: config.build.productionSourceMap,
42 | parallel: true
43 | }),
44 | // extract css into its own file
45 | new ExtractTextPlugin({
46 | filename: utils.assetsPath('css/[name].[contenthash].css'),
47 | // Setting the following option to `false` will not extract CSS from codesplit chunks.
48 | // Their CSS will instead be inserted dynamically with style-loader when the codesplit chunk has been loaded by webpack.
49 | // It's currently set to `true` because we are seeing that sourcemaps are included in the codesplit bundle as well when it's `false`,
50 | // increasing file size: https://github.com/vuejs-templates/webpack/issues/1110
51 | allChunks: true,
52 | }),
53 | // Compress extracted CSS. We are using this plugin so that possible
54 | // duplicated CSS from different components can be deduped.
55 | new OptimizeCSSPlugin({
56 | cssProcessorOptions: config.build.productionSourceMap
57 | ? { safe: true, map: { inline: false } }
58 | : { safe: true }
59 | }),
60 | // generate dist index.html with correct asset hash for caching.
61 | // you can customize output by editing /index.html
62 | // see https://github.com/ampedandwired/html-webpack-plugin
63 | new HtmlWebpackPlugin({
64 | filename: config.build.index,
65 | template: 'index.html',
66 | inject: true,
67 | minify: {
68 | removeComments: true,
69 | collapseWhitespace: true,
70 | removeAttributeQuotes: true
71 | // more options:
72 | // https://github.com/kangax/html-minifier#options-quick-reference
73 | },
74 | // necessary to consistently work with multiple chunks via CommonsChunkPlugin
75 | chunksSortMode: 'dependency'
76 | }),
77 | // keep module.id stable when vendor modules does not change
78 | new webpack.HashedModuleIdsPlugin(),
79 | // enable scope hoisting
80 | new webpack.optimize.ModuleConcatenationPlugin(),
81 | // split vendor js into its own file
82 | new webpack.optimize.CommonsChunkPlugin({
83 | name: 'vendor',
84 | minChunks (module) {
85 | // any required modules inside node_modules are extracted to vendor
86 | return (
87 | module.resource &&
88 | /\.js$/.test(module.resource) &&
89 | module.resource.indexOf(
90 | path.join(__dirname, '../node_modules')
91 | ) === 0
92 | )
93 | }
94 | }),
95 | // extract webpack runtime and module manifest to its own file in order to
96 | // prevent vendor hash from being updated whenever app bundle is updated
97 | new webpack.optimize.CommonsChunkPlugin({
98 | name: 'manifest',
99 | minChunks: Infinity
100 | }),
101 | // This instance extracts shared chunks from code splitted chunks and bundles them
102 | // in a separate chunk, similar to the vendor chunk
103 | // see: https://webpack.js.org/plugins/commons-chunk-plugin/#extra-async-commons-chunk
104 | new webpack.optimize.CommonsChunkPlugin({
105 | name: 'app',
106 | async: 'vendor-async',
107 | children: true,
108 | minChunks: 3
109 | }),
110 |
111 | // copy custom static assets
112 | new CopyWebpackPlugin([
113 | {
114 | from: path.resolve(__dirname, '../static'),
115 | to: config.build.assetsSubDirectory,
116 | ignore: ['.*']
117 | }
118 | ])
119 | ]
120 | })
121 |
122 | if (config.build.productionGzip) {
123 | const CompressionWebpackPlugin = require('compression-webpack-plugin')
124 |
125 | webpackConfig.plugins.push(
126 | new CompressionWebpackPlugin({
127 | asset: '[path].gz[query]',
128 | algorithm: 'gzip',
129 | test: new RegExp(
130 | '\\.(' +
131 | config.build.productionGzipExtensions.join('|') +
132 | ')$'
133 | ),
134 | threshold: 10240,
135 | minRatio: 0.8
136 | })
137 | )
138 | }
139 |
140 | if (config.build.bundleAnalyzerReport) {
141 | const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin
142 | webpackConfig.plugins.push(new BundleAnalyzerPlugin())
143 | }
144 |
145 | module.exports = webpackConfig
146 |
--------------------------------------------------------------------------------
/config/dev.env.js:
--------------------------------------------------------------------------------
1 | 'use strict'
2 | const merge = require('webpack-merge')
3 | const prodEnv = require('./prod.env')
4 |
5 | module.exports = merge(prodEnv, {
6 | NODE_ENV: '"development"'
7 | })
8 |
--------------------------------------------------------------------------------
/config/index.js:
--------------------------------------------------------------------------------
1 | 'use strict'
2 | // Template version: 1.3.1
3 | // see http://vuejs-templates.github.io/webpack for documentation.
4 |
5 | const path = require('path')
6 |
7 | module.exports = {
8 | dev: {
9 |
10 | // Paths
11 | assetsSubDirectory: 'static',
12 | assetsPublicPath: '/',
13 | proxyTable: {},
14 |
15 | // Various Dev Server settings
16 | host: 'localhost', // can be overwritten by process.env.HOST
17 | port: 8080, // can be overwritten by process.env.PORT, if port is in use, a free one will be determined
18 | autoOpenBrowser: false,
19 | errorOverlay: true,
20 | notifyOnErrors: true,
21 | poll: false, // https://webpack.js.org/configuration/dev-server/#devserver-watchoptions-
22 |
23 | // Use Eslint Loader?
24 | // If true, your code will be linted during bundling and
25 | // linting errors and warnings will be shown in the console.
26 | useEslint: true,
27 | // If true, eslint errors and warnings will also be shown in the error overlay
28 | // in the browser.
29 | showEslintErrorsInOverlay: false,
30 |
31 | /**
32 | * Source Maps
33 | */
34 |
35 | // https://webpack.js.org/configuration/devtool/#development
36 | devtool: 'cheap-module-eval-source-map',
37 |
38 | // If you have problems debugging vue-files in devtools,
39 | // set this to false - it *may* help
40 | // https://vue-loader.vuejs.org/en/options.html#cachebusting
41 | cacheBusting: true,
42 |
43 | cssSourceMap: true
44 | },
45 |
46 | build: {
47 | // Template for index.html
48 | index: path.resolve(__dirname, '../dist/index.html'),
49 |
50 | // Paths
51 | assetsRoot: path.resolve(__dirname, '../dist'),
52 | assetsSubDirectory: 'static',
53 | assetsPublicPath: 'https://crisgon.github.io/vue-cart/dist/',
54 |
55 | /**
56 | * Source Maps
57 | */
58 |
59 | productionSourceMap: true,
60 | // https://webpack.js.org/configuration/devtool/#production
61 | devtool: '#source-map',
62 |
63 | // Gzip off by default as many popular static hosts such as
64 | // Surge or Netlify already gzip all static assets for you.
65 | // Before setting to `true`, make sure to:
66 | // npm install --save-dev compression-webpack-plugin
67 | productionGzip: false,
68 | productionGzipExtensions: ['js', 'css'],
69 |
70 | // Run the build command with an extra argument to
71 | // View the bundle analyzer report after build finishes:
72 | // `npm run build --report`
73 | // Set to `true` or `false` to always turn it on or off
74 | bundleAnalyzerReport: process.env.npm_config_report
75 | }
76 | }
77 |
--------------------------------------------------------------------------------
/config/prod.env.js:
--------------------------------------------------------------------------------
1 | 'use strict'
2 | module.exports = {
3 | NODE_ENV: '"production"'
4 | }
5 |
--------------------------------------------------------------------------------
/dist/index.html:
--------------------------------------------------------------------------------
1 |
vue-cart
--------------------------------------------------------------------------------
/dist/static/css/app.cb9d69e9d64b994d48bae8c4859415a4.css:
--------------------------------------------------------------------------------
1 | @import url(https://fonts.googleapis.com/css?family=Roboto);
2 | /*! normalize.css v8.0.0 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}h1{font-size:2em;margin:.67em 0}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}[hidden],template{display:none}body{font-family:Roboto,sans-serif;background-color:#fafafa}a{color:#000;text-decoration:none}.container{width:100%}.cart{position:absolute;top:75px;right:300px}.btn-circle{width:25px;height:25px;border-radius:50%;position:absolute;top:-5px;right:-5px;background-color:#fff;color:#000;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center}.leave-enter-active,.leave-leave-active{transition:all 1.2s}.leave-enter,.leave-leave-to{opacity:0;transform:translateX(-50%)}.appear-enter-active{animation:appear-animation .5s}.appear-leave-active{animation:appear-animation .5s reverse}@keyframes appear-animation{0%{transform:translateY(-50%);opacity:0}to{transform:translateY(0);opacity:1}}.header[data-v-ecc5ec8a]{width:100%;height:70px;background-color:#333;box-sizing:border-box;padding:.5em;display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center}.nav[data-v-ecc5ec8a]{width:600px}.nav-links[data-v-ecc5ec8a]{width:100%;display:-ms-flexbox;display:flex;-ms-flex-pack:start;justify-content:flex-start}.link[data-v-ecc5ec8a]{list-style:none;padding:0 2em}.link a[data-v-ecc5ec8a]{color:#fff;text-decoration:none}.btn[data-v-a61d3696]{border:0;cursor:pointer;box-sizing:border-box;border-radius:3px;color:#fff;display:-ms-flexbox;display:flex;-ms-flex-pack:distribute;justify-content:space-around;position:relative}.btn-small[data-v-a61d3696]{padding:.5em 2em}.btn-medium[data-v-a61d3696]{padding:.7em 4.5em}.btn-large[data-v-a61d3696]{padding:.7em 5em}.btn-info[data-v-a61d3696]{background-color:#2d9cdb}.btn-sucess[data-v-a61d3696]{background-color:#27ae60}.btn-danger[data-v-a61d3696]{background-color:#e74c3c}.btn img[data-v-a61d3696]{max-width:20px;margin-left:.5em}.box[data-v-3d02a006]{width:400px;height:auto;background-color:#fafafa;box-shadow:0 0 10px rgba(73,74,78,.1);border-radius:5px;box-sizing:border-box;padding:1em .5em;position:absolute;z-index:1}.box[data-v-3d02a006]:after{content:"";width:30px;height:30px;transform:rotate(45deg);background:inherit;position:absolute;top:-15px;right:15px}.box-item[data-v-3d02a006]{width:100%;height:130px;background-color:#fff;box-sizing:border-box;border-radius:3px;padding:0 .5em;margin-top:.3em;display:grid;grid-template-columns:repeat(3,1fr);grid-template-rows:repeat(3,1fr)}.item-thumb[data-v-3d02a006]{max-width:70%;grid-column:1/2;grid-row:1/4;-ms-flex-item-align:center;align-self:center}.item-name[data-v-3d02a006]{grid-column:2/4;grid-row:1/2;font-weight:400}.item-amount[data-v-3d02a006]{grid-column:2/3;grid-row:2/4;color:#ddd}.cart-info[data-v-3d02a006]{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between;-ms-flex-align:center;align-items:center}.mask[data-v-516c02ef]{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);width:100%;height:100%;background-color:rgba(0,0,0,.5)}.listOfProducts[data-v-85fa0bf0]{width:100%;max-width:1000px;margin:0 auto;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-pack:distribute;justify-content:space-around;padding:0}.product[data-v-85fa0bf0]{width:300px;background-color:#fff;list-style:none;box-sizing:border-box;padding:1em;margin:1em 0;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-align:center;align-items:center;border-radius:7px}.product-name[data-v-85fa0bf0]{font-size:1.2em;font-weight:400}.product-price[data-v-85fa0bf0]{width:100%;-ms-flex-item-align:start;align-self:flex-start;display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between;margin-bottom:.5em}.listOfProducts[data-v-43c41760]{width:100%;max-width:1000px;margin:0 auto;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-pack:distribute;justify-content:space-around;padding:0}.product[data-v-43c41760]{width:300px;background-color:#fff;list-style:none;box-sizing:border-box;padding:1em;margin:1em 0;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-align:center;align-items:center;border-radius:7px}.product-name[data-v-43c41760]{font-size:1.2em;font-weight:400}.product-name[data-v-43c41760]:hover{cursor:pointer;text-decoration:underline}.product-price[data-v-43c41760]{width:100%;-ms-flex-item-align:start;align-self:flex-start;display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between;margin-bottom:.5em}.product-box[data-v-7efdfc57]{width:800px;height:400px;margin:50px auto;box-sizing:border-box;padding:1.5em;background-color:#fff;border-radius:7px;display:-ms-flexbox;display:flex;-ms-flex-pack:distribute;justify-content:space-around;-ms-flex-align:center;align-items:center}.product-image[data-v-7efdfc57]{width:300px}.product-info[data-v-7efdfc57]{width:400px;-ms-flex-item-align:start;align-self:flex-start}.product-title[data-v-7efdfc57]{font-weight:400}.product-price[data-v-7efdfc57]{font-size:2em;font-weight:bolder}.product-box button[data-v-7efdfc57]{width:300px;margin:.3em 0}.stars-box[data-v-5147e0a8]{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}.stars[data-v-5147e0a8]{width:80%}.star-bg[data-v-5147e0a8]{fill:#c4c4c4}.star-fill[data-v-5147e0a8]{fill:#f2c94c}.star-path[data-v-5147e0a8]{fill:#fff}.total-stars[data-v-5147e0a8]{box-sizing:border-box;padding:.5em 0}.modal[data-v-44910ab4]{width:100%;max-width:500px;height:300px;box-sizing:border-box;padding:1em;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);background-color:#fff;box-shadow:0 0 10px hsla(0,0%,56%,.2);border:0;border-radius:5px;line-height:1.5em;opacity:1;transition:all .5s;z-index:1}.modal button[data-v-44910ab4]{position:absolute;bottom:10px;right:10px}.fade-enter-active[data-v-44910ab4],.fade-leave-active[data-v-44910ab4]{transition:all .7s}.fade-enter[data-v-44910ab4],.fade-leave-to[data-v-44910ab4]{opacity:0}.checkout-box[data-v-fb8b6cda]{width:100%;max-width:900px;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;margin:50px auto;box-sizing:border-box;padding:1em}.checkout-list[data-v-fb8b6cda]{padding:0}.checkout-product[data-v-fb8b6cda]{display:grid;grid-template-columns:1fr 3fr 2fr .5fr;background-color:#fff;box-shadow:0 0 10px rgba(73,74,78,.1);border-radius:5px;list-style:none;box-sizing:border-box;padding:.8em;margin:1em 0}.checkout-product [data-v-fb8b6cda]{place-self:center}.product-image[data-v-fb8b6cda]{grid-column:1/2;width:50%}.product-name[data-v-fb8b6cda]{box-sizing:border-box}.product-price[data-v-fb8b6cda]{font-size:1.2em;font-weight:700}.product-remove[data-v-fb8b6cda]{width:25px;height:25px;border-radius:50%;border:0;background-color:#e0e0e0;color:#fff;cursor:pointer}.total[data-v-fb8b6cda]{font-size:2em;font-weight:700;-ms-flex-item-align:end;align-self:flex-end}.checkout-message[data-v-fb8b6cda]{font-size:1.5em}.fade-enter-active[data-v-fb8b6cda],.fade-leave-active[data-v-fb8b6cda]{transition:all .5s}.fade-enter[data-v-fb8b6cda],.fade-leave-to[data-v-fb8b6cda]{transform:translateX(-40px);opacity:0}
3 | /*# sourceMappingURL=app.cb9d69e9d64b994d48bae8c4859415a4.css.map */
--------------------------------------------------------------------------------
/dist/static/css/app.cb9d69e9d64b994d48bae8c4859415a4.css.map:
--------------------------------------------------------------------------------
1 | {"version":3,"sources":["app.cb9d69e9d64b994d48bae8c4859415a4.css"],"names":[],"mappings":"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","file":"app.cb9d69e9d64b994d48bae8c4859415a4.css","sourcesContent":["@import url(https://fonts.googleapis.com/css?family=Roboto);\n/*! normalize.css v8.0.0 | MIT License | github.com/necolas/normalize.css */\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/* Document\n ========================================================================== */\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/**\n * 1. Correct the line height in all browsers.\n * 2. Prevent adjustments of font size after orientation changes in iOS.\n */\nhtml {\n line-height: 1.15; /* 1 */\n -webkit-text-size-adjust: 100%; /* 2 */\n}\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/* Sections\n ========================================================================== */\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/**\n * Remove the margin in all browsers.\n */\nbody {\n margin: 0;\n}\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/**\n * Correct the font size and margin on `h1` elements within `section` and\n * `article` contexts in Chrome, Firefox, and Safari.\n */\nh1 {\n font-size: 2em;\n margin: 0.67em 0;\n}\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/* Grouping content\n ========================================================================== */\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/**\n * 1. Add the correct box sizing in Firefox.\n * 2. Show the overflow in Edge and IE.\n */\nhr {\n -webkit-box-sizing: content-box;\n box-sizing: content-box; /* 1 */\n height: 0; /* 1 */\n overflow: visible; /* 2 */\n}\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/**\n * 1. Correct the inheritance and scaling of font size in all browsers.\n * 2. Correct the odd `em` font sizing in all browsers.\n */\npre {\n font-family: monospace, monospace; /* 1 */\n font-size: 1em; /* 2 */\n}\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/* Text-level semantics\n ========================================================================== */\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/**\n * Remove the gray background on active links in IE 10.\n */\na {\n background-color: transparent;\n}\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/**\n * 1. Remove the bottom border in Chrome 57-\n * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.\n */\nabbr[title] {\n border-bottom: none; /* 1 */\n text-decoration: underline; /* 2 */\n -webkit-text-decoration: underline dotted;\n text-decoration: underline dotted; /* 2 */\n}\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/**\n * Add the correct font weight in Chrome, Edge, and Safari.\n */\nb,\nstrong {\n font-weight: bolder;\n}\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/**\n * 1. Correct the inheritance and scaling of font size in all browsers.\n * 2. Correct the odd `em` font sizing in all browsers.\n */\ncode,\nkbd,\nsamp {\n font-family: monospace, monospace; /* 1 */\n font-size: 1em; /* 2 */\n}\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/**\n * Add the correct font size in all browsers.\n */\nsmall {\n font-size: 80%;\n}\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/**\n * Prevent `sub` and `sup` elements from affecting the line height in\n * all browsers.\n */\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\nsub {\n bottom: -0.25em;\n}\nsup {\n top: -0.5em;\n}\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/* Embedded content\n ========================================================================== */\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/**\n * Remove the border on images inside links in IE 10.\n */\nimg {\n border-style: none;\n}\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/* Forms\n ========================================================================== */\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/**\n * 1. Change the font styles in all browsers.\n * 2. Remove the margin in Firefox and Safari.\n */\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n font-family: inherit; /* 1 */\n font-size: 100%; /* 1 */\n line-height: 1.15; /* 1 */\n margin: 0; /* 2 */\n}\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/**\n * Show the overflow in IE.\n * 1. Show the overflow in Edge.\n */\nbutton,\ninput { /* 1 */\n overflow: visible;\n}\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/**\n * Remove the inheritance of text transform in Edge, Firefox, and IE.\n * 1. Remove the inheritance of text transform in Firefox.\n */\nbutton,\nselect { /* 1 */\n text-transform: none;\n}\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/**\n * Correct the inability to style clickable types in iOS and Safari.\n */\nbutton,\n[type=\"button\"],\n[type=\"reset\"],\n[type=\"submit\"] {\n -webkit-appearance: button;\n}\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/**\n * Remove the inner border and padding in Firefox.\n */\nbutton::-moz-focus-inner,\n[type=\"button\"]::-moz-focus-inner,\n[type=\"reset\"]::-moz-focus-inner,\n[type=\"submit\"]::-moz-focus-inner {\n border-style: none;\n padding: 0;\n}\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/**\n * Restore the focus styles unset by the previous rule.\n */\nbutton:-moz-focusring,\n[type=\"button\"]:-moz-focusring,\n[type=\"reset\"]:-moz-focusring,\n[type=\"submit\"]:-moz-focusring {\n outline: 1px dotted ButtonText;\n}\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/**\n * Correct the padding in Firefox.\n */\nfieldset {\n padding: 0.35em 0.75em 0.625em;\n}\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/**\n * 1. Correct the text wrapping in Edge and IE.\n * 2. Correct the color inheritance from `fieldset` elements in IE.\n * 3. Remove the padding so developers are not caught out when they zero out\n * `fieldset` elements in all browsers.\n */\nlegend {\n -webkit-box-sizing: border-box;\n box-sizing: border-box; /* 1 */\n color: inherit; /* 2 */\n display: table; /* 1 */\n max-width: 100%; /* 1 */\n padding: 0; /* 3 */\n white-space: normal; /* 1 */\n}\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/**\n * Add the correct vertical alignment in Chrome, Firefox, and Opera.\n */\nprogress {\n vertical-align: baseline;\n}\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/**\n * Remove the default vertical scrollbar in IE 10+.\n */\ntextarea {\n overflow: auto;\n}\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/**\n * 1. Add the correct box sizing in IE 10.\n * 2. Remove the padding in IE 10.\n */\n[type=\"checkbox\"],\n[type=\"radio\"] {\n -webkit-box-sizing: border-box;\n box-sizing: border-box; /* 1 */\n padding: 0; /* 2 */\n}\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/**\n * Correct the cursor style of increment and decrement buttons in Chrome.\n */\n[type=\"number\"]::-webkit-inner-spin-button,\n[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/**\n * 1. Correct the odd appearance in Chrome and Safari.\n * 2. Correct the outline style in Safari.\n */\n[type=\"search\"] {\n -webkit-appearance: textfield; /* 1 */\n outline-offset: -2px; /* 2 */\n}\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/**\n * Remove the inner padding in Chrome and Safari on macOS.\n */\n[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/**\n * 1. Correct the inability to style clickable types in iOS and Safari.\n * 2. Change font properties to `inherit` in Safari.\n */\n::-webkit-file-upload-button {\n -webkit-appearance: button; /* 1 */\n font: inherit; /* 2 */\n}\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/* Interactive\n ========================================================================== */\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/*\n * Add the correct display in Edge, IE 10+, and Firefox.\n */\ndetails {\n display: block;\n}\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/*\n * Add the correct display in all browsers.\n */\nsummary {\n display: list-item;\n}\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/* Misc\n ========================================================================== */\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/**\n * Add the correct display in IE 10+.\n */\ntemplate {\n display: none;\n}\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/**\n * Add the correct display in IE 10.\n */\n[hidden] {\n display: none;\n}\nbody {\n font-family: 'Roboto', sans-serif;\n background-color: #FAFAFA;\n}\na {\n color: #000;\n text-decoration: none;\n}\n.container {\n width: 100%;\n}\n.cart {\n position: absolute;\n top: 75px;\n right: 300px;\n}\n.btn-circle {\n width: 25px;\n height: 25px;\n border-radius: 50%;\n position: absolute;\n top: -5px;\n right: -5px;\n background-color: #fff;\n color: #000;\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n -webkit-box-pack: center;\n -ms-flex-pack: center;\n justify-content: center;\n}\n.leave-enter-active, .leave-leave-active {\n -webkit-transition: all 1.2s;\n transition: all 1.2s;\n}\n.leave-enter, .leave-leave-to {\n opacity: 0;\n -webkit-transform: translateX(-50%);\n transform: translateX(-50%);\n}\n.appear-enter-active {\n -webkit-animation: appear-animation .5s;\n animation: appear-animation .5s;\n}\n.appear-leave-active {\n animation: appear-animation .5s reverse;\n}\n@-webkit-keyframes appear-animation {\n0% {\n -webkit-transform: translateY(-50%);\n transform: translateY(-50%);\n opacity: 0;\n}\n100% {\n -webkit-transform: translateY(0%);\n transform: translateY(0%);\n opacity: 1;\n}\n}\n@keyframes appear-animation {\n0% {\n -webkit-transform: translateY(-50%);\n transform: translateY(-50%);\n opacity: 0;\n}\n100% {\n -webkit-transform: translateY(0%);\n transform: translateY(0%);\n opacity: 1;\n}\n}\n\n.header[data-v-ecc5ec8a] {\n width: 100%;\n height: 70px;\n background-color: #333333;\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n padding: .5em;\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-pack: center;\n -ms-flex-pack: center;\n justify-content: center;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n}\n.nav[data-v-ecc5ec8a] {\n width: 600px;\n}\n.nav-links[data-v-ecc5ec8a] {\n width: 100%;\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-pack: start;\n -ms-flex-pack: start;\n justify-content: flex-start;\n}\n.link[data-v-ecc5ec8a] {\n list-style: none;\n padding: 0 2em;\n}\n.link a[data-v-ecc5ec8a] {\n color: #fff;\n text-decoration: none;\n}\n\n.btn[data-v-a61d3696] {\n border: 0;\n cursor: pointer;\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n border-radius: 3px;\n color: #fff;\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -ms-flex-pack: distribute;\n justify-content: space-around;\n position: relative;\n}\n.btn-small[data-v-a61d3696] {\n padding: .5em 2em;\n}\n.btn-medium[data-v-a61d3696] {\n padding: .7em 4.5em;\n}\n.btn-large[data-v-a61d3696] {\n padding: .7em 5em;\n}\n.btn-info[data-v-a61d3696] {\n background-color: #2D9CDB;\n}\n.btn-sucess[data-v-a61d3696] {\n background-color: #27AE60;\n}\n.btn-danger[data-v-a61d3696] {\n background-color: #e74c3c;\n}\n.btn img[data-v-a61d3696] {\n max-width: 20px;\n margin-left: .5em;\n}\n\n\n.box[data-v-3d02a006] {\n width: 400px;\n height: auto;\n background-color: #FAFAFA;\n -webkit-box-shadow: 0px 0px 10px rgba(73, 74, 78, 0.1);\n box-shadow: 0px 0px 10px rgba(73, 74, 78, 0.1);\n border-radius: 5px;\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n padding: 1em .5em;\n position: absolute;\n z-index: 1;\n}\n.box[data-v-3d02a006]:after {\n content: '';\n width: 30px;\n height: 30px;\n -webkit-transform: rotate(45deg);\n transform: rotate(45deg);\n background: inherit;\n position: absolute;\n top: -15px;\n right: 15px;\n}\n.box-item[data-v-3d02a006] {\n width: 100%;\n height: 130px;\n background-color: #fff;\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n border-radius: 3px;\n padding: 0 .5em;\n margin-top: .3em;\n display: grid;\n grid-template-columns: repeat(3, 1fr);\n grid-template-rows: repeat(3, 1fr);\n}\n.item-thumb[data-v-3d02a006] {\n max-width: 70%;\n grid-column: 1/2;\n grid-row: 1/4;\n -ms-flex-item-align: center;\n align-self: center;\n}\n.item-name[data-v-3d02a006] {\n grid-column: 2/4;\n grid-row: 1/2;\n font-weight: normal;\n}\n.item-amount[data-v-3d02a006] {\n grid-column: 2/3;\n grid-row: 2/4;\n color: #ddd;\n}\n.cart-info[data-v-3d02a006] {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-pack: justify;\n -ms-flex-pack: justify;\n justify-content: space-between;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n}\n\n\n.mask[data-v-516c02ef] {\n position: fixed;\n top: 50%;\n left: 50%;\n -webkit-transform: translate(-50%, -50%);\n transform: translate(-50%, -50%);\n width: 100%;\n height: 100%;\n background-color: rgba(0,0,0,.5);\n}\n\n.listOfProducts[data-v-85fa0bf0] {\n width: 100%;\n max-width: 1000px;\n margin: 0 auto;\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -ms-flex-wrap: wrap;\n flex-wrap: wrap;\n -ms-flex-pack: distribute;\n justify-content: space-around;\n padding: 0;\n}\n.product[data-v-85fa0bf0] {\n width: 300px;\n background-color: #fff;\n list-style: none;\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n padding: 1em;\n margin: 1em 0;\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-orient: vertical;\n -webkit-box-direction: normal;\n -ms-flex-direction: column;\n flex-direction: column;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n border-radius: 7px;\n}\n.product-name[data-v-85fa0bf0] {\n font-size: 1.2em;\n font-weight: normal;\n}\n.product-price[data-v-85fa0bf0] {\n width: 100%;\n -ms-flex-item-align: start;\n align-self: flex-start;\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-pack: justify;\n -ms-flex-pack: justify;\n justify-content: space-between;\n margin-bottom: .5em;\n}\n\n\n.listOfProducts[data-v-43c41760] {\n width: 100%;\n max-width: 1000px;\n margin: 0 auto;\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -ms-flex-wrap: wrap;\n flex-wrap: wrap;\n -ms-flex-pack: distribute;\n justify-content: space-around;\n padding: 0;\n}\n.product[data-v-43c41760] {\n width: 300px;\n background-color: #fff;\n list-style: none;\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n padding: 1em;\n margin: 1em 0;\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-orient: vertical;\n -webkit-box-direction: normal;\n -ms-flex-direction: column;\n flex-direction: column;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n border-radius: 7px;\n}\n.product-name[data-v-43c41760] {\n font-size: 1.2em;\n font-weight: normal;\n}\n.product-name[data-v-43c41760]:hover {\n cursor: pointer;\n text-decoration: underline;\n}\n.product-price[data-v-43c41760] {\n width: 100%;\n -ms-flex-item-align: start;\n align-self: flex-start;\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-pack: justify;\n -ms-flex-pack: justify;\n justify-content: space-between;\n margin-bottom: .5em;\n}\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.product-box[data-v-7efdfc57] {\n width: 800px;\n height: 400px;\n margin: 50px auto;\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n padding: 1.5em;\n background-color: #fff;\n border-radius: 7px;\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -ms-flex-pack: distribute;\n justify-content: space-around;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n}\n.product-image[data-v-7efdfc57] {\n width: 300px;\n}\n.product-info[data-v-7efdfc57] {\n width: 400px;\n -ms-flex-item-align: start;\n align-self: flex-start;\n}\n.product-title[data-v-7efdfc57] {\n font-weight: normal;\n}\n.product-price[data-v-7efdfc57] {\n font-size: 2em;\n font-weight: bolder;\n}\n.product-box button[data-v-7efdfc57] {\n width: 300px;\n margin: .3em 0;\n}\n\n.stars-box[data-v-5147e0a8] {\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-orient: vertical;\n -webkit-box-direction: normal;\n -ms-flex-direction: column;\n flex-direction: column;\n}\n.stars[data-v-5147e0a8] {\n width: 80%;\n}\n.star-bg[data-v-5147e0a8] {\n fill: #C4C4C4;\n}\n.star-fill[data-v-5147e0a8] {\n fill: #F2C94C;\n}\n.star-path[data-v-5147e0a8] {\n fill: #ffffff;\n}\n.total-stars[data-v-5147e0a8] {\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n padding: .5em 0;\n}\n\n.modal[data-v-44910ab4] {\n width: 100%;\n max-width: 500px;\n height: 300px;\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n padding: 1em;\n position: absolute;\n top: 50%;\n left: 50%;\n -webkit-transform: translate(-50%, -50%);\n transform: translate(-50%, -50%);\n background-color: #fff;\n -webkit-box-shadow: 0 0 10px rgba(144,144,144,.2);\n box-shadow: 0 0 10px rgba(144,144,144,.2);\n border: 0;\n border-radius: 5px;\n line-height: 1.5em;\n opacity: 1;\n -webkit-transition: all .5s;\n transition: all .5s;\n z-index: 1;\n}\n.modal button[data-v-44910ab4] {\n position: absolute;\n bottom: 10px;\n right: 10px;\n}\n.fade-enter-active[data-v-44910ab4], .fade-leave-active[data-v-44910ab4] {\n -webkit-transition: all .7s;\n transition: all .7s;\n}\n.fade-enter[data-v-44910ab4], .fade-leave-to[data-v-44910ab4] {\n opacity: 0;\n}\n\n.checkout-box[data-v-fb8b6cda] {\n width: 100%;\n max-width: 900px;\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-orient: vertical;\n -webkit-box-direction: normal;\n -ms-flex-direction: column;\n flex-direction: column;\n margin: 50px auto;\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n padding: 1em;\n}\n.checkout-list[data-v-fb8b6cda] {\n padding: 0;\n}\n.checkout-product[data-v-fb8b6cda] {\n display: grid;\n grid-template-columns: 1fr 3fr 2fr .5fr;\n background-color: #fff;\n -webkit-box-shadow: 0px 0px 10px rgba(73, 74, 78, 0.1);\n box-shadow: 0px 0px 10px rgba(73, 74, 78, 0.1);\n border-radius: 5px;\n list-style: none;\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n padding: .8em;\n margin: 1em 0;\n}\n.checkout-product *[data-v-fb8b6cda] {\n place-self: center;\n}\n.product-image[data-v-fb8b6cda] {\n grid-column: 1/2;\n width: 50%;\n}\n.product-name[data-v-fb8b6cda] {\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n}\n.product-price[data-v-fb8b6cda] {\n font-size: 1.2em;\n font-weight: bold;\n}\n.product-remove[data-v-fb8b6cda] {\n width: 25px;\n height: 25px;\n border-radius: 50%;\n border: 0;\n background-color: #E0E0E0;\n color: #fff;\n cursor: pointer;\n}\n.total[data-v-fb8b6cda] {\n font-size: 2em;\n font-weight: bold;\n -ms-flex-item-align: end;\n align-self: flex-end;\n}\n.checkout-message[data-v-fb8b6cda] {\n font-size: 1.5em;\n}\n.fade-enter-active[data-v-fb8b6cda], .fade-leave-active[data-v-fb8b6cda] {\n -webkit-transition: all .5s;\n transition: all .5s;\n}\n.fade-enter[data-v-fb8b6cda], .fade-leave-to[data-v-fb8b6cda] {\n -webkit-transform: translateX(-40px);\n transform: translateX(-40px);\n opacity: 0;\n}\n"]}
--------------------------------------------------------------------------------
/dist/static/js/app.f7a84d7a3c723f0c4136.js:
--------------------------------------------------------------------------------
1 | webpackJsonp([1],{"9Of2":function(t,e){},AG2p:function(t,e){},Bs4u:function(t,e){},FDrI:function(t,e){},HEHz:function(t,e){},JfzD:function(t,e){},KEEg:function(t,e){t.exports="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/Pgo8IS0tIEdlbmVyYXRvcjogQWRvYmUgSWxsdXN0cmF0b3IgMTYuMC4wLCBTVkcgRXhwb3J0IFBsdWctSW4gLiBTVkcgVmVyc2lvbjogNi4wMCBCdWlsZCAwKSAgLS0+CjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+CjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgdmVyc2lvbj0iMS4xIiBpZD0iQ2FwYV8xIiB4PSIwcHgiIHk9IjBweCIgd2lkdGg9IjUxMnB4IiBoZWlnaHQ9IjUxMnB4IiB2aWV3Qm94PSIwIDAgNTEwIDUxMCIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgNTEwIDUxMDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPgo8Zz4KCTxnIGlkPSJzaG9wcGluZy1jYXJ0Ij4KCQk8cGF0aCBkPSJNMTUzLDQwOGMtMjguMDUsMC01MSwyMi45NS01MSw1MXMyMi45NSw1MSw1MSw1MXM1MS0yMi45NSw1MS01MVMxODEuMDUsNDA4LDE1Myw0MDh6IE0wLDB2NTFoNTFsOTEuOCwxOTMuOEwxMDcuMSwzMDYgICAgYy0yLjU1LDcuNjUtNS4xLDE3Ljg1LTUuMSwyNS41YzAsMjguMDUsMjIuOTUsNTEsNTEsNTFoMzA2di01MUgxNjMuMmMtMi41NSwwLTUuMS0yLjU1LTUuMS01LjF2LTIuNTUxbDIyLjk1LTQzLjM1aDE4OC43ICAgIGMyMC40LDAsMzUuNy0xMC4yLDQzLjM1LTI1LjVMNTA0LjksODkuMjVjNS4xLTUuMSw1LjEtNy42NSw1LjEtMTIuNzVjMC0xNS4zLTEwLjItMjUuNS0yNS41LTI1LjVIMTA3LjFMODQuMTUsMEgweiBNNDA4LDQwOCAgICBjLTI4LjA1LDAtNTEsMjIuOTUtNTEsNTFzMjIuOTUsNTEsNTEsNTFzNTEtMjIuOTUsNTEtNTFTNDM2LjA1LDQwOCw0MDgsNDA4eiIgZmlsbD0iI0ZGRkZGRiIvPgoJPC9nPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+Cjwvc3ZnPgo="},KIlG:function(t,e){},NHnr:function(t,e,s){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=s("7+uW"),o=s("Dd8w"),r=s.n(o),a=s("NYxO"),i={render:function(){var t=this.$createElement,e=this._self._c||t;return e("header",{staticClass:"header"},[e("nav",{staticClass:"nav"},[e("ul",{staticClass:"nav-links"},[e("li",{staticClass:"link"},[e("router-link",{attrs:{to:"/"}},[this._v("AllProducts")])],1),this._v(" "),e("li",{staticClass:"link"},[e("router-link",{attrs:{to:"/smartphones"}},[this._v("Smartphones")])],1),this._v(" "),e("li",{staticClass:"link"},[e("router-link",{attrs:{to:"/notebooks"}},[this._v("Notebooks")])],1)])]),this._v(" "),this._t("default")],2)},staticRenderFns:[]};var c=s("VU/8")({},i,!1,function(t){s("9Of2")},"data-v-ecc5ec8a",null).exports,u={render:function(){var t=this.$createElement,e=this._self._c||t;return e("button",{class:this.btnColor},[this._t("default"),this._v(" "),this.cartIcon?e("img",{attrs:{src:s("KEEg"),alt:"Cart Icon"}}):this._e()],2)},staticRenderFns:[]};var d=s("VU/8")({props:["btnColor","cartIcon"]},u,!1,function(t){s("UnBH")},"data-v-a61d3696",null).exports,m={components:{btn:d},methods:r()({},Object(a.b)(["showOrHiddenPopupCart"]),{hasProduct:function(){return this.getProductsInCart.length>0},totalPrice:function(){return this.getProductsInCart.reduce(function(t,e){return t+e.price},0)},showPopupCart:function(){this.showOrHiddenPopupCart()}}),computed:r()({},Object(a.c)(["getProductsInCart"]))},l={render:function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("div",{staticClass:"box"},[t.hasProduct()?t._e():s("span",[t._v("No products :/")]),t._v(" "),t._l(t.getProductsInCart,function(e,n){return s("div",{key:n,staticClass:"box-item"},[s("img",{staticClass:"item-thumb",attrs:{src:e.image,alt:""}}),t._v(" "),s("h3",{staticClass:"item-name"},[t._v(t._s(e.name))]),t._v(" "),s("span",{staticClass:"item-amount"},[t._v("Amount: 1")]),t._v(" "),s("span",{staticClass:"item-price"},[t._v("R$ "+t._s(e.price)+", 00")])])}),t._v(" "),t.hasProduct()?s("div",{staticClass:"cart-info"},[s("span",[t._v("Total: R$ "+t._s(t.totalPrice())+", 00")]),t._v(" "),s("router-link",{attrs:{to:"/checkout"}},[s("btn",{attrs:{btnColor:"btn btn-small btn-info"},nativeOn:{click:function(e){t.showPopupCart()}}},[t._v("\n View cart\n ")])],1)],1):t._e()],2)},staticRenderFns:[]};var p=s("VU/8")(m,l,!1,function(t){s("KIlG")},"data-v-3d02a006",null).exports,h={render:function(){var t=this.$createElement;return(this._self._c||t)("div",{staticClass:"mask"})},staticRenderFns:[]};var v=s("VU/8")({},h,!1,function(t){s("AG2p")},"data-v-516c02ef",null).exports,g={components:{mainMenu:c,btn:d,popupcart:p,maskBg:v},methods:r()({},Object(a.b)(["showOrHiddenPopupCart"]),{hasProduct:function(){return this.getProductsInCart.length>0},showPopupCart:function(){this.showOrHiddenPopupCart()}}),computed:r()({},Object(a.c)(["getProductsInCart","getPopupCart"]))},C={render:function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("div",{staticClass:"container"},[s("mainMenu",[s("btn",{attrs:{btnColor:"btn btn-small btn-info btn-popup",cartIcon:!0},nativeOn:{click:function(e){t.showPopupCart()}}},[t._v("\n Cart\n "),t.hasProduct()?s("span",{staticClass:"btn-circle"},[t._v("\n "+t._s(t.getProductsInCart.length)+"\n ")]):t._e()]),t._v(" "),s("transition",{attrs:{name:"appear"}},[t.getPopupCart?s("popupcart",{staticClass:"cart"}):t._e()],1)],1),t._v(" "),s("transition",{attrs:{name:"leave"}},[s("router-view")],1),t._v(" "),t.getPopupCart?s("maskBg",{nativeOn:{click:function(e){t.showPopupCart()}}}):t._e()],1)},staticRenderFns:[]};var f=s("VU/8")(g,C,!1,function(t){s("m0a0")},null,null).exports,b=s("/ocq"),P={props:["products"],components:{btn:d},methods:r()({},Object(a.b)(["addProduct","currentProduct"]),{addProductToCart:function(t){this.addProduct(t)},addCurrentProduct:function(t){this.currentProduct(t)}})},_={render:function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("ul",{staticClass:"listOfProducts"},t._l(t.products,function(e,n){return s("li",{key:n,staticClass:"product"},[s("img",{attrs:{src:e.image,alt:""}}),t._v(" "),s("router-link",{attrs:{to:"/product-details"}},[s("h2",{staticClass:"product-name",on:{click:function(s){t.addCurrentProduct(e)}}},[t._v("\n "+t._s(e.name)+"\n ")])]),t._v(" "),s("div",{staticClass:"product-price"},[s("span",[t._v("R$ "+t._s(e.price)+", 00")]),t._v(" "),s("span",[t._v("10 x "+t._s(Math.round(e.price/10))+", 00 ")])]),t._v(" "),s("btn",{attrs:{btnColor:"btn btn-large btn-sucess",cartIcon:!0},nativeOn:{click:function(s){t.addProductToCart(e)}}},[t._v("\n Add to cart\n ")])],1)}))},staticRenderFns:[]};var w=s("VU/8")(P,_,!1,function(t){s("fowb")},"data-v-43c41760",null).exports,M={components:{listOfProducts:w},computed:r()({},Object(a.c)(["getAllProducts"]))},I={render:function(){var t=this.$createElement;return(this._self._c||t)("listOfProducts",{attrs:{products:this.getAllProducts}})},staticRenderFns:[]};var y=s("VU/8")(M,I,!1,function(t){s("m+Y5")},"data-v-85fa0bf0",null).exports,L={components:{listOfProducts:w},computed:r()({},Object(a.c)(["getSmartphones"]))},x={render:function(){var t=this.$createElement;return(this._self._c||t)("listOfProducts",{attrs:{products:this.getSmartphones}})},staticRenderFns:[]};var j=s("VU/8")(L,x,!1,function(t){s("RQFn")},null,null).exports,O={components:{listOfProducts:w},computed:r()({},Object(a.c)(["getNotebooks"]))},k={render:function(){var t=this.$createElement;return(this._self._c||t)("listOfProducts",{attrs:{products:this.getNotebooks}})},staticRenderFns:[]};var N=s("VU/8")(O,k,!1,function(t){s("JfzD")},null,null).exports,R={render:function(){var t=this.$createElement,e=this._self._c||t;return e("div",{staticClass:"stars-box"},[e("svg",{staticClass:"stars",attrs:{xmlns:"http://www.w3.org/2000/svg",viewBox:"-54 -1 128 22"}},[e("path",{staticClass:"star-bg",attrs:{d:"M-55-1.9H75v24H-55z"}}),e("rect",{staticClass:"star-fill",attrs:{x:"-55",y:"-2",width:this.rate,height:"24"}}),e("path",{staticClass:"star-path",attrs:{d:"M-55-2v24H75V-2H-55zm17.8 21.4l-6.4-3.3-6.4 3.3 1.2-7-5.2-5 7.2-1 3.2-6.4 3.2 6.4 7.2 1-5.2 5 1.2 7zm26.8-.2l-6.4-3.3-6.4 3.3 1.2-7-5.2-5 7.2-1 3.2-6.4 3.2 6.4 7.2 1-5.2 5 1.2 7zm26.8 0L10 15.9l-6.4 3.3 1.2-7-5.2-5 7.2-1L10-.2l3.2 6.4 7.2 1-5.2 5 1.2 7zm26.8 0l-6.4-3.3-6.4 3.3 1.2-7-5.2-5 7.2-1 3.2-6.4L40 6.2l7.2 1-5.2 5 1.2 7zm26.8 0l-6.4-3.3-6.4 3.3 1.2-7-5.2-5 7.2-1 3.2-6.4 3.2 6.4 7.2 1-5.2 5 1.2 7z"}})]),this._v(" "),e("span",{staticClass:"total-stars"},[this._v(this._s(this.totalReviews)+" reviews.")])])},staticRenderFns:[]};var T=s("VU/8")({props:["rate","totalReviews"]},R,!1,function(t){s("hR/e")},"data-v-5147e0a8",null).exports,D={components:{btn:d,maskBg:v},computed:r()({},Object(a.c)({showModal:"getShowModal"})),methods:r()({},Object(a.b)(["showOrHiddenModal"]),{closeModal:function(){this.showOrHiddenModal()}})},S={render:function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("div",[s("transition",{attrs:{name:"fade"}},[s("div",{directives:[{name:"show",rawName:"v-show",value:t.showModal,expression:"showModal"}],staticClass:"modal"},[s("h3",[t._v("Details")]),t._v(" "),t._t("default"),t._v(" "),s("btn",{attrs:{btnColor:"btn btn-small btn-danger"},nativeOn:{click:function(e){t.closeModal()}}},[t._v("\n Close\n ")])],2)]),t._v(" "),s("transition",{attrs:{name:"fade"}},[s("maskBg",{directives:[{name:"show",rawName:"v-show",value:t.showModal,expression:"showModal"}],on:{click:function(e){t.closeModal()}}})],1)],1)},staticRenderFns:[]};var E={components:{btn:d,stars:T,modal:s("VU/8")(D,S,!1,function(t){s("Bs4u")},"data-v-44910ab4",null).exports},computed:r()({},Object(a.c)({currentProduct:"getCurrentProduct"})),methods:r()({},Object(a.b)(["addProduct","showOrHiddenModal"]),{addProductToCart:function(t){this.addProduct(t)},rated:function(t){return 20*t+"%"},openModal:function(){this.showOrHiddenModal()}})},U={render:function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("div",{staticClass:"product-box"},[s("div",{staticClass:"product-image"},[s("img",{attrs:{src:t.currentProduct.image,alt:""}}),t._v(" "),s("stars",{attrs:{rate:t.rated(t.currentProduct.stars),totalReviews:t.currentProduct.totalReviews}})],1),t._v(" "),s("div",{staticClass:"product-info"},[s("h2",{staticClass:"product-title"},[t._v(t._s(t.currentProduct.name))]),t._v(" "),s("span",{staticClass:"product-price"},[t._v("R$ "+t._s(t.currentProduct.price)+", 00")]),t._v(" "),s("btn",{attrs:{btnColor:"btn btn-large btn-sucess",cartIcon:!0},nativeOn:{click:function(e){t.addProductToCart(t.currentProduct)}}},[t._v("\n Buy Now\n ")]),t._v(" "),s("btn",{attrs:{btnColor:"btn btn-large btn-info"},nativeOn:{click:function(e){t.openModal()}}},[t._v("\n More Info\n ")])],1),t._v(" "),s("modal",[t._v(t._s(t.currentProduct.details))])],1)},staticRenderFns:[]};var A=s("VU/8")(E,U,!1,function(t){s("HEHz")},"data-v-7efdfc57",null).exports,G={computed:r()({},Object(a.c)(["getProductsInCart"])),methods:r()({},Object(a.b)(["removeProduct"]),{hasProduct:function(){return this.getProductsInCart.length>0},totalPrice:function(){return this.getProductsInCart.reduce(function(t,e){return t+e.price},0)},remove:function(t){this.removeProduct(t)}})},B={render:function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("div",{staticClass:"checkout-box"},[s("ul",{staticClass:"checkout-list"},[s("transition-group",{attrs:{name:"fade"}},t._l(t.getProductsInCart,function(e,n){return s("li",{key:n,staticClass:"checkout-product"},[s("img",{staticClass:"product-image",attrs:{src:e.image,alt:""}}),t._v(" "),s("h3",{staticClass:"product-name"},[t._v(t._s(e.name))]),t._v(" "),s("span",{staticClass:"product-price"},[t._v("R$ "+t._s(e.price)+",00 ")]),t._v(" "),s("button",{staticClass:"product-remove",on:{click:function(e){t.remove(n)}}},[t._v("X")])])}))],1),t._v(" "),t.hasProduct()?t._e():s("div",{staticClass:"checkout-message"},[s("h3",[t._v("No products...")]),t._v(" "),s("router-link",{attrs:{to:"./"}},[t._v("Back to list of products")])],1),t._v(" "),t.hasProduct()?s("h3",{staticClass:"total"},[t._v("\n Total: R$ "+t._s(t.totalPrice())+", 00\n ")]):t._e()])},staticRenderFns:[]};var V=s("VU/8")(G,B,!1,function(t){s("FDrI")},"data-v-fb8b6cda",null).exports;n.a.use(b.a);var z=new b.a({routes:[{path:"",name:"All Products",component:y},{path:"/smartphones",name:"Smartphones",component:j},{path:"/notebooks",name:"Notebooks",component:N},{path:"/product-details",name:"Product",component:A},{path:"/checkout",name:"Checkout",component:V}]});n.a.use(a.a);var F=new a.a.Store({state:{notebooks:[{name:"Notebook Lenovo Ideapad 320 Intel® Core i5-7200u 8GB",price:2259,image:"https://images-americanas.b2w.io/produtos/01/00/item/132381/3/132381386G1.png",stars:5,totalReviews:230,details:"Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s"},{name:"Notebook Dell Inspiron i15-3567-A30P Intel Core 7ª i5 4GB",price:2284,image:"https://images-americanas.b2w.io/produtos/01/00/item/133280/7/133280747G1.jpg",stars:3.4,totalReviews:20,details:"Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s"},{name:"Notebook Samsung Essentials E21 Intel Celeron Dual Core",price:1490,image:"https://images-americanas.b2w.io/produtos/01/00/item/132165/8/132165801G1.jpg",stars:1,totalReviews:1,details:"Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s"},{name:"Notebook Samsung Expert X22 Intel Core 7 i5 8GB",price:2307,image:"https://images-americanas.b2w.io/produtos/01/00/item/132260/6/132260681G1.jpg",stars:4.4,totalReviews:340,details:"Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s"},{name:"Notebook VAIO Fit 15S B1211B Intel Core i5 4GB",price:2599,image:"https://images-americanas.b2w.io/produtos/01/00/item/133252/7/133252789G1.jpg",stars:3,totalReviews:30,details:"Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s"},{name:"Notebook Dell Alienware - i7 16GB",price:14e3,image:"https://images-submarino.b2w.io/produtos/01/00/sku/34470/9/34470934G1.jpg",stars:2,totalReviews:248,details:"Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s"}],smartphones:[{name:"Smartphone Xiaomi Mi A1 dual Android one 7.1",price:1199,image:"https://images-americanas.b2w.io/produtos/01/00/sku/29296/2/29296259G1.jpg",stars:0,totalReviews:0,details:"Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s"},{name:"Smartphone Moto G 5S Dual Chip Android 7.0",price:929,image:"https://images-americanas.b2w.io/produtos/01/00/item/132474/0/132474081G1.png",stars:1.5,totalReviews:11,details:"Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s"},{name:'iPhone 8 Dourado 64GB Tela 4.7" IOS 11',price:3949,image:"https://images-americanas.b2w.io/produtos/01/00/item/132651/7/132651745G1.jpg",stars:1,totalReviews:2,details:"Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s"},{name:"Smartphone Samsung Galaxy S7 Edge",price:1943,image:"https://images-americanas.b2w.io/produtos/01/00/item/125911/8/125911828G1.png",stars:5,totalReviews:310,details:"Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s"},{name:"Smartphone Motorola Moto G6 Plus",price:1699,image:"https://images-americanas.b2w.io/produtos/01/00/item/133453/1/133453185G1.jpg",stars:2.9,totalReviews:42,details:"Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s"},{name:"Smartphone Motorola Moto Z3 Play",price:2999,image:"https://images-submarino.b2w.io/produtos/01/00/item/133666/1/133666164G1.jpg",stars:.5,totalReviews:1,details:"Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s"}],cartProducts:[],currentProduct:{},showModal:!1,showPopupCart:!1},getters:{getNotebooks:function(t){return t.notebooks},getSmartphones:function(t){return t.smartphones},getAllProducts:function(t){return t.notebooks.concat(t.smartphones)},getProductsInCart:function(t){return t.cartProducts},getCurrentProduct:function(t){return t.currentProduct},getShowModal:function(t){return t.showModal},getPopupCart:function(t){return t.showPopupCart}},mutations:{ADD_PRODUCT:function(t,e){t.cartProducts.push(e)},REMOVE_PRODUCT:function(t,e){t.cartProducts.splice(e,1)},CURRENT_PRODUCT:function(t,e){t.currentProduct=e},SHOW_MODAL:function(t){t.showModal=!t.showModal},SHOW_POPUP_CART:function(t){t.showPopupCart=!t.showPopupCart}},actions:{addProduct:function(t,e){t.commit("ADD_PRODUCT",e)},removeProduct:function(t,e){t.commit("REMOVE_PRODUCT",e)},currentProduct:function(t,e){t.commit("CURRENT_PRODUCT",e)},showOrHiddenModal:function(t){t.commit("SHOW_MODAL")},showOrHiddenPopupCart:function(t){t.commit("SHOW_POPUP_CART")}}});n.a.config.productionTip=!1,new n.a({el:"#app",router:z,store:F,components:{App:f},template:""})},RQFn:function(t,e){},UnBH:function(t,e){},fowb:function(t,e){},"hR/e":function(t,e){},"m+Y5":function(t,e){},m0a0:function(t,e){}},["NHnr"]);
2 | //# sourceMappingURL=app.f7a84d7a3c723f0c4136.js.map
--------------------------------------------------------------------------------
/dist/static/js/app.f7a84d7a3c723f0c4136.js.map:
--------------------------------------------------------------------------------
1 | {"version":3,"sources":["webpack:///./src/assets/images/cart.svg","webpack:///./src/components/Menu.vue?3a3a","webpack:///./src/components/Menu.vue","webpack:///./src/components/Btn.vue?5c46","webpack:///./src/components/Btn.vue","webpack:///src/components/Btn.vue","webpack:///src/components/Popupcart.vue","webpack:///./src/components/Popupcart.vue?4882","webpack:///./src/components/Popupcart.vue","webpack:///./src/components/Mask.vue?5c15","webpack:///./src/components/Mask.vue","webpack:///src/App.vue","webpack:///./src/App.vue?e77f","webpack:///./src/App.vue","webpack:///src/components/ListOfProducts.vue","webpack:///./src/components/ListOfProducts.vue?77c2","webpack:///./src/components/ListOfProducts.vue","webpack:///src/components/AllProducts.vue","webpack:///./src/components/AllProducts.vue?f010","webpack:///./src/components/AllProducts.vue","webpack:///src/components/AllSmartphones.vue","webpack:///./src/components/AllSmartphones.vue?d0bf","webpack:///./src/components/AllSmartphones.vue","webpack:///src/components/AllNotebooks.vue","webpack:///./src/components/AllNotebooks.vue?2050","webpack:///./src/components/AllNotebooks.vue","webpack:///./src/components/Stars.vue?cd03","webpack:///./src/components/Stars.vue","webpack:///src/components/Stars.vue","webpack:///src/components/Modal.vue","webpack:///./src/components/Modal.vue?2bc7","webpack:///./src/components/Modal.vue","webpack:///src/components/Product.vue","webpack:///./src/components/Product.vue?df89","webpack:///./src/components/Product.vue","webpack:///src/components/CartCheckout.vue","webpack:///./src/components/CartCheckout.vue?1d2b","webpack:///./src/components/CartCheckout.vue","webpack:///./src/router/index.js","webpack:///./src/store.js","webpack:///./src/main.js"],"names":["module","exports","components_Menu","render","_h","this","$createElement","_c","_self","staticClass","attrs","to","_v","_t","staticRenderFns","src_components_Menu","__webpack_require__","normalizeComponent","ssrContext","components_Btn","class","btnColor","src","alt","_e","src_components_Btn","Btn_normalizeComponent","props","Popupcart","components","btn","methods","extends_default","Object","vuex_esm","hasProduct","getProductsInCart","length","totalPrice","reduce","current","next","price","showPopupCart","showOrHiddenPopupCart","computed","components_Popupcart","_vm","_l","product","index","key","image","_s","name","nativeOn","click","$event","src_components_Popupcart","Popupcart_normalizeComponent","components_Mask","src_components_Mask","Mask_normalizeComponent","App","mainMenu","popupcart","maskBg","selectortype_template_index_0_src_App","cartIcon","src_App","App_normalizeComponent","ListOfProducts","addProductToCart","addProduct","addCurrentProduct","currentProduct","components_ListOfProducts","on","Math","round","src_components_ListOfProducts","ListOfProducts_normalizeComponent","AllProducts","listOfProducts","components_AllProducts","products","getAllProducts","src_components_AllProducts","AllProducts_normalizeComponent","AllSmartphones","components_AllSmartphones","getSmartphones","src_components_AllSmartphones","AllSmartphones_normalizeComponent","AllNotebooks","components_AllNotebooks","getNotebooks","src_components_AllNotebooks","AllNotebooks_normalizeComponent","components_Stars","xmlns","viewBox","d","x","y","width","rate","height","totalReviews","src_components_Stars","Stars_normalizeComponent","Modal","showModal","closeModal","showOrHiddenModal","components_Modal","directives","rawName","value","expression","Product","stars","modal","Modal_normalizeComponent","rated","openModal","components_Product","details","src_components_Product","Product_normalizeComponent","CartCheckout","remove","removeProduct","components_CartCheckout","src_components_CartCheckout","CartCheckout_normalizeComponent","vue_esm","use","vue_router_esm","router","routes","path","component","store","Store","state","notebooks","smartphones","cartProducts","getters","concat","getCurrentProduct","getShowModal","getPopupCart","mutations","ADD_PRODUCT","push","REMOVE_PRODUCT","splice","CURRENT_PRODUCT","SHOW_MODAL","SHOW_POPUP_CART","actions","context","commit","config","productionTip","el","template"],"mappings":"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","file":"static/js/app.f7a84d7a3c723f0c4136.js","sourcesContent":["module.exports = \"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/Pgo8IS0tIEdlbmVyYXRvcjogQWRvYmUgSWxsdXN0cmF0b3IgMTYuMC4wLCBTVkcgRXhwb3J0IFBsdWctSW4gLiBTVkcgVmVyc2lvbjogNi4wMCBCdWlsZCAwKSAgLS0+CjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+CjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgdmVyc2lvbj0iMS4xIiBpZD0iQ2FwYV8xIiB4PSIwcHgiIHk9IjBweCIgd2lkdGg9IjUxMnB4IiBoZWlnaHQ9IjUxMnB4IiB2aWV3Qm94PSIwIDAgNTEwIDUxMCIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgNTEwIDUxMDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPgo8Zz4KCTxnIGlkPSJzaG9wcGluZy1jYXJ0Ij4KCQk8cGF0aCBkPSJNMTUzLDQwOGMtMjguMDUsMC01MSwyMi45NS01MSw1MXMyMi45NSw1MSw1MSw1MXM1MS0yMi45NSw1MS01MVMxODEuMDUsNDA4LDE1Myw0MDh6IE0wLDB2NTFoNTFsOTEuOCwxOTMuOEwxMDcuMSwzMDYgICAgYy0yLjU1LDcuNjUtNS4xLDE3Ljg1LTUuMSwyNS41YzAsMjguMDUsMjIuOTUsNTEsNTEsNTFoMzA2di01MUgxNjMuMmMtMi41NSwwLTUuMS0yLjU1LTUuMS01LjF2LTIuNTUxbDIyLjk1LTQzLjM1aDE4OC43ICAgIGMyMC40LDAsMzUuNy0xMC4yLDQzLjM1LTI1LjVMNTA0LjksODkuMjVjNS4xLTUuMSw1LjEtNy42NSw1LjEtMTIuNzVjMC0xNS4zLTEwLjItMjUuNS0yNS41LTI1LjVIMTA3LjFMODQuMTUsMEgweiBNNDA4LDQwOCAgICBjLTI4LjA1LDAtNTEsMjIuOTUtNTEsNTFzMjIuOTUsNTEsNTEsNTFzNTEtMjIuOTUsNTEtNTFTNDM2LjA1LDQwOCw0MDgsNDA4eiIgZmlsbD0iI0ZGRkZGRiIvPgoJPC9nPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+CjxnPgo8L2c+Cjwvc3ZnPgo=\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/assets/images/cart.svg\n// module id = KEEg\n// module chunks = 1","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('header',{staticClass:\"header\"},[_c('nav',{staticClass:\"nav\"},[_c('ul',{staticClass:\"nav-links\"},[_c('li',{staticClass:\"link\"},[_c('router-link',{attrs:{\"to\":\"/\"}},[_vm._v(\"AllProducts\")])],1),_vm._v(\" \"),_c('li',{staticClass:\"link\"},[_c('router-link',{attrs:{\"to\":\"/smartphones\"}},[_vm._v(\"Smartphones\")])],1),_vm._v(\" \"),_c('li',{staticClass:\"link\"},[_c('router-link',{attrs:{\"to\":\"/notebooks\"}},[_vm._v(\"Notebooks\")])],1)])]),_vm._v(\" \"),_vm._t(\"default\")],2)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-ecc5ec8a\",\"hasScoped\":true,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/Menu.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-ecc5ec8a\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./Menu.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./Menu.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./Menu.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-ecc5ec8a\\\",\\\"hasScoped\\\":true,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./Menu.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = \"data-v-ecc5ec8a\"\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/Menu.vue\n// module id = null\n// module chunks = ","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('button',{class:_vm.btnColor},[_vm._t(\"default\"),_vm._v(\" \"),(_vm.cartIcon)?_c('img',{attrs:{\"src\":require(\"../assets/images/cart.svg\"),\"alt\":\"Cart Icon\"}}):_vm._e()],2)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-a61d3696\",\"hasScoped\":true,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/Btn.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-a61d3696\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./Btn.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./Btn.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./Btn.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-a61d3696\\\",\\\"hasScoped\\\":true,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./Btn.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = \"data-v-a61d3696\"\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/Btn.vue\n// module id = null\n// module chunks = ","\n \n\n\n\n\n\n\n\n\n// WEBPACK FOOTER //\n// src/components/Btn.vue","\n \n
No products :/\n
\n
![\"\"]()
\n
{{ product.name }}
\n
Amount: 1\n
R$ {{ product.price }}, 00\n
\n
\n Total: R$ {{ totalPrice() }}, 00\n \n \n View cart\n \n \n
\n
\n\n\n\n\n\n\n\n\n// WEBPACK FOOTER //\n// src/components/Popupcart.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"box\"},[(!_vm.hasProduct())?_c('span',[_vm._v(\"No products :/\")]):_vm._e(),_vm._v(\" \"),_vm._l((_vm.getProductsInCart),function(product,index){return _c('div',{key:index,staticClass:\"box-item\"},[_c('img',{staticClass:\"item-thumb\",attrs:{\"src\":product.image,\"alt\":\"\"}}),_vm._v(\" \"),_c('h3',{staticClass:\"item-name\"},[_vm._v(_vm._s(product.name))]),_vm._v(\" \"),_c('span',{staticClass:\"item-amount\"},[_vm._v(\"Amount: 1\")]),_vm._v(\" \"),_c('span',{staticClass:\"item-price\"},[_vm._v(\"R$ \"+_vm._s(product.price)+\", 00\")])])}),_vm._v(\" \"),(_vm.hasProduct())?_c('div',{staticClass:\"cart-info\"},[_c('span',[_vm._v(\"Total: R$ \"+_vm._s(_vm.totalPrice())+\", 00\")]),_vm._v(\" \"),_c('router-link',{attrs:{\"to\":\"/checkout\"}},[_c('btn',{attrs:{\"btnColor\":\"btn btn-small btn-info\"},nativeOn:{\"click\":function($event){_vm.showPopupCart()}}},[_vm._v(\"\\n View cart\\n \")])],1)],1):_vm._e()],2)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-3d02a006\",\"hasScoped\":true,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/Popupcart.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-3d02a006\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./Popupcart.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./Popupcart.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./Popupcart.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-3d02a006\\\",\\\"hasScoped\\\":true,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./Popupcart.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = \"data-v-3d02a006\"\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/Popupcart.vue\n// module id = null\n// module chunks = ","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"mask\"})}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-516c02ef\",\"hasScoped\":true,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/Mask.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-516c02ef\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./Mask.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./Mask.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./Mask.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-516c02ef\\\",\\\"hasScoped\\\":true,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./Mask.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = \"data-v-516c02ef\"\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/Mask.vue\n// module id = null\n// module chunks = ","\n \n
\n \n Cart\n \n {{ getProductsInCart.length }}\n \n \n \n \n \n \n
\n \n \n
\n
\n\n\n\n\n\n\n\n\n// WEBPACK FOOTER //\n// src/App.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"container\"},[_c('mainMenu',[_c('btn',{attrs:{\"btnColor\":\"btn btn-small btn-info btn-popup\",\"cartIcon\":true},nativeOn:{\"click\":function($event){_vm.showPopupCart()}}},[_vm._v(\"\\n Cart\\n \"),(_vm.hasProduct())?_c('span',{staticClass:\"btn-circle\"},[_vm._v(\"\\n \"+_vm._s(_vm.getProductsInCart.length)+\"\\n \")]):_vm._e()]),_vm._v(\" \"),_c('transition',{attrs:{\"name\":\"appear\"}},[(_vm.getPopupCart)?_c('popupcart',{staticClass:\"cart\"}):_vm._e()],1)],1),_vm._v(\" \"),_c('transition',{attrs:{\"name\":\"leave\"}},[_c('router-view')],1),_vm._v(\" \"),(_vm.getPopupCart)?_c('maskBg',{nativeOn:{\"click\":function($event){_vm.showPopupCart()}}}):_vm._e()],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-89ee76c0\",\"hasScoped\":false,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/App.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-89ee76c0\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!../node_modules/vue-loader/lib/selector?type=styles&index=0!./App.vue\")\n}\nvar normalizeComponent = require(\"!../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../node_modules/vue-loader/lib/selector?type=script&index=0!./App.vue\"\nimport __vue_script__ from \"!!babel-loader!../node_modules/vue-loader/lib/selector?type=script&index=0!./App.vue\"\n/* template */\nimport __vue_template__ from \"!!../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-89ee76c0\\\",\\\"hasScoped\\\":false,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../node_modules/vue-loader/lib/selector?type=template&index=0!./App.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/App.vue\n// module id = null\n// module chunks = ","\n \n\n\n\n\n\n\n\n\n\n// WEBPACK FOOTER //\n// src/components/ListOfProducts.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('ul',{staticClass:\"listOfProducts\"},_vm._l((_vm.products),function(product,index){return _c('li',{key:index,staticClass:\"product\"},[_c('img',{attrs:{\"src\":product.image,\"alt\":\"\"}}),_vm._v(\" \"),_c('router-link',{attrs:{\"to\":\"/product-details\"}},[_c('h2',{staticClass:\"product-name\",on:{\"click\":function($event){_vm.addCurrentProduct(product)}}},[_vm._v(\"\\n \"+_vm._s(product.name)+\"\\n \")])]),_vm._v(\" \"),_c('div',{staticClass:\"product-price\"},[_c('span',[_vm._v(\"R$ \"+_vm._s(product.price)+\", 00\")]),_vm._v(\" \"),_c('span',[_vm._v(\"10 x \"+_vm._s(Math.round(product.price / 10))+\", 00 \")])]),_vm._v(\" \"),_c('btn',{attrs:{\"btnColor\":\"btn btn-large btn-sucess\",\"cartIcon\":true},nativeOn:{\"click\":function($event){_vm.addProductToCart(product)}}},[_vm._v(\"\\n Add to cart\\n \")])],1)}))}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-43c41760\",\"hasScoped\":true,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/ListOfProducts.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-43c41760\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./ListOfProducts.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./ListOfProducts.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./ListOfProducts.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-43c41760\\\",\\\"hasScoped\\\":true,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./ListOfProducts.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = \"data-v-43c41760\"\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/ListOfProducts.vue\n// module id = null\n// module chunks = ","\n \n\n\n\n\n\n\n\n\n\n// WEBPACK FOOTER //\n// src/components/AllProducts.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('listOfProducts',{attrs:{\"products\":_vm.getAllProducts}})}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-85fa0bf0\",\"hasScoped\":true,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/AllProducts.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-85fa0bf0\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./AllProducts.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./AllProducts.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./AllProducts.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-85fa0bf0\\\",\\\"hasScoped\\\":true,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./AllProducts.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = \"data-v-85fa0bf0\"\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/AllProducts.vue\n// module id = null\n// module chunks = ","\n \n\n\n\n\n\n\n\n\n\n// WEBPACK FOOTER //\n// src/components/AllSmartphones.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('listOfProducts',{attrs:{\"products\":_vm.getSmartphones}})}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-5a3b4aa7\",\"hasScoped\":false,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/AllSmartphones.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-5a3b4aa7\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./AllSmartphones.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./AllSmartphones.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./AllSmartphones.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-5a3b4aa7\\\",\\\"hasScoped\\\":false,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./AllSmartphones.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/AllSmartphones.vue\n// module id = null\n// module chunks = ","\n \n\n\n\n\n\n\n\n\n\n// WEBPACK FOOTER //\n// src/components/AllNotebooks.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('listOfProducts',{attrs:{\"products\":_vm.getNotebooks}})}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-27644bde\",\"hasScoped\":false,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/AllNotebooks.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-27644bde\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./AllNotebooks.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./AllNotebooks.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./AllNotebooks.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-27644bde\\\",\\\"hasScoped\\\":false,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./AllNotebooks.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/AllNotebooks.vue\n// module id = null\n// module chunks = ","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"stars-box\"},[_c('svg',{staticClass:\"stars\",attrs:{\"xmlns\":\"http://www.w3.org/2000/svg\",\"viewBox\":\"-54 -1 128 22\"}},[_c('path',{staticClass:\"star-bg\",attrs:{\"d\":\"M-55-1.9H75v24H-55z\"}}),_c('rect',{staticClass:\"star-fill\",attrs:{\"x\":\"-55\",\"y\":\"-2\",\"width\":_vm.rate,\"height\":\"24\"}}),_c('path',{staticClass:\"star-path\",attrs:{\"d\":\"M-55-2v24H75V-2H-55zm17.8 21.4l-6.4-3.3-6.4 3.3 1.2-7-5.2-5 7.2-1 3.2-6.4 3.2 6.4 7.2 1-5.2 5 1.2 7zm26.8-.2l-6.4-3.3-6.4 3.3 1.2-7-5.2-5 7.2-1 3.2-6.4 3.2 6.4 7.2 1-5.2 5 1.2 7zm26.8 0L10 15.9l-6.4 3.3 1.2-7-5.2-5 7.2-1L10-.2l3.2 6.4 7.2 1-5.2 5 1.2 7zm26.8 0l-6.4-3.3-6.4 3.3 1.2-7-5.2-5 7.2-1 3.2-6.4L40 6.2l7.2 1-5.2 5 1.2 7zm26.8 0l-6.4-3.3-6.4 3.3 1.2-7-5.2-5 7.2-1 3.2-6.4 3.2 6.4 7.2 1-5.2 5 1.2 7z\"}})]),_vm._v(\" \"),_c('span',{staticClass:\"total-stars\"},[_vm._v(_vm._s(_vm.totalReviews)+\" reviews.\")])])}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-5147e0a8\",\"hasScoped\":true,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/Stars.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-5147e0a8\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./Stars.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./Stars.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./Stars.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-5147e0a8\\\",\\\"hasScoped\\\":true,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./Stars.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = \"data-v-5147e0a8\"\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/Stars.vue\n// module id = null\n// module chunks = ","\n \n
\n
{{ totalReviews }} reviews.\n
\n\n\n\n\n\n\n\n\n// WEBPACK FOOTER //\n// src/components/Stars.vue","\n \n
\n \n
Details
\n \n \n Close\n \n \n \n
\n \n \n
\n\n\n\n\n\n\n\n\n// WEBPACK FOOTER //\n// src/components/Modal.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('transition',{attrs:{\"name\":\"fade\"}},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showModal),expression:\"showModal\"}],staticClass:\"modal\"},[_c('h3',[_vm._v(\"Details\")]),_vm._v(\" \"),_vm._t(\"default\"),_vm._v(\" \"),_c('btn',{attrs:{\"btnColor\":\"btn btn-small btn-danger\"},nativeOn:{\"click\":function($event){_vm.closeModal()}}},[_vm._v(\"\\n Close\\n \")])],2)]),_vm._v(\" \"),_c('transition',{attrs:{\"name\":\"fade\"}},[_c('maskBg',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showModal),expression:\"showModal\"}],on:{\"click\":function($event){_vm.closeModal()}}})],1)],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-44910ab4\",\"hasScoped\":true,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/Modal.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-44910ab4\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./Modal.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./Modal.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./Modal.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-44910ab4\\\",\\\"hasScoped\\\":true,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./Modal.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = \"data-v-44910ab4\"\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/Modal.vue\n// module id = null\n// module chunks = ","\n \n
\n
![\"\"]()
\n
\n \n
\n
{{ currentProduct.name }}
\n R$ {{ currentProduct.price }}, 00\n \n Buy Now\n \n \n More Info\n \n \n
{{ currentProduct.details }}\n
\n\n\n\n\n\n\n\n\n// WEBPACK FOOTER //\n// src/components/Product.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"product-box\"},[_c('div',{staticClass:\"product-image\"},[_c('img',{attrs:{\"src\":_vm.currentProduct.image,\"alt\":\"\"}}),_vm._v(\" \"),_c('stars',{attrs:{\"rate\":_vm.rated(_vm.currentProduct.stars),\"totalReviews\":_vm.currentProduct.totalReviews}})],1),_vm._v(\" \"),_c('div',{staticClass:\"product-info\"},[_c('h2',{staticClass:\"product-title\"},[_vm._v(_vm._s(_vm.currentProduct.name))]),_vm._v(\" \"),_c('span',{staticClass:\"product-price\"},[_vm._v(\"R$ \"+_vm._s(_vm.currentProduct.price)+\", 00\")]),_vm._v(\" \"),_c('btn',{attrs:{\"btnColor\":\"btn btn-large btn-sucess\",\"cartIcon\":true},nativeOn:{\"click\":function($event){_vm.addProductToCart(_vm.currentProduct)}}},[_vm._v(\"\\n Buy Now\\n \")]),_vm._v(\" \"),_c('btn',{attrs:{\"btnColor\":\"btn btn-large btn-info\"},nativeOn:{\"click\":function($event){_vm.openModal()}}},[_vm._v(\"\\n More Info\\n \")])],1),_vm._v(\" \"),_c('modal',[_vm._v(_vm._s(_vm.currentProduct.details))])],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-7efdfc57\",\"hasScoped\":true,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/Product.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-7efdfc57\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./Product.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./Product.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./Product.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-7efdfc57\\\",\\\"hasScoped\\\":true,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./Product.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = \"data-v-7efdfc57\"\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/Product.vue\n// module id = null\n// module chunks = ","\n \n
\n \n - \n
\n {{ product.name }}
\n R$ {{ product.price }},00 \n \n \n \n
\n
\n
No products...
\n Back to list of products\n \n
\n Total: R$ {{ totalPrice() }}, 00\n
\n
\n\n\n\n\n\n\n\n\n// WEBPACK FOOTER //\n// src/components/CartCheckout.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"checkout-box\"},[_c('ul',{staticClass:\"checkout-list\"},[_c('transition-group',{attrs:{\"name\":\"fade\"}},_vm._l((_vm.getProductsInCart),function(product,index){return _c('li',{key:index,staticClass:\"checkout-product\"},[_c('img',{staticClass:\"product-image\",attrs:{\"src\":product.image,\"alt\":\"\"}}),_vm._v(\" \"),_c('h3',{staticClass:\"product-name\"},[_vm._v(_vm._s(product.name))]),_vm._v(\" \"),_c('span',{staticClass:\"product-price\"},[_vm._v(\"R$ \"+_vm._s(product.price)+\",00 \")]),_vm._v(\" \"),_c('button',{staticClass:\"product-remove\",on:{\"click\":function($event){_vm.remove(index)}}},[_vm._v(\"X\")])])}))],1),_vm._v(\" \"),(!_vm.hasProduct())?_c('div',{staticClass:\"checkout-message\"},[_c('h3',[_vm._v(\"No products...\")]),_vm._v(\" \"),_c('router-link',{attrs:{\"to\":\"./\"}},[_vm._v(\"Back to list of products\")])],1):_vm._e(),_vm._v(\" \"),(_vm.hasProduct())?_c('h3',{staticClass:\"total\"},[_vm._v(\"\\n Total: R$ \"+_vm._s(_vm.totalPrice())+\", 00\\n \")]):_vm._e()])}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-fb8b6cda\",\"hasScoped\":true,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/CartCheckout.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-fb8b6cda\\\",\\\"scoped\\\":true,\\\"hasInlineConfig\\\":false}!../../node_modules/vue-loader/lib/selector?type=styles&index=0!./CartCheckout.vue\")\n}\nvar normalizeComponent = require(\"!../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./CartCheckout.vue\"\nimport __vue_script__ from \"!!babel-loader!../../node_modules/vue-loader/lib/selector?type=script&index=0!./CartCheckout.vue\"\n/* template */\nimport __vue_template__ from \"!!../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-fb8b6cda\\\",\\\"hasScoped\\\":true,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../node_modules/vue-loader/lib/selector?type=template&index=0!./CartCheckout.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = \"data-v-fb8b6cda\"\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/CartCheckout.vue\n// module id = null\n// module chunks = ","import Vue from 'vue';\nimport Router from 'vue-router';\nimport AllProducts from '../components/AllProducts';\nimport AllSmartphones from '../components/AllSmartphones';\nimport AllNotebooks from '../components/AllNotebooks';\nimport Product from '../components/Product';\nimport CartCheckout from '../components/CartCheckout';\n\nVue.use(Router);\n\nexport default new Router({\n routes: [\n {\n path: '',\n name: 'All Products',\n component: AllProducts,\n },\n {\n path: '/smartphones',\n name: 'Smartphones',\n component: AllSmartphones,\n },\n {\n path: '/notebooks',\n name: 'Notebooks',\n component: AllNotebooks,\n },\n {\n path: '/product-details',\n name: 'Product',\n component: Product,\n },\n {\n path: '/checkout',\n name: 'Checkout',\n component: CartCheckout,\n },\n ],\n});\n\n\n\n// WEBPACK FOOTER //\n// ./src/router/index.js","import Vue from 'vue';\nimport Vuex from 'vuex';\n\nVue.use(Vuex);\n\nexport default new Vuex.Store({\n state: {\n notebooks: [\n {\n name: 'Notebook Lenovo Ideapad 320 Intel® Core i5-7200u 8GB',\n price: 2259,\n image: 'https://images-americanas.b2w.io/produtos/01/00/item/132381/3/132381386G1.png',\n stars: 5,\n totalReviews: 230,\n details: 'Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s',\n },\n {\n name: 'Notebook Dell Inspiron i15-3567-A30P Intel Core 7ª i5 4GB',\n price: 2284,\n image: 'https://images-americanas.b2w.io/produtos/01/00/item/133280/7/133280747G1.jpg',\n stars: 3.4,\n totalReviews: 20,\n details: 'Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s',\n },\n {\n name: 'Notebook Samsung Essentials E21 Intel Celeron Dual Core',\n price: 1490,\n image: 'https://images-americanas.b2w.io/produtos/01/00/item/132165/8/132165801G1.jpg',\n stars: 1,\n totalReviews: 1,\n details: 'Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s',\n },\n {\n name: 'Notebook Samsung Expert X22 Intel Core 7 i5 8GB',\n price: 2307,\n image: 'https://images-americanas.b2w.io/produtos/01/00/item/132260/6/132260681G1.jpg',\n stars: 4.4,\n totalReviews: 340,\n details: 'Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s',\n },\n {\n name: 'Notebook VAIO Fit 15S B1211B Intel Core i5 4GB',\n price: 2599,\n image: 'https://images-americanas.b2w.io/produtos/01/00/item/133252/7/133252789G1.jpg',\n stars: 3,\n totalReviews: 30,\n details: 'Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s',\n },\n {\n name: 'Notebook Dell Alienware - i7 16GB',\n price: 14000,\n image: 'https://images-submarino.b2w.io/produtos/01/00/sku/34470/9/34470934G1.jpg',\n stars: 2,\n totalReviews: 248,\n details: 'Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s',\n },\n ],\n\n smartphones: [\n {\n name: 'Smartphone Xiaomi Mi A1 dual Android one 7.1',\n price: 1199,\n image: 'https://images-americanas.b2w.io/produtos/01/00/sku/29296/2/29296259G1.jpg',\n stars: 0,\n totalReviews: 0,\n details: 'Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s',\n },\n {\n name: 'Smartphone Moto G 5S Dual Chip Android 7.0',\n price: 929,\n image: 'https://images-americanas.b2w.io/produtos/01/00/item/132474/0/132474081G1.png',\n stars: 1.5,\n totalReviews: 11,\n details: 'Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s',\n },\n {\n name: 'iPhone 8 Dourado 64GB Tela 4.7\" IOS 11',\n price: 3949,\n image: 'https://images-americanas.b2w.io/produtos/01/00/item/132651/7/132651745G1.jpg',\n stars: 1,\n totalReviews: 2,\n details: 'Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s',\n },\n {\n name: 'Smartphone Samsung Galaxy S7 Edge',\n price: 1943,\n image: 'https://images-americanas.b2w.io/produtos/01/00/item/125911/8/125911828G1.png',\n stars: 5,\n totalReviews: 310,\n details: 'Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s',\n },\n {\n name: 'Smartphone Motorola Moto G6 Plus',\n price: 1699,\n image: 'https://images-americanas.b2w.io/produtos/01/00/item/133453/1/133453185G1.jpg',\n stars: 2.9,\n totalReviews: 42,\n details: 'Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s',\n },\n {\n name: 'Smartphone Motorola Moto Z3 Play',\n price: 2999,\n image: 'https://images-submarino.b2w.io/produtos/01/00/item/133666/1/133666164G1.jpg',\n stars: 0.5,\n totalReviews: 1,\n details: 'Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s',\n },\n ],\n\n cartProducts: [],\n currentProduct: {},\n showModal: false,\n showPopupCart: false,\n },\n\n getters: {\n getNotebooks: state => state.notebooks,\n getSmartphones: state => state.smartphones,\n getAllProducts: state => state.notebooks.concat(state.smartphones),\n getProductsInCart: state => state.cartProducts,\n getCurrentProduct: state => state.currentProduct,\n getShowModal: state => state.showModal,\n getPopupCart: state => state.showPopupCart,\n },\n\n mutations: {\n ADD_PRODUCT: (state, product) => {\n state.cartProducts.push(product);\n },\n REMOVE_PRODUCT: (state, index) => {\n state.cartProducts.splice(index, 1);\n },\n CURRENT_PRODUCT: (state, product) => {\n state.currentProduct = product;\n },\n SHOW_MODAL: (state) => {\n state.showModal = !state.showModal;\n },\n SHOW_POPUP_CART: (state) => {\n state.showPopupCart = !state.showPopupCart;\n },\n },\n\n actions: {\n addProduct: (context, product) => {\n context.commit('ADD_PRODUCT', product);\n },\n removeProduct: (context, index) => {\n context.commit('REMOVE_PRODUCT', index);\n },\n currentProduct: (context, product) => {\n context.commit('CURRENT_PRODUCT', product);\n },\n showOrHiddenModal: (context) => {\n context.commit('SHOW_MODAL');\n },\n showOrHiddenPopupCart: (context) => {\n context.commit('SHOW_POPUP_CART');\n },\n },\n});\n\n\n\n// WEBPACK FOOTER //\n// ./src/store.js","// The Vue build version to load with the `import` command\n// (runtime-only or standalone) has been set in webpack.base.conf with an alias.\nimport Vue from 'vue';\nimport App from './App';\nimport router from './router';\nimport store from './store';\n\nVue.config.productionTip = false;\n\n/* eslint-disable no-new */\nnew Vue({\n el: '#app',\n router,\n store,\n components: { App },\n template: '',\n});\n\n\n\n// WEBPACK FOOTER //\n// ./src/main.js"],"sourceRoot":""}
--------------------------------------------------------------------------------
/dist/static/js/manifest.25fc6a34a71a20c9ed6f.js:
--------------------------------------------------------------------------------
1 | !function(r){var t=window.webpackJsonp;window.webpackJsonp=function(n,u,c){for(var i,f,p,a=0,s=[];a
2 |
3 |
4 |
5 |
6 | vue-cart
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "vue-cart",
3 | "version": "1.0.0",
4 | "description": "A Vue.js project",
5 | "author": "crisgon ",
6 | "private": true,
7 | "scripts": {
8 | "dev": "webpack-dev-server --inline --progress --config build/webpack.dev.conf.js",
9 | "start": "npm run dev",
10 | "lint": "eslint --ext .js,.vue src",
11 | "build": "node build/build.js"
12 | },
13 | "dependencies": {
14 | "vue": "^2.5.2",
15 | "vue-router": "^3.0.1",
16 | "vuex": "^3.0.1"
17 | },
18 | "devDependencies": {
19 | "autoprefixer": "^7.1.2",
20 | "babel-core": "^6.22.1",
21 | "babel-eslint": "^8.2.1",
22 | "babel-helper-vue-jsx-merge-props": "^2.0.3",
23 | "babel-loader": "^7.1.1",
24 | "babel-plugin-syntax-jsx": "^6.18.0",
25 | "babel-plugin-transform-runtime": "^6.22.0",
26 | "babel-plugin-transform-vue-jsx": "^3.5.0",
27 | "babel-preset-env": "^1.3.2",
28 | "babel-preset-stage-2": "^6.22.0",
29 | "chalk": "^2.0.1",
30 | "copy-webpack-plugin": "^4.0.1",
31 | "css-loader": "^0.28.0",
32 | "eslint": "^4.15.0",
33 | "eslint-config-airbnb-base": "^11.3.0",
34 | "eslint-friendly-formatter": "^3.0.0",
35 | "eslint-import-resolver-webpack": "^0.8.3",
36 | "eslint-loader": "^1.7.1",
37 | "eslint-plugin-import": "^2.7.0",
38 | "eslint-plugin-vue": "^4.0.0",
39 | "extract-text-webpack-plugin": "^3.0.0",
40 | "file-loader": "^1.1.4",
41 | "friendly-errors-webpack-plugin": "^1.6.1",
42 | "html-webpack-plugin": "^2.30.1",
43 | "node-notifier": "^5.1.2",
44 | "optimize-css-assets-webpack-plugin": "^3.2.0",
45 | "ora": "^1.2.0",
46 | "portfinder": "^1.0.13",
47 | "postcss-import": "^11.0.0",
48 | "postcss-loader": "^2.0.8",
49 | "postcss-url": "^7.2.1",
50 | "rimraf": "^2.6.0",
51 | "semver": "^5.3.0",
52 | "shelljs": "^0.7.6",
53 | "uglifyjs-webpack-plugin": "^1.1.1",
54 | "url-loader": "^0.5.8",
55 | "vue-loader": "^13.3.0",
56 | "vue-style-loader": "^3.0.1",
57 | "vue-template-compiler": "^2.5.2",
58 | "webpack": "^3.6.0",
59 | "webpack-bundle-analyzer": "^2.9.0",
60 | "webpack-dev-server": "^2.9.1",
61 | "webpack-merge": "^4.1.0"
62 | },
63 | "engines": {
64 | "node": ">= 6.0.0",
65 | "npm": ">= 3.0.0"
66 | },
67 | "browserslist": [
68 | "> 1%",
69 | "last 2 versions",
70 | "not ie <= 8"
71 | ]
72 | }
73 |
--------------------------------------------------------------------------------
/src/App.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
7 | Cart
8 |
9 | {{ getProductsInCart.length }}
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
56 |
57 |
121 |
--------------------------------------------------------------------------------
/src/assets/css/normalize.css:
--------------------------------------------------------------------------------
1 | /*! normalize.css v8.0.0 | MIT License | github.com/necolas/normalize.css */
2 |
3 | /* Document
4 | ========================================================================== */
5 |
6 | /**
7 | * 1. Correct the line height in all browsers.
8 | * 2. Prevent adjustments of font size after orientation changes in iOS.
9 | */
10 |
11 | html {
12 | line-height: 1.15; /* 1 */
13 | -webkit-text-size-adjust: 100%; /* 2 */
14 | }
15 |
16 | /* Sections
17 | ========================================================================== */
18 |
19 | /**
20 | * Remove the margin in all browsers.
21 | */
22 |
23 | body {
24 | margin: 0;
25 | }
26 |
27 | /**
28 | * Correct the font size and margin on `h1` elements within `section` and
29 | * `article` contexts in Chrome, Firefox, and Safari.
30 | */
31 |
32 | h1 {
33 | font-size: 2em;
34 | margin: 0.67em 0;
35 | }
36 |
37 | /* Grouping content
38 | ========================================================================== */
39 |
40 | /**
41 | * 1. Add the correct box sizing in Firefox.
42 | * 2. Show the overflow in Edge and IE.
43 | */
44 |
45 | hr {
46 | box-sizing: content-box; /* 1 */
47 | height: 0; /* 1 */
48 | overflow: visible; /* 2 */
49 | }
50 |
51 | /**
52 | * 1. Correct the inheritance and scaling of font size in all browsers.
53 | * 2. Correct the odd `em` font sizing in all browsers.
54 | */
55 |
56 | pre {
57 | font-family: monospace, monospace; /* 1 */
58 | font-size: 1em; /* 2 */
59 | }
60 |
61 | /* Text-level semantics
62 | ========================================================================== */
63 |
64 | /**
65 | * Remove the gray background on active links in IE 10.
66 | */
67 |
68 | a {
69 | background-color: transparent;
70 | }
71 |
72 | /**
73 | * 1. Remove the bottom border in Chrome 57-
74 | * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.
75 | */
76 |
77 | abbr[title] {
78 | border-bottom: none; /* 1 */
79 | text-decoration: underline; /* 2 */
80 | text-decoration: underline dotted; /* 2 */
81 | }
82 |
83 | /**
84 | * Add the correct font weight in Chrome, Edge, and Safari.
85 | */
86 |
87 | b,
88 | strong {
89 | font-weight: bolder;
90 | }
91 |
92 | /**
93 | * 1. Correct the inheritance and scaling of font size in all browsers.
94 | * 2. Correct the odd `em` font sizing in all browsers.
95 | */
96 |
97 | code,
98 | kbd,
99 | samp {
100 | font-family: monospace, monospace; /* 1 */
101 | font-size: 1em; /* 2 */
102 | }
103 |
104 | /**
105 | * Add the correct font size in all browsers.
106 | */
107 |
108 | small {
109 | font-size: 80%;
110 | }
111 |
112 | /**
113 | * Prevent `sub` and `sup` elements from affecting the line height in
114 | * all browsers.
115 | */
116 |
117 | sub,
118 | sup {
119 | font-size: 75%;
120 | line-height: 0;
121 | position: relative;
122 | vertical-align: baseline;
123 | }
124 |
125 | sub {
126 | bottom: -0.25em;
127 | }
128 |
129 | sup {
130 | top: -0.5em;
131 | }
132 |
133 | /* Embedded content
134 | ========================================================================== */
135 |
136 | /**
137 | * Remove the border on images inside links in IE 10.
138 | */
139 |
140 | img {
141 | border-style: none;
142 | }
143 |
144 | /* Forms
145 | ========================================================================== */
146 |
147 | /**
148 | * 1. Change the font styles in all browsers.
149 | * 2. Remove the margin in Firefox and Safari.
150 | */
151 |
152 | button,
153 | input,
154 | optgroup,
155 | select,
156 | textarea {
157 | font-family: inherit; /* 1 */
158 | font-size: 100%; /* 1 */
159 | line-height: 1.15; /* 1 */
160 | margin: 0; /* 2 */
161 | }
162 |
163 | /**
164 | * Show the overflow in IE.
165 | * 1. Show the overflow in Edge.
166 | */
167 |
168 | button,
169 | input { /* 1 */
170 | overflow: visible;
171 | }
172 |
173 | /**
174 | * Remove the inheritance of text transform in Edge, Firefox, and IE.
175 | * 1. Remove the inheritance of text transform in Firefox.
176 | */
177 |
178 | button,
179 | select { /* 1 */
180 | text-transform: none;
181 | }
182 |
183 | /**
184 | * Correct the inability to style clickable types in iOS and Safari.
185 | */
186 |
187 | button,
188 | [type="button"],
189 | [type="reset"],
190 | [type="submit"] {
191 | -webkit-appearance: button;
192 | }
193 |
194 | /**
195 | * Remove the inner border and padding in Firefox.
196 | */
197 |
198 | button::-moz-focus-inner,
199 | [type="button"]::-moz-focus-inner,
200 | [type="reset"]::-moz-focus-inner,
201 | [type="submit"]::-moz-focus-inner {
202 | border-style: none;
203 | padding: 0;
204 | }
205 |
206 | /**
207 | * Restore the focus styles unset by the previous rule.
208 | */
209 |
210 | button:-moz-focusring,
211 | [type="button"]:-moz-focusring,
212 | [type="reset"]:-moz-focusring,
213 | [type="submit"]:-moz-focusring {
214 | outline: 1px dotted ButtonText;
215 | }
216 |
217 | /**
218 | * Correct the padding in Firefox.
219 | */
220 |
221 | fieldset {
222 | padding: 0.35em 0.75em 0.625em;
223 | }
224 |
225 | /**
226 | * 1. Correct the text wrapping in Edge and IE.
227 | * 2. Correct the color inheritance from `fieldset` elements in IE.
228 | * 3. Remove the padding so developers are not caught out when they zero out
229 | * `fieldset` elements in all browsers.
230 | */
231 |
232 | legend {
233 | box-sizing: border-box; /* 1 */
234 | color: inherit; /* 2 */
235 | display: table; /* 1 */
236 | max-width: 100%; /* 1 */
237 | padding: 0; /* 3 */
238 | white-space: normal; /* 1 */
239 | }
240 |
241 | /**
242 | * Add the correct vertical alignment in Chrome, Firefox, and Opera.
243 | */
244 |
245 | progress {
246 | vertical-align: baseline;
247 | }
248 |
249 | /**
250 | * Remove the default vertical scrollbar in IE 10+.
251 | */
252 |
253 | textarea {
254 | overflow: auto;
255 | }
256 |
257 | /**
258 | * 1. Add the correct box sizing in IE 10.
259 | * 2. Remove the padding in IE 10.
260 | */
261 |
262 | [type="checkbox"],
263 | [type="radio"] {
264 | box-sizing: border-box; /* 1 */
265 | padding: 0; /* 2 */
266 | }
267 |
268 | /**
269 | * Correct the cursor style of increment and decrement buttons in Chrome.
270 | */
271 |
272 | [type="number"]::-webkit-inner-spin-button,
273 | [type="number"]::-webkit-outer-spin-button {
274 | height: auto;
275 | }
276 |
277 | /**
278 | * 1. Correct the odd appearance in Chrome and Safari.
279 | * 2. Correct the outline style in Safari.
280 | */
281 |
282 | [type="search"] {
283 | -webkit-appearance: textfield; /* 1 */
284 | outline-offset: -2px; /* 2 */
285 | }
286 |
287 | /**
288 | * Remove the inner padding in Chrome and Safari on macOS.
289 | */
290 |
291 | [type="search"]::-webkit-search-decoration {
292 | -webkit-appearance: none;
293 | }
294 |
295 | /**
296 | * 1. Correct the inability to style clickable types in iOS and Safari.
297 | * 2. Change font properties to `inherit` in Safari.
298 | */
299 |
300 | ::-webkit-file-upload-button {
301 | -webkit-appearance: button; /* 1 */
302 | font: inherit; /* 2 */
303 | }
304 |
305 | /* Interactive
306 | ========================================================================== */
307 |
308 | /*
309 | * Add the correct display in Edge, IE 10+, and Firefox.
310 | */
311 |
312 | details {
313 | display: block;
314 | }
315 |
316 | /*
317 | * Add the correct display in all browsers.
318 | */
319 |
320 | summary {
321 | display: list-item;
322 | }
323 |
324 | /* Misc
325 | ========================================================================== */
326 |
327 | /**
328 | * Add the correct display in IE 10+.
329 | */
330 |
331 | template {
332 | display: none;
333 | }
334 |
335 | /**
336 | * Add the correct display in IE 10.
337 | */
338 |
339 | [hidden] {
340 | display: none;
341 | }
342 |
--------------------------------------------------------------------------------
/src/assets/images/cart.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
41 |
--------------------------------------------------------------------------------
/src/components/AllNotebooks.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
21 |
22 |
24 |
25 |
--------------------------------------------------------------------------------
/src/components/AllProducts.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
20 |
21 |
59 |
60 |
--------------------------------------------------------------------------------
/src/components/AllSmartphones.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
21 |
22 |
24 |
25 |
--------------------------------------------------------------------------------
/src/components/Btn.vue:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
8 |
13 |
14 |
56 |
--------------------------------------------------------------------------------
/src/components/CartCheckout.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | -
6 |
7 | {{ product.name }}
8 | R$ {{ product.price }},00
9 |
10 |
11 |
12 |
13 |
14 |
No products...
15 | Back to list of products
16 |
17 |
18 | Total: R$ {{ totalPrice() }}, 00
19 |
20 |
21 |
22 |
23 |
50 |
51 |
124 |
--------------------------------------------------------------------------------
/src/components/ListOfProducts.vue:
--------------------------------------------------------------------------------
1 |
2 |
23 |
24 |
25 |
50 |
51 |
94 |
95 |
--------------------------------------------------------------------------------
/src/components/Mask.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
9 |
10 |
21 |
--------------------------------------------------------------------------------
/src/components/Menu.vue:
--------------------------------------------------------------------------------
1 |
2 |
18 |
19 |
20 |
24 |
25 |
57 |
--------------------------------------------------------------------------------
/src/components/Modal.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
Details
6 |
7 |
8 | Close
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
43 |
44 |
78 |
--------------------------------------------------------------------------------
/src/components/Popupcart.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
No products :/
4 |
5 |
![]()
6 |
{{ product.name }}
7 |
Amount: 1
8 |
R$ {{ product.price }}, 00
9 |
10 |
11 | Total: R$ {{ totalPrice() }}, 00
12 |
13 |
15 | View cart
16 |
17 |
18 |
19 |
20 |
21 |
22 |
52 |
53 |
116 |
--------------------------------------------------------------------------------
/src/components/Product.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
![]()
5 |
6 |
7 |
8 |
{{ currentProduct.name }}
9 | R$ {{ currentProduct.price }}, 00
10 |
12 | Buy Now
13 |
14 |
16 | More Info
17 |
18 |
19 |
{{ currentProduct.details }}
20 |
21 |
22 |
23 |
60 |
61 |
98 |
--------------------------------------------------------------------------------
/src/components/Stars.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
{{ totalReviews }} reviews.
5 |
6 |
7 |
8 |
13 |
14 |
38 |
--------------------------------------------------------------------------------
/src/main.js:
--------------------------------------------------------------------------------
1 | // The Vue build version to load with the `import` command
2 | // (runtime-only or standalone) has been set in webpack.base.conf with an alias.
3 | import Vue from 'vue';
4 | import App from './App';
5 | import router from './router';
6 | import store from './store';
7 |
8 | Vue.config.productionTip = false;
9 |
10 | /* eslint-disable no-new */
11 | new Vue({
12 | el: '#app',
13 | router,
14 | store,
15 | components: { App },
16 | template: '',
17 | });
18 |
--------------------------------------------------------------------------------
/src/router/index.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue';
2 | import Router from 'vue-router';
3 | import AllProducts from '../components/AllProducts';
4 | import AllSmartphones from '../components/AllSmartphones';
5 | import AllNotebooks from '../components/AllNotebooks';
6 | import Product from '../components/Product';
7 | import CartCheckout from '../components/CartCheckout';
8 |
9 | Vue.use(Router);
10 |
11 | export default new Router({
12 | routes: [
13 | {
14 | path: '',
15 | name: 'All Products',
16 | component: AllProducts,
17 | },
18 | {
19 | path: '/smartphones',
20 | name: 'Smartphones',
21 | component: AllSmartphones,
22 | },
23 | {
24 | path: '/notebooks',
25 | name: 'Notebooks',
26 | component: AllNotebooks,
27 | },
28 | {
29 | path: '/product-details',
30 | name: 'Product',
31 | component: Product,
32 | },
33 | {
34 | path: '/checkout',
35 | name: 'Checkout',
36 | component: CartCheckout,
37 | },
38 | ],
39 | });
40 |
--------------------------------------------------------------------------------
/src/store.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue';
2 | import Vuex from 'vuex';
3 |
4 | Vue.use(Vuex);
5 |
6 | export default new Vuex.Store({
7 | state: {
8 | notebooks: [
9 | {
10 | name: 'Notebook Lenovo Ideapad 320 Intel® Core i5-7200u 8GB',
11 | price: 2259,
12 | image: 'https://images-americanas.b2w.io/produtos/01/00/item/132381/3/132381386G1.png',
13 | stars: 5,
14 | totalReviews: 230,
15 | details: 'Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s',
16 | },
17 | {
18 | name: 'Notebook Dell Inspiron i15-3567-A30P Intel Core 7ª i5 4GB',
19 | price: 2284,
20 | image: 'https://images-americanas.b2w.io/produtos/01/00/item/133280/7/133280747G1.jpg',
21 | stars: 3.4,
22 | totalReviews: 20,
23 | details: 'Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s',
24 | },
25 | {
26 | name: 'Notebook Samsung Essentials E21 Intel Celeron Dual Core',
27 | price: 1490,
28 | image: 'https://images-americanas.b2w.io/produtos/01/00/item/132165/8/132165801G1.jpg',
29 | stars: 1,
30 | totalReviews: 1,
31 | details: 'Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s',
32 | },
33 | {
34 | name: 'Notebook Samsung Expert X22 Intel Core 7 i5 8GB',
35 | price: 2307,
36 | image: 'https://images-americanas.b2w.io/produtos/01/00/item/132260/6/132260681G1.jpg',
37 | stars: 4.4,
38 | totalReviews: 340,
39 | details: 'Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s',
40 | },
41 | {
42 | name: 'Notebook VAIO Fit 15S B1211B Intel Core i5 4GB',
43 | price: 2599,
44 | image: 'https://images-americanas.b2w.io/produtos/01/00/item/133252/7/133252789G1.jpg',
45 | stars: 3,
46 | totalReviews: 30,
47 | details: 'Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s',
48 | },
49 | {
50 | name: 'Notebook Dell Alienware - i7 16GB',
51 | price: 14000,
52 | image: 'https://images-submarino.b2w.io/produtos/01/00/sku/34470/9/34470934G1.jpg',
53 | stars: 2,
54 | totalReviews: 248,
55 | details: 'Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s',
56 | },
57 | ],
58 |
59 | smartphones: [
60 | {
61 | name: 'Smartphone Xiaomi Mi A1 dual Android one 7.1',
62 | price: 1199,
63 | image: 'https://images-americanas.b2w.io/produtos/01/00/sku/29296/2/29296259G1.jpg',
64 | stars: 0,
65 | totalReviews: 0,
66 | details: 'Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s',
67 | },
68 | {
69 | name: 'Smartphone Moto G 5S Dual Chip Android 7.0',
70 | price: 929,
71 | image: 'https://images-americanas.b2w.io/produtos/01/00/item/132474/0/132474081G1.png',
72 | stars: 1.5,
73 | totalReviews: 11,
74 | details: 'Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s',
75 | },
76 | {
77 | name: 'iPhone 8 Dourado 64GB Tela 4.7" IOS 11',
78 | price: 3949,
79 | image: 'https://images-americanas.b2w.io/produtos/01/00/item/132651/7/132651745G1.jpg',
80 | stars: 1,
81 | totalReviews: 2,
82 | details: 'Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s',
83 | },
84 | {
85 | name: 'Smartphone Samsung Galaxy S7 Edge',
86 | price: 1943,
87 | image: 'https://images-americanas.b2w.io/produtos/01/00/item/125911/8/125911828G1.png',
88 | stars: 5,
89 | totalReviews: 310,
90 | details: 'Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s',
91 | },
92 | {
93 | name: 'Smartphone Motorola Moto G6 Plus',
94 | price: 1699,
95 | image: 'https://images-americanas.b2w.io/produtos/01/00/item/133453/1/133453185G1.jpg',
96 | stars: 2.9,
97 | totalReviews: 42,
98 | details: 'Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s',
99 | },
100 | {
101 | name: 'Smartphone Motorola Moto Z3 Play',
102 | price: 2999,
103 | image: 'https://images-submarino.b2w.io/produtos/01/00/item/133666/1/133666164G1.jpg',
104 | stars: 0.5,
105 | totalReviews: 1,
106 | details: 'Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industrys standard dummy text ever since the 1500s',
107 | },
108 | ],
109 |
110 | cartProducts: [],
111 | currentProduct: {},
112 | showModal: false,
113 | showPopupCart: false,
114 | },
115 |
116 | getters: {
117 | getNotebooks: state => state.notebooks,
118 | getSmartphones: state => state.smartphones,
119 | getAllProducts: state => state.notebooks.concat(state.smartphones),
120 | getProductsInCart: state => state.cartProducts,
121 | getCurrentProduct: state => state.currentProduct,
122 | getShowModal: state => state.showModal,
123 | getPopupCart: state => state.showPopupCart,
124 | },
125 |
126 | mutations: {
127 | ADD_PRODUCT: (state, product) => {
128 | state.cartProducts.push(product);
129 | },
130 | REMOVE_PRODUCT: (state, index) => {
131 | state.cartProducts.splice(index, 1);
132 | },
133 | CURRENT_PRODUCT: (state, product) => {
134 | state.currentProduct = product;
135 | },
136 | SHOW_MODAL: (state) => {
137 | state.showModal = !state.showModal;
138 | },
139 | SHOW_POPUP_CART: (state) => {
140 | state.showPopupCart = !state.showPopupCart;
141 | },
142 | },
143 |
144 | actions: {
145 | addProduct: (context, product) => {
146 | context.commit('ADD_PRODUCT', product);
147 | },
148 | removeProduct: (context, index) => {
149 | context.commit('REMOVE_PRODUCT', index);
150 | },
151 | currentProduct: (context, product) => {
152 | context.commit('CURRENT_PRODUCT', product);
153 | },
154 | showOrHiddenModal: (context) => {
155 | context.commit('SHOW_MODAL');
156 | },
157 | showOrHiddenPopupCart: (context) => {
158 | context.commit('SHOW_POPUP_CART');
159 | },
160 | },
161 | });
162 |
--------------------------------------------------------------------------------
/static/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/crisgon/vue-cart/c7bb886f6133ff8f950de2555558b0ed4950db76/static/.gitkeep
--------------------------------------------------------------------------------