
@import "variables_table.scss";



//Main Theme Variables
$backgroundColor: $background; //background color of tabulator
$textSize:14px; //table text size

//header themeing
$headerBackgroundColor:$headerBackground; //border to tablulator
$headerTextColor:$headerColor; //header text colour
$headerBorderColor:#ddd;  //header border color
$headerSeperatorColor:#999; //header bottom seperator color
$headerMargin:4px; //padding round header

//column header arrows
$sortArrowActive: #666;
$sortArrowInactive: #bbb;

//row themeing
$rowBorderColor:#ddd; //table border color
$rowTextColor:#333; //table text color

$rowSelectedBackground: #9ABCEA; //row background color when selected
$rowSelectedBackgroundHover: #769BCC;//row background color when selected and hovered


$editBoxColor:#1D68CD; //border color for edit boxes
$errorColor:#dd0000; //error indication

//footer themeing
$footerBackgroundColor:#fff; //border to tablulator
$footerTextColor:#555; //footer text colour
$footerBorderColor:#aaa; //footer border color
$footerSeperatorColor:#999; //footer bottom seperator color



//Tabulator Containing Element
.tabulator{
	position: relative;
	background-color: $backgroundColor;
	overflow:hidden;
	font-size:$textSize;
	text-align: left;
	width: 100%;

	margin: $margin;
	border: $border;
	box-shadow: $boxShadow;
	border-radius: $borderRadius;
	color: $color;

	-webkit-transform: translatez(0);
	-moz-transform: translatez(0);
	-ms-transform: translatez(0);
	-o-transform: translatez(0);
	transform: translatez(0);

	&[tabulator-layout="fitDataFill"]{
		.tabulator-tableHolder{
			.tabulator-table{
				min-width:100%;
			}
		}
	}

	&.tabulator-block-select{
		user-select: none;
	}

	//column header containing element
	.tabulator-header{
		position:relative;
		box-sizing: border-box;

		width:100%;

		border-bottom: $headerBorder;
		background-color: $headerBackgroundColor;

		box-shadow: $headerBoxShadow;

		color: $headerTextColor;
		font-style: $headerFontStyle;
		font-weight: $headerFontWeight;
		text-transform: $headerTextTransform;

		white-space: nowrap;
		overflow:hidden;

		-moz-user-select: none;
		-khtml-user-select: none;
		-webkit-user-select: none;
		-o-user-select: none;

		//individual column header element
		.tabulator-col{
			display:inline-block;

			position:relative;
			box-sizing:border-box;
			// border-right: $headerDivider;
			background-color: $headerBackgroundColor;
			text-align:left;
			vertical-align: bottom;
			overflow: hidden;

			&.tabulator-moving{
				position: absolute;
				border:1px solid  $headerSeperatorColor;
				background:darken($headerBackgroundColor, 10%);
				pointer-events: none;
			}

			//hold content of column header
			.tabulator-col-content{
				position: relative;
				padding: $headerVerticalPadding $headerHorizontalPadding;

				//hold title of column header
				.tabulator-col-title{
					box-sizing:border-box;
					width: 100%;

					white-space: nowrap;
					overflow: hidden;
					text-overflow: ellipsis;
					vertical-align:bottom;

					//element to hold title editor
					.tabulator-title-editor{
						box-sizing: border-box;
						width: 100%;

						border:1px solid #999;

						padding:1px;

						background: #fff;
					}
				}

				//column sorter arrow
				.tabulator-arrow{
					display: inline-block;
					position: absolute;
					top:18px;
					right:8px;
					width: 0;
					height: 0;
					border-left: 6px solid transparent;
					border-right: 6px solid transparent;
					border-bottom: 6px solid $sortArrowInactive;
				}

			}

			//complex header column group
			&.tabulator-col-group{

				//gelement to hold sub columns in column group
				.tabulator-col-group-cols{
					position:relative;
					display: flex;

					border-top:1px solid $headerBorderColor;
					overflow: hidden;

					.tabulator-col:last-child{
						margin-right:-1px;
					}
				}
			}


			//hide left resize handle on first column
			&:first-child{
				.tabulator-col-resize-handle.prev{
					display: none;
				}
			}

			//placeholder element for sortable columns
			&.ui-sortable-helper{
				position: absolute;
				background-color:darken($headerBackgroundColor, 10%) !important;
				border:1px solid $headerBorderColor;
			}

			//header filter containing element
			.tabulator-header-filter{
				position: relative;
				box-sizing: border-box;
				margin-top:2px;
				width:100%;
				text-align: center;

				//styling adjustment for inbuilt editors
				textarea{
					height:auto !important;
				}

				svg{
					margin-top: 3px;
				}
			}


			//styling child elements for sortable columns
			&.tabulator-sortable{
				.tabulator-col-title{
					padding-right:25px;
				}

				&:hover{
					cursor:pointer;
					background-color:darken($headerBackgroundColor, 10%);
				}

				&[aria-sort="none"]{
					.tabulator-col-content .tabulator-arrow{
						border-top: none;
						border-bottom: 6px solid $sortArrowInactive;
					}
				}

				&[aria-sort="asc"]{
					.tabulator-col-content .tabulator-arrow{
						border-top: none;
						border-bottom: 6px solid $sortArrowActive;
					}
				}

				&[aria-sort="desc"]{
					.tabulator-col-content .tabulator-arrow{
						border-top: 6px solid $sortArrowActive;
						border-bottom: none;
					}
				}
			}

		}

		.tabulator-frozen{
			display: inline-block;
			position: absolute;

			// background-color: inherit;

			z-index: 10;

			&.tabulator-frozen-left{
				border-right:2px solid $rowBorderColor;
			}

			&.tabulator-frozen-right{
				border-left:2px solid $rowBorderColor;
			}
		}

		.tabulator-calcs-holder{
			box-sizing:border-box;
			min-width:200%;

			background:lighten($headerBackgroundColor, 5%) !important;

			.tabulator-row{
				background:lighten($headerBackgroundColor, 5%) !important;

				.tabulator-col-resize-handle{
					display: none;
				}
			}

			border-top:1px solid $rowBorderColor;
			border-bottom:1px solid $headerBorderColor;

			overflow: hidden;
		}
	}



	//scrolling element to hold table
	.tabulator-tableHolder{
		position:relative;
		width:100%;
		white-space: nowrap;
		overflow:auto;
		-webkit-overflow-scrolling: touch;

		&:focus{
			outline: none;
		}

		//default placeholder element
		.tabulator-placeholder{
			position: absolute;
			box-sizing:border-box;
			display: flex;
			align-items:center;

			top:0;
			left:0;
			height:100%;
			width:100%;

			span{
				display: inline-block;

				margin:0 auto;
				padding:10px;

				color:#000;
				font-weight: bold;
				font-size: 20px;
			}
		}

		//element to hold table rows
		.tabulator-table{
			position:relative;
			display:inline-block;
			white-space: nowrap;
			overflow:visible;
			color:$rowTextColor;

			.tabulator-row{
				&.tabulator-calcs{
					font-weight: bold;
					background:darken($background, 5%) !important;

					&.tabulator-calcs-top{
						border-bottom:2px solid $rowBorderColor;
					}

					&.tabulator-calcs-bottom{
						border-top:2px solid $rowBorderColor;
					}
				}
			}
		}
	}

	//row element
	.tabulator-row{
		position: relative;
		box-sizing: border-box;

		min-height:$textSize + ($headerMargin * 2);
		border-bottom: $rowBorder;

		&.tabulator-selectable:hover{
			box-shadow: $activeBoxShadow;
			background: $activeBackgroundColor !important;
			color: $activeColor !important;
			cursor: pointer;
		}

		&.tabulator-selected{
			background-color:$rowSelectedBackground;
		}

		&.tabulator-selected:hover{
			background-color:$rowSelectedBackgroundHover;
			cursor: pointer;
		}

		&.tabulator-moving{
			position: absolute;

			border-top:1px solid  $rowBorderColor;
			border-bottom:1px solid  $rowBorderColor;

			pointer-events: none !important;
			z-index:15;
		}

		.tabulator-frozen{
			display: inline-block;
			position: absolute;

			background-color: inherit;

			z-index: 10;

			&.tabulator-frozen-left{
				border-right:2px solid $rowBorderColor;
			}

			&.tabulator-frozen-right{
				border-left:2px solid $rowBorderColor;
			}
		}

		//cell element
		.tabulator-cell{
			display:inline-block;
			position: relative;
			box-sizing:border-box;
			padding: $cellVerticalPadding $cellHorizontalPadding;
			// border-right:1px solid $rowBorderColor;
			vertical-align:middle;
			white-space:nowrap;
			overflow:hidden;
			text-overflow:ellipsis;

			&:last-of-type{
				border-right: none;
			}

			&.tabulator-editing{
				border:1px solid  $editBoxColor;
				padding: 0;

				input, select{
					border:1px;
					background:transparent;
				}
			}

			&.tabulator-validation-fail{
				border:1px solid $errorColor;
				input, select{
					border:1px;
					background:transparent;

					color: $errorColor;
				}
			}

			//hide left resize handle on first column
			&:first-child{
				.tabulator-col-resize-handle.prev{
					display: none;
				}
			}

			//movable row handle
			&.tabulator-row-handle{

				display: inline-flex;
				align-items:center;

				-moz-user-select: none;
				-khtml-user-select: none;
				-webkit-user-select: none;
				-o-user-select: none;

				//handle holder
				.tabulator-row-handle-box{
					width:80%;

					//Hamburger element
					.tabulator-row-handle-bar{
						width:100%;
						height:3px;
						margin:2px 10% 0 10%;
						background:#666;
					}
				}
			}
		}

		//row grouping element
		&.tabulator-group{

			box-sizing:border-box;
			border-bottom:1px solid #999;
			border-right:1px solid $rowBorderColor;
			border-top:1px solid #999;
			padding:5px;
			padding-left:10px;
			background:#fafafa;
			font-weight:bold;

			min-width: 100%;

			&:hover{
				cursor:pointer;
				background-color:rgba(0,0,0,.1);
			}

			&.tabulator-group-visible{
				.tabulator-arrow{
					margin-right:10px;
					border-left: 6px solid transparent;
					border-right: 6px solid transparent;
					border-top: 6px solid $sortArrowActive;
					border-bottom: 0;
				}
			}

			&.tabulator-group-level-1{
				.tabulator-arrow{
					margin-left:20px;
				}
			}

			&.tabulator-group-level-2{
				.tabulator-arrow{
					margin-left:40px;
				}
			}

			&.tabulator-group-level-3{
				.tabulator-arrow{
					margin-left:60px;
				}
			}

			&.tabulator-group-level-4{
				.tabulator-arrow{
					margin-left:80px;
				}
			}

			&.tabulator-group-level-5{
				.tabulator-arrow{
					margin-left:1000px;
				}
			}

			//sorting arrow
			.tabulator-arrow{
				display: inline-block;
				width: 0;
				height: 0;
				margin-right:16px;
				border-top: 6px solid transparent;
				border-bottom: 6px solid transparent;
				border-right: 0;
				border-left: 6px solid $sortArrowActive;
				vertical-align:middle;
			}

			span{
				margin-left:10px;
				color:#666;
			}
		}
	}

	//column resize handles
	.tabulator-col-resize-handle{
		position:absolute;
		right:0;
		top:0;
		bottom:0;
		width:5px;

		&.prev{
			left:0;
			right:auto;
		}

		&:hover{
			cursor:ew-resize;
		}
	}


	//footer element
	.tabulator-footer{
		padding: $footerVerticalPadding $footerHorizontalPadding;

		border-top: $footerBorder;
		box-shadow: $footerBoxShadow;

		background: $footerBackground;


		text-align:right;
		color: $footerColor;

		font-style: $footerFontStyle;
		font-weight: $footerFontWeight;
		text-transform: $footerTextTransform;

		white-space:nowrap;
		user-select:none;

		-moz-user-select: none;
		-khtml-user-select: none;
		-webkit-user-select: none;
		-o-user-select: none;

		.tabulator-calcs-holder{
			box-sizing:border-box;
			width:calc("100% + 20px");
			margin:(-$footerVerticalPadding) (-$footerHorizontalPadding) $footerVerticalPadding (-$footerHorizontalPadding);

			text-align: left;

			background:lighten($footerBackground, 5%) !important;

			.tabulator-row{
				font-weight: bold;
				background:lighten($footerBackground, 5%) !important;

				.tabulator-col-resize-handle{
					display: none;
				}
			}

			border-bottom:1px solid $rowBorderColor;
			border-top:1px solid $rowBorderColor;

			overflow: hidden;

			&:only-child{
				margin-bottom:-$footerVerticalPadding;
				border-bottom:none;
			}
		}

		//pagination container element
		.tabulator-pages{
			margin:0 7px;
		}

		//pagination button
		.tabulator-page{
			display:inline-block;
			margin:0 2px;
			border:1px solid $footerBorderColor;
			border-radius:3px;
			padding:2px 5px;
			background:rgba(255,255,255,.2);
			color: $footerTextColor;
			font-family:inherit;
			font-weight:inherit;
			font-size:inherit;

			&.active{
				color:#d00;
			}

			&:disabled{
				opacity:.5;
			}

			&:not(.disabled){
				&:hover{
					cursor:pointer;
					background:rgba(0,0,0,.2);
					color:#fff;
				}
			}
		}
	}

	//holding div that contains loader and covers tabulator element to prevent interaction
	.tablulator-loader{
		position:absolute;
		display: flex;
		align-items:center;

		top:0;
		left:0;
		z-index:100;

		height:100%;
		width:100%;
		background:rgba(0,0,0,.4);
		text-align:center;

		//loading message element
		.tabulator-loader-msg{
			display:inline-block;

			margin:0 auto;
			padding:10px 20px;

			border-radius:10px;

			background:#fff;
			font-weight:bold;
			font-size:16px;

			//loading message
			&.tabulator-loading{
				border:4px solid #333;
				color:#000;
			}

			//error message
			&.tabulator-error{
				border:4px solid #D00;
				color:#590000;
			}
		}
	}


	//Semantic-ui theming classes

	.tabulator-tableHolder{
		.tabulator-table{
			.tabulator-row{
				&.positive, .tabulator-cell.positive{
					box-shadow: $positiveBoxShadow;
					background: $positiveBackgroundColor !important;
					color: $positiveColor !important;

					&:hover{
						background: $positiveBackgroundHover !important;
						color: $positiveColorHover !important;
					}
				}

				&.negative, .tabulator-cell.negative{
					box-shadow: $negativeBoxShadow;
					background: $negativeBackgroundColor !important;
					color: $negativeColor !important;

					&:hover{
						background: $negativeBackgroundHover !important;
						color: $negativeColorHover !important;
					}
				}

				&.error, .tabulator-cell.error{
					box-shadow: $errorBoxShadow;
					background: $errorBackgroundColor !important;
					color: $errorColor !important;

					&:hover{
						background: $errorBackgroundHover !important;
						color: $errorColorHover !important;
					}
				}

				&.warning, .tabulator-cell.warning{
					box-shadow: $warningBoxShadow;
					background: $warningBackgroundColor !important;
					color: $warningColor !important;

					&:hover{
						background: $warningBackgroundHover !important;
						color: $warningColorHover !important;
					}
				}

				&.active, .tabulator-cell.active{
					box-shadow: $activeBoxShadow;
					background: $activeBackgroundColor !important;
					color: $activeColor !important;

					&:hover{
						background: $positiveBackgroundHover !important;
						color: $positiveColorHover !important;
					}
				}

				&.active, &.disabled:hover, .tabulator-cell.active{
					pointer-events: none;
					color: $disabledTextColor;
				}
			}
		}
	}


	&.inverted{

		background: $invertedBackground;
		color: $invertedCellColor;
		border: $invertedBorder;

		.tabulator-header{
			background-color: $invertedHeaderBackground;
			border-color: $invertedHeaderBorderColor !important;
			color: $invertedHeaderColor;

			.tabulator-col{
				border-color: $invertedCellBorderColor !important;
			}
		}

		.tabulator-tableHolder{
			.tabulator-table{
				.tabulator-row{
					color: $invertedCellColor;
					border: $invertedBorder;

					.tabulator-cell{
						border-color: $invertedCellBorderColor !important;
					}
				}
			}
		}

		.tabulator-footer{
			background: $definitionPageBackground;
		}
	}

	&.striped{
		.tabulator-tableHolder{
			.tabulator-table{
				.tabulator-row{
					&:nth-child(even){
						background-color: $basicTableStripedBackground !important;
					}
				}
			}
		}
	}

	&.celled{
		border:1px solid $borderColor;

		.tabulator-header{
			.tabulator-col{
				border-right:$cellBorder;
			}
		}

		.tabulator-tableHolder{
			.tabulator-table{
				.tabulator-row{
					.tabulator-cell{
						border-right:$cellBorder;
					}
				}
			}
		}

	}


	&[class*="single line"]{
		.tabulator-tableHolder{
			.tabulator-table{
				.tabulator-row{
					.tabulator-cell{
						border-right:none;
					}
				}
			}
		}
	}

	//coloured table varients
	/* Red */
	&.red {
		border-top: $coloredBorderSize solid $red;
	}
	&.inverted.red {
		background-color: $red !important;
		color: $white !important;
	}

	/* Orange */
	&.orange {
		border-top: $coloredBorderSize solid $orange;
	}
	&.inverted.orange {
		background-color: $orange !important;
		color: $white !important;
	}

	/* Yellow */
	&.yellow {
		border-top: $coloredBorderSize solid $yellow;
	}
	&.inverted.yellow {
		background-color: $yellow !important;
		color: $white !important;
	}

	/* Olive */
	&.olive {
		border-top: $coloredBorderSize solid $olive;
	}
	&.inverted.olive {
		background-color: $olive !important;
		color: $white !important;
	}

	/* Green */
	&.green {
		border-top: $coloredBorderSize solid $green;
	}
	&.inverted.green {
		background-color: $green !important;
		color: $white !important;
	}

	/* Teal */
	&.teal {
		border-top: $coloredBorderSize solid $teal;
	}
	&.inverted.teal {
		background-color: $teal !important;
		color: $white !important;
	}

	/* Blue */
	&.blue {
		border-top: $coloredBorderSize solid $blue;
	}
	&.inverted.blue {
		background-color: $blue !important;
		color: $white !important;
	}

	/* Violet */
	&.violet {
		border-top: $coloredBorderSize solid $violet;
	}
	&.inverted.violet {
		background-color: $violet !important;
		color: $white !important;
	}

	/* Purple */
	&.purple {
		border-top: $coloredBorderSize solid $purple;
	}
	&.inverted.purple {
		background-color: $purple !important;
		color: $white !important;
	}

	/* Pink */
	&.pink {
		border-top: $coloredBorderSize solid $pink;
	}
	&.inverted.pink {
		background-color: $pink !important;
		color: $white !important;
	}

	/* Brown */
	&.brown {
		border-top: $coloredBorderSize solid $brown;
	}
	&.inverted.brown {
		background-color: $brown !important;
		color: $white !important;
	}

	/* Grey */
	&.grey {
		border-top: $coloredBorderSize solid $grey;
	}
	&.inverted.grey {
		background-color: $grey !important;
		color: $white !important;
	}

	/* Black */
	&.black {
		border-top: $coloredBorderSize solid $black;
	}
	&.inverted.black {
		background-color: $black !important;
		color: $white !important;
	}

	&.padded{
		.tabulator-header{
			.tabulator-col{
				.tabulator-col-content{
					padding: $paddedVerticalPadding $paddedHorizontalPadding;

					.tabulator-arrow{
						top:20px;
					}
				}
			}
		}
		.tabulator-tableHolder{
			.tabulator-table{
				.tabulator-row{
					.tabulator-cell{
						padding: $paddedVerticalPadding $paddedHorizontalPadding;
					}
				}
			}
		}

		&.very{
			.tabulator-header{
				.tabulator-col{
					.tabulator-col-content{
						padding: $veryPaddedVerticalPadding $veryPaddedHorizontalPadding;

						.tabulator-arrow{
							top:26px;
						}
					}
				}
			}
			.tabulator-tableHolder{
				.tabulator-table{
					.tabulator-row{
						.tabulator-cell{
							padding: $veryPaddedVerticalPadding $veryPaddedHorizontalPadding;
						}
					}
				}
			}
		}
	}

	&.compact{
		.tabulator-header{
			.tabulator-col{
				.tabulator-col-content{
					padding: $compactVerticalPadding $compactHorizontalPadding;

					.tabulator-arrow{
						top:12px;
					}
				}
			}
		}
		.tabulator-tableHolder{
			.tabulator-table{
				.tabulator-row{
					.tabulator-cell{
						padding: $compactVerticalPadding $compactHorizontalPadding;
					}
				}
			}
		}

		&.very{
			.tabulator-header{
				.tabulator-col{
					.tabulator-col-content{
						padding: $veryCompactVerticalPadding $veryCompactHorizontalPadding;

						.tabulator-arrow{
							top:10px;
						}
					}
				}
			}
			.tabulator-tableHolder{
				.tabulator-table{
					.tabulator-row{
						.tabulator-cell{
							padding: $veryCompactVerticalPadding $veryCompactHorizontalPadding;
						}
					}
				}
			}
		}
	}
}