Improve selection of identical options in select field in settings

This commit is contained in:
Dima Uryvskiy 2020-12-23 11:17:11 +03:00 committed by GitHub
parent 9a0b732f50
commit 07a9056a82
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 37 additions and 37 deletions

View File

@ -49,6 +49,8 @@ $(function(){
},
selects: {
init: function () {
var _this = this;
try {
$('.jq-select').SumoSelect();
$('li.opt').each((_, el) => {
@ -58,9 +60,42 @@ $(function(){
$(el).addClass('disabled');
}
});
// auto disabled selected options
_this.update();
$(document).on('change', '.jq-select', function() {
_this.update();
});
} catch (e) {
console.warn('Cannot initialize select: ' + e.message);
}
},
update: function() {
var selected = {};
let selects = $('.retail-tab__enabled').find('select');
selects.each((i, select) => {
var value = $(select).val();
if (value && value.length) {
selected[i] = $('option[value="' + $(select).val() + '"]', $(select)).index();
}
});
let values = Object.values(selected);
selects.each((i, select) => {
$('option', select).each((o, option) => {
if ($.inArray(o, values) === -1 || (typeof selected[i] !== 'undefined' && selected[i] == o)) {
select.sumo.enableItem(o);
} else {
select.sumo.disableItem(o);
}
});
});
}
},
player: {
@ -192,4 +227,4 @@ $(function(){
};
Main.init();
});
});

View File

