diff --git a/js/bootstrap-rowlink.js b/js/bootstrap-rowlink.js new file mode 100644 index 00000000..ada784a7 --- /dev/null +++ b/js/bootstrap-rowlink.js @@ -0,0 +1,71 @@ +/* ============================================================ + * bootstrap-rowlink.js j1 + * http://jasny.github.com/bootstrap/javascript.html#rowlink + * ============================================================ + * Copyright 2011 Jasny BV, Netherlands. + * + * 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"; // jshint ;_; + + var Rowlink = function (element, options) { + options = $.extend({}, $.fn.rowlink.defaults, options) + var tr = element.nodeName == 'tr' ? $(element) : $(element).find('tr:has(td)') + + tr.each(function() { + var link = $(this).find(options.target).first() + if (!link.length) return + + var href = link.attr('href') + + $(this).find('td').not('.nolink').click(function() { + window.location = href; + }) + + $(this).addClass('rowlink') + link.replaceWith(link.html()) + }) + } + + + /* ROWLINK PLUGIN DEFINITION + * =========================== */ + + $.fn.rowlink = function (options) { + return this.each(function () { + var $this = $(this) + , data = $this.data('rowlink') + if (!data) $this.data('rowlink', (data = new Rowlink(this, options))) + }) + } + + $.fn.rowlink.defaults = { + target: "a" + } + + $.fn.rowlink.Constructor = Rowlink + + + /* ROWLINK DATA-API + * ================== */ + + $(function () { + $('[data-provides="rowlink"]').each(function () { + $(this).rowlink($(this).data()) + }) + }) + +}(window.jQuery) diff --git a/less/jasny/rowlink.less b/less/jasny/rowlink.less new file mode 100644 index 00000000..1ebe7c7b --- /dev/null +++ b/less/jasny/rowlink.less @@ -0,0 +1,20 @@ +// Rowlink.less +// CSS for rowlink plugin +// ---------------------- + +tr.rowlink td { + cursor: pointer; + &.nolink { + cursor: auto; + } +} + +.table tbody tr.rowlink:hover td { + background-color: darken(@tableBackgroundHover, 15%); +} + +a.rowlink { + color: inherit; + font: inherit; + text-decoration: inherit; +}