chore: rename folders
This commit is contained in:
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"presets": [
|
||||
["env", { "modules": false }],
|
||||
"stage-2"
|
||||
],
|
||||
"plugins": ["transform-runtime"],
|
||||
"comments": false,
|
||||
"env": {
|
||||
"test": {
|
||||
"presets": ["env", "stage-2"],
|
||||
"plugins": [ "istanbul" ]
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
root = true
|
||||
|
||||
[*]
|
||||
charset = utf-8
|
||||
indent_style = space
|
||||
indent_size = 2
|
||||
end_of_line = lf
|
||||
insert_final_newline = true
|
||||
trim_trailing_whitespace = true
|
||||
@@ -0,0 +1,2 @@
|
||||
build/*.js
|
||||
config/*.js
|
||||
@@ -0,0 +1,27 @@
|
||||
// http://eslint.org/docs/user-guide/configuring
|
||||
|
||||
module.exports = {
|
||||
root: true,
|
||||
parser: 'babel-eslint',
|
||||
parserOptions: {
|
||||
sourceType: 'module'
|
||||
},
|
||||
env: {
|
||||
browser: true,
|
||||
},
|
||||
// https://github.com/feross/standard/blob/master/RULES.md#javascript-standard-style
|
||||
extends: 'standard',
|
||||
// required to lint *.vue files
|
||||
plugins: [
|
||||
'html'
|
||||
],
|
||||
// add your custom rules here
|
||||
'rules': {
|
||||
// allow paren-less arrow functions
|
||||
'arrow-parens': 0,
|
||||
// allow async-await
|
||||
'generator-star-spacing': 0,
|
||||
// allow debugger during development
|
||||
'no-debugger': process.env.NODE_ENV === 'production' ? 2 : 0
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
.DS_Store
|
||||
node_modules/
|
||||
dist/
|
||||
npm-debug.log*
|
||||
yarn-debug.log*
|
||||
yarn-error.log*
|
||||
test/unit/coverage
|
||||
test/e2e/reports
|
||||
selenium-debug.log
|
||||
@@ -0,0 +1,8 @@
|
||||
// https://github.com/michael-ciniawsky/postcss-load-config
|
||||
|
||||
module.exports = {
|
||||
"plugins": {
|
||||
// to edit target browsers: use "browserlist" field in package.json
|
||||
"autoprefixer": {}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,64 @@
|
||||
## [vue](./README.md) version `changelog`
|
||||
|
||||
##### `v1.0.10`
|
||||
- fix: `className` -> `class`
|
||||
- refactor: `<b-input-group-prepend>`
|
||||
- refactor: `<b-input-group-append>`
|
||||
- refactor: `<b-input-group-text>`
|
||||
- refactor: remove `<b-input-group-button>`
|
||||
- test: initial `Dashboard` unit test added
|
||||
- update: bootstrap-vue to `2.0.0-rc.1`
|
||||
- chore: dependencies update
|
||||
|
||||
###### `v1.0.9`
|
||||
- refactor: Sidebar structure
|
||||
- test: initial e2e test added
|
||||
- chore: dependencies update
|
||||
|
||||
###### `v1.0.8`
|
||||
- update: vue to `2.5.13`
|
||||
- update: Bootstrap to `4.0.0-beta.3`
|
||||
- update: bootstrap-vue to `1.4.0`
|
||||
- chore: dependencies update
|
||||
- refactor: `<b-table>` use the prop `responsive="sm"` instead of `class="table-responsive-sm"`
|
||||
- fix: `Vue warn:` Do not use built-in or reserved HTML elements as component id: (header, aside, footer, table)
|
||||
- feature: some Bootstrap4 components added
|
||||
- temp tweaks(b4 beta3): `InputGroupAddon` and `InputGroupButton`
|
||||
- refactor(checkboxes, radios, labels): temp tweaks
|
||||
- feat: mobile sidebar link click closes the sidebar [#18](https://github.com/mrholek/CoreUI-Vue/pull/18)
|
||||
|
||||
###### `v1.0.6`
|
||||
- refactor: raw html to `b-row`, `b-col`, `b-card`, `b-button` components
|
||||
- fix: Cards.vue: change `variant="accent-` to `class="card-accent-`
|
||||
- refactor: Modal's ok-button variants
|
||||
- refactor: forms with validation feedback
|
||||
- update: bootstrap-vue to `1.1.0`
|
||||
- update: to vue: `2.5.6`
|
||||
|
||||
###### `v1.0.5`
|
||||
- update: bootstrap-vue to `1.0.x`
|
||||
- fix: use `<b-form-radio-group>` instead of `<b-form-radio>` **[breaking change](https://bootstrap-vue.js.org/docs/components/form-radios)** :fire:
|
||||
- refactor: `<b-table>` bootstrap-vue component in `Tables` #24
|
||||
- refactor: extract `Table` component from `Tables`
|
||||
- refactor: `<b-table>` bootstrap-vue component in `Switches` #24
|
||||
- fix: add `table-responsive-sm` class to `Tables` #26
|
||||
- refactor: use component `<b-navbar-nav>` instead of deprecated prop `is-nav-bar`
|
||||
- fix: `b-progress` `height` property workaround (bootstrap-vue)
|
||||
- chore: dependencies update
|
||||
|
||||
###### `v1.0.4`
|
||||
- refactor: import Bootstrap 4 SCSS files from node_modules
|
||||
- fix: callouts styles
|
||||
|
||||
###### `v1.0.3`
|
||||
- update: Bootstrap version to `4.0.0-beta.2`
|
||||
- update: vue-chartjs to `3.0.0` **[breaking change](https://github.com/apertureless/vue-chartjs/releases/tag/v3.0.0)** :fire:
|
||||
|
||||
###### `v1.0.2`
|
||||
- update: to vue: `^2.5.x`
|
||||
- update: bootstrap-vue to `1.0.0-beta.9`
|
||||
- refactor: (vue `v2.5.x`) deprecated `<template scope="props">` replace with `<div slot-scope="props">`
|
||||
- refactor: `HeaderDropdown` component added to `Header`
|
||||
- refactor: `b-badge` component added (bootstrap-vue)
|
||||
- chore: `package.json` project dependencies update
|
||||
|
||||
@@ -0,0 +1,30 @@
|
||||
# core-ui
|
||||
|
||||
> Open Source Admin Template
|
||||
|
||||
## Build Setup
|
||||
|
||||
``` bash
|
||||
# install dependencies
|
||||
npm install
|
||||
|
||||
# serve with hot reload at localhost:8080
|
||||
npm run dev
|
||||
|
||||
# build for production with minification
|
||||
npm run build
|
||||
|
||||
# build for production and view the bundle analyzer report
|
||||
npm run build --report
|
||||
|
||||
# run unit tests
|
||||
npm run unit
|
||||
|
||||
# run e2e tests
|
||||
npm run e2e
|
||||
|
||||
# run all tests
|
||||
npm test
|
||||
```
|
||||
|
||||
For detailed explanation on how things work, checkout the [guide](http://vuejs-templates.github.io/webpack/) and [docs for vue-loader](http://vuejs.github.io/vue-loader).
|
||||
@@ -0,0 +1,35 @@
|
||||
require('./check-versions')()
|
||||
|
||||
process.env.NODE_ENV = 'production'
|
||||
|
||||
var ora = require('ora')
|
||||
var rm = require('rimraf')
|
||||
var path = require('path')
|
||||
var chalk = require('chalk')
|
||||
var webpack = require('webpack')
|
||||
var config = require('../config')
|
||||
var webpackConfig = require('./webpack.prod.conf')
|
||||
|
||||
var spinner = ora('building for production...')
|
||||
spinner.start()
|
||||
|
||||
rm(path.join(config.build.assetsRoot, config.build.assetsSubDirectory), err => {
|
||||
if (err) throw err
|
||||
webpack(webpackConfig, function (err, stats) {
|
||||
spinner.stop()
|
||||
if (err) throw err
|
||||
process.stdout.write(stats.toString({
|
||||
colors: true,
|
||||
modules: false,
|
||||
children: false,
|
||||
chunks: false,
|
||||
chunkModules: false
|
||||
}) + '\n\n')
|
||||
|
||||
console.log(chalk.cyan(' Build complete.\n'))
|
||||
console.log(chalk.yellow(
|
||||
' Tip: built files are meant to be served over an HTTP server.\n' +
|
||||
' Opening index.html over file:// won\'t work.\n'
|
||||
))
|
||||
})
|
||||
})
|
||||
@@ -0,0 +1,48 @@
|
||||
var chalk = require('chalk')
|
||||
var semver = require('semver')
|
||||
var packageConfig = require('../package.json')
|
||||
var shell = require('shelljs')
|
||||
function exec (cmd) {
|
||||
return require('child_process').execSync(cmd).toString().trim()
|
||||
}
|
||||
|
||||
var versionRequirements = [
|
||||
{
|
||||
name: 'node',
|
||||
currentVersion: semver.clean(process.version),
|
||||
versionRequirement: packageConfig.engines.node
|
||||
},
|
||||
]
|
||||
|
||||
if (shell.which('npm')) {
|
||||
versionRequirements.push({
|
||||
name: 'npm',
|
||||
currentVersion: exec('npm --version'),
|
||||
versionRequirement: packageConfig.engines.npm
|
||||
})
|
||||
}
|
||||
|
||||
module.exports = function () {
|
||||
var warnings = []
|
||||
for (var i = 0; i < versionRequirements.length; i++) {
|
||||
var mod = versionRequirements[i]
|
||||
if (!semver.satisfies(mod.currentVersion, mod.versionRequirement)) {
|
||||
warnings.push(mod.name + ': ' +
|
||||
chalk.red(mod.currentVersion) + ' should be ' +
|
||||
chalk.green(mod.versionRequirement)
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
if (warnings.length) {
|
||||
console.log('')
|
||||
console.log(chalk.yellow('To use this template, you must update following to modules:'))
|
||||
console.log()
|
||||
for (var i = 0; i < warnings.length; i++) {
|
||||
var warning = warnings[i]
|
||||
console.log(' ' + warning)
|
||||
}
|
||||
console.log()
|
||||
process.exit(1)
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
/* eslint-disable */
|
||||
require('eventsource-polyfill')
|
||||
var hotClient = require('webpack-hot-middleware/client?noInfo=true&reload=true')
|
||||
|
||||
hotClient.subscribe(function (event) {
|
||||
if (event.action === 'reload') {
|
||||
window.location.reload()
|
||||
}
|
||||
})
|
||||
@@ -0,0 +1,91 @@
|
||||
require('./check-versions')()
|
||||
|
||||
var config = require('../config')
|
||||
if (!process.env.NODE_ENV) {
|
||||
process.env.NODE_ENV = JSON.parse(config.dev.env.NODE_ENV)
|
||||
}
|
||||
|
||||
var opn = require('opn')
|
||||
var path = require('path')
|
||||
var express = require('express')
|
||||
var webpack = require('webpack')
|
||||
var proxyMiddleware = require('http-proxy-middleware')
|
||||
var webpackConfig = process.env.NODE_ENV === 'testing'
|
||||
? require('./webpack.prod.conf')
|
||||
: require('./webpack.dev.conf')
|
||||
|
||||
// default port where dev server listens for incoming traffic
|
||||
var port = process.env.PORT || config.dev.port
|
||||
// automatically open browser, if not set will be false
|
||||
var autoOpenBrowser = !!config.dev.autoOpenBrowser
|
||||
// Define HTTP proxies to your custom API backend
|
||||
// https://github.com/chimurai/http-proxy-middleware
|
||||
var proxyTable = config.dev.proxyTable
|
||||
|
||||
var app = express()
|
||||
var compiler = webpack(webpackConfig)
|
||||
|
||||
var devMiddleware = require('webpack-dev-middleware')(compiler, {
|
||||
publicPath: webpackConfig.output.publicPath,
|
||||
quiet: true
|
||||
})
|
||||
|
||||
var hotMiddleware = require('webpack-hot-middleware')(compiler, {
|
||||
log: () => {}
|
||||
})
|
||||
// force page reload when html-webpack-plugin template changes
|
||||
compiler.plugin('compilation', function (compilation) {
|
||||
compilation.plugin('html-webpack-plugin-after-emit', function (data, cb) {
|
||||
hotMiddleware.publish({ action: 'reload' })
|
||||
cb()
|
||||
})
|
||||
})
|
||||
|
||||
// proxy api requests
|
||||
Object.keys(proxyTable).forEach(function (context) {
|
||||
var options = proxyTable[context]
|
||||
if (typeof options === 'string') {
|
||||
options = { target: options }
|
||||
}
|
||||
app.use(proxyMiddleware(options.filter || context, options))
|
||||
})
|
||||
|
||||
// handle fallback for HTML5 history API
|
||||
app.use(require('connect-history-api-fallback')())
|
||||
|
||||
// serve webpack bundle output
|
||||
app.use(devMiddleware)
|
||||
|
||||
// enable hot-reload and state-preserving
|
||||
// compilation error display
|
||||
app.use(hotMiddleware)
|
||||
|
||||
// serve pure static assets
|
||||
var staticPath = path.posix.join(config.dev.assetsPublicPath, config.dev.assetsSubDirectory)
|
||||
app.use(staticPath, express.static('./static'))
|
||||
|
||||
var uri = 'http://localhost:' + port
|
||||
|
||||
var _resolve
|
||||
var readyPromise = new Promise(resolve => {
|
||||
_resolve = resolve
|
||||
})
|
||||
|
||||
console.log('> Starting dev server...')
|
||||
devMiddleware.waitUntilValid(() => {
|
||||
console.log('> Listening at ' + uri + '\n')
|
||||
// when env is testing, don't need open it
|
||||
if (autoOpenBrowser && process.env.NODE_ENV !== 'testing') {
|
||||
opn(uri)
|
||||
}
|
||||
_resolve()
|
||||
})
|
||||
|
||||
var server = app.listen(port)
|
||||
|
||||
module.exports = {
|
||||
ready: readyPromise,
|
||||
close: () => {
|
||||
server.close()
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,72 @@
|
||||
var path = require('path')
|
||||
var config = require('../config')
|
||||
var ExtractTextPlugin = require('extract-text-webpack-plugin')
|
||||
|
||||
exports.assetsPath = function (_path) {
|
||||
var assetsSubDirectory = process.env.NODE_ENV === 'production'
|
||||
? config.build.assetsSubDirectory
|
||||
: config.dev.assetsSubDirectory
|
||||
return path.posix.join(assetsSubDirectory, _path)
|
||||
}
|
||||
|
||||
exports.cssLoaders = function (options) {
|
||||
options = options || {}
|
||||
|
||||
var cssLoader = {
|
||||
loader: 'css-loader',
|
||||
options: {
|
||||
minimize: process.env.NODE_ENV === 'production',
|
||||
sourceMap: options.sourceMap,
|
||||
alias: { '../img': '../static/img' }
|
||||
}
|
||||
}
|
||||
|
||||
// generate loader string to be used with extract text plugin
|
||||
function generateLoaders (loader, loaderOptions) {
|
||||
var loaders = [cssLoader]
|
||||
if (loader) {
|
||||
loaders.push({
|
||||
loader: loader + '-loader',
|
||||
options: Object.assign({}, loaderOptions, {
|
||||
sourceMap: options.sourceMap
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
// Extract CSS when that option is specified
|
||||
// (which is the case during production build)
|
||||
if (options.extract) {
|
||||
return ExtractTextPlugin.extract({
|
||||
use: loaders,
|
||||
fallback: 'vue-style-loader'
|
||||
})
|
||||
} else {
|
||||
return ['vue-style-loader'].concat(loaders)
|
||||
}
|
||||
}
|
||||
|
||||
// https://vue-loader.vuejs.org/en/configurations/extract-css.html
|
||||
return {
|
||||
css: generateLoaders(),
|
||||
postcss: generateLoaders(),
|
||||
less: generateLoaders('less'),
|
||||
sass: generateLoaders('sass', { indentedSyntax: true }),
|
||||
scss: generateLoaders('sass'),
|
||||
stylus: generateLoaders('stylus'),
|
||||
styl: generateLoaders('stylus')
|
||||
}
|
||||
}
|
||||
|
||||
// Generate loaders for standalone style files (outside of .vue)
|
||||
exports.styleLoaders = function (options) {
|
||||
var output = []
|
||||
var loaders = exports.cssLoaders(options)
|
||||
for (var extension in loaders) {
|
||||
var loader = loaders[extension]
|
||||
output.push({
|
||||
test: new RegExp('\\.' + extension + '$'),
|
||||
use: loader
|
||||
})
|
||||
}
|
||||
return output
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
var utils = require('./utils')
|
||||
var config = require('../config')
|
||||
var isProduction = process.env.NODE_ENV === 'production'
|
||||
|
||||
module.exports = {
|
||||
loaders: utils.cssLoaders({
|
||||
sourceMap: isProduction
|
||||
? config.build.productionSourceMap
|
||||
: config.dev.cssSourceMap,
|
||||
extract: isProduction
|
||||
})
|
||||
}
|
||||
@@ -0,0 +1,76 @@
|
||||
var path = require('path')
|
||||
var utils = require('./utils')
|
||||
var config = require('../config')
|
||||
var vueLoaderConfig = require('./vue-loader.conf')
|
||||
|
||||
function resolve (dir) {
|
||||
return path.join(__dirname, '..', dir)
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
entry: {
|
||||
app: './src/main.js'
|
||||
},
|
||||
output: {
|
||||
path: config.build.assetsRoot,
|
||||
filename: '[name].js',
|
||||
publicPath: process.env.NODE_ENV === 'production'
|
||||
? config.build.assetsPublicPath
|
||||
: config.dev.assetsPublicPath
|
||||
},
|
||||
resolve: {
|
||||
extensions: ['.js', '.vue', '.json'],
|
||||
alias: {
|
||||
'vue$': 'vue/dist/vue.esm.js',
|
||||
'@': resolve('src')
|
||||
}
|
||||
},
|
||||
module: {
|
||||
rules: [
|
||||
{
|
||||
test: /\.(js|vue)$/,
|
||||
loader: 'eslint-loader',
|
||||
enforce: 'pre',
|
||||
include: [resolve('src'), resolve('test')],
|
||||
options: {
|
||||
formatter: require('eslint-friendly-formatter')
|
||||
}
|
||||
},
|
||||
{
|
||||
test: /\.vue$/,
|
||||
loader: 'vue-loader',
|
||||
options: vueLoaderConfig
|
||||
},
|
||||
{
|
||||
test: /\.js$/,
|
||||
loader: 'babel-loader',
|
||||
include: [resolve('src'), resolve('test')]
|
||||
},
|
||||
{
|
||||
test: /\.(png|jpe?g|gif|svg)(\?.*)?$/,
|
||||
exclude: [/fonts/],
|
||||
use: {
|
||||
loader: 'file-loader',
|
||||
options: {
|
||||
name: '[name].[hash:7].[ext]',
|
||||
publicPath: '../../',
|
||||
outputPath: utils.assetsPath('img/'),
|
||||
emitFile: true
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
test: /\.(woff2?|ttf|eot|svg)(\?v=\d+\.\d+\.\d+)?$/,
|
||||
exclude: [/flags/],
|
||||
use: {
|
||||
loader: 'file-loader',
|
||||
options: {
|
||||
name: '[name].[hash:7].[ext]',
|
||||
publicPath: '../../',
|
||||
outputPath: utils.assetsPath('fonts/')
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,45 @@
|
||||
var path = require('path')
|
||||
var utils = require('./utils')
|
||||
var webpack = require('webpack')
|
||||
var config = require('../config')
|
||||
var merge = require('webpack-merge')
|
||||
var baseWebpackConfig = require('./webpack.base.conf')
|
||||
var CopyWebpackPlugin = require('copy-webpack-plugin')
|
||||
var HtmlWebpackPlugin = require('html-webpack-plugin')
|
||||
var FriendlyErrorsPlugin = require('friendly-errors-webpack-plugin')
|
||||
|
||||
// add hot-reload related code to entry chunks
|
||||
Object.keys(baseWebpackConfig.entry).forEach(function (name) {
|
||||
baseWebpackConfig.entry[name] = ['./build/dev-client'].concat(baseWebpackConfig.entry[name])
|
||||
})
|
||||
|
||||
module.exports = merge(baseWebpackConfig, {
|
||||
module: {
|
||||
rules: utils.styleLoaders({ sourceMap: config.dev.cssSourceMap })
|
||||
},
|
||||
// cheap-module-eval-source-map is faster for development
|
||||
devtool: '#cheap-module-eval-source-map',
|
||||
plugins: [
|
||||
new webpack.DefinePlugin({
|
||||
'process.env': config.dev.env
|
||||
}),
|
||||
// https://github.com/glenjamin/webpack-hot-middleware#installation--usage
|
||||
new webpack.HotModuleReplacementPlugin(),
|
||||
new webpack.NoEmitOnErrorsPlugin(),
|
||||
// https://github.com/ampedandwired/html-webpack-plugin
|
||||
new HtmlWebpackPlugin({
|
||||
filename: 'index.html',
|
||||
template: 'index.html',
|
||||
inject: true
|
||||
}),
|
||||
new FriendlyErrorsPlugin(),
|
||||
// copy custom static assets
|
||||
new CopyWebpackPlugin([
|
||||
{
|
||||
from: path.resolve(__dirname, '../static'),
|
||||
to: config.build.assetsSubDirectory,
|
||||
ignore: ['.*']
|
||||
}
|
||||
])
|
||||
]
|
||||
})
|
||||
@@ -0,0 +1,124 @@
|
||||
var path = require('path')
|
||||
var utils = require('./utils')
|
||||
var webpack = require('webpack')
|
||||
var config = require('../config')
|
||||
var merge = require('webpack-merge')
|
||||
var baseWebpackConfig = require('./webpack.base.conf')
|
||||
var CopyWebpackPlugin = require('copy-webpack-plugin')
|
||||
var HtmlWebpackPlugin = require('html-webpack-plugin')
|
||||
var ExtractTextPlugin = require('extract-text-webpack-plugin')
|
||||
var OptimizeCSSPlugin = require('optimize-css-assets-webpack-plugin')
|
||||
|
||||
var env = process.env.NODE_ENV === 'testing'
|
||||
? require('../config/test.env')
|
||||
: config.build.env
|
||||
|
||||
var webpackConfig = merge(baseWebpackConfig, {
|
||||
module: {
|
||||
rules: utils.styleLoaders({
|
||||
sourceMap: config.build.productionSourceMap,
|
||||
extract: true
|
||||
})
|
||||
},
|
||||
devtool: config.build.productionSourceMap ? '#source-map' : false,
|
||||
output: {
|
||||
path: config.build.assetsRoot,
|
||||
filename: utils.assetsPath('js/[name].[chunkhash].js'),
|
||||
chunkFilename: utils.assetsPath('js/[id].[chunkhash].js')
|
||||
},
|
||||
plugins: [
|
||||
// http://vuejs.github.io/vue-loader/en/workflow/production.html
|
||||
new webpack.DefinePlugin({
|
||||
'process.env': env
|
||||
}),
|
||||
new webpack.optimize.UglifyJsPlugin({
|
||||
compress: {
|
||||
warnings: false
|
||||
},
|
||||
sourceMap: true
|
||||
}),
|
||||
// extract css into its own file
|
||||
new ExtractTextPlugin({
|
||||
filename: utils.assetsPath('css/[name].[contenthash].css')
|
||||
}),
|
||||
// Compress extracted CSS. We are using this plugin so that possible
|
||||
// duplicated CSS from different components can be deduped.
|
||||
new OptimizeCSSPlugin({
|
||||
cssProcessorOptions: {
|
||||
safe: true
|
||||
}
|
||||
}),
|
||||
// generate dist index.html with correct asset hash for caching.
|
||||
// you can customize output by editing /index.html
|
||||
// see https://github.com/ampedandwired/html-webpack-plugin
|
||||
new HtmlWebpackPlugin({
|
||||
filename: process.env.NODE_ENV === 'testing'
|
||||
? 'index.html'
|
||||
: config.build.index,
|
||||
template: 'index.html',
|
||||
inject: true,
|
||||
minify: {
|
||||
removeComments: true,
|
||||
collapseWhitespace: true,
|
||||
removeAttributeQuotes: true
|
||||
// more options:
|
||||
// https://github.com/kangax/html-minifier#options-quick-reference
|
||||
},
|
||||
// necessary to consistently work with multiple chunks via CommonsChunkPlugin
|
||||
chunksSortMode: 'dependency'
|
||||
}),
|
||||
// split vendor js into its own file
|
||||
new webpack.optimize.CommonsChunkPlugin({
|
||||
name: 'vendor',
|
||||
minChunks: function (module, count) {
|
||||
// any required modules inside node_modules are extracted to vendor
|
||||
return (
|
||||
module.resource &&
|
||||
/\.js$/.test(module.resource) &&
|
||||
module.resource.indexOf(
|
||||
path.join(__dirname, '../node_modules')
|
||||
) === 0
|
||||
)
|
||||
}
|
||||
}),
|
||||
// extract webpack runtime and module manifest to its own file in order to
|
||||
// prevent vendor hash from being updated whenever app bundle is updated
|
||||
new webpack.optimize.CommonsChunkPlugin({
|
||||
name: 'manifest',
|
||||
chunks: ['vendor']
|
||||
}),
|
||||
// copy custom static assets
|
||||
new CopyWebpackPlugin([
|
||||
{
|
||||
from: path.resolve(__dirname, '../static'),
|
||||
to: config.build.assetsSubDirectory,
|
||||
ignore: ['.*']
|
||||
}
|
||||
])
|
||||
]
|
||||
})
|
||||
|
||||
if (config.build.productionGzip) {
|
||||
var CompressionWebpackPlugin = require('compression-webpack-plugin')
|
||||
|
||||
webpackConfig.plugins.push(
|
||||
new CompressionWebpackPlugin({
|
||||
asset: '[path].gz[query]',
|
||||
algorithm: 'gzip',
|
||||
test: new RegExp(
|
||||
'\\.(' +
|
||||
config.build.productionGzipExtensions.join('|') +
|
||||
')$'
|
||||
),
|
||||
threshold: 10240,
|
||||
minRatio: 0.8
|
||||
})
|
||||
)
|
||||
}
|
||||
|
||||
if (config.build.bundleAnalyzerReport) {
|
||||
var BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin
|
||||
webpackConfig.plugins.push(new BundleAnalyzerPlugin())
|
||||
}
|
||||
|
||||
module.exports = webpackConfig
|
||||
@@ -0,0 +1,31 @@
|
||||
// This is the webpack config used for unit tests.
|
||||
|
||||
var utils = require('./utils')
|
||||
var webpack = require('webpack')
|
||||
var merge = require('webpack-merge')
|
||||
var baseConfig = require('./webpack.base.conf')
|
||||
|
||||
var webpackConfig = merge(baseConfig, {
|
||||
// use inline sourcemap for karma-sourcemap-loader
|
||||
module: {
|
||||
rules: utils.styleLoaders()
|
||||
},
|
||||
devtool: '#inline-source-map',
|
||||
resolveLoader: {
|
||||
alias: {
|
||||
// necessary to to make lang="scss" work in test when using vue-loader's ?inject option
|
||||
// see discussion at https://github.com/vuejs/vue-loader/issues/724
|
||||
'scss-loader': 'sass-loader'
|
||||
}
|
||||
},
|
||||
plugins: [
|
||||
new webpack.DefinePlugin({
|
||||
'process.env': require('../config/test.env')
|
||||
})
|
||||
]
|
||||
})
|
||||
|
||||
// no need for app entry during tests
|
||||
delete webpackConfig.entry
|
||||
|
||||
module.exports = webpackConfig
|
||||
@@ -0,0 +1,6 @@
|
||||
var merge = require('webpack-merge')
|
||||
var prodEnv = require('./prod.env')
|
||||
|
||||
module.exports = merge(prodEnv, {
|
||||
NODE_ENV: '"development"'
|
||||
})
|
||||
@@ -0,0 +1,38 @@
|
||||
// see http://vuejs-templates.github.io/webpack for documentation.
|
||||
var path = require('path')
|
||||
|
||||
module.exports = {
|
||||
build: {
|
||||
env: require('./prod.env'),
|
||||
index: path.resolve(__dirname, '../dist/index.html'),
|
||||
assetsRoot: path.resolve(__dirname, '../dist'),
|
||||
assetsSubDirectory: 'static',
|
||||
assetsPublicPath: './',
|
||||
productionSourceMap: true,
|
||||
// Gzip off by default as many popular static hosts such as
|
||||
// Surge or Netlify already gzip all static assets for you.
|
||||
// Before setting to `true`, make sure to:
|
||||
// npm install --save-dev compression-webpack-plugin
|
||||
productionGzip: false,
|
||||
productionGzipExtensions: ['js', 'css'],
|
||||
// Run the build command with an extra argument to
|
||||
// View the bundle analyzer report after build finishes:
|
||||
// `npm run build --report`
|
||||
// Set to `true` or `false` to always turn it on or off
|
||||
bundleAnalyzerReport: process.env.npm_config_report
|
||||
},
|
||||
dev: {
|
||||
env: require('./dev.env'),
|
||||
port: 8080,
|
||||
autoOpenBrowser: true,
|
||||
assetsSubDirectory: 'static',
|
||||
assetsPublicPath: '',
|
||||
proxyTable: {},
|
||||
// CSS Sourcemaps off by default because relative paths are "buggy"
|
||||
// with this option, according to the CSS-Loader README
|
||||
// (https://github.com/webpack/css-loader#sourcemaps)
|
||||
// In our experience, they generally work as expected,
|
||||
// just be aware of this issue when enabling this option.
|
||||
cssSourceMap: false
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
module.exports = {
|
||||
NODE_ENV: '"production"'
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
var merge = require('webpack-merge')
|
||||
var devEnv = require('./dev.env')
|
||||
|
||||
module.exports = merge(devEnv, {
|
||||
NODE_ENV: '"testing"'
|
||||
})
|
||||
@@ -0,0 +1,42 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||
<title>CoreUI - Open Source Bootstrap Admin Template</title>
|
||||
</head>
|
||||
|
||||
<!-- BODY options, add following classes to body to change options
|
||||
|
||||
// Header options
|
||||
1. '.header-fixed' - Fixed Header
|
||||
|
||||
// Brand options
|
||||
1. '.brand-minimized' - Minimized brand (Only symbol)
|
||||
|
||||
// Sidebar options
|
||||
1. '.sidebar-fixed' - Fixed Sidebar
|
||||
2. '.sidebar-hidden' - Hidden Sidebar
|
||||
3. '.sidebar-off-canvas' - Off Canvas Sidebar
|
||||
4. '.sidebar-minimized' - Minimized Sidebar (Only icons)
|
||||
5. '.sidebar-compact' - Compact Sidebar
|
||||
|
||||
// Aside options
|
||||
1. '.aside-menu-fixed' - Fixed Aside Menu
|
||||
2. '.aside-menu-hidden' - Hidden Aside Menu
|
||||
3. '.aside-menu-off-canvas' - Off Canvas Aside Menu
|
||||
|
||||
// Breadcrumb options
|
||||
1. '.breadcrumb-fixed' - Fixed Breadcrumb
|
||||
|
||||
// Footer options
|
||||
1. '.footer-fixed' - Fixed footer
|
||||
|
||||
-->
|
||||
|
||||
<body class="app header-fixed sidebar-fixed aside-menu-fixed aside-menu-hidden">
|
||||
<div id="app"></div>
|
||||
<!-- built files will be auto injected -->
|
||||
</body>
|
||||
</html>
|
||||
Generated
+14161
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,103 @@
|
||||
{
|
||||
"name": "@coreui/vue",
|
||||
"version": "1.0.10",
|
||||
"description": "Open Source Bootstrap Admin Template",
|
||||
"author": "Łukasz Holeczek",
|
||||
"homepage": "http://coreui.io",
|
||||
"copyright": "Copyright 2018 creativeLabs Łukasz Holeczek",
|
||||
"license": "MIT",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"dev": "node build/dev-server.js",
|
||||
"start": "node build/dev-server.js",
|
||||
"build": "node build/build.js",
|
||||
"unit": "cross-env BABEL_ENV=test karma start test/unit/karma.conf.js --single-run",
|
||||
"e2e": "node test/e2e/runner.js",
|
||||
"test": "npm run unit && npm run e2e",
|
||||
"lint": "eslint --ext .js,.vue src test/unit/specs test/e2e/specs"
|
||||
},
|
||||
"dependencies": {
|
||||
"bootstrap": "4.0.0",
|
||||
"bootstrap-vue": "2.0.0-rc.1",
|
||||
"chart.js": "2.7.1",
|
||||
"flag-icon-css": "2.9.0",
|
||||
"font-awesome": "^4.7.0",
|
||||
"simple-line-icons": "^2.4.1",
|
||||
"vue": "2.5.13",
|
||||
"vue-chartjs": "3.1.0",
|
||||
"vue-router": "3.0.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"autoprefixer": "7.2.5",
|
||||
"babel-core": "6.26.0",
|
||||
"babel-eslint": "8.2.1",
|
||||
"babel-loader": "7.1.2",
|
||||
"babel-plugin-transform-runtime": "6.23.0",
|
||||
"babel-preset-env": "1.6.1",
|
||||
"babel-preset-stage-2": "6.24.1",
|
||||
"babel-register": "6.26.0",
|
||||
"chalk": "2.3.0",
|
||||
"connect-history-api-fallback": "1.5.0",
|
||||
"copy-webpack-plugin": "4.3.1",
|
||||
"css-loader": "0.28.9",
|
||||
"eslint": "4.16.0",
|
||||
"eslint-friendly-formatter": "3.0.0",
|
||||
"eslint-loader": "1.9.0",
|
||||
"eslint-plugin-html": "4.0.2",
|
||||
"eslint-plugin-import": "2.8.0",
|
||||
"eslint-plugin-node": "5.2.1",
|
||||
"eslint-config-standard": "11.0.0-beta.0",
|
||||
"eslint-plugin-promise": "3.6.0",
|
||||
"eslint-plugin-standard": "3.0.1",
|
||||
"eventsource-polyfill": "0.9.6",
|
||||
"express": "4.16.2",
|
||||
"extract-text-webpack-plugin": "3.0.2",
|
||||
"file-loader": "1.1.6",
|
||||
"friendly-errors-webpack-plugin": "1.6.1",
|
||||
"html-webpack-plugin": "2.30.1",
|
||||
"http-proxy-middleware": "0.17.4",
|
||||
"cross-env": "5.1.3",
|
||||
"karma": "2.0.0",
|
||||
"karma-coverage": "1.1.1",
|
||||
"karma-mocha": "1.3.0",
|
||||
"karma-phantomjs-launcher": "1.0.4",
|
||||
"karma-phantomjs-shim": "1.5.0",
|
||||
"karma-sinon-chai": "1.3.3",
|
||||
"karma-sourcemap-loader": "0.3.7",
|
||||
"karma-spec-reporter": "0.0.32",
|
||||
"karma-webpack": "2.0.9",
|
||||
"lolex": "2.3.2",
|
||||
"mocha": "5.0.0",
|
||||
"chai": "4.1.2",
|
||||
"sinon": "4.2.2",
|
||||
"sinon-chai": "2.14.0",
|
||||
"inject-loader": "3.0.1",
|
||||
"babel-plugin-istanbul": "4.1.5",
|
||||
"phantomjs-prebuilt": "^2.1.16",
|
||||
"chromedriver": "2.35.0",
|
||||
"cross-spawn": "6.0.4",
|
||||
"nightwatch": "0.9.19",
|
||||
"node-sass": "4.7.2",
|
||||
"sass-loader": "6.0.6",
|
||||
"selenium-server": "3.8.1",
|
||||
"semver": "5.5.0",
|
||||
"shelljs": "0.8.1",
|
||||
"opn": "5.2.0",
|
||||
"optimize-css-assets-webpack-plugin": "3.2.0",
|
||||
"ora": "1.4.0",
|
||||
"rimraf": "2.6.2",
|
||||
"url-loader": "0.6.2",
|
||||
"vue-loader": "14.1.1",
|
||||
"vue-style-loader": "3.1.2",
|
||||
"vue-template-compiler": "2.5.13",
|
||||
"webpack": "3.10.0",
|
||||
"webpack-bundle-analyzer": "2.10.0",
|
||||
"webpack-dev-middleware": "2.0.4",
|
||||
"webpack-hot-middleware": "2.21.0",
|
||||
"webpack-merge": "4.1.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 8.9.4",
|
||||
"npm": ">= 5.6.0"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,130 @@
|
||||
// Bootstrap overrides
|
||||
|
||||
//
|
||||
// Color system
|
||||
//
|
||||
|
||||
$white: #fff;
|
||||
$gray-100: #f0f3f5;
|
||||
$gray-200: #c2cfd6;
|
||||
$gray-300: #a4b7c1;
|
||||
$gray-400: #869fac;
|
||||
$gray-500: #678898;
|
||||
$gray-600: #536c79;
|
||||
$gray-700: #3e515b;
|
||||
$gray-800: #29363d;
|
||||
$gray-900: #151b1e;
|
||||
$black: #000 !default;
|
||||
|
||||
$blue: #20a8d8;
|
||||
$indigo: #6610f2 !default;
|
||||
$purple: #6f42c1 !default;
|
||||
$pink: #e83e8c !default;
|
||||
$red: #f86c6b;
|
||||
$orange: #f8cb00;
|
||||
$yellow: #ffc107 !default;
|
||||
$green: #4dbd74;
|
||||
$teal: #20c997 !default;
|
||||
$cyan: #63c2de;
|
||||
|
||||
$colors: (
|
||||
blue: $blue,
|
||||
indigo: $indigo,
|
||||
purple: $purple,
|
||||
pink: $pink,
|
||||
red: $red,
|
||||
orange: $orange,
|
||||
yellow: $yellow,
|
||||
green: $green,
|
||||
teal: $teal,
|
||||
cyan: $cyan,
|
||||
white: $white,
|
||||
gray: $gray-600,
|
||||
gray-dark: $gray-800
|
||||
);
|
||||
|
||||
$theme-colors: (
|
||||
primary: $blue,
|
||||
secondary: $gray-300,
|
||||
success: $green,
|
||||
info: $cyan,
|
||||
warning: $yellow,
|
||||
danger: $red,
|
||||
light: $gray-100,
|
||||
dark: $gray-800,
|
||||
|
||||
blue: $blue,
|
||||
indigo: $indigo,
|
||||
purple: $purple,
|
||||
pink: $pink,
|
||||
red: $red,
|
||||
orange: $orange,
|
||||
yellow: $yellow,
|
||||
green: $green,
|
||||
teal: $teal,
|
||||
cyan: $cyan,
|
||||
|
||||
gray-100: $gray-100,
|
||||
gray-200: $gray-200,
|
||||
gray-300: $gray-300,
|
||||
gray-400: $gray-400,
|
||||
gray-500: $gray-500,
|
||||
gray-600: $gray-600,
|
||||
gray-700: $gray-700,
|
||||
gray-800: $gray-800,
|
||||
gray-900: $gray-900
|
||||
);
|
||||
|
||||
// Options
|
||||
//
|
||||
// Quickly modify global styling by enabling or disabling optional features.
|
||||
|
||||
$enable-transitions: true;
|
||||
$enable-rounded: false;
|
||||
|
||||
// Body
|
||||
//
|
||||
// Settings for the `<body>` element.
|
||||
|
||||
$body-bg: #e4e5e6;
|
||||
|
||||
// Typography
|
||||
//
|
||||
// Font, line-height, and color for body text, headings, and more.
|
||||
|
||||
$font-size-base: 0.875rem;
|
||||
|
||||
// Breadcrumbs
|
||||
|
||||
$breadcrumb-bg: #fff;
|
||||
$breadcrumb-margin-bottom: 1.5rem;
|
||||
|
||||
// Cards
|
||||
|
||||
$card-border-color: $gray-200;
|
||||
$card-cap-bg: $gray-100;
|
||||
|
||||
// Dropdowns
|
||||
|
||||
$dropdown-padding-y: 0;
|
||||
$dropdown-border-color: $gray-200;
|
||||
$dropdown-divider-bg: $gray-100;
|
||||
|
||||
// Buttons
|
||||
|
||||
$btn-secondary-border: $gray-300;
|
||||
|
||||
// Progress bars
|
||||
|
||||
$progress-bg: $gray-100;
|
||||
|
||||
// Tables
|
||||
|
||||
$table-bg-accent: $gray-100;
|
||||
$table-bg-hover: $gray-100;
|
||||
|
||||
// Forms
|
||||
|
||||
$input-group-addon-bg: $gray-100;
|
||||
$input-border-color: $gray-200;
|
||||
$input-group-addon-border-color: $gray-200;
|
||||
@@ -0,0 +1 @@
|
||||
// core overrides
|
||||
@@ -0,0 +1 @@
|
||||
// Here you can add other styles
|
||||
@@ -0,0 +1,27 @@
|
||||
// scss-lint:disable all
|
||||
.animated {
|
||||
animation-duration: 1s;
|
||||
// animation-fill-mode: both;
|
||||
}
|
||||
|
||||
.animated.infinite {
|
||||
animation-iteration-count: infinite;
|
||||
}
|
||||
|
||||
.animated.hinge {
|
||||
animation-duration: 2s;
|
||||
}
|
||||
|
||||
@keyframes fadeIn {
|
||||
from {
|
||||
opacity: 0;
|
||||
}
|
||||
|
||||
to {
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
|
||||
.fadeIn {
|
||||
animation-name: fadeIn;
|
||||
}
|
||||
@@ -0,0 +1,64 @@
|
||||
.aside-menu {
|
||||
z-index: $zindex-sticky - 1;
|
||||
width: $aside-menu-width;
|
||||
color: $aside-menu-color;
|
||||
background: $aside-menu-bg;
|
||||
@include borders($aside-menu-borders);
|
||||
|
||||
.nav-tabs {
|
||||
border-color: $border-color;
|
||||
.nav-link {
|
||||
padding: $aside-menu-nav-padding-y $aside-menu-nav-padding-x;
|
||||
color: $body-color;
|
||||
border-top: 0;
|
||||
&.active {
|
||||
color: theme-color("primary");
|
||||
border-right-color: $border-color;
|
||||
border-left-color: $border-color;
|
||||
}
|
||||
}
|
||||
.nav-item:first-child {
|
||||
.nav-link {
|
||||
border-left: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.tab-content {
|
||||
position: relative;
|
||||
overflow-x: hidden;
|
||||
overflow-y: auto;
|
||||
border: 0;
|
||||
border-top: 1px solid $border-color;
|
||||
-ms-overflow-style: -ms-autohiding-scrollbar;
|
||||
|
||||
&::-webkit-scrollbar {
|
||||
width: 10px;
|
||||
margin-left: -10px;
|
||||
-webkit-appearance: none;
|
||||
}
|
||||
|
||||
// &::-webkit-scrollbar-button { }
|
||||
|
||||
&::-webkit-scrollbar-track {
|
||||
background-color: lighten($aside-menu-bg, 5%);
|
||||
border-right: 1px solid darken($aside-menu-bg, 5%);
|
||||
border-left: 1px solid darken($aside-menu-bg, 5%);
|
||||
}
|
||||
|
||||
// &::-webkit-scrollbar-track-piece { }
|
||||
|
||||
&::-webkit-scrollbar-thumb {
|
||||
height: 50px;
|
||||
background-color: darken($aside-menu-bg, 10%);
|
||||
background-clip: content-box;
|
||||
border-color: transparent;
|
||||
border-style: solid;
|
||||
border-width: 1px 2px;
|
||||
}
|
||||
|
||||
.tab-pane {
|
||||
padding: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
.img-avatar {
|
||||
border-radius: 50em;
|
||||
}
|
||||
|
||||
.avatar {
|
||||
$width: 36px;
|
||||
$status-width: 10px;
|
||||
@include avatar($width,$status-width);
|
||||
}
|
||||
|
||||
.avatar.avatar-xs {
|
||||
$width: 20px;
|
||||
$status-width: 8px;
|
||||
@include avatar($width,$status-width);
|
||||
}
|
||||
|
||||
.avatar.avatar-sm {
|
||||
$width: 24px;
|
||||
$status-width: 8px;
|
||||
@include avatar($width,$status-width);
|
||||
}
|
||||
|
||||
.avatar.avatar-lg {
|
||||
$width: 72px;
|
||||
$status-width: 12px;
|
||||
@include avatar($width,$status-width);
|
||||
}
|
||||
|
||||
.avatars-stack {
|
||||
.avatar.avatar-xs {
|
||||
margin-right: -10px;
|
||||
}
|
||||
|
||||
// .avatar.avatar-sm {
|
||||
//
|
||||
// }
|
||||
|
||||
.avatar {
|
||||
margin-right: -15px;
|
||||
transition: margin-left $layout-transition-speed, margin-right $layout-transition-speed;
|
||||
|
||||
&:hover {
|
||||
margin-right: 0 !important;
|
||||
}
|
||||
}
|
||||
|
||||
// .avatar.avatar-lg {
|
||||
//
|
||||
// }
|
||||
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
.badge-pill {
|
||||
border-radius: $badge-pill-border-radius;
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
.breadcrumb-menu {
|
||||
margin-left: auto;
|
||||
|
||||
&::before {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.btn-group {
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
.btn {
|
||||
padding: 0 $input-btn-padding-x;
|
||||
color: $text-muted;
|
||||
vertical-align: top;
|
||||
border: 0;
|
||||
|
||||
&:hover, &.active {
|
||||
color: $body-color;
|
||||
background: transparent;
|
||||
}
|
||||
}
|
||||
|
||||
.open {
|
||||
.btn {
|
||||
color: $body-color;
|
||||
background: transparent;
|
||||
}
|
||||
}
|
||||
|
||||
.dropdown-menu {
|
||||
min-width: 180px;
|
||||
line-height: $line-height-base;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,4 @@
|
||||
.breadcrumb {
|
||||
position: relative;
|
||||
@include borders($breadcrumb-borders);
|
||||
}
|
||||
@@ -0,0 +1,566 @@
|
||||
button {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.btn-transparent {
|
||||
color: #fff;
|
||||
background-color: transparent;
|
||||
border-color: transparent;
|
||||
}
|
||||
|
||||
.btn {
|
||||
[class^="icon-"], [class*=" icon-"] {
|
||||
display: inline-block;
|
||||
margin-top: -2px;
|
||||
vertical-align: middle;
|
||||
}
|
||||
}
|
||||
|
||||
.btn-facebook,
|
||||
.btn-twitter,
|
||||
.btn-linkedin,
|
||||
.btn-flickr,
|
||||
.btn-tumblr,
|
||||
.btn-xing,
|
||||
.btn-github,
|
||||
.btn-html5,
|
||||
.btn-openid,
|
||||
.btn-stack-overflow,
|
||||
.btn-youtube,
|
||||
.btn-css3,
|
||||
.btn-dribbble,
|
||||
.btn-google-plus,
|
||||
.btn-instagram,
|
||||
.btn-pinterest,
|
||||
.btn-vk,
|
||||
.btn-yahoo,
|
||||
.btn-behance,
|
||||
.btn-dropbox,
|
||||
.btn-reddit,
|
||||
.btn-spotify,
|
||||
.btn-vine,
|
||||
.btn-foursquare,
|
||||
.btn-vimeo {
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
color: #fff !important;
|
||||
text-align: center;
|
||||
|
||||
&::before {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
display: block;
|
||||
font-family: "FontAwesome";
|
||||
font-style: normal;
|
||||
font-weight: normal;
|
||||
-moz-osx-font-smoothing: grayscale;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
}
|
||||
|
||||
&:hover {
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
&.icon {
|
||||
|
||||
span {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
&.text {
|
||||
&::before {
|
||||
display: none;
|
||||
}
|
||||
|
||||
span {
|
||||
margin-left: 0 !important;
|
||||
}
|
||||
}
|
||||
@include button-social-size($input-btn-padding-y, $input-btn-padding-x, $font-size-base, $line-height-base, $btn-border-radius);
|
||||
|
||||
&.btn-lg {
|
||||
@include button-social-size($input-btn-padding-y-lg, $input-btn-padding-x-lg, $font-size-lg, $line-height-lg, $btn-border-radius-lg);
|
||||
}
|
||||
|
||||
&.btn-sm {
|
||||
@include button-social-size($input-btn-padding-y-sm, $input-btn-padding-x-sm, $font-size-sm, $line-height-sm, $btn-border-radius-sm);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
.btn-facebook {
|
||||
$color: $facebook;
|
||||
|
||||
background: $color;
|
||||
&::before {
|
||||
content: "\f09a";
|
||||
background: darken($color, 5%);
|
||||
|
||||
}
|
||||
|
||||
&:hover {
|
||||
background: darken($color, 5%);
|
||||
|
||||
&::before {
|
||||
background: darken($color, 10%);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.btn-twitter {
|
||||
$color: $twitter;
|
||||
|
||||
background: $color;
|
||||
&::before {
|
||||
content: "\f099";
|
||||
background: darken($color, 5%);
|
||||
|
||||
}
|
||||
|
||||
&:hover {
|
||||
background: darken($color, 5%);
|
||||
|
||||
&::before {
|
||||
background: darken($color, 10%);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.btn-linkedin {
|
||||
$color: $linkedin;
|
||||
|
||||
background: $color;
|
||||
&::before {
|
||||
content: "\f0e1";
|
||||
background: darken($color, 5%);
|
||||
|
||||
}
|
||||
|
||||
&:hover {
|
||||
background: darken($color, 5%);
|
||||
|
||||
&::before {
|
||||
background: darken($color, 10%);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.btn-flickr {
|
||||
$color: $flickr;
|
||||
|
||||
background: $color;
|
||||
&::before {
|
||||
content: "\f16e";
|
||||
background: darken($color, 5%);
|
||||
|
||||
}
|
||||
|
||||
&:hover {
|
||||
background: darken($color, 5%);
|
||||
|
||||
&::before {
|
||||
background: darken($color, 10%);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.btn-tumblr {
|
||||
$color: $tumblr;
|
||||
|
||||
background: $color;
|
||||
&::before {
|
||||
content: "\f173";
|
||||
background: darken($color, 5%);
|
||||
|
||||
}
|
||||
|
||||
&:hover {
|
||||
background: darken($color, 5%);
|
||||
|
||||
&::before {
|
||||
background: darken($color, 10%);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.btn-xing {
|
||||
$color: $xing;
|
||||
|
||||
background: $color;
|
||||
&::before {
|
||||
content: "\f168";
|
||||
background: darken($color, 5%);
|
||||
|
||||
}
|
||||
|
||||
&:hover {
|
||||
background: darken($color, 5%);
|
||||
|
||||
&::before {
|
||||
background: darken($color, 10%);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.btn-github {
|
||||
$color: $github;
|
||||
|
||||
background: $color;
|
||||
&::before {
|
||||
content: "\f09b";
|
||||
background: darken($color, 5%);
|
||||
|
||||
}
|
||||
|
||||
&:hover {
|
||||
background: darken($color, 5%);
|
||||
|
||||
&::before {
|
||||
background: darken($color, 10%);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.btn-html5 {
|
||||
$color: $html5;
|
||||
|
||||
background: $color;
|
||||
&::before {
|
||||
content: "\f13b";
|
||||
background: darken($color, 5%);
|
||||
|
||||
}
|
||||
|
||||
&:hover {
|
||||
background: darken($color, 5%);
|
||||
|
||||
&::before {
|
||||
background: darken($color, 10%);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.btn-openid {
|
||||
$color: $openid;
|
||||
|
||||
background: $color;
|
||||
&::before {
|
||||
content: "\f19b";
|
||||
background: darken($color, 5%);
|
||||
|
||||
}
|
||||
|
||||
&:hover {
|
||||
background: darken($color, 5%);
|
||||
|
||||
&::before {
|
||||
background: darken($color, 10%);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.btn-stack-overflow {
|
||||
$color: $stack-overflow;
|
||||
|
||||
background: $color;
|
||||
&::before {
|
||||
content: "\f16c";
|
||||
background: darken($color, 5%);
|
||||
|
||||
}
|
||||
|
||||
&:hover {
|
||||
background: darken($color, 5%);
|
||||
|
||||
&::before {
|
||||
background: darken($color, 10%);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.btn-css3 {
|
||||
$color: $css3;
|
||||
|
||||
background: $color;
|
||||
&::before {
|
||||
content: "\f13c";
|
||||
background: darken($color, 5%);
|
||||
|
||||
}
|
||||
|
||||
&:hover {
|
||||
background: darken($color, 5%);
|
||||
|
||||
&::before {
|
||||
background: darken($color, 10%);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.btn-youtube {
|
||||
$color: $youtube;
|
||||
|
||||
background: $color;
|
||||
&::before {
|
||||
content: "\f167";
|
||||
background: darken($color, 5%);
|
||||
|
||||
}
|
||||
|
||||
&:hover {
|
||||
background: darken($color, 5%);
|
||||
|
||||
&::before {
|
||||
background: darken($color, 10%);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.btn-dribbble {
|
||||
$color: $dribbble;
|
||||
|
||||
background: $color;
|
||||
&::before {
|
||||
content: "\f17d";
|
||||
background: darken($color, 5%);
|
||||
|
||||
}
|
||||
|
||||
&:hover {
|
||||
background: darken($color, 5%);
|
||||
|
||||
&::before {
|
||||
background: darken($color, 10%);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.btn-google-plus {
|
||||
$color: $google-plus;
|
||||
|
||||
background: $color;
|
||||
&::before {
|
||||
content: "\f0d5";
|
||||
background: darken($color, 5%);
|
||||
|
||||
}
|
||||
|
||||
&:hover {
|
||||
background: darken($color, 5%);
|
||||
|
||||
&::before {
|
||||
background: darken($color, 10%);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.btn-instagram {
|
||||
$color: $instagram;
|
||||
|
||||
background: $color;
|
||||
&::before {
|
||||
content: "\f16d";
|
||||
background: darken($color, 5%);
|
||||
|
||||
}
|
||||
|
||||
&:hover {
|
||||
background: darken($color, 5%);
|
||||
|
||||
&::before {
|
||||
background: darken($color, 10%);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.btn-pinterest {
|
||||
$color: $pinterest;
|
||||
|
||||
background: $color;
|
||||
&::before {
|
||||
content: "\f0d2";
|
||||
background: darken($color, 5%);
|
||||
|
||||
}
|
||||
|
||||
&:hover {
|
||||
background: darken($color, 5%);
|
||||
|
||||
&::before {
|
||||
background: darken($color, 10%);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.btn-vk {
|
||||
$color: $vk;
|
||||
|
||||
background: $color;
|
||||
&::before {
|
||||
content: "\f189";
|
||||
background: darken($color, 5%);
|
||||
|
||||
}
|
||||
|
||||
&:hover {
|
||||
background: darken($color, 5%);
|
||||
|
||||
&::before {
|
||||
background: darken($color, 10%);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.btn-yahoo {
|
||||
$color: $yahoo;
|
||||
|
||||
background: $color;
|
||||
&::before {
|
||||
content: "\f19e";
|
||||
background: darken($color, 5%);
|
||||
|
||||
}
|
||||
|
||||
&:hover {
|
||||
background: darken($color, 5%);
|
||||
|
||||
&::before {
|
||||
background: darken($color, 10%);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.btn-behance {
|
||||
$color: $behance;
|
||||
|
||||
background: $color;
|
||||
&::before {
|
||||
content: "\f1b4";
|
||||
background: darken($color, 5%);
|
||||
|
||||
}
|
||||
|
||||
&:hover {
|
||||
background: darken($color, 5%);
|
||||
|
||||
&::before {
|
||||
background: darken($color, 10%);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.btn-dropbox {
|
||||
$color: $dropbox;
|
||||
|
||||
background: $color;
|
||||
&::before {
|
||||
content: "\f16b";
|
||||
background: darken($color, 5%);
|
||||
|
||||
}
|
||||
|
||||
&:hover {
|
||||
background: darken($color, 5%);
|
||||
|
||||
&::before {
|
||||
background: darken($color, 10%);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.btn-reddit {
|
||||
$color: $reddit;
|
||||
|
||||
background: $color;
|
||||
&::before {
|
||||
content: "\f1a1";
|
||||
background: darken($color, 5%);
|
||||
|
||||
}
|
||||
|
||||
&:hover {
|
||||
background: darken($color, 5%);
|
||||
|
||||
&::before {
|
||||
background: darken($color, 10%);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.btn-spotify {
|
||||
$color: $spotify;
|
||||
|
||||
background: $color;
|
||||
&::before {
|
||||
content: "\f1bc";
|
||||
background: darken($color, 5%);
|
||||
|
||||
}
|
||||
|
||||
&:hover {
|
||||
background: darken($color, 5%);
|
||||
|
||||
&::before {
|
||||
background: darken($color, 10%);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.btn-vine {
|
||||
$color: $vine;
|
||||
|
||||
background: $color;
|
||||
&::before {
|
||||
content: "\f1ca";
|
||||
background: darken($color, 5%);
|
||||
|
||||
}
|
||||
|
||||
&:hover {
|
||||
background: darken($color, 5%);
|
||||
|
||||
&::before {
|
||||
background: darken($color, 10%);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.btn-foursquare {
|
||||
$color: $foursquare;
|
||||
|
||||
background: $color;
|
||||
&::before {
|
||||
content: "\f180";
|
||||
background: darken($color, 5%);
|
||||
|
||||
}
|
||||
|
||||
&:hover {
|
||||
background: darken($color, 5%);
|
||||
|
||||
&::before {
|
||||
background: darken($color, 10%);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.btn-vimeo {
|
||||
$color: $vimeo;
|
||||
|
||||
background: $color;
|
||||
&::before {
|
||||
content: "\f194";
|
||||
background: darken($color, 5%);
|
||||
|
||||
}
|
||||
|
||||
&:hover {
|
||||
background: darken($color, 5%);
|
||||
|
||||
&::before {
|
||||
background: darken($color, 10%);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,55 @@
|
||||
.callout {
|
||||
position: relative;
|
||||
padding: 0 $spacer;
|
||||
margin: $spacer 0;
|
||||
border: 0 solid $border-color;
|
||||
border-left-width: .25rem;
|
||||
|
||||
@if $enable-rounded {
|
||||
border-radius: .25rem;
|
||||
}
|
||||
|
||||
.chart-wrapper {
|
||||
position: absolute;
|
||||
top: 10px;
|
||||
left: 50%;
|
||||
float: right;
|
||||
width: 50%;
|
||||
}
|
||||
}
|
||||
|
||||
.callout-bordered {
|
||||
border: 1px solid $border-color;
|
||||
border-left-width: .25rem;
|
||||
}
|
||||
.callout code {
|
||||
border-radius: .25rem;
|
||||
}
|
||||
.callout h4 {
|
||||
margin-top: 0;
|
||||
margin-bottom: .25rem;
|
||||
}
|
||||
.callout p:last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
.callout + .callout {
|
||||
margin-top: - .25rem;
|
||||
}
|
||||
|
||||
.callout-default {
|
||||
border-left-color: $text-muted;
|
||||
|
||||
h4 {
|
||||
color: $text-muted;
|
||||
}
|
||||
}
|
||||
|
||||
@each $color, $value in $theme-colors {
|
||||
.callout-#{$color} {
|
||||
border-left-color: $value;
|
||||
|
||||
h4 {
|
||||
color: $value;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,193 @@
|
||||
.card {
|
||||
margin-bottom: 1.5 * $spacer;
|
||||
|
||||
// Cards with color accent
|
||||
@each $color, $value in $theme-colors {
|
||||
&.bg-#{$color} {
|
||||
border-color: darken($value, 12.5%);
|
||||
.card-header {
|
||||
background-color: darken($value, 3%);
|
||||
border-color: darken($value, 12.5%);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.text-white .text-muted {
|
||||
color: rgba(255,255,255,.6) !important;
|
||||
}
|
||||
|
||||
.card-header {
|
||||
|
||||
.icon-bg {
|
||||
display: inline-block;
|
||||
padding: $card-spacer-y $card-spacer-x !important;
|
||||
margin-top: -$card-spacer-y;
|
||||
margin-right: $card-spacer-x;
|
||||
margin-bottom: -$card-spacer-y;
|
||||
margin-left: -$card-spacer-x;
|
||||
line-height: inherit;
|
||||
color: $card-icon-color;
|
||||
vertical-align: bottom;
|
||||
background: $card-icon-bg;
|
||||
border-right: $card-border-width solid $card-border-color;
|
||||
}
|
||||
|
||||
.nav.nav-tabs {
|
||||
margin-top: -$card-spacer-y;
|
||||
margin-bottom: -$card-spacer-y;
|
||||
border-bottom: 0;
|
||||
|
||||
.nav-item {
|
||||
border-top: 0;
|
||||
}
|
||||
|
||||
.nav-link {
|
||||
padding: $card-spacer-y $card-spacer-x / 2;
|
||||
color: $text-muted;
|
||||
border-top: 0;
|
||||
|
||||
&.active {
|
||||
color: $body-color;
|
||||
background: #fff;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
&.card-header-inverse {
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.btn {
|
||||
margin-top: - $input-btn-padding-y;
|
||||
}
|
||||
.btn-sm {
|
||||
margin-top: - $input-btn-padding-y-sm;
|
||||
}
|
||||
.btn-lg {
|
||||
margin-top: - $input-btn-padding-y-lg;
|
||||
}
|
||||
}
|
||||
//
|
||||
.card-footer {
|
||||
|
||||
ul {
|
||||
display: table;
|
||||
width: 100%;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
table-layout: fixed;
|
||||
|
||||
li {
|
||||
display: table-cell;
|
||||
padding: 0 $card-spacer-x;
|
||||
text-align: center;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
[class*="card-outline-"] {
|
||||
.card-body {
|
||||
background: #fff !important;
|
||||
}
|
||||
|
||||
&.card-outline-top {
|
||||
border-top-width: 2px;
|
||||
border-right-color: $border-color;
|
||||
border-bottom-color: $border-color;
|
||||
border-left-color: $border-color;
|
||||
}
|
||||
}
|
||||
|
||||
// Cards with color accent
|
||||
@each $color, $value in $theme-colors {
|
||||
.card-accent-#{$color} {
|
||||
@include card-accent-variant($value);
|
||||
}
|
||||
}
|
||||
|
||||
// Card Actions
|
||||
.card-header {
|
||||
> i {
|
||||
margin-right: $spacer / 2;
|
||||
}
|
||||
.card-actions {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
right: 0;
|
||||
//height: inherit;
|
||||
|
||||
a, button {
|
||||
display: block;
|
||||
float: left;
|
||||
width: 50px;
|
||||
padding: $card-spacer-y 0;
|
||||
margin: 0 !important;
|
||||
color: $body-color;
|
||||
text-align: center;
|
||||
background: transparent;
|
||||
border: 0;
|
||||
border-left: 1px solid $border-color;
|
||||
box-shadow: 0;
|
||||
|
||||
&:hover {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
[class^="icon-"], [class*=" icon-"] {
|
||||
display: inline-block;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
i {
|
||||
display: inline-block;
|
||||
transition: .4s;
|
||||
}
|
||||
|
||||
.r180 {
|
||||
transform: rotate(180deg);
|
||||
}
|
||||
}
|
||||
|
||||
.input-group {
|
||||
width: 230px;
|
||||
margin: 6px;
|
||||
|
||||
.input-group-prepend, .input-group-append {
|
||||
background: #fff;
|
||||
}
|
||||
|
||||
input {
|
||||
border-left: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.card-full {
|
||||
margin-top: - $spacer;
|
||||
margin-right: - $grid-gutter-width / 2;
|
||||
margin-left: - $grid-gutter-width / 2;
|
||||
border: 0;
|
||||
border-bottom: $card-border-width solid $border-color;
|
||||
}
|
||||
|
||||
@include media-breakpoint-up(sm) {
|
||||
.card-columns {
|
||||
|
||||
&.cols-2 {
|
||||
column-count: 2;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.card {
|
||||
&.drag, .drag {
|
||||
cursor: move;
|
||||
}
|
||||
}
|
||||
|
||||
.card-placeholder {
|
||||
background: rgba(0,0,0,.025);
|
||||
border: 1px dashed $gray-300;
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
.chart-wrapper {
|
||||
canvas {
|
||||
width: 100% !important;
|
||||
}
|
||||
}
|
||||
// scss-lint:disable QualifyingElement
|
||||
base-chart.chart {
|
||||
display: block !important;
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
// Temp fix for reactstrap
|
||||
.app-header {
|
||||
.navbar-nav {
|
||||
.dropdown-menu-right {
|
||||
right: auto;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,69 @@
|
||||
// Links, buttons, and more within the dropdown menu
|
||||
.dropdown-item {
|
||||
position: relative;
|
||||
padding: 10px 20px;
|
||||
border-bottom: 1px solid $dropdown-border-color;
|
||||
|
||||
&:last-child {
|
||||
border-bottom: 0;
|
||||
}
|
||||
|
||||
i {
|
||||
display: inline-block;
|
||||
width: 20px;
|
||||
margin-right: 10px;
|
||||
margin-left: -10px;
|
||||
color: $dropdown-border-color;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.badge {
|
||||
position: absolute;
|
||||
right: 10px;
|
||||
margin-top: 2px;
|
||||
}
|
||||
}
|
||||
|
||||
// Dropdown section headers
|
||||
.dropdown-header {
|
||||
padding: 8px 20px;
|
||||
background: $dropdown-divider-bg;
|
||||
border-bottom: 1px solid $dropdown-border-color;
|
||||
|
||||
.btn {
|
||||
margin-top: -7px;
|
||||
color: $dropdown-header-color;
|
||||
|
||||
&:hover {
|
||||
color: $body-color;
|
||||
}
|
||||
|
||||
&.pull-right {
|
||||
margin-right: -20px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.dropdown-menu-lg {
|
||||
width: 250px;
|
||||
}
|
||||
.app-header {
|
||||
.navbar-nav {
|
||||
.dropdown-menu {
|
||||
position: absolute;
|
||||
}
|
||||
// Menu positioning
|
||||
//
|
||||
// Add extra class to `.dropdown-menu` to flip the alignment of the dropdown
|
||||
// menu with the parent.
|
||||
.dropdown-menu-right {
|
||||
right: 0;
|
||||
left: auto; // Reset the default from `.dropdown-menu`
|
||||
}
|
||||
|
||||
.dropdown-menu-left {
|
||||
right: auto;
|
||||
left: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
.app-footer {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
align-items: center;
|
||||
padding: 0 $spacer;
|
||||
color: $footer-color;
|
||||
background: $footer-bg;
|
||||
@include borders($footer-borders);
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
.row.row-equal {
|
||||
padding-right: ($grid-gutter-width / 4);
|
||||
padding-left: ($grid-gutter-width / 4);
|
||||
margin-right: ($grid-gutter-width / -2);
|
||||
margin-left: ($grid-gutter-width / -2);
|
||||
|
||||
[class*="col-"] {
|
||||
padding-right: ($grid-gutter-width / 4);
|
||||
padding-left: ($grid-gutter-width / 4);
|
||||
}
|
||||
}
|
||||
|
||||
.main .container-fluid {
|
||||
padding: 0 30px;
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
.input-group-prepend,
|
||||
.input-group-append {
|
||||
white-space: nowrap;
|
||||
vertical-align: middle; // Match the inputs
|
||||
}
|
||||
@@ -0,0 +1,387 @@
|
||||
// IE10&11 Flexbox fix
|
||||
@media all and (-ms-high-contrast:none) {
|
||||
html {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
}
|
||||
|
||||
// app-dashboard and app-root are Angular2+ selectors. You can add here your own selectors if you need.
|
||||
.app,
|
||||
app-dashboard,
|
||||
app-root {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
min-height: 100vh;
|
||||
}
|
||||
|
||||
.app-header {
|
||||
flex: 0 0 $navbar-height;
|
||||
}
|
||||
|
||||
.app-footer {
|
||||
flex: 0 0 $footer-height;
|
||||
}
|
||||
|
||||
.app-body {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
flex-grow: 1;
|
||||
overflow-x: hidden;
|
||||
|
||||
.main {
|
||||
flex: 1;
|
||||
min-width: 0;
|
||||
}
|
||||
|
||||
.sidebar {
|
||||
// $sidebar-width is the width of the columns
|
||||
flex: 0 0 $sidebar-width;
|
||||
// put the nav on the left
|
||||
order: -1;
|
||||
}
|
||||
|
||||
.aside-menu {
|
||||
// $aside-menu-width is the width of the columns
|
||||
flex: 0 0 $aside-menu-width;
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// header
|
||||
//
|
||||
.header-fixed {
|
||||
.app-header {
|
||||
position: fixed;
|
||||
z-index: $zindex-sticky;
|
||||
width: 100%;
|
||||
}
|
||||
.app-body {
|
||||
margin-top: $navbar-height;
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// Sidebar
|
||||
//
|
||||
.sidebar-hidden {
|
||||
.sidebar {
|
||||
margin-left: - $sidebar-width;
|
||||
}
|
||||
}
|
||||
|
||||
.sidebar-fixed {
|
||||
.sidebar {
|
||||
position: fixed;
|
||||
z-index: $zindex-sticky - 1;
|
||||
width: $sidebar-width;
|
||||
height: calc(100vh - #{$navbar-height});
|
||||
// margin-top: - $navbar-height;
|
||||
|
||||
// .sidebar-nav {
|
||||
// height: calc(100vh - #{$navbar-height});
|
||||
// }
|
||||
}
|
||||
|
||||
.main, .app-footer {
|
||||
margin-left: $sidebar-width;
|
||||
}
|
||||
|
||||
&.sidebar-hidden {
|
||||
.main, .app-footer {
|
||||
margin-left: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.sidebar-off-canvas {
|
||||
.sidebar {
|
||||
position: fixed;
|
||||
z-index: $zindex-sticky - 1;
|
||||
height: calc(100vh - #{$navbar-height});
|
||||
}
|
||||
}
|
||||
|
||||
@include media-breakpoint-up(lg) {
|
||||
.sidebar-compact {
|
||||
.sidebar {
|
||||
flex: 0 0 $sidebar-compact-width;
|
||||
}
|
||||
|
||||
&.sidebar-hidden {
|
||||
.sidebar {
|
||||
margin-left: - $sidebar-compact-width;
|
||||
}
|
||||
}
|
||||
|
||||
&.sidebar-fixed {
|
||||
.main, .app-footer {
|
||||
margin-left: $sidebar-compact-width;
|
||||
}
|
||||
|
||||
.sidebar {
|
||||
width: $sidebar-compact-width;
|
||||
}
|
||||
|
||||
&.sidebar-hidden {
|
||||
.main, .app-footer {
|
||||
margin-left: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
.sidebar-minimizer {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
.sidebar-minimized {
|
||||
.sidebar {
|
||||
flex: 0 0 $sidebar-minimized-width;
|
||||
}
|
||||
|
||||
&.sidebar-hidden {
|
||||
.sidebar {
|
||||
margin-left: - $sidebar-minimized-width;
|
||||
}
|
||||
}
|
||||
|
||||
&.sidebar-fixed {
|
||||
.main, .app-footer {
|
||||
margin-left: $sidebar-minimized-width;
|
||||
}
|
||||
|
||||
.sidebar {
|
||||
width: $sidebar-minimized-width;
|
||||
}
|
||||
|
||||
&.sidebar-hidden {
|
||||
.main, .app-footer {
|
||||
margin-left: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// Aside Menu
|
||||
//
|
||||
.aside-menu-hidden {
|
||||
.aside-menu {
|
||||
margin-right: - $aside-menu-width;
|
||||
}
|
||||
}
|
||||
|
||||
.aside-menu-fixed {
|
||||
.aside-menu {
|
||||
position: fixed;
|
||||
right: 0;
|
||||
height: 100%;
|
||||
|
||||
.tab-content {
|
||||
height: calc(100vh - #{$aside-menu-nav-padding-y * 2 + $font-size-base} - #{$navbar-height});
|
||||
}
|
||||
}
|
||||
|
||||
.main, .app-footer {
|
||||
margin-right: $aside-menu-width;
|
||||
}
|
||||
|
||||
&.aside-menu-hidden {
|
||||
.main, .app-footer {
|
||||
margin-right: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.aside-menu-off-canvas {
|
||||
.aside-menu {
|
||||
position: fixed;
|
||||
right: 0;
|
||||
z-index: $zindex-sticky - 1;
|
||||
height: 100%;
|
||||
|
||||
.tab-content {
|
||||
height: calc(100vh - #{$aside-menu-nav-padding-y * 2 + $font-size-base} - #{$navbar-height});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// Breadcrumb
|
||||
//
|
||||
.breadcrumb-fixed {
|
||||
.main {
|
||||
$breadcrumb-height: 2 * $breadcrumb-padding-y + $font-size-base + 1.5 * $spacer;
|
||||
padding-top: $breadcrumb-height;
|
||||
}
|
||||
|
||||
.breadcrumb {
|
||||
position: fixed;
|
||||
top: $navbar-height;
|
||||
right: 0;
|
||||
left: 0;
|
||||
z-index: $zindex-sticky - 2;
|
||||
}
|
||||
|
||||
// if sidebar + main + aside
|
||||
.main:nth-child(2) {
|
||||
.breadcrumb {
|
||||
right: $aside-menu-width;
|
||||
left: $sidebar-width;
|
||||
}
|
||||
}
|
||||
|
||||
// if sidebar + main
|
||||
.main:first-child {
|
||||
.breadcrumb {
|
||||
right: $aside-menu-width;
|
||||
left: 0;
|
||||
}
|
||||
}
|
||||
|
||||
// if main + aside
|
||||
.main:last-child {
|
||||
.breadcrumb {
|
||||
right: 0;
|
||||
}
|
||||
}
|
||||
|
||||
&.sidebar-minimized {
|
||||
.main .breadcrumb {
|
||||
left: $sidebar-minimized-width;
|
||||
}
|
||||
}
|
||||
|
||||
&.sidebar-hidden, &.sidebar-off-canvas {
|
||||
.main .breadcrumb {
|
||||
left: 0;
|
||||
}
|
||||
}
|
||||
|
||||
&.aside-menu-hidden, &.aside-menu-off-canvas {
|
||||
.main .breadcrumb {
|
||||
right: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// Footer
|
||||
//
|
||||
.footer-fixed {
|
||||
.app-footer {
|
||||
position: fixed;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
z-index: $zindex-sticky;
|
||||
height: $footer-height;
|
||||
}
|
||||
|
||||
.app-body {
|
||||
margin-bottom: $footer-height;
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// Animations
|
||||
//
|
||||
.app-header,
|
||||
.app-footer,
|
||||
.sidebar,
|
||||
.main,
|
||||
.aside-menu {
|
||||
transition: margin-left $layout-transition-speed, margin-right $layout-transition-speed, width $layout-transition-speed, flex $layout-transition-speed;
|
||||
}
|
||||
.sidebar-nav {
|
||||
transition: width $layout-transition-speed;
|
||||
}
|
||||
.breadcrumb {
|
||||
transition: left $layout-transition-speed, right $layout-transition-speed, width $layout-transition-speed;
|
||||
}
|
||||
|
||||
//
|
||||
// Mobile layout
|
||||
//
|
||||
|
||||
@include media-breakpoint-down(md) {
|
||||
.app-header.navbar {
|
||||
position: fixed !important;
|
||||
z-index: $zindex-sticky;
|
||||
width: 100%;
|
||||
text-align: center;
|
||||
background-color: $navbar-brand-bg;
|
||||
@include borders($navbar-brand-border);
|
||||
|
||||
.navbar-toggler {
|
||||
@if (lightness( $navbar-brand-bg ) > 40) {
|
||||
color: $navbar-color;
|
||||
} @else {
|
||||
color: #fff;
|
||||
}
|
||||
}
|
||||
|
||||
.navbar-brand {
|
||||
position: absolute;
|
||||
left: 50%;
|
||||
margin-left: - ($navbar-brand-width / 2);
|
||||
}
|
||||
}
|
||||
|
||||
.app-body {
|
||||
margin-top: $navbar-height;
|
||||
}
|
||||
|
||||
.breadcrumb-fixed {
|
||||
.main:nth-child(2) .breadcrumb {
|
||||
right: auto;
|
||||
left: auto;
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
.sidebar {
|
||||
position: fixed;
|
||||
z-index: $zindex-sticky - 1;
|
||||
width: $mobile-sidebar-width;
|
||||
height: calc(100vh - #{$navbar-height});
|
||||
margin-left: - $mobile-sidebar-width;
|
||||
|
||||
.sidebar-nav,
|
||||
.nav {
|
||||
width: $mobile-sidebar-width;
|
||||
min-height: calc(100vh - #{$navbar-height});
|
||||
}
|
||||
|
||||
.sidebar-minimizer {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
.main, .app-footer {
|
||||
margin-left: 0 !important;
|
||||
}
|
||||
|
||||
// .aside-menu {
|
||||
// margin-right: - $aside-menu-width;
|
||||
// }
|
||||
|
||||
.sidebar-hidden {
|
||||
.sidebar {
|
||||
margin-left: - $mobile-sidebar-width;
|
||||
}
|
||||
}
|
||||
|
||||
.sidebar-mobile-show {
|
||||
.sidebar {
|
||||
width: $mobile-sidebar-width;
|
||||
margin-left: 0;
|
||||
}
|
||||
|
||||
.main {
|
||||
margin-right: - $mobile-sidebar-width !important;
|
||||
margin-left: $mobile-sidebar-width !important;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,128 @@
|
||||
// Angular Version
|
||||
// Make clicks pass-through
|
||||
// scss-lint:disable all
|
||||
#loading-bar,
|
||||
#loading-bar-spinner {
|
||||
-webkit-pointer-events: none;
|
||||
pointer-events: none;
|
||||
-moz-transition: 350ms linear all;
|
||||
-o-transition: 350ms linear all;
|
||||
-webkit-transition: 350ms linear all;
|
||||
transition: 350ms linear all;
|
||||
}
|
||||
|
||||
#loading-bar.ng-enter,
|
||||
#loading-bar.ng-leave.ng-leave-active,
|
||||
#loading-bar-spinner.ng-enter,
|
||||
#loading-bar-spinner.ng-leave.ng-leave-active {
|
||||
opacity: 0;
|
||||
}
|
||||
|
||||
#loading-bar.ng-enter.ng-enter-active,
|
||||
#loading-bar.ng-leave,
|
||||
#loading-bar-spinner.ng-enter.ng-enter-active,
|
||||
#loading-bar-spinner.ng-leave {
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
#loading-bar .bar {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
z-index: 20002;
|
||||
width: 100%;
|
||||
height: 2px;
|
||||
background: theme-color("primary");
|
||||
border-top-right-radius: 1px;
|
||||
border-bottom-right-radius: 1px;
|
||||
-moz-transition: width 350ms;
|
||||
-o-transition: width 350ms;
|
||||
-webkit-transition: width 350ms;
|
||||
transition: width 350ms;
|
||||
}
|
||||
|
||||
// Fancy blur effect
|
||||
#loading-bar .peg {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
right: 0;
|
||||
width: 70px;
|
||||
height: 2px;
|
||||
-moz-border-radius: 100%;
|
||||
-webkit-border-radius: 100%;
|
||||
border-radius: 100%;
|
||||
-moz-box-shadow: #29d 1px 0 6px 1px;
|
||||
-ms-box-shadow: #29d 1px 0 6px 1px;
|
||||
-webkit-box-shadow: #29d 1px 0 6px 1px;
|
||||
box-shadow: #29d 1px 0 6px 1px;
|
||||
opacity: .45;
|
||||
}
|
||||
|
||||
#loading-bar-spinner {
|
||||
position: fixed;
|
||||
top: 10px;
|
||||
left: 10px;
|
||||
z-index: 10002;
|
||||
display: block;
|
||||
}
|
||||
|
||||
#loading-bar-spinner .spinner-icon {
|
||||
width: 14px;
|
||||
height: 14px;
|
||||
|
||||
border: solid 2px transparent;
|
||||
border-top-color: #29d;
|
||||
border-left-color: #29d;
|
||||
border-radius: 50%;
|
||||
|
||||
-moz-animation: loading-bar-spinner 400ms linear infinite;
|
||||
-ms-animation: loading-bar-spinner 400ms linear infinite;
|
||||
-o-animation: loading-bar-spinner 400ms linear infinite;
|
||||
-webkit-animation: loading-bar-spinner 400ms linear infinite;
|
||||
animation: loading-bar-spinner 400ms linear infinite;
|
||||
}
|
||||
|
||||
@-webkit-keyframes loading-bar-spinner {
|
||||
0% { -webkit-transform: rotate(0deg); transform: rotate(0deg); }
|
||||
100% { -webkit-transform: rotate(360deg); transform: rotate(360deg); }
|
||||
}
|
||||
@-moz-keyframes loading-bar-spinner {
|
||||
0% { -moz-transform: rotate(0deg); transform: rotate(0deg); }
|
||||
100% { -moz-transform: rotate(360deg); transform: rotate(360deg); }
|
||||
}
|
||||
@-o-keyframes loading-bar-spinner {
|
||||
0% { -o-transform: rotate(0deg); transform: rotate(0deg); }
|
||||
100% { -o-transform: rotate(360deg); transform: rotate(360deg); }
|
||||
}
|
||||
@-ms-keyframes loading-bar-spinner {
|
||||
0% { -ms-transform: rotate(0deg); transform: rotate(0deg); }
|
||||
100% { -ms-transform: rotate(360deg); transform: rotate(360deg); }
|
||||
}
|
||||
@keyframes loading-bar-spinner {
|
||||
0% { transform: rotate(0deg); transform: rotate(0deg); }
|
||||
100% { transform: rotate(360deg); transform: rotate(360deg); }
|
||||
}
|
||||
|
||||
//Ajax & Static Version
|
||||
.pace {
|
||||
-webkit-pointer-events: none;
|
||||
pointer-events: none;
|
||||
|
||||
-moz-user-select: none;
|
||||
-webkit-user-select: none;
|
||||
user-select: none;
|
||||
}
|
||||
|
||||
.pace-inactive {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.pace .pace-progress {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
right: 100%;
|
||||
z-index: 2000;
|
||||
width: 100%;
|
||||
height: 2px;
|
||||
background: theme-color("primary");
|
||||
}
|
||||
@@ -0,0 +1,116 @@
|
||||
@mixin button-social-size($padding-y, $padding-x, $font-size, $line-height, $border-radius) {
|
||||
padding: $padding-y $padding-x;
|
||||
font-size: $font-size;
|
||||
line-height: $line-height;
|
||||
border: 0;
|
||||
@include border-radius($border-radius);
|
||||
|
||||
&::before {
|
||||
width: ($padding-y * 2) + ($font-size * $line-height);
|
||||
height: ($padding-y * 2) + ($font-size * $line-height);
|
||||
padding: $padding-y 0;
|
||||
font-size: $font-size;
|
||||
line-height: $line-height;
|
||||
@include border-radius($border-radius);
|
||||
}
|
||||
|
||||
span {
|
||||
margin-left: ($padding-y * 2) + ($font-size * $line-height);
|
||||
}
|
||||
|
||||
&.icon {
|
||||
width: ($padding-y * 2) + ($font-size * $line-height);
|
||||
height: ($padding-y * 2) + ($font-size * $line-height);
|
||||
}
|
||||
}
|
||||
|
||||
@mixin avatar($width, $status-width) {
|
||||
position: relative;
|
||||
display: inline-block;
|
||||
width: $width;
|
||||
|
||||
.img-avatar {
|
||||
width: $width;
|
||||
height: $width;
|
||||
}
|
||||
|
||||
.avatar-status {
|
||||
position: absolute;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
display: block;
|
||||
width: $status-width;
|
||||
height: $status-width;
|
||||
border: 1px solid #fff;
|
||||
border-radius: 50em;
|
||||
}
|
||||
}
|
||||
|
||||
@mixin borders($borders) {
|
||||
@each $border in $borders {
|
||||
$direction: nth($border, 1);
|
||||
@if $direction == "all" {
|
||||
$size: map-get(map-get($borders, $direction), size);
|
||||
$style: map-get(map-get($borders, $direction), style);
|
||||
$color: map-get(map-get($borders, $direction), color);
|
||||
border: $size $style $color;
|
||||
} @else if $direction == "top" {
|
||||
$size: map-get(map-get($borders, $direction), size);
|
||||
$style: map-get(map-get($borders, $direction), style);
|
||||
$color: map-get(map-get($borders, $direction), color);
|
||||
border-top: $size $style $color;
|
||||
} @else if $direction == "right" {
|
||||
$size: map-get(map-get($borders, $direction), size);
|
||||
$style: map-get(map-get($borders, $direction), style);
|
||||
$color: map-get(map-get($borders, $direction), color);
|
||||
border-right: $size $style $color;
|
||||
} @else if $direction == "bottom" {
|
||||
$size: map-get(map-get($borders, $direction), size);
|
||||
$style: map-get(map-get($borders, $direction), style);
|
||||
$color: map-get(map-get($borders, $direction), color);
|
||||
border-bottom: $size $style $color;
|
||||
} @else if $direction == "left" {
|
||||
$size: map-get(map-get($borders, $direction), size);
|
||||
$style: map-get(map-get($borders, $direction), style);
|
||||
$color: map-get(map-get($borders, $direction), color);
|
||||
border-left: $size $style $color;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@mixin sidebar-width($borders, $width) {
|
||||
$sidebar-width: $width;
|
||||
|
||||
@each $border in $borders {
|
||||
$direction: nth($border, 1);
|
||||
@if $direction == "all" {
|
||||
$size: map-get(map-get($borders, $direction), size);
|
||||
$sidebar-width: ($sidebar-width - (2 * $size));
|
||||
} @else if $direction == "right" {
|
||||
$size: map-get(map-get($borders, $direction), size);
|
||||
$sidebar-width: $sidebar-width - $size;
|
||||
} @else if $direction == "left" {
|
||||
$size: map-get(map-get($borders, $direction), size);
|
||||
$sidebar-width: $sidebar-width - $size;
|
||||
}
|
||||
width: $sidebar-width;
|
||||
}
|
||||
}
|
||||
|
||||
@mixin bg-variant($parent, $color) {
|
||||
#{$parent} {
|
||||
@include border-radius($card-border-radius-inner $card-border-radius-inner $card-border-radius-inner $card-border-radius-inner);
|
||||
color: #fff !important;
|
||||
background-color: $color !important;
|
||||
}
|
||||
a#{$parent} {
|
||||
@include hover-focus {
|
||||
background-color: darken($color, 10%);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@mixin card-accent-variant($color) {
|
||||
border-top-width: 2px;
|
||||
border-top-color: $color;
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
@each $color, $value in $theme-colors {
|
||||
.modal-#{$color} {
|
||||
|
||||
.modal-content {
|
||||
border-color: $value;
|
||||
}
|
||||
|
||||
.modal-header {
|
||||
color: #fff;
|
||||
background-color: $value;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
.nav-tabs {
|
||||
.nav-link {
|
||||
color: $gray-600;
|
||||
&:hover {
|
||||
cursor: pointer;
|
||||
}
|
||||
&.active {
|
||||
color: $gray-800;
|
||||
background: #fff;
|
||||
border-color: $border-color;
|
||||
border-bottom-color: #fff;
|
||||
&:focus {
|
||||
background: #fff;
|
||||
border-color: $border-color;
|
||||
border-bottom-color: #fff;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.tab-content {
|
||||
margin-top: -1px;
|
||||
background: #fff;
|
||||
border: 1px solid $border-color;
|
||||
.tab-pane {
|
||||
padding: $spacer;
|
||||
}
|
||||
}
|
||||
|
||||
.card-block {
|
||||
.tab-content {
|
||||
margin-top: 0;
|
||||
border: 0;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,127 @@
|
||||
.app-header.navbar {
|
||||
position: relative;
|
||||
flex-direction: row;
|
||||
height: $navbar-height;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
background-color: $navbar-bg;
|
||||
@include borders($navbar-border);
|
||||
|
||||
.navbar-brand {
|
||||
display: inline-block;
|
||||
width: $navbar-brand-width;
|
||||
height: $navbar-height;
|
||||
padding: $navbar-padding-y $navbar-padding-x;
|
||||
margin-right: 0;
|
||||
background-color: $navbar-brand-bg;
|
||||
background-image: $navbar-brand-logo;
|
||||
background-repeat: no-repeat;
|
||||
background-position: center center;
|
||||
background-size: $navbar-brand-logo-size;
|
||||
@include borders($navbar-brand-border);
|
||||
}
|
||||
|
||||
.navbar-toggler {
|
||||
min-width: 50px;
|
||||
padding: $navbar-toggler-padding-y 0;
|
||||
|
||||
&:hover .navbar-toggler-icon {
|
||||
background-image: $navbar-toggler-icon-hover;
|
||||
}
|
||||
}
|
||||
|
||||
.navbar-toggler-icon {
|
||||
height: 23px;
|
||||
background-image: $navbar-toggler-icon;
|
||||
}
|
||||
|
||||
.navbar-nav {
|
||||
flex-direction: row;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.nav-item {
|
||||
position: relative;
|
||||
min-width: 50px;
|
||||
margin: 0 !important;
|
||||
text-align: center;
|
||||
|
||||
button {
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
.nav-link {
|
||||
padding-top: 0;
|
||||
padding-bottom: 0;
|
||||
background: 0;
|
||||
border: 0;
|
||||
|
||||
.badge {
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
margin-top: -16px;
|
||||
margin-left: 0;
|
||||
}
|
||||
|
||||
> .img-avatar {
|
||||
height: $navbar-height - 20px;
|
||||
margin: 0 10px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.dropdown-menu {
|
||||
padding-bottom: 0;
|
||||
line-height: $line-height-base;
|
||||
}
|
||||
|
||||
.dropdown-item {
|
||||
min-width: 180px;
|
||||
}
|
||||
}
|
||||
|
||||
.navbar-brand {
|
||||
color: $navbar-active-color;
|
||||
|
||||
@include hover-focus {
|
||||
color: $navbar-active-color;
|
||||
}
|
||||
}
|
||||
|
||||
.navbar-nav {
|
||||
.nav-link {
|
||||
color: $navbar-color;
|
||||
|
||||
@include hover-focus {
|
||||
color: $navbar-hover-color;
|
||||
}
|
||||
}
|
||||
|
||||
.open > .nav-link,
|
||||
.active > .nav-link,
|
||||
.nav-link.open,
|
||||
.nav-link.active {
|
||||
@include plain-hover-focus {
|
||||
color: $navbar-active-color;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.navbar-divider {
|
||||
background-color: rgba(0,0,0,.075);
|
||||
}
|
||||
|
||||
@include media-breakpoint-up(lg) {
|
||||
.brand-minimized {
|
||||
.app-header.navbar {
|
||||
.navbar-brand {
|
||||
width: $navbar-brand-minimized-width;
|
||||
background-color: $navbar-brand-minimized-bg;
|
||||
background-image: $navbar-brand-minimized-logo;
|
||||
background-size: $navbar-brand-minimized-logo-size;
|
||||
@include borders($navbar-brand-minimized-border);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,4 @@
|
||||
// scss-lint:disable QualifyingElement
|
||||
hr.transparent {
|
||||
border-top: 1px solid transparent;
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
.progress-xs {
|
||||
height: 4px;
|
||||
}
|
||||
|
||||
.progress-sm {
|
||||
height: 8px;
|
||||
}
|
||||
|
||||
// White progress bar
|
||||
.progress-white {
|
||||
background-color: rgba(255,255,255,.2) !important;
|
||||
.progress-bar {
|
||||
background-color: #fff;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,281 @@
|
||||
//
|
||||
// RTL Support
|
||||
//
|
||||
// scss-lint:disable NestingDepth, SelectorDepth
|
||||
*[dir="rtl"] {
|
||||
direction: rtl;
|
||||
unicode-bidi: embed;
|
||||
|
||||
ul {
|
||||
-webkit-padding-start: 0;
|
||||
}
|
||||
|
||||
table tr th {
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
// Breadcrumb
|
||||
|
||||
.breadcrumb-item {
|
||||
float: right;
|
||||
}
|
||||
|
||||
.breadcrumb-menu {
|
||||
right: auto;
|
||||
left: $breadcrumb-padding-x;
|
||||
}
|
||||
|
||||
// Dropdown
|
||||
.dropdown-item {
|
||||
text-align: right;
|
||||
|
||||
i {
|
||||
margin-right: -10px;
|
||||
margin-left: 10px;
|
||||
}
|
||||
|
||||
.badge {
|
||||
right: auto;
|
||||
left: 10px;
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// Sidebar
|
||||
//
|
||||
.sidebar-hidden {
|
||||
.sidebar {
|
||||
margin-right: - $sidebar-width;
|
||||
}
|
||||
}
|
||||
|
||||
.sidebar-fixed {
|
||||
.main, .app-footer {
|
||||
margin-right: $sidebar-width;
|
||||
}
|
||||
|
||||
&.sidebar-hidden {
|
||||
.main, .app-footer {
|
||||
margin-right: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.sidebar-minimized {
|
||||
.sidebar {
|
||||
flex: 0 0 $sidebar-minimized-width;
|
||||
}
|
||||
|
||||
&.sidebar-hidden {
|
||||
.sidebar {
|
||||
margin-right: - $sidebar-minimized-width;
|
||||
margin-left: 0;
|
||||
}
|
||||
}
|
||||
|
||||
&.sidebar-fixed {
|
||||
.main, .app-footer {
|
||||
margin-right: $sidebar-minimized-width;
|
||||
}
|
||||
|
||||
&.sidebar-hidden {
|
||||
.main, .app-footer {
|
||||
margin-left: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// Aside Menu
|
||||
//
|
||||
.aside-menu-hidden {
|
||||
.aside-menu {
|
||||
margin-right: 0;
|
||||
margin-left: - $aside-menu-width;
|
||||
}
|
||||
}
|
||||
|
||||
.aside-menu-fixed {
|
||||
.aside-menu {
|
||||
right: auto;
|
||||
left: 0;
|
||||
}
|
||||
|
||||
.main, .app-footer {
|
||||
//margin-right: 0;
|
||||
margin-left: $aside-menu-width;
|
||||
}
|
||||
|
||||
&.aside-menu-hidden {
|
||||
.main, .app-footer {
|
||||
margin-left: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.aside-menu-off-canvas {
|
||||
.aside-menu {
|
||||
position: fixed;
|
||||
right: 0;
|
||||
z-index: $zindex-sticky - 1;
|
||||
height: 100%;
|
||||
|
||||
.tab-content {
|
||||
height: calc(100vh - #{$aside-menu-nav-padding-y * 2 + $font-size-base} - #{$navbar-height});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Sidebar Menu
|
||||
.sidebar {
|
||||
.sidebar-nav {
|
||||
.nav {
|
||||
.nav-item {
|
||||
.nav-link {
|
||||
direction: rtl;
|
||||
i {
|
||||
margin: 0 0 0 ($sidebar-nav-link-padding-x / 2);
|
||||
}
|
||||
.badge {
|
||||
float: left;
|
||||
margin-top: 2px;
|
||||
// margin-left: 10px;
|
||||
}
|
||||
&.nav-dropdown-toggle {
|
||||
&::before {
|
||||
position: absolute;
|
||||
right: auto !important;
|
||||
left: $sidebar-nav-link-padding-x;
|
||||
transform: rotate(180deg);
|
||||
}
|
||||
}
|
||||
}
|
||||
&.nav-dropdown {
|
||||
&.open {
|
||||
> .nav-link.nav-dropdown-toggle::before {
|
||||
transform: rotate(270deg);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.sidebar-minimized .sidebar {
|
||||
.nav-link {
|
||||
padding-right: 0;
|
||||
i {
|
||||
float: right;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
}
|
||||
.badge {
|
||||
right: auto;
|
||||
left: 15px;
|
||||
}
|
||||
}
|
||||
.nav > .nav-dropdown {
|
||||
|
||||
&:hover {
|
||||
> .nav-dropdown-items {
|
||||
right: $sidebar-minimized-width;
|
||||
left: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Horizontal bars
|
||||
.horizontal-bars {
|
||||
|
||||
li {
|
||||
|
||||
.bars {
|
||||
padding-right: 100px;
|
||||
padding-left: 0;
|
||||
|
||||
.progress:first-child {
|
||||
margin-bottom: 2px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
&.type-2 {
|
||||
|
||||
li {
|
||||
|
||||
i {
|
||||
margin-right: 5px;
|
||||
margin-left: $spacer;
|
||||
}
|
||||
|
||||
.value {
|
||||
float: left;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.bars {
|
||||
padding: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Icon list
|
||||
.icons-list {
|
||||
|
||||
li {
|
||||
position: relative;
|
||||
height: 40px;
|
||||
vertical-align: middle;
|
||||
|
||||
i {
|
||||
float: right;
|
||||
}
|
||||
|
||||
.desc {
|
||||
margin-right: 50px;
|
||||
margin-left: 0;
|
||||
}
|
||||
|
||||
.value {
|
||||
right: auto;
|
||||
left: 45px;
|
||||
text-align: left;
|
||||
|
||||
strong {
|
||||
display: block;
|
||||
margin-top: -3px;
|
||||
}
|
||||
}
|
||||
|
||||
.actions {
|
||||
right: auto;
|
||||
left: 10px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Callouts
|
||||
.callout {
|
||||
border: 0 solid $border-color;
|
||||
border-right-width: .25rem;
|
||||
|
||||
@each $color, $value in $theme-colors {
|
||||
&.callout-#{$color} {
|
||||
border-right-color: $value;
|
||||
}
|
||||
}
|
||||
|
||||
.chart-wrapper {
|
||||
left: 0;
|
||||
float: left;
|
||||
}
|
||||
}
|
||||
|
||||
.callout-default {
|
||||
border-right-color: $text-muted;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,454 @@
|
||||
// scss-lint:disable NestingDepth, SelectorDepth
|
||||
.sidebar {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
padding: $sidebar-padding;
|
||||
color: $sidebar-color;
|
||||
background: $sidebar-bg;
|
||||
@include borders($sidebar-borders);
|
||||
|
||||
.sidebar-close {
|
||||
position: absolute;
|
||||
right: 0;
|
||||
display: none;
|
||||
padding: 0 $spacer;
|
||||
font-size: 24px;
|
||||
font-weight: 800;
|
||||
line-height: $navbar-height;
|
||||
color: $sidebar-color;
|
||||
background: 0;
|
||||
border: 0;
|
||||
opacity: .8;
|
||||
|
||||
&:hover {
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
|
||||
// Will be added soon
|
||||
// .sidebar-brand { }
|
||||
|
||||
.sidebar-header {
|
||||
flex: 0 0 $sidebar-header-height;
|
||||
padding: $sidebar-header-padding-y $sidebar-header-padding-x;
|
||||
text-align: center;
|
||||
background: $sidebar-header-bg;
|
||||
}
|
||||
|
||||
.sidebar-form .form-control {
|
||||
color: $sidebar-form-color;
|
||||
background: $sidebar-form-bg;
|
||||
border: $sidebar-form-border;
|
||||
|
||||
&::placeholder {
|
||||
color: $sidebar-form-placeholder-color;
|
||||
}
|
||||
}
|
||||
|
||||
.sidebar-nav {
|
||||
position: relative;
|
||||
flex: 1;
|
||||
overflow-x: hidden;
|
||||
overflow-y: auto;
|
||||
-ms-overflow-style: -ms-autohiding-scrollbar;
|
||||
@include sidebar-width($sidebar-borders, $sidebar-width);
|
||||
|
||||
&::-webkit-scrollbar {
|
||||
position: absolute;
|
||||
width: 10px;
|
||||
margin-left: -10px;
|
||||
-webkit-appearance: none;
|
||||
}
|
||||
|
||||
&::-webkit-scrollbar-track {
|
||||
background-color: lighten($sidebar-bg, 5%);
|
||||
border-right: 1px solid darken($sidebar-bg, 5%);
|
||||
border-left: 1px solid darken($sidebar-bg, 5%);
|
||||
}
|
||||
|
||||
&::-webkit-scrollbar-thumb {
|
||||
height: 50px;
|
||||
background-color: darken($sidebar-bg, 10%);
|
||||
background-clip: content-box;
|
||||
border-color: transparent;
|
||||
border-style: solid;
|
||||
border-width: 1px 2px;
|
||||
}
|
||||
}
|
||||
|
||||
.nav {
|
||||
@include sidebar-width($sidebar-borders, $sidebar-width);
|
||||
flex-direction: column;
|
||||
min-height: 100%;
|
||||
}
|
||||
|
||||
.nav-title {
|
||||
padding: $sidebar-nav-title-padding-y $sidebar-nav-title-padding-x;
|
||||
font-size: 11px;
|
||||
font-weight: 600;
|
||||
color: $sidebar-nav-title-color;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
||||
.nav-divider, .divider {
|
||||
height: 10px;
|
||||
}
|
||||
|
||||
.nav-item {
|
||||
position: relative;
|
||||
margin: 0;
|
||||
transition: background .3s ease-in-out;
|
||||
}
|
||||
|
||||
.nav-dropdown-items {
|
||||
max-height: 0;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
overflow-y: hidden;
|
||||
transition: max-height .3s ease-in-out;
|
||||
|
||||
.nav-item {
|
||||
padding: 0;
|
||||
list-style: none;
|
||||
}
|
||||
}
|
||||
|
||||
.nav-link {
|
||||
display: block;
|
||||
padding: $sidebar-nav-link-padding-y $sidebar-nav-link-padding-x;
|
||||
color: $sidebar-nav-link-color;
|
||||
text-decoration: none;
|
||||
background: $sidebar-nav-link-bg;
|
||||
@include borders($sidebar-nav-link-borders);
|
||||
@if $enable-sidebar-nav-rounded {
|
||||
border-radius: $border-radius;
|
||||
}
|
||||
|
||||
i {
|
||||
display: inline-block;
|
||||
width: 20px;
|
||||
margin: 0 ($sidebar-nav-link-padding-x / 2) 0 0;
|
||||
font-size: 14px;
|
||||
color: $sidebar-nav-link-icon-color;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.badge {
|
||||
float: right;
|
||||
margin-top: 2px;
|
||||
}
|
||||
|
||||
&.active {
|
||||
color: $sidebar-nav-link-active-color;
|
||||
background: $sidebar-nav-link-active-bg;
|
||||
@include borders($sidebar-nav-link-active-borders);
|
||||
|
||||
i {
|
||||
color: $sidebar-nav-link-active-icon-color;
|
||||
}
|
||||
}
|
||||
|
||||
&:hover {
|
||||
color: $sidebar-nav-link-hover-color;
|
||||
background: $sidebar-nav-link-hover-bg;
|
||||
@include borders($sidebar-nav-link-hover-borders);
|
||||
|
||||
i {
|
||||
color: $sidebar-nav-link-hover-icon-color;
|
||||
}
|
||||
|
||||
&.nav-dropdown-toggle::before {
|
||||
background-image: $sidebar-nav-dropdown-indicator-hover;
|
||||
}
|
||||
}
|
||||
|
||||
@each $color, $value in $theme-colors {
|
||||
&.nav-link-#{$color} {
|
||||
background: $value;
|
||||
i {
|
||||
color: rgba(255,255,255,.7);
|
||||
}
|
||||
&:hover {
|
||||
background: darken($value,5%) !important;
|
||||
i {
|
||||
color: #fff;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// ex. <a class="nav-link nav-dropdown-toggle" href="#">Components</a>
|
||||
.nav-dropdown-toggle {
|
||||
position: relative;
|
||||
|
||||
&::before {
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
right: $sidebar-nav-link-padding-x;
|
||||
display: block;
|
||||
width: 8px;
|
||||
height: 8px;
|
||||
padding: 0;
|
||||
margin-top: -4px;
|
||||
content: "";
|
||||
background-image: $sidebar-nav-dropdown-indicator;
|
||||
background-repeat: no-repeat;
|
||||
background-position: center;
|
||||
transition: transform .3s;
|
||||
}
|
||||
}
|
||||
|
||||
// ex. <li class="nav-item nav-dropdown">
|
||||
.nav-dropdown.open {
|
||||
background: $sidebar-nav-dropdown-bg;
|
||||
@include borders($sidebar-nav-dropdown-borders);
|
||||
@if $enable-sidebar-nav-rounded {
|
||||
border-radius: $border-radius;
|
||||
}
|
||||
> .nav-dropdown-items {
|
||||
max-height: 1500px;
|
||||
}
|
||||
|
||||
.nav-link {
|
||||
color: $sidebar-nav-dropdown-color;
|
||||
border-left: 0 !important;
|
||||
}
|
||||
|
||||
> .nav-link.nav-dropdown-toggle::before {
|
||||
transform: rotate(-90deg);
|
||||
}
|
||||
|
||||
.nav-dropdown.open {
|
||||
border-left: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.nav-label {
|
||||
display: block;
|
||||
padding: ($sidebar-nav-link-padding-y / 8) $sidebar-nav-link-padding-x;
|
||||
color: $sidebar-nav-title-color;
|
||||
|
||||
&:hover {
|
||||
color: $sidebar-color;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
i {
|
||||
width: 20px;
|
||||
margin: -3px ($sidebar-nav-link-padding-x / 2) 0 0;
|
||||
font-size: 10px;
|
||||
color: $sidebar-nav-link-icon-color;
|
||||
text-align: center;
|
||||
vertical-align: middle;
|
||||
}
|
||||
}
|
||||
|
||||
@if (lightness( $sidebar-bg ) < 40) {
|
||||
.progress {
|
||||
background-color: lighten($sidebar-bg, 15%) !important;
|
||||
}
|
||||
}
|
||||
|
||||
.sidebar-footer {
|
||||
flex: 0 0 $sidebar-footer-height;
|
||||
padding: $sidebar-footer-padding-y $sidebar-footer-padding-x;
|
||||
background: $sidebar-footer-bg;
|
||||
@include borders($sidebar-footer-borders);
|
||||
}
|
||||
|
||||
.sidebar-minimizer {
|
||||
position: relative;
|
||||
flex: 0 0 $sidebar-minimizer-height;
|
||||
background-color: $sidebar-minimizer-bg;
|
||||
border: 0;
|
||||
@include borders($sidebar-minimizer-borders);
|
||||
|
||||
&::before {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
right: 0;
|
||||
width: $sidebar-minimizer-height;
|
||||
height: $sidebar-minimizer-height;
|
||||
content: "";
|
||||
background-image: $sidebar-minimizer-indicator;
|
||||
background-repeat: no-repeat;
|
||||
background-position: center;
|
||||
background-size: $sidebar-minimizer-height / 4;
|
||||
transition: .3s;
|
||||
}
|
||||
|
||||
&:focus,
|
||||
&.focus {
|
||||
outline: 0;
|
||||
}
|
||||
|
||||
&:hover {
|
||||
background-color: $sidebar-minimizer-hover-bg;
|
||||
&::before {
|
||||
background-image: $sidebar-minimizer-hover-indicator;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@include media-breakpoint-up(lg) {
|
||||
.sidebar-compact {
|
||||
.sidebar {
|
||||
.sidebar-nav {
|
||||
@include sidebar-width($sidebar-borders, $sidebar-compact-width);
|
||||
}
|
||||
|
||||
.nav {
|
||||
@include sidebar-width($sidebar-borders, $sidebar-compact-width);
|
||||
|
||||
.nav-title {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.nav-item {
|
||||
width: $sidebar-compact-width;
|
||||
border-left: 0 !important;
|
||||
|
||||
.nav-link {
|
||||
text-align: center;
|
||||
|
||||
i {
|
||||
display: block;
|
||||
width: 100%;
|
||||
margin: $spacer / 4 0;
|
||||
font-size: 24px;
|
||||
}
|
||||
|
||||
.badge {
|
||||
position: absolute;
|
||||
top: 18px;
|
||||
right: 10px;
|
||||
}
|
||||
|
||||
&.nav-dropdown-toggle {
|
||||
|
||||
&::before {
|
||||
top: 30px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Minimized Sidebar
|
||||
.sidebar-minimized {
|
||||
.hidden-cn {
|
||||
display: none;
|
||||
}
|
||||
.sidebar {
|
||||
z-index: $zindex-sticky - 1;
|
||||
|
||||
.sidebar-nav {
|
||||
overflow: visible;
|
||||
@include sidebar-width($sidebar-borders, $sidebar-minimized-width);
|
||||
}
|
||||
|
||||
.nav {
|
||||
@include sidebar-width($sidebar-borders, $sidebar-minimized-width);
|
||||
}
|
||||
|
||||
.nav-divider, .divider,
|
||||
.nav-title,
|
||||
.sidebar-footer,
|
||||
.sidebar-form,
|
||||
.sidebar-header {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.sidebar-minimizer::before {
|
||||
width: 100%;
|
||||
transform: rotate(-180deg);
|
||||
}
|
||||
|
||||
.nav-item {
|
||||
width: $sidebar-minimized-width;
|
||||
overflow: hidden;
|
||||
border-left: 0 !important;
|
||||
|
||||
&:hover {
|
||||
width: $sidebar-width + $sidebar-minimized-width;
|
||||
overflow: visible;
|
||||
|
||||
> .nav-link {
|
||||
background: $sidebar-nav-link-hover-bg;
|
||||
|
||||
i {
|
||||
color: $sidebar-nav-link-hover-color;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.nav-link {
|
||||
position: relative;
|
||||
padding-left: 0;
|
||||
margin: 0;
|
||||
white-space: nowrap;
|
||||
border-left: 0 !important;
|
||||
|
||||
i {
|
||||
display: block;
|
||||
float: left;
|
||||
width: $sidebar-minimized-height;
|
||||
// padding: 0;
|
||||
// margin: 0 !important;
|
||||
font-size: 18px;
|
||||
}
|
||||
|
||||
.badge {
|
||||
position: absolute;
|
||||
right: 15px;
|
||||
display: none;
|
||||
}
|
||||
|
||||
&:hover {
|
||||
width: $sidebar-width + $sidebar-minimized-width;
|
||||
background: $sidebar-nav-link-hover-bg;
|
||||
|
||||
.badge {
|
||||
display: inline;
|
||||
}
|
||||
}
|
||||
|
||||
&.nav-dropdown-toggle::before {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
.nav-dropdown-items {
|
||||
.nav-item {
|
||||
width: $sidebar-width;
|
||||
|
||||
.nav-link {
|
||||
width: $sidebar-width;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.nav > .nav-dropdown {
|
||||
> .nav-dropdown-items {
|
||||
display: none;
|
||||
max-height: 1000px;
|
||||
background: $sidebar-bg;
|
||||
}
|
||||
|
||||
&:hover {
|
||||
background: $sidebar-nav-link-hover-bg;
|
||||
> .nav-dropdown-items {
|
||||
position: absolute;
|
||||
left: $sidebar-minimized-width;
|
||||
display: inline;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,301 @@
|
||||
@mixin switch-size($width, $height, $font-size, $handle-margin) {
|
||||
width: $width;
|
||||
height: $height;
|
||||
|
||||
.switch-label {
|
||||
font-size: $font-size;
|
||||
}
|
||||
|
||||
.switch-handle {
|
||||
width: $height - $handle-margin * 2;
|
||||
height: $height - $handle-margin * 2;
|
||||
}
|
||||
|
||||
.switch-input:checked ~ .switch-handle {
|
||||
left: $width - $height + $handle-margin;
|
||||
}
|
||||
}
|
||||
|
||||
@mixin switch($type, $width, $height, $font-size, $handle-margin) {
|
||||
position: relative;
|
||||
display: inline-block;
|
||||
vertical-align: top;
|
||||
width: $width;
|
||||
height: $height;
|
||||
background-color: transparent;
|
||||
cursor: pointer;
|
||||
|
||||
.switch-input {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
opacity: 0;
|
||||
}
|
||||
|
||||
.switch-label {
|
||||
position: relative;
|
||||
display: block;
|
||||
height: inherit;
|
||||
@if $type == icon {
|
||||
font-family: FontAwesome;
|
||||
}
|
||||
font-size: $font-size;
|
||||
font-weight: 600;
|
||||
text-transform: uppercase;
|
||||
@if $type == ddd {
|
||||
background-color: $gray-100;
|
||||
} @else {
|
||||
background-color: #fff;
|
||||
}
|
||||
border: 1px solid $border-color;
|
||||
border-radius: 2px;
|
||||
transition: opacity background .15s ease-out;
|
||||
}
|
||||
@if $type == text or $type == icon {
|
||||
.switch-label::before,
|
||||
.switch-label::after {
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
width: 50%;
|
||||
margin-top: -.5em;
|
||||
line-height: 1;
|
||||
text-align: center;
|
||||
transition: inherit;
|
||||
}
|
||||
.switch-label::before {
|
||||
right: 1px;
|
||||
color: $gray-200;
|
||||
content: attr(data-off);
|
||||
}
|
||||
.switch-label::after {
|
||||
left: 1px;
|
||||
color: #fff;
|
||||
content: attr(data-on);
|
||||
opacity: 0;
|
||||
}
|
||||
}
|
||||
.switch-input:checked ~ .switch-label {
|
||||
//background: $gray-lightest;
|
||||
}
|
||||
.switch-input:checked ~ .switch-label::before {
|
||||
opacity: 0;
|
||||
}
|
||||
.switch-input:checked ~ .switch-label::after {
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
.switch-handle {
|
||||
position: absolute;
|
||||
top: $handle-margin;
|
||||
left: $handle-margin;
|
||||
width: $height - $handle-margin * 2;
|
||||
height: $height - $handle-margin * 2;
|
||||
background: #fff;
|
||||
border: 1px solid $border-color;
|
||||
border-radius: 1px;
|
||||
transition: left .15s ease-out;
|
||||
@if $type == ddd {
|
||||
border: 0;
|
||||
box-shadow: 0 2px 5px rgba(0, 0, 0, .3);
|
||||
}
|
||||
}
|
||||
|
||||
.switch-input:checked ~ .switch-handle {
|
||||
left: $width - $height + $handle-margin;
|
||||
}
|
||||
|
||||
|
||||
@if $type == ddd {
|
||||
@extend .switch-pill;
|
||||
}
|
||||
|
||||
//size variations
|
||||
@if $type == default {
|
||||
|
||||
&.switch-lg {
|
||||
@include switch-size($switch-lg-width, $switch-lg-height, $switch-lg-font-size, $handle-margin);
|
||||
}
|
||||
&.switch-sm {
|
||||
@include switch-size($switch-sm-width, $switch-sm-height, $switch-sm-font-size, $handle-margin);
|
||||
}
|
||||
&.switch-xs {
|
||||
@include switch-size($switch-xs-width, $switch-xs-height, $switch-xs-font-size, $handle-margin);
|
||||
}
|
||||
|
||||
} @else if $type == text {
|
||||
|
||||
&.switch-lg {
|
||||
@include switch-size($switch-text-lg-width, $switch-text-lg-height, $switch-text-lg-font-size, $handle-margin);
|
||||
}
|
||||
&.switch-sm {
|
||||
@include switch-size($switch-text-sm-width, $switch-text-sm-height, $switch-text-sm-font-size, $handle-margin);
|
||||
}
|
||||
&.switch-xs {
|
||||
@include switch-size($switch-text-xs-width, $switch-text-xs-height, $switch-text-xs-font-size, $handle-margin);
|
||||
}
|
||||
|
||||
} @else if $type == icon {
|
||||
|
||||
&.switch-lg {
|
||||
@include switch-size($switch-icon-lg-width, $switch-icon-lg-height, $switch-icon-lg-font-size, $handle-margin);
|
||||
}
|
||||
&.switch-sm {
|
||||
@include switch-size($switch-icon-sm-width, $switch-icon-sm-height, $switch-icon-sm-font-size, $handle-margin);
|
||||
}
|
||||
&.switch-xs {
|
||||
@include switch-size($switch-icon-xs-width, $switch-icon-xs-height, $switch-icon-xs-font-size, $handle-margin);
|
||||
}
|
||||
|
||||
} @else if $type == ddd {
|
||||
|
||||
&.switch-lg {
|
||||
@include switch-size($switch-lg-width, $switch-lg-height, $switch-lg-font-size, 0);
|
||||
}
|
||||
&.switch-sm {
|
||||
@include switch-size($switch-sm-width, $switch-sm-height, $switch-sm-font-size, 0);
|
||||
}
|
||||
&.switch-xs {
|
||||
@include switch-size($switch-xs-width, $switch-xs-height, $switch-xs-font-size, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@mixin switch-variant($color) {
|
||||
> .switch-input:checked ~ .switch-label {
|
||||
background: $color !important;
|
||||
border-color: darken($color,10%);
|
||||
}
|
||||
|
||||
> .switch-input:checked ~ .switch-handle {
|
||||
border-color: darken($color,10%);
|
||||
}
|
||||
}
|
||||
|
||||
@mixin switch-outline-variant($color) {
|
||||
> .switch-input:checked ~ .switch-label {
|
||||
background: #fff !important;
|
||||
border-color: $color;
|
||||
|
||||
&::after {
|
||||
color: $color;
|
||||
}
|
||||
}
|
||||
|
||||
> .switch-input:checked ~ .switch-handle {
|
||||
border-color: $color;
|
||||
}
|
||||
}
|
||||
|
||||
@mixin switch-outline-alt-variant($color) {
|
||||
> .switch-input:checked ~ .switch-label {
|
||||
background: #fff !important;
|
||||
border-color: $color;
|
||||
|
||||
&::after {
|
||||
color: $color;
|
||||
}
|
||||
}
|
||||
|
||||
> .switch-input:checked ~ .switch-handle {
|
||||
background: $color !important;
|
||||
border-color: $color;
|
||||
}
|
||||
}
|
||||
|
||||
$switch-lg-width: 48px;
|
||||
$switch-lg-height: 28px;
|
||||
$switch-lg-font-size: 12px;
|
||||
|
||||
$switch-width: 40px;
|
||||
$switch-height: 24px;
|
||||
$switch-font-size: 10px;
|
||||
|
||||
$handle-margin: 2px;
|
||||
|
||||
$switch-sm-width: 32px;
|
||||
$switch-sm-height: 20px;
|
||||
$switch-sm-font-size: 8px;
|
||||
|
||||
$switch-xs-width: 24px;
|
||||
$switch-xs-height: 16px;
|
||||
$switch-xs-font-size: 7px;
|
||||
|
||||
|
||||
$switch-text-lg-width: 56px;
|
||||
$switch-text-lg-height: 28px;
|
||||
$switch-text-lg-font-size: 12px;
|
||||
|
||||
$switch-text-width: 48px;
|
||||
$switch-text-height: 24px;
|
||||
$switch-text-font-size: 10px;
|
||||
|
||||
$switch-text-sm-width: 40px;
|
||||
$switch-text-sm-height: 20px;
|
||||
$switch-text-sm-font-size: 8px;
|
||||
|
||||
$switch-text-xs-width: 32px;
|
||||
$switch-text-xs-height: 16px;
|
||||
$switch-text-xs-font-size: 7px;
|
||||
|
||||
|
||||
$switch-icon-lg-width: 56px;
|
||||
$switch-icon-lg-height: 28px;
|
||||
$switch-icon-lg-font-size: 12px;
|
||||
|
||||
$switch-icon-width: 48px;
|
||||
$switch-icon-height: 24px;
|
||||
$switch-icon-font-size: 10px;
|
||||
|
||||
$switch-icon-sm-width: 40px;
|
||||
$switch-icon-sm-height: 20px;
|
||||
$switch-icon-sm-font-size: 8px;
|
||||
|
||||
$switch-icon-xs-width: 32px;
|
||||
$switch-icon-xs-height: 16px;
|
||||
$switch-icon-xs-font-size: 7px;
|
||||
|
||||
.switch.switch-default {
|
||||
@include switch('default', $switch-width, $switch-height, $switch-font-size, $handle-margin);
|
||||
}
|
||||
|
||||
.switch.switch-text {
|
||||
@include switch('text', $switch-text-width, $switch-text-height, $switch-text-font-size, $handle-margin);
|
||||
}
|
||||
|
||||
.switch.switch-icon {
|
||||
@include switch('icon', $switch-icon-width, $switch-icon-height, $switch-icon-font-size, $handle-margin);
|
||||
}
|
||||
|
||||
.switch.switch-3d {
|
||||
@include switch('ddd', $switch-width, $switch-height, $switch-font-size, 0);
|
||||
}
|
||||
|
||||
//pills style
|
||||
.switch-pill {
|
||||
.switch-label,
|
||||
.switch-handle {
|
||||
border-radius: 50em !important;
|
||||
}
|
||||
|
||||
.switch-label::before {
|
||||
right: 2px !important;
|
||||
}
|
||||
.switch-label::after {
|
||||
left: 2px !important;
|
||||
}
|
||||
}
|
||||
|
||||
@each $color, $value in $theme-colors {
|
||||
//normal style
|
||||
.switch-#{$color} {
|
||||
@include switch-variant($value);
|
||||
}
|
||||
//outline style
|
||||
.switch-#{$color}-outline {
|
||||
@include switch-outline-variant($value);
|
||||
}
|
||||
//outline alternative style
|
||||
.switch-#{$color}-outline-alt {
|
||||
@include switch-outline-alt-variant($value);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
.table-outline {
|
||||
border: 1px solid $table-border-color;
|
||||
|
||||
td {
|
||||
vertical-align: middle;
|
||||
}
|
||||
}
|
||||
|
||||
.table-align-middle {
|
||||
|
||||
td {
|
||||
vertical-align: middle;
|
||||
}
|
||||
}
|
||||
|
||||
.table-clear {
|
||||
td {
|
||||
border: 0;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
.pagination-datatables, .pagination {
|
||||
li {
|
||||
@extend .page-item;
|
||||
|
||||
a {
|
||||
@extend .page-link;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.label-pill {
|
||||
border-radius: 1rem !important;
|
||||
}
|
||||
|
||||
// temp fix for Vue & React
|
||||
|
||||
// Open state for the dropdown
|
||||
.open, .show {
|
||||
// Remove the outline when :focus is triggered
|
||||
> a {
|
||||
outline: 0;
|
||||
}
|
||||
}
|
||||
|
||||
// navbar dropdown fix
|
||||
.navbar .dropdown-toggle {
|
||||
@extend .nav-link;
|
||||
|
||||
.img-avatar {
|
||||
height: $navbar-height - 20px;
|
||||
margin: 0 10px;
|
||||
}
|
||||
}
|
||||
|
||||
.card-block {
|
||||
@extend .card-body;
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
body {
|
||||
-moz-osx-font-smoothing: grayscale;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
}
|
||||
|
||||
.font-xs {
|
||||
font-size: .75rem !important;
|
||||
}
|
||||
|
||||
.font-sm {
|
||||
font-size: .85rem !important;
|
||||
}
|
||||
|
||||
.font-lg {
|
||||
font-size: 1rem !important;
|
||||
}
|
||||
|
||||
.font-xl {
|
||||
font-size: 1.25rem !important;
|
||||
}
|
||||
|
||||
.font-2xl {
|
||||
font-size: 1.5rem !important;
|
||||
}
|
||||
|
||||
.font-3xl {
|
||||
font-size: 1.75rem !important;
|
||||
}
|
||||
|
||||
.font-4xl {
|
||||
font-size: 2rem !important;
|
||||
}
|
||||
|
||||
.font-5xl {
|
||||
font-size: 2.5rem !important;
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
@import "utilities/background";
|
||||
@import "utilities/borders";
|
||||
@import "utilities/display";
|
||||
@@ -0,0 +1,219 @@
|
||||
// scss-lint:disable all
|
||||
// Core Admin Variables
|
||||
|
||||
$enable-sidebar-nav-rounded: false !default;
|
||||
|
||||
$border-color: $gray-200 !default;
|
||||
$layout-transition-speed: .25s !default;
|
||||
|
||||
// Social Colors
|
||||
|
||||
$facebook: #3b5998 !default;
|
||||
$twitter: #00aced !default;
|
||||
$linkedin: #4875b4 !default;
|
||||
$google-plus: #d34836 !default;
|
||||
$flickr: #ff0084 !default;
|
||||
$tumblr: #32506d !default;
|
||||
$xing: #026466 !default;
|
||||
$github: #4183c4 !default;
|
||||
$html5: #e34f26 !default;
|
||||
$openid: #f78c40 !default;
|
||||
$stack-overflow: #fe7a15 !default;
|
||||
$youtube: #b00 !default;
|
||||
$css3: #0170ba !default;
|
||||
$dribbble: #ea4c89 !default;
|
||||
$google-plus: #bb4b39 !default;
|
||||
$instagram: #517fa4 !default;
|
||||
$pinterest: #cb2027 !default;
|
||||
$vk: #45668e !default;
|
||||
$yahoo: #400191 !default;
|
||||
$behance: #1769ff !default;
|
||||
$dropbox: #007ee5 !default;
|
||||
$reddit: #ff4500 !default;
|
||||
$spotify: #7ab800 !default;
|
||||
$vine: #00bf8f !default;
|
||||
$foursquare: #1073af !default;
|
||||
$vimeo: #aad450 !default;
|
||||
|
||||
// Navbar
|
||||
|
||||
$navbar-height: 55px !default;
|
||||
$navbar-bg: #fff !default;
|
||||
$navbar-border: (
|
||||
bottom: (
|
||||
size: 1px,
|
||||
style: solid,
|
||||
color: $border-color
|
||||
)
|
||||
) !default;
|
||||
$navbar-brand-width: 155px !default;
|
||||
$navbar-brand-bg: #fff !default;
|
||||
$navbar-brand-logo: url('../img/logo.png') !default;
|
||||
$navbar-brand-logo-size: 70px auto !default;
|
||||
$navbar-brand-border: (
|
||||
bottom: (
|
||||
size: 1px,
|
||||
style: solid,
|
||||
color: $border-color
|
||||
)
|
||||
) !default;
|
||||
|
||||
$navbar-brand-minimized-width: 50px !default;
|
||||
$navbar-brand-minimized-bg: $navbar-brand-bg !default;
|
||||
$navbar-brand-minimized-logo: url('../img/logo-symbol.png') !default;
|
||||
$navbar-brand-minimized-logo-size: 24px !default;
|
||||
$navbar-brand-minimized-border: $navbar-brand-border !default;
|
||||
|
||||
$navbar-color: $gray-600 !default;
|
||||
$navbar-hover-color: $gray-800 !default;
|
||||
$navbar-active-color: $gray-800 !default;
|
||||
$navbar-disabled-color: $gray-300 !default;
|
||||
|
||||
$navbar-toggler-icon: str-replace(url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='#{$navbar-color}' stroke-width='2.25' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E"), "#", "%23") !default;
|
||||
$navbar-toggler-icon-hover: str-replace(url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='#{$navbar-hover-color}' stroke-width='2.25' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E"), "#", "%23") !default;
|
||||
|
||||
// Sidebar
|
||||
|
||||
$sidebar-width: 200px !default;
|
||||
$sidebar-padding: 0 !default;
|
||||
$sidebar-minimized-width: 50px !default;
|
||||
$sidebar-minimized-height: $sidebar-minimized-width !default;
|
||||
$sidebar-compact-width: 150px !default;
|
||||
$sidebar-compact-height: $sidebar-compact-width !default;
|
||||
$sidebar-color: #fff !default;
|
||||
$sidebar-bg: $gray-800 !default;
|
||||
$sidebar-borders: none !default;
|
||||
$mobile-sidebar-width: 220px !default;
|
||||
|
||||
// Sidebar Header
|
||||
|
||||
$sidebar-header-height: auto !default;
|
||||
$sidebar-header-bg: rgba(0,0,0,.2) !default;
|
||||
$sidebar-header-padding-y: .75rem !default;
|
||||
$sidebar-header-padding-x: 1rem !default;
|
||||
|
||||
// Sidebar Form
|
||||
|
||||
$sidebar-form-border: 0 !default;
|
||||
$sidebar-form-bg: darken($sidebar-bg,10%) !default;
|
||||
$sidebar-form-color: #fff !default;
|
||||
$sidebar-form-placeholder-color: rgba(255,255,255,.7) !default;
|
||||
|
||||
// Sidebar Navigation
|
||||
|
||||
$sidebar-nav-color: #fff !default;
|
||||
$sidebar-nav-title-padding-y: .75rem !default;
|
||||
$sidebar-nav-title-padding-x: 1rem !default;
|
||||
$sidebar-nav-title-color: $gray-200 !default;
|
||||
$sidebar-nav-link-padding-y: .75rem !default;
|
||||
$sidebar-nav-link-padding-x: 1rem !default;
|
||||
$sidebar-nav-link-color: #fff !default;
|
||||
$sidebar-nav-link-bg: transparent !default;
|
||||
$sidebar-nav-link-icon-color: $gray-600 !default;
|
||||
$sidebar-nav-link-borders: 0 !default;
|
||||
|
||||
$sidebar-nav-link-hover-color: #fff !default;
|
||||
$sidebar-nav-link-hover-bg: theme-color("primary") !default;
|
||||
$sidebar-nav-link-hover-icon-color: #fff !default;
|
||||
$sidebar-nav-link-hover-borders: 0 !default;
|
||||
|
||||
$sidebar-nav-link-active-color: #fff !default;
|
||||
$sidebar-nav-link-active-bg: lighten($sidebar-bg, 5%) !default;
|
||||
$sidebar-nav-link-active-icon-color: theme-color("primary") !default;
|
||||
$sidebar-nav-link-active-borders: 0 !default;
|
||||
|
||||
$sidebar-nav-dropdown-color: #fff !default;
|
||||
$sidebar-nav-dropdown-bg: rgba(0,0,0,.2) !default;
|
||||
$sidebar-nav-dropdown-borders: 0 !default;
|
||||
$sidebar-nav-dropdown-indicator-color:$gray-600 !default;
|
||||
$sidebar-nav-dropdown-indicator: str-replace(url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 11 14'%3E%3Cpath fill='#{$sidebar-nav-dropdown-indicator-color}' d='M9.148 2.352l-4.148 4.148 4.148 4.148q0.148 0.148 0.148 0.352t-0.148 0.352l-1.297 1.297q-0.148 0.148-0.352 0.148t-0.352-0.148l-5.797-5.797q-0.148-0.148-0.148-0.352t0.148-0.352l5.797-5.797q0.148-0.148 0.352-0.148t0.352 0.148l1.297 1.297q0.148 0.148 0.148 0.352t-0.148 0.352z'/%3E%3C/svg%3E"), "#", "%23") !default;
|
||||
$sidebar-nav-dropdown-indicator-hover-color:$sidebar-nav-link-hover-color;
|
||||
$sidebar-nav-dropdown-indicator-hover:str-replace(url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 11 14'%3E%3Cpath fill='#{$sidebar-nav-dropdown-indicator-hover-color}' d='M9.148 2.352l-4.148 4.148 4.148 4.148q0.148 0.148 0.148 0.352t-0.148 0.352l-1.297 1.297q-0.148 0.148-0.352 0.148t-0.352-0.148l-5.797-5.797q-0.148-0.148-0.148-0.352t0.148-0.352l5.797-5.797q0.148-0.148 0.352-0.148t0.352 0.148l1.297 1.297q0.148 0.148 0.148 0.352t-0.148 0.352z'/%3E%3C/svg%3E"), "#", "%23") !default;
|
||||
|
||||
// Sidebar Footer
|
||||
|
||||
$sidebar-footer-height: auto !default;
|
||||
$sidebar-footer-bg: rgba(0,0,0,.2) !default;
|
||||
$sidebar-footer-padding-y: .75rem !default;
|
||||
$sidebar-footer-padding-x: 1rem !default;
|
||||
$sidebar-footer-borders: 0 !default;
|
||||
|
||||
// Sidebar Minimizer
|
||||
|
||||
$sidebar-minimizer-height: 50px !default;
|
||||
$sidebar-minimizer-bg: rgba(0,0,0,.2) !default;
|
||||
$sidebar-minimizer-borders: 0 !default;
|
||||
$sidebar-minimizer-indicator-color: $gray-600 !default;
|
||||
$sidebar-minimizer-indicator: str-replace(url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 11 14'%3E%3Cpath fill='#{$sidebar-minimizer-indicator-color}' d='M9.148 2.352l-4.148 4.148 4.148 4.148q0.148 0.148 0.148 0.352t-0.148 0.352l-1.297 1.297q-0.148 0.148-0.352 0.148t-0.352-0.148l-5.797-5.797q-0.148-0.148-0.148-0.352t0.148-0.352l5.797-5.797q0.148-0.148 0.352-0.148t0.352 0.148l1.297 1.297q0.148 0.148 0.148 0.352t-0.148 0.352z'/%3E%3C/svg%3E"), "#", "%23") !default;
|
||||
$sidebar-minimizer-hover-bg: rgba(0,0,0,.3) !default;
|
||||
$sidebar-minimizer-hover-indicator-color:$sidebar-nav-link-hover-color !default;
|
||||
$sidebar-minimizer-hover-indicator: str-replace(url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 11 14'%3E%3Cpath fill='#{$sidebar-minimizer-hover-indicator-color}' d='M9.148 2.352l-4.148 4.148 4.148 4.148q0.148 0.148 0.148 0.352t-0.148 0.352l-1.297 1.297q-0.148 0.148-0.352 0.148t-0.352-0.148l-5.797-5.797q-0.148-0.148-0.148-0.352t0.148-0.352l5.797-5.797q0.148-0.148 0.352-0.148t0.352 0.148l1.297 1.297q0.148 0.148 0.148 0.352t-0.148 0.352z'/%3E%3C/svg%3E"), "#", "%23") !default;
|
||||
|
||||
|
||||
// Top Navigation
|
||||
|
||||
$top-nav-bg: #fff !default;
|
||||
$top-nav-color: $body-color !default;
|
||||
$top-nav-borders: (
|
||||
bottom: (
|
||||
size: 1px,
|
||||
style: solid,
|
||||
color: $border-color
|
||||
)
|
||||
) !default;
|
||||
$top-nav-ul-borders: (
|
||||
all: (
|
||||
size: 1px,
|
||||
style: solid,
|
||||
color: $border-color
|
||||
)
|
||||
) !default;
|
||||
|
||||
$top-nav-hover-color: #fff !default;
|
||||
$top-nav-hover-bg: theme-color("primary") !default;
|
||||
$top-nav-active-color: #fff !default;
|
||||
$top-nav-active-bg: theme-color("primary") !default;
|
||||
$top-nav-height: $navbar-height - 15px !default;
|
||||
|
||||
// Breadcrumb
|
||||
$breadcrumb-borders: (
|
||||
bottom: (
|
||||
size: 1px,
|
||||
style: solid,
|
||||
color: $border-color
|
||||
)
|
||||
) !default;
|
||||
|
||||
// Aside
|
||||
|
||||
$aside-menu-width: 250px !default;
|
||||
$aside-menu-color: $gray-800 !default;
|
||||
$aside-menu-bg: #fff !default;
|
||||
$aside-menu-borders: (
|
||||
left: (
|
||||
size: 1px,
|
||||
style: solid,
|
||||
color: $border-color
|
||||
)
|
||||
) !default;
|
||||
|
||||
$aside-menu-nav-padding-y: .75rem !default;
|
||||
$aside-menu-nav-padding-x: 1rem !default;
|
||||
|
||||
// Footer
|
||||
|
||||
$footer-height: 50px !default;
|
||||
$footer-bg: $gray-100 !default;
|
||||
$footer-color: $body-color !default;
|
||||
$footer-borders: (
|
||||
top: (
|
||||
size: 1px,
|
||||
style: solid,
|
||||
color: $border-color
|
||||
)
|
||||
) !default;
|
||||
|
||||
// Cards
|
||||
|
||||
$card-icon-bg: transparent !default;
|
||||
$card-icon-color: $body-color !default;
|
||||
@@ -0,0 +1,253 @@
|
||||
// .social-box
|
||||
.social-box {
|
||||
min-height: 160px;
|
||||
margin-bottom: 2 * $card-spacer-y;
|
||||
text-align: center;
|
||||
background: #fff;
|
||||
border: $card-border-width solid $card-border-color;
|
||||
@include border-radius($card-border-radius);
|
||||
|
||||
i {
|
||||
display: block;
|
||||
margin: -1px -1px 0;
|
||||
font-size: 40px;
|
||||
line-height: 90px;
|
||||
background: $gray-200;
|
||||
|
||||
@include border-radius($card-border-radius $card-border-radius 0 0);
|
||||
}
|
||||
|
||||
.chart-wrapper {
|
||||
height: 90px;
|
||||
margin: -90px 0 0;
|
||||
|
||||
canvas {
|
||||
width: 100% !important;
|
||||
height: 90px !important;
|
||||
}
|
||||
}
|
||||
|
||||
ul {
|
||||
padding: 10px 0;
|
||||
list-style: none;
|
||||
|
||||
|
||||
li {
|
||||
display: block;
|
||||
float: left;
|
||||
width: 50%;
|
||||
|
||||
&:first-child {
|
||||
border-right: 1px solid $border-color;
|
||||
}
|
||||
|
||||
strong {
|
||||
display: block;
|
||||
font-size: 20px;
|
||||
}
|
||||
|
||||
span {
|
||||
font-size: 10px;
|
||||
font-weight: 500;
|
||||
color: $border-color;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
&.facebook {
|
||||
i {
|
||||
color: #fff;
|
||||
background: $facebook;
|
||||
}
|
||||
}
|
||||
|
||||
&.twitter {
|
||||
i {
|
||||
color: #fff;
|
||||
background: $twitter;
|
||||
}
|
||||
}
|
||||
|
||||
&.linkedin {
|
||||
i {
|
||||
color: #fff;
|
||||
background: $linkedin;
|
||||
}
|
||||
}
|
||||
|
||||
&.google-plus {
|
||||
i {
|
||||
color: #fff;
|
||||
background: $google-plus;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.horizontal-bars {
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
list-style: none;
|
||||
|
||||
li {
|
||||
position: relative;
|
||||
height: 40px;
|
||||
line-height: 40px;
|
||||
vertical-align: middle;
|
||||
|
||||
.title {
|
||||
width: 100px;
|
||||
font-size: 12px;
|
||||
font-weight: 600;
|
||||
color: $text-muted;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
.bars {
|
||||
position: absolute;
|
||||
top: 15px;
|
||||
width: 100%;
|
||||
padding-left: 100px;
|
||||
|
||||
.progress:first-child {
|
||||
margin-bottom: 2px;
|
||||
}
|
||||
}
|
||||
|
||||
&.legend {
|
||||
text-align: center;
|
||||
|
||||
.badge {
|
||||
display: inline-block;
|
||||
width: 8px;
|
||||
height: 8px;
|
||||
padding: 0;
|
||||
}
|
||||
}
|
||||
|
||||
&.divider {
|
||||
height: 40px;
|
||||
|
||||
i {
|
||||
margin: 0 !important;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
&.type-2 {
|
||||
|
||||
li {
|
||||
overflow: hidden;
|
||||
|
||||
i {
|
||||
display: inline-block;
|
||||
margin-right: $spacer;
|
||||
margin-left: 5px;
|
||||
font-size: 18px;
|
||||
line-height: 40px;
|
||||
}
|
||||
|
||||
.title {
|
||||
display: inline-block;
|
||||
width: auto;
|
||||
margin-top: -9px;
|
||||
font-size: $font-size-base;
|
||||
font-weight: normal;
|
||||
line-height: 40px;
|
||||
color: $body-color;
|
||||
}
|
||||
|
||||
.value {
|
||||
float: right;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.bars {
|
||||
position: absolute;
|
||||
top: auto;
|
||||
bottom: 0;
|
||||
padding: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.icons-list {
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
list-style: none;
|
||||
|
||||
li {
|
||||
position: relative;
|
||||
height: 40px;
|
||||
vertical-align: middle;
|
||||
|
||||
i {
|
||||
display: block;
|
||||
float: left;
|
||||
width: 35px !important;
|
||||
height: 35px !important;
|
||||
margin: 2px;
|
||||
line-height: 35px !important;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.desc {
|
||||
height: 40px;
|
||||
margin-left: 50px;
|
||||
border-bottom: 1px solid $border-color;
|
||||
|
||||
.title {
|
||||
padding: 2px 0 0;
|
||||
margin: 0;
|
||||
}
|
||||
small {
|
||||
display: block;
|
||||
margin-top: -4px;
|
||||
color: $text-muted;
|
||||
}
|
||||
}
|
||||
|
||||
.value {
|
||||
position: absolute;
|
||||
top: 2px;
|
||||
right: 45px;
|
||||
text-align: right;
|
||||
|
||||
strong {
|
||||
display: block;
|
||||
margin-top: -3px;
|
||||
}
|
||||
}
|
||||
|
||||
.actions {
|
||||
position: absolute;
|
||||
top: -4px;
|
||||
right: 10px;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
line-height: 40px;
|
||||
text-align: center;
|
||||
|
||||
i {
|
||||
float: none;
|
||||
width: auto;
|
||||
height: auto;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
line-height: normal;
|
||||
}
|
||||
}
|
||||
|
||||
&.divider {
|
||||
height: 40px;
|
||||
|
||||
i {
|
||||
width: auto;
|
||||
height: auto;
|
||||
margin: 2px 0 0;
|
||||
font-size: 18px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,47 @@
|
||||
// Import core styles
|
||||
@import "variables";
|
||||
@import "mixins";
|
||||
|
||||
// Additional typography
|
||||
@import "typography";
|
||||
|
||||
// Animations
|
||||
@import "animate";
|
||||
|
||||
// Components
|
||||
@import "aside";
|
||||
@import "avatars";
|
||||
@import "badge";
|
||||
@import "breadcrumb-menu";
|
||||
@import "breadcrumb";
|
||||
@import "buttons";
|
||||
@import "callout";
|
||||
@import "card";
|
||||
@import "charts";
|
||||
@import "dropdown";
|
||||
@import "footer";
|
||||
@import "grid";
|
||||
@import "input-group";
|
||||
@import "loading";
|
||||
@import "modal";
|
||||
@import "nav";
|
||||
@import "navbar";
|
||||
@import "progress";
|
||||
@import "sidebar";
|
||||
@import "switches";
|
||||
@import "tables";
|
||||
@import "widgets";
|
||||
|
||||
// Layout Options
|
||||
@import "layout";
|
||||
|
||||
@import "others";
|
||||
|
||||
// Utility classes
|
||||
@import "utilities";
|
||||
|
||||
// Temporary fixes
|
||||
@import "temp";
|
||||
|
||||
// Right-to-left
|
||||
@import "rtl";
|
||||
@@ -0,0 +1,8 @@
|
||||
.bg-primary,
|
||||
.bg-success,
|
||||
.bg-info,
|
||||
.bg-warning,
|
||||
.bg-danger,
|
||||
.bg-inverse {
|
||||
color: #fff;
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
//border
|
||||
@each $prop, $abbrev in (border: b) {
|
||||
@each $size in (0,1,2) {
|
||||
@if $size == 0 {
|
||||
.#{$abbrev}-a-#{$size} { #{$prop}: 0 !important; } // a = All sides
|
||||
.#{$abbrev}-t-#{$size} { #{$prop}-top: 0 !important; }
|
||||
.#{$abbrev}-r-#{$size} { #{$prop}-right: 0 !important; }
|
||||
.#{$abbrev}-b-#{$size} { #{$prop}-bottom: 0 !important; }
|
||||
.#{$abbrev}-l-#{$size} { #{$prop}-left: 0 !important; }
|
||||
} @else {
|
||||
.#{$abbrev}-a-#{$size} { #{$prop}: $size * $border-width solid $border-color !important; } // a = All sides
|
||||
.#{$abbrev}-t-#{$size} { #{$prop}-top: $size * $border-width solid $border-color !important; }
|
||||
.#{$abbrev}-r-#{$size} { #{$prop}-right: $size * $border-width solid $border-color !important; }
|
||||
.#{$abbrev}-b-#{$size} { #{$prop}-bottom: $size * $border-width solid $border-color !important; }
|
||||
.#{$abbrev}-l-#{$size} { #{$prop}-left: $size * $border-width solid $border-color !important; }
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
//
|
||||
// Utilities for common `display` values
|
||||
//
|
||||
|
||||
@each $breakpoint in map-keys($grid-breakpoints) {
|
||||
@include media-breakpoint-down($breakpoint) {
|
||||
$infix: breakpoint-infix($breakpoint, $grid-breakpoints);
|
||||
|
||||
.d#{$infix}-down-none { display: none !important; }
|
||||
// .d#{$infix}-inline { display: inline !important; }
|
||||
// .d#{$infix}-inline-block { display: inline-block !important; }
|
||||
// .d#{$infix}-block { display: block !important; }
|
||||
// .d#{$infix}-table { display: table !important; }
|
||||
// .d#{$infix}-table-cell { display: table-cell !important; }
|
||||
// .d#{$infix}-flex { display: flex !important; }
|
||||
// .d#{$infix}-inline-flex { display: inline-flex !important; }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
/*!
|
||||
* CoreUI - Open Source Bootstrap Admin Template
|
||||
* @version v1.0.10
|
||||
* @link http://coreui.io
|
||||
* Copyright (c) 2018 creativeLabs Łukasz Holeczek
|
||||
* @license MIT
|
||||
*/
|
||||
|
||||
// Override Boostrap variables
|
||||
@import "bootstrap-variables";
|
||||
|
||||
// Import Bootstrap source files
|
||||
@import "node_modules/bootstrap/scss/bootstrap";
|
||||
|
||||
// Override core variables
|
||||
@import "core-variables";
|
||||
|
||||
// Import core styles
|
||||
@import "core/core";
|
||||
|
||||
// Custom styles
|
||||
@import "custom";
|
||||
@@ -0,0 +1,6 @@
|
||||
@import "node_modules/bootstrap/scss/functions";
|
||||
@import "../bootstrap-variables";
|
||||
@import "node_modules/bootstrap/scss/variables";
|
||||
@import "node_modules/bootstrap/scss/mixins";
|
||||
@import "../core-variables";
|
||||
@import "../core/variables";
|
||||
@@ -0,0 +1,48 @@
|
||||
// Import variables
|
||||
@import '../variables';
|
||||
|
||||
.chart-legend,
|
||||
.bar-legend,
|
||||
.line-legend,
|
||||
.pie-legend,
|
||||
.radar-legend,
|
||||
.polararea-legend,
|
||||
.doughnut-legend {
|
||||
list-style-type: none;
|
||||
margin-top: 5px;
|
||||
text-align: center;
|
||||
-webkit-padding-start: 0;
|
||||
-moz-padding-start: 0;
|
||||
padding-left: 0;
|
||||
}
|
||||
.chart-legend li,
|
||||
.bar-legend li,
|
||||
.line-legend li,
|
||||
.pie-legend li,
|
||||
.radar-legend li,
|
||||
.polararea-legend li,
|
||||
.doughnut-legend li {
|
||||
display: inline-block;
|
||||
white-space: nowrap;
|
||||
position: relative;
|
||||
margin-bottom: 4px;
|
||||
@include border-radius($border-radius);
|
||||
padding: 2px 8px 2px 28px;
|
||||
font-size: smaller;
|
||||
cursor: default;
|
||||
}
|
||||
.chart-legend li span,
|
||||
.bar-legend li span,
|
||||
.line-legend li span,
|
||||
.pie-legend li span,
|
||||
.radar-legend li span,
|
||||
.polararea-legend li span,
|
||||
.doughnut-legend li span {
|
||||
display: block;
|
||||
position: absolute;
|
||||
left: 0;
|
||||
top: 0;
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
@include border-radius($border-radius);
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
<template>
|
||||
<router-view></router-view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'app'
|
||||
}
|
||||
</script>
|
||||
|
||||
<style>
|
||||
/* Import Font Awesome Icons Set */
|
||||
@import '~flag-icon-css/css/flag-icon.min.css';
|
||||
/* Import Font Awesome Icons Set */
|
||||
$fa-font-path: '~font-awesome/fonts/';
|
||||
@import '~font-awesome/css/font-awesome.min.css';
|
||||
/* Import Simple Line Icons Set */
|
||||
$simple-line-font-path: '~simple-line-icons/fonts/';
|
||||
@import '~simple-line-icons/css/simple-line-icons.css';
|
||||
/* Import Bootstrap Vue Styles */
|
||||
@import '~bootstrap-vue/dist/bootstrap-vue.css';
|
||||
</style>
|
||||
<style lang="scss">
|
||||
// Import Main styles for this application
|
||||
@import './scss/style';
|
||||
</style>
|
||||
@@ -0,0 +1,258 @@
|
||||
export default {
|
||||
items: [
|
||||
{
|
||||
name: 'Dashboard',
|
||||
url: '/dashboard',
|
||||
icon: 'icon-speedometer',
|
||||
badge: {
|
||||
variant: 'primary',
|
||||
text: 'NEW'
|
||||
}
|
||||
},
|
||||
{
|
||||
title: true,
|
||||
name: 'Theme',
|
||||
class: '',
|
||||
wrapper: {
|
||||
element: '',
|
||||
attributes: {}
|
||||
}
|
||||
},
|
||||
{
|
||||
name: 'Colors',
|
||||
url: '/theme/colors',
|
||||
icon: 'icon-drop'
|
||||
},
|
||||
{
|
||||
name: 'Typography',
|
||||
url: '/theme/typography',
|
||||
icon: 'icon-pencil'
|
||||
},
|
||||
{
|
||||
title: true,
|
||||
name: 'Components',
|
||||
class: '',
|
||||
wrapper: {
|
||||
element: '',
|
||||
attributes: {}
|
||||
}
|
||||
},
|
||||
{
|
||||
name: 'Base',
|
||||
url: '/base',
|
||||
icon: 'icon-puzzle',
|
||||
children: [
|
||||
{
|
||||
name: 'Breadcrumbs',
|
||||
url: '/base/breadcrumbs',
|
||||
icon: 'icon-puzzle'
|
||||
},
|
||||
{
|
||||
name: 'Cards',
|
||||
url: '/base/cards',
|
||||
icon: 'icon-puzzle'
|
||||
},
|
||||
{
|
||||
name: 'Carousels',
|
||||
url: '/base/carousels',
|
||||
icon: 'icon-puzzle'
|
||||
},
|
||||
{
|
||||
name: 'Collapses',
|
||||
url: '/base/collapses',
|
||||
icon: 'icon-puzzle'
|
||||
},
|
||||
{
|
||||
name: 'Forms',
|
||||
url: '/base/forms',
|
||||
icon: 'icon-puzzle'
|
||||
},
|
||||
{
|
||||
name: 'Jumbotrons',
|
||||
url: '/base/jumbotrons',
|
||||
icon: 'icon-puzzle'
|
||||
},
|
||||
{
|
||||
name: 'List Groups',
|
||||
url: '/base/list-groups',
|
||||
icon: 'icon-puzzle'
|
||||
},
|
||||
{
|
||||
name: 'Navs',
|
||||
url: '/base/navs',
|
||||
icon: 'icon-puzzle'
|
||||
},
|
||||
{
|
||||
name: 'Paginations',
|
||||
url: '/base/paginations',
|
||||
icon: 'icon-puzzle'
|
||||
},
|
||||
{
|
||||
name: 'Popovers',
|
||||
url: '/base/popovers',
|
||||
icon: 'icon-puzzle'
|
||||
},
|
||||
{
|
||||
name: 'Progress Bars',
|
||||
url: '/base/progress-bars',
|
||||
icon: 'icon-puzzle'
|
||||
},
|
||||
{
|
||||
name: 'Switches',
|
||||
url: '/base/switches',
|
||||
icon: 'icon-puzzle'
|
||||
},
|
||||
{
|
||||
name: 'Tables',
|
||||
url: '/base/tables',
|
||||
icon: 'icon-puzzle'
|
||||
},
|
||||
{
|
||||
name: 'Tooltips',
|
||||
url: '/base/tooltips',
|
||||
icon: 'icon-puzzle'
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
name: 'Buttons',
|
||||
url: '/buttons',
|
||||
icon: 'icon-cursor',
|
||||
children: [
|
||||
{
|
||||
name: 'Standard Buttons',
|
||||
url: '/buttons/standard-buttons',
|
||||
icon: 'icon-cursor'
|
||||
},
|
||||
{
|
||||
name: 'Button Groups',
|
||||
url: '/buttons/button-groups',
|
||||
icon: 'icon-cursor'
|
||||
},
|
||||
{
|
||||
name: 'Dropdowns',
|
||||
url: '/buttons/dropdowns',
|
||||
icon: 'icon-cursor'
|
||||
},
|
||||
{
|
||||
name: 'Social Buttons',
|
||||
url: '/buttons/social-buttons',
|
||||
icon: 'icon-cursor'
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
name: 'Icons',
|
||||
url: '/icons',
|
||||
icon: 'icon-star',
|
||||
children: [
|
||||
{
|
||||
name: 'Flags',
|
||||
url: '/icons/flags',
|
||||
icon: 'icon-star',
|
||||
badge: {
|
||||
variant: 'success',
|
||||
text: 'NEW'
|
||||
}
|
||||
},
|
||||
{
|
||||
name: 'Font Awesome',
|
||||
url: '/icons/font-awesome',
|
||||
icon: 'icon-star',
|
||||
badge: {
|
||||
variant: 'secondary',
|
||||
text: '4.7'
|
||||
}
|
||||
},
|
||||
{
|
||||
name: 'Simple Line Icons',
|
||||
url: '/icons/simple-line-icons',
|
||||
icon: 'icon-star'
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
name: 'Charts',
|
||||
url: '/charts',
|
||||
icon: 'icon-pie-chart'
|
||||
},
|
||||
{
|
||||
name: 'Notifications',
|
||||
url: '/notifications',
|
||||
icon: 'icon-bell',
|
||||
children: [
|
||||
{
|
||||
name: 'Alerts',
|
||||
url: '/notifications/alerts',
|
||||
icon: 'icon-bell'
|
||||
},
|
||||
{
|
||||
name: 'Badges',
|
||||
url: '/notifications/badges',
|
||||
icon: 'icon-bell'
|
||||
},
|
||||
{
|
||||
name: 'Modals',
|
||||
url: '/notifications/modals',
|
||||
icon: 'icon-bell'
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
name: 'Widgets',
|
||||
url: '/widgets',
|
||||
icon: 'icon-calculator',
|
||||
badge: {
|
||||
variant: 'primary',
|
||||
text: 'NEW'
|
||||
}
|
||||
},
|
||||
{
|
||||
divider: true
|
||||
},
|
||||
{
|
||||
title: true,
|
||||
name: 'Extras'
|
||||
},
|
||||
{
|
||||
name: 'Pages',
|
||||
url: '/pages',
|
||||
icon: 'icon-star',
|
||||
children: [
|
||||
{
|
||||
name: 'Login',
|
||||
url: '/pages/login',
|
||||
icon: 'icon-star'
|
||||
},
|
||||
{
|
||||
name: 'Register',
|
||||
url: '/pages/register',
|
||||
icon: 'icon-star'
|
||||
},
|
||||
{
|
||||
name: 'Error 404',
|
||||
url: '/pages/404',
|
||||
icon: 'icon-star'
|
||||
},
|
||||
{
|
||||
name: 'Error 500',
|
||||
url: '/pages/500',
|
||||
icon: 'icon-star'
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
name: 'Download CoreUI',
|
||||
url: 'http://coreui.io/vue/',
|
||||
icon: 'icon-cloud-download',
|
||||
class: 'mt-auto',
|
||||
variant: 'success'
|
||||
},
|
||||
{
|
||||
name: 'Try CoreUI PRO',
|
||||
url: 'http://coreui.io/pro/vue/',
|
||||
icon: 'icon-layers',
|
||||
variant: 'danger'
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,231 @@
|
||||
<template>
|
||||
<aside class="aside-menu">
|
||||
<b-tabs>
|
||||
<b-tab title="<i class='icon-list'></i>">
|
||||
<Callout class="m-0 py-2 text-muted text-center bg-light text-uppercase">
|
||||
<small><b>Today</b></small>
|
||||
</Callout>
|
||||
<hr class="transparent mx-3 my-0">
|
||||
<Callout variant="warning" class="m-0 py-3">
|
||||
<div class="avatar float-right">
|
||||
<img src="static/img/avatars/7.jpg" class="img-avatar" alt="admin@bootstrapmaster.com">
|
||||
</div>
|
||||
<div>Meeting with <strong>Lucas</strong></div>
|
||||
<small class="text-muted mr-3"><i class="icon-calendar"></i> 1 - 3pm</small>
|
||||
<small class="text-muted"><i class="icon-location-pin"></i> Palo Alto, CA </small>
|
||||
</Callout>
|
||||
<hr class="mx-3 my-0">
|
||||
<Callout variant="info" class="m-0 py-3">
|
||||
<div class="avatar float-right">
|
||||
<img src="static/img/avatars/4.jpg" class="img-avatar" alt="admin@bootstrapmaster.com">
|
||||
</div>
|
||||
<div>Skype with <strong>Megan</strong></div>
|
||||
<small class="text-muted mr-3"><i class="icon-calendar"></i> 4 - 5pm</small>
|
||||
<small class="text-muted"><i class="icon-social-skype"></i> On-line </small>
|
||||
</Callout>
|
||||
<hr class="transparent mx-3 my-0">
|
||||
<Callout class="m-0 py-2 text-muted text-center bg-light text-uppercase">
|
||||
<small><b>Tomorrow</b></small>
|
||||
</Callout>
|
||||
<hr class="transparent mx-3 my-0">
|
||||
<Callout variant="danger" class="m-0 py-3">
|
||||
<div>New UI Project - <strong>deadline</strong></div>
|
||||
<small class="text-muted mr-3"><i class="icon-calendar"></i> 10 - 11pm</small>
|
||||
<small class="text-muted"><i class="icon-home"></i> creativeLabs HQ </small>
|
||||
<div class="avatars-stack mt-2">
|
||||
<div class="avatar avatar-xs">
|
||||
<img src="static/img/avatars/2.jpg" class="img-avatar" alt="admin@bootstrapmaster.com">
|
||||
</div>
|
||||
<div class="avatar avatar-xs">
|
||||
<img src="static/img/avatars/3.jpg" class="img-avatar" alt="admin@bootstrapmaster.com">
|
||||
</div>
|
||||
<div class="avatar avatar-xs">
|
||||
<img src="static/img/avatars/4.jpg" class="img-avatar" alt="admin@bootstrapmaster.com">
|
||||
</div>
|
||||
<div class="avatar avatar-xs">
|
||||
<img src="static/img/avatars/5.jpg" class="img-avatar" alt="admin@bootstrapmaster.com">
|
||||
</div>
|
||||
<div class="avatar avatar-xs">
|
||||
<img src="static/img/avatars/6.jpg" class="img-avatar" alt="admin@bootstrapmaster.com">
|
||||
</div>
|
||||
</div>
|
||||
</Callout>
|
||||
<hr class="mx-3 my-0">
|
||||
<Callout variant="success" class="m-0 py-3">
|
||||
<div><strong>#10 Startups.Garden</strong> Meetup</div>
|
||||
<small class="text-muted mr-3"><i class="icon-calendar"></i> 1 - 3pm</small>
|
||||
<small class="text-muted"><i class="icon-location-pin"></i> Palo Alto, CA </small>
|
||||
</Callout>
|
||||
<hr class="mx-3 my-0">
|
||||
<Callout variant="primary" class="m-0 py-3">
|
||||
<div><strong>Team meeting</strong></div>
|
||||
<small class="text-muted mr-3"><i class="icon-calendar"></i> 4 - 6pm</small>
|
||||
<small class="text-muted"><i class="icon-home"></i> creativeLabs HQ </small>
|
||||
<div class="avatars-stack mt-2">
|
||||
<div class="avatar avatar-xs">
|
||||
<img src="static/img/avatars/2.jpg" class="img-avatar" alt="admin@bootstrapmaster.com">
|
||||
</div>
|
||||
<div class="avatar avatar-xs">
|
||||
<img src="static/img/avatars/3.jpg" class="img-avatar" alt="admin@bootstrapmaster.com">
|
||||
</div>
|
||||
<div class="avatar avatar-xs">
|
||||
<img src="static/img/avatars/4.jpg" class="img-avatar" alt="admin@bootstrapmaster.com">
|
||||
</div>
|
||||
<div class="avatar avatar-xs">
|
||||
<img src="static/img/avatars/5.jpg" class="img-avatar" alt="admin@bootstrapmaster.com">
|
||||
</div>
|
||||
<div class="avatar avatar-xs">
|
||||
<img src="static/img/avatars/6.jpg" class="img-avatar" alt="admin@bootstrapmaster.com">
|
||||
</div>
|
||||
<div class="avatar avatar-xs">
|
||||
<img src="static/img/avatars/7.jpg" class="img-avatar" alt="admin@bootstrapmaster.com">
|
||||
</div>
|
||||
<div class="avatar avatar-xs">
|
||||
<img src="static/img/avatars/8.jpg" class="img-avatar" alt="admin@bootstrapmaster.com">
|
||||
</div>
|
||||
</div>
|
||||
</Callout>
|
||||
<hr class="mx-3 my-0">
|
||||
</b-tab>
|
||||
<b-tab title="<i class='icon-speech'></i>">
|
||||
<div class="p-3">
|
||||
<div class="message">
|
||||
<div class="py-3 pb-5 mr-3 float-left">
|
||||
<div class="avatar">
|
||||
<img src="static/img/avatars/7.jpg" class="img-avatar" alt="admin@bootstrapmaster.com">
|
||||
<b-badge variant="success" class="avatar-status" ></b-badge>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<small class="text-muted">Lukasz Holeczek</small>
|
||||
<small class="text-muted float-right mt-1">1:52 PM</small>
|
||||
</div>
|
||||
<div class="text-truncate font-weight-bold">Lorem ipsum dolor sit amet</div>
|
||||
<small class="text-muted">Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt...</small>
|
||||
</div>
|
||||
<hr>
|
||||
<div class="message">
|
||||
<div class="py-3 pb-5 mr-3 float-left">
|
||||
<div class="avatar">
|
||||
<img src="static/img/avatars/7.jpg" class="img-avatar" alt="admin@bootstrapmaster.com">
|
||||
<b-badge variant="success" class="avatar-status" ></b-badge>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<small class="text-muted">Lukasz Holeczek</small>
|
||||
<small class="text-muted float-right mt-1">1:52 PM</small>
|
||||
</div>
|
||||
<div class="text-truncate font-weight-bold">Lorem ipsum dolor sit amet</div>
|
||||
<small class="text-muted">Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt...</small>
|
||||
</div>
|
||||
<hr>
|
||||
<div class="message">
|
||||
<div class="py-3 pb-5 mr-3 float-left">
|
||||
<div class="avatar">
|
||||
<img src="static/img/avatars/7.jpg" class="img-avatar" alt="admin@bootstrapmaster.com">
|
||||
<b-badge variant="success" class="avatar-status" ></b-badge>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<small class="text-muted">Lukasz Holeczek</small>
|
||||
<small class="text-muted float-right mt-1">1:52 PM</small>
|
||||
</div>
|
||||
<div class="text-truncate font-weight-bold">Lorem ipsum dolor sit amet</div>
|
||||
<small class="text-muted">Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt...</small>
|
||||
</div>
|
||||
<hr>
|
||||
<div class="message">
|
||||
<div class="py-3 pb-5 mr-3 float-left">
|
||||
<div class="avatar">
|
||||
<img src="static/img/avatars/7.jpg" class="img-avatar" alt="admin@bootstrapmaster.com">
|
||||
<b-badge variant="success" class="avatar-status" ></b-badge>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<small class="text-muted">Lukasz Holeczek</small>
|
||||
<small class="text-muted float-right mt-1">1:52 PM</small>
|
||||
</div>
|
||||
<div class="text-truncate font-weight-bold">Lorem ipsum dolor sit amet</div>
|
||||
<small class="text-muted">Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt...</small>
|
||||
</div>
|
||||
<hr>
|
||||
<div class="message">
|
||||
<div class="py-3 pb-5 mr-3 float-left">
|
||||
<div class="avatar">
|
||||
<img src="static/img/avatars/7.jpg" class="img-avatar" alt="admin@bootstrapmaster.com">
|
||||
<b-badge variant="success" class="avatar-status" ></b-badge>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<small class="text-muted">Lukasz Holeczek</small>
|
||||
<small class="text-muted float-right mt-1">1:52 PM</small>
|
||||
</div>
|
||||
<div class="text-truncate font-weight-bold">Lorem ipsum dolor sit amet</div>
|
||||
<small class="text-muted">Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt...</small>
|
||||
</div>
|
||||
</div>
|
||||
</b-tab>
|
||||
<b-tab title="<i class='icon-settings'></i>">
|
||||
<div class="p-3">
|
||||
<h6>Settings</h6>
|
||||
<div class="aside-options">
|
||||
<div class="clearfix mt-4">
|
||||
<small><b>Option 1</b></small>
|
||||
<c-switch type="text" variant="success" on="on" off="off" :pill="true" size="sm" class="float-right" :checked="true"/>
|
||||
</div>
|
||||
<div>
|
||||
<small class="text-muted">Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</small>
|
||||
</div>
|
||||
</div>
|
||||
<div class="aside-options">
|
||||
<div class="clearfix mt-3">
|
||||
<small><b>Option 2</b></small>
|
||||
<c-switch type="text" variant="success" on="on" off="off" :pill="true" size="sm" class="float-right"/>
|
||||
</div>
|
||||
<div>
|
||||
<small class="text-muted">Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</small>
|
||||
</div>
|
||||
</div>
|
||||
<div class="aside-options">
|
||||
<div class="clearfix mt-3">
|
||||
<small><b>Option 3</b></small>
|
||||
<c-switch type="text" variant="success" on="on" off="off" :pill="true" size="sm" class="float-right"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="aside-options">
|
||||
<div class="clearfix mt-3">
|
||||
<small><b>Option 4</b></small>
|
||||
<c-switch type="text" variant="success" on="on" off="off" :pill="true" size="sm" class="float-right" :checked="true"/>
|
||||
</div>
|
||||
</div>
|
||||
<hr>
|
||||
<h6>System Utilization</h6>
|
||||
<div class="text-uppercase mb-1 mt-4"><small><b>CPU Usage</b></small></div>
|
||||
<b-progress height={} class="progress-xs" variant="info" :value="25"></b-progress>
|
||||
<small class="text-muted">348 Processes. 1/4 Cores.</small>
|
||||
<div class="text-uppercase mb-1 mt-2"><small><b>Memory Usage</b></small></div>
|
||||
<b-progress height={} class="progress-xs" variant="warning" :value="70"></b-progress>
|
||||
<small class="text-muted">11444GB/16384MB</small>
|
||||
<div class="text-uppercase mb-1 mt-2"><small><b>SSD 1 Usage</b></small></div>
|
||||
<b-progress height={} class="progress-xs" variant="danger" :value="95"></b-progress>
|
||||
<small class="text-muted">243GB/256GB</small>
|
||||
<div class="text-uppercase mb-1 mt-2"><small><b>SSD 2 Usage</b></small></div>
|
||||
<b-progress height={} class="progress-xs" variant="success" :value="10"></b-progress>
|
||||
<small class="text-muted">25GB/256GB</small>
|
||||
</div>
|
||||
</b-tab>
|
||||
</b-tabs>
|
||||
</aside>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import Callout from './Callout'
|
||||
import cSwitch from './Switch'
|
||||
export default {
|
||||
name: 'c-aside',
|
||||
components: {
|
||||
Callout,
|
||||
cSwitch
|
||||
}
|
||||
}
|
||||
</script>
|
||||
@@ -0,0 +1,34 @@
|
||||
<template>
|
||||
<ol class="breadcrumb">
|
||||
<li class="breadcrumb-item" v-for="(item, index) in list">
|
||||
<span class="active" v-if="isLast(index)">{{ showName(item) }}</span>
|
||||
<router-link :to="item" v-else>{{ showName(item) }}</router-link>
|
||||
</li>
|
||||
</ol>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
props: {
|
||||
list: {
|
||||
type: Array,
|
||||
required: true,
|
||||
default: () => []
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
isLast (index) {
|
||||
return index === this.list.length - 1
|
||||
},
|
||||
showName (item) {
|
||||
if (item.meta && item.meta.label) {
|
||||
item = item.meta && item.meta.label
|
||||
}
|
||||
if (item.name) {
|
||||
item = item.name
|
||||
}
|
||||
return item
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
@@ -0,0 +1,26 @@
|
||||
<template>
|
||||
<div :class="classList">
|
||||
<slot></slot>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
props: {
|
||||
variant: {
|
||||
type: String
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
classList () {
|
||||
return [
|
||||
'callout',
|
||||
this.calloutVariant
|
||||
]
|
||||
},
|
||||
calloutVariant () {
|
||||
return this.variant ? `callout-${this.variant}` : ''
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
@@ -0,0 +1,11 @@
|
||||
<template>
|
||||
<footer class="app-footer">
|
||||
<span><a href="http://coreui.io">CoreUI</a> © 2018 creativeLabs.</span>
|
||||
<span class="ml-auto">Powered by <a href="http://coreui.io">CoreUI</a></span>
|
||||
</footer>
|
||||
</template>
|
||||
<script>
|
||||
export default {
|
||||
name: 'c-footer'
|
||||
}
|
||||
</script>
|
||||
@@ -0,0 +1,60 @@
|
||||
<template>
|
||||
<header class="app-header navbar">
|
||||
<button class="navbar-toggler mobile-sidebar-toggler d-lg-none" type="button" @click="mobileSidebarToggle">
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
<b-link class="navbar-brand" to="#"></b-link>
|
||||
<button class="navbar-toggler sidebar-toggler d-md-down-none" type="button" @click="sidebarToggle">
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
<b-navbar-nav class="d-md-down-none">
|
||||
<b-nav-item class="px-3">Dashboard</b-nav-item>
|
||||
<b-nav-item class="px-3">Users</b-nav-item>
|
||||
<b-nav-item class="px-3">Settings</b-nav-item>
|
||||
</b-navbar-nav>
|
||||
<b-navbar-nav class="ml-auto">
|
||||
<b-nav-item class="d-md-down-none">
|
||||
<i class="icon-bell"></i>
|
||||
<b-badge pill variant="danger">5</b-badge>
|
||||
</b-nav-item>
|
||||
<b-nav-item class="d-md-down-none">
|
||||
<i class="icon-list"></i>
|
||||
</b-nav-item>
|
||||
<b-nav-item class="d-md-down-none">
|
||||
<i class="icon-location-pin"></i>
|
||||
</b-nav-item>
|
||||
<HeaderDropdown/>
|
||||
</b-navbar-nav>
|
||||
<button class="navbar-toggler aside-menu-toggler d-md-down-none" type="button" @click="asideToggle">
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
</header>
|
||||
</template>
|
||||
<script>
|
||||
import HeaderDropdown from './HeaderDropdown.vue'
|
||||
|
||||
export default {
|
||||
name: 'c-header',
|
||||
components: {
|
||||
HeaderDropdown
|
||||
},
|
||||
methods: {
|
||||
sidebarToggle (e) {
|
||||
e.preventDefault()
|
||||
document.body.classList.toggle('sidebar-hidden')
|
||||
},
|
||||
sidebarMinimize (e) {
|
||||
e.preventDefault()
|
||||
document.body.classList.toggle('sidebar-minimized')
|
||||
},
|
||||
mobileSidebarToggle (e) {
|
||||
e.preventDefault()
|
||||
document.body.classList.toggle('sidebar-mobile-show')
|
||||
},
|
||||
asideToggle (e) {
|
||||
e.preventDefault()
|
||||
document.body.classList.toggle('aside-menu-hidden')
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
@@ -0,0 +1,29 @@
|
||||
<template>
|
||||
<b-nav-item-dropdown right no-caret>
|
||||
<template slot="button-content">
|
||||
<img src="static/img/avatars/6.jpg" class="img-avatar" alt="admin@bootstrapmaster.com">
|
||||
</template>
|
||||
<b-dropdown-header tag="div" class="text-center"><strong>Account</strong></b-dropdown-header>
|
||||
<b-dropdown-item><i class="fa fa-bell-o"></i> Updates<b-badge variant="info">{{itemsCount}}</b-badge></b-dropdown-item>
|
||||
<b-dropdown-item><i class="fa fa-envelope-o"></i> Messages<b-badge variant="success">{{itemsCount}}</b-badge></b-dropdown-item>
|
||||
<b-dropdown-item><i class="fa fa-tasks"></i> Tasks<b-badge variant="danger">{{itemsCount}}</b-badge></b-dropdown-item>
|
||||
<b-dropdown-item><i class="fa fa-comments"></i> Comments<b-badge variant="warning">{{itemsCount}}</b-badge></b-dropdown-item>
|
||||
<b-dropdown-header tag="div" class="text-center"><strong>Settings</strong></b-dropdown-header>
|
||||
<b-dropdown-item><i class="fa fa-user"></i> Profile</b-dropdown-item>
|
||||
<b-dropdown-item><i class="fa fa-wrench"></i> Settings</b-dropdown-item>
|
||||
<b-dropdown-item><i class="fa fa-usd"></i> Payments<b-badge variant="secondary">{{itemsCount}}</b-badge></b-dropdown-item>
|
||||
<b-dropdown-item><i class="fa fa-file"></i> Projects<b-badge variant="primary">{{itemsCount}}</b-badge></b-dropdown-item>
|
||||
<b-dropdown-divider></b-dropdown-divider>
|
||||
<b-dropdown-item><i class="fa fa-shield"></i> Lock Account</b-dropdown-item>
|
||||
<b-dropdown-item><i class="fa fa-lock"></i> Logout</b-dropdown-item>
|
||||
</b-nav-item-dropdown>
|
||||
</template>
|
||||
<script>
|
||||
export default {
|
||||
name: 'header-dropdown',
|
||||
data: () => {
|
||||
return { itemsCount: 42 }
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
@@ -0,0 +1,98 @@
|
||||
<template>
|
||||
<div class="sidebar">
|
||||
<SidebarHeader/>
|
||||
<SidebarForm/>
|
||||
<nav class="sidebar-nav">
|
||||
<div slot="header"></div>
|
||||
<ul class="nav">
|
||||
<template v-for="(item, index) in navItems">
|
||||
<template v-if="item.title">
|
||||
<SidebarNavTitle :name="item.name" :classes="item.class" :wrapper="item.wrapper"/>
|
||||
</template>
|
||||
<template v-else-if="item.divider">
|
||||
<SidebarNavDivider :classes="item.class"/>
|
||||
</template>
|
||||
<template v-else-if="item.label">
|
||||
<SidebarNavLabel :name="item.name" :url="item.url" :icon="item.icon" :label="item.label" :classes="item.class"/>
|
||||
</template>
|
||||
<template v-else>
|
||||
<template v-if="item.children">
|
||||
<!-- First level dropdown -->
|
||||
<SidebarNavDropdown :name="item.name" :url="item.url" :icon="item.icon">
|
||||
<template v-for="(childL1, index) in item.children">
|
||||
<template v-if="childL1.children">
|
||||
<!-- Second level dropdown -->
|
||||
<SidebarNavDropdown :name="childL1.name" :url="childL1.url" :icon="childL1.icon">
|
||||
<li class="nav-item" v-for="(childL2, index) in childL1.children">
|
||||
<SidebarNavLink :name="childL2.name" :url="childL2.url" :icon="childL2.icon" :badge="childL2.badge" :variant="item.variant"/>
|
||||
</li>
|
||||
</SidebarNavDropdown>
|
||||
</template>
|
||||
<template v-else>
|
||||
<SidebarNavItem :classes="item.class">
|
||||
<SidebarNavLink :name="childL1.name" :url="childL1.url" :icon="childL1.icon" :badge="childL1.badge" :variant="item.variant"/>
|
||||
</SidebarNavItem>
|
||||
</template>
|
||||
</template>
|
||||
</SidebarNavDropdown>
|
||||
</template>
|
||||
<template v-else>
|
||||
<SidebarNavItem :classes="item.class">
|
||||
<SidebarNavLink :name="item.name" :url="item.url" :icon="item.icon" :badge="item.badge" :variant="item.variant"/>
|
||||
</SidebarNavItem>
|
||||
</template>
|
||||
</template>
|
||||
</template>
|
||||
</ul>
|
||||
<slot></slot>
|
||||
</nav>
|
||||
<SidebarFooter/>
|
||||
<SidebarMinimizer/>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import SidebarFooter from './SidebarFooter'
|
||||
import SidebarForm from './SidebarForm'
|
||||
import SidebarHeader from './SidebarHeader'
|
||||
import SidebarMinimizer from './SidebarMinimizer'
|
||||
import SidebarNavDivider from './SidebarNavDivider'
|
||||
import SidebarNavDropdown from './SidebarNavDropdown'
|
||||
import SidebarNavLink from './SidebarNavLink'
|
||||
import SidebarNavTitle from './SidebarNavTitle'
|
||||
import SidebarNavItem from './SidebarNavItem'
|
||||
import SidebarNavLabel from './SidebarNavLabel'
|
||||
export default {
|
||||
name: 'sidebar',
|
||||
props: {
|
||||
navItems: {
|
||||
type: Array,
|
||||
required: true,
|
||||
default: () => []
|
||||
}
|
||||
},
|
||||
components: {
|
||||
SidebarFooter,
|
||||
SidebarForm,
|
||||
SidebarHeader,
|
||||
SidebarMinimizer,
|
||||
SidebarNavDivider,
|
||||
SidebarNavDropdown,
|
||||
SidebarNavLink,
|
||||
SidebarNavTitle,
|
||||
SidebarNavItem,
|
||||
SidebarNavLabel
|
||||
},
|
||||
methods: {
|
||||
handleClick (e) {
|
||||
e.preventDefault()
|
||||
e.target.parentElement.classList.toggle('open')
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="css">
|
||||
.nav-link {
|
||||
cursor:pointer;
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,9 @@
|
||||
<template>
|
||||
<!-- <div class="sidebar-footer"></div> -->
|
||||
</template>
|
||||
<script>
|
||||
|
||||
export default {
|
||||
name: 'sidebar-footer'
|
||||
}
|
||||
</script>
|
||||
@@ -0,0 +1,9 @@
|
||||
<template>
|
||||
<!-- <div class="sidebar-form"></div> -->
|
||||
</template>
|
||||
<script>
|
||||
|
||||
export default {
|
||||
name: 'sidebar-form'
|
||||
}
|
||||
</script>
|
||||
@@ -0,0 +1,9 @@
|
||||
<template>
|
||||
<!-- <div class="sidebar-header"></div> -->
|
||||
</template>
|
||||
<script>
|
||||
|
||||
export default {
|
||||
name: 'sidebar-header'
|
||||
}
|
||||
</script>
|
||||
@@ -0,0 +1,17 @@
|
||||
<template>
|
||||
<button class="sidebar-minimizer" type="button" @click="sidebarMinimize();brandMinimize()"></button>
|
||||
</template>
|
||||
<script>
|
||||
|
||||
export default {
|
||||
name: 'sidebar-minimizer',
|
||||
methods: {
|
||||
sidebarMinimize () {
|
||||
document.body.classList.toggle('sidebar-minimized')
|
||||
},
|
||||
brandMinimize () {
|
||||
document.body.classList.toggle('brand-minimized')
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
@@ -0,0 +1,26 @@
|
||||
<template>
|
||||
<li :class="classList"></li>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'sidebar-nav-divider',
|
||||
props: {
|
||||
classes: {
|
||||
type: String,
|
||||
default: ''
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
classList () {
|
||||
return [
|
||||
'divider',
|
||||
...this.itemClasses
|
||||
]
|
||||
},
|
||||
itemClasses () {
|
||||
return this.classes ? this.classes.split(' ') : ''
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
@@ -0,0 +1,33 @@
|
||||
<template>
|
||||
<router-link tag="li" class="nav-item nav-dropdown" :to="url" disabled>
|
||||
<div class="nav-link nav-dropdown-toggle" @click="handleClick"><i :class="icon"></i> {{name}}</div>
|
||||
<ul class="nav-dropdown-items">
|
||||
<slot></slot>
|
||||
</ul>
|
||||
</router-link>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
props: {
|
||||
name: {
|
||||
type: String,
|
||||
default: ''
|
||||
},
|
||||
url: {
|
||||
type: String,
|
||||
default: ''
|
||||
},
|
||||
icon: {
|
||||
type: String,
|
||||
default: ''
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
handleClick (e) {
|
||||
e.preventDefault()
|
||||
e.target.parentElement.classList.toggle('open')
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
@@ -0,0 +1,35 @@
|
||||
<template>
|
||||
<li :class="classList" @click="hideMobile">
|
||||
<slot></slot>
|
||||
</li>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'sidebar-nav-item',
|
||||
props: {
|
||||
classes: {
|
||||
type: String,
|
||||
default: ''
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
classList () {
|
||||
return [
|
||||
'nav-item',
|
||||
...this.itemClasses
|
||||
]
|
||||
},
|
||||
itemClasses () {
|
||||
return this.classes ? this.classes.split(' ') : ''
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
hideMobile () {
|
||||
if (document.body.classList.contains('sidebar-mobile-show')) {
|
||||
document.body.classList.toggle('sidebar-mobile-show')
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
@@ -0,0 +1,59 @@
|
||||
<template>
|
||||
<SidebarNavItem :classes="classList.navItem">
|
||||
<a :class="classList.navLink" :href="url"><i :class="classList.icon"></i> {{name}}</a>
|
||||
</SidebarNavItem>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import SidebarNavItem from './SidebarNavItem'
|
||||
import SidebarNavLink from './SidebarNavLink'
|
||||
export default {
|
||||
name: 'sidebar-nav-label',
|
||||
components: {
|
||||
SidebarNavItem,
|
||||
SidebarNavLink
|
||||
},
|
||||
props: {
|
||||
name: {
|
||||
type: String,
|
||||
default: ''
|
||||
},
|
||||
url: {
|
||||
type: String,
|
||||
default: '#'
|
||||
},
|
||||
icon: {
|
||||
type: String,
|
||||
default: 'fa fa-circle'
|
||||
},
|
||||
classes: {
|
||||
type: String,
|
||||
default: ''
|
||||
},
|
||||
label: {
|
||||
type: Object,
|
||||
required: true,
|
||||
default: () => {}
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
classList () {
|
||||
const classes = {
|
||||
navItem: ['hidden-cn', ...this.getClasses(this.classes)].join(' '),
|
||||
navLink: 'nav-label',
|
||||
icon: [
|
||||
this.icon ? this.icon : 'fa fa-circle',
|
||||
this.label.variant ? `text-${this.label.variant}` : '',
|
||||
this.label.class ? this.label.class : ''
|
||||
].join(' ')
|
||||
}
|
||||
return classes
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
getClasses (classes) {
|
||||
return classes ? classes.split(' ') : []
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
@@ -0,0 +1,68 @@
|
||||
<template>
|
||||
<div v-if="isExternalLink">
|
||||
<a :href="url" :class="classList">
|
||||
<i :class="icon"></i> {{name}}
|
||||
<b-badge v-if="badge && badge.text" :variant="badge.variant">{{badge.text}}</b-badge>
|
||||
</a>
|
||||
</div>
|
||||
<div v-else>
|
||||
<router-link :to="url" :class="classList">
|
||||
<i :class="icon"></i> {{name}}
|
||||
<b-badge v-if="badge && badge.text" :variant="badge.variant">{{badge.text}}</b-badge>
|
||||
</router-link>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'sidebar-nav-link',
|
||||
props: {
|
||||
name: {
|
||||
type: String,
|
||||
default: ''
|
||||
},
|
||||
url: {
|
||||
type: String,
|
||||
default: ''
|
||||
},
|
||||
icon: {
|
||||
type: String,
|
||||
default: ''
|
||||
},
|
||||
badge: {
|
||||
type: Object,
|
||||
default: () => {}
|
||||
},
|
||||
variant: {
|
||||
type: String,
|
||||
default: ''
|
||||
},
|
||||
classes: {
|
||||
type: String,
|
||||
default: ''
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
classList () {
|
||||
return [
|
||||
'nav-link',
|
||||
this.linkVariant,
|
||||
...this.itemClasses
|
||||
]
|
||||
},
|
||||
linkVariant () {
|
||||
return this.variant ? `nav-link-${this.variant}` : ''
|
||||
},
|
||||
itemClasses () {
|
||||
return this.classes ? this.classes.split(' ') : []
|
||||
},
|
||||
isExternalLink () {
|
||||
if (this.url.substring(0, 4) === 'http') {
|
||||
return true
|
||||
} else {
|
||||
return false
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
@@ -0,0 +1,42 @@
|
||||
<template>
|
||||
<li :class="classList">
|
||||
<template v-if="wrapper && wrapper.element">
|
||||
<component v-bind:is="wrapper.element" v-bind="wrapper.attributes">
|
||||
{{name}}
|
||||
</component>
|
||||
</template>
|
||||
<template v-else>
|
||||
{{name}}
|
||||
</template>
|
||||
</li>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
props: {
|
||||
name: {
|
||||
type: String,
|
||||
default: ''
|
||||
},
|
||||
classes: {
|
||||
type: String,
|
||||
default: ''
|
||||
},
|
||||
wrapper: {
|
||||
type: Object,
|
||||
default: () => {}
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
classList () {
|
||||
return [
|
||||
'nav-title',
|
||||
...this.itemClasses
|
||||
]
|
||||
},
|
||||
itemClasses () {
|
||||
return this.classes ? this.classes.split(' ') : ''
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
@@ -0,0 +1,94 @@
|
||||
<template>
|
||||
<label :class="classList">
|
||||
<input type="checkbox"
|
||||
class="switch-input"
|
||||
:value="value"
|
||||
:checked="isChecked"
|
||||
@change="handleChange">
|
||||
<template v-if="isOn">
|
||||
<span class="switch-label" :data-on="on" :data-off="off"></span>
|
||||
</template>
|
||||
<template v-else>
|
||||
<span class="switch-label"></span>
|
||||
</template>
|
||||
<span class="switch-handle"></span>
|
||||
</label>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
model: {
|
||||
prop: 'checked',
|
||||
event: 'change'
|
||||
},
|
||||
props: {
|
||||
value: {
|
||||
default: true
|
||||
},
|
||||
uncheckedValue: {
|
||||
default: false
|
||||
},
|
||||
checked: {
|
||||
default: false
|
||||
},
|
||||
type: {
|
||||
type: String,
|
||||
default: 'default'
|
||||
},
|
||||
variant: {
|
||||
type: String,
|
||||
default: ''
|
||||
},
|
||||
pill: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
},
|
||||
on: {
|
||||
type: String,
|
||||
default: null
|
||||
},
|
||||
off: {
|
||||
type: String,
|
||||
default: null
|
||||
},
|
||||
size: {
|
||||
type: String,
|
||||
default: null
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
classList () {
|
||||
return [
|
||||
'switch',
|
||||
this.switchType,
|
||||
this.switchVariant,
|
||||
this.switchPill,
|
||||
this.switchSize
|
||||
]
|
||||
},
|
||||
switchType () {
|
||||
return this.type ? `switch-${this.type}` : `switch-default`
|
||||
},
|
||||
switchVariant () {
|
||||
return this.variant ? `switch-${this.variant}` : `switch-secondary`
|
||||
},
|
||||
switchPill () {
|
||||
return !this.pill ? null : `switch-pill`
|
||||
},
|
||||
switchSize () {
|
||||
return this.size ? `switch-${this.size}` : ''
|
||||
},
|
||||
isChecked () {
|
||||
return this.checked === this.value
|
||||
},
|
||||
isOn () {
|
||||
return !this.on ? null : true
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
handleChange ({ target: { checked } }) {
|
||||
this.$emit('change', checked ? this.value : this.uncheckedValue)
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
@@ -0,0 +1,17 @@
|
||||
import Aside from './Aside.vue'
|
||||
import Breadcrumb from './Breadcrumb.vue'
|
||||
import Callout from './Callout.vue'
|
||||
import Footer from './Footer.vue'
|
||||
import Header from './Header/Header.vue'
|
||||
import Sidebar from './Sidebar/Sidebar.vue'
|
||||
import Switch from './Switch.vue'
|
||||
|
||||
export {
|
||||
Aside,
|
||||
Breadcrumb,
|
||||
Callout,
|
||||
Footer,
|
||||
Header,
|
||||
Sidebar,
|
||||
Switch
|
||||
}
|
||||
@@ -0,0 +1,45 @@
|
||||
<template>
|
||||
<div class="app">
|
||||
<AppHeader/>
|
||||
<div class="app-body">
|
||||
<Sidebar :navItems="nav"/>
|
||||
<main class="main">
|
||||
<breadcrumb :list="list"/>
|
||||
<div class="container-fluid">
|
||||
<router-view></router-view>
|
||||
</div>
|
||||
</main>
|
||||
<AppAside/>
|
||||
</div>
|
||||
<AppFooter/>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import nav from '../_nav'
|
||||
import { Header as AppHeader, Sidebar, Aside as AppAside, Footer as AppFooter, Breadcrumb } from '../components/'
|
||||
|
||||
export default {
|
||||
name: 'full',
|
||||
components: {
|
||||
AppHeader,
|
||||
Sidebar,
|
||||
AppAside,
|
||||
AppFooter,
|
||||
Breadcrumb
|
||||
},
|
||||
data () {
|
||||
return {
|
||||
nav: nav.items
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
name () {
|
||||
return this.$route.name
|
||||
},
|
||||
list () {
|
||||
return this.$route.matched
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
@@ -0,0 +1,18 @@
|
||||
// The Vue build version to load with the `import` command
|
||||
// (runtime-only or standalone) has been set in webpack.base.conf with an alias.
|
||||
import Vue from 'vue'
|
||||
import BootstrapVue from 'bootstrap-vue'
|
||||
import App from './App'
|
||||
import router from './router'
|
||||
|
||||
Vue.use(BootstrapVue)
|
||||
|
||||
/* eslint-disable no-new */
|
||||
new Vue({
|
||||
el: '#app',
|
||||
router,
|
||||
template: '<App/>',
|
||||
components: {
|
||||
App
|
||||
}
|
||||
})
|
||||
@@ -0,0 +1,301 @@
|
||||
import Vue from 'vue'
|
||||
import Router from 'vue-router'
|
||||
|
||||
// Containers
|
||||
import Full from '@/containers/Full'
|
||||
|
||||
// Views
|
||||
import Dashboard from '@/views/Dashboard'
|
||||
|
||||
import Colors from '@/views/theme/Colors'
|
||||
import Typography from '@/views/theme/Typography'
|
||||
|
||||
import Charts from '@/views/Charts'
|
||||
import Widgets from '@/views/Widgets'
|
||||
|
||||
// Views - Components
|
||||
import Cards from '@/views/base/Cards'
|
||||
import Forms from '@/views/base/Forms'
|
||||
import Switches from '@/views/base/Switches'
|
||||
import Tables from '@/views/base/Tables'
|
||||
import Breadcrumbs from '@/views/base/Breadcrumbs'
|
||||
import Carousels from '@/views/base/Carousels'
|
||||
import Collapses from '@/views/base/Collapses'
|
||||
import Jumbotrons from '@/views/base/Jumbotrons'
|
||||
import ListGroups from '@/views/base/ListGroups'
|
||||
import Navs from '@/views/base/Navs'
|
||||
import Navbars from '@/views/base/Navbars'
|
||||
import Paginations from '@/views/base/Paginations'
|
||||
import Popovers from '@/views/base/Popovers'
|
||||
import ProgressBars from '@/views/base/ProgressBars'
|
||||
import Tooltips from '@/views/base/Tooltips'
|
||||
|
||||
// Views - Buttons
|
||||
import StandardButtons from '@/views/buttons/StandardButtons'
|
||||
import ButtonGroups from '@/views/buttons/ButtonGroups'
|
||||
import Dropdowns from '@/views/buttons/Dropdowns'
|
||||
import SocialButtons from '@/views/buttons/SocialButtons'
|
||||
|
||||
// Views - Icons
|
||||
import Flags from '@/views/icons/Flags'
|
||||
import FontAwesome from '@/views/icons/FontAwesome'
|
||||
import SimpleLineIcons from '@/views/icons/SimpleLineIcons'
|
||||
|
||||
// Views - Notifications
|
||||
import Alerts from '@/views/notifications/Alerts'
|
||||
import Badges from '@/views/notifications/Badges'
|
||||
import Modals from '@/views/notifications/Modals'
|
||||
|
||||
// Views - Pages
|
||||
import Page404 from '@/views/pages/Page404'
|
||||
import Page500 from '@/views/pages/Page500'
|
||||
import Login from '@/views/pages/Login'
|
||||
import Register from '@/views/pages/Register'
|
||||
|
||||
Vue.use(Router)
|
||||
|
||||
export default new Router({
|
||||
mode: 'hash', // Demo is living in GitHub.io, so required!
|
||||
linkActiveClass: 'open active',
|
||||
scrollBehavior: () => ({ y: 0 }),
|
||||
routes: [
|
||||
{
|
||||
path: '/',
|
||||
redirect: '/dashboard',
|
||||
name: 'Home',
|
||||
component: Full,
|
||||
children: [
|
||||
{
|
||||
path: 'dashboard',
|
||||
name: 'Dashboard',
|
||||
component: Dashboard
|
||||
},
|
||||
{
|
||||
path: 'theme',
|
||||
redirect: '/theme/colors',
|
||||
name: 'Theme',
|
||||
component: {
|
||||
render (c) { return c('router-view') }
|
||||
},
|
||||
children: [
|
||||
{
|
||||
path: 'colors',
|
||||
name: 'Colors',
|
||||
component: Colors
|
||||
},
|
||||
{
|
||||
path: 'typography',
|
||||
name: 'Typography',
|
||||
component: Typography
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
path: 'charts',
|
||||
name: 'Charts',
|
||||
component: Charts
|
||||
},
|
||||
{
|
||||
path: 'widgets',
|
||||
name: 'Widgets',
|
||||
component: Widgets
|
||||
},
|
||||
{
|
||||
path: 'base',
|
||||
redirect: '/base/cards',
|
||||
name: 'Base',
|
||||
component: {
|
||||
render (c) { return c('router-view') }
|
||||
},
|
||||
children: [
|
||||
{
|
||||
path: 'cards',
|
||||
name: 'Cards',
|
||||
component: Cards
|
||||
},
|
||||
{
|
||||
path: 'forms',
|
||||
name: 'Forms',
|
||||
component: Forms
|
||||
},
|
||||
{
|
||||
path: 'switches',
|
||||
name: 'Switches',
|
||||
component: Switches
|
||||
},
|
||||
{
|
||||
path: 'tables',
|
||||
name: 'Tables',
|
||||
component: Tables
|
||||
},
|
||||
{
|
||||
path: 'breadcrumbs',
|
||||
name: 'Breadcrumbs',
|
||||
component: Breadcrumbs
|
||||
},
|
||||
{
|
||||
path: 'carousels',
|
||||
name: 'Carousels',
|
||||
component: Carousels
|
||||
},
|
||||
{
|
||||
path: 'collapses',
|
||||
name: 'Collapses',
|
||||
component: Collapses
|
||||
},
|
||||
{
|
||||
path: 'jumbotrons',
|
||||
name: 'Jumbotrons',
|
||||
component: Jumbotrons
|
||||
},
|
||||
{
|
||||
path: 'list-groups',
|
||||
name: 'List Groups',
|
||||
component: ListGroups
|
||||
},
|
||||
{
|
||||
path: 'navs',
|
||||
name: 'Navs',
|
||||
component: Navs
|
||||
},
|
||||
{
|
||||
path: 'navbars',
|
||||
name: 'Navbars',
|
||||
component: Navbars
|
||||
},
|
||||
{
|
||||
path: 'paginations',
|
||||
name: 'Paginations',
|
||||
component: Paginations
|
||||
},
|
||||
{
|
||||
path: 'popovers',
|
||||
name: 'Popovers',
|
||||
component: Popovers
|
||||
},
|
||||
{
|
||||
path: 'progress-bars',
|
||||
name: 'Progress Bars',
|
||||
component: ProgressBars
|
||||
},
|
||||
{
|
||||
path: 'tooltips',
|
||||
name: 'Tooltips',
|
||||
component: Tooltips
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
path: 'buttons',
|
||||
redirect: '/buttons/buttons',
|
||||
name: 'Buttons',
|
||||
component: {
|
||||
render (c) { return c('router-view') }
|
||||
},
|
||||
children: [
|
||||
{
|
||||
path: 'standard-buttons',
|
||||
name: 'Standard Buttons',
|
||||
component: StandardButtons
|
||||
},
|
||||
{
|
||||
path: 'button-groups',
|
||||
name: 'Button Groups',
|
||||
component: ButtonGroups
|
||||
},
|
||||
{
|
||||
path: 'dropdowns',
|
||||
name: 'Dropdowns',
|
||||
component: Dropdowns
|
||||
},
|
||||
{
|
||||
path: 'social-buttons',
|
||||
name: 'Social Buttons',
|
||||
component: SocialButtons
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
path: 'icons',
|
||||
redirect: '/icons/font-awesome',
|
||||
name: 'Icons',
|
||||
component: {
|
||||
render (c) { return c('router-view') }
|
||||
},
|
||||
children: [
|
||||
{
|
||||
path: 'flags',
|
||||
name: 'Flags',
|
||||
component: Flags
|
||||
},
|
||||
{
|
||||
path: 'font-awesome',
|
||||
name: 'Font Awesome',
|
||||
component: FontAwesome
|
||||
},
|
||||
{
|
||||
path: 'simple-line-icons',
|
||||
name: 'Simple Line Icons',
|
||||
component: SimpleLineIcons
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
path: 'notifications',
|
||||
redirect: '/notifications/alerts',
|
||||
name: 'Notifications',
|
||||
component: {
|
||||
render (c) { return c('router-view') }
|
||||
},
|
||||
children: [
|
||||
{
|
||||
path: 'alerts',
|
||||
name: 'Alerts',
|
||||
component: Alerts
|
||||
},
|
||||
{
|
||||
path: 'badges',
|
||||
name: 'Badges',
|
||||
component: Badges
|
||||
},
|
||||
{
|
||||
path: 'modals',
|
||||
name: 'Modals',
|
||||
component: Modals
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
path: '/pages',
|
||||
redirect: '/pages/404',
|
||||
name: 'Pages',
|
||||
component: {
|
||||
render (c) { return c('router-view') }
|
||||
},
|
||||
children: [
|
||||
{
|
||||
path: '404',
|
||||
name: 'Page404',
|
||||
component: Page404
|
||||
},
|
||||
{
|
||||
path: '500',
|
||||
name: 'Page500',
|
||||
component: Page500
|
||||
},
|
||||
{
|
||||
path: 'login',
|
||||
name: 'Login',
|
||||
component: Login
|
||||
},
|
||||
{
|
||||
path: 'register',
|
||||
name: 'Register',
|
||||
component: Register
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
})
|
||||
@@ -0,0 +1,56 @@
|
||||
<template>
|
||||
<div class="animated fadeIn">
|
||||
<b-card-group columns class="card-columns cols-2">
|
||||
<b-card header="Line Chart">
|
||||
<div class="chart-wrapper">
|
||||
<line-example/>
|
||||
</div>
|
||||
</b-card>
|
||||
<b-card header="Bar Chart">
|
||||
<div class="chart-wrapper">
|
||||
<bar-example/>
|
||||
</div>
|
||||
</b-card>
|
||||
<b-card header="Doughnut Chart">
|
||||
<div class="chart-wrapper">
|
||||
<doughnut-example/>
|
||||
</div>
|
||||
</b-card>
|
||||
<b-card header="Radar Chart">
|
||||
<div class="chart-wrapper">
|
||||
<radar-example/>
|
||||
</div>
|
||||
</b-card>
|
||||
<b-card header="Pie Chart">
|
||||
<div class="chart-wrapper">
|
||||
<pie-example/>
|
||||
</div>
|
||||
</b-card>
|
||||
<b-card header="Polar Area Chart">
|
||||
<div class="chart-wrapper">
|
||||
<polar-area-example/>
|
||||
</div>
|
||||
</b-card>
|
||||
</b-card-group>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import BarExample from './charts/BarExample'
|
||||
import LineExample from './charts/LineExample'
|
||||
import DoughnutExample from './charts/DoughnutExample'
|
||||
import RadarExample from './charts/RadarExample'
|
||||
import PieExample from './charts/PieExample'
|
||||
import PolarAreaExample from './charts/PolarAreaExample'
|
||||
|
||||
export default {
|
||||
name: 'charts',
|
||||
components: {
|
||||
BarExample,
|
||||
LineExample,
|
||||
DoughnutExample,
|
||||
RadarExample,
|
||||
PieExample,
|
||||
PolarAreaExample
|
||||
}
|
||||
}
|
||||
</script>
|
||||
@@ -0,0 +1,658 @@
|
||||
<template>
|
||||
<div class="animated fadeIn">
|
||||
<b-row>
|
||||
<b-col sm="6" lg="3">
|
||||
<b-card no-body class="bg-primary">
|
||||
<b-card-body class="pb-0">
|
||||
<b-dropdown class="float-right" variant="transparent p-0" right>
|
||||
<template slot="button-content">
|
||||
<i class="icon-settings"></i>
|
||||
</template>
|
||||
<b-dropdown-item>Action</b-dropdown-item>
|
||||
<b-dropdown-item>Another action</b-dropdown-item>
|
||||
<b-dropdown-item>Something else here...</b-dropdown-item>
|
||||
<b-dropdown-item disabled>Disabled action</b-dropdown-item>
|
||||
</b-dropdown>
|
||||
<h4 class="mb-0">9.823</h4>
|
||||
<p>Members online</p>
|
||||
</b-card-body>
|
||||
<card-line1-chart-example class="chart-wrapper px-3" style="height:70px;" height="70"/>
|
||||
</b-card>
|
||||
</b-col>
|
||||
<b-col sm="6" lg="3">
|
||||
<b-card no-body class="bg-info">
|
||||
<b-card-body class="pb-0">
|
||||
<b-dropdown class="float-right" variant="transparent p-0" right no-caret>
|
||||
<template slot="button-content">
|
||||
<i class="icon-location-pin"></i>
|
||||
</template>
|
||||
<b-dropdown-item>Action</b-dropdown-item>
|
||||
<b-dropdown-item>Another action</b-dropdown-item>
|
||||
<b-dropdown-item>Something else here...</b-dropdown-item>
|
||||
<b-dropdown-item disabled>Disabled action</b-dropdown-item>
|
||||
</b-dropdown>
|
||||
<h4 class="mb-0">9.823</h4>
|
||||
<p>Members online</p>
|
||||
</b-card-body>
|
||||
<card-line2-chart-example class="chart-wrapper px-3" style="height:70px;" height="70"/>
|
||||
</b-card>
|
||||
</b-col>
|
||||
<b-col sm="6" lg="3">
|
||||
<b-card no-body class="bg-warning">
|
||||
<b-card-body class="pb-0">
|
||||
<b-dropdown class="float-right" variant="transparent p-0" right>
|
||||
<template slot="button-content">
|
||||
<i class="icon-settings"></i>
|
||||
</template>
|
||||
<b-dropdown-item>Action</b-dropdown-item>
|
||||
<b-dropdown-item>Another action</b-dropdown-item>
|
||||
<b-dropdown-item>Something else here...</b-dropdown-item>
|
||||
<b-dropdown-item disabled>Disabled action</b-dropdown-item>
|
||||
</b-dropdown>
|
||||
<h4 class="mb-0">9.823</h4>
|
||||
<p>Members online</p>
|
||||
</b-card-body>
|
||||
<card-line3-chart-example class="chart-wrapper" style="height:70px;" height="70"/>
|
||||
</b-card>
|
||||
</b-col>
|
||||
<b-col sm="6" lg="3">
|
||||
<b-card no-body class="bg-danger">
|
||||
<b-card-body class="pb-0">
|
||||
<b-dropdown class="float-right" variant="transparent p-0" right>
|
||||
<template slot="button-content">
|
||||
<i class="icon-settings"></i>
|
||||
</template>
|
||||
<b-dropdown-item>Action</b-dropdown-item>
|
||||
<b-dropdown-item>Another action</b-dropdown-item>
|
||||
<b-dropdown-item>Something else here...</b-dropdown-item>
|
||||
<b-dropdown-item disabled>Disabled action</b-dropdown-item>
|
||||
</b-dropdown>
|
||||
<h4 class="mb-0">9.823</h4>
|
||||
<p>Members online</p>
|
||||
</b-card-body>
|
||||
<card-bar-chart-example class="chart-wrapper px-3" style="height:70px;" height="70"/>
|
||||
</b-card>
|
||||
</b-col>
|
||||
</b-row>
|
||||
|
||||
<b-card>
|
||||
<b-row>
|
||||
<b-col sm="5">
|
||||
<h4 id="traffic" class="card-title mb-0">Traffic</h4>
|
||||
<div class="small text-muted">November 2017</div>
|
||||
</b-col>
|
||||
<b-col sm="7" class="d-none d-md-block">
|
||||
<b-button type="button" variant="primary" class="float-right"><i class="icon-cloud-download"></i></b-button>
|
||||
<b-button-toolbar class="float-right" aria-label="Toolbar with buttons group">
|
||||
<b-form-radio-group class="mr-3" id="radiosBtn" buttons button-variant="outline-secondary" v-model="selected" name="radiosBtn">
|
||||
<b-form-radio class="mx-0" value="Day">Day</b-form-radio>
|
||||
<b-form-radio class="mx-0" value="Month">Month</b-form-radio>
|
||||
<b-form-radio class="mx-0" value="Year">Year</b-form-radio>
|
||||
</b-form-radio-group>
|
||||
</b-button-toolbar>
|
||||
</b-col>
|
||||
</b-row>
|
||||
<main-chart-example class="chart-wrapper" style="height:300px;margin-top:40px;" height="300"></main-chart-example>
|
||||
<div slot="footer">
|
||||
<ul>
|
||||
<li>
|
||||
<div class="text-muted">Visits</div>
|
||||
<strong>29.703 Users (40%)</strong>
|
||||
<b-progress height={} class="progress-xs mt-2" :precision="1" variant="success" :value="40"></b-progress>
|
||||
</li>
|
||||
<li class="d-none d-md-table-cell">
|
||||
<div class="text-muted">Unique</div>
|
||||
<strong>24.093 Users (20%)</strong>
|
||||
<b-progress height={} class="progress-xs mt-2" :precision="1" variant="info" :value="20"></b-progress>
|
||||
</li>
|
||||
<li>
|
||||
<div class="text-muted">Pageviews</div>
|
||||
<strong>78.706 Views (60%)</strong>
|
||||
<b-progress height={} class="progress-xs mt-2" :precision="1" variant="warning" :value="60"></b-progress>
|
||||
</li>
|
||||
<li class="d-none d-md-table-cell">
|
||||
<div class="text-muted">New Users</div>
|
||||
<strong>22.123 Users (80%)</strong>
|
||||
<b-progress height={} class="progress-xs mt-2" :precision="1" variant="danger" :value="80"></b-progress>
|
||||
</li>
|
||||
<li class="d-none d-md-table-cell">
|
||||
<div class="text-muted">Bounce Rate</div>
|
||||
<strong>40.15%</strong>
|
||||
<b-progress height={} class="progress-xs mt-2" :precision="1" :value="40"></b-progress>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</b-card>
|
||||
<b-row>
|
||||
<b-col sm="6" lg="3">
|
||||
<div class="social-box facebook">
|
||||
<i class="fa fa-facebook"></i>
|
||||
<div class="chart-wrapper">
|
||||
<social-box-chart-example :data="[65, 59, 84, 84, 51, 55, 40]" height="90"/>
|
||||
</div>
|
||||
<ul>
|
||||
<li>
|
||||
<strong>89k</strong>
|
||||
<span>friends</span>
|
||||
</li>
|
||||
<li>
|
||||
<strong>459</strong>
|
||||
<span>feeds</span>
|
||||
</li>
|
||||
</ul>
|
||||
</div><!--/.social-box-->
|
||||
</b-col>
|
||||
<b-col sm="6" lg="3">
|
||||
<div class="social-box twitter">
|
||||
<i class="fa fa-twitter"></i>
|
||||
<div class="chart-wrapper">
|
||||
<social-box-chart-example :data="[1, 13, 9, 17, 34, 41, 38]" height="90"/>
|
||||
</div>
|
||||
<ul>
|
||||
<li>
|
||||
<strong>973k</strong>
|
||||
<span>followers</span>
|
||||
</li>
|
||||
<li>
|
||||
<strong>1.792</strong>
|
||||
<span>tweets</span>
|
||||
</li>
|
||||
</ul>
|
||||
</div><!--/.social-box-->
|
||||
</b-col>
|
||||
<b-col sm="6" lg="3">
|
||||
<div class="social-box linkedin">
|
||||
<i class="fa fa-linkedin"></i>
|
||||
<div class="chart-wrapper">
|
||||
<social-box-chart-example :data="[78, 81, 80, 45, 34, 12, 40]" height="90"/>
|
||||
</div>
|
||||
<ul>
|
||||
<li>
|
||||
<strong>500+</strong>
|
||||
<span>contacts</span>
|
||||
</li>
|
||||
<li>
|
||||
<strong>292</strong>
|
||||
<span>feeds</span>
|
||||
</li>
|
||||
</ul>
|
||||
</div><!--/.social-box-->
|
||||
</b-col>
|
||||
<b-col sm="6" lg="3">
|
||||
<div class="social-box google-plus">
|
||||
<i class="fa fa-google-plus"></i>
|
||||
<div class="chart-wrapper">
|
||||
<social-box-chart-example :data="[35, 23, 56, 22, 97, 23, 64]" height="90"/>
|
||||
</div>
|
||||
<ul>
|
||||
<li>
|
||||
<strong>894</strong>
|
||||
<span>followers</span>
|
||||
</li>
|
||||
<li>
|
||||
<strong>92</strong>
|
||||
<span>circles</span>
|
||||
</li>
|
||||
</ul>
|
||||
</div><!--/.social-box-->
|
||||
</b-col>
|
||||
</b-row>
|
||||
<b-row>
|
||||
<b-col md="12">
|
||||
<b-card header="Traffic & Sales">
|
||||
<b-row>
|
||||
<b-col sm="12" lg="4">
|
||||
<b-row>
|
||||
<b-col sm="6">
|
||||
<Callout variant="info">
|
||||
<small class="text-muted">New Clients</small><br>
|
||||
<strong class="h4">9,123</strong>
|
||||
<div class="chart-wrapper">
|
||||
<callout-chart-example :data="[35, 23, 56, 22, 97, 23, 64]" variant="#20a8d8" width="80" height="30" />
|
||||
</div>
|
||||
</Callout>
|
||||
</b-col>
|
||||
<b-col sm="6">
|
||||
<Callout variant="danger">
|
||||
<small class="text-muted">Recurring Clients</small><br>
|
||||
<strong class="h4">22,643</strong>
|
||||
<div class="chart-wrapper">
|
||||
<callout-chart-example :data="[65, 59, 84, 84, 51, 55, 40]" variant="#f86c6b" width="80" height="30" />
|
||||
</div>
|
||||
</Callout>
|
||||
</b-col>
|
||||
</b-row>
|
||||
<hr class="mt-0">
|
||||
<ul class="horizontal-bars">
|
||||
<li>
|
||||
<div class="title">
|
||||
Monday
|
||||
</div>
|
||||
<div class="bars">
|
||||
<b-progress height={} class="progress-xs" :value="34" variant="info"></b-progress>
|
||||
<b-progress height={} class="progress-xs" :value="78" variant="danger"></b-progress>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="title">
|
||||
Tuesday
|
||||
</div>
|
||||
<div class="bars">
|
||||
<b-progress height={} class="progress-xs" :value="56" variant="info"></b-progress>
|
||||
<b-progress height={} class="progress-xs" :value="94" variant="danger"></b-progress>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="title">
|
||||
Wednesday
|
||||
</div>
|
||||
<div class="bars">
|
||||
<b-progress height={} class="progress-xs" :value="12" variant="info"></b-progress>
|
||||
<b-progress height={} class="progress-xs" :value="67" variant="danger"></b-progress>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="title">
|
||||
Thursday
|
||||
</div>
|
||||
<div class="bars">
|
||||
<b-progress height={} class="progress-xs" :value="43" variant="info"></b-progress>
|
||||
<b-progress height={} class="progress-xs" :value="91" variant="danger"></b-progress>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="title">
|
||||
Friday
|
||||
</div>
|
||||
<div class="bars">
|
||||
<b-progress height={} class="progress-xs" :value="22" variant="info"></b-progress>
|
||||
<b-progress height={} class="progress-xs" :value="73" variant="danger"></b-progress>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="title">
|
||||
Saturday
|
||||
</div>
|
||||
<div class="bars">
|
||||
<b-progress height={} class="progress-xs" :value="53" variant="info"></b-progress>
|
||||
<b-progress height={} class="progress-xs" :value="82" variant="danger"></b-progress>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<div class="title">
|
||||
Sunday
|
||||
</div>
|
||||
<div class="bars">
|
||||
<b-progress height={} class="progress-xs" :value="9" variant="info"></b-progress>
|
||||
<b-progress height={} class="progress-xs" :value="69" variant="danger"></b-progress>
|
||||
</div>
|
||||
</li>
|
||||
<li class="legend">
|
||||
<b-badge pill variant="info"></b-badge> <small>New clients</small> <b-badge pill variant="danger"></b-badge> <small>Recurring clients</small>
|
||||
</li>
|
||||
</ul>
|
||||
</b-col>
|
||||
<b-col sm="6" lg="4">
|
||||
<b-row>
|
||||
<b-col sm="6">
|
||||
<Callout variant="warning">
|
||||
<small class="text-muted">Pageviews</small><br>
|
||||
<strong class="h4">78,623</strong>
|
||||
<div class="chart-wrapper">
|
||||
<callout-chart-example :data="[35, 23, 56, 22, 97, 23, 64]" variant="#f8cb00" width="80" height="30" />
|
||||
</div>
|
||||
</Callout>
|
||||
</b-col>
|
||||
<b-col sm="6">
|
||||
<Callout variant="success">
|
||||
<small class="text-muted">Organic</small><br>
|
||||
<strong class="h4">49,123</strong>
|
||||
<div class="chart-wrapper">
|
||||
<callout-chart-example :data="[65, 59, 84, 84, 51, 55, 40]" variant="#4dbd74" width="80px" height="30" />
|
||||
</div>
|
||||
</Callout>
|
||||
</b-col>
|
||||
</b-row>
|
||||
<hr class="mt-0">
|
||||
<ul class="horizontal-bars type-2">
|
||||
<li>
|
||||
<i class="icon-user"></i>
|
||||
<span class="title">Male</span>
|
||||
<span class="value">43%</span>
|
||||
<div class="bars">
|
||||
<b-progress height={} class="progress-xs" :value="43" variant="warning"></b-progress>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<i class="icon-user-female"></i>
|
||||
<span class="title">Female</span>
|
||||
<span class="value">37%</span>
|
||||
<div class="bars">
|
||||
<b-progress height={} class="progress-xs" :value="37" variant="warning"></b-progress>
|
||||
</div>
|
||||
</li>
|
||||
<li class="divider"></li>
|
||||
<li>
|
||||
<i class="icon-globe"></i>
|
||||
<span class="title">Organic Search</span>
|
||||
<span class="value">191,235 <span class="text-muted small">(56%)</span></span>
|
||||
<div class="bars">
|
||||
<b-progress height={} class="progress-xs" :value="56" variant="success"></b-progress>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<i class="icon-social-facebook"></i>
|
||||
<span class="title">Facebook</span>
|
||||
<span class="value">51,223 <span class="text-muted small">(15%)</span></span>
|
||||
<div class="bars">
|
||||
<b-progress height={} class="progress-xs" :value="15" variant="success"></b-progress>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<i class="icon-social-twitter"></i>
|
||||
<span class="title">Twitter</span>
|
||||
<span class="value">37,564 <span class="text-muted small">(11%)</span></span>
|
||||
<div class="bars">
|
||||
<b-progress height={} class="progress-xs" :value="11" variant="success"></b-progress>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<i class="icon-social-linkedin"></i>
|
||||
<span class="title">LinkedIn</span>
|
||||
<span class="value">27,319 <span class="text-muted small">(8%)</span></span>
|
||||
<div class="bars">
|
||||
<b-progress height={} class="progress-xs" :value="8" variant="success"></b-progress>
|
||||
</div>
|
||||
</li>
|
||||
<li class="divider text-center">
|
||||
<b-button variant="link" size="sm" class="text-muted"><i class="icon-options"></i></b-button>
|
||||
</li>
|
||||
</ul>
|
||||
</b-col>
|
||||
<b-col sm="6" lg="4">
|
||||
<b-row>
|
||||
<b-col sm="6">
|
||||
<Callout>
|
||||
<small class="text-muted">CTR</small><br>
|
||||
<strong class="h4">23%</strong>
|
||||
<div class="chart-wrapper">
|
||||
<callout-chart-example :data="[78, 81, 80, 45, 34, 12, 40]" width="80px" height="30" />
|
||||
</div>
|
||||
</Callout>
|
||||
</b-col>
|
||||
<b-col sm="6">
|
||||
<Callout variant="primary">
|
||||
<small class="text-muted">Bounce Rate</small><br>
|
||||
<strong class="h4">5%</strong>
|
||||
<div class="chart-wrapper">
|
||||
<callout-chart-example :data="[35, 23, 56, 22, 97, 23, 64]" variant="#20a8d8" width="80px" height="30" />
|
||||
</div>
|
||||
</Callout>
|
||||
</b-col>
|
||||
</b-row>
|
||||
<hr class="mt-0">
|
||||
<ul class="icons-list">
|
||||
<li>
|
||||
<i class="icon-screen-desktop bg-primary"></i>
|
||||
<div class="desc">
|
||||
<div class="title">iMac 4k</div>
|
||||
<small>Lorem ipsum dolor sit amet</small>
|
||||
</div>
|
||||
<div class="value">
|
||||
<div class="small text-muted">Sold this week</div>
|
||||
<strong>1.924</strong>
|
||||
</div>
|
||||
<div class="actions">
|
||||
<b-button variant="link" class="text-muted"><i class="icon-settings"></i></b-button>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<i class="icon-screen-smartphone bg-info"></i>
|
||||
<div class="desc">
|
||||
<div class="title">Samsung Galaxy Edge</div>
|
||||
<small>Lorem ipsum dolor sit amet</small>
|
||||
</div>
|
||||
<div class="value">
|
||||
<div class="small text-muted">Sold this week</div>
|
||||
<strong>1.224</strong>
|
||||
</div>
|
||||
<div class="actions">
|
||||
<b-button variant="link" class="text-muted"><i class="icon-settings"></i></b-button>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<i class="icon-screen-smartphone bg-warning"></i>
|
||||
<div class="desc">
|
||||
<div class="title">iPhone 6S</div>
|
||||
<small>Lorem ipsum dolor sit amet</small>
|
||||
</div>
|
||||
<div class="value">
|
||||
<div class="small text-muted">Sold this week</div>
|
||||
<strong>1.163</strong>
|
||||
</div>
|
||||
<div class="actions">
|
||||
<b-button variant="link" class="text-muted"><i class="icon-settings"></i></b-button>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<i class="icon-user bg-danger"></i>
|
||||
<div class="desc">
|
||||
<div class="title">Premium accounts</div>
|
||||
<small>Lorem ipsum dolor sit amet</small>
|
||||
</div>
|
||||
<div class="value">
|
||||
<div class="small text-muted">Sold this week</div>
|
||||
<strong>928</strong>
|
||||
</div>
|
||||
<div class="actions">
|
||||
<b-button variant="link" class="text-muted"><i class="icon-settings"></i></b-button>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<i class="icon-social-spotify bg-success"></i>
|
||||
<div class="desc">
|
||||
<div class="title">Spotify Subscriptions</div>
|
||||
<small>Lorem ipsum dolor sit amet</small>
|
||||
</div>
|
||||
<div class="value">
|
||||
<div class="small text-muted">Sold this week</div>
|
||||
<strong>893</strong>
|
||||
</div>
|
||||
<div class="actions">
|
||||
<b-button variant="link" class="text-muted"><i class="icon-settings"></i></b-button>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<i class="icon-cloud-download bg-danger"></i>
|
||||
<div class="desc">
|
||||
<div class="title">Ebook</div>
|
||||
<small>Lorem ipsum dolor sit amet</small>
|
||||
</div>
|
||||
<div class="value">
|
||||
<div class="small text-muted">Downloads</div>
|
||||
<strong>121.924</strong>
|
||||
</div>
|
||||
<div class="actions">
|
||||
<b-button variant="link" class="text-muted"><i class="icon-settings"></i></b-button>
|
||||
</div>
|
||||
</li>
|
||||
<li>
|
||||
<i class="icon-camera bg-warning"></i>
|
||||
<div class="desc">
|
||||
<div class="title">Photos</div>
|
||||
<small>Lorem ipsum dolor sit amet</small>
|
||||
</div>
|
||||
<div class="value">
|
||||
<div class="small text-muted">Uploaded</div>
|
||||
<strong>12.125</strong>
|
||||
</div>
|
||||
<div class="actions">
|
||||
<b-button variant="link" class="text-muted"><i class="icon-settings"></i></b-button>
|
||||
</div>
|
||||
</li>
|
||||
<li class="divider text-center">
|
||||
<b-button size="sm" variant="link" class="text-muted"><i class="icon-options"></i></b-button>
|
||||
</li>
|
||||
</ul>
|
||||
</b-col>
|
||||
</b-row>
|
||||
<br/>
|
||||
<b-table class="mb-0 table-outline" responsive="sm" hover :items="tableItems" :fields="tableFields" head-variant="light">
|
||||
<div slot="avatar" class="avatar" slot-scope="item">
|
||||
<img :src="item.value.url" class="img-avatar" alt="">
|
||||
<span class="avatar-status" v-bind:class="{ 'bg-success': item.value.status == 'success', 'bg-warning': item.value.status == 'warning', 'bg-danger': item.value.status == 'danger', 'bg-secondary': item.value.status == '' }"></span>
|
||||
</div>
|
||||
<div slot="user" slot-scope="item">
|
||||
<div>{{item.value.name}}</div>
|
||||
<div class="small text-muted">
|
||||
<span>
|
||||
<template v-if="item.value.new">New</template>
|
||||
<template v-else>Recurring</template>
|
||||
</span> | Registered: {{item.value.registered}}
|
||||
</div>
|
||||
</div>
|
||||
<i slot="country" class="h4 mb-0" :class="flag(item.value.flag)" slot-scope="item" :title="item.value.flag" :id="item.value.flag"></i>
|
||||
<i class="flag-icon flag-icon-pw h1" title="pw" id="pw"></i>
|
||||
<div slot="usage" slot-scope="item">
|
||||
<div class="clearfix">
|
||||
<div class="float-left">
|
||||
<strong>{{item.value.value}}%</strong>
|
||||
</div>
|
||||
<div class="float-right">
|
||||
<small class="text-muted">{{item.value.period}}</small>
|
||||
</div>
|
||||
</div>
|
||||
<b-progress height={} class="progress-xs" v-model="item.value.value" :variant="variant(item.value.value)"></b-progress>
|
||||
</div>
|
||||
<i slot="payment" slot-scope="item" :class="item.value.icon" style="font-size:24px"></i>
|
||||
<div slot="activity" slot-scope="item">
|
||||
<div class="small text-muted">Last login</div>
|
||||
<strong>{{item.value}}</strong>
|
||||
</div>
|
||||
</b-table>
|
||||
</b-card>
|
||||
</b-col>
|
||||
</b-row>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import CardLine1ChartExample from './dashboard/CardLine1ChartExample'
|
||||
import CardLine2ChartExample from './dashboard/CardLine2ChartExample'
|
||||
import CardLine3ChartExample from './dashboard/CardLine3ChartExample'
|
||||
import CardBarChartExample from './dashboard/CardBarChartExample'
|
||||
import MainChartExample from './dashboard/MainChartExample'
|
||||
import SocialBoxChartExample from './dashboard/SocialBoxChartExample'
|
||||
import CalloutChartExample from './dashboard/CalloutChartExample'
|
||||
import { Callout } from '../components/'
|
||||
|
||||
export default {
|
||||
name: 'dashboard',
|
||||
components: {
|
||||
Callout,
|
||||
CardLine1ChartExample,
|
||||
CardLine2ChartExample,
|
||||
CardLine3ChartExample,
|
||||
CardBarChartExample,
|
||||
MainChartExample,
|
||||
SocialBoxChartExample,
|
||||
CalloutChartExample
|
||||
},
|
||||
data: function () {
|
||||
return {
|
||||
selected: 'Month',
|
||||
tableItems: [
|
||||
{
|
||||
avatar: { url: 'static/img/avatars/1.jpg', status: 'success' },
|
||||
user: { name: 'Yiorgos Avraamu', new: true, registered: 'Jan 1, 2015' },
|
||||
country: { name: 'USA', flag: 'us' },
|
||||
usage: { value: 50, period: 'Jun 11, 2015 - Jul 10, 2015' },
|
||||
payment: { name: 'Mastercard', icon: 'fa fa-cc-mastercard' },
|
||||
activity: '10 sec ago'
|
||||
},
|
||||
{
|
||||
avatar: { url: 'static/img/avatars/2.jpg', status: 'danger' },
|
||||
user: { name: 'Avram Tarasios', new: false, registered: 'Jan 1, 2015' },
|
||||
country: { name: 'Brazil', flag: 'br' },
|
||||
usage: { value: 22, period: 'Jun 11, 2015 - Jul 10, 2015' },
|
||||
payment: { name: 'Visa', icon: 'fa fa-cc-visa' },
|
||||
activity: '5 minutes ago'
|
||||
},
|
||||
{
|
||||
avatar: { url: 'static/img/avatars/3.jpg', status: 'warning' },
|
||||
user: { name: 'Quintin Ed', new: true, registered: 'Jan 1, 2015' },
|
||||
country: { name: 'India', flag: 'in' },
|
||||
usage: { value: 74, period: 'Jun 11, 2015 - Jul 10, 2015' },
|
||||
payment: { name: 'Stripe', icon: 'fa fa-cc-stripe' },
|
||||
activity: '1 hour ago'
|
||||
},
|
||||
{
|
||||
avatar: { url: 'static/img/avatars/4.jpg', status: '' },
|
||||
user: { name: 'Enéas Kwadwo', new: true, registered: 'Jan 1, 2015' },
|
||||
country: { name: 'France', flag: 'fr' },
|
||||
usage: { value: 98, period: 'Jun 11, 2015 - Jul 10, 2015' },
|
||||
payment: { name: 'PayPal', icon: 'fa fa-paypal' },
|
||||
activity: 'Last month'
|
||||
},
|
||||
{
|
||||
avatar: { url: 'static/img/avatars/5.jpg', status: 'success' },
|
||||
user: { name: 'Agapetus Tadeáš', new: true, registered: 'Jan 1, 2015' },
|
||||
country: { name: 'Spain', flag: 'es' },
|
||||
usage: { value: 22, period: 'Jun 11, 2015 - Jul 10, 2015' },
|
||||
payment: { name: 'Google Wallet', icon: 'fa fa-google-wallet' },
|
||||
activity: 'Last week'
|
||||
},
|
||||
{
|
||||
avatar: { url: 'static/img/avatars/6.jpg', status: 'danger' },
|
||||
user: { name: 'Friderik Dávid', new: true, registered: 'Jan 1, 2015' },
|
||||
country: { name: 'Poland', flag: 'pl' },
|
||||
usage: { value: 43, period: 'Jun 11, 2015 - Jul 10, 2015' },
|
||||
payment: { name: 'Amex', icon: 'fa fa-cc-amex' },
|
||||
activity: 'Last week'
|
||||
}
|
||||
],
|
||||
tableFields: {
|
||||
avatar: {
|
||||
label: '<i class="icon-people"></i>',
|
||||
class: 'text-center'
|
||||
},
|
||||
user: {
|
||||
label: 'User'
|
||||
},
|
||||
country: {
|
||||
label: 'Country',
|
||||
class: 'text-center'
|
||||
},
|
||||
usage: {
|
||||
label: 'Usage'
|
||||
},
|
||||
payment: {
|
||||
label: 'Payment method',
|
||||
class: 'text-center'
|
||||
},
|
||||
activity: {
|
||||
label: 'Activity'
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
variant (value) {
|
||||
let $variant
|
||||
if (value <= 25) {
|
||||
$variant = 'info'
|
||||
} else if (value > 25 && value <= 50) {
|
||||
$variant = 'success'
|
||||
} else if (value > 50 && value <= 75) {
|
||||
$variant = 'warning'
|
||||
} else if (value > 75 && value <= 100) {
|
||||
$variant = 'danger'
|
||||
}
|
||||
return $variant
|
||||
},
|
||||
flag (value) {
|
||||
return 'flag-icon flag-icon-' + value
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
@@ -0,0 +1,471 @@
|
||||
<template>
|
||||
<div class="animated fadeIn">
|
||||
<b-row>
|
||||
<b-col sm="6" lg="3">
|
||||
<b-card>
|
||||
<div class="h4 m-0">89.9%</div>
|
||||
<div>Lorem ipsum...</div>
|
||||
<b-progress height={} class="progress-xs my-3" variant="success" :value="25"/>
|
||||
<small class="text-muted">Lorem ipsum dolor sit amet enim.</small>
|
||||
</b-card>
|
||||
</b-col>
|
||||
<b-col sm="6" lg="3">
|
||||
<b-card>
|
||||
<div class="h4 m-0">12.124</div>
|
||||
<div>Lorem ipsum...</div>
|
||||
<b-progress height={} class="progress-xs my-3" variant="info" :value="25"/>
|
||||
<small class="text-muted">Lorem ipsum dolor sit amet enim.</small>
|
||||
</b-card>
|
||||
</b-col>
|
||||
<b-col sm="6" lg="3">
|
||||
<b-card>
|
||||
<div class="h4 m-0">$98.111,00</div>
|
||||
<div>Lorem ipsum...</div>
|
||||
<b-progress height={} class="progress-xs my-3" variant="warning" :value="25"/>
|
||||
<small class="text-muted">Lorem ipsum dolor sit amet enim.</small>
|
||||
</b-card>
|
||||
</b-col>
|
||||
<b-col sm="6" lg="3">
|
||||
<b-card>
|
||||
<div class="h4 m-0">2 TB</div>
|
||||
<div>Lorem ipsum...</div>
|
||||
<b-progress height={} class="progress-xs my-3" variant="danger" :value="25"/>
|
||||
<small class="text-muted">Lorem ipsum dolor sit amet enim.</small>
|
||||
</b-card>
|
||||
</b-col>
|
||||
</b-row><!--/.row-->
|
||||
<b-row>
|
||||
<b-col sm="6" lg="3">
|
||||
<b-card class="text-white bg-primary">
|
||||
<div class="h4 m-0">89.9%</div>
|
||||
<div>Lorem ipsum...</div>
|
||||
<b-progress height={} class="progress-white progress-xs my-3" :value="25"/>
|
||||
<small class="text-muted">Lorem ipsum dolor sit amet enim.</small>
|
||||
</b-card>
|
||||
</b-col>
|
||||
<b-col sm="6" lg="3">
|
||||
<b-card class="text-white bg-warning">
|
||||
<div class="h4 m-0">12.124</div>
|
||||
<div>Lorem ipsum...</div>
|
||||
<b-progress height={} class="progress-white progress-xs my-3" :value="25"/>
|
||||
<small class="text-muted">Lorem ipsum dolor sit amet enim.</small>
|
||||
</b-card>
|
||||
</b-col>
|
||||
<b-col sm="6" lg="3">
|
||||
<b-card class="text-white bg-danger">
|
||||
<div class="h4 m-0">$98.111,00</div>
|
||||
<div>Lorem ipsum...</div>
|
||||
<b-progress height={} class="progress-white progress-xs my-3" :value="25"/>
|
||||
<small class="text-muted">Lorem ipsum dolor sit amet enim.</small>
|
||||
</b-card>
|
||||
</b-col>
|
||||
<b-col sm="6" lg="3">
|
||||
<b-card class="text-white bg-info">
|
||||
<div class="h4 m-0">2 TB</div>
|
||||
<div>Lorem ipsum...</div>
|
||||
<b-progress height={} class="progress-white progress-xs my-3" :value="25"/>
|
||||
<small class="text-muted">Lorem ipsum dolor sit amet enim.</small>
|
||||
</b-card>
|
||||
</b-col>
|
||||
</b-row><!--/.row-->
|
||||
<b-row>
|
||||
<b-col cols="6" lg="3">
|
||||
<b-card :no-body="true">
|
||||
<b-card-body class="p-3 clearfix">
|
||||
<i class="fa fa-cogs bg-primary p-3 font-2xl mr-3 float-left"></i>
|
||||
<div class="h5 text-primary mb-0 mt-2">$1.999,50</div>
|
||||
<div class="text-muted text-uppercase font-weight-bold font-xs">Income</div>
|
||||
</b-card-body>
|
||||
</b-card>
|
||||
</b-col>
|
||||
<b-col cols="6" lg="3">
|
||||
<b-card :no-body="true">
|
||||
<b-card-body class="p-3 clearfix">
|
||||
<i class="fa fa-laptop bg-info p-3 font-2xl mr-3 float-left"></i>
|
||||
<div class="h5 text-info mb-0 mt-2">$1.999,50</div>
|
||||
<div class="text-muted text-uppercase font-weight-bold font-xs">Income</div>
|
||||
</b-card-body>
|
||||
</b-card>
|
||||
</b-col>
|
||||
<b-col cols="6" lg="3">
|
||||
<b-card :no-body="true">
|
||||
<b-card-body class="p-3 clearfix">
|
||||
<i class="fa fa-moon-o bg-warning p-3 font-2xl mr-3 float-left"></i>
|
||||
<div class="h5 text-warning mb-0 mt-2">$1.999,50</div>
|
||||
<div class="text-muted text-uppercase font-weight-bold font-xs">Income</div>
|
||||
</b-card-body>
|
||||
</b-card>
|
||||
</b-col>
|
||||
<b-col cols="6" lg="3">
|
||||
<b-card :no-body="true">
|
||||
<b-card-body class="p-3 clearfix">
|
||||
<i class="fa fa-bell bg-danger p-3 font-2xl mr-3 float-left"></i>
|
||||
<div class="h5 text-danger mb-0 mt-2">$1.999,50</div>
|
||||
<div class="text-muted text-uppercase font-weight-bold font-xs">Income</div>
|
||||
</b-card-body>
|
||||
</b-card>
|
||||
</b-col>
|
||||
<b-col cols="6" lg="3">
|
||||
<b-card :no-body="true" footer-class="px-3 py-2">
|
||||
<b-card-body class="p-3 clearfix">
|
||||
<i class="fa fa-cogs bg-primary p-3 font-2xl mr-3 float-left"></i>
|
||||
<div class="h5 text-primary mb-0 mt-2">$1.999,50</div>
|
||||
<div class="text-muted text-uppercase font-weight-bold font-xs">Income</div>
|
||||
</b-card-body>
|
||||
<div slot="footer">
|
||||
<a class="font-weight-bold font-xs btn-block text-muted" href="#">View More <i class="fa fa-angle-right float-right font-lg"></i></a>
|
||||
</div>
|
||||
</b-card>
|
||||
</b-col>
|
||||
<b-col cols="6" lg="3">
|
||||
<b-card :no-body="true" footer-class="px-3 py-2">
|
||||
<b-card-body class="p-3 clearfix">
|
||||
<i class="fa fa-laptop bg-info p-3 font-2xl mr-3 float-left"></i>
|
||||
<div class="h5 text-info mb-0 mt-2">$1.999,50</div>
|
||||
<div class="text-muted text-uppercase font-weight-bold font-xs">Income</div>
|
||||
</b-card-body>
|
||||
<div slot="footer">
|
||||
<a class="font-weight-bold font-xs btn-block text-muted" href="#">View More <i class="fa fa-angle-right float-right font-lg"></i></a>
|
||||
</div>
|
||||
</b-card>
|
||||
</b-col>
|
||||
<b-col cols="6" lg="3">
|
||||
<b-card :no-body="true" footer-class="px-3 py-2">
|
||||
<b-card-body class="p-3 clearfix">
|
||||
<i class="fa fa-moon-o bg-warning p-3 font-2xl mr-3 float-left"></i>
|
||||
<div class="h5 text-warning mb-0 mt-2">$1.999,50</div>
|
||||
<div class="text-muted text-uppercase font-weight-bold font-xs">Income</div>
|
||||
</b-card-body>
|
||||
<div slot="footer">
|
||||
<a class="font-weight-bold font-xs btn-block text-muted" href="#">View More <i class="fa fa-angle-right float-right font-lg"></i></a>
|
||||
</div>
|
||||
</b-card>
|
||||
</b-col>
|
||||
<b-col cols="6" lg="3">
|
||||
<b-card :no-body="true" footer-class="px-3 py-2">
|
||||
<b-card-body class="p-3 clearfix">
|
||||
<i class="fa fa-bell bg-danger p-3 font-2xl mr-3 float-left"></i>
|
||||
<div class="h5 text-danger mb-0 mt-2">$1.999,50</div>
|
||||
<div class="text-muted text-uppercase font-weight-bold font-xs">Income</div>
|
||||
</b-card-body>
|
||||
<div slot="footer">
|
||||
<a class="font-weight-bold font-xs btn-block text-muted" href="#">View More <i class="fa fa-angle-right float-right font-lg"></i></a>
|
||||
</div>
|
||||
</b-card>
|
||||
</b-col>
|
||||
</b-row><!--/.row-->
|
||||
<b-row>
|
||||
<b-col cols="6" lg="3">
|
||||
<b-card :no-body="true">
|
||||
<b-card-body class="p-0 clearfix">
|
||||
<i class="fa fa-cogs bg-primary p-4 font-2xl mr-3 float-left"></i>
|
||||
<div class="h5 text-primary mb-0 pt-3">$1.999,50</div>
|
||||
<div class="text-muted text-uppercase font-weight-bold font-xs">Income</div>
|
||||
</b-card-body>
|
||||
</b-card>
|
||||
</b-col>
|
||||
<b-col cols="6" lg="3">
|
||||
<b-card :no-body="true">
|
||||
<b-card-body class="p-0 clearfix">
|
||||
<i class="fa fa-laptop bg-info p-4 font-2xl mr-3 float-left"></i>
|
||||
<div class="h5 text-info mb-0 pt-3">$1.999,50</div>
|
||||
<div class="text-muted text-uppercase font-weight-bold font-xs">Income</div>
|
||||
</b-card-body>
|
||||
</b-card>
|
||||
</b-col>
|
||||
<b-col cols="6" lg="3">
|
||||
<b-card :no-body="true">
|
||||
<b-card-body class="p-0 clearfix">
|
||||
<i class="fa fa-moon-o bg-warning p-4 font-2xl mr-3 float-left"></i>
|
||||
<div class="h5 text-warning mb-0 pt-3">$1.999,50</div>
|
||||
<div class="text-muted text-uppercase font-weight-bold font-xs">Income</div>
|
||||
</b-card-body>
|
||||
</b-card>
|
||||
</b-col>
|
||||
<b-col cols="6" lg="3">
|
||||
<b-card :no-body="true">
|
||||
<b-card-body class="p-0 clearfix">
|
||||
<i class="fa fa-bell bg-danger p-4 font-2xl mr-3 float-left"></i>
|
||||
<div class="h5 text-danger mb-0 pt-3">$1.999,50</div>
|
||||
<div class="text-muted text-uppercase font-weight-bold font-xs">Income</div>
|
||||
</b-card-body>
|
||||
</b-card>
|
||||
</b-col>
|
||||
<b-col cols="6" lg="3">
|
||||
<b-card :no-body="true">
|
||||
<b-card-body class="p-0 clearfix">
|
||||
<i class="fa fa-cogs bg-primary p-4 px-5 font-2xl mr-3 float-left"></i>
|
||||
<div class="h5 text-primary mb-0 pt-3">$1.999,50</div>
|
||||
<div class="text-muted text-uppercase font-weight-bold font-xs">Income</div>
|
||||
</b-card-body>
|
||||
</b-card>
|
||||
</b-col>
|
||||
<b-col cols="6" lg="3">
|
||||
<b-card :no-body="true">
|
||||
<b-card-body class="p-0 clearfix">
|
||||
<i class="fa fa-laptop bg-info p-4 px-5 font-2xl mr-3 float-left"></i>
|
||||
<div class="h5 text-info mb-0 pt-3">$1.999,50</div>
|
||||
<div class="text-muted text-uppercase font-weight-bold font-xs">Income</div>
|
||||
</b-card-body>
|
||||
</b-card>
|
||||
</b-col>
|
||||
<b-col cols="6" lg="3">
|
||||
<b-card :no-body="true">
|
||||
<b-card-body class="p-0 clearfix">
|
||||
<i class="fa fa-moon-o bg-warning p-4 px-5 font-2xl mr-3 float-left"></i>
|
||||
<div class="h5 text-warning mb-0 pt-3">$1.999,50</div>
|
||||
<div class="text-muted text-uppercase font-weight-bold font-xs">Income</div>
|
||||
</b-card-body>
|
||||
</b-card>
|
||||
</b-col>
|
||||
<b-col cols="6" lg="3">
|
||||
<b-card :no-body="true">
|
||||
<b-card-body class="p-0 clearfix">
|
||||
<i class="fa fa-bell bg-danger p-4 px-5 font-2xl mr-3 float-left"></i>
|
||||
<div class="h5 text-danger mb-0 pt-3">$1.999,50</div>
|
||||
<div class="text-muted text-uppercase font-weight-bold font-xs">Income</div>
|
||||
</b-card-body>
|
||||
</b-card>
|
||||
</b-col>
|
||||
</b-row><!--/.row-->
|
||||
<b-row>
|
||||
<b-col md="3" sm="6">
|
||||
<div class="social-box facebook">
|
||||
<i class="fa fa-facebook"></i>
|
||||
<ul>
|
||||
<li>
|
||||
<strong>89k</strong>
|
||||
<span>friends</span>
|
||||
</li>
|
||||
<li>
|
||||
<strong>459</strong>
|
||||
<span>feeds</span>
|
||||
</li>
|
||||
</ul>
|
||||
</div><!--/social-box-->
|
||||
</b-col>
|
||||
<b-col md="3" sm="6">
|
||||
<div class="social-box twitter">
|
||||
<i class="fa fa-twitter"></i>
|
||||
<ul>
|
||||
<li>
|
||||
<strong>973k</strong>
|
||||
<span>followers</span>
|
||||
</li>
|
||||
<li>
|
||||
<strong>1.792</strong>
|
||||
<span>tweets</span>
|
||||
</li>
|
||||
</ul>
|
||||
</div><!--/social-box-->
|
||||
</b-col>
|
||||
<b-col md="3" sm="6">
|
||||
<div class="social-box linkedin">
|
||||
<i class="fa fa-linkedin"></i>
|
||||
<ul>
|
||||
<li>
|
||||
<strong>500+</strong>
|
||||
<span>contacts</span>
|
||||
</li>
|
||||
<li>
|
||||
<strong>292</strong>
|
||||
<span>feeds</span>
|
||||
</li>
|
||||
</ul>
|
||||
</div><!--/social-box-->
|
||||
</b-col>
|
||||
<b-col md="3" sm="6">
|
||||
<div class="social-box google-plus">
|
||||
<i class="fa fa-google-plus"></i>
|
||||
<ul>
|
||||
<li>
|
||||
<strong>894</strong>
|
||||
<span>followers</span>
|
||||
</li>
|
||||
<li>
|
||||
<strong>92</strong>
|
||||
<span>circles</span>
|
||||
</li>
|
||||
</ul>
|
||||
</div><!--/social-box-->
|
||||
</b-col>
|
||||
</b-row><!--/.row-->
|
||||
<b-card-group class="mb-4">
|
||||
<b-card>
|
||||
<div class="h1 text-muted text-right mb-4">
|
||||
<i class="icon-people"></i>
|
||||
</div>
|
||||
<div class="h4 mb-0">87.500</div>
|
||||
<small class="text-muted text-uppercase font-weight-bold">Visitors</small>
|
||||
<b-progress height={} class="progress-xs mt-3 mb-0" variant="info" :value="25"/>
|
||||
</b-card>
|
||||
<b-card>
|
||||
<div class="h1 text-muted text-right mb-4">
|
||||
<i class="icon-user-follow"></i>
|
||||
</div>
|
||||
<div class="h4 mb-0">385</div>
|
||||
<small class="text-muted text-uppercase font-weight-bold">New Clients</small>
|
||||
<b-progress height={} class="progress-xs mt-3 mb-0" variant="success" :value="25"/>
|
||||
</b-card>
|
||||
<b-card>
|
||||
<div class="h1 text-muted text-right mb-4">
|
||||
<i class="icon-basket-loaded"></i>
|
||||
</div>
|
||||
<div class="h4 mb-0">1238</div>
|
||||
<small class="text-muted text-uppercase font-weight-bold">Products sold</small>
|
||||
<b-progress height={} class="progress-xs mt-3 mb-0" variant="warning" :value="25"/>
|
||||
</b-card>
|
||||
<b-card>
|
||||
<div class="h1 text-muted text-right mb-4">
|
||||
<i class="icon-pie-chart"></i>
|
||||
</div>
|
||||
<div class="h4 mb-0">28%</div>
|
||||
<small class="text-muted text-uppercase font-weight-bold">Returning Visitors</small>
|
||||
<b-progress height={} class="progress-xs mt-3 mb-0" :value="25"/>
|
||||
</b-card>
|
||||
<b-card>
|
||||
<div class="h1 text-muted text-right mb-4">
|
||||
<i class="icon-speedometer"></i>
|
||||
</div>
|
||||
<div class="h4 mb-0">5:34:11</div>
|
||||
<small class="text-muted text-uppercase font-weight-bold">Avg. Time</small>
|
||||
<b-progress height={} class="progress-xs mt-3 mb-0" variant="danger" :value="25"/>
|
||||
</b-card>
|
||||
</b-card-group>
|
||||
<b-row>
|
||||
<b-col sm="6" md="2">
|
||||
<b-card>
|
||||
<div class="h1 text-muted text-right mb-4">
|
||||
<i class="icon-people"></i>
|
||||
</div>
|
||||
<div class="h4 mb-0">87.500</div>
|
||||
<small class="text-muted text-uppercase font-weight-bold">Visitors</small>
|
||||
<b-progress height={} class="progress-xs mt-3 mb-0" variant="info" :value="25"/>
|
||||
</b-card>
|
||||
</b-col>
|
||||
<b-col sm="6" md="2">
|
||||
<b-card>
|
||||
<div class="h1 text-muted text-right mb-4">
|
||||
<i class="icon-user-follow"></i>
|
||||
</div>
|
||||
<div class="h4 mb-0">385</div>
|
||||
<small class="text-muted text-uppercase font-weight-bold">New Clients</small>
|
||||
<b-progress height={} class="progress-xs mt-3 mb-0" variant="success" :value="25"/>
|
||||
</b-card>
|
||||
</b-col>
|
||||
<b-col sm="6" md="2">
|
||||
<b-card>
|
||||
<div class="h1 text-muted text-right mb-4">
|
||||
<i class="icon-basket-loaded"></i>
|
||||
</div>
|
||||
<div class="h4 mb-0">1238</div>
|
||||
<small class="text-muted text-uppercase font-weight-bold">Products sold</small>
|
||||
<b-progress height={} class="progress-xs mt-3 mb-0" variant="warning" :value="25"/>
|
||||
</b-card>
|
||||
</b-col>
|
||||
<b-col sm="6" md="2">
|
||||
<b-card>
|
||||
<div class="h1 text-muted text-right mb-4">
|
||||
<i class="icon-pie-chart"></i>
|
||||
</div>
|
||||
<div class="h4 mb-0">28%</div>
|
||||
<small class="text-muted text-uppercase font-weight-bold">Returning Visitors</small>
|
||||
<b-progress height={} class="progress-xs mt-3 mb-0" :value="25"/>
|
||||
</b-card>
|
||||
</b-col>
|
||||
<b-col sm="6" md="2">
|
||||
<b-card>
|
||||
<div class="h1 text-muted text-right mb-4">
|
||||
<i class="icon-speedometer"></i>
|
||||
</div>
|
||||
<div class="h4 mb-0">5:34:11</div>
|
||||
<small class="text-muted text-uppercase font-weight-bold">Avg. Time</small>
|
||||
<b-progress height={} class="progress-xs mt-3 mb-0" variant="danger" :value="25"/>
|
||||
</b-card>
|
||||
</b-col>
|
||||
<b-col sm="6" md="2">
|
||||
<b-card>
|
||||
<div class="h1 text-muted text-right mb-4">
|
||||
<i class="icon-speech"></i>
|
||||
</div>
|
||||
<div class="h4 mb-0">972</div>
|
||||
<small class="text-muted text-uppercase font-weight-bold">Comments</small>
|
||||
<b-progress height={} class="progress-xs mt-3 mb-0"variant="info" :value="25"/>
|
||||
</b-card>
|
||||
</b-col>
|
||||
</b-row><!--/.row-->
|
||||
<b-row>
|
||||
<b-col sm="6" md="2">
|
||||
<b-card class="text-white bg-info">
|
||||
<div class="h1 text-muted text-right mb-4">
|
||||
<i class="icon-people"></i>
|
||||
</div>
|
||||
<div class="h4 mb-0">87.500</div>
|
||||
<small class="text-muted text-uppercase font-weight-bold">Visitors</small>
|
||||
<b-progress height={} class="progress-white progress-xs mt-3" :value="25"/>
|
||||
</b-card>
|
||||
</b-col>
|
||||
<b-col sm="6" md="2">
|
||||
<b-card class="text-white bg-success">
|
||||
<div class="h1 text-muted text-right mb-4">
|
||||
<i class="icon-user-follow"></i>
|
||||
</div>
|
||||
<div class="h4 mb-0">385</div>
|
||||
<small class="text-muted text-uppercase font-weight-bold">New Clients</small>
|
||||
<b-progress height={} class="progress-white progress-xs mt-3" :value="25"/>
|
||||
</b-card>
|
||||
</b-col>
|
||||
<b-col sm="6" md="2">
|
||||
<b-card class="text-white bg-warning">
|
||||
<div class="h1 text-muted text-right mb-4">
|
||||
<i class="icon-basket-loaded"></i>
|
||||
</div>
|
||||
<div class="h4 mb-0">1238</div>
|
||||
<small class="text-muted text-uppercase font-weight-bold">Products sold</small>
|
||||
<b-progress height={} class="progress-white progress-xs mt-3" :value="25"/>
|
||||
</b-card>
|
||||
</b-col>
|
||||
<b-col sm="6" md="2">
|
||||
<b-card class="text-white bg-primary">
|
||||
<div class="h1 text-muted text-right mb-4">
|
||||
<i class="icon-pie-chart"></i>
|
||||
</div>
|
||||
<div class="h4 mb-0">28%</div>
|
||||
<small class="text-muted text-uppercase font-weight-bold">Returning Visitors</small>
|
||||
<b-progress height={} class="progress-white progress-xs mt-3" :value="25"/>
|
||||
</b-card>
|
||||
</b-col>
|
||||
<b-col sm="6" md="2">
|
||||
<b-card class="text-white bg-danger">
|
||||
<div class="h1 text-muted text-right mb-4">
|
||||
<i class="icon-speedometer"></i>
|
||||
</div>
|
||||
<div class="h4 mb-0">5:34:11</div>
|
||||
<small class="text-muted text-uppercase font-weight-bold">Avg. Time</small>
|
||||
<b-progress height={} class="progress-white progress-xs mt-3" :value="25"/>
|
||||
</b-card>
|
||||
</b-col>
|
||||
<b-col sm="6" md="2">
|
||||
<b-card class="text-white bg-info">
|
||||
<div class="h1 text-muted text-right mb-4">
|
||||
<i class="icon-speech"></i>
|
||||
</div>
|
||||
<div class="h4 mb-0">972</div>
|
||||
<small class="text-muted text-uppercase font-weight-bold">Comments</small>
|
||||
<b-progress height={} class="progress-white progress-xs mt-3" :value="25"/>
|
||||
</b-card>
|
||||
</b-col>
|
||||
</b-row><!--/.row-->
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'widgets',
|
||||
data () {
|
||||
return {
|
||||
msg: 'Widgets'
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
@@ -0,0 +1,42 @@
|
||||
<template>
|
||||
<div class="wrapper">
|
||||
<div class="animated fadeIn">
|
||||
<b-row>
|
||||
<b-col cols="12">
|
||||
<b-card
|
||||
header-tag="header"
|
||||
footer-tag="footer">
|
||||
<div slot="header">
|
||||
<i class="fa fa-align-justify"></i> <strong>Bootstrap Breadcrumb</strong>
|
||||
<div class="card-actions">
|
||||
<a href="https://bootstrap-vue.js.org/docs/components/breadcrumb" target="_blank"><small class="text-muted">docs</small></a>
|
||||
</div>
|
||||
</div>
|
||||
<b-breadcrumb :items="items"/>
|
||||
</b-card>
|
||||
</b-col>
|
||||
</b-row>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'breadcrumbs',
|
||||
data () {
|
||||
return {
|
||||
items: [{
|
||||
text: 'Admin',
|
||||
href: '#'
|
||||
}, {
|
||||
text: 'Manage',
|
||||
href: '#'
|
||||
}, {
|
||||
text: 'Library',
|
||||
active: true
|
||||
}]
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
@@ -0,0 +1,218 @@
|
||||
<template>
|
||||
<div class="animated fadeIn">
|
||||
<b-row>
|
||||
<b-col sm="6" md="4">
|
||||
<b-card header="Card title">
|
||||
Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat.
|
||||
</b-card>
|
||||
</b-col>
|
||||
<b-col sm="6" md="4">
|
||||
<b-card show-footer>
|
||||
Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat.
|
||||
<div slot="footer">Card footer</div>
|
||||
</b-card>
|
||||
</b-col>
|
||||
<b-col sm="6" md="4">
|
||||
<b-card header="<i class='fa fa-check'></i> Card with icon">
|
||||
Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat.
|
||||
</b-card>
|
||||
</b-col>
|
||||
<b-col sm="6" md="4">
|
||||
<b-card>
|
||||
<div slot="header">
|
||||
Card with switch
|
||||
<label class="switch switch-sm switch-text switch-info float-right mb-0">
|
||||
<input type="checkbox" class="switch-input">
|
||||
<span class="switch-label" data-on="On" data-off="Off"></span>
|
||||
<span class="switch-handle"></span>
|
||||
</label>
|
||||
</div>
|
||||
Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat.
|
||||
</b-card>
|
||||
</b-col>
|
||||
<b-col sm="6" md="4">
|
||||
<b-card>
|
||||
<div slot="header">
|
||||
Card with label
|
||||
<b-badge variant="success" class="float-right">Success</b-badge>
|
||||
</div>
|
||||
Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat.
|
||||
</b-card>
|
||||
</b-col>
|
||||
<b-col sm="6" md="4">
|
||||
<b-card>
|
||||
<div slot="header">
|
||||
Card with label
|
||||
<b-badge pill variant="danger" class="float-right">42</b-badge>
|
||||
</div>
|
||||
Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat.
|
||||
</b-card>
|
||||
</b-col>
|
||||
</b-row><!--/.row-->
|
||||
<b-row>
|
||||
<b-col sm="6" md="4">
|
||||
<b-card header="Card outline" border-variant="primary">
|
||||
Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat.
|
||||
</b-card>
|
||||
</b-col>
|
||||
<b-col sm="6" md="4">
|
||||
<b-card header="Card outline" border-variant="secondary">
|
||||
Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat.
|
||||
</b-card>
|
||||
</b-col>
|
||||
<b-col sm="6" md="4">
|
||||
<b-card header="Card outline" border-variant="success">
|
||||
Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat.
|
||||
</b-card>
|
||||
</b-col>
|
||||
<b-col sm="6" md="4">
|
||||
<b-card header="Card outline" border-variant="info">
|
||||
Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat.
|
||||
</b-card>
|
||||
</b-col>
|
||||
<b-col sm="6" md="4">
|
||||
<b-card header="Card outline" border-variant="warning">
|
||||
Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat.
|
||||
</b-card>
|
||||
</b-col>
|
||||
<b-col sm="6" md="4">
|
||||
<b-card header="Card outline" border-variant="danger">
|
||||
Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat.
|
||||
</b-card>
|
||||
</b-col>
|
||||
</b-row><!--/.row-->
|
||||
|
||||
<b-row>
|
||||
<b-col sm="6" md="4">
|
||||
<b-card class="card-accent-primary" header="Card with accent">
|
||||
Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat.
|
||||
</b-card>
|
||||
</b-col>
|
||||
<b-col sm="6" md="4">
|
||||
<b-card class="card-accent-secondary" header="Card with accent">
|
||||
Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat.
|
||||
</b-card>
|
||||
</b-col>
|
||||
<b-col sm="6" md="4">
|
||||
<b-card class="card-accent-success" header="Card with accent">
|
||||
Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat.
|
||||
</b-card>
|
||||
</b-col>
|
||||
<b-col sm="6" md="4">
|
||||
<b-card class="card-accent-info" header="Card with accent">
|
||||
Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat.
|
||||
</b-card>
|
||||
</b-col>
|
||||
<b-col sm="6" md="4">
|
||||
<b-card class="card-accent-warning" header="Card with accent">
|
||||
Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat.
|
||||
</b-card>
|
||||
</b-col>
|
||||
<b-col sm="6" md="4">
|
||||
<b-card class="card-accent-danger" header="Card with accent">
|
||||
Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat.
|
||||
</b-card>
|
||||
</b-col>
|
||||
</b-row><!--/.row-->
|
||||
<b-row>
|
||||
<b-col sm="6" md="4">
|
||||
<b-card class="bg-primary text-center">
|
||||
<blockquote class="card-blockquote">
|
||||
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante.</p>
|
||||
<footer>Someone famous in
|
||||
<cite title="Source Title">Source Title</cite>
|
||||
</footer>
|
||||
</blockquote>
|
||||
</b-card>
|
||||
</b-col>
|
||||
<b-col sm="6" md="4">
|
||||
<b-card class="bg-success text-center">
|
||||
<blockquote class="card-blockquote">
|
||||
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante.</p>
|
||||
<footer>Someone famous in
|
||||
<cite title="Source Title">Source Title</cite>
|
||||
</footer>
|
||||
</blockquote>
|
||||
</b-card>
|
||||
</b-col>
|
||||
<b-col sm="6" md="4">
|
||||
<b-card class="bg-info text-center">
|
||||
<blockquote class="card-blockquote">
|
||||
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante.</p>
|
||||
<footer>Someone famous in
|
||||
<cite title="Source Title">Source Title</cite>
|
||||
</footer>
|
||||
</blockquote>
|
||||
</b-card>
|
||||
</b-col>
|
||||
<b-col sm="6" md="4">
|
||||
<b-card class="bg-warning text-center">
|
||||
<blockquote class="card-blockquote">
|
||||
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante.</p>
|
||||
<footer>Someone famous in
|
||||
<cite title="Source Title">Source Title</cite>
|
||||
</footer>
|
||||
</blockquote>
|
||||
</b-card>
|
||||
</b-col>
|
||||
<b-col sm="6" md="4">
|
||||
<b-card class="bg-danger text-center">
|
||||
<blockquote class="card-blockquote">
|
||||
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante.</p>
|
||||
<footer>Someone famous in
|
||||
<cite title="Source Title">Source Title</cite>
|
||||
</footer>
|
||||
</blockquote>
|
||||
</b-card>
|
||||
</b-col>
|
||||
<b-col sm="6" md="4">
|
||||
<b-card class="bg-secondary text-center">
|
||||
<blockquote class="card-blockquote">
|
||||
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante.</p>
|
||||
<footer>Someone famous in
|
||||
<cite title="Source Title">Source Title</cite>
|
||||
</footer>
|
||||
</blockquote>
|
||||
</b-card>
|
||||
</b-col>
|
||||
</b-row><!--/.row-->
|
||||
<b-row>
|
||||
<b-col sm="6" md="4">
|
||||
<b-card header="Card title" class="bg-primary">
|
||||
Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat.
|
||||
</b-card>
|
||||
</b-col>
|
||||
<b-col sm="6" md="4">
|
||||
<b-card header="Card title" class="bg-success">
|
||||
Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat.
|
||||
</b-card>
|
||||
</b-col>
|
||||
<b-col sm="6" md="4">
|
||||
<b-card header="Card title" class="bg-info">
|
||||
Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat.
|
||||
</b-card>
|
||||
</b-col>
|
||||
<b-col sm="6" md="4">
|
||||
<b-card header="Card title" class="bg-warning">
|
||||
Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat.
|
||||
</b-card>
|
||||
</b-col>
|
||||
<b-col sm="6" md="4">
|
||||
<b-card header="Card title" class="bg-danger">
|
||||
Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat.
|
||||
</b-card>
|
||||
</b-col>
|
||||
<b-col sm="6" md="4">
|
||||
<b-card header="Card title" class="bg-secondary">
|
||||
Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat.
|
||||
</b-card>
|
||||
</b-col>
|
||||
</b-row><!--/.row-->
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'cards'
|
||||
}
|
||||
</script>
|
||||
@@ -0,0 +1,94 @@
|
||||
<template>
|
||||
<div class="wrapper">
|
||||
<div class="animated fadeIn">
|
||||
<b-row>
|
||||
<b-col cols="12">
|
||||
<b-card
|
||||
header-tag="header"
|
||||
footer-tag="footer">
|
||||
<div slot="header">
|
||||
<i class="fa fa-align-justify"></i> <strong>Bootstrap Carousel</strong>
|
||||
<div class="card-actions">
|
||||
<a href="https://bootstrap-vue.js.org/docs/components/carousel" target="_blank"><small class="text-muted">docs</small></a>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<b-carousel id="carousel1"
|
||||
style="text-shadow: 1px 1px 2px #333;"
|
||||
controls
|
||||
indicators
|
||||
background="#ababab"
|
||||
:interval="4000"
|
||||
img-width="1024"
|
||||
img-height="480"
|
||||
v-model="slide"
|
||||
@sliding-start="onSlideStart"
|
||||
@sliding-end="onSlideEnd"
|
||||
>
|
||||
|
||||
<!-- Text slides with image -->
|
||||
<b-carousel-slide caption="First slide"
|
||||
text="Nulla vitae elit libero, a pharetra augue mollis interdum."
|
||||
img-src="https://lorempixel.com/1024/480/technics/2/"
|
||||
></b-carousel-slide>
|
||||
|
||||
<!-- Slides with custom text -->
|
||||
<b-carousel-slide img-src="https://lorempixel.com/1024/480/technics/4/">
|
||||
<h1>Hello world!</h1>
|
||||
</b-carousel-slide>
|
||||
|
||||
<!-- Slides with image only -->
|
||||
<b-carousel-slide img-src="https://lorempixel.com/1024/480/technics/8/">
|
||||
</b-carousel-slide>
|
||||
|
||||
<!-- Slides with img slot -->
|
||||
<!-- Note the classes .d-block and .img-fluid to prevent browser default image alignment -->
|
||||
<b-carousel-slide>
|
||||
<img slot="img" class="d-block img-fluid w-100" width="1024" height="480"
|
||||
src="https://lorempixel.com/1024/480/technics/5/" alt="image slot">
|
||||
</b-carousel-slide>
|
||||
|
||||
<!-- Slide with blank fluid image to maintain slide aspect ratio -->
|
||||
<b-carousel-slide caption="Blank Image" img-blank img-alt="Blank image">
|
||||
<p>
|
||||
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse
|
||||
eros felis, tincidunt a tincidunt eget, convallis vel est. Ut pellentesque
|
||||
ut lacus vel interdum.
|
||||
</p>
|
||||
</b-carousel-slide>
|
||||
|
||||
</b-carousel>
|
||||
|
||||
<p class="mt-4">
|
||||
Slide #: {{ slide }}<br>
|
||||
Sliding: {{ sliding }}
|
||||
</p>
|
||||
|
||||
</div>
|
||||
</b-card>
|
||||
</b-col>
|
||||
</b-row>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'carousels',
|
||||
data () {
|
||||
return {
|
||||
slide: 0,
|
||||
sliding: null
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
onSlideStart (slide) {
|
||||
this.sliding = true
|
||||
},
|
||||
onSlideEnd (slide) {
|
||||
this.sliding = false
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
@@ -0,0 +1,195 @@
|
||||
<template>
|
||||
<div class="wrapper">
|
||||
<div class="animated fadeIn">
|
||||
<b-row>
|
||||
<b-col cols="12" md="6">
|
||||
<b-card
|
||||
header-tag="header"
|
||||
footer-tag="footer">
|
||||
<div slot="header">
|
||||
<i class="fa fa-align-justify"></i> <strong>Bootstrap Collapse</strong>
|
||||
<div class="card-actions">
|
||||
<a href="https://bootstrap-vue.js.org/docs/components/collapse" target="_blank"><small class="text-muted">docs</small></a>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<b-btn v-b-toggle.collapse1 variant="primary">Toggle Collapse</b-btn>
|
||||
<b-collapse id="collapse1" class="mt-2">
|
||||
<b-card>
|
||||
<p class="card-text">Collapse contents Here</p>
|
||||
<b-btn v-b-toggle.collapse1_inner size="sm">Toggle Inner Collapse</b-btn>
|
||||
<b-collapse id=collapse1_inner class="mt-2">
|
||||
<b-card>Hello!</b-card>
|
||||
</b-collapse>
|
||||
</b-card>
|
||||
</b-collapse>
|
||||
</div>
|
||||
</b-card>
|
||||
</b-col>
|
||||
<b-col cols="12" md="6">
|
||||
<b-card
|
||||
header-tag="header"
|
||||
footer-tag="footer">
|
||||
<div slot="header">
|
||||
<i class="fa fa-align-justify"></i> <strong>Collapse</strong> <small>with<code>v-b-toggle</code>directive</small>
|
||||
</div>
|
||||
<div>
|
||||
<!-- Using modifiers -->
|
||||
<b-btn v-b-toggle.collapse2 class="m-1">Toggle Collapse</b-btn>
|
||||
|
||||
<!-- Using value -->
|
||||
<b-btn v-b-toggle="'collapse2'" class="m-1">Toggle Collapse</b-btn>
|
||||
|
||||
<!-- element to collapse -->
|
||||
<b-collapse id="collapse2">
|
||||
<b-card>
|
||||
I am collapsible content!
|
||||
</b-card>
|
||||
</b-collapse>
|
||||
</div>
|
||||
</b-card>
|
||||
</b-col>
|
||||
</b-row>
|
||||
<b-row>
|
||||
<b-col cols="12" md="6">
|
||||
<b-card
|
||||
header-tag="header"
|
||||
footer-tag="footer">
|
||||
<div slot="header">
|
||||
<i class="fa fa-align-justify"></i> <strong>Collapse</strong> <small>with<code>visibility</code></small>
|
||||
</div>
|
||||
<div>
|
||||
<b-btn v-b-toggle.collapse3 class="m-1">Toggle Collapse</b-btn>
|
||||
<b-collapse visible id="collapse3">
|
||||
<b-card>
|
||||
I should start open!
|
||||
</b-card>
|
||||
</b-collapse>
|
||||
</div>
|
||||
</b-card>
|
||||
</b-col>
|
||||
<b-col cols="12" md="6">
|
||||
<b-card
|
||||
header-tag="header"
|
||||
footer-tag="footer">
|
||||
<div slot="header">
|
||||
<i class="fa fa-align-justify"></i> <strong>Collapse</strong> <small>with<code>v-model</code></small>
|
||||
</div>
|
||||
<div>
|
||||
<b-btn @click="showCollapse = !showCollapse"
|
||||
:class="showCollapse ? 'collapsed' : null"
|
||||
aria-controls="collapse4"
|
||||
:aria-expanded="showCollapse ? 'true' : 'false'">
|
||||
Toggle Collapse
|
||||
</b-btn>
|
||||
<b-collapse class="mt-2" v-model="showCollapse" id="collapse4">
|
||||
<b-card>
|
||||
I should start open!
|
||||
</b-card>
|
||||
</b-collapse>
|
||||
</div>
|
||||
</b-card>
|
||||
</b-col>
|
||||
</b-row>
|
||||
<b-row>
|
||||
<b-col cols="12" md="6">
|
||||
<b-card
|
||||
header-tag="header"
|
||||
footer-tag="footer">
|
||||
<div slot="header">
|
||||
<i class="fa fa-align-justify"></i> <strong>Collapse</strong> <small>multiple elements</small>
|
||||
</div>
|
||||
<div>
|
||||
<!-- Single button triggers two b-collapse components -->
|
||||
<b-btn v-b-toggle.collapseA.collapseB>Toggle Both Collapse A and B</b-btn>
|
||||
|
||||
<!-- elements to collapse -->
|
||||
<b-collapse id="collapseA" class="mt-2">
|
||||
<b-card>
|
||||
I am collapsable content A!
|
||||
</b-card>
|
||||
</b-collapse>
|
||||
<b-collapse id="collapseB" class="mt-2">
|
||||
<b-card>
|
||||
I am collapsable content B!
|
||||
</b-card>
|
||||
</b-collapse>
|
||||
</div>
|
||||
</b-card>
|
||||
</b-col>
|
||||
<b-col cols="12" md="6">
|
||||
<b-card
|
||||
header-tag="header"
|
||||
footer-tag="footer">
|
||||
<div slot="header">
|
||||
<i class="fa fa-align-justify"></i> <strong>Collapse</strong><small><code>accordion</code>support</small>
|
||||
</div>
|
||||
<div role="tablist">
|
||||
<b-card no-body class="mb-1">
|
||||
<b-card-header header-tag="header" class="p-1" role="tab">
|
||||
<b-btn block href="#" v-b-toggle.accordion1 variant="info">Accordion 1</b-btn>
|
||||
</b-card-header>
|
||||
<b-collapse id="accordion1" visible accordion="my-accordion" role="tabpanel">
|
||||
<b-card-body>
|
||||
<p class="card-text">
|
||||
I start opened because <code>visible</code> is <code>true</code>
|
||||
</p>
|
||||
<p class="card-text">
|
||||
{{ text }}
|
||||
</p>
|
||||
</b-card-body>
|
||||
</b-collapse>
|
||||
</b-card>
|
||||
<b-card no-body class="mb-1">
|
||||
<b-card-header header-tag="header" class="p-1" role="tab">
|
||||
<b-btn block href="#" v-b-toggle.accordion2 variant="info">Accordion 2</b-btn>
|
||||
</b-card-header>
|
||||
<b-collapse id="accordion2" accordion="my-accordion" role="tabpanel">
|
||||
<b-card-body>
|
||||
<p class="card-text">
|
||||
{{ text }}
|
||||
</p>
|
||||
</b-card-body>
|
||||
</b-collapse>
|
||||
</b-card>
|
||||
<b-card no-body class="mb-1">
|
||||
<b-card-header header-tag="header" class="p-1" role="tab">
|
||||
<b-btn block href="#" v-b-toggle.accordion3 variant="info">Accordion 3</b-btn>
|
||||
</b-card-header>
|
||||
<b-collapse id="accordion3" accordion="my-accordion" role="tabpanel">
|
||||
<b-card-body>
|
||||
<p class="card-text">
|
||||
{{ text }}
|
||||
</p>
|
||||
</b-card-body>
|
||||
</b-collapse>
|
||||
</b-card>
|
||||
</div>
|
||||
</b-card>
|
||||
</b-col>
|
||||
|
||||
</b-row>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'collapses',
|
||||
data () {
|
||||
return {
|
||||
showCollapse: true,
|
||||
text: `
|
||||
Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry
|
||||
richardson ad squid. 3 wolf moon officia aute, non cupidatat skateboard dolor
|
||||
brunch. Food truck quinoa nesciunt laborum eiusmod. Brunch 3 wolf moon
|
||||
tempor, sunt aliqua put a bird on it squid single-origin coffee nulla
|
||||
assumenda shoreditch et. Nihil anim keffiyeh helvetica, craft beer labore
|
||||
wes anderson cred nesciunt sapiente ea proident. Ad vegan excepteur butcher
|
||||
vice lomo. Leggings occaecat craft beer farm-to-table, raw denim aesthetic
|
||||
synth nesciunt you probably haven't heard of them accusamus labore VHS.
|
||||
`
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
File diff suppressed because it is too large
Load Diff
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user