@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.13 kB
JavaScript
!function(t){"function"==typeof define&&define.amd?define(["kendo.core.min","kendo.popup.min","kendo.fx.min","kendo.icons.min"],t):t()}((function(){var t,e,i,n,o,s,a,l,r,p,c,d,u,f,m,_,g,h,v,b,k,x,C,y,O,P;t=window.kendo.jQuery,i=window.kendo,n=i.ui.Widget,o=".kendoFloatingActionButton",s=i.ui,a=i.keys,l=i.support,r=t.extend,p=i.htmlEncode,c=".",d="id",u="left",f="right",m="bottom",_="aria-disabled",g="aria-expanded",h="role",v="click",b="expand",k="collapse",x={widget:"k-fab",text:"k-fab-text",icon:"k-fab-icon",list:"k-fab-items",listTop:"k-fab-items-top",listBottom:"k-fab-items-bottom",listTextLeft:"k-text-left",listTextRight:"k-text-right",item:"k-fab-item",itemIcon:"k-fab-item-icon",itemText:"k-fab-item-text",popup:"k-fab-popup",popupTransparent:"k-popup-transparent",disabled:"k-disabled",hover:"k-hover",focus:"k-focus"},C=function(t){var e=t.icon;return i.ui.icon({icon:p(e),iconClass:"k-fab-icon"})},y=function(t){var e=t.text;return'<span class="k-fab-text">'+p(e)+"</span>"},O=function(t){var e=t.text,n=t.icon;return(e?'<span class="k-fab-item-text" aria-hidden="true">'+p(e)+"</span>":"")+(n?i.ui.icon({icon:p(n),iconClass:"k-fab-item-icon"}):"")},P=n.extend({init:function(t,e){var o=this;n.fn.init.call(o,t,e),o._wrapper(),o._content(),o._appearance(),o._renderList(),o._initPopup(),o._aria(),o._attachEvents(),i.notify(o)},options:{name:"FloatingActionButton",icon:"",text:"",items:[],themeColor:"primary",fillMode:"solid",size:"medium",shape:"rectangle",rounded:"full",align:"bottom end",alignOffset:{x:16,y:16},positionMode:"fixed",visible:!0,enable:!0,enabled:!0,_classNames:[]},events:[v,b,k],_offsetMap:{start:u,end:f,top:"top",bottom:m},_reversedOffsetMap:{start:f,end:u},_getAlignment:function(){var t=this.options.align.split(" ");return{vertical:t[0],horizontal:t[1]}},_getOffset:function(){var t=this,e=t.options,i=l.isRtl(t.element),n=t._getAlignment(),o=e.alignOffset,s=i?t._reversedOffsetMap:t._offsetMap,a=i?t._offsetMap:t._reversedOffsetMap,r={};return r[t._offsetMap[n.vertical]]=o.y,r[s[n.horizontal]]=o.x,r[a[n.horizontal]]="auto",r},_wrapper:function(){var t=this;t.wrapper=t.element.addClass(x.widget),t.wrapper.css(t._getOffset())},_content:function(){var t=this,e=t.options,i=e.text,n=e.icon;t.icon(n),t.text(""!==i?i:t.element.text())},_appearance:function(){var t=this,e=t.options;t._align=e.align,t._visible=e.visible,t._enabled=e.enabled,t._updateClassNames()},_updateClassNames:function(){var e=this,i=[x.widget],n=e.options._classNames,o=e._align,s=e._visible,a=e._enabled;t(e.element[0].classList).each((function(){var t=this+"";0===t.indexOf("k-")&&-1===n.indexOf(t)&&e.element.removeClass(t)})),"string"==typeof o&&2==o.split(" ").length&&i.push("k-"+o.replace(" ","-")),!1===s&&i.push("k-hidden"),!1===a&&i.push(x.disabled),e.element.addClass(i.join(" ")),e._applyCssClasses()},_aria:function(){var t=this,e=t.element,i=t._popup,n=t._enabled;e.attr(_,!n),e.attr("aria-haspopup",!!i||null),e.attr(g,!i&&null),e.attr("aria-controls",i?i.element.attr(d):null),i&&(i.element.attr(h,"menu"),i.element.find(c+x.item).attr(h,"menuitem").attr("tabindex",-1))},_renderList:function(){var e=this,i=e.options.items,n=document.body,o=t("<ul>").addClass(x.list);i.length&&(e._list=o.appendTo(n),i.forEach(e._renderListItem.bind(e)),o.addClass(e._getListOrientation()))},_renderListItem:function(e){var n=this,o=i.template(O),s=e.template?i.template(e.template):o,a=t("<li>").addClass(x.item);a.addClass(n._getListItemsAlignment()),a.addClass(e.cssClass),a.attr("aria-label",e.title||e.label||""),n._enableListItem(a,e.enabled),a.append(s({icon:e.icon,text:e.label})),n._list.append(a)},_enableListItem:function(t,i){t&&i!==e&&(t.toggleClass(x.disabled,!i),i?t.removeAttr(_):t.attr(_,!0))},_getListOrientation:function(){return this._getAlignment().vertical===m?x.listTop:x.listBottom},_getListItemsAlignment:function(){var t=l.isRtl(this.element),e=this._getAlignment();return"start"===e.horizontal||"center"===e.horizontal?t?x.listTextRight:x.listTextLeft:t?x.listTextLeft:x.listTextRight},_getListItemOffset:function(){var t=this,e=t.element,i=t._list.find(c+x.itemIcon),n=0;return e.length&&i.length&&!t.options.text&&(n=e.outerWidth()/2-i.first().outerWidth()/2),n},_initPopup:function(){var t,e=this,n=e.element,o=e.options,a=e._list;a&&(t=e._getPopupPosition(),e._popup=new s.Popup(a,r({},o.popup,{anchor:n,appendTo:a.parent(),copyAnchorStyles:!1,autosize:!1,collision:"",position:t.position,origin:t.origin,animation:{open:{effects:i.parseEffects(s.Popup.fn.options.animation.open.effects,t.flipped)}},open:e._popupOpenHandler.bind(e),close:e._popupCloseHandler.bind(e),activate:e._popupExpandHandler.bind(e),deactivate:e._popupCollapseHandler.bind(e)})),e._popup.element.addClass([x.popup,x.popupTransparent].join(" ")),e._setPopupId())},_setPopupId:function(){var t=this.element.attr(d);t||(t=i.guid()),this._popup.element.attr(d,t+"-list")},_getPopupPosition:function(){var t,e,i=this.options.align,n=l.isRtl(this.element),o=n?f:u,s=n?u:f,a=!1;switch(i){case"top end":case"middle end":t="bottom "+s,e="top "+s;break;case"bottom start":case"bottom center":t="top "+o,e="bottom "+o,a=!0;break;case"bottom end":t="top "+s,e="bottom "+s,a=!0;break;default:t="bottom "+o,e="top "+o}return{origin:t,position:e,flipped:a}},_popupOpenHandler:function(){var t=this._popup,e=this._getListItemOffset();this.element.attr(g,!0),t.element.css({paddingLeft:e}),t.element.css({paddingRight:e})},_popupCloseHandler:function(){this.element.attr(g,!1)},_popupExpandHandler:function(t){this.trigger(b)&&t.preventDefault(),this._popup.element.find(c+x.item).first().trigger("focus")},_popupCollapseHandler:function(t){this.trigger(k)&&t.preventDefault()},_attachEvents:function(){var t=this,e=t._popup;t.element.on(v+o,t._click.bind(t)),e&&e.element.on(v+o,c+x.item,t._itemClick.bind(t)).on("keydown"+o,c+x.item,t._itemKeydown.bind(t)).on("mouseenter.kendoFloatingActionButton mouseleave.kendoFloatingActionButton",c+x.item,t._itemHover.bind(t))},_click:function(t){var e=this,i=e.options,n=e._popup;e.trigger(v,{event:t})?t.preventDefault():(n||i.items.length)&&(n.visible()?n.close():n.open())},_itemClick:function(e){var n,o,s,a,l=this,r=t(e.target);r&&(n=r.closest(c+x.item)).length&&(o=l.options.items[n.index()],a={sender:l,target:n,item:o},(s=o.click&&i.isFunction(o.click)?o.click:null)&&(l.element.trigger("focus"),l._popup.close(),s.call(l,a)))},_itemKeydown:function(e){var i=this,n=t(e.target),o=e.keyCode,s=i.element,l=i._popup,r=i._getAlignment().vertical===m,p=n.hasClass(x.disabled),d=i._list.children(),u=d.index(e.target);if(n.is(c+x.item)){if(e.preventDefault(),o!==a.ENTER&&o!==a.SPACEBAR||p||i._itemClick(e),!r&&o===a.DOWN||r&&o===a.UP){if(u===d.length-1)return void d.first().trigger("focus");t(d[u+1]).trigger("focus")}if(!r&&o===a.UP||r&&o===a.DOWN){if(0===u)return void d.last().trigger("focus");t(d[u-1]).trigger("focus")}o!==a.ESC&&o!==a.TAB||(l.close(),s.trigger("focus")),o===a.HOME&&d.first().trigger("focus"),o===a.END&&d.last().trigger("focus")}},_itemHover:function(e){var n=t(i.eventTarget(e)||e.target).closest(c+x.item);n.hasClass(x.item)&&(n.siblings().removeClass(x.hover),n.toggleClass(x.hover))},text:function(n){var o=this,s=o.element,a=s.find(c+x.text),l=i.template(y);return 0===arguments.length||n===e?o._text:(o.options.text=o._text=i.htmlEncode(n),s.contents().filter((function(){return 3===this.nodeType})).remove(),!1===n||null===n||""===n?(o._text="",void a.remove()):void(a.length?a.text(n):a=t(l({text:n})).appendTo(s)))},icon:function(t){var n=this,o=n.element,s=o.find(c+x.icon),a=i.template(C);return 0===arguments.length||t===e?n._icon:(n.options.icon=n._icon=i.htmlEncode(t),!1===t||null===t||""===t?(n._icon="",void s.remove()):(s.remove(),void o.prepend(a({icon:t}))))},themeColor:function(t){if(t===e)return this.options.themeColor;this.setOptions({themeColor:t})},shape:function(t){if(t===e)return this.options.shape;this.setOptions({shape:t})},hide:function(){var t=this;t.options.visible=t._visible=!1,t._updateClassNames()},show:function(){var t=this;t.options.visible=t._visible=!0,t._updateClassNames()},enable:function(t){var i=this;t===e&&(t=!0),i.options.enabled=i._enabled=t,i._updateClassNames(),i.element.attr(_,!t)},setOptions:function(t){var e=this;n.fn.setOptions.call(e,t),e.element.removeAttr("style"),e.element.css(e._getOffset()),e._content(),e._appearance(),(t.align||t.items)&&(e.element.off(o),e.destroyPopup(),e._renderList(),e._initPopup(),e._attachEvents()),e._aria()},destroyPopup:function(){var t=this;t._popup&&(t._popup.destroy(),t._popup=null,t._list.off(o),t._list.remove(),t._list=null)},destroy:function(){var t=this;t.destroyPopup(),t.element.off(o),n.fn.destroy.call(t)}}),i.cssProperties.registerPrefix("FloatingActionButton","k-fab-"),i.cssProperties.registerValues("FloatingActionButton",[{prop:"fillMode",values:["solid"]},{prop:"themeColor",values:["primary","secondary","tertiary","info","success","warning","error","dark","light","inverse"]},{prop:"rounded",values:i.cssProperties.roundedValues.concat([["full","full"]])}]),s.plugin(P)}));
//# sourceMappingURL=kendo.floatingactionbutton.min.js.map