Skip to content

Releases: sa-si-dev/virtual-select

v1.3.0

11 Jun 20:26
d9ba878

Choose a tag to compare

v1.3.0 Pre-release
Pre-release

Added

  • Added a showSecureTextWarning option (default true) that logs a one-time console warning when an instance is initialized with enableSecureText disabled, plus a security note in the documentation (#480 by @gnbm)
  • Improved performance by replacing the per-instance MutationObserver with a single shared observer that scales with removed nodes instead of the number of dropdowns (#469 and #475 by @gnbm)
  • Improved performance by throttling the global window resize handler and guarding it against instances that are mid-teardown (#472 and #476 by @gnbm)
  • Improved lifecycle handling by making the page-level listeners and shared observer reference-counted, and added a cancelable Utils.throttle() (#478 by @gnbm)

Fixed

  • Fixed memory leaks on repeated render/destroy by removing the capture-phase document click listener correctly and clearing retained references on destroy() (#468 by @gnbm)
  • Fixed pending setTimeout callbacks that could run after an instance was destroyed (#473 and #477 by @gnbm)
  • Fixed a render-time error by adding the missing Utils.sanitizeClassNames helper that options with classNames relied on (#478 by @gnbm)
  • Fixed teardown safety by making destroy() idempotent and self-destroying on a failed initialization (#479 by @gnbm)
  • Fixed an XSS bypass where customData fields were not escaped in the option aria-label even with enableSecureText enabled (#477 by @gnbm)
  • Fixed a class attribute injection risk by sanitizing option classNames and the component-level additional*Classes options (#477 and #479 by @gnbm)

v1.2.0

13 May 08:04
fc5779e

Choose a tag to compare

v1.2.0 Pre-release
Pre-release

Added

  • #279 - Added support for enhanced text normalization.
    This allows the search engine to correctly handle non-Latin characters (such as diacritics or accents) and ignore intra-word punctuation, ensuring that users find the correct options regardless of specific formatting or regional character variations (#466 by @gnbm)

v1.1.5

26 Feb 15:53
0d0953d

Choose a tag to compare

v1.1.5 Pre-release
Pre-release

Added

  • Included the option descriptions in search when searchNormalize: true (#464 by @gnbm)

Fixed

  • Fixed an issue where the search input persisted after the dropdown was closed (#460 by @gnbm)
  • Fixed an issue where the options selected were being removed after closing the dropdown (#461 by @os-davidlourenco)
  • Fixed an issue where the capture of a click on the outside of the dropdown when the dropdown was open was happening at the bubbling phase. For React 17 onwards, this phase is too late to react to the click event. An option for handling the event at the capturing phase was added and set as true for the documentBody event (#463 by @os-davidlourenco)
  • Fixed an issue where we got the error TypeError: Cannot read properties of undefined (reading 'index') at VirtualSelect.beforeSelectNewValue when selecting the "add new option" item in single-select (#464 by @gnbm)

v1.1.4

17 Jan 15:34
cd3f0e5

Choose a tag to compare

v1.1.4 Pre-release
Pre-release

Fixed

  • #450 - Enhance screen reader support for the virtualized select component by adding proper ARIA attributes that enable assistive technologies to announce option positions and navigate through large lists correctly. (#453 by @gnbm )
  • #454 - Fixed an issue where the browser would attempt to force a focused dropdown option into view, causing erratic or "strange" scrolling behavior while the dropdown was open. (#456 by @os-davidlourenco)

v1.1.3

26 Nov 14:03
1fb7718

Choose a tag to compare

v1.1.3 Pre-release
Pre-release

Fixed

  • #450 - Fixed an accessibility issue that caused screen readers to announce the wrong total number of available options in the Dropdowns.
    This occurred because UI virtualization (which renders only visible options) prevented screen readers from counting the complete, underlying list. (#451 and #453 by @gnbm )

v1.1.2

03 Oct 14:34
b5f2899

Choose a tag to compare

v1.1.2 Pre-release
Pre-release

Added

  • Improved memory leak prevention by enhancing event listener cleanup and timeout management in the VirtualSelect component (#437 by @gnbm)
  • Updated the code base dependencies to modernize build and styles, fix linting/formatting, and ensure a clean, reproducible build and test run (#438 by @gnbm)

Fixed

  • #432 - Fixed an issue where when using a dropdown with search, when we were focused on the input search, the arrow down and arrow up keys were being used to navigate through the list options, and this was blocking a normal behavior of an input (that is, moving the cursor to the start/end of the string) (#435 by @gnbm)
  • #440 - Fixed an issue where when the Dropdown with values as tags was focused on TAB navigation, we couldn't move to another element since it got focus trapped (#441 by @gnbm)
  • Fixed an accessibility issue that caused incorrect focus behavior when using the down arrow key to navigate through a list of options (#445 by @joselrio)
  • Fixed a related console warning/error that occurred when an options list closed. This was caused by the application attempting to keep focus on an element that was simultaneously being hidden (via aria-hidden="true"), which is now correctly handled (#445 by @joselrio)

v1.1.0

23 Jul 10:38
bcc3e64

Choose a tag to compare

Added

  • Improved documentation and samples for the Events sample page (#424 and #426 by @gnbm)

Fixed

  • #244 - Fixed an issue where the dropbox entrance animation looked clunky when opened, calling openDropbox programmatically (#402 by @gnbm)
  • #293 - Fixed an issue where the onChange event was fired twice when selecting an option from the search input (#422 by @bes-internal)
  • #388 - Fixed an issue where using booleans as dropdown options (values) made the values to be returned as empty when selecting false (#411 by @gnbm)
  • #404 - Fixed an issue where pressing ESC under certain configurations (like keepAlwaysOpen=true) was throwing the following error Uncaught TypeError: Cannot read properties of undefined (reading 'contains') at VirtualSelect.onKeyDown (#408 by @gnbm)
  • #406 - Fixed an issue where the removeMutationObserver() logic was not consistent with addMutationObserver (#407 by @Nilotaviano)
  • #412 - Fixed an issue where we got an error when using Virtual Select with the properties allowNewOption: true and searchNormalize: true when adding a new option (#413 by @gnbm)
  • #414 - Fixed an issue where using Virtual Select with the showSelectedOptionsFirst=true, after the selection, the dropdown was only updated properly with the selected options coming first after closing and opening it twice (#415 by @gnbm)
  • #416 - Fixed an issue where, when clicking between multiple VirtualSelect dropdowns, previously opened dropdowns remain open, which creates a confusing UI where multiple dropdowns can be open simultaneously (#418 by @gnbm)
  • #419 - Fixed an issue where, when using the open-source library Virtual Select, if we have two dropdowns, when we open dropdown A, then scroll down to dropdown B without closing dropdown A, and once we click on dropdown B to open it, dropdown A remains focused when closed. This focus shouldn't exist; only the focus on dropdown B should be retained (#421 by @gnbm)
  • #423 - Fixed an issue where the Dropdown didn't contain search, which was causing a focus on the onScroll event (#430 by @joselrio)
  • #425 - Fixed an issue where, when clicking on the dropdown and then on an input, the input briefly got focused but immediately lost it (previously, it always stayed focused) (#427 by @gnbm)
  • Improved label validation to only use labelNormalized if it exists AND is not undefined/null(#420 by @gnbm)

v1.0.49

08 Apr 11:43
2705aff

Choose a tag to compare

Added

  • #384 - Added more documentation details on the Initialize from native select element section (#398 by @gnbm)

Fixed

  • #396 / #397 - Fixed two regression issues from v1.0.48 that caused an error Uncaught TypeError: $ele is undefined during the dropdown initialization, and the clear button stopped working in the input search (#398 by @gnbm)

v1.0.48

30 Mar 07:53
3b13913

Choose a tag to compare

Added

  • Added the following accessibility configuration options:
    • ariaLabelTagClearButtonText - option used to enhance accessibility when focusing on the clear tag option
    • ariaLabelSearchClearButtonText - ID of the label element to use as a11y attribute aria-labelledby (PR #391 by @joselrio)
  • Added the following configuration options:
    • showDuration - dropdown opening animation time in milliseconds
    • hideDuration - dropdown closing animation time in milliseconds (PR #390 by @Nilotaviano)

Fixed

  • #339/#386/#387 – Fixed an issue that prevented the dropdown from displaying options after a user scrolled down, selected an option, cleared the selection, and reopened the dropdown. (PR #375 by @joselrio)
  • Improved accessibility by adding aria-labels to several elements and updating the tabindex values when the dropdown is opened/closed, ensuring better keyboard navigation (PR #375 by @joselrio)
  • Fixed a memory leak in the destroy() method by ensuring removeEvents() is always called (PR #390 by @Nilotaviano)
  • Fixed some linebreak style errors to make it more compatible with Windows/Mac (PR #394 by @gnbm)

v1.0.47

06 Jan 18:24
7c600b4

Choose a tag to compare

Fixed

  • #268 - Fixed a regression issue where pressing Shift+Tab in the search bar from the dropbox didn't focus the toggle-all checkbox (PR #372 by @OS-pedrolourenco)

  • Fixed an accessibility issue where focus was lost after closing the dropdown when navigating with the keyboard. (PR #375 by @joselrio)

  • #365 - Fixed an issue where unsafe options like JavaScript inline events being passed on the label or value fields were executed, leading to a potential XSS vulnerability. Setting enableSecureText: true is required for this use case to work as expected (PR #381 by @gnbm)