├── .babelrc ├── .editorconfig ├── .eslintignore ├── .eslintrc.js ├── .gitignore ├── .postcssrc.js ├── LICENSE ├── README.md ├── build ├── config │ ├── dev.env.js │ ├── index.js │ ├── prod.env.js │ ├── test.env.js │ └── vue-loader.conf.js ├── semvue │ ├── webpack.semvue.build.js │ ├── webpack.semvue.build.min.js │ └── webpack.semvue.conf.js ├── sitedemo │ ├── build.js │ ├── check-versions.js │ ├── dev-client.js │ ├── dev-server.js │ ├── webpack.base.conf.js │ ├── webpack.dev.conf.js │ ├── webpack.prod.conf.js │ └── webpack.test.conf.js └── utils │ └── index.js ├── circle.yml ├── dist ├── semvue │ ├── README.md │ ├── index.js │ ├── index.js.map │ ├── index.min.js │ └── package.json └── sitedemo │ ├── index.html │ └── static │ ├── css │ ├── app.e7465c88a2ce0df11016bb8d44cf1508.css │ └── app.e7465c88a2ce0df11016bb8d44cf1508.css.map │ ├── favicon.ico │ ├── fonts │ ├── icons.674f50d.eot │ ├── icons.af7ae50.woff2 │ ├── icons.b06871f.ttf │ └── icons.fee66e7.woff │ ├── img │ ├── flags.9c74e17.png │ ├── icons.912ec66.svg │ └── logo.412b713.png │ └── js │ ├── app.c9f36cd826a716f86c3a.js │ ├── app.c9f36cd826a716f86c3a.js.map │ ├── manifest.4fe46e2909dc8c2eaf13.js │ ├── manifest.4fe46e2909dc8c2eaf13.js.map │ ├── vendor.61a648d7a4f46b0cb93f.js │ └── vendor.61a648d7a4f46b0cb93f.js.map ├── index.html ├── package.json ├── src ├── App.vue ├── assets │ ├── favicon.ico │ ├── favicon.png │ ├── favicon_old.ico │ ├── favicon_old.png │ ├── logo.png │ ├── logoNova.png │ ├── logoNova2.png │ ├── logoNovaBranca.png │ └── logoVue.png ├── components │ ├── AccordionDoc.vue │ ├── AppMenu.vue │ ├── DimmerDoc.vue │ ├── DropdownDoc.vue │ ├── EmbedDoc.vue │ ├── ModalDoc.vue │ ├── PopupDoc.vue │ ├── ProgressDoc.vue │ ├── RatingDoc.vue │ └── Welcome.vue ├── main.js ├── router │ └── index.js ├── semantic-ui │ ├── .versions │ ├── LICENSE │ ├── README.md │ ├── components │ │ ├── accordion.css │ │ ├── accordion.js │ │ ├── accordion.min.css │ │ ├── accordion.min.js │ │ ├── ad.css │ │ ├── ad.min.css │ │ ├── api.js │ │ ├── api.min.js │ │ ├── breadcrumb.css │ │ ├── breadcrumb.min.css │ │ ├── button.css │ │ ├── button.min.css │ │ ├── card.css │ │ ├── card.min.css │ │ ├── checkbox.css │ │ ├── checkbox.js │ │ ├── checkbox.min.css │ │ ├── checkbox.min.js │ │ ├── colorize.js │ │ ├── colorize.min.js │ │ ├── comment.css │ │ ├── comment.min.css │ │ ├── container.css │ │ ├── container.min.css │ │ ├── dimmer.css │ │ ├── dimmer.js │ │ ├── dimmer.min.css │ │ ├── dimmer.min.js │ │ ├── divider.css │ │ ├── divider.min.css │ │ ├── dropdown.css │ │ ├── dropdown.js │ │ ├── dropdown.min.css │ │ ├── dropdown.min.js │ │ ├── embed.css │ │ ├── embed.js │ │ ├── embed.min.css │ │ ├── embed.min.js │ │ ├── feed.css │ │ ├── feed.min.css │ │ ├── flag.css │ │ ├── flag.min.css │ │ ├── form.css │ │ ├── form.js │ │ ├── form.min.css │ │ ├── form.min.js │ │ ├── grid.css │ │ ├── grid.min.css │ │ ├── header.css │ │ ├── header.min.css │ │ ├── icon.css │ │ ├── icon.min.css │ │ ├── image.css │ │ ├── image.min.css │ │ ├── input.css │ │ ├── input.min.css │ │ ├── item.css │ │ ├── item.min.css │ │ ├── label.css │ │ ├── label.min.css │ │ ├── list.css │ │ ├── list.min.css │ │ ├── loader.css │ │ ├── loader.min.css │ │ ├── menu.css │ │ ├── menu.min.css │ │ ├── message.css │ │ ├── message.min.css │ │ ├── modal.css │ │ ├── modal.js │ │ ├── modal.min.css │ │ ├── modal.min.js │ │ ├── nag.css │ │ ├── nag.js │ │ ├── nag.min.css │ │ ├── nag.min.js │ │ ├── popup.css │ │ ├── popup.js │ │ ├── popup.min.css │ │ ├── popup.min.js │ │ ├── progress.css │ │ ├── progress.js │ │ ├── progress.min.css │ │ ├── progress.min.js │ │ ├── rail.css │ │ ├── rail.min.css │ │ ├── rating.css │ │ ├── rating.js │ │ ├── rating.min.css │ │ ├── rating.min.js │ │ ├── reset.css │ │ ├── reset.min.css │ │ ├── reveal.css │ │ ├── reveal.min.css │ │ ├── search.css │ │ ├── search.js │ │ ├── search.min.css │ │ ├── search.min.js │ │ ├── segment.css │ │ ├── segment.min.css │ │ ├── shape.css │ │ ├── shape.js │ │ ├── shape.min.css │ │ ├── shape.min.js │ │ ├── sidebar.css │ │ ├── sidebar.js │ │ ├── sidebar.min.css │ │ ├── sidebar.min.js │ │ ├── site.css │ │ ├── site.js │ │ ├── site.min.css │ │ ├── site.min.js │ │ ├── state.js │ │ ├── state.min.js │ │ ├── statistic.css │ │ ├── statistic.min.css │ │ ├── step.css │ │ ├── step.min.css │ │ ├── sticky.css │ │ ├── sticky.js │ │ ├── sticky.min.css │ │ ├── sticky.min.js │ │ ├── tab.css │ │ ├── tab.js │ │ ├── tab.min.css │ │ ├── tab.min.js │ │ ├── table.css │ │ ├── table.min.css │ │ ├── transition.css │ │ ├── transition.js │ │ ├── transition.min.css │ │ ├── transition.min.js │ │ ├── video.css │ │ ├── video.js │ │ ├── video.min.css │ │ ├── video.min.js │ │ ├── visibility.js │ │ ├── visibility.min.js │ │ ├── visit.js │ │ └── visit.min.js │ ├── package.js │ ├── package.json │ ├── semantic.css │ ├── semantic.js │ ├── semantic.min.css │ ├── semantic.min.js │ └── themes │ │ └── default │ │ └── assets │ │ ├── fonts │ │ ├── icons.eot │ │ ├── icons.otf │ │ ├── icons.svg │ │ ├── icons.ttf │ │ ├── icons.woff │ │ └── icons.woff2 │ │ └── images │ │ └── flags.png └── semvue │ ├── components │ ├── Accordion.vue │ ├── Dimmer.vue │ ├── Dropdown.vue │ ├── Embed.vue │ ├── Modal.vue │ ├── Popup.vue │ ├── Progress.vue │ └── Rating.vue │ ├── index.js │ └── mixins │ └── Components.js ├── static ├── .gitkeep └── favicon.ico ├── test ├── mocks │ └── jqueryMock.js └── unit │ ├── .eslintrc │ ├── index.js │ ├── karma.conf.js │ └── specs │ ├── semvue │ ├── Accordion.spec.js │ ├── Dimmer.spec.js │ ├── Dropdown.spec.js │ ├── Embed.spec.js │ ├── Modal.spec.js │ ├── Popup.spec.js │ ├── Progress.spec.js │ └── Rating.spec.js │ └── site │ └── components │ ├── DimmerDoc.spec.js │ ├── DropdownDoc.spec.js │ ├── ModalDoc.spec.js │ ├── PopupDoc.spec.js │ ├── ProgressDoc.spec.js │ └── RatingDoc.spec.js └── yarn.lock /.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": [ 3 | ["env", { "modules": false }], 4 | "stage-2" 5 | ], 6 | "plugins": ["transform-runtime"], 7 | "comments": false, 8 | "env": { 9 | "test": { 10 | "presets": ["env", "stage-2"], 11 | "plugins": [ "istanbul" ] 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | charset = utf-8 5 | indent_style = space 6 | indent_size = 2 7 | end_of_line = lf 8 | insert_final_newline = true 9 | trim_trailing_whitespace = true 10 | -------------------------------------------------------------------------------- /.eslintignore: -------------------------------------------------------------------------------- 1 | build/*.js 2 | dist/*.js 3 | config/*.js 4 | src/semantic-ui/*.js 5 | -------------------------------------------------------------------------------- /.eslintrc.js: -------------------------------------------------------------------------------- 1 | // http://eslint.org/docs/user-guide/configuring 2 | 3 | module.exports = { 4 | root: true, 5 | parser: 'babel-eslint', 6 | parserOptions: { 7 | sourceType: 'module' 8 | }, 9 | env: { 10 | browser: true, 11 | jquery: true 12 | }, 13 | extends: 'airbnb-base', 14 | // required to lint *.vue files 15 | plugins: [ 16 | 'html' 17 | ], 18 | // check if imports actually resolve 19 | 'settings': { 20 | 'import/resolver': { 21 | 'webpack': { 22 | 'config': 'build/sitedemo/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 | // allow optionalDependencies 34 | 'import/no-extraneous-dependencies': ['error', { 35 | 'optionalDependencies': ['test/unit/index.js'] 36 | }], 37 | // allow debugger during development 38 | 'no-debugger': process.env.NODE_ENV === 'production' ? 2 : 0, 39 | 40 | //custom 41 | 'linebreak-style': 0, 42 | "indent": 0, 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | .vscode 3 | node_modules/ 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | test/unit/coverage 8 | -------------------------------------------------------------------------------- /.postcssrc.js: -------------------------------------------------------------------------------- 1 | // https://github.com/michael-ciniawsky/postcss-load-config 2 | 3 | module.exports = { 4 | "plugins": { 5 | // to edit target browsers: use "browserlist" field in package.json 6 | "autoprefixer": {} 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2017 Guilherme Waess 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |

2 | 3 |

4 | Build Status 5 | Coverage Status 6 | Downloads 7 | Version 8 |

9 | 10 | 11 | ---------- 12 | 13 | > Semantic-ui modules/components in you Vue project 14 | 15 | ## Using 16 | 17 | [You can see the docs and demo here](https://guilhermewaess.github.io/SemVue) 18 | 19 | ``` bash 20 | # install package 21 | npm install semvue --save 22 | ``` 23 | 24 | ## Using any component 25 | 26 | Simply import in your .vue the component that you want: 27 | ``` javascript 28 | import { Modal } from 'semvue'; 29 | 30 | export default { 31 | components: { 32 | Modal, 33 | }, 34 | }; 35 | ``` 36 | 37 | ## Components so far 38 | 39 | - Accordion 40 | - Dimmer 41 | - Dropdown 42 | - Embed 43 | - Modal 44 | - Popup 45 | - Progress 46 | - Rating 47 | 48 | ## To do and improvements 49 | - [x] Accordion 50 | - [x] Basic Implementation 51 | - [x] Initialization options override 52 | - [ ] Checkbox 53 | - [x] Dimmer 54 | - [x] Basic Implementation 55 | - [x] Initialization options override 56 | - [x] Dropdown 57 | - [x] Basic Implementation 58 | - [x] Embed 59 | - [x] Modal 60 | - [x] Basic Implementation 61 | - [x] Initialization options override 62 | - [ ] Nag 63 | - [x] Popup 64 | - [x] Basic Implementation 65 | - [x] Initialization options override 66 | - [x] Progress 67 | - [x] Rating 68 | - [x] Basic Implementation 69 | - [x] Initialization options override 70 | - [ ] Search 71 | - [ ] Shape 72 | - [ ] Sidebar 73 | - [ ] Sticky 74 | - [ ] Tab 75 | ------ 76 | 77 | # Site Demo/Semvue Build Setup 78 | 79 | ``` bash 80 | # install dependencies 81 | npm install 82 | 83 | # serve with hot reload at localhost:8081 84 | npm start 85 | 86 | # run unit tests 87 | npm run unit 88 | 89 | # run all tests 90 | npm test 91 | ``` 92 | -------------------------------------------------------------------------------- /build/config/dev.env.js: -------------------------------------------------------------------------------- 1 | var merge = require('webpack-merge') 2 | var prodEnv = require('./prod.env') 3 | 4 | module.exports = merge(prodEnv, { 5 | NODE_ENV: '"development"' 6 | }) 7 | -------------------------------------------------------------------------------- /build/config/index.js: -------------------------------------------------------------------------------- 1 | // see http://vuejs-templates.github.io/webpack for documentation. 2 | var path = require('path') 3 | 4 | module.exports = { 5 | build: { 6 | env: require('./prod.env'), 7 | index: path.resolve(__dirname, '../../dist/sitedemo/index.html'), 8 | assetsRoot: path.resolve(__dirname, '../../dist/sitedemo'), 9 | assetsSubDirectory: 'static', 10 | assetsPublicPath: '/SemVue/', 11 | productionSourceMap: true, 12 | // Gzip off by default as many popular static hosts such as 13 | // Surge or Netlify already gzip all static assets for you. 14 | // Before setting to `true`, make sure to: 15 | // npm install --save-dev compression-webpack-plugin 16 | productionGzip: false, 17 | productionGzipExtensions: ['js', 'css'], 18 | // Run the build command with an extra argument to 19 | // View the bundle analyzer report after build finishes: 20 | // `npm run build --report` 21 | // Set to `true` or `false` to always turn it on or off 22 | bundleAnalyzerReport: process.env.npm_config_report 23 | }, 24 | dev: { 25 | env: require('./dev.env'), 26 | port: 8081, 27 | autoOpenBrowser: true, 28 | assetsSubDirectory: 'static', 29 | assetsPublicPath: '/', 30 | proxyTable: {}, 31 | // CSS Sourcemaps off by default because relative paths are "buggy" 32 | // with this option, according to the CSS-Loader README 33 | // (https://github.com/webpack/css-loader#sourcemaps) 34 | // In our experience, they generally work as expected, 35 | // just be aware of this issue when enabling this option. 36 | cssSourceMap: false 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /build/config/prod.env.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | NODE_ENV: '"production"' 3 | } 4 | -------------------------------------------------------------------------------- /build/config/test.env.js: -------------------------------------------------------------------------------- 1 | var merge = require('webpack-merge') 2 | var devEnv = require('./dev.env') 3 | 4 | module.exports = merge(devEnv, { 5 | NODE_ENV: '"testing"' 6 | }) 7 | -------------------------------------------------------------------------------- /build/config/vue-loader.conf.js: -------------------------------------------------------------------------------- 1 | var utils = require('../utils') 2 | var config = require('../config') 3 | var isProduction = process.env.NODE_ENV === 'production' 4 | 5 | module.exports = { 6 | loaders: utils.cssLoaders({ 7 | sourceMap: isProduction 8 | ? config.build.productionSourceMap 9 | : config.dev.cssSourceMap, 10 | extract: isProduction 11 | }) 12 | } 13 | -------------------------------------------------------------------------------- /build/semvue/webpack.semvue.build.js: -------------------------------------------------------------------------------- 1 | var config = require('./webpack.semvue.conf') 2 | 3 | module.exports = config -------------------------------------------------------------------------------- /build/semvue/webpack.semvue.build.min.js: -------------------------------------------------------------------------------- 1 | var config = require('./webpack.semvue.conf') 2 | var webpack = require('webpack') 3 | 4 | config.output.filename = config.output.filename.replace(/\.js$/, '.min.js') 5 | delete config.devtool 6 | 7 | config.plugins = [ 8 | new webpack.optimize.UglifyJsPlugin({ 9 | sourceMap: false, 10 | drop_console: true, 11 | compress: { 12 | warnings: false 13 | } 14 | }) 15 | ] 16 | 17 | module.exports = config -------------------------------------------------------------------------------- /build/semvue/webpack.semvue.conf.js: -------------------------------------------------------------------------------- 1 | var webpack = require('webpack'); 2 | var path = require('path'); 3 | var vueLoaderConfig = require('./../config/vue-loader.conf') 4 | 5 | function resolve(dir) { 6 | return path.join(__dirname, '../..', dir) 7 | } 8 | 9 | module.exports = { 10 | entry: './src/semvue/index.js', 11 | output: { 12 | filename: 'index.js', 13 | library: 'SemVue', 14 | libraryTarget: 'umd', 15 | path: path.resolve(__dirname, '../../dist/semvue/'), 16 | publicPath: '/', 17 | }, 18 | resolve: { 19 | extensions: ['.js', '.vue', '.json'], 20 | alias: { 21 | 'vue$': 'vue/dist/vue.esm.js', 22 | '@': resolve('src'), 23 | '@mocks': resolve('test/mocks') 24 | } 25 | }, 26 | module: { 27 | rules: [ 28 | { 29 | test: /\.(js|vue)$/, 30 | loader: 'eslint-loader', 31 | enforce: 'pre', 32 | include: [resolve('src/semvue')], 33 | options: { 34 | formatter: require('eslint-friendly-formatter') 35 | } 36 | }, 37 | { 38 | test: /\.vue$/, 39 | loader: 'vue-loader', 40 | options: vueLoaderConfig 41 | }, 42 | { 43 | test: /\.js$/, 44 | loader: 'babel-loader', 45 | include: [resolve('src/semvue')] 46 | }, 47 | ] 48 | }, 49 | devtool: 'source-map' 50 | }; -------------------------------------------------------------------------------- /build/sitedemo/build.js: -------------------------------------------------------------------------------- 1 | require('./check-versions')() 2 | 3 | process.env.NODE_ENV = 'production' 4 | 5 | var ora = require('ora') 6 | var rm = require('rimraf') 7 | var path = require('path') 8 | var chalk = require('chalk') 9 | var webpack = require('webpack') 10 | var config = require('../config') 11 | var webpackConfig = require('./webpack.prod.conf') 12 | 13 | var spinner = ora('building for production...') 14 | spinner.start() 15 | 16 | rm(path.join(config.build.assetsRoot, config.build.assetsSubDirectory), err => { 17 | if (err) throw err 18 | webpack(webpackConfig, function (err, stats) { 19 | spinner.stop() 20 | if (err) throw err 21 | process.stdout.write(stats.toString({ 22 | colors: true, 23 | modules: false, 24 | children: false, 25 | chunks: false, 26 | chunkModules: false 27 | }) + '\n\n') 28 | 29 | console.log(chalk.cyan(' Build complete.\n')) 30 | console.log(chalk.yellow( 31 | ' Tip: built files are meant to be served over an HTTP server.\n' + 32 | ' Opening index.html over file:// won\'t work.\n' 33 | )) 34 | }) 35 | }) 36 | -------------------------------------------------------------------------------- /build/sitedemo/check-versions.js: -------------------------------------------------------------------------------- 1 | var chalk = require('chalk') 2 | var semver = require('semver') 3 | var packageConfig = require('../../package.json') 4 | var shell = require('shelljs') 5 | function exec (cmd) { 6 | return require('child_process').execSync(cmd).toString().trim() 7 | } 8 | 9 | var versionRequirements = [ 10 | { 11 | name: 'node', 12 | currentVersion: semver.clean(process.version), 13 | versionRequirement: packageConfig.engines.node 14 | }, 15 | ] 16 | 17 | if (shell.which('npm')) { 18 | versionRequirements.push({ 19 | name: 'npm', 20 | currentVersion: exec('npm --version'), 21 | versionRequirement: packageConfig.engines.npm 22 | }) 23 | } 24 | 25 | module.exports = function () { 26 | var warnings = [] 27 | for (var i = 0; i < versionRequirements.length; i++) { 28 | var mod = versionRequirements[i] 29 | if (!semver.satisfies(mod.currentVersion, mod.versionRequirement)) { 30 | warnings.push(mod.name + ': ' + 31 | chalk.red(mod.currentVersion) + ' should be ' + 32 | chalk.green(mod.versionRequirement) 33 | ) 34 | } 35 | } 36 | 37 | if (warnings.length) { 38 | console.log('') 39 | console.log(chalk.yellow('To use this template, you must update following to modules:')) 40 | console.log() 41 | for (var i = 0; i < warnings.length; i++) { 42 | var warning = warnings[i] 43 | console.log(' ' + warning) 44 | } 45 | console.log() 46 | process.exit(1) 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /build/sitedemo/dev-client.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | require('eventsource-polyfill') 3 | var hotClient = require('webpack-hot-middleware/client?noInfo=true&reload=true') 4 | 5 | hotClient.subscribe(function (event) { 6 | if (event.action === 'reload') { 7 | window.location.reload() 8 | } 9 | }) 10 | -------------------------------------------------------------------------------- /build/sitedemo/dev-server.js: -------------------------------------------------------------------------------- 1 | require('./check-versions')() 2 | 3 | var config = require('../config') 4 | if (!process.env.NODE_ENV) { 5 | process.env.NODE_ENV = JSON.parse(config.dev.env.NODE_ENV) 6 | } 7 | 8 | var opn = require('opn') 9 | var path = require('path') 10 | var express = require('express') 11 | var webpack = require('webpack') 12 | var proxyMiddleware = require('http-proxy-middleware') 13 | var webpackConfig = process.env.NODE_ENV === 'testing' 14 | ? require('./webpack.prod.conf') 15 | : require('./webpack.dev.conf') 16 | 17 | // default port where dev server listens for incoming traffic 18 | var port = process.env.PORT || config.dev.port 19 | // automatically open browser, if not set will be false 20 | var autoOpenBrowser = !!config.dev.autoOpenBrowser 21 | // Define HTTP proxies to your custom API backend 22 | // https://github.com/chimurai/http-proxy-middleware 23 | var proxyTable = config.dev.proxyTable 24 | 25 | var app = express() 26 | var compiler = webpack(webpackConfig) 27 | 28 | var devMiddleware = require('webpack-dev-middleware')(compiler, { 29 | publicPath: webpackConfig.output.publicPath, 30 | quiet: true 31 | }) 32 | 33 | var hotMiddleware = require('webpack-hot-middleware')(compiler, { 34 | log: () => {} 35 | }) 36 | // force page reload when html-webpack-plugin template changes 37 | compiler.plugin('compilation', function (compilation) { 38 | compilation.plugin('html-webpack-plugin-after-emit', function (data, cb) { 39 | hotMiddleware.publish({ action: 'reload' }) 40 | cb() 41 | }) 42 | }) 43 | 44 | // proxy api requests 45 | Object.keys(proxyTable).forEach(function (context) { 46 | var options = proxyTable[context] 47 | if (typeof options === 'string') { 48 | options = { target: options } 49 | } 50 | app.use(proxyMiddleware(options.filter || context, options)) 51 | }) 52 | 53 | // handle fallback for HTML5 history API 54 | app.use(require('connect-history-api-fallback')()) 55 | 56 | // serve webpack bundle output 57 | app.use(devMiddleware) 58 | 59 | // enable hot-reload and state-preserving 60 | // compilation error display 61 | app.use(hotMiddleware) 62 | 63 | // serve pure static assets 64 | var staticPath = path.posix.join(config.dev.assetsPublicPath, config.dev.assetsSubDirectory) 65 | app.use(staticPath, express.static('./static')) 66 | 67 | var uri = 'http://localhost:' + port 68 | 69 | var _resolve 70 | var readyPromise = new Promise(resolve => { 71 | _resolve = resolve 72 | }) 73 | 74 | console.log('> Starting dev server...') 75 | devMiddleware.waitUntilValid(() => { 76 | console.log('> Listening at ' + uri + '\n') 77 | // when env is testing, don't need open it 78 | if (autoOpenBrowser && process.env.NODE_ENV !== 'testing') { 79 | opn(uri) 80 | } 81 | _resolve() 82 | }) 83 | 84 | var server = app.listen(port) 85 | 86 | module.exports = { 87 | ready: readyPromise, 88 | close: () => { 89 | server.close() 90 | } 91 | } 92 | -------------------------------------------------------------------------------- /build/sitedemo/webpack.base.conf.js: -------------------------------------------------------------------------------- 1 | var path = require('path') 2 | var utils = require('../utils') 3 | var config = require('../config') 4 | var vueLoaderConfig = require('./../config/vue-loader.conf') 5 | var webpack = require('webpack') 6 | 7 | function resolve (dir) { 8 | return path.join(__dirname, '..', dir) 9 | } 10 | 11 | module.exports = { 12 | entry: { 13 | app: './src/main.js' 14 | }, 15 | output: { 16 | path: config.build.assetsRoot, 17 | filename: '[name].js', 18 | publicPath: process.env.NODE_ENV === 'production' 19 | ? config.build.assetsPublicPath 20 | : config.dev.assetsPublicPath 21 | }, 22 | resolve: { 23 | extensions: ['.js', '.vue', '.json'], 24 | alias: { 25 | 'vue$': 'vue/dist/vue.esm.js', 26 | '@': resolve('../src'), 27 | '@mocks': resolve('../test/mocks') 28 | } 29 | }, 30 | module: { 31 | rules: [ 32 | { 33 | test: /\.(js|vue)$/, 34 | loader: 'eslint-loader', 35 | enforce: 'pre', 36 | include: [resolve('../src'), resolve('../test')], 37 | options: { 38 | formatter: require('eslint-friendly-formatter') 39 | } 40 | }, 41 | { 42 | test: /\.vue$/, 43 | loader: 'vue-loader', 44 | options: vueLoaderConfig 45 | }, 46 | { 47 | test: /\.js$/, 48 | loader: 'babel-loader', 49 | include: [resolve('../src'), resolve('../test')] 50 | }, 51 | { 52 | test: /\.(png|jpe?g|gif|svg)(\?.*)?$/, 53 | loader: 'url-loader', 54 | options: { 55 | limit: 10000, 56 | name: utils.assetsPath('img/[name].[hash:7].[ext]') 57 | } 58 | }, 59 | { 60 | test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/, 61 | loader: 'url-loader', 62 | options: { 63 | limit: 10000, 64 | name: utils.assetsPath('fonts/[name].[hash:7].[ext]') 65 | } 66 | } 67 | ] 68 | } 69 | } 70 | -------------------------------------------------------------------------------- /build/sitedemo/webpack.dev.conf.js: -------------------------------------------------------------------------------- 1 | var utils = require('../utils') 2 | var webpack = require('webpack') 3 | var config = require('../config') 4 | var merge = require('webpack-merge') 5 | var baseWebpackConfig = require('./webpack.base.conf') 6 | var HtmlWebpackPlugin = require('html-webpack-plugin') 7 | var FriendlyErrorsPlugin = require('friendly-errors-webpack-plugin') 8 | 9 | // add hot-reload related code to entry chunks 10 | Object.keys(baseWebpackConfig.entry).forEach(function (name) { 11 | baseWebpackConfig.entry[name] = ['./build/sitedemo/dev-client'].concat(baseWebpackConfig.entry[name]) 12 | }) 13 | 14 | module.exports = merge(baseWebpackConfig, { 15 | module: { 16 | rules: utils.styleLoaders({ sourceMap: config.dev.cssSourceMap }) 17 | }, 18 | // cheap-module-eval-source-map is faster for development 19 | devtool: '#cheap-module-eval-source-map', 20 | plugins: [ 21 | new webpack.DefinePlugin({ 22 | 'process.env': config.dev.env 23 | }), 24 | // https://github.com/glenjamin/webpack-hot-middleware#installation--usage 25 | new webpack.HotModuleReplacementPlugin(), 26 | new webpack.NoEmitOnErrorsPlugin(), 27 | // https://github.com/ampedandwired/html-webpack-plugin 28 | new HtmlWebpackPlugin({ 29 | filename: 'index.html', 30 | template: 'index.html', 31 | inject: true 32 | }), 33 | new FriendlyErrorsPlugin(), 34 | new webpack.ProvidePlugin({ 35 | $: "jquery", 36 | jQuery: "jquery", 37 | "window.jQuery": "jquery" 38 | }) 39 | ] 40 | }) 41 | -------------------------------------------------------------------------------- /build/sitedemo/webpack.prod.conf.js: -------------------------------------------------------------------------------- 1 | var path = require('path') 2 | var utils = require('../utils') 3 | var webpack = require('webpack') 4 | var config = require('../config') 5 | var merge = require('webpack-merge') 6 | var baseWebpackConfig = require('./webpack.base.conf') 7 | var CopyWebpackPlugin = require('copy-webpack-plugin') 8 | var HtmlWebpackPlugin = require('html-webpack-plugin') 9 | var ExtractTextPlugin = require('extract-text-webpack-plugin') 10 | var OptimizeCSSPlugin = require('optimize-css-assets-webpack-plugin') 11 | 12 | var env = process.env.NODE_ENV === 'testing' 13 | ? require('../config/test.env') 14 | : config.build.env 15 | 16 | var webpackConfig = merge(baseWebpackConfig, { 17 | module: { 18 | rules: utils.styleLoaders({ 19 | sourceMap: config.build.productionSourceMap, 20 | extract: true 21 | }) 22 | }, 23 | devtool: config.build.productionSourceMap ? '#source-map' : false, 24 | output: { 25 | path: config.build.assetsRoot, 26 | filename: utils.assetsPath('js/[name].[chunkhash].js'), 27 | chunkFilename: utils.assetsPath('js/[id].[chunkhash].js') 28 | }, 29 | plugins: [ 30 | // http://vuejs.github.io/vue-loader/en/workflow/production.html 31 | new webpack.DefinePlugin({ 32 | 'process.env': env 33 | }), 34 | new webpack.optimize.UglifyJsPlugin({ 35 | compress: { 36 | warnings: false 37 | }, 38 | sourceMap: true 39 | }), 40 | // extract css into its own file 41 | new ExtractTextPlugin({ 42 | filename: utils.assetsPath('css/[name].[contenthash].css') 43 | }), 44 | // Compress extracted CSS. We are using this plugin so that possible 45 | // duplicated CSS from different components can be deduped. 46 | new OptimizeCSSPlugin({ 47 | cssProcessorOptions: { 48 | safe: true 49 | } 50 | }), 51 | // generate dist index.html with correct asset hash for caching. 52 | // you can customize output by editing /index.html 53 | // see https://github.com/ampedandwired/html-webpack-plugin 54 | new HtmlWebpackPlugin({ 55 | filename: process.env.NODE_ENV === 'testing' 56 | ? 'index.html' 57 | : config.build.index, 58 | template: 'index.html', 59 | inject: true, 60 | minify: { 61 | removeComments: true, 62 | collapseWhitespace: true, 63 | removeAttributeQuotes: true 64 | // more options: 65 | // https://github.com/kangax/html-minifier#options-quick-reference 66 | }, 67 | // necessary to consistently work with multiple chunks via CommonsChunkPlugin 68 | chunksSortMode: 'dependency' 69 | }), 70 | // split vendor js into its own file 71 | new webpack.optimize.CommonsChunkPlugin({ 72 | name: 'vendor', 73 | minChunks: function (module, count) { 74 | // any required modules inside node_modules are extracted to vendor 75 | return ( 76 | module.resource && 77 | /\.js$/.test(module.resource) && 78 | module.resource.indexOf( 79 | path.join(__dirname, '../../node_modules') 80 | ) === 0 81 | ) 82 | } 83 | }), 84 | // extract webpack runtime and module manifest to its own file in order to 85 | // prevent vendor hash from being updated whenever app bundle is updated 86 | new webpack.optimize.CommonsChunkPlugin({ 87 | name: 'manifest', 88 | chunks: ['vendor'] 89 | }), 90 | // copy custom static assets 91 | new CopyWebpackPlugin([ 92 | { 93 | from: path.resolve(__dirname, '../../static'), 94 | to: config.build.assetsSubDirectory, 95 | ignore: ['.*'] 96 | } 97 | ]), 98 | new webpack.ProvidePlugin({ 99 | $: "jquery", 100 | jQuery: "jquery", 101 | "window.jQuery": "jquery" 102 | }) 103 | ] 104 | }) 105 | 106 | if (config.build.productionGzip) { 107 | var CompressionWebpackPlugin = require('compression-webpack-plugin') 108 | 109 | webpackConfig.plugins.push( 110 | new CompressionWebpackPlugin({ 111 | asset: '[path].gz[query]', 112 | algorithm: 'gzip', 113 | test: new RegExp( 114 | '\\.(' + 115 | config.build.productionGzipExtensions.join('|') + 116 | ')$' 117 | ), 118 | threshold: 10240, 119 | minRatio: 0.8 120 | }) 121 | ) 122 | } 123 | 124 | if (config.build.bundleAnalyzerReport) { 125 | var BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin 126 | webpackConfig.plugins.push(new BundleAnalyzerPlugin()) 127 | } 128 | 129 | module.exports = webpackConfig 130 | -------------------------------------------------------------------------------- /build/sitedemo/webpack.test.conf.js: -------------------------------------------------------------------------------- 1 | // This is the webpack config used for unit tests. 2 | 3 | var utils = require('../utils') 4 | var webpack = require('webpack') 5 | var merge = require('webpack-merge') 6 | var baseConfig = require('./webpack.base.conf') 7 | 8 | var webpackConfig = merge(baseConfig, { 9 | // use inline sourcemap for karma-sourcemap-loader 10 | module: { 11 | rules: utils.styleLoaders() 12 | }, 13 | devtool: '#inline-source-map', 14 | resolveLoader: { 15 | alias: { 16 | // necessary to to make lang="scss" work in test when using vue-loader's ?inject option 17 | // see discussion at https://github.com/vuejs/vue-loader/issues/724 18 | 'scss-loader': 'sass-loader' 19 | } 20 | }, 21 | plugins: [ 22 | new webpack.DefinePlugin({ 23 | 'process.env': require('../config/test.env') 24 | }), 25 | new webpack.ProvidePlugin({ 26 | $: "@mocks/jqueryMock", 27 | jQuery: "@mocks/jqueryMock", 28 | "window.jQuery": "@mocks/jqueryMock" 29 | }) 30 | ] 31 | }) 32 | 33 | // no need for app entry during tests 34 | delete webpackConfig.entry 35 | 36 | module.exports = webpackConfig 37 | -------------------------------------------------------------------------------- /build/utils/index.js: -------------------------------------------------------------------------------- 1 | var path = require('path') 2 | var config = require('../config') 3 | var ExtractTextPlugin = require('extract-text-webpack-plugin') 4 | 5 | exports.assetsPath = function (_path) { 6 | var assetsSubDirectory = process.env.NODE_ENV === 'production' 7 | ? config.build.assetsSubDirectory 8 | : config.dev.assetsSubDirectory 9 | return path.posix.join(assetsSubDirectory, _path) 10 | } 11 | 12 | exports.cssLoaders = function (options) { 13 | options = options || {} 14 | 15 | var cssLoader = { 16 | loader: 'css-loader', 17 | options: { 18 | minimize: process.env.NODE_ENV === 'production', 19 | sourceMap: options.sourceMap 20 | } 21 | } 22 | 23 | // generate loader string to be used with extract text plugin 24 | function generateLoaders (loader, loaderOptions) { 25 | var loaders = [cssLoader] 26 | if (loader) { 27 | loaders.push({ 28 | loader: loader + '-loader', 29 | options: Object.assign({}, loaderOptions, { 30 | sourceMap: options.sourceMap 31 | }) 32 | }) 33 | } 34 | 35 | // Extract CSS when that option is specified 36 | // (which is the case during production build) 37 | if (options.extract) { 38 | return ExtractTextPlugin.extract({ 39 | use: loaders, 40 | fallback: 'vue-style-loader' 41 | }) 42 | } else { 43 | return ['vue-style-loader'].concat(loaders) 44 | } 45 | } 46 | 47 | // https://vue-loader.vuejs.org/en/configurations/extract-css.html 48 | return { 49 | css: generateLoaders(), 50 | postcss: generateLoaders(), 51 | less: generateLoaders('less'), 52 | sass: generateLoaders('sass', { indentedSyntax: true }), 53 | scss: generateLoaders('sass'), 54 | stylus: generateLoaders('stylus'), 55 | styl: generateLoaders('stylus') 56 | } 57 | } 58 | 59 | // Generate loaders for standalone style files (outside of .vue) 60 | exports.styleLoaders = function (options) { 61 | var output = [] 62 | var loaders = exports.cssLoaders(options) 63 | for (var extension in loaders) { 64 | var loader = loaders[extension] 65 | output.push({ 66 | test: new RegExp('\\.' + extension + '$'), 67 | use: loader 68 | }) 69 | } 70 | return output 71 | } 72 | -------------------------------------------------------------------------------- /circle.yml: -------------------------------------------------------------------------------- 1 | machine: 2 | node: 3 | version: 7 4 | 5 | dependencies: 6 | pre: 7 | - rm -rf ./node_modules 8 | post: 9 | - npm run build 10 | cache_directories: 11 | - ~/.npm 12 | 13 | test: 14 | post: 15 | - bash <(curl -s https://codecov.io/bash) -------------------------------------------------------------------------------- /dist/semvue/README.md: -------------------------------------------------------------------------------- 1 |

