Appearance
Changelog
All notable changes to NXPopup will be documented here.
1.1.0 - 2026-07-26
Added
- Open triggers. A popup can now open after a delay (as before), once the visitor reaches a scroll depth you choose, or on exit intent as the pointer leaves the top of the window. Exit intent falls back to your configured delay on touch devices, which have no pointer to leave with.
- Page-view gate. Skip the popup until a visitor has viewed a set number of pages, so first-time arrivals are not interrupted. It combines with any trigger — the gate decides which page view may open the popup, the trigger decides when.
- Audience targeting. Show a popup to everyone, guests only, or logged-in users only — the last was previously impossible. The check runs on the server, so visitors outside the audience never receive the popup markup.
- Per-path dismissal control. Choose independently whether the close button, Escape key, backdrop click, or CTA click records a dismissal. Backdrop click no longer counts by default, so an accidental click outside can no longer hide your campaign for the full dismissal period.
- Storage driver selection. Keep the dismissal flag and page-view count in local storage (persists across visits) or session storage (cleared with the tab). Still no cookies either way.
- A separate Dismissal tab in the module settings; dismissal options moved there from Display Behaviour.
Security
- Popup body content is now filtered on save through your site's per-group Text Filters, the same mechanism Joomla's own Custom HTML module uses. Content saved before this release is refiltered the next time you save the module.
- The popup title is reduced to plain text plus bare
<span>highlight tags when rendered. The highlight feature is unaffected; everything else is stripped.
Fixed
- A closed popup no longer occupies the page. Previously it stayed rendered but transparent, adding empty scrollable space to the bottom of the page after being closed.
- Keyboard users now get a visible focus ring from their first Tab press. Focus on open moves to the popup frame rather than to a button, so no control is pre-armed and none has its focus indicator suppressed.
- A popup with no title now has a proper accessible name, and ARIA attributes are only emitted when the elements they reference actually exist.
- With two popups open, closing one no longer unlocks page scrolling while the other is still showing.
- The bordered popup no longer overflows short mobile viewports.
- A dismissal made in another tab is now respected. A tab still waiting on its trigger would previously open the popup even though the visitor had already dismissed it elsewhere. A popup already open is left alone rather than closing under the reader.
- Accent colour defaults are now consistent across the module.
Changed
- Assets are emitted per module instance and de-duplicated by the browser, so popup output is correct with Joomla module caching enabled, in any combination of instances and pages.
- The CTA button default text is now
Learn More. This affects newly created modules only. LICENSE.txtis now included in the installation package.
Upgrade notes
Existing modules migrate automatically
The old Show to Logged-in Users switch becomes the new Audience setting: Yes maps to Everyone, No maps to Guests only. No action is required.
Audience targeting and caching
Joomla caches module output per module, not per visitor. If you use an audience other than Everyone, leave the module's Caching option at No caching — the default.
1.0.1 - 2026-06-23
Added
- Optional white framed border around the popup, with the close button on the frame.
- Following the call-to-action now counts as a dismissal, so the popup does not reappear on the next page.
Changed
- Desktop card resized to 600×600 to match the bundled background image; corner radius reduced to 16px.
- Close button simplified to an icon, with its colour adapting to the frame.
- Larger title (~47px desktop, ~40px mobile) and a 14px CTA label.
- The popup no longer clips on short viewports — the card shrinks to fit and its content scrolls.
- Minimum PHP lowered to 8.1, so the module runs on Joomla 5 as well as Joomla 6.
Security
- The CTA URL check now strips control characters before validating the scheme, closing an obfuscation path.
1.0.0 - 2026-06-22
Initial release: a configurable, accessible promotional popup built on the native HTML <dialog> element. Vanilla ES6, no jQuery, no cookies.
Added
- Native
<dialog>popup with top-layer rendering, focus trapping, Escape to close, and a styleable backdrop. - Title with
<span>highlighting, rich text body, and independent alignment for each. - Background colour, background image with position and size options.
- Call-to-action button with configurable text, URL, target, and colours.
- Open delay, dismissal period in days, and a storage key suffix for resetting campaigns.
- Dismissal stored in
localStorageonly — no cookies. - Smooth open and close animation with
prefers-reduced-motionsupport. - English (en-GB) language files.