@quantlab/handsontable
Version:
Spreadsheet-like data grid editor that provides copy/paste functionality compatible with Excel/Google Docs
745 lines (638 loc) • 14.9 kB
CSS
.handsontable {
position: relative;
}
.handsontable .hide{
display: none;
}
.handsontable .relative {
position: relative;
}
.handsontable.htAutoSize {
visibility: hidden;
left: -99000px;
position: absolute;
top: -99000px;
}
.handsontable .wtHider {
width: 0;
}
.handsontable .wtSpreader {
position: relative;
width: 0; /*must be 0, otherwise blank space appears in scroll demo after scrolling max to the right */
height: auto;
}
.handsontable table,
.handsontable tbody,
.handsontable thead,
.handsontable td,
.handsontable th,
.handsontable input,
.handsontable textarea,
.handsontable div {
box-sizing: content-box;
-webkit-box-sizing: content-box;
-moz-box-sizing: content-box;
}
.handsontable input,
.handsontable textarea {
min-height: initial;
}
.handsontable table.htCore {
border-collapse: separate;
/* it must be separate, otherwise there are offset miscalculations in WebKit: http://stackoverflow.com/questions/2655987/border-collapse-differences-in-ff-and-webkit */
/* this actually only changes appearance of user selection - does not make text unselectable */
/* -webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-o-user-select: none;
-ms-user-select: none;
user-select: none; */ /* no browser supports unprefixed version */
border-spacing: 0;
margin: 0;
border-width: 0;
table-layout: fixed;
width: 0;
outline-width: 0;
/* reset bootstrap table style. for more info see: https://github.com/handsontable/handsontable/issues/224 */
max-width: none;
max-height: none;
}
.handsontable col {
width: 50px;
}
.handsontable col.rowHeader {
width: 50px;
}
.handsontable th,
.handsontable td {
border-top-width: 0;
border-left-width: 0;
border-right: 1px solid #CCC;
border-bottom: 1px solid #CCC;
height: 22px;
empty-cells: show;
line-height: 21px;
padding: 0 4px 0 4px;
/* top, bottom padding different than 0 is handled poorly by FF with HTML5 doctype */
background-color: #FFF;
vertical-align: top;
overflow: hidden;
outline-width: 0;
white-space: pre-line;
/* preserve new line character in cell */
background-clip: padding-box;
}
.handsontable td.htInvalid {
background-color: #ff4c42 ; /*gives priority over td.area selection background*/
}
.handsontable td.htNoWrap {
white-space: nowrap;
}
.handsontable th:last-child {
/*Foundation framework fix*/
border-right: 1px solid #CCC;
border-bottom: 1px solid #CCC;
}
.handsontable tr:first-child th.htNoFrame,
.handsontable th:first-child.htNoFrame,
.handsontable th.htNoFrame {
border-left-width: 0;
background-color: white;
border-color: #FFF;
}
.handsontable th:first-child,
.handsontable th:nth-child(2),
.handsontable td:first-of-type,
.handsontable .htNoFrame + th,
.handsontable .htNoFrame + td {
border-left: 1px solid #CCC;
}
.handsontable.htRowHeaders thead tr th:nth-child(2) {
border-left: 1px solid #CCC;
}
.handsontable tr:first-child th,
.handsontable tr:first-child td {
border-top: 1px solid #CCC;
}
.ht_master:not(.innerBorderLeft):not(.emptyColumns) ~ .handsontable tbody tr th,
.ht_master:not(.innerBorderLeft):not(.emptyColumns) ~ .handsontable:not(.ht_clone_top) thead tr th:first-child {
border-right-width: 0;
}
.ht_master:not(.innerBorderTop) thead tr:last-child th,
.ht_master:not(.innerBorderTop) ~ .handsontable thead tr:last-child th,
.ht_master:not(.innerBorderTop) thead tr.lastChild th,
.ht_master:not(.innerBorderTop) ~ .handsontable thead tr.lastChild th {
border-bottom-width: 0;
}
.handsontable th {
background-color: #f3f3f3;
color: #222;
text-align: center;
font-weight: normal;
white-space: nowrap;
}
.handsontable thead th {
padding: 0;
}
.handsontable th.active {
background-color: #CCC;
}
.handsontable thead th .relative {
padding: 2px 4px;
}
/* selection */
.handsontable tbody th.ht__highlight,
.handsontable thead th.ht__highlight {
background-color: #dcdcdc;
}
.handsontable.ht__selection--columns thead th.ht__highlight,
.handsontable.ht__selection--rows tbody th.ht__highlight {
background-color: #8eb0e7;
color: #000;
}
/* plugins */
/* row + column resizer*/
.handsontable .manualColumnResizer {
position: fixed;
top: 0;
cursor: col-resize;
z-index: 110;
width: 5px;
height: 25px;
}
.handsontable .manualRowResizer {
position: fixed;
left: 0;
cursor: row-resize;
z-index: 110;
height: 5px;
width: 50px;
}
.handsontable .manualColumnResizer:hover,
.handsontable .manualColumnResizer.active,
.handsontable .manualRowResizer:hover,
.handsontable .manualRowResizer.active {
background-color: #AAB;
}
.handsontable .manualColumnResizerGuide {
position: fixed;
right: 0;
top: 0;
background-color: #AAB;
display: none;
width: 0;
border-right: 1px dashed #777;
margin-left: 5px;
}
.handsontable .manualRowResizerGuide {
position: fixed;
left: 0;
bottom: 0;
background-color: #AAB;
display: none;
height: 0;
border-bottom: 1px dashed #777;
margin-top: 5px;
}
.handsontable .manualColumnResizerGuide.active,
.handsontable .manualRowResizerGuide.active {
display: block;
z-index: 199;
}
.handsontable .columnSorting {
position: relative;
}
.handsontable .columnSorting:hover {
text-decoration: underline;
cursor: pointer;
}
.handsontable .columnSorting.ascending::after {
content: '\25B2';
color: #5f5f5f;
position: absolute;
right: -15px;
}
.handsontable .columnSorting.descending::after {
content: '\25BC';
color: #5f5f5f;
position: absolute;
right: -15px;
}
/* border line */
.handsontable .wtBorder {
position: absolute;
font-size: 0;
}
.handsontable .wtBorder.hidden{
display:none ;
}
.handsontable td.area {
background: -moz-linear-gradient(top, rgba(181,209,255,0.34) 0%, rgba(181,209,255,0.34) 100%); /* FF3.6+ */
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(181,209,255,0.34)), color-stop(100%,rgba(181,209,255,0.34))); /* Chrome,Safari4+ */
background: -webkit-linear-gradient(top, rgba(181,209,255,0.34) 0%,rgba(181,209,255,0.34) 100%); /* Chrome10+,Safari5.1+ */
background: -o-linear-gradient(top, rgba(181,209,255,0.34) 0%,rgba(181,209,255,0.34) 100%); /* Opera 11.10+ */
background: -ms-linear-gradient(top, rgba(181,209,255,0.34) 0%,rgba(181,209,255,0.34) 100%); /* IE10+ */
background: linear-gradient(to bottom, rgba(181,209,255,0.34) 0%,rgba(181,209,255,0.34) 100%); /* W3C */
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#57b5d1ff', endColorstr='#57b5d1ff',GradientType=0 ); /* IE6-9 */
background-color: #fff;
}
/* fill handle */
.handsontable .wtBorder.corner {
font-size: 0;
cursor: crosshair;
}
.handsontable .htBorder.htFillBorder {
background: red;
width: 1px;
height: 1px;
}
.handsontableInput {
border:none;
outline-width: 0;
margin: 0 ;
padding: 1px 5px 0 5px;
font-family: inherit;
line-height: 21px;
font-size: inherit;
box-shadow: 0 0 0 2px #5292F7 inset;
resize: none;
/*below are needed to overwrite stuff added by jQuery UI Bootstrap theme*/
display: block;
color: #000;
border-radius: 0;
background-color: #FFF;
/*overwrite styles potentionally made by a framework*/
}
.handsontableInputHolder {
position: absolute;
top: 0;
left: 0;
z-index: 100;
}
.htSelectEditor {
-webkit-appearance: menulist-button ;
position: absolute;
width: auto;
}
/*
TextRenderer readOnly cell
*/
.handsontable .htDimmed {
color: #777;
}
.handsontable .htSubmenu {
position: relative;
}
.handsontable .htSubmenu :after{
content: '▶';
color: #777;
position: absolute;
right: 5px;
}
/*
TextRenderer horizontal alignment
*/
.handsontable .htLeft{
text-align: left;
}
.handsontable .htCenter{
text-align: center;
}
.handsontable .htRight{
text-align: right;
}
.handsontable .htJustify{
text-align: justify;
}
/*
TextRenderer vertical alignment
*/
.handsontable .htTop{
vertical-align: top;
}
.handsontable .htMiddle{
vertical-align: middle;
}
.handsontable .htBottom{
vertical-align: bottom;
}
/*
TextRenderer placeholder value
*/
.handsontable .htPlaceholder {
color: #999;
}
/*
AutocompleteRenderer down arrow
*/
.handsontable .htAutocompleteArrow {
float: right;
font-size: 10px;
color: #EEE;
cursor: default;
width: 16px;
text-align: center;
}
.handsontable td .htAutocompleteArrow:hover {
color: #777;
}
.handsontable td.area .htAutocompleteArrow {
color: #d3d3d3;
}
/*
CheckboxRenderer
*/
.handsontable .htCheckboxRendererInput {
display: inline-block;
vertical-align: middle;
}
.handsontable .htCheckboxRendererInput.noValue {
opacity: 0.5;
}
.handsontable .htCheckboxRendererLabel {
cursor: pointer;
display: inline-block;
width: 100%;
}
@-webkit-keyframes opacity-hide {
from {
opacity: 1;
}
to {
opacity: 0;
/*display: none;*/
}
}
@keyframes opacity-hide {
from {
/*display: block;*/
opacity: 1;
}
to {
opacity: 0;
/*display: none;*/
}
}
@-webkit-keyframes opacity-show {
from {
opacity: 0;
/*display: none;*/
}
to {
opacity: 1;
/*display: block;*/
}
}
@keyframes opacity-show {
from {
opacity: 0;
/*display: none;*/
}
to {
opacity: 1;
/*display: block;*/
}
}
/**
* Handsontable in Handsontable
*/
.handsontable .handsontable.ht_clone_top .wtHider {
padding: 0 0 5px 0;
}
/**
* Autocomplete Editor
*/
.handsontable .autocompleteEditor.handsontable {
padding-right: 17px;
}
.handsontable .autocompleteEditor.handsontable.htMacScroll {
padding-right: 15px;
}
/**
* Handsontable listbox theme
*/
.handsontable.listbox {
margin: 0;
}
.handsontable.listbox .ht_master table {
border: 1px solid #ccc;
border-collapse: separate;
background: white;
}
.handsontable.listbox th,
.handsontable.listbox tr:first-child th,
.handsontable.listbox tr:last-child th,
.handsontable.listbox tr:first-child td,
.handsontable.listbox td {
border-color: transparent;
}
.handsontable.listbox th,
.handsontable.listbox td {
white-space: nowrap;
text-overflow: ellipsis;
}
.handsontable.listbox td.htDimmed {
cursor: default;
color: inherit;
font-style: inherit;
}
.handsontable.listbox .wtBorder {
visibility: hidden;
}
.handsontable.listbox tr td.current,
.handsontable.listbox tr:hover td {
background: #eee;
}
.ht_clone_top {
z-index: 101;
}
.ht_clone_left {
z-index: 102;
}
.ht_clone_top_left_corner,
.ht_clone_bottom_left_corner {
z-index: 103;
}
.ht_clone_debug {
z-index: 103;
}
.handsontable td.htSearchResult {
background: #fcedd9;
color: #583707;
}
/*
Cell borders
*/
.htBordered{
/*box-sizing: border-box !important;*/
border-width: 1px;
}
.htBordered.htTopBorderSolid {
border-top-style: solid;
border-top-color: #000;
}
.htBordered.htRightBorderSolid {
border-right-style: solid;
border-right-color: #000;
}
.htBordered.htBottomBorderSolid {
border-bottom-style: solid;
border-bottom-color: #000;
}
.htBordered.htLeftBorderSolid {
border-left-style: solid;
border-left-color: #000;
}
.handsontable tbody tr th:nth-last-child(2) {
border-right: 1px solid #CCC;
}
.handsontable thead tr:nth-last-child(2) th.htGroupIndicatorContainer {
border-bottom: 1px solid #CCC;
padding-bottom: 5px;
}
.ht_clone_top_left_corner thead tr th:nth-last-child(2) {
border-right: 1px solid #CCC;
}
.htCollapseButton {
width: 10px;
height: 10px;
line-height: 10px;
text-align: center;
border-radius: 5px;
border: 1px solid #f3f3f3;
-webkit-box-shadow: 1px 1px 3px rgba(0, 0, 0, 0.4);
box-shadow: 1px 1px 3px rgba(0, 0, 0, 0.4);
cursor: pointer;
margin-bottom: 3px;
position: relative;
}
.htCollapseButton:after {
content: "";
height: 300%;
width: 1px;
display: block;
background: #ccc;
margin-left: 4px;
position: absolute;
/*top: -300%;*/
bottom: 10px;
}
thead .htCollapseButton {
right: 5px;
position: absolute;
top: 5px;
background: #fff;
}
thead .htCollapseButton:after {
height: 1px;
width: 700%;
right: 10px;
top: 4px;
}
.handsontable tr th .htExpandButton {
position: absolute;
width: 10px;
height: 10px;
line-height: 10px;
text-align: center;
border-radius: 5px;
border: 1px solid #f3f3f3;
-webkit-box-shadow: 1px 1px 3px rgba(0, 0, 0, 0.4);
box-shadow: 1px 1px 3px rgba(0, 0, 0, 0.4);
cursor: pointer;
top: 0;
display: none;
}
.handsontable thead tr th .htExpandButton {
/*left: 5px;*/
top: 5px;
}
.handsontable tr th .htExpandButton.clickable {
display: block;
}
.collapsibleIndicator {
position: absolute;
top: 50%;
transform: translate(0% ,-50%);
right: 5px;
border: 1px solid #A6A6A6;
line-height: 10px;
color: #222;
border-radius: 10px;
font-size: 10px;
width: 10px;
height: 10px;
cursor: pointer;
-webkit-box-shadow: 0 0 0 6px rgba(238,238,238,1);
-moz-box-shadow: 0 0 0 6px rgba(238,238,238,1);
box-shadow: 0 0 0 6px rgba(238,238,238,1);
background: #eee;
}
.handsontable col.hidden {
width: 0 ;
}
.handsontable table tr th.lightRightBorder {
border-right: 1px solid #E6E6E6;
}
.handsontable tr.hidden,
.handsontable tr.hidden td,
.handsontable tr.hidden th {
display: none;
}
.ht_master,
.ht_clone_left,
.ht_clone_top,
.ht_clone_bottom {
overflow: hidden;
}
.ht_master .wtHolder {
overflow: auto;
}
.ht_clone_left .wtHolder {
overflow-x: hidden;
overflow-y: auto;
}
.ht_clone_top .wtHolder,
.ht_clone_bottom .wtHolder {
overflow-x: auto;
overflow-y: hidden;
}
/*WalkontableDebugOverlay*/
.wtDebugHidden {
display: none;
}
.wtDebugVisible {
display: block;
-webkit-animation-duration: 0.5s;
-webkit-animation-name: wtFadeInFromNone;
animation-duration: 0.5s;
animation-name: wtFadeInFromNone;
}
@keyframes wtFadeInFromNone {
0% {
display: none;
opacity: 0;
}
1% {
display: block;
opacity: 0;
}
100% {
display: block;
opacity: 1;
}
}
@-webkit-keyframes wtFadeInFromNone {
0% {
display: none;
opacity: 0;
}
1% {
display: block;
opacity: 0;
}
100% {
display: block;
opacity: 1;
}
}