// global notation
// <script src="awesomplete.js"></script>
// <script src="awesomplete-email.js"></script>
// <script src="awesomplete-select.js"></script>
Awesomplete.init();
// commonjs/middleware notation
var awesompleteAsync = require('./awesomplete-async');
var awesompleteEmail = require('./awesomplete-email');
var awesompleteSelect = require('./awesomplete-select');
Awesomplete
.use(awesompleteAsync())
.use(awesompleteEmail)
.use(awesompleteSelect)
.init();
Last active
August 29, 2015 14:15
-
-
Save sillero/677401b2c1f4235494af to your computer and use it in GitHub Desktop.
Experimental use case of "Awesomplete extensions" using UMD
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(function (root, factory) { | |
if (typeof define === 'function' && define.amd) { | |
define(function () { | |
return (root.returnExportsGlobal = factory()); | |
}); | |
} else if (typeof exports === 'object') { | |
module.exports = factory(); | |
} else { | |
root.returnExportsGlobal = factory(root.Awesomplete); | |
} | |
}(this, function (Awesomplete) { | |
if (Awesomplete) { awesompleteExtension(); } | |
return awesompleteExtension; | |
function awesompleteExtension(ajaxMethod) { | |
return function(Awesomplete){ | |
var __evaluate = Awesomplete.prototype.evaluate; | |
// you can use a custom one (Promise compatible) or the default ajax method | |
// custom ex. Awesomplete.use(awesompleteAsync(jQuery.ajax)); | |
// default ex. Awesomplete.use(awesompleteAsync()); | |
Awesomplete.prototype.ajax = ajaxMethod || function(){ | |
//maybe use https://github.com/pyrsmk/qwest ? | |
} | |
Awesomplete.prototype.set = function(key, value){ | |
if (typeof value === 'undefined') return this[key]; | |
this[key] = value; | |
if (key === 'list') { | |
__evaluate(); | |
} | |
return this; | |
} | |
Awesomplete.prototype.get = function(){ return this[key] }; | |
Awesomplete.prototype.evaluate = function(){ | |
var self = this; | |
if (this.ajaxOptions) { | |
this.ajaxRequest.stop(); | |
this.ajaxRequest = this.ajax(this.ajaxOptions) | |
.then(function(list){ | |
self.set('list', list); | |
}, function(){ | |
self.ajaxFailed(); | |
}); | |
} | |
}; | |
} | |
}; | |
})); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(function (root, factory) { | |
if (typeof define === 'function' && define.amd) { | |
define(function () { | |
return (root.returnExportsGlobal = factory()); | |
}); | |
} else if (typeof exports === 'object') { | |
module.exports = factory(); | |
} else { | |
root.returnExportsGlobal = factory(root.Awesomplete); | |
} | |
}(this, function (Awesomplete) { | |
if (Awesomplete) { awesompleteExtension(); } | |
return awesompleteExtension; | |
function awesompleteExtension(Awesomplete) { | |
Awesomplete.extend({ | |
type: "email" | |
list: [ | |
/* Default domains included */ | |
"aol.com", "att.net", "comcast.net", "facebook.com", "gmail.com", "gmx.com", "googlemail.com", | |
"google.com", "hotmail.com", "hotmail.co.uk", "mac.com", "me.com", "mail.com", "msn.com", | |
"live.com", "sbcglobal.net", "verizon.net", "yahoo.com", "yahoo.co.uk", | |
/* Other global domains */ | |
"email.com", "games.com" /* AOL */, "gmx.net", "hush.com", "hushmail.com", "inbox.com", | |
"lavabit.com", "love.com" /* AOL */, "pobox.com", "rocketmail.com" /* Yahoo */, | |
"safe-mail.net", "wow.com" /* AOL */, "ygm.com" /* AOL */, "ymail.com" /* Yahoo */, "zoho.com", "fastmail.fm", | |
/* United States ISP domains */ | |
"bellsouth.net", "charter.net", "cox.net", "earthlink.net", "juno.com", | |
/* British ISP domains */ | |
"btinternet.com", "virginmedia.com", "blueyonder.co.uk", "freeserve.co.uk", "live.co.uk", | |
"ntlworld.com", "o2.co.uk", "orange.net", "sky.com", "talktalk.co.uk", "tiscali.co.uk", | |
"virgin.net", "wanadoo.co.uk", "bt.com", | |
/* Domains used in Asia */ | |
"sina.com", "qq.com", "naver.com", "hanmail.net", "daum.net", "nate.com", "yahoo.co.jp", "yahoo.co.kr", "yahoo.co.id", "yahoo.co.in", "yahoo.com.sg", "yahoo.com.ph", | |
/* French ISP domains */ | |
"hotmail.fr", "live.fr", "laposte.net", "yahoo.fr", "wanadoo.fr", "orange.fr", "gmx.fr", "sfr.fr", "neuf.fr", "free.fr", | |
/* German ISP domains */ | |
"gmx.de", "hotmail.de", "live.de", "online.de", "t-online.de" /* T-Mobile */, "web.de", "yahoo.de", | |
/* Russian ISP domains */ | |
"mail.ru", "rambler.ru", "yandex.ru", | |
/* Belgian ISP domains */ | |
"hotmail.be", "live.be", "skynet.be", "voo.be", "tvcablenet.be", | |
/* Argentinian ISP domains */ | |
"hotmail.com.ar", "live.com.ar", "yahoo.com.ar", "fibertel.com.ar", "speedy.com.ar", "arnet.com.ar", | |
/* Domains used in Mexico */ | |
"hotmail.com", "gmail.com", "yahoo.com.mx", "live.com.mx", "yahoo.com", "hotmail.es", "live.com", "hotmail.com.mx", "prodigy.net.mx", "msn.com" | |
], | |
item: function(text, input){ | |
var newText = input.slice(0, input.indexOf("@")) + text; | |
return this.$.create("li", { | |
innerHTML: newText.replace(RegExp(input.trim(), "gi"), "<mark>$&</mark>"), | |
"aria-selected": "false" | |
}); | |
}, | |
filter: function(text, input){ | |
var atPosition = input.indexOf("@"); | |
var inputIsEmail = !!~atPosition && (input.length > atPosition + this.minChars); | |
if (!inputIsEmail) return false; | |
var domain = input.slice(input.indexOf("@") + 1); | |
var textMatchWithInput = RegExp("^" + domain.trim(), "i").test(text); | |
return (inputIsEmail && textMatchWithInput); | |
} | |
}); | |
}; | |
})); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(function (root, factory) { | |
if (typeof define === 'function' && define.amd) { | |
define(function () { | |
return (root.returnExportsGlobal = factory()); | |
}); | |
} else if (typeof exports === 'object') { | |
module.exports = factory(); | |
} else { | |
root.returnExportsGlobal = factory(root.Awesomplete); | |
} | |
}(this, function (Awesomplete) { | |
if (Awesomplete) { awesompleteExtension(); } | |
return awesompleteExtension; | |
function awesompleteExtension(Awesomplete){ | |
Awesomplete.extend({ | |
type: 'select', | |
beforeInit: function(){ | |
var awesomplete = this. | |
var select = awesomplete.element; | |
var options = awesomplete.toArray(select.options); | |
var items = options.map(function(option){ | |
return option.innerText; | |
}); | |
var input = awesomplete.$.create('input'); | |
select.parentElement.insertBefore(input, select); | |
select.setAttribute('hidden', ''); | |
if (select.selectedIndex > -1){ | |
input.value = options[select.selectedIndex].text; | |
} | |
var button = awesomplete.$.create('button', {innerText: '\u25BC'}); | |
input.parentElement.insertAfter(button, input); | |
awesomplete.$.bind(button, { | |
'click': function(){ | |
awesomplete.evaluate(''); | |
} | |
}); | |
awesomplete.$.bind(input, { | |
'awesomplete-selectcomplete': function(){ | |
var selectedItems = options.filter(function(elem){ | |
return elem.text === input.value | |
}); | |
if(selectedItems.length > 0){ | |
select.value = selectedItems[0].value; | |
} | |
} | |
}); | |
} | |
}); | |
}; | |
})); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(function (root, factory) { | |
if (typeof define === 'function' && define.amd) { | |
define(function () { | |
return (root.returnExportsGlobal = factory()); | |
}); | |
} else if (typeof exports === 'object') { | |
module.exports = factory(); | |
} else { | |
root.returnExportsGlobal = factory(root.Awesomplete); | |
} | |
}(this, function (Awesomplete) { | |
if (Awesomplete) { awesompleteExtension(); } | |
return awesompleteExtension; | |
function awesompleteExtension(Awesomplete){ | |
// ..... | |
// your extension code goes here | |
// ..... | |
} | |
})); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment