Ghost/ghost/admin/app/styles/components/publishmenu.css
Kevin Ansfield cf8b372fed Added fullscreen preview with toggle to publish flow
refs https://github.com/TryGhost/Team/issues/1621

- copied existing preview modal over to `editor-labs/modals` directory
  - old modal will be deleted in cleanup
- moved "Preview" button from editor template to the `<PublishManagement>` component
  - allows for preview modal to be controlled alongside the publish flow modal
- added `togglePreviewPublish()` action to `<PublishManagement>`
  - opens whichever of preview/publish is not currently open, this opens the new modal on top of the old modal
  - waits for the modal animation duration to pass then closes the modal that's now underneath, this prevents the flashing that occurs when modals are both opening and closing at the same time because that results in a 50% opacity of both modals during the middle of the animation
- updated preview modal and publish-flow modals to have "Publish" and "Preview" buttons respectively that call the `togglePreviewPublish` action
- updated preview modal to be fullscreen to better match the publish modal
2022-05-11 23:46:01 +01:00

844 lines
16 KiB
CSS

/* Publish Menu
/* ---------------------------------------------------------- */
.gh-publishmenu-trigger {
height: max-content;
cursor: pointer;
}
.gh-publishmenu-trigger svg {
height: 8px;
width: 8px;
}
.gh-publishmenu-trigger svg path {
stroke: var(--darkgrey);
stroke-width: 2px;
}
.gh-publishmenu-trigger:focus {
outline: 0;
}
.gh-publishmenu {
position: relative;
z-index: 1000;
display: inherit;
margin-right: 8px;
}
@media (max-width: 500px) {
.gh-publishmenu {
margin-right: 0;
}
}
.gh-publishmenu .sent {
display: block;
height: 34px;
margin-top: -2px;
color: var(--darkgrey);
font-size: 1.35rem;
font-weight: 500;
line-height: 34px;
letter-spacing: .2px;
}
.gh-publishmenu-dropdown {
position: absolute;
top: 100%;
right: 0;
margin: 5px 0 20px 0;
padding: 0px;
width: 344px;
background-color: #fff;
background-clip: padding-box;
border-radius: 4px;
list-style: none;
text-align: left;
text-transform: none;
font-size: 1.4rem;
font-weight: normal;
will-change: transform, opacity;
z-index: 99999; /* needs to sit on top of preview modal */
/* box-shadow: 0 0 0 1px rgba(99,114,130,0.06), 0 8px 16px rgba(27,39,51,0.08); */
box-shadow: var(--box-shadow-m);
}
.gh-publishmenu-dropdown.ember-basic-dropdown--transitioning-in {
animation: fade-in-scale 0.2s;
animation-fill-mode: forwards;
}
.gh-publishmenu-dropdown.ember-basic-dropdown--transitioning-out {
animation: fade-out 0.5s;
animation-fill-mode: forwards;
}
.gh-publishmenu-heading {
margin: 0 0 15px 0;
padding: 20px 20px 0;
font-size: 1.7rem;
font-weight: 400;
line-height: 1.25em;
}
.gh-publishmenu-select {
display: inline-block;
}
.gh-publishmenu-select .ember-power-select-inline {
padding-right: 3px;
color: var(--black);
font-size: 1.7rem;
font-weight: 500;
line-height: 1.25em;
}
.gh-publishmenu-select .ember-power-select-inline svg {
width: 9px !important;
height: 5.6px !important;
margin: 0 !important;
}
.gh-publishmenu-select .ember-power-select-inline svg path {
stroke: var(--black) !important;
stroke-width: 4;
}
.gh-publishmenu-select-dropdown {
width: unset !important;
min-width: min-content !important;
margin-top: 4px;
border-top: 1px solid var(--input-border-color) !important;
font-size: 1.4rem;
white-space: nowrap;
border-radius: 3px !important;
}
.gh-publishmenu-content:not(.gh-publishmenu-content.no-border) {
border-bottom: var(--whitegrey) 1px solid;
}
.gh-publishmenu-footer {
margin: 15px 0 0 0;
padding: 0 20px 20px;
display: flex;
align-items: center;
justify-content: flex-end;
}
.gh-publishmenu-button {
float: right;
margin-left: 8px;
}
.gh-publishmenu-radio {
display: flex;
margin: 20px 0;
}
.gh-publishmenu-section {
padding: 0 20px;
border-top: var(--whitegrey) 1px solid;
}
.gh-publishmenu-section.no-border {
border-top: 0;
}
.gh-publishmenu-radio-button {
flex-shrink: 0;
position: relative;
width: 15px;
height: 15px;
border: color-mod(var(--whitegrey) l(-10%)) 1px solid;
border-radius: 100%;
background: #fff;
}
.gh-publishmenu-radio-content {
display: flex;
flex-direction: column;
margin: 0 0 0 15px;
width: 100%;
}
.gh-publishmenu-radio-label {
display: block;
font-size: 1.4rem;
line-height: 1.2em;
font-weight: 500;
}
.gh-publishmenu-radio-desc {
font-size: 1.3rem;
line-height: 1.4em;
font-weight: 300;
color: var(--midgrey-l1);
margin-top: 2px;
}
.gh-publishmenu-radio-label:hover,
.gh-publishmenu-radio-button:hover {
cursor: pointer;
}
.gh-publishmenu-radio.active .gh-publishmenu-radio-button {
border-color: var(--black);
background: var(--black);
}
.gh-publishmenu-radio.active .gh-publishmenu-radio-button:before {
display: block;
content: "";
position: absolute;
top: 3px;
left: 3px;
width: 7px;
height: 7px;
background: var(--white);
border-radius: 100%;
box-shadow: rgba(0,0,0,0.25) 0 1px 3px;
}
.gh-date-time-picker {
display: flex;
align-items: center;
justify-content: space-between;
}
.gh-date-time-picker .ember-basic-dropdown{
width: 100%;
}
.gh-date-time-picker-date,
.gh-date-time-picker-time {
display: flex;
align-items: center;
position: relative;
height: 32px;
margin: 7px 0 4px;
padding: 6px 8px;
border: var(--input-border);
border-radius: 3px;
transition: border-color 0.15s linear;
background: var(--input-bg-color);
}
.gh-date-time-picker-time {
margin-left: 10px;
width: calc(100% - 4px);
}
.gh-date-time-picker-date.error,
.gh-date-time-picker-time.error {
border-color: var(--red);
}
.gh-date-time-picker input {
display: block;
padding: 0;
width: 100%;
border: none;
color: color-mod(var(--midgrey) l(-18%));
font-size: 1.3rem;
line-height: 1em;
font-weight: 400;
user-select: text;
background: transparent;
-webkit-appearance: none;
}
.gh-date-time-picker input:focus {
outline: 0;
}
.gh-date-time-picker-date:focus,
.gh-date-time-picker-time:focus {
border-color: color-mod(var(--whitegrey) l(-15%) s(-10%));
}
.gh-date-time-picker-date svg {
width: 14px;
height: 14px;
}
.gh-date-time-picker-date svg path,
.gh-date-time-picker-date svg rect {
fill: none;
stroke: var(--midgrey);
stroke-linecap: round;
stroke-linejoin: round;
stroke-width: 2px
}
.gh-date-time-picker-timezone {
font-size: 1.1rem;
font-weight: 300;
color: color-mod(var(--midgrey) l(+17%));
margin-left: -30px;
}
.gh-date-time-picker-error {
display: block;
font-size: 1.3rem;
line-height: 1.4em;
font-weight: 300;
color: var(--red);
}
.gh-publishmenu-email {
margin: 15px 0;
justify-content: space-between;
align-items: center;
}
.gh-publishmenu-email .gh-box {
padding: 12px 16px;
font-size: 1.3rem;
line-height: 1.5em;
}
.gh-publishmenu-email .select-members {
margin-bottom: .2rem;
}
.gh-publishmenu-email .segment-totals {
color: var(--midgrey-l1);
font-size: 1.3rem;
font-weight: 300;
}
.for-checkbox .gh-publishmenu-email-checkbox {
margin-right: 0;
margin-top: -2px;
background: var(--white);
}
.gh-publishmenu-email-label.disabled {
pointer-events: none;
}
.gh-publishmenu-content .for-switch.pe-none {
opacity: 0.6;
}
.gh-publishmenu-email-info {
margin: 15px 0;
color: var(--midgrey);
}
.gh-publishmenu-send-to-option {
display: flex;
align-items: center;
justify-content: space-between;
margin-bottom: 8px;
}
.gh-publishmenu-send-to-option p {
margin: 0;
color: var(--darkgrey);
font-size: 1.45rem;
font-weight: 400;
}
.gh-publishmenu-send-to-option .for-switch {
line-height: 1;
}
.gh-publishmenu-send-to-option .for-switch label {
margin: 0;
width: 38px !important;
height: 22px !important;
}
.gh-publishmenu-emailcount {
color: var(--midlightgrey);
}
.gh-publishmenu-checkbox-disabled {
color: var(--midlightgrey);
opacity: 0.6;
pointer-events: none;
}
.gh-publishmenu-checkbox-disabled p {
color: var(--midgrey) !important;
}
.gh-publishmenu-newsletter-trigger {
padding: 7px 10px;
}
.gh-publishmenu-newsletter-trigger.disabled span {
opacity: .5;
}
.gh-publishmenu-newsletter-trigger svg {
position: absolute;
top: 50%;
right: 10px;
}
.gh-publishmenu-newsletter-dropdown {
z-index: 99999;
}
.gh-publishmenu-newsletter-dropdown .ember-power-select-option[aria-selected="true"] {
color: var(--black);
font-weight: 600;
}
/* Publish Page (Labs)
/* ---------------------------------------------------------- */
.gh-publish-header {
position: absolute;
top: 0;
left: 4.2rem;
width: calc(100% - 4.2rem * 2);
display: flex;
align-items: center;
justify-content: space-between;
height: 36px;
padding: 0;
margin: 30px 0;
z-index: 799;
}
@media (max-width: 1024px) {
.gh-publish-header {
z-index: 100;
height: 64px;
margin: 0;
padding: 0;
padding-left: 15px;
background-color: var(--white);
border-radius: 0;
}
}
@media (max-width: 500px) {
.gh-publish-header .mobile {
margin-left: 5px;
}
}
.gh-publish-back-button {
height: 33px;
padding: 5px 12px 6px;
outline: none;
border: none;
background: var(--white);
color: var(--darkgrey);
font-size: 1.35rem;
font-weight: 500;
letter-spacing: 0.2px;
white-space: nowrap;
cursor: pointer;
border-radius: var(--border-radius);
}
.gh-publish-back-button:hover {
background: var(--whitegrey);
}
.gh-publish-back-button span {
display: flex;
justify-content: center;
align-items: center;
}
.gh-publish-back-button svg {
width: .8em;
height: .8em;
margin-right: .5em;
padding-top: 2px;
fill: var(--darkgrey);
}
.gh-publish-settings-container {
display: flex;
flex-direction: column;
height: 100%;
width: 640px;
margin: 0 auto 8rem;
padding-top: 11vw;
margin-bottom: 11vw;
}
.gh-publish-title {
margin: 2px 0 4rem;
color: var(--black);
font-size: 4.6rem;
font-weight: 700;
letter-spacing: -.017em;
line-height: 1.2em;
}
.gh-publish-settings {
margin: 1rem 0 5.2rem;
width: 100%;
}
.gh-publish-setting {
display: flex;
flex-direction: column;
width: 100%;
margin-bottom: 1.6rem;
border-bottom: 1px solid var(--whitegrey-d1);
}
.gh-publish-setting.last {
border-bottom: 0;
}
.gh-publish-setting-title {
position: relative;
display: flex;
align-items: center;
padding-bottom: 1.6rem;
}
.gh-publish-setting-title.disabled {
opacity: .3;
cursor: default;
}
.gh-publish-setting-title svg {
width: 1.65rem;
height: 1.65rem;
margin-right: 1.4rem;
}
.gh-publish-setting-title svg path {
stroke: var(--black);
stroke-width: 2px;
}
.gh-publish-setting-title .icon-expand {
position: absolute;
right: 0;
width: 1rem;
height: auto;
margin: 0;
fill: var(--midlightgrey);
transition: all 0.2s ease-in-out;
}
.gh-publish-setting-title .icon-expand path {
stroke: var(--midlightgrey);
}
.expanded .icon-expand {
transform: scaleY(-1);
transition: all 0.2s ease-in-out;
}
.gh-publish-setting-trigger {
width: max-content;
color: var(--black);
font-size: 1.8rem;
font-weight: 400;
line-height: 1.35em;
}
.gh-publish-setting-trigger .gh-selected-newsletter {
font-weight: 600;
}
.gh-publish-setting input[type="radio"]:disabled + label {
color: var(--midlightgrey);
}
.gh-publish-setting-form {
margin: 1.6rem 0 4rem;
background-color: var(--white);
}
.gh-publish-setting-form.last {
margin-bottom: 0;
}
.gh-publish-setting-form.last fieldset {
display: flex;
margin-bottom: 0;
}
.gh-publish-newsletter-trigger {
padding: 8px 16px;
font-size: 1.45rem;
}
.gh-publish-newsletter-trigger svg {
position: absolute;
top: 50%;
right: 16px;
}
.gh-publish-newsletter-dropdown {
z-index: 99999;
padding: 4px 0;
}
.gh-publish-newsletter-dropdown .ember-power-select-option {
padding: 8px 16px;
}
.gh-publish-newsletter-dropdown .ember-power-select-option[aria-selected="true"] {
color: var(--black);
font-weight: 600;
}
.gh-publish-types,
.gh-publish-schedule {
display: flex;
flex-shrink: 0;
margin: 0;
}
.gh-publish-types .gh-radio-button,
.gh-publish-schedule .gh-radio-button {
display: none;
}
.gh-publish-types label,
.gh-publish-schedule label {
display: block;
height: 40px;
margin-right: 1.2rem;
padding: 0 20px;
border: 1px solid var(--lightgrey-l1);
color: var(--middarkgrey);
font-size: 1.4rem;
font-weight: 500;
line-height: 38px;
letter-spacing: .4px;
cursor: pointer;
background: none;
border-radius: 21px;
}
.gh-publish-types .gh-radio-button:checked + label,
.gh-publish-schedule .gh-radio.active label {
padding: 0 19px;
border: 2px solid var(--black);
color: var(--black);
line-height: 36px;
background: var(--whitegrey-l2);
}
.gh-publish-types label:hover,
.gh-publish-schedule label:hover {
color: var(--middarkgrey-d1);
}
.gh-publish-types + .gh-box {
margin-top: 12px;
}
.gh-publish-schedule .gh-radio {
margin: 0;
}
.gh-publish-setting-form .gh-date-time-picker {
display: grid;
grid-template-columns: 1fr 1fr;
grid-gap: 12px;
}
.gh-publish-setting-form .gh-date-time-picker-date {
height: 40px;
margin: 0;
padding: 8px 12px;
font-size: 1.4rem;
}
.gh-publish-setting-form .gh-date-time-picker-time {
width: unset;
height: 40px;
margin: 0;
padding: 8px 12px;
font-size: 1.4rem;
}
.gh-publish-setting-form .gh-date-time-picker-timezone {
margin: 0;
color: var(--midgrey);
font-weight: 500;
}
.publish-flow-datepicker {
width: 100%;
max-width: 310px;
padding: 16px;
box-shadow: var(--box-shadow-m);
}
.publish-flow-datepicker .ember-power-calendar-nav {
align-items: center;
height: 40px;
padding: 0 12px 12px;
}
.publish-flow-datepicker .ember-power-calendar-nav-control {
bottom: unset;
}
.publish-flow-datepicker .ember-power-calendar-day {
height: 28px;
}
.publish-flow-datepicker .ember-power-calendar-day--selected {
color: var(--white);
background: var(--black);
}
.publish-flow-datepicker .ember-power-calendar-day--selected:hover {
color: var(--white);
background: color-mod(var(--black) l(-20%));
}
.gh-publish-cta {
display: flex;
flex-direction: column;
width: max-content;
}
.gh-update-flow .gh-publish-cta {
flex-direction: row;
}
.gh-publish-cta .gh-btn {
width: max-content;
}
.gh-publish-cta .gh-btn-pulse {
fill: #fff;
background: linear-gradient(90deg,#4dd831,#1DC32E);
color: #fff;
font-weight: 500;
box-shadow: 0 0 0 0 rgba(48, 207, 67, 1);
animation: pulse-green 2s infinite;
}
@keyframes pulse-green {
0% {
transform: scale(0.98);
box-shadow: 0 0 0 0 rgba(48, 207, 67, 0.7);
}
70% {
transform: scale(1);
box-shadow: 0 0 0 8px rgba(48, 207, 67, 0);
}
100% {
transform: scale(0.98);
box-shadow: 0 0 0 0 rgba(48, 207, 67, 0);
}
}
.gh-publish-cta-secondary {
display: block;
overflow: hidden;
margin-top: 1rem;
height: 40px;
color: var(--midgrey);
font-size: 1.35rem;
font-weight: 400;
line-height: 40px;
letter-spacing: .4px;
text-align: left;
white-space: nowrap;
text-overflow: ellipsis;
}
.gh-publish-cta-secondary .gh-btn-link {
display: inline;
padding: 0;
color: var(--darkgrey);
font-size: 1.45rem;
text-align: left;
}
.gh-publish-confirmation {
margin-bottom: 7rem;
color: var(--black);
font-size: 1.8rem;
font-weight: 400;
line-height: 1.35em;
}
.gh-revert-to-draft {
color: var(--green-d1);
font-weight: 500;
}
.gh-post-bookmark {
display: flex;
align-items: center;
width: 100%;
max-width: 640px;
margin-top: 1.6rem;
background: var(--white);
box-shadow: 0 0 0 1px rgba(0,0,0,.03), 0px 2px 5px rgba(0, 0, 0, 0.07);
border-radius: var(--border-radius);
transition: all 0.3s ease-in-out;
}
.gh-post-bookmark:hover {
box-shadow:
0px 54px 80px rgba(0, 0, 0, 0.07),
0px 19.7109px 29.2013px rgba(0, 0, 0, 0.0482987),
0px 9.56927px 14.1767px rgba(0, 0, 0, 0.0389404),
0px 4.69103px 6.94968px rgba(0, 0, 0, 0.0310596),
0px 1.85484px 2.74791px rgba(0, 0, 0, 0.0217013),
0 0 0 1px rgba(0,0,0,.03);
transition: all 0.3s ease-in-out;
transform: translateY(-4px);
}
.gh-post-bookmark-image {
max-width: 33%;
max-height: 152px;
display: inherit;
}
.gh-post-bookmark-image img {
width: 100%;
object-fit: cover;
border-radius: var(--border-radius) 0 0 var(--border-radius);
}
.gh-post-bookmark-content {
max-width: 67%;
padding: 2rem;
}
.gh-post-bookmark-title {
margin-bottom: .4rem;
color: var(--darkgrey);
font-size: 1.5rem;
font-weight: 600;
line-height: 1.4em;
}
.gh-post-bookmark-text {
margin-bottom: 1.6rem;
color: var(--midgrey);
font-size: 1.4rem;
font-weight: 400;
}
.gh-post-bookmark-details {
display: flex;
color: var(--midgrey);
font-size: 1.4rem;
font-weight: 500;
overflow: hidden;
text-overflow: ellipsis;
}