// Provide special styling for the placeholder.
// @todo this particular minimal style of placeholder could be componentized further.
.wp-block-acf-field-blocks-acf-image {
.block-editor-media-placeholder {
z-index: 1; // Need to put it above the overlay so the upload button works.
backdrop-filter: none; // Removes background blur so the overlay's actual color is visible.
}
// Style the placeholder.
.wp-block-acf-field-blocks-acf-image__placeholder,
.components-placeholder {
justify-content: center;
align-items: center;
padding: 0;
display: flex;
// Hide the upload button, as it's also available in the media library.
.components-form-file-upload {
display: none;
}
// Show default placeholder height when not resized.
min-height: 200px;
}
// The following override the default placeholder styles that remove
// its border so that a user selection for border color or width displays
// a visual border. They also override the `img { border: none; }` applied
// by core.
.wp-block-acf-field-blocks-acf-image__placeholder,
.components-placeholder,
img {
box-sizing: border-box;
// The following is required to overcome WP Core applying styles that clear
// img borders with a higher specificity than those added by the border
// block support to provide a default border-style of solid when a border
// color or width has been set.
&:where(.has-border-color) {
border-style: solid;
}
&:where([style*="border-top-color"]) {
border-top-style: solid;
}
&:where([style*="border-right-color"]) {
border-right-style: solid;
}
&:where([style*="border-bottom-color"]) {
border-bottom-style: solid;
}
&:where([style*="border-left-color"]) {
border-left-style: solid;
}
&:where([style*="border-width"]) {
border-style: solid;
}
&:where([style*="border-top-width"]) {
border-top-style: solid;
}
&:where([style*="border-right-width"]) {
border-right-style: solid;
}
&:where([style*="border-bottom-width"]) {
border-bottom-style: solid;
}
&:where([style*="border-left-width"]) {
border-left-style: solid;
}
}
.acf-field-blocks-image__overlay {
box-sizing: border-box;
&.has-background-dim {
position: absolute;
inset: 0;
background-color: #000;
width: 100%;
height: 100%;
@at-root .wp-block-acf-field-blocks-acf-image {
position: relative;
}
}
&.has-background-gradient {
background-color: transparent;
}
@for $i from 0 through 10 {
&.has-background-dim-#{ $i * 10 } {
opacity: $i * 0.1;
}
}
}
// Provide a minimum size for the placeholder when resized.
// Note, this should be as small as we can afford it, and exists only
// to ensure there's room for the upload button.
&[style*="height"] .components-placeholder {
min-height: 48px;
min-width: 48px;
height: 100%;
width: 100%;
}
// When the Post Featured Image block is linked,
// it's wrapped with a disabled tag.
// Restore cursor style so it doesn't appear 'clickable'.
> a {
cursor: default;
}
// When the Post Featured Image block is linked,
// and wrapped with a disabled tag
// ensure that the placeholder items are visible when selected.
&.is-selected .components-placeholder.has-illustration {
.components-button,
.components-placeholder__instructions,
.components-placeholder__label {
opacity: 1;
pointer-events: auto;
}
}
// When image being uploaded.
&.is-transient {
position: relative;
img {
opacity: 0.3;
}
// Show spinner while image is being uploaded.
.components-spinner {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
}
}
[data-type="acf-field-blocks/acf-image"] {
img {
max-width: 100%;
width: 100%;
height: auto;
display: block;
}
}
.acf-field-blocks-default-image {
&__wrapper {
display: block;
background: #f0f0f0;
margin-bottom: 8px;
img {
display: block;
margin: 0 auto;
max-width: 100%;
height: auto;
}
}
.components-dropdown {
display: block;
width: 100%;
.components-button {
display: block;
width: 100%;
background: #0000;
box-shadow: inset 0 0 0 1px var(--wp-components-color-accent,var(--wp-admin-theme-color,#3858e9));
color: var(--wp-components-color-accent,var(--wp-admin-theme-color,#3858e9));
outline: 1px solid #0000;
white-space: nowrap;
&:hover {
box-shadow: inset 0 0 0 1px var(--wp-components-color-accent-darker-10,var(--wp-admin-theme-color-darker-10,#2145e6));
}
&:active {
box-shadow: none;
}
&:focus {
box-shadow: 0 0 0 var(--wp-admin-border-width-focus) var(--wp-components-color-accent,var(--wp-admin-theme-color,#3858e9));
outline: 3px solid #0000;
}
}
}
}