UNPKG

@siemens/ngx-datatable

Version:

ngx-datatable is an Angular table grid component for presenting large and complex data.

388 lines (378 loc) 13.2 kB
/* This stylesheet uses scss valiables for most of the colors / background-colors of the table to enable the customization of the displayed table without cloning the stylesheet into the own application. To modify table colors, add the following lines to the scss file of your application (this example modifies the color of the selected row - selectionType = single, multi or multiClick): $ngx-datatable-selected-active-background: yellow; $ngx-datatable-selected-active-background-hover: rgba(yellow, 0.2); @import '~@siemens/ngx-datatable/index.css'; @import '~@siemens/ngx-datatable/themes/material.scss'; @import '~@siemens/ngx-datatable/assets/icons.css'; That's all. */ .ghost-cell-container { background: #fff; } .ghost-cell-strip { background: #d9d8d9; background-image: linear-gradient(to right, #d9d8d9 0%, #d9d8d9 10%, #fff, transparent); border-radius: 0; animation-duration: 10s; } .ngx-datatable .row-disabled { color: #83888e; } .ngx-datatable .row-disabled .datatable-body-cell-label { color: #83888e; } .ngx-datatable .datatable-row-wrapper .datatable-body-row.row-disabled:hover { background-color: inherit; transition: none; } .ngx-datatable .datatable-row-wrapper .datatable-body-row.row-disabled:hover .datatable-row-group { background-color: inherit; transition: none; } .ngx-datatable.material { background: #fff; box-shadow: 0 5px 5px -3px rgba(0, 0, 0, 0.2), 0 8px 10px 1px rgba(0, 0, 0, 0.14), 0 3px 14px 2px rgba(0, 0, 0, 0.12); /** * Shared Styles */ /** * Global Row Styles */ /** * Header Styles */ /** * Body Styles */ /** * Footer Styles */ } .ngx-datatable.material *, .ngx-datatable.material *::before, .ngx-datatable.material *::after { box-sizing: border-box; } .ngx-datatable.material.striped .datatable-row-odd { background: #eee; } .ngx-datatable.material.single-selection .datatable-body-row.active, .ngx-datatable.material.single-selection .datatable-body-row.active .datatable-row-group, .ngx-datatable.material.multi-selection .datatable-body-row.active, .ngx-datatable.material.multi-selection .datatable-body-row.active .datatable-row-group, .ngx-datatable.material.multi-click-selection .datatable-body-row.active, .ngx-datatable.material.multi-click-selection .datatable-body-row.active .datatable-row-group { background-color: #304ffe; color: #fff; } .ngx-datatable.material.single-selection .datatable-body-row.active:hover, .ngx-datatable.material.single-selection .datatable-body-row.active:hover .datatable-row-group, .ngx-datatable.material.multi-selection .datatable-body-row.active:hover, .ngx-datatable.material.multi-selection .datatable-body-row.active:hover .datatable-row-group, .ngx-datatable.material.multi-click-selection .datatable-body-row.active:hover, .ngx-datatable.material.multi-click-selection .datatable-body-row.active:hover .datatable-row-group { background-color: #193ae4; color: #fff; } .ngx-datatable.material.single-selection .datatable-body-row.active:focus, .ngx-datatable.material.single-selection .datatable-body-row.active:focus .datatable-row-group, .ngx-datatable.material.multi-selection .datatable-body-row.active:focus, .ngx-datatable.material.multi-selection .datatable-body-row.active:focus .datatable-row-group, .ngx-datatable.material.multi-click-selection .datatable-body-row.active:focus, .ngx-datatable.material.multi-click-selection .datatable-body-row.active:focus .datatable-row-group { background-color: #2041ef; color: #fff; } .ngx-datatable.material:not(.cell-selection) .datatable-body-row:hover, .ngx-datatable.material:not(.cell-selection) .datatable-body-row:hover .datatable-row-group { background-color: #eee; transition-property: background; transition-duration: 0.3s; transition-timing-function: linear; } .ngx-datatable.material:not(.cell-selection) .datatable-body-row:focus, .ngx-datatable.material:not(.cell-selection) .datatable-body-row:focus .datatable-row-group { background-color: #ddd; } .ngx-datatable.material.cell-selection .datatable-body-cell:hover:not(.row-disabled), .ngx-datatable.material.cell-selection .datatable-body-cell:hover:not(.row-disabled) .datatable-row-group { background-color: #eee; transition-property: background; transition-duration: 0.3s; transition-timing-function: linear; } .ngx-datatable.material.cell-selection .datatable-body-cell:focus:not(.row-disabled), .ngx-datatable.material.cell-selection .datatable-body-cell:focus:not(.row-disabled) .datatable-row-group { background-color: #ddd; } .ngx-datatable.material.cell-selection .datatable-body-cell.active:not(.row-disabled), .ngx-datatable.material.cell-selection .datatable-body-cell.active:not(.row-disabled) .datatable-row-group { background-color: #304ffe; color: #fff; } .ngx-datatable.material.cell-selection .datatable-body-cell.active:hover:not(.row-disabled), .ngx-datatable.material.cell-selection .datatable-body-cell.active:hover:not(.row-disabled) .datatable-row-group { background-color: #193ae4; color: #fff; } .ngx-datatable.material.cell-selection .datatable-body-cell.active:focus:not(.row-disabled), .ngx-datatable.material.cell-selection .datatable-body-cell.active:focus:not(.row-disabled) .datatable-row-group { background-color: #2041ef; color: #fff; } .ngx-datatable.material .empty-row { block-size: 50px; text-align: start; padding-block: 0.5rem; padding-inline: 1.2rem; vertical-align: top; border-block-start: 0; } .ngx-datatable.material .loading-row { text-align: start; padding-block: 0.5rem; padding-inline: 1.2rem; vertical-align: top; border-block-start: 0; } .ngx-datatable.material .datatable-header .datatable-row-left, .ngx-datatable.material .datatable-body .datatable-row-left { background-color: #fff; background-position: 100% 0; background-repeat: repeat-y; background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAABCAYAAAD5PA/NAAAAFklEQVQIHWPSkNeSBmJhTQVtbiDNCgASagIIuJX8OgAAAABJRU5ErkJggg=="); } .ngx-datatable.material .datatable-header .datatable-row-right, .ngx-datatable.material .datatable-body .datatable-row-right { background-position: 0 0; background-color: #fff; background-repeat: repeat-y; background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAABCAYAAAD5PA/NAAAAFklEQVQI12PQkNdi1VTQ5gbSwkAsDQARLAIGtOSFUAAAAABJRU5ErkJggg=="); } .ngx-datatable.material .datatable-header { border-block-end: 1px solid rgba(0, 0, 0, 0.12); } .ngx-datatable.material .datatable-header .datatable-header-cell { flex-shrink: 0; text-align: start; padding-block: 0.9rem; padding-inline: 1.2rem; font-weight: 400; background-color: #fff; color: rgba(0, 0, 0, 0.54); vertical-align: bottom; font-size: 12px; font-weight: 500; } .ngx-datatable.material .datatable-header .datatable-header-cell .datatable-header-cell-wrapper { position: relative; } .ngx-datatable.material .datatable-header .datatable-header-cell.longpress .draggable::after { transition: transform 400ms ease, opacity 400ms ease; opacity: 0.5; transform: scale(1); } .ngx-datatable.material .datatable-header .datatable-header-cell .draggable::after { content: " "; position: absolute; inset-block-start: 50%; inset-inline-start: 50%; margin-block: -30px 0; margin-inline: -30px 0; block-size: 60px; inline-size: 60px; background: #eee; border-radius: 100%; opacity: 1; filter: none; transform: scale(0); z-index: 9999; pointer-events: none; } .ngx-datatable.material .datatable-header .datatable-header-cell.dragging .resize-handle { border-inline-end: none; } .ngx-datatable.material .datatable-header .resize-handle { border-inline-end: solid 1px #eee; } .ngx-datatable.material .datatable-body { position: relative; } .ngx-datatable.material .datatable-body .datatable-row-detail { background: #f5f5f5; padding: 10px; } .ngx-datatable.material .datatable-body .datatable-group-header { background: #f5f5f5; border-block-end: solid 1px #d9d8d9; border-block-start: solid 1px #d9d8d9; } .ngx-datatable.material .datatable-body .datatable-group-header .datatable-group-cell { padding-inline-start: 1.2rem; display: flex; } .ngx-datatable.material .datatable-body datatable-row-def { background-color: #fff; } .ngx-datatable.material .datatable-body .datatable-body-row { border-block-end: 1px solid #d9d8d9; } .ngx-datatable.material .datatable-body .datatable-body-row .datatable-body-cell { flex-shrink: 0; text-align: start; padding-block: 0.9rem; padding-inline: 1.2rem; vertical-align: top; border-block-start: 0; color: rgba(0, 0, 0, 0.87); transition: inline-size 0.3s ease; font-size: 14px; font-weight: 400; } .ngx-datatable.material .datatable-body .progress-linear { display: block; position: sticky; inline-size: 100%; block-size: 0; z-index: 999; padding: 0; margin: 0; inset-block-start: 0; } .ngx-datatable.material .datatable-body .progress-linear .container { display: block; position: relative; overflow: hidden; inline-size: 100%; block-size: 5px; transform: translate(0, 0) scale(1, 1); background-color: rgb(170, 209, 249); } .ngx-datatable.material .datatable-body .progress-linear .container .bar { transition: all 0.2s linear; animation: query 0.8s infinite cubic-bezier(0.39, 0.575, 0.565, 1); transition: -webkit-transform 0.2s linear; transition: transform 0.2s linear; background-color: rgb(16, 108, 200); position: absolute; inset-inline-start: 0; inset-block: 0; inline-size: 100%; block-size: 5px; } .ngx-datatable.material .datatable-body .custom-loading-indicator-wrapper { position: sticky; inset-block-start: 0; block-size: 0; z-index: 999; } .ngx-datatable.material .datatable-body .custom-loading-indicator-wrapper .custom-loading-content { inline-size: 100%; background-color: #fff; } .ngx-datatable.material .datatable-footer { border-block-start: 1px solid rgba(0, 0, 0, 0.12); font-size: 12px; font-weight: 400; color: rgba(0, 0, 0, 0.54); } .ngx-datatable.material .datatable-footer .page-count { line-height: 50px; block-size: 50px; padding-block: 0; padding-inline: 1.2rem; } .ngx-datatable.material .datatable-footer .datatable-pager { margin-block: 0; margin-inline: 10px; } .ngx-datatable.material .datatable-footer .datatable-pager li { vertical-align: middle; } .ngx-datatable.material .datatable-footer .datatable-pager li.disabled a { color: rgba(0, 0, 0, 0.26) !important; background-color: transparent !important; } .ngx-datatable.material .datatable-footer .datatable-pager li.active a { background-color: rgba(158, 158, 158, 0.2); font-weight: bold; } .ngx-datatable.material .datatable-footer .datatable-pager a { block-size: 22px; min-inline-size: 24px; line-height: 22px; padding-block: 0; padding-inline: 6px; border-radius: 3px; margin-block: 6px; margin-inline: 3px; text-align: center; vertical-align: top; color: rgba(0, 0, 0, 0.54); text-decoration: none; vertical-align: bottom; } .ngx-datatable.material .datatable-footer .datatable-pager a:hover { color: rgba(0, 0, 0, 0.75); background-color: rgba(158, 158, 158, 0.2); } .ngx-datatable.material .datatable-footer .datatable-pager .datatable-icon-left, .ngx-datatable.material .datatable-footer .datatable-pager .datatable-icon-skip, .ngx-datatable.material .datatable-footer .datatable-pager .datatable-icon-right, .ngx-datatable.material .datatable-footer .datatable-pager .datatable-icon-prev { font-size: 20px; line-height: 20px; padding-block: 0; padding-inline: 3px; } .ngx-datatable.material .datatable-summary-row .datatable-body-row { background-color: #ddd; } .ngx-datatable.material .datatable-summary-row .datatable-body-row:hover { background-color: #ddd; } .ngx-datatable.material .datatable-summary-row .datatable-body-row .datatable-body-cell { font-weight: bold; } /** * Checkboxes **/ .datatable-checkbox { position: relative; margin: 0; cursor: pointer; vertical-align: middle; display: inline-block; box-sizing: border-box; padding: 0; } .datatable-checkbox input[type=checkbox] { position: relative; margin-block: 0; margin-inline: 0 1rem; cursor: pointer; outline: none; } .datatable-checkbox input[type=checkbox]::before { transition: all 0.3s ease-in-out; content: ""; position: absolute; inset-inline-start: 0; z-index: 1; inline-size: 1rem; block-size: 1rem; border: 2px solid #f2f2f2; } .datatable-checkbox input[type=checkbox]:checked::before { transform: rotate(-45deg); block-size: 0.5rem; border-color: #009688; border-block-start-style: none; border-inline-end-style: none; } .datatable-checkbox input[type=checkbox]::after { content: ""; position: absolute; inset-block-start: 0; inset-inline-start: 0; inline-size: 1rem; block-size: 1rem; background: #fff; cursor: pointer; } /** * Progress bar animations */ @keyframes query { 0% { opacity: 1; transform: translateX(35%) scale(0.3, 1); } 100% { opacity: 0; transform: translateX(-50%) scale(0, 1); } }