Commit c4b053a0 authored by Mark Otto's avatar Mark Otto

Merge branch 'master' into cursor_var

parents bf3be5a4 45b59f43
...@@ -10,7 +10,6 @@ source: docs ...@@ -10,7 +10,6 @@ source: docs
destination: _gh_pages destination: _gh_pages
host: 0.0.0.0 host: 0.0.0.0
port: 9001 port: 9001
baseurl: /
url: http://getbootstrap.com url: http://getbootstrap.com
encoding: UTF-8 encoding: UTF-8
......
...@@ -207,10 +207,10 @@ if (typeof jQuery === 'undefined') { ...@@ -207,10 +207,10 @@ if (typeof jQuery === 'undefined') {
if (data.resetText == null) $el.data('resetText', $el[val]()) if (data.resetText == null) $el.data('resetText', $el[val]())
$el[val](data[state] == null ? this.options[state] : data[state])
// push to event loop to allow forms to submit // push to event loop to allow forms to submit
setTimeout($.proxy(function () { setTimeout($.proxy(function () {
$el[val](data[state] == null ? this.options[state] : data[state])
if (state == 'loadingText') { if (state == 'loadingText') {
this.isLoading = true this.isLoading = true
$el.addClass(d).attr(d, d) $el.addClass(d).attr(d, d)
...@@ -496,7 +496,7 @@ if (typeof jQuery === 'undefined') { ...@@ -496,7 +496,7 @@ if (typeof jQuery === 'undefined') {
// CAROUSEL DATA-API // CAROUSEL DATA-API
// ================= // =================
$(document).on('click.bs.carousel.data-api', '[data-slide], [data-slide-to]', function (e) { var clickHandler = function (e) {
var href var href
var $this = $(this) var $this = $(this)
var $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) // strip for ie7 var $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) // strip for ie7
...@@ -512,7 +512,11 @@ if (typeof jQuery === 'undefined') { ...@@ -512,7 +512,11 @@ if (typeof jQuery === 'undefined') {
} }
e.preventDefault() e.preventDefault()
}) }
$(document)
.on('click.bs.carousel.data-api', '[data-slide]', clickHandler)
.on('click.bs.carousel.data-api', '[data-slide-to]', clickHandler)
$(window).on('load', function () { $(window).on('load', function () {
$('[data-ride="carousel"]').each(function () { $('[data-ride="carousel"]').each(function () {
...@@ -541,9 +545,15 @@ if (typeof jQuery === 'undefined') { ...@@ -541,9 +545,15 @@ if (typeof jQuery === 'undefined') {
var Collapse = function (element, options) { var Collapse = function (element, options) {
this.$element = $(element) this.$element = $(element)
this.options = $.extend({}, Collapse.DEFAULTS, options) this.options = $.extend({}, Collapse.DEFAULTS, options)
this.$trigger = $(this.options.trigger).filter('[href="#' + element.id + '"], [data-target="#' + element.id + '"]')
this.transitioning = null this.transitioning = null
if (this.options.parent) this.$parent = $(this.options.parent) if (this.options.parent) {
this.$parent = this.getParent()
} else {
this.addAriaAndCollapsedClass(this.$element, this.$trigger)
}
if (this.options.toggle) this.toggle() if (this.options.toggle) this.toggle()
} }
...@@ -552,7 +562,8 @@ if (typeof jQuery === 'undefined') { ...@@ -552,7 +562,8 @@ if (typeof jQuery === 'undefined') {
Collapse.TRANSITION_DURATION = 350 Collapse.TRANSITION_DURATION = 350
Collapse.DEFAULTS = { Collapse.DEFAULTS = {
toggle: true toggle: true,
trigger: '[data-toggle="collapse"]'
} }
Collapse.prototype.dimension = function () { Collapse.prototype.dimension = function () {
...@@ -587,6 +598,10 @@ if (typeof jQuery === 'undefined') { ...@@ -587,6 +598,10 @@ if (typeof jQuery === 'undefined') {
.addClass('collapsing')[dimension](0) .addClass('collapsing')[dimension](0)
.attr('aria-expanded', true) .attr('aria-expanded', true)
this.$trigger
.removeClass('collapsed')
.attr('aria-expanded', true)
this.transitioning = 1 this.transitioning = 1
var complete = function () { var complete = function () {
...@@ -623,6 +638,10 @@ if (typeof jQuery === 'undefined') { ...@@ -623,6 +638,10 @@ if (typeof jQuery === 'undefined') {
.removeClass('collapse in') .removeClass('collapse in')
.attr('aria-expanded', false) .attr('aria-expanded', false)
this.$trigger
.addClass('collapsed')
.attr('aria-expanded', false)
this.transitioning = 1 this.transitioning = 1
var complete = function () { var complete = function () {
...@@ -645,6 +664,33 @@ if (typeof jQuery === 'undefined') { ...@@ -645,6 +664,33 @@ if (typeof jQuery === 'undefined') {
this[this.$element.hasClass('in') ? 'hide' : 'show']() this[this.$element.hasClass('in') ? 'hide' : 'show']()
} }
Collapse.prototype.getParent = function () {
return $(this.options.parent)
.find('[data-toggle="collapse"][data-parent="' + this.options.parent + '"]')
.each($.proxy(function (i, element) {
var $element = $(element)
this.addAriaAndCollapsedClass(getTargetFromTrigger($element), $element)
}, this))
.end()
}
Collapse.prototype.addAriaAndCollapsedClass = function ($element, $trigger) {
var isOpen = $element.hasClass('in')
$element.attr('aria-expanded', isOpen)
$trigger
.toggleClass('collapsed', !isOpen)
.attr('aria-expanded', isOpen)
}
function getTargetFromTrigger($trigger) {
var href
var target = $trigger.attr('data-target')
|| (href = $trigger.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') // strip for ie7
return $(target)
}
// COLLAPSE PLUGIN DEFINITION // COLLAPSE PLUGIN DEFINITION
// ========================== // ==========================
...@@ -680,22 +726,13 @@ if (typeof jQuery === 'undefined') { ...@@ -680,22 +726,13 @@ if (typeof jQuery === 'undefined') {
// ================= // =================
$(document).on('click.bs.collapse.data-api', '[data-toggle="collapse"]', function (e) { $(document).on('click.bs.collapse.data-api', '[data-toggle="collapse"]', function (e) {
var href
var $this = $(this) var $this = $(this)
var target = $this.attr('data-target')
|| e.preventDefault()
|| (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') // strip for ie7
var $target = $(target)
var data = $target.data('bs.collapse')
var option = data ? 'toggle' : $this.data()
var parent = $this.attr('data-parent')
var $parent = parent && $(parent)
if (!data || !data.transitioning) { if (!$this.attr('data-target')) e.preventDefault()
if ($parent) $parent.find('[data-toggle="collapse"][data-parent="' + parent + '"]').not($this).addClass('collapsed').attr('aria-expanded', false)
var isCollapsed = $target.hasClass('in') var $target = getTargetFromTrigger($this)
$this.toggleClass('collapsed', isCollapsed).attr('aria-expanded', !isCollapsed) var data = $target.data('bs.collapse')
} var option = data ? 'toggle' : $.extend({}, $this.data(), { trigger: this })
Plugin.call($target, option) Plugin.call($target, option)
}) })
...@@ -858,7 +895,9 @@ if (typeof jQuery === 'undefined') { ...@@ -858,7 +895,9 @@ if (typeof jQuery === 'undefined') {
.on('click.bs.dropdown.data-api', clearMenus) .on('click.bs.dropdown.data-api', clearMenus)
.on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() }) .on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })
.on('click.bs.dropdown.data-api', toggle, Dropdown.prototype.toggle) .on('click.bs.dropdown.data-api', toggle, Dropdown.prototype.toggle)
.on('keydown.bs.dropdown.data-api', toggle + ', [role="menu"], [role="listbox"]', Dropdown.prototype.keydown) .on('keydown.bs.dropdown.data-api', toggle, Dropdown.prototype.keydown)
.on('keydown.bs.dropdown.data-api', '[role="menu"]', Dropdown.prototype.keydown)
.on('keydown.bs.dropdown.data-api', '[role="listbox"]', Dropdown.prototype.keydown)
}(jQuery); }(jQuery);
...@@ -2062,10 +2101,14 @@ if (typeof jQuery === 'undefined') { ...@@ -2062,10 +2101,14 @@ if (typeof jQuery === 'undefined') {
// TAB DATA-API // TAB DATA-API
// ============ // ============
$(document).on('click.bs.tab.data-api', '[data-toggle="tab"], [data-toggle="pill"]', function (e) { var clickHandler = function (e) {
e.preventDefault() e.preventDefault()
Plugin.call($(this), 'show') Plugin.call($(this), 'show')
}) }
$(document)
.on('click.bs.tab.data-api', '[data-toggle="tab"]', clickHandler)
.on('click.bs.tab.data-api', '[data-toggle="pill"]', clickHandler)
}(jQuery); }(jQuery);
......
This diff is collapsed.
...@@ -202,16 +202,16 @@ ...@@ -202,16 +202,16 @@
<p>Just wrap a series of <code>.btn</code>s in <code>.btn-group.btn-group-justified</code>.</p> <p>Just wrap a series of <code>.btn</code>s in <code>.btn-group.btn-group-justified</code>.</p>
<div class="bs-example"> <div class="bs-example">
<div class="btn-group btn-group-justified"> <div class="btn-group btn-group-justified">
<a class="btn btn-default" role="button">Left</a> <a href="#" class="btn btn-default" role="button">Left</a>
<a class="btn btn-default" role="button">Middle</a> <a href="#" class="btn btn-default" role="button">Middle</a>
<a class="btn btn-default" role="button">Right</a> <a href="#" class="btn btn-default" role="button">Right</a>
</div> </div>
<br> <br>
<div class="btn-group btn-group-justified"> <div class="btn-group btn-group-justified">
<a class="btn btn-default" role="button">Left</a> <a href="#" class="btn btn-default" role="button">Left</a>
<a class="btn btn-default" role="button">Middle</a> <a href="#" class="btn btn-default" role="button">Middle</a>
<div class="btn-group"> <div class="btn-group">
<a class="btn btn-default dropdown-toggle" data-toggle="dropdown"> <a href="#" class="btn btn-default dropdown-toggle" data-toggle="dropdown">
Dropdown <span class="caret"></span> Dropdown <span class="caret"></span>
</a> </a>
<ul class="dropdown-menu" role="menu"> <ul class="dropdown-menu" role="menu">
......
...@@ -6,14 +6,14 @@ ...@@ -6,14 +6,14 @@
<div class="jumbotron"> <div class="jumbotron">
<h1>Hello, world!</h1> <h1>Hello, world!</h1>
<p>This is a simple hero unit, a simple jumbotron-style component for calling extra attention to featured content or information.</p> <p>This is a simple hero unit, a simple jumbotron-style component for calling extra attention to featured content or information.</p>
<p><a class="btn btn-primary btn-lg" role="button">Learn more</a></p> <p><a class="btn btn-primary btn-lg" href="#" role="button">Learn more</a></p>
</div> </div>
</div> </div>
{% highlight html %} {% highlight html %}
<div class="jumbotron"> <div class="jumbotron">
<h1>Hello, world!</h1> <h1>Hello, world!</h1>
<p>...</p> <p>...</p>
<p><a class="btn btn-primary btn-lg" role="button">Learn more</a></p> <p><a class="btn btn-primary btn-lg" href="#" role="button">Learn more</a></p>
</div> </div>
{% endhighlight %} {% endhighlight %}
<p>To make the jumbotron full width, and without rounded corners, place it outside all <code>.container</code>s and instead add a <code>.container</code> within.</p> <p>To make the jumbotron full width, and without rounded corners, place it outside all <code>.container</code>s and instead add a <code>.container</code> within.</p>
......
...@@ -60,7 +60,7 @@ ...@@ -60,7 +60,7 @@
<p><strong class="text-danger">Justified navbar nav links are currently not supported.</strong></p> <p><strong class="text-danger">Justified navbar nav links are currently not supported.</strong></p>
<div class="bs-callout bs-callout-warning"> <div class="bs-callout bs-callout-warning">
<h4>Safari and responsive justified navs</h4> <h4>Safari and responsive justified navs</h4>
<p>As of v7.1, Safari exhibits a bug in which resizing your browser horizontally causes rendering errors in the justified nav that are cleared upon refreshing. This bug is also shown in the <a href="../examples/justified-nav/">justified nav example</a>.</p> <p>As of v8.0, Safari exhibits a bug in which resizing your browser horizontally causes rendering errors in the justified nav that are cleared upon refreshing. This bug is also shown in the <a href="../examples/justified-nav/">justified nav example</a>.</p>
</div> </div>
<div class="bs-example"> <div class="bs-example">
<ul class="nav nav-tabs nav-justified" role="tablist"> <ul class="nav nav-tabs nav-justified" role="tablist">
......
This diff is collapsed.
...@@ -2,5 +2,5 @@ ...@@ -2,5 +2,5 @@
<h1 id="tools" class="page-header">Tools</h1> <h1 id="tools" class="page-header">Tools</h1>
<h2 id="tools-bootlint">Bootlint</h2> <h2 id="tools-bootlint">Bootlint</h2>
<p><strong><a href="https://github.com/twbs/bootlint">Bootlint</a></strong> is an official Bootstrap HTML <a href="http://en.wikipedia.org/wiki/Lint_(software)">linter</a> tool. It automatically checks for several common HTML mistakes in webpages that are using Bootstrap in a fairly "vanilla" way. Vanilla Bootstrap's components/widgets require their parts of the DOM to conform to certain structures. Bootlint checks that instances of Bootstrap components have correctly-structured HTML. Consider adding Bootlint to your Bootstrap web development toolchain so that none of the common mistakes slow down your project's development.</p> <p><strong><a href="https://github.com/twbs/bootlint">Bootlint</a></strong> is the official Bootstrap HTML <a href="http://en.wikipedia.org/wiki/Lint_(software)">linter</a> tool. It automatically checks for several common HTML mistakes in webpages that are using Bootstrap in a fairly "vanilla" way. Vanilla Bootstrap's components/widgets require their parts of the DOM to conform to certain structures. Bootlint checks that instances of Bootstrap components have correctly-structured HTML. Consider adding Bootlint to your Bootstrap web development toolchain so that none of the common mistakes slow down your project's development.</p>
</div> </div>
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
<meta name="author" content="Mark Otto, Jacob Thornton, and Bootstrap contributors"> <meta name="author" content="Mark Otto, Jacob Thornton, and Bootstrap contributors">
<title> <title>
{% if page.url == site.baseurl %} {% if page.layout == "home" %}
{{ page.title }} {{ page.title }}
{% else %} {% else %}
{{ page.title }} &middot; Bootstrap {{ page.title }} &middot; Bootstrap
......
This diff is collapsed.
...@@ -638,8 +638,6 @@ body { ...@@ -638,8 +638,6 @@ body {
.bs-docs-sidebar.affix { .bs-docs-sidebar.affix {
position: fixed; /* Undo the static from mobile first approach */ position: fixed; /* Undo the static from mobile first approach */
top: 20px; top: 20px;
bottom: 20px;
overflow-y: auto;
} }
.bs-docs-sidebar.affix-bottom { .bs-docs-sidebar.affix-bottom {
position: absolute; /* Undo the static from mobile first approach */ position: absolute; /* Undo the static from mobile first approach */
......
This diff is collapsed.
This diff is collapsed.
...@@ -466,7 +466,7 @@ window.onload = function () { // wait for load in a dumb way because B-0 ...@@ -466,7 +466,7 @@ window.onload = function () { // wait for load in a dumb way because B-0
generateZip(generateCSS(preamble), generateJS(preamble), generateFonts(), configJson, function (blob) { generateZip(generateCSS(preamble), generateJS(preamble), generateFonts(), configJson, function (blob) {
$compileBtn.removeAttr('disabled') $compileBtn.removeAttr('disabled')
saveAs(blob, 'bootstrap.zip') setTimeout(function () { saveAs(blob, 'bootstrap.zip') }, 0)
}) })
}) })
}); });
......
...@@ -113,6 +113,12 @@ lead: "A list of the browser bugs that Bootstrap is currently grappling with." ...@@ -113,6 +113,12 @@ lead: "A list of the browser bugs that Bootstrap is currently grappling with."
<td>(No public bug tracker)</td> <td>(No public bug tracker)</td>
<td><a href="https://github.com/twbs/bootstrap/issues/9774">#9774</a></td> <td><a href="https://github.com/twbs/bootstrap/issues/9774">#9774</a></td>
</tr> </tr>
<tr>
<td>Safari</td>
<td><code>transform: translate3d(0, 0, 0);</code> iOS bug</td>
<td><a href="https://bugs.webkit.org/show_bug.cgi?id=138162">WebKit bug #138162</a>, <a href="http://openradar.appspot.com/18804973">Apple Safari Radar #18804973</a></td>
<td><a href="https://github.com/twbs/bootstrap/pull/14603">#14603</a></td>
</tr>
</tbody> </tbody>
</table> </table>
</div> </div>
......
...@@ -207,10 +207,10 @@ if (typeof jQuery === 'undefined') { ...@@ -207,10 +207,10 @@ if (typeof jQuery === 'undefined') {
if (data.resetText == null) $el.data('resetText', $el[val]()) if (data.resetText == null) $el.data('resetText', $el[val]())
$el[val](data[state] == null ? this.options[state] : data[state])
// push to event loop to allow forms to submit // push to event loop to allow forms to submit
setTimeout($.proxy(function () { setTimeout($.proxy(function () {
$el[val](data[state] == null ? this.options[state] : data[state])
if (state == 'loadingText') { if (state == 'loadingText') {
this.isLoading = true this.isLoading = true
$el.addClass(d).attr(d, d) $el.addClass(d).attr(d, d)
...@@ -496,7 +496,7 @@ if (typeof jQuery === 'undefined') { ...@@ -496,7 +496,7 @@ if (typeof jQuery === 'undefined') {
// CAROUSEL DATA-API // CAROUSEL DATA-API
// ================= // =================
$(document).on('click.bs.carousel.data-api', '[data-slide], [data-slide-to]', function (e) { var clickHandler = function (e) {
var href var href
var $this = $(this) var $this = $(this)
var $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) // strip for ie7 var $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) // strip for ie7
...@@ -512,7 +512,11 @@ if (typeof jQuery === 'undefined') { ...@@ -512,7 +512,11 @@ if (typeof jQuery === 'undefined') {
} }
e.preventDefault() e.preventDefault()
}) }
$(document)
.on('click.bs.carousel.data-api', '[data-slide]', clickHandler)
.on('click.bs.carousel.data-api', '[data-slide-to]', clickHandler)
$(window).on('load', function () { $(window).on('load', function () {
$('[data-ride="carousel"]').each(function () { $('[data-ride="carousel"]').each(function () {
...@@ -541,9 +545,15 @@ if (typeof jQuery === 'undefined') { ...@@ -541,9 +545,15 @@ if (typeof jQuery === 'undefined') {
var Collapse = function (element, options) { var Collapse = function (element, options) {
this.$element = $(element) this.$element = $(element)
this.options = $.extend({}, Collapse.DEFAULTS, options) this.options = $.extend({}, Collapse.DEFAULTS, options)
this.$trigger = $(this.options.trigger).filter('[href="#' + element.id + '"], [data-target="#' + element.id + '"]')
this.transitioning = null this.transitioning = null
if (this.options.parent) this.$parent = $(this.options.parent) if (this.options.parent) {
this.$parent = this.getParent()
} else {
this.addAriaAndCollapsedClass(this.$element, this.$trigger)
}
if (this.options.toggle) this.toggle() if (this.options.toggle) this.toggle()
} }
...@@ -552,7 +562,8 @@ if (typeof jQuery === 'undefined') { ...@@ -552,7 +562,8 @@ if (typeof jQuery === 'undefined') {
Collapse.TRANSITION_DURATION = 350 Collapse.TRANSITION_DURATION = 350
Collapse.DEFAULTS = { Collapse.DEFAULTS = {
toggle: true toggle: true,
trigger: '[data-toggle="collapse"]'
} }
Collapse.prototype.dimension = function () { Collapse.prototype.dimension = function () {
...@@ -587,6 +598,10 @@ if (typeof jQuery === 'undefined') { ...@@ -587,6 +598,10 @@ if (typeof jQuery === 'undefined') {
.addClass('collapsing')[dimension](0) .addClass('collapsing')[dimension](0)
.attr('aria-expanded', true) .attr('aria-expanded', true)
this.$trigger
.removeClass('collapsed')
.attr('aria-expanded', true)
this.transitioning = 1 this.transitioning = 1
var complete = function () { var complete = function () {
...@@ -623,6 +638,10 @@ if (typeof jQuery === 'undefined') { ...@@ -623,6 +638,10 @@ if (typeof jQuery === 'undefined') {
.removeClass('collapse in') .removeClass('collapse in')
.attr('aria-expanded', false) .attr('aria-expanded', false)
this.$trigger
.addClass('collapsed')
.attr('aria-expanded', false)
this.transitioning = 1 this.transitioning = 1
var complete = function () { var complete = function () {
...@@ -645,6 +664,33 @@ if (typeof jQuery === 'undefined') { ...@@ -645,6 +664,33 @@ if (typeof jQuery === 'undefined') {
this[this.$element.hasClass('in') ? 'hide' : 'show']() this[this.$element.hasClass('in') ? 'hide' : 'show']()
} }
Collapse.prototype.getParent = function () {
return $(this.options.parent)
.find('[data-toggle="collapse"][data-parent="' + this.options.parent + '"]')
.each($.proxy(function (i, element) {
var $element = $(element)
this.addAriaAndCollapsedClass(getTargetFromTrigger($element), $element)
}, this))
.end()
}
Collapse.prototype.addAriaAndCollapsedClass = function ($element, $trigger) {
var isOpen = $element.hasClass('in')
$element.attr('aria-expanded', isOpen)
$trigger
.toggleClass('collapsed', !isOpen)
.attr('aria-expanded', isOpen)
}
function getTargetFromTrigger($trigger) {
var href
var target = $trigger.attr('data-target')
|| (href = $trigger.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') // strip for ie7
return $(target)
}
// COLLAPSE PLUGIN DEFINITION // COLLAPSE PLUGIN DEFINITION
// ========================== // ==========================
...@@ -680,22 +726,13 @@ if (typeof jQuery === 'undefined') { ...@@ -680,22 +726,13 @@ if (typeof jQuery === 'undefined') {
// ================= // =================
$(document).on('click.bs.collapse.data-api', '[data-toggle="collapse"]', function (e) { $(document).on('click.bs.collapse.data-api', '[data-toggle="collapse"]', function (e) {
var href
var $this = $(this) var $this = $(this)
var target = $this.attr('data-target')
|| e.preventDefault()
|| (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') // strip for ie7
var $target = $(target)
var data = $target.data('bs.collapse')
var option = data ? 'toggle' : $this.data()
var parent = $this.attr('data-parent')
var $parent = parent && $(parent)
if (!data || !data.transitioning) { if (!$this.attr('data-target')) e.preventDefault()
if ($parent) $parent.find('[data-toggle="collapse"][data-parent="' + parent + '"]').not($this).addClass('collapsed').attr('aria-expanded', false)
var isCollapsed = $target.hasClass('in') var $target = getTargetFromTrigger($this)
$this.toggleClass('collapsed', isCollapsed).attr('aria-expanded', !isCollapsed) var data = $target.data('bs.collapse')
} var option = data ? 'toggle' : $.extend({}, $this.data(), { trigger: this })
Plugin.call($target, option) Plugin.call($target, option)
}) })
...@@ -858,7 +895,9 @@ if (typeof jQuery === 'undefined') { ...@@ -858,7 +895,9 @@ if (typeof jQuery === 'undefined') {
.on('click.bs.dropdown.data-api', clearMenus) .on('click.bs.dropdown.data-api', clearMenus)
.on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() }) .on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })
.on('click.bs.dropdown.data-api', toggle, Dropdown.prototype.toggle) .on('click.bs.dropdown.data-api', toggle, Dropdown.prototype.toggle)
.on('keydown.bs.dropdown.data-api', toggle + ', [role="menu"], [role="listbox"]', Dropdown.prototype.keydown) .on('keydown.bs.dropdown.data-api', toggle, Dropdown.prototype.keydown)
.on('keydown.bs.dropdown.data-api', '[role="menu"]', Dropdown.prototype.keydown)
.on('keydown.bs.dropdown.data-api', '[role="listbox"]', Dropdown.prototype.keydown)
}(jQuery); }(jQuery);
...@@ -2062,10 +2101,14 @@ if (typeof jQuery === 'undefined') { ...@@ -2062,10 +2101,14 @@ if (typeof jQuery === 'undefined') {
// TAB DATA-API // TAB DATA-API
// ============ // ============
$(document).on('click.bs.tab.data-api', '[data-toggle="tab"], [data-toggle="pill"]', function (e) { var clickHandler = function (e) {
e.preventDefault() e.preventDefault()
Plugin.call($(this), 'show') Plugin.call($(this), 'show')
}) }
$(document)
.on('click.bs.tab.data-api', '[data-toggle="tab"]', clickHandler)
.on('click.bs.tab.data-api', '[data-toggle="pill"]', clickHandler)
}(jQuery); }(jQuery);
......
This diff is collapsed.
...@@ -59,7 +59,7 @@ ...@@ -59,7 +59,7 @@
<div class="container"> <div class="container">
<h1>Hello, world!</h1> <h1>Hello, world!</h1>
<p>This is a template for a simple marketing or informational website. It includes a large callout called a jumbotron and three supporting pieces of content. Use it as a starting point to create something more unique.</p> <p>This is a template for a simple marketing or informational website. It includes a large callout called a jumbotron and three supporting pieces of content. Use it as a starting point to create something more unique.</p>
<p><a class="btn btn-primary btn-lg" role="button">Learn more &raquo;</a></p> <p><a class="btn btn-primary btn-lg" href="#" role="button">Learn more &raquo;</a></p>
</div> </div>
</div> </div>
......
...@@ -54,7 +54,7 @@ ...@@ -54,7 +54,7 @@
<div class="row"> <div class="row">
<div class="col-lg-4"> <div class="col-lg-4">
<h2>Safari bug warning!</h2> <h2>Safari bug warning!</h2>
<p class="text-danger">As of v7.1, Safari exhibits a bug in which resizing your browser horizontally causes rendering errors in the justified nav that are cleared upon refreshing.</p> <p class="text-danger">As of v8.0, Safari exhibits a bug in which resizing your browser horizontally causes rendering errors in the justified nav that are cleared upon refreshing.</p>
<p>Donec id elit non mi porta gravida at eget metus. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Etiam porta sem malesuada magna mollis euismod. Donec sed odio dui. </p> <p>Donec id elit non mi porta gravida at eget metus. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Etiam porta sem malesuada magna mollis euismod. Donec sed odio dui. </p>
<p><a class="btn btn-primary" href="#" role="button">View details &raquo;</a></p> <p><a class="btn btn-primary" href="#" role="button">View details &raquo;</a></p>
</div> </div>
......
...@@ -6,11 +6,13 @@ ...@@ -6,11 +6,13 @@
*/ */
'use strict'; 'use strict';
var markdown = require('markdown').markdown; var Remarkable = require('remarkable');
function markdown2html(markdownString) { function markdown2html(markdownString) {
var md = new Remarkable();
// the slice removes the <p>...</p> wrapper output by Markdown processor // the slice removes the <p>...</p> wrapper output by Markdown processor
return markdown.toHTML(markdownString.trim()).slice(3, -4); return md.render(markdownString.trim()).slice(3, -5);
} }
......
...@@ -35,10 +35,10 @@ ...@@ -35,10 +35,10 @@
if (data.resetText == null) $el.data('resetText', $el[val]()) if (data.resetText == null) $el.data('resetText', $el[val]())
$el[val](data[state] == null ? this.options[state] : data[state])
// push to event loop to allow forms to submit // push to event loop to allow forms to submit
setTimeout($.proxy(function () { setTimeout($.proxy(function () {
$el[val](data[state] == null ? this.options[state] : data[state])
if (state == 'loadingText') { if (state == 'loadingText') {
this.isLoading = true this.isLoading = true
$el.addClass(d).attr(d, d) $el.addClass(d).attr(d, d)
......
...@@ -207,7 +207,7 @@ ...@@ -207,7 +207,7 @@
// CAROUSEL DATA-API // CAROUSEL DATA-API
// ================= // =================
$(document).on('click.bs.carousel.data-api', '[data-slide], [data-slide-to]', function (e) { var clickHandler = function (e) {
var href var href
var $this = $(this) var $this = $(this)
var $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) // strip for ie7 var $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) // strip for ie7
...@@ -223,7 +223,11 @@ ...@@ -223,7 +223,11 @@
} }
e.preventDefault() e.preventDefault()
}) }
$(document)
.on('click.bs.carousel.data-api', '[data-slide]', clickHandler)
.on('click.bs.carousel.data-api', '[data-slide-to]', clickHandler)
$(window).on('load', function () { $(window).on('load', function () {
$('[data-ride="carousel"]').each(function () { $('[data-ride="carousel"]').each(function () {
......
...@@ -16,9 +16,15 @@ ...@@ -16,9 +16,15 @@
var Collapse = function (element, options) { var Collapse = function (element, options) {
this.$element = $(element) this.$element = $(element)
this.options = $.extend({}, Collapse.DEFAULTS, options) this.options = $.extend({}, Collapse.DEFAULTS, options)
this.$trigger = $(this.options.trigger).filter('[href="#' + element.id + '"], [data-target="#' + element.id + '"]')
this.transitioning = null this.transitioning = null
if (this.options.parent) this.$parent = $(this.options.parent) if (this.options.parent) {
this.$parent = this.getParent()
} else {
this.addAriaAndCollapsedClass(this.$element, this.$trigger)
}
if (this.options.toggle) this.toggle() if (this.options.toggle) this.toggle()
} }
...@@ -27,7 +33,8 @@ ...@@ -27,7 +33,8 @@
Collapse.TRANSITION_DURATION = 350 Collapse.TRANSITION_DURATION = 350
Collapse.DEFAULTS = { Collapse.DEFAULTS = {
toggle: true toggle: true,
trigger: '[data-toggle="collapse"]'
} }
Collapse.prototype.dimension = function () { Collapse.prototype.dimension = function () {
...@@ -62,6 +69,10 @@ ...@@ -62,6 +69,10 @@
.addClass('collapsing')[dimension](0) .addClass('collapsing')[dimension](0)
.attr('aria-expanded', true) .attr('aria-expanded', true)
this.$trigger
.removeClass('collapsed')
.attr('aria-expanded', true)
this.transitioning = 1 this.transitioning = 1
var complete = function () { var complete = function () {
...@@ -98,6 +109,10 @@ ...@@ -98,6 +109,10 @@
.removeClass('collapse in') .removeClass('collapse in')
.attr('aria-expanded', false) .attr('aria-expanded', false)
this.$trigger
.addClass('collapsed')
.attr('aria-expanded', false)
this.transitioning = 1 this.transitioning = 1
var complete = function () { var complete = function () {
...@@ -120,6 +135,33 @@ ...@@ -120,6 +135,33 @@
this[this.$element.hasClass('in') ? 'hide' : 'show']() this[this.$element.hasClass('in') ? 'hide' : 'show']()
} }
Collapse.prototype.getParent = function () {
return $(this.options.parent)
.find('[data-toggle="collapse"][data-parent="' + this.options.parent + '"]')
.each($.proxy(function (i, element) {
var $element = $(element)
this.addAriaAndCollapsedClass(getTargetFromTrigger($element), $element)
}, this))
.end()
}
Collapse.prototype.addAriaAndCollapsedClass = function ($element, $trigger) {
var isOpen = $element.hasClass('in')
$element.attr('aria-expanded', isOpen)
$trigger
.toggleClass('collapsed', !isOpen)
.attr('aria-expanded', isOpen)
}
function getTargetFromTrigger($trigger) {
var href
var target = $trigger.attr('data-target')
|| (href = $trigger.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') // strip for ie7
return $(target)
}
// COLLAPSE PLUGIN DEFINITION // COLLAPSE PLUGIN DEFINITION
// ========================== // ==========================
...@@ -155,22 +197,13 @@ ...@@ -155,22 +197,13 @@
// ================= // =================
$(document).on('click.bs.collapse.data-api', '[data-toggle="collapse"]', function (e) { $(document).on('click.bs.collapse.data-api', '[data-toggle="collapse"]', function (e) {
var href
var $this = $(this) var $this = $(this)
var target = $this.attr('data-target')
|| e.preventDefault()
|| (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') // strip for ie7
var $target = $(target)
var data = $target.data('bs.collapse')
var option = data ? 'toggle' : $this.data()
var parent = $this.attr('data-parent')
var $parent = parent && $(parent)
if (!data || !data.transitioning) { if (!$this.attr('data-target')) e.preventDefault()
if ($parent) $parent.find('[data-toggle="collapse"][data-parent="' + parent + '"]').not($this).addClass('collapsed').attr('aria-expanded', false)
var isCollapsed = $target.hasClass('in') var $target = getTargetFromTrigger($this)
$this.toggleClass('collapsed', isCollapsed).attr('aria-expanded', !isCollapsed) var data = $target.data('bs.collapse')
} var option = data ? 'toggle' : $.extend({}, $this.data(), { trigger: this })
Plugin.call($target, option) Plugin.call($target, option)
}) })
......
...@@ -154,6 +154,8 @@ ...@@ -154,6 +154,8 @@
.on('click.bs.dropdown.data-api', clearMenus) .on('click.bs.dropdown.data-api', clearMenus)
.on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() }) .on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })
.on('click.bs.dropdown.data-api', toggle, Dropdown.prototype.toggle) .on('click.bs.dropdown.data-api', toggle, Dropdown.prototype.toggle)
.on('keydown.bs.dropdown.data-api', toggle + ', [role="menu"], [role="listbox"]', Dropdown.prototype.keydown) .on('keydown.bs.dropdown.data-api', toggle, Dropdown.prototype.keydown)
.on('keydown.bs.dropdown.data-api', '[role="menu"]', Dropdown.prototype.keydown)
.on('keydown.bs.dropdown.data-api', '[role="listbox"]', Dropdown.prototype.keydown)
}(jQuery); }(jQuery);
...@@ -141,9 +141,13 @@ ...@@ -141,9 +141,13 @@
// TAB DATA-API // TAB DATA-API
// ============ // ============
$(document).on('click.bs.tab.data-api', '[data-toggle="tab"], [data-toggle="pill"]', function (e) { var clickHandler = function (e) {
e.preventDefault() e.preventDefault()
Plugin.call($(this), 'show') Plugin.call($(this), 'show')
}) }
$(document)
.on('click.bs.tab.data-api', '[data-toggle="tab"]', clickHandler)
.on('click.bs.tab.data-api', '[data-toggle="pill"]', clickHandler)
}(jQuery); }(jQuery);
...@@ -33,9 +33,9 @@ $(function () { ...@@ -33,9 +33,9 @@ $(function () {
var $btn = $('<button class="btn" data-loading-text="fat">mdo</button>') var $btn = $('<button class="btn" data-loading-text="fat">mdo</button>')
equal($btn.html(), 'mdo', 'btn text equals mdo') equal($btn.html(), 'mdo', 'btn text equals mdo')
$btn.bootstrapButton('loading') $btn.bootstrapButton('loading')
equal($btn.html(), 'fat', 'btn text equals fat')
stop() stop()
setTimeout(function () { setTimeout(function () {
equal($btn.html(), 'fat', 'btn text equals fat')
ok($btn[0].hasAttribute('disabled'), 'btn is disabled') ok($btn[0].hasAttribute('disabled'), 'btn is disabled')
ok($btn.hasClass('disabled'), 'btn has disabled class') ok($btn.hasClass('disabled'), 'btn has disabled class')
start() start()
...@@ -46,16 +46,16 @@ $(function () { ...@@ -46,16 +46,16 @@ $(function () {
var $btn = $('<button class="btn" data-loading-text="fat">mdo</button>') var $btn = $('<button class="btn" data-loading-text="fat">mdo</button>')
equal($btn.html(), 'mdo', 'btn text equals mdo') equal($btn.html(), 'mdo', 'btn text equals mdo')
$btn.bootstrapButton('loading') $btn.bootstrapButton('loading')
equal($btn.html(), 'fat', 'btn text equals fat')
stop() stop()
setTimeout(function () { setTimeout(function () {
equal($btn.html(), 'fat', 'btn text equals fat')
ok($btn[0].hasAttribute('disabled'), 'btn is disabled') ok($btn[0].hasAttribute('disabled'), 'btn is disabled')
ok($btn.hasClass('disabled'), 'btn has disabled class') ok($btn.hasClass('disabled'), 'btn has disabled class')
start() start()
stop() stop()
$btn.bootstrapButton('reset') $btn.bootstrapButton('reset')
equal($btn.html(), 'mdo', 'btn text equals mdo')
setTimeout(function () { setTimeout(function () {
equal($btn.html(), 'mdo', 'btn text equals mdo')
ok(!$btn[0].hasAttribute('disabled'), 'btn is not disabled') ok(!$btn[0].hasAttribute('disabled'), 'btn is not disabled')
ok(!$btn.hasClass('disabled'), 'btn does not have disabled class') ok(!$btn.hasClass('disabled'), 'btn does not have disabled class')
start() start()
...@@ -67,16 +67,16 @@ $(function () { ...@@ -67,16 +67,16 @@ $(function () {
var $btn = $('<button class="btn" data-loading-text="fat"/>') var $btn = $('<button class="btn" data-loading-text="fat"/>')
equal($btn.html(), '', 'btn text equals ""') equal($btn.html(), '', 'btn text equals ""')
$btn.bootstrapButton('loading') $btn.bootstrapButton('loading')
equal($btn.html(), 'fat', 'btn text equals fat')
stop() stop()
setTimeout(function () { setTimeout(function () {
equal($btn.html(), 'fat', 'btn text equals fat')
ok($btn[0].hasAttribute('disabled'), 'btn is disabled') ok($btn[0].hasAttribute('disabled'), 'btn is disabled')
ok($btn.hasClass('disabled'), 'btn has disabled class') ok($btn.hasClass('disabled'), 'btn has disabled class')
start() start()
stop() stop()
$btn.bootstrapButton('reset') $btn.bootstrapButton('reset')
equal($btn.html(), '', 'btn text equals ""')
setTimeout(function () { setTimeout(function () {
equal($btn.html(), '', 'btn text equals ""')
ok(!$btn[0].hasAttribute('disabled'), 'btn is not disabled') ok(!$btn[0].hasAttribute('disabled'), 'btn is not disabled')
ok(!$btn.hasClass('disabled'), 'btn does not have disabled class') ok(!$btn.hasClass('disabled'), 'btn does not have disabled class')
start() start()
......
...@@ -79,7 +79,7 @@ $(function () { ...@@ -79,7 +79,7 @@ $(function () {
$('<div id="test1"/>') $('<div id="test1"/>')
.appendTo('#qunit-fixture') .appendTo('#qunit-fixture')
.on('show.bs.collapse', function () { .on('shown.bs.collapse', function () {
ok(!$target.hasClass('collapsed')) ok(!$target.hasClass('collapsed'))
start() start()
}) })
...@@ -94,7 +94,7 @@ $(function () { ...@@ -94,7 +94,7 @@ $(function () {
$('<div id="test1" class="in"/>') $('<div id="test1" class="in"/>')
.appendTo('#qunit-fixture') .appendTo('#qunit-fixture')
.on('hide.bs.collapse', function () { .on('hidden.bs.collapse', function () {
ok($target.hasClass('collapsed')) ok($target.hasClass('collapsed'))
start() start()
}) })
...@@ -137,12 +137,12 @@ $(function () { ...@@ -137,12 +137,12 @@ $(function () {
test('should remove "collapsed" class from active accordion target', function () { test('should remove "collapsed" class from active accordion target', function () {
stop() stop()
var accordionHTML = '<div id="accordion">' var accordionHTML = '<div class="panel-group" id="accordion">'
+ '<div class="accordion-group"/>' + '<div class="panel"/>'
+ '<div class="accordion-group"/>' + '<div class="panel"/>'
+ '<div class="accordion-group"/>' + '<div class="panel"/>'
+ '</div>' + '</div>'
var $groups = $(accordionHTML).appendTo('#qunit-fixture').find('.accordion-group') var $groups = $(accordionHTML).appendTo('#qunit-fixture').find('.panel')
var $target1 = $('<a data-toggle="collapse" href="#body1" data-parent="#accordion"/>').appendTo($groups.eq(0)) var $target1 = $('<a data-toggle="collapse" href="#body1" data-parent="#accordion"/>').appendTo($groups.eq(0))
...@@ -156,7 +156,7 @@ $(function () { ...@@ -156,7 +156,7 @@ $(function () {
$('<div id="body3"/>') $('<div id="body3"/>')
.appendTo($groups.eq(2)) .appendTo($groups.eq(2))
.on('show.bs.collapse', function () { .on('shown.bs.collapse', function () {
ok($target1.hasClass('collapsed'), 'inactive target 1 does have class "collapsed"') ok($target1.hasClass('collapsed'), 'inactive target 1 does have class "collapsed"')
ok($target2.hasClass('collapsed'), 'inactive target 2 does have class "collapsed"') ok($target2.hasClass('collapsed'), 'inactive target 2 does have class "collapsed"')
ok(!$target3.hasClass('collapsed'), 'active target 3 does not have class "collapsed"') ok(!$target3.hasClass('collapsed'), 'active target 3 does not have class "collapsed"')
...@@ -170,12 +170,12 @@ $(function () { ...@@ -170,12 +170,12 @@ $(function () {
test('should allow dots in data-parent', function () { test('should allow dots in data-parent', function () {
stop() stop()
var accordionHTML = '<div class="accordion">' var accordionHTML = '<div class="panel-group accordion">'
+ '<div class="accordion-group"/>' + '<div class="panel"/>'
+ '<div class="accordion-group"/>' + '<div class="panel"/>'
+ '<div class="accordion-group"/>' + '<div class="panel"/>'
+ '</div>' + '</div>'
var $groups = $(accordionHTML).appendTo('#qunit-fixture').find('.accordion-group') var $groups = $(accordionHTML).appendTo('#qunit-fixture').find('.panel')
var $target1 = $('<a data-toggle="collapse" href="#body1" data-parent=".accordion"/>').appendTo($groups.eq(0)) var $target1 = $('<a data-toggle="collapse" href="#body1" data-parent=".accordion"/>').appendTo($groups.eq(0))
...@@ -189,7 +189,7 @@ $(function () { ...@@ -189,7 +189,7 @@ $(function () {
$('<div id="body3"/>') $('<div id="body3"/>')
.appendTo($groups.eq(2)) .appendTo($groups.eq(2))
.on('show.bs.collapse', function () { .on('shown.bs.collapse', function () {
ok($target1.hasClass('collapsed'), 'inactive target 1 does have class "collapsed"') ok($target1.hasClass('collapsed'), 'inactive target 1 does have class "collapsed"')
ok($target2.hasClass('collapsed'), 'inactive target 2 does have class "collapsed"') ok($target2.hasClass('collapsed'), 'inactive target 2 does have class "collapsed"')
ok(!$target3.hasClass('collapsed'), 'active target 3 does not have class "collapsed"') ok(!$target3.hasClass('collapsed'), 'active target 3 does not have class "collapsed"')
...@@ -207,7 +207,7 @@ $(function () { ...@@ -207,7 +207,7 @@ $(function () {
$('<div id="test1"/>') $('<div id="test1"/>')
.appendTo('#qunit-fixture') .appendTo('#qunit-fixture')
.on('show.bs.collapse', function () { .on('shown.bs.collapse', function () {
equal($target.attr('aria-expanded'), 'true', 'aria-expanded on target is "true"') equal($target.attr('aria-expanded'), 'true', 'aria-expanded on target is "true"')
start() start()
}) })
...@@ -222,7 +222,7 @@ $(function () { ...@@ -222,7 +222,7 @@ $(function () {
$('<div id="test1" class="in"/>') $('<div id="test1" class="in"/>')
.appendTo('#qunit-fixture') .appendTo('#qunit-fixture')
.on('hide.bs.collapse', function () { .on('hidden.bs.collapse', function () {
equal($target.attr('aria-expanded'), 'false', 'aria-expanded on target is "false"') equal($target.attr('aria-expanded'), 'false', 'aria-expanded on target is "false"')
start() start()
}) })
...@@ -233,12 +233,12 @@ $(function () { ...@@ -233,12 +233,12 @@ $(function () {
test('should change aria-expanded from active accordion target to "false" and set the newly active one to "true"', function () { test('should change aria-expanded from active accordion target to "false" and set the newly active one to "true"', function () {
stop() stop()
var accordionHTML = '<div id="accordion">' var accordionHTML = '<div class="panel-group" id="accordion">'
+ '<div class="accordion-group"/>' + '<div class="panel"/>'
+ '<div class="accordion-group"/>' + '<div class="panel"/>'
+ '<div class="accordion-group"/>' + '<div class="panel"/>'
+ '</div>' + '</div>'
var $groups = $(accordionHTML).appendTo('#qunit-fixture').find('.accordion-group') var $groups = $(accordionHTML).appendTo('#qunit-fixture').find('.panel')
var $target1 = $('<a data-toggle="collapse" href="#body1" data-parent="#accordion"/>').appendTo($groups.eq(0)) var $target1 = $('<a data-toggle="collapse" href="#body1" data-parent="#accordion"/>').appendTo($groups.eq(0))
...@@ -252,7 +252,7 @@ $(function () { ...@@ -252,7 +252,7 @@ $(function () {
$('<div id="body3" aria-expanded="false"/>') $('<div id="body3" aria-expanded="false"/>')
.appendTo($groups.eq(2)) .appendTo($groups.eq(2))
.on('show.bs.collapse', function () { .on('shown.bs.collapse', function () {
equal($target1.attr('aria-expanded'), 'false', 'inactive target 1 has aria-expanded="false"') equal($target1.attr('aria-expanded'), 'false', 'inactive target 1 has aria-expanded="false"')
equal($target2.attr('aria-expanded'), 'false', 'inactive target 2 has aria-expanded="false"') equal($target2.attr('aria-expanded'), 'false', 'inactive target 2 has aria-expanded="false"')
equal($target3.attr('aria-expanded'), 'true', 'active target 3 has aria-expanded="false"') equal($target3.attr('aria-expanded'), 'true', 'active target 3 has aria-expanded="false"')
...@@ -298,4 +298,32 @@ $(function () { ...@@ -298,4 +298,32 @@ $(function () {
}, 1) }, 1)
}) })
test('should add "collapsed" class to target when collapse is hidden via manual invocation', function () {
stop()
var $target = $('<a data-toggle="collapse" href="#test1"/>').appendTo('#qunit-fixture')
$('<div id="test1" class="in"/>')
.appendTo('#qunit-fixture')
.on('hidden.bs.collapse', function () {
ok($target.hasClass('collapsed'))
start()
})
.bootstrapCollapse('hide')
})
test('should remove "collapsed" class from target when collapse is shown via manual invocation', function () {
stop()
var $target = $('<a data-toggle="collapse" class="collapsed" href="#test1"/>').appendTo('#qunit-fixture')
$('<div id="test1"/>')
.appendTo('#qunit-fixture')
.on('shown.bs.collapse', function () {
ok(!$target.hasClass('collapsed'))
start()
})
.bootstrapCollapse('show')
})
}) })
...@@ -56,8 +56,8 @@ ...@@ -56,8 +56,8 @@
"grunt-saucelabs": "~8.3.2", "grunt-saucelabs": "~8.3.2",
"grunt-sed": "~0.1.1", "grunt-sed": "~0.1.1",
"load-grunt-tasks": "~1.0.0", "load-grunt-tasks": "~1.0.0",
"markdown": "~0.5.0",
"npm-shrinkwrap": "~4.0.0", "npm-shrinkwrap": "~4.0.0",
"remarkable": "^1.2.0",
"time-grunt": "~1.0.0" "time-grunt": "~1.0.0"
}, },
"engines": { "engines": {
......
...@@ -1702,8 +1702,8 @@ ...@@ -1702,8 +1702,8 @@
"resolved": "https://registry.npmjs.org/bl/-/bl-0.9.3.tgz", "resolved": "https://registry.npmjs.org/bl/-/bl-0.9.3.tgz",
"dependencies": { "dependencies": {
"readable-stream": { "readable-stream": {
"version": "1.0.33", "version": "1.0.32",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.33.tgz", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.32.tgz",
"dependencies": { "dependencies": {
"core-util-is": { "core-util-is": {
"version": "1.0.1", "version": "1.0.1",
...@@ -2173,6 +2173,10 @@ ...@@ -2173,6 +2173,10 @@
"version": "1.4.0", "version": "1.4.0",
"resolved": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.0.tgz" "resolved": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.0.tgz"
}, },
"vow": {
"version": "0.4.4",
"resolved": "https://registry.npmjs.org/vow/-/vow-0.4.4.tgz"
},
"vow-queue": { "vow-queue": {
"version": "0.3.1", "version": "0.3.1",
"resolved": "https://registry.npmjs.org/vow-queue/-/vow-queue-0.3.1.tgz" "resolved": "https://registry.npmjs.org/vow-queue/-/vow-queue-0.3.1.tgz"
...@@ -2559,13 +2563,7 @@ ...@@ -2559,13 +2563,7 @@
}, },
"vow-queue": { "vow-queue": {
"version": "0.4.1", "version": "0.4.1",
"resolved": "https://registry.npmjs.org/vow-queue/-/vow-queue-0.4.1.tgz", "resolved": "https://registry.npmjs.org/vow-queue/-/vow-queue-0.4.1.tgz"
"dependencies": {
"vow": {
"version": "0.4.6",
"resolved": "https://registry.npmjs.org/vow/-/vow-0.4.6.tgz"
}
}
} }
} }
}, },
...@@ -3181,22 +3179,6 @@ ...@@ -3181,22 +3179,6 @@
} }
} }
}, },
"markdown": {
"version": "0.5.0",
"resolved": "https://registry.npmjs.org/markdown/-/markdown-0.5.0.tgz",
"dependencies": {
"nopt": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/nopt/-/nopt-2.1.2.tgz",
"dependencies": {
"abbrev": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.5.tgz"
}
}
}
}
},
"npm-shrinkwrap": { "npm-shrinkwrap": {
"version": "4.0.0", "version": "4.0.0",
"resolved": "https://registry.npmjs.org/npm-shrinkwrap/-/npm-shrinkwrap-4.0.0.tgz", "resolved": "https://registry.npmjs.org/npm-shrinkwrap/-/npm-shrinkwrap-4.0.0.tgz",
...@@ -3863,6 +3845,30 @@ ...@@ -3863,6 +3845,30 @@
} }
} }
}, },
"remarkable": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/remarkable/-/remarkable-1.2.1.tgz",
"dependencies": {
"argparse": {
"version": "0.1.15",
"resolved": "https://registry.npmjs.org/argparse/-/argparse-0.1.15.tgz",
"dependencies": {
"underscore": {
"version": "1.4.4",
"resolved": "https://registry.npmjs.org/underscore/-/underscore-1.4.4.tgz"
},
"underscore.string": {
"version": "2.3.3",
"resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-2.3.3.tgz"
}
}
},
"autolinker": {
"version": "0.12.3",
"resolved": "https://registry.npmjs.org/autolinker/-/autolinker-0.12.3.tgz"
}
}
},
"time-grunt": { "time-grunt": {
"version": "1.0.0", "version": "1.0.0",
"resolved": "https://registry.npmjs.org/time-grunt/-/time-grunt-1.0.0.tgz", "resolved": "https://registry.npmjs.org/time-grunt/-/time-grunt-1.0.0.tgz",
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment