255 lines
4.9 KiB
Plaintext
255 lines
4.9 KiB
Plaintext
/*!
|
|
* This file is part of the Semantic MediaWiki Extension
|
|
* @see https://semantic-mediawiki.org/
|
|
*
|
|
* @section LICENSE
|
|
* This program is free software; you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License as published by
|
|
* the Free Software Foundation; either version 2 of the License, or
|
|
* (at your option) any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program; if not, write to the Free Software
|
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
|
|
*
|
|
* @since 5.0
|
|
*
|
|
* @file
|
|
* @ingroup SMW
|
|
*
|
|
* @licence GNU GPL v2+
|
|
* @author mwjames
|
|
*/
|
|
|
|
@import 'tokens.less';
|
|
|
|
/**
|
|
* Factbox component
|
|
* Used primarily in Special:Browse
|
|
*/
|
|
.smw-factbox {
|
|
border: @border-base;
|
|
border-radius: @border-radius-base;
|
|
line-height: @line-height-xx-small;
|
|
|
|
&-header,
|
|
&-pagination,
|
|
&-section-heading,
|
|
&-property-name,
|
|
&-property-values {
|
|
padding-inline: @spacing-75;
|
|
}
|
|
|
|
&-header,
|
|
&-pagination {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
flex-wrap: wrap;
|
|
column-gap: @spacing-100;
|
|
}
|
|
|
|
&-header {
|
|
position: sticky;
|
|
top: 0;
|
|
z-index: @z-index-sticky;
|
|
padding-block: @spacing-100;
|
|
background-color: @background-color-base;
|
|
}
|
|
|
|
&-header,
|
|
&-section {
|
|
border-bottom: @border-base;
|
|
}
|
|
|
|
&-title,
|
|
&-section-heading {
|
|
line-height: @line-height-xxx-small;
|
|
font-weight: @font-weight-bold;
|
|
}
|
|
|
|
&-title {
|
|
font-size: @font-size-x-large;
|
|
}
|
|
|
|
&-actions {
|
|
white-space: nowrap;
|
|
|
|
a + a {
|
|
margin-inline-start: @spacing-50;
|
|
border-inline-start: @border-subtle;
|
|
padding-inline-start: @spacing-50;
|
|
}
|
|
}
|
|
|
|
&-section {
|
|
&:last-child {
|
|
border-bottom: 0;
|
|
}
|
|
|
|
.smw-factbox-property {
|
|
flex-direction: row;
|
|
|
|
&-name {
|
|
text-align: start;
|
|
|
|
@media ( min-width: @min-width-breakpoint-tablet ) {
|
|
text-align: end;
|
|
}
|
|
}
|
|
|
|
&-values {
|
|
text-align: start;
|
|
}
|
|
}
|
|
|
|
&[ data-mw-smw-factbox-direction = "end" ] {
|
|
.smw-factbox-property {
|
|
flex-direction: row-reverse;
|
|
|
|
&-name {
|
|
text-align: end;
|
|
|
|
@media ( min-width: @min-width-breakpoint-tablet ) {
|
|
text-align: start;
|
|
}
|
|
}
|
|
|
|
&-values {
|
|
text-align: end;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
&-section-heading {
|
|
padding-block: @spacing-75;
|
|
}
|
|
|
|
&-property {
|
|
border-top: @border-subtle;
|
|
word-break: break-word;
|
|
|
|
@media ( min-width: @min-width-breakpoint-tablet ) {
|
|
display: flex;
|
|
}
|
|
|
|
&-name,
|
|
&-values {
|
|
padding-block: @spacing-50;
|
|
}
|
|
|
|
&-name {
|
|
background-color: @background-color-neutral-subtle;
|
|
font-weight: @font-weight-bold;
|
|
flex-basis: 30%;
|
|
}
|
|
|
|
&-values {
|
|
flex-basis: 70%;
|
|
}
|
|
|
|
&:first-child {
|
|
border-top: 0;
|
|
}
|
|
}
|
|
|
|
&-message {
|
|
// Remove message box border as it conflicts with factbox borders
|
|
border: 0 !important;
|
|
}
|
|
|
|
&-pagination {
|
|
border-top: @border-subtle;
|
|
padding-block: @spacing-75;
|
|
|
|
&-status {
|
|
color: @color-subtle;
|
|
}
|
|
}
|
|
|
|
&[ aria-busy = "true" ] {
|
|
.smw-factbox-header {
|
|
position: relative;
|
|
padding-block: @spacing-100;
|
|
overflow: hidden;
|
|
|
|
&::after {
|
|
content: '';
|
|
position: absolute;
|
|
bottom: 0;
|
|
width: 33.33%;
|
|
height: 2px;
|
|
background-color: @background-color-progressive;
|
|
animation-name: cdx-progress-bar-inline;
|
|
animation-duration: @animation-duration-medium;
|
|
animation-timing-function: @animation-timing-function-base;
|
|
animation-iteration-count: @animation-iteration-count-base;
|
|
}
|
|
}
|
|
}
|
|
|
|
&-container {
|
|
.smw-factbox {
|
|
font-size: @font-size-small;
|
|
}
|
|
}
|
|
|
|
&-table-wrapper {
|
|
overflow-x: auto;
|
|
margin: -@border-width-base; // hide table border since we have border at factbox
|
|
|
|
.wikitable {
|
|
margin: 0;
|
|
width: 100%;
|
|
display: table; // enforce table layout because we already have a wrapper to handle responsiveness
|
|
}
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Tab styles required for on page factbox
|
|
* TODO: This shouldn't be here and the tab implementation is quite hacky,
|
|
* remove this when we rework tabs
|
|
*/
|
|
.smw-factbox-container.smw-tabs {
|
|
section {
|
|
border: 0; // border is handled by factbox, no need for another one
|
|
}
|
|
|
|
#tab-facts-list:checked ~ #tab-content-facts-list ,
|
|
#tab-facts-attachment:checked ~ #tab-content-facts-attachment {
|
|
display: block;
|
|
}
|
|
}
|
|
|
|
/** TODO: Icon should be handled somewhere else, remove this when we rework icons */
|
|
.smw-factbox-actions .rdflink a {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: @spacing-50;
|
|
|
|
&::before {
|
|
content: '';
|
|
display: block;
|
|
min-width: @min-size-icon-small;
|
|
min-height: @min-size-icon-small;
|
|
background-size: contain;
|
|
background-image: url( assets/smw-icon-rdf.svg );
|
|
}
|
|
}
|
|
|
|
@keyframes cdx-progress-bar-inline {
|
|
0% {
|
|
transform: translate( -100% );
|
|
}
|
|
|
|
100% {
|
|
transform: translate( 300% );
|
|
}
|
|
} |