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.
 
 
 
 
 
 

769 lines
24 KiB

//==
$ax5grid-border: 1px solid #ccc !default;
$ax5grid-bg: #fff !default;
$ax5grid-font-size: 12px !default;
$ax5grid-column-border: 1px solid #ccc !default;
//== header
$ax5grid-header-column-color: #222 !default;
$ax5grid-header-column-border: 1px solid #ccc !default;
$ax5grid-header-column-box-shadow: inset 1px 1px 0px 0px #fff !default;
$ax5grid-header-column-bg-colors: (#FFFFFF, #F0F0F0) !default;
$ax5grid-header-column-hover-bg-colors: (#eee, #eee) !default;
$ax5grid-header-column-resizer-color: #ff3300 !default;
$ax5grid-header-column-resizer-size: 4px !default;
$ax5grid-header-sorter-size: 9px !default;
$ax5grid-header-sorter-color: #000 !default;
//== aside
$ax5grid-aside-border: 1px solid darken(#ccc, 0%) !default;
$ax5grid-aside-bg: #f2f2f2 !default;
$ax5grid-aside-column-shadow: inset 1px 1px 0px 0px #fff !default;
$ax5grid-frozen-line-border: 1px solid darken(#ccc, 10%) !default;
//== footsum
$ax5grid-footsum-bg: #ffe7e2 !default;
$ax5grid-footsum-line-border: 1px solid darken(#ccc, 10%) !default;
//== page
$ax5grid-page-border: 1px solid #ccc !default;
$ax5grid-page-bg-colors: (#FFFFFF, #F0F0F0) !default;
$ax5grid-page-navigation-padding: 5px !default;
$ax5grid-page-navigation-font-size: 12px !default;
$ax5grid-page-navigation-btn-min-width: 20px !default;
$ax5grid-page-navigation-btn-border: 0px none !default;
$ax5grid-page-navigation-btn-border-radius: 5px !default;
$ax5grid-page-navigation-btn-bg: transparent !default;
$ax5grid-page-navigation-btn-font-size: 11px !default;
$ax5grid-page-navigation-btn-color: #222 !default;
$ax5grid-page-navigation-btn-hover-bg: #888 !default;
$ax5grid-page-navigation-btn-hover-color: #fff !default;
$ax5grid-page-status-font-size: 12px !default;
$ax5grid-page-status-padding: 10px !default;
$ax5grid-page-status-color: #222 !default;
//== scroll
$ax5grid-scroll-track-border: 1px solid #ccc !default;
$ax5grid-scroll-track-bg: #f3f3f3 !default;
$ax5grid-scroll-corner-bg: #EAEDEF !default;
$ax5grid-scroll-bar-border-radius: 10px !default;
$ax5grid-scroll-bar-border: 0px solid #fff !default;
$ax5grid-scroll-bar-bg: #ccc !default;
$ax5grid-scroll-bar-hover-border: 0px solid #ccc !default;
$ax5grid-scroll-bar-hover-bg: #bababa !default;
//== body.row
$ax5grid-row-bg-0: #f3f3f3 !default;
$ax5grid-row-bg-1: #fff !default;
$ax5grid-row-bg-2: #f3f3f3 !default;
$ax5grid-row-bg-3: #fff !default;
$ax5grid-row-hover-bg: lighten(#cce2f3, 5%) !default;
$ax5grid-row-grouping-bg: #ffffe7 !default;
$ax5grid-row-selected: lighten(#b1d7fe, 10%) !default;
//== body.cell
$ax5grid-cell-padding-row-selector: 5px !default;
$ax5grid-cell-padding: 3px 5px !default;
$ax5grid-cell-checkbox-border: 1px solid #ccc !default;
$ax5grid-cell-checkbox-border-radius: 3px !default;
$ax5grid-cell-checkbox-bg-colors: (#FFFFFF, #F0F0F0) !default;
$ax5grid-cell-disable-checkbox-bg-colors: (darken(nth($ax5grid-cell-checkbox-bg-colors, 2), 10%), darken(nth($ax5grid-cell-checkbox-bg-colors, 1), 10%)) !default;
$ax5grid-cell-checkbox-arrow-color: $brand-primary !default;
$ax5grid-cell-focused-box-shadow: inset 0px 0px 1px 1px #0581f2 !default;
$ax5grid-cell-focused-bg: lighten(#b1d7fe, 10%) !default;
$ax5grid-cell-focused-color: #000 !default;
$ax5grid-cell-selected-border-color: #ccc !default;
$ax5grid-cell-selected-bg: #b1d7fe !default;
$ax5grid-cell-selected-color: #000 !default;
//== resizer
$ax5grid-resizer-color: #ff3300 !default;
$ax5grid-resizer-size: 2px !default;
// mixins
@mixin gridBoxModal() {
margin: 0;
padding: 0;
}
@mixin gridColumn($container) {
box-sizing: border-box;
overflow: hidden;
position: relative;
padding: 0;
font-size: $ax5grid-font-size;
border: 0 none;
&.hasBorder {
border-right: $ax5grid-column-border;
border-bottom: $ax5grid-column-border;
}
&.isLastColumn {
}
&.lineNumberColumn {
}
&.focused {
box-shadow: $ax5grid-cell-focused-box-shadow;
}
@if ($container == "header") {
cursor: pointer;
box-shadow: $ax5grid-header-column-box-shadow;
&:hover {
@include ax-background(top, $ax5grid-header-column-hover-bg-colors);
}
&[data-ax5grid-column-row="null"] {
box-shadow: none;
}
}
&[data-ax5grid-column-row="null"] {
border-right: 0 none;
}
&[data-ax5grid-column-selected] {
background: $ax5grid-cell-selected-bg;
border-color: $ax5grid-cell-selected-border-color;
color: $ax5grid-cell-selected-color;
}
&[data-ax5grid-column-focused] {
box-shadow: $ax5grid-cell-focused-box-shadow;
background: $ax5grid-cell-focused-bg;
color: $ax5grid-cell-focused-color;
}
&[data-ax5grid-column-attr="rowSelector"] {
cursor: pointer;
[data-ax5grid-cellHolder] {
padding: $ax5grid-cell-padding-row-selector;
}
.checkBox {
display: inline-block;
position: relative;
border: $ax5grid-cell-checkbox-border;
border-radius: $ax5grid-cell-checkbox-border-radius;
@include ax-background(top, $ax5grid-cell-checkbox-bg-colors);
height: 100%;
width: 100%;
&:after {
content: '';
width: 60%;
height: 40%;
position: absolute;
top: 20%;
right: 20%;
border: 0.2em solid $ax5grid-cell-checkbox-arrow-color;
border-top: none;
border-right: none;
background: transparent;
opacity: 0.0;
@include transform(rotate(-50deg));
}
}
&[data-ax5grid-selected="true"] {
.checkBox {
&:after {
opacity: 1;
}
}
}
}
&[data-ax5grid-column-attr="lineNumber"] {
}
[data-ax5grid-cellHolder] {
// 그리드 셀표현 : 그리드의 컬럼텍스트가 여기에 출력됨
display: block;
box-sizing: border-box;
padding: $ax5grid-cell-padding;
font-size: $ax5grid-font-size;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
@if ($container == "header") {
//text-align: center;
}
&[data-ax5grid-text-align="left"] {
text-align: left;
}
&[data-ax5grid-text-align="center"] {
text-align: center;
}
&[data-ax5grid-text-align="right"] {
text-align: right;
}
&[data-ax5grid-cellHolder="multiLine"] {
white-space: normal;
}
[data-ax5grid-editor] {
position: absolute;
left: 0;
top: 0;
width: 100%;
height: 100%;
border: 0 none;
background: $ax5grid-bg;
&::-ms-clear {
display: none;
}
}
[data-ax5select] {
position: absolute;
display: block;
left: 0;
top: 0;
width: 100%;
height: 100%;
border: 0px none;
background: $ax5grid-bg;
.ax5select-display {
height: 100%;
border-radius: 0;
}
}
[data-ax5grid-editor="checkbox"] {
display: inline-block;
position: relative;
border: $ax5grid-cell-checkbox-border;
border-radius: $ax5grid-cell-checkbox-border-radius;
@include ax-background(top, $ax5grid-cell-checkbox-bg-colors);
height: 100%;
&:after {
content: '';
width: 60%;
height: 40%;
position: absolute;
top: 20%;
right: 20%;
border: 0.2em solid $ax5grid-cell-checkbox-arrow-color;
border-top: none;
border-right: none;
background: transparent;
opacity: 0.0;
@include transform(rotate(-50deg));
}
&[data-ax5grid-checked="true"] {
&:after {
opacity: 1.0;
}
}
}
[data-ax5grid-tnode-arrow] {
display: inline-block;
box-sizing: content-box;
text-align: right;
text-shadow: 0 -1px #fff;
padding: 0 5px 0 0;
}
a[data-ax5grid-tnode-arrow] {
cursor: pointer;
text-decoration: none;
&:hover {
text-decoration: none;
}
}
[data-ax5grid-tnode-item="group"] {
display: inline-block;
}
[data-ax5grid-tnode-item="item"] {
display: inline-block;
}
}
}
@mixin gridRowBackground() {
&.tr-0 {
background: $ax5grid-row-bg-0;
}
&.tr-1 {
background: $ax5grid-row-bg-1;
}
&.tr-2 {
background: $ax5grid-row-bg-2;
}
&.tr-3 {
background: $ax5grid-row-bg-3;
}
&.hover {
background: $ax5grid-row-hover-bg;
}
&[data-ax5grid-grouping-tr="true"] {
background: $ax5grid-row-grouping-bg;
}
&[data-ax5grid-selected="true"] {
background: $ax5grid-row-selected;
td {
//color: #fff;
//box-shadow: inset 1px 1px 0px 0px #fff;
&[data-ax5grid-column-attr="rowSelector"],
&[data-ax5grid-column-attr="lineNumber"] {
box-shadow: none;
}
&[data-ax5grid-column-attr="rowSelector"] {
.checkBox {
&:after {
opacity: 1;
}
}
}
}
}
&[data-ax5grid-disable-selection="true"] {
// background: $ax5grid-row-selected;
td {
&[data-ax5grid-column-attr="rowSelector"] {
.checkBox {
cursor: not-allowed;
@include ax-background(top, $ax5grid-cell-disable-checkbox-bg-colors);
&:after {
opacity: 0;
}
}
}
}
}
// mergeCells 대상 컬럼 배경생 통일.
td.merged {
background: $ax5grid-row-bg-1;
}
}
@mixin gridPanel($container) {
[data-ax5grid-panel] {
@include gridBoxModal();
position: absolute;
overflow: hidden;
/*
overflow: hidden;
-webkit-overflow-scrolling: touch;
transform: translate3d(0, 0, 0);
*/
table {
table-layout: fixed;
border-collapse: separate;
border-spacing: 0;
border: 0 none;
width: 100%;
@if ($container == "header") {
height: 100%;
}
tr {
border-bottom: 0 none;
@include gridRowBackground();
td {
@include gridColumn($container);
}
}
}
&[data-ax5grid-panel="aside-header"] {
border-right: $ax5grid-aside-border;
table {
tr {
td {
text-align: center;
}
}
}
}
&[data-ax5grid-panel="top-aside-body"],
&[data-ax5grid-panel="aside-body"],
&[data-ax5grid-panel="bottom-aside-body"] {
border-right: $ax5grid-aside-border;
background: $ax5grid-aside-bg;
table {
tr {
background: $ax5grid-aside-bg;
td {
text-align: center;
box-shadow: $ax5grid-aside-column-shadow;
}
}
}
}
&[data-ax5grid-panel="left-header"],
&[data-ax5grid-panel="top-left-body"],
&[data-ax5grid-panel="left-body"],
&[data-ax5grid-panel="bottom-left-body"] {
border-right: $ax5grid-frozen-line-border; /// frozen Line color
}
&[data-ax5grid-panel="top-aside-body"],
&[data-ax5grid-panel="top-left-body"],
&[data-ax5grid-panel="top-body"],
&[data-ax5grid-panel="top-right-body"] {
border-bottom: $ax5grid-frozen-line-border; /// frozen Line color
}
&[data-ax5grid-panel="bottom-aside-body"],
&[data-ax5grid-panel="bottom-left-body"],
&[data-ax5grid-panel="bottom-body"],
&[data-ax5grid-panel="bottom-right-body"] {
border-top: $ax5grid-footsum-line-border; /// footSum Line color
}
&[data-ax5grid-panel="bottom-aside-body"],
&[data-ax5grid-panel="bottom-left-body"],
&[data-ax5grid-panel="bottom-body"],
&[data-ax5grid-panel="bottom-right-body"] {
background: $ax5grid-footsum-bg;
}
[data-ax5grid-panel-scroll] {
position: absolute;
left: 0;
top: 0;
}
}
}
@mixin scrollBar($type) {
position: absolute;
top: 0;
left: 0;
@include border-top-radius($ax5grid-scroll-bar-border-radius);
@include border-bottom-radius($ax5grid-scroll-bar-border-radius);
box-sizing: border-box;
border: $ax5grid-scroll-bar-border;
background: $ax5grid-scroll-bar-bg;
@if ($type == "vertical-bar") {
cursor: ns-resize;
} @else {
cursor: ew-resize;
}
&:hover {
border: $ax5grid-scroll-bar-hover-border;
background: $ax5grid-scroll-bar-hover-bg;
}
}
@mixin resizer($type: "horizontal") {
display: none;
&.live {
display: block;
position: absolute;
top: 0;
left: 0;
background: $ax5grid-resizer-color;
opacity: 0.5;
@if ($type == "vertical") {
height: $ax5grid-resizer-size;
width: 100%;
cursor: row-resize;
} @else {
height: 100%;
width: $ax5grid-resizer-size;
cursor: col-resize;
}
}
}
// body
[data-ax5grid] {
box-sizing: border-box;
*,
*:before,
*:after {
box-sizing: border-box;
}
[data-ax5grid-container="root"] {
@include gridBoxModal();
position: relative;
background: $ax5grid-bg;
border: $ax5grid-border;
overflow: hidden;
[data-ax5grid-container="hidden"] {
@include gridBoxModal();
position: absolute;
//z-index: 100;
left: -100%;
top: -100%;
height: 100%;
width: 100%;
}
[data-ax5grid-container="header"] {
user-select: none;
@include gridBoxModal();
position: relative;
overflow: hidden;
@include ax-background(top, $ax5grid-header-column-bg-colors);
border: 0px none;
border-bottom: $ax5grid-header-column-border;
@include gridPanel("header");
color: $ax5grid-header-column-color;
[data-ax5grid-column-resizer] {
position: absolute;
right: 0;
top: 0;
width: $ax5grid-header-column-resizer-size;
height: 100%;
cursor: col-resize;
&:hover {
background: $ax5grid-header-column-resizer-color;
opacity: 0.5;
}
}
[data-ax5grid-column-sort] {
position: relative;
//right: 0;
//top: 2px;
width: 10px;
height: 10px;
display: inline-block;
@mixin sort-arrow($arrow-size, $ratio-0, $ratio-1, $arrow-color, $opacity, $direction) {
position: absolute;
content: ' ';
width: 0;
height: 0;
display: inline-block;
border-left: $arrow-size/$ratio-0 solid transparent;
border-right: $arrow-size/$ratio-0 solid transparent;
@if ($direction == "up") {
border-bottom: ($arrow-size)/$ratio-1 solid $arrow-color;
} @else {
border-top: ($arrow-size)/$ratio-1 solid $arrow-color;
}
background: transparent;
opacity: $opacity;
}
&:before {
top: 0;
left: 0;
@include sort-arrow($ax5grid-header-sorter-size, 2.5, 2.2, $ax5grid-header-sorter-color, 0.3, "up");
}
&:after {
bottom: 0;
left: 0;
@include sort-arrow($ax5grid-header-sorter-size, 2.5, 2.2, $ax5grid-header-sorter-color, 0.3, "down");
}
&[data-ax5grid-column-sort-order="asc"] {
&:before {
top: 2px;
left: 0;
@include sort-arrow($ax5grid-header-sorter-size + 1, 2.5, 2.0, $ax5grid-header-sorter-color, 0.8, "up");
}
&:after {
display: none;
}
}
&[data-ax5grid-column-sort-order="desc"] {
&:before {
display: none;
}
&:after {
bottom: 2px;
left: 0;
@include sort-arrow($ax5grid-header-sorter-size + 1, 2.5, 2.0, $ax5grid-header-sorter-color, 0.8, "down");
}
}
}
[data-ax5grid-column-filter] {
// 개발중..
$filter-size: 10px;
position: absolute;
left: 0;
top: 0;
width: 10px;
height: 10px;
cursor: pointer;
&:before {
content: ' ';
width: 0;
height: 0;
display: inline-block;
border-left: $filter-size/2 solid transparent;
border-right: $filter-size/2 solid transparent;
border-top: ($filter-size) solid #000;
background: transparent;
opacity: 1;
}
}
}
[data-ax5grid-container="body"] {
@include gridBoxModal();
position: relative;
overflow: hidden;
@include gridPanel("body");
/*
@keyframes fadein {
from { opacity: 0; }
to { opacity: 1; }
}
[data-ax5grid-panel-scroll="body"]{
table {
@include animation(fadein 0.3s);
}
}
*/
}
[data-ax5grid-container="page"] {
@include gridBoxModal();
position: absolute;
bottom: 0;
left: 0;
width: 100%;
overflow: hidden;
@include ax-background(top, $ax5grid-page-bg-colors);
border: 0px none;
border-top: $ax5grid-page-border;
[data-ax5grid-page="holder"] {
@include gridBoxModal();
display: table;
//table-layout: fixed;
width: 100%;
height: 100%;
[data-ax5grid-page="navigation"] {
@include gridBoxModal();
display: table-cell;
vertical-align: middle;
text-align: left;
padding-left: $ax5grid-page-navigation-padding;
font-size: $ax5grid-page-navigation-font-size;
[data-ax5grid-page-navigation="holder"] {
display: table;
[data-ax5grid-page-navigation="cell"], [data-ax5grid-page-navigation="cell-paging"] {
display: table-cell;
vertical-align: middle;
}
[data-ax5grid-page-navigation="cell-paging"] {
padding: 0 $ax5grid-page-navigation-padding;
}
[data-ax5grid-page-move] {
box-sizing: border-box;
min-width: $ax5grid-page-navigation-btn-min-width;
border-radius: $ax5grid-page-navigation-btn-border-radius;
padding: 1px;
border: $ax5grid-page-navigation-btn-border;
background: $ax5grid-page-navigation-btn-bg;
font-size: $ax5grid-page-navigation-btn-font-size;
color: $ax5grid-page-navigation-btn-color;
outline: 0;
&[data-ax5grid-page-selected="true"], &:active {
background-color: $ax5grid-page-navigation-btn-hover-bg;
color: $ax5grid-page-navigation-btn-hover-color;
}
&:hover {
text-decoration: underline;
}
}
}
}
[data-ax5grid-page="status"] {
@include gridBoxModal();
display: table-cell;
text-align: right;
vertical-align: middle;
padding-right: $ax5grid-page-status-padding;
font-size: $ax5grid-page-status-font-size;
color: $ax5grid-page-status-color;
}
}
}
[data-ax5grid-container="scroller"] {
@include gridBoxModal();
position: absolute;
right: 0px;
bottom: 0px;
$scroller-size: 15px;
[data-ax5grid-scroller="vertical"] {
box-sizing: border-box;
position: absolute;
display: none;
right: 0;
bottom: 0;
width: $scroller-size;
height: 100%;
background: $ax5grid-scroll-track-bg;
border-left: $ax5grid-scroll-track-border;
[data-ax5grid-scroller="vertical-bar"] {
@include scrollBar("vertical-bar");
}
}
[data-ax5grid-scroller="horizontal"] {
box-sizing: border-box;
position: absolute;
display: none;
right: 0;
bottom: 0;
height: $scroller-size;
width: 100%;
background: $ax5grid-scroll-track-bg;
border-top: $ax5grid-scroll-track-border;
[data-ax5grid-scroller="horizontal-bar"] {
@include scrollBar("horizontal-bar");
}
}
[data-ax5grid-scroller="corner"] {
position: absolute;
display: none;
right: 0px;
bottom: 0px;
width: $scroller-size;
height: $scroller-size;
background: $ax5grid-scroll-corner-bg;
border-top: $ax5grid-scroll-track-border;
border-left: $ax5grid-scroll-track-border;
}
}
[data-ax5grid-resizer="horizontal"] {
@include resizer("horizontal");
}
[data-ax5grid-resizer="vertical"] {
@include resizer("vertical");
}
}
}