UNPKG

jquery-contextmenurtl

Version:
20 lines (19 loc) 5.29 kB
/** * @preserve * jQuery contextMenuRtl v0.1.0 - rtl Plugin for contextMenu (http://swisnl.github.io/jQuery-contextMenu/) plugin * * Version: v0.1.0 * * Authors: Avi Meslati * Web: http://github.com/avim101/jQuery-contextMenuRtl * * Copyright (c) 2016 Avi Meslati * * Licensed under * MIT License http://www.opensource.org/licenses/mit-license * GPL v3 http://opensource.org/licenses/GPL-3.0 * * Date: 2016-06-16 15:42:56 */ "use strict";!function(e){"function"==typeof define&&define.amd?define(["jquery"],e):e("object"==typeof exports?require("jquery"):jQuery)}(function(e){function t(e){for(var t,a=e.split(/\s+/),n=[],s=0;t=a[s];s++)t=t.charAt(0).toUpperCase(),n.push(t);return n}var a=e.contextMenu.handle,n=e.contextMenu.types,s=e.contextMenu.op;e.contextMenu.op.create=function(c,o){function l(t){var a=e("<span></span>");if(t._accesskey)t._beforeAccesskey&&a.append(document.createTextNode(t._beforeAccesskey)),e("<span></span>").addClass("context-menu-accesskey").text(t._accesskey).appendTo(a),t._afterAccesskey&&a.append(document.createTextNode(t._afterAccesskey));else if(t.isHtmlName){if("undefined"!=typeof t.accesskey)throw new Error("accesskeys are not compatible with HTML names and cannot be used together in the same item");a.html(t.name)}else a.text(t.name);return a}void 0===o&&(o=c),c.$menu=e('<ul class="context-menu-list"></ul>').addClass(c.className||"").data({contextMenu:c,contextMenuRoot:o}),e.each(["callbacks","commands","inputs"],function(e,t){c[t]={},o[t]||(o[t]={})}),o.accesskeys||(o.accesskeys={}),e.each(c.items,function(i,p){var u=e('<li class="context-menu-item"></li>').addClass(p.className||""),r=null,d=null;if(u.on("click",e.noop),"string"==typeof p&&(p={type:"cm_seperator"}),p.$node=u.data({contextMenu:c,contextMenuRoot:o,contextMenuKey:i}),"undefined"!=typeof p.accesskey)for(var m,f=t(p.accesskey),y=0;m=f[y];y++)if(!o.accesskeys[m]){o.accesskeys[m]=p;var b=p.name.match(new RegExp("^(.*?)("+m+")(.*)$","i"));b&&(p._beforeAccesskey=b[1],p._accesskey=b[2],p._afterAccesskey=b[3]);break}if(p.type&&n[p.type])n[p.type].call(u,p,c,o),e.each([c,o],function(t,a){a.commands[i]=p,e.isFunction(p.callback)&&(a.callbacks[i]=p.callback)});else{switch("cm_seperator"===p.type?u.addClass("context-menu-separator "+o.classNames.notSelectable):"html"===p.type?u.addClass("context-menu-html "+o.classNames.notSelectable):p.type?(r=e("<label></label>").appendTo(u),l(p).appendTo(r),u.addClass("context-menu-input"),c.hasTypes=!0,e.each([c,o],function(e,t){t.commands[i]=p,t.inputs[i]=p})):p.items&&(p.type="sub"),p.type){case"cm_seperator":break;case"text":d=e('<input type="text" value="1" name="" value="">').attr("name","context-menu-input-"+i).val(p.value||"").appendTo(r);break;case"textarea":d=e('<textarea name=""></textarea>').attr("name","context-menu-input-"+i).val(p.value||"").appendTo(r),p.height&&d.height(p.height);break;case"checkbox":d=e('<input type="checkbox" value="1" name="" value="">').attr("name","context-menu-input-"+i).val(p.value||"").prop("checked",!!p.selected).prependTo(r);break;case"radio":d=e('<input type="radio" value="1" name="" value="">').attr("name","context-menu-input-"+p.radio).val(p.value||"").prop("checked",!!p.selected).prependTo(r);break;case"select":d=e('<select name="">').attr("name","context-menu-input-"+i).appendTo(r),p.options&&(e.each(p.options,function(t,a){e("<option></option>").val(t).text(a).appendTo(d)}),d.val(p.selected));break;case"sub":l(p).appendTo(u),p.appendTo=p.$node,s.create(p,o),u.data("contextMenu",p).addClass("context-menu-submenu"),p.callback=null;break;case"html":e(p.html).appendTo(u);break;default:e.each([c,o],function(t,a){a.commands[i]=p,e.isFunction(p.callback)&&(a.callbacks[i]=p.callback)}),l(p).appendTo(u)}p.type&&"sub"!==p.type&&"html"!==p.type&&"cm_seperator"!==p.type&&(d.on("focus",a.focusInput).on("blur",a.blurInput),p.events&&d.on(p.events,c)),p.icon&&(e.isFunction(p.icon)?p._icon=p.icon.call(this,this,u,i,p):"string"==typeof p.icon&&"fa-"==p.icon.substring(0,3)?p._icon=o.classNames.icon+" "+o.classNames.icon+"--fa fa "+p.icon:p._icon=o.classNames.icon+" "+o.classNames.icon+"-"+p.icon,u.addClass(p._icon))}p.$input=d,p.$label=r,u.appendTo(c.$menu),!c.hasTypes&&e.support.eventSelectstart&&u.on("selectstart.disableTextSelect",a.abortevent)}),c.$node||(c.$menu.css("display","none").addClass("context-menu-root"),c.rtl&&c.rtl===!0&&c.$menu.attr("dir","rtl")),c.$menu.appendTo(c.appendTo||document.body)},e.contextMenu.defaults.positionSubmenu=function(t,a){if(e.ui&&e.ui.position)t.css("display","block").position({my:a===!0?"right top":"left top",at:a===!0?"left top":"right top",of:this,collision:"flipfit fit"}).css("display","");else{var n={top:0,left:this.outerWidth()};t.css(n)}},e.contextMenu.handle.focusItem=function(t){t.stopPropagation();var a=e(this),n=a.data(),s=n.contextMenu,c=n.contextMenuRoot;a.hasClass(c.classNames.disabled)||a.hasClass(c.classNames.notSelectable)||(a.addClass([c.classNames.hover,c.classNames.visible].join(" ")).parent().find(".context-menu-item").not(a).removeClass(c.classNames.visible).filter("."+c.classNames.hover).trigger("contextmenu:blur"),s.$selected=c.$selected=a,s.$node&&c.positionSubmenu.call(s.$node,s.$menu,c.rtl))}}); //# sourceMappingURL=jquery.contextMenuRtl.min.js.map