diff --git a/assets/javascripts/app/settings.coffee b/assets/javascripts/app/settings.coffee index a2aad287..f9b26552 100644 --- a/assets/javascripts/app/settings.coffee +++ b/assets/javascripts/app/settings.coffee @@ -1,6 +1,7 @@ class app.Settings DOCS_KEY = 'docs' DARK_KEY = 'dark' + SEPIA_KEY = 'sepia' LAYOUT_KEY = 'layout' SIZE_KEY = 'size' TIPS_KEY = 'tips' @@ -57,6 +58,10 @@ class app.Settings @store.set DARK_KEY, !!value return + setSepia: (value) -> + @store.set SEPIA_KEY, !!value + return + setLayout: (name, enable) -> layout = (@store.get(LAYOUT_KEY) || '').split(' ') $.arrayDelete(layout, '') diff --git a/assets/javascripts/templates/sidebar_tmpl.coffee b/assets/javascripts/templates/sidebar_tmpl.coffee index f37dabcc..d48a3d13 100644 --- a/assets/javascripts/templates/sidebar_tmpl.coffee +++ b/assets/javascripts/templates/sidebar_tmpl.coffee @@ -68,8 +68,18 @@ sidebarFooter = (html) -> """
""" templates.sidebarSettings = -> sidebarFooter """ - + + + + """ templates.sidebarSave = -> diff --git a/assets/javascripts/views/layout/document.coffee b/assets/javascripts/views/layout/document.coffee index 69b513a1..11bea88d 100644 --- a/assets/javascripts/views/layout/document.coffee +++ b/assets/javascripts/views/layout/document.coffee @@ -38,6 +38,20 @@ class app.views.Document extends app.View app.appCache?.updateInBackground() return + toggleColor: (theme) -> + # TODO + switch theme + when "dark" then newcss="/assets/application-dark.css" + when "sepia" then newcss="/assets/application-sepia.css" + when "default" then newcss="/assets/application.css" + else newcss="/assets/application.css" + css = $('link[rel="stylesheet"][data-alt]') + css.setAttribute('href', newcss) + app.settings.setDark(newcss.indexOf('dark') > 0) + app.settings.setSepia(newcss.indexOf('sepia') > 0) + app.appCache?.updateInBackground() + return + toggleLayout: -> wantsMaxWidth = !app.el.classList.contains(MAX_WIDTH_CLASS) app.el.classList[if wantsMaxWidth then 'add' else 'remove'](MAX_WIDTH_CLASS) diff --git a/assets/javascripts/views/sidebar/sidebar.coffee b/assets/javascripts/views/sidebar/sidebar.coffee index 96c1f87a..ecb89865 100644 --- a/assets/javascripts/views/sidebar/sidebar.coffee +++ b/assets/javascripts/views/sidebar/sidebar.coffee @@ -90,6 +90,17 @@ class app.views.Sidebar extends app.View @el.scrollTop = 0 return + hideAssetsMenu: -> + console.log("HIDE COLOR MENU") + dropdowns = document.getElementsByClassName("dropdown-content") + i = 0 + while i < dropdowns.length + openDropdown = dropdowns[i] + if openDropdown.classList.contains('show') + openDropdown.classList.remove 'show' + i++ + return + onFocus: (event) => $.scrollTo event.target, @el, 'continuous', bottomGap: 2 unless event.target is @el return @@ -99,10 +110,15 @@ class app.views.Sidebar extends app.View if event.target.hasAttribute? 'data-reset-list' $.stopEvent(event) @reset() + else if event.target.hasAttribute? 'data-theme' + $.stopEvent(event) + # document.activeElement?.blur() + document.getElementById("myDropdown").classList.toggle("show"); else if event.target.hasAttribute? 'data-light' $.stopEvent(event) document.activeElement?.blur() - app.document.toggleLight() + app.document.toggleColor(event.target.getAttribute('data-style')) + @hideAssetsMenu() else if event.target.hasAttribute? 'data-layout' $.stopEvent(event) document.activeElement?.blur() @@ -116,6 +132,8 @@ class app.views.Sidebar extends app.View @showDocPicker() else if @view is @docPicker @showDocList() unless $.hasChild @el, event.target + else if !event.target.matches('.dropbtn') + @hideAssetsMenu() return onAltR: => diff --git a/assets/stylesheets/application-sepia.css.scss b/assets/stylesheets/application-sepia.css.scss new file mode 100644 index 00000000..ef1990e7 --- /dev/null +++ b/assets/stylesheets/application-sepia.css.scss @@ -0,0 +1,94 @@ +//= depend_on icons.png +//= depend_on icons@2x.png +//= depend_on docs.png +//= depend_on docs@2x.png + +//= require vendor/open-sans + +/*! + * Copyright 2013-2016 Thibaut Courouble and other contributors + * + * This source code is licensed under the terms of the Mozilla + * Public License, v. 2.0, a copy of which may be obtained at: + * http://mozilla.org/MPL/2.0/ + */ + +@import 'global/variables-sepia', + 'global/icons', + 'global/classes', + 'global/base'; + +@import 'components/app', + 'components/header', + 'components/notif', + 'components/sidebar', + 'components/content', + 'components/page', + 'components/fail', + 'components/path', + 'components/notice', + 'components/prism', + 'components/mobile'; + +@import 'pages/simple', + 'pages/angular', + 'pages/angularjs', + 'pages/apache', + 'pages/async', + 'pages/bootstrap', + 'pages/c', + 'pages/cakephp', + 'pages/clojure', + 'pages/coffeescript', + 'pages/cordova', + 'pages/crystal', + 'pages/d3', + 'pages/dojo', + 'pages/drupal', + 'pages/elixir', + 'pages/ember', + 'pages/erlang', + 'pages/express', + 'pages/git', + 'pages/github', + 'pages/go', + 'pages/haskell', + 'pages/jquery', + 'pages/knockout', + 'pages/kotlin', + 'pages/laravel', + 'pages/love', + 'pages/lua', + 'pages/mdn', + 'pages/meteor', + 'pages/modernizr', + 'pages/moment', + 'pages/nginx', + 'pages/node', + 'pages/npm', + 'pages/perl', + 'pages/phalcon', + 'pages/phaser', + 'pages/php', + 'pages/phpunit', + 'pages/postgres', + 'pages/ramda', + 'pages/rdoc', + 'pages/react', + 'pages/redis', + 'pages/requirejs', + 'pages/rethinkdb', + 'pages/rfc', + 'pages/rubydoc', + 'pages/rust', + 'pages/socketio', + 'pages/sphinx', + 'pages/sphinx_simple', + 'pages/support_tables', + 'pages/tcl_tk', + 'pages/tensorflow', + 'pages/underscore', + 'pages/vagrant', + 'pages/vue', + 'pages/yard', + 'pages/yii'; diff --git a/assets/stylesheets/components/_sidebar.scss b/assets/stylesheets/components/_sidebar.scss index 61dda752..500e43d2 100644 --- a/assets/stylesheets/components/_sidebar.scss +++ b/assets/stylesheets/components/_sidebar.scss @@ -501,3 +501,53 @@ &:before { @extend %icon-check; } } } + + + + + /* Dropdown Button */ +/*.dropbtn { + background-color: #4CAF50; + color: white; + padding: 16px; + font-size: 16px; + border: none; + cursor: pointer; +}*/ + +/* Dropdown button on hover & focus */ +/*.dropbtn:hover, .dropbtn:focus { + background-color: #3e8e41; +}*/ + +/* The container