Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/twbs/ratchet.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'docs/assets/js/docs.js')
-rw-r--r--docs/assets/js/docs.js172
1 files changed, 172 insertions, 0 deletions
diff --git a/docs/assets/js/docs.js b/docs/assets/js/docs.js
new file mode 100644
index 0000000..b016137
--- /dev/null
+++ b/docs/assets/js/docs.js
@@ -0,0 +1,172 @@
+$(function() {
+
+ var doc;
+ var device;
+ var platformToggle;
+ var windowWidth;
+ var windowHeight;
+ var pageHeight;
+ var contentPadding;
+ var footerHeight;
+ var navComponentLinks;
+ var componentsList;
+ var contentSection;
+ var currentActive;
+ var topCache;
+ var eventListeners;
+ var toolbarToggle;
+ var toggleTop;
+ var toggleHeight;
+
+
+ var initialize = function () {
+ currentActive = 0;
+ topCache = [];
+ win = $(window);
+ doc = $(document);
+ bod = $(document.body)
+ device = device || $('.js-device');
+ navComponentLinks = $('.js-jump-menu');
+ componentsList = $('.js-component-group');
+ componentLinks = $('.component-example a');
+ contentSection = $('.component');
+ topCache = contentSection.map(function () { return $(this).offset().top })
+ windowHeight = $(window).height() / 3
+ windowWidth = $(window).width();
+ pageHeight = $(document).height();
+ contentPadding = parseInt($('.docs-content').css('padding-bottom'));
+ footerHeight = $('.docs-footer').outerHeight(false);
+ toolbarToggle = $('.js-docs-component-toolbar');
+
+ // Device placement
+ if (windowWidth >= 768) {
+ device.initialLeft = device.offset().left;
+ device.initialTop = device.initialTop || device.offset().top;
+ device.dockingOffset = ($(window).height() - device.height())/2;
+ }
+
+ checkDesktopContent();
+ calculateScroll();
+ calculateToggle();
+
+ if (!eventListeners) addEventListeners();
+ }
+
+ var addEventListeners = function () {
+ eventListeners = true;
+
+ device.on('click', function (e) {
+ e.preventDefault();
+ });
+
+ // Mobile navigation
+ $('.js-docs-nav-trigger').on('click', function () {
+ var nav = $('.docs-nav-group');
+ var trigger = $('.js-docs-nav-trigger');
+
+ trigger.toggleClass('active');
+ nav.toggleClass('active');
+ });
+
+ navComponentLinks.click(function(e) {
+ e.stopPropagation();
+ e.preventDefault();
+ componentsList.toggleClass('active');
+ })
+
+ doc.on('click', function () {
+ componentsList.removeClass('active');
+ })
+
+ // Platform switcher
+ $('.platform-switch').on('click', function () {
+ var components = $('.docs-components');
+ var platform = $(this).attr('data-platform');
+
+ // Set platform
+ if (components.hasClass('platform-ios')) {
+ components.removeClass('platform-ios');
+ components.addClass(platform);
+ } else if (components.hasClass('platform-android')) {
+ components.removeClass('platform-android');
+ components.addClass(platform);
+ } else {
+ components.addClass(platform);
+ }
+
+ // Deal with active states
+ $(this).siblings('.active').removeClass('active');
+ $(this).addClass('active');
+ });
+
+ win.on('scroll', calculateScroll);
+ win.on('scroll', calculateToggle);
+ }
+
+ var checkDesktopContent = function () {
+ windowWidth = $(window).width();
+ if (windowWidth <= 768) {
+ var content = $('.content')
+ if (content.length > 1) {
+ $(content[0]).remove()
+ }
+ }
+ }
+
+ var calculateScroll = function() {
+ // if small screen don't worry about this
+ if (windowWidth <= 768) return
+
+ // Save scrollTop value
+ var contentSectionItem;
+ var currentTop = win.scrollTop();
+
+ if((device.initialTop - currentTop) <= device.dockingOffset) {
+ device[0].className = "device device-fixed";
+ device.css({top: device.dockingOffset})
+ } else {
+ device[0].className = "device"
+ device[0].setAttribute('style','')
+ }
+
+ // Injection of components into device
+ for (var l = contentSection.length; l--;) {
+ if ((topCache[l] - currentTop) < windowHeight) {
+ if (currentActive == l) return;
+ currentActive = l;
+ bod.find('.component.active').removeClass('active');
+ contentSectionItem = $(contentSection[l])
+ contentSectionItem.addClass('active')
+ if(contentSectionItem.attr('id')) {
+ device.attr("id", contentSectionItem.attr('id') + "InDevice");
+ } else {
+ device.attr("id", "")
+ }
+ if (!contentSectionItem.hasClass('informational')) {
+ updateContent(contentSectionItem.find('.highlight .html').text())
+ }
+ break
+ }
+ }
+
+ function updateContent(content) {
+ $('#iwindow').html(content);
+ }
+ }
+
+ // Toolbar toggle
+ var calculateToggle = function () {
+ var currentTop = win.scrollTop();
+ var headerHeight = $('.docs-sub-header').outerHeight();
+
+ if(currentTop >= headerHeight) {
+ toolbarToggle.addClass('visible');
+ } else if (currentTop <= headerHeight) {
+ toolbarToggle.removeClass('visible');
+ componentsList.removeClass('active');
+ }
+ }
+
+ $(window).on('load resize', initialize);
+ $(window).on('load', function () { new FingerBlast('.device-content'); });
+});