445 lines
9.6 KiB
SCSS
445 lines
9.6 KiB
SCSS
|
// Common styles.
|
||
|
.text-left { text-align: left; }
|
||
|
.text-right { text-align: right; }
|
||
|
.text-center { text-align: center; }
|
||
|
.text-justify { text-align: justify; }
|
||
|
.clearfix {
|
||
|
&:after {
|
||
|
content: "";
|
||
|
display: table;
|
||
|
clear: both;
|
||
|
}
|
||
|
}
|
||
|
.img-responsive {
|
||
|
display: block;
|
||
|
max-width: 100%;
|
||
|
&[height] {
|
||
|
height: auto;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
.opacity-hide { opacity: 0; }
|
||
|
.core-big { font-size: 115%; }
|
||
|
.invisible { visibility: hidden; }
|
||
|
|
||
|
.button-no-uppercase {
|
||
|
text-transform: none;
|
||
|
}
|
||
|
|
||
|
// Correctly inherit ion-text-wrap onto labels.
|
||
|
ion-item.ion-text-wrap ion-label {
|
||
|
white-space: normal !important;
|
||
|
}
|
||
|
|
||
|
|
||
|
// Ionic toolbar.
|
||
|
ion-toolbar ion-back-button,
|
||
|
ion-toolbar .in-toolbar.button-clear {
|
||
|
--color: var(--ion-color-primary-contrast);
|
||
|
--ion-toolbar-color: var(--ion-color-primary-contrast);
|
||
|
}
|
||
|
|
||
|
ion-toolbar .core-navbar-button-hidden {
|
||
|
display: none !important;
|
||
|
}
|
||
|
|
||
|
// Ionic icon.
|
||
|
ion-icon {
|
||
|
&.icon-slash::after,
|
||
|
&.icon-backslash::after {
|
||
|
content: " ";
|
||
|
position: absolute;
|
||
|
top: 0;
|
||
|
bottom: 0;
|
||
|
left: 0;
|
||
|
right: 0;
|
||
|
background-color: var(--ion-color-danger);
|
||
|
-webkit-mask: url("/assets/fonts/font-awesome/solid/slash.svg") no-repeat 50% 50%;
|
||
|
mask: url("/assets/fonts/font-awesome/solid/slash.svg") no-repeat 50% 50%;
|
||
|
}
|
||
|
|
||
|
&.icon-slash::after {
|
||
|
-webkit-transform: scale(-1, 1);
|
||
|
transform: scale(-1, 1);
|
||
|
}
|
||
|
|
||
|
&.fa-fw {
|
||
|
text-align: center;
|
||
|
width: 1.25em;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
[dir=rtl] ion-icon.icon-flip-rtl {
|
||
|
transform: scaleX(-1);
|
||
|
}
|
||
|
|
||
|
// Ionic alert.
|
||
|
ion-alert.core-alert-network-error .alert-head {
|
||
|
position: relative;
|
||
|
content: " ";
|
||
|
background: url("/assets/fonts/font-awesome/solid/wifi.svg") no-repeat 50% 50%;
|
||
|
margin: 25px auto;
|
||
|
|
||
|
&::after {
|
||
|
content: " ";
|
||
|
position: absolute;
|
||
|
top: -20%;
|
||
|
right: -15%;
|
||
|
width: 50%;
|
||
|
height: 50%;
|
||
|
background-color: var(--ion-color-danger);
|
||
|
-webkit-mask: url("/assets/fonts/font-awesome/solid/exclamation-triangle.svg") no-repeat 50% 50%;
|
||
|
mask: url("/assets/fonts/font-awesome/solid/exclamation-triangle.svg") no-repeat 50% 50%;
|
||
|
}
|
||
|
}
|
||
|
[dir=rtl] ion-alert.core-alert-network-error .alert-head::after {
|
||
|
right: unset;
|
||
|
left: -15%;
|
||
|
}
|
||
|
ion-alert.core-nohead {
|
||
|
.alert-head {
|
||
|
padding-bottom: 0;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// Ionic item divider.
|
||
|
ion-item-divider {
|
||
|
.item-detail-icon {
|
||
|
font-size: 20px;
|
||
|
opacity: 0.25;
|
||
|
padding-inline-end: 16px;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// Ionic list.
|
||
|
ion-list.list-md {
|
||
|
padding: 0;
|
||
|
}
|
||
|
|
||
|
// Header.
|
||
|
ion-tabs.hide-header ion-header {
|
||
|
display: none;
|
||
|
}
|
||
|
ion-toolbar {
|
||
|
ion-spinner {
|
||
|
margin: 10px;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// Modals.
|
||
|
.core-modal-fullscreen .modal-wrapper {
|
||
|
position: absolute;
|
||
|
// @todo @include position(0 !important, null, null, 0 !important);
|
||
|
display: block;
|
||
|
width: 100% !important;
|
||
|
height: 100% !important;
|
||
|
}
|
||
|
|
||
|
.core-modal-force-on-top {
|
||
|
z-index: 100000 !important;
|
||
|
}
|
||
|
|
||
|
// Hidden submit button.
|
||
|
.core-submit-hidden-enter {
|
||
|
position: absolute;
|
||
|
visibility: hidden;
|
||
|
left: -1000px;
|
||
|
}
|
||
|
|
||
|
// Note on foot of ion-input.
|
||
|
.item .core-input-footnote {
|
||
|
width: 100%;
|
||
|
font-style: italic;
|
||
|
margin-top: 0;
|
||
|
margin-bottom: 10px;
|
||
|
font-size: 14px;
|
||
|
}
|
||
|
|
||
|
.core-selected-item {
|
||
|
border-inline-start: var(--selected-item-border-width) solid var(--selected-item-color);
|
||
|
}
|
||
|
|
||
|
// Item styles
|
||
|
.item.core-selected-item {
|
||
|
// TODO: Add safe area to border and RTL
|
||
|
--ion-safe-area-left: calc(-1 * var(--selected-item-border-width));
|
||
|
}
|
||
|
|
||
|
.item.item-file {
|
||
|
ion-thumbnail {
|
||
|
--size: 32px;
|
||
|
width: var(--size);
|
||
|
height: var(--size);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
.item.core-primary-item,
|
||
|
.item.core-info-item,
|
||
|
.item.core-secondary-item,
|
||
|
.item.core-tertiary-item,
|
||
|
.item.core-success-item,
|
||
|
.item.core-warning-item,
|
||
|
.item.core-danger-item {
|
||
|
--inner-border-width: 0 0 3px 0;
|
||
|
}
|
||
|
.item.core-primary-item {
|
||
|
--border-color: var(--ion-color-primary);
|
||
|
}
|
||
|
.item.core-info-item,
|
||
|
.item.core-secondary-item {
|
||
|
--border-color: var(--ion-color-secondary);
|
||
|
}
|
||
|
.item.core-tertiary-item {
|
||
|
--border-color: var(--ion-color-tertiary);
|
||
|
}
|
||
|
.item.core-success-item {
|
||
|
--border-color: var(--ion-color-success);
|
||
|
}
|
||
|
.item.core-warning-item {
|
||
|
--border-color: var(--ion-color-warning);
|
||
|
}
|
||
|
.item.core-danger-item {
|
||
|
--border-color: var(--ion-color-danger);
|
||
|
}
|
||
|
.item-dimmed {
|
||
|
opacity: 0.7;
|
||
|
--background: var(--gray-lighter);
|
||
|
}
|
||
|
|
||
|
// Extra text colors.
|
||
|
.text-gray {
|
||
|
color: var(--gray-dark);
|
||
|
}
|
||
|
|
||
|
// Card styles
|
||
|
|
||
|
// Message cards.
|
||
|
ion-card.core-primary-card,
|
||
|
ion-card.core-info-card,
|
||
|
ion-card.core-secondary-card,
|
||
|
ion-card.core-tertiary-card,
|
||
|
ion-card.core-success-card,
|
||
|
ion-card.core-warning-card,
|
||
|
ion-card.core-danger-card {
|
||
|
border-bottom: 3px solid transparent;
|
||
|
ion-item::part(native) {
|
||
|
--inner-border-width: 0;
|
||
|
}
|
||
|
ion-label {
|
||
|
white-space: normal !important;
|
||
|
}
|
||
|
}
|
||
|
ion-card.core-primary-card {
|
||
|
border-bottom-color: var(--ion-color-primary);
|
||
|
ion-icon {
|
||
|
color: var(--ion-color-primary);
|
||
|
}
|
||
|
}
|
||
|
ion-card.core-info-card,
|
||
|
ion-card.core-secondary-card {
|
||
|
border-bottom-color: var(--ion-color-secondary);
|
||
|
ion-icon {
|
||
|
color: var(--ion-color-secondary);
|
||
|
}
|
||
|
}
|
||
|
ion-card.core-tertiary-card {
|
||
|
border-bottom-color: var(--ion-color-tertiary);
|
||
|
ion-icon {
|
||
|
color: var(--ion-color-tertiary);
|
||
|
}
|
||
|
}
|
||
|
ion-card.core-success-card {
|
||
|
border-bottom-color: var(--ion-color-success);
|
||
|
ion-icon {
|
||
|
color: var(--ion-color-success);
|
||
|
}
|
||
|
}
|
||
|
ion-card.core-warning-card {
|
||
|
border-bottom-color: var(--ion-color-warning);
|
||
|
ion-icon {
|
||
|
color: var(--ion-color-warning);
|
||
|
}
|
||
|
}
|
||
|
ion-card.core-danger-card {
|
||
|
border-bottom-color: var(--ion-color-danger);
|
||
|
ion-icon {
|
||
|
color: var(--ion-color-danger);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// Avatar
|
||
|
// -------------------------
|
||
|
// Large centered avatar
|
||
|
img.large-avatar,
|
||
|
.large-avatar img {
|
||
|
display: block;
|
||
|
margin: 8px auto;
|
||
|
width: var(--core-large-avatar-size);
|
||
|
height: var(--core-large-avatar-size);
|
||
|
max-width: var(--core-large-avatar-size);
|
||
|
max-height: var(--core-large-avatar-size);
|
||
|
margin-bottom: 10px;
|
||
|
border-radius : 50%;
|
||
|
padding: 4px;
|
||
|
border: 1px solid #ddd;
|
||
|
background-color: transparent;
|
||
|
}
|
||
|
|
||
|
ion-avatar.large-avatar {
|
||
|
width: var(--core-large-avatar-size);
|
||
|
height: var(--core-large-avatar-size);
|
||
|
}
|
||
|
|
||
|
ion-avatar ion-img, ion-avatar img {
|
||
|
text-indent: -99999px;
|
||
|
background-color: var(--gray-light);
|
||
|
}
|
||
|
|
||
|
// Wait to load before showing the image.
|
||
|
img[core-external-content]:not([src]) {
|
||
|
visibility: hidden;
|
||
|
}
|
||
|
img[alt] {
|
||
|
text-indent: -999999px;
|
||
|
white-space: nowrap;
|
||
|
overflow: hidden;
|
||
|
}
|
||
|
|
||
|
// Activity modules
|
||
|
.core-module-icon {
|
||
|
width: auto;
|
||
|
max-width: 24px;
|
||
|
max-height: 24px;
|
||
|
}
|
||
|
|
||
|
ion-item img.core-module-icon[slot="start"] {
|
||
|
margin-top: 12px;
|
||
|
margin-bottom: 12px;
|
||
|
margin-right: 32px;
|
||
|
}
|
||
|
|
||
|
[dir=rtl] ion-item img.core-module-icon[slot="start"] {
|
||
|
margin-right: unset;
|
||
|
margin-left: 32px;
|
||
|
}
|
||
|
|
||
|
ion-toolbar ion-title img.core-bar-button-image,
|
||
|
ion-toolbar ion-title .core-bar-button-image img {
|
||
|
padding: 0;
|
||
|
width: var(--core-toolbar-button-image-width);
|
||
|
height: var(--core-toolbar-button-image-width);
|
||
|
max-width: var(--core-toolbar-button-image-width);
|
||
|
border-radius: 50%;
|
||
|
}
|
||
|
|
||
|
// Action sheet.
|
||
|
.md ion-action-sheet {
|
||
|
.action-sheet-group-cancel {
|
||
|
-webkit-filter: drop-shadow(0px 3px 3px rgba(var(--action-sheet-shadow-color)));
|
||
|
filter: drop-shadow(0px 3px 3px rgba(var(--action-sheet-shadow-color)));
|
||
|
}
|
||
|
|
||
|
.action-sheet-title {
|
||
|
border-bottom: 1px solid var(--title-border-color);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
.ios ion-action-sheet {
|
||
|
.action-sheet-title {
|
||
|
font-size: 16px;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// Select.
|
||
|
ion-select.core-button-select,
|
||
|
.core-button-select {
|
||
|
--background: var(--core-button-select-background);
|
||
|
background: var(--background);
|
||
|
--color: var(--ion-color-primary);
|
||
|
color: var(--color);
|
||
|
text-overflow: ellipsis;
|
||
|
white-space: nowrap;
|
||
|
min-height: 45px;
|
||
|
overflow: hidden;
|
||
|
margin: 8px;
|
||
|
box-shadow: 0 3px 1px -2px rgba(0, 0, 0, .2), 0 2px 2px 0 rgba(0, 0, 0, .14), 0 1px 5px 0 rgba(0, 0, 0, .12);
|
||
|
&::part(icon) {
|
||
|
margin: 0 8px;
|
||
|
}
|
||
|
.core-button-select-text {
|
||
|
margin-inline-end: auto;
|
||
|
}
|
||
|
|
||
|
}
|
||
|
ion-button.core-button-select {
|
||
|
&::part(native) {
|
||
|
text-transform: none;
|
||
|
font-weight: 400;
|
||
|
font-size: 16px;
|
||
|
}
|
||
|
ion-icon {
|
||
|
margin: 0 8px;
|
||
|
}
|
||
|
.select-icon {
|
||
|
width: 19px;
|
||
|
height: 19px;
|
||
|
position: relative;
|
||
|
opacity: 0.33;
|
||
|
|
||
|
.select-icon-inner {
|
||
|
left: 5px;
|
||
|
top: 50%;
|
||
|
margin-top: -2px;
|
||
|
position: absolute;
|
||
|
width: 0px;
|
||
|
height: 0px;
|
||
|
color: currentcolor;
|
||
|
pointer-events: none;
|
||
|
border-top: 5px solid;
|
||
|
border-right: 5px solid transparent;
|
||
|
border-left: 5px solid transparent;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// File uploader.
|
||
|
.action-sheet-button input.core-fileuploader-file-handler-input {
|
||
|
position: absolute;
|
||
|
top: 0;
|
||
|
bottom: 0;
|
||
|
left: 0;
|
||
|
right: 0;
|
||
|
min-width: 100%;
|
||
|
opacity: 0;
|
||
|
z-index: 100;
|
||
|
cursor: pointer;
|
||
|
}
|
||
|
|
||
|
.core-anchor, core-format-text a {
|
||
|
color: -webkit-link;
|
||
|
cursor: pointer;
|
||
|
text-decoration: underline;
|
||
|
}
|
||
|
|
||
|
// Horizontal scrolling elements
|
||
|
.core-horizontal-scroll {
|
||
|
display: flex;
|
||
|
flex-flow: nowrap;
|
||
|
overflow-x: scroll;
|
||
|
flex-direction: row;
|
||
|
}
|
||
|
|
||
|
// Text formats.
|
||
|
// Highlight text.
|
||
|
.matchtext {
|
||
|
background-color: var(--text-hightlight-background-color);
|
||
|
}
|
||
|
|
||
|
// Text for accessibility, hidden from the view.
|
||
|
.accesshide {
|
||
|
position: absolute;
|
||
|
left: -10000px;
|
||
|
font-weight: normal;
|
||
|
font-size: 1em;
|
||
|
}
|