Use prettier for SCSS (#3895)
[GitHub/WoltLab/WCF.git] / wcfsetup / install / files / style / ui / redactor.scss
CommitLineData
b8eab696 1.redactor-box {
dbd05c9d 2 background-color: $wcfContentBackground;
b8eab696 3 position: relative;
8a52619a 4
e834b52e 5 &:not(:first-child):not(.redactorBoxFullscreen) {
9d029724
AE
6 margin-top: 20px;
7 }
8a52619a 8
b8eab696
AE
9 & + .messageTabMenu {
10 padding: 0;
11 }
8a52619a 12
b8eab696 13 & + .innerError,
95fc303c
AE
14 & + .innerSuccess,
15 & + .innerWarning,
16 > .innerError,
17 > .innerSuccess,
18 > .innerWarning {
b8eab696
AE
19 border-radius: 0;
20 box-shadow: none;
21 display: block;
22 margin-top: -1px;
23 }
8a52619a 24
95fc303c
AE
25 > .innerError,
26 > .innerSuccess,
27 > .innerWarning {
811f5a93 28 margin: -1px 0;
b8eab696 29 }
b8eab696
AE
30}
31
c947cf5f 32.redactor-layer {
bf5372fc
AE
33 border: 1px solid $wcfContentBorderInner;
34 border-top-width: 0;
b8eab696 35 max-height: 500px;
9e7b600c 36 padding: 10px;
b8eab696
AE
37 position: relative;
38 outline: none;
39 overflow: auto;
8a52619a 40
abc590f6
AE
41 * {
42 // setting min-width to "0" inside contenteditable causes
43 // IE11 to do all sort of funny things
44 min-width: auto;
45 }
8a52619a 46
af098b36
AE
47 &.redactor-placeholder::after {
48 color: $wcfContentDimmedText;
49 content: attr(placeholder);
50 display: block;
c2e8d0f6 51 pointer-events: none;
af098b36
AE
52 position: absolute;
53 }
8a52619a 54
b8eab696
AE
55 & + textarea {
56 border-width: 0;
57 box-shadow: none;
b8eab696
AE
58 outline: none;
59 padding: 10px;
60 resize: vertical;
8a52619a 61
b8eab696
AE
62 &:focus {
63 box-shadow: none;
64 }
65 }
8a52619a 66
620a271a
AE
67 // enforce styles used in messages
68 @extend .htmlContent;
8a52619a 69
9e7b600c
AE
70 > :not(p) {
71 &:first-child {
72 margin-top: 10px !important;
73 }
8a52619a 74
9e7b600c
AE
75 &:last-child {
76 margin-bottom: 20px !important;
77 }
78 }
8a52619a 79
620a271a
AE
80 // remove margin top for the first paragraph in the editor to avoid a weird looking offset a the top
81 > p:first-child {
82 margin-top: 0;
b8eab696 83 }
8a52619a 84
b8eab696 85 img {
b8eab696 86 max-width: 100%;
8a52619a 87
00e48dac
AE
88 &:not(.smiley) {
89 // show cursor to indicate editing capability excluding smilies
90 cursor: pointer;
91 }
8a52619a 92
58267a98
AE
93 /* prevent flicker from pasted images */
94 &[src^="data:image"] {
95 display: none !important;
96 }
b8eab696 97 }
8a52619a 98
b8eab696
AE
99 table {
100 border-collapse: collapse;
b8eab696 101 line-height: 1.6em;
8a52619a 102
9fc641b0
MW
103 th {
104 border: 1px solid #ddd;
105 border-bottom: 2px solid currentColor;
106 }
8a52619a 107
b8eab696
AE
108 td {
109 border: 1px solid #ddd;
110 padding: 5px;
111 vertical-align: top;
8a52619a 112
9510fec6 113 &:empty::before {
3fdf9502
AE
114 content: "";
115 display: inline-block;
116 }
b8eab696
AE
117 }
118 }
8a52619a 119
f12d5539
AE
120 /* This is a rather hacky work-around for Safari that makes the bottom margin clickable
121 in order to recognize clicks in between two block elements. See #2533 */
122 &.jsSafariMarginClickTarget {
123 pre,
124 woltlab-quote,
125 woltlab-spoiler {
126 &::after {
127 content: "";
128 height: 1em; // this is the value of `margin-bottom`
129 left: 0;
130 position: absolute;
131 right: 0;
8a52619a 132
5f4e9562
AE
133 @include screen-md-up {
134 transform: translateY(20px); // this is the value of `padding-bottom`
135 }
8a52619a 136
5f4e9562
AE
137 @include screen-sm-down {
138 transform: translateY(10px); // this is the value of `padding-bottom`
139 }
f12d5539
AE
140 }
141 }
8a52619a 142
f12d5539
AE
143 pre::after {
144 /* parent is `position: relative` */
145 bottom: 0;
146 }
147 }
1760080e
AE
148}
149
885643a6
AE
150.redactor-dropdown-menu {
151 @include screen-lg {
885643a6 152 }
8a52619a 153
885643a6
AE
154 > li:hover {
155 background-color: transparent !important;
156 }
8a52619a 157
885643a6
AE
158 a:hover {
159 background-color: $wcfDropdownBackgroundActive;
1760080e 160 }
8a52619a 161
1760080e
AE
162 .redactor-dropdown-link-inactive {
163 cursor: default;
8a52619a
TD
164 opacity: 0.6;
165
de61bfd1
AE
166 > a:hover {
167 background-color: $wcfDropdownBackground !important;
1760080e 168 color: $wcfDropdownText !important;
de61bfd1 169 cursor: default !important;
1760080e 170 }
b8eab696
AE
171 }
172}
173
b8eab696 174/* disable auto zoom in mobile safari */
ed02d9b7 175@include screen-md-down {
c947cf5f 176 .redactor-layer {
b8eab696
AE
177 font-size: 16px;
178 max-height: 500px;
179 }
180}
181
182.redactor-toolbar {
811f5a93 183 background-color: $wcfHeaderBackground;
1760080e
AE
184 display: flex;
185 flex-wrap: wrap;
8a52619a 186
b8eab696 187 > li {
1760080e 188 flex: 0 0 auto;
8a52619a 189
b8eab696 190 > a {
811f5a93 191 color: $wcfHeaderMenuLink;
b8eab696 192 display: block;
b8eab696 193 outline: none;
a2c4f308 194 padding: 10px;
b8eab696 195 text-align: center;
8a52619a 196
5908f54f 197 @include wcfFontSmall;
8a52619a 198
fd4c3c75
AE
199 &.redactor-button-disabled {
200 background-color: transparent !important;
811f5a93 201 color: $wcfButtonDisabledText !important;
fd4c3c75 202 cursor: default;
357b5f0b 203 pointer-events: none;
b8eab696 204 }
8a52619a 205
b8eab696
AE
206 &.redactor-act,
207 &.dropact {
811f5a93
AE
208 background-color: $wcfHeaderMenuLinkBackgroundActive;
209 color: $wcfHeaderMenuLinkActive;
b8eab696 210 }
8a52619a 211
fd4c3c75
AE
212 .icon {
213 color: inherit;
214 cursor: inherit !important;
8a52619a 215
b1464920
AE
216 &.redactorButtonImage {
217 background: no-repeat center center;
218 background-size: contain;
219 }
fd4c3c75 220 }
8a52619a 221
5bf57072
AE
222 @include screen-lg {
223 // hover-styles on mobile are misleading as they stay much longer
224 // due to the click-like behavior
225 &:hover {
811f5a93
AE
226 background-color: $wcfHeaderMenuLinkBackgroundActive;
227 color: $wcfHeaderMenuLinkActive;
5bf57072
AE
228 }
229 }
8a52619a 230
885643a6
AE
231 &:focus {
232 background-color: $wcfHeaderMenuLinkBackgroundActive;
233 color: $wcfHeaderMenuLinkActive;
234 }
b8eab696 235 }
8a52619a 236
8399847c
AE
237 @include screen-sm-up {
238 &.redactor-toolbar-separator {
239 margin-left: 11px;
240 position: relative;
8a52619a 241
8399847c
AE
242 &::before {
243 bottom: 7px;
811f5a93 244 border-left: 1px solid $wcfHeaderMenuLink;
8399847c
AE
245 content: "";
246 left: -6px;
8a52619a 247 opacity: 0.6;
8399847c
AE
248 position: absolute;
249 top: 7px;
250 }
251 }
252 }
d497febe 253 }
8a52619a 254
d497febe
AE
255 @include screen-xs {
256 &:not(.redactorToolbarOverride) > li {
8399847c
AE
257 &[data-show-on-mobile="false"] {
258 display: none;
259 }
260 }
8a52619a 261
d497febe
AE
262 &.redactorToolbarOverride > .redactor-toolbar-separator {
263 position: relative;
8a52619a 264
d497febe
AE
265 &::before {
266 bottom: 7px;
811f5a93 267 border-left: 1px solid $wcfHeaderMenuLink;
d497febe
AE
268 content: "";
269 left: 0;
8a52619a 270 opacity: 0.6;
d497febe
AE
271 position: absolute;
272 top: 7px;
273 }
274 }
8a52619a 275
d497febe
AE
276 .redactorToolbarToggle {
277 position: relative;
8a52619a 278
d497febe
AE
279 &::before {
280 bottom: 7px;
811f5a93 281 border-left: 1px solid $wcfHeaderMenuLink;
d497febe
AE
282 content: "";
283 left: 0;
8a52619a 284 opacity: 0.6;
d497febe
AE
285 position: absolute;
286 top: 7px;
287 }
288 }
b8eab696
AE
289 }
290}
291
292.redactor-toolbar-tooltip {
f2b50825 293 @extend .balloonTooltip;
8a52619a 294
b8eab696
AE
295 opacity: 1;
296 visibility: visible;
b8eab696
AE
297}
298
299.redactorAttachmentContainer {
300 background-color: rgba(255, 255, 255, 1);
301 border: 1px solid rgba(238, 238, 238, 1);
302 border-top-width: 0;
303 padding: 7px 14px 7px;
304}
305
885643a6 306.redactor-dropdown-menu-fontcolor {
b8eab696 307 width: 200px;
8a52619a 308
b8eab696
AE
309 > li.redactorColorPallet {
310 padding: 0 4px;
8a52619a 311
b8eab696 312 &:hover {
f2b50825 313 background-color: $wcfDropdownBackground !important;
b8eab696 314 }
8a52619a 315
b8eab696
AE
316 > a {
317 border: 2px solid rgba(255, 255, 255, 1);
318 border-bottom-width: 0;
319 display: inline-block;
361e67e1 320 font-size: 0;
b8eab696
AE
321 height: 20px;
322 padding: 0;
323 margin: 0;
324 width: 20px;
325 }
326 }
327}
328
329.redactorDropArea {
26c8f1c3
AE
330 align-items: center;
331 background-color: $wcfStatusInfoBackground;
332 border: 5px dashed currentColor;
333 bottom: 0;
334 color: $wcfStatusInfoText;
335 display: flex;
336 justify-content: center;
337 left: 0;
b8eab696 338 position: absolute;
26c8f1c3 339 right: 0;
6a376b34 340 z-index: 10;
8a52619a 341
26c8f1c3 342 @include wcfFontSection;
8a52619a 343
26c8f1c3
AE
344 &::before {
345 content: attr(data-drop-here);
346 }
8a52619a 347
b8eab696 348 &.active {
26c8f1c3
AE
349 background-color: $wcfStatusSuccessBackground;
350 color: $wcfStatusSuccessText;
8a52619a 351
26c8f1c3
AE
352 &::before {
353 content: attr(data-drop-now);
354 }
b8eab696
AE
355 }
356}
357
358.redactor-link-tooltip {
22a2df66
MW
359 background-color: $wcfTooltipBackground;
360 border-radius: 2px;
8a52619a 361 box-shadow: 0 0 3px rgba(0, 0, 0, 0.12), 0 1px 2px rgba(0, 0, 0, 0.24);
22a2df66 362 color: $wcfTooltipText;
b8eab696
AE
363 padding: 5px 10px 7px;
364 position: absolute;
365 z-index: 800;
8a52619a 366
b8eab696 367 > a {
22a2df66 368 color: $wcfTooltipText;
b8eab696
AE
369 }
370}
bf5372fc
AE
371
372.redactor-voice-label {
373 display: none;
374}
9dab3711 375
5840fdfd
AE
376/* format */
377.redactor-dropdown-h2 {
378 @include wcfFontSection;
379}
380
381.redactor-dropdown-h3 {
382 @include wcfFontHeadline;
383}
384
9dab3711
AE
385/* alignment plugin */
386.text-center {
fe8a3e1b 387 text-align: center !important;
9dab3711
AE
388}
389
390.text-right {
fe8a3e1b 391 text-align: right !important;
9dab3711 392}
831dc0da 393
903a8623
AE
394/* alignment plugin / custom value */
395.text-justify {
fe8a3e1b 396 text-align: justify !important;
8a52619a 397
903a8623
AE
398 -webkit-hyphens: auto;
399 -moz-hyphens: auto;
400 -ms-hyphens: auto;
401 hyphens: auto;
402}
403
831dc0da 404/* text color selection */
885643a6
AE
405.redactor-dropdown-menu-woltlabColor {
406 display: flex !important;
407 flex-wrap: wrap;
408 width: 272px;
8a52619a 409
885643a6
AE
410 > .dropdownDivider,
411 > .dropdownDivider + li {
412 flex: 0 0 100%;
831dc0da 413 }
8a52619a 414
831dc0da
AE
415 .woltlab-color-selection {
416 flex: 0 0 30px;
417 margin: 2px;
418 overflow: hidden;
8a52619a 419
831dc0da
AE
420 > a {
421 background-color: currentColor !important;
831dc0da
AE
422 display: block;
423 height: 30px;
424 width: 30px;
425 }
426 }
427}
81011521
AE
428
429/* font size */
8a52619a
TD
430.woltlab-size-8 {
431 font-size: 8pt;
432}
433.woltlab-size-10 {
434 font-size: 10pt;
435}
436.woltlab-size-12 {
437 font-size: 12pt;
438}
439.woltlab-size-14 {
440 font-size: 14pt;
441}
442.woltlab-size-18 {
443 font-size: 18pt;
444}
445.woltlab-size-24 {
446 font-size: 24pt;
447}
448.woltlab-size-36 {
449 font-size: 36pt;
450}
f06b38e2
AE
451
452/* image float */
453.messageFloatObjectLeft {
454 float: left;
455 margin: 0 20px 20px 0;
456}
457
458.messageFloatObjectRight {
459 float: right;
460 margin: 0 0 20px 20px;
461}
b025db3d 462
61b1c63a
AE
463.smiley,
464.jsSmiley > img {
465 &[src$="_emojione.png"] {
466 max-height: 20px;
467 }
468}
469
b025db3d
AE
470.smiley {
471 margin: 0 1px;
472}
c2e8d0f6 473
61b1c63a
AE
474@include screen-md-down {
475 .jsSmiley {
476 display: inline-block;
477 padding: 10px;
478 }
479}
480
c2e8d0f6
AE
481.wysiwygTextarea {
482 background-color: transparent !important;
483 border: 1px solid $wcfContentBorderInner !important;
484 color: transparent !important;
485 display: block;
486 height: 238px;
487 width: 100%;
488}
2f035ee4
AE
489
490.messageQuickReplyCollapsed {
8e8cc420 491 border-bottom-width: 0 !important;
8a52619a 492
8e8cc420
AE
493 @include screen-sm-down {
494 margin-left: -10px;
495 margin-right: -10px;
496 }
8a52619a 497
2f035ee4 498 .messageSidebar {
8e8cc420 499 display: none;
2f035ee4 500 }
8a52619a 501
2f035ee4 502 .messageQuickReplyContent {
8e8cc420 503 background-color: $wcfSidebarBackground;
2f035ee4 504 cursor: pointer;
8e8cc420
AE
505 display: inline-block !important;
506 margin: 0 !important;
507 max-width: 100% !important;
508 overflow: hidden;
45beeb47 509 padding: 10px 20px;
8e8cc420
AE
510 position: relative;
511 width: 100% !important;
8a52619a 512
8e8cc420
AE
513 @include screen-md-up {
514 border-radius: 2px;
2f035ee4 515 }
8a52619a 516
8e8cc420
AE
517 &::before {
518 color: $wcfSidebarText;
519 content: $fa-var-reply;
520 font-family: FontAwesome;
521 font-size: 28px;
522 height: 32px;
523 line-height: 32px;
524 margin-right: 10px;
525 width: 32px;
526 vertical-align: -5px;
2f035ee4 527 }
8a52619a 528
8e8cc420
AE
529 &::after {
530 color: $wcfSidebarText;
531 content: attr(data-placeholder);
2f035ee4 532 }
8a52619a 533
8e8cc420
AE
534 > .messageBody {
535 left: 200%;
536 position: absolute;
537 top: -100%;
2f035ee4 538 }
8a52619a 539
2f035ee4
AE
540 > .messageFooter {
541 display: none;
542 }
543 }
544}
41ad3366
AE
545
546.redactorAutosaveRestored {
547 background-color: $wcfContentBackground;
548 border-top: 1px solid $wcfContentBorderInner;
549 bottom: 1px;
550 display: flex;
551 opacity: 0;
552 position: absolute;
553 right: 1px;
8a52619a 554 transition: opacity 0.12s linear, visibility 0s linear 0.12s;
41ad3366 555 visibility: hidden;
8a52619a 556
41ad3366
AE
557 &.active {
558 opacity: 1;
559 transition-delay: 0s;
560 visibility: visible;
561 }
8a52619a 562
41ad3366
AE
563 > a {
564 border-left: 1px solid $wcfContentBorderInner;
565 flex: 0 0 auto;
566 padding: 10px;
567 }
8a52619a 568
41ad3366
AE
569 > span {
570 color: $wcfContentDimmedText;
571 flex: 1 1 auto;
572 padding: 10px;
573 }
8a52619a 574
41ad3366
AE
575 @include screen-sm-up {
576 border-left: 1px solid $wcfContentBorderInner;
577 border-top-left-radius: 2px;
8a52619a 578
41ad3366
AE
579 > span {
580 padding: 10px 20px;
581 }
582 }
8a52619a 583
41ad3366
AE
584 @include screen-xs {
585 left: 1px;
8a52619a 586
41ad3366
AE
587 > span {
588 text-align: center;
589 }
590 }
591}
dbd05c9d
AE
592
593.redactorBoxFullscreen {
594 bottom: 0;
f2625b94
AE
595 display: flex;
596 flex-direction: column;
dbd05c9d
AE
597 left: 0;
598 position: fixed;
599 right: 0;
600 top: 0;
601 z-index: 310;
8a52619a 602
f2625b94
AE
603 .redactor-toolbar-box {
604 flex: 0 auto;
605 }
8a52619a 606
f2625b94
AE
607 .redactor-layer,
608 .redactor-layer + textarea {
609 flex: 1 auto;
dbd05c9d
AE
610 max-height: none !important;
611 min-height: 0 !important;
612 }
613}
74c960dd
AE
614
615.editorImageBlocked {
616 filter: brightness(25%);
8a52619a
TD
617 transition: filter 0.12s linear;
618
74c960dd
AE
619 &:hover {
620 filter: brightness(75%);
621 }
622}