Removed unnecessary JS
This commit is contained in:
@@ -12,9 +12,6 @@
|
|||||||
<script type="text/javascript" src="lib/sjcl.js"></script>
|
<script type="text/javascript" src="lib/sjcl.js"></script>
|
||||||
<script type="text/javascript" src="lib/jquery.min.js"></script>
|
<script type="text/javascript" src="lib/jquery.min.js"></script>
|
||||||
<script type="text/javascript" src="bootstrap/js/bootstrap.min.js"></script>
|
<script type="text/javascript" src="bootstrap/js/bootstrap.min.js"></script>
|
||||||
<script type="text/javascript" src="lib/bootstrap-typeahead.js"></script>
|
|
||||||
<script type="text/javascript" src="lib/bootstrap-modal.js"></script>
|
|
||||||
<script type="text/javascript" src="lib/bootstrap-button.js"></script>
|
|
||||||
|
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
"use strict";
|
"use strict";
|
||||||
|
|||||||
100
static/lib/bootstrap-button.js
vendored
100
static/lib/bootstrap-button.js
vendored
@@ -1,100 +0,0 @@
|
|||||||
/* ============================================================
|
|
||||||
* bootstrap-button.js v2.0.1
|
|
||||||
* http://twitter.github.com/bootstrap/javascript.html#buttons
|
|
||||||
* ============================================================
|
|
||||||
* Copyright 2012 Twitter, Inc.
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
* ============================================================ */
|
|
||||||
|
|
||||||
!function( $ ){
|
|
||||||
|
|
||||||
"use strict"
|
|
||||||
|
|
||||||
/* BUTTON PUBLIC CLASS DEFINITION
|
|
||||||
* ============================== */
|
|
||||||
|
|
||||||
var Button = function ( element, options ) {
|
|
||||||
this.$element = $(element)
|
|
||||||
this.options = $.extend({}, $.fn.button.defaults, options)
|
|
||||||
}
|
|
||||||
|
|
||||||
Button.prototype = {
|
|
||||||
|
|
||||||
constructor: Button
|
|
||||||
|
|
||||||
, setState: function ( state ) {
|
|
||||||
var d = 'disabled'
|
|
||||||
, $el = this.$element
|
|
||||||
, data = $el.data()
|
|
||||||
, val = $el.is('input') ? 'val' : 'html'
|
|
||||||
|
|
||||||
state = state + 'Text'
|
|
||||||
data.resetText || $el.data('resetText', $el[val]())
|
|
||||||
|
|
||||||
$el[val](data[state] || this.options[state])
|
|
||||||
|
|
||||||
// push to event loop to allow forms to submit
|
|
||||||
setTimeout(function () {
|
|
||||||
state == 'loadingText' ?
|
|
||||||
$el.addClass(d).attr(d, d) :
|
|
||||||
$el.removeClass(d).removeAttr(d)
|
|
||||||
}, 0)
|
|
||||||
}
|
|
||||||
|
|
||||||
, toggle: function () {
|
|
||||||
var $parent = this.$element.parent('[data-toggle="buttons-radio"]')
|
|
||||||
|
|
||||||
$parent && $parent
|
|
||||||
.find('.active')
|
|
||||||
.removeClass('active')
|
|
||||||
|
|
||||||
this.$element.toggleClass('active')
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* BUTTON PLUGIN DEFINITION
|
|
||||||
* ======================== */
|
|
||||||
|
|
||||||
$.fn.button = function ( option ) {
|
|
||||||
return this.each(function () {
|
|
||||||
var $this = $(this)
|
|
||||||
, data = $this.data('button')
|
|
||||||
, options = typeof option == 'object' && option
|
|
||||||
if (!data) $this.data('button', (data = new Button(this, options)))
|
|
||||||
if (option == 'toggle') data.toggle()
|
|
||||||
else if (option) data.setState(option)
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
$.fn.button.defaults = {
|
|
||||||
loadingText: 'loading...'
|
|
||||||
}
|
|
||||||
|
|
||||||
$.fn.button.Constructor = Button
|
|
||||||
|
|
||||||
|
|
||||||
/* BUTTON DATA-API
|
|
||||||
* =============== */
|
|
||||||
|
|
||||||
$(function () {
|
|
||||||
$('body').on('click.button.data-api', '[data-toggle^=button]', function ( e ) {
|
|
||||||
var $btn = $(e.target)
|
|
||||||
if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn')
|
|
||||||
$btn.button('toggle')
|
|
||||||
})
|
|
||||||
})
|
|
||||||
|
|
||||||
}( window.jQuery );
|
|
||||||
210
static/lib/bootstrap-modal.js
vendored
210
static/lib/bootstrap-modal.js
vendored
@@ -1,210 +0,0 @@
|
|||||||
/* =========================================================
|
|
||||||
* bootstrap-modal.js v2.0.1
|
|
||||||
* http://twitter.github.com/bootstrap/javascript.html#modals
|
|
||||||
* =========================================================
|
|
||||||
* Copyright 2012 Twitter, Inc.
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
* ========================================================= */
|
|
||||||
|
|
||||||
|
|
||||||
!function( $ ){
|
|
||||||
|
|
||||||
"use strict"
|
|
||||||
|
|
||||||
/* MODAL CLASS DEFINITION
|
|
||||||
* ====================== */
|
|
||||||
|
|
||||||
var Modal = function ( content, options ) {
|
|
||||||
this.options = options
|
|
||||||
this.$element = $(content)
|
|
||||||
.delegate('[data-dismiss="modal"]', 'click.dismiss.modal', $.proxy(this.hide, this))
|
|
||||||
}
|
|
||||||
|
|
||||||
Modal.prototype = {
|
|
||||||
|
|
||||||
constructor: Modal
|
|
||||||
|
|
||||||
, toggle: function () {
|
|
||||||
return this[!this.isShown ? 'show' : 'hide']()
|
|
||||||
}
|
|
||||||
|
|
||||||
, show: function () {
|
|
||||||
var that = this
|
|
||||||
|
|
||||||
if (this.isShown) return
|
|
||||||
|
|
||||||
$('body').addClass('modal-open')
|
|
||||||
|
|
||||||
this.isShown = true
|
|
||||||
this.$element.trigger('show')
|
|
||||||
|
|
||||||
escape.call(this)
|
|
||||||
backdrop.call(this, function () {
|
|
||||||
var transition = $.support.transition && that.$element.hasClass('fade')
|
|
||||||
|
|
||||||
!that.$element.parent().length && that.$element.appendTo(document.body) //don't move modals dom position
|
|
||||||
|
|
||||||
that.$element
|
|
||||||
.show()
|
|
||||||
|
|
||||||
if (transition) {
|
|
||||||
that.$element[0].offsetWidth // force reflow
|
|
||||||
}
|
|
||||||
|
|
||||||
that.$element.addClass('in')
|
|
||||||
|
|
||||||
transition ?
|
|
||||||
that.$element.one($.support.transition.end, function () { that.$element.trigger('shown') }) :
|
|
||||||
that.$element.trigger('shown')
|
|
||||||
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
, hide: function ( e ) {
|
|
||||||
e && e.preventDefault()
|
|
||||||
|
|
||||||
if (!this.isShown) return
|
|
||||||
|
|
||||||
var that = this
|
|
||||||
this.isShown = false
|
|
||||||
|
|
||||||
$('body').removeClass('modal-open')
|
|
||||||
|
|
||||||
escape.call(this)
|
|
||||||
|
|
||||||
this.$element
|
|
||||||
.trigger('hide')
|
|
||||||
.removeClass('in')
|
|
||||||
|
|
||||||
$.support.transition && this.$element.hasClass('fade') ?
|
|
||||||
hideWithTransition.call(this) :
|
|
||||||
hideModal.call(this)
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* MODAL PRIVATE METHODS
|
|
||||||
* ===================== */
|
|
||||||
|
|
||||||
function hideWithTransition() {
|
|
||||||
var that = this
|
|
||||||
, timeout = setTimeout(function () {
|
|
||||||
that.$element.off($.support.transition.end)
|
|
||||||
hideModal.call(that)
|
|
||||||
}, 500)
|
|
||||||
|
|
||||||
this.$element.one($.support.transition.end, function () {
|
|
||||||
clearTimeout(timeout)
|
|
||||||
hideModal.call(that)
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
function hideModal( that ) {
|
|
||||||
this.$element
|
|
||||||
.hide()
|
|
||||||
.trigger('hidden')
|
|
||||||
|
|
||||||
backdrop.call(this)
|
|
||||||
}
|
|
||||||
|
|
||||||
function backdrop( callback ) {
|
|
||||||
var that = this
|
|
||||||
, animate = this.$element.hasClass('fade') ? 'fade' : ''
|
|
||||||
|
|
||||||
if (this.isShown && this.options.backdrop) {
|
|
||||||
var doAnimate = $.support.transition && animate
|
|
||||||
|
|
||||||
this.$backdrop = $('<div class="modal-backdrop ' + animate + '" />')
|
|
||||||
.appendTo(document.body)
|
|
||||||
|
|
||||||
if (this.options.backdrop != 'static') {
|
|
||||||
this.$backdrop.click($.proxy(this.hide, this))
|
|
||||||
}
|
|
||||||
|
|
||||||
if (doAnimate) this.$backdrop[0].offsetWidth // force reflow
|
|
||||||
|
|
||||||
this.$backdrop.addClass('in')
|
|
||||||
|
|
||||||
doAnimate ?
|
|
||||||
this.$backdrop.one($.support.transition.end, callback) :
|
|
||||||
callback()
|
|
||||||
|
|
||||||
} else if (!this.isShown && this.$backdrop) {
|
|
||||||
this.$backdrop.removeClass('in')
|
|
||||||
|
|
||||||
$.support.transition && this.$element.hasClass('fade')?
|
|
||||||
this.$backdrop.one($.support.transition.end, $.proxy(removeBackdrop, this)) :
|
|
||||||
removeBackdrop.call(this)
|
|
||||||
|
|
||||||
} else if (callback) {
|
|
||||||
callback()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function removeBackdrop() {
|
|
||||||
this.$backdrop.remove()
|
|
||||||
this.$backdrop = null
|
|
||||||
}
|
|
||||||
|
|
||||||
function escape() {
|
|
||||||
var that = this
|
|
||||||
if (this.isShown && this.options.keyboard) {
|
|
||||||
$(document).on('keyup.dismiss.modal', function ( e ) {
|
|
||||||
e.which == 27 && that.hide()
|
|
||||||
})
|
|
||||||
} else if (!this.isShown) {
|
|
||||||
$(document).off('keyup.dismiss.modal')
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* MODAL PLUGIN DEFINITION
|
|
||||||
* ======================= */
|
|
||||||
|
|
||||||
$.fn.modal = function ( option ) {
|
|
||||||
return this.each(function () {
|
|
||||||
var $this = $(this)
|
|
||||||
, data = $this.data('modal')
|
|
||||||
, options = $.extend({}, $.fn.modal.defaults, $this.data(), typeof option == 'object' && option)
|
|
||||||
if (!data) $this.data('modal', (data = new Modal(this, options)))
|
|
||||||
if (typeof option == 'string') data[option]()
|
|
||||||
else if (options.show) data.show()
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
$.fn.modal.defaults = {
|
|
||||||
backdrop: true
|
|
||||||
, keyboard: true
|
|
||||||
, show: true
|
|
||||||
}
|
|
||||||
|
|
||||||
$.fn.modal.Constructor = Modal
|
|
||||||
|
|
||||||
|
|
||||||
/* MODAL DATA-API
|
|
||||||
* ============== */
|
|
||||||
|
|
||||||
$(function () {
|
|
||||||
$('body').on('click.modal.data-api', '[data-toggle="modal"]', function ( e ) {
|
|
||||||
var $this = $(this), href
|
|
||||||
, $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7
|
|
||||||
, option = $target.data('modal') ? 'toggle' : $.extend({}, $target.data(), $this.data())
|
|
||||||
|
|
||||||
e.preventDefault()
|
|
||||||
$target.modal(option)
|
|
||||||
})
|
|
||||||
})
|
|
||||||
|
|
||||||
}( window.jQuery );
|
|
||||||
271
static/lib/bootstrap-typeahead.js
vendored
271
static/lib/bootstrap-typeahead.js
vendored
@@ -1,271 +0,0 @@
|
|||||||
/* =============================================================
|
|
||||||
* bootstrap-typeahead.js v2.0.1
|
|
||||||
* http://twitter.github.com/bootstrap/javascript.html#typeahead
|
|
||||||
* =============================================================
|
|
||||||
* Copyright 2012 Twitter, Inc.
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
* ============================================================ */
|
|
||||||
|
|
||||||
!function( $ ){
|
|
||||||
|
|
||||||
"use strict"
|
|
||||||
|
|
||||||
var Typeahead = function ( element, options ) {
|
|
||||||
this.$element = $(element)
|
|
||||||
this.options = $.extend({}, $.fn.typeahead.defaults, options)
|
|
||||||
this.matcher = this.options.matcher || this.matcher
|
|
||||||
this.sorter = this.options.sorter || this.sorter
|
|
||||||
this.highlighter = this.options.highlighter || this.highlighter
|
|
||||||
this.$menu = $(this.options.menu).appendTo('body')
|
|
||||||
this.source = this.options.source
|
|
||||||
this.shown = false
|
|
||||||
this.listen()
|
|
||||||
}
|
|
||||||
|
|
||||||
Typeahead.prototype = {
|
|
||||||
|
|
||||||
constructor: Typeahead
|
|
||||||
|
|
||||||
, select: function () {
|
|
||||||
var val = this.$menu.find('.active').attr('data-value')
|
|
||||||
this.$element.val(val)
|
|
||||||
return this.hide()
|
|
||||||
}
|
|
||||||
|
|
||||||
, show: function () {
|
|
||||||
var pos = $.extend({}, this.$element.offset(), {
|
|
||||||
height: this.$element[0].offsetHeight
|
|
||||||
})
|
|
||||||
|
|
||||||
this.$menu.css({
|
|
||||||
top: pos.top + pos.height
|
|
||||||
, left: pos.left
|
|
||||||
})
|
|
||||||
|
|
||||||
this.$menu.show()
|
|
||||||
this.shown = true
|
|
||||||
return this
|
|
||||||
}
|
|
||||||
|
|
||||||
, hide: function () {
|
|
||||||
this.$menu.hide()
|
|
||||||
this.shown = false
|
|
||||||
return this
|
|
||||||
}
|
|
||||||
|
|
||||||
, lookup: function (event) {
|
|
||||||
var that = this
|
|
||||||
, items
|
|
||||||
, q
|
|
||||||
|
|
||||||
this.query = this.$element.val()
|
|
||||||
|
|
||||||
if (!this.query) {
|
|
||||||
return this.shown ? this.hide() : this
|
|
||||||
}
|
|
||||||
|
|
||||||
items = $.grep(this.source, function (item) {
|
|
||||||
if (that.matcher(item)) return item
|
|
||||||
})
|
|
||||||
|
|
||||||
items = this.sorter(items)
|
|
||||||
|
|
||||||
if (!items.length) {
|
|
||||||
return this.shown ? this.hide() : this
|
|
||||||
}
|
|
||||||
|
|
||||||
return this.render(items.slice(0, this.options.items)).show()
|
|
||||||
}
|
|
||||||
|
|
||||||
, matcher: function (item) {
|
|
||||||
return ~item.toLowerCase().indexOf(this.query.toLowerCase())
|
|
||||||
}
|
|
||||||
|
|
||||||
, sorter: function (items) {
|
|
||||||
var beginswith = []
|
|
||||||
, caseSensitive = []
|
|
||||||
, caseInsensitive = []
|
|
||||||
, item
|
|
||||||
|
|
||||||
while (item = items.shift()) {
|
|
||||||
if (!item.toLowerCase().indexOf(this.query.toLowerCase())) beginswith.push(item)
|
|
||||||
else if (~item.indexOf(this.query)) caseSensitive.push(item)
|
|
||||||
else caseInsensitive.push(item)
|
|
||||||
}
|
|
||||||
|
|
||||||
return beginswith.concat(caseSensitive, caseInsensitive)
|
|
||||||
}
|
|
||||||
|
|
||||||
, highlighter: function (item) {
|
|
||||||
return item.replace(new RegExp('(' + this.query + ')', 'ig'), function ($1, match) {
|
|
||||||
return '<strong>' + match + '</strong>'
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
, render: function (items) {
|
|
||||||
var that = this
|
|
||||||
|
|
||||||
items = $(items).map(function (i, item) {
|
|
||||||
i = $(that.options.item).attr('data-value', item)
|
|
||||||
i.find('a').html(that.highlighter(item))
|
|
||||||
return i[0]
|
|
||||||
})
|
|
||||||
|
|
||||||
items.first().addClass('active')
|
|
||||||
this.$menu.html(items)
|
|
||||||
return this
|
|
||||||
}
|
|
||||||
|
|
||||||
, next: function (event) {
|
|
||||||
var active = this.$menu.find('.active').removeClass('active')
|
|
||||||
, next = active.next()
|
|
||||||
|
|
||||||
if (!next.length) {
|
|
||||||
next = $(this.$menu.find('li')[0])
|
|
||||||
}
|
|
||||||
|
|
||||||
next.addClass('active')
|
|
||||||
}
|
|
||||||
|
|
||||||
, prev: function (event) {
|
|
||||||
var active = this.$menu.find('.active').removeClass('active')
|
|
||||||
, prev = active.prev()
|
|
||||||
|
|
||||||
if (!prev.length) {
|
|
||||||
prev = this.$menu.find('li').last()
|
|
||||||
}
|
|
||||||
|
|
||||||
prev.addClass('active')
|
|
||||||
}
|
|
||||||
|
|
||||||
, listen: function () {
|
|
||||||
this.$element
|
|
||||||
.on('blur', $.proxy(this.blur, this))
|
|
||||||
.on('keypress', $.proxy(this.keypress, this))
|
|
||||||
.on('keyup', $.proxy(this.keyup, this))
|
|
||||||
|
|
||||||
if ($.browser.webkit || $.browser.msie) {
|
|
||||||
this.$element.on('keydown', $.proxy(this.keypress, this))
|
|
||||||
}
|
|
||||||
|
|
||||||
this.$menu
|
|
||||||
.on('click', $.proxy(this.click, this))
|
|
||||||
.on('mouseenter', 'li', $.proxy(this.mouseenter, this))
|
|
||||||
}
|
|
||||||
|
|
||||||
, keyup: function (e) {
|
|
||||||
e.stopPropagation()
|
|
||||||
e.preventDefault()
|
|
||||||
|
|
||||||
switch(e.keyCode) {
|
|
||||||
case 40: // down arrow
|
|
||||||
case 38: // up arrow
|
|
||||||
break
|
|
||||||
|
|
||||||
case 9: // tab
|
|
||||||
case 13: // enter
|
|
||||||
if (!this.shown) return
|
|
||||||
this.select()
|
|
||||||
break
|
|
||||||
|
|
||||||
case 27: // escape
|
|
||||||
this.hide()
|
|
||||||
break
|
|
||||||
|
|
||||||
default:
|
|
||||||
this.lookup()
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
, keypress: function (e) {
|
|
||||||
e.stopPropagation()
|
|
||||||
if (!this.shown) return
|
|
||||||
|
|
||||||
switch(e.keyCode) {
|
|
||||||
case 9: // tab
|
|
||||||
case 13: // enter
|
|
||||||
case 27: // escape
|
|
||||||
e.preventDefault()
|
|
||||||
break
|
|
||||||
|
|
||||||
case 38: // up arrow
|
|
||||||
e.preventDefault()
|
|
||||||
this.prev()
|
|
||||||
break
|
|
||||||
|
|
||||||
case 40: // down arrow
|
|
||||||
e.preventDefault()
|
|
||||||
this.next()
|
|
||||||
break
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
, blur: function (e) {
|
|
||||||
var that = this
|
|
||||||
e.stopPropagation()
|
|
||||||
e.preventDefault()
|
|
||||||
setTimeout(function () { that.hide() }, 150)
|
|
||||||
}
|
|
||||||
|
|
||||||
, click: function (e) {
|
|
||||||
e.stopPropagation()
|
|
||||||
e.preventDefault()
|
|
||||||
this.select()
|
|
||||||
}
|
|
||||||
|
|
||||||
, mouseenter: function (e) {
|
|
||||||
this.$menu.find('.active').removeClass('active')
|
|
||||||
$(e.currentTarget).addClass('active')
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* TYPEAHEAD PLUGIN DEFINITION
|
|
||||||
* =========================== */
|
|
||||||
|
|
||||||
$.fn.typeahead = function ( option ) {
|
|
||||||
return this.each(function () {
|
|
||||||
var $this = $(this)
|
|
||||||
, data = $this.data('typeahead')
|
|
||||||
, options = typeof option == 'object' && option
|
|
||||||
if (!data) $this.data('typeahead', (data = new Typeahead(this, options)))
|
|
||||||
if (typeof option == 'string') data[option]()
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
$.fn.typeahead.defaults = {
|
|
||||||
source: []
|
|
||||||
, items: 8
|
|
||||||
, menu: '<ul class="typeahead dropdown-menu"></ul>'
|
|
||||||
, item: '<li><a href="#"></a></li>'
|
|
||||||
}
|
|
||||||
|
|
||||||
$.fn.typeahead.Constructor = Typeahead
|
|
||||||
|
|
||||||
|
|
||||||
/* TYPEAHEAD DATA-API
|
|
||||||
* ================== */
|
|
||||||
|
|
||||||
$(function () {
|
|
||||||
$('body').on('focus.typeahead.data-api', '[data-provide="typeahead"]', function (e) {
|
|
||||||
var $this = $(this)
|
|
||||||
if ($this.data('typeahead')) return
|
|
||||||
e.preventDefault()
|
|
||||||
$this.typeahead($this.data())
|
|
||||||
})
|
|
||||||
})
|
|
||||||
|
|
||||||
}( window.jQuery );
|
|
||||||
Reference in New Issue
Block a user