From 32c0c1314e7279768bd413226d66a84b08a14161 Mon Sep 17 00:00:00 2001 From: maxkadushkin Date: Wed, 6 Mar 2024 22:45:29 +0300 Subject: [PATCH] [main] added class to handle transitions --- apps/common/main/lib/component/Mixtbar.js | 3 +- apps/common/main/lib/mods/transition.js | 59 +++++++++++++++++++++++ 2 files changed, 61 insertions(+), 1 deletion(-) create mode 100644 apps/common/main/lib/mods/transition.js diff --git a/apps/common/main/lib/component/Mixtbar.js b/apps/common/main/lib/component/Mixtbar.js index 7bd2bbb450..a4f62d6a23 100644 --- a/apps/common/main/lib/component/Mixtbar.js +++ b/apps/common/main/lib/component/Mixtbar.js @@ -42,7 +42,8 @@ define([ 'backbone', - 'common/main/lib/component/BaseView' + 'common/main/lib/component/BaseView', + 'common/main/lib/mods/transition' ], function (Backbone) { 'use strict'; diff --git a/apps/common/main/lib/mods/transition.js b/apps/common/main/lib/mods/transition.js new file mode 100644 index 0000000000..5a9a3e30f7 --- /dev/null +++ b/apps/common/main/lib/mods/transition.js @@ -0,0 +1,59 @@ +/* ======================================================================== + * Bootstrap: transition.js v3.4.1 + * https://getbootstrap.com/docs/3.4/javascript/#transitions + * ======================================================================== + * Copyright 2011-2019 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // CSS TRANSITION SUPPORT (Shoutout: https://modernizr.com/) + // ============================================================ + + function transitionEnd() { + var el = document.createElement('bootstrap') + + var transEndEventNames = { + WebkitTransition : 'webkitTransitionEnd', + MozTransition : 'transitionend', + OTransition : 'oTransitionEnd otransitionend', + transition : 'transitionend' + } + + for (var name in transEndEventNames) { + if (el.style[name] !== undefined) { + return { end: transEndEventNames[name] } + } + } + + return false // explicit for ie8 ( ._.) + } + + // https://blog.alexmaccaw.com/css-transitions + $.fn.emulateTransitionEnd = function (duration) { + var called = false + var $el = this + $(this).one('bsTransitionEnd', function () { called = true }) + var callback = function () { if (!called) $($el).trigger($.support.transition.end) } + setTimeout(callback, duration) + return this + } + + $(function () { + $.support.transition = transitionEnd() + + if (!$.support.transition) return + + $.event.special.bsTransitionEnd = { + bindType: $.support.transition.end, + delegateType: $.support.transition.end, + handle: function (e) { + if ($(e.target).is(this)) return e.handleObj.handler.apply(this, arguments) + } + } + }) + +}(jQuery);