UNPKG

jspreadsheet

Version:

Jspreadsheet is a lightweight, vanilla javascript data grid plugin to create amazing web-based interactive tables and spreadsheets compatible with other spreadsheet software.

1,717 lines (1,436 loc) 41 kB
.jss_container { display:inline-block; box-sizing: border-box; overscroll-behavior: contain; outline: none; } .jss_container.jtabs { max-width: initial; } .jss_container.fullscreen { position:fixed; top: 0; left: 0; width: 100% !important; height: 100% !important; margin: 0; background-color: #fff; z-index: 7; display: flex; flex-direction: column; } .jss_container.fullscreen .jtabs-content { flex: 1; overflow: hidden; } .jss_container.fullscreen .jss_worksheet { height: 100%; flex-direction: column; align-content: stretch; } .jss_container.fullscreen .jss_worksheet.jtabs-selected { display: flex; } .jss_container.fullscreen .jss_worksheet .jss_content { flex: 1; width: 100% !important; max-width: initial !important; max-height: initial !important; } .jss_container .jss_filter { margin-top:5px; padding-top:5px; } .jss_content { display: block; position: relative; box-sizing: border-box; scrollbar-width: thin; border-top: 1px solid #ccc; box-shadow: inset 1px 0 0 0 #ccc; } .jss_content_overflow { width: 100%; height: 100%; } .jss_container.fullscreen .jss_content, .jss_content_overflow { overflow: auto; border-right: 1px solid #ccc; border-bottom: 1px solid #ccc; padding-right: 3px; padding-bottom: 3px; } .jss_container.fullscreen .jss, .jss_content_overflow .jss { position: sticky; top: 0; left: 0; } .jss_content::-webkit-scrollbar { height: 12px; } .jss_content::-webkit-scrollbar { width: 12px; } .jss_content::-webkit-scrollbar-track { background: #f1f1f1; } .jss_content::-webkit-scrollbar-thumb { background: #c1c1c1; } .jss_content::-webkit-scrollbar-thumb:hover { background-color: #a8a8a8; } .jss { border-collapse: separate; table-layout: fixed; white-space: nowrap; empty-cells: show; width: 0; outline: none; border-top: 0; border-left: 0; border-right: 1px solid #ccc; border-bottom: 1px solid #ccc; } .jss.jss_left > tbody > tr > td, .jss > tbody > tr > td.jss_left { text-align: left; } .jss.jss_center > tbody > tr > td, .jss > tbody > tr > td.jss_center { text-align: center; } .jss.jss_right > tbody > tr > td, .jss > tbody > tr > td.jss_right { text-align: right; } .jss > thead > tr > th { border-top: 1px solid #ccc; border-left: 1px solid #ccc; border-right: 1px solid transparent; border-bottom: 1px solid transparent; background-color: #f3f3f3; padding: 6px; cursor: pointer; box-sizing: border-box; overflow: hidden; text-overflow: ellipsis; position: sticky; top: 0; z-index: 4; background-repeat: no-repeat; background-position: center right 0; line-height: normal; font-size: 1em; font-weight: normal; } .jss > thead > tr:first-child > th { border-top: 1px solid transparent; } .jss > thead > tr > th:first-child:after, .jss > thead > tr.jss_nested > th::before, .jss > thead > tr.jss_nested > th::after { cursor:default; } .jss > thead > tr > th:first-child { box-shadow: 1px 1px 0 0 #ccc; } .jss > thead > tr > th.selected { background-color: #dcdcdc; border-bottom: 1px solid transparent; } .jss > thead > tr > th.jss_filters_icon::before { font-family: "Material Icons"; content: 'filter_alt'; position: absolute; right: 0; font-size: 16px; width: 16px; height: 16px; color: #ccc; } .jss > thead > tr > th.jss_filters_active::before { color: #888; } .jss > tbody > tr > td { border-top:1px solid #ccc; border-left:1px solid #ccc; border-right:1px solid transparent; border-bottom:1px solid transparent; box-sizing: border-box; padding: 4px; line-height: normal; height: 24px; text-align: center; white-space: pre; overflow: hidden; } .jss > tbody > tr > td.jss_wrap { white-space: break-spaces; } .jss > tbody > tr > td.jss_row { position: sticky; z-index: 4; left: 0; background-color: #f3f3f3; text-align: center; } .jss > tbody > tr.selected > td.jss_row { background-color: #dcdcdc; border-right: 1px solid transparent; } .jss > thead > tr > th:first-child, .jss > tfoot > tr > td:first-child { position: sticky; left: 0; z-index: 5 !important; } .jss_overflow > tbody > tr > td:not(.jss_frozen):has(+td:empty) { overflow: initial; } .jss_overflow > tbody > tr > td:has(+td.jss_hidden:empty) { overflow: hidden; } .jss_hidden_col, .jss_hidden_row { visibility: collapse; } .jss_hidden_col { width: 0; } .jss_hidden_row { height: 0; } .jss > tbody > tr > td:last-child { overflow:hidden; } .jss > tbody > tr > td > img { max-width: 40px; vertical-align: bottom; } .jss > tbody > tr > td > img.round { object-fit: cover; border-radius: 40px; height: 40px; } .jss > tbody > tr > td > img.small { width: 24px; height: 24px; } .jss > tbody > tr > td.readonly { color:rgba(0,0,0,0.4) } .jss > tbody > tr > td > select, .jss > tbody > tr > td > input, .jss > tbody > tr > td > textarea { border:0; border-radius:0; outline:0; width:100%; margin:0; padding:0; background-color:transparent; box-sizing: border-box; } .jss > tbody > tr > td > textarea { resize: none; display: block; } .jss > tbody > tr > td > input[type=checkbox], .jss > tbody > tr > td > input[type=radio] { display: block; width: initial; margin: 0 auto; } .jss > tbody > tr > td.readonly > input[type=checkbox], .jss > tbody > tr > td.readonly > input[type=radio] { pointer-events: none; opacity: 0.5; } .jss > tbody > tr > td.jss_dropdown { background-repeat: no-repeat; background-position: top 50% right 0; background-image: url("data:image/svg+xml,%0A%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24'%3E%3Cpath fill='none' d='M0 0h24v24H0V0z'/%3E%3Cpath d='M7 10l5 5 5-5H7z' fill='lightgray'/%3E%3C/svg%3E"); text-overflow: ellipsis; overflow-x: hidden; padding-right: 24px; } .jss > tbody > tr > td.jss_dropdown:hover { background-image: url("data:image/svg+xml,%0A%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24'%3E%3Cpath fill='none' d='M0 0h24v24H0V0z'/%3E%3Cpath d='M7 10l5 5 5-5H7z' fill='gray'/%3E%3C/svg%3E"); } .jss > tbody > tr > td.jss_dropdown_tags { white-space: pre-wrap; } .jss > tbody > tr > td.jss_dropdown[title] { background-image: url("data:image/svg+xml,%0A%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24'%3E%3Cpath fill='none' d='M0 0h24v24H0V0z'/%3E%3Cpath d='M7 10l5 5 5-5H7z' fill='lightgray'/%3E%3C/svg%3E"), url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAYAAADED76LAAAACXBIWXMAAAsTAAALEwEAmpwYAAAFuGlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDUgNzkuMTYzNDk5LCAyMDE4LzA4LzEzLTE2OjQwOjIyICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdEV2dD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlRXZlbnQjIiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4wLyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxOSAoV2luZG93cykiIHhtcDpDcmVhdGVEYXRlPSIyMDE5LTAxLTMxVDE4OjU1OjA4WiIgeG1wOk1ldGFkYXRhRGF0ZT0iMjAxOS0wMS0zMVQxODo1NTowOFoiIHhtcDpNb2RpZnlEYXRlPSIyMDE5LTAxLTMxVDE4OjU1OjA4WiIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDphMTlhZDJmOC1kMDI2LTI1NDItODhjOS1iZTRkYjkyMmQ0MmQiIHhtcE1NOkRvY3VtZW50SUQ9ImFkb2JlOmRvY2lkOnBob3Rvc2hvcDpkOGI5NDUyMS00ZjEwLWQ5NDktYjUwNC0wZmU1N2I3Nzk1MDEiIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDplMzdjYmE1ZS1hYTMwLWNkNDUtYTAyNS1lOWYxZjk2MzUzOGUiIGRjOmZvcm1hdD0iaW1hZ2UvcG5nIiBwaG90b3Nob3A6Q29sb3JNb2RlPSIzIj4gPHhtcE1NOkhpc3Rvcnk+IDxyZGY6U2VxPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0iY3JlYXRlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDplMzdjYmE1ZS1hYTMwLWNkNDUtYTAyNS1lOWYxZjk2MzUzOGUiIHN0RXZ0OndoZW49IjIwMTktMDEtMzFUMTg6NTU6MDhaIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxOSAoV2luZG93cykiLz4gPHJkZjpsaSBzdEV2dDphY3Rpb249InNhdmVkIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOmExOWFkMmY4LWQwMjYtMjU0Mi04OGM5LWJlNGRiOTIyZDQyZCIgc3RFdnQ6d2hlbj0iMjAxOS0wMS0zMVQxODo1NTowOFoiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCBDQyAyMDE5IChXaW5kb3dzKSIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8L3JkZjpTZXE+IDwveG1wTU06SGlzdG9yeT4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz4En6MDAAAAX0lEQVQYlX3KOw6AIBBAwS32RpJADXfx0pTET+ERZJ8F8RODFtONsG0QAoh0CSDM82dqodaBdQXnfoLZQM7gPai+wjNNE8R4pTuAYNZSKZASqL7CMy0LxNgJp30fKYUDi3+vIqb/+rUAAAAASUVORK5CYII='); } .jss > tbody > tr > td.jss_dropdown[title]:hover { background-image: url("data:image/svg+xml,%0A%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24'%3E%3Cpath fill='none' d='M0 0h24v24H0V0z'/%3E%3Cpath d='M7 10l5 5 5-5H7z' fill='gray'/%3E%3C/svg%3E"), url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAYAAADED76LAAAACXBIWXMAAAsTAAALEwEAmpwYAAAFuGlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDUgNzkuMTYzNDk5LCAyMDE4LzA4LzEzLTE2OjQwOjIyICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdEV2dD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlRXZlbnQjIiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4wLyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxOSAoV2luZG93cykiIHhtcDpDcmVhdGVEYXRlPSIyMDE5LTAxLTMxVDE4OjU1OjA4WiIgeG1wOk1ldGFkYXRhRGF0ZT0iMjAxOS0wMS0zMVQxODo1NTowOFoiIHhtcDpNb2RpZnlEYXRlPSIyMDE5LTAxLTMxVDE4OjU1OjA4WiIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDphMTlhZDJmOC1kMDI2LTI1NDItODhjOS1iZTRkYjkyMmQ0MmQiIHhtcE1NOkRvY3VtZW50SUQ9ImFkb2JlOmRvY2lkOnBob3Rvc2hvcDpkOGI5NDUyMS00ZjEwLWQ5NDktYjUwNC0wZmU1N2I3Nzk1MDEiIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDplMzdjYmE1ZS1hYTMwLWNkNDUtYTAyNS1lOWYxZjk2MzUzOGUiIGRjOmZvcm1hdD0iaW1hZ2UvcG5nIiBwaG90b3Nob3A6Q29sb3JNb2RlPSIzIj4gPHhtcE1NOkhpc3Rvcnk+IDxyZGY6U2VxPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0iY3JlYXRlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDplMzdjYmE1ZS1hYTMwLWNkNDUtYTAyNS1lOWYxZjk2MzUzOGUiIHN0RXZ0OndoZW49IjIwMTktMDEtMzFUMTg6NTU6MDhaIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxOSAoV2luZG93cykiLz4gPHJkZjpsaSBzdEV2dDphY3Rpb249InNhdmVkIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOmExOWFkMmY4LWQwMjYtMjU0Mi04OGM5LWJlNGRiOTIyZDQyZCIgc3RFdnQ6d2hlbj0iMjAxOS0wMS0zMVQxODo1NTowOFoiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCBDQyAyMDE5IChXaW5kb3dzKSIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8L3JkZjpTZXE+IDwveG1wTU06SGlzdG9yeT4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz4En6MDAAAAX0lEQVQYlX3KOw6AIBBAwS32RpJADXfx0pTET+ERZJ8F8RODFtONsG0QAoh0CSDM82dqodaBdQXnfoLZQM7gPai+wjNNE8R4pTuAYNZSKZASqL7CMy0LxNgJp30fKYUDi3+vIqb/+rUAAAAASUVORK5CYII='); } .jss > tbody > tr > td[title] { background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAYAAADED76LAAAACXBIWXMAAAsTAAALEwEAmpwYAAAFuGlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDUgNzkuMTYzNDk5LCAyMDE4LzA4LzEzLTE2OjQwOjIyICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdEV2dD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlRXZlbnQjIiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4wLyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxOSAoV2luZG93cykiIHhtcDpDcmVhdGVEYXRlPSIyMDE5LTAxLTMxVDE4OjU1OjA4WiIgeG1wOk1ldGFkYXRhRGF0ZT0iMjAxOS0wMS0zMVQxODo1NTowOFoiIHhtcDpNb2RpZnlEYXRlPSIyMDE5LTAxLTMxVDE4OjU1OjA4WiIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDphMTlhZDJmOC1kMDI2LTI1NDItODhjOS1iZTRkYjkyMmQ0MmQiIHhtcE1NOkRvY3VtZW50SUQ9ImFkb2JlOmRvY2lkOnBob3Rvc2hvcDpkOGI5NDUyMS00ZjEwLWQ5NDktYjUwNC0wZmU1N2I3Nzk1MDEiIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDplMzdjYmE1ZS1hYTMwLWNkNDUtYTAyNS1lOWYxZjk2MzUzOGUiIGRjOmZvcm1hdD0iaW1hZ2UvcG5nIiBwaG90b3Nob3A6Q29sb3JNb2RlPSIzIj4gPHhtcE1NOkhpc3Rvcnk+IDxyZGY6U2VxPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0iY3JlYXRlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDplMzdjYmE1ZS1hYTMwLWNkNDUtYTAyNS1lOWYxZjk2MzUzOGUiIHN0RXZ0OndoZW49IjIwMTktMDEtMzFUMTg6NTU6MDhaIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxOSAoV2luZG93cykiLz4gPHJkZjpsaSBzdEV2dDphY3Rpb249InNhdmVkIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOmExOWFkMmY4LWQwMjYtMjU0Mi04OGM5LWJlNGRiOTIyZDQyZCIgc3RFdnQ6d2hlbj0iMjAxOS0wMS0zMVQxODo1NTowOFoiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCBDQyAyMDE5IChXaW5kb3dzKSIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8L3JkZjpTZXE+IDwveG1wTU06SGlzdG9yeT4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz4En6MDAAAAX0lEQVQYlX3KOw6AIBBAwS32RpJADXfx0pTET+ERZJ8F8RODFtONsG0QAoh0CSDM82dqodaBdQXnfoLZQM7gPai+wjNNE8R4pTuAYNZSKZASqL7CMy0LxNgJp30fKYUDi3+vIqb/+rUAAAAASUVORK5CYII='); background-repeat: no-repeat; background-position: top 0 right -1px; } .jss > tbody > tr > td.jss_richtext { white-space: initial !important; } .jss > tbody > tr > td > .color { width:90%; height:10px; margin:auto; pointer-events: none; } .jss > tbody > tr > td.jss_cursor a { text-decoration: underline; color: blue; cursor: pointer; } .jss > tbody > tr > td.jss_progressbar { padding-left: 10px; padding-right: 10px; } .jss > tbody > tr > td.jss_progressbar > div { height: 5px; background-color: red; background-clip: content-box; } .jss > tfoot > tr > td { border-top: 1px solid #ccc; border-left: 1px solid #ccc; border-right: 1px solid transparent; border-bottom: 1px solid transparent; background-color: #f3f3f3; padding: 2px; cursor: pointer; box-sizing: border-box; overflow: hidden; text-align: center; position: sticky; bottom: 0; z-index: 1; } .jss_corner { position:absolute; background-color: #000; height: 1px; width: 1px; border: 1px solid #FFF; top:-2000px; left:-2000px; cursor:crosshair; box-sizing: initial; z-index: 3; padding: 2px; } .jss, .jss_corner, .jss td, .jss > tbody > tr > td > img { -webkit-touch-callout: none; -webkit-user-select: none; -khtml-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; -webkit-user-drag: none; -khtml-user-drag: none; -moz-user-drag: none; -o-user-drag: none; } .jss_textarea { position: fixed; width: 0; height: 0; opacity: 0; } .jss_input { position: absolute; z-index: 6; pointer-events: none; box-sizing: border-box; white-space: pre-wrap; line-height: normal; outline: none; opacity: 0; } .jss_dialog { height: 240px !important; min-width: 340px !important; min-height: 240px !important; max-width: 340px !important; user-select:none; box-shadow: 2px 2px 8px 2px rgba(0,0,0,0.14); text-align:left; box-sizing: border-box; overflow: auto; scrollbar-width: thin; scrollbar-color: #333 transparent; background-color: #f8f8f8; } .jss_input > .jss_dialog { max-width: 600px; } .jss_dialog::-webkit-scrollbar { width: 12px; height: 12px; } .jss_dialog::-webkit-scrollbar-track { border: 1px solid #fff; background: #eee; } .jss_dialog::-webkit-scrollbar-thumb { border: 1px solid #fff; background: #888; } .jss_dialog.jclose:after { position:absolute; top:0; right:0; margin:10px; content:'close'; font-family:'Material icons'; font-size:24px; width:24px; height:24px; line-height:24px; cursor:pointer; text-shadow: 0 0 5px #fff; } .jss_dialog[title]:before { margin: 10px; content: attr(title); position: absolute; top: 0; right: 0; line-height: 24px; } .jss_dialog .jtoolbar { height: initial; } .jss_percent:after { content: ' %'; } .jss_percent.jss_formula:after { content: ''; } .jss_input.jss_formula { white-space: nowrap; overflow: hidden; } .jss_input.jss_nowrap { display: flex; flex-wrap: nowrap; overflow: hidden; } .jss_input.jss_nowrap.jss_formula { display: initial; } .jss_input.jss_focus { padding: 4px; pointer-events: initial; opacity: 1; filter: alpha(opacity=100); background-color: #fff; } .jss_input[contentEditable=false] { padding: 0 !important; } .jss_input[contentEditable=false] > input { outline: none; border: 0; padding: 4px 4px 4px 6px; max-width: 100%; margin: 0; box-sizing: border-box; } .jss_input .jdropdown-header { border: 0 !important; outline: none !important; padding: 4px !important; padding-left: 6px !important; height: 100%; background-position: top 50% right 0; } .jss_input .jdropdown-container-header { padding: 0; margin: 0; height: initial; } .jss_input .jdropdown-picker { border:0 !important; padding:0 !important; width: initial; height: initial; } .jss_input .jeditor { padding: 15px; } .jss .error { border:1px solid red; } .jss_about { float: right; font-size: 0.7em; padding: 2px; text-transform: uppercase; letter-spacing: 1px; display: none; } .jss_about a { color: #ccc; text-decoration: none; } .jss_about img { display: none; } .jss_search_container { display:flex; justify-content:space-between; background-color: #f3f3f3; border: 1px solid #ccc; border-bottom: 0; } .jss_search_container > div { display: inline-block; padding:8px; align-items:center; } .jss_search_container > div:empty { display: none; } .jss_pagination { display:flex; justify-content:space-between; align-items:center; } .jss_pagination > div { display: flex; padding: 8px; font-size: 0.9em } .jss_pagination > div:last-child { padding-right:10px; padding-top:10px; } .jss_pagination > div > div { text-align:center; width:36px; height:36px; line-height:34px; border:1px solid #ccc; box-sizing: border-box; margin-left:2px; cursor:pointer; } .jss_page { font-size:0.8em; } .jss_page_selected { font-weight:bold; background-color:#f3f3f3; } .jss_toolbar { background-color: #f3f3f3; border: 1px solid #ccc; padding: 4px; position: sticky; top: 0; z-index: 5; min-width: fit-content; margin-top: 1px; margin-bottom: 1px; } .jss_container.fullscreen .jss_toolbar { position: relative; margin-bottom: 1px; margin-right: 0; } .jss_toolbar .jtoolbar-item:hover { background-color: #eaeaea; } .jss_toolbar .jtoolbar-item > .jpicker-header:hover { background-color: #eaeaea !important; } .jss_toolbar:empty { display:none; } .jss_toolbar i.jss_toolbar_item { width:24px; height:24px; padding:4px; cursor:pointer; display:inline-block; } .jss_toolbar .jss_toolbar_selected { background-color:#eaeaea; } .jss_toolbar::-webkit-scrollbar { display: none; } .jss_tabs > .jss_tab { display:none; } .jss_tabs > .jss_tab_link { display:inline-block; padding:10px; padding-left:20px; padding-right:20px; margin-right:5px; margin-bottom:5px; background-color:#f3f3f3; cursor:pointer; } .jss_tabs > .jss_tab_link.selected { background-color:#ddd; } .jss_hidden_index > thead > tr > th:first-child, .jss_hidden_index > tbody > tr > td:first-child, .jss_hidden_index > tfoot > tr > td:first-child, .jss_hidden_index > colgroup > col:first-child { visibility: collapse; width: 1px; } .jss_border { position: absolute; border: 1px solid transparent; pointer-events: none; opacity:0.6; box-sizing: border-box; z-index: 2; } .jss_border_main { border: 1px solid #000; background-color: #00000015; background-origin: content-box; } .jss_border_copying { background-size: 8px 1px, 8px 1px, 1px 8px, 1px 8px; background-position: 0 0, 0 100%, 0 0, 100% 0; background-repeat: repeat-x, repeat-x, repeat-y, repeat-y; background-image: linear-gradient(to right, #fff 50%, #444 50%), linear-gradient(to right, #fff 50%, #444 50%), linear-gradient(to bottom, #fff 50%, #444 50%), linear-gradient(to bottom, #fff 50%, #444 50%); animation: ants 2s; animation-timing-function: linear; animation-iteration-count: infinite; opacity: 1; } .jss_border_cloning { border: 1px dashed #000; } .jss_border_ctrl { border: 2px solid #fff; outline: 1px solid #777777; outline-offset: -1px; background-color: #5b5b5b50; } .jss_border_reset { border: 1px solid #777; background-color: #fff; z-index: 3; } .jss_border_copying_hide_left { background-size: 0 0, 8px 1px, 0 0, 0 0 !important; } @keyframes ants { 0% { background-position: 0 0, 0 100%, 0 0, 100% 0; } 100% { background-position: 40px 0, -40px 100%, 0 -40px, 100% 40px; } } .jss_cursor { background-color: #eee; } .jss_cursor.jss_frozen { background-color: #eee !important; } .jss_loading { position: absolute; z-index: 5; width: calc(100% - 3px); height: 1px; overflow: hidden; padding-left: 1px; padding-right: 1px; border: 0; box-sizing: border-box; display: none; margin-top: -1px; margin-left: 1px; } .jss_loading:after { content: ''; position: absolute; height: 3px; background-color: #aaa; animation: jss_loading 1.5s cubic-bezier(0.4, 0, 0.2, 1) infinite; } .disconnected .jss_loading { display: block; background-color: red; } @keyframes jss_loading { 0% { margin-left: 0; width: 0 } 50% { margin-left: 0; width: 50% } 100% { margin-left: 100%; width: 100% } } .jss_container.disconnected { pointer-events: none; } .jss_tags > div { padding-left: 8px; padding-right: 8px; border-radius: 2px; margin-right: 4px; outline: none; background-color: #eee; font-size: 0.8em; display: inline-block; } .jss_rating { padding: 0; } .jss_rating > div { line-height: 13px; } .jss_rating > div > i { line-height: 13px; width: 13px; height: 13px; vertical-align: bottom; font-size: 13px; } .jss thead .jss_frozen { position: sticky; z-index: 5; box-shadow: 2px 0 0 0 #aaa; } .jss tfoot .jss_frozen { position: sticky; z-index: 2; box-shadow: 1px 0 0 0 #aaa; } .jss tbody .jss_frozen { position: sticky; z-index: 1; background-color: #fff; box-shadow: 1px 1px 2px 0 #aaa; } .jss .jss_notes { overflow: hidden; display: -webkit-box; -webkit-line-clamp: 1; -webkit-box-orient: vertical; text-overflow: ellipsis; white-space: pre-wrap; } .jss_row_medium > tbody > tr { height: 3em; } .jss_row_large > tbody > tr { height: 6em; } .jss_row_extra > tbody > tr { height: 9em; } .jss_row_medium > tbody > tr .jss_notes { -webkit-line-clamp: 3; height: 3em; } .jss_row_large > tbody > tr .jss_notes { -webkit-line-clamp: 6; height: 6em; } .jss_row_extra > tbody > tr .jss_notes { -webkit-line-clamp: 9; height: 9em; } /** Build-in themes :: MODERN **/ .jss_modern table.jss { border-right:1px solid transparent; } .jss_light table.jss > thead > tr > th, .jss_modern table.jss > thead > tr > th { background-color: #f5f5f5; border-top:1px solid #ddd; border-right:1px solid transparent; padding: 8px; } .jss_modern table.jss > thead > tr > th { border-left:1px solid transparent; } .jss_light table.jss > thead > tr > th:first-child, .jss_modern table.jss > thead > tr > th:first-child { box-shadow: 1px 0 0 0 #ddd; } .jss_light table.jss > thead > tr:last-child > th, .jss_modern table.jss > thead > tr:last-child > th { border-bottom: 1px solid #000; } .jss_light table.jss > tfoot > tr > td, .jss_modern table.jss > tfoot > tr > td { border-top:1px solid #000; border-left:1px solid transparent; border-right:1px solid transparent; border-bottom:1px solid transparent; background-color:#fff; padding:8px; } .jss_light table.jss > thead > tr > th.jss_filters_icon, .jss_modern table.jss > thead > tr > th.jss_filters_icon { background-position: center right 8px; } .jss_light table.jss > thead > tr > th.selected { background-color:#e3e3e3; } .jss_modern table.jss > thead > tr > th.selected { background-color:#eee; } .jss_modern table.jss > tbody > tr > td { padding: 8px; border-right: 1px solid transparent; border-left: 1px solid transparent; } .jss_light table.jss > tbody > tr > td { border-top: 1px solid #ddd; border-left: 1px solid #ddd; } .jss_light table.jss > tbody > tr > td:first-child, .jss_modern table.jss > tbody > tr > td:first-child { background-color: #f5f5f5; } .jss_light table.jss > tbody > tr.selected > td:first-child { background-color:#e3e3e3; } .jss_modern table.jss > tbody > tr.selected > td:first-child { background-color:#eee; } .jss_light .jss_toolbar, .jss_modern .jss_toolbar { background-color: #f5f5f5; } .jss_modern .jss_toolbar { border-color: #ddd; } .jss_light .jss_pagination, .jss_modern .jss_pagination { background-color: #f8f8f8; border: 1px solid #eee; } .jss_light .jss_pagination > div > div { border: 1px solid transparent; background-color: #f2f2f2; } .jss_modern .jss_pagination > div > div { border: 1px solid transparent; background-color: #fff; } .jss_modern .jss_page_selected { background: linear-gradient(to bottom, #fff 0%, #dcdcdc 100%); border:1px solid #979797 !important; font-weight:normal; color: #333 !important; border-radius:2px; } .jss_modern .jss_focus { padding: 8px; } .jss_modern .jss_search_container { background: initial; border: initial; } .jss_dropdown_icon { width: 12px; height: 12px; border-radius: 6px; margin: auto; } .jss_dropdown_tag { display: inline-block; border-radius: 6px; margin-top: 1px; margin-bottom: 1px; margin-right: 2px; padding: 4px 10px 4px 10px; font-size: 0.8em; } /** Filter **/ .jss_filters { position: absolute; z-index: 11; background-color: #fff; color: #555; font-size: 0.8em; user-select: none; box-shadow: 2px 2px 2px 0 rgba(143, 144, 145, 1); border: 1px solid #C6C6C6; padding: 15px; margin: 0; outline: none; display: none; } .jss_filters > div { box-sizing: border-box; display: block; width: 280px; position: relative; cursor: default; font-family:sans-serif; } .jss_filters > div.jss_filter_search_container { display: flex; margin-bottom: 6px; } .jss_filters label { display: block; line-height: 18px; vertical-align: middle; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .jss_filters_search, .jss_filters_operators { padding: 6px; border: 1px solid #d9d9d9; width: 100%; flex: 3; } .jss_filters_search { margin-right: 6px; flex: 4; } .jss_filters_options { border: 1px solid #d9d9d9; margin-bottom: 4px; } .jss_filters_options label { display: flex; align-items: center; } .jss_filters_options label > div.color { width: 80px; height: 8px; } .jss_filters_options label > img { width: 18px; height: 18px; border-radius: 10px; } .jss_filters_options label > div.progressbar { background-color: red; height: 8px; } .jss_filters_options label > div.rating > i { line-height: 13px; width: 13px; height: 13px; vertical-align: bottom; } .jss_filters input[type=checkbox] { vertical-align: middle; position: relative; bottom: 1px; margin: 5px; } .jss_filters_actions { text-align: right; } .jss_filters_actions input { padding: 2px 10px; margin: 2px; } .jss_helper { position: absolute; top: 0; left: 0; width: 1px; height: 100%; background-color: transparent; border: 1px solid #DD0000; box-sizing: border-box; z-index: 7; display: none; pointer-events: none; } .jss_helper.jss_helper_row:before { content: ''; position: absolute; margin-top: -5px; margin-left: -8px; width: 0; height: 0; border-top: 5px solid transparent; border-bottom: 5px solid transparent; border-left: 5px solid #DD0000; } .jss_helper.jss_helper_col:before { content: ''; position: absolute; margin-top: -8px; margin-left: -5px; width: 0; height: 0; border-left: 5px solid transparent; border-right: 5px solid transparent; border-top: 5px solid #DD0000; } .jss_dragging { } .jss_forbidden { padding: 80px; text-align: center; border: 1px solid #ccc; color: #999; max-width: 600px; } .jss_forbidden:before { content: 'Jspreadsheet: Permission Denied'; } .jss_forbidden > div { display: none; } .arrow-up { text-decoration: underline; } .arrow-down { text-decoration: underline; } .arrow-up::after { content: '\2191'; margin-left: 2px; text-decoration: initial; display: inline-block } .arrow-down::after { content: '\2193'; margin-left: 2px; text-decoration: initial; display: inline-block } .jss_scroll { position:absolute; min-height: 1px; min-width: 1px; } .jss > thead > tr.jss_group_container > th { text-align: center; overflow: initial; background-color: transparent; border: 0; } .jss_group { content: attr(data-status); font-family: 'Courier new'; line-height: 16px; text-align: center; color: #fff; border-radius: 2px; background-color: #777; width: 16px; height: 16px; box-sizing: border-box; position: relative; display: inline-block; } .jss_group:after { content: 'd'; position: absolute; border-top: 1px solid #ccc; border-right: 1px solid #ccc; width: 300px; height: 4px; left: 0; margin-top: 7px; margin-left: 16px; } .jss_selectall { box-shadow: inset 1px 1px 0 0 #ccc; } .jss_selectall:after { content: ' '; border-bottom: 12px solid #ccc; border-left: 12px solid transparent; width: 0; position: absolute; bottom: 3px; right: 3px; } .jss_pagination_dropdown { margin-left: 4px; margin-right: 4px; } .red { color: red; } .jss > thead > tr > th.jss_filters_icon { padding-right: 16px !important; } .jss_red .jss_corner { background-color: #DD0000; } .jss_red .jss_border_main { border: 1px solid #DD0000; background-color: #DD000010; } .jss_red .jss > thead > tr > th.selected { box-shadow: 0 1px 0 0 #DD0000; } .jss_red .jss > tbody > tr.selected > td:nth-child(2) { border-left: 1px solid #DD0000 !important; box-shadow: 1px 0 0 0 black; } .jss_picker { position: relative; padding: 6px 8px; border: 1px solid #ccc; } .jss_picker:after { content: "highlight_alt"; font-size: 18px; font-family: "Material Icons"; color: #000; position: absolute; top: calc(50% - 9px); right: 5px; cursor: pointer; } .jss_picker.active { outline: 2px #FF0000 solid; outline-offset: -2px; animation: blink 1s infinite; } @keyframes blink { 50% { outline: 2px transparent solid; } } .jss_media > div { z-index: 10; } .jss_media_item[data-type="chart"] { background-color: white; } .jss_image > img { position: absolute; max-width: 100%; z-index: 10; } .jss_image > img:focus { outline: 2px solid black; } .jss > tbody > tr > td.jss_number { text-align: right; } .jss .jcolor-input { padding: 5px !important; padding-right: 24px !important; } .jss_warning { border-left: 1px solid red; background-color: #ffefef; position: relative; } .jss_warning:before { content: 'warning'; font-family: 'Material Icons'; font-size: 13px; position: absolute; color: red; left: 2px; top: calc(50% - 6px); font-weight: normal; } .jss > tbody > tr > td.jss_warning { padding-left: 16px; } .jss_hidden { display: none; } .fullscreen .jss_content { resize: none !important; } .jss_last { z-index: 4; } .jss_resize_corner { position: absolute; width: 8px; height: 8px; border-radius: 8px; border: 2px solid white; background-color: red; pointer-events: all; } .jss tbody .jss_frozen_row { position: sticky; z-index: 1; background-color: #fff; box-shadow: 1px 1px 2px 0 #aaa; } .jss tbody .jss_frozen_row.jss_frozen { box-shadow: 1px 1px 2px 0 #aaa; z-index: 2; } .jss_cursor.jss_frozen_row { background-color: #eee !important; } .jss > tbody > tr > td.jss_row.jss_frozen_row { z-index: 5; box-shadow: 0 2px 0 0 #aaa; } .jss_freeze_control_col { border-right: 1px solid #aaa !important; } .jss_freeze_control_row { border-bottom: 1px solid #aaa !important; } .jss_rotate { -ms-writing-mode: tb-rl; -webkit-writing-mode: vertical-rl; writing-mode: vertical-rl; transform: rotate(0deg); white-space: nowrap; } .jss tbody tr:nth-child(even) td.jss_zebra { background-color: #eee; } .jss_zebra tbody tr:nth-child(even) td { background-color: #eee; } .jss div { line-height: normal; } @-webkit-keyframes spin { from {-webkit-transform:rotate(0deg);} to {-webkit-transform:rotate(360deg);} } @keyframes spin { from {transform:rotate(0deg);} to {transform:rotate(360deg);} } .jss_searching { position: relative; } .jss_searching:after { content: ''; display: block; position: absolute; right: 16px; top: calc(50% - 7px); width: 12px; height: 12px; border-style: solid; border-color: #888; border-top-color: transparent; border-width: 1px; border-radius: 50%; -webkit-animation: spin .8s linear infinite; animation: spin .8s linear infinite; } .jss_nogridline>tbody>tr>td { border: 1px solid transparent; } .jss_highlight { background-color: #ffffd6; } .jss_row > i.material-icons { font-size: 13px; position: absolute; right: 2px; margin-top: 2px; cursor: pointer; } .jss_header > i.material-icons { font-size: 13px; position: absolute; right: 2px; margin-top: 2px; cursor: pointer; } .jss_header.jss_filters_icon > i.material-icons { right: 16px; } .jss_upload { position: absolute !important; display: none; margin-left: -240px; } .jss_group_parent { background-color: #65656522; } .jss_group_parent > .jss_frozen { background-color: #eee; } .jss_group_child { background-color: #bbbbbb22; } .jss_group_child > .jss_frozen { background-color: #f4f4f4; } .jss_group_parent.jss_group_child { background-color: #77777722; } .jss_tooltip { position: absolute; pointer-events: none; background-color: rgba(0,0,0,0.7); color: #fff; border-radius: 5px; padding: 5px 10px; white-space: nowrap; z-index: 999; display: block; animation: fadeIn 0.5s; } .jss_tooltip:empty { display: none; } .lm-lazy { position: relative; overflow-y: auto; display: flex; } .lm-lazy-scroll { position: absolute; width: 1px; } .lm-lazy-items { position: sticky; top: 0; } .jss_filters_options .lm-lazy-items { padding: 10px; } .jss_style_row { display:flex; flex-wrap: wrap; flex-direction: row; justify-content: space-between; box-sizing: border-box; align-items: center; } .jss_style_row.container { flex-wrap: nowrap; } .jss_style_row.middle { align-items: center; } .jss_style_row.start { justify-content: flex-start; } .jss_style_col { box-sizing: border-box; } .jss_style_f1 { flex: 1; } .jss_style_form_group { width: 100%; padding-right: 8px; padding-bottom: 8px; box-sizing: border-box; } .jss_style_form_group > label:not([class]) { display: block; padding-bottom: 4px; } .jss_style_form_group input[type="text"], .jss_style_form_group input[type="number"], .jss_style_form_group select, .jss_style_form_group textarea { width: 100%; padding: 6px 8px; border: 1px solid #ccc; box-sizing: border-box; color: inherit; font-family: inherit; font-size: inherit; } .jss_style_form_group select { padding: 5px 8px; } .jss_style_form_group .jdropdown { width: 100%; } .jss_style_p2 { padding: 2px; } .jss_style_p6 { padding: 6px; } .jss_style_p10 { padding: 10px; } .jss_style_p20 { padding: 20px; } .jss_style_button { width: 100%; padding: 8px 16px 8px 16px; border-radius: 2px; cursor:pointer; background-color: #737373; border: 1px solid transparent; color: #fff; margin-top: 4px; } .jss_style_button[disabled] { opacity: 0.6; } .jss input[disabled] { opacity: 0.6; } .jss_actions { float: right; display: block; margin-left: 4px; } div.jss_filters_icon { font-size: 13px; width: 13px; height: 13px; padding: 1px; border-radius: 2px; color: grey; cursor: pointer; } div.jss_filters_icon:hover, div.jss_filters_icon.jss_filters_active { color: white; background-color: #d92b04; } div.jss_filters_icon::before { font-family: "Material Icons"; content: 'filter_list'; font-size: 13px; } div.jss_filters_icon.jss_filters_active:hover { color: grey; background-color: #f1f1f1; } div.jss_filters_icon.jss_filters_active::before { content: 'filter_alt'; } .jss_result > td:first-child { color: #d92b04; } .jss_filters_sorting { margin-bottom: 6px; padding-bottom: 4px; border-bottom: 1px solid #d9d9d9; } .jss_filters_sorting > div { margin-bottom: 10px; padding: 2px 2px 2px 15px; } .jss_filters_sorting > div:hover { text-decoration: underline; cursor: pointer; } .jss_filters_sorting_up::before { content: '\2191'; position: absolute; margin-top: -2px; margin-left: -15px; } .jss_filters_sorting_down::before { content: '\2193'; position: absolute; margin-top: -2px; margin-left: -15px; }