123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 |
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- (function (root, factory) {
- 'use strict';
- if (typeof define === 'function' && define.amd) {
- define([
- 'jquery',
- 'mage/apply/main'
- ], factory);
- } else {
- factory(root.jQuery);
- }
- }(this, function ($, mage) {
- 'use strict';
- /**
- * Main namespace for Magento extensions
- * @type {Object}
- */
- $.mage = $.mage || {};
- /**
- * Plugin mage, initialize components on elements
- * @param {String} name - Components' path.
- * @param {Object} config - Components' config.
- * @returns {JQuery} Chainable.
- */
- $.fn.mage = function (name, config) {
- config = config || {};
- this.each(function (index, el) {
- mage.applyFor(el, config, name);
- });
- return this;
- };
- $.extend($.mage, {
- /**
- * Handle all components declared via data attribute
- * @return {Object} $.mage
- */
- init: function () {
- mage.apply();
- return this;
- },
- /**
- * Method handling redirects and page refresh
- * @param {String} url - redirect URL
- * @param {(undefined|String)} type - 'assign', 'reload', 'replace'
- * @param {(undefined|Number)} timeout - timeout in milliseconds before processing the redirect or reload
- * @param {(undefined|Boolean)} forced - true|false used for 'reload' only
- */
- redirect: function (url, type, timeout, forced) {
- var _redirect;
- forced = !!forced;
- timeout = timeout || 0;
- type = type || 'assign';
- /**
- * @private
- */
- _redirect = function () {
- window.location[type](type === 'reload' ? forced : url);
- };
- timeout ? setTimeout(_redirect, timeout) : _redirect();
- },
- /**
- * Checks if provided string is a valid selector.
- * @param {String} selector - Selector to check.
- * @returns {Boolean}
- */
- isValidSelector: function (selector) {
- try {
- document.querySelector(selector);
- return true;
- } catch (e) {
- return false;
- }
- }
- });
- /**
- * Init components inside of dynamically updated elements
- */
- $('body').on('contentUpdated', function () {
- if (mage) {
- mage.apply();
- }
- });
- return $.mage;
- }));
|