@ionic/core
Version:
Base components for Ionic
266 lines (248 loc) • 7.56 kB
CSS
/**
* Convert a font size to a dynamic font size.
* Fonts that participate in Dynamic Type should use
* dynamic font sizes.
* @param size - The initial font size including the unit (i.e. px or pt)
* @param unit (optional) - The unit to convert to. Use this if you want to
* convert to a unit other than $baselineUnit.
*/
/**
* Convert a font size to a dynamic font size but impose
* a maximum font size.
* @param size - The initial font size including the unit (i.e. px or pt)
* @param maxScale - The maximum scale of the font (i.e. 2.5 for a maximum 250% scale).
* @param unit (optional) - The unit to convert the initial font size to. Use this if you want to
* convert to a unit other than $baselineUnit.
*/
/**
* Convert a font size to a dynamic font size but impose
* a minimum font size.
* @param size - The initial font size including the unit (i.e. px or pt)
* @param minScale - The minimum scale of the font (i.e. 0.8 for a minimum 80% scale).
* @param unit (optional) - The unit to convert the initial font size to. Use this if you want to
* convert to a unit other than $baselineUnit.
*/
/**
* Convert a font size to a dynamic font size but impose
* maximum and minimum font sizes.
* @param size - The initial font size including the unit (i.e. px or pt)
* @param minScale - The minimum scale of the font (i.e. 0.8 for a minimum 80% scale).
* @param maxScale - The maximum scale of the font (i.e. 2.5 for a maximum 250% scale).
* @param unit (optional) - The unit to convert the initial font size to. Use this if you want to
* convert to a unit other than $baselineUnit.
*/
/**
* A heuristic that applies CSS to tablet
* viewports.
*
* Usage:
* @include tablet-viewport() {
* :host {
* background-color: green;
* }
* }
*/
/**
* A heuristic that applies CSS to mobile
* viewports (i.e. phones, not tablets).
*
* Usage:
* @include mobile-viewport() {
* :host {
* background-color: blue;
* }
* }
*/
:host {
/**
* @prop --background: Background of the popover
* @prop --box-shadow: Box shadow of the popover
*
* @prop --min-width: Minimum width of the popover
* @prop --width: Width of the popover
* @prop --max-width: Maximum width of the popover
*
* @prop --min-height: Minimum height of the popover
* @prop --height: Height of the popover
* @prop --max-height: Maximum height of the popover
*
* @prop --backdrop-opacity: Opacity of the backdrop
*
* @prop --offset-x: The amount to move the popover by on the x-axis
* @prop --offset-y: The amount to move the popover by on the y-axis
*/
--background: var(--ion-background-color, #fff);
--min-width: 0;
--min-height: 0;
--max-width: auto;
--height: auto;
--offset-x: 0px;
--offset-y: 0px;
left: 0;
right: 0;
top: 0;
bottom: 0;
display: flex;
position: fixed;
align-items: center;
justify-content: center;
outline: none;
color: var(--ion-text-color, #000);
z-index: 1001;
}
/**
* With nested popovers, only the popover that
* was first presented has a popover. This is the
* parent popover and allows us to easily
* track all nested popovers from a single backdrop.
* As a result, nested popovers do not have backdrops
* and their container should not be clickable.
* This ensures that users can click the parent backdrop
* while still interacting with the nested popover inner
* content.
*/
:host(.popover-nested) {
pointer-events: none;
}
:host(.popover-nested) .popover-wrapper {
pointer-events: auto;
}
:host(.overlay-hidden) {
display: none;
}
.popover-wrapper {
z-index: 10;
}
.popover-content {
display: flex;
position: absolute;
flex-direction: column;
width: var(--width);
min-width: var(--min-width);
max-width: var(--max-width);
height: var(--height);
min-height: var(--min-height);
max-height: var(--max-height);
background: var(--background);
box-shadow: var(--box-shadow);
overflow: auto;
z-index: 10;
}
::slotted(.popover-viewport) {
--ion-safe-area-top: 0px;
--ion-safe-area-right: 0px;
--ion-safe-area-bottom: 0px;
--ion-safe-area-left: 0px;
display: flex;
flex-direction: column;
}
:host(.popover-nested.popover-side-left) {
--offset-x: 5px;
}
:host(.popover-nested.popover-side-right) {
--offset-x: -5px;
}
:host(.popover-nested.popover-side-start) {
--offset-x: 5px;
}
:host-context([dir=rtl]):host(.popover-nested.popover-side-start), :host-context([dir=rtl]).popover-nested.popover-side-start {
--offset-x: -5px;
}
@supports selector(:dir(rtl)) {
:host(.popover-nested.popover-side-start:dir(rtl)) {
--offset-x: -5px;
}
}
:host(.popover-nested.popover-side-end) {
--offset-x: -5px;
}
:host-context([dir=rtl]):host(.popover-nested.popover-side-end), :host-context([dir=rtl]).popover-nested.popover-side-end {
--offset-x: 5px;
}
@supports selector(:dir(rtl)) {
:host(.popover-nested.popover-side-end:dir(rtl)) {
--offset-x: 5px;
}
}
/**
* Convert a font size to a dynamic font size.
* Fonts that participate in Dynamic Type should use
* dynamic font sizes.
* @param size - The initial font size including the unit (i.e. px or pt)
* @param unit (optional) - The unit to convert to. Use this if you want to
* convert to a unit other than $baselineUnit.
*/
/**
* Convert a font size to a dynamic font size but impose
* a maximum font size.
* @param size - The initial font size including the unit (i.e. px or pt)
* @param maxScale - The maximum scale of the font (i.e. 2.5 for a maximum 250% scale).
* @param unit (optional) - The unit to convert the initial font size to. Use this if you want to
* convert to a unit other than $baselineUnit.
*/
/**
* Convert a font size to a dynamic font size but impose
* a minimum font size.
* @param size - The initial font size including the unit (i.e. px or pt)
* @param minScale - The minimum scale of the font (i.e. 0.8 for a minimum 80% scale).
* @param unit (optional) - The unit to convert the initial font size to. Use this if you want to
* convert to a unit other than $baselineUnit.
*/
/**
* Convert a font size to a dynamic font size but impose
* maximum and minimum font sizes.
* @param size - The initial font size including the unit (i.e. px or pt)
* @param minScale - The minimum scale of the font (i.e. 0.8 for a minimum 80% scale).
* @param maxScale - The maximum scale of the font (i.e. 2.5 for a maximum 250% scale).
* @param unit (optional) - The unit to convert the initial font size to. Use this if you want to
* convert to a unit other than $baselineUnit.
*/
/**
* A heuristic that applies CSS to tablet
* viewports.
*
* Usage:
* @include tablet-viewport() {
* :host {
* background-color: green;
* }
* }
*/
/**
* A heuristic that applies CSS to mobile
* viewports (i.e. phones, not tablets).
*
* Usage:
* @include mobile-viewport() {
* :host {
* background-color: blue;
* }
* }
*/
:host {
--width: 250px;
--max-height: 90%;
--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);
--backdrop-opacity: var(--ion-backdrop-opacity, 0.32);
}
.popover-content {
border-radius: 4px;
transform-origin: left top;
}
:host-context([dir=rtl]) .popover-content {
transform-origin: right top;
}
[dir=rtl] .popover-content {
transform-origin: right top;
}
@supports selector(:dir(rtl)) {
.popover-content:dir(rtl) {
transform-origin: right top;
}
}
.popover-viewport {
transition-delay: 100ms;
}
.popover-wrapper {
opacity: 0;
}