Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Box shadow atomic class fix for IE 11 to Edge 18 #612

Merged
merged 6 commits into from Jan 9, 2020
Merged
Show file tree
Hide file tree
Changes from 5 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
4 changes: 4 additions & 0 deletions packages/thumbprint-atomic/CHANGELOG.md
Expand Up @@ -2,6 +2,10 @@

## Unreleased

### Added

- [Patch] Adding IE/Edge selectors to `box-shadow` to bring visual parity with modern browsers. (#476)

## 4.0.0 - 2019-12-13

### Removed
Expand Down
64 changes: 64 additions & 0 deletions packages/thumbprint-atomic/__snapshots__/test.js.snap
Expand Up @@ -200,15 +200,31 @@ exports[`compiles correctly 1`] = `
.shadow-100 {
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1) !important;
}
.shadow-100,
_:-ms-lang(x) {
box-shadow: 0 1px 8px rgba(0, 0, 0, 0.15) !important;
}
.shadow-200 {
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.15) !important;
}
.shadow-200,
_:-ms-lang(x) {
box-shadow: 0 1px 10px rgba(0, 0, 0, 0.2) !important;
}
.shadow-300 {
box-shadow: 0 2px 7px rgba(0, 0, 0, 0.15) !important;
}
.shadow-300,
_:-ms-lang(x) {
box-shadow: 0 1px 14px rgba(0, 0, 0, 0.22) !important;
}
.shadow-400 {
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.2) !important;
}
.shadow-400,
_:-ms-lang(x) {
box-shadow: 0 1px 20px rgba(0, 0, 0, 0.25) !important;
}
.color-inherit {
color: inherit !important;
}
Expand Down Expand Up @@ -1806,15 +1822,31 @@ exports[`compiles correctly 1`] = `
.s_shadow-100 {
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1) !important;
}
.s_shadow-100,
_:-ms-lang(x) {
box-shadow: 0 1px 8px rgba(0, 0, 0, 0.15) !important;
}
.s_shadow-200 {
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.15) !important;
}
.s_shadow-200,
_:-ms-lang(x) {
box-shadow: 0 1px 10px rgba(0, 0, 0, 0.2) !important;
}
.s_shadow-300 {
box-shadow: 0 2px 7px rgba(0, 0, 0, 0.15) !important;
}
.s_shadow-300,
_:-ms-lang(x) {
box-shadow: 0 1px 14px rgba(0, 0, 0, 0.22) !important;
}
.s_shadow-400 {
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.2) !important;
}
.s_shadow-400,
_:-ms-lang(x) {
box-shadow: 0 1px 20px rgba(0, 0, 0, 0.25) !important;
}
.s_top0 {
top: 0 !important;
}
Expand Down Expand Up @@ -3215,15 +3247,31 @@ exports[`compiles correctly 1`] = `
.m_shadow-100 {
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1) !important;
}
.m_shadow-100,
_:-ms-lang(x) {
box-shadow: 0 1px 8px rgba(0, 0, 0, 0.15) !important;
}
.m_shadow-200 {
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.15) !important;
}
.m_shadow-200,
_:-ms-lang(x) {
box-shadow: 0 1px 10px rgba(0, 0, 0, 0.2) !important;
}
.m_shadow-300 {
box-shadow: 0 2px 7px rgba(0, 0, 0, 0.15) !important;
}
.m_shadow-300,
_:-ms-lang(x) {
box-shadow: 0 1px 14px rgba(0, 0, 0, 0.22) !important;
}
.m_shadow-400 {
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.2) !important;
}
.m_shadow-400,
_:-ms-lang(x) {
box-shadow: 0 1px 20px rgba(0, 0, 0, 0.25) !important;
}
.m_top0 {
top: 0 !important;
}
Expand Down Expand Up @@ -4624,15 +4672,31 @@ exports[`compiles correctly 1`] = `
.l_shadow-100 {
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1) !important;
}
.l_shadow-100,
_:-ms-lang(x) {
box-shadow: 0 1px 8px rgba(0, 0, 0, 0.15) !important;
}
.l_shadow-200 {
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.15) !important;
}
.l_shadow-200,
_:-ms-lang(x) {
box-shadow: 0 1px 10px rgba(0, 0, 0, 0.2) !important;
}
danoc marked this conversation as resolved.
Show resolved Hide resolved
.l_shadow-300 {
box-shadow: 0 2px 7px rgba(0, 0, 0, 0.15) !important;
}
.l_shadow-300,
_:-ms-lang(x) {
box-shadow: 0 1px 14px rgba(0, 0, 0, 0.22) !important;
}
.l_shadow-400 {
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.2) !important;
}
.l_shadow-400,
_:-ms-lang(x) {
box-shadow: 0 1px 20px rgba(0, 0, 0, 0.25) !important;
}
.l_top0 {
top: 0 !important;
}
Expand Down
126 changes: 126 additions & 0 deletions packages/thumbprint-atomic/src/packages/box-shadow.scss
@@ -1,6 +1,20 @@
@import '~@thumbtack/thumbprint-tokens/dist/scss/_index';
@import '~@thumbtack/thumbprint-scss/mixins';

// Box shadows in IE 11 through Edge 18 render ~50% lighter than expected. The following box-shadow
// values provide close visual parity between IE/Edge and modern browsers.

