@progress/kendo-ui
Version:
This package is part of the [Kendo UI for jQuery](http://www.telerik.com/kendo-ui) suite.
3 lines (2 loc) • 9.06 kB
JavaScript
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("kendo.core.js"),require("kendo.icons.js")):"function"==typeof define&&define.amd?define(["exports","kendo.core.min","kendo.icons.min"],t):t(((e="undefined"!=typeof globalThis?globalThis:e||self).kendo=e.kendo||{},e.kendo._globals=e.kendo._globals||{},e.kendo._globals.Breadcrumb={}))}(this,(function(e){!function(e,t){var i=window.kendo,r=i.ui.Widget,n=e.extend,o=(i.mediaQuery,e.isPlainObject),a=(i.support,i.htmlEncode),s=i.sanitizeLink,l=".kendoBreadcrumb",d="aria-hidden",p="click",u="blur",c="keydown",m="change",h=".",f={widget:"k-breadcrumb",overlay:"k-breadcrumb-container",textbox:"k-input-inner",textboxWrapper:"k-textbox k-input k-input-md k-rounded-md k-input-solid",link:"k-breadcrumb-link",item:"k-breadcrumb-item",delimiter:"k-breadcrumb-delimiter-icon",rootItem:"k-breadcrumb-root-item",rootLink:"k-breadcrumb-root-link",overflowIcon:"k-breadcrumb-overflow-icon",focused:"k-focus",hidden:"k-hidden",inputWrapper:"k-breadcrumb-input-container"},b=r.extend({init:function(e,t){var n=this;t=t||{},r.fn.init.call(n,e,t),n._wrapper(),t.editable&&(n._editable(),n._tabindex()),n.wrapper.on(p+l,"a:not(.k-disabled)",n._click.bind(n)),t.value||t.bindToLocation||!t.items?n._value():t.items&&n.items(t.items),n._applyCssClasses(),n._resizeHandler=i.onResize((function(){n.resize(!0)}))},options:{editable:!1,navigational:!1,bindToLocation:!1,items:null,name:"Breadcrumb",size:"medium",gap:0,rootIcon:"home",delimiterIcon:"chevron-right",messages:{rootTitle:"Go to root"}},events:[m,p],destroy:function(){var e=this;r.fn.destroy.call(e),i.unbindResize(e._resizeHandler),e.wrapper.add(e.wrapper.find("input")).add(e.wrapper.find("a")).off(l)},items:function(e){var i=this;if(e===t)return i.options.items;i.options.items=e,i._segments=e,i.refresh()},_update:function(e){var t=this;e!==t.value()&&(t._generateSegments(e),t.refresh(),t.trigger(m,{sender:this,value:e}))},_generateSegments:function(e){var t,i,r=this,n=r.options.items;if(i=r._split(e),n){r._segments=[];for(var o=0;o<i.length;o++)""!==(t=r._path(n.slice(0,o+1)))&&e.indexOf(t)>-1&&n[o]&&n[o].text===i[o]?r._segments.push(n[o]):r._segments.push(i[o])}else r.options.items=r._segments=i},_click:function(t){var i=this,r=i.options,n=e(t.target).closest(h+f.item),o=n.prevAll().addBack(),a=i._getItems(o),s=i._path(a),l=i._segments[n.index()];r.navigational||t.preventDefault(),i.trigger(p,{sender:i,originalEvent:t,isRoot:"rootitem"===l.type,item:l})||i._update(s)},_getItems:function(t){var i=this;return e.map(t,(function(t){return i._segments[e(t).index()]||t.innerText}))},_edit:function(){var e=this,t=e.input;e.oldValue=e.value(),e.inputWrapper.css("height",e.wrapper.height()),e.overlay.hide(),e.input.val(e.value()),e.input.attr(d,!1),e.inputWrapper.show(),setTimeout((function(){t.select()}))},_blur:function(e){var t=this,i=t.input,r=t.inputWrapper,n=t.wrapper,o=t.overlay,a=i.val().replace(/\/{2,}/g,"/");o.is(":visible")||(e&&(a=t.oldValue),i.attr(d,!0),r.hide(),o.show(),i.val(""),t._update(a),n.removeClass(f.focused))},_keydown:function(e){var t=this,r=e.keyCode,n=r===i.keys.ENTER,o=r===i.keys.ESC;(n||o)&&(t._blur(o),setTimeout((function(){t.overlay.find("a").first().trigger("focus")})))},isNavigational:function(e){var t=e.hasClass(f.textbox)||e.closest(h+f.item);return e[0]!==this.wrapper[0]&&(t&&!e.hasClass("k-breadcrumb-last-item"))},_wrapperKeydown:function(t){var r=e(t.target),n=this.isNavigational(r);t.keyCode!==i.keys.ENTER||n||this._edit()},_wrapperClick:function(t){var i=e(t.target);this.isNavigational(i)||this._edit()},_wrapperFocus:function(t){e(t.target).addClass(f.focused)},_wrapperBlur:function(t){e(t.target).removeClass(f.focused)},_wrapper:function(){var t=this,i=this.element,r=i.is("input"),n=e('<div class="'+f.inputWrapper+'"><span class="'+f.textboxWrapper+'"></span></div>');t.wrapper=r?i.wrap(e("<nav />")).parent():i,r?(t.element.wrap(n).addClass(f.textbox),t.inputWrapper=t.wrapper.find(h+f.inputWrapper).hide()):t.inputWrapper=t.wrapper.append(n).find(h+f.inputWrapper).hide(),t.wrapper.addClass(f.widget),t.wrapper.attr("aria-label","Breadcrumb"),t.overlay=t.wrapper.append(e("<ol />").addClass(f.overlay)).find(h+f.overlay)},_editable:function(){var t=this,i=t.element.is("input");t.input=i?t.element:e("<input />"),t.inputWrapper.find(h+f.textboxWrapper.split(" ")[0]).append(t.input),t.input.addClass(f.textbox).attr(d,!0),t.input.on(u+l,t._blur.bind(t,!1)).on(c+l,t._keydown.bind(t)),t.wrapper.on("focus"+l,t._wrapperFocus.bind(t)).on(u+l,t._wrapperBlur.bind(t)).on(c+l,t._wrapperKeydown.bind(t)).on(p+l,t._wrapperClick.bind(t))},_value:function(){var e=this,t=e.options;t.value?e.value(t.value):t.bindToLocation?e.value(window.location.href.replace(/http(s?):\/\//,"").replace(/\/$/,"")):e.value("")},_split:function(e){return e.split("/").filter((function(e,t){return!(t>0&&""===e)}))},isRtl:function(){return i.support.isRtl(this.wrapper)},refresh:function(){var r,a,s,l,d=this,p=d.options,u=p.messages,c=d.options.delimiterIcon,m="",h="",b=""===d.value(),v=d._segments;for("chevron-right"==c&&d.isRtl()&&(c="chevron-left"),a=0,s=v.length;a<s;a++)r=v[a],l=a===v.length-1,r!==t&&(m?h+=r.text||r||"":h="/","string"==typeof r?(r={type:m?"item":"rootitem",href:p.navigational?h:"#",text:r,showIcon:!m,showText:!!m,icon:m?"":p.rootIcon,itemClass:m?"":"k-breadcrumb-root-item",linkClass:m?"":f.rootLink,delimiterIcon:c,renderDelimiter:!l&&!b,lastSegment:l,iconClass:""},d._segments.splice(a,1,r)):o(r)&&(r=n({},r,{type:r.type?r.type.toLowerCase():"item"}),"rootitem"===(r=n({},r,{text:r.text||"",title:r.text||"",icon:r.icon||("rootitem"===r.type?p.rootIcon:""),iconClass:r.iconClass||"",lastSegment:l,renderDelimiter:!l&&v.length>1,href:p.navigational?r.href:"#",delimiterIcon:c,itemClass:r.itemClass||"",linkClass:r.linkClass||"",showIcon:r.showIcon===t?"rootitem"===r.type&&"item"!==r.type:r.showIcon,showText:r.showText===t?"item"===r.type&&"rootitem"!==r.type:r.showText})).type&&(r.itemClass+=" k-breadcrumb-root-item",r.linkClass+=" "+f.rootLink)),"rootitem"===r.type&&""===r.text&&(r.title=u.rootTitle),h+=h.match(/\/$/)?"":"/",m+=i.template(this.itemTemplate)(r));this.overlay.empty().append(e(m)),this.resize(!0)},itemTemplate:t=>{const r=t.showIcon?i.ui.icon(e(`<span class="${a(t.iconClass)}"></span>`),{icon:a(t.icon)}):"",n=t.renderDelimiter?i.ui.icon(e('<span class="k-breadcrumb-delimiter-icon" aria-hidden="true"></span>'),{icon:a(t.delimiterIcon),size:"xsmall"}):"",o=t.showText?`<span class="k-breadcrumb-item-text">${!1!==t.encoded?a(t.text):t.text}</span>`:"",l=`<a href="${s(t.href)}" class="${a(t.linkClass)} ${(()=>{let e={"k-breadcrumb-link":"rootitem"!==t.type,"k-breadcrumb-icontext-link":t.showText&&t.showIcon,"k-breadcrumb-icon-link":t.showIcon&&!t.showText,"k-disabled":t.lastSegment&&"rootitem"!==t.type};return Object.keys(e).filter((t=>e[t])).join(" ")})()}"\n ${t.lastSegment?'aria-current="page"':""}\n ${t.lastSegment&&"rootitem"!==t.type?'aria-disabled="true"':""}\n title="${a(t.text||t.title)}">${r}${o}</a>`;return`<li class="k-breadcrumb-item ${a(t.itemClass)} ${t.lastSegment?"k-breadcrumb-last-item":""}">${l}${n}</li>`},_displayOverflowIcons:function(e){var t=this.wrapper.find(h+f.rootItem);e?t.find(h+f.delimiter).addClass(f.overflowIcon).removeClass(f.hidden):t.find(h+f.overflowIcon).removeClass(f.overflowIcon).last().addClass(f.hidden)},_shrinkItems:function(){var t,r,n=this,o=n.wrapper,a=n.overlay,s=n.overlay.find(h+f.item+":not(.k-breadcrumb-root-item)"),l=i._outerWidth(n.overlay.find(h+f.delimiter+":visible").first()),d=o.width()-n.options.gap-l;if(1!=s.length){for(var p=0;p<s.length;p+=1)if(r=e(s[p]),i._outerWidth(a)>=d){if(p==s.length-1)break;t=r,r.find(h+f.delimiter).hide(),r.find(h+f.link).hide(),n._displayOverflowIcons(!0)}t&&t.find(h+f.delimiter).show()}},_showItem:function(e,t,r){return!!(e.length&&r>t+i._outerWidth(e,!0))&&(e.find(h+f.link).show(),e.prev().find(h+f.delimiter).show(),!0)},_stretchItems:function(){var t,r,n=this,o=n.wrapper,a=n.overlay,s=n.overlay.find(h+f.item+":not(.k-breadcrumb-root-item)"),l=i._outerWidth(n.overlay.find(h+f.delimiter+":visible").first()),d=o.width()-n.options.gap-l;s.length||n._displayOverflowIcons(!1);for(var p=s.length-1;p>=0&&(t=e(s[p]),!((r=i._outerWidth(a))>d)&&this._showItem(t,r,d));p--);},_resize:function(){this._shrinkItems(),this._stretchItems()},getSize:function(){return i.dimensions(this.wrapper)},value:function(e){var i=this;return e!==t?(i._generateSegments(e),void i.refresh()):i._path(i._segments)},_path:function(t){return e.map(t,(function(e){var t=o(e)?e.text:e;return"/"===t?"":t})).join("/")}});i.cssProperties.registerPrefix("Breadcrumb","k-breadcrumb-"),i.ui.plugin(b)}(window.kendo.jQuery);var t=kendo;e.__meta__={id:"breadcrumb",name:"Breadcrumb",category:"web",description:"The Breadcrumb widget displays navigation breadcrumb.",depends:["core","icons"]},e.default=t,Object.defineProperty(e,"__esModule",{value:!0})}));
//# sourceMappingURL=kendo.breadcrumb.min.js.map