TweenMax.js
1 year ago
anime.js
1 year ago
flipster.js
1 year ago
headroom.js
1 year ago
iscroll.js
1 year ago
isotope.js
1 year ago
jquery-countdown.js
1 year ago
jquery-mousewheel.js
1 year ago
jquery-slimscroll.js
1 year ago
lottie.js
1 year ago
luxon.js
1 year ago
markerclusterer.js
1 year ago
modal.js
1 year ago
motionpath.js
1 year ago
pa-gsap.js
1 year ago
pa-scrolldir.js
1 year ago
premium-addons.js
1 year ago
premium-banner.js
1 year ago
premium-blog.js
1 year ago
premium-button.js
1 year ago
premium-carousel-widget.js
1 year ago
premium-contact-form.js
1 year ago
premium-countdown-timer.js
1 year ago
premium-counter.js
1 year ago
premium-dis-conditions.js
1 year ago
premium-dual-header.js
1 year ago
premium-eq-height.js
1 year ago
premium-fancy-text.js
1 year ago
premium-floating-effects.js
1 year ago
premium-global-tooltips.js
1 year ago
premium-icon-list.js
1 year ago
premium-image-button.js
1 year ago
premium-image-scroll.js
1 year ago
premium-img-gallery.js
1 year ago
premium-maps.js
1 year ago
premium-media-wheel.js
1 year ago
premium-mini-cart.js
1 year ago
premium-mobile-menu.js
1 year ago
premium-modal-box.js
1 year ago
premium-nav-menu.js
1 year ago
premium-notifications.js
1 year ago
premium-person.js
1 year ago
premium-pinterest-feed.js
1 year ago
premium-post-ticker.js
1 year ago
premium-progressbar.js
1 year ago
premium-search-form.js
1 year ago
premium-shape-divider.js
1 year ago
premium-svg-drawer.js
1 year ago
premium-tcloud.js
1 year ago
premium-testimonials.js
1 year ago
premium-textual-showcase.js
1 year ago
premium-tiktok-feed.js
1 year ago
premium-title.js
1 year ago
premium-video-box.js
1 year ago
premium-vscroll.js
1 year ago
premium-weather.js
1 year ago
premium-woo-categories.js
1 year ago
premium-woo-cta.js
1 year ago
premium-woo-products.js
1 year ago
premium-world-clock.js
1 year ago
premium-wrapper-link.js
1 year ago
prettyPhoto.js
1 year ago
scrollTrigger.js
1 year ago
slick.js
1 year ago
tooltipster.js
1 year ago
typed.js
1 year ago
universal-tilt.js
1 year ago
vticker.js
1 year ago
premium-notifications.js
284 lines
| 1 | |
| 2 | |
| 3 | (function ($) { |
| 4 | $(window).on('elementor/frontend/init', function () { |
| 5 | |
| 6 | var PremiumNotifications = elementorModules.frontend.handlers.Base.extend({ |
| 7 | |
| 8 | getDefaultSettings: function () { |
| 9 | |
| 10 | return { |
| 11 | selectors: { |
| 12 | user: '.fa-user', |
| 13 | outerWrap: '.pa-recent-notification', |
| 14 | iconWrap: '.pa-rec-not-icon-wrap', |
| 15 | postsContainer: '.pa-rec-posts-container', |
| 16 | number: '.pa-rec-not-number', |
| 17 | closeButton: '.pa-rec-posts-close', |
| 18 | metaSeparators: '.premium-blog-meta-separator', |
| 19 | }, |
| 20 | isHidden: true |
| 21 | } |
| 22 | |
| 23 | }, |
| 24 | |
| 25 | getDefaultElements: function () { |
| 26 | |
| 27 | var selectors = this.getSettings('selectors'); |
| 28 | |
| 29 | return { |
| 30 | $outerWrap: this.$element.find(selectors.outerWrap), |
| 31 | $iconWrap: this.$element.find(selectors.iconWrap), |
| 32 | $postsContainer: this.$element.find(selectors.postsContainer), |
| 33 | $number: this.$element.find(selectors.number), |
| 34 | $closeButton: this.$element.find(selectors.closeButton) |
| 35 | } |
| 36 | |
| 37 | }, |
| 38 | |
| 39 | bindEvents: function () { |
| 40 | this.removeMetaSeparators(); |
| 41 | this.run(); |
| 42 | }, |
| 43 | |
| 44 | removeMetaSeparators: function () { |
| 45 | |
| 46 | var selectors = this.getSettings('selectors'), |
| 47 | $blogPost = this.$element.find('.premium-blog-post-outer-container'); |
| 48 | |
| 49 | var $metaSeparators = $blogPost.first().find(selectors.metaSeparators), |
| 50 | $user = $blogPost.find(selectors.user); |
| 51 | |
| 52 | if (1 === $metaSeparators.length) { |
| 53 | //If two meta only are enabled. One of them is author meta. |
| 54 | if (!$user.length) { |
| 55 | $blogPost.find(selectors.metaSeparators).remove(); |
| 56 | } |
| 57 | |
| 58 | } else { |
| 59 | if (!$user.length) { |
| 60 | $blogPost.each(function (index, post) { |
| 61 | $(post).find(selectors.metaSeparators).first().remove(); |
| 62 | }); |
| 63 | } |
| 64 | } |
| 65 | |
| 66 | }, |
| 67 | |
| 68 | addIconForNoPosts: function () { |
| 69 | |
| 70 | var settings = this.getElementSettings(), |
| 71 | iconWithNoPosts = settings.add_icon_with_no_posts, |
| 72 | iconType = settings.icon_type, |
| 73 | $iconWrap = this.elements.$iconWrap; |
| 74 | |
| 75 | if ('yes' === iconWithNoPosts) { |
| 76 | |
| 77 | if (iconType === 'image') { |
| 78 | $($iconWrap[0].children[1]).css('display', 'block'); |
| 79 | $($iconWrap[0].children[0]).css('display', 'none'); |
| 80 | } else { |
| 81 | $('.premium-notification-icon').css('display', 'none'); |
| 82 | $('.premium-icon-with-no-post').css('display', 'block'); |
| 83 | } |
| 84 | |
| 85 | } |
| 86 | }, |
| 87 | |
| 88 | run: function () { |
| 89 | |
| 90 | var $iconWrap = this.elements.$iconWrap, |
| 91 | $postsContainer = this.elements.$postsContainer, |
| 92 | $closeButton = this.elements.$closeButton, |
| 93 | $number = this.elements.$number, |
| 94 | settings = this.getElementSettings(), |
| 95 | isHidden = this.getSettings('isHidden'), |
| 96 | _this = this, |
| 97 | widgetID = this.$element.data('id'), |
| 98 | computedStyle = getComputedStyle(this.$element[0]); |
| 99 | |
| 100 | var boxWidth = computedStyle.getPropertyValue('--pa-recent-posts-width'), |
| 101 | direction = settings.posts_box_position, |
| 102 | cookies = settings.cookies; |
| 103 | |
| 104 | if ('yes' === settings.add_icon_with_no_posts && $number.length === 0) { |
| 105 | |
| 106 | $($iconWrap[0].children[1]).css('display', 'none'); |
| 107 | |
| 108 | this.addIconForNoPosts(); |
| 109 | } |
| 110 | |
| 111 | this.hideAnimationElements(); |
| 112 | |
| 113 | if (!boxWidth) |
| 114 | boxWidth = '30vw' |
| 115 | |
| 116 | $postsContainer.css(direction, '-' + boxWidth); |
| 117 | |
| 118 | $postsContainer.removeClass('elementor-invisible'); |
| 119 | |
| 120 | $iconWrap.on('click', function () { |
| 121 | |
| 122 | if (isHidden) { |
| 123 | |
| 124 | _this.addIconForNoPosts(); |
| 125 | |
| 126 | if ('yes' === cookies) { |
| 127 | |
| 128 | var isSecured = (document.location.protocol === 'https:') ? 'secure' : '', |
| 129 | recentPosts = _this.elements.$outerWrap.data('recent'); |
| 130 | |
| 131 | document.cookie = "cookieName=paRecentPosts" + widgetID + ";expires=Thu, 01 Jan 1970 00:00:00 UTC;"; |
| 132 | document.cookie = "paRecentPosts" + widgetID + "=" + recentPosts + ";SameSite=Strict;" + isSecured; |
| 133 | } |
| 134 | |
| 135 | //If other box is open, close it. |
| 136 | var currentBoxID = widgetID; |
| 137 | if (window.OpenedpostsBox && currentBoxID !== window.OpenedpostsBox) |
| 138 | _this.$element.trigger('click'); |
| 139 | |
| 140 | $number.remove(); |
| 141 | |
| 142 | $('.pa-rec-posts-overlay').css('display', 'block').animate({ |
| 143 | opacity: 1 |
| 144 | }, 500); |
| 145 | |
| 146 | $postsContainer.animate({ |
| 147 | [direction]: 0 |
| 148 | }, 500, "swing", function () { |
| 149 | |
| 150 | _this.triggerAnimations(); |
| 151 | |
| 152 | _this.setSettings({ |
| 153 | isHidden: false |
| 154 | }); |
| 155 | |
| 156 | window.OpenedpostsBox = widgetID; |
| 157 | |
| 158 | }); |
| 159 | |
| 160 | } |
| 161 | |
| 162 | }); |
| 163 | |
| 164 | $closeButton.on('click', function () { |
| 165 | _this.hideBox(boxWidth, direction); |
| 166 | }) |
| 167 | |
| 168 | //When click outside, close all boxes. |
| 169 | $("body").on("click", function (event) { |
| 170 | |
| 171 | var postsContent = ".pa-rec-posts-container, .pa-rec-posts-container *, .pa-rec-not-icon-wrap, .pa-rec-not-icon-wrap *, .premium-tabs-nav-list-item"; |
| 172 | |
| 173 | if (!$(event.target).is($(postsContent))) { |
| 174 | _this.hideBox(boxWidth, direction); |
| 175 | } |
| 176 | |
| 177 | }); |
| 178 | |
| 179 | |
| 180 | }, |
| 181 | |
| 182 | hideBox: function (width, dir) { |
| 183 | |
| 184 | var $postsContainer = this.elements.$postsContainer, |
| 185 | _this = this; |
| 186 | |
| 187 | $('.pa-rec-posts-overlay').animate({ |
| 188 | opacity: 0 |
| 189 | }, 500, function () { |
| 190 | $('.pa-rec-posts-overlay').css('display', 'none') |
| 191 | }); |
| 192 | |
| 193 | $postsContainer.animate({ |
| 194 | [dir]: '-' + width |
| 195 | }, 500, "swing", function () { |
| 196 | |
| 197 | _this.setSettings({ |
| 198 | isHidden: true |
| 199 | }); |
| 200 | |
| 201 | _this.removeAnimations(); |
| 202 | }); |
| 203 | |
| 204 | }, |
| 205 | |
| 206 | triggerAnimations: function () { |
| 207 | |
| 208 | var $headerTitle = this.$element.find('.pa-rec-title'), |
| 209 | $postsBox = this.$element.find('.pa-rec-posts-body'), |
| 210 | settings = this.getElementSettings(); |
| 211 | |
| 212 | |
| 213 | if (settings.header_animation) { |
| 214 | $headerTitle.removeClass('elementor-invisible').addClass('animated ' + settings.header_animation).attr('data-e-animation', settings.header_animation); |
| 215 | } |
| 216 | |
| 217 | if (settings.posts_animation && $postsBox.find('.premium-blog-post-outer-container').length > 0) { |
| 218 | |
| 219 | if ('yes' !== settings.posts_animation_individial) { |
| 220 | |
| 221 | $postsBox.removeClass('elementor-invisible').addClass('animated ' + settings.posts_animation).attr('data-e-animation', settings.posts_animation); |
| 222 | |
| 223 | } else { |
| 224 | |
| 225 | $postsBox = $postsBox.find('.premium-blog-post-outer-container'); |
| 226 | |
| 227 | var timeOut = 250; |
| 228 | $postsBox.map(function (index, elem) { |
| 229 | |
| 230 | setTimeout(function () { |
| 231 | $(elem).removeClass('elementor-invisible').addClass('animated ' + settings.posts_animation).attr('data-e-animation', settings.posts_animation); |
| 232 | }, 0 == index ? 0 : timeOut); |
| 233 | |
| 234 | }) |
| 235 | |
| 236 | } |
| 237 | |
| 238 | |
| 239 | } |
| 240 | |
| 241 | |
| 242 | }, |
| 243 | |
| 244 | removeAnimations: function () { |
| 245 | |
| 246 | var $postsContainer = this.elements.$postsContainer; |
| 247 | |
| 248 | $postsContainer.find(".animated").each(function (index, elem) { |
| 249 | |
| 250 | var animation = $(elem).data('e-animation'); |
| 251 | |
| 252 | $(elem).removeClass("animated " + animation).addClass("elementor-invisible"); |
| 253 | }); |
| 254 | |
| 255 | }, |
| 256 | |
| 257 | hideAnimationElements: function () { |
| 258 | |
| 259 | var $headerTitle = this.$element.find('.pa-rec-title'), |
| 260 | $postsBox = this.$element.find('.pa-rec-posts-body'), |
| 261 | settings = this.getElementSettings(); |
| 262 | |
| 263 | if ('yes' === settings.posts_animation_individial) { |
| 264 | $postsBox = $postsBox.find('.premium-blog-post-outer-container'); |
| 265 | } |
| 266 | |
| 267 | if (settings.header_animation) { |
| 268 | $headerTitle.addClass('elementor-invisible'); |
| 269 | } |
| 270 | |
| 271 | if (settings.posts_animation && this.$element.find('.premium-blog-post-outer-container').length > 0) { |
| 272 | $postsBox.addClass('elementor-invisible'); |
| 273 | } |
| 274 | |
| 275 | |
| 276 | } |
| 277 | |
| 278 | }); |
| 279 | |
| 280 | elementorFrontend.elementsHandler.attachHandler('premium-notifications', PremiumNotifications); |
| 281 | }); |
| 282 | |
| 283 | })(jQuery); |
| 284 |