@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) • 8.15 kB
JavaScript
!function(e){"function"==typeof define&&define.amd?define(["kendo.core.min","kendo.icons.min"],e):e()}((function(){var e,t,i,n,r,o,a,s,l,p,d,u,c,m,h,f;e=window.kendo.jQuery,i=window.kendo,n=i.ui.Widget,r=e.extend,o=e.isPlainObject,a=i.htmlEncode,s=".kendoBreadcrumb",l="aria-hidden",p="click",d="blur",u="keydown",c="change",m=".",h={widget:"k-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"},f=n.extend({init:function(e,t){var r=this;t=t||{},n.fn.init.call(r,e,t),r._wrapper(),t.editable&&(r._editable(),r._tabindex()),r.wrapper.on(p+s,"a:not(.k-disabled)",r._click.bind(r)),t.value||t.bindToLocation||!t.items?r._value():t.items&&r.items(t.items),r._resizeHandler=i.onResize((function(){r.resize(!0)}))},options:{editable:!1,navigational:!1,bindToLocation:!1,items:null,name:"Breadcrumb",gap:0,rootIcon:"home",delimiterIcon:"chevron-right",messages:{rootTitle:"Go to root"}},events:[c,p],destroy:function(){var e=this;n.fn.destroy.call(e),i.unbindResize(e._resizeHandler),e.wrapper.add(e.wrapper.find("input")).add(e.wrapper.find("a")).off(s)},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(c,{sender:this,value:e}))},_generateSegments:function(e){var t,i,n=this,r=n.options.items;if(i=n._split(e),r){n._segments=[];for(var o=0;o<i.length;o++)""!==(t=n._path(r.slice(0,o+1)))&&e.indexOf(t)>-1&&r[o]&&r[o].text===i[o]?n._segments.push(r[o]):n._segments.push(i[o])}else n.options.items=n._segments=i},_click:function(t){var i=this,n=i.options,r=e(t.target).closest(m+h.item),o=r.prevAll().addBack(),a=i._getItems(o),s=i._path(a),l=i._segments[r.index()];n.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(l,!1),e.inputWrapper.show(),setTimeout((function(){t.select()}))},_blur:function(e){var t=this,i=t.input,n=t.inputWrapper,r=t.wrapper,o=t.overlay,a=i.val().replace(/\/{2,}/g,"/");o.is(":visible")||(e&&(a=t.oldValue),i.attr(l,!0),n.hide(),o.show(),i.val(""),t._update(a),r.removeClass(h.focused))},_keydown:function(e){var t=this,n=e.keyCode,r=n===i.keys.ENTER,o=n===i.keys.ESC;(r||o)&&(t._blur(o),setTimeout((function(){t.overlay.find("a").first().trigger("focus")})))},isNavigational:function(e){var t=e.hasClass(h.textbox)||e.closest(m+h.item);return e[0]!==this.wrapper[0]&&t&&!e.hasClass("k-breadcrumb-last-item")},_wrapperKeydown:function(t){var n=e(t.target),r=this.isNavigational(n);t.keyCode!==i.keys.ENTER||r||this._edit()},_wrapperClick:function(t){var i=e(t.target);this.isNavigational(i)||this._edit()},_wrapperFocus:function(t){e(t.target).addClass(h.focused)},_wrapperBlur:function(t){e(t.target).removeClass(h.focused)},_wrapper:function(){var t=this,i=this.element,n=i.is("input"),r=e('<div class="'+h.inputWrapper+'"><span class="'+h.textboxWrapper+'"></span></div>');t.wrapper=n?i.wrap(e("<nav />")).parent():i,n?(t.element.wrap(r).addClass(h.textbox),t.inputWrapper=t.wrapper.find(m+h.inputWrapper).hide()):t.inputWrapper=t.wrapper.append(r).find(m+h.inputWrapper).hide(),t.wrapper.addClass(h.widget),t.wrapper.attr("aria-label","Breadcrumb"),t.overlay=t.wrapper.append(e("<ol />").addClass(h.overlay)).find(m+h.overlay)},_editable:function(){var t=this,i=t.element.is("input");t.input=i?t.element:e("<input />"),t.inputWrapper.find(m+h.textboxWrapper.split(" ")[0]).append(t.input),t.input.addClass(h.textbox).attr(l,!0),t.input.on(d+s,t._blur.bind(t,!1)).on(u+s,t._keydown.bind(t)),t.wrapper.on("focus"+s,t._wrapperFocus.bind(t)).on(d+s,t._wrapperBlur.bind(t)).on(u+s,t._wrapperKeydown.bind(t)).on(p+s,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 n,a,s,l,p=this,d=p.options,u=d.messages,c=p.options.delimiterIcon,m="",f="",v=""===p.value(),b=p._segments;for("chevron-right"==c&&p.isRtl()&&(c="chevron-left"),a=0,s=b.length;a<s;a++)n=b[a],l=a===b.length-1,n!==t&&(m?f+=n.text||n||"":f="/","string"==typeof n?(n={type:m?"item":"rootitem",href:d.navigational?f:"#",text:n,showIcon:!m,showText:!!m,icon:m?"":d.rootIcon,itemClass:m?"":"k-breadcrumb-root-item",linkClass:m?"":h.rootLink,delimiterIcon:c,renderDelimiter:!l&&!v,lastSegment:l,iconClass:""},p._segments.splice(a,1,n)):o(n)&&(n=r({},n,{type:n.type?n.type.toLowerCase():"item"}),"rootitem"===(n=r({},n,{text:n.text||"",title:n.text||"",icon:n.icon||("rootitem"===n.type?d.rootIcon:""),iconClass:n.iconClass||"",lastSegment:l,renderDelimiter:!l&&b.length>1,href:d.navigational?n.href:"#",delimiterIcon:c,itemClass:n.itemClass||"",linkClass:n.linkClass||"",showIcon:n.showIcon===t?"rootitem"===n.type&&"item"!==n.type:n.showIcon,showText:n.showText===t?"item"===n.type&&"rootitem"!==n.type:n.showText})).type&&(n.itemClass+=" k-breadcrumb-root-item",n.linkClass+=" "+h.rootLink)),"rootitem"===n.type&&""===n.text&&(n.title=u.rootTitle),f+=f.match(/\/$/)?"":"/",m+=i.template(this.itemTemplate)(n));this.overlay.empty().append(e(m)),this.resize(!0)},itemTemplate:function(t){var n,r=t.showIcon?i.ui.icon(e('<span class="'+a(t.iconClass)+'"></span>'),{icon:a(t.icon)}):"",o=t.renderDelimiter?i.ui.icon(e('<span class="k-breadcrumb-delimiter-icon" aria-hidden="true"></span>'),{icon:a(t.delimiterIcon)}):"",s=""+(t.showText?!1!==t.encoded?a(t.text):t.text:""),l='<a href="'+a(t.href)+'" class="'+a(t.linkClass)+" "+(n={"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},Object.keys(n).filter((function(e){return n[e]})).join(" ")+'"\n ')+(t.lastSegment?'aria-current="page"':"")+"\n "+(t.lastSegment&&"rootitem"!==t.type?'aria-disabled="true"':"")+'\n title="'+a(t.text||t.title)+'">'+r+s+"</a>";return'<li class="k-breadcrumb-item '+a(t.itemClass)+" "+(t.lastSegment?"k-breadcrumb-last-item":"")+'">'+l+o+"</li>"},_displayOverflowIcons:function(e){var t=this.wrapper.find(m+h.rootItem);e?t.find(m+h.delimiter).addClass(h.overflowIcon).removeClass(h.hidden):t.find(m+h.overflowIcon).removeClass(h.overflowIcon).last().addClass(h.hidden)},_shrinkItems:function(){var t,n=this,r=n.wrapper,o=n.overlay,a=n.overlay.find(m+h.item+":visible:not(.k-breadcrumb-root-item)"),s=r.width()-n.options.gap;if(1!=a.length)for(var l=0;l<a.length;l+=1)if(t=e(a[l]),i._outerWidth(o)>=s){if(l==a.length-1)break;t.hide(),n._displayOverflowIcons(!0)}},_showItem:function(e,t,n){return!!(e.length&&n>t+i._outerWidth(e,!0))&&(e.show(),!0)},_stretchItems:function(){var t,n,r=this,o=r.wrapper,a=r.overlay,s=r.overlay.find(m+h.item+":hidden:not(.k-breadcrumb-root-item)"),l=o.width()-r.options.gap;s.length||r._displayOverflowIcons(!1);for(var p=s.length-1;p>=0&&(t=e(s[p]),!((n=i._outerWidth(a))>l)&&this._showItem(t,n,l));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.ui.plugin(f)}));
//# sourceMappingURL=kendo.breadcrumb.min.js.map