silverstripe-framework/scss/GridField.scss

639 lines
16 KiB
SCSS
Raw Normal View History

/**
* Core styles for the basic GridField form field without any specific style.
*
* @package framework
* @subpackage scss
* @todo Add radial gradient to default delete button state
* @todo Create SASS mixin-function to simply swap the from/to, to to/from colours in grsdient mixins?
*/
@import "compass/css3";
@import "compass/css3/images";
@import "compass/css3/text-shadow";
@import "compass/css3/border-radius";
@import "../admin/scss/themes/default";
@import "../admin/scss/_mixins";
@import "_elementMixins";
//$experimental-support-for-svg variable comes from
//imported compass/support file and enables svg gradients in IE9.
//This is needed for the background gradients to work as desired with
//multiple images.
$experimental-support-for-svg: true;
$gf_colour_gradient_dark: darken($color-base, 8%);
$gf_colour_header_border: $gf_colour_gradient_dark;
$gf_colour_subheader: saturate(lighten($color-base, 15%),5%);
$gf_colour_border: rgba(0,0,0,.1);
$gf_colour_zebra: #F0F4F7;
$gf_colour_font: #666;
$gf_colour_text_shadow: rgba(0,0,0,.2);
$gf_colour_text_shadow_dark: rgba(0,0,0,.4);
$gf_border_radius: 5px;
$gf_grid_y: 12px;
$gf_grid_x: 16px;
.cms {
.ss-gridfield {
& > div {
margin-bottom: $gf_grid_y*3;
&.addNewGridFieldButton{
margin-bottom: 0;
.action {
margin-bottom:$gf_grid_y;
}
}
}
&[data-selectable] {
tr.ui-selected, tr.ui-selecting {
background: #FFFAD6 !important;
}
td {
cursor: pointer;
}
}
span button#action_gridfield_relationfind {
display:none; //hides find button - redundant functionality
}
p button#action_export {
span.btn-icon-download-csv {
height:17px; //exact height of icon
}
}
.right {
float:right;
& > * {
float: right;
margin-left:$gf_grid_x/2;
}
.pagination-records-number {
font-size: 1.0em;
padding: 6px 3px 6px 0;
color: $color-text-light;
@include single-text-shadow($gf_colour_text_shadow, 0px, -1px, 0);
font-weight: normal;
}
}
.left {
float:left;
& > * {
margin-right:$gf_grid_x/2;
float: left;
font-size: $gf_grid_y*1.2;
}
}
.ss-gridfield-buttonrow {
font-size: $gf_grid_y*1.2;
}
}
.ss-gridfield {
.grid-levelup {
text-indent: -9999em;
a.list-parent-link{
background: transparent url(../images/gridfield-level-up.png) no-repeat 0 0;
display:block;
}
margin-bottom: 6px;
}
.add-existing-autocompleter {
span {
@include inline-block(top);
}
input.relation-search {
width: 270px;
margin-bottom: $gf_grid_y;
}
width: 500px;
}
.grid-csv-button, .grid-print-button {
margin-bottom: $gf_grid_y;
@include inline-block();
}
}
table.ss-gridfield-table {
display: table;
@include box-shadow-none;
padding: 0;
border-collapse: separate;
border-bottom: 0 none;
width: 100%;
margin-bottom:$gf_grid_y;
thead {
color: darken($color-base, 50%);
background: transparent;
tr.filter-header {
.fieldgroup {
max-width:$gf_grid_x*32; //max width 512px
.fieldgroup-field {
padding:0;
}
}
}
tr:first-child { //sets 7px border-radius on the top row in the thead - accounts for edgecase where there is no title row.
th:first-child {
@include border-top-left-radius($gf_border_radius);
}
th:last-child {
@include border-top-right-radius($gf_border_radius);
}
}
}
tbody {
background: #FFF;
tr {
// This lets iOS Safari know that these elements are clickable
// and so to send the click events.
cursor: pointer;
}
td {
width: auto;
max-width: 500px; //This number is semi-arbitary. It is acting as a percentage limit, rather than actually constricting the width to 500px.
word-wrap:break-word;
// Give browser some hints on which cols take priority:
// The last column (buttons) should always shrink to fit.
2012-12-06 04:01:33 +01:00
// Overwritten for IE7, which doesnt support this.
&.col-buttons {
width: 1px;
padding:0 $gf_grid_x/2;
text-align: right;
white-space: nowrap;
}
&.col-listChildrenLink {
width:$gf_grid_x;
border-right:none;
text-indent:-9999em;
padding:0;
.list-children-link {
background: transparent url(../images/sitetree_ss_default_icons.png) no-repeat 3px -4px;
display:block;
}
}
&.col-getTreeTitle {
span.item {
color:$color-text-blue-link;
}
span.badge {
clear: both;
text-transform: uppercase;
display: inline-block;
padding: 0px 3px;
font-size: 0.75em;
line-height: 1em;
margin-left: 10px;
margin-right: 6px;
margin-top: -1px;
@include border-radius(2px, 2px);
}
span.badge.modified {
color: #7E7470;
border: 1px solid #C9B800;
background-color: #FFF0BC;
}
span.badge.addedtodraft {
color: #7E7470;
border: 1px solid #C9B800;
background-color: #FFF0BC;
}
span.badge.deletedonlive {
color: #636363;
border: 1px solid #E49393;
background-color: #F2DADB;
}
span.badge.removedfromdraft {
color: #636363;
border: 1px solid #E49393;
background-color: #F2DADB;
}
span.badge.workflow-approval {
color: #56660C;
border: 1px solid #7C8816;
background-color: #DAE79A;
}
}
button {
border: none;
background: none;
margin: 0 0 0 2px;
padding: 1px 0;
width: auto;
text-shadow: none;
&.ui-state-hover {
background:none;
@include box-shadow-none;
}
&.ui-state-active {
border:none;
@include box-shadow-none;
}
&.gridfield-button-delete {
width: 20px;
margin: 0;
span.btn-icon-decline {
left: 2px;
}
}
}
a.view-link, a.edit-link {
display:inline-block;
width:20px;
height:20px; //min height to fit the edit icon
2012-12-06 04:01:33 +01:00
text-indent:9999em;
overflow: hidden;
vertical-align: middle;
}
a.view-link {
background: url(../admin/images/btn-icon/magnifier.png) no-repeat 0 1px;
}
a.edit-link {
background: url(../admin/images/btn-icon/document--pencil.png) no-repeat 2px 0px;
}
}
}
tfoot {
color: darken($color-base, 50%);
tr {
td {
background: $color-base;
padding: .7em;
border-bottom: 1px solid rgba(0,0,0,.1);
}
}
}
tr {
&.title {
th {
position: relative;
background: $gf_colour_gradient_dark;
border-bottom: 1px solid darken($gf_colour_gradient_dark,5%);
padding: 5px;
min-height: 40px; //this is to accomodate the add new button.
@include background-image(linear-gradient($color-base, $gf_colour_gradient_dark));
@include single-text-shadow($gf_colour_text_shadow_dark, 0px, -1px, 0);
h2{
padding: 0px;
font-size: $gf_grid_y*1.4;
color:#fff;
margin: 1px 8px 0;
display:inline-block;
float:left;
}
}
}
&.sortable-header {
background: $gf_colour_subheader;
th{
padding: 0; // Should be padding: 0 1em; like td
font-weight: normal;
.ss-ui-button {
font-weight: normal;
}
}
}
&:hover {
background: #FFFAD6 !important;
}
&:first-child {
background: transparent;
}
&.ss-gridfield-even {
background: $gf_colour_zebra;
&.ss-gridfield-last {
border-bottom: none;
}
}
&.even {
2012-02-06 22:39:49 +01:00
background: $gf_colour_zebra;
}
th {
font-weight: bold;
font-size: $gf_grid_y;
color: #FFF;
padding: 5px;
border-right: 1px solid $gf_colour_border;
div {
&.fieldgroup,&.fieldgroup-field {
width: 100%;
position:relative;
}
&.fieldgroup {
min-width: $gf_grid_x*12.5;
padding-right:0;
&.filter-buttons{
min-width:49px;
box-shadow: none;
border: none;
div{
width:auto;
display:inline;
}
}
}
}
&.main{
white-space:nowrap;
border-top: 1px solid darken($color-base,4%);
border-left: 1px solid darken($color-base,4%);
color:#fff;
background: $gf_colour_gradient_dark;
border-bottom: 1px solid $gf_colour_border;
span{
@include single-text-shadow($gf_colour_text_shadow, 0px, -1px, 0);
padding-left: $gf_grid_x/2;
padding-right: $gf_grid_x/2;
@include hide-text-overflow; // Add ellipses to overflowing text
margin-right: 8px;
}
&.col-listChildrenLink {
border-right:none;
}
}
&.extra,&.action {
padding: 0;
cursor: default;
}
&.extra {
position:relative;
background:darken($color-dark-grey, 10%);
background: rgba(#000, 0.7);
padding: 5px;
border-top: $gf_colour_text_shadow;
input {
height:28px; //height of input field - to match design.
}
button.ss-ui-button {
padding: .3em;
line-height: 1;
@include box-shadow-none;
position: relative;
border-bottom-width: 0;
@include border-radius(2px, 2px);
}
}
&.first {
@include border-top-left-radius($gf_border_radius);
}
&.last {
@include border-top-right-radius($gf_border_radius);
}
button {
&#action_gridfield_relationadd:hover {
color: #444 !important; /* Not sure why IE think it needs this */
}
&:hover {
color: #ccc !important; /* Not sure why IE think it needs this */
}
&.ss-gridfield-sort:hover {
color: #fff !important;
@include box-shadow-none;
}
&.ss-gridfield-sort {
2012-12-06 04:01:33 +01:00
background: transparent url(../images/arrows.png) no-repeat right 6px;
border:none;
width:100%;
text-align: left;
padding: 2px 8px 2px 0; // Doesn't need to be so big now that filter has moved
@include single-text-shadow($gf_colour_text_shadow, 0px, -1px, 0);
color: #fff;
2012-02-04 11:32:24 +01:00
@include border-radius(0);
&:hover {
2012-12-06 04:01:33 +01:00
background-position: right -34px;
}
&.ss-gridfield-sorted-desc {
2012-12-06 04:01:33 +01:00
background-position: right -72px;
}
&.ss-gridfield-sorted-asc {
2012-12-06 04:01:33 +01:00
background-position: right -116px;
}
}
&.ss-ui-button{
&.ss-gridfield-button-filter{
$bgImage: url(../images/icons/filter-icons.png) no-repeat;
background-color:lighten($color-menu-button,10%);
@include gridFieldButtons;
@include background(
$bgImage -15px 4px,
linear-gradient(
$color-menu-button,
darken($color-menu-button, 10%)
)
);
width: 26px;
border-top: 1px solid lighten($color-menu-button, 5%);
&.hover-alike:active, &:active, &.hover-alike, &:hover {
@include background (
$bgImage -15px 4px,
linear-gradient(
lighten($color-menu-button, 10%),
$color-menu-button
));
}
&.trigger{ //The magnifying glass before filter is opened
margin-left: $gf_grid_y;
border:none;
@include background ($bgImage -17px 6px);
padding-right: 46px;
margin: 0 $gf_grid_y/2;
span{ //this is the dropdown arrow
opacity: 0.4;
position:absolute;
width:10px;
left:30px;
top:40%;
background: url(../admin/images/btn_arrow_down_grey.png) no-repeat 0px 0px;
}
&:hover{
@include background ($bgImage -17px -38px);
@include box-shadow-none;
span{//dropdown arrow
opacity:0.9;
}
}
}
}
&.ss-gridfield-button-close{
$bgImage: url(../images/icons/filter-icons.png) no-repeat;
@include background ($bgImage 8px -17px);
@include gridFieldButtons;
width:25px;
opacity:0.8;
margin-right:-5px; //For IE
&.hover-alike:active, &:active, &.hover-alike, &:hover {
opacity:1;
@include background (
$bgImage 8px -17px,
linear-gradient(
rgba(#fff,0.1),
rgba(#fff,0.1)
)
);
}
}
&.ss-gridfield-button-reset{
@include gridFieldButtons;
position:absolute;
top: -21px;
right: -1px;
width:20px;
height:20px;
display:none;
&.filtered{
display:block;
background: url(../admin/images/btn-icon/cross.png) no-repeat 0px 0px;
opacity:0.5;
&:hover{
opacity:0.8;
}
&:active {
opacity:1;
}
}
}
}
}
input {
&.ss-gridfield-sort {
height:25px;
padding: 4px;
// Placeholder styling done with an each loop because when a browser
// doesnt understand a selector, it invalidates the entire line of selectors.
// This avoids that, and keeps the scss tidy
$browserPlaceholder: "::-webkit-input-placeholder", ":-moz-placeholder", ":-ms-input-placeholder", ":placeholder";
border: 1px solid #313232;
@each $browser in $browserPlaceholder {
&#{$browser}{
font-style:italic;
color: lighten($color-dark-grey,30%);
}
}
&:focus {
@include box-shadow-none;
}
}
}
span.non-sortable {
display:block;
}
}
td {
border-right: 1px solid $gf_colour_border;
padding: $gf_grid_x/2 $gf_grid_x/2;
color: $gf_colour_font;
&.bottom-all {
@include border-bottom-radius($gf_border_radius);
@include background-image(linear-gradient($color-base, $gf_colour_gradient_dark));
padding: $gf_grid_x/4 $gf_grid_y;
.datagrid-footer-message {
text-align: center;
padding-top: 6px;
color:$color-text-light;
}
.datagrid-pagination {
padding-top:1px;
position:absolute;
left:50%;
margin-left:-116px; //half the width of .datagrid-pagination - centers pagination
.pagination-page-number {
color:$color-text-light;
@include single-text-shadow($gf_colour_text_shadow, 0px, -1px, 0);
input {
width:35px; //exact width so that a four digit number can be entered
height:18px;
margin-bottom:-6px; //moves input field up to be aligned with the pagination buttons
padding:0px;
border: 1px solid darken($gf_colour_gradient_dark, 5%);
border-bottom: 1px solid lighten($gf_colour_gradient_dark, 5%);
}
}
z-index:5;
button{
@include box-shadow-none;
border:none;
width:10px;
margin:0 10px;
display:inline;
float:none;
span {
text-indent:-9999em;
}
&.ss-gridfield-previouspage {
@include background (url(../images/icons/pagination-arrows.png) no-repeat -23px 8px);
}
&.ss-gridfield-nextpage {
@include background (url(../images/icons/pagination-arrows.png) no-repeat -47px 8px);
}
&.ss-gridfield-firstpage {
@include background (url(../images/icons/pagination-arrows.png) no-repeat 0px 8px);
}
&.ss-gridfield-lastpage {
@include background (url(../images/icons/pagination-arrows.png) no-repeat -73px 8px);
}
&.ssui-button-disabled{
z-index:-1;
}
}
}
.pagination-records-number {
float:right;
padding:6px 0;
color:$color-text-light;
@include single-text-shadow($gf_colour_text_shadow, 0px, -1px, 0);
}
}
}
&.last td {
border-bottom: 0 none;
}
}
td:first-child{
border-left: 1px solid $gf_colour_border;
}
td:last-child{
border-right: 1px solid $gf_colour_border;
}
}
}