"Sticky" Filterauswahlliste in Shopware 6.5 Erweiterung

Meine Erweiterung funktionierte gut in Showpare 6.4. Nach dem Update auf Shopware 6.5 verschwindet die Filterauswahlliste (Screenshot) nicht mehr, wenn man aus dem Bereich oder einer anderen Liste herausklickt, wenn ein Checkbox ausgewählt ist.

Kennt jemand das Problem?

Hier der Subscriber Code, und er funktioniert in Shopware 6.4.20:

<?php 
class Subscriber implements EventSubscriberInterface
{
    private EntityRepository $optionRepository;

    public function __construct(EntityRepository $optionRepository)
    {
        $this->optionRepository = $optionRepository;
    }

    public static function getSubscribedEvents(): array
    {
        return [
            ProductListingCriteriaEvent::class => [
                ['onListingCriteria', -200],
            ],
        ];
    }

    public function onListingCriteria(ProductListingCriteriaEvent $event): void
    {
        $event->getCriteria()->addAssociation('properties');
        $event->getCriteria()->addAssociation('properties.group');
        $criteria = $event->getCriteria();
        $filters = $criteria->getExtension('filters');

        //Getting current selected Property Option A to filter out Property Options B
        //..
        $currentPropertyOptions = $propertyFilter->getValues();
        $event->getContext()->addExtension('currentPropertyOptionsCriteria', new ArrayEntity($currentPropertyOptions));

        //getting custom Property Options Tags from administration extension
        $criteria1 = new Criteria();
        $criteria1->addAssociation('myTags');
        $criteria1->setIds($currentPropertyOptions);
        //..
        $tagnames = $tags->map(fn (TagEntity $tag) => $tag->getName());

        $frefixes = ['40f24f88c4c34196ad21ec5dcd094e6a', '813e95deed7047c8bd868e735083be23', '374a5876104a49e88e6aa5a29d85c86b', 'a07ec367574a4c3d81b7fb6ceae66ffe'];

        if (in_array('3f777000a2734deead391133cee3a6a9', $currentPropertyOptions)) {

            $multiFilter = new MultiFilter(MultiFilter::CONNECTION_OR);

            foreach ($tagnames as $tagname) { $multiFilter->addQuery(new PrefixFilter('product.properties.name', $tagname));}

            foreach ($frefixes as $frefix) {
                $multiFilter->addQuery(new EqualsFilter('product.properties.group.id', $frefix));
            }

            $criteria->addFilter($multiFilter);
        }

        if (in_array('87c5e979e6194a8cb3d2625c7b311eeb', $currentPropertyOptions)) {

            $multiFilter = new MultiFilter(MultiFilter::CONNECTION_OR);

            foreach ($tagnames as $tagname) { $multiFilter->addQuery(new PrefixFilter('product.properties.name', $tagname));}

            foreach ($frefixes as $frefix) {
                $multiFilter->addQuery(new EqualsFilter('product.properties.group.id', $frefix));
            }

            $criteria->addFilter($multiFilter);
        }
        //..
    }
}

Weiß jemand, wo man nach den Shopware 5.6 Änderungen suchen kann? Vielleicht filter-panel.html.twig oder filter-property-select.html.twig wurden aktualisiert?

Aber wenn ich das Checkbox in Multiselect-Dropdown deaktivieren, Dropdown verschwindet wie erwartet (auf Klick dahinter)

Die Klasse ändert sich hier nicht in „hide“:

filter-multi-select-dropdown filter-panel-item-dropdown dropdown-menu show

Gibt es hier einige Shopware-Experten? :nerd_face:

‚show‘ sollte diese Klasse verlassen, wenn wir irgendwo anders als auf das Dropdown klicken, aber es funktioniert nicht (!wenn mindestens eine Option markiert ist):

<div class="filter-multi-select-dropdown filter-panel-item-dropdown dropdown-menu show" id="filter-properties-1210341102" style="position: absolute; inset: 0px auto auto 0px; margin: 0px; transform: translate3d(0px, 48px, 0px);" data-popper-placement="bottom-start">

Kann mir jemand einen Tipp geben, wie ich das Problem lösen kann?

Ich konnte es mit folgendem Code zum Laufen bringen (dazu habe ich ‚jQuery Support for Shopware >= 6.5‘ installiert):

$("div.dropdown").on("click", function(event)
{
    event.stopPropagation();
});

$(document).on("click", function(event)
{
    $("div.dropdown-menu.show").hide();
});

Aber das Dropdown-Menü funktioniert nicht, wenn Sie auf die Schaltfläche „Alle zurücksetzen“ klicken.

Gibt es hier einen Shopware JS-Experten? Ich versuche schon seit einigen Tagen, dieses Shopware 6.5 Update-Problem zu lösen :frowning:

Sticky (angekreuzt) dropdown löst sich auf (wie es sollte auf den Hintergrund klicken), wenn die Seite manuell neu laden wird. Kann jemand einen Tipp geben, um dies in Shopware 6.5 zu beheben? Es gibt keine Fehler in der Konsole/im Log.

Dieser Code funktioniert bei anderen Elementen, aber nicht bei den Dropdown-Eigenschaften:

var dropdownElement = document.getElementsByClassName(
    "filter-multi-select-dropdown filter-panel-item-dropdown dropdown-menu show"
);
 
document.addEventListener("click", (event) => {
    const firstMatchingElement = dropdownElement[0];
    if (event.target == firstMatchingElement) {
        firstMatchingElement.classList.remove("show");
        console.log("Clicked Outside");
    }
});

Kann es von Shopware 6 Core im Frontend übersetzt werden?