2 | 3 | ---------- 4 | 5 | > Semantic-ui modules/components in you Vue project 6 | 7 | ## Using 8 | 9 | [You can see the docs and demo here](https://guilhermewaess.github.io/SemVue) 10 | 11 | ``` bash 12 | # install package 13 | npm install semvue --save 14 | ``` 15 | 16 | ## Using any component 17 | 18 | Simply import in your .vue the component that you want: 19 | ``` javascript 20 | import { Modal } from 'semvue'; 21 | 22 | export default { 23 | components: { 24 | Modal, 25 | }, 26 | }; 27 | ``` 28 | 29 | ## Components so far 30 | 31 | - Accordion 32 | - Dimmer 33 | - Dropdown 34 | - Modal 35 | - Popup 36 | - Progress 37 | - Rating 38 | 39 | ## To do and improvements 40 | - [x] Accordion 41 | - [x] Basic Implementation 42 | - [x] Initialization options override 43 | - [ ] Checkbox 44 | - [x] Dimmer 45 | - [x] Basic Implementation 46 | - [x] Initialization options override 47 | - [x] Dropdown 48 | - [x] Basic Implementation 49 | - [x] Embed 50 | - [x] Modal 51 | - [x] Basic Implementation 52 | - [x] Initialization options override 53 | - [ ] Nag 54 | - [x] Popup 55 | - [x] Basic Implementation 56 | - [x] Initialization options override 57 | - [x] Progress 58 | - [x] Rating 59 | - [x] Basic Implementation 60 | - [x] Initialization options override 61 | - [ ] Search 62 | - [ ] Shape 63 | - [ ] Sidebar 64 | - [ ] Sticky 65 | - [ ] Tab 66 | ------ -------------------------------------------------------------------------------- /dist/semvue/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "semvue", 3 | "version": "0.6.0", 4 | "description": "A semantic-ui components implemented in VueJs", 5 | "author": "Guilherme Waess ", 6 | "license": "MIT", 7 | "private": false, 8 | "repository": { 9 | "type": "git", 10 | "url": "guilhermewaess/SemVue" 11 | }, 12 | "homepage": "http://guilhermewaess.github.io/SemVue", 13 | "keywords": [ 14 | "vuejs", 15 | "vue-semanticui", 16 | "vue-semantic-ui", 17 | "semantic-ui", 18 | "vue-components", 19 | "semantic components" 20 | ], 21 | "files": [ 22 | "index.js", 23 | "index.js.map", 24 | "index.min.js" 25 | ], 26 | "scripts": {}, 27 | "dependencies": { 28 | "lodash": "^4.17.4", 29 | "vue": "^2.3.3" 30 | }, 31 | "devDependencies": {}, 32 | "engines": { 33 | "node": ">= 4.0.0", 34 | "npm": ">= 3.0.0" 35 | }, 36 | "browserslist": [ 37 | "> 1%", 38 | "last 2 versions", 39 | "not ie <= 8" 40 | ] 41 | } -------------------------------------------------------------------------------- /dist/sitedemo/index.html: -------------------------------------------------------------------------------- 1 | SemVue
-------------------------------------------------------------------------------- /dist/sitedemo/static/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guilhermewaess/SemVue/117ceb6229369f683b6a121918a14ffe6c294d1c/dist/sitedemo/static/favicon.ico -------------------------------------------------------------------------------- /dist/sitedemo/static/fonts/icons.674f50d.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guilhermewaess/SemVue/117ceb6229369f683b6a121918a14ffe6c294d1c/dist/sitedemo/static/fonts/icons.674f50d.eot -------------------------------------------------------------------------------- /dist/sitedemo/static/fonts/icons.af7ae50.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guilhermewaess/SemVue/117ceb6229369f683b6a121918a14ffe6c294d1c/dist/sitedemo/static/fonts/icons.af7ae50.woff2 -------------------------------------------------------------------------------- /dist/sitedemo/static/fonts/icons.b06871f.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guilhermewaess/SemVue/117ceb6229369f683b6a121918a14ffe6c294d1c/dist/sitedemo/static/fonts/icons.b06871f.ttf -------------------------------------------------------------------------------- /dist/sitedemo/static/fonts/icons.fee66e7.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guilhermewaess/SemVue/117ceb6229369f683b6a121918a14ffe6c294d1c/dist/sitedemo/static/fonts/icons.fee66e7.woff -------------------------------------------------------------------------------- /dist/sitedemo/static/img/flags.9c74e17.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guilhermewaess/SemVue/117ceb6229369f683b6a121918a14ffe6c294d1c/dist/sitedemo/static/img/flags.9c74e17.png -------------------------------------------------------------------------------- /dist/sitedemo/static/img/logo.412b713.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guilhermewaess/SemVue/117ceb6229369f683b6a121918a14ffe6c294d1c/dist/sitedemo/static/img/logo.412b713.png -------------------------------------------------------------------------------- /dist/sitedemo/static/js/manifest.4fe46e2909dc8c2eaf13.js: -------------------------------------------------------------------------------- 1 | !function(e){function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}var r=window.webpackJsonp;window.webpackJsonp=function(t,c,a){for(var u,i,f,s=0,l=[];s 2 | 3 | 4 | 5 | SemVue 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "semvue", 3 | "version": "0.0.1", 4 | "description": "A semantic-ui components implemented in VueJs", 5 | "author": "Guilherme Waess ", 6 | "license": "MIT", 7 | "private": false, 8 | "keywords": [ 9 | "vuejs", 10 | "vue-semanticui", 11 | "vue-semantic-ui", 12 | "semantic-ui", 13 | "vue-components", 14 | "semantic components" 15 | ], 16 | "files": [ 17 | "dist" 18 | ], 19 | "readme": "SEMVUE.md", 20 | "scripts": { 21 | "dev": "node build/dev-server.js", 22 | "start": "node build/sitedemo/dev-server.js", 23 | "build": "npm run build-semvue && npm run build-demo", 24 | "build-demo": "node build/sitedemo/build.js", 25 | "build-semvue": "webpack --progress --hide-modules --config build/semvue/webpack.semvue.build.js && webpack --progress --hide-modules --config build/semvue/webpack.semvue.build.min.js", 26 | "unit": "cross-env BABEL_ENV=test karma start test/unit/karma.conf.js --single-run", 27 | "test": "npm run unit", 28 | "lint": "eslint --ext .js,.vue src test/unit/specs", 29 | "lint-semvue": "eslint --ext .js,.vue src/semvue test/unit/specs/semvue", 30 | "dist": "npm run lint-semvue && npm run test && npm run build-semvue && cd dist/semvue && npm publish" 31 | }, 32 | "dependencies": { 33 | "lodash": "^4.17.4", 34 | "vue": "^2.5.13" 35 | }, 36 | "devDependencies": { 37 | "autoprefixer": "^6.7.2", 38 | "babel-core": "^6.22.1", 39 | "babel-eslint": "^7.1.1", 40 | "babel-loader": "^6.2.10", 41 | "babel-plugin-istanbul": "^4.1.1", 42 | "babel-plugin-transform-runtime": "^6.22.0", 43 | "babel-preset-env": "^1.3.2", 44 | "babel-preset-stage-2": "^6.22.0", 45 | "babel-register": "^6.22.0", 46 | "babel-runtime": "^6.23.0", 47 | "chai": "^3.5.0", 48 | "chalk": "^1.1.3", 49 | "connect-history-api-fallback": "^1.3.0", 50 | "copy-webpack-plugin": "^4.0.1", 51 | "cross-env": "^4.0.0", 52 | "css-loader": "^0.28.0", 53 | "eslint": "^3.19.0", 54 | "eslint-config-airbnb-base": "^11.1.3", 55 | "eslint-friendly-formatter": "^2.0.7", 56 | "eslint-import-resolver-webpack": "^0.8.1", 57 | "eslint-loader": "^1.7.1", 58 | "eslint-plugin-html": "^2.0.0", 59 | "eslint-plugin-import": "^2.2.0", 60 | "eventsource-polyfill": "^0.9.6", 61 | "express": "^4.14.1", 62 | "extract-text-webpack-plugin": "^2.0.0", 63 | "file-loader": "^0.11.1", 64 | "friendly-errors-webpack-plugin": "^1.1.3", 65 | "html-webpack-plugin": "^2.28.0", 66 | "http-proxy-middleware": "^0.17.3", 67 | "inject-loader": "^3.0.0", 68 | "jquery": "^3.2.1", 69 | "karma": "^1.4.1", 70 | "karma-coverage": "^1.1.1", 71 | "karma-mocha": "^1.3.0", 72 | "karma-phantomjs-launcher": "^1.0.2", 73 | "karma-phantomjs-shim": "^1.4.0", 74 | "karma-sinon-chai": "^1.3.1", 75 | "karma-sourcemap-loader": "^0.3.7", 76 | "karma-spec-reporter": "0.0.30", 77 | "karma-webpack": "^2.0.2", 78 | "less": "^2.7.2", 79 | "less-loader": "^4.0.3", 80 | "lolex": "^1.5.2", 81 | "mocha": "^3.2.0", 82 | "opn": "^4.0.2", 83 | "optimize-css-assets-webpack-plugin": "^1.3.0", 84 | "ora": "^1.2.0", 85 | "phantomjs-prebuilt": "^2.1.14", 86 | "rimraf": "^2.6.0", 87 | "semver": "^5.3.0", 88 | "shelljs": "^0.7.6", 89 | "sinon": "^2.1.0", 90 | "sinon-chai": "^2.8.0", 91 | "url-loader": "^0.5.8", 92 | "vue-loader": "^12.1.0", 93 | "vue-router": "^2.3.1", 94 | "vue-style-loader": "^3.0.1", 95 | "vue-template-compiler": "^2.3.3", 96 | "webpack": "^2.6.1", 97 | "webpack-bundle-analyzer": "^2.2.1", 98 | "webpack-dev-middleware": "^1.10.0", 99 | "webpack-hot-middleware": "^2.18.0", 100 | "webpack-merge": "^4.1.0" 101 | }, 102 | "engines": { 103 | "node": ">= 4.0.0", 104 | "npm": ">= 3.0.0" 105 | }, 106 | "browserslist": [ 107 | "> 1%", 108 | "last 2 versions", 109 | "not ie <= 8" 110 | ] 111 | } 112 | -------------------------------------------------------------------------------- /src/App.vue: -------------------------------------------------------------------------------- 1 | 14 | 15 | 27 | 28 | 55 | 56 | -------------------------------------------------------------------------------- /src/assets/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guilhermewaess/SemVue/117ceb6229369f683b6a121918a14ffe6c294d1c/src/assets/favicon.ico -------------------------------------------------------------------------------- /src/assets/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guilhermewaess/SemVue/117ceb6229369f683b6a121918a14ffe6c294d1c/src/assets/favicon.png -------------------------------------------------------------------------------- /src/assets/favicon_old.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guilhermewaess/SemVue/117ceb6229369f683b6a121918a14ffe6c294d1c/src/assets/favicon_old.ico -------------------------------------------------------------------------------- /src/assets/favicon_old.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guilhermewaess/SemVue/117ceb6229369f683b6a121918a14ffe6c294d1c/src/assets/favicon_old.png -------------------------------------------------------------------------------- /src/assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guilhermewaess/SemVue/117ceb6229369f683b6a121918a14ffe6c294d1c/src/assets/logo.png -------------------------------------------------------------------------------- /src/assets/logoNova.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guilhermewaess/SemVue/117ceb6229369f683b6a121918a14ffe6c294d1c/src/assets/logoNova.png -------------------------------------------------------------------------------- /src/assets/logoNova2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guilhermewaess/SemVue/117ceb6229369f683b6a121918a14ffe6c294d1c/src/assets/logoNova2.png -------------------------------------------------------------------------------- /src/assets/logoNovaBranca.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guilhermewaess/SemVue/117ceb6229369f683b6a121918a14ffe6c294d1c/src/assets/logoNovaBranca.png -------------------------------------------------------------------------------- /src/assets/logoVue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guilhermewaess/SemVue/117ceb6229369f683b6a121918a14ffe6c294d1c/src/assets/logoVue.png -------------------------------------------------------------------------------- /src/components/AccordionDoc.vue: -------------------------------------------------------------------------------- 1 | 99 | 100 | 110 | 111 | 120 | -------------------------------------------------------------------------------- /src/components/AppMenu.vue: -------------------------------------------------------------------------------- 1 | 40 | 41 | 46 | 47 | 71 | -------------------------------------------------------------------------------- /src/components/EmbedDoc.vue: -------------------------------------------------------------------------------- 1 | 105 | 106 | 107 | 117 | 118 | 123 | -------------------------------------------------------------------------------- /src/components/ModalDoc.vue: -------------------------------------------------------------------------------- 1 | 108 | 109 | 130 | 131 | 140 | 141 | -------------------------------------------------------------------------------- /src/components/RatingDoc.vue: -------------------------------------------------------------------------------- 1 | 114 | 115 | 116 | 151 | 152 | 157 | -------------------------------------------------------------------------------- /src/components/Welcome.vue: -------------------------------------------------------------------------------- 1 | 26 | 27 | 37 | 38 | 39 | 56 | -------------------------------------------------------------------------------- /src/main.js: -------------------------------------------------------------------------------- 1 | // @ts-check 2 | // The Vue build version to load with the `import` command 3 | // (runtime-only or standalone) has been set in webpack.base.conf with an alias. 4 | import Vue from 'vue'; 5 | // @ts-ignore 6 | import App from './App'; 7 | import router from './router'; 8 | 9 | Vue.config.productionTip = false; 10 | 11 | /* eslint-disable no-new */ 12 | new Vue({ 13 | el: '#app', 14 | router, 15 | template: '', 16 | components: { App }, 17 | }); 18 | -------------------------------------------------------------------------------- /src/router/index.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue'; 2 | import Router from 'vue-router'; 3 | 4 | import Welcome from '@/components/Welcome'; 5 | import AccordionDoc from '@/components/AccordionDoc'; 6 | import DimmerDoc from '@/components/DimmerDoc'; 7 | import DropdownDoc from '@/components/DropdownDoc'; 8 | import EmbedDoc from '@/components/EmbedDoc'; 9 | import ModalDoc from '@/components/ModalDoc'; 10 | import PopupDoc from '@/components/PopupDoc'; 11 | import ProgressDoc from '@/components/ProgressDoc'; 12 | import RatingDoc from '@/components/RatingDoc'; 13 | 14 | Vue.use(Router); 15 | 16 | export default new Router({ 17 | hashbang: false, 18 | linkActiveClass: 'active', 19 | mode: 'hash', 20 | // base: `${__dirname}/SemVue`, 21 | routes: [ 22 | { 23 | path: '*', 24 | redirect: '/', 25 | }, 26 | { 27 | path: '/', 28 | name: 'home', 29 | redirect: { name: 'welcome' }, 30 | }, 31 | { 32 | path: '/welcome', 33 | name: 'welcome', 34 | component: Welcome, 35 | }, 36 | { 37 | path: '/AccordionDoc', 38 | name: 'AccordionDoc', 39 | component: AccordionDoc, 40 | }, 41 | { 42 | path: '/DimmerDoc', 43 | name: 'DimmerDoc', 44 | component: DimmerDoc, 45 | }, 46 | { 47 | path: '/DropDownDoc', 48 | name: 'DropDownDoc', 49 | component: DropdownDoc, 50 | }, 51 | { 52 | path: '/EmbedDoc', 53 | name: 'EmbedDoc', 54 | component: EmbedDoc, 55 | }, 56 | { 57 | path: '/ModalDoc', 58 | name: 'ModalDoc', 59 | component: ModalDoc, 60 | }, 61 | { 62 | path: '/PopupDoc', 63 | name: 'PopupDoc', 64 | component: PopupDoc, 65 | }, 66 | { 67 | path: '/ProgressDoc', 68 | name: 'ProgressDoc', 69 | component: ProgressDoc, 70 | }, 71 | { 72 | path: '/RatingDoc', 73 | name: 'RatingDoc', 74 | component: RatingDoc, 75 | }, 76 | ], 77 | }); 78 | -------------------------------------------------------------------------------- /src/semantic-ui/.versions: -------------------------------------------------------------------------------- 1 | jquery@1.11.3_2 2 | meteor@1.1.6 3 | semantic:ui-css@2.0.7 4 | underscore@1.0.3 5 | -------------------------------------------------------------------------------- /src/semantic-ui/LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2015 Semantic Org 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | 23 | -------------------------------------------------------------------------------- /src/semantic-ui/README.md: -------------------------------------------------------------------------------- 1 | # CSS Distribution 2 | 3 | This repository is automatically synced with the main [Semantic UI](https://github.com/Semantic-Org/Semantic-UI) repository to provide lightweight CSS only version of Semantic UI. 4 | 5 | This package **does not support theming** and includes generated CSS files of the default theme only. 6 | 7 | You can view more on Semantic UI at [LearnSemantic.com](http://www.learnsemantic.com) and [Semantic-UI.com](http://www.semantic-ui.com) 8 | -------------------------------------------------------------------------------- /src/semantic-ui/components/ad.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * # Semantic UI 2.2.10 - Ad 3 | * http://github.com/semantic-org/semantic-ui/ 4 | * 5 | * 6 | * Copyright 2013 Contributors 7 | * Released under the MIT license 8 | * http://opensource.org/licenses/MIT 9 | * 10 | */ 11 | 12 | 13 | /******************************* 14 | Advertisement 15 | *******************************/ 16 | 17 | .ui.ad { 18 | display: block; 19 | overflow: hidden; 20 | margin: 1em 0em; 21 | } 22 | .ui.ad:first-child { 23 | margin: 0em; 24 | } 25 | .ui.ad:last-child { 26 | margin: 0em; 27 | } 28 | .ui.ad iframe { 29 | margin: 0em; 30 | padding: 0em; 31 | border: none; 32 | overflow: hidden; 33 | } 34 | 35 | /*-------------- 36 | Common 37 | ---------------*/ 38 | 39 | 40 | /* Leaderboard */ 41 | .ui.leaderboard.ad { 42 | width: 728px; 43 | height: 90px; 44 | } 45 | 46 | /* Medium Rectangle */ 47 | .ui[class*="medium rectangle"].ad { 48 | width: 300px; 49 | height: 250px; 50 | } 51 | 52 | /* Large Rectangle */ 53 | .ui[class*="large rectangle"].ad { 54 | width: 336px; 55 | height: 280px; 56 | } 57 | 58 | /* Half Page */ 59 | .ui[class*="half page"].ad { 60 | width: 300px; 61 | height: 600px; 62 | } 63 | 64 | /*-------------- 65 | Square 66 | ---------------*/ 67 | 68 | 69 | /* Square */ 70 | .ui.square.ad { 71 | width: 250px; 72 | height: 250px; 73 | } 74 | 75 | /* Small Square */ 76 | .ui[class*="small square"].ad { 77 | width: 200px; 78 | height: 200px; 79 | } 80 | 81 | /*-------------- 82 | Rectangle 83 | ---------------*/ 84 | 85 | 86 | /* Small Rectangle */ 87 | .ui[class*="small rectangle"].ad { 88 | width: 180px; 89 | height: 150px; 90 | } 91 | 92 | /* Vertical Rectangle */ 93 | .ui[class*="vertical rectangle"].ad { 94 | width: 240px; 95 | height: 400px; 96 | } 97 | 98 | /*-------------- 99 | Button 100 | ---------------*/ 101 | 102 | .ui.button.ad { 103 | width: 120px; 104 | height: 90px; 105 | } 106 | .ui[class*="square button"].ad { 107 | width: 125px; 108 | height: 125px; 109 | } 110 | .ui[class*="small button"].ad { 111 | width: 120px; 112 | height: 60px; 113 | } 114 | 115 | /*-------------- 116 | Skyscrapers 117 | ---------------*/ 118 | 119 | 120 | /* Skyscraper */ 121 | .ui.skyscraper.ad { 122 | width: 120px; 123 | height: 600px; 124 | } 125 | 126 | /* Wide Skyscraper */ 127 | .ui[class*="wide skyscraper"].ad { 128 | width: 160px; 129 | } 130 | 131 | /*-------------- 132 | Banners 133 | ---------------*/ 134 | 135 | 136 | /* Banner */ 137 | .ui.banner.ad { 138 | width: 468px; 139 | height: 60px; 140 | } 141 | 142 | /* Vertical Banner */ 143 | .ui[class*="vertical banner"].ad { 144 | width: 120px; 145 | height: 240px; 146 | } 147 | 148 | /* Top Banner */ 149 | .ui[class*="top banner"].ad { 150 | width: 930px; 151 | height: 180px; 152 | } 153 | 154 | /* Half Banner */ 155 | .ui[class*="half banner"].ad { 156 | width: 234px; 157 | height: 60px; 158 | } 159 | 160 | /*-------------- 161 | Boards 162 | ---------------*/ 163 | 164 | 165 | /* Leaderboard */ 166 | .ui[class*="large leaderboard"].ad { 167 | width: 970px; 168 | height: 90px; 169 | } 170 | 171 | /* Billboard */ 172 | .ui.billboard.ad { 173 | width: 970px; 174 | height: 250px; 175 | } 176 | 177 | /*-------------- 178 | Panorama 179 | ---------------*/ 180 | 181 | 182 | /* Panorama */ 183 | .ui.panorama.ad { 184 | width: 980px; 185 | height: 120px; 186 | } 187 | 188 | /*-------------- 189 | Netboard 190 | ---------------*/ 191 | 192 | 193 | /* Netboard */ 194 | .ui.netboard.ad { 195 | width: 580px; 196 | height: 400px; 197 | } 198 | 199 | /*-------------- 200 | Mobile 201 | ---------------*/ 202 | 203 | 204 | /* Large Mobile Banner */ 205 | .ui[class*="large mobile banner"].ad { 206 | width: 320px; 207 | height: 100px; 208 | } 209 | 210 | /* Mobile Leaderboard */ 211 | .ui[class*="mobile leaderboard"].ad { 212 | width: 320px; 213 | height: 50px; 214 | } 215 | 216 | 217 | /******************************* 218 | Types 219 | *******************************/ 220 | 221 | 222 | /* Mobile Sizes */ 223 | .ui.mobile.ad { 224 | display: none; 225 | } 226 | @media only screen and (max-width: 767px) { 227 | .ui.mobile.ad { 228 | display: block; 229 | } 230 | } 231 | 232 | 233 | /******************************* 234 | Variations 235 | *******************************/ 236 | 237 | .ui.centered.ad { 238 | margin-left: auto; 239 | margin-right: auto; 240 | } 241 | .ui.test.ad { 242 | position: relative; 243 | background: #545454; 244 | } 245 | .ui.test.ad:after { 246 | position: absolute; 247 | top: 50%; 248 | left: 50%; 249 | width: 100%; 250 | text-align: center; 251 | -webkit-transform: translateX(-50%) translateY(-50%); 252 | transform: translateX(-50%) translateY(-50%); 253 | content: 'Ad'; 254 | color: #FFFFFF; 255 | font-size: 1em; 256 | font-weight: bold; 257 | } 258 | .ui.mobile.test.ad:after { 259 | font-size: 0.85714286em; 260 | } 261 | .ui.test.ad[data-text]:after { 262 | content: attr(data-text); 263 | } 264 | 265 | 266 | /******************************* 267 | Theme Overrides 268 | *******************************/ 269 | 270 | 271 | 272 | /******************************* 273 | User Variable Overrides 274 | *******************************/ 275 | 276 | -------------------------------------------------------------------------------- /src/semantic-ui/components/ad.min.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * # Semantic UI 2.2.10 - Ad 3 | * http://github.com/semantic-org/semantic-ui/ 4 | * 5 | * 6 | * Copyright 2013 Contributors 7 | * Released under the MIT license 8 | * http://opensource.org/licenses/MIT 9 | * 10 | */.ui.ad{display:block;overflow:hidden;margin:1em 0}.ui.ad:first-child,.ui.ad:last-child{margin:0}.ui.ad iframe{margin:0;padding:0;border:none;overflow:hidden}.ui.leaderboard.ad{width:728px;height:90px}.ui[class*="medium rectangle"].ad{width:300px;height:250px}.ui[class*="large rectangle"].ad{width:336px;height:280px}.ui[class*="half page"].ad{width:300px;height:600px}.ui.square.ad{width:250px;height:250px}.ui[class*="small square"].ad{width:200px;height:200px}.ui[class*="small rectangle"].ad{width:180px;height:150px}.ui[class*="vertical rectangle"].ad{width:240px;height:400px}.ui.button.ad{width:120px;height:90px}.ui[class*="square button"].ad{width:125px;height:125px}.ui[class*="small button"].ad{width:120px;height:60px}.ui.skyscraper.ad{width:120px;height:600px}.ui[class*="wide skyscraper"].ad{width:160px}.ui.banner.ad{width:468px;height:60px}.ui[class*="vertical banner"].ad{width:120px;height:240px}.ui[class*="top banner"].ad{width:930px;height:180px}.ui[class*="half banner"].ad{width:234px;height:60px}.ui[class*="large leaderboard"].ad{width:970px;height:90px}.ui.billboard.ad{width:970px;height:250px}.ui.panorama.ad{width:980px;height:120px}.ui.netboard.ad{width:580px;height:400px}.ui[class*="large mobile banner"].ad{width:320px;height:100px}.ui[class*="mobile leaderboard"].ad{width:320px;height:50px}.ui.mobile.ad{display:none}@media only screen and (max-width:767px){.ui.mobile.ad{display:block}}.ui.centered.ad{margin-left:auto;margin-right:auto}.ui.test.ad{position:relative;background:#545454}.ui.test.ad:after{position:absolute;top:50%;left:50%;width:100%;text-align:center;-webkit-transform:translateX(-50%) translateY(-50%);transform:translateX(-50%) translateY(-50%);content:'Ad';color:#FFF;font-size:1em;font-weight:700}.ui.mobile.test.ad:after{font-size:.85714286em}.ui.test.ad[data-text]:after{content:attr(data-text)} -------------------------------------------------------------------------------- /src/semantic-ui/components/breadcrumb.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * # Semantic UI 2.2.10 - Breadcrumb 3 | * http://github.com/semantic-org/semantic-ui/ 4 | * 5 | * 6 | * Released under the MIT license 7 | * http://opensource.org/licenses/MIT 8 | * 9 | */ 10 | 11 | 12 | /******************************* 13 | Breadcrumb 14 | *******************************/ 15 | 16 | .ui.breadcrumb { 17 | line-height: 1; 18 | display: inline-block; 19 | margin: 0em 0em; 20 | vertical-align: middle; 21 | } 22 | .ui.breadcrumb:first-child { 23 | margin-top: 0em; 24 | } 25 | .ui.breadcrumb:last-child { 26 | margin-bottom: 0em; 27 | } 28 | 29 | 30 | /******************************* 31 | Content 32 | *******************************/ 33 | 34 | 35 | /* Divider */ 36 | .ui.breadcrumb .divider { 37 | display: inline-block; 38 | opacity: 0.7; 39 | margin: 0em 0.21428571rem 0em; 40 | font-size: 0.92857143em; 41 | color: rgba(0, 0, 0, 0.4); 42 | vertical-align: baseline; 43 | } 44 | 45 | /* Link */ 46 | .ui.breadcrumb a { 47 | color: #4183C4; 48 | } 49 | .ui.breadcrumb a:hover { 50 | color: #1e70bf; 51 | } 52 | 53 | /* Icon Divider */ 54 | .ui.breadcrumb .icon.divider { 55 | font-size: 0.85714286em; 56 | vertical-align: baseline; 57 | } 58 | 59 | /* Section */ 60 | .ui.breadcrumb a.section { 61 | cursor: pointer; 62 | } 63 | .ui.breadcrumb .section { 64 | display: inline-block; 65 | margin: 0em; 66 | padding: 0em; 67 | } 68 | 69 | /* Loose Coupling */ 70 | .ui.breadcrumb.segment { 71 | display: inline-block; 72 | padding: 0.78571429em 1em; 73 | } 74 | 75 | 76 | /******************************* 77 | States 78 | *******************************/ 79 | 80 | .ui.breadcrumb .active.section { 81 | font-weight: bold; 82 | } 83 | 84 | 85 | /******************************* 86 | Variations 87 | *******************************/ 88 | 89 | .ui.mini.breadcrumb { 90 | font-size: 0.78571429rem; 91 | } 92 | .ui.tiny.breadcrumb { 93 | font-size: 0.85714286rem; 94 | } 95 | .ui.small.breadcrumb { 96 | font-size: 0.92857143rem; 97 | } 98 | .ui.breadcrumb { 99 | font-size: 1rem; 100 | } 101 | .ui.large.breadcrumb { 102 | font-size: 1.14285714rem; 103 | } 104 | .ui.big.breadcrumb { 105 | font-size: 1.28571429rem; 106 | } 107 | .ui.huge.breadcrumb { 108 | font-size: 1.42857143rem; 109 | } 110 | .ui.massive.breadcrumb { 111 | font-size: 1.71428571rem; 112 | } 113 | 114 | 115 | /******************************* 116 | Theme Overrides 117 | *******************************/ 118 | 119 | 120 | 121 | /******************************* 122 | Site Overrides 123 | *******************************/ 124 | 125 | -------------------------------------------------------------------------------- /src/semantic-ui/components/breadcrumb.min.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * # Semantic UI 2.2.10 - Breadcrumb 3 | * http://github.com/semantic-org/semantic-ui/ 4 | * 5 | * 6 | * Released under the MIT license 7 | * http://opensource.org/licenses/MIT 8 | * 9 | */.ui.breadcrumb{line-height:1;display:inline-block;margin:0;vertical-align:middle}.ui.breadcrumb:first-child{margin-top:0}.ui.breadcrumb:last-child{margin-bottom:0}.ui.breadcrumb .divider{display:inline-block;opacity:.7;margin:0 .21428571rem;font-size:.92857143em;color:rgba(0,0,0,.4);vertical-align:baseline}.ui.breadcrumb a{color:#4183C4}.ui.breadcrumb a:hover{color:#1e70bf}.ui.breadcrumb .icon.divider{font-size:.85714286em;vertical-align:baseline}.ui.breadcrumb a.section{cursor:pointer}.ui.breadcrumb .section{display:inline-block;margin:0;padding:0}.ui.breadcrumb.segment{display:inline-block;padding:.78571429em 1em}.ui.breadcrumb .active.section{font-weight:700}.ui.mini.breadcrumb{font-size:.78571429rem}.ui.tiny.breadcrumb{font-size:.85714286rem}.ui.small.breadcrumb{font-size:.92857143rem}.ui.breadcrumb{font-size:1rem}.ui.large.breadcrumb{font-size:1.14285714rem}.ui.big.breadcrumb{font-size:1.28571429rem}.ui.huge.breadcrumb{font-size:1.42857143rem}.ui.massive.breadcrumb{font-size:1.71428571rem} -------------------------------------------------------------------------------- /src/semantic-ui/components/colorize.min.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * # Semantic UI 2.0.0 - Colorize 3 | * http://github.com/semantic-org/semantic-ui/ 4 | * 5 | * 6 | * Copyright 2015 Contributors 7 | * Released under the MIT license 8 | * http://opensource.org/licenses/MIT 9 | * 10 | */ 11 | !function(e,n,i,t){"use strict";e.fn.colorize=function(n){var i=e.isPlainObject(n)?e.extend(!0,{},e.fn.colorize.settings,n):e.extend({},e.fn.colorize.settings),o=arguments||!1;return e(this).each(function(n){var a,r,c,s,d,g,u,l,m=e(this),f=e("")[0],h=e("")[0],p=e("")[0],v=new Image,w=i.colors,b=(i.paths,i.namespace),y=i.error,C=m.data("module-"+b);return l={checkPreconditions:function(){return l.debug("Checking pre-conditions"),!e.isPlainObject(w)||e.isEmptyObject(w)?(l.error(y.undefinedColors),!1):!0},async:function(e){i.async?setTimeout(e,0):e()},getMetadata:function(){l.debug("Grabbing metadata"),s=m.data("image")||i.image||t,d=m.data("name")||i.name||n,g=i.width||m.width(),u=i.height||m.height(),(0===g||0===u)&&l.error(y.undefinedSize)},initialize:function(){l.debug("Initializing with colors",w),l.checkPreconditions()&&l.async(function(){l.getMetadata(),l.canvas.create(),l.draw.image(function(){l.draw.colors(),l.canvas.merge()}),m.data("module-"+b,l)})},redraw:function(){l.debug("Redrawing image"),l.async(function(){l.canvas.clear(),l.draw.colors(),l.canvas.merge()})},change:{color:function(e,n){return l.debug("Changing color",e),w[e]===t?(l.error(y.missingColor),!1):(w[e]=n,void l.redraw())}},canvas:{create:function(){l.debug("Creating canvases"),f.width=g,f.height=u,h.width=g,h.height=u,p.width=g,p.height=u,a=f.getContext("2d"),r=h.getContext("2d"),c=p.getContext("2d"),m.append(f),a=m.children("canvas")[0].getContext("2d")},clear:function(e){l.debug("Clearing canvas"),c.fillStyle="#FFFFFF",c.fillRect(0,0,g,u)},merge:function(){return e.isFunction(a.blendOnto)?(a.putImageData(r.getImageData(0,0,g,u),0,0),void c.blendOnto(a,"multiply")):void l.error(y.missingPlugin)}},draw:{image:function(e){l.debug("Drawing image"),e=e||function(){},s?(v.src=s,v.onload=function(){r.drawImage(v,0,0),e()}):(l.error(y.noImage),e())},colors:function(){l.debug("Drawing color overlays",w),e.each(w,function(e,n){i.onDraw(c,d,e,n)})}},debug:function(e,n){i.debug&&(n!==t?console.info(i.name+": "+e,n):console.info(i.name+": "+e))},error:function(e){console.warn(i.name+": "+e)},invoke:function(n,o,a){var r;return a=a||Array.prototype.slice.call(arguments,2),"string"==typeof n&&C!==t&&(n=n.split("."),e.each(n,function(n,t){return e.isPlainObject(C[t])?(C=C[t],!0):e.isFunction(C[t])?(r=C[t],!0):(l.error(i.error.method),!1)})),e.isFunction(r)?r.apply(o,a):!1}},C!==t&&o?("invoke"==o[0]&&(o=Array.prototype.slice.call(o,1)),l.invoke(o[0],this,Array.prototype.slice.call(o,1))):void l.initialize()}),this},e.fn.colorize.settings={name:"Image Colorizer",debug:!0,namespace:"colorize",onDraw:function(e,n,i,t){},async:!0,colors:{},metadata:{image:"image",name:"name"},error:{noImage:"No tracing image specified",undefinedColors:"No default colors specified.",missingColor:"Attempted to change color that does not exist",missingPlugin:"Blend onto plug-in must be included",undefinedHeight:"The width or height of image canvas could not be automatically determined. Please specify a height."}}}(jQuery,window,document); -------------------------------------------------------------------------------- /src/semantic-ui/components/comment.min.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * # Semantic UI 2.2.10 - Comment 3 | * http://github.com/semantic-org/semantic-ui/ 4 | * 5 | * 6 | * Released under the MIT license 7 | * http://opensource.org/licenses/MIT 8 | * 9 | */.ui.comments{margin:1.5em 0;max-width:650px}.ui.comments:first-child{margin-top:0}.ui.comments:last-child{margin-bottom:0}.ui.comments .comment{position:relative;background:0 0;margin:.5em 0 0;padding:.5em 0 0;border:none;border-top:none;line-height:1.2}.ui.comments .comment:first-child{margin-top:0;padding-top:0}.ui.comments .comment .comments{margin:0 0 .5em .5em;padding:1em 0 1em 1em}.ui.comments .comment .comments:before{position:absolute;top:0;left:0}.ui.comments .comment .comments .comment{border:none;border-top:none;background:0 0}.ui.comments .comment .avatar{display:block;width:2.5em;height:auto;float:left;margin:.2em 0 0}.ui.comments .comment .avatar img,.ui.comments .comment img.avatar{display:block;margin:0 auto;width:100%;height:100%;border-radius:.25rem}.ui.comments .comment>.content{display:block}.ui.comments .comment>.avatar~.content{margin-left:3.5em}.ui.comments .comment .author{font-size:1em;color:rgba(0,0,0,.87);font-weight:700}.ui.comments .comment a.author{cursor:pointer}.ui.comments .comment a.author:hover{color:#1e70bf}.ui.comments .comment .metadata{display:inline-block;margin-left:.5em;color:rgba(0,0,0,.4);font-size:.875em}.ui.comments .comment .metadata>*{display:inline-block;margin:0 .5em 0 0}.ui.comments .comment .metadata>:last-child{margin-right:0}.ui.comments .comment .text{margin:.25em 0 .5em;font-size:1em;word-wrap:break-word;color:rgba(0,0,0,.87);line-height:1.3}.ui.comments .comment .actions{font-size:.875em}.ui.comments .comment .actions a{cursor:pointer;display:inline-block;margin:0 .75em 0 0;color:rgba(0,0,0,.4)}.ui.comments .comment .actions a:last-child{margin-right:0}.ui.comments .comment .actions a.active,.ui.comments .comment .actions a:hover{color:rgba(0,0,0,.8)}.ui.comments>.reply.form{margin-top:1em}.ui.comments .comment .reply.form{width:100%;margin-top:1em}.ui.comments .reply.form textarea{font-size:1em;height:12em}.ui.collapsed.comments,.ui.comments .collapsed.comment,.ui.comments .collapsed.comments{display:none}.ui.threaded.comments .comment .comments{margin:-1.5em 0 -1em 1.25em;padding:3em 0 2em 2.25em;box-shadow:-1px 0 0 rgba(34,36,38,.15)}.ui.minimal.comments .comment .actions{opacity:0;position:absolute;top:0;right:0;left:auto;-webkit-transition:opacity .2s ease;transition:opacity .2s ease;-webkit-transition-delay:.1s;transition-delay:.1s}.ui.minimal.comments .comment>.content:hover>.actions{opacity:1}.ui.mini.comments{font-size:.78571429rem}.ui.tiny.comments{font-size:.85714286rem}.ui.small.comments{font-size:.92857143rem}.ui.comments{font-size:1rem}.ui.large.comments{font-size:1.14285714rem}.ui.big.comments{font-size:1.28571429rem}.ui.huge.comments{font-size:1.42857143rem}.ui.massive.comments{font-size:1.71428571rem} -------------------------------------------------------------------------------- /src/semantic-ui/components/container.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * # Semantic UI 2.2.10 - Container 3 | * http://github.com/semantic-org/semantic-ui/ 4 | * 5 | * 6 | * Released under the MIT license 7 | * http://opensource.org/licenses/MIT 8 | * 9 | */ 10 | 11 | 12 | /******************************* 13 | Container 14 | *******************************/ 15 | 16 | 17 | /* All Sizes */ 18 | .ui.container { 19 | display: block; 20 | max-width: 100% !important; 21 | } 22 | 23 | /* Mobile */ 24 | @media only screen and (max-width: 767px) { 25 | .ui.container { 26 | width: auto !important; 27 | margin-left: 1em !important; 28 | margin-right: 1em !important; 29 | } 30 | .ui.grid.container { 31 | width: auto !important; 32 | } 33 | .ui.relaxed.grid.container { 34 | width: auto !important; 35 | } 36 | .ui.very.relaxed.grid.container { 37 | width: auto !important; 38 | } 39 | } 40 | 41 | /* Tablet */ 42 | @media only screen and (min-width: 768px) and (max-width: 991px) { 43 | .ui.container { 44 | width: 723px; 45 | margin-left: auto !important; 46 | margin-right: auto !important; 47 | } 48 | .ui.grid.container { 49 | width: calc( 723px + 2rem ) !important; 50 | } 51 | .ui.relaxed.grid.container { 52 | width: calc( 723px + 3rem ) !important; 53 | } 54 | .ui.very.relaxed.grid.container { 55 | width: calc( 723px + 5rem ) !important; 56 | } 57 | } 58 | 59 | /* Small Monitor */ 60 | @media only screen and (min-width: 992px) and (max-width: 1199px) { 61 | .ui.container { 62 | width: 933px; 63 | margin-left: auto !important; 64 | margin-right: auto !important; 65 | } 66 | .ui.grid.container { 67 | width: calc( 933px + 2rem ) !important; 68 | } 69 | .ui.relaxed.grid.container { 70 | width: calc( 933px + 3rem ) !important; 71 | } 72 | .ui.very.relaxed.grid.container { 73 | width: calc( 933px + 5rem ) !important; 74 | } 75 | } 76 | 77 | /* Large Monitor */ 78 | @media only screen and (min-width: 1200px) { 79 | .ui.container { 80 | width: 1127px; 81 | margin-left: auto !important; 82 | margin-right: auto !important; 83 | } 84 | .ui.grid.container { 85 | width: calc( 1127px + 2rem ) !important; 86 | } 87 | .ui.relaxed.grid.container { 88 | width: calc( 1127px + 3rem ) !important; 89 | } 90 | .ui.very.relaxed.grid.container { 91 | width: calc( 1127px + 5rem ) !important; 92 | } 93 | } 94 | 95 | 96 | /******************************* 97 | Types 98 | *******************************/ 99 | 100 | 101 | /* Text Container */ 102 | .ui.text.container { 103 | font-family: 'Lato', 'Helvetica Neue', Arial, Helvetica, sans-serif; 104 | max-width: 700px !important; 105 | line-height: 1.5; 106 | } 107 | .ui.text.container { 108 | font-size: 1.14285714rem; 109 | } 110 | 111 | /* Fluid */ 112 | .ui.fluid.container { 113 | width: 100%; 114 | } 115 | 116 | 117 | /******************************* 118 | Variations 119 | *******************************/ 120 | 121 | .ui[class*="left aligned"].container { 122 | text-align: left; 123 | } 124 | .ui[class*="center aligned"].container { 125 | text-align: center; 126 | } 127 | .ui[class*="right aligned"].container { 128 | text-align: right; 129 | } 130 | .ui.justified.container { 131 | text-align: justify; 132 | -webkit-hyphens: auto; 133 | -ms-hyphens: auto; 134 | hyphens: auto; 135 | } 136 | 137 | 138 | /******************************* 139 | Theme Overrides 140 | *******************************/ 141 | 142 | 143 | 144 | /******************************* 145 | Site Overrides 146 | *******************************/ 147 | 148 | -------------------------------------------------------------------------------- /src/semantic-ui/components/container.min.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * # Semantic UI 2.2.10 - Container 3 | * http://github.com/semantic-org/semantic-ui/ 4 | * 5 | * 6 | * Released under the MIT license 7 | * http://opensource.org/licenses/MIT 8 | * 9 | */.ui.container{display:block;max-width:100%!important}@media only screen and (max-width:767px){.ui.container{width:auto!important;margin-left:1em!important;margin-right:1em!important}.ui.grid.container,.ui.relaxed.grid.container,.ui.very.relaxed.grid.container{width:auto!important}}@media only screen and (min-width:768px) and (max-width:991px){.ui.container{width:723px;margin-left:auto!important;margin-right:auto!important}.ui.grid.container{width:calc(723px + 2rem)!important}.ui.relaxed.grid.container{width:calc(723px + 3rem)!important}.ui.very.relaxed.grid.container{width:calc(723px + 5rem)!important}}@media only screen and (min-width:992px) and (max-width:1199px){.ui.container{width:933px;margin-left:auto!important;margin-right:auto!important}.ui.grid.container{width:calc(933px + 2rem)!important}.ui.relaxed.grid.container{width:calc(933px + 3rem)!important}.ui.very.relaxed.grid.container{width:calc(933px + 5rem)!important}}@media only screen and (min-width:1200px){.ui.container{width:1127px;margin-left:auto!important;margin-right:auto!important}.ui.grid.container{width:calc(1127px + 2rem)!important}.ui.relaxed.grid.container{width:calc(1127px + 3rem)!important}.ui.very.relaxed.grid.container{width:calc(1127px + 5rem)!important}}.ui.text.container{font-family:Lato,'Helvetica Neue',Arial,Helvetica,sans-serif;max-width:700px!important;line-height:1.5;font-size:1.14285714rem}.ui.fluid.container{width:100%}.ui[class*="left aligned"].container{text-align:left}.ui[class*="center aligned"].container{text-align:center}.ui[class*="right aligned"].container{text-align:right}.ui.justified.container{text-align:justify;-webkit-hyphens:auto;-ms-hyphens:auto;hyphens:auto} -------------------------------------------------------------------------------- /src/semantic-ui/components/dimmer.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * # Semantic UI 2.2.10 - Dimmer 3 | * http://github.com/semantic-org/semantic-ui/ 4 | * 5 | * 6 | * Released under the MIT license 7 | * http://opensource.org/licenses/MIT 8 | * 9 | */ 10 | 11 | 12 | /******************************* 13 | Dimmer 14 | *******************************/ 15 | 16 | .dimmable:not(.body) { 17 | position: relative; 18 | } 19 | .ui.dimmer { 20 | display: none; 21 | position: absolute; 22 | top: 0em !important; 23 | left: 0em !important; 24 | width: 100%; 25 | height: 100%; 26 | text-align: center; 27 | vertical-align: middle; 28 | background-color: rgba(0, 0, 0, 0.85); 29 | opacity: 0; 30 | line-height: 1; 31 | -webkit-animation-fill-mode: both; 32 | animation-fill-mode: both; 33 | -webkit-animation-duration: 0.5s; 34 | animation-duration: 0.5s; 35 | -webkit-transition: background-color 0.5s linear; 36 | transition: background-color 0.5s linear; 37 | -webkit-user-select: none; 38 | -moz-user-select: none; 39 | -ms-user-select: none; 40 | user-select: none; 41 | will-change: opacity; 42 | z-index: 1000; 43 | } 44 | 45 | /* Dimmer Content */ 46 | .ui.dimmer > .content { 47 | width: 100%; 48 | height: 100%; 49 | display: table; 50 | -webkit-user-select: text; 51 | -moz-user-select: text; 52 | -ms-user-select: text; 53 | user-select: text; 54 | } 55 | .ui.dimmer > .content > * { 56 | display: table-cell; 57 | vertical-align: middle; 58 | color: #FFFFFF; 59 | } 60 | 61 | /* Loose Coupling */ 62 | .ui.segment > .ui.dimmer { 63 | border-radius: inherit !important; 64 | } 65 | 66 | 67 | /******************************* 68 | States 69 | *******************************/ 70 | 71 | .animating.dimmable:not(body), 72 | .dimmed.dimmable:not(body) { 73 | overflow: hidden; 74 | } 75 | .dimmed.dimmable > .ui.animating.dimmer, 76 | .dimmed.dimmable > .ui.visible.dimmer, 77 | .ui.active.dimmer { 78 | display: block; 79 | opacity: 1; 80 | } 81 | .ui.disabled.dimmer { 82 | width: 0 !important; 83 | height: 0 !important; 84 | } 85 | 86 | 87 | /******************************* 88 | Variations 89 | *******************************/ 90 | 91 | 92 | /*-------------- 93 | Page 94 | ---------------*/ 95 | 96 | .ui.page.dimmer { 97 | position: fixed; 98 | -webkit-transform-style: ''; 99 | transform-style: ''; 100 | -webkit-perspective: 2000px; 101 | perspective: 2000px; 102 | -webkit-transform-origin: center center; 103 | transform-origin: center center; 104 | } 105 | body.animating.in.dimmable, 106 | body.dimmed.dimmable { 107 | overflow: hidden; 108 | } 109 | body.dimmable > .dimmer { 110 | position: fixed; 111 | } 112 | 113 | /*-------------- 114 | Blurring 115 | ---------------*/ 116 | 117 | .blurring.dimmable > :not(.dimmer) { 118 | -webkit-filter: blur(0px) grayscale(0); 119 | filter: blur(0px) grayscale(0); 120 | -webkit-transition: 800ms filter ease; 121 | transition: 800ms filter ease; 122 | } 123 | .blurring.dimmed.dimmable > :not(.dimmer) { 124 | -webkit-filter: blur(5px) grayscale(0.7); 125 | filter: blur(5px) grayscale(0.7); 126 | } 127 | 128 | /* Dimmer Color */ 129 | .blurring.dimmable > .dimmer { 130 | background-color: rgba(0, 0, 0, 0.6); 131 | } 132 | .blurring.dimmable > .inverted.dimmer { 133 | background-color: rgba(255, 255, 255, 0.6); 134 | } 135 | 136 | /*-------------- 137 | Aligned 138 | ---------------*/ 139 | 140 | .ui.dimmer > .top.aligned.content > * { 141 | vertical-align: top; 142 | } 143 | .ui.dimmer > .bottom.aligned.content > * { 144 | vertical-align: bottom; 145 | } 146 | 147 | /*-------------- 148 | Inverted 149 | ---------------*/ 150 | 151 | .ui.inverted.dimmer { 152 | background-color: rgba(255, 255, 255, 0.85); 153 | } 154 | .ui.inverted.dimmer > .content > * { 155 | color: #FFFFFF; 156 | } 157 | 158 | /*-------------- 159 | Simple 160 | ---------------*/ 161 | 162 | 163 | /* Displays without javascript */ 164 | .ui.simple.dimmer { 165 | display: block; 166 | overflow: hidden; 167 | opacity: 1; 168 | width: 0%; 169 | height: 0%; 170 | z-index: -100; 171 | background-color: rgba(0, 0, 0, 0); 172 | } 173 | .dimmed.dimmable > .ui.simple.dimmer { 174 | overflow: visible; 175 | opacity: 1; 176 | width: 100%; 177 | height: 100%; 178 | background-color: rgba(0, 0, 0, 0.85); 179 | z-index: 1; 180 | } 181 | .ui.simple.inverted.dimmer { 182 | background-color: rgba(255, 255, 255, 0); 183 | } 184 | .dimmed.dimmable > .ui.simple.inverted.dimmer { 185 | background-color: rgba(255, 255, 255, 0.85); 186 | } 187 | 188 | 189 | /******************************* 190 | Theme Overrides 191 | *******************************/ 192 | 193 | 194 | 195 | /******************************* 196 | User Overrides 197 | *******************************/ 198 | 199 | -------------------------------------------------------------------------------- /src/semantic-ui/components/dimmer.min.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * # Semantic UI 2.2.10 - Dimmer 3 | * http://github.com/semantic-org/semantic-ui/ 4 | * 5 | * 6 | * Released under the MIT license 7 | * http://opensource.org/licenses/MIT 8 | * 9 | */.dimmable:not(.body){position:relative}.ui.dimmer{display:none;position:absolute;top:0!important;left:0!important;width:100%;height:100%;text-align:center;vertical-align:middle;background-color:rgba(0,0,0,.85);opacity:0;line-height:1;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-duration:.5s;animation-duration:.5s;-webkit-transition:background-color .5s linear;transition:background-color .5s linear;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;will-change:opacity;z-index:1000}.ui.dimmer>.content{width:100%;height:100%;display:table;-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text}.ui.dimmer>.content>*{display:table-cell;vertical-align:middle;color:#FFF}.ui.segment>.ui.dimmer{border-radius:inherit!important}.animating.dimmable:not(body),.dimmed.dimmable:not(body){overflow:hidden}.dimmed.dimmable>.ui.animating.dimmer,.dimmed.dimmable>.ui.visible.dimmer,.ui.active.dimmer{display:block;opacity:1}.ui.disabled.dimmer{width:0!important;height:0!important}.ui.page.dimmer{position:fixed;-webkit-transform-style:'';transform-style:'';-webkit-perspective:2000px;perspective:2000px;-webkit-transform-origin:center center;transform-origin:center center}body.animating.in.dimmable,body.dimmed.dimmable{overflow:hidden}body.dimmable>.dimmer{position:fixed}.blurring.dimmable>:not(.dimmer){-webkit-filter:blur(0) grayscale(0);filter:blur(0) grayscale(0);-webkit-transition:.8s filter ease;transition:.8s filter ease}.blurring.dimmed.dimmable>:not(.dimmer){-webkit-filter:blur(5px) grayscale(.7);filter:blur(5px) grayscale(.7)}.blurring.dimmable>.dimmer{background-color:rgba(0,0,0,.6)}.blurring.dimmable>.inverted.dimmer{background-color:rgba(255,255,255,.6)}.ui.dimmer>.top.aligned.content>*{vertical-align:top}.ui.dimmer>.bottom.aligned.content>*{vertical-align:bottom}.ui.inverted.dimmer{background-color:rgba(255,255,255,.85)}.ui.inverted.dimmer>.content>*{color:#FFF}.ui.simple.dimmer{display:block;overflow:hidden;opacity:1;width:0;height:0%;z-index:-100;background-color:rgba(0,0,0,0)}.dimmed.dimmable>.ui.simple.dimmer{overflow:visible;opacity:1;width:100%;height:100%;background-color:rgba(0,0,0,.85);z-index:1}.ui.simple.inverted.dimmer{background-color:rgba(255,255,255,0)}.dimmed.dimmable>.ui.simple.inverted.dimmer{background-color:rgba(255,255,255,.85)} -------------------------------------------------------------------------------- /src/semantic-ui/components/divider.min.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * # Semantic UI 2.2.10 - Divider 3 | * http://github.com/semantic-org/semantic-ui/ 4 | * 5 | * 6 | * Released under the MIT license 7 | * http://opensource.org/licenses/MIT 8 | * 9 | */.ui.divider{margin:1rem 0;line-height:1;height:0;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:rgba(0,0,0,.85);-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;font-size:1rem}.ui.divider:not(.vertical):not(.horizontal){border-top:1px solid rgba(34,36,38,.15);border-bottom:1px solid rgba(255,255,255,.1)}.ui.grid>.column+.divider,.ui.grid>.row>.column+.divider{left:auto}.ui.horizontal.divider{display:table;white-space:nowrap;height:auto;margin:'';line-height:1;text-align:center}.ui.horizontal.divider:after,.ui.horizontal.divider:before{content:'';display:table-cell;position:relative;top:50%;width:50%;background-repeat:no-repeat;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABaAAAAACCAYAAACuTHuKAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyFpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNS1jMDE0IDc5LjE1MTQ4MSwgMjAxMy8wMy8xMy0xMjowOToxNSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIChXaW5kb3dzKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo1OThBRDY4OUNDMTYxMUU0OUE3NUVGOEJDMzMzMjE2NyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo1OThBRDY4QUNDMTYxMUU0OUE3NUVGOEJDMzMzMjE2NyI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjU5OEFENjg3Q0MxNjExRTQ5QTc1RUY4QkMzMzMyMTY3IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjU5OEFENjg4Q0MxNjExRTQ5QTc1RUY4QkMzMzMyMTY3Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+VU513gAAADVJREFUeNrs0DENACAQBDBIWLGBJQby/mUcJn5sJXQmOQMAAAAAAJqt+2prAAAAAACg2xdgANk6BEVuJgyMAAAAAElFTkSuQmCC)}.ui.horizontal.divider:before{background-position:right 1em top 50%}.ui.horizontal.divider:after{background-position:left 1em top 50%}.ui.vertical.divider{position:absolute;z-index:2;top:50%;left:50%;margin:0;padding:0;width:auto;height:50%;line-height:0;text-align:center;-webkit-transform:translateX(-50%);transform:translateX(-50%)}.ui.vertical.divider:after,.ui.vertical.divider:before{position:absolute;left:50%;content:'';z-index:3;border-left:1px solid rgba(34,36,38,.15);border-right:1px solid rgba(255,255,255,.1);width:0;height:calc(100% - 1rem)}.ui.vertical.divider:before{top:-100%}.ui.vertical.divider:after{top:auto;bottom:0}@media only screen and (max-width:767px){.ui.grid .stackable.row .ui.vertical.divider,.ui.stackable.grid .ui.vertical.divider{display:table;white-space:nowrap;height:auto;margin:'';overflow:hidden;line-height:1;text-align:center;position:static;top:0;left:0;-webkit-transform:none;transform:none}.ui.grid .stackable.row .ui.vertical.divider:after,.ui.grid .stackable.row .ui.vertical.divider:before,.ui.stackable.grid .ui.vertical.divider:after,.ui.stackable.grid .ui.vertical.divider:before{left:0;border-left:none;border-right:none;content:'';display:table-cell;position:relative;top:50%;width:50%;background-repeat:no-repeat;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABaAAAAACCAYAAACuTHuKAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyFpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNS1jMDE0IDc5LjE1MTQ4MSwgMjAxMy8wMy8xMy0xMjowOToxNSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIChXaW5kb3dzKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo1OThBRDY4OUNDMTYxMUU0OUE3NUVGOEJDMzMzMjE2NyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo1OThBRDY4QUNDMTYxMUU0OUE3NUVGOEJDMzMzMjE2NyI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjU5OEFENjg3Q0MxNjExRTQ5QTc1RUY4QkMzMzMyMTY3IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjU5OEFENjg4Q0MxNjExRTQ5QTc1RUY4QkMzMzMyMTY3Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+VU513gAAADVJREFUeNrs0DENACAQBDBIWLGBJQby/mUcJn5sJXQmOQMAAAAAAJqt+2prAAAAAACg2xdgANk6BEVuJgyMAAAAAElFTkSuQmCC)}.ui.grid .stackable.row .ui.vertical.divider:before,.ui.stackable.grid .ui.vertical.divider:before{background-position:right 1em top 50%}.ui.grid .stackable.row .ui.vertical.divider:after,.ui.stackable.grid .ui.vertical.divider:after{background-position:left 1em top 50%}}.ui.divider>.icon{margin:0;font-size:1rem;height:1em;vertical-align:middle}.ui.hidden.divider{border-color:transparent!important}.ui.hidden.divider:after,.ui.hidden.divider:before{display:none}.ui.divider.inverted,.ui.horizontal.inverted.divider,.ui.vertical.inverted.divider{color:#FFF}.ui.divider.inverted,.ui.divider.inverted:after,.ui.divider.inverted:before{border-top-color:rgba(34,36,38,.15)!important;border-left-color:rgba(34,36,38,.15)!important;border-bottom-color:rgba(255,255,255,.15)!important;border-right-color:rgba(255,255,255,.15)!important}.ui.fitted.divider{margin:0}.ui.clearing.divider{clear:both}.ui.section.divider{margin-top:2rem;margin-bottom:2rem} -------------------------------------------------------------------------------- /src/semantic-ui/components/embed.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * # Semantic UI 2.2.10 - Video 3 | * http://github.com/semantic-org/semantic-ui/ 4 | * 5 | * 6 | * Released under the MIT license 7 | * http://opensource.org/licenses/MIT 8 | * 9 | */ 10 | 11 | 12 | /******************************* 13 | Types 14 | *******************************/ 15 | 16 | .ui.embed { 17 | position: relative; 18 | max-width: 100%; 19 | height: 0px; 20 | overflow: hidden; 21 | background: #DCDDDE; 22 | padding-bottom: 56.25%; 23 | } 24 | 25 | /*----------------- 26 | Embedded Content 27 | ------------------*/ 28 | 29 | .ui.embed iframe, 30 | .ui.embed embed, 31 | .ui.embed object { 32 | position: absolute; 33 | border: none; 34 | width: 100%; 35 | height: 100%; 36 | top: 0px; 37 | left: 0px; 38 | margin: 0em; 39 | padding: 0em; 40 | } 41 | 42 | /*----------------- 43 | Embed 44 | ------------------*/ 45 | 46 | .ui.embed > .embed { 47 | display: none; 48 | } 49 | 50 | /*-------------- 51 | Placeholder 52 | ---------------*/ 53 | 54 | .ui.embed > .placeholder { 55 | position: absolute; 56 | cursor: pointer; 57 | top: 0px; 58 | left: 0px; 59 | display: block; 60 | width: 100%; 61 | height: 100%; 62 | background-color: radial-gradient(transparent 45%, rgba(0, 0, 0, 0.3)); 63 | } 64 | 65 | /*-------------- 66 | Icon 67 | ---------------*/ 68 | 69 | .ui.embed > .icon { 70 | cursor: pointer; 71 | position: absolute; 72 | top: 0px; 73 | left: 0px; 74 | width: 100%; 75 | height: 100%; 76 | z-index: 2; 77 | } 78 | .ui.embed > .icon:after { 79 | position: absolute; 80 | top: 0%; 81 | left: 0%; 82 | width: 100%; 83 | height: 100%; 84 | z-index: 3; 85 | content: ''; 86 | background: -webkit-radial-gradient(transparent 45%, rgba(0, 0, 0, 0.3)); 87 | background: radial-gradient(transparent 45%, rgba(0, 0, 0, 0.3)); 88 | opacity: 0.5; 89 | -webkit-transition: opacity 0.5s ease; 90 | transition: opacity 0.5s ease; 91 | } 92 | .ui.embed > .icon:before { 93 | position: absolute; 94 | top: 50%; 95 | left: 50%; 96 | z-index: 4; 97 | -webkit-transform: translateX(-50%) translateY(-50%); 98 | transform: translateX(-50%) translateY(-50%); 99 | color: #FFFFFF; 100 | font-size: 6rem; 101 | text-shadow: 0px 2px 10px rgba(34, 36, 38, 0.2); 102 | -webkit-transition: opacity 0.5s ease, color 0.5s ease; 103 | transition: opacity 0.5s ease, color 0.5s ease; 104 | z-index: 10; 105 | } 106 | 107 | 108 | /******************************* 109 | States 110 | *******************************/ 111 | 112 | 113 | /*-------------- 114 | Hover 115 | ---------------*/ 116 | 117 | .ui.embed .icon:hover:after { 118 | background: -webkit-radial-gradient(transparent 45%, rgba(0, 0, 0, 0.3)); 119 | background: radial-gradient(transparent 45%, rgba(0, 0, 0, 0.3)); 120 | opacity: 1; 121 | } 122 | .ui.embed .icon:hover:before { 123 | color: #FFFFFF; 124 | } 125 | 126 | /*-------------- 127 | Active 128 | ---------------*/ 129 | 130 | .ui.active.embed > .icon, 131 | .ui.active.embed > .placeholder { 132 | display: none; 133 | } 134 | .ui.active.embed > .embed { 135 | display: block; 136 | } 137 | 138 | 139 | /******************************* 140 | Video Overrides 141 | *******************************/ 142 | 143 | 144 | 145 | /******************************* 146 | Site Overrides 147 | *******************************/ 148 | 149 | 150 | 151 | /******************************* 152 | Variations 153 | *******************************/ 154 | 155 | .ui.square.embed { 156 | padding-bottom: 100%; 157 | } 158 | .ui[class*="4:3"].embed { 159 | padding-bottom: 75%; 160 | } 161 | .ui[class*="16:9"].embed { 162 | padding-bottom: 56.25%; 163 | } 164 | .ui[class*="21:9"].embed { 165 | padding-bottom: 42.85714286%; 166 | } 167 | -------------------------------------------------------------------------------- /src/semantic-ui/components/embed.min.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * # Semantic UI 2.2.10 - Video 3 | * http://github.com/semantic-org/semantic-ui/ 4 | * 5 | * 6 | * Released under the MIT license 7 | * http://opensource.org/licenses/MIT 8 | * 9 | */.ui.embed{position:relative;max-width:100%;height:0;overflow:hidden;background:#DCDDDE;padding-bottom:56.25%}.ui.embed embed,.ui.embed iframe,.ui.embed object{position:absolute;border:none;width:100%;height:100%;top:0;left:0;margin:0;padding:0}.ui.embed>.embed{display:none}.ui.embed>.placeholder{position:absolute;cursor:pointer;top:0;left:0;display:block;width:100%;height:100%;background-color:radial-gradient(transparent 45%,rgba(0,0,0,.3))}.ui.embed>.icon{cursor:pointer;position:absolute;top:0;left:0;width:100%;height:100%;z-index:2}.ui.embed>.icon:after{position:absolute;top:0;left:0;width:100%;height:100%;z-index:3;content:'';background:-webkit-radial-gradient(transparent 45%,rgba(0,0,0,.3));background:radial-gradient(transparent 45%,rgba(0,0,0,.3));opacity:.5;-webkit-transition:opacity .5s ease;transition:opacity .5s ease}.ui.embed>.icon:before{position:absolute;top:50%;left:50%;-webkit-transform:translateX(-50%) translateY(-50%);transform:translateX(-50%) translateY(-50%);color:#FFF;font-size:6rem;text-shadow:0 2px 10px rgba(34,36,38,.2);-webkit-transition:opacity .5s ease,color .5s ease;transition:opacity .5s ease,color .5s ease;z-index:10}.ui.embed .icon:hover:after{background:-webkit-radial-gradient(transparent 45%,rgba(0,0,0,.3));background:radial-gradient(transparent 45%,rgba(0,0,0,.3));opacity:1}.ui.embed .icon:hover:before{color:#FFF}.ui.active.embed>.icon,.ui.active.embed>.placeholder{display:none}.ui.active.embed>.embed{display:block}.ui.square.embed{padding-bottom:100%}.ui[class*="4:3"].embed{padding-bottom:75%}.ui[class*="16:9"].embed{padding-bottom:56.25%}.ui[class*="21:9"].embed{padding-bottom:42.85714286%} -------------------------------------------------------------------------------- /src/semantic-ui/components/feed.min.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * # Semantic UI 2.2.10 - Feed 3 | * http://github.com/semantic-org/semantic-ui/ 4 | * 5 | * 6 | * Released under the MIT license 7 | * http://opensource.org/licenses/MIT 8 | * 9 | */.ui.feed{margin:1em 0}.ui.feed:first-child{margin-top:0}.ui.feed:last-child{margin-bottom:0}.ui.feed>.event{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;width:100%;padding:.21428571rem 0;margin:0;background:0 0;border-top:none}.ui.feed>.event:first-child{border-top:0;padding-top:0}.ui.feed>.event:last-child{padding-bottom:0}.ui.feed>.event>.label{display:block;-webkit-box-flex:0;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;width:2.5em;height:auto;-webkit-align-self:stretch;-ms-flex-item-align:stretch;align-self:stretch;text-align:left}.ui.feed>.event>.label .icon{opacity:1;font-size:1.5em;width:100%;padding:.25em;background:0 0;border:none;border-radius:none;color:rgba(0,0,0,.6)}.ui.feed>.event>.label img{width:100%;height:auto;border-radius:500rem}.ui.feed>.event>.label+.content{margin:.5em 0 .35714286em 1.14285714em}.ui.feed>.event>.content{display:block;-webkit-box-flex:1;-webkit-flex:1 1 auto;-ms-flex:1 1 auto;flex:1 1 auto;-webkit-align-self:stretch;-ms-flex-item-align:stretch;align-self:stretch;text-align:left;word-wrap:break-word}.ui.feed>.event:last-child>.content{padding-bottom:0}.ui.feed>.event>.content a{cursor:pointer}.ui.feed>.event>.content .date{margin:-.5rem 0 0;padding:0;font-weight:400;font-size:1em;font-style:normal;color:rgba(0,0,0,.4)}.ui.feed>.event>.content .summary{margin:0;font-size:1em;font-weight:700;color:rgba(0,0,0,.87)}.ui.feed>.event>.content .summary img{display:inline-block;width:auto;height:10em;margin:-.25em .25em 0 0;border-radius:.25em;vertical-align:middle}.ui.feed>.event>.content .user{display:inline-block;font-weight:700;margin-right:0;vertical-align:baseline}.ui.feed>.event>.content .user img{margin:-.25em .25em 0 0;width:auto;height:10em;vertical-align:middle}.ui.feed>.event>.content .summary>.date{display:inline-block;float:none;font-weight:400;font-size:.85714286em;font-style:normal;margin:0 0 0 .5em;padding:0;color:rgba(0,0,0,.4)}.ui.feed>.event>.content .extra{margin:.5em 0 0;background:0 0;padding:0;color:rgba(0,0,0,.87)}.ui.feed>.event>.content .extra.images img{display:inline-block;margin:0 .25em 0 0;width:6em}.ui.feed>.event>.content .extra.text{padding:0;border-left:none;font-size:1em;max-width:500px;line-height:1.4285em}.ui.feed>.event>.content .meta{display:inline-block;font-size:.85714286em;margin:.5em 0 0;background:0 0;border:none;border-radius:0;box-shadow:none;padding:0;color:rgba(0,0,0,.6)}.ui.feed>.event>.content .meta>*{position:relative;margin-left:.75em}.ui.feed>.event>.content .meta>:after{content:'';color:rgba(0,0,0,.2);top:0;left:-1em;opacity:1;position:absolute;vertical-align:top}.ui.feed>.event>.content .meta .like{color:'';-webkit-transition:.2s color ease;transition:.2s color ease}.ui.feed>.event>.content .meta .like:hover .icon{color:#FF2733}.ui.feed>.event>.content .meta .active.like .icon{color:#EF404A}.ui.feed>.event>.content .meta>:first-child{margin-left:0}.ui.feed>.event>.content .meta>:first-child::after{display:none}.ui.feed>.event>.content .meta a,.ui.feed>.event>.content .meta>.icon{cursor:pointer;opacity:1;color:rgba(0,0,0,.5);-webkit-transition:color .1s ease;transition:color .1s ease}.ui.feed>.event>.content .meta a:hover,.ui.feed>.event>.content .meta a:hover .icon,.ui.feed>.event>.content .meta>.icon:hover{color:rgba(0,0,0,.95)}.ui.small.feed{font-size:.92857143rem}.ui.feed{font-size:1rem}.ui.large.feed{font-size:1.14285714rem} -------------------------------------------------------------------------------- /src/semantic-ui/components/image.min.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * # Semantic UI 2.2.10 - Image 3 | * http://github.com/semantic-org/semantic-ui/ 4 | * 5 | * 6 | * Released under the MIT license 7 | * http://opensource.org/licenses/MIT 8 | * 9 | */.ui.image{position:relative;display:inline-block;vertical-align:middle;max-width:100%;background-color:transparent}img.ui.image{display:block}.ui.image img,.ui.image svg{display:block;max-width:100%;height:auto}.ui.hidden.image,.ui.hidden.images{display:none}.ui.hidden.transition.image,.ui.hidden.transition.images{display:block;visibility:hidden}.ui.disabled.image,.ui.disabled.images{cursor:default;opacity:.45}.ui.inline.image,.ui.inline.image img,.ui.inline.image svg{display:inline-block}.ui.top.aligned.image,.ui.top.aligned.image img,.ui.top.aligned.image svg,.ui.top.aligned.images .image{display:inline-block;vertical-align:top}.ui.middle.aligned.image,.ui.middle.aligned.image img,.ui.middle.aligned.image svg,.ui.middle.aligned.images .image{display:inline-block;vertical-align:middle}.ui.bottom.aligned.image,.ui.bottom.aligned.image img,.ui.bottom.aligned.image svg,.ui.bottom.aligned.images .image{display:inline-block;vertical-align:bottom}.ui.rounded.image,.ui.rounded.image>*,.ui.rounded.images .image,.ui.rounded.images .image>*{border-radius:.3125em}.ui.bordered.image img,.ui.bordered.image svg,.ui.bordered.images .image,.ui.bordered.images img,.ui.bordered.images svg,img.ui.bordered.image{border:1px solid rgba(0,0,0,.1)}.ui.circular.image,.ui.circular.images{overflow:hidden}.ui.circular.image,.ui.circular.image>*,.ui.circular.images .image,.ui.circular.images .image>*{border-radius:500rem}.ui.fluid.image,.ui.fluid.image img,.ui.fluid.image svg,.ui.fluid.images,.ui.fluid.images img,.ui.fluid.images svg{display:block;width:100%;height:auto}.ui.avatar.image,.ui.avatar.image img,.ui.avatar.image svg,.ui.avatar.images .image,.ui.avatar.images img,.ui.avatar.images svg{margin-right:.25em;display:inline-block;width:2em;height:2em;border-radius:500rem}.ui.spaced.image{display:inline-block!important;margin-left:.5em;margin-right:.5em}.ui[class*="left spaced"].image{margin-left:.5em;margin-right:0}.ui[class*="right spaced"].image{margin-left:0;margin-right:.5em}.ui.floated.image,.ui.floated.images{float:left;margin-right:1em;margin-bottom:1em}.ui.right.floated.image,.ui.right.floated.images{float:right;margin-right:0;margin-bottom:1em;margin-left:1em}.ui.floated.image:last-child,.ui.floated.images:last-child{margin-bottom:0}.ui.centered.image,.ui.centered.images{margin-left:auto;margin-right:auto}.ui.mini.image,.ui.mini.images .image,.ui.mini.images img,.ui.mini.images svg{width:35px;height:auto;font-size:.78571429rem}.ui.tiny.image,.ui.tiny.images .image,.ui.tiny.images img,.ui.tiny.images svg{width:80px;height:auto;font-size:.85714286rem}.ui.small.image,.ui.small.images .image,.ui.small.images img,.ui.small.images svg{width:150px;height:auto;font-size:.92857143rem}.ui.medium.image,.ui.medium.images .image,.ui.medium.images img,.ui.medium.images svg{width:300px;height:auto;font-size:1rem}.ui.large.image,.ui.large.images .image,.ui.large.images img,.ui.large.images svg{width:450px;height:auto;font-size:1.14285714rem}.ui.big.image,.ui.big.images .image,.ui.big.images img,.ui.big.images svg{width:600px;height:auto;font-size:1.28571429rem}.ui.huge.image,.ui.huge.images .image,.ui.huge.images img,.ui.huge.images svg{width:800px;height:auto;font-size:1.42857143rem}.ui.massive.image,.ui.massive.images .image,.ui.massive.images img,.ui.massive.images svg{width:960px;height:auto;font-size:1.71428571rem}.ui.images{font-size:0;margin:0 -.25rem}.ui.images .image,.ui.images img,.ui.images svg{display:inline-block;margin:0 .25rem .5rem} -------------------------------------------------------------------------------- /src/semantic-ui/components/loader.min.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * # Semantic UI 2.2.10 - Loader 3 | * http://github.com/semantic-org/semantic-ui/ 4 | * 5 | * 6 | * Released under the MIT license 7 | * http://opensource.org/licenses/MIT 8 | * 9 | */.ui.loader{display:none;position:absolute;top:50%;left:50%;margin:0;text-align:center;z-index:1000;-webkit-transform:translateX(-50%) translateY(-50%);transform:translateX(-50%) translateY(-50%)}.ui.loader:before{position:absolute;content:'';top:0;left:50%;border-radius:500rem;border:.2em solid rgba(0,0,0,.1)}.ui.loader:after{position:absolute;content:'';top:0;left:50%;-webkit-animation:loader .6s linear;animation:loader .6s linear;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite;border-radius:500rem;border-color:#767676 transparent transparent;border-style:solid;border-width:.2em;box-shadow:0 0 0 1px transparent}@-webkit-keyframes loader{from{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes loader{from{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.ui.mini.loader:after,.ui.mini.loader:before{width:1rem;height:1rem;margin:0 0 0 -.5rem}.ui.tiny.loader:after,.ui.tiny.loader:before{width:1.14285714rem;height:1.14285714rem;margin:0 0 0 -.57142857rem}.ui.small.loader:after,.ui.small.loader:before{width:1.71428571rem;height:1.71428571rem;margin:0 0 0 -.85714286rem}.ui.loader:after,.ui.loader:before{width:2.28571429rem;height:2.28571429rem;margin:0 0 0 -1.14285714rem}.ui.large.loader:after,.ui.large.loader:before{width:3.42857143rem;height:3.42857143rem;margin:0 0 0 -1.71428571rem}.ui.big.loader:after,.ui.big.loader:before{width:3.71428571rem;height:3.71428571rem;margin:0 0 0 -1.85714286rem}.ui.huge.loader:after,.ui.huge.loader:before{width:4.14285714rem;height:4.14285714rem;margin:0 0 0 -2.07142857rem}.ui.massive.loader:after,.ui.massive.loader:before{width:4.57142857rem;height:4.57142857rem;margin:0 0 0 -2.28571429rem}.ui.dimmer .loader{display:block}.ui.dimmer .ui.loader{color:rgba(255,255,255,.9)}.ui.dimmer .ui.loader:before{border-color:rgba(255,255,255,.15)}.ui.dimmer .ui.loader:after{border-color:#FFF transparent transparent}.ui.inverted.dimmer .ui.loader{color:rgba(0,0,0,.87)}.ui.inverted.dimmer .ui.loader:before{border-color:rgba(0,0,0,.1)}.ui.inverted.dimmer .ui.loader:after{border-color:#767676 transparent transparent}.ui.text.loader{width:auto!important;height:auto!important;text-align:center;font-style:normal}.ui.indeterminate.loader:after{-webkit-animation-direction:reverse;animation-direction:reverse;-webkit-animation-duration:1.2s;animation-duration:1.2s}.ui.loader.active,.ui.loader.visible{display:block}.ui.loader.disabled,.ui.loader.hidden{display:none}.ui.inverted.dimmer .ui.mini.loader,.ui.mini.loader{width:1rem;height:1rem;font-size:.78571429em}.ui.inverted.dimmer .ui.tiny.loader,.ui.tiny.loader{width:1.14285714rem;height:1.14285714rem;font-size:.85714286em}.ui.inverted.dimmer .ui.small.loader,.ui.small.loader{width:1.71428571rem;height:1.71428571rem;font-size:.92857143em}.ui.inverted.dimmer .ui.loader,.ui.loader{width:2.28571429rem;height:2.28571429rem;font-size:1em}.ui.inverted.dimmer .ui.large.loader,.ui.large.loader{width:3.42857143rem;height:3.42857143rem;font-size:1.14285714em}.ui.big.loader,.ui.inverted.dimmer .ui.big.loader{width:3.71428571rem;height:3.71428571rem;font-size:1.28571429em}.ui.huge.loader,.ui.inverted.dimmer .ui.huge.loader{width:4.14285714rem;height:4.14285714rem;font-size:1.42857143em}.ui.inverted.dimmer .ui.massive.loader,.ui.massive.loader{width:4.57142857rem;height:4.57142857rem;font-size:1.71428571em}.ui.mini.text.loader{min-width:1rem;padding-top:1.78571429rem}.ui.tiny.text.loader{min-width:1.14285714rem;padding-top:1.92857143rem}.ui.small.text.loader{min-width:1.71428571rem;padding-top:2.5rem}.ui.text.loader{min-width:2.28571429rem;padding-top:3.07142857rem}.ui.large.text.loader{min-width:3.42857143rem;padding-top:4.21428571rem}.ui.big.text.loader{min-width:3.71428571rem;padding-top:4.5rem}.ui.huge.text.loader{min-width:4.14285714rem;padding-top:4.92857143rem}.ui.massive.text.loader{min-width:4.57142857rem;padding-top:5.35714286rem}.ui.inverted.loader{color:rgba(255,255,255,.9)}.ui.inverted.loader:before{border-color:rgba(255,255,255,.15)}.ui.inverted.loader:after{border-top-color:#FFF}.ui.inline.loader{position:relative;vertical-align:middle;margin:0;left:0;top:0;-webkit-transform:none;transform:none}.ui.inline.loader.active,.ui.inline.loader.visible{display:inline-block}.ui.centered.inline.loader.active,.ui.centered.inline.loader.visible{display:block;margin-left:auto;margin-right:auto} -------------------------------------------------------------------------------- /src/semantic-ui/components/nag.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * # Semantic UI 2.2.10 - Nag 3 | * http://github.com/semantic-org/semantic-ui/ 4 | * 5 | * 6 | * Released under the MIT license 7 | * http://opensource.org/licenses/MIT 8 | * 9 | */ 10 | 11 | 12 | /******************************* 13 | Nag 14 | *******************************/ 15 | 16 | .ui.nag { 17 | display: none; 18 | opacity: 0.95; 19 | position: relative; 20 | top: 0em; 21 | left: 0px; 22 | z-index: 999; 23 | min-height: 0em; 24 | width: 100%; 25 | margin: 0em; 26 | padding: 0.75em 1em; 27 | background: #555555; 28 | box-shadow: 0px 1px 2px 0px rgba(0, 0, 0, 0.2); 29 | font-size: 1rem; 30 | text-align: center; 31 | color: rgba(0, 0, 0, 0.87); 32 | border-radius: 0em 0em 0.28571429rem 0.28571429rem; 33 | -webkit-transition: 0.2s background ease; 34 | transition: 0.2s background ease; 35 | } 36 | a.ui.nag { 37 | cursor: pointer; 38 | } 39 | .ui.nag > .title { 40 | display: inline-block; 41 | margin: 0em 0.5em; 42 | color: #FFFFFF; 43 | } 44 | .ui.nag > .close.icon { 45 | cursor: pointer; 46 | opacity: 0.4; 47 | position: absolute; 48 | top: 50%; 49 | right: 1em; 50 | font-size: 1em; 51 | margin: -0.5em 0em 0em; 52 | color: #FFFFFF; 53 | -webkit-transition: opacity 0.2s ease; 54 | transition: opacity 0.2s ease; 55 | } 56 | 57 | 58 | /******************************* 59 | States 60 | *******************************/ 61 | 62 | 63 | /* Hover */ 64 | .ui.nag:hover { 65 | background: #555555; 66 | opacity: 1; 67 | } 68 | .ui.nag .close:hover { 69 | opacity: 1; 70 | } 71 | 72 | 73 | /******************************* 74 | Variations 75 | *******************************/ 76 | 77 | 78 | /*-------------- 79 | Static 80 | ---------------*/ 81 | 82 | .ui.overlay.nag { 83 | position: absolute; 84 | display: block; 85 | } 86 | 87 | /*-------------- 88 | Fixed 89 | ---------------*/ 90 | 91 | .ui.fixed.nag { 92 | position: fixed; 93 | } 94 | 95 | /*-------------- 96 | Bottom 97 | ---------------*/ 98 | 99 | .ui.bottom.nags, 100 | .ui.bottom.nag { 101 | border-radius: 0.28571429rem 0.28571429rem 0em 0em; 102 | top: auto; 103 | bottom: 0em; 104 | } 105 | 106 | /*-------------- 107 | White 108 | ---------------*/ 109 | 110 | .ui.inverted.nags .nag, 111 | .ui.inverted.nag { 112 | background-color: #F3F4F5; 113 | color: rgba(0, 0, 0, 0.85); 114 | } 115 | .ui.inverted.nags .nag .close, 116 | .ui.inverted.nags .nag .title, 117 | .ui.inverted.nag .close, 118 | .ui.inverted.nag .title { 119 | color: rgba(0, 0, 0, 0.4); 120 | } 121 | 122 | 123 | /******************************* 124 | Groups 125 | *******************************/ 126 | 127 | .ui.nags .nag { 128 | border-radius: 0em !important; 129 | } 130 | .ui.nags .nag:last-child { 131 | border-radius: 0em 0em 0.28571429rem 0.28571429rem; 132 | } 133 | .ui.bottom.nags .nag:last-child { 134 | border-radius: 0.28571429rem 0.28571429rem 0em 0em; 135 | } 136 | 137 | 138 | /******************************* 139 | Theme Overrides 140 | *******************************/ 141 | 142 | 143 | 144 | /******************************* 145 | User Overrides 146 | *******************************/ 147 | 148 | -------------------------------------------------------------------------------- /src/semantic-ui/components/nag.min.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * # Semantic UI 2.2.10 - Nag 3 | * http://github.com/semantic-org/semantic-ui/ 4 | * 5 | * 6 | * Released under the MIT license 7 | * http://opensource.org/licenses/MIT 8 | * 9 | */.ui.nag{display:none;opacity:.95;position:relative;top:0;left:0;z-index:999;min-height:0;width:100%;margin:0;padding:.75em 1em;background:#555;box-shadow:0 1px 2px 0 rgba(0,0,0,.2);font-size:1rem;text-align:center;color:rgba(0,0,0,.87);border-radius:0 0 .28571429rem .28571429rem;-webkit-transition:.2s background ease;transition:.2s background ease}a.ui.nag{cursor:pointer}.ui.nag>.title{display:inline-block;margin:0 .5em;color:#FFF}.ui.nag>.close.icon{cursor:pointer;opacity:.4;position:absolute;top:50%;right:1em;font-size:1em;margin:-.5em 0 0;color:#FFF;-webkit-transition:opacity .2s ease;transition:opacity .2s ease}.ui.nag:hover{background:#555;opacity:1}.ui.nag .close:hover{opacity:1}.ui.overlay.nag{position:absolute;display:block}.ui.fixed.nag{position:fixed}.ui.bottom.nag,.ui.bottom.nags{border-radius:.28571429rem .28571429rem 0 0;top:auto;bottom:0}.ui.inverted.nag,.ui.inverted.nags .nag{background-color:#F3F4F5;color:rgba(0,0,0,.85)}.ui.inverted.nag .close,.ui.inverted.nag .title,.ui.inverted.nags .nag .close,.ui.inverted.nags .nag .title{color:rgba(0,0,0,.4)}.ui.nags .nag{border-radius:0!important}.ui.nags .nag:last-child{border-radius:0 0 .28571429rem .28571429rem}.ui.bottom.nags .nag:last-child{border-radius:.28571429rem .28571429rem 0 0} -------------------------------------------------------------------------------- /src/semantic-ui/components/rail.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * # Semantic UI 2.2.10 - Rail 3 | * http://github.com/semantic-org/semantic-ui/ 4 | * 5 | * 6 | * Released under the MIT license 7 | * http://opensource.org/licenses/MIT 8 | * 9 | */ 10 | 11 | 12 | /******************************* 13 | Rails 14 | *******************************/ 15 | 16 | .ui.rail { 17 | position: absolute; 18 | top: 0%; 19 | width: 300px; 20 | height: 100%; 21 | } 22 | .ui.left.rail { 23 | left: auto; 24 | right: 100%; 25 | padding: 0em 2rem 0em 0em; 26 | margin: 0em 2rem 0em 0em; 27 | } 28 | .ui.right.rail { 29 | left: 100%; 30 | right: auto; 31 | padding: 0em 0em 0em 2rem; 32 | margin: 0em 0em 0em 2rem; 33 | } 34 | 35 | 36 | /******************************* 37 | Variations 38 | *******************************/ 39 | 40 | 41 | /*-------------- 42 | Internal 43 | ---------------*/ 44 | 45 | .ui.left.internal.rail { 46 | left: 0%; 47 | right: auto; 48 | padding: 0em 0em 0em 2rem; 49 | margin: 0em 0em 0em 2rem; 50 | } 51 | .ui.right.internal.rail { 52 | left: auto; 53 | right: 0%; 54 | padding: 0em 2rem 0em 0em; 55 | margin: 0em 2rem 0em 0em; 56 | } 57 | 58 | /*-------------- 59 | Dividing 60 | ---------------*/ 61 | 62 | .ui.dividing.rail { 63 | width: 302.5px; 64 | } 65 | .ui.left.dividing.rail { 66 | padding: 0em 2.5rem 0em 0em; 67 | margin: 0em 2.5rem 0em 0em; 68 | border-right: 1px solid rgba(34, 36, 38, 0.15); 69 | } 70 | .ui.right.dividing.rail { 71 | border-left: 1px solid rgba(34, 36, 38, 0.15); 72 | padding: 0em 0em 0em 2.5rem; 73 | margin: 0em 0em 0em 2.5rem; 74 | } 75 | 76 | /*-------------- 77 | Distance 78 | ---------------*/ 79 | 80 | .ui.close.rail { 81 | width: calc( 300px + 1em ); 82 | } 83 | .ui.close.left.rail { 84 | padding: 0em 1em 0em 0em; 85 | margin: 0em 1em 0em 0em; 86 | } 87 | .ui.close.right.rail { 88 | padding: 0em 0em 0em 1em; 89 | margin: 0em 0em 0em 1em; 90 | } 91 | .ui.very.close.rail { 92 | width: calc( 300px + 0.5em ); 93 | } 94 | .ui.very.close.left.rail { 95 | padding: 0em 0.5em 0em 0em; 96 | margin: 0em 0.5em 0em 0em; 97 | } 98 | .ui.very.close.right.rail { 99 | padding: 0em 0em 0em 0.5em; 100 | margin: 0em 0em 0em 0.5em; 101 | } 102 | 103 | /*-------------- 104 | Attached 105 | ---------------*/ 106 | 107 | .ui.attached.left.rail, 108 | .ui.attached.right.rail { 109 | padding: 0em; 110 | margin: 0em; 111 | } 112 | 113 | /*-------------- 114 | Sizing 115 | ---------------*/ 116 | 117 | .ui.mini.rail { 118 | font-size: 0.78571429rem; 119 | } 120 | .ui.tiny.rail { 121 | font-size: 0.85714286rem; 122 | } 123 | .ui.small.rail { 124 | font-size: 0.92857143rem; 125 | } 126 | .ui.rail { 127 | font-size: 1rem; 128 | } 129 | .ui.large.rail { 130 | font-size: 1.14285714rem; 131 | } 132 | .ui.big.rail { 133 | font-size: 1.28571429rem; 134 | } 135 | .ui.huge.rail { 136 | font-size: 1.42857143rem; 137 | } 138 | .ui.massive.rail { 139 | font-size: 1.71428571rem; 140 | } 141 | 142 | 143 | /******************************* 144 | Theme Overrides 145 | *******************************/ 146 | 147 | 148 | 149 | /******************************* 150 | Site Overrides 151 | *******************************/ 152 | 153 | -------------------------------------------------------------------------------- /src/semantic-ui/components/rail.min.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * # Semantic UI 2.2.10 - Rail 3 | * http://github.com/semantic-org/semantic-ui/ 4 | * 5 | * 6 | * Released under the MIT license 7 | * http://opensource.org/licenses/MIT 8 | * 9 | */.ui.rail{position:absolute;top:0;width:300px;height:100%}.ui.left.rail{left:auto;right:100%;padding:0 2rem 0 0;margin:0 2rem 0 0}.ui.right.rail{left:100%;right:auto;padding:0 0 0 2rem;margin:0 0 0 2rem}.ui.left.internal.rail{left:0;right:auto;padding:0 0 0 2rem;margin:0 0 0 2rem}.ui.right.internal.rail{left:auto;right:0;padding:0 2rem 0 0;margin:0 2rem 0 0}.ui.dividing.rail{width:302.5px}.ui.left.dividing.rail{padding:0 2.5rem 0 0;margin:0 2.5rem 0 0;border-right:1px solid rgba(34,36,38,.15)}.ui.right.dividing.rail{border-left:1px solid rgba(34,36,38,.15);padding:0 0 0 2.5rem;margin:0 0 0 2.5rem}.ui.close.rail{width:calc(300px + 1em)}.ui.close.left.rail{padding:0 1em 0 0;margin:0 1em 0 0}.ui.close.right.rail{padding:0 0 0 1em;margin:0 0 0 1em}.ui.very.close.rail{width:calc(300px + .5em)}.ui.very.close.left.rail{padding:0 .5em 0 0;margin:0 .5em 0 0}.ui.very.close.right.rail{padding:0 0 0 .5em;margin:0 0 0 .5em}.ui.attached.left.rail,.ui.attached.right.rail{padding:0;margin:0}.ui.mini.rail{font-size:.78571429rem}.ui.tiny.rail{font-size:.85714286rem}.ui.small.rail{font-size:.92857143rem}.ui.rail{font-size:1rem}.ui.large.rail{font-size:1.14285714rem}.ui.big.rail{font-size:1.28571429rem}.ui.huge.rail{font-size:1.42857143rem}.ui.massive.rail{font-size:1.71428571rem} -------------------------------------------------------------------------------- /src/semantic-ui/components/rating.min.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * # Semantic UI 2.2.10 - Rating 3 | * http://github.com/semantic-org/semantic-ui/ 4 | * 5 | * 6 | * Released under the MIT license 7 | * http://opensource.org/licenses/MIT 8 | * 9 | */ 10 | !function(e,n,t,i){"use strict";n="undefined"!=typeof n&&n.Math==Math?n:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")(),e.fn.rating=function(n){var t,a=e(this),o=a.selector||"",r=(new Date).getTime(),s=[],l=arguments[0],c="string"==typeof l,u=[].slice.call(arguments,1);return a.each(function(){var d,g,m=e.isPlainObject(n)?e.extend(!0,{},e.fn.rating.settings,n):e.extend({},e.fn.rating.settings),f=m.namespace,v=m.className,p=m.metadata,b=m.selector,h=(m.error,"."+f),y="module-"+f,x=this,R=e(this).data(y),C=e(this),T=C.find(b.icon);g={initialize:function(){g.verbose("Initializing rating module",m),0===T.length&&g.setup.layout(),m.interactive?g.enable():g.disable(),g.set.initialLoad(),g.set.rating(g.get.initialRating()),g.remove.initialLoad(),g.instantiate()},instantiate:function(){g.verbose("Instantiating module",m),R=g,C.data(y,g)},destroy:function(){g.verbose("Destroying previous instance",R),g.remove.events(),C.removeData(y)},refresh:function(){T=C.find(b.icon)},setup:{layout:function(){var n=g.get.maxRating(),t=e.fn.rating.settings.templates.icon(n);g.debug("Generating icon html dynamically"),C.html(t),g.refresh()}},event:{mouseenter:function(){var n=e(this);n.nextAll().removeClass(v.selected),C.addClass(v.selected),n.addClass(v.selected).prevAll().addClass(v.selected)},mouseleave:function(){C.removeClass(v.selected),T.removeClass(v.selected)},click:function(){var n=e(this),t=g.get.rating(),i=T.index(n)+1,a="auto"==m.clearable?1===T.length:m.clearable;a&&t==i?g.clearRating():g.set.rating(i)}},clearRating:function(){g.debug("Clearing current rating"),g.set.rating(0)},bind:{events:function(){g.verbose("Binding events"),C.on("mouseenter"+h,b.icon,g.event.mouseenter).on("mouseleave"+h,b.icon,g.event.mouseleave).on("click"+h,b.icon,g.event.click)}},remove:{events:function(){g.verbose("Removing events"),C.off(h)},initialLoad:function(){d=!1}},enable:function(){g.debug("Setting rating to interactive mode"),g.bind.events(),C.removeClass(v.disabled)},disable:function(){g.debug("Setting rating to read-only mode"),g.remove.events(),C.addClass(v.disabled)},is:{initialLoad:function(){return d}},get:{initialRating:function(){return C.data(p.rating)!==i?(C.removeData(p.rating),C.data(p.rating)):m.initialRating},maxRating:function(){return C.data(p.maxRating)!==i?(C.removeData(p.maxRating),C.data(p.maxRating)):m.maxRating},rating:function(){var e=T.filter("."+v.active).length;return g.verbose("Current rating retrieved",e),e}},set:{rating:function(e){var n=e-1>=0?e-1:0,t=T.eq(n);C.removeClass(v.selected),T.removeClass(v.selected).removeClass(v.active),e>0&&(g.verbose("Setting current rating to",e),t.prevAll().addBack().addClass(v.active)),g.is.initialLoad()||m.onRate.call(x,e)},initialLoad:function(){d=!0}},setting:function(n,t){if(g.debug("Changing setting",n,t),e.isPlainObject(n))e.extend(!0,m,n);else{if(t===i)return m[n];e.isPlainObject(m[n])?e.extend(!0,m[n],t):m[n]=t}},internal:function(n,t){if(e.isPlainObject(n))e.extend(!0,g,n);else{if(t===i)return g[n];g[n]=t}},debug:function(){!m.silent&&m.debug&&(m.performance?g.performance.log(arguments):(g.debug=Function.prototype.bind.call(console.info,console,m.name+":"),g.debug.apply(console,arguments)))},verbose:function(){!m.silent&&m.verbose&&m.debug&&(m.performance?g.performance.log(arguments):(g.verbose=Function.prototype.bind.call(console.info,console,m.name+":"),g.verbose.apply(console,arguments)))},error:function(){m.silent||(g.error=Function.prototype.bind.call(console.error,console,m.name+":"),g.error.apply(console,arguments))},performance:{log:function(e){var n,t,i;m.performance&&(n=(new Date).getTime(),i=r||n,t=n-i,r=n,s.push({Name:e[0],Arguments:[].slice.call(e,1)||"",Element:x,"Execution Time":t})),clearTimeout(g.performance.timer),g.performance.timer=setTimeout(g.performance.display,500)},display:function(){var n=m.name+":",t=0;r=!1,clearTimeout(g.performance.timer),e.each(s,function(e,n){t+=n["Execution Time"]}),n+=" "+t+"ms",o&&(n+=" '"+o+"'"),a.length>1&&(n+=" ("+a.length+")"),(console.group!==i||console.table!==i)&&s.length>0&&(console.groupCollapsed(n),console.table?console.table(s):e.each(s,function(e,n){console.log(n.Name+": "+n["Execution Time"]+"ms")}),console.groupEnd()),s=[]}},invoke:function(n,a,o){var r,s,l,c=R;return a=a||u,o=x||o,"string"==typeof n&&c!==i&&(n=n.split(/[\. ]/),r=n.length-1,e.each(n,function(t,a){var o=t!=r?a+n[t+1].charAt(0).toUpperCase()+n[t+1].slice(1):n;if(e.isPlainObject(c[o])&&t!=r)c=c[o];else{if(c[o]!==i)return s=c[o],!1;if(!e.isPlainObject(c[a])||t==r)return c[a]!==i?(s=c[a],!1):!1;c=c[a]}})),e.isFunction(s)?l=s.apply(o,a):s!==i&&(l=s),e.isArray(t)?t.push(l):t!==i?t=[t,l]:l!==i&&(t=l),s}},c?(R===i&&g.initialize(),g.invoke(l)):(R!==i&&R.invoke("destroy"),g.initialize())}),t!==i?t:this},e.fn.rating.settings={name:"Rating",namespace:"rating",slent:!1,debug:!1,verbose:!1,performance:!0,initialRating:0,interactive:!0,maxRating:4,clearable:"auto",fireOnInit:!1,onRate:function(e){},error:{method:"The method you called is not defined",noMaximum:"No maximum rating specified. Cannot generate HTML automatically"},metadata:{rating:"rating",maxRating:"maxRating"},className:{active:"active",disabled:"disabled",selected:"selected",loading:"loading"},selector:{icon:".icon"},templates:{icon:function(e){for(var n=1,t="";e>=n;)t+='',n++;return t}}}}(jQuery,window,document); -------------------------------------------------------------------------------- /src/semantic-ui/components/reset.min.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * # Semantic UI 2.2.10 - Reset 3 | * http://github.com/semantic-org/semantic-ui/ 4 | * 5 | * 6 | * Released under the MIT license 7 | * http://opensource.org/licenses/MIT 8 | * 9 | */*,:after,:before{box-sizing:inherit}html{box-sizing:border-box;font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}input[type=text],input[type=email],input[type=search],input[type=password]{-webkit-appearance:none;-moz-appearance:none}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background:0 0}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,optgroup,strong{font-weight:700}dfn{font-style:italic}h1{font-size:2em;margin:.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{height:0}pre,textarea{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-appearance:textfield}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{border:0;padding:0}table{border-collapse:collapse;border-spacing:0}td,th{padding:0} -------------------------------------------------------------------------------- /src/semantic-ui/components/reveal.min.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * # Semantic UI 2.2.10 - Reveal 3 | * http://github.com/semantic-org/semantic-ui/ 4 | * 5 | * 6 | * Released under the MIT license 7 | * http://opensource.org/licenses/MIT 8 | * 9 | */.ui.reveal{display:inherit;position:relative!important;font-size:0!important}.ui.reveal>.visible.content{position:absolute!important;top:0!important;left:0!important;z-index:3!important;-webkit-transition:all .5s ease .1s;transition:all .5s ease .1s}.ui.reveal>.hidden.content{position:relative!important;z-index:2!important}.ui.active.reveal .visible.content,.ui.reveal:hover .visible.content{z-index:4!important}.ui.slide.reveal{position:relative!important;overflow:hidden!important;white-space:nowrap}.ui.slide.reveal>.content{display:block;width:100%;float:left;margin:0;-webkit-transition:-webkit-transform .5s ease .1s;transition:-webkit-transform .5s ease .1s;transition:transform .5s ease .1s;transition:transform .5s ease .1s,-webkit-transform .5s ease .1s}.ui.slide.reveal>.visible.content{position:relative!important}.ui.slide.reveal>.hidden.content{position:absolute!important;left:0!important;width:100%!important;-webkit-transform:translateX(100%)!important;transform:translateX(100%)!important}.ui.slide.active.reveal>.visible.content,.ui.slide.reveal:hover>.visible.content{-webkit-transform:translateX(-100%)!important;transform:translateX(-100%)!important}.ui.slide.active.reveal>.hidden.content,.ui.slide.reveal:hover>.hidden.content,.ui.slide.right.reveal>.visible.content{-webkit-transform:translateX(0)!important;transform:translateX(0)!important}.ui.slide.right.reveal>.hidden.content{-webkit-transform:translateX(-100%)!important;transform:translateX(-100%)!important}.ui.slide.right.active.reveal>.visible.content,.ui.slide.right.reveal:hover>.visible.content{-webkit-transform:translateX(100%)!important;transform:translateX(100%)!important}.ui.slide.right.active.reveal>.hidden.content,.ui.slide.right.reveal:hover>.hidden.content{-webkit-transform:translateX(0)!important;transform:translateX(0)!important}.ui.slide.up.reveal>.hidden.content{-webkit-transform:translateY(100%)!important;transform:translateY(100%)!important}.ui.slide.up.active.reveal>.visible.content,.ui.slide.up.reveal:hover>.visible.content{-webkit-transform:translateY(-100%)!important;transform:translateY(-100%)!important}.ui.slide.up.active.reveal>.hidden.content,.ui.slide.up.reveal:hover>.hidden.content{-webkit-transform:translateY(0)!important;transform:translateY(0)!important}.ui.slide.down.reveal>.hidden.content{-webkit-transform:translateY(-100%)!important;transform:translateY(-100%)!important}.ui.slide.down.active.reveal>.visible.content,.ui.slide.down.reveal:hover>.visible.content{-webkit-transform:translateY(100%)!important;transform:translateY(100%)!important}.ui.slide.down.active.reveal>.hidden.content,.ui.slide.down.reveal:hover>.hidden.content{-webkit-transform:translateY(0)!important;transform:translateY(0)!important}.ui.fade.reveal>.visible.content{opacity:1}.ui.fade.active.reveal>.visible.content,.ui.fade.reveal:hover>.visible.content{opacity:0}.ui.move.reveal{position:relative!important;overflow:hidden!important;white-space:nowrap}.ui.move.reveal>.content{display:block;float:left;margin:0;-webkit-transition:-webkit-transform .5s cubic-bezier(.175,.885,.32,1) .1s;transition:-webkit-transform .5s cubic-bezier(.175,.885,.32,1) .1s;transition:transform .5s cubic-bezier(.175,.885,.32,1) .1s;transition:transform .5s cubic-bezier(.175,.885,.32,1) .1s,-webkit-transform .5s cubic-bezier(.175,.885,.32,1) .1s}.ui.move.reveal>.visible.content{position:relative!important}.ui.move.reveal>.hidden.content{position:absolute!important;left:0!important;width:100%!important}.ui.move.active.reveal>.visible.content,.ui.move.reveal:hover>.visible.content{-webkit-transform:translateX(-100%)!important;transform:translateX(-100%)!important}.ui.move.right.active.reveal>.visible.content,.ui.move.right.reveal:hover>.visible.content{-webkit-transform:translateX(100%)!important;transform:translateX(100%)!important}.ui.move.up.active.reveal>.visible.content,.ui.move.up.reveal:hover>.visible.content{-webkit-transform:translateY(-100%)!important;transform:translateY(-100%)!important}.ui.move.down.active.reveal>.visible.content,.ui.move.down.reveal:hover>.visible.content{-webkit-transform:translateY(100%)!important;transform:translateY(100%)!important}.ui.rotate.reveal>.visible.content{-webkit-transition-duration:.5s;transition-duration:.5s;-webkit-transform:rotate(0);transform:rotate(0)}.ui.rotate.reveal>.visible.content,.ui.rotate.right.reveal>.visible.content{-webkit-transform-origin:bottom right;transform-origin:bottom right}.ui.rotate.active.reveal>.visible.content,.ui.rotate.reveal:hover>.visible.content,.ui.rotate.right.active.reveal>.visible.content,.ui.rotate.right.reveal:hover>.visible.content{-webkit-transform:rotate(110deg);transform:rotate(110deg)}.ui.rotate.left.reveal>.visible.content{-webkit-transform-origin:bottom left;transform-origin:bottom left}.ui.rotate.left.active.reveal>.visible.content,.ui.rotate.left.reveal:hover>.visible.content{-webkit-transform:rotate(-110deg);transform:rotate(-110deg)}.ui.disabled.reveal:hover>.visible.visible.content{position:static!important;display:block!important;opacity:1!important;top:0!important;left:0!important;right:auto!important;bottom:auto!important;-webkit-transform:none!important;transform:none!important}.ui.disabled.reveal:hover>.hidden.hidden.content{display:none!important}.ui.visible.reveal{overflow:visible}.ui.instant.reveal>.content{-webkit-transition-delay:0s!important;transition-delay:0s!important}.ui.reveal>.content{font-size:1rem!important} -------------------------------------------------------------------------------- /src/semantic-ui/components/shape.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * # Semantic UI 2.2.10 - Shape 3 | * http://github.com/semantic-org/semantic-ui/ 4 | * 5 | * 6 | * Released under the MIT license 7 | * http://opensource.org/licenses/MIT 8 | * 9 | */ 10 | 11 | 12 | /******************************* 13 | Shape 14 | *******************************/ 15 | 16 | .ui.shape { 17 | position: relative; 18 | vertical-align: top; 19 | display: inline-block; 20 | -webkit-perspective: 2000px; 21 | perspective: 2000px; 22 | -webkit-transition: left 0.6s ease-in-out, width 0.6s ease-in-out, height 0.6s ease-in-out, -webkit-transform 0.6s ease-in-out; 23 | transition: left 0.6s ease-in-out, width 0.6s ease-in-out, height 0.6s ease-in-out, -webkit-transform 0.6s ease-in-out; 24 | transition: transform 0.6s ease-in-out, left 0.6s ease-in-out, width 0.6s ease-in-out, height 0.6s ease-in-out; 25 | transition: transform 0.6s ease-in-out, left 0.6s ease-in-out, width 0.6s ease-in-out, height 0.6s ease-in-out, -webkit-transform 0.6s ease-in-out; 26 | } 27 | .ui.shape .sides { 28 | -webkit-transform-style: preserve-3d; 29 | transform-style: preserve-3d; 30 | } 31 | .ui.shape .side { 32 | opacity: 1; 33 | width: 100%; 34 | margin: 0em !important; 35 | -webkit-backface-visibility: hidden; 36 | backface-visibility: hidden; 37 | } 38 | .ui.shape .side { 39 | display: none; 40 | } 41 | .ui.shape .side * { 42 | -webkit-backface-visibility: visible !important; 43 | backface-visibility: visible !important; 44 | } 45 | 46 | 47 | /******************************* 48 | Types 49 | *******************************/ 50 | 51 | .ui.cube.shape .side { 52 | min-width: 15em; 53 | height: 15em; 54 | padding: 2em; 55 | background-color: #E6E6E6; 56 | color: rgba(0, 0, 0, 0.87); 57 | box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.3); 58 | } 59 | .ui.cube.shape .side > .content { 60 | width: 100%; 61 | height: 100%; 62 | display: table; 63 | text-align: center; 64 | -webkit-user-select: text; 65 | -moz-user-select: text; 66 | -ms-user-select: text; 67 | user-select: text; 68 | } 69 | .ui.cube.shape .side > .content > div { 70 | display: table-cell; 71 | vertical-align: middle; 72 | font-size: 2em; 73 | } 74 | 75 | 76 | /******************************* 77 | Variations 78 | *******************************/ 79 | 80 | .ui.text.shape.animating .sides { 81 | position: static; 82 | } 83 | .ui.text.shape .side { 84 | white-space: nowrap; 85 | } 86 | .ui.text.shape .side > * { 87 | white-space: normal; 88 | } 89 | 90 | 91 | /******************************* 92 | States 93 | *******************************/ 94 | 95 | 96 | /*-------------- 97 | Loading 98 | ---------------*/ 99 | 100 | .ui.loading.shape { 101 | position: absolute; 102 | top: -9999px; 103 | left: -9999px; 104 | } 105 | 106 | /*-------------- 107 | Animating 108 | ---------------*/ 109 | 110 | .ui.shape .animating.side { 111 | position: absolute; 112 | top: 0px; 113 | left: 0px; 114 | display: block; 115 | z-index: 100; 116 | } 117 | .ui.shape .hidden.side { 118 | opacity: 0.6; 119 | } 120 | 121 | /*-------------- 122 | CSS 123 | ---------------*/ 124 | 125 | .ui.shape.animating .sides { 126 | position: absolute; 127 | } 128 | .ui.shape.animating .sides { 129 | -webkit-transition: left 0.6s ease-in-out, width 0.6s ease-in-out, height 0.6s ease-in-out, -webkit-transform 0.6s ease-in-out; 130 | transition: left 0.6s ease-in-out, width 0.6s ease-in-out, height 0.6s ease-in-out, -webkit-transform 0.6s ease-in-out; 131 | transition: transform 0.6s ease-in-out, left 0.6s ease-in-out, width 0.6s ease-in-out, height 0.6s ease-in-out; 132 | transition: transform 0.6s ease-in-out, left 0.6s ease-in-out, width 0.6s ease-in-out, height 0.6s ease-in-out, -webkit-transform 0.6s ease-in-out; 133 | } 134 | .ui.shape.animating .side { 135 | -webkit-transition: opacity 0.6s ease-in-out; 136 | transition: opacity 0.6s ease-in-out; 137 | } 138 | 139 | /*-------------- 140 | Active 141 | ---------------*/ 142 | 143 | .ui.shape .active.side { 144 | display: block; 145 | } 146 | 147 | 148 | /******************************* 149 | Theme Overrides 150 | *******************************/ 151 | 152 | 153 | 154 | /******************************* 155 | User Overrides 156 | *******************************/ 157 | 158 | -------------------------------------------------------------------------------- /src/semantic-ui/components/shape.min.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * # Semantic UI 2.2.10 - Shape 3 | * http://github.com/semantic-org/semantic-ui/ 4 | * 5 | * 6 | * Released under the MIT license 7 | * http://opensource.org/licenses/MIT 8 | * 9 | */.ui.shape{position:relative;vertical-align:top;display:inline-block;-webkit-perspective:2000px;perspective:2000px;-webkit-transition:left .6s ease-in-out,width .6s ease-in-out,height .6s ease-in-out,-webkit-transform .6s ease-in-out;transition:left .6s ease-in-out,width .6s ease-in-out,height .6s ease-in-out,-webkit-transform .6s ease-in-out;transition:transform .6s ease-in-out,left .6s ease-in-out,width .6s ease-in-out,height .6s ease-in-out;transition:transform .6s ease-in-out,left .6s ease-in-out,width .6s ease-in-out,height .6s ease-in-out,-webkit-transform .6s ease-in-out}.ui.shape .sides{-webkit-transform-style:preserve-3d;transform-style:preserve-3d}.ui.shape .side{opacity:1;width:100%;margin:0!important;-webkit-backface-visibility:hidden;backface-visibility:hidden;display:none}.ui.shape .side *{-webkit-backface-visibility:visible!important;backface-visibility:visible!important}.ui.cube.shape .side{min-width:15em;height:15em;padding:2em;background-color:#E6E6E6;color:rgba(0,0,0,.87);box-shadow:0 0 2px rgba(0,0,0,.3)}.ui.cube.shape .side>.content{width:100%;height:100%;display:table;text-align:center;-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text}.ui.cube.shape .side>.content>div{display:table-cell;vertical-align:middle;font-size:2em}.ui.text.shape.animating .sides{position:static}.ui.text.shape .side{white-space:nowrap}.ui.text.shape .side>*{white-space:normal}.ui.loading.shape{position:absolute;top:-9999px;left:-9999px}.ui.shape .animating.side{position:absolute;top:0;left:0;display:block;z-index:100}.ui.shape .hidden.side{opacity:.6}.ui.shape.animating .sides{position:absolute;-webkit-transition:left .6s ease-in-out,width .6s ease-in-out,height .6s ease-in-out,-webkit-transform .6s ease-in-out;transition:left .6s ease-in-out,width .6s ease-in-out,height .6s ease-in-out,-webkit-transform .6s ease-in-out;transition:transform .6s ease-in-out,left .6s ease-in-out,width .6s ease-in-out,height .6s ease-in-out;transition:transform .6s ease-in-out,left .6s ease-in-out,width .6s ease-in-out,height .6s ease-in-out,-webkit-transform .6s ease-in-out}.ui.shape.animating .side{-webkit-transition:opacity .6s ease-in-out;transition:opacity .6s ease-in-out}.ui.shape .active.side{display:block} -------------------------------------------------------------------------------- /src/semantic-ui/components/site.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * # Semantic UI 2.2.10 - Site 3 | * http://github.com/semantic-org/semantic-ui/ 4 | * 5 | * 6 | * Released under the MIT license 7 | * http://opensource.org/licenses/MIT 8 | * 9 | */ 10 | 11 | 12 | /******************************* 13 | Page 14 | *******************************/ 15 | 16 | @import url('https://fonts.googleapis.com/css?family=Lato:400,700,400italic,700italic&subset=latin'); 17 | html, 18 | body { 19 | height: 100%; 20 | } 21 | html { 22 | font-size: 14px; 23 | } 24 | body { 25 | margin: 0px; 26 | padding: 0px; 27 | overflow-x: hidden; 28 | min-width: 320px; 29 | background: #FFFFFF; 30 | font-family: 'Lato', 'Helvetica Neue', Arial, Helvetica, sans-serif; 31 | font-size: 14px; 32 | line-height: 1.4285em; 33 | color: rgba(0, 0, 0, 0.87); 34 | font-smoothing: antialiased; 35 | } 36 | 37 | 38 | /******************************* 39 | Headers 40 | *******************************/ 41 | 42 | h1, 43 | h2, 44 | h3, 45 | h4, 46 | h5 { 47 | font-family: 'Lato', 'Helvetica Neue', Arial, Helvetica, sans-serif; 48 | line-height: 1.28571429em; 49 | margin: calc(2rem - 0.14285714em ) 0em 1rem; 50 | font-weight: bold; 51 | padding: 0em; 52 | } 53 | h1 { 54 | min-height: 1rem; 55 | font-size: 2rem; 56 | } 57 | h2 { 58 | font-size: 1.71428571rem; 59 | } 60 | h3 { 61 | font-size: 1.28571429rem; 62 | } 63 | h4 { 64 | font-size: 1.07142857rem; 65 | } 66 | h5 { 67 | font-size: 1rem; 68 | } 69 | h1:first-child, 70 | h2:first-child, 71 | h3:first-child, 72 | h4:first-child, 73 | h5:first-child { 74 | margin-top: 0em; 75 | } 76 | h1:last-child, 77 | h2:last-child, 78 | h3:last-child, 79 | h4:last-child, 80 | h5:last-child { 81 | margin-bottom: 0em; 82 | } 83 | 84 | 85 | /******************************* 86 | Text 87 | *******************************/ 88 | 89 | p { 90 | margin: 0em 0em 1em; 91 | line-height: 1.4285em; 92 | } 93 | p:first-child { 94 | margin-top: 0em; 95 | } 96 | p:last-child { 97 | margin-bottom: 0em; 98 | } 99 | 100 | /*------------------- 101 | Links 102 | --------------------*/ 103 | 104 | a { 105 | color: #4183C4; 106 | text-decoration: none; 107 | } 108 | a:hover { 109 | color: #1e70bf; 110 | text-decoration: none; 111 | } 112 | 113 | 114 | /******************************* 115 | Highlighting 116 | *******************************/ 117 | 118 | 119 | /* Site */ 120 | ::-webkit-selection { 121 | background-color: #CCE2FF; 122 | color: rgba(0, 0, 0, 0.87); 123 | } 124 | ::-moz-selection { 125 | background-color: #CCE2FF; 126 | color: rgba(0, 0, 0, 0.87); 127 | } 128 | ::selection { 129 | background-color: #CCE2FF; 130 | color: rgba(0, 0, 0, 0.87); 131 | } 132 | 133 | /* Form */ 134 | textarea::-webkit-selection, 135 | input::-webkit-selection { 136 | background-color: rgba(100, 100, 100, 0.4); 137 | color: rgba(0, 0, 0, 0.87); 138 | } 139 | textarea::-moz-selection, 140 | input::-moz-selection { 141 | background-color: rgba(100, 100, 100, 0.4); 142 | color: rgba(0, 0, 0, 0.87); 143 | } 144 | textarea::selection, 145 | input::selection { 146 | background-color: rgba(100, 100, 100, 0.4); 147 | color: rgba(0, 0, 0, 0.87); 148 | } 149 | 150 | 151 | /******************************* 152 | Global Overrides 153 | *******************************/ 154 | 155 | 156 | 157 | /******************************* 158 | Site Overrides 159 | *******************************/ 160 | 161 | -------------------------------------------------------------------------------- /src/semantic-ui/components/site.min.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * # Semantic UI 2.2.10 - Site 3 | * http://github.com/semantic-org/semantic-ui/ 4 | * 5 | * 6 | * Released under the MIT license 7 | * http://opensource.org/licenses/MIT 8 | * 9 | */@import url(https://fonts.googleapis.com/css?family=Lato:400,700,400italic,700italic&subset=latin);body,html{height:100%}html{font-size:14px}body{margin:0;padding:0;overflow-x:hidden;min-width:320px;background:#FFF;font-family:Lato,'Helvetica Neue',Arial,Helvetica,sans-serif;font-size:14px;line-height:1.4285em;color:rgba(0,0,0,.87);font-smoothing:antialiased}h1,h2,h3,h4,h5{font-family:Lato,'Helvetica Neue',Arial,Helvetica,sans-serif;line-height:1.28571429em;margin:calc(2rem - .14285714em) 0 1rem;font-weight:700;padding:0}h1{min-height:1rem;font-size:2rem}h2{font-size:1.71428571rem}h3{font-size:1.28571429rem}h4{font-size:1.07142857rem}h5{font-size:1rem}h1:first-child,h2:first-child,h3:first-child,h4:first-child,h5:first-child,p:first-child{margin-top:0}h1:last-child,h2:last-child,h3:last-child,h4:last-child,h5:last-child,p:last-child{margin-bottom:0}p{margin:0 0 1em;line-height:1.4285em}a{color:#4183C4;text-decoration:none}a:hover{color:#1e70bf;text-decoration:none}::-webkit-selection{background-color:#CCE2FF;color:rgba(0,0,0,.87)}::-moz-selection{background-color:#CCE2FF;color:rgba(0,0,0,.87)}::selection{background-color:#CCE2FF;color:rgba(0,0,0,.87)}input::-webkit-selection,textarea::-webkit-selection{background-color:rgba(100,100,100,.4);color:rgba(0,0,0,.87)}input::-moz-selection,textarea::-moz-selection{background-color:rgba(100,100,100,.4);color:rgba(0,0,0,.87)}input::selection,textarea::selection{background-color:rgba(100,100,100,.4);color:rgba(0,0,0,.87)} -------------------------------------------------------------------------------- /src/semantic-ui/components/sticky.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * # Semantic UI 2.2.10 - Sticky 3 | * http://github.com/semantic-org/semantic-ui/ 4 | * 5 | * 6 | * Released under the MIT license 7 | * http://opensource.org/licenses/MIT 8 | * 9 | */ 10 | 11 | 12 | /******************************* 13 | Sticky 14 | *******************************/ 15 | 16 | .ui.sticky { 17 | position: static; 18 | -webkit-transition: none; 19 | transition: none; 20 | z-index: 800; 21 | } 22 | 23 | 24 | /******************************* 25 | States 26 | *******************************/ 27 | 28 | 29 | /* Bound */ 30 | .ui.sticky.bound { 31 | position: absolute; 32 | left: auto; 33 | right: auto; 34 | } 35 | 36 | /* Fixed */ 37 | .ui.sticky.fixed { 38 | position: fixed; 39 | left: auto; 40 | right: auto; 41 | } 42 | 43 | /* Bound/Fixed Position */ 44 | .ui.sticky.bound.top, 45 | .ui.sticky.fixed.top { 46 | top: 0px; 47 | bottom: auto; 48 | } 49 | .ui.sticky.bound.bottom, 50 | .ui.sticky.fixed.bottom { 51 | top: auto; 52 | bottom: 0px; 53 | } 54 | 55 | 56 | /******************************* 57 | Types 58 | *******************************/ 59 | 60 | .ui.native.sticky { 61 | position: -webkit-sticky; 62 | position: -moz-sticky; 63 | position: -ms-sticky; 64 | position: -o-sticky; 65 | position: sticky; 66 | } 67 | 68 | 69 | /******************************* 70 | Theme Overrides 71 | *******************************/ 72 | 73 | 74 | 75 | /******************************* 76 | Site Overrides 77 | *******************************/ 78 | 79 | -------------------------------------------------------------------------------- /src/semantic-ui/components/sticky.min.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * # Semantic UI 2.2.10 - Sticky 3 | * http://github.com/semantic-org/semantic-ui/ 4 | * 5 | * 6 | * Released under the MIT license 7 | * http://opensource.org/licenses/MIT 8 | * 9 | */.ui.sticky{position:static;-webkit-transition:none;transition:none;z-index:800}.ui.sticky.bound{position:absolute;left:auto;right:auto}.ui.sticky.fixed{position:fixed;left:auto;right:auto}.ui.sticky.bound.top,.ui.sticky.fixed.top{top:0;bottom:auto}.ui.sticky.bound.bottom,.ui.sticky.fixed.bottom{top:auto;bottom:0}.ui.native.sticky{position:-webkit-sticky;position:-moz-sticky;position:-ms-sticky;position:-o-sticky;position:sticky} -------------------------------------------------------------------------------- /src/semantic-ui/components/tab.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * # Semantic UI 2.2.10 - Tab 3 | * http://github.com/semantic-org/semantic-ui/ 4 | * 5 | * 6 | * Released under the MIT license 7 | * http://opensource.org/licenses/MIT 8 | * 9 | */ 10 | 11 | 12 | /******************************* 13 | UI Tabs 14 | *******************************/ 15 | 16 | .ui.tab { 17 | display: none; 18 | } 19 | 20 | 21 | /******************************* 22 | States 23 | *******************************/ 24 | 25 | 26 | /*-------------------- 27 | Active 28 | ---------------------*/ 29 | 30 | .ui.tab.active, 31 | .ui.tab.open { 32 | display: block; 33 | } 34 | 35 | /*-------------------- 36 | Loading 37 | ---------------------*/ 38 | 39 | .ui.tab.loading { 40 | position: relative; 41 | overflow: hidden; 42 | display: block; 43 | min-height: 250px; 44 | } 45 | .ui.tab.loading * { 46 | position: relative !important; 47 | left: -10000px !important; 48 | } 49 | .ui.tab.loading:before, 50 | .ui.tab.loading.segment:before { 51 | position: absolute; 52 | content: ''; 53 | top: 100px; 54 | left: 50%; 55 | margin: -1.25em 0em 0em -1.25em; 56 | width: 2.5em; 57 | height: 2.5em; 58 | border-radius: 500rem; 59 | border: 0.2em solid rgba(0, 0, 0, 0.1); 60 | } 61 | .ui.tab.loading:after, 62 | .ui.tab.loading.segment:after { 63 | position: absolute; 64 | content: ''; 65 | top: 100px; 66 | left: 50%; 67 | margin: -1.25em 0em 0em -1.25em; 68 | width: 2.5em; 69 | height: 2.5em; 70 | -webkit-animation: button-spin 0.6s linear; 71 | animation: button-spin 0.6s linear; 72 | -webkit-animation-iteration-count: infinite; 73 | animation-iteration-count: infinite; 74 | border-radius: 500rem; 75 | border-color: #767676 transparent transparent; 76 | border-style: solid; 77 | border-width: 0.2em; 78 | box-shadow: 0px 0px 0px 1px transparent; 79 | } 80 | 81 | 82 | /******************************* 83 | Tab Overrides 84 | *******************************/ 85 | 86 | 87 | 88 | /******************************* 89 | User Overrides 90 | *******************************/ 91 | 92 | -------------------------------------------------------------------------------- /src/semantic-ui/components/tab.min.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * # Semantic UI 2.2.10 - Tab 3 | * http://github.com/semantic-org/semantic-ui/ 4 | * 5 | * 6 | * Released under the MIT license 7 | * http://opensource.org/licenses/MIT 8 | * 9 | */.ui.tab{display:none}.ui.tab.active,.ui.tab.open{display:block}.ui.tab.loading{position:relative;overflow:hidden;display:block;min-height:250px}.ui.tab.loading *{position:relative!important;left:-10000px!important}.ui.tab.loading.segment:before,.ui.tab.loading:before{position:absolute;content:'';top:100px;left:50%;margin:-1.25em 0 0 -1.25em;width:2.5em;height:2.5em;border-radius:500rem;border:.2em solid rgba(0,0,0,.1)}.ui.tab.loading.segment:after,.ui.tab.loading:after{position:absolute;content:'';top:100px;left:50%;margin:-1.25em 0 0 -1.25em;width:2.5em;height:2.5em;-webkit-animation:button-spin .6s linear;animation:button-spin .6s linear;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite;border-radius:500rem;border-color:#767676 transparent transparent;border-style:solid;border-width:.2em;box-shadow:0 0 0 1px transparent} -------------------------------------------------------------------------------- /src/semantic-ui/components/video.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * # Semantic UI 2.0.0 - Video 3 | * http://github.com/semantic-org/semantic-ui/ 4 | * 5 | * 6 | * Copyright 2014 Contributors 7 | * Released under the MIT license 8 | * http://opensource.org/licenses/MIT 9 | * 10 | */ 11 | 12 | 13 | /******************************* 14 | Video 15 | *******************************/ 16 | 17 | .ui.video { 18 | background-color: #dddddd; 19 | position: relative; 20 | max-width: 100%; 21 | padding-bottom: 56.25%; 22 | height: 0px; 23 | overflow: hidden; 24 | } 25 | 26 | /*-------------- 27 | Content 28 | ---------------*/ 29 | 30 | 31 | /* Placeholder Image */ 32 | .ui.video .placeholder { 33 | background-color: #333333; 34 | } 35 | 36 | /* Play Icon Overlay */ 37 | .ui.video .play { 38 | cursor: pointer; 39 | position: absolute; 40 | top: 0px; 41 | left: 0px; 42 | z-index: 10; 43 | width: 100%; 44 | height: 100%; 45 | background: transparent; 46 | -webkit-transition: background 0.2s ease; 47 | transition: background 0.2s ease; 48 | } 49 | .ui.video .play.icon:before { 50 | position: absolute; 51 | top: 50%; 52 | left: 50%; 53 | z-index: 11; 54 | -webkit-transform: translateX(-50%) translateY(-50%); 55 | -ms-transform: translateX(-50%) translateY(-50%); 56 | transform: translateX(-50%) translateY(-50%); 57 | color: rgba(255, 255, 255, 0.7); 58 | font-size: 7rem; 59 | text-shadow: 2px 2px 0px rgba(0, 0, 0, 0.15); 60 | -webkit-transition: color 0.2s ease; 61 | transition: color 0.2s ease; 62 | } 63 | .ui.video .placeholder { 64 | position: absolute; 65 | top: 0px; 66 | left: 0px; 67 | display: block; 68 | width: 100%; 69 | height: 100%; 70 | } 71 | 72 | /* IFrame Embed */ 73 | .ui.video .embed iframe, 74 | .ui.video .embed embed, 75 | .ui.video .embed object { 76 | position: absolute; 77 | border: none; 78 | width: 100%; 79 | height: 100%; 80 | top: 0px; 81 | left: 0px; 82 | margin: 0em; 83 | padding: 0em; 84 | } 85 | 86 | 87 | /******************************* 88 | States 89 | *******************************/ 90 | 91 | 92 | /*-------------- 93 | Hover 94 | ---------------*/ 95 | 96 | .ui.video .play:hover { 97 | background: rgba(0, 0, 0, 0); 98 | } 99 | .ui.video .play:hover:before { 100 | color: #ffffff; 101 | } 102 | 103 | /*-------------- 104 | Active 105 | ---------------*/ 106 | 107 | .ui.active.video .play, 108 | .ui.active.video .placeholder { 109 | display: none; 110 | } 111 | .ui.active.video .embed { 112 | display: inline; 113 | } 114 | 115 | 116 | /******************************* 117 | Video Overrides 118 | *******************************/ 119 | 120 | 121 | 122 | /******************************* 123 | Site Overrides 124 | *******************************/ 125 | 126 | -------------------------------------------------------------------------------- /src/semantic-ui/components/video.min.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * # Semantic UI 2.0.0 - Video 3 | * http://github.com/semantic-org/semantic-ui/ 4 | * 5 | * 6 | * Copyright 2014 Contributors 7 | * Released under the MIT license 8 | * http://opensource.org/licenses/MIT 9 | * 10 | */.ui.video{background-color:#ddd;position:relative;max-width:100%;padding-bottom:56.25%;height:0;overflow:hidden}.ui.video .placeholder{background-color:#333}.ui.video .play{cursor:pointer;position:absolute;top:0;left:0;z-index:10;width:100%;height:100%;background:0 0;-webkit-transition:background .2s ease;transition:background .2s ease}.ui.video .play.icon:before{position:absolute;top:50%;left:50%;z-index:11;-webkit-transform:translateX(-50%)translateY(-50%);-ms-transform:translateX(-50%)translateY(-50%);transform:translateX(-50%)translateY(-50%);color:rgba(255,255,255,.7);font-size:7rem;text-shadow:2px 2px 0 rgba(0,0,0,.15);-webkit-transition:color .2s ease;transition:color .2s ease}.ui.video .placeholder{position:absolute;top:0;left:0;display:block;width:100%;height:100%}.ui.video .embed embed,.ui.video .embed iframe,.ui.video .embed object{position:absolute;border:none;width:100%;height:100%;top:0;left:0;margin:0;padding:0}.ui.video .play:hover{background:0 0}.ui.video .play:hover:before{color:#fff}.ui.active.video .placeholder,.ui.active.video .play{display:none}.ui.active.video .embed{display:inline} -------------------------------------------------------------------------------- /src/semantic-ui/components/visit.min.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * # Semantic UI 2.0.0 - Visit 3 | * http://github.com/semantic-org/semantic-ui/ 4 | * 5 | * 6 | * Copyright 2015 Contributors 7 | * Released under the MIT license 8 | * http://opensource.org/licenses/MIT 9 | * 10 | */ 11 | !function(e,t,i,n){"use strict";e.visit=e.fn.visit=function(i){var o,r=e(e.isFunction(this)?t:this),s=r.selector||"",a=(new Date).getTime(),c=[],u=arguments[0],l="string"==typeof u,d=[].slice.call(arguments,1);return r.each(function(){var g,m=e.isPlainObject(i)?e.extend(!0,{},e.fn.visit.settings,i):e.extend({},e.fn.visit.settings),f=m.error,p=m.namespace,v=p+"-module",h=e(this),b=e(),y=this,k=h.data(v);g={initialize:function(){m.count?g.store(m.key.count,m.count):m.id?g.add.id(m.id):m.increment&&"increment"!==l&&g.increment(),g.add.display(h),g.instantiate()},instantiate:function(){g.verbose("Storing instance of visit module",g),k=g,h.data(v,g)},destroy:function(){g.verbose("Destroying instance"),h.removeData(v)},increment:function(e){var t=g.get.count(),i=+t+1;e?g.add.id(e):(i>m.limit&&!m.surpass&&(i=m.limit),g.debug("Incrementing visits",i),g.store(m.key.count,i))},decrement:function(e){var t=g.get.count(),i=+t-1;e?g.remove.id(e):(g.debug("Removing visit"),g.store(m.key.count,i))},get:{count:function(){return+g.retrieve(m.key.count)||0},idCount:function(e){return e=e||g.get.ids(),e.length},ids:function(e){var t=[];return e=e||g.retrieve(m.key.ids),"string"==typeof e&&(t=e.split(m.delimiter)),g.verbose("Found visited ID list",t),t},storageOptions:function(e){var t={};return m.expires&&(t.expires=m.expires),m.domain&&(t.domain=m.domain),m.path&&(t.path=m.path),t}},has:{visited:function(t,i){var o=!1;return i=i||g.get.ids(),t!==n&&i&&e.each(i,function(e,i){i==t&&(o=!0)}),o}},set:{count:function(e){g.store(m.key.count,e)},ids:function(e){g.store(m.key.ids,e)}},reset:function(){g.store(m.key.count,0),g.store(m.key.ids,null)},add:{id:function(e){var t=g.retrieve(m.key.ids),i=t===n||""===t?e:t+m.delimiter+e;g.has.visited(e)?g.debug("Unique content already visited, not adding visit",e,t):e===n?g.debug("ID is not defined"):(g.debug("Adding visit to unique content",e),g.store(m.key.ids,i)),g.set.count(g.get.idCount())},display:function(t){var i=e(t);i.length>0&&!e.isWindow(i[0])&&(g.debug("Updating visit count for element",i),b=b.length>0?b.add(i):i)}},remove:{id:function(t){var i=g.get.ids(),o=[];t!==n&&i!==n&&(g.debug("Removing visit to unique content",t,i),e.each(i,function(e,i){i!==t&&o.push(i)}),o=o.join(m.delimiter),g.store(m.key.ids,o)),g.set.count(g.get.idCount())}},check:{limit:function(e){e=e||g.get.count(),m.limit&&(e>=m.limit&&(g.debug("Pages viewed exceeded limit, firing callback",e,m.limit),m.onLimit.call(y,e)),g.debug("Limit not reached",e,m.limit),m.onChange.call(y,e)),g.update.display(e)}},update:{display:function(e){e=e||g.get.count(),b.length>0&&(g.debug("Updating displayed view count",b),b.html(e))}},store:function(i,o){var r=g.get.storageOptions(o);if("localstorage"==m.storageMethod&&t.localStorage!==n)t.localStorage.setItem(i,o),g.debug("Value stored using local storage",i,o);else{if(e.cookie===n)return void g.error(f.noCookieStorage);e.cookie(i,o,r),g.debug("Value stored using cookie",i,o,r)}i==m.key.count&&g.check.limit(o)},retrieve:function(i,o){var r;return"localstorage"==m.storageMethod&&t.localStorage!==n?r=t.localStorage.getItem(i):e.cookie!==n?r=e.cookie(i):g.error(f.noCookieStorage),("undefined"==r||"null"==r||r===n||null===r)&&(r=n),r},setting:function(t,i){if(e.isPlainObject(t))e.extend(!0,m,t);else{if(i===n)return m[t];m[t]=i}},internal:function(t,i){return g.debug("Changing internal",t,i),i===n?g[t]:void(e.isPlainObject(t)?e.extend(!0,g,t):g[t]=i)},debug:function(){m.debug&&(m.performance?g.performance.log(arguments):(g.debug=Function.prototype.bind.call(console.info,console,m.name+":"),g.debug.apply(console,arguments)))},verbose:function(){m.verbose&&m.debug&&(m.performance?g.performance.log(arguments):(g.verbose=Function.prototype.bind.call(console.info,console,m.name+":"),g.verbose.apply(console,arguments)))},error:function(){g.error=Function.prototype.bind.call(console.error,console,m.name+":"),g.error.apply(console,arguments)},performance:{log:function(e){var t,i,n;m.performance&&(t=(new Date).getTime(),n=a||t,i=t-n,a=t,c.push({Name:e[0],Arguments:[].slice.call(e,1)||"",Element:y,"Execution Time":i})),clearTimeout(g.performance.timer),g.performance.timer=setTimeout(g.performance.display,500)},display:function(){var t=m.name+":",i=0;a=!1,clearTimeout(g.performance.timer),e.each(c,function(e,t){i+=t["Execution Time"]}),t+=" "+i+"ms",s&&(t+=" '"+s+"'"),r.length>1&&(t+=" ("+r.length+")"),(console.group!==n||console.table!==n)&&c.length>0&&(console.groupCollapsed(t),console.table?console.table(c):e.each(c,function(e,t){console.log(t.Name+": "+t["Execution Time"]+"ms")}),console.groupEnd()),c=[]}},invoke:function(t,i,r){var s,a,c,u=k;return i=i||d,r=y||r,"string"==typeof t&&u!==n&&(t=t.split(/[\. ]/),s=t.length-1,e.each(t,function(i,o){var r=i!=s?o+t[i+1].charAt(0).toUpperCase()+t[i+1].slice(1):t;if(e.isPlainObject(u[r])&&i!=s)u=u[r];else{if(u[r]!==n)return a=u[r],!1;if(!e.isPlainObject(u[o])||i==s)return u[o]!==n?(a=u[o],!1):!1;u=u[o]}})),e.isFunction(a)?c=a.apply(r,i):a!==n&&(c=a),e.isArray(o)?o.push(c):o!==n?o=[o,c]:c!==n&&(o=c),a}},l?(k===n&&g.initialize(),g.invoke(u)):(k!==n&&k.invoke("destroy"),g.initialize())}),o!==n?o:this},e.fn.visit.settings={name:"Visit",debug:!1,verbose:!1,performance:!0,namespace:"visit",increment:!1,surpass:!1,count:!1,limit:!1,delimiter:"&",storageMethod:"localstorage",key:{count:"visit-count",ids:"visit-ids"},expires:30,domain:!1,path:"/",onLimit:function(){},onChange:function(){},error:{method:"The method you called is not defined",missingPersist:"Using the persist setting requires the inclusion of PersistJS",noCookieStorage:"The default storage cookie requires $.cookie to be included."}}}(jQuery,window,document); -------------------------------------------------------------------------------- /src/semantic-ui/package.js: -------------------------------------------------------------------------------- 1 | var 2 | where = 'client' // Adds files only to the client 3 | ; 4 | 5 | Package.describe({ 6 | name : 'semantic:ui-css', 7 | summary : 'Semantic UI - CSS Release of Semantic UI', 8 | version : '2.2.10', 9 | git : 'git://github.com/Semantic-Org/Semantic-UI-CSS.git', 10 | }); 11 | 12 | Package.onUse(function(api) { 13 | 14 | api.versionsFrom('1.0'); 15 | 16 | api.use('jquery', 'client'); 17 | 18 | api.addFiles([ 19 | // icons 20 | 'themes/default/assets/fonts/icons.eot', 21 | 'themes/default/assets/fonts/icons.svg', 22 | 'themes/default/assets/fonts/icons.ttf', 23 | 'themes/default/assets/fonts/icons.woff', 24 | 'themes/default/assets/fonts/icons.woff2', 25 | 26 | // flags 27 | 'themes/default/assets/images/flags.png', 28 | 29 | // release 30 | 'semantic.css', 31 | 'semantic.js' 32 | ], 'client'); 33 | 34 | }); 35 | -------------------------------------------------------------------------------- /src/semantic-ui/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "semantic-ui-css", 3 | "version": "2.2.10", 4 | "title": "Semantic UI", 5 | "description": "CSS Only distribution of Semantic UI", 6 | "homepage": "http://www.semantic-ui.com", 7 | "author": "Jack Lukic ", 8 | "license": "MIT", 9 | "main": "semantic.js", 10 | "repository": { 11 | "type": "git", 12 | "url": "git://github.com/Semantic-Org/Semantic-UI-CSS.git" 13 | }, 14 | "bugs": { 15 | "url": "https://github.com/Semantic-Org/Semantic-UI/issues" 16 | }, 17 | "dependencies": { 18 | "jquery": "x.*" 19 | } 20 | } -------------------------------------------------------------------------------- /src/semantic-ui/themes/default/assets/fonts/icons.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guilhermewaess/SemVue/117ceb6229369f683b6a121918a14ffe6c294d1c/src/semantic-ui/themes/default/assets/fonts/icons.eot -------------------------------------------------------------------------------- /src/semantic-ui/themes/default/assets/fonts/icons.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guilhermewaess/SemVue/117ceb6229369f683b6a121918a14ffe6c294d1c/src/semantic-ui/themes/default/assets/fonts/icons.otf -------------------------------------------------------------------------------- /src/semantic-ui/themes/default/assets/fonts/icons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guilhermewaess/SemVue/117ceb6229369f683b6a121918a14ffe6c294d1c/src/semantic-ui/themes/default/assets/fonts/icons.ttf -------------------------------------------------------------------------------- /src/semantic-ui/themes/default/assets/fonts/icons.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guilhermewaess/SemVue/117ceb6229369f683b6a121918a14ffe6c294d1c/src/semantic-ui/themes/default/assets/fonts/icons.woff -------------------------------------------------------------------------------- /src/semantic-ui/themes/default/assets/fonts/icons.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guilhermewaess/SemVue/117ceb6229369f683b6a121918a14ffe6c294d1c/src/semantic-ui/themes/default/assets/fonts/icons.woff2 -------------------------------------------------------------------------------- /src/semantic-ui/themes/default/assets/images/flags.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guilhermewaess/SemVue/117ceb6229369f683b6a121918a14ffe6c294d1c/src/semantic-ui/themes/default/assets/images/flags.png -------------------------------------------------------------------------------- /src/semvue/components/Accordion.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 24 | 25 | -------------------------------------------------------------------------------- /src/semvue/components/Dimmer.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 62 | 63 | 66 | -------------------------------------------------------------------------------- /src/semvue/components/Dropdown.vue: -------------------------------------------------------------------------------- 1 | 17 | 18 | 86 | 87 | 90 | -------------------------------------------------------------------------------- /src/semvue/components/Embed.vue: -------------------------------------------------------------------------------- 1 | 8 | 9 | 54 | -------------------------------------------------------------------------------- /src/semvue/components/Modal.vue: -------------------------------------------------------------------------------- 1 | 22 | 23 | 83 | -------------------------------------------------------------------------------- /src/semvue/components/Popup.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 8 | 61 | 62 | 65 | 66 | -------------------------------------------------------------------------------- /src/semvue/components/Progress.vue: -------------------------------------------------------------------------------- 1 | 10 | 11 | 169 | -------------------------------------------------------------------------------- /src/semvue/components/Rating.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 57 | -------------------------------------------------------------------------------- /src/semvue/index.js: -------------------------------------------------------------------------------- 1 | import Accordion from '@/semvue/components/Accordion'; 2 | import Dimmer from '@/semvue/components/Dimmer'; 3 | import Dropdown from '@/semvue/components/Dropdown'; 4 | import SemVueEmbed from '@/semvue/components/Embed'; 5 | import Modal from '@/semvue/components/Modal'; 6 | import Popup from '@/semvue/components/Popup'; 7 | import SemVueProgress from '@/semvue/components/Progress'; 8 | import Rating from '@/semvue/components/Rating'; 9 | 10 | export { 11 | Accordion, 12 | Dimmer, 13 | Dropdown, 14 | SemVueEmbed, 15 | Modal, 16 | Popup, 17 | SemVueProgress, 18 | Rating, 19 | }; 20 | -------------------------------------------------------------------------------- /src/semvue/mixins/Components.js: -------------------------------------------------------------------------------- 1 | export default { 2 | props: { 3 | id: { 4 | validator: prop => prop.length, 5 | required: true, 6 | }, 7 | customClass: { 8 | type: String, 9 | default: '', 10 | }, 11 | options: { 12 | type: Object, 13 | default() { return {}; }, 14 | }, 15 | }, 16 | }; 17 | -------------------------------------------------------------------------------- /static/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guilhermewaess/SemVue/117ceb6229369f683b6a121918a14ffe6c294d1c/static/.gitkeep -------------------------------------------------------------------------------- /static/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guilhermewaess/SemVue/117ceb6229369f683b6a121918a14ffe6c294d1c/static/favicon.ico -------------------------------------------------------------------------------- /test/mocks/jqueryMock.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | const jqueryMock = {}; 3 | 4 | jqueryMock.accordion = sinon.stub().returns(jqueryMock); 5 | jqueryMock.dimmer = sinon.stub().returns(jqueryMock); 6 | jqueryMock.dropdown = sinon.stub().returns(jqueryMock); 7 | jqueryMock.embed = sinon.stub().returns(jqueryMock); 8 | jqueryMock.modal = sinon.stub().returns(jqueryMock); 9 | jqueryMock.popup = sinon.stub().returns(jqueryMock); 10 | jqueryMock.progress = sinon.stub().returns(jqueryMock); 11 | jqueryMock.rating = sinon.stub().returns(jqueryMock); 12 | 13 | jqueryMock.reset = () => { 14 | jqueryMock.accordion.reset(); 15 | jqueryMock.dimmer.reset(); 16 | jqueryMock.dropdown.reset(); 17 | jqueryMock.embed.reset(); 18 | jqueryMock.modal.reset(); 19 | jqueryMock.popup.reset(); 20 | jqueryMock.progress.reset(); 21 | jqueryMock.rating.reset(); 22 | } 23 | 24 | module.exports = sinon.stub().returns(jqueryMock); 25 | -------------------------------------------------------------------------------- /test/unit/.eslintrc: -------------------------------------------------------------------------------- 1 | { 2 | "env": { 3 | "mocha": true 4 | }, 5 | "globals": { 6 | "expect": true, 7 | "sinon": true 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /test/unit/index.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue'; 2 | 3 | Vue.config.productionTip = false; 4 | 5 | // require all test files (files that ends with .spec.js) 6 | const testsContext = require.context('./specs', true, /\.spec$/); 7 | testsContext.keys().forEach(testsContext); 8 | 9 | // require all src files except main.js for coverage. 10 | // you can also change this to match only the subset of files that 11 | // you want coverage for. 12 | const srcContext = require.context('../../src', true, /^\.\/(?!main(\.js)?$)*\/(?!semantic-ui*)/); 13 | srcContext.keys().forEach(srcContext); 14 | -------------------------------------------------------------------------------- /test/unit/karma.conf.js: -------------------------------------------------------------------------------- 1 | // This is a karma config file. For more details see 2 | // http://karma-runner.github.io/0.13/config/configuration-file.html 3 | // we are also using it with karma-webpack 4 | // https://github.com/webpack/karma-webpack 5 | 6 | var webpackConfig = require('../../build/sitedemo/webpack.test.conf'); 7 | 8 | module.exports = function (config) { 9 | config.set({ 10 | // to run in additional browsers: 11 | // 1. install corresponding karma launcher 12 | // http://karma-runner.github.io/0.13/config/browsers.html 13 | // 2. add it to the `browsers` array below. 14 | browsers: ['PhantomJS'], 15 | frameworks: ['mocha', 'sinon-chai', 'phantomjs-shim'], 16 | reporters: ['spec', 'coverage'], 17 | files: ['./index.js'], 18 | preprocessors: { 19 | './index.js': ['webpack', 'sourcemap'] 20 | }, 21 | webpack: webpackConfig, 22 | webpackMiddleware: { 23 | noInfo: true, 24 | }, 25 | coverageReporter: { 26 | dir: './coverage', 27 | reporters: [ 28 | { type: 'lcov', subdir: '.' }, 29 | { type: 'text-summary' }, 30 | ] 31 | }, 32 | }); 33 | }; 34 | -------------------------------------------------------------------------------- /test/unit/specs/semvue/Accordion.spec.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue'; 2 | import { Accordion } from '@/semvue/index'; 3 | 4 | let accordion; 5 | let validProps; 6 | const AccordionConstructor = Vue.extend(Accordion); 7 | 8 | describe('Accordion', () => { 9 | beforeEach((done) => { 10 | $().reset(); 11 | validProps = { id: 'id' }; 12 | accordion = new AccordionConstructor({ propsData: validProps }).$mount(); 13 | done(); 14 | }); 15 | describe('when constructed', () => { 16 | beforeEach((done) => { 17 | sinon.spy(console, 'error'); 18 | done(); 19 | }); 20 | afterEach((done) => { 21 | console.error.restore(); // eslint-disable-line 22 | done(); 23 | }); 24 | it('should throw exception when doesnt have id prop', (done) => { 25 | const invalidProps = {}; 26 | new AccordionConstructor({ propsData: invalidProps }).$mount(); 27 | expect(console.error).to.have.been.calledWithMatch('[Vue warn]: Missing required prop: "id"'); // eslint-disable-line 28 | done(); 29 | }); 30 | it('should have customClass as string empty', (done) => { 31 | expect(accordion.customClass).to.equal(''); 32 | done(); 33 | }); 34 | it('should have options as object empty', (done) => { 35 | expect(accordion.options).to.deep.equal({}); 36 | done(); 37 | }); 38 | }); 39 | 40 | describe('when mounted', () => { 41 | beforeEach((done) => { 42 | accordion = new AccordionConstructor({ propsData: validProps }); 43 | sinon.spy(accordion, 'startAccordion'); 44 | accordion.$mount(); 45 | done(); 46 | }); 47 | afterEach((done) => { 48 | accordion.startAccordion.restore(); 49 | done(); 50 | }); 51 | it('should startAccordion', (done) => { 52 | accordion.$nextTick(() => { 53 | expect(accordion.startAccordion).to.have.callCount(1); 54 | done(); 55 | }); 56 | }); 57 | }); 58 | 59 | describe('when requested to start rating', () => { 60 | beforeEach((done) => { 61 | $().reset(); 62 | accordion.startAccordion(); 63 | done(); 64 | }); 65 | it('should call jquery selector with ratingId', (done) => { 66 | expect($).to.have.been.calledWith(`#${validProps.id}`); 67 | done(); 68 | }); 69 | 70 | describe('and have options sent on props', () => { 71 | beforeEach((done) => { 72 | $().reset(); 73 | validProps.options = { 74 | optionToOverride: 'abc', 75 | }; 76 | accordion = new AccordionConstructor({ propsData: validProps }); 77 | 78 | accordion.startAccordion(); 79 | done(); 80 | }); 81 | it('should configure rating with the new options', (done) => { 82 | const configurationCall = $().accordion.args[0][0]; 83 | expect(configurationCall.optionToOverride).to.equal('abc'); 84 | done(); 85 | }); 86 | }); 87 | }); 88 | }); 89 | -------------------------------------------------------------------------------- /test/unit/specs/semvue/Embed.spec.js: -------------------------------------------------------------------------------- 1 | /* eslint disable no-use-before-define: 0 */ 2 | import Vue from 'vue'; 3 | import { SemVueEmbed } from '@/semvue'; 4 | 5 | let embed; 6 | let validProps; 7 | const EmbedConstructor = Vue.extend(SemVueEmbed); 8 | 9 | const helper = { 10 | createProgress() { 11 | embed = new EmbedConstructor({ propsData: validProps }).$mount(); 12 | }, 13 | }; 14 | 15 | describe('Progress', () => { 16 | beforeEach((done) => { 17 | $().reset(); 18 | validProps = { id: 'id', dataUrl: 'url' }; 19 | helper.createProgress(); 20 | done(); 21 | }); 22 | describe('when constructed', () => { 23 | beforeEach((done) => { 24 | sinon.spy(console, 'error'); 25 | done(); 26 | }); 27 | afterEach((done) => { 28 | console.error.restore(); // eslint-disable-line 29 | done(); 30 | }); 31 | it('should throw exception when doesnt have id prop', (done) => { 32 | const invalidProps = { dataUrl: 'url' }; 33 | new EmbedConstructor({ propsData: invalidProps }).$mount(); 34 | expect(console.error).to.have.been.calledWithMatch('[Vue warn]: Missing required prop: "id"'); // eslint-disable-line 35 | done(); 36 | }); 37 | it('should throw exception when doesnt have dataUrl prop', (done) => { 38 | const invalidProps = { id: 'id' }; 39 | new EmbedConstructor({ propsData: invalidProps }).$mount(); 40 | expect(console.error).to.have.been.calledWithMatch('[Vue warn]: Missing required prop: "dataUrl"'); // eslint-disable-line 41 | done(); 42 | }); 43 | it('should have dataPlaceHolder as string empty', (done) => { 44 | expect(embed.dataPlaceholder).to.equal(''); 45 | done(); 46 | }); 47 | it('should have autoplay false', (done) => { 48 | expect(embed.autoplay).to.equal(false); 49 | done(); 50 | }); 51 | it('should have customClass as string empty', (done) => { 52 | expect(embed.customClass).to.equal(''); 53 | done(); 54 | }); 55 | it('should have options as object empty', (done) => { 56 | expect(embed.options).to.deep.equal({}); 57 | done(); 58 | }); 59 | }); 60 | 61 | describe('when mounted', () => { 62 | beforeEach((done) => { 63 | embed = new EmbedConstructor({ propsData: validProps }); 64 | sinon.spy(embed, 'startEmbed'); 65 | embed.$mount(); 66 | done(); 67 | }); 68 | afterEach((done) => { 69 | embed.startEmbed.restore(); 70 | done(); 71 | }); 72 | it('should startEmbed', (done) => { 73 | embed.$nextTick(() => { 74 | expect(embed.startEmbed).to.have.callCount(1); 75 | done(); 76 | }); 77 | }); 78 | }); 79 | 80 | describe('when requested to start embed', () => { 81 | beforeEach((done) => { 82 | $().reset(); 83 | embed.startEmbed(); 84 | done(); 85 | }); 86 | it('should configure embed with autoplay', (done) => { 87 | embed.$nextTick(() => { 88 | const configurationCall = $().embed.args[0][0]; 89 | expect(configurationCall.autoplay).to.equal(embed.autoplay); 90 | done(); 91 | }); 92 | }); 93 | it('should call jquery selector with id', (done) => { 94 | embed.$nextTick(() => { 95 | expect($).to.have.been.calledWith(`#${validProps.id}`); 96 | done(); 97 | }); 98 | }); 99 | describe('and have options sent on props', () => { 100 | beforeEach((done) => { 101 | $().reset(); 102 | validProps.options = { 103 | optionToOverride: 'abc', 104 | }; 105 | embed = new EmbedConstructor({ propsData: validProps }).$mount(); 106 | 107 | embed.startEmbed(); 108 | done(); 109 | }); 110 | it('should configure embed with the new options', (done) => { 111 | embed.$nextTick(() => { 112 | const configurationCall = $().embed.args[0][0]; 113 | expect(configurationCall.optionToOverride).to.equal('abc'); 114 | done(); 115 | }); 116 | }); 117 | }); 118 | }); 119 | 120 | 121 | describe('when dateUrl is changed', () => { 122 | beforeEach((done) => { 123 | sinon.spy(embed, 'startEmbed'); 124 | 125 | embed.dataUrl = 'newUrl'; 126 | done(); 127 | }); 128 | afterEach((done) => { 129 | embed.startEmbed.restore(); 130 | done(); 131 | }); 132 | it('should startEmbed', (done) => { 133 | embed.$nextTick(() => { 134 | expect(embed.startEmbed).to.have.callCount(1); 135 | done(); 136 | }); 137 | }); 138 | }); 139 | }); 140 | -------------------------------------------------------------------------------- /test/unit/specs/site/components/DimmerDoc.spec.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue'; 2 | import DimmerDoc from '@/components/DimmerDoc'; 3 | 4 | let dimmerDoc; 5 | 6 | describe('DimmerDoc', () => { 7 | beforeEach((done) => { 8 | dimmerDoc = new Vue(DimmerDoc); 9 | done(); 10 | }); 11 | 12 | describe('when constructed', () => { 13 | it('should have showBasicDimmer false', (done) => { 14 | expect(dimmerDoc.showBasicDimmer).to.equal(false); 15 | done(); 16 | }); 17 | it('should have showLoadingDimmer false', (done) => { 18 | expect(dimmerDoc.showLoadingDimmer).to.equal(false); 19 | done(); 20 | }); 21 | it('should have showContentDimmer false', (done) => { 22 | expect(dimmerDoc.showContentDimmer).to.equal(false); 23 | done(); 24 | }); 25 | it('should have showAllParagraphsDimmer false', (done) => { 26 | expect(dimmerDoc.showAllParagraphsDimmer).to.equal(false); 27 | done(); 28 | }); 29 | it('should have showHoverDimmer false', (done) => { 30 | expect(dimmerDoc.showHoverDimmer).to.equal(false); 31 | done(); 32 | }); 33 | it('should have hoverDimmerOptions', (done) => { 34 | const options = { on: 'hover' }; 35 | expect(dimmerDoc.hoverDimmerOptions).to.deep.equal(options); 36 | done(); 37 | }); 38 | }); 39 | 40 | describe('when requested to changeDimmerVisibility', () => { 41 | it('should change property status', () => { 42 | dimmerDoc.changeDimmerVisibility('showBasicDimmer'); 43 | expect(dimmerDoc.showBasicDimmer).to.equal(true); 44 | }); 45 | }); 46 | }); 47 | -------------------------------------------------------------------------------- /test/unit/specs/site/components/DropdownDoc.spec.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue'; 2 | import DropdownDoc from '@/components/DropdownDoc'; 3 | 4 | let dropdownDoc; 5 | 6 | describe('DropdownDoc', () => { 7 | beforeEach((done) => { 8 | dropdownDoc = new Vue(DropdownDoc); 9 | done(); 10 | }); 11 | 12 | describe('when constructed', () => { 13 | it('should have dropdownOptions with default options', (done) => { 14 | expect(dropdownDoc.dropdownOptions).to.equal(dropdownDoc.defaultOptions); 15 | done(); 16 | }); 17 | it('should have selectedValue with first element of defaultOptions', (done) => { 18 | expect(dropdownDoc.selectedValue).to.equal(dropdownDoc.defaultOptions[0]); 19 | done(); 20 | }); 21 | it('should have iconProperty with iconClass', (done) => { 22 | expect(dropdownDoc.iconProperty).to.equal('iconClass'); 23 | done(); 24 | }); 25 | it('should have defaultOptions', (done) => { 26 | const expectedOptions = [ 27 | { iconClass: 'volume control phone', value: 1, text: 'Hello, I\'m normal phone 1' }, 28 | { iconClass: 'mobile', value: 2, text: 'Hello, I\'m mobile phone 2' }, 29 | { iconClass: 'whatsapp', value: 3, text: 'Hello, I\'m whats phone 3' }, 30 | ]; 31 | expect(dropdownDoc.defaultOptions).to.deep.equal(expectedOptions); 32 | done(); 33 | }); 34 | it('should have anotherOptions', (done) => { 35 | const expectedOptions = [ 36 | { iconClass: 'volume control phone', value: 1, text: 'Hello, I\'m THE NEW normal phone 1' }, 37 | { iconClass: 'mobile', value: 2, text: 'Hello, I\'m THE NEW mobile phone 2' }, 38 | { iconClass: 'whatsapp', value: 3, text: 'Hello, I\'m THE NEW whats phone 3' }, 39 | ]; 40 | expect(dropdownDoc.anotherOptions).to.deep.equal(expectedOptions); 41 | done(); 42 | }); 43 | it('should have optionsWithoutText', (done) => { 44 | const expectedOptions = [ 45 | { iconClass: 'volume control phone', value: 1 }, 46 | { iconClass: 'mobile', value: 2 }, 47 | { iconClass: 'whatsapp', value: 3 }, 48 | ]; 49 | expect(dropdownDoc.optionsWithoutText).to.deep.equal(expectedOptions); 50 | done(); 51 | }); 52 | }); 53 | 54 | describe('when requested to changeOptions', () => { 55 | beforeEach((done) => { 56 | dropdownDoc.iconProperty = ''; 57 | done(); 58 | }); 59 | it('should change dropdownOptions with anotherOptions if actual options is defaultOptions', () => { 60 | dropdownDoc.dropdownOptions = dropdownDoc.defaultOptions; 61 | dropdownDoc.changeOptions(); 62 | expect(dropdownDoc.dropdownOptions).to.deep.equal(dropdownDoc.anotherOptions); 63 | }); 64 | it('should change dropdownOptions with defaultOptions if actual options is anotherOptions', () => { 65 | dropdownDoc.dropdownOptions = dropdownDoc.anotherOptions; 66 | dropdownDoc.changeOptions(); 67 | expect(dropdownDoc.dropdownOptions).to.deep.equal(dropdownDoc.defaultOptions); 68 | }); 69 | it('should restore iconProperty', (done) => { 70 | dropdownDoc.changeOptions(); 71 | expect(dropdownDoc.iconProperty).to.equal('iconClass'); 72 | done(); 73 | }); 74 | }); 75 | 76 | describe('when requested to changeToOnlyIcons', () => { 77 | beforeEach((done) => { 78 | dropdownDoc.iconProperty = ''; 79 | dropdownDoc.changeToOnlyIcons(); 80 | done(); 81 | }); 82 | it('should change dropdownOptions with optionWithoutText', () => { 83 | expect(dropdownDoc.dropdownOptions).to.deep.equal(dropdownDoc.optionsWithoutText); 84 | }); 85 | it('should restore iconProperty', (done) => { 86 | expect(dropdownDoc.iconProperty).to.equal('iconClass'); 87 | done(); 88 | }); 89 | }); 90 | 91 | describe('when requested to changeToOnlyText', () => { 92 | it('should change dropdownOptions with defaultOptions', () => { 93 | dropdownDoc.dropdownOptions = dropdownDoc.anotherOptions; 94 | dropdownDoc.changeToOnlyText(); 95 | expect(dropdownDoc.dropdownOptions).to.deep.equal(dropdownDoc.defaultOptions); 96 | }); 97 | it('should change iconProperty with empty string', () => { 98 | dropdownDoc.changeToOnlyText(); 99 | expect(dropdownDoc.iconProperty).to.equal(''); 100 | }); 101 | }); 102 | 103 | describe('when requested to changeToIconsAndText', () => { 104 | beforeEach((done) => { 105 | dropdownDoc.iconProperty = ''; 106 | dropdownDoc.dropdownOptions = dropdownDoc.anotherOptions; 107 | dropdownDoc.changeToIconsAndText(); 108 | done(); 109 | }); 110 | it('should change dropdownOptions with defaultOptions', () => { 111 | expect(dropdownDoc.dropdownOptions).to.deep.equal(dropdownDoc.defaultOptions); 112 | }); 113 | it('should restore iconProperty', (done) => { 114 | expect(dropdownDoc.iconProperty).to.equal('iconClass'); 115 | done(); 116 | }); 117 | }); 118 | }); 119 | -------------------------------------------------------------------------------- /test/unit/specs/site/components/ModalDoc.spec.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue'; 2 | import ModalDoc from '@/components/ModalDoc'; 3 | 4 | let modalDoc; 5 | 6 | describe('ModalDoc', () => { 7 | beforeEach((done) => { 8 | modalDoc = new Vue(ModalDoc); 9 | done(); 10 | }); 11 | 12 | describe('when constructed', () => { 13 | it('should have showBasicModal false', (done) => { 14 | expect(modalDoc.showBasicModal).to.equal(false); 15 | done(); 16 | }); 17 | it('should have showLongModal false', (done) => { 18 | expect(modalDoc.showLongModal).to.equal(false); 19 | done(); 20 | }); 21 | }); 22 | 23 | describe('when requested to changeModalStatus', () => { 24 | it('should change property status', () => { 25 | modalDoc.changeModalStatus('showBasicModal', true); 26 | expect(modalDoc.showBasicModal).to.equal(true); 27 | }); 28 | }); 29 | }); 30 | -------------------------------------------------------------------------------- /test/unit/specs/site/components/PopupDoc.spec.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue'; 2 | import PopupDoc from '@/components/PopupDoc'; 3 | 4 | let popupDoc; 5 | 6 | describe('PopupDoc', () => { 7 | beforeEach((done) => { 8 | popupDoc = new Vue(PopupDoc); 9 | done(); 10 | }); 11 | 12 | describe('when constructed', () => { 13 | it('should have position top left', (done) => { 14 | expect(popupDoc.position).to.deep.equal({ value: 'top left', text: 'Top Left' }); 15 | done(); 16 | }); 17 | it('should have trigger click', (done) => { 18 | expect(popupDoc.trigger).to.deep.equal({ value: 'click', text: 'Click' }); 19 | done(); 20 | }); 21 | it('should have transition horizontal flip', (done) => { 22 | expect(popupDoc.transition).to.deep.equal({ value: 'horizontal flip', text: 'Horizontal Flip' }); 23 | done(); 24 | }); 25 | it('should have positions', (done) => { 26 | const expectedPositions = [ 27 | { value: 'top left', text: 'Top Left' }, 28 | { value: 'top center', text: 'Top Center' }, 29 | { value: 'top right', text: 'Top Right' }, 30 | { value: 'bottom left', text: 'Bottom Left' }, 31 | { value: 'bottom center', text: 'Bottom Center' }, 32 | { value: 'bottom right', text: 'Bottom Right' }, 33 | { value: 'right center', text: 'Right Center' }, 34 | { value: 'left center', text: 'Left Center' }, 35 | ]; 36 | expect(popupDoc.positions).to.deep.equal(expectedPositions); 37 | done(); 38 | }); 39 | it('should have transitions', (done) => { 40 | const expectedTransitions = [ 41 | { value: 'horizontal flip', text: 'Horizontal Flip' }, 42 | { value: 'vertical flip', text: 'Vertical Flip' }, 43 | { value: 'fade up', text: 'Fade Up' }, 44 | { value: 'fade', text: 'Fade' }, 45 | { value: 'scale', text: 'Scale' }, 46 | ]; 47 | expect(popupDoc.transitions).to.deep.equal(expectedTransitions); 48 | done(); 49 | }); 50 | it('should have triggers', (done) => { 51 | const expectedTriggers = [ 52 | { value: 'click', text: 'Click' }, 53 | { value: 'hover', text: 'Hover' }, 54 | ]; 55 | expect(popupDoc.triggers).to.deep.equal(expectedTriggers); 56 | done(); 57 | }); 58 | }); 59 | 60 | describe('when requested popupOptions', () => { 61 | it('should return a computed options', (done) => { 62 | const expectedOptions = { 63 | closable: false, 64 | duration: 500, 65 | position: popupDoc.position.value, 66 | transition: popupDoc.transition.value, 67 | }; 68 | expect(popupDoc.popupOptions).to.deep.equal(expectedOptions); 69 | done(); 70 | }); 71 | }); 72 | }); 73 | -------------------------------------------------------------------------------- /test/unit/specs/site/components/ProgressDoc.spec.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue'; 2 | import ProgressDoc from '@/components/ProgressDoc'; 3 | 4 | let progressDoc; 5 | 6 | const helper = { 7 | createProgressMock() { 8 | return { 9 | increment: sinon.spy(), 10 | decrement: sinon.spy(), 11 | complete: sinon.spy(), 12 | reset: sinon.spy(), 13 | setActive: sinon.spy(), 14 | }; 15 | }, 16 | }; 17 | 18 | describe('ProgressDoc', () => { 19 | beforeEach((done) => { 20 | progressDoc = new Vue(ProgressDoc); 21 | progressDoc.$refs.progress = helper.createProgressMock(); 22 | progressDoc.$refs.topSegmentProgress = helper.createProgressMock(); 23 | progressDoc.$refs.bottomSegmentProgress = helper.createProgressMock(); 24 | done(); 25 | }); 26 | describe('when requested to increment', () => { 27 | beforeEach((done) => { 28 | progressDoc.increment(); 29 | done(); 30 | }); 31 | it('should increment progress', () => { 32 | expect(progressDoc.$refs.progress.increment).to.have.callCount(1); 33 | }); 34 | it('should increment topSegmentProgress', () => { 35 | expect(progressDoc.$refs.topSegmentProgress.increment).to.have.callCount(1); 36 | }); 37 | it('should increment bottomSegmentProgress', () => { 38 | expect(progressDoc.$refs.bottomSegmentProgress.increment).to.have.callCount(1); 39 | }); 40 | }); 41 | describe('when requested to decrement', () => { 42 | beforeEach((done) => { 43 | progressDoc.decrement(); 44 | done(); 45 | }); 46 | it('should decrement progress', () => { 47 | expect(progressDoc.$refs.progress.decrement).to.have.callCount(1); 48 | }); 49 | it('should decrement topSegmentProgress', () => { 50 | expect(progressDoc.$refs.topSegmentProgress.decrement).to.have.callCount(1); 51 | }); 52 | it('should decrement bottomSegmentProgress', () => { 53 | expect(progressDoc.$refs.bottomSegmentProgress.decrement).to.have.callCount(1); 54 | }); 55 | }); 56 | describe('when requested to complete', () => { 57 | beforeEach((done) => { 58 | progressDoc.complete(); 59 | done(); 60 | }); 61 | it('should complete progress', () => { 62 | expect(progressDoc.$refs.progress.complete).to.have.callCount(1); 63 | }); 64 | it('should complete topSegmentProgress', () => { 65 | expect(progressDoc.$refs.topSegmentProgress.complete).to.have.callCount(1); 66 | }); 67 | it('should complete bottomSegmentProgress', () => { 68 | expect(progressDoc.$refs.bottomSegmentProgress.complete).to.have.callCount(1); 69 | }); 70 | }); 71 | describe('when requested to reset', () => { 72 | beforeEach((done) => { 73 | progressDoc.reset(); 74 | done(); 75 | }); 76 | it('should reset progress', () => { 77 | expect(progressDoc.$refs.progress.reset).to.have.callCount(1); 78 | }); 79 | it('should reset topSegmentProgress', () => { 80 | expect(progressDoc.$refs.topSegmentProgress.reset).to.have.callCount(1); 81 | }); 82 | it('should reset bottomSegmentProgress', () => { 83 | expect(progressDoc.$refs.bottomSegmentProgress.reset).to.have.callCount(1); 84 | }); 85 | }); 86 | describe('when requested to setState', () => { 87 | beforeEach((done) => { 88 | progressDoc.setState('setActive'); 89 | done(); 90 | }); 91 | it('should setState progress', () => { 92 | expect(progressDoc.$refs.progress.setActive).to.have.been.callCount(1); 93 | }); 94 | it('should setState topSegmentProgress', () => { 95 | expect(progressDoc.$refs.topSegmentProgress.setActive).to.have.been.callCount(1); 96 | }); 97 | it('should setState bottomSegmentProgress', () => { 98 | expect(progressDoc.$refs.bottomSegmentProgress.setActive).to.have.been.callCount(1); 99 | }); 100 | }); 101 | describe('when requested to setTotal', () => { 102 | it('should setTotal to 10 when actual is 100', () => { 103 | progressDoc.setTotal(); 104 | expect(progressDoc.total).to.equal(10); 105 | }); 106 | it('should setTotal to 100 when actual is 10', () => { 107 | progressDoc.total = 10; 108 | progressDoc.setTotal(); 109 | expect(progressDoc.total).to.equal(100); 110 | }); 111 | }); 112 | }); 113 | -------------------------------------------------------------------------------- /test/unit/specs/site/components/RatingDoc.spec.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue'; 2 | import RatingDoc from '@/components/RatingDoc'; 3 | 4 | let ratingDoc; 5 | 6 | describe('RatingDoc', () => { 7 | beforeEach((done) => { 8 | ratingDoc = new Vue(RatingDoc); 9 | done(); 10 | }); 11 | 12 | describe('when constructed', () => { 13 | it('should have currentRating 1', (done) => { 14 | expect(ratingDoc.currentRating).to.equal(1); 15 | done(); 16 | }); 17 | it('should have type star', (done) => { 18 | expect(ratingDoc.type).to.equal('star'); 19 | done(); 20 | }); 21 | }); 22 | 23 | describe('when requested to changeIconType', () => { 24 | it('should change the type of rating', (done) => { 25 | const newType = 'heart'; 26 | ratingDoc.changeIconType(newType); 27 | expect(ratingDoc.type).to.equal(newType); 28 | done(); 29 | }); 30 | }); 31 | 32 | describe('when requested to increaseRating', () => { 33 | beforeEach((done) => { 34 | ratingDoc.currentRating = 0; 35 | ratingDoc.increaseRating(); 36 | done(); 37 | }); 38 | it('should increase currentRating', () => { 39 | expect(ratingDoc.currentRating).to.equal(1); 40 | }); 41 | describe('and currentRating is 5', () => { 42 | beforeEach((done) => { 43 | ratingDoc.currentRating = 5; 44 | ratingDoc.increaseRating(); 45 | done(); 46 | }); 47 | it('should set currentRating to 0', (done) => { 48 | expect(ratingDoc.currentRating).to.equal(0); 49 | done(); 50 | }); 51 | }); 52 | }); 53 | 54 | describe('when requested to decreaseRating', () => { 55 | beforeEach((done) => { 56 | ratingDoc.currentRating = 1; 57 | ratingDoc.decreaseRating(); 58 | done(); 59 | }); 60 | it('should increase currentRating', () => { 61 | expect(ratingDoc.currentRating).to.equal(0); 62 | }); 63 | describe('and currentRating is 0', () => { 64 | beforeEach((done) => { 65 | ratingDoc.currentRating = 0; 66 | ratingDoc.decreaseRating(); 67 | done(); 68 | }); 69 | it('should set currentRating to 5', (done) => { 70 | expect(ratingDoc.currentRating).to.equal(5); 71 | done(); 72 | }); 73 | }); 74 | }); 75 | }); 76 | --------------------------------------------------------------------------------