Cart: Add sneak-peek preview (#3259)

This commit is contained in:
Richard Schreiber
2023-04-26 14:43:23 +02:00
committed by GitHub
parent 6b983d5f55
commit 38e826724f
4 changed files with 59 additions and 1 deletions

View File

@@ -7,6 +7,10 @@ setup_collapsible_details = function (el) {
return true;
}
var $details = $(this).closest("details");
if ($details.hasClass('sneak-peek')) {
// if sneak-peek is active, needs to be handled differently
return true;
}
var isOpen = $details.prop("open");
var $detailsNotSummary = $details.children(':not(summary)');
if ($detailsNotSummary.is(':animated')) {
@@ -27,6 +31,10 @@ setup_collapsible_details = function (el) {
e.preventDefault();
return false;
}).keyup(function (event) {
if ($details.hasClass('sneak-peek')) {
// if sneak-peek is active, needs to be handled differently
return true;
}
if (32 == event.keyCode || (13 == event.keyCode && !isOpera)) {
// Space or Enter is pressed — trigger the `click` event on the `summary` element
// Opera already seems to trigger the `click` event when Enter is pressed

View File

@@ -288,6 +288,30 @@ $(function () {
$("#ajaxerr").on("click", ".ajaxerr-close", ajaxErrDialog.hide);
$('details.sneak-peek:not([open])').each(function() {
this.open = true;
var $elements = $("> :not(summary)", this).show().filter(':not(.sneak-peek-trigger)').attr('aria-hidden', 'true');
var container = this;
var trigger = $('summary, .sneak-peek-trigger button', container);
function onclick(e) {
e.preventDefault();
container.addEventListener('transitionend', function() {
$(container).removeClass('sneak-peek');
container.style.removeProperty('height');
}, {once: true});
container.style.height = container.scrollHeight + 'px';
$('.sneak-peek-trigger', container).fadeOut(function() {
$(this).remove();
});
$elements.removeAttr('aria-hidden');
trigger.off('click', onclick);
}
trigger.on('click', onclick);
});
// Copy answers
$(".js-copy-answers").click(function (e) {
e.preventDefault();

View File

@@ -398,6 +398,27 @@ details.details-open .panel-heading .collapse-indicator,
transform: rotate(180deg);
}
details.sneak-peek {
position: relative;
height: 11em;
overflow: hidden;
transition: height .5s;
}
.sneak-peek-trigger {
display: grid;
justify-content: center;
align-content: center;
width: 100%;
height: 4.5em;
margin: 0;
padding: 15px;
background: linear-gradient(0deg, rgba(248,248,248,.9) 44%, rgba(248,248,248,0) 100%);
position: absolute;
bottom: 0;
left: 0;
z-index: 10;
}
form.download-btn-form {
display: inline;
}