elementor / elementor/elementor

Loop Carousel navigation arrows stay fully active on single dynamic slide due to missing script initialization + Missing GUI state for disabled arrows

Open
#36,706 0 comments 0 reactions 0 assignees View on GitHub
status/awaiting_triage
Dominant language
PHP
Stars
7.1k
Forks
1.6k
Avg merge
1d 5h
Merged PRs (30d)
193

Description

### Description

- [x] I have searched for existing issues.
- [x] I am using the latest version of Elementor / Elementor Pro.

There is a structural issue with the **Loop Carousel** widget when dealing with dynamic content (e.g., query results displaying taxonomy terms or authors).

By default, Elementor fades out disabled arrows using a lower opacity. However, when a dynamic query returns **exactly 1 item (single slide)**, the widget faces two major flaws:

1. **The Bug:** Swiper.js completely fails to initialize on a single slide. Because `.swiper-initialized` is missing, the `.swiper-button-disabled` class is never appended to the navigation arrows. As a result, the arrows stay **fully active (100% opacity)** and clickable over a completely static, single slide.
2. **Missing GUI Feature:** There is currently no option in the Elementor Style panel (GUI) to customize the "Disabled" state of the carousel arrows (e.g., changing their opacity or setting them to `display: none` to mimic the pagination bullets behavior, which correctly disappear on single slides).

### Steps to reproduce

1. Create a Loop Carousel widget populated by a dynamic query.
2. View a page where the query returns exactly 1 item.
3. Observe that the navigation arrows are rendered with full opacity and remain active, even though there is nowhere to scroll, because the layout fails to apply the disabled state class.

### Expected behavior

- **Bug Fix:** The widget should properly initialize or fall back to a safe state when `total_slides <= slides_to_show`, ensuring that the `.swiper-button-disabled` class is applied to prevent fully opaque arrows on a single static item.
- **Feature Enhancement:** Add a "Disabled" state tab under **Style > Navigation > Arrows** in the Elementor panel, allowing users to customize the visual appearance (or total hidden state) of inactive controls.

### Elementor System Info

