mirror of
https://github.com/discourse/discourse.git
synced 2024-11-25 03:05:25 +08:00
ff96d541e9
This commit extends the original copy-codeblocks initializer, renaming it to codeblock-buttons, and adding another button to make the code block fullscreen in a modal window. The fullscreen code is then run through highlight.js. This commit also moves much of the code out of the initializer and into a reusable CodeblockButtons class, so it can also be used in the fullscreen code modal for the copy + paste button. The fullscreen button will not be shown if there is no scroll overflow in the code block, nor will it be shown on mobile. This commit also changes the fullscreen table button to not show on mobile. This will make long lines of code much easier to read and interact with. This is gated behind the same `show_copy_button_on_codeblocks` site setting.
433 lines
7.2 KiB
SCSS
433 lines
7.2 KiB
SCSS
/* hide the reply border above the time gap notices */
|
|
.time-gap + .topic-post article {
|
|
border-top: none;
|
|
}
|
|
|
|
.time-gap {
|
|
.topic-avatar {
|
|
display: none;
|
|
}
|
|
}
|
|
|
|
.topic-post-visited {
|
|
+ .topic-post article {
|
|
border-top: none;
|
|
}
|
|
}
|
|
|
|
.topic-post article {
|
|
border-top: 1px solid var(--primary-low);
|
|
padding: 15px 0 8px 0;
|
|
}
|
|
|
|
span.badge-posts {
|
|
margin-right: 5px;
|
|
}
|
|
|
|
.show-replies {
|
|
display: none;
|
|
}
|
|
|
|
nav.post-controls {
|
|
// for consistency, try to control spacing by editing these variables
|
|
--control-space: 0.58em;
|
|
--control-space-small: calc(var(--control-space) / 2);
|
|
--control-space-large: calc(var(--control-space) * 1.3);
|
|
// on small devices with many buttons this can overflow
|
|
overflow-x: scroll;
|
|
|
|
.actions {
|
|
// using an auto margin on first-child instead of justify-content on the parent
|
|
// because justify-content breaks overflow scrolling
|
|
:first-child {
|
|
margin-left: auto;
|
|
}
|
|
// Some buttons can be doubled up, like likes or flags
|
|
.double-button {
|
|
button {
|
|
&.button-count {
|
|
padding: var(--control-space);
|
|
+ .toggle-like,
|
|
+ .create-flag {
|
|
padding: var(--control-space) var(--control-space-large)
|
|
var(--control-space) var(--control-space-small);
|
|
}
|
|
&.regular-likes {
|
|
padding: var(--control-space) var(--control-space-small)
|
|
var(--control-space) var(--control-space-large);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
button {
|
|
padding: var(--control-space) var(--control-space-large);
|
|
&.expand-post {
|
|
margin: var(--control-space) 0 var(--control-space) 0;
|
|
}
|
|
&.has-like {
|
|
.d-icon {
|
|
color: var(--love);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
&.replies-button-visible {
|
|
display: flex;
|
|
align-items: center;
|
|
.show-replies {
|
|
display: flex;
|
|
+ .reply {
|
|
margin-left: 0;
|
|
}
|
|
.d-icon {
|
|
padding-left: var(--control-space);
|
|
}
|
|
}
|
|
.actions {
|
|
flex-grow: 2;
|
|
}
|
|
}
|
|
}
|
|
|
|
nav.post-controls button.reply .d-icon {
|
|
color: var(--primary-high);
|
|
}
|
|
|
|
.post-admin-menu {
|
|
bottom: -50px;
|
|
left: 135px;
|
|
@media screen and (max-width: 374px) {
|
|
left: 50px;
|
|
}
|
|
}
|
|
|
|
.embedded-posts {
|
|
.topic-meta-data h5 a {
|
|
margin-left: 10px;
|
|
}
|
|
}
|
|
|
|
.post-actions {
|
|
/* overriding display: here was causing hidden element to take up space */
|
|
}
|
|
|
|
.post-action {
|
|
float: right;
|
|
margin-right: 10px;
|
|
clear: right;
|
|
}
|
|
|
|
.post-action .relative-date {
|
|
margin-left: 5px;
|
|
}
|
|
|
|
a.reply-to-tab {
|
|
z-index: z("base") + 1;
|
|
color: var(--primary-med-or-secondary-med);
|
|
margin-right: 0.5em;
|
|
}
|
|
|
|
.topic-post .boxed .contents {
|
|
clear: both;
|
|
}
|
|
|
|
.topic-map {
|
|
margin: 10px 0;
|
|
h4 {
|
|
line-height: $line-height-medium;
|
|
}
|
|
.user {
|
|
float: left;
|
|
margin-right: 10px;
|
|
}
|
|
.map-collapsed {
|
|
.secondary {
|
|
display: none;
|
|
}
|
|
}
|
|
.map {
|
|
li {
|
|
float: left;
|
|
padding: 7px 8px;
|
|
&:last-of-type {
|
|
border-right: 0;
|
|
}
|
|
}
|
|
.number {
|
|
line-height: $line-height-medium;
|
|
}
|
|
.number,
|
|
.d-icon {
|
|
color: var(--primary-high-or-secondary-low);
|
|
font-size: $font-up-1;
|
|
}
|
|
.avatar + a {
|
|
float: left;
|
|
}
|
|
}
|
|
li.avatars {
|
|
display: none;
|
|
}
|
|
.links,
|
|
.information,
|
|
.avatars {
|
|
padding: 10px;
|
|
color: var(--primary);
|
|
overflow: auto;
|
|
}
|
|
.information {
|
|
p {
|
|
margin: 0 0 10px 0;
|
|
}
|
|
}
|
|
.buttons {
|
|
.btn {
|
|
border: 0;
|
|
padding: 0 15px;
|
|
color: var(--primary-med-or-secondary-high);
|
|
background: var(--blend-primary-secondary-5);
|
|
border-left: 1px solid var(--primary-low);
|
|
.fa {
|
|
margin: 0;
|
|
font-size: $font-up-2;
|
|
line-height: 52px;
|
|
}
|
|
}
|
|
}
|
|
.link-summary .btn {
|
|
color: var(--primary-med-or-secondary-high);
|
|
background: var(--blend-primary-secondary-5);
|
|
width: 100%;
|
|
}
|
|
}
|
|
|
|
#topic-footer-buttons {
|
|
.d-icon-bookmark.bookmarked,
|
|
.d-icon-discourse-bookmark-clock.bookmarked {
|
|
color: var(--tertiary);
|
|
}
|
|
|
|
.topic-footer-main-buttons {
|
|
display: flex;
|
|
align-items: stretch;
|
|
}
|
|
|
|
.topic-footer-mobile-dropdown {
|
|
margin-right: 0.5em;
|
|
display: flex;
|
|
}
|
|
|
|
.select-kit-header {
|
|
height: 100%;
|
|
}
|
|
|
|
.topic-notifications-button,
|
|
.pinned-button {
|
|
display: flex;
|
|
align-items: center;
|
|
|
|
.reason {
|
|
align-items: flex-start;
|
|
.select-kit {
|
|
max-width: 40%;
|
|
}
|
|
}
|
|
@include breakpoint(mobile-medium) {
|
|
display: inline-block;
|
|
.reason {
|
|
display: block;
|
|
margin: 0.5em 0 0 0;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
.suggested-topics {
|
|
clear: left;
|
|
padding: 20px 0 15px 0;
|
|
th.views,
|
|
td.views,
|
|
td.activity,
|
|
th.activity,
|
|
th.likes,
|
|
td.likes {
|
|
display: none;
|
|
}
|
|
a.badge-category,
|
|
a.badge-category-parent {
|
|
font-size: $font-down-1;
|
|
vertical-align: top;
|
|
}
|
|
}
|
|
|
|
span.post-count {
|
|
background: var(--primary);
|
|
color: var(--secondary);
|
|
opacity: 0.8;
|
|
}
|
|
|
|
#topic-title {
|
|
z-index: z("base") + 1;
|
|
margin: 0;
|
|
padding: 0 0 1em;
|
|
}
|
|
|
|
.quote-button.visible {
|
|
z-index: z("tooltip");
|
|
}
|
|
|
|
iframe {
|
|
max-width: 100%;
|
|
}
|
|
|
|
.btn-group {
|
|
margin-top: 25px;
|
|
position: relative;
|
|
}
|
|
|
|
.dropdown-toggle {
|
|
float: left;
|
|
position: relative;
|
|
}
|
|
|
|
.selected-posts {
|
|
padding: 0.1em 0.7em;
|
|
}
|
|
|
|
// hide the full set of selection buttons on mobile
|
|
.select-posts button {
|
|
display: none;
|
|
}
|
|
|
|
// unhide the simple "select just this post" button
|
|
button.select-post {
|
|
display: inline-block;
|
|
}
|
|
|
|
.deleted-user-avatar {
|
|
font-size: $font-up-5;
|
|
}
|
|
|
|
span.btn-text {
|
|
display: none;
|
|
}
|
|
|
|
blockquote {
|
|
clear: both;
|
|
/* leave browser defaults for top and bottom here */
|
|
margin-left: 0;
|
|
margin-right: 0;
|
|
}
|
|
|
|
pre.codeblock-buttons code {
|
|
padding-right: 2.75em;
|
|
}
|
|
|
|
.gap {
|
|
padding: 0.25em 0;
|
|
}
|
|
|
|
.posts-wrapper {
|
|
position: relative;
|
|
}
|
|
|
|
span.highlighted {
|
|
background-color: var(--highlight-low);
|
|
}
|
|
|
|
.topic-avatar {
|
|
float: left;
|
|
margin-right: 10px;
|
|
z-index: z("base") + 1;
|
|
/* must render on top of topic-body + topic-meta-data, otherwise not tappable */
|
|
}
|
|
|
|
.topic-meta-data {
|
|
margin-left: 50px;
|
|
font-size: $font-down-1;
|
|
.names {
|
|
line-height: $line-height-medium;
|
|
display: flex;
|
|
flex-wrap: wrap;
|
|
|
|
.full-name {
|
|
font-weight: bold;
|
|
}
|
|
|
|
.first {
|
|
order: 1;
|
|
}
|
|
|
|
.poster-icon {
|
|
order: 2;
|
|
}
|
|
|
|
.second {
|
|
order: 3;
|
|
flex-basis: 100%;
|
|
}
|
|
|
|
.user-title {
|
|
order: 4;
|
|
flex-basis: 100%;
|
|
}
|
|
span {
|
|
margin-right: 4px;
|
|
}
|
|
}
|
|
}
|
|
|
|
.username.new-user a {
|
|
color: var(--primary-low-mid);
|
|
}
|
|
|
|
.user-title {
|
|
color: var(--primary-medium);
|
|
overflow: hidden;
|
|
margin-right: 50px;
|
|
}
|
|
|
|
.read-state {
|
|
display: none;
|
|
}
|
|
|
|
.post-notice {
|
|
margin-bottom: 1em;
|
|
&.old {
|
|
border-top: none;
|
|
padding-top: 0;
|
|
}
|
|
}
|
|
|
|
.posts-filtered-notice {
|
|
padding-right: 8.5em;
|
|
padding-bottom: unquote("max(1em, env(safe-area-inset-bottom))");
|
|
flex-wrap: wrap;
|
|
justify-content: flex-start;
|
|
margin: 1em -9px;
|
|
|
|
z-index: 101;
|
|
.filtered-replies-show-all {
|
|
position: absolute;
|
|
right: 1em;
|
|
}
|
|
|
|
.filtered-replies-viewing {
|
|
text-align: left;
|
|
width: 100%;
|
|
}
|
|
|
|
.filtered-avatar {
|
|
margin-left: 0;
|
|
img.avatar {
|
|
width: 20px;
|
|
height: 20px;
|
|
}
|
|
}
|
|
}
|
|
|
|
.open-popup-link {
|
|
opacity: 100%;
|
|
margin-bottom: 1rem;
|
|
}
|