From 5271e28c3610c355d44a9daee9b1afff8ca51901 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=81ukasz=20Holeczek?= Date: Fri, 22 Sep 2017 11:09:17 +0200 Subject: [PATCH] v1.0.0 --- README.md | 8 +- Vue_Full_Project/gulpfile.js | 22 - Vue_Full_Project/package.json | 46 +- Vue_Full_Project/scss/core/_breadcrumb.scss | 2 +- .../scss/core/_dropdown-menu-right.scss | 7 + Vue_Full_Project/scss/core/_layout.scss | 52 +- Vue_Full_Project/scss/core/_navbar.scss | 2 +- Vue_Full_Project/scss/core/_rtl.scss | 64 +- Vue_Full_Project/scss/core/_sidebar.scss | 523 +- Vue_Full_Project/scss/core/_temp.scss | 13 - Vue_Full_Project/scss/core/_variables.scss | 30 +- Vue_Full_Project/scss/style.scss | 8 +- Vue_Full_Project/src/App.vue | 16 +- Vue_Full_Project/src/components/Sidebar.vue | 32 +- .../src/components/SidebarFooter.vue | 9 + .../src/components/SidebarForm.vue | 9 + .../src/components/SidebarHeader.vue | 9 + .../src/components/SidebarNavLink.vue | 2 +- Vue_Full_Project/src/views/Dashboard.vue | 8 +- Vue_Full_Project/src/views/Widgets.vue | 32 +- .../src/views/components/Forms.vue | 2 +- Vue_Full_Project/static/css/style.css | 8698 ----------------- Vue_Starter/gulpfile.js | 22 - Vue_Starter/package.json | 46 +- Vue_Starter/scss/core/_breadcrumb.scss | 2 +- .../scss/core/_dropdown-menu-right.scss | 7 + Vue_Starter/scss/core/_layout.scss | 52 +- Vue_Starter/scss/core/_navbar.scss | 2 +- Vue_Starter/scss/core/_rtl.scss | 64 +- Vue_Starter/scss/core/_sidebar.scss | 523 +- Vue_Starter/scss/core/_temp.scss | 13 - Vue_Starter/scss/core/_variables.scss | 30 +- Vue_Starter/scss/style.scss | 8 +- Vue_Starter/src/App.vue | 17 +- Vue_Starter/src/components/Sidebar.vue | 34 +- Vue_Starter/src/components/SidebarFooter.vue | 9 + Vue_Starter/src/components/SidebarForm.vue | 9 + Vue_Starter/src/components/SidebarHeader.vue | 9 + .../src/components/SidebarNavTitle.vue | 19 +- Vue_Starter/static/css/style.css | 8698 ----------------- package.json | 4 +- 41 files changed, 906 insertions(+), 18256 deletions(-) delete mode 100644 Vue_Full_Project/gulpfile.js create mode 100644 Vue_Full_Project/scss/core/_dropdown-menu-right.scss create mode 100644 Vue_Full_Project/src/components/SidebarFooter.vue create mode 100644 Vue_Full_Project/src/components/SidebarForm.vue create mode 100644 Vue_Full_Project/src/components/SidebarHeader.vue delete mode 100644 Vue_Full_Project/static/css/style.css delete mode 100644 Vue_Starter/gulpfile.js create mode 100644 Vue_Starter/scss/core/_dropdown-menu-right.scss create mode 100644 Vue_Starter/src/components/SidebarFooter.vue create mode 100644 Vue_Starter/src/components/SidebarForm.vue create mode 100644 Vue_Starter/src/components/SidebarHeader.vue delete mode 100644 Vue_Starter/static/css/style.css diff --git a/README.md b/README.md index 57f5e804..f3cb63ef 100644 --- a/README.md +++ b/README.md @@ -12,11 +12,11 @@ Please help us on [Product Hunt](https://www.producthunt.com/posts/coreui-open-s Why I decided to create CoreUI? Please read this article: [Jack of all trades, master of none. Why Boostrap Admin Templates suck.](https://medium.com/@lukaszholeczek/jack-of-all-trades-master-of-none-5ea53ef8a1f#.7eqx1bcd8) -CoreUI is Open Source Vue & Bootstrap Admin Template. CoreUI is not just another Admin Template. It goes way beyond hitherto admin templates thanks to transparent code and file structure. And if that's not enough, let's just add the CoreUI consists bunch of unique features and over 1000 high quality icons. +CoreUI is an Open Source Vue & Bootstrap Admin Template. But CoreUI is not just another Admin Template. It goes way beyond hitherto admin templates thanks to transparent code and file structure. And if that's not enough, let’s just add that CoreUI consists bunch of unique features and over 1000 high quality icons. -CoreUI based on Bootstrap 4 and offers 6 versions: HTML5, AJAX, AngularJS, Angular 2, React.js & Vue.js. +CoreUI is based on Bootstrap 4 and offers 6 versions: [HTML5 AJAX](https://github.com/mrholek/CoreUI-Free-Bootstrap-Admin-Template), [HTML5 Static](https://github.com/mrholek/CoreUI-Free-Bootstrap-Admin-Template), [AngularJS](https://github.com/mrholek/CoreUI-AngularJS), [Angular 2+](https://github.com/mrholek/CoreUI-Angular), [React.js](https://github.com/mrholek/CoreUI-React) & [Vue.js](https://github.com/mrholek/CoreUI-Vue). -CoreUI is meant to be the UX game changer. Pure & transparent code is devoid of redundant components, so the app is light enough to offer ultimate user experience. This means also mobile devices, where the navigation is the same easy and intuitive as in desktop or laptop. CoreUI Layout API lets you customize your project for almost any device – be it Mobile, Web or WebApp – CoreUI covers them all! +CoreUI is meant to be the UX game changer. Pure & transparent code is devoid of redundant components, so the app is light enough to offer ultimate user experience. This means mobile devices also, where the navigation is just as easy and intuitive as on a desktop or laptop. The CoreUI Layout API lets you customize your project for almost any device – be it Mobile, Web or WebApp – CoreUI covers them all! [![CoreUI Vue Free Bootstrap Admin Template](http://coreui.io/assets/img/coreui.png "CoreUI Vue Free Bootstrap Admin Template")](http://coreui.io) @@ -28,7 +28,7 @@ A fully functional demo is available at [CoreUI](http://coreui.io/) ## What's included -Within the download you'll find the following directories and files, you'll see something like this: +Within the download you'll find the following directories and files: ``` CoreUI-Vue/ diff --git a/Vue_Full_Project/gulpfile.js b/Vue_Full_Project/gulpfile.js deleted file mode 100644 index 563c3652..00000000 --- a/Vue_Full_Project/gulpfile.js +++ /dev/null @@ -1,22 +0,0 @@ -'use strict' - -var gulp = require('gulp'); -var concat = require('gulp-concat'); -var sass = require('gulp-sass'); - -gulp.task('sass', function () { - return gulp.src('./scss/style.scss') - .pipe(sass().on('error', sass.logError)) - .pipe(concat('style.css')) - .pipe(gulp.dest('./static/css')) - .pipe(sass({outputStyle: 'compressed'})) - .pipe(concat('style.min.css')) - .pipe(gulp.dest('./static/css')); -}); - -// Watching SCSS files -gulp.task('sass:watch', function () { - gulp.watch('./scss/**/*.scss', ['sass']); -}); - -gulp.task('default', ['sass:watch']); diff --git a/Vue_Full_Project/package.json b/Vue_Full_Project/package.json index 656fecd9..c89d3428 100644 --- a/Vue_Full_Project/package.json +++ b/Vue_Full_Project/package.json @@ -1,6 +1,6 @@ { "name": "coreui-vue", - "version": "1.0.0-alpha.6", + "version": "1.0.0", "description": "Open Source Admin Template", "author": "Łukasz Holeczek ", "private": true, @@ -14,18 +14,18 @@ "lint": "eslint --ext .js,.vue src test/unit/specs test/e2e/specs" }, "dependencies": { - "bootstrap-vue": "^0.23.0", - "chart.js": "2.6.0", - "vue": "2.4.2", - "vue-chartjs": "2.8.2", - "vue-router": "2.7.0", + "bootstrap-vue": "1.0.0-beta.7", + "chart.js": "2.7.0", "font-awesome": "^4.7.0", - "simple-line-icons": "^2.4.1" + "simple-line-icons": "^2.4.1", + "vue": "2.4.4", + "vue-chartjs": "2.8.7", + "vue-router": "2.7.0" }, "devDependencies": { - "autoprefixer": "7.1.3", + "autoprefixer": "7.1.4", "babel-core": "6.26.0", - "babel-eslint": "7.2.3", + "babel-eslint": "8.0.0", "babel-loader": "7.1.2", "babel-plugin-transform-runtime": "^6.22.0", "babel-preset-env": "1.6.0", @@ -35,10 +35,10 @@ "connect-history-api-fallback": "^1.3.0", "copy-webpack-plugin": "^4.0.1", "css-loader": "0.28.7", - "eslint": "4.5.0", + "eslint": "4.7.1", "eslint-friendly-formatter": "3.0.0", "eslint-loader": "1.9.0", - "eslint-plugin-html": "3.2.0", + "eslint-plugin-html": "3.2.2", "eslint-plugin-import": "2.7.0", "eslint-plugin-node": "5.1.1", "eslint-config-standard": "10.2.1", @@ -63,30 +63,30 @@ "karma-spec-reporter": "0.0.31", "karma-webpack": "2.0.4", "lolex": "2.1.2", - "mocha": "3.5.0", + "mocha": "3.5.3", "chai": "4.1.2", - "sinon": "3.2.1", + "sinon": "3.3.0", "sinon-chai": "2.13.0", "inject-loader": "3.0.1", - "babel-plugin-istanbul": "4.1.4", + "babel-plugin-istanbul": "4.1.5", "phantomjs-prebuilt": "^2.1.15", - "chromedriver": "2.32.0", + "chromedriver": "2.32.3", "cross-spawn": "^5.0.1", "nightwatch": "0.9.16", - "selenium-server": "3.5.2", + "selenium-server": "3.5.3", "semver": "5.4.1", "shelljs": "0.7.8", "opn": "5.1.0", - "optimize-css-assets-webpack-plugin": "3.1.1", + "optimize-css-assets-webpack-plugin": "3.2.0", "ora": "1.3.0", - "rimraf": "^2.6.0", + "rimraf": "2.6.2", "url-loader": "0.5.9", - "vue-loader": "13.0.4", - "vue-style-loader": "3.0.1", - "vue-template-compiler": "2.4.2", - "webpack": "3.5.5", + "vue-loader": "13.0.5", + "vue-style-loader": "3.0.3", + "vue-template-compiler": "2.4.4", + "webpack": "3.6.0", "webpack-dev-middleware": "1.12.0", - "webpack-hot-middleware": "2.18.2", + "webpack-hot-middleware": "2.19.1", "webpack-merge": "4.1.0", "node-sass": "4.5.3", "sass-loader": "6.0.6" diff --git a/Vue_Full_Project/scss/core/_breadcrumb.scss b/Vue_Full_Project/scss/core/_breadcrumb.scss index 55ece3a6..ef2d2952 100644 --- a/Vue_Full_Project/scss/core/_breadcrumb.scss +++ b/Vue_Full_Project/scss/core/_breadcrumb.scss @@ -1,6 +1,6 @@ .breadcrumb { position: relative; - margin-bottom: 1.5 * $spacer; + margin: $breadcrumb-margin; @include borders($breadcrumb-borders); } diff --git a/Vue_Full_Project/scss/core/_dropdown-menu-right.scss b/Vue_Full_Project/scss/core/_dropdown-menu-right.scss new file mode 100644 index 00000000..eec74e81 --- /dev/null +++ b/Vue_Full_Project/scss/core/_dropdown-menu-right.scss @@ -0,0 +1,7 @@ +// Temp fix for reactstrap +.show { + > .dropdown-menu-right { + right: 0; + left: auto; // Reset the default from `.dropdown-menu` + } +} diff --git a/Vue_Full_Project/scss/core/_layout.scss b/Vue_Full_Project/scss/core/_layout.scss index ad6dda29..263cab56 100644 --- a/Vue_Full_Project/scss/core/_layout.scss +++ b/Vue_Full_Project/scss/core/_layout.scss @@ -11,8 +11,8 @@ app-dashboard, app-root { display: flex; - flex-direction: column; min-height: 100vh; + flex-direction: column; } .app-header { @@ -26,12 +26,12 @@ app-root { .app-body { display: flex; flex-direction: row; - flex-grow: 1; overflow-x: hidden; + flex-grow: 1; .main { - flex: 1; min-width: 0; + flex: 1; } .sidebar { @@ -65,22 +65,22 @@ app-root { // Sidebar // .sidebar-hidden { - .sidebar { margin-left: - $sidebar-width; } } .sidebar-fixed { - .sidebar { position: fixed; + z-index: $zindex-sticky - 1; width: $sidebar-width; - height: 100%; + height: calc(100vh - #{$navbar-height}); + // margin-top: - $navbar-height; - .sidebar-nav { - height: calc(100vh - #{$navbar-height}); - } + // .sidebar-nav { + // height: calc(100vh - #{$navbar-height}); + // } } .main, .app-footer { @@ -88,7 +88,6 @@ app-root { } &.sidebar-hidden { - .main, .app-footer { margin-left: 0; } @@ -99,12 +98,7 @@ app-root { .sidebar { position: fixed; z-index: $zindex-sticky - 1; - height: 100%; - - - .sidebar-nav { - height: calc(100vh - #{$navbar-height}); - } + height: calc(100vh - #{$navbar-height}); } } @@ -115,14 +109,12 @@ app-root { } &.sidebar-hidden { - .sidebar { margin-left: - $sidebar-compact-width; } } &.sidebar-fixed { - .main, .app-footer { margin-left: $sidebar-compact-width; } @@ -132,7 +124,6 @@ app-root { } &.sidebar-hidden { - .main, .app-footer { margin-left: 0; } @@ -143,17 +134,20 @@ app-root { .sidebar-minimized { .sidebar { flex: 0 0 $sidebar-minimized-width; + .sidebar-header, + .sidebar-form, + .sidebar-footer { + display: none; + } } &.sidebar-hidden { - .sidebar { margin-left: - $sidebar-minimized-width; } } &.sidebar-fixed { - .main, .app-footer { margin-left: $sidebar-minimized-width; } @@ -163,7 +157,6 @@ app-root { } &.sidebar-hidden { - .main, .app-footer { margin-left: 0; } @@ -176,14 +169,12 @@ app-root { // Aside Menu // .aside-menu-hidden { - .aside-menu { margin-right: - $aside-menu-width; } } .aside-menu-fixed { - .aside-menu { position: fixed; right: 0; @@ -199,7 +190,6 @@ app-root { } &.aside-menu-hidden { - .main, .app-footer { margin-right: 0; } @@ -223,7 +213,6 @@ app-root { // Breadcrumb // .breadcrumb-fixed { - .main { $breadcrumb-height: 2 * $breadcrumb-padding-y + $font-size-base + 1.5 * $spacer; padding-top: $breadcrumb-height; @@ -283,7 +272,6 @@ app-root { // Footer // .footer-fixed { - .app-footer { position: fixed; bottom: 0; @@ -306,6 +294,9 @@ app-root { .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; } @@ -315,12 +306,13 @@ app-root { // @include media-breakpoint-down(md) { - - .app-header { + .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) { @@ -343,6 +335,7 @@ app-root { .sidebar { position: fixed; + z-index: $zindex-sticky - 1; width: $mobile-sidebar-width; height: 100%; margin-left: - $mobile-sidebar-width; @@ -368,7 +361,6 @@ app-root { } .sidebar-mobile-show { - .sidebar { width: $mobile-sidebar-width; margin-left: 0; diff --git a/Vue_Full_Project/scss/core/_navbar.scss b/Vue_Full_Project/scss/core/_navbar.scss index 8d321e80..db6ace3c 100644 --- a/Vue_Full_Project/scss/core/_navbar.scss +++ b/Vue_Full_Project/scss/core/_navbar.scss @@ -1,7 +1,7 @@ .app-header.navbar { position: relative; - flex-direction: row; height: $navbar-height; + flex-direction: row; padding: 0; margin: 0; background-color: $navbar-bg; diff --git a/Vue_Full_Project/scss/core/_rtl.scss b/Vue_Full_Project/scss/core/_rtl.scss index 22bda316..28db3859 100644 --- a/Vue_Full_Project/scss/core/_rtl.scss +++ b/Vue_Full_Project/scss/core/_rtl.scss @@ -44,20 +44,17 @@ // 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; } @@ -70,20 +67,18 @@ } &.sidebar-hidden { - .sidebar { - margin-left: - $sidebar-minimized-width; + margin-right: - $sidebar-minimized-width; + margin-left: 0; } } &.sidebar-fixed { - .main, .app-footer { - margin-left: $sidebar-minimized-width; + margin-right: $sidebar-minimized-width; } &.sidebar-hidden { - .main, .app-footer { margin-left: 0; } @@ -95,15 +90,13 @@ // Aside Menu // .aside-menu-hidden { - .aside-menu { - // margin-right: 0; + margin-right: 0; margin-left: - $aside-menu-width; } } .aside-menu-fixed { - .aside-menu { right: auto; left: 0; @@ -115,7 +108,6 @@ } &.aside-menu-hidden { - .main, .app-footer { margin-left: 0; } @@ -138,15 +130,12 @@ // Sidebar Menu .sidebar { .sidebar-nav { - direction: ltr; - * { - direction: rtl; - } .nav { .nav-item { .nav-link { - [class^="icon-"], [class*=" icon-"] { - margin-right: -4px; + direction: rtl; + i { + margin: 0 0 0 ($sidebar-nav-link-padding-x / 2); } .badge { float: left; @@ -158,13 +147,14 @@ 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(90deg); + transform: rotate(270deg); } } } @@ -173,6 +163,30 @@ } } + .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 { @@ -249,6 +263,12 @@ 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; @@ -258,10 +278,4 @@ .callout-default { border-right-color: $text-muted; } - - @each $color, $value in $theme-colors { - &.callout-#{$color} { - border-right-color: $value; - } - } } diff --git a/Vue_Full_Project/scss/core/_sidebar.scss b/Vue_Full_Project/scss/core/_sidebar.scss index df649890..2afeb8eb 100644 --- a/Vue_Full_Project/scss/core/_sidebar.scss +++ b/Vue_Full_Project/scss/core/_sidebar.scss @@ -1,7 +1,8 @@ // scss-lint:disable NestingDepth, SelectorDepth .sidebar { + display: flex; + flex-direction: column; padding: $sidebar-padding; - overflow: hidden; color: $sidebar-color; background: $sidebar-bg; @include borders($sidebar-borders); @@ -24,31 +25,47 @@ } } + // 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-button { } - &::-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-track-piece { } - &::-webkit-scrollbar-thumb { height: 50px; background-color: darken($sidebar-bg, 10%); @@ -57,183 +74,170 @@ border-style: solid; border-width: 1px 2px; } - - // &::-webkit-scrollbar-corner { } - - // &::-webkit-resizer { } } .nav { @include sidebar-width($sidebar-borders, $sidebar-width); flex-direction: column !important; + } - .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-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; + } - .divider { - height: 10px; - } + .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 { - position: relative; - margin: 0; - transition: background .3s ease-in-out; + padding: 0; + list-style: none; + } + } - ul { - max-height: 0; - padding: 0; - margin: 0; - overflow-y: hidden; - transition: max-height .3s ease-in-out; + .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; + } - li { - padding: 0; - list-style: none; - } - } + 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; + } - .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; - } + .badge { + float: right; + margin-top: 2px; + } - &:hover { - color: $sidebar-nav-link-hover-color !important; - background: $sidebar-nav-link-hover-bg !important; - @include borders($sidebar-nav-link-hover-borders); + &.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-hover-icon-color; - } - } - - &.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; - } - } - - [class^="icon-"], [class*=" icon-"] { - display: inline-block; - margin-top: -4px; - vertical-align: middle; - } - - i { - 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; - // margin-left: 10px; - } - - &.nav-dropdown-toggle { - - &::before { - position: absolute; - top: ($sidebar-nav-link-padding-y + ($font-size-base / 4)); - right: $sidebar-nav-link-padding-x; - display: block; - width: ($font-size-base); - height: ($font-size-base); - padding: 0; - font-size: $font-size-base; - line-height: ($font-size-base * 3 / 4); - text-align: center; - content: "\2039"; - transition: .3s; - } - } - } - - &.nav-dropdown { - &.open { - background: $sidebar-nav-dropdown-bg; - @include borders($sidebar-nav-dropdown-borders); - @if $enable-sidebar-nav-rounded { - border-radius: $border-radius; - } - > ul, > ol { - // display: inline; - max-height: 1000px; - } - - .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; - } - } - &.nt { - transition: 0s !important; - > ul, > ol { - transition: 0s !important; - } - .nav-link { - &.nav-dropdown-toggle { - - &::before { - transition: 0s !important; - } - } - } - } - } - - .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; - } + i { + color: $sidebar-nav-link-active-icon-color; } } + + &:hover { + color: $sidebar-nav-link-hover-color !important; + background: $sidebar-nav-link-hover-bg !important; + @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; + } + } + } + + // ex. Components + .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.