```txt
== Server Environment ==
Operating System: Linux
Software: Apache
MySQL version: MySQL Community Server - GPL v8.0.46
PHP Version: 8.3.32
PHP Memory Limit: 1024M
PHP Max Input Vars: 12000
PHP Max Post Size: 150M
GD Installed: Yes
ZIP Installed: Yes
Write Permissions: All right
Elementor Library: Connected

== WordPress Environment ==
Version: 6.9.4
Site URL: https://www.staging.musicandbooks.edizionicurci.it
Home URL: https://www.staging.musicandbooks.edizionicurci.it
WP Multisite: No
Max Upload Size: 150 MB
Memory limit: 1024M
Max Memory limit: 1024M
Permalink Structure: /%postname%/
Language: it_IT
Timezone: Europe/Rome
Admin Email: support@edizionicurcilab.it
Debug Mode: Inactive

== Theme ==
Name: Hello Elementor Child
Version: 2.0.0
Author: Elementor Team
Child Theme: Yes
Parent Theme Name: Hello Elementor
Parent Theme Version: 3.4.9
Parent Theme Author: Elementor Team

== User ==
Role: administrator
WP Profile lang: it-IT
User Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/150.0.0.0 Safari/537.36

== Active Plugins ==
Elementor
Version: 4.2.1
Author: Elementor.com

Elementor Pro
Version: 4.2.1
Author: Elementor.com

FiboSearch - AJAX Search for WooCommerce (Pro)
Version: 1.33.0
Author: FiboSearch Team

JetEngine
Version: 3.8.11.2
Author: Crocoblock

JetPopup
Version: 2.2.1
Author: Crocoblock

MP3 Audio Player by Sonaar
Version: 5.12.0.1
Author: Sonaar Music

MP3 Audio Player by Sonaar - Pro Addon
Version: 5.12
Author: Sonaar Music

WooCommerce
Version: 10.9.4
Author: Automattic

WPCode Lite
Version: 2.3.7
Author: WPCode

WP Store Locator
Version: 2.3.21
Author: Tijmen Smit

Yoast Duplicate Post
Version: 4.7
Author: Enrico Battocchi & Team Yoast

== Must-Use Plugins ==
Health Check Troubleshooting Mode
Version: 1.9.2
Author:

remove-ld-reporting.php
Version:
Author:

WordPress automation by Installatron
Version:
Author:

== Caratteristiche ==
Custom Fonts: 2
Custom Icons: 0

== Integrazioni ==

woocommerce: Attiva

== Esperimenti Elementor ==
Icone dei font in linea: Attiva
Punti di interruzione aggiuntivi: Attivo per impostazione predefinita
Contenitore: Attiva
Markup ottimizzato: Attiva
Panel Promotions: Attivo per impostazione predefinita
Predefinito per Nuovo generatore di temi: Attivo per impostazione predefinita
Header e Footer: Inattivo per impostazione predefinita
API delle funzionalità di Elementor MCP per WordPress: Inattivo per impostazione predefinita
Landing Page: Attivo per impostazione predefinita
Popup della prova gratuita della versione Pro: Inattivo per impostazione predefinita
Elementi annidati: Attiva
Pannello pagine: Inattivo per impostazione predefinita
Widget atomici: Attiva
V4 Indications Popover: Inattivo per impostazione predefinita
Applica le capacità dei widget atomici: Attivo per impostazione predefinita
Editor MCP per widget atomici: Attivo per impostazione predefinita
Migrazioni con retrocompatibilità: Attivo per impostazione predefinita
Classi globali: Attiva
Applica le capacità delle classi globali: Attivo per impostazione predefinita
Variabili: Attiva
Manager delle variabili: Attivo per impostazione predefinita
Editor v4 (pagina Opt In): Attivo per impostazione predefinita
Editor V4: Attiva
Componenti: Attiva
Interazioni: Attivo per impostazione predefinita
Creazione di widget: Attivo per impostazione predefinita
Genera il markdown del sito web: Inattivo per impostazione predefinita
Dynamic Assets Management: Inattivo per impostazione predefinita
Personalizza la funzione di importazione/esportazione: Attivo per impostazione predefinita
Site Builder: Inattivo per impostazione predefinita
Eventi dell'editor di Elementor: Inattivo per impostazione predefinita
Modulo atomico: Attivo per impostazione predefinita
Ciclico: Attivo per impostazione predefinita
Menu: Attiva
Dimensione delle variabili: Attivo per impostazione predefinita
Interazioni Pro: Attivo per impostazione predefinita
Feedback nell'editor: Inattivo per impostazione predefinita

== Registro ==

JS: showing 14 of 14JS: 2026-06-26 12:42:07 [error X 1][https://www.staging.musicandbooks.edizionicurci.it/wp-content/plugins/elementor/assets/lib/backbone/backbone.marionette.min.js?ver=2.4.5.e1:24:19952] View (cid: "view1577") has already been destroyed and cannot be used.
JS: 2026-06-26 12:46:02 [error X 1][https://www.staging.musicandbooks.edizionicurci.it/wp-content/plugins/elementor/assets/lib/backbone/backbone.marionette.min.js?ver=2.4.5.e1:24:19952] View (cid: "view6056") has already been destroyed and cannot be used.
JS: 2026-06-26 12:46:02 [error X 1][https://www.staging.musicandbooks.edizionicurci.it/wp-content/plugins/elementor/assets/lib/backbone/backbone.marionette.min.js?ver=2.4.5.e1:24:19952] View (cid: "view6114") has already been destroyed and cannot be used.
JS: 2026-06-29 15:53:03 [error X 1][https://www.staging.musicandbooks.edizionicurci.it/wp-content/plugins/elementor/assets/js/packages/editor-documents/editor-documents.min.js?ver=4.1.4:1:3199] Cannot read properties of null (reading 'config')
JS: 2026-06-29 16:21:37 [error X 37][https://www.staging.musicandbooks.edizionicurci.it/wp-content/plugins/elementor/assets/js/frontend-modules.min.js?ver=4.1.4:1:47800] Cannot read properties of undefined (reading 'autoplay')
JS: 2026-07-09 13:39:05 [error X 2][https://www.staging.musicandbooks.edizionicurci.it/wp-content/plugins/elementor/assets/lib/backbone/backbone.marionette.min.js?ver=2.4.5.e1:24:19952] View (cid: "view1546") has already been destroyed and cannot be used.
JS: 2026-07-09 13:39:05 [error X 2][https://www.staging.musicandbooks.edizionicurci.it/wp-content/plugins/elementor/assets/lib/backbone/backbone.marionette.min.js?ver=2.4.5.e1:24:19952] View (cid: "view1604") has already been destroyed and cannot be used.
JS: 2026-07-10 10:26:04 [error X 1][https://www.staging.musicandbooks.edizionicurci.it/wp-content/plugins/elementor/assets/js/editor.min.js?ver=4.1.4:2:1315204] Cannot read properties of undefined (reading 'getBoundingClientRect')
JS: 2026-07-13 09:08:12 [error X 4][https://www.staging.musicandbooks.edizionicurci.it/wp-content/plugins/elementor/assets/lib/backbone/backbone.marionette.min.js?ver=2.4.5.e1:24:19952] View (cid: "view1544") has already been destroyed and cannot be used.
JS: 2026-07-13 09:08:12 [error X 4][https://www.staging.musicandbooks.edizionicurci.it/wp-content/plugins/elementor/assets/lib/backbone/backbone.marionette.min.js?ver=2.4.5.e1:24:19952] View (cid: "view1602") has already been destroyed and cannot be used.
JS: 2026-07-22 09:55:07 [error X 8][https://www.staging.musicandbooks.edizionicurci.it/wp-content/plugins/elementor/assets/js/admin.min.js?ver=4.2.0:2:42363] r.startsWith is not a function
JS: 2026-07-22 10:41:35 [error X 4][https://www.staging.musicandbooks.edizionicurci.it/wp-content/plugins/elementor/assets/js/editor.min.js?ver=4.2.0:2:1228417] Failed to read a named property 'elementorFrontend' from 'Window': Blocked a frame with origin "https://www.staging.musicandbooks.edizionicurci.it" from accessing a cross-origin frame.
JS: 2026-07-22 12:27:22 [error X 2][https://www.staging.musicandbooks.edizionicurci.it/wp-content/plugins/elementor/assets/js/editor.min.js?ver=4.2.0:2:366832] Cannot read properties of undefined (reading 'id')
JS: 2026-07-24 14:57:08 [error X 6][https://www.staging.musicandbooks.edizionicurci.it/wp-content/plugins/elementor/assets/js/b3be4391f77526f4db6c.bundle.min.js:1:27694] Cannot read properties of null (reading 'dataset')

PHP: showing 4 of 4PHP: 2026-06-26 14:45:26 [warning X 31][/home/musicandbooksedi/staging.musicandbooks.edizionicurci.it/public_html/wp-content/plugins/elementor/modules/interactions/interactions-frontend-handler.php::61] foreach() argument must be of type array|object, null given [array (
'trace' => '
#0: Elementor\Core\Logger\Manager -> shutdown()
',
)]
PHP: 2026-07-14 19:39:46 [warning X 5][/home/musicandbooksedi/staging.musicandbooks.edizionicurci.it/public_html/wp-content/plugins/elementor-pro/modules/query-control/module.php::808] Attempt to read property "name" on null [array (
'trace' => '
#0: Elementor\Core\Logger\Manager -> shutdown()
',
)]
PHP: 2026-07-22 10:41:56 [warning X 9][/home/musicandbooksedi/staging.musicandbooks.edizionicurci.it/public_html/wp-content/plugins/elementor/modules/history/revisions-manager.php::363] Undefined array key "editor_post_id" [array (
'trace' => '
#0: Elementor\Core\Logger\Manager -> shutdown()
',
)]
PHP: 2026-07-22 12:37:39 [warning X 24][/home/musicandbooksedi/staging.musicandbooks.edizionicurci.it/public_html/wp-content/plugins/elementor-pro/core/app/modules/site-editor/data/endpoints/templates.php::150] Undefined array key "condition_type" [array (
'trace' => '
#0: /home/musicandbooksedi/staging.musicandbooks.edizionicurci.it/public_html/wp-content/plugins/elementor-pro/core/app/modules/site-editor/data/endpoints/templates.php(150): Elementor\Core\Logger\Manager -> rest_error_handler()
#1: ElementorPro\Core\App\Modules\SiteEditor\Data\Endpoints\Templates -> normalize_template_json_item()
#2: /home/musicandbooksedi/staging.musicandbooks.edizionicurci.it/public_html/wp-content/plugins/elementor-pro/core/app/modules/site-editor/data/endpoints/templates.php(120): class type array_map()
#3: /home/musicandbooksedi/staging.musicandbooks.edizionicurci.it/public_html/wp-content/plugins/elementor-pro/core/app/modules/site-editor/data/endpoints/templates.php(59): ElementorPro\Core\App\Modules\SiteEditor\Data\Endpoints\Templates -> normalize_templates_json()
#4: /home/musicandbooksedi/staging.musicandbooks.edizionicurci.it/public_html/wp-content/plugins/elementor/data/base/endpoint.php(156): ElementorPro\Core\App\Modules\SiteEditor\Data\Endpoints\Templates -> get_items()
',
)]

Log: showing 20 of 252026-07-22 10:39:25 [info] Elementor data updater process has been queued. [array (
'plugin' => 'Elementor Pro',
'from' => '4.1.2',
'to' => '4.2.0',
)]
2026-07-22 10:40:00 [info] Elementor data updater process has been queued. [array (
'plugin' => 'Elementor',
'from' => '4.1.4',
'to' => '4.2.0',
)]
2026-07-22 10:40:14 [info] elementor::elementor_updater Started
2026-07-22 10:40:14 [info] Elementor/Upgrades - _on_each_version Start
2026-07-22 10:40:14 [info] Elementor/Upgrades - _on_each_version Finished
2026-07-22 10:40:14 [info] Elementor data updater process has been completed. [array (
'plugin' => 'Elementor',
'from' => '4.1.4',
'to' => '4.2.0',
)]
2026-07-22 10:40:14 [info] elementor-pro::elementor_pro_updater Started
2026-07-22 10:40:14 [info] Elementor Pro/Upgrades - _on_each_version Start
2026-07-22 10:40:14 [info] Elementor Pro/Upgrades - _on_each_version Finished
2026-07-22 10:40:14 [info] Elementor data updater process has been completed. [array (
'plugin' => 'Elementor Pro',
'from' => '4.1.2',
'to' => '4.2.0',
)]
2026-07-29 11:46:38 [info] Elementor data updater process has been queued. [array (
'plugin' => 'Elementor',
'from' => '4.2.0',
'to' => '4.2.1',
)]
2026-07-29 11:46:39 [info] Elementor data updater process has been queued. [array (
'plugin' => 'Elementor Pro',
'from' => '4.2.0',
'to' => '4.2.1',
)]
2026-07-29 11:47:56 [info] elementor::elementor_updater Started
2026-07-29 11:47:56 [info] Elementor/Upgrades - _on_each_version Start
2026-07-29 11:47:56 [info] Elementor/Upgrades - _on_each_version Finished
2026-07-29 11:47:56 [info] Elementor data updater process has been completed. [array (
'plugin' => 'Elementor',
'from' => '4.2.0',
'to' => '4.2.1',
)]
2026-07-29 11:47:56 [info] elementor-pro::elementor_pro_updater Started
2026-07-29 11:47:57 [info] Elementor Pro/Upgrades - _on_each_version Start
2026-07-29 11:47:57 [info] Elementor Pro/Upgrades - _on_each_version Finished
2026-07-29 11:47:57 [info] Elementor data updater process has been completed. [array (
'plugin' => 'Elementor Pro',
'from' => '4.2.0',
'to' => '4.2.1',
)]

== Elementor - Compatibility Tag ==

Elementor Pro: Compatibile

== Elementor Pro - Compatibility Tag ==
```

### Agreement

- [x] I confirm I have read and followed all the guidelines and instructions outlined in the Elementor Bug Report form.
- [x] I agree that my issue may be closed without further action if it doesn't meet all the requirements outlined in the Elementor Bug Report form.

Contributor guide

Open the contributing guide

Research direction

Start with the Loop Carousel widget's frontend initialization and navigation handling, then reproduce a dynamic query returning exactly one item. Inspect how Swiper initialization and the .swiper-button-disabled class are handled, along with Style > Navigation > Arrows controls. Done means single-slide carousels expose an inactive navigation state and the requested Disabled styling option is available.

Written by the indexing model from the issue text.

Assessment

Tech stack
javascript, php
Domain
design, frontend
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.