/*----------------------------- accordion_list -----------------------------*/ (($) => { const defaults = { activeItems:[], speedAnimation:300, hideOtherItems:true, funcCallbackSlideStart:( eleAccordionListParentNextItem, eleAccordionListParentOtherItems, flagToggle, callback ) => { callback(); }, funcCallbackSlideEnd:( nextIndex, eleAccordionListParentNextItem, eleAccordionListParentOtherItems, flagToggle, callback ) => { callback(); } }, cssAccordionListTriggerShow = 'accordion_list_trigger_show', cssAccordionListTriggerHide = 'accordion_list_trigger_hide'; let flagSlide = false; $.fn.accordionList = function(options){ let el = this, lenEl = el.length; if(lenEl === 0) return this; if(lenEl > 1){ el.each(function(){ $(this).accordionList(options); }); return this; } let configs = {}, funcDestructor = () => { lenEl = funcInit = funcShowActiveItems = funcAddEventListener = funcDestructor = void 0; }, funcInit = () => { configs = $.extend( {}, defaults, options ); funcShowActiveItems(); funcAddEventListener(); funcDestructor(); }, funcShowActiveItems = () => { const eleAccordionListParent = el.find('> .accordion_list_parent'); eleAccordionListParent.each(function(index){ if($.inArray( index, configs.activeItems ) !== -1){ const eleAccordionListParentNextItem = eleAccordionListParent.eq(index), eleAccordionListContentsNextItem = eleAccordionListParentNextItem.find('> .accordion_list_contents'), eleAccordionListTriggerNextItem = eleAccordionListParentNextItem.find('> .accordion_list_trigger'); eleAccordionListContentsNextItem .show(); eleAccordionListTriggerNextItem .addClass(cssAccordionListTriggerShow); } }); }, funcAddEventListener = () => { const eleAccordionListParent = el.find('> .accordion_list_parent'); eleAccordionListParent.each(function(index){ const eleAccordionListTrigger = $(this).find('> .accordion_list_trigger'); eleAccordionListTrigger.on({ 'click':() => { if(flagSlide) return false; flagSlide = true; const eleAccordionListParentNextItem = eleAccordionListParent.eq(index), eleAccordionListParentOtherItems = el.find('> .accordion_list_parent:not(:eq(' + index + '))'), eleAccordionListContentsNextItem = eleAccordionListParentNextItem.find('> .accordion_list_contents'), eleAccordionListContentsNextItemChild = eleAccordionListContentsNextItem.find('> *'), eleAccordionListContentsOtherItems = eleAccordionListParentOtherItems.find('> .accordion_list_contents'), flagToggle = eleAccordionListContentsNextItem.height() === 0?'show':'hide', funcCallbackSlideStart = () => { const funcCallbackSlideEnd = () => { if(configs.hideOtherItems) eleAccordionListParentOtherItems.each(function(){ const eleAccordionListTriggerOtherItems = $(this).find('> .accordion_list_trigger'); if(eleAccordionListTriggerOtherItems.hasClass(cssAccordionListTriggerShow)){ eleAccordionListTriggerOtherItems .removeClass(cssAccordionListTriggerShow); eleAccordionListTriggerOtherItems .addClass(cssAccordionListTriggerHide); } }); configs.funcCallbackSlideEnd( index, eleAccordionListParentNextItem, eleAccordionListParentOtherItems, flagToggle, () => { flagSlide = false; } ); }; switch(flagToggle){ case 'show': eleAccordionListContentsNextItem .stop() .animate( { height:eleAccordionListContentsNextItemChild.outerHeight(true) }, configs.speedAnimation, () => { const eleAccordionListTriggerNextItem = eleAccordionListParentNextItem.find('> .accordion_list_trigger'); if(eleAccordionListTriggerNextItem.hasClass(cssAccordionListTriggerHide)) eleAccordionListTriggerNextItem .removeClass(cssAccordionListTriggerHide); eleAccordionListTriggerNextItem .addClass(cssAccordionListTriggerShow); funcCallbackSlideEnd(); } ); break; case 'hide': eleAccordionListContentsNextItem .stop() .animate( { height:0 }, configs.speedAnimation, () => { const eleAccordionListTriggerNextItem = eleAccordionListParentNextItem.find('> .accordion_list_trigger'); if(eleAccordionListTriggerNextItem.hasClass(cssAccordionListTriggerShow)) eleAccordionListTriggerNextItem .removeClass(cssAccordionListTriggerShow); eleAccordionListTriggerNextItem .addClass(cssAccordionListTriggerHide); funcCallbackSlideEnd(); } ); break; } if(configs.hideOtherItems === false) return false; eleAccordionListContentsOtherItems .stop() .slideUp(configs.speedAnimation); }; if(configs.funcCallbackSlideStart( eleAccordionListParentNextItem, eleAccordionListParentOtherItems, flagToggle, funcCallbackSlideStart ) === false) flagSlide = false; } }); }); }; funcInit(); return this; }; })(jQuery); /*----------------------------- /accordion_list -----------------------------*/ (function($){ $(document).ready(function(){ const eleFsReviewEditButtonArea = $('.FS2_additional_image_itemdetail_container_left'); eleFsReviewEditButtonArea.append(`