123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127 |
- define([
- 'jquery',
- 'Magento_Ui/js/modal/confirm',
- 'domReady!'
- ], function (jQuery, confirm) {
- 'use strict';
- /**
- * Init
- * @param {Int} useConfirm
- * @param {String} getContent
- * @param {Int} objVal
- * @param {Boolean} isIframe
- * @param {String} switchUrl
- */
- function init(useConfirm, getContent, objVal, isIframe, switchUrl) {
- var scopeSwitcherHandler;
- (function ($) {
- var $storesList = $('[data-role=stores-list]');
- $storesList.on('click', '[data-value]', function (event) {
- var val = $(event.target).data('value'),
- role = $(event.target).data('role'),
- switcher = $('[data-role=' + role + ']');
- event.preventDefault();
- if (!switcher.val() || val !== switcher.val()) {
- switcher.val(val).trigger('change'); // Set the value & trigger event
- }
- });
- })(jQuery);
- /**
- * Switch scope
- * @param {Object} obj
- */
- function switchScope(obj) {
- var switcher = jQuery(obj),
- scopeId = switcher.val(),
- scopeParams = '',
- switcherParams;
- /**
- * Reload
- */
- function reload() {
- var url;
- if (!isIframe) {
- url = switchUrl + scopeParams;
- window.location.href = url;
- } else {
- jQuery('#preview_selected_store').val(scopeId);
- jQuery('#preview_form').submit();
- jQuery('.store-switcher .dropdown-menu li a').each(function () {
- var $this = jQuery(this);
- if ($this.data('role') === 'store-view-id' && $this.data('value') === scopeId) {
- jQuery('#store-change-button').html($this.text());
- }
- });
- jQuery('#store-change-button').click();
- }
- }
- if (scopeId) {
- scopeParams = switcher.data('param') + '/' + scopeId + '/';
- }
- if (obj.switchParams) {
- scopeParams += obj.switchParams;
- }
- if (typeof scopeSwitcherHandler !== 'undefined') {
- switcherParams = {
- scopeId: scopeId,
- scopeParams: scopeParams,
- useConfirm: useConfirm
- };
- scopeSwitcherHandler(switcherParams);
- } else if (useConfirm) {
- confirm({
- content: getContent,
- actions: {
- /**
- * Confirm
- */
- confirm: function () {
- reload();
- },
- /**
- * Cancel
- */
- cancel: function () {
- obj.value = objVal;
- }
- }
- });
- } else {
- reload();
- }
- }
- window.scopeSwitcherHandler = scopeSwitcherHandler;
- window.switchScope = switchScope;
- }
- /**
- *
- * @param {Object} switcher
- */
- return function (switcher) {
- init(
- switcher.getUseConfirm,
- switcher.getContent,
- switcher.objVal,
- switcher.isUsingIframe,
- switcher.getSwitchUrl
- );
- };
- });
|