OpenProject is the leading open source project management software.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
openproject/app/assets/stylesheets/content/_table.sass

314 lines
7.9 KiB

//-- copyright
// OpenProject is an open source project management software.
// Copyright (C) 2012-2020 the OpenProject GmbH
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License version 3.
//
// OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows:
// Copyright (C) 2006-2017 Jean-Philippe Lang
// Copyright (C) 2010-2013 the ChiliProject Team
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License
// as published by the Free Software Foundation; either version 2
// of the License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
//
// See docs/COPYRIGHT.rdoc for more details.
//++
@keyframes fade-out
from
opacity: 1
to
opacity: 0
$input-elements: input, 'input.form--text-field', select, 'select.form--select', '.form--field-affix', 'a.button'
.generic-table--container
position: relative
height: 100%
width: 100%
overflow:
x: hidden
y: hidden
&.-with-footer
padding-bottom: $generic-table--footer-height
.generic-table--results-container
height: 100%
overflow:
x: auto
y: auto
@include styled-scroll-bar
.generic-table--action-buttons
margin-top: 2rem
#generic-table
tr.issue
&.ng-enter, &.ng-move
transition: 0.5s linear all
opacity: 0
&.ng-enter.ng-enter-active, &.ng-move.ng-move-active
opacity: 1
&.ng-leave
@include animation(0.5s fade-out)
table.generic-table
border-collapse: collapse
width: 100%
margin: 0
font-size: $generic-table--font-size
col
&:hover,
&.hover
background: #f8f8f8
thead
height: $generic-table--header-height
tr
&:hover
background: none
th
font-size: $generic-table--header-font-size
text-transform: uppercase
text-align: left
line-height: 34px
padding: 0
// This is needed for a bug in FF as described here
// https://www.456bereastreet.com/archive/201305/firefox_and_the_magical_text-overflowellipsis_z-index/
z-index: 1
&.-right
text-align: right
a
text-decoration: none
color: $body-font-color
&:hover, &:active
text-decoration: none
color: $body-font-color
.-required:after
@include default-transition
content: '*'
color: $primary-color-dark
padding: 0 0.2rem
.sort
&.asc:after
@include icon-font-common
@include icon-mixin-sort-ascending
margin-left: 5px
font-size: 1.2em
vertical-align: text-bottom
&.desc:after
@include icon-font-common
@include icon-mixin-sort-descending
margin-left: 5px
font-size: 1.2em
vertical-align: text-bottom
tfoot
tr
background: #f6f7f8
border:
top: 0
bottom: 0
height: 0
td
height: 0
padding:
top: 0
bottom: 0
font-weight: bold
tbody
tr:not(.-no-highlighting)
border-bottom: 1px solid $table-row-border-color
td:not(.-no-ellipsis)
@include text-shortener
td
max-width: 300px
text-align: left
line-height: 1.6
padding-top: 0.5rem
padding-bottom: 0.5rem
vertical-align: middle
// Center input fields and select boxes vertically in tables
.form--field
margin: 0px
@each $inputElement in $input-elements
#{$inputElement},
#{$inputElement}~.form-label
vertical-align: middle
input[type="checkbox"], input[type="radio"]
margin-top: -0.25rem
// In the interactive table the behaviour is like this:
// * if there is more space available than is required to render
// all columns, the container width is set to 100%.
// Then, td.-max will take up all space available and it will cause all other
// elements to shrink to their minimum value. td-max will grow even beyond
// what is specified as max-width.
// * if the contents requires more space than the container width permits,
// then the container width is set to the width calculated by summing up
// all the column widths. For td.-max, the max-width will be taken to be
// the column width because of the combination of max-width and width: 100%.
// as a result, td.-max will aways have at least a width of max-width, but it can
// become even wider.
&.-max
width: 100%
max-width: 500px
// The avatar image is not taken into the width calculation of the table cell by the browser.
That is why we add the space manually.
&.-contains-avatar
text-overflow: clip
.wp-table--cell-container
padding-right: 35px
&.info
a
text-decoration: none
color: $body-font-color
&.buttons
text-align: right
white-space: nowrap
&.-no-highlighting
background-color: $body-background
p
padding: 0 8px
margin: 0
// Enable sticky headers
thead.-sticky th
position: sticky
top: 0
background: white
.generic-table--footer-outer
padding: 0 6px
line-height: $generic-table--footer-height
width: 100%
height: $generic-table--footer-height
.generic-table--header-outer,
.generic-table--sort-header-outer
padding: 0 12px 0 6px
line-height: $generic-table--header-height
height: $generic-table--header-height
z-index: 1
border-bottom: 1px solid $table-row-border-color
&:hover,
&.hover
background: #f8f8f8
.generic-table--empty-header
padding: 0 6px
height: $generic-table--header-height
line-height: $generic-table--header-height
border-bottom: 1px solid $table-row-border-color
z-index: 1
// In case the table header contains invisible content for screen readers
.generic-table--header,
.generic-table--sort-header
visibility: hidden
// Matches the min-width of .generic-table--header, .generic-table--sort-header
max-width: 40px
.generic-table--column-spacer
white-space: nowrap
padding: 0 6px
visibility: hidden
height: 0px
line-height: 0px
.generic-table--header,
.generic-table--sort-header
white-space: nowrap
width: 100%
clear: both
min-width: 40px
display: flex
& > a
flex: 1 1
width: 100%
font-weight: bold
&.-inactive
color: $button--active-font-color
& > op-icon
flex: 0 0 0
padding-left: 15px
.generic-table--sort-header-outer
.dropdown-indicator
width: 1em
overflow: visible
min-width: 1em
visibility: hidden
position: relative
&:hover .dropdown-indicator
visibility: visible
.generic-table--no-results-container
background: $gray-light
border: 1px solid $gray
border-radius: $global-radius
padding: 14px 14px 14px 36px
display: block
> i,
.generic-table--no-results-title
display: inline-block
font-size: rem-calc(17)
line-height: 1.4
vertical-align: top
> i
margin: 1px 0 0 -24px
width: 20px
.generic-table--no-results-title
border: 0
margin: 0
padding: 0
text-transform: none
width: 99%
.generic-table--no-results-description
font-size: rem-calc(15)
line-height: 1.4
margin-top: 4px
p:last-child
margin-bottom: 0