@ -1,36 +1 @@
/**
* MIT License
*
* Copyright (c) 2020 DIGITAL RETAIL TECHNOLOGIES SL
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
* versions in the future. If you wish to customize PrestaShop for your
* needs please refer to http://www.prestashop.com for more information.
*
* @author DIGITAL RETAIL TECHNOLOGIES SL <mail@simlachat.com>
* @copyright 2020 DIGITAL RETAIL TECHNOLOGIES SL
* @license https://opensource.org/licenses/MIT The MIT License
*
* Don't forget to prefix your containers with your own identifier
* to avoid any conflicts with others containers.
*/$(function(){({init:function init(){this.player.init(),this.tabs.init(),this.uploadForm.init(this.settingsTabs.init()),this.selects.init(),this.popup.init(),this.toggleBox(),this.trimConsultant(),this.showSettings()},selects:{init:function init(){try{$(".jq-select").SumoSelect(),$("li.opt").each(function(a,b){if(0===$(b).find("label").html().length){var c=$(b).closest("ul").closest("div").parent().find("select");$(b).find("label").html(c.attr("placeholder")),$(b).addClass("disabled")}})}catch(a){console.warn("Cannot initialize select: "+a.message)}}},player:{init:function init(){window.player={},window.onYouTubeIframeAPIReady=function(){window.player=new YT.Player("player",{height:"100%",width:"100%",videoId:window.RCRMPROMO})};var a=document.createElement("script");a.src="https://www.youtube.com/iframe_api",document.body.appendChild(a)}},settingsTabs:{init:function init(){if("undefined"!=typeof RCRMTabs){var a=new RCRMTabs("div[id^=\"rcrm_tab_\"]",".retail-menu__btn","retail-tab__enabled","retail-tab__disabled","retail-menu__btn_active","retail-menu__btn_inactive","tab-trigger",".rcrm-form-submit-trigger"),b={beforeActivate:function beforeActivate(){$("#main-submit").hide()},afterDeactivate:function afterDeactivate(){$("#main-submit").show()}};return a.tabsCallbacks({rcrm_tab_consultant:b,rcrm_tab_orders_upload:b}),a.initializeTabs(),a}}},uploadForm:{init:function init(a){"undefined"==typeof RetailcrmUploadForm||new RetailcrmUploadForm(a)}},tabs:{init:function init(){$(".retail-tabs__btn").on("click",this.swithTab)},swithTab:function swithTab(a){a.preventDefault();var b=$(this).attr("href");$(".retail-tabs__btn_active").removeClass("retail-tabs__btn_active"),$(".retail-tabs__item_active").removeClass("retail-tabs__item_active").fadeOut(150,function(){$(b).addClass("retail-tabs__item_active").fadeIn(150)}),$(this).addClass("retail-tabs__btn_active")}},popup:{init:function init(){var a=this;$("[data-popup]").on("click",function(){var b=$(this).data("popup");a.open($(b))}),$(".retail-popup-wrap").on("click",function(b){if($(b.target).hasClass("js-popup-close")){var c=$(this).find(".retail-popup");a.close(c)}})},open:function open(a){if(a){var b=a.closest(".retail-popup-wrap");b.fadeIn(200),a.addClass("open"),player.playVideo()}},close:function close(a){var b=a.closest(".retail-popup-wrap");a.removeClass("open"),b.fadeOut(200),player.stopVideo()}},toggleBox:function toggleBox(){$(".toggle-btn").on("click",function(a){a.preventDefault();var b=$(this).attr("href"),c=$(b),d=$(this).closest(".retail-btns");d.addClass("retail-btns_hide").slideUp(100),c.slideDown(100)})},trimConsultant:function trimConsultant(){var a=$("#rcrm_tab_consultant textarea");a.text(a.text().trim())},showSettings:function showSettings(){$(".retail.retail-wrap.hidden").removeClass("hidden")}}).init()});
$(function(){var Main={init:function(){this.player.init();this.tabs.init();this.uploadForm.init(this.settingsTabs.init());this.selects.init();this.popup.init();this.toggleBox();this.trimConsultant();this.showSettings()},selects:{init:function(){var _this=this;try{$(".jq-select").SumoSelect();$("li.opt").each((_,el)=>{if($(el).find("label").html().length===0){let select=$(el).closest("ul").closest("div").parent().find("select");$(el).find("label").html(select.attr("placeholder"));$(el).addClass("disabled")}});_this.update();$(document).on("change",".jq-select",function(){_this.update()})}catch(e){console.warn("Cannot initialize select: "+e.message)}},update:function(){var selected={};let selects=$(".retail-tab__enabled").find("select");selects.each((i,select)=>{var value=$(select).val();if(value&&value.length){selected[i]=$('option[value="'+$(select).val()+'"]',$(select)).index()}});let values=Object.values(selected);selects.each((i,select)=>{$("option",select).each((o,option)=>{if($.inArray(o,values)===-1||typeof selected[i]!=="undefined"&&selected[i]==o){select.sumo.enableItem(o)}else{select.sumo.disableItem(o)}})})}},player:{init:function(){window.player={};window.onYouTubeIframeAPIReady=function(){window.player=new YT.Player("player",{height:"100%",width:"100%",videoId:window.RCRMPROMO})};var ytAPI=document.createElement("script");ytAPI.src="https://www.youtube.com/iframe_api";document.body.appendChild(ytAPI)}},settingsTabs:{init:function(){if(typeof RCRMTabs==="undefined"){return}let tabs=new RCRMTabs('div[id^="rcrm_tab_"]',".retail-menu__btn","retail-tab__enabled","retail-tab__disabled","retail-menu__btn_active","retail-menu__btn_inactive","tab-trigger",".rcrm-form-submit-trigger");let mainSubmitHide={beforeActivate:function(){$("#main-submit").hide()},afterDeactivate:function(){$("#main-submit").show()}};tabs.tabsCallbacks({rcrm_tab_consultant:mainSubmitHide,rcrm_tab_orders_upload:mainSubmitHide});tabs.initializeTabs();return tabs}},uploadForm:{init:function(tabController){if(!(typeof RetailcrmUploadForm==="undefined")){new RetailcrmUploadForm(tabController)}}},tabs:{init:function(){$(".retail-tabs__btn").on("click",this.swithTab)},swithTab:function(e){e.preventDefault();var id=$(this).attr("href");$(".retail-tabs__btn_active").removeClass("retail-tabs__btn_active");$(".retail-tabs__item_active").removeClass("retail-tabs__item_active").fadeOut(150,function(){$(id).addClass("retail-tabs__item_active").fadeIn(150)});$(this).addClass("retail-tabs__btn_active")}},popup:{init:function(){var _this=this;$("[data-popup]").on("click",function(e){var id=$(this).data("popup");_this.open($(id))});$(".retail-popup-wrap").on("click",function(e){if(!$(e.target).hasClass("js-popup-close")){return}var $popup=$(this).find(".retail-popup");_this.close($popup)})},open:function(popup){if(!popup){return}var $wrap=popup.closest(".retail-popup-wrap");$wrap.fadeIn(200);popup.addClass("open");player.playVideo()},close:function(popup){var $wrap=popup.closest(".retail-popup-wrap");popup.removeClass("open");$wrap.fadeOut(200);player.stopVideo()}},toggleBox:function(){$(".toggle-btn").on("click",function(e){e.preventDefault();var id=$(this).attr("href");var $box=$(id);var $hideBox=$(this).closest(".retail-btns");$hideBox.addClass("retail-btns_hide").slideUp(100);$box.slideDown(100)})},trimConsultant:function(){let $consultantTextarea=$("#rcrm_tab_consultant textarea");$consultantTextarea.text($consultantTextarea.text().trim())},showSettings:function(){$(".retail.retail-wrap.hidden").removeClass("hidden")}};Main.init()});