2019-10-25 20:53:39 +00:00
|
|
|
@import 'mediawiki.mixins.less';
|
|
|
|
@import '../echo.variables.less';
|
|
|
|
@import '../echo.mixins.less';
|
2015-08-13 00:54:16 +00:00
|
|
|
|
2015-11-12 19:37:56 +00:00
|
|
|
.mw-echo-ui-notificationItemWidget {
|
2020-07-23 14:23:29 +00:00
|
|
|
display: block;
|
2017-12-09 01:09:18 +00:00
|
|
|
background-color: @notification-item-background-read;
|
2016-04-10 13:31:02 +00:00
|
|
|
position: relative;
|
2016-05-31 01:08:25 +00:00
|
|
|
white-space: normal;
|
2016-03-15 23:27:59 +00:00
|
|
|
padding: 0.8em 1em 0.5em 1em;
|
2016-10-03 20:21:54 +00:00
|
|
|
.box-sizing( border-box );
|
2017-10-08 17:26:43 +00:00
|
|
|
border: 1px solid #c8ccd1;
|
2016-05-31 01:08:25 +00:00
|
|
|
border-bottom: 0;
|
|
|
|
|
2020-07-23 14:23:29 +00:00
|
|
|
&:not( [ href ] ) {
|
|
|
|
// Items without a primary URL are not clickable
|
|
|
|
cursor: default;
|
|
|
|
}
|
|
|
|
|
|
|
|
label {
|
|
|
|
// Reset browser default of cursor:default;
|
|
|
|
cursor: inherit;
|
|
|
|
}
|
|
|
|
|
2016-10-05 19:03:41 +00:00
|
|
|
&:hover {
|
2020-07-24 19:34:43 +00:00
|
|
|
text-decoration: none;
|
2016-10-05 19:03:41 +00:00
|
|
|
background-color: #ececec;
|
|
|
|
}
|
|
|
|
|
2020-07-23 14:23:29 +00:00
|
|
|
&:focus {
|
2020-08-03 14:14:36 +00:00
|
|
|
text-decoration: none;
|
2020-07-23 14:23:29 +00:00
|
|
|
box-shadow: inset 0 0 0 2px @color-primary;
|
|
|
|
outline: 0;
|
|
|
|
}
|
|
|
|
|
2016-05-31 01:08:25 +00:00
|
|
|
&:last-child {
|
2017-10-08 17:26:43 +00:00
|
|
|
border-bottom: 1px solid #c8ccd1;
|
2016-05-31 01:08:25 +00:00
|
|
|
}
|
2015-08-13 00:54:16 +00:00
|
|
|
|
2016-10-05 19:03:41 +00:00
|
|
|
&-unread {
|
2016-10-25 04:18:08 +00:00
|
|
|
background-color: @background-color-base;
|
2016-10-05 19:03:41 +00:00
|
|
|
|
|
|
|
&:hover {
|
2016-10-25 04:18:08 +00:00
|
|
|
background-color: #f8f9fa;
|
2016-10-05 19:03:41 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2016-03-23 23:12:29 +00:00
|
|
|
> a,
|
2015-09-09 22:12:01 +00:00
|
|
|
&:hover > a {
|
|
|
|
text-decoration: none;
|
|
|
|
}
|
|
|
|
|
2016-08-05 21:44:55 +00:00
|
|
|
// Dynamic-action messages in mw.notify
|
|
|
|
&-notify {
|
|
|
|
&-title {
|
|
|
|
font-weight: bold;
|
|
|
|
font-size: 1.2em;
|
|
|
|
}
|
|
|
|
|
|
|
|
&-description {
|
|
|
|
font-size: 1em;
|
|
|
|
color: @grey-medium;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2015-10-16 23:18:25 +00:00
|
|
|
&-icon {
|
2016-10-05 19:03:41 +00:00
|
|
|
position: absolute;
|
|
|
|
|
2015-10-16 23:18:25 +00:00
|
|
|
img {
|
2016-01-17 05:47:02 +00:00
|
|
|
height: 30px;
|
|
|
|
width: 30px;
|
2015-10-16 23:18:25 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
&-content {
|
2016-05-22 10:29:42 +00:00
|
|
|
display: block;
|
|
|
|
// The icon is 30px
|
|
|
|
margin-left: 30px;
|
|
|
|
padding-left: 0.8em;
|
2016-10-03 20:21:54 +00:00
|
|
|
.box-sizing( border-box );
|
2015-10-16 23:18:25 +00:00
|
|
|
|
|
|
|
&-message {
|
2016-08-30 22:12:07 +00:00
|
|
|
line-height: 1.3em;
|
2016-06-30 22:45:34 +00:00
|
|
|
// Compensate for the placement of the 'mark as read'
|
|
|
|
// button, so the message is not stretched past it.
|
|
|
|
// The 'mark as read' circle is placed with a right
|
|
|
|
// margin of -1em
|
|
|
|
padding-right: 1em;
|
2016-09-07 23:31:16 +00:00
|
|
|
// break-word rules are inconsistent accross browsers
|
|
|
|
// these three rules should cover the main use cases
|
|
|
|
// with major browser support
|
2016-08-31 00:22:12 +00:00
|
|
|
word-break: break-word;
|
2016-09-07 23:31:16 +00:00
|
|
|
word-wrap: break-word;
|
|
|
|
overflow-wrap: break-word;
|
2016-06-30 22:45:34 +00:00
|
|
|
|
2016-01-19 02:26:13 +00:00
|
|
|
&-header {
|
|
|
|
color: @notification-text-color;
|
|
|
|
}
|
2019-01-10 02:42:06 +00:00
|
|
|
|
2015-12-18 18:56:59 +00:00
|
|
|
&-body {
|
2019-01-10 02:42:06 +00:00
|
|
|
color: @notification-body-color;
|
|
|
|
margin-top: 4px;
|
|
|
|
|
2016-09-07 23:17:29 +00:00
|
|
|
// In the popup only, truncate the text to one-line
|
|
|
|
// with ellipses
|
|
|
|
.mw-echo-ui-notificationBadgeButtonPopupWidget-popup & {
|
2020-04-18 02:16:01 +00:00
|
|
|
.text-overflow( @visible: false );
|
2016-09-02 18:27:56 +00:00
|
|
|
}
|
2015-12-18 18:56:59 +00:00
|
|
|
}
|
2015-10-16 23:18:25 +00:00
|
|
|
}
|
|
|
|
|
2016-02-23 01:44:48 +00:00
|
|
|
&-actions {
|
2020-07-29 11:20:28 +00:00
|
|
|
display: flex;
|
|
|
|
align-items: flex-end;
|
2016-01-13 03:36:47 +00:00
|
|
|
font-size: 0.9em;
|
2020-07-29 11:20:28 +00:00
|
|
|
margin-top: 0.8em;
|
2015-10-16 23:18:25 +00:00
|
|
|
|
2016-02-23 01:44:48 +00:00
|
|
|
& > &-buttons.oo-ui-buttonSelectWidget {
|
2020-07-29 11:20:28 +00:00
|
|
|
display: flex;
|
|
|
|
overflow: hidden;
|
2020-07-23 16:58:44 +00:00
|
|
|
|
2020-07-29 11:20:28 +00:00
|
|
|
> .oo-ui-buttonOptionWidget {
|
2020-07-23 16:58:44 +00:00
|
|
|
min-width: 7em;
|
2020-07-29 11:20:28 +00:00
|
|
|
overflow: hidden;
|
2022-01-24 20:40:41 +00:00
|
|
|
|
|
|
|
.oo-ui-labelElement-label {
|
|
|
|
text-overflow: ellipsis;
|
|
|
|
overflow: hidden;
|
|
|
|
display: inline-block;
|
|
|
|
}
|
2020-07-23 16:58:44 +00:00
|
|
|
}
|
2016-02-23 01:44:48 +00:00
|
|
|
}
|
|
|
|
|
2018-03-24 20:52:04 +00:00
|
|
|
&-button {
|
2016-03-03 20:54:11 +00:00
|
|
|
margin-right: 1.2em;
|
2015-10-16 23:18:25 +00:00
|
|
|
}
|
|
|
|
|
2018-03-24 20:52:04 +00:00
|
|
|
.mw-echo-ui-menuItemWidget-prioritized {
|
|
|
|
// Option widget already has some right padding
|
|
|
|
margin-right: 0.6em;
|
|
|
|
}
|
|
|
|
|
2015-10-16 23:18:25 +00:00
|
|
|
&-menu {
|
2016-03-03 20:54:11 +00:00
|
|
|
.mw-echo-ui-mixin-hover-opacity();
|
2016-03-15 23:27:59 +00:00
|
|
|
vertical-align: bottom;
|
2016-03-03 20:54:11 +00:00
|
|
|
padding: 0;
|
2015-10-16 23:18:25 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
&-timestamp {
|
2020-07-29 11:20:28 +00:00
|
|
|
flex-grow: 1;
|
2016-03-03 20:54:11 +00:00
|
|
|
text-align: right;
|
2020-07-29 11:20:28 +00:00
|
|
|
vertical-align: bottom;
|
2020-04-16 01:02:21 +00:00
|
|
|
color: @color-base--emphasized;
|
2015-10-16 23:18:25 +00:00
|
|
|
opacity: @opacity-low;
|
2016-02-23 01:44:48 +00:00
|
|
|
white-space: nowrap;
|
2015-10-16 23:18:25 +00:00
|
|
|
}
|
|
|
|
}
|
2015-08-13 00:54:16 +00:00
|
|
|
}
|
|
|
|
|
2016-10-05 19:03:41 +00:00
|
|
|
&-markAsReadButton {
|
|
|
|
float: right;
|
|
|
|
font-size: 1em;
|
|
|
|
// Compensate for the padding in the item widget
|
|
|
|
margin-top: -0.8em;
|
|
|
|
margin-right: -1em;
|
|
|
|
padding: 0;
|
|
|
|
|
|
|
|
.mw-echo-ui-notificationItemWidget-bundled & {
|
|
|
|
margin-top: 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2015-12-22 23:16:32 +00:00
|
|
|
// Table layout only for the content inside bundles
|
2016-05-31 01:08:25 +00:00
|
|
|
&-bundled {
|
2015-12-22 23:16:32 +00:00
|
|
|
display: table;
|
2016-03-10 23:22:14 +00:00
|
|
|
width: 100%;
|
2016-05-31 01:08:25 +00:00
|
|
|
padding: 0.5em;
|
2015-12-22 23:16:32 +00:00
|
|
|
|
|
|
|
.mw-echo-ui-notificationItemWidget-content {
|
|
|
|
display: table-row;
|
2016-05-31 01:08:25 +00:00
|
|
|
padding-left: 0.5em + 1.5em;
|
2015-12-22 23:16:32 +00:00
|
|
|
|
|
|
|
.mw-echo-ui-notificationItemWidget {
|
|
|
|
// CSS table layout
|
|
|
|
&-icon,
|
|
|
|
&-content-message,
|
|
|
|
&-content-actions,
|
|
|
|
&-markAsReadButton {
|
|
|
|
display: table-cell;
|
|
|
|
vertical-align: top;
|
|
|
|
}
|
|
|
|
|
|
|
|
// Positioning fixes for bundled items
|
|
|
|
&-icon {
|
|
|
|
position: relative;
|
|
|
|
padding-right: 0.5em;
|
2016-05-31 01:08:25 +00:00
|
|
|
|
|
|
|
img {
|
2021-03-01 16:23:00 +00:00
|
|
|
height: 20px;
|
|
|
|
width: 20px;
|
2016-05-31 01:08:25 +00:00
|
|
|
}
|
2015-12-22 23:16:32 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
&-content-message {
|
2016-01-22 01:04:58 +00:00
|
|
|
display: table-cell;
|
2016-02-23 01:44:48 +00:00
|
|
|
padding-right: 0.5em;
|
2016-01-22 01:04:58 +00:00
|
|
|
width: 100%;
|
2016-07-05 17:34:06 +00:00
|
|
|
|
|
|
|
&-header {
|
2016-07-19 00:06:48 +00:00
|
|
|
width: 100%;
|
2016-08-04 20:03:35 +00:00
|
|
|
|
2016-07-19 00:06:48 +00:00
|
|
|
&-wrapper {
|
|
|
|
position: relative;
|
|
|
|
}
|
2016-07-22 23:58:39 +00:00
|
|
|
|
|
|
|
// Bundled notifications don't have bodies, only headers,
|
|
|
|
// so they use <em> to designate excerpts. Use the body color
|
|
|
|
// for these.
|
|
|
|
em {
|
|
|
|
color: @notification-body-color;
|
2016-08-16 18:48:01 +00:00
|
|
|
font-style: normal;
|
2016-07-22 23:58:39 +00:00
|
|
|
}
|
2016-07-05 17:34:06 +00:00
|
|
|
}
|
2015-12-22 23:16:32 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
&-content-actions {
|
|
|
|
&-row {
|
|
|
|
display: table-row;
|
|
|
|
}
|
|
|
|
|
|
|
|
&-buttons {
|
|
|
|
display: table-cell;
|
|
|
|
vertical-align: middle;
|
|
|
|
}
|
|
|
|
|
|
|
|
&-menu {
|
|
|
|
display: table-cell;
|
|
|
|
vertical-align: middle;
|
|
|
|
}
|
|
|
|
|
|
|
|
&-timestamp {
|
|
|
|
float: none;
|
|
|
|
display: table-cell;
|
|
|
|
vertical-align: middle;
|
|
|
|
padding-right: 0.5em;
|
2016-01-22 01:04:58 +00:00
|
|
|
white-space: nowrap;
|
2015-12-22 23:16:32 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
&-markAsReadButton {
|
2016-06-20 20:00:37 +00:00
|
|
|
display: table-cell;
|
|
|
|
vertical-align: top;
|
2015-12-22 23:16:32 +00:00
|
|
|
float: none;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2015-09-03 22:37:02 +00:00
|
|
|
&-initiallyUnseen {
|
2015-09-17 18:56:56 +00:00
|
|
|
-webkit-animation-name: unseen-fadeout-to-read;
|
|
|
|
animation-name: unseen-fadeout-to-read;
|
2016-10-05 00:11:41 +00:00
|
|
|
-webkit-animation-duration: 0.5s;
|
|
|
|
animation-duration: 0.5s;
|
2015-08-13 00:54:16 +00:00
|
|
|
-webkit-animation-delay: 2s;
|
|
|
|
animation-delay: 2s;
|
|
|
|
-webkit-animation-timing-function: ease-out;
|
|
|
|
animation-timing-function: ease-out;
|
|
|
|
-webkit-animation-fill-mode: both;
|
|
|
|
animation-fill-mode: both;
|
|
|
|
|
2015-11-12 19:37:56 +00:00
|
|
|
&.mw-echo-ui-notificationItemWidget-unread {
|
2015-09-17 18:56:56 +00:00
|
|
|
-webkit-animation-name: unseen-fadeout-to-unread;
|
|
|
|
animation-name: unseen-fadeout-to-unread;
|
2015-08-13 00:54:16 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// NOTE: The internal styling of the notifications is outside this file, because
|
|
|
|
// it also affects the notifications in Special:Notifications
|
|
|
|
// These styles are in modules/nojs/ext.echo.notifications.less
|
|
|
|
}
|
|
|
|
|
2015-09-17 18:56:56 +00:00
|
|
|
@-webkit-keyframes unseen-fadeout-to-unread {
|
2015-10-01 13:48:52 +00:00
|
|
|
from {
|
|
|
|
background-color: @notification-background-unseen;
|
|
|
|
}
|
2019-01-10 02:42:06 +00:00
|
|
|
|
2015-10-01 13:48:52 +00:00
|
|
|
to {
|
|
|
|
background-color: @notification-background-unread;
|
|
|
|
}
|
2015-08-13 00:54:16 +00:00
|
|
|
}
|
|
|
|
|
2015-09-17 18:56:56 +00:00
|
|
|
@keyframes unseen-fadeout-to-unread {
|
2015-10-01 13:48:52 +00:00
|
|
|
from {
|
|
|
|
background-color: @notification-background-unseen;
|
|
|
|
}
|
2019-01-10 02:42:06 +00:00
|
|
|
|
2015-10-01 13:48:52 +00:00
|
|
|
to {
|
|
|
|
background-color: @notification-background-unread;
|
|
|
|
}
|
2015-08-13 00:54:16 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
@-webkit-keyframes unseen-fadeout-to-read {
|
2015-10-01 13:48:52 +00:00
|
|
|
from {
|
|
|
|
background-color: @notification-background-unseen;
|
|
|
|
}
|
2019-01-10 02:42:06 +00:00
|
|
|
|
2015-10-01 13:48:52 +00:00
|
|
|
to {
|
|
|
|
background-color: @notification-background-read;
|
|
|
|
}
|
2015-08-13 00:54:16 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
@keyframes unseen-fadeout-to-read {
|
2015-10-01 13:48:52 +00:00
|
|
|
from {
|
|
|
|
background-color: @notification-background-unseen;
|
|
|
|
}
|
2019-01-10 02:42:06 +00:00
|
|
|
|
2015-10-01 13:48:52 +00:00
|
|
|
to {
|
|
|
|
background-color: @notification-background-read;
|
|
|
|
}
|
2015-08-13 00:54:16 +00:00
|
|
|
}
|