Find release notes/changelog and guides on versioning guidelines
For transparency and insight into the release cycle, releases will be numbered with the following format:
<major>.<minor>.<patch>
And constructed with the following guidelines:
- Breaking backwards compatibility bumps the major
- New additions without breaking backwards compatibility bumps the minor
- Bug fixes and misc changes bump the patch
For more information on semantic versioning, please visit http://semver.org/.
- Release flags:
[Experimental]
: Under testing and might be deprecated at any point[Deprecated]
: Not developed / supported anymore, might be removed at any point[Removed]
: Completely gone, no longer exists[Changed]
: Breaking change in the API or the core library[Updated]
: Non-breaking change in the API or the core library[Fixed]
: Bug or Issue that was fixed and no longer exists[Added]
: New feature
- 🔧 Fixed:
"type": "module"
issue (Thanks 👍 @bbysaeth and @jules-w2) #437
- ➕ Added:
Clear
event (Thanks 👍 @alan-rudzinski) #435 - 🔧 Fixed:
LiveReload
script issue (Thanks 👍 @Jammmmm) #434 - 🎛️ Updated: Development dependencies
- 🎛️ Updated: Development dependencies
- ➕ Added:
- New
How-to Guides
example forDynamic list position
based on it's position inside viewport [#158]
- New
- 🎛️ Updated:
- Library code with minor cleanup & optimizations resulted in minor size reduction for faster loading time
Configuration
documentation section- Development dependencies
- 🧹 Removed:
autoComplete.search()
API method to be only available perautoComplete.js
instance instead of global
- 🔧 Fixed:
response
eventEmitter not firing indata.cache
mode
- 🎛️ Updated: Library code with minor optimizations (Thanks 👍 @folknor) #256
- 🔧 Fixed:
query
API issue (Thanks 👍 @folknor) #254
- ➕ Added: Security awareness note under the
Usage
section in the Docs (Thanks 👍 @needlag) #254 - 🔧 Fixed:
search
API method was not returning the result value - 🎛️ Updated: Library code with deep cleanup & minor optimizations resulted in around
2.4%
size reduction of the minified version and3.2%
of the original version and additional performance improvements
- 🧹 Removed:
preventDefault
onTab
key press event - 🎛️ Updated:
No Results Found
example underHow-to Guides
in documentation
- ➕ Added:
submit
API property controlsEnter
button default behavior (Thanks 👍 @CodeWithOz) #249 #224 #189 - ➕ Added:
query
String
argument to thestart("query")
API method for programmatic operations - 🔧 Fixed: Generated errors when
resultsList
is disabled due to the attachment of thekeydown
event - 🎛️ Updated: Library code with minor optimizations
- 🧹 Removed: Engines field in package.json
- 🧹 Removed:
preInit
stage (Thanks 👍 @folknor) #229 - 🔧 Fixed:
unInit
to remove thewrapper
element (Thanks 👍 @deniseismo) #245
- 🔧 Fixed: Unresolved dependencies when building a Svelte app (Thanks 👍 @sunshineplan) #243
- 🔧 Fixed:
mark
tag's invalid "classes" to "class" attribute (Thanks 👍 @50kudos) #242
- 🔧 Fixed: Data fetching error handling (Thanks 👍 @folknor) #234
- 🔧 Fixed: APIs works with the wrong instance (Thanks 👍 @FoHoOV) #230
- ➕ Added:
wrapper
API property controls wrapper rendering (Thanks 👍 @folknor) #227 - 🔧 Fixed: TypeError: "query" is read-only (Thanks 👍 @n1k0) #231
- 🔧 Fixed: Mouse
click
item selection error (Thanks 👍 @victor-paumier) #232
- 🔝 Updated:
data.src
query parameter to be aligned with thequery
method value when set
- 🔧 Fixed: Scrolling issue moving the entire page
- 🔧 Fixed: Searching
Numbers
issue (Thanks 👍 @folknor) #226
- 🔧 Fixed: Missing Package Files
- 🔧 Fixed: Missing Package Files
Important Note:This release has several breaking changes, so kindly check all the below changes.
- ➕ Added: Automatic field wrapping inside
DIV
- ➕ Added: Document
readyState
listener that initializes the library afterDOM
content is loaded - ➕ Added:
query
value todata.src
for easier data fetching - ➕ Added:
resultsList
navigation auto scrolling for long lists - ➕ Added:
resultsList.tabSelect
API property to controltab
button behavior - ➕ Added:
events
list API property that holds and assigns events toinput
&list
(Thanks 👍 @stell) #223 - ➕ Added:
close
API method controlsresultsList
state - ➕ Added:
open
API method controlsresultsList
state - ➕ Added:
goTo
API method controlsresultsList
navigation by index - ➕ Added:
next
API method controlsresultsList
navigation - ➕ Added:
previous
API method controlsresultsList
navigation - ➕ Added:
select
API method controlsresultsList
selection by index - ➕ Added:
search
API method to avail autoComplete.js powerful engine for external use - ➕ Added:
isOpen
APIboolean
property that holdsresultsList
statetrue
openedfalse
closed - ➕ Added:
list
API property holds the entire list html element - ➕ Added:
wrapper
API property holds the entire wrapper html element - ➕ Added:
cursor
API property holds the index of the current selection or-1
orundefined
for idle - ➕ Added:
id
API property holds the current instance number - ➕ Added:
name
API property that changes all theclassName
properties accordingly - ➕ Added:
options
API property that holds all the custom setconfig
options for separation - ➕ Added:
data.src
fetching error message/instance toresponse
event detail (Thanks 👍 @folknor) #207 - 🔝 Updated: Data caching with a better mechanism
- 🔝 Updated:
WAI-ARIA
configurations for significantly better support - 🔝 Updated:
dataFeedback
event information - 🔧 Fixed:
diacritics
highlighting issue instrict
mode - 🔧 Fixed:
resultsList
eventEmitters unexpected behavior which was firing multiple times - 🔧 Fixed: Empty
className
values do not assign any classes instead ofundefined
- 🌀 Changed: The core library architecture for an improved performance and code separation
- 🌀 Changed: API to only include the used options instead of including unused ones with
undefined
value - 🌀 Changed:
fetch
eventEmitter name toresponse
- 🌀 Changed:
inputField
API property name toinput
- 🌀 Changed:
dataFeedback
API property name tofeedback
- 🌀 Changed:
trigger
API property type fromObject
toFunction
formerly calledtrigger.condition
- 🌀 Changed:
data.results
API property name todata.filter
- 🌀 Changed:
noResults
API to acceptboolean
instead ofFunction
to be replaced withresultsList.container
- 🌀 Changed:
resultItem.highlight
API property type fromObject
to acceptBoolean
orString
formerly calledresultItem.highlight.class
- 🌀 Changed:
resultItem.selected
API property type fromObject
toString
formerly calledresultItem.selected.class
- 🌀 Changed:
resultItem.content
API parameters order from(data, element)
to(element, data)
for consistency - 🌀 Changed:
resultItem.idName
API property name toresultItem.id
- 🌀 Changed:
resultItem.className
API property name toresultItem.class
- 🌀 Changed:
resultItem.content
API property name toresultItem.element
- 🌀 Changed:
resultsList.idName
API property nameresultsList.id
- 🌀 Changed:
resultsList.className
API property nameresultsList.class
- 🌀 Changed:
resultsList.container
API property name toresultsList.element
- 🌀 Changed: Highlighted characters wrapper element to be
mark
instead ofspan
(Thanks 👍 @aarongerig) #195 - 🌀 Changed:
query
API property type fromObject
toFunction
formerly calledquery.manipulate
- 🌀 Changed:
observer
API property nameobserve
- 🌀 Changed:
data.key
API property namedata.keys
- ❗ Removed:
onSelection
API method to be replaced withselection
eventEmitter - ❗ Removed:
resultsList.render
API property to be replaced withresultsList
to acceptBoolean
instead ofObject
in case of disabling list rendering - ❗ Removed:
trigger.event
API property to be replaced withevents
- ❗ Removed:
feedback
API method to be replaced withnavigate
event - ❗ Removed:
resultsList.navigation
API method to be replaced withevents
- ❗ Removed:
nav
API property to be replaced withevents
- ❗ Removed:
hook
API method to be replaced withstart
API - ❗ Removed:
onSelection
API method to be replaced withselection
eventEmitter - ❗ Removed:
input
property fromdataFeedback
due to the existence ofquery
already - ❗ Removed:
unInit
eventEmitter
Important Note:Starting next major release:
- "noResults" API will accept "Boolean" instead of function to be replaced with "resultsList.container"
- "fetch" eventEmitter will be renamed to "response"
- 🔧 Fixed: Data feedback
inputField
value was in lowerCase instead of raw - 🔧 Fixed:
resultItem.className
did not accept except one class instead of multiple - 🔝 Updated: Code with deep refactoring & cleanup (Thanks 👍 @Pirulax) #210
Important Note:Starting next major release:
- "noResults" API will accept "Boolean" instead of function to be replaced with "resultsList.container"
- "fetch" eventEmitter will be renamed to "response"
- ➕ Added: New
data
parameter toresultsList.container
method that contains (input, query, matches, results) values - 🔝 Updated:
resultsList.container.className
default value to beundefined
- 🔝 Updated: Code with some refactoring & cleanup
- 🔝 Updated: Development dependencies
- 🔧 Fixed:
resultsList
error onEnter
key press with no selection - 🔧 Fixed: Input field
aria-activedescendant
was not removed on eachresultsList
regeneration - 🔧 Fixed:
noResults
error onEnter
key press - 🔧 Fixed: Input field
aria-expanded
set totrue
even whennoResults
was not active - 🔧 Fixed:
resultsList
onclose
event did not fire whennoResults
was active - 🔧 Fixed:
unInit
method did not remove allinputField
set event listeners except forinput
event - 🔧 Fixed:
open
eventEmitter unexpected behavior that used to fire on each trigger event
- 🔧 Fixed:
resultsList.container
hierarchy comes after list rendering instead of before
- 🔧 Fixed:
resultsList.container
is removed on second input (Thanks 👍 @folknor) #206
- 🔧 Fixed:
TAB
button behavior - 🔧 Fixed:
resultsList
close behavior oninputField
double click
- 🔧 Fixed: Unexpected behavior
onClick
(Thanks 👍 @iNalgiev) #205
- 🔧 Fixed:
resultItem.idName
issue - 🔝 Updated:
TAB
button behavior (Thanks 👍 @ronmichael @codyjames) #175 #202
This version has breaking changes, kindly check the list
- 🔧 Fixed:
esc
button not working withnoResults
in some cases (Thanks 👍 @sunshineplan) #157 - ➕ Added:
selection
&highlight
customclassName
API methods (Thanks 👍 @jerrykan) #184 - ➕ Added:
eventEmitter
forresultsList
fires on listclose
event (Thanks 👍 @yliharma) #188 - ➕ Added:
event
parameter totrigger.event
API method (Thanks 👍 @nornes) #189 - 🌀 Changed:
maxResults
API moved underresultsList
- 🌀 Changed:
noResults
API moved underresultsList
- 🌀 Changed:
highlight
API moved underresultItem
- 🌀 Changed:
selection
API moved underresultItem
with the name ofselected
- 🌀 Changed:
rendered
eventEmitter
name toopen
- 🌀 Changed:
navigation
eventEmitter
name tonavigate
- 🌀 Changed:
closeAllLists
refactored and renamed tocloseList
- 🌀 Changed:
generateList
stage with some refactoring - 🌀 Changed:
start
stage with some refactoring - 🌀 Changed:
noResults
API method with some refactoring details - 🌀 Changed:
highlight
API fromString
toObject
details - ❗ Removed:
sort
API due to its redundancydata.results
could be used instead - ❗ Removed:
connect
eventEmitter
from thepreInit
stage - 🔝 Updated: Replaced
Uglify
withTerser
- 🔝 Updated: Development dependencies
- 🔝 Updated: Code comments
- 🔝 Updated: Documentation
- 🔧 Fix:
selector
as a function breaks whenobserver
is true (Thanks 👍 @brunobg) #179
- 🔧 Fix: Keyboard navigation selection reset (Thanks 👍 @marsimeau) #177
- ➕ Added:
event
object to theonSelection
datafeedback
(Thanks 👍 @Liano) #176
- 🔧 Fix:
resultItem
IDsetAttribute
to beidName
instead ofclassName
(Thanks 👍 @marsimeau) #173
- 🔧 Fix:
diacritics
composite characters do not match (Thanks 👍 @ikemo3 @Michin0suke @bravik) #169 #171
- 🔝 Updated:
package.json
node engine version from12
to>=12
(Thanks 👍 @mynameisbogdan) #164 - 🔝 Updated:
package.json
npm engine version from6
to>=6
- ➕ Added:
data.results
API to access and manipulate data feedback matching results - 🔧 Fixed:
resultItem.content
APIdata
params to pass the entire item data (Thanks 👍 @jwendel) #163
- 🔧 Fixed:
selector
API to accept function (Thanks 👍 @goaround) #160 #161 - 🔧 Fixed:
resultsList
destination API to accept function (Thanks 👍 @goaround) #160 #162
- ➕ Added:
observer
Controller API [Turned off by default] #149 - ➕ Added: New Light Style [autoComplete.02.css]
- 🔧 Fixed: Main build
live reload
issue (Thanks 👍 @lougroshek) #155
- Fixed: Remove prior event listeners before adding new one in
init
(Thanks 👍 @RobinLawinsky) #153
- Fixed: Custom results list rendering destination (Thanks 👍 @RobinLawinsky) #150
- Updated: Input Field Assignment Order
- Fixed: Trigger Event API
- Build Update
- Whole New More Modern Architecture Design
- Added: High Quality Accessibility (WAI-ARIA 1.2) Support
- Added: Life Cycle Events (Thanks 👍 @zippy84) #89
- Added:
init/unInit
methods (Thanks 👍 @Keagel) #115 - Added: Input Field Observing Functionality
- Added:
Diacritics
2 way Support (Thanks 👍 @batcaverna, @svkmedia) #77 #93 - Added: API for Controlling
Classes
&IDs
(Thanks 👍 @xtellurian, @Lirux) #73 - Added: New neutral/non-opinionated Style (Thanks 👍 @luizbills) #92
- Changed:
autoComplete.js
Internal Flow - Changed:
data
Fetching - Changed:
data
Storing - Changed:
resultsList
Navigation - Changed:
resultsList
Rendering (Thanks 👍 @eballeste) #105 #139 #126 - Fixed:
resultsList
element visibility in idle state (Thanks 👍 @digiiitalmb) #100 - Fixed:
query
threshold length accuracy #142 - Fixed: Calling
dataSrc
on each trigger (Thanks 👍 @thomasphilibert) #106 - Fixed: Right-click behavior on
resultsList
(Thanks 👍 @drankje) #94 - Fixed: Cursor relocation on keyboard
keyUp
orkeyDown
(Thanks 👍 @cadday) #117 - Fixed:
data
as aNumber
parsing issue (Thanks 👍 @andresfdel17) #132 - Fixed:
autoComplete.js
interference with native keyboard events (Thanks 👍 @eballeste) #104 - Fixed: Keyboard events stops working when
onSelection
not defined (Thanks 👍 @AustinGrey) #130
- Added support to
textarea
input field (Thanks 👍 @EmilStenstrom)
- Enhanced mouse selection (Thanks 👍 @adan-ferguson)
- Fixed error behavior occurs when searching (Empty, False, Null) record
resList
now is fully created inDocumentFragment
before rendering for better performance (Thanks 👍 @asafwat)config
parameters restructure (Thanks 👍 @asafwat)- Reduced
autoComplete.js
weight
- New improved Navigation logic (Thanks 👍 @mtomov)
shadowRoot
API support[Removed]
- Enhanced
resList.navigation
API data feedback - Styling
[Changed]
- Major code Refactor & Optimizations
- Faster performance
- Reduced
autoComplete.js
weight
- Duplicate values selection bug fix (Thanks 👍 @plungerman)
- Data Promise bug fix (Thanks 👍 @braco)
- Remote API duplicate calls fix (Thanks 👍 @srinivas025, @argebynogame)
trigger.condition
enhancement (Thanks 👍 @sakuraineed)- Code Refactor for faster performance and lighter weight
api multiple calls
issue fix (Thanks 👍 @srinivas025)
- New API for results list navigation
resultsList.navigation
(Thanks 👍 @fredluetkemeier) - New API for autoComplete.js engine
trigger.event
(Thanks 👍 @fredluetkemeier) - New API for autoComplete.js engine
trigger.condition
- Added Support to
Shadow DOM
expanding customizability (Thanks 👍 @MSDevs) - Node Element Support for Input Selector (Thanks 👍 @jkhaui)
- Empty record issue fix (Thanks 👍 @Platon)
customEngine
API[Removed]
customEngine
merged withsearchEngine
API key for more convenience[Changed]
- Code Optimizations
- Use Custom Search Algorithm via
customEngine
method (Thanks @hwangm)
CustomEvent
&Closest
method IE compatibility (Thanks @g-viet)- Query interception (Thanks @barns101)
- Simplified
resultsList
&resultItem
EventEmitter
fires on clearing input fieldEventEmitter
now hasinput
method for row user’s inputEventEmitter
now hasquery
method for intercepted user’s input
- Get results from
eventEmitter
without rendering list throughresultsList.render
API - EventEmitter name
type
changed toautoComplete
[Changed]
- Added Event Emitter on
noResults
event
noResults
API unset error bug fix
UpperCase
query bug fix
- Added
noResults
open API for No Results (Thanks @chabri) - HTML elements
ContentEditable
Input Support (Thanks @philippejadin)
- Large datasets handling (Thanks @Johann-S)
- API Data fetching & Dynamic Data reloading (Thanks @Brostafa)
- Debouncing API Calls
- Custom
resultsList
&resultItem
Elements (Thanks @Johann-S) - Bug fixes
- Code Clean Up
- Multiple searchable
keys
for datasrc
(Thanks @Johann-S) - Rendered
results
in original case (Thanks @nickbp12) - Improved Development Environment (Thanks @ziishaned)
- IE 11 fix (Thanks @maciekgrzybek)
- Improved returned data object
onSelection
- Index of result data value
- Total number of matching results
- Key of result data value (If multiple keys)
- HTML element of selected result
- Sort rendered
results
API - Enhanced
results
navigation addingArrowRight
key for selection - Added
event
emitter on input field type nametype
returns- Query
- Number of matching results
- Rendered results
- Keyboard event - Code Clean Up
- Fixed bug with
highlight
API default value duringstrict
engine mode - Fixed bug with
resultsList
API default value when not configured
- Isolated
resultsList
value for multiple instances (Thanks @albu77)
- API Enhancements over rendered results list container
resultsList > container
function (Thanks @albu77)
- Added API for rendered results list container
resultsList > container
function (Thanks @albu77) - API Enhancements
- Added API for rendered result item
resultItem
function renderResults
API name changed toresultsList
[Changed]
- Added support for Keyboard
(Arrow)
&(Tab)
Navigation - Selection event object returns in data feedback (Thanks @alvaaz)
- Added
Function
support toselector
for detached DOM rendering (Thanks @mikob) - Added
Function
support torenderResults
for detached DOM rendering - Fixed Placeholder if not set doesn't overwrite external assigned values (Thanks @mikob)
- Replaced
id
withdata-attribute
(Thanks @mikob) - Input doesn't clear automatically
onSelection
event (Thanks @mikob) - Place Holder doesn't assign selected value
onSelection
event automatically - Error message rendered on Engine failure in the body for End-User
[Removed]
(Thanks @mikob) - API
data-attribute
setting[Removed]
- Optimizations
- Style Enhancements
- Fixed multiple space input issue (Thanks @DevOsamaMohamed)
- Fixed remote data source excessive requests (Thanks @DevOsamaMohamed)
- Optimizations for performance enhancements
- Reduced Weight
- Added support for array of
Objects
&JSON
as data source withKey
selection - Added support for external data source via
Promises
&Async/Await
function - Added more comprehensive and usable data feedback on user selection
(User Input, Results List, User Selection)
Object dataSrc
methodCHANGED
to object methoddata
with two new methodssrc
&key
(Check API Configurations)- Highlighted Results class name
CHANGED
from.autoComplete_highlighted_result
toautoComplete_highlighted
- Many Optimizations for better performance
- Scroll Infinite results style in Demo
- Gzipped options for both builds are ready
(2KB) non-minified
&(1KB) minified
- Fixed styling issue with selections last selection child on mobile devices
- Added
threshold
for minimum characters length before Engine starts rendering suggestions - Optimizations for better performance
- Reduced Weight to
(3KB)
minified
- Fixed
onSelection
null action issue - Placeholder keeps value of last selection
[Removed]
- Fully isolated UI from Logic
- Some code cleanup & optimizations
- Reduced Weight
- Bug fixes
- Ability to change results destination & position
renderResults
- Optimizations for faster performance & lighter weight
- Enhanced error handling capabilities
- Styles fixes for better cross browser compatibility
- Added detailed documentation
- Bug Fixes
- Added new type/mode of Search Engine
strict
- Detached the results list style behavior from code
Placeholder max. length
option[Removed]
- Optimizations for higher performance & lighter weight
- Refactored for higher speed & smaller footprint
- Bug fixes & Optimizations
- Added new
datasrc
a function that returnsArray
- Added Placeholder text maximum length option
[Experimental]
- Added new style sheet variation
- Redesigned the entire search engine for better results & experience
- Added support for Multi-keyword search
- Fixed issue with Capital letters reflects in results
- Reduced the library size 97%
(101KB -> 4KB)
- Introducing 2 different versions of the library
(pure, minified)
- Replaced webpack with Rollup for better bundling
- Fixed some bugs caused problems with node apps
- Refactored & Optimized to reduce size and enhance performance
- Fixed the library name in the webpack.config.js file
- Optimizations Reduced the library weight by 1KB
- Add customized data attribute tag for generated results
- Highlight matching results from the results list
- Set maximum number for shown results
- Add placeholder text to the input field
- Placeholder keeps the last selection value saved