summaryrefslogtreecommitdiffstats
path: root/web/pub/bootstrap/js/application.js
diff options
context:
space:
mode:
Diffstat (limited to 'web/pub/bootstrap/js/application.js')
-rw-r--r--web/pub/bootstrap/js/application.js184
1 files changed, 184 insertions, 0 deletions
diff --git a/web/pub/bootstrap/js/application.js b/web/pub/bootstrap/js/application.js
new file mode 100644
index 0000000..6463b90
--- /dev/null
+++ b/web/pub/bootstrap/js/application.js
@@ -0,0 +1,184 @@
+// NOTICE!! DO NOT USE ANY OF THIS JAVASCRIPT
+// IT'S ALL JUST JUNK FOR OUR DOCS!
+// ++++++++++++++++++++++++++++++++++++++++++
+
+!function ($) {
+
+ $(function(){
+
+ // Disable certain links in docs
+ $('section [href^=#]').click(function (e) {
+ e.preventDefault()
+ })
+
+ // make code pretty
+ window.prettyPrint && prettyPrint()
+
+ // add-ons
+ $('.add-on :checkbox').on('click', function () {
+ var $this = $(this)
+ , method = $this.attr('checked') ? 'addClass' : 'removeClass'
+ $(this).parents('.add-on')[method]('active')
+ })
+
+ // position static twipsies for components page
+ if ($(".twipsies a").length) {
+ $(window).on('load resize', function () {
+ $(".twipsies a").each(function () {
+ $(this)
+ .tooltip({
+ placement: $(this).attr('title')
+ , trigger: 'manual'
+ })
+ .tooltip('show')
+ })
+ })
+ }
+
+ // add tipsies to grid for scaffolding
+ if ($('#grid-system').length) {
+ $('#grid-system').tooltip({
+ selector: '.show-grid > div'
+ , title: function () { return $(this).width() + 'px' }
+ })
+ }
+
+ // fix sub nav on scroll
+ var $win = $(window)
+ , $nav = $('.subnav')
+ , navTop = $('.subnav').length && $('.subnav').offset().top - 40
+ , isFixed = 0
+
+ processScroll()
+
+ // hack sad times - holdover until rewrite for 2.1
+ $nav.on('click', function () {
+ if (!isFixed) setTimeout(function () { $win.scrollTop($win.scrollTop() - 47) }, 10)
+ })
+
+ $win.on('scroll', processScroll)
+
+ function processScroll() {
+ var i, scrollTop = $win.scrollTop()
+ if (scrollTop >= navTop && !isFixed) {
+ isFixed = 1
+ $nav.addClass('subnav-fixed')
+ } else if (scrollTop <= navTop && isFixed) {
+ isFixed = 0
+ $nav.removeClass('subnav-fixed')
+ }
+ }
+
+ // tooltip demo
+ $('.tooltip-demo.well').tooltip({
+ selector: "a[rel=tooltip]"
+ })
+
+ $('.tooltip-test').tooltip()
+ $('.popover-test').popover()
+
+ // popover demo
+ $("a[rel=popover]")
+ .popover()
+ .click(function(e) {
+ e.preventDefault()
+ })
+
+ // button state demo
+ $('#fat-btn')
+ .click(function () {
+ var btn = $(this)
+ btn.button('loading')
+ setTimeout(function () {
+ btn.button('reset')
+ }, 3000)
+ })
+
+ // carousel demo
+ $('#myCarousel').carousel()
+
+ // javascript build logic
+ var inputsComponent = $("#components.download input")
+ , inputsPlugin = $("#plugins.download input")
+ , inputsVariables = $("#variables.download input")
+
+ // toggle all plugin checkboxes
+ $('#components.download .toggle-all').on('click', function (e) {
+ e.preventDefault()
+ inputsComponent.attr('checked', !inputsComponent.is(':checked'))
+ })
+
+ $('#plugins.download .toggle-all').on('click', function (e) {
+ e.preventDefault()
+ inputsPlugin.attr('checked', !inputsPlugin.is(':checked'))
+ })
+
+ $('#variables.download .toggle-all').on('click', function (e) {
+ e.preventDefault()
+ inputsVariables.val('')
+ })
+
+ // request built javascript
+ $('.download-btn').on('click', function () {
+
+ var css = $("#components.download input:checked")
+ .map(function () { return this.value })
+ .toArray()
+ , js = $("#plugins.download input:checked")
+ .map(function () { return this.value })
+ .toArray()
+ , vars = {}
+ , img = ['glyphicons-halflings.png', 'glyphicons-halflings-white.png']
+
+ $("#variables.download input")
+ .each(function () {
+ $(this).val() && (vars[ $(this).prev().text() ] = $(this).val())
+ })
+
+ $.ajax({
+ type: 'POST'
+ , url: /\?dev/.test(window.location) ? 'http://localhost:3000' : 'http://bootstrap.herokuapp.com'
+ , dataType: 'jsonpi'
+ , params: {
+ js: js
+ , css: css
+ , vars: vars
+ , img: img
+ }
+ })
+ })
+ })
+
+// Modified from the original jsonpi https://github.com/benvinegar/jquery-jsonpi
+$.ajaxTransport('jsonpi', function(opts, originalOptions, jqXHR) {
+ var url = opts.url;
+
+ return {
+ send: function(_, completeCallback) {
+ var name = 'jQuery_iframe_' + jQuery.now()
+ , iframe, form
+
+ iframe = $('<iframe>')
+ .attr('name', name)
+ .appendTo('head')
+
+ form = $('<form>')
+ .attr('method', opts.type) // GET or POST
+ .attr('action', url)
+ .attr('target', name)
+
+ $.each(opts.params, function(k, v) {
+
+ $('<input>')
+ .attr('type', 'hidden')
+ .attr('name', k)
+ .attr('value', typeof v == 'string' ? v : JSON.stringify(v))
+ .appendTo(form)
+ })
+
+ form.appendTo('body').submit()
+ }
+ }
+})
+
+}(window.jQuery) \ No newline at end of file