mirror of
https://github.com/discourse/discourse.git
synced 2025-03-01 16:08:55 +08:00

``` WARNING: Sass's behavior for declarations that appear after nested rules will be changing to match the behavior specified by CSS in an upcoming version. To keep the existing behavior, move the declaration above the nested rule. To opt into the new behavior, wrap the declaration in `& {}`. More info: https://sass-lang.com/d/mixed-decls ```
359 lines
6.1 KiB
SCSS
359 lines
6.1 KiB
SCSS
.d-editor-container {
|
|
display: flex;
|
|
flex-grow: 1;
|
|
max-width: 100%;
|
|
}
|
|
|
|
.d-editor {
|
|
display: flex;
|
|
flex-grow: 1;
|
|
min-height: 0;
|
|
}
|
|
|
|
.d-editor-textarea-column {
|
|
display: flex;
|
|
flex: 1;
|
|
flex-direction: column;
|
|
max-width: 100%;
|
|
min-width: 0;
|
|
}
|
|
|
|
.d-editor-textarea-wrapper {
|
|
display: flex;
|
|
flex: 1;
|
|
flex-direction: column;
|
|
background-color: var(--secondary);
|
|
position: relative;
|
|
border: 1px solid var(--primary-400);
|
|
border-radius: var(--d-input-border-radius);
|
|
min-height: 0;
|
|
|
|
textarea {
|
|
background: transparent;
|
|
}
|
|
|
|
&.in-focus {
|
|
@include default-focus;
|
|
|
|
textarea {
|
|
outline: 0;
|
|
}
|
|
}
|
|
|
|
&.disabled {
|
|
cursor: not-allowed;
|
|
|
|
.d-editor-button-bar {
|
|
opacity: 0.5;
|
|
pointer-events: none;
|
|
}
|
|
}
|
|
}
|
|
|
|
.d-editor-preview-wrapper {
|
|
display: flex;
|
|
flex: 1;
|
|
flex-direction: column;
|
|
margin-left: 16px;
|
|
overflow: auto;
|
|
overflow-anchor: none;
|
|
cursor: default;
|
|
-webkit-overflow-scrolling: touch;
|
|
overscroll-behavior: contain;
|
|
}
|
|
|
|
.d-editor-input,
|
|
.d-editor-preview {
|
|
box-sizing: border-box;
|
|
flex: 1 1 100%;
|
|
width: 100%;
|
|
margin: 0;
|
|
min-height: auto;
|
|
word-wrap: break-word;
|
|
appearance: none;
|
|
border-radius: 0;
|
|
}
|
|
|
|
.d-editor-input {
|
|
border: 0;
|
|
padding: 10px;
|
|
height: 100%;
|
|
overflow-x: hidden;
|
|
overscroll-behavior: contain;
|
|
overflow-anchor: none;
|
|
resize: none;
|
|
}
|
|
|
|
.d-editor-preview {
|
|
height: auto;
|
|
}
|
|
|
|
.d-editor-plugin {
|
|
display: flex;
|
|
flex: 1 1;
|
|
overflow: auto;
|
|
}
|
|
|
|
.composing-whisper .d-editor-preview {
|
|
font-style: italic;
|
|
color: var(--primary-medium) !important;
|
|
}
|
|
|
|
.hide-preview .d-editor-preview-wrapper {
|
|
display: none;
|
|
flex: 0;
|
|
}
|
|
|
|
.edit-category-tab-topic-template {
|
|
.emoji.btn {
|
|
display: none;
|
|
}
|
|
}
|
|
|
|
.user-preferences .bio-composer,
|
|
.group-form-bio,
|
|
.edit-category-tab-topic-template {
|
|
textarea {
|
|
width: 100%;
|
|
height: 100%;
|
|
min-height: 10em;
|
|
}
|
|
|
|
.local-dates.btn {
|
|
display: none;
|
|
}
|
|
|
|
.d-editor-container {
|
|
display: block;
|
|
}
|
|
|
|
.d-editor-textarea-wrapper {
|
|
border: 1px solid var(--primary-low);
|
|
}
|
|
|
|
.d-editor-preview-wrapper {
|
|
max-width: 100%;
|
|
margin: 0;
|
|
padding: 0;
|
|
}
|
|
|
|
.d-editor-preview {
|
|
background-color: var(--primary-very-low);
|
|
margin-top: 1em;
|
|
padding: 0.667em;
|
|
|
|
&:empty {
|
|
margin: 0;
|
|
padding: 0;
|
|
}
|
|
}
|
|
}
|
|
|
|
.user-preferences .bio-composer,
|
|
.group-form-bio {
|
|
padding: 10px;
|
|
border: 1px solid var(--primary-low);
|
|
}
|
|
|
|
.d-editor-preview img {
|
|
vertical-align: baseline; // consistent with cooked
|
|
|
|
&.emoji,
|
|
&.avatar,
|
|
&.onebox-avatar,
|
|
&.site-icon {
|
|
vertical-align: text-bottom;
|
|
}
|
|
|
|
&.resizable {
|
|
object-fit: cover;
|
|
object-position: top;
|
|
}
|
|
}
|
|
|
|
.d-editor-preview .image-wrapper {
|
|
--resizer-height: 2.25em;
|
|
position: relative;
|
|
display: inline-block;
|
|
padding-bottom: var(--resizer-height);
|
|
|
|
.button-wrapper {
|
|
box-sizing: border-box;
|
|
padding: 0.25em 0.5em;
|
|
min-width: 19em; // wide enough to contain all controls
|
|
width: 100%;
|
|
display: flex;
|
|
flex-wrap: nowrap;
|
|
align-items: center;
|
|
gap: 0 0.5em;
|
|
position: absolute;
|
|
height: var(--resizer-height);
|
|
bottom: 0;
|
|
left: 0;
|
|
opacity: 0.9;
|
|
z-index: 1; // needs to be higher than image
|
|
background: var(--secondary);
|
|
color: var(--primary);
|
|
|
|
.scale-btn-container,
|
|
.alt-text-readonly-container,
|
|
.alt-text-edit-container,
|
|
.delete-image-button {
|
|
display: flex;
|
|
height: var(--resizer-height);
|
|
align-items: center;
|
|
|
|
&[hidden] {
|
|
display: none;
|
|
}
|
|
}
|
|
|
|
.scale-btn {
|
|
color: var(--tertiary);
|
|
padding: 0 1em;
|
|
|
|
&:first-child,
|
|
&:last-child {
|
|
padding: 0;
|
|
}
|
|
|
|
&.active {
|
|
font-weight: bold;
|
|
color: var(--primary);
|
|
}
|
|
|
|
&:not(.active):hover {
|
|
text-decoration: underline;
|
|
cursor: pointer;
|
|
}
|
|
}
|
|
|
|
.alt-text-readonly-container {
|
|
flex: 1 1 auto;
|
|
|
|
// arbitrary min-width value allows for correct shrinking
|
|
min-width: 100px;
|
|
|
|
.alt-text {
|
|
margin-right: 0.5em;
|
|
overflow: hidden;
|
|
white-space: nowrap;
|
|
text-overflow: ellipsis;
|
|
}
|
|
|
|
.alt-text-edit-btn {
|
|
cursor: pointer;
|
|
color: var(--tertiary);
|
|
|
|
svg {
|
|
padding-right: 0.5em;
|
|
}
|
|
}
|
|
}
|
|
|
|
.alt-text-edit-container {
|
|
gap: 0 0.25em;
|
|
flex: 1;
|
|
max-width: 100%;
|
|
height: 95%; // gives input some padding
|
|
|
|
.alt-text-input,
|
|
.alt-text-edit-ok,
|
|
.alt-text-edit-cancel {
|
|
height: 100%;
|
|
}
|
|
|
|
.alt-text-input {
|
|
display: inline-flex;
|
|
flex: 1;
|
|
overflow: hidden;
|
|
white-space: nowrap;
|
|
text-overflow: ellipsis;
|
|
margin: 0;
|
|
padding-left: 0.25em;
|
|
}
|
|
|
|
.alt-text-edit-ok,
|
|
.alt-text-edit-cancel {
|
|
border: none;
|
|
width: var(--resizer-height);
|
|
|
|
svg {
|
|
margin: 0;
|
|
}
|
|
}
|
|
}
|
|
|
|
.delete-image-button {
|
|
cursor: pointer;
|
|
color: var(--danger);
|
|
|
|
.d-icon-trash-can {
|
|
margin-left: 0.5em;
|
|
}
|
|
}
|
|
|
|
.wrap-image-grid-button {
|
|
cursor: pointer;
|
|
color: var(--tertiary);
|
|
}
|
|
|
|
svg {
|
|
pointer-events: none;
|
|
}
|
|
}
|
|
}
|
|
|
|
// d-editor bar button sizing
|
|
.d-editor-button-bar {
|
|
display: grid;
|
|
grid-template-columns: repeat(auto-fill, minmax(2.35em, 1fr));
|
|
align-items: center;
|
|
border-bottom: 1px solid var(--primary-low);
|
|
width: 100%;
|
|
box-sizing: border-box;
|
|
flex-shrink: 0;
|
|
|
|
@include breakpoint(tablet) {
|
|
// occupy available space on narrower screens
|
|
grid-template-columns: repeat(auto-fit, minmax(2em, 1fr));
|
|
}
|
|
|
|
@include breakpoint(mobile-medium) {
|
|
font-size: var(--font-down-1);
|
|
}
|
|
|
|
.btn:focus {
|
|
@include default-focus;
|
|
}
|
|
|
|
.btn {
|
|
margin: 0;
|
|
background-color: transparent;
|
|
color: var(--primary-medium);
|
|
|
|
.d-icon {
|
|
color: currentcolor;
|
|
}
|
|
|
|
.discourse-no-touch & {
|
|
&:hover {
|
|
color: var(--primary-low);
|
|
}
|
|
}
|
|
}
|
|
|
|
.select-kit-header-wrapper {
|
|
justify-content: center;
|
|
}
|
|
}
|
|
|
|
.d-editor #form-template-form {
|
|
overflow: auto;
|
|
background: var(--primary-very-low);
|
|
padding: 1rem;
|
|
border: 1px solid var(--primary-400);
|
|
margin-bottom: 0;
|
|
height: 100%;
|
|
}
|