ul.sequence { @include clearfix; position: relative; } li.sequence-member { @include clearfix; position: relative; border: 1px solid transparent; border-width: 1px 0; &:hover { background-color: $color-input-focus; border-color: darken($color-input-focus, 10%); .sequence-member-inner { > .struct-block > label, > .char_field > label, .sequence > label { opacity: 1; } } } .struct-block .fields { @include column(10); padding-left: 0; padding-right: 0; } .struct-block .sequence-container { @include column(9); padding-left: 0; padding-right: 0; .sequence-member-inner { padding: 1.5em 0; } } // Copied from page-editor.scss .struct-block li.required > label:after { content: '*'; color: $color-red; font-weight: bold; display: inline-block; margin-left: 0.5em; line-height: 1em; font-size: 13px; } // The top level sequence doesn't have a sequnce-member-inner. This block is basically for things that should only affect inner blocks .sequence-member-inner { @include clearfix; position: relative; padding: 1.5em 50px; .sequence-member { border: 0; } // sequences within sequences, such as a ListBlock within StructBlock > .sequence .sequence-inner { @include column(10); padding-left: 0; padding-right: 0; } .sequence-type-list .sequence-container-inner { @include column(10); padding-left: 0; padding-right: 0; } .sequence-type-list .sequence-member-inner { padding: 0; padding-top: 0.5em; padding-bottom: 1.2em; } } .fields > li { position: relative; } } .sequence-member__help { opacity: 0; .sequence-member:hover & { opacity: 1; } .icon-help-inverse { margin-right: 0.5em; } } // Image chooser as direct descendant of top-level streamfield has special display .sequence-member-inner > .widget-admin_image_chooser { label { display: none; } .field-content { display: block; float: none; width: 100%; text-align: center; max-width: 500px; margin: auto; border: 1px solid $color-grey-4; padding: 1em; } .chooser { .chosen { padding: 0; } .unchosen { &:before { float: none; font-size: 4em; margin: 0; } } .preview-image { float: none; margin: 0; } } .actions li { display: inline-block; float: none; } } // This horridly specific selector ensures text inputs, rich text fields and textareas // that are direct children of highest level sequence should be borderless and full-width .block_field > .field-content > .input > .sequence-container > .sequence-container-inner > .sequence > .sequence-member > .sequence-member-inner { > .widget-text_input input, > .halloeditor, > .widget-textarea textarea { padding: 0; max-width: 1024px; border: 0; background-color: transparent; } > .Draftail-Editor { padding: 0; max-width: 1024px; } } // Controls for ordering and deletion of items in a sequence .sequence-controls { @include transition(opacity 0.2s ease); border-radius: 2px 0 0; border: 1px solid darken($color-input-focus, 10%); border-width: 1px 1px 0; opacity: 0; visibility: hidden; position: absolute; top: -30px; right: 0; z-index: 1; overflow: visible; background-color: $color-input-focus; padding: 0 0 0 1em; height: 30px; h3 { margin: 0; font-size: 0.7rem; display: inline-block; margin-right: 1em; line-height: 1.8rem; label { color: $color-teal; font-weight: normal; text-transform: uppercase; float: none; width: auto; padding: 0; margin: 0; } } button.icon.text-replace { width: 1.8rem; height: 1.8rem; &:before { line-height: 1.3em; font-size: 0.9rem; } } // .buttons only exists for menus in stream_member.html .button-group { float: right; } &:hover .buttons, &:hover label { opacity: 1; } .disabled { display: none; } } // list controls are slightly different as they require closer proximity to their associated fields .list-controls { border-radius: 0; background: transparent; top: 1.5em; border: 0; padding: 0; overflow: hidden; height: auto; } // Menu of other blocks to be added at each position .stream-menu { @include transition(all 0.2s ease); box-shadow: inset 0 0 45px rgba(0, 0, 0, 0.3); position: relative; background-color: $color-grey-1; opacity: 1; .toggle { @include transition(color 0.2s ease); border-radius: 50px; position: absolute; top: -0.5em; left: 0; right: 0; margin: 0 auto; cursor: pointer; font-size: 1.7em; width: 1em; height: 1em; display: block; z-index: 1; color: $color-grey-1; background-color: $color-white; span { @include visuallyhidden(); } &:before { transform: rotate(-45deg); position: absolute; font-family: wagtail; content: map-get($icons, 'plus-inverse'); line-height: 1em; text-align: center; } } .stream-menu-inner { transform: translate3d(0, 0, 0); max-width: 50em; margin: auto; overflow: hidden; } ul { @include transition(all 0.2s ease); @include clearfix; transform: translate3d(0, 0, 0) scale(1); visibility: visible; opacity: 1; padding: 1em 1em 0; overflow: hidden; } li { @include column(3); padding-bottom: $grid-gutter-width; padding-left: 0; padding-right: 0; &:nth-child(4n+1) { clear: left; } } button { @include transition(all 0.2s ease); background-color: transparent; border: 0; color: darken($color-grey-3, 5%); height: auto; display: block; width: 100%; padding: 0 0 0.5em; overflow: visible; span { text-transform: none; white-space: pre-wrap; width: 100%; display: block; overflow: hidden; padding: 0 1em; box-sizing: border-box; } &:before { display: block; font-family: wagtail; font-size: 2em; width: 100%; height: 2em; line-height: 2em; text-align: center; } &:hover, &:focus { background-color: $color-teal; color: $color-white; } } &.stream-menu-closed { box-shadow: none; .stream-menu-inner ul { transform: scale(0.9); opacity: 0; } .toggle { color: $color-grey-3; background-color: $color-white; &:before { transform: rotate(0deg); } &:focus { color: $color-teal; } } &:hover { border-top-color: $color-teal; .toggle { color: $color-teal; } } } @include media-breakpoint-up(sm) { li { @include column(2); &:nth-child(4n+1) { clear: none; } &:nth-child(6n+1) { clear: left; } } } } .sequence-member .stream-menu { margin: auto auto 0; } .sequence-member .stream-menu-closed { opacity: 0; visibility: hidden; } .sequence-member:hover { .sequence-controls { visibility: visible; opacity: 1; } .stream-menu { visibility: visible; opacity: 1; } }