Commit 1a6d36c8 authored by Dan Beam's avatar Dan Beam Committed by Commit Bot

Local NTP: polish the promo dismiss button (X)

Also fixes an RTL issue with promo icons.

Screenshots:
* screen/hehqtqE4ufa
* screen/b4oZ75qGFmS
* screen/5pTjRC4v6iq
* screen/wuMG0SOZ7Bj
* screen/zRA7bqZxCut
* screen/1ridYUv2oYj

R=mahmadi@chromium.org

Bug: 1003508
Change-Id: Ic3446f54fb28f9a5420f84780532525ac0f43752
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1824069
Auto-Submit: Dan Beam <dbeam@chromium.org>
Reviewed-by: default avatarMoe Ahmadi <mahmadi@chromium.org>
Commit-Queue: Dan Beam <dbeam@chromium.org>
Cr-Commit-Position: refs/heads/master@{#700006}
parent cf00dd72
...@@ -745,7 +745,7 @@ html[dir=rtl] #error-notice.has-link #error-notice-msg { ...@@ -745,7 +745,7 @@ html[dir=rtl] #error-notice.has-link #error-notice-msg {
} }
#promo > div { #promo > div {
--promo-height: 32px; --dismiss-background-rgb: var(--GG900-rgb);
background-color: #FFF; background-color: #FFF;
border: 1px solid rgb(var(--GG300-rgb)); border: 1px solid rgb(var(--GG300-rgb));
border-radius: 16px; border-radius: 16px;
...@@ -753,7 +753,8 @@ html[dir=rtl] #error-notice.has-link #error-notice-msg { ...@@ -753,7 +753,8 @@ html[dir=rtl] #error-notice.has-link #error-notice-msg {
color: rgb(var(--GG700-rgb)); color: rgb(var(--GG700-rgb));
display: inline-block; display: inline-block;
font-size: 12px; font-size: 12px;
line-height: var(--promo-height); height: 32px;
line-height: 30px; /* Height - 1px border-top - 1px border-bottom. */
margin-bottom: 0; margin-bottom: 0;
/* TODO(crbug.com/969062): this magic constant would be better implemented as /* TODO(crbug.com/969062): this magic constant would be better implemented as
* real multi-line promo text support or a better QA process to check that * real multi-line promo text support or a better QA process to check that
...@@ -765,31 +766,58 @@ html[dir=rtl] #error-notice.has-link #error-notice-msg { ...@@ -765,31 +766,58 @@ html[dir=rtl] #error-notice.has-link #error-notice-msg {
overflow: hidden; overflow: hidden;
padding: 0 16px; padding: 0 16px;
pointer-events: all; pointer-events: all;
position: relative;
text-overflow: ellipsis; text-overflow: ellipsis;
white-space: nowrap; white-space: nowrap;
} }
#promo.dismissable > div {
padding-inline-end: 36px; /* +24px for dismiss-icon - 4px less end padding */
}
@media (prefers-color-scheme: dark) { @media (prefers-color-scheme: dark) {
body:not(.light-chip) #promo > div { body:not(.light-chip) #promo > div {
--dismiss-background-rgb: var(--GG100-rgb);
background-color: rgb(var(--GG900-rgb)); background-color: rgb(var(--GG900-rgb));
border-color: rgba(0, 0, 0, .1); border-color: rgba(0, 0, 0, .1);
color: rgb(var(--GG200-rgb)); color: rgb(var(--GG200-rgb));
} }
} }
#promo > div > .dismiss-promo { #promo > div .dismiss-promo {
--icon-size: 16px; border-radius: 50%;
height: 24px;
position: absolute;
right: 4px;
top: 3px; /* 4px from top - 1px of border. */
width: 24px;
}
[dir=rtl] #promo > div .dismiss-promo {
left: 4px;
right: auto;
}
#promo > div .dismiss-icon {
-webkit-appearance: none; -webkit-appearance: none;
background: url(../../../../ui/webui/resources/images/icon_clear.svg) -webkit-mask-image: url(../../../../ui/webui/resources/images/icon_clear.svg);
no-repeat center center; -webkit-mask-position: center center;
background-size: var(--icon-size); -webkit-mask-repeat: no-repeat;
-webkit-mask-size: 16px;
background-color: rgb(var(--dismiss-background-rgb));
border: none; border: none;
display: inline-block; display: block;
height: var(--promo-height); height: 100%;
margin-inline-end: -8px; outline: none;
margin-inline-start: 8px; width: 100%;
vertical-align: middle; }
width: var(--icon-size);
#promo > div .dismiss-promo:hover {
background-color: rgba(var(--dismiss-background-rgb), .08);
}
#promo > div .dismiss-promo:focus-within {
background-color: rgba(var(--dismiss-background-rgb), .16);
} }
#promo > div > a { #promo > div > a {
...@@ -810,7 +838,9 @@ html[dir=rtl] #error-notice.has-link #error-notice-msg { ...@@ -810,7 +838,9 @@ html[dir=rtl] #error-notice.has-link #error-notice-msg {
#promo > div > img { #promo > div > img {
border-radius: 50%; border-radius: 50%;
height: 24px; height: 24px;
margin: 0 8px 2px -12px; margin-bottom: 2px;
margin-inline-end: 8px;
margin-inline-start: -12px;
object-fit: cover; object-fit: cover;
vertical-align: middle; vertical-align: middle;
width: 24px; width: 24px;
......
...@@ -73,6 +73,8 @@ const CLASSES = { ...@@ -73,6 +73,8 @@ const CLASSES = {
// Applies styles to dialogs used in customization. // Applies styles to dialogs used in customization.
CUSTOMIZE_DIALOG: 'customize-dialog', CUSTOMIZE_DIALOG: 'customize-dialog',
DELAYED_HIDE_NOTIFICATION: 'mv-notice-delayed-hide', DELAYED_HIDE_NOTIFICATION: 'mv-notice-delayed-hide',
DISMISSABLE: 'dismissable',
DISMISS_ICON: 'dismiss-icon',
DISMISS_PROMO: 'dismiss-promo', DISMISS_PROMO: 'dismiss-promo',
// Extended and elevated style for customization entry point. // Extended and elevated style for customization entry point.
ENTRY_POINT_ENHANCED: 'ep-enhanced', ENTRY_POINT_ENHANCED: 'ep-enhanced',
...@@ -913,15 +915,22 @@ function injectPromo(promo) { ...@@ -913,15 +915,22 @@ function injectPromo(promo) {
} }
if (promo.promoId) { if (promo.promoId) {
const dismiss = document.createElement('button'); const icon = document.createElement('button');
dismiss.classList.add(CLASSES.DISMISS_PROMO); icon.classList.add(CLASSES.DISMISS_ICON);
dismiss.title = configData.translatedStrings.dismissPromo;
dismiss.onclick = e => { icon.title = configData.translatedStrings.dismissPromo;
icon.onclick = e => {
ntpApiHandle.blocklistPromo(promo.promoId); ntpApiHandle.blocklistPromo(promo.promoId);
promoContainer.remove(); promoContainer.remove();
window.removeEventListener('resize', showPromoIfNotOverlapping); window.removeEventListener('resize', showPromoIfNotOverlapping);
}; };
const dismiss = document.createElement('div');
dismiss.classList.add(CLASSES.DISMISS_PROMO);
dismiss.appendChild(icon);
promoContainer.querySelector('div').appendChild(dismiss); promoContainer.querySelector('div').appendChild(dismiss);
promoContainer.classList.add(CLASSES.DISMISSABLE);
} }
// The the MV tiles are already loaded show the promo immediately. // The the MV tiles are already loaded show the promo immediately.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment