diff --git a/frappe/public/build.json b/frappe/public/build.json index 717006256f..c4908806ce 100644 --- a/frappe/public/build.json +++ b/frappe/public/build.json @@ -149,6 +149,7 @@ "public/js/frappe/ui/toolbar/bookmarks.js", "public/js/frappe/ui/toolbar/about.js", "public/js/frappe/ui/toolbar/navbar.html", + "public/js/frappe/ui/toolbar/left_sidebar.html", "public/js/frappe/ui/toolbar/toolbar.js", "public/js/frappe/ui/editor.js", diff --git a/frappe/public/css/bootstrap.css b/frappe/public/css/bootstrap.css index ca80d3bd63..c05e2f2432 100644 --- a/frappe/public/css/bootstrap.css +++ b/frappe/public/css/bootstrap.css @@ -4372,8 +4372,8 @@ select[multiple].input-group-sm > .input-group-btn > .btn { } } .navbar-default { - background-color: rgba(241, 244, 248, .7); - border-color: rgba(231, 236, 239, .7); + background-color: #f5f7fa; + border-color: #ebeff2; } .navbar-default .navbar-brand { color: #6c7680; @@ -4398,7 +4398,7 @@ select[multiple].input-group-sm > .input-group-btn > .btn { .navbar-default .navbar-nav > .active > a:hover, .navbar-default .navbar-nav > .active > a:focus { color: #555; - background-color: rgba(219, 227, 237, .7); + background-color: #dfe5ef; } .navbar-default .navbar-nav > .disabled > a, .navbar-default .navbar-nav > .disabled > a:hover, @@ -4418,13 +4418,13 @@ select[multiple].input-group-sm > .input-group-btn > .btn { } .navbar-default .navbar-collapse, .navbar-default .navbar-form { - border-color: rgba(231, 236, 239, .7); + border-color: #ebeff2; } .navbar-default .navbar-nav > .open > a, .navbar-default .navbar-nav > .open > a:hover, .navbar-default .navbar-nav > .open > a:focus { color: #555; - background-color: rgba(219, 227, 237, .7); + background-color: #dfe5ef; } @media (max-width: 767px) { .navbar-default .navbar-nav .open .dropdown-menu > li > a { @@ -4439,7 +4439,7 @@ select[multiple].input-group-sm > .input-group-btn > .btn { .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover, .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus { color: #555; - background-color: rgba(219, 227, 237, .7); + background-color: #dfe5ef; } .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a, .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover, diff --git a/frappe/public/css/desktop.css b/frappe/public/css/desktop.css index b9df5feb0b..6f17a2b550 100644 --- a/frappe/public/css/desktop.css +++ b/frappe/public/css/desktop.css @@ -1,3 +1,8 @@ +body[data-route=""] .navbar-default, +body[data-route="desktop"] .navbar-default { + background-color: rgba(255, 255, 255, 0.5); + border-color: transparent; +} #page-desktop { min-width: 100%; padding-top: 80px; diff --git a/frappe/public/css/mobile.css b/frappe/public/css/mobile.css index 523465cdac..e14bd2c9aa 100644 --- a/frappe/public/css/mobile.css +++ b/frappe/public/css/mobile.css @@ -1,4 +1,4 @@ -@media screen and (max-width: 767px) { +@media (max-width: 767px) { .layout-main > div[class^="col-sm-"], .form-section { padding-left: 0px; @@ -86,35 +86,36 @@ } .offcanvas, .page-head, - .sidebar-offcanvas-right, - .sidebar-offcanvas-left, + .sidebar-right, + .sidebar-left, .navbar-fixed-top { -webkit-transition: 0.25s; -o-transition: 0.25s; transition: 0.25s; } .offcanvas { - position: absolute; + position: fixed; left: 0; right: 0; top: 0; bottom: 0; + overflow-y: auto; } .offcanvas.active-left, .offcanvas.active-left .page-head, .offcanvas.active-left .navbar-fixed-top { left: 75%; /* 9 columns */ - right: -25%; + right: -75%; } .offcanvas.active-right, .offcanvas.active-right .page-head, .offcanvas.active-right .navbar-fixed-top { right: 75%; /* 9 columns */ - left: -25%; + left: -75%; } - .offcanvas .sidebar-offcanvas { + .offcanvas .sidebar { position: fixed; top: 0; bottom: 0; @@ -122,19 +123,85 @@ /* 9 columns */ overflow-x: hidden; overflow-y: auto; + font-size: 12px; } - .offcanvas .sidebar-offcanvas-right { + .offcanvas .sidebar-right { right: -75%; /* 9 columns */ + border-left: 1px solid #d1d8dd; } - .offcanvas .sidebar-offcanvas-left { + .offcanvas .sidebar-left { left: -75%; /* 9 columns */ + border-right: 1px solid #d1d8dd; } - .offcanvas.active-left .sidebar-offcanvas-left { + .offcanvas.active-left .sidebar-left { left: 0; } - .offcanvas.active-right .sidebar-offcanvas-right { + .offcanvas.active-right .sidebar-right { right: 0; } + .offcanvas .sidebar ul { + list-style: outside none none; + padding-left: 0px; + margin-top: -1px; + } + .offcanvas .sidebar-menu li > a { + padding: 12px 14px; + display: block; + clear: both; + whitespace: nowrap; + transition: 0.2s; + } + .offcanvas .sidebar li > a:hover, + .offcanvas .sidebar li > a:focus, + .offcanvas .sidebar li > a:active { + background-color: #f0f4f7; + } + .sidebar .divider { + height: 1px; + overflow: hidden; + background-color: #ebeff2; + } + .sidebar .form-group { + margin-bottom: 0px; + } + #sidebar-search { + height: 27px; + } + .sidebar .navbar-search-icon { + float: right; + color: #6c7680; + font-size: inherit; + position: relative; + right: 7px; + top: -21px; + height: 0; + } + .sidebar form { + padding: 7px; + } + .sidebar .main-menu { + position: absolute; + left: 0; + right: 0; + top: 0; + bottom: 41px; + overflow-y: auto; + } + .sidebar .user-menu { + padding: 9px 14px; + background-color: #f5f7fa; + position: absolute; + left: 0; + bottom: 0; + right: 0; + } + .sidebar .user-menu, + .sidebar .user-menu .octicon { + color: #6c7680; + } + .sidebar .user-menu img { + margin-top: -1px; + } } diff --git a/frappe/public/css/navbar.css b/frappe/public/css/navbar.css index f67d2ac6c0..fa98c44eb2 100644 --- a/frappe/public/css/navbar.css +++ b/frappe/public/css/navbar.css @@ -57,8 +57,11 @@ .navbar .badge { font-weight: normal; } +#sidebar-notification > li > a:hover .badge, #navbar-notification > li > a:hover .badge, +#sidebar-notification > li > a:focus .badge, #navbar-notification > li > a:focus .badge, +#sidebar-notification > li > a:active .badge, #navbar-notification > li > a:active .badge { background-color: #D8DFE5; } diff --git a/frappe/public/js/frappe/ui/toolbar/awesome_bar.js b/frappe/public/js/frappe/ui/toolbar/awesome_bar.js index 76f581e6ca..20ccbce25c 100644 --- a/frappe/public/js/frappe/ui/toolbar/awesome_bar.js +++ b/frappe/public/js/frappe/ui/toolbar/awesome_bar.js @@ -18,7 +18,7 @@ frappe.ui.toolbar.Search = frappe.ui.toolbar.SelectorDialog.extend({ frappe.search = { setup: function() { - $("#navbar-search").autocomplete({ + $("#navbar-search, #sidebar-search").autocomplete({ minLength: 0, source: function(request, response) { var txt = strip(request.term); diff --git a/frappe/public/js/frappe/ui/toolbar/left_sidebar.html b/frappe/public/js/frappe/ui/toolbar/left_sidebar.html new file mode 100644 index 0000000000..0f10f1abf7 --- /dev/null +++ b/frappe/public/js/frappe/ui/toolbar/left_sidebar.html @@ -0,0 +1,35 @@ +
+ diff --git a/frappe/public/js/frappe/ui/toolbar/toolbar.js b/frappe/public/js/frappe/ui/toolbar/toolbar.js index 22e4bd1973..3d10757440 100644 --- a/frappe/public/js/frappe/ui/toolbar/toolbar.js +++ b/frappe/public/js/frappe/ui/toolbar/toolbar.js @@ -5,6 +5,7 @@ frappe.ui.toolbar.Toolbar = Class.extend({ init: function() { var header = $('header').append(frappe.render_template("navbar", {})); + var sidebar = $('.offcanvas .sidebar-left').append(frappe.render_template("left_sidebar", {})); header.find(".toggle-sidebar").on("click", function() { $(".offcanvas").toggleClass("active-left").removeClass("active-right"); @@ -65,54 +66,69 @@ frappe.ui.toolbar.update_notifications = function() { var doctypes = keys(frappe.boot.notification_info.open_count_doctype).sort(); var modules = keys(frappe.boot.notification_info.open_count_module).sort(); - $("#navbar-notification").empty(); + var navbar_notification = $("#navbar-notification").empty(); + var sidebar_notification = $("#sidebar-notification").empty(); + + $.each(modules, function(i, module) { var count = frappe.boot.notification_info.open_count_module[module]; if(count) { - $(repl('