gitlab-org--gitlab-foss/app/assets/stylesheets/framework/awards.scss

329 lines
7.3 KiB
SCSS

.awards {
display: flex;
flex-wrap: wrap;
.emoji-icon {
width: 20px;
height: 20px;
}
}
.emoji-menu {
display: none;
position: absolute;
top: 0;
margin-top: 3px;
padding: $gl-padding;
z-index: $zindex-dropdown-menu;
width: $award-emoji-width;
font-size: 14px;
background-color: $white;
border: 1px solid $border-white-light;
border-radius: $border-radius-base;
box-shadow: 0 6px 12px $award-emoji-menu-shadow;
pointer-events: none;
opacity: 0;
transform: scale(0.2);
transform-origin: 0 -45px;
transition: 0.3s cubic-bezier(0.67, 0.06, 0.19, 1.44);
transition-property: transform, opacity;
&.is-rendered {
display: block;
}
&.is-aligned-right {
transform-origin: 100% -45px;
}
&.is-visible {
pointer-events: all;
opacity: 1;
transform: scale(1);
}
.emoji-menu-content {
height: 300px;
overflow-y: scroll;
}
.disabled {
cursor: default;
opacity: 0.5;
&:hover {
transform: none;
}
}
@include media-breakpoint-down(xs) {
width: $award-emoji-width-xs;
}
}
.emoji-search {
background-image: url('data:image/png;base64,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');
background-repeat: no-repeat;
background-position: right 5px center;
background-size: 16px;
}
.emoji-menu-list {
margin-bottom: 0;
padding-left: 0;
list-style: none;
}
.emoji-menu-list-item {
float: left;
padding: 3px;
margin-left: 1px;
margin-right: 1px;
}
.emoji-menu-btn {
display: block;
cursor: pointer;
width: 30px;
height: 30px;
padding: 0;
background: none;
border: 0;
border-radius: $border-radius-base;
transition: transform 0.15s cubic-bezier(0.3, 0, 0.2, 2);
&:hover {
background-color: transparent;
outline: 0;
transform: scale(1.3);
}
&:focus,
&:active {
outline: 0;
}
.emoji-icon {
display: inline-block;
position: relative;
top: 3px;
}
> gl-emoji {
line-height: 1.5;
}
}
.award-menu-holder {
display: inline-block;
.tooltip {
white-space: nowrap;
}
}
.gl-button.btn.award-control {
margin: 4px 8px 4px 0;
&.disabled {
cursor: default;
&:hover,
&:focus,
&:active {
background-color: $white;
border-color: $border-color;
box-shadow: none;
}
}
&.active,
&:hover,
&:active,
&.is-active {
.award-control-icon-neutral {
opacity: 0;
}
.award-control-icon-positive {
opacity: 1;
transform: scale(1.15);
}
}
&.active,
&.is-active,
&:active {
background-color: $blue-50;
border-color: $blue-200;
box-shadow: inset 0 0 2px $blue-200;
}
&.is-active {
.award-control-icon-positive {
opacity: 0;
transform: scale(1);
}
.award-control-icon-super-positive {
opacity: 1;
transform: scale(1);
}
}
&.user-authored {
cursor: default;
background-color: $gray-light;
border-color: $gray-100;
color: $gl-text-color-disabled;
gl-emoji {
opacity: 0.4;
filter: grayscale(100%);
}
}
&.btn {
&:focus {
outline: 0;
}
}
&.is-loading {
.award-control-icon-normal,
.emoji-icon {
display: none;
}
.award-control-icon-loading {
display: block;
}
}
.icon,
gl-emoji,
.award-control-icon {
vertical-align: middle;
line-height: 0.5em;
}
.award-control-icon-loading {
display: none;
}
.award-control-icon {
color: $border-gray-normal;
svg {
height: $default-icon-size;
width: $default-icon-size;
border-radius: 50%;
fill: $gray-500;
}
}
.award-control-icon-positive,
.award-control-icon-super-positive {
@include transition(opacity, transform);
opacity: 0;
position: absolute;
path {
fill: $award-emoji-positive-add-lines;
}
}
.award-control-text {
vertical-align: middle;
}
}
// The following encompasses the "add reaction" button redesign to
// align properly within GitLab UI's gl-button. The implementation
// above will be deprecated once all instances of "award emoji" are
// migrated to Vue.
.gl-button .award-emoji-block {
display: contents;
gl-emoji {
margin-top: -1px;
margin-bottom: -1px;
}
}
.add-reaction-button {
position: relative;
// This forces the height and width of the inner content to match
// other gl-buttons despite all child elements being set to
// `position:absolute`
.reaction-control-icon {
.gl-icon {
height: $default-icon-size;
width: $default-icon-size;
}
}
.reaction-control-icon-neutral {
display: flex;
}
.reaction-control-icon-positive,
.reaction-control-icon-super-positive {
display: none;
}
&:hover,
&.active,
&:active,
&.is-active {
.reaction-control-icon-neutral {
display: none;
}
}
&:hover {
.reaction-control-icon-positive {
display: flex;
}
}
&.active,
&:active,
&.is-active {
.reaction-control-icon-positive {
display: none;
}
.reaction-control-icon-super-positive {
display: flex;
}
}
&.disabled {
cursor: default;
&:hover,
&:focus,
&:active {
.reaction-control-icon .gl-icon {
color: inherit;
transform: scale(1);
}
.reaction-control-icon-neutral {
display: flex;
}
.reaction-control-icon-positive,
.reaction-control-icon-super-positive {
display: none;
}
}
}
}