Skip to Content

JavaScript File

URL: https://static.insales-cdn.com/assets/static-versioned/5.4/static/libs/cut-list/1.0.0/jquery.cut-list.min.js
HTTP Status: 200 OK
MIME Type: text/javascript
Last Modified: Mon, 23 Sep 2024 21:41:31 GMT
Download Time: Less than a second
Cookies: None
Size: 8 KB
HTTP Headers:  16 headers
Links In:  1 pages
OK Issues: No issues found

1(function(f,_,m){const i={moreBtnTitle:"Еще",showMoreOnHover:false,alwaysVisibleElem:undefined,onBeforeCalc:function(){}

2,onBeforeOpen:function(){}

3,onOpen:function(){}

4,onBeforeClose:function(){}

5,onClose:function(){}

6,resizeDelay:50,minWidth:null}

7;const t=300;class s{constructor(t,e){this.elements=f(t);this.options=f.extend({}

8,i,e);this.resizeTimeoutObserver=null;this.resizeTimeoutWindow=null;this.observers=[];this.setupObserversInited=false;this.initialized=false;this.destroyed=false;if(this.options.minWidth&&this.options.minWidth>0){this.checkScreenWidth();this.setupWindowResizeHandler()}

9else{this.init()}

10}

11checkScreenWidth(){const t=f(_).width();const e=this.options.minWidth&&this.options.minWidth>0?t<=this.options.minWidth:false;if(e&&this.initialized){this.destroy()}

12if(e){return}

13if(!e&&!this.initialized){this.init()}

14else if(!e){this.redrawList()}

15}

16updateDocumentClickHandler(){f(m).off("click.cutList");f(m).on("click.cutList",this.documentClickHandler.bind(this))}

17documentClickHandler(t){if(!f(t.target).closest(".cut-list__dropdown").length){this.options.onBeforeClose(this.elements);f(".cut-list__dropdown.is-show").removeClass("is-show").find(".cut-list__more").hide().removeClass("is-top is-left");this.options.onClose(this.elements)}

18}

19init(){if(this.initialized){this.destroy()}

20this.elements.each((t,e)=>{const i=f(e);i.addClass("cut-list-ready");this.setup(i)}

21);this.initialized=true;this.destroyed=false;this.updateDocumentClickHandler();this.setupObservers()}

22setup(t){if(!t.find(".cut-list__dropdown").length){this.createDropdownElements(t)}

23t.addClass("cut-list").children().not(".cut-list__dropdown").each(function(t){f(this).attr("data-index",t).addClass("cut-list__elem")}

24);let e=t.find(".cut-list__elem").length;let i=t.find(this.options.alwaysVisibleElem+":first").index();if(t.find(this.options.alwaysVisibleElem).length>1){console.warn("Внимание! Вами назначено несколько alwaysVisibleElem, будет использоваться только первый.")}

25this.create(t,i,e);this.setEventHandlers(t)}

26createDropdownElements(t){t.append('<div style="display:none" class="cut-list__elem cut-list__dropdown"></div>').find(".cut-list__dropdown").append('<div class="cut-list__drop"></div>').find(".cut-list__drop").append(`<div class="cut-list__drop-toggle">${this.options.moreBtnTitle}

27</div>`).append('<div class="cut-list__more"><div class="cut-list__more-content"></div></div>')}

28setEventHandlers(t){const e=this.options;if(e.showMoreOnHover){this.addHoverHandlers(t)}

29else{this.addClickHandlers(t)}

30}

31addHoverHandlers(t){t.find(".cut-list__drop").off("mouseenter mouseleave").hover(()=>{t.find(".cut-list__dropdown").addClass("is-show");this.showMore(t.find(".cut-list__dropdown .cut-list__more"),t)}

32,()=>{this.options.onBeforeClose(t);t.find(".cut-list__dropdown").removeClass("is-show");this.hideMore(t.find(".cut-list__dropdown").find(".cut-list__more"));this.options.onClose(t)}

33)}

34addClickHandlers(i){i.find(".cut-list__drop-toggle").off("click.cutList").on("click.cutList",()=>{const t=i.find(".cut-list__dropdown");const e=t.toggleClass("is-show").hasClass("is-show");if(e){this.showMore(t.find(".cut-list__more"),i)}

35else{this.hideMore(t.find(".cut-list__more"))}

36}

37)}

38setupObservers(){this.removeObservers();this.elements.each((t,e)=>{const i=new ResizeObserver(()=>{if(this.setupObserversInited){clearTimeout(this.resizeTimeoutObserver);this.resizeTimeoutObserver=setTimeout(()=>{if(!this.destroyed){this.redrawList()}

39}

40,this.options.resizeDelay)}

...

</html>