summaryrefslogtreecommitdiff
path: root/addons/web_editor/static/src/scss/wysiwyg.scss
diff options
context:
space:
mode:
authorstephanchrst <stephanchrst@gmail.com>2022-05-10 21:51:50 +0700
committerstephanchrst <stephanchrst@gmail.com>2022-05-10 21:51:50 +0700
commit3751379f1e9a4c215fb6eb898b4ccc67659b9ace (patch)
treea44932296ef4a9b71d5f010906253d8c53727726 /addons/web_editor/static/src/scss/wysiwyg.scss
parent0a15094050bfde69a06d6eff798e9a8ddf2b8c21 (diff)
initial commit 2
Diffstat (limited to 'addons/web_editor/static/src/scss/wysiwyg.scss')
-rw-r--r--addons/web_editor/static/src/scss/wysiwyg.scss522
1 files changed, 522 insertions, 0 deletions
diff --git a/addons/web_editor/static/src/scss/wysiwyg.scss b/addons/web_editor/static/src/scss/wysiwyg.scss
new file mode 100644
index 00000000..429da03a
--- /dev/null
+++ b/addons/web_editor/static/src/scss/wysiwyg.scss
@@ -0,0 +1,522 @@
+$o-we-overlay-zindex: ($zindex-fixed + $zindex-modal-backdrop) / 2 !default;
+$o-we-zindex: $o-we-overlay-zindex + 1 !default;
+
+// Use css variables to control the default style of the editor so that an
+// external assets bundle can influence it without duplicating the css.
+:root {
+ @include print-variable('o-we-toolbar-height', $o-we-toolbar-height);
+}
+
+.o_we_command_protector {
+ font-weight: 400 !important;
+
+ b, strong {
+ font-weight: 700 !important;
+ }
+ * {
+ font-weight: inherit !important;
+ }
+ .btn {
+ text-align: unset !important;
+ }
+}
+
+// EDITOR TOP BAR AND POPOVER
+.note-popover .popover {
+ max-width: 350px;
+ left: 50% !important;
+ transform: translate(-50%, 0);
+
+ .popover-body {
+ white-space: normal;
+ }
+}
+
+#web_editor-top-edit {
+ @include o-position-absolute(0, 0, auto, 0);
+ position: fixed;
+ z-index: $o-we-zindex + 1;
+ height: var(--o-we-toolbar-height);
+ background-color: $o-we-bg;
+
+ .note-popover .popover {
+ top: 0 !important;
+ left: 0 !important;
+ right: 0 !important;
+ border: none !important;
+ max-width: none;
+ transform: none;
+ }
+ .note-popover .popover .popover-body {
+ height: var(--o-we-toolbar-height);
+ }
+}
+
+.wysiwyg_iframe,
+.note-editor {
+ border: $o-we-border-width solid $o-we-border-color;
+ margin: 0;
+ padding: 0;
+}
+// avoid popover bar over its opened modal
+.note-popover .popover {
+ z-index: $o-we-overlay-zindex;
+}
+.note-popover .popover .popover-body,
+.panel-heading.note-toolbar {
+ padding-bottom: 0;
+ border-bottom: $o-we-border-width solid $o-we-border-color;
+ background-color: $o-we-bg;
+ color: $o-we-color;
+ font-family: $o-we-font-family;
+
+ // Main layout of buttons
+ .btn-group, .btn {
+ width: auto !important;
+ height: 100% !important;
+ margin-top: 0;
+ margin-bottom: 0;
+ background: transparent;
+ border: none;
+ border-radius: 0;
+ }
+ .btn-secondary {
+ color: inherit;
+ }
+
+ // Active buttons and opened dropdowns
+ .btn {
+ padding: 0.5em 0.75em !important;
+ border-left: $o-we-item-border-width solid $o-we-item-border-color;
+ border-right: $o-we-item-border-width solid $o-we-item-border-color;
+ background: $o-we-sidebar-content-field-clickable-bg;
+ color: inherit;
+ font-size: $o-we-font-size !important;
+
+ &.active,
+ &:focus, &:active, &:focus:active {
+ @extend %we-active-button;
+ }
+
+ // This element should have been removed but still exists in 13.0 by
+ // mistake. This takes advantage of it to restore the color preview
+ // feature which disappeared and cannot be fixed as in 12.0.
+ // TODO fix the right way in 14.0.
+ > .caret {
+ display: block;
+ @include o-position-absolute(auto, 0, 0, 0);
+ border-bottom: 2px solid transparent;
+ }
+ }
+ .btn-group.show {
+ > .btn {
+ @extend %we-active-button;
+ }
+ &::after {
+ content: '';
+ @include o-position-absolute(100%, $o-we-border-width, auto, $o-we-border-width);
+ height: $o-we-border-width;
+ }
+ }
+ %we-active-button {
+ background: $o-we-sidebar-content-field-pressed-bg;
+ color: $o-we-sidebar-content-field-pressed-color;
+ box-shadow: none !important;
+ outline: none !important;
+ }
+ .dropdown-menu {
+ transform: none !important;
+ margin-top: $o-we-dropdown-spacing;
+ padding: 0;
+ margin-top: $o-we-toolbar-height;
+ border: $o-we-dropdown-border-width solid $o-we-dropdown-border-color;
+ background-color: $o-we-dropdown-bg;
+ box-shadow: $o-we-dropdown-shadow;
+ }
+ .dropdown-menu.show { // To overcome .note-XXX .dropdown-menu rules
+ min-width: 0;
+ }
+ .dropdown-item { // To overcome summernote rules breaking this in iframes
+ display: block;
+ max-width: none;
+ overflow: visible;
+ margin-top: 0;
+ padding: 0 1em;
+ border: none;
+ background: none;
+ background-clip: padding-box;
+ background-color: $o-we-dropdown-item-bg;
+ color: $o-we-dropdown-item-color;
+ line-height: $o-we-dropdown-item-height;
+
+ &:not(.d-none) ~ .dropdown-item {
+ // Use a border-top instead of a margin-top as when the
+ // mouse goes from one select button to another, the
+ // option preview should switch from the first button's
+ // option to the second one without reset to selected
+ // state in between.
+ border-top: $o-we-dropdown-item-spacing solid transparent;
+ }
+
+ &.active {
+ color: $o-we-dropdown-item-active-color;
+ }
+ }
+ li > .dropdown-item {
+ border-top: $o-we-dropdown-item-spacing solid transparent;
+ }
+
+ .note-style {
+ .dropdown-item {
+ > * {
+ display: inline;;
+ }
+ &, > * {
+ line-height: 2;
+ }
+ &[data-value="blockquote"] {
+ padding-top: 0.5em;
+ padding-bottom: 0.5em;
+
+ > * {
+ display: block;
+ }
+ }
+ }
+ }
+
+ // Specific elements
+ .o_image_alt {
+ @include o-text-overflow();
+ max-width: 150px;
+ }
+ .note-color-palette div .note-color-btn {
+ border-color: $o-we-dropdown-bg;
+ }
+ .note-custom-color-palette .note-color-row {
+ height: auto!important;
+ .note-color-btn {
+ float: left;
+ height: 20px;
+ width: 20px;
+ padding: 0;
+ margin: 0;
+ border: 1px solid $o-we-dropdown-bg;
+ }
+ }
+}
+.note-color ul.show {
+ min-width: 216px !important;
+}
+
+// ANIMATIONS
+@keyframes fadeInDownSmall {
+ 0% {
+ opacity: 0;
+ transform: translate(0, -5px);
+ }
+ 100% {
+ opacity: 1;
+ transform: translate(0, 0);
+ }
+}
+
+@keyframes inputHighlighter {
+ from {
+ background: $o-brand-primary;
+ }
+ to {
+ width: 0;
+ background: transparent;
+ }
+}
+
+.o_we_horizontal_collapse {
+ width: 0 !important;
+ padding: 0 !important;
+ border: none !important;
+}
+
+.o_we_transition_ease {
+ transition: all ease 0.35s;
+}
+
+// MODALS
+body .modal {
+
+ // SELECT MEDIA
+ .o_select_media_dialog {
+ max-width: 80%;
+
+ .modal-body {
+ .tab-pane {
+ min-height: 300px;
+ }
+
+ .o_we_images > .o_existing_attachment_cell .o_we_media_dialog_img_wrapper {
+ @extend %o-preview-alpha-background;
+
+ &, > img {
+ width: 100%;
+ }
+ }
+
+ .o_existing_attachment_cell {
+ cursor: pointer;
+ margin: 1px;
+
+ .o_existing_attachment_optimize, .o_existing_attachment_remove {
+ background-color: rgba(white, 0.4);
+ opacity: 0;
+ cursor: pointer;
+ transition: color 0.2s ease;
+ }
+
+ .o_existing_attachment_optimize {
+ @include o-position-absolute($top: 0, $left: 0);
+ border-radius: 0 0 2px 0;
+ }
+
+ .o_existing_attachment_remove {
+ @include o-position-absolute($top: 0, $right: 0);
+ z-index: 1;
+ border-radius: 0 0 0 2px;
+ &:hover {
+ color: $o-we-color-danger;
+ }
+ }
+
+ .o_file_name {
+ @include o-text-overflow;
+ }
+
+ &:hover {
+ .o_existing_attachment_optimize, .o_existing_attachment_remove {
+ opacity: 1;
+ }
+ &.o_we_attachment_highlight, .o_we_attachment_highlight {
+ border-color: $card-border-color;
+ box-shadow: 0px 0px 2px 2px $card-border-color;
+ }
+ }
+ }
+
+ .o_we_attachment_selected {
+ border-color: $o-brand-primary;
+ box-shadow: 0px 0px 2px 2px $o-brand-primary;
+ }
+
+ .o_we_attachment_optimized .badge {
+ position: absolute;
+ bottom: 0;
+ right: 0;
+ margin: 2px;
+ }
+
+ .font-icons-icons {
+ > span {
+ text-align: center;
+ font-size: 22px;
+ margin: 5px;
+ width: 50px;
+ height: 50px;
+ padding: 15px;
+ cursor: pointer;
+ }
+ }
+
+ #editor-media-image,
+ #editor-media-document {
+ .o_we_url_input {
+ width: 300px;
+ }
+ }
+
+ // VIDEO TAB
+ #editor-media-video {
+ .o_video_dialog_form {
+ #o_video_form_group {
+ position: relative;
+ width: 100%;
+
+ > textarea {
+ width: 100%;
+ min-height: 95px;
+ padding-bottom: 25px;
+ overflow-y: scroll;
+ }
+ }
+ }
+
+ #video-preview {
+ position: relative;
+ @include o-we-preview-box();
+ border: none;
+
+ .media_iframe_video {
+ width: 100%;
+ }
+
+ .o_video_dialog_iframe {
+ @include o-we-preview-content;
+ max-width: 100%;
+ max-height: 100%;
+
+ &.alert {
+ animation: fadeInDownSmall 700ms forwards;
+ margin: 0 auto;
+ }
+ }
+ }
+ }
+ }
+ }
+
+ // LINK EDITOR DIALOG COLOR SELECTOR
+ .o_link_dialog {
+ input.link-style:checked + span::after {
+ content: "\f00c";
+ display: inline-block;
+ font-family: FontAwesome;
+ margin-left: 2px;
+ }
+
+ .o_link_dialog_preview {
+ border-left: 1px solid gray('200');
+ }
+ }
+
+ .o_we_image_optimize_dialog {
+ .o_we_title_label {
+ font-size: $o-we-font-size;
+ }
+ .o_we_preview_area {
+ max-height: 400px;
+ overflow: auto;
+ }
+ }
+}
+
+// Highlight selected image/icon
+%o-we-selected-image {
+ outline: 3px solid rgba(150, 150, 220, 0.3);
+}
+
+img.o_we_selected_image {
+ @extend %o-we-selected-image;
+}
+
+.fa.o_we_selected_image::before {
+ @extend %o-we-selected-image;
+}
+// Override default image selection color from portal. It prevents your from
+// seeing the images' quality clearly in the wysiwyg.
+img::selection {
+ background: transparent;
+}
+.o_we_media_author {
+ font-size: 11px;
+ @include o-position-absolute($bottom: 0, $left: 0, $right: 0);
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ text-align: center;
+ background-color: rgba(255, 255, 255, .7);
+}
+
+@include media-breakpoint-down(md) {
+ #web_editor-top-edit {
+ position: initial !important;
+ height: initial !important;
+ top: initial !important;
+ left: initial !important;
+
+ #web_editor-toolbars .popover-body {
+ display: flex;
+ width: 100%;
+ overflow-x: auto;
+
+ .btn-group {
+ position: static;
+ }
+ }
+ }
+}
+
+// User modal in edit mode
+.editor_enable, .note-editable {
+ .modal:not(.o_technical_modal) {
+ top: 40px;
+ right: 0;
+ bottom: 0;
+ right: $o-we-sidebar-width;
+ width: auto;
+ height: auto;
+
+ .modal-dialog {
+ padding: 0.5rem 0; // To use more editor space if necessary
+ }
+ }
+}
+
+.o_we_no_pointer_events {
+ pointer-events: none;
+}
+
+.o_we_crop_widget {
+ background-color: rgba(128, 128, 128, 0.5);
+ @include o-position-absolute(0, 0, 0, 0);
+ z-index: 1024;
+
+ .o_we_cropper_wrapper {
+ position: absolute;
+ }
+
+ .o_we_crop_buttons {
+ margin-top: 0.5rem;
+ display: flex;
+ flex-wrap: wrap;
+
+ input[type=radio] {
+ display: none;
+ }
+
+ .btn-group {
+ border-radius: 0.25rem;
+ margin: 0.1rem;
+ }
+
+ button, label {
+ cursor: pointer !important;
+ padding: 0.2rem 0.3rem;
+ }
+
+ label {
+ display: flex;
+ align-items: center;
+
+ &.active {
+ background-color: $o-we-bg-darkest;
+ }
+ }
+
+ button:not(.btn), label {
+ margin: 0;
+ border: none;
+ border-right: 1px solid $o-we-bg;
+ background-color: $o-we-bg;
+ color: $o-we-color;
+
+ &:first-child {
+ border-top-left-radius: 0.25rem;
+ border-bottom-left-radius: 0.25rem;
+ }
+
+ &:last-child {
+ border-top-right-radius: 0.25rem;
+ border-bottom-right-radius: 0.25rem;
+ border-right: none;
+ }
+ }
+ }
+}