@liedekef/ftable
Version:
Modern, lightweight, jQuery-free CRUD table for dynamic AJAX-powered tables.
642 lines (641 loc) • 20.6 kB
CSS
/* fTable light color theme - Blue
*/
div.ftable-main-container {
position: relative;
}
div.ftable-main-container div.ftable-title {
position: relative;
text-align: left;
}
div.ftable-main-container div.ftable-title div.ftable-toolbar {
bottom: 0px;
right: 0px;
position: absolute;
display: inline-block;
margin-right: 5px;
}
div.ftable-main-container div.ftable-title div.ftable-toolbar .ftable-toolbar-item {
position: relative;
display: inline-block;
margin: 0px 0px 0px 5px;
cursor: pointer;
font-size: 0.9em;
padding: 2px;
border: none;
}
div.ftable-main-container div.ftable-title div.ftable-toolbar .ftable-toolbar-item span.ftable-toolbar-item-icon {
display: inline-block;
margin: 2px;
vertical-align: middle;
width: 16px;
height: 16px;
}
div.ftable-main-container div.ftable-title div.ftable-toolbar .ftable-toolbar-item span.ftable-toolbar-item-icon.ftable-toolbar-item-add-record {
display: inline-flex;
align-items: center;
background-color: transparent;
justify-content: center;
width: 16px;
height: 16px;
}
div.ftable-main-container div.ftable-title div.ftable-toolbar .ftable-toolbar-item span.ftable-toolbar-item-icon.ftable-toolbar-item-add-record::before {
content: "➕";
font-size: 14px;
}
div.ftable-main-container div.ftable-title div.ftable-toolbar .ftable-toolbar-item span.ftable-toolbar-item-text {
display: inline-block;
margin: 2px;
vertical-align: middle;
}
div.ftable-main-container table.ftable {
width: 100%;
}
div.ftable-main-container table.ftable thead th {
padding: 0px 3px 0px 6px;
vertical-align: middle;
text-align: left;
}
div.ftable-main-container table.ftable thead th.ftable-column-header {
height: 1px;
/* this is so the heigth of the div inside can be set to 100% */
}
div.ftable-main-container table.ftable thead th.ftable-column-header div.ftable-column-header-container {
position: relative;
display: table;
/* display table so the inside elements can be easily aligned vertically */
width: 100%;
/* width=100% is redundant for regular div, but for display table it is needed */
height: 100% ;
/* height at 100% so the resize bar in it will have full height too */
}
div.ftable-main-container table.ftable thead th.ftable-column-header div.ftable-column-header-container span.ftable-column-header-text {
display: table-cell;
vertical-align: middle;
/* this works since we have display=table-cell */
padding-top: 4px;
padding-bottom: 3px;
}
div.ftable-main-container table.ftable thead th.ftable-column-header div.ftable-column-header-container div.ftable-column-resize-handler {
position: absolute;
display: table-cell;
vertical-align: middle;
height: 100%;
/* so the resize bar fills the whole height */
width: 8px;
right: -8px;
z-index: 2;
cursor: col-resize;
}
div.ftable-main-container table.ftable thead th.ftable-command-column-header {
text-align: center;
width: 1%;
}
div.ftable-main-container table.ftable thead th.ftable-column-header-select {
text-align: center;
width: 1%;
}
div.ftable-main-container table.ftable thead th.ftable-column-header-select input {
cursor: pointer;
}
div.ftable-main-container table.ftable thead th.ftable-column-header-sortable {
cursor: pointer;
}
div.ftable-main-container table.ftable thead th.ftable-column-header-sortable .ftable-sortable-text {
padding-right: 20px;
/* Space for sort indicator */
}
div.ftable-main-container table.ftable thead th.ftable-column-header-sortable .ftable-column-header-container {
position: relative;
}
div.ftable-main-container table.ftable thead th.ftable-column-header-sortable .ftable-column-header-container::before,
div.ftable-main-container table.ftable thead th.ftable-column-header-sortable .ftable-column-header-container::after {
content: '';
position: absolute;
top: 50%;
transform: translateY(-50%);
font-size: 1.1em;
color: #999;
opacity: 0.7;
text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
}
div.ftable-main-container table.ftable thead th.ftable-column-header-sortable .ftable-column-header-container::before {
content: '▲';
right: 0.55em;
}
div.ftable-main-container table.ftable thead th.ftable-column-header-sortable .ftable-column-header-container::after {
content: '▼';
right: 0px;
}
div.ftable-main-container table.ftable thead th.ftable-column-header-sortable.ftable-column-header-sorted-asc .ftable-column-header-container::before {
color: #222;
opacity: 1;
font-weight: bold;
}
div.ftable-main-container table.ftable thead th.ftable-column-header-sortable.ftable-column-header-sorted-asc .ftable-column-header-container::after {
opacity: 0.7;
}
div.ftable-main-container table.ftable thead th.ftable-column-header-sortable.ftable-column-header-sorted-desc .ftable-column-header-container::after {
color: #222;
opacity: 1;
font-weight: bold;
}
div.ftable-main-container table.ftable thead th.ftable-column-header-sortable.ftable-column-header-sorted-desc .ftable-column-header-container::before {
opacity: 0.7;
}
div.ftable-main-container table.ftable tbody tr > td .ftable-command-button {
margin: 5px;
padding: 0px;
cursor: pointer;
border: none;
display: inline;
}
div.ftable-main-container table.ftable tbody tr > td .ftable-command-button span {
display: none;
}
div.ftable-main-container table.ftable tbody tr > td.ftable-command-column {
text-align: center;
vertical-align: middle;
}
div.ftable-main-container table.ftable tbody tr > td.ftable-selecting-column {
text-align: center;
vertical-align: middle;
}
div.ftable-main-container table.ftable tbody tr > td.ftable-selecting-column input {
cursor: pointer;
}
div.ftable-main-container table.ftable tbody tr > td .ftable-edit-command-button {
width: 16px;
height: 16px;
background-color: transparent;
}
div.ftable-main-container table.ftable tbody tr > td .ftable-edit-command-button::before {
content: "📝";
font-size: 14px;
display: flex;
align-items: center;
justify-content: center;
width: 100%;
height: 100%;
}
div.ftable-main-container table.ftable tbody tr > td .ftable-clone-command-button {
width: 16px;
height: 16px;
background-color: transparent;
}
div.ftable-main-container table.ftable tbody tr > td .ftable-clone-command-button::before {
content: "📋";
font-size: 14px;
display: flex;
align-items: center;
justify-content: center;
width: 100%;
height: 100%;
}
div.ftable-main-container table.ftable tbody tr > td .ftable-delete-command-button {
width: 16px;
height: 16px;
background-color: transparent;
}
div.ftable-main-container table.ftable tbody tr > td .ftable-delete-command-button::before {
content: "🗑️ ";
font-size: 14px;
display: flex;
align-items: center;
justify-content: center;
width: 100%;
height: 100%;
}
div.ftable-main-container table.ftable tbody tr.ftable-no-data-row {
text-align: center;
}
div.ftable-main-container > div.ftable-bottom-panel {
position: relative;
min-height: 24px;
text-align: left;
}
div.ftable-main-container > div.ftable-bottom-panel div.ftable-right-area {
right: 0px;
top: 0px;
bottom: 0px;
position: absolute;
}
div.ftable-main-container > div.ftable-bottom-panel .ftable-page-list {
display: inline-block;
}
div.ftable-main-container > div.ftable-bottom-panel .ftable-page-list .ftable-page-number,
div.ftable-main-container > div.ftable-bottom-panel .ftable-page-list .ftable-page-number-space,
div.ftable-main-container > div.ftable-bottom-panel .ftable-page-list .ftable-page-number-first,
div.ftable-main-container > div.ftable-bottom-panel .ftable-page-list .ftable-page-number-last,
div.ftable-main-container > div.ftable-bottom-panel .ftable-page-list .ftable-page-number-previous,
div.ftable-main-container > div.ftable-bottom-panel .ftable-page-list .ftable-page-number-next,
div.ftable-main-container > div.ftable-bottom-panel .ftable-page-list .ftable-page-number-active {
padding: 2px 5px;
display: inline-block;
cursor: pointer;
}
div.ftable-main-container > div.ftable-bottom-panel .ftable-page-list .ftable-page-number-space,
div.ftable-main-container > div.ftable-bottom-panel .ftable-page-list .ftable-page-number-active,
div.ftable-main-container > div.ftable-bottom-panel .ftable-page-list .ftable-page-number-disabled {
cursor: default;
}
div.ftable-main-container > div.ftable-bottom-panel span.ftable-page-size-change {
margin-left: 5px;
}
div.ftable-main-container > div.ftable-bottom-panel span.ftable-goto-page {
margin-left: 5px;
}
div.ftable-main-container > div.ftable-bottom-panel span.ftable-goto-page input[type=text] {
width: 22px;
}
div.ftable-main-container > div.ftable-bottom-panel span.ftable-page-info {
vertical-align: middle;
}
div.ftable-main-container div.ftable-column-resize-bar {
opacity: 0.5;
filter: alpha(opacity=50);
position: absolute;
width: 1px;
background-color: #000;
}
form.ftable-dialog-form div.ftable-input-field-container {
padding: 2px 0px 3px 0px;
border-bottom: 1px solid #ddd;
}
form.ftable-dialog-form div.ftable-input-field-container:last-child {
border: none;
}
form.ftable-dialog-form div.ftable-input-label {
padding: 2px 3px;
font-size: 1.1em;
color: #666;
}
form.ftable-dialog-form div.ftable-input {
padding: 2px;
}
form.ftable-dialog-form div.ftable-date-input {
/* No additional style */
}
form.ftable-dialog-form div.ftable-text-input {
/* No additional style */
}
form.ftable-dialog-form span.ftable-option-text-clickable {
position: relative;
top: -2px;
}
form.ftable-dialog-form div.ftable-textarea-input textarea {
width: 300px;
min-height: 60px;
}
form.ftable-dialog-form div.ftable-checkbox-input span,
form.ftable-dialog-form div.ftable-radio-input span {
padding-left: 4px;
}
form.ftable-dialog-form div.ftable-radio-input input,
form.ftable-dialog-form div.ftable-checkbox-input input,
form.ftable-dialog-form span.ftable-option-text-clickable {
cursor: pointer;
}
.ftable-modal-overlay {
position: fixed;
top: 0;
left: 0;
right: 0;
bottom: 0;
background-color: rgba(0, 0, 0, 0.5);
z-index: 1000;
display: none;
}
.ftable-modal {
position: fixed;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
background-color: white;
padding: 20px;
border-radius: 5px;
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.3);
z-index: 1001;
max-width: 90%;
max-height: 90vh;
overflow: auto;
}
.ftable-modal-header {
margin-bottom: 15px;
margin-top: 0px;
padding-bottom: 10px;
border-bottom: 1px solid #eee;
}
.ftable-modal-footer {
margin-top: 15px;
padding-top: 10px;
border-top: 1px solid #eee;
text-align: right;
}
.ftable-modal-close {
position: absolute;
top: 10px;
right: 10px;
cursor: pointer;
font-size: 28px;
font-weight: bold;
color: #aaa;
}
.ftable-busy-modal {
padding: 0px;
}
.ftable-dialog-button {
opacity: 0.8;
border: 1px solid #ccc;
padding: 5px;
margin: 5px;
}
.ftable-dialog-button:hover {
background-color: #dedede;
}
div.ftable-busy-message {
cursor: wait;
margin: 0px;
}
div.ftable-contextmenu-overlay {
position: fixed;
left: 0px;
top: 0px;
width: 100%;
height: 100%;
z-index: 100;
}
.ftable-table-div {
display: block;
overflow-x: auto;
}
.ftable-table-div > table {
overflow: hidden;
}
.ftable-toolbarsearch {
width: 90%;
min-width: fit-content;
}
th.ftable-toolbarsearch-reset {
text-align: center ;
}
div.ftable-column-selection-container {
position: absolute;
border: 1px solid #C8C8C8;
background: #fff;
color: #000;
z-index: 101;
padding: 5px;
}
div.ftable-column-selection-container ul.ftable-column-select-list {
margin: 0px;
padding: 0px;
list-style: none;
}
div.ftable-column-selection-container ul.ftable-column-select-list li {
margin: 0px;
padding: 2px 0px;
}
div.ftable-column-selection-container ul.ftable-column-select-list li label span {
position: relative;
top: -1px;
margin-left: 4px;
}
div.ftable-column-selection-container ul.ftable-column-select-list li input[type="checkbox"] {
cursor: pointer;
}
.ftable-yesno-check-wrapper {
display: flex;
align-items: center;
}
.ftable-yesno-check-text,
.ftable-yesno-check-fixedlabel {
margin-left: 4px;
}
.ftable-yesno-check-text:before {
content: attr(data-no);
}
.ftable-yesno-check-input:checked ~ .ftable-yesno-check-text:before {
content: attr(data-yes);
}
div.ftable-main-container {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 1em;
font-weight: 400;
color: #222;
}
div.ftable-main-container div.ftable-title {
-webkit-border-radius: 3px 3px 0 0;
-moz-border-radius: 3px 3px 0 0;
border-radius: 3px 3px 0 0;
position: relative;
line-height: 34px;
box-shadow: inset 0 1px 0 0 rgba(255, 255, 255, 0.5);
padding-left: 10px;
border: 1px solid;
}
div.ftable-main-container div.ftable-title div.ftable-title-text {
font-weight: bold;
}
div.ftable-main-container div.ftable-title div.ftable-toolbar {
bottom: 0px;
right: 0px;
position: absolute;
}
div.ftable-main-container table.ftable {
border-collapse: collapse;
border-spacing: 0;
border-top: 0px;
border-right: 1px solid #C8C8C8;
border-bottom: 1px solid #C8C8C8;
border-left: 1px solid #C8C8C8;
}
div.ftable-main-container table.ftable thead {
background-color: #e6e6e6;
border-bottom: 1px solid #C8C8C8;
}
div.ftable-main-container table.ftable thead th {
border-left: 1px solid #fff;
border-right: 1px solid #C8C8C8;
}
div.ftable-main-container table.ftable thead th:first-child {
border-left: none;
}
div.ftable-main-container table.ftable thead thth:last-child {
border-right: none;
}
div.ftable-main-container table.ftable thead th.ftable-column-header div.ftable-column-header-container {
height: 20px;
}
div.ftable-main-container table.ftable thead th.ftable-column-header span.ftable-column-header-text {
margin-top: 3px;
}
div.ftable-main-container table.ftable thead th.ftable-column-header-select {
padding: 5px;
}
div.ftable-main-container table.ftable tbody > tr {
padding: 2px;
background: #f8f8f8;
height: 30px;
}
div.ftable-main-container table.ftable tbody > tr > td {
padding: 5px;
border-left: 1px dotted #bebebe;
}
div.ftable-main-container table.ftable tbody > tr > td:first-child {
border-left: none;
}
div.ftable-main-container table.ftable tbody > tr.ftable-row-even {
background: #f0f0f0;
}
div.ftable-main-container table.ftable tbody > tr:hover {
background: #e8eaef;
}
div.ftable-main-container table.ftable tbody > tr.ftable-row-selected {
-webkit-text-shadow: 0 1px 0 #333;
text-shadow: 0 1px 0 #333;
color: #FCFCFC;
}
div.ftable-main-container table.ftable tbody > tr.ftable-child-row > td {
background-color: #bbb;
padding: 2px 1px 2px 2px;
}
div.ftable-main-container table.ftable tbody > tr.ftable-child-row > td .ftable {
border: none;
border-bottom: 1px solid #C8C8C8;
}
div.ftable-main-container table.ftable tbody > tr.ftable-child-row > td .ftable-title,
div.ftable-main-container table.ftable tbody > tr.ftable-child-row > td .ftable-bottom-panel {
-webkit-border-radius: 0px;
-moz-border-radius: 0px;
border-radius: 0px;
border: none;
}
div.ftable-main-container div.ftable-bottom-panel {
-webkit-border-radius: 0px 0px 3px 3px;
-moz-border-radius: 0px 0px 3px 3px;
border-radius: 0px 0px 3px 3px;
padding: 1px;
background: #fff;
border: 1px solid #C8C8C8;
border-top: none;
min-height: 24px;
line-height: 16px;
font-size: 0.9em;
}
div.ftable-main-container div.ftable-bottom-panel div.ftable-right-area {
padding: 2px;
}
div.ftable-main-container div.ftable-bottom-panel .ftable-page-list {
margin: 2px;
}
div.ftable-main-container div.ftable-bottom-panel .ftable-page-list .ftable-page-number,
div.ftable-main-container div.ftable-bottom-panel .ftable-page-list .ftable-page-number-space,
div.ftable-main-container div.ftable-bottom-panel .ftable-page-list .ftable-page-number-first,
div.ftable-main-container div.ftable-bottom-panel .ftable-page-list .ftable-page-number-last,
div.ftable-main-container div.ftable-bottom-panel .ftable-page-list .ftable-page-number-previous,
div.ftable-main-container div.ftable-bottom-panel .ftable-page-list .ftable-page-number-next,
div.ftable-main-container div.ftable-bottom-panel .ftable-page-list .ftable-page-number-active {
-webkit-text-shadow: 0 1px 0 white;
text-shadow: 0 1px 0 white;
background-color: #ebebeb;
border-style: solid;
border-width: 1px;
border-color: #ffffff #b5b5b5 #b5b5b5 #ffffff;
padding: 2px 5px;
}
div.ftable-main-container div.ftable-bottom-panel .ftable-page-list .ftable-page-number:hover,
div.ftable-main-container div.ftable-bottom-panel .ftable-page-list .ftable-page-number-first:hover,
div.ftable-main-container div.ftable-bottom-panel .ftable-page-list .ftable-page-number-last:hover,
div.ftable-main-container div.ftable-bottom-panel .ftable-page-list .ftable-page-number-previous:hover,
div.ftable-main-container div.ftable-bottom-panel .ftable-page-list .ftable-page-number-next:hover {
background-color: #ddd;
}
div.ftable-main-container div.ftable-bottom-panel .ftable-page-list .ftable-page-number-active {
-webkit-text-shadow: 0 1px 0 #666;
text-shadow: 0 1px 0 #666;
color: #FCFCFC;
}
div.ftable-main-container div.ftable-bottom-panel .ftable-page-list .ftable-page-number-disabled {
opacity: 0.5;
filter: alpha(opacity=50);
}
div.ftable-main-container div.ftable-bottom-panel .ftable-page-list .ftable-page-number-disabled.ftable-page-number-active {
opacity: 1;
filter: alpha(opacity=100);
}
div.ftable-main-container div.ftable-bottom-panel .ftable-page-list .ftable-page-number-disabled:hover {
background-color: #ebebeb;
}
div.ftable-main-container div.ftable-bottom-panel .ftable-page-info {
display: inline-block;
padding: 4px;
}
div.ftable-main-container div.ftable-bottom-panel span.ftable-add-record {
margin: 3px;
}
div.ftable-main-container div.ftable-bottom-panel span.ftable-add-record a {
font-weight: bold;
text-decoration: none;
}
div.ftable-main-container div.ftable-bottom-panel span.ftable-add-record a:hover {
text-decoration: underline;
}
form.ftable-dialog-form {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 1em;
font-weight: 400;
}
form.ftable-dialog-form div.ftable-input-label {
font-weight: bold;
}
div.ftable-column-selection-container {
-webkit-border-radius: 3px;
-moz-border-radius: 3px;
border-radius: 3px;
-webkit-box-shadow: 2px 2px 4px rgba(50, 51, 50, 0.75);
-moz-box-shadow: 2px 2px 4px rgba(50, 51, 50, 0.75);
box-shadow: 2px 2px 4px rgba(50, 51, 50, 0.75);
}
div.ftable-main-container div.ftable-title {
background: #78b1ed;
background: -moz-linear-gradient(top, #78b1ed 0%, #417bb5 100%);
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #78b1ed), color-stop(100%, #417bb5));
background: -webkit-linear-gradient(top, #78b1ed 0%, #417bb5 100%);
background: -o-linear-gradient(top, #78b1ed 0%, #417bb5 100%);
background: -ms-linear-gradient(top, #78b1ed 0%, #417bb5 100%);
background: linear-gradient(to bottom, #78b1ed 0%, #417bb5 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#78b1ed', endColorstr='#417bb5', GradientType=0);
border-color: #2B5177;
}
div.ftable-main-container div.ftable-title div.ftable-title-text {
-webkit-text-shadow: 0 1px 0 #666;
text-shadow: 0 1px 0 #666;
color: #fff;
}
div.ftable-main-container div.ftable-title div.ftable-toolbar span.ftable-toolbar-item {
color: white;
}
div.ftable-main-container div.ftable-title div.ftable-toolbar span.ftable-toolbar-item.ftable-toolbar-item-hover {
background-color: #417bb5;
}
div.ftable-main-container table.ftable tbody > tr.ftable-row-selected,
div.ftable-main-container table.ftable tbody > tr.ftable-row-selected:hover {
background-color: #5f9cdc;
}
div.ftable-main-container table.ftable tbody > tr.ftable-row-created,
div.ftable-main-container table.ftable tbody > tr.ftable-row-updated,
div.ftable-main-container table.ftable tbody > tr.ftable-row-deleting {
background-color: #5f9cdc;
}
div.ftable-main-container div.ftable-bottom-panel .ftable-page-list .ftable-page-number-active,
div.ftable-main-container div.ftable-bottom-panel .ftable-page-list .ftable-page-number-active:hover {
background-color: #2B5177;
border-color: #092f55;
}
div.ftable-main-container div.ftable-bottom-panel span.ftable-add-record a {
color: #2B5177;
}
div.ftable-busy-message {
border-color: #2B5177;
background-color: #78B1ED;
}