diff options
| author | stephanchrst <stephanchrst@gmail.com> | 2022-05-10 21:51:50 +0700 |
|---|---|---|
| committer | stephanchrst <stephanchrst@gmail.com> | 2022-05-10 21:51:50 +0700 |
| commit | 3751379f1e9a4c215fb6eb898b4ccc67659b9ace (patch) | |
| tree | a44932296ef4a9b71d5f010906253d8c53727726 /addons/web_editor/static/src/scss/wysiwyg.scss | |
| parent | 0a15094050bfde69a06d6eff798e9a8ddf2b8c21 (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.scss | 522 |
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; + } + } + } +} |
