Files

316 lines
7.5 KiB
Plaintext

// out: false
// Standalone native tables have no section to supply their surface or corners.
// Round painted cells instead of clipping interactive descendants.
.native-table-card() {
.native-page-card();
border-collapse: separate;
border-spacing: 0;
overflow: visible;
> :is(thead, tbody, .thead, .tbody):first-child,
> :is(thead, tbody, .thead, .tbody):first-child > :is(tr, .tr):first-child,
> :is(tr, .tr):first-child {
border-start-start-radius: inherit;
border-start-end-radius: inherit;
}
> :is(thead, tbody, .thead, .tbody):first-child > :is(tr, .tr):first-child > :is(td, th, .td, .th),
> :is(tr, .tr):first-child > :is(td, th, .td, .th) {
&:first-child {
border-start-start-radius: inherit;
}
&:last-child {
border-start-end-radius: inherit;
}
}
@media screen and (max-width: 1152px) {
// Responsive tables hide their title row; the first data row owns the top.
:is(.table-titles, .cbi-section-table-titles) + .tr {
border-start-start-radius: inherit;
border-start-end-radius: inherit;
}
}
}
// table
.table {
position: relative;
display: table;
}
.tr {
display: table-row;
}
.thead {
display: table-header-group;
}
.tbody {
display: table-row-group;
}
.tfoot {
display: table-footer-group;
}
.td,
.th {
line-height: normal;
display: table-cell;
padding: .5em;
text-align: center;
vertical-align: middle;
overflow-wrap: anywhere;
}
// Let descriptive data yield space to the action column before controls wrap.
.td:not(.cbi-section-actions) .nowrap {
white-space: normal;
overflow-wrap: anywhere;
}
.td .ifacebadge {
max-width: 100%;
> span {
min-width: 0;
max-width: 100%;
overflow-wrap: anywhere;
}
}
.th {
font-weight: bold;
white-space: nowrap;
}
.tr.placeholder {
height: 4em;
}
.tr.placeholder>.td {
line-height: 3;
position: absolute;
right: 0;
bottom: 0;
left: 0;
padding: 0.4rem 0 !important;
text-align: center !important;
background: inherit;
}
.td[width="33%"] {
padding: 1.1em 1.5rem;
}
.table[width="33%"],
.th[width="33%"],
.td[width="33%"] {
width: 33%;
}
.table[width="100%"],
.th[width="100%"],
.td[width="100%"] {
width: 100%;
}
.cbi-tblsection {
overflow-x: auto;
}
table {
border-spacing: 0;
border-collapse: collapse;
}
table,
.table {
overflow-y: hidden;
width: 100%;
font-size: 0.75rem;
}
// A flush table, its final row group, row and edge cells share the card's
// bottom corners. Rounding the painted layers keeps dropdowns/tooltips free
// to extend beyond the card without clipping them with overflow: hidden.
:is(.cbi-section, [data-tab-title]) > .table:last-child,
:is(.cbi-section, [data-tab-title]) > .table:has(+ .cbi-section-create:empty:last-child),
:is(.cbi-section, [data-tab-title]) > :not(.table):last-child > .table:only-child,
#view > .table {
border-collapse: separate;
border-spacing: 0;
overflow: visible;
border-end-start-radius: var(--radius-card);
border-end-end-radius: var(--radius-card);
> :is(thead, tbody, tfoot, .thead, .tbody, .tfoot):last-child,
> :is(thead, tbody, tfoot, .thead, .tbody, .tfoot):last-child > :is(tr, .tr):last-child,
> :is(tr, .tr):last-child {
border-end-start-radius: inherit;
border-end-end-radius: inherit;
}
> :is(thead, tbody, tfoot, .thead, .tbody, .tfoot):last-child > :is(tr, .tr):last-child > :is(td, th, .td, .th):first-child,
> :is(tr, .tr):last-child > :is(td, th, .td, .th):first-child {
border-end-start-radius: inherit;
}
> :is(thead, tbody, tfoot, .thead, .tbody, .tfoot):last-child > :is(tr, .tr):last-child > :is(td, th, .td, .th):last-child,
> :is(tr, .tr):last-child > :is(td, th, .td, .th):last-child {
border-end-end-radius: inherit;
}
}
// Status widgets often replace a table inside a single dynamic wrapper.
// When that wrapper fills its card, the first painted row shares its top edge.
:is(.cbi-section, [data-tab-title]) > :not(.table):only-child > .table:only-child {
border-start-start-radius: var(--radius-card);
border-start-end-radius: var(--radius-card);
> :is(thead, tbody, .thead, .tbody):first-child,
> :is(thead, tbody, .thead, .tbody):first-child > :is(tr, .tr):first-child,
> :is(tr, .tr):first-child {
border-start-start-radius: inherit;
border-start-end-radius: inherit;
}
> :is(thead, tbody, .thead, .tbody):first-child > :is(tr, .tr):first-child > :is(td, th, .td, .th),
> :is(tr, .tr):first-child > :is(td, th, .td, .th) {
border-top: 0;
&:first-child {
border-start-start-radius: inherit;
}
&:last-child {
border-start-end-radius: inherit;
}
}
}
.table .table-titles th {
background-color: var(--surface-contrast);
}
table>tbody>tr>td,
table>tbody>tr>th,
table>tfoot>tr>td,
table>tfoot>tr>th,
table>thead>tr>td,
table>thead>tr>th,
.table>.tbody>.tr>.td,
.table>.tbody>.tr>.th,
.table>.tfoot>.tr>.td,
.table>.tfoot>.tr>.th,
.table>.thead>.tr>.td,
.table>.thead>.tr>.th,
.table>.tr>.td.cbi-value-field,
.table>.tr>.th.cbi-section-table-cell {
padding: .5rem;
}
.container>.cbi-section:first-of-type>.table[width="100%"]>.tr>.td {
padding: .6rem;
}
.cbi-section-table-cell {
line-height: 1.1;
align-self: flex-end;
flex: 1 1 auto;
}
body:not([data-page="admin-dashboard"]) {
tr>td,
tr>th,
.tr>.td,
.tr>.th,
.cbi-section-table-row::before,
#cbi-wireless>#wifi_assoclist_table>.tr:nth-child(2) {
border-top: var(--table-border);
padding: 1.1em 1.25rem;
}
}
#cbi-wireless .td,
.table[width="100%"]>.tr:first-child>.td,
[data-page="admin-network-diagnostics"] .tr>.td,
.tr.table-titles>.th,
.tr.cbi-section-table-titles>.th {
border-top: 0 !important;
background-color: var(--surface-muted);
padding: 1.1em 1.25rem;
line-height: 1.3rem;
}
#cbi-network .tr:first-child>.td {
border-top: 0;
}
.table[width="100%"]>.tr:first-child>.td {
margin: auto 0;
}
.cbi-section-table-row {
margin-bottom: 1rem;
text-align: center !important;
background: var(--row-color);
}
.cbi-section-table-row:last-child {
margin-bottom: 0;
}
.cbi-section-table-row>.cbi-value-field .cbi-dynlist,
.cbi-section-table-row>.cbi-value-field .cbi-dropdown,
.cbi-section-table-row>.cbi-value-field .cbi-input-select,
.cbi-section-table-row>.cbi-value-field .cbi-input-text,
.cbi-section-table-row>.cbi-value-field .cbi-input-password {
width: 100%;
}
.cbi-section-table-row>.cbi-value-field .cbi-input-text,
.cbi-section-table-row>.cbi-value-field .cbi-input-password {
min-width: 80px;
}
.cbi-section-table-row>.cbi-value-field [data-dynlist]>input,
.cbi-section-table-row>.cbi-value-field input.cbi-input-password {
width: calc(100% - 1.5rem);
}
.cbi-section-table-row .td {
text-align: center !important;
.cbi-checkbox {
input[type="checkbox"] {
margin: 0;
}
}
}
// Count data rows only: inline headings and separate thead groups must start
// with the same stripe, distinct from the muted table heading.
div>table>tbody>tr:nth-child(2n of :has(> td):not(.table-titles, .cbi-section-table-titles, .cbi-section-table-descr)),
div>.table>.tbody>.tr:nth-child(2n of :has(> .td):not(.table-titles, .cbi-section-table-titles, .cbi-section-table-descr)),
div>.table>.tr:nth-child(2n of :has(> .td):not(.table-titles, .cbi-section-table-titles, .cbi-section-table-descr)) {
background-color: var(--row-alt);
}
/* fix multiple table */
table table,
.table .table,
.cbi-value-field table,
.cbi-value-field .table,
td>table>tbody>tr>td,
.td>.table>.tbody>.tr>.td,
.cbi-value-field>table>tbody>tr>td,
.cbi-value-field>.table>.tbody>.tr>.td {
border: 0;
}