From fd65b9f32ef0aab74fc8ad9631fecccf0b843bf6 Mon Sep 17 00:00:00 2001 From: Jacob Thornton Date: Tue, 18 Aug 2015 20:33:57 -0700 Subject: [PATCH] some minor alert shit --- js/dist/alert.js | 5 +-- js/dist/alert.js.map | Bin 7679 -> 7696 bytes js/dist/button.js | 1 - js/dist/button.js.map | Bin 8200 -> 8127 bytes js/dist/carousel.js | 20 ++++++------ js/dist/carousel.js.map | Bin 23320 -> 23353 bytes js/dist/collapse.js | 9 +++--- js/dist/collapse.js.map | Bin 18209 -> 18294 bytes js/dist/dropdown.js | 20 +++++++++--- js/dist/dropdown.js.map | Bin 14576 -> 14638 bytes js/dist/modal.js | 12 ++++--- js/dist/modal.js.map | Bin 27441 -> 27462 bytes js/dist/popover.js | 2 +- js/dist/popover.js.map | Bin 8240 -> 8241 bytes js/dist/scrollspy.js | 37 ++++++++++------------ js/dist/scrollspy.js.map | Bin 16089 -> 15690 bytes js/dist/tab.js | 4 +-- js/dist/tab.js.map | Bin 13673 -> 13686 bytes js/dist/tooltip.js | 38 ++++++++++++++--------- js/dist/tooltip.js.map | Bin 29585 -> 29630 bytes js/dist/util.js | 33 +++++++++++--------- js/dist/util.js.map | Bin 6988 -> 7203 bytes js/src/scrollspy.js | 55 ++++++++++++++------------------- js/tests/visual/scrollspy.html | 33 ++++++++++---------- 24 files changed, 142 insertions(+), 127 deletions(-) diff --git a/js/dist/alert.js b/js/dist/alert.js index a3f216183..27f44ed88 100644 --- a/js/dist/alert.js +++ b/js/dist/alert.js @@ -93,8 +93,8 @@ var Alert = (function ($) { }, { key: '_getRootElement', value: function _getRootElement(element) { - var parent = false; var selector = Util.getSelectorFromElement(element); + var parent = false; if (selector) { parent = $(selector)[0]; @@ -110,6 +110,7 @@ var Alert = (function ($) { key: '_triggerCloseEvent', value: function _triggerCloseEvent(element) { var closeEvent = $.Event(Event.CLOSE); + $(element).trigger(closeEvent); return closeEvent; } @@ -123,7 +124,7 @@ var Alert = (function ($) { return; } - $(element).one(Util.TRANSITION_END, this._destroyElement.bind(this, element)).emulateTransitionEnd(TRANSITION_DURATION); + $(element).one(Util.TRANSITION_END, $.proxy(this._destroyElement, this, element)).emulateTransitionEnd(TRANSITION_DURATION); } }, { key: '_destroyElement', diff --git a/js/dist/alert.js.map b/js/dist/alert.js.map index 8e020425d5f5c26cf4216774fc8eee33cab7bb6b..eaa956d640df9e742463ddd5d67bf637e3978cff 100644 GIT binary patch delta 180 zcmexwJ;7$fPL|0xSoBpL9i8)BbRr!cJ#~B?9es7&9UZ-Oyg`Jsqobp>wWFhJfzxJQ zR$E3E5PP#PTOT6}P|A7oel97_R7b~D9ao_EvorU0&dFk;hLh(Bb4~swA~e}u^bK=PYRP0XF_p~`VmXX*DtZM)`4yEKB^jB; cdhsc##U(}gm99Cdxv6<2ItrWbi7T=J07&&XcK`qY delta 197 zcmbPW^WS>IPL|1^SwvVI9i0m%Z(=cHvvzcJ&2!nz%WBKW3>4h#$JWPa?dj;~spAaf z>ZCe4rb1Wd^%W7gz4Nyy6mtkRV6DV9yXwf4_K_&>%+;L%~+T(9~eFqTny)%}S!r*#y!`^O8$4^Yaum hQp-~FN;EeM%h)i=qKhh2$K)x1L0Mwa<}}$zCIG>xL3{uJ diff --git a/js/dist/carousel.js b/js/dist/carousel.js index 761717193..7345cbe77 100644 --- a/js/dist/carousel.js +++ b/js/dist/carousel.js @@ -177,7 +177,7 @@ var Carousel = (function ($) { return; } - if (activeIndex == index) { + if (activeIndex === index) { this.pause(); this.cycle(); return; @@ -219,7 +219,7 @@ var Carousel = (function ($) { $(this._element).on(Event.KEYDOWN, $.proxy(this._keydown, this)); } - if (this._config.pause == 'hover' && !('ontouchstart' in document.documentElement)) { + if (this._config.pause === 'hover' && !('ontouchstart' in document.documentElement)) { $(this._element).on(Event.MOUSEENTER, $.proxy(this.pause, this)).on(Event.MOUSELEAVE, $.proxy(this.cycle, this)); } } @@ -228,7 +228,9 @@ var Carousel = (function ($) { value: function _keydown(event) { event.preventDefault(); - if (/input|textarea/i.test(event.target.tagName)) return; + if (/input|textarea/i.test(event.target.tagName)) { + return; + } switch (event.which) { case 37: @@ -252,13 +254,13 @@ var Carousel = (function ($) { var isPrevDirection = direction === Direction.PREVIOUS; var activeIndex = this._getItemIndex(activeElement); var lastItemIndex = this._items.length - 1; - var isGoingToWrap = isPrevDirection && activeIndex === 0 || isNextDirection && activeIndex == lastItemIndex; + var isGoingToWrap = isPrevDirection && activeIndex === 0 || isNextDirection && activeIndex === lastItemIndex; if (isGoingToWrap && !this._config.wrap) { return activeElement; } - var delta = direction == Direction.PREVIOUS ? -1 : 1; + var delta = direction === Direction.PREVIOUS ? -1 : 1; var itemIndex = (activeIndex + delta) % this._items.length; return itemIndex === -1 ? this._items[this._items.length - 1] : this._items[itemIndex]; @@ -296,9 +298,9 @@ var Carousel = (function ($) { var activeElement = $(this._element).find(Selector.ACTIVE_ITEM)[0]; var nextElement = element || activeElement && this._getItemByDirection(direction, activeElement); - var isCycling = !!this._interval; + var isCycling = Boolean(this._interval); - var directionalClassName = direction == Direction.NEXT ? ClassName.LEFT : ClassName.RIGHT; + var directionalClassName = direction === Direction.NEXT ? ClassName.LEFT : ClassName.RIGHT; if (nextElement && $(nextElement).hasClass(ClassName.ACTIVE)) { this._isSliding = false; @@ -383,7 +385,7 @@ var Carousel = (function ($) { $(this).data(DATA_KEY, data); } - if (typeof config == 'number') { + if (typeof config === 'number') { data.to(config); } else if (action) { data[action](); @@ -409,8 +411,8 @@ var Carousel = (function ($) { } var config = $.extend({}, $(target).data(), $(this).data()); - var slideIndex = this.getAttribute('data-slide-to'); + if (slideIndex) { config.interval = false; } diff --git a/js/dist/carousel.js.map b/js/dist/carousel.js.map index 2d3a723d1ca133f35bb79072e4b75c49e4bd1a09..433672eb94cd921d58798e80690bdc7fd644120c 100644 GIT binary patch delta 430 zcmbQSjdABT#toLdBHoUU-a25y)zQ(_+R@Ru%4ssAtkmXoUS$@3u!O&(qrZ-)qjQGy z=9z*M7{x$}GF)^rog5u~t%Dt%1FV4}uA5DSFEUAjH6%JZCh9l>Rp~ebNw93iWI3^{ z$=^lzCr=ksW2$nQ94ITg`HGl1BX^PxNIA&Nq|M?IADCD`)=gf|B|5oVoJ$B~a+$ME zq@$y!PCn4We5c9sqEcL*Aile!bCJvBeZ2CUtE3g!83QNpXA_;gK}nIZWb-AZ1B{dX zltni$SCL?1^q+h{t%L<=gZ^ZG8R^L(>XIyA7Z<22Ffx`*o~RMcSUCBu#wt!Yo;5_2>svv?T-RSIl&@ycWZo3_EH tnRT;a&`ie7Cxcm;m=zQhCZ7#8p3D?xz1cb}nu%3IQ^D45^TLR7CIA-+h%o>F delta 466 zcmdnFjd8{{#toLdBA$+po;u!+j@~-1j*hO@j*iY1PLl;>r8cMYDzor|W&Ir;{dGJY zo%NkI&lH@%$gKku@U;dib*NNIl3pQ>V>}5+9f*7szr={;$b3c|RAcHQa;@XProp1M{66 z9rK-Z+#Ma=b%GrogMrQgih@}{wayT(yQ6b~%jA8$@|!!Q71$>mX^2hUucXLWu=%0V z0Y+i4jzCApK)6TEH*ZmqVwx-_pfLHJS|}^XL&lTkWTYo2sY@~gP2F6tuE5AxFnNJS zG;3~nijMo_Mn&Pt!kUvgBf$=L*6{|4$ZkHPc~@xiDw_!Avc#gzthOtdH?MPuVq_~y zEh#O^+pOeti)r#-mkFEuT*Da|tu|kGGi4S~R4mEJEY^$9%qvMPDof0ntn6jDIn=9y z32ep%pJvw0p+VCbH@^*LVVYcS&p(+ZOnLH}AdbnpVWyi?!XlZt(@OJ_OEUBG6f`t9 JABrev0s!FLkq!U= diff --git a/js/dist/collapse.js b/js/dist/collapse.js index 859913f61..6774f7431 100644 --- a/js/dist/collapse.js +++ b/js/dist/collapse.js @@ -175,7 +175,8 @@ var Collapse = (function ($) { return; } - var scrollSize = 'scroll' + (dimension[0].toUpperCase() + dimension.slice(1)); + var capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1); + var scrollSize = 'scroll' + capitalizedDimension; $(this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(TRANSITION_DURATION); @@ -221,7 +222,8 @@ var Collapse = (function ($) { this._element.style[dimension] = 0; if (!Util.supportsTransitionEnd()) { - return complete(); + complete(); + return; } $(this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(TRANSITION_DURATION); @@ -249,7 +251,7 @@ var Collapse = (function ($) { key: '_getConfig', value: function _getConfig(config) { config = $.extend({}, Default, config); - config.toggle = !!config.toggle; // coerce string values + config.toggle = Boolean(config.toggle); // coerce string values Util.typeCheckConfig(NAME, config, DefaultType); return config; } @@ -335,7 +337,6 @@ var Collapse = (function ($) { event.preventDefault(); var target = Collapse._getTargetFromElement(this); - var data = $(target).data(DATA_KEY); var config = data ? 'toggle' : $(this).data(); diff --git a/js/dist/collapse.js.map b/js/dist/collapse.js.map index 64ae53a7d8ab8b506b2b5fc0b5d31a4cffcd155d..dbf06db57d8fed6dd21e4971f0ed581f92e4371e 100644 GIT binary patch delta 492 zcmY+9y-EW?6or{YQ4?GZ{zVHjMUVv7Xov%97-*7`*uk|gl@_BmB>JFcpCX-ea%OUv|HqMCJ-(Gl;i?HL0$n^k&8eZD$>B1 zhbk)W28Kg208p9QeQpjQf1u)ne*~Wc$E1LrP^8-tz?;FSI16qPyz&or+xP~0LkBLP zj{z`;PhFd$xC~8tVwwuD?0V*HS=V3{sIH2)@M0I9#>2QY;Oha~luoE(Z6NB4I05Q8 zhgGzb+RX`$C-E#X#C`mtf5@sdOfj(T{-u diff --git a/js/dist/dropdown.js b/js/dist/dropdown.js index 9c5c2e79d..f90861ec0 100644 --- a/js/dist/dropdown.js +++ b/js/dist/dropdown.js @@ -82,7 +82,7 @@ var Dropdown = (function ($) { value: function toggle() { if (this.disabled || $(this).hasClass(ClassName.DISABLED)) { - return; + return false; } var parent = Dropdown._getParentFromElement(this); @@ -109,7 +109,7 @@ var Dropdown = (function ($) { $(parent).trigger(showEvent); if (showEvent.isDefaultPrevented()) { - return; + return false; } this.focus(); @@ -242,9 +242,19 @@ var Dropdown = (function ($) { var index = items.indexOf(event.target); - if (event.which === 38 && index > 0) index--; // up - if (event.which === 40 && index < items.length - 1) index++; // down - if (! ~index) index = 0; + if (event.which === 38 && index > 0) { + // up + index--; + } + + if (event.which === 40 && index < items.length - 1) { + // down + index++; + } + + if (! ~index) { + index = 0; + } items[index].focus(); } diff --git a/js/dist/dropdown.js.map b/js/dist/dropdown.js.map index 0c41b305e0579ca83f1d3b4d552d5d8157c380d3..1c4be71d6c1d4d247cedb3b728ff7157e3a5c9f9 100644 GIT binary patch delta 352 zcmexRxUOhJ7t7=rR+-InSk#%pjH~Ppd`hm?){c(OdCoeij*i|su8xkbI?j%cj@H4B z&Osn4SC`56MfE1H5#^ekA||W=R-NO5Q}yI-F-a9ykdYA(HSUg%?jRGL;l_r6jh%cz z%!H}TXYw~OBUUrt6dm`;{cNI}oy0dXin{8ALe)Ei9OMl$tza^Tq$#7v`lAP(fy1N@|6!u7ZNTzCvk1Oy1-b6>Jp@HpiG;U=mVDE6qzT$;{7F&`8x(s0Nxm+00yibBOsZMgVcz BWM}{Y diff --git a/js/dist/modal.js b/js/dist/modal.js index b467c40f0..f28df5c76 100644 --- a/js/dist/modal.js +++ b/js/dist/modal.js @@ -230,14 +230,18 @@ var Modal = (function ($) { $(this._element).addClass(ClassName.IN); - if (this._config.focus) this._enforceFocus(); + if (this._config.focus) { + this._enforceFocus(); + } var shownEvent = $.Event(Event.SHOWN, { relatedTarget: relatedTarget }); var transitionComplete = function transitionComplete() { - if (_this2._config.focus) _this2._element.focus(); + if (_this2._config.focus) { + _this2._element.focus(); + } $(_this2._element).trigger(shownEvent); }; @@ -394,7 +398,7 @@ var Modal = (function ($) { } if (this._isBodyOverflowing && !isModalOverflowing) { - this._element.style.paddingRight = this._scrollbarWidth + 'px'; + this._element.style.paddingRight = this._scrollbarWidth + 'px~'; } } }, { @@ -423,7 +427,7 @@ var Modal = (function ($) { this._originalBodyPadding = document.body.style.paddingRight || ''; if (this._isBodyOverflowing) { - document.body.style.paddingRight = bodyPadding + this._scrollbarWidth + 'px'; + document.body.style.paddingRight = bodyPadding + (this._scrollbarWidth + 'px'); } } }, { diff --git a/js/dist/modal.js.map b/js/dist/modal.js.map index 110db41206b382078a3aea30135e88c1b7c5807d..ebc852275731370c2482059ac2575f6c7494f143 100644 GIT binary patch delta 364 zcmdmZjq%tu#toO)xs!Af9UT*`gB_hyHs50}<<+)!baXCp(n)r7^we<%vcd8?u8xkb zAg&`wWs#FLP?f98mEpSil&S=?C{Qb=!p(m))L57*A|`w5s!jINHDS!(T(2u3 zw0W8RXYR?xF+yT_Y57ITsc!knrNtVWF?kALP&;|8x5wmV_9Bxde4Lo8WAY|X^wXRi zoys}6Gemgu-9V1blYICDm=jd0CohN*VW};sNSHj=M`H4t1hL64W87g9tU!sngvkzW a5|ix`**0g!E@FmBLG%D+HrpkB<^%vGLUbMg delta 325 zcmX?hjd9~O#toO)d0cf89UT*`gB_jCoi^WPFXd&@@tk~+Lx#!Jd2+3&JBs||^P=HQ zI{uUO#bj9>ff}4QhlxGl6L;6~baeF8aRv(Mq&hmL>bN^P0>vhKsOC-%(BzRs5`(I9 z1lgzWviYj21hXteH8vA~Vv~PLs%+NO{Ljo(5HUGWS8Z~Dt_f>;RD_QElO!cK zZ`FMv$Y`~>-=2|2q$DG=ST8;`FD<_)In^ycxwKeAbMg*v4@RrW{q{ID_*lQ;TEOg0E+pZqQ+3`ux%LhJ!%B>v=tSh>xS HiElXpu`^^= diff --git a/js/dist/popover.js b/js/dist/popover.js index fcd6bd200..5e057c0fe 100644 --- a/js/dist/popover.js +++ b/js/dist/popover.js @@ -123,7 +123,7 @@ var Popover = (function ($) { }, { key: '_getContent', value: function _getContent() { - return this.element.getAttribute('data-content') || (typeof this.config.content == 'function' ? this.config.content.call(this.element) : this.config.content); + return this.element.getAttribute('data-content') || (typeof this.config.content === 'function' ? this.config.content.call(this.element) : this.config.content); } // static diff --git a/js/dist/popover.js.map b/js/dist/popover.js.map index de4985130f0545bae8647e20ad061447d4542e7d..c4b9cf3ee205138abe7618c84a8bb10048c20893 100644 GIT binary patch delta 32 ocmdnsu+d?|CJsJtM@Mg+P)Em59d}3PvdsrLG=(?6koI5!0K6;;@Bjb+ delta 31 ncmdn!u)$%&CJs(dM@LVcP)Enm$$vSNH{avn7T)|y+MNXex}ys= diff --git a/js/dist/scrollspy.js b/js/dist/scrollspy.js index 75f369165..30d2ebd1c 100644 --- a/js/dist/scrollspy.js +++ b/js/dist/scrollspy.js @@ -45,6 +45,8 @@ var ScrollSpy = (function ($) { }; var ClassName = { + DROPDOWN_TOGGLE: 'dropdown-toggle', + DROPDOWN_ITEM: 'dropdown-item', DROPDOWN_MENU: 'dropdown-menu', ACTIVE: 'active' }; @@ -52,9 +54,9 @@ var ScrollSpy = (function ($) { var Selector = { DATA_SPY: '[data-spy="scroll"]', ACTIVE: '.active', - LI: 'li', LI_DROPDOWN: 'li.dropdown', - NAV_ANCHORS: '.nav li > a' + NAV_LINKS: '.nav-link', + DROPDOWN_ITEMS: '.dropdown-item' }; var OffsetMethod = { @@ -75,7 +77,7 @@ var ScrollSpy = (function ($) { this._element = element; this._scrollElement = element.tagName === 'BODY' ? window : element; this._config = this._getConfig(config); - this._selector = this._config.target + ' ' + Selector.NAV_ANCHORS; + this._selector = this._config.target + ' ' + Selector.NAV_LINKS + ',' + (this._config.target + ' ' + Selector.DROPDOWN_ITEMS); this._offsets = []; this._targets = []; this._activeTarget = null; @@ -223,22 +225,18 @@ var ScrollSpy = (function ($) { this._clear(); - var selector = this._selector + '[data-target="' + target + '"],' + (this._selector + '[href="' + target + '"]'); + var queries = this._selector.split(','); + queries = queries.map(function (selector) { + return selector + '[data-target="' + target + '"],' + (selector + '[href="' + target + '"]'); + }); + var $link = $(queries.join(',')); - // todo (fat): getting all the raw li's up the tree is not great. - var parentListItems = $(selector).parents(Selector.LI); - - for (var i = parentListItems.length; i--;) { - $(parentListItems[i]).addClass(ClassName.ACTIVE); - - var itemParent = parentListItems[i].parentNode; - - if (itemParent && $(itemParent).hasClass(ClassName.DROPDOWN_MENU)) { - var closestDropdown = $(itemParent).closest(Selector.LI_DROPDOWN)[0]; - $(closestDropdown).addClass(ClassName.ACTIVE); - } + if ($link.hasClass(ClassName.DROPDOWN_ITEM)) { + $link.parent().find(ClassName.DROPDOWN_TOGGLE).addClass(ClassName.ACTIVE); } + $link.addClass(ClassName.ACTIVE); + $(this._scrollElement).trigger(Event.ACTIVATE, { relatedTarget: target }); @@ -246,11 +244,8 @@ var ScrollSpy = (function ($) { }, { key: '_clear', value: function _clear() { - var activeParents = $(this._selector).parentsUntil(this._config.target, Selector.ACTIVE); - - for (var i = activeParents.length; i--;) { - $(activeParents[i]).removeClass(ClassName.ACTIVE); - } + debugger; + $(this._selector).filter(ClassName.ACTIVE).removeClass(Selector.ACTIVE); } // static diff --git a/js/dist/scrollspy.js.map b/js/dist/scrollspy.js.map index 5436299262928935f93d4f8f99767aafdcf3d613..316cea651ac1d047f6fb2ae89f4ba618671ede90 100644 GIT binary patch delta 1374 zcmZ`%L2TPp7*^A!V^N{)n$Rs>g-KK5uveEcRb_-So?ksHq)Eu!5vono~3B z7U<~8l?w>{CnN+y+>j6xzJkOJQHd*3ZydODLgL8#pX;vMgb&vH|M&gh_x+!Jw12qw z@L{6a(JAG`pwuLeI68WXQsyyP*x0WSE)dw=_`mK=N~;K6Aq`3!C6lr%aFi$>SY%sJ zZcEC5kr>t_7Nr(4Ue=MkiL+H=Q)*-Ls*Xnsn+?(w*VvrX$)@01!>&o%;@H+v$Yq34 zN=pJ`ERrhnte_E7z`_UpZ}kl}h`2Z5&+#lA4GgDHS~y{QEN-ROkXNu65tUHeGeAks zhL@7B^o?xjX5_ad9-BJh=HT_`fDWe*B$b$Bq=GTY6Y54MQBrii%W%g!I;xX8zMcSz zSeOhBcdOut$O^wjT{@4hdZKppctJL+lSaSD2mVfHUbUo%WQ|3yV+!TS*JGBLv;g+S zG5B?CWK`yMk3B-e&zUUTeg52;E7EoaK2MLqg~_1-To%60WS}yUg5NV2Muh5R<2ZNm zy((f->u1D*&yqPPkKY=?6&kqC4biMUlY{Thrr@v9@j)iPDttVefiDMA$vR~p7~zlS z5Bn1S5g9*Otn)iiHZ2Q}gWI8Q1YPpW;JZ3uUzvho~F6Q*S4xCCNUy6M2o;o_t?| zPp9+G#`1EH@Tci7h7Y!PxbN_uvY-U_oSwGY<1Swdy1v%ia-BdekU}x$jiJcBpd43P z$KF!ac&ex@ys6xe2NcEU!H(}Kck=gR#Qv?89oRF0?YDWba2r0En@Am-6)5O1K*?h)LN%|(x*J``llBBI7IfAXRU)A{KY0y9D;7`Nk$2jb?Q<_si`u&5wN&QX zyD6`=_`m oTQ0wA6g8iBy1QIzs#YBJ@g@8+lMX++`fVbqVvga55#7UCjbBd delta 1661 zcmaJ=O=ufO6vm1rVW<8f&PtJNmqE2`Eo|iC)J|-Xz-XkXYAq{{stDCK=_0SBbvL_? zcA|iTadYaW2gB>74TPS0twD#W%E}6K4h!?RO)Cf@V-^WGH3JS*=QG34>K_o6_w}fwChAUs88V+GBx#oJE+;-om!E z3Z)eccC%WE(mdwYwIZcO3|d*_u6ZiD(8J)3;UG)}qP-t46-P#DkP50-YnVcjjEOI% z@H{M!D)2HGhmFzk-pk)6S_Nj2VHBz^#dd*NF&I?Bvf-n4W=|& z((06T*bo5D6lFFe6boG@0JJDuBlrXrvcOkY6_|^T-;y$tSJW$gGS95Y&GVclYW;M8 zTM~#)7;tMQ5k6v?D3QVQhypLhCg9shGLCueoYp{1F@vh7DN|0zl(-BDJ&NY?>&yoN znN#4K$or6wT*)8gwU#Jx*tXY!J_kBwZKjneEqgD1HQ0JM9gD+zv1#}^vNBzxY@KB) zl--reId~pbU?O@jDZ3-e)TL7(F$Inz!4+e6R_>T*K?c!R z7Vi|MW@bl`T{J8?iQV#GGITn2EhJl5gYP4Wu$9Y{g}>fE(N`mZgA)7}D=9bp<)HM- zauZE5*uF9Y*Fq5}#3w>^(MY!1`#fF`kCyUVRk)m3f{zmGaG226Hpo(1Z*a3~ENQzo z5ofcAU+;)l%k&=}=I)p8<;t}!_&qTjp-XS{8?>4)&^>dKgZ`*)R`^ij*pggg5VNi}t@ZjhG2xoNkE zZdru44bst{3dtpxJUNti-Z2bfy2N%kX>|;pr~5>f!O5ZCF>JnRy1dAZM=rTd7E*m< zYTA2sQx#!#551;0i|Vf3Cuj=uDP%E4-VjsTGVB&_XNY4I0(x$0%h@-4Cxn%t2u>3dx&|6Rg== zHLq%K2;LgJGm5IsO)KR~c(8_JH_cX>>m9KT=lhCYacP?p2L#IF}YY+XtE5i zql_a&7O2?K+S<|4wZH|W$5SWJ(J^rH0Z#GFQ+f9bZw^&F%Fd*yI9W+kYqPJWCJz83 Cs2}$L diff --git a/js/dist/tooltip.js b/js/dist/tooltip.js index 9f08af16b..a1bd76873 100644 --- a/js/dist/tooltip.js +++ b/js/dist/tooltip.js @@ -154,11 +154,9 @@ var Tooltip = (function ($) { }, { key: 'toggle', value: function toggle(event) { - var context = this; - var dataKey = this.constructor.DATA_KEY; - if (event) { - context = $(event.currentTarget).data(dataKey); + var dataKey = this.constructor.DATA_KEY; + var context = $(event.currentTarget).data(dataKey); if (!context) { context = new this.constructor(event.currentTarget, this._getDelegateConfig()); @@ -173,7 +171,13 @@ var Tooltip = (function ($) { context._leave(null, context); } } else { - $(context.getTipElement()).hasClass(ClassName.IN) ? context._leave(null, context) : context._enter(null, context); + + if ($(this.getTipElement()).hasClass(ClassName.IN)) { + this._leave(null, this); + return; + } + + this._enter(null, this); } } }, { @@ -238,9 +242,9 @@ var Tooltip = (function ($) { $(this.element).trigger(this.constructor.Event.INSERTED); this._tether = new Tether({ + attachment: attachment, element: tip, target: this.element, - attachment: attachment, classes: TetherClass, classPrefix: CLASS_PREFIX, offset: this.config.offset, @@ -263,7 +267,12 @@ var Tooltip = (function ($) { } }; - Util.supportsTransitionEnd() && $(this.tip).hasClass(ClassName.FADE) ? $(this.tip).one(Util.TRANSITION_END, complete).emulateTransitionEnd(Tooltip._TRANSITION_DURATION) : complete(); + if (Util.supportsTransitionEnd() && $(this.tip).hasClass(ClassName.FADE)) { + $(this.tip).one(Util.TRANSITION_END, complete).emulateTransitionEnd(Tooltip._TRANSITION_DURATION); + return; + } + + complete(); } } }, { @@ -310,7 +319,7 @@ var Tooltip = (function ($) { }, { key: 'isWithContent', value: function isWithContent() { - return !!this.getTitle(); + return Boolean(this.getTitle()); } }, { key: 'getTipElement', @@ -373,8 +382,8 @@ var Tooltip = (function ($) { if (trigger === 'click') { $(_this3.element).on(_this3.constructor.Event.CLICK, _this3.config.selector, $.proxy(_this3.toggle, _this3)); } else if (trigger !== Trigger.MANUAL) { - var eventIn = trigger == Trigger.HOVER ? _this3.constructor.Event.MOUSEENTER : _this3.constructor.Event.FOCUSIN; - var eventOut = trigger == Trigger.HOVER ? _this3.constructor.Event.MOUSELEAVE : _this3.constructor.Event.FOCUSOUT; + var eventIn = trigger === Trigger.HOVER ? _this3.constructor.Event.MOUSEENTER : _this3.constructor.Event.FOCUSIN; + var eventOut = trigger === Trigger.HOVER ? _this3.constructor.Event.MOUSELEAVE : _this3.constructor.Event.FOCUSOUT; $(_this3.element).on(eventIn, _this3.config.selector, $.proxy(_this3._enter, _this3)).on(eventOut, _this3.config.selector, $.proxy(_this3._leave, _this3)); } @@ -416,7 +425,7 @@ var Tooltip = (function ($) { } if (event) { - context._activeTrigger[event.type == 'focusin' ? Trigger.FOCUS : Trigger.HOVER] = true; + context._activeTrigger[event.type === 'focusin' ? Trigger.FOCUS : Trigger.HOVER] = true; } if ($(context.getTipElement()).hasClass(ClassName.IN) || context._hoverState === HoverState.IN) { @@ -452,7 +461,7 @@ var Tooltip = (function ($) { } if (event) { - context._activeTrigger[event.type == 'focusout' ? Trigger.FOCUS : Trigger.HOVER] = false; + context._activeTrigger[event.type === 'focusout' ? Trigger.FOCUS : Trigger.HOVER] = false; } if (context._isWithActiveTrigger()) { @@ -508,9 +517,8 @@ var Tooltip = (function ($) { if (this.config) { for (var key in this.config) { - var value = this.config[key]; - if (this.constructor.Default[key] !== value) { - config[key] = value; + if (this.constructor.Default[key] !== this.config[key]) { + config[key] = this.config[key]; } } } diff --git a/js/dist/tooltip.js.map b/js/dist/tooltip.js.map index 10555ae99121112a8f94481a74736420806a68ea..cf68704b5aa3d7ee5bccee617de4be1c8c781860 100644 GIT binary patch delta 698 zcmZuuK}-`t6wR*NVz(t*(xpXO>{<(Kb&6087#m}z+d^t3EiTjsfu=S~X}jzaSR2%s z=*j3s^e5h$=!rxRn9Mj_eEJ?Y@r5*W`QQ#Oxg z%$wDlhd-V%lIAlslzMw$)0=d)ZP!z%1eEB3ZLbTueDZMHZ#9XQO{K~B6)ffA*5FB0 zH-RZjI<-HR=~^JSeL;q4rG4t}gIR&4mn5>|KVgSA$2cy7aRyCb$&joU$-pqz4b4y( zQlb8%EzauPPkKNpX@8hbBVuXYXH9G{0arn4UAi-kYPVOsX40%^QYlEOZ;BNVsb#1X)xms6l%)>=J M2#53lxvBe@e{~tz4*&oF delta 589 zcmaJ+(Q8s+9Od5Kd)HN&u1q(qd0nhYeKvHcsD~c*P!M~F-d6W&&pmu_&iT&ooZs*Du5fQx=;TyX z)PpLWqLeifLXfM5Qkl%i|` zdjS`+HVdY$mVQHsCP)^VmB@L@YK*Vh?)PKJ8F6kTC|x8;N;729KxXR}pLNcOc;qUW zgN-C%5Zvp-23|i)<|&;w?S@Jzoifs{@+WSuB$%c{_;AE7XDMqZ_)pIXWhi6jW+}~@ zZboJ(ogropf}@rHea88Z(dV*cj$_*&6t?(|e^TmkOCTt;`I*2c32z)Dco4EnMs^ss zP}trrFt;=Bm}IDjJOf>=yKI@V8~kZ#S`?!d42H*z_gg%Z zZUUY9826?6M0`mffM+En#Ic<|jJ>o|)M5q<;$_jsKWCmPc$`Z*%er2^R$Hq!bxn(D zJ;rx(MG@aGdT}8?CTelC^S2c(R%~h--WQJIRZ->V7xw!cKA%~9>UvdQsOycYpO=XfX@GGDLSjeyNy*wD5asP1O1HmZ(np{q(k+j^g>L6Oxhe26Iu(T+bRd z@QAY=fE~0mSICq2AX8C_Hh|5zl-~u|O^|58XaTR`yP1uYnBmC`tF!^y$=n5S6C~9V z^w-xR7yFjfW#VE}U0xK_o6G@l*gYXCsbC0K)L0nkXu6JA>w zHrY17B+@NG!f)!Ov*P-yIT4Z3eyerz2(7GF5cf51IKb;NYF!4X%TJ6yX1i&mxfk)L z93!cL7sbc3c`{Wh(`#FCZtjPoKJEB4Ie46}l5t#IXex7N5DdJoUy4RuKkP^Sz%OH1 zXyAuJZKc0QOK#xr^?P@ZhF)0R?}qk)e`gd7y-{>j8lHl3nNGCvXTdSHM5qsLj zbN@HWz4%O{7bqQ5ZxDLPi&H;h_C{Np{nycP$CqaDvu5ELonl2_!;ap>*ZO)&DBxGU Jh`;m)e*nO}rNsaM delta 399 zcmX|+%S!@L6vnyZq~%CyK5|A$ZBZ)Mg0zm@7 z2B4_`teeswgcKoJ{5B=HI>lA4yW)$vXtd+HbEr=Qx{0HfH8b7eSq%3rGo-6uS)ziM zafbd$!HDJ#)Euw|zKtx2JU~NYrFdYCkRo1NW4TB0Dgm*4(JJGy;uj8Uc&ljmrA%U9na8ki1Dn1C-Z-52>O1-cC9rc0 diff --git a/js/src/scrollspy.js b/js/src/scrollspy.js index df33f48de..9476c46ce 100644 --- a/js/src/scrollspy.js +++ b/js/src/scrollspy.js @@ -43,16 +43,18 @@ const ScrollSpy = (($) => { } const ClassName = { - DROPDOWN_MENU : 'dropdown-menu', - ACTIVE : 'active' + DROPDOWN_TOGGLE : 'dropdown-toggle', + DROPDOWN_ITEM : 'dropdown-item', + DROPDOWN_MENU : 'dropdown-menu', + ACTIVE : 'active' } const Selector = { - DATA_SPY : '[data-spy="scroll"]', - ACTIVE : '.active', - LI : 'li', - LI_DROPDOWN : 'li.dropdown', - NAV_ANCHORS : '.nav li > a' + DATA_SPY : '[data-spy="scroll"]', + ACTIVE : '.active', + LI_DROPDOWN : 'li.dropdown', + NAV_LINKS : '.nav-link', + DROPDOWN_ITEMS : '.dropdown-item' } const OffsetMethod = { @@ -73,7 +75,8 @@ const ScrollSpy = (($) => { this._element = element this._scrollElement = element.tagName === 'BODY' ? window : element this._config = this._getConfig(config) - this._selector = `${this._config.target} ${Selector.NAV_ANCHORS}` + this._selector = `${this._config.target} ${Selector.NAV_LINKS},` + + `${this._config.target} ${Selector.DROPDOWN_ITEMS}` this._offsets = [] this._targets = [] this._activeTarget = null @@ -229,39 +232,27 @@ const ScrollSpy = (($) => { this._clear() - let selector = - `${this._selector}[data-target="${target}"],` + - `${this._selector}[href="${target}"]` + let queries = this._selector.split(',') + queries = queries.map((selector) => { + return `${selector}[data-target="${target}"],` + + `${selector}[href="${target}"]` + }) + let $link = $(queries.join(',')) - // todo (fat): getting all the raw li's up the tree is not great. - let parentListItems = $(selector).parents(Selector.LI) - - for (let i = parentListItems.length; i--;) { - $(parentListItems[i]).addClass(ClassName.ACTIVE) - - let itemParent = parentListItems[i].parentNode - - if (itemParent && $(itemParent).hasClass(ClassName.DROPDOWN_MENU)) { - let closestDropdown = $(itemParent) - .closest(Selector.LI_DROPDOWN)[0] - $(closestDropdown).addClass(ClassName.ACTIVE) - } + if ($link.hasClass(ClassName.DROPDOWN_ITEM)) { + $link.parent().find(ClassName.DROPDOWN_TOGGLE).addClass(ClassName.ACTIVE) } + $link.addClass(ClassName.ACTIVE) + $(this._scrollElement).trigger(Event.ACTIVATE, { relatedTarget: target }) } _clear() { - let activeParents = $(this._selector).parentsUntil( - this._config.target, - Selector.ACTIVE - ) - - for (let i = activeParents.length; i--;) { - $(activeParents[i]).removeClass(ClassName.ACTIVE) - } + debugger + $(this._selector).filter(ClassName.ACTIVE).removeClass(Selector.ACTIVE) } diff --git a/js/tests/visual/scrollspy.html b/js/tests/visual/scrollspy.html index 332d5b6b9..e8ae05108 100644 --- a/js/tests/visual/scrollspy.html +++ b/js/tests/visual/scrollspy.html @@ -22,26 +22,25 @@
-