fix(all): safe-area using css variables

This commit is contained in:
Manu Mtz.-Almeida
2018-08-10 01:41:05 +02:00
parent 3da1bf45ba
commit aa23d08a71
18 changed files with 50 additions and 50 deletions

View File

@ -45,10 +45,6 @@ rules:
declaration-no-important:
- true
length-zero-no-unit:
- true
- ignore:
- custom-properties
order/order:
- custom-properties

View File

@ -11,7 +11,7 @@
}
.action-sheet-wrapper {
@include margin(var(--ion-statusbar-padding), auto, var(--ion-bottom-padding), auto);
@include margin(var(--ion-safe-area-top), auto, var(--ion-safe-area-bottom), auto);
}

View File

@ -34,8 +34,8 @@
<style>
:root {
--ion-statusbar-padding: 20px;
--ion-bottom-padding: 40px;
--ion-safe-area-top: 20px;
--ion-safe-area-bottom: 40px;
}
.my-custom-class {
--max-width: 300px;

View File

@ -4,19 +4,24 @@ ion-app.is-device {
}
ion-app.statusbar-padding {
--ion-statusbar-padding: 20px;
--ion-safe-area-top: 20px;
}
// TODO: remove once Safari 11.2 dies
@supports (padding-top: constant(safe-area-inset-top)) {
ion-app.statusbar-padding {
--ion-statusbar-padding: constant(safe-area-inset-top);
--ion-bottom-padding: constant(safe-area-inset-bottom);
--ion-safe-area-top: constant(safe-area-inset-top);
--ion-safe-area-bottom: constant(safe-area-inset-bottom);
--ion-safe-area-left: constant(safe-area-inset-left);
--ion-safe-area-rigtht: constant(safe-area-inset-right);
}
}
@supports (padding-top: env(safe-area-inset-top)) {
ion-app.statusbar-padding {
--ion-statusbar-padding: env(safe-area-inset-top);
--ion-bottom-padding: env(safe-area-inset-bottom);
--ion-safe-area-top: env(safe-area-inset-top);
--ion-safe-area-bottom: env(safe-area-inset-bottom);
--ion-safe-area-left: env(safe-area-inset-left);
--ion-safe-area-rigtht: env(safe-area-inset-right);
}
}

View File

@ -15,5 +15,5 @@ ion-footer {
}
ion-footer ion-toolbar:last-child {
padding-bottom: var(--ion-bottom-padding);
padding-bottom: var(--ion-safe-area-bottom);
}

View File

@ -15,5 +15,5 @@ ion-header {
}
ion-header ion-toolbar:first-child {
padding-top: var(--ion-statusbar-padding, 0);
padding-top: var(--ion-safe-area-top, 0);
}

View File

@ -7,9 +7,8 @@
:host {
--ion-color-base: #{$item-ios-divider-background};
--ion-color-contrast: #{$item-ios-divider-color};
--padding-start: #{$item-ios-divider-padding-start};
@include padding-horizontal($item-ios-divider-padding-start, null);
@include safe-area-padding-horizontal($item-ios-divider-padding-start, null);
@include border-radius(0);
position: relative;

View File

@ -7,8 +7,7 @@
:host {
--ion-color-base: #{$item-md-divider-background};
--ion-color-contrast: #{$item-md-divider-color};
@include padding-horizontal($item-md-divider-padding-start, null);
--padding-start: #{$item-md-divider-padding-start};
border-bottom: $item-md-divider-border-bottom;

View File

@ -5,9 +5,19 @@
// --------------------------------------------------
:host {
--padding-start: 0px;
--padding-end: 0px;
--padding-top: 0px;
--padding-bottom: 0px;
@include font-smoothing();
@include margin(0);
@include padding(0);
@include padding(
var(--padding-top),
calc(var(--padding-end) + var(--ion-safe-area-right, 0px))
var(--padding-bottom),
calc(var(--padding-start) + var(--ion-safe-area-left, 0px))
);
display: flex;

View File

@ -22,12 +22,6 @@
--transition: none;
}
@media screen and (orientation: landscape) {
.item-inner {
@include safe-area-padding-horizontal(var(--inner-padding-start), var(--inner-padding-end));
}
}
// iOS Item Lines
// --------------------------------------------------

View File

@ -18,10 +18,10 @@
--padding-bottom: 0;
--padding-end: 0;
--padding-start: 0;
--inner-padding-top: 0;
--inner-padding-bottom: 0;
--inner-padding-start: 0;
--inner-padding-end: 0;
--inner-padding-top: 0px;
--inner-padding-bottom: 0px;
--inner-padding-start: 0px;
--inner-padding-end: 0px;
--box-shadow: none;
--inner-box-shadow: none;
--highlight-color-focus: #{ion-color(primary, base)};
@ -99,7 +99,12 @@ button, a {
.item-inner {
@include margin(0);
@include padding(var(--inner-padding-top), var(--inner-padding-end), var(--inner-padding-bottom), var(--inner-padding-start));
@include padding(
var(--inner-padding-top),
calc(var(--ion-safe-area-right, 0px) + var(--inner-padding-end)),
var(--inner-padding-bottom),
calc(var(--ion-safe-area-left, 0px) + var(--inner-padding-start))
);
display: flex;

View File

@ -53,7 +53,7 @@ ion-picker {
justify-content: center;
margin-bottom: var(--ion-bottom-padding);
margin-bottom: var(--ion-safe-area-bottom);
contain: strict;
overflow: hidden;

View File

@ -100,19 +100,11 @@ export function iosEnterAnimation(AnimationC: Animation, baseEl: HTMLElement, ev
contentEl.style.left = popoverCSS.left + 'px';
if (checkSafeAreaLeft) {
if (CSS.supports('left', 'constant(safe-area-inset-left)')) {
contentEl.style.left = `calc(${popoverCSS.left}px + constant(safe-area-inset-left)`;
} else if (CSS.supports('left', 'env(safe-area-inset-left)')) {
contentEl.style.left = `calc(${popoverCSS.left}px + env(safe-area-inset-left)`;
}
contentEl.style.left = `calc(${popoverCSS.left}px + var(--ion-safe-area-left, 0px)`;
}
if (checkSafeAreaRight) {
if (CSS.supports('right', 'constant(safe-area-inset-right)')) {
contentEl.style.left = `calc(${popoverCSS.left}px - constant(safe-area-inset-right)`;
} else if (CSS.supports('right', 'env(safe-area-inset-right)')) {
contentEl.style.left = `calc(${popoverCSS.left}px - env(safe-area-inset-right)`;
}
contentEl.style.left = `calc(${popoverCSS.left}px + var(--ion-safe-area-right, 0px)`;
}
contentEl.style.transformOrigin = originY + ' ' + originX;

View File

@ -33,7 +33,7 @@
}
:host(.placement-bottom) {
padding-bottom: var(--ion-bottom-padding);
padding-bottom: var(--ion-safe-area-bottom);
}

View File

@ -10,8 +10,8 @@ export function iosEnterAnimation(AnimationC: Animation, baseEl: HTMLElement, po
const wrapperEle = baseEl.querySelector('.toast-wrapper') as HTMLElement;
wrapperAnimation.addElement(wrapperEle);
const bottom = `calc(-10px - var(--ion-bottom-padding, 0px))`;
const top = `calc(10px + var(--ion-statusbar-padding, 0px))`;
const bottom = `calc(-10px - var(--ion-safe-area-bottom, 0px))`;
const top = `calc(10px + var(--ion-safe-area-top, 0px))`;
switch (position) {
case 'top':

View File

@ -10,8 +10,8 @@ export function iosLeaveAnimation(AnimationC: Animation, baseEl: HTMLElement, po
const wrapperEle = baseEl.querySelector('.toast-wrapper') as HTMLElement;
wrapperAnimation.addElement(wrapperEle);
const bottom = `calc(-10px - var(--ion-bottom-padding, 0px))`;
const top = `calc(10px + var(--ion-statusbar-padding, 0px))`;
const bottom = `calc(-10px - var(--ion-safe-area-bottom, 0px))`;
const top = `calc(10px + var(--ion-safe-area-top, 0px))`;
switch (position) {
case 'top':

View File

@ -85,8 +85,8 @@
<style>
:root {
--ion-statusbar-padding: 20px;
--ion-bottom-padding: 40px;
--ion-safe-area-top: 20px;
--ion-safe-area-bottom: 40px;
}
f {

View File

@ -26,11 +26,11 @@
}
.toast-md .toast-wrapper.toast-top {
padding-top: var(--ion-statusbar-padding);
padding-top: var(--ion-safe-area-top);
}
.toast-md .toast-wrapper.toast-bottom {
padding-bottom: var(--ion-bottom-padding);
padding-bottom: var(--ion-safe-area-bottom);
}
.toast-md .toast-wrapper.toast-middle {