/autoComplete.js

Simple autocomplete pure vanilla Javascript library.

Primary LanguageJavaScriptApache License 2.0Apache-2.0

autoComplete.js ✨

License Build Status GitHub version npm version Zero Dependencies Size Open Source Love

autoComplete.js Design

Simple autocomplete pure vanilla Javascript library. Demo

autoComplete.js is a simple pure vanilla Javascript library that's built for speed, high versatility and seamless integration with wide range of projects & systems.

Features

  • Simple & Easy to use
  • Pure Vanilla Javascript
  • Zero Dependencies
  • Lightweight
  • Lightning Fast
  • Versatile
  • Customizable
  • First Class Error Reporting

autoComplete.js Code Example

Get Started

Clone:

  • Clone autoComplete.js to your local machine using https://github.com/TarekRaafat/autoComplete.js.git

Setup:

  1. Install Dependencies
$ npm i
  1. Development live server
$ npm start
  1. Build Production Package
$ npm run build

Installation:

  • jsDelivr CDN (Link)

CSS

<head>

<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/TarekRaafat/autoComplete.js@1.3.1/dist/css/autoComplete.min.css">

</head>

JS

<body>
	
<script src="https://cdn.jsdelivr.net/gh/TarekRaafat/autoComplete.js@1.3.1/dist/js/autoComplete.min.js"></script>

</body>
  • HTML Local load
<script src="./autoComplete.js"></script>
  • HTML Local load - ES6 module (Use with Import)
<script src="./index.js" type="module"></script>
  • Import module ES6
import autoComplete from "./autoComplete";
  • npm install (Node Package Manager)

https://www.npmjs.com/package/@tarekraafat/autocomplete.js

$ npm i @tarekraafat/autocomplete.js
  • Node.js
const autoComplete = require("@tarekraafat/autocomplete.js/dist/js/autoComplete");

How to use:

HTML file

  1. Assign id="autoComplete" to the input filed
<input id="autoComplete" type="text">

JS file

  1. Create new instance of autoComplete engine
// The app instance creator
new autoComplete({
	dataSrc: grocery,		  // Array data source
	placeHolder: "Try me...",  	  // Place Holder text
	placeHolderLength: 26,		  // Max placeholder length
	maxResults: 10,		    	  // Max number of results
	highlight: true,	  	  // Highlight matching results	
	dataAttribute: {
		tag: "set",	    	  // Data attribute tag
		value: "value"	    	  // Data attribute value
	},
	onSelection: value => {    	  // Action script onClick event
		document.querySelector(".selection").innerHTML = value.id;
	}
});
  1. That's it, you're ready to go!

Example

  • Download Demo files locally from /dist folder

Support

For general questions about autoComplete.js, tweet at @TarekRaafat.

For technical questions, you should post a question on Stack Overflow and tag it with autoComplete.js.


Browsers Support

IE / Edge
IE / Edge
Firefox
Firefox
Chrome
Chrome
Safari
Safari
iOS Safari
iOS Safari
Samsung
Samsung
Opera
Opera
Opera Mini
Opera Mini
Electron
Electron
Edge last version last version last version last version last version last version last version last version

Versioning

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.

Release History

  • v1.3.1

    • Refactored for higher speed & smaller foorprint
    • Bugfixes & Optimizations
  • v1.3.0

    • Added new datasrc a function that returns Array
  • v1.2.1

    • Added Placeholder text maximum length option [Experimental]
    • Added new style sheet variation
  • v1.2.0

    • Redesigned the entire search engine for better results & experience
    • Added support for Multi-keyword search
    • Fixed issue with Capital letters reflects in results
  • v1.1.0

    • Reduced the library size 97% (101KB -> 4KB)
    • Introducing 2 different verions of the library (pure, minified)
    • Replaced webpack with Rollup for better bundling
    • Fixed some bugs caused problems with node apps
  • v1.0.3

    • Refactored & Optimized to reduce size and enhance performance
  • v1.0.2

    • Fixed the library name in the webpack.config.js file
  • v1.0.1

    • Optimizations Reduced the library weight by 1KB
  • v1.0.0

    • 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

Roadmap

Functionality:

  • Add support for different types of data source
    • JS Object
    • JSON
    • Multidimensional Array
    • External data source (Plugin)
  • Multi-keyword Search
  • Placeholder text maximum length option [experimental]
  • Navigate results list with keyboard

Interface:

  • New designs for inspiration (Ongoing)
    • Styles
    • Interactions
  • Number of results inside input field (Optional)

Contribution

Contributions are always more than welcome!

If you have any ideas, just open an issue and tell me what you think.

  • Please fork the repository and make changes as you'd like. Pull requests are warmly welcome.

If you'd like to contribute:

  1. Fork it (https://github.com/TarekRaafat/autoComplete.js.git)
  2. Create your feature branch (git checkout -b feature/fooBar)
  3. Commit your changes (git commit -am 'Add some fooBar')
  4. Push to the branch (git push origin feature/fooBar)
  5. Create a new Pull Request

Author

Tarek Raafat - tarek.m.raafat@gmail.com

Distributed under the Apache 2.0 license. See Apache 2.0 for more information.

https://github.com/TarekRaafat/


License

Apache 2.0 © Tarek Raafat