+++ /dev/null
-/*
- * Fuel UX Search
- * https://github.com/ExactTarget/fuelux
- *
- * Copyright (c) 2012 ExactTarget
- * Licensed under the MIT license.
- */
-
-define(['require','jquery'],function(require) {
-
- var $ = require('jquery');
-
-
- // SEARCH CONSTRUCTOR AND PROTOTYPE
-
- var Search = function (element, options) {
- this.$element = $(element);
- this.options = $.extend({}, $.fn.search.defaults, options);
-
- this.$button = this.$element.find('button')
- .on('click', $.proxy(this.buttonclicked, this));
-
- this.$input = this.$element.find('input')
- .on('keydown', $.proxy(this.keypress, this))
- .on('keyup', $.proxy(this.keypressed, this));
-
- this.$icon = this.$element.find('i');
- this.activeSearch = '';
- };
-
- Search.prototype = {
-
- constructor: Search,
-
- search: function (searchText) {
- this.$icon.attr('class', 'icon-remove');
- this.activeSearch = searchText;
- this.$element.trigger('searched', searchText);
- },
-
- clear: function () {
- this.$icon.attr('class', 'icon-search');
- this.activeSearch = '';
- this.$input.val('');
- this.$element.trigger('cleared');
- },
-
- action: function () {
- var val = this.$input.val();
- var inputEmptyOrUnchanged = val === '' || val === this.activeSearch;
-
- if (this.activeSearch && inputEmptyOrUnchanged) {
- this.clear();
- } else if (val) {
- this.search(val);
- }
- },
-
- buttonclicked: function (e) {
- e.preventDefault();
- if ($(e.currentTarget).is('.disabled, :disabled')) return;
- this.action();
- },
-
- keypress: function (e) {
- if (e.which === 13) {
- e.preventDefault();
- }
- },
-
- keypressed: function (e) {
- var val, inputPresentAndUnchanged;
-
- if (e.which === 13) {
- e.preventDefault();
- this.action();
- } else {
- val = this.$input.val();
- inputPresentAndUnchanged = val && (val === this.activeSearch);
- this.$icon.attr('class', inputPresentAndUnchanged ? 'icon-remove' : 'icon-search');
- }
- },
-
- disable: function () {
- this.$input.attr('disabled', 'disabled');
- this.$button.addClass('disabled');
- },
-
- enable: function () {
- this.$input.removeAttr('disabled');
- this.$button.removeClass('disabled');
- }
-
- };
-
-
- // SEARCH PLUGIN DEFINITION
-
- $.fn.search = function (option) {
- return this.each(function () {
- var $this = $(this);
- var data = $this.data('search');
- var options = typeof option === 'object' && option;
-
- if (!data) $this.data('search', (data = new Search(this, options)));
- if (typeof option === 'string') data[option]();
- });
- };
-
- $.fn.search.defaults = {};
-
- $.fn.search.Constructor = Search;
-
-
- // SEARCH DATA-API
-
- $(function () {
- $('body').on('mousedown.search.data-api', '.search', function () {
- var $this = $(this);
- if ($this.data('search')) return;
- $this.search($this.data());
- });
- });
-
-});