$ie-edge-shadow: (
100: 0px 1px 8px rgba(0, 0, 0, 0.15) !important,
200: 0px 1px 10px rgba(0, 0, 0, 0.2) !important,
300: 0px 1px 14px rgba(0, 0, 0, 0.22) !important,
400: 0px 1px 20px rgba(0, 0, 0, 0.25) !important,
);

// The `_:-ms-lang(x)` selector below is a CSS hack that invalidates the entire rule-set for all
// browsers except for IE 11 through Edge 18. Edge browsers above 18 and all other browsers will
// only parse the "normal" rule-sets. https://www.w3.org/TR/css-syntax-3/#style-rule

.shadow-none {
box-shadow: none !important;
}
Expand All @@ -9,18 +23,46 @@
box-shadow: $tp-shadow__100 !important;
}

/* stylelint-disable selector-type-no-unknown */
.shadow-100,
_:-ms-lang(x) {
box-shadow: map-get($ie-edge-shadow, 100);
}
/* stylelint-enable */

.shadow-200 {
box-shadow: $tp-shadow__200 !important;
}

/* stylelint-disable selector-type-no-unknown */
.shadow-200,
_:-ms-lang(x) {
box-shadow: map-get($ie-edge-shadow, 200);
}
/* stylelint-enable */

.shadow-300 {
box-shadow: $tp-shadow__300 !important;
}

/* stylelint-disable selector-type-no-unknown */
.shadow-300,
_:-ms-lang(x) {
box-shadow: map-get($ie-edge-shadow, 300);
}
/* stylelint-enable */

.shadow-400 {
box-shadow: $tp-shadow__400 !important;
}

/* stylelint-disable selector-type-no-unknown */
.shadow-400,
_:-ms-lang(x) {
box-shadow: map-get($ie-edge-shadow, 400);
}
/* stylelint-enable */

@include tp-respond-above($tp-breakpoint__small) {
.s_shadow-none {
box-shadow: none !important;
Expand All @@ -30,17 +72,45 @@
box-shadow: $tp-shadow__100 !important;
}

/* stylelint-disable selector-type-no-unknown */
.s_shadow-100,
_:-ms-lang(x) {
box-shadow: map-get($ie-edge-shadow, 100);
}
/* stylelint-enable */

.s_shadow-200 {
box-shadow: $tp-shadow__200 !important;
}

/* stylelint-disable selector-type-no-unknown */
.s_shadow-200,
_:-ms-lang(x) {
box-shadow: map-get($ie-edge-shadow, 200);
}
/* stylelint-enable */

.s_shadow-300 {
box-shadow: $tp-shadow__300 !important;
}

/* stylelint-disable selector-type-no-unknown */
.s_shadow-300,
_:-ms-lang(x) {
box-shadow: map-get($ie-edge-shadow, 300);
}
/* stylelint-enable */

.s_shadow-400 {
box-shadow: $tp-shadow__400 !important;
}

/* stylelint-disable selector-type-no-unknown */
.s_shadow-400,
_:-ms-lang(x) {
box-shadow: map-get($ie-edge-shadow, 400);
}
/* stylelint-enable */
}

@include tp-respond-above($tp-breakpoint__medium) {
Expand All @@ -52,17 +122,45 @@
box-shadow: $tp-shadow__100 !important;
}

/* stylelint-disable selector-type-no-unknown */
.m_shadow-100,
_:-ms-lang(x) {
box-shadow: map-get($ie-edge-shadow, 100);
}
/* stylelint-enable */

.m_shadow-200 {
box-shadow: $tp-shadow__200 !important;
}

/* stylelint-disable selector-type-no-unknown */
.m_shadow-200,
_:-ms-lang(x) {
box-shadow: map-get($ie-edge-shadow, 200);
}
/* stylelint-enable */

.m_shadow-300 {
box-shadow: $tp-shadow__300 !important;
}

/* stylelint-disable selector-type-no-unknown */
.m_shadow-300,
_:-ms-lang(x) {
box-shadow: map-get($ie-edge-shadow, 300);
}
/* stylelint-enable */

.m_shadow-400 {
box-shadow: $tp-shadow__400 !important;
}

/* stylelint-disable selector-type-no-unknown */
.m_shadow-400,
_:-ms-lang(x) {
box-shadow: map-get($ie-edge-shadow, 400);
}
/* stylelint-enable */
}

@include tp-respond-above($tp-breakpoint__large) {
Expand All @@ -74,15 +172,43 @@
box-shadow: $tp-shadow__100 !important;
}

/* stylelint-disable selector-type-no-unknown */
.l_shadow-100,
_:-ms-lang(x) {
box-shadow: map-get($ie-edge-shadow, 100);
}
/* stylelint-enable */

.l_shadow-200 {
box-shadow: $tp-shadow__200 !important;
}

/* stylelint-disable selector-type-no-unknown */
.l_shadow-200,
_:-ms-lang(x) {
box-shadow: map-get($ie-edge-shadow, 200);
}
/* stylelint-enable */

.l_shadow-300 {
box-shadow: $tp-shadow__300 !important;
}

/* stylelint-disable selector-type-no-unknown */
.l_shadow-300,
_:-ms-lang(x) {
box-shadow: map-get($ie-edge-shadow, 300);
}
/* stylelint-enable */

.l_shadow-400 {
box-shadow: $tp-shadow__400 !important;
}

/* stylelint-disable selector-type-no-unknown */
.l_shadow-400,
_:-ms-lang(x) {
box-shadow: map-get($ie-edge-shadow, 400);
}
/* stylelint-enable */
}