/* * Fuel UX Pillbox * https://github.com/ExactTarget/fuelux * * Copyright (c) 2012 ExactTarget * Licensed under the MIT license. */ define(['require','jquery'],function(require) { var $ = require('jquery'); // PILLBOX CONSTRUCTOR AND PROTOTYPE var Pillbox = function (element, options) { this.$element = $(element); this.options = $.extend({}, $.fn.pillbox.defaults, options); this.$element.on('click', 'li', $.proxy(this.itemclicked, this)); }; Pillbox.prototype = { constructor: Pillbox, items: function() { return this.$element.find('li').map(function() { var $this = $(this); return $.extend({ text: $this.text() }, $this.data()); }).get(); }, itemclicked: function (e) { $(e.currentTarget).remove(); e.preventDefault(); } }; // PILLBOX PLUGIN DEFINITION $.fn.pillbox = function (option) { var methodReturn; var $set = this.each(function () { var $this = $(this); var data = $this.data('pillbox'); var options = typeof option === 'object' && option; if (!data) $this.data('pillbox', (data = new Pillbox(this, options))); if (typeof option === 'string') methodReturn = data[option](); }); return (methodReturn === undefined) ? $set : methodReturn; }; $.fn.pillbox.defaults = {}; $.fn.pillbox.Constructor = Pillbox; // PILLBOX DATA-API $(function () { $('body').on('mousedown.pillbox.data-api', '.pillbox', function (e) { var $this = $(this); if ($this.data('pillbox')) return; $this.pillbox($this.data()); }); }); });