Browse Source

Change setup from Foundation to Bootstrap

and clear our customizations based on Foundation
pull/202/head
Marcio Mazza 9 years ago
parent
commit
0f4235c7b1
  1. 1
      requirements/requirements.txt
  2. 14
      sapl/settings.py
  3. 1485
      static/styles/_settings.scss
  4. 433
      static/styles/app.scss

1
requirements/requirements.txt

@ -1,4 +1,3 @@
crispy-forms-foundation
Django<1.9 Django<1.9
djangorestframework djangorestframework
django-admin-bootstrapped django-admin-bootstrapped

14
sapl/settings.py

@ -58,7 +58,6 @@ INSTALLED_APPS = (
'djangobower', 'djangobower',
'bootstrap3', # basically for django_admin_bootstrapped 'bootstrap3', # basically for django_admin_bootstrapped
'crispy_forms', 'crispy_forms',
'crispy_forms_foundation',
'sass_processor', 'sass_processor',
) )
@ -159,16 +158,14 @@ MEDIA_URL = '/media/'
DAB_FIELD_RENDERER = \ DAB_FIELD_RENDERER = \
'django_admin_bootstrapped.renderers.BootstrapFieldRenderer' 'django_admin_bootstrapped.renderers.BootstrapFieldRenderer'
CRISPY_TEMPLATE_PACK = 'foundation-5' CRISPY_TEMPLATE_PACK = 'bootstrap3'
CRISPY_ALLOWED_TEMPLATE_PACKS = 'foundation-5' CRISPY_ALLOWED_TEMPLATE_PACKS = 'bootstrap3'
CRISPY_FAIL_SILENTLY = not DEBUG CRISPY_FAIL_SILENTLY = not DEBUG
BOWER_COMPONENTS_ROOT = BASE_DIR.child("bower") BOWER_COMPONENTS_ROOT = BASE_DIR.child("bower")
BOWER_INSTALLED_APPS = ( BOWER_INSTALLED_APPS = (
'foundation', 'bootstrap-sass',
'foundation-datepicker',
'components-font-awesome', 'components-font-awesome',
'foundation-icon-fonts',
'tinymce', 'tinymce',
'jquery-ui', 'jquery-ui',
'jquery-runner', 'jquery-runner',
@ -177,10 +174,11 @@ BOWER_INSTALLED_APPS = (
) )
# Additional search paths for SASS files when using the @import statement # Additional search paths for SASS files when using the @import statement
SASS_PROCESSOR_INCLUDE_DIRS = ( SASS_PROCESSOR_INCLUDE_DIRS = (BOWER_COMPONENTS_ROOT.child(
BOWER_COMPONENTS_ROOT.child('bower_components', 'foundation', 'scss'), 'bower_components', 'bootstrap-sass', 'assets', 'stylesheets'),
) )
# FIXME update cripy-forms and remove this
# hack to suppress many annoying warnings from crispy_forms # hack to suppress many annoying warnings from crispy_forms
# see sapl.temp_suppress_crispy_form_warnings # see sapl.temp_suppress_crispy_form_warnings
LOGGING = SUPRESS_CRISPY_FORM_WARNINGS_LOGGING LOGGING = SUPRESS_CRISPY_FORM_WARNINGS_LOGGING

1485
static/styles/_settings.scss

File diff suppressed because it is too large

433
static/styles/app.scss

@ -1,432 +1 @@
@import "settings"; @import "bootstrap";
@import "normalize";
@import "foundation";
@import url(http://fonts.googleapis.com/css?family=Open+Sans:400,700,400italic,700italic);
$top-bar-dropdown-radius: $global-radius;
// Foundation Restyling
// - - - - - - - - - - - - - - - - - - - - - - - - -
// Moving the mobile menu icon to the right
.title-area.left {
.toggle-topbar {
right: initial;
}
// Making sure dropdowns on mobile are not rendered on top of the top bar.
@media #{$small-only} {
~ .top-bar-section {
.has-dropdown.moved > .dropdown,
.dropdown {
top: $topbar-height;
}
}
}
}
// Restyles to foundation top bar menu, in order to behave aesthetically different
/*
XXX
Is there a better way to implement these styles using best practices without the
need to override this much of foundation? Or at least avoid too much nesting and
specificity (better use of BEM and ITCSS)?
*/
.nav {
@media #{$topbar-media-query} {
.has-dropdown {
// Default values for dropdowns, while also being hidden.
.dropdown {
// Border-radius for the first and last dropdown items. We don't style the parent dropdown, as the items overflows it.
@include radius(rem-calc($top-bar-dropdown-radius));
// Second child here actually targets the first item, since Foundation JS injects a hidden li before it for a mobile back button.
> li:nth-child(2), > li:nth-child(2) > a {
@include side-radius(top, rem-calc($top-bar-dropdown-radius));
}
> li:last-child, li:last-child > a {
@include side-radius(bottom, rem-calc($top-bar-dropdown-radius));
}
box-shadow: 0 10px 18px rgba(0, 0, 0, 0.19),
0 2px 6px rgba(0, 0, 0, 0.23);
// For the transition effect.
opacity: 0;
// Show the dropdown accurately while it animates.
width: auto;
// This will allow the triangle pip to be visible above the dropdown.
overflow: visible;
// This ensures we won't accidentally trigger the dropdown if we hover on it, while the animation to default values is run.
pointer-events: none;
transform: translateY(rem-calc(25px));
// This transition is actually for when we hover-out of the dropdown.
transition: transform 0.1s linear,
opacity 0.1s linear,
clip 0s 0.3s;
// The triangle pip
&::before {
@include css-triangle(rem-calc(6px), $topbar-dropdown-bg, bottom);
position: absolute;
top: rem-calc(-12px);
left: rem-calc(15px);
}
// This bridges the gap between the top bar and a dropdown.
&::after {
content: "";
position: absolute;
z-index: -1;
left: 0;
top: rem-calc(-25px);
height: rem-calc(25px);
width: 100%;
// This transition is for hover-on.
transition: all 0.3s cubic-bezier(0.55,0,0.1,1);
}
}
// When hovering
&.hover, &.not-click:hover {
> .dropdown {
opacity: 1;
// Here we override the default clip value ("auto") for an arbitrary large size that fits any dropdown,
// as this now makes it possible to apply a transition effect for it.
clip: rect(-100px, 2000px, 2000px, -100px);
transform: translateY(rem-calc(10px));
// Reverting back our pointer-events.
pointer-events: auto;
// Animating with a beautiful cubic-bezier curve, or Google's "Swift out" easing :)
transition: transform 0.3s cubic-bezier(0.55,0,0.1,1),
opacity 0.3s cubic-bezier(0.55,0,0.1,1),
// Here we make sure the clipping is set before any other transition.
clip 0s 0s;
// Don't forget to properly animate our bridge, so it keeps only between our gap.
&::after {
top: rem-calc(-10px);
}
}
}
}
}
}
// Our app
// - - - - - - - - - - - - - - - - - - - - - - - - -
@-webkit-keyframes fadeIn {
0% {opacity: 0;}
100% {opacity: 1;}
}
@keyframes fadeIn {
0% {opacity: 0;}
100% {opacity: 1;}
}
html, body {
margin: 0;
padding: 0;
height: 100%;
}
h1, h2, h3, h4, h5, h6, form, dl, dt, dd, p, div, img, a {
margin: 0;
padding: 0;
}
img {
border: none;
}
a {
background-color: transparent;
color: $primary-color;
text-decoration: none;
transition: 0.2s;
}
h1 {
color: $primary-color;
font-size: 120%;
}
h2 {
color: $primary-color;
font-size: 110%;
}
h1 a, h2 a, h3 a, h1 a:hover, h2 a:hover, h3 a:hover {
color: $primary-color;
}
.fadein {
-webkit-animation: fadeIn 0.25s ease-in-out;
-moz-animation: fadeIn 0.25s ease-in-out;
-o-animation: fadeIn 0.25s ease-in-out;
}
.container {
position: relative;
margin: 0 auto;
padding: 20px;
max-width: 960px;
}
.page {
position: relative;
display: table;
width: 100%;
height: 100%;
background-color: #fafafa;
color: #444444;
}
.page__row {
display: table-row;
box-sizing: content-box;
}
/* XXX find a better way to fix main layout box-sizing */
.page__row > .container > *{
box-sizing: border-box;
}
.navigation {
box-shadow: 0 3px 6px rgba(0, 0, 0, 0.16), 0 1px 4px rgba(0, 0, 0, 0.23);
}
.navigation > .container {
padding: 0px;
max-width: 960px;
}
.icon-bar {
vertical-align: top;
}
.masthead .container {
padding: 10px 0;
background-color: #e3e3e3;
}
.masthead > .container {
padding: 0px;
max-width: none;
border-bottom: 1px solid $primary-color;
}
.masthead__logo {
display: inline-block;
vertical-align: middle;
}
.masthead__logo a {
display: block;
}
.masthead__logo img {
width: auto;
height: 85px;
}
.masthead__heading {
display: inline-block;
margin-left: 10px;
margin-top:10px;
vertical-align: top;
}
.masthead__heading h1 {
color: #333333;
text-shadow: 1px 1px 3px #dadada;
font-size: 130%;
}
.masthead__heading h2 {
padding-left: 2px;
color: #444444;
text-shadow: 1px 1px 3px #dadada;
font-weight: normal;
font-size: 90%;
}
.masthead .sub-nav {
display: block;
overflow: visible;
padding-top: 0.25rem;
width: auto;
position: absolute;
bottom: -1px;
margin: 0;
right: 0.5em;
dd {
margin: 0;
border: 1px solid transparent;
border-bottom: 1px solid $primary-color;
border-top: 2px solid transparent;
border-radius: 5px 5px 0px 0px;
transition: all 0.5s cubic-bezier(0.55,0,0.1,1);
ul {
margin-right: -3px;
&::after, &::before {
border: 0px;
}
li {
margin: 0;
display: block;
padding: 0.3rem;
color: #555555;
width: 100%;
a {
display: block;
}
&:hover, &.active {
background: #eee;
}
}
}
a {
color: #18577A;
background-color: transparent;
display: inline-block;
padding: 2px 6px 0;
position: relative;
font-size: 90%;
&:hover {
color: #444;
background-color: transparent;
}
}
&:hover, &.active {
background: #fff;
border: 1px solid $primary-color;
border-bottom: 1px solid #fff;
border-top: 2px solid $primary-color;
transition: all 0.5s cubic-bezier(0.55,0,0.1,1);
}
}
}
.content {
position: relative;
display: table-cell;
overflow: hidden;
height: 100%;
text-align: left;
font-size: 100%;
}
.content > .container {
height: 100%;
background-color: #ffffff;
}
/* Layout */
.footer {
width: 100%;
background-color: $secondary-color;
color: #ffffff;
text-align: center;
}
.footer__block {
position: relative;
display: inline-block;
margin: 5px 0;
padding: 0 20px;
vertical-align: middle;
font-size: 70%;
}
.footer__block a {
color: rgb(255, 255, 255);
font-weight: 600;
}
.footer__block a:hover {
text-decoration: underline;
}
.footer__block small {
font-size: 100%;
}
.footer__logo {
display: block;
font-size: 0;
margin-bottom: 10px;
}
.footer__logo > img {
height: 32px;
}
.footer__block--about {
padding-left: 0;
max-width: 195px;
}
.footer__block--license {
max-width: 285px;
}
.footer__block--parliament-info {
border: 0;
padding-right: 0;
max-width: 385px;
}
.footer__block--parliament-info > abbr {
border: 0;
font-size: inherit;
cursor: inherit;
color: inherit;
}
.footer__block--separator::after {
content: '';
position: absolute;
top: 0;
bottom: 0;
right: 0;
margin: auto;
height: 50px;
width: 1px;
background-color: white;
}
@media (max-width: 480px) {
.masthead {
text-align: center
}
.masthead__logo {
display: block;
margin: 10px;
}
.masthead__heading {
margin-left: 0;
}
.masthead__logo > img{
height: 80px;
}
.masthead__heading h1 {
font-size: 90%;
}
.masthead__heading h2 {
font-size: 70%;
}
}

Loading…
Cancel
Save