From 3b9c2beb399ce9001bdeb8ca3d1be51185411e10 Mon Sep 17 00:00:00 2001 From: "Martin@MBP" Date: Tue, 9 Sep 2014 08:03:02 +0200 Subject: [PATCH 01/17] Bump prerelease (1.7.1-0) [ci skip] --- bower.json | 2 +- package.json | 2 +- ui-contextmenu.jquery.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/bower.json b/bower.json index 8448d0d..2e5e7b5 100644 --- a/bower.json +++ b/bower.json @@ -1,7 +1,7 @@ { "name": "ui-contextmenu", "description": "Turn a jQuery UI Menu widget into a contextmenu.", - "version": "1.7.0", + "version": "1.7.1-0", "main": [ "jquery.ui-contextmenu.js" ], diff --git a/package.json b/package.json index 0c03d52..8886b62 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ui-contextmenu", - "version": "1.7.0", + "version": "1.7.1-0", "title": "jQuery UI context menu plugin", "description": "Turn a jQuery UI Menu widget into a contextmenu.", "keywords": [ diff --git a/ui-contextmenu.jquery.json b/ui-contextmenu.jquery.json index a8f3475..ad1dcf2 100644 --- a/ui-contextmenu.jquery.json +++ b/ui-contextmenu.jquery.json @@ -1,6 +1,6 @@ { "name": "ui-contextmenu", - "version": "1.7.0", + "version": "1.7.1-0", "title": "jQuery UI context menu plugin", "description": "Turn a jQuery UI Menu widget into a contextmenu.", "keywords": [ From 495be36d1ab5c63f5337d31533580e737fe042fd Mon Sep 17 00:00:00 2001 From: "Martin@MBP" Date: Fri, 26 Sep 2014 12:20:43 +0200 Subject: [PATCH 02/17] Update to grunt-yabs 0.4 --- Gruntfile.coffee | 4 ++-- package.json | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Gruntfile.coffee b/Gruntfile.coffee index 40dde83..0068187 100644 --- a/Gruntfile.coffee +++ b/Gruntfile.coffee @@ -112,14 +112,14 @@ module.exports = (grunt) -> common: # defaults for all tools manifests: ['package.json', 'bower.json', 'ui-contextmenu.jquery.json'] # The following tools are run in order: - check: { clean: true, branch: ['master'], canPush: true } + check: { branch: ['master'], canPush: true, clean: true, cmpVersion: 'gte' } run_test: { tasks: ['test'] } bump: {} # 'bump' also uses the increment mode `yabs:release:MODE` run_build: { tasks: ['build'] } commit: {} check_after_build: { clean: true } # Fails if new files found tag: {} - push: { tags: true } + push: { tags: true, useFollowTags: true } githubRelease: repo: "mar10/jquery-ui-contextmenu" draft: false diff --git a/package.json b/package.json index 8886b62..8817f49 100644 --- a/package.json +++ b/package.json @@ -46,9 +46,9 @@ "grunt-exec": "~0.4.0", "grunt-saucelabs": "~8.1.0", "grunt-contrib-watch": "~0.5.3", - "grunt-yabs": "^0.3.0" + "grunt-yabs": "^0.4.0" }, "scripts": { "test": "grunt ci --verbose" } -} \ No newline at end of file +} From 6334769c233e751d65c658148d3f598bf18cc3bb Mon Sep 17 00:00:00 2001 From: "Martin@MBP" Date: Tue, 30 Sep 2014 21:58:38 +0200 Subject: [PATCH 03/17] Improved docs --- CHANGELOG.md | 5 ++++- demo/index-1-10.html | 2 +- demo/index.html | 10 +++------- demo/sample.png | Bin 0 -> 17119 bytes 4 files changed, 8 insertions(+), 9 deletions(-) create mode 100644 demo/sample.png diff --git a/CHANGELOG.md b/CHANGELOG.md index 378051f..993fa98 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,7 @@ -# 1.6.2 / Unreleased +# 1.7.1-0 / Unreleased +* + +# 1.7.0 / 2014-09-09 * [FEATURE] AMD support (topolm). * [FEATURE] CDN support (http://www.jsdelivr.com/#!jquery.ui-contextmenu). diff --git a/demo/index-1-10.html b/demo/index-1-10.html index 3ae41d7..45ad6b5 100644 --- a/demo/index-1-10.html +++ b/demo/index-1-10.html @@ -2,7 +2,7 @@ - jquery.ui-contextmenu.js - Demo + jquery.ui-contextmenu.js - Demo (jQuery 1.10) diff --git a/demo/index.html b/demo/index.html index eda0e5f..4bf17cf 100644 --- a/demo/index.html +++ b/demo/index.html @@ -2,7 +2,7 @@ - jquery.ui-contextmenu.js - Demo‚ + jquery.ui-contextmenu.js - Demo @@ -86,9 +86,8 @@ {title: "Paste Ctrl+V", cmd: "paste", uiIcon: "ui-icon-clipboard", disabled: true }, {title: "----"}, {title: "More", children: [ - {title: "Sub 1 (using callback)", action: function(event, ui) { alert("action callback sub1");} }, - {title: "Sub 2 with a long title[F2]", cmd: "sub2"}, - {title: "Sub 3 ", cmd: "sub3"} + {title: "Sub 1 (callback)", action: function(event, ui) { alert("action callback sub1");} }, + {title: "Edit [F2]", cmd: "sub2"}, ]} ], // Handle menu selection to implement a fake-clipboard @@ -188,9 +187,6 @@

jquery.ui-contextmenu.js

-

Sample 1

diff --git a/demo/sample.png b/demo/sample.png new file mode 100644 index 0000000000000000000000000000000000000000..0211cf8b8ce493c916f87ef5005ad32185db7d87 GIT binary patch literal 17119 zcmZU)18`_Tvo0DtJGO1xwv!#(wry+2wr$(CZQD*>{&ViT=e&BWYH3>2JykP3{jC)) zFDnKMg$V@!001i?F0A-_|M@+=A%K3b`-p_H008JJ=0Za95<)`w@(#8p=2pf40BVp` z>dtD&x-UHqW3(MkuCA`)t`ck!6N*w&k@yr)rFwZlU`6>50f2;r__^c(L4JCE5fS+Y zx#UkBk#}FbHxJ!EUnV(eZ< zK)xP+;(5bEsq7qUfj{nESfCJH_G)po7rymhFJQ~Px$KkxVMtbgAfgIH1-&o;V31fy zS#bfZ&!uHm4Zr|o!2!S!gAuWS01`L~ zBZ(D-aud zeb<0I`_VEM_6-QhH07V~R7h1gZf5ATtnbZXL2E=MM@tPRBA94Q;f3 z4dd3$(e@k_^yd?@&OZQ;3lxQbt$p@^2kcX85#XHrK|vR*uk*tg26JX0o*zRpEFvvs zia)GEFdz+T+wWC7;hZ{zC<;!UK00Twf}pieBmVm)WnYfBAvzRDAUwd=NQp%)P+Z;_ z0zSjM%d=Vj_va)33OI0*20!FR#1mAc?PnPr2NTIwGDYY_E<9Xq#<||02gS zJy5PkgBlQYFaRDN1ld>V`|(!GHatL8^&il7Ao(cLOH0m~hb6pt&|^~1qOLcJz^#Yn zzDKOxEmSuF;y@_F;Hlx|-V%DY1v*aDb&e0=r0?UP`tGFtGP_jfB_33+U=`6W2DI5v zunG7^K(2G$E#}imi0`4ku0D9(OdVXE(yCZ5aHm$v{f45ihRP)#?6;%~fRg+=T@8pp ztcd>_A2&KhX%p!%vLV1zXuDx6y%#@10U!-SAG*K>Gr?2r%c%z0=h79P?)TjX9&h_H z;ZOY?Tb4wO#6t@zpl@YB+~+~~PvX5CG%Sc9ZO6}{@QtXh;Et$kuIF6UDJgzHcest{ zOP=lQooyD)N*B`oi#6>9E^H|4?DuVHrfQn9`uD@*iV9TWEKBYPz_G8FyaV?npB^es z15Gk2A|{;ykk}qRLI!zxd_Y)wL^&A1BSY3Sa4%ZQQyu0W=4+@Z7ASuOU<}~F&#a)H zYzsHIpWY9gOg(C`7czh=#A49upzb~WBNi$=Ak!zKn?F1}IO8lSOD^c6KSM1*b1y<3z=X-0+_iM9!g{aymgrJ<)qW@q~W+ z_vx=P5Tc8u<}9PT!k{#uGype%D+O>wwnd!v!x$DbJftd9V^H}ejhyRS*XpdoTOqQd zX-4rxcLiL9>`cQvWBmy|=$ANX+-o_Dh90mUx$46iSvpv^4{Swi1?9$_iA)*6+Qqp; z_TuJ6^M%ok>vjK*tEeSVX7B@Iuc=uSbu-m}Y2XfMMt~Q6sE{Cx-L@5fjAM z$IAOBFJeXj18)K$C9IOqJm+^R3PWUq7>jrjwlz31NEa0qWf0XKH66t~3^QC1g@$oM zFU$0eUl(^MZbHnb2xN|T22+;x81@(}O)3=^J;rFPLKgipZ)2B>I2;U@9BXV z!%3vUgc+rohkqwzH4rtRw(K`P+oaoMUg*3Wyr$j6-AG?Q1w$7 z5F!#d{4JC+()r83sKG4IsMVm>cs5U52xO~t( z98w~nFvh6#5MgX1ey6Cgh`Y!|f<>Y$?l`VFPBxC0?n^C%+K{+GxmeId7?rGo2#eNJ z>)9V$QdWufZ}ndreq53o61fCETE0?0<4GPSJnE zkkR%sE;8U#+UZ&8R2u6VbsEkZ4eN;OnvD~UBTnp2nNH8An{z|w>F324&F9~<3-ggH zmWv;yHKlmfzOp}4U}vxbSmmsp^zcl%=!sa;7!l|;4BW=-#>5uF4CVA5Hq<{H*5 z7A?aX8|pVLxD5!6dFzX-lN%Nr#cM8WahF<&0Nae^)!NZ3^`7;(M%wVNrD;^^pfUM>t$Pr@(6mPnPIz;+p&(~pYqRM=mqWq z_t^@<2>uC~48aUW4V|8wG$U!0(_hvn8|V(@3dw=gjl7L2jWr6}M0BT#prPb0r_vzj zj#-o4+D@ZPPfz2_GKp8|23|v`Enw2-<{|SY9iTk0B4uFWe(*__ zT=uW5S<7Cd;RxWs;GlESxZ=*4NW{wEYL@a{8QV(TYTWvAKX)IwS9t(_xIryNMn<6hU>$3a^czHszK*=WWM-f4ZzGhqZeFnJjPXwm>!-?JLA$}_2I*P`#KAGfaFXDDu?FFM)j(5rV|^+y1Nw^L$`OYEhmP}$i_F%2 z3-iq3`uwK(qI?*?*=DP9u{7I*y!m;Hnd%3H^JKbCL+H$*RzGlhSncp+_ z&Hp+uxeqqbT1Zp~XW)2%hlrKv1=q%lo&B7bllPd7l?9jm`&ePHKn^J!Nh$#&wl4M| zr@Kkc&NouaA?YvFjodqz7)t~b_!srN72<#cA!QDu=d(B&#TwTsG@6B8P$I+x}bWIktEVNvYh>zxb zcF$;s+jHo2>;@l?Z?}%5#xNb8cAU1kdXuJiCu&<`_IwVWR_azBcS3i^H`%)u2pGs|NF-rmVVS|^uo8(xNu7lBf8P`n zbf)BZx&Nxv3Yc?0MUup(#Iwp3a@TTMO1}hBD#=Q0+X#B~LiNMvj1PPgR*EZ*xltvP zk5#gl_gKrCKQ3igS2#9TS5MgY9>?D*sP;u2PM+a!k)IJ?lAjfBl^+&1jGEV`cf6sK z5OHb)+u3f7<$l(1lvXgKP>d|2jGONIxydtd`hIL2`$uOW2HQwxAR(+Tw|S zwFZ)C^9=AXaa2%u5S=K~ny0+m1 zeZ5?Mhh3}w%Bx86IfMEy_&uI$^Ynbg@T+=MxP-Zb&O`fRf7+@D>bMc0f$ zTkqUOPVYih>!usa|eMVpAQ8F$wP1lc@AQWDj_C2 zMRq2Pg`|bMXBGvp1juCI%zOtG#5ROhWPO0iG2M`KM}9T|nSxXVQ3g|qPzp~BQ4UrR zPm3>$YyY$P*G9cTxI(Z~Wv6N{Zm#tfKCZMxW)ZtY#yrf7X8~&oce=TBwR|z#)4f;U z2RcAmfOsI7V6{NpK>r|vibWG$^|wmIO3ljus&mWm!zOe+8XTvE3zU7MwY2rVoxrBy zS_pTAr=kn0OUWz13+Ic~Dt>$NI`-9fl~Ljh)+}EI92aIBavEj~YO2^c)Hv8w%t*vU z%vj8H$jEvsVk%-HVn%vYd{SIePIjl6h{W2{!op(x8HeI*gE3y;1=&RPr12Vi%)13E zYb2#cMX$?rV!P1W6RILY}oW4#hH&T9y16ti7rjcrA@F4b0u-X>r{gUyRTg%)V9;i z)AK>#BRJ-B`k&^pHlg;!)&Wn7%}s~U1xp8&+sj6me>c<1!Uqo+GM*l;Gz=@u(Vvg# zQrrs&$kQ#Q*~Rh}KAj z=sS!uzfOPd5vR>ya450#g!l#36VwzZRcN++&7Kb*I5s((8OR!>Z9rZ|UOcawcVnyi zt;wc05-spUd2V3jQu1@*-J{(6-BI`sd3Q{rEAQ37+X;lBI0*%vIS+*A(uhr z;SO8-lc+C2>N_)022Z+LYtv)5y3HGxJm4!+Jvg*YQ-K}2SLvgUrHfIq$n;)i{+E& z2_+lT(wW-aBhESn%Wr~4+CE=tk=n3I(Gw|cHKn@FR#2AP?p2*dPw!?IC9Lx@WiAIX zGFcn8IA`S-*JthyAC`0v+DD$(-dr~=u)DagaND@eSnj+Utl7+Q_pgsk{Z3aCL^a?$ zBwo~?7M}&lxIem0Z10(V3qZN+5V8<<+jdm|x%DUj5;*L>e}Q*}!FpxTayJzL?i(@i zw@1FG@gRBuz|9Tj8LCJ!>#BiD{8tabFN>!sP~D=xga;85Zfi$kdR= zA#%c52ch<%3g8Tx!b1}UJtSGlRv7IWj2XR+o=tHL>Wtd@%7@l_iw9LkswaKIg;EL< z7GfMTse&xyI>N+aN;25|;QZAs#`%c;(UlUiQzp_<6LC}53;or3j9ay_*S>2(93jan zx>dBE4`-xgbgXA_Ah@5uw?&~PAEr2?EJ*zL8&eKeURF`CB*rXjS!~8(E@fVG9(Bfg zezgF%qi2b4D$e++$85D}22yQ#bCODJ%EATc!9uqn1$M#o3- zj@oejDtLCnv_^89eY*NL9lCi!VA6eAyPz`3+v7R{ADP)cx>Qbhx&!uS0T)%XhX)+* z1rg;#ybMqd`g4oj*T3!uT?xF1Z%B?UiE@1fEl*R*(MZ1ztL=9!SYz-=FOf<*NvMLC z5py*hXOG(oh3*Xesq={(2quI(z$}ns7j+wWDrIGwXhLoDDFHSNss5zav6{J7ymr8j&OXlZq~DmZ_vhh{9AORd4f~Fc5A?UP|3v_W;JaW&zc!(# zFwfxN5O4TSJb5xq3S$Cl;y1;E_;dRv#mkcIgXl3krW-X85ir&ugY|CBv0hwuK zq+dmIMuTURSe$9WO6f~PO=HeO@#ECf_X6@X0N43+Z-#&r!Fyg=W5!-8#K-7>!U6-O zCX-?4f$?q>b6RCr6}vIR65W+byWsE~wU&$Gbcfb>wV1ojTcBs=a}2TvnhZ`Z4kLLo z=eSM)?U()M!&vN54wY}_aOM#=nX07@nw!1q!O+A^x>}98?o8X<*7WMxvUC24I^7CS z<;BLp&HIiaubDSY>dwR2 z{z)92F6wGGg-?q{;pgi2L$Bi0{Z!K2Qp?4iSYJ&JY*@eT4ywv-JwIqA<`h9@7$jog zU;KjFVZ$Iver^6P0ja#eS<^X3bZ2SG<3GvJSW#UehW(&>Hv4aP6n0bQqw*s7NXcZK1)#(?>FO7?r5mT-jW8W&_3Y*uEGe-(A~sn>n0%)E&nS8&Z;_j5o%#WHWO) z_w<)IG;R3E>HhLU6B`7^eP6RJcSzEDra@E^dpT4gvd6Ml{ ztKd2G`0l>qTdR2+={MSVEr6KRUxqI(lv7-v6`pw0xtnC_8242BI66LWZ}_{q9@})% z{rvlwv(z#9z9cecKcMgedO4xqNy)7<>GuDMwe zk_{^s&@A@#$@foI+BcuVnlbCp8&qPD5L3 zT74s117lh@Yr9_r0sw&9jq~@>+So}S-_6>}#*x#Fhw#5RIDeo2(@aN*|6eRlmOO-N zGV=IBwhqSlEVRtD^n|=n`1ttT4n`)Nio&A*NBsAVhtSN)$&Qnb?iaV9b!DQpbugu4 z;Nak(qi3XJWTg4!pmB7!ang6Av2i5&Zzcb)9${lgLkDv^Cv#gH{Qv0HH?Vbf;vppb zkD>p2{C7W%-OT^Tl8xj4aqHJXy8lq<7-;F~{;%#|QSSe=a>|>#8C$6dn_C;(IR4t; zWn^LD{xAOjALV~6{x3=O|B+;1{QpS)FUtRsB>QcqP=) zbSz#P2h+*qFYYM=N#JQID}l9oEWbsE{`4atD95I*|-lmOJA|>cbu-9 z#%EV2*wfLklBOOa-LIH!SB(#@b}*;IZ>lRdML+_{=s%F`9^dY5{zZWWC-+O&*hu-Q znC+$b)a1Kp+qOqwV8EfWx}BR9v2&Ugx#h{la}bTZKCDj!C>ueurzRM z?ukDUX7QLF>gQV8864doFrqP7CuYsI2``5F7cYL*{-U{K5Pmsu811K4Ng_o(MW6ie z6Y40miHL&+3^8Q|BX9P(pUbU+?)K)wdnG<3sU;6aO4eKy7+X0 zqKmUb<~s75WSOl3f7Q<8pDfBI@(r1RZqNZ~O5qYwfnM>+JvskkJIv{F(o16RR$H|x zEs(S!oG6*QDj-U|`)&yKE-WO}3yeopX$2YkwRTxwq~sPx>Yx!ARaavg_c=v~?rssl zwe8%F4I>=XYBy2c(rz`7KV0pyF zYr4vwuPQ*07x^U@*iW=LAfzw2y2%e#Jw6@^Re)byRMYXFpDvfz|F@FdZsnR;or1Z} zPxhX-167Y0f>P|C(is_o;+X1QNilPfbzUIMCOm@Vr&hn$b!%f|gTX}>g9alUMX{8l zg&t-gSbuD9#CF;WF1~Q+UrB7?q9P7muf}w;$uX{!>gA`PJzq`7lE6)ah?tyf zbX2FByAi&oqzGPs?$Fk!#12APMMqoIe_&BX)_?W|f>(v@UR}}90hGhpzsiAeXnPkP z9^TI-@akgPF;lm+vJ+jN`ZiZ)oiRT40#l1=k3wag+}~aPl@VF2n|}l&lE2eyP7nh~ zN66{4wY!tine>IcK^6U;t9?{Ow4gwY3!Btm`?*+Mt0k)FC{ISx(QPFa!Y?|6?^<$yj2StA2LwhM4s1%nM9bsnHLnNfG93-hDh9uJk0P( z^4evxOxT_PuCs(ux)(e2r-_3Q!Cv>=?R^2CChnKbE8NY`=<3?I2d*=9S$%PFy8Jo= zUQ@{z*U~1F#avjjubp2=B2`;fDv<)SCDj}X7gS5sr9?&B(m6Qurqw)- zC79fnB@X6b$WEP@9$WBCYdHyVT(hkRp0|Y%Uq)2nN!xYGvjjF-gnHdihRG zOx$QudKkMPrS86hN--R0BNQ-q@o*`-w1854X&oottvEi1nvu@REvzW1NH{THOX}(d zG;=9&G_ty<+(FIzD-|zMpuYU-S;jl^k3dK;96((`K|w_1Rvg{?evItn<)%hAHJ)(1 z3n}E^#&d9&GUfzhi%DJtI2_>{n{~NSf?we|>QAviQmTHj*koq05E$orJ|FBV(sFsVRYF z!#$mn7zK@zLrB|1_mm#CI*s~Ejc?UXvsrwXA_M1~AcPmY%^%M8Hv=1t(TdlDK7SlC z=vo;%K+EGJ%T~L1K1M_&CP_PML2f~WGm={$h=gnT?4F z$*_vM09BZ0<|g^nsoDMt@uU?1hn<7@9;VESD048NFLN*A|)=mx}pTWRH_-3M5QUhjGIX>8El z{kkBS5HgUY$a*5H+(Qk&;-zzQ)BUft(JCCFEpXNgr4ZD>d<=MKDPuD*M~rIqDnTow!Dl!>pm zlbpOeJK$au-vJN(`qxpDpokS&mrb`_>CdeWS0p;0o@XVp*dmFV!OLu+P<$t+so~MV zjyltBJPs#Z9c+ZX0YDt6xaUVNir%qL5nl zLupB(_{`T9WU-9ovHg0BcI|5RQMcAh=z+NW$M_p&u6r5av>2E~bdSPUiB4&kI`IKABm3;O8NIcJmMe$&?`B7FYeY^8PF39k$xwCL@Z&r;-oqZyOpVCTiG2dzrKS4vfZW_T5(`I9e}|Z0GcU`D&P22v6`Hw_G0y& z1zL|n5!2mJXLOU|w5+BMFyLnZ;JrY!d7!7~aD=FL=$jb?-66)Loq5NSwS@^K+IyJTReAl2#Qi`$#ym%+CQXE!3%ZzSI(b zynd=B*+e3)SRLFNh{gqCIipZg%Sbf0KL?)IXtv01H)?mdun2rO_O}==xoS9hWU!S* z)i~JLgYBQqGJPJ(FR4S^3e^J-!#96I%fxlsfJTA(c(P4T~prui7wU} zo2Upn->_jvWp0aQ5Kriw=DYcMldw|}iBM*)sJe-KTN;o$8-6f!apNE9Y_Z{}zvU3R zzn`Ds(++qrk;PrUE(&aiO}}F3blh8d%g#V>jhlh+&-uaNwiv{_7TZ;$DJxrXOK!G? z(@x_e5AVqPkYX!8M86iZ6=m|nL=BI%4@*hc<7(egAiGN{7RsvO|e|6Qmx3{G1|?QOlsaV zyTl}dl}|w4u25yvI&2)|$cxb}?&Wo0Rc^+kCd70I4&)K@OUr9TkcB z)UD=Xdt=tFWameCWXceZHkL_D!kWfcbZ3H+!)Ah%KimZ7^*()dmPi^pw`=z9D!l2f zJsO|siCL)`s=wJe_QK^n=mhVm>-!TArH!G@C(z+fe;QAeznM;FzFkvg!3mS{r_VtImMo zcS?Z;q1;-mLvM1n^#v1xZ`X62q0tmOB}%T-$#x*fhcZ@FQlf-f`pdxBJw7g}-gvD_ z9FMc1EH=O}-ajs4S6+?`cg|A<@GYo&}vrh1Ql& zAf(r_j=Lf@YxCMStTQ^l$d%x_aXve0MonL`W7^yLt%%+BAD;2!)~mBmN96M~7m#is zULhYiDoLmLDzE~Yk5_&3fUdJ038Au3#jE;vtp5qT+buIYs*Xf@X;;Jgi}Hi(em%#Y zbH>A|s=S#0gMy~2fq}~ReT7kvvp)-)1Wnw;a+H)5#RfqE^Lcc{;=2TKcnfd(;XLp0 zlx{t0(w9_G{Z~l@+Ha|Uy{4#0xkrImVF++~WF)kn9`pl?TImxkLJ5M-{SDbUgKs@V z;26VE)Hg`>p+Uz2_6wez6}8zzkv93tFYnZ4DWj(m9d)`QB;T7)dw>3h~oW( zEdi!1XaY;f$ikd~Jj0Lqh|#$tATg!Jva#_zM4)Z+8IQp!6RW(^*L;Z%@$mCD%}ketSnde=K;YAhKGl5=mb3A=5bK`aV|el zpaDCK*wSFuRohrqRt815@A%8o`Re8N7J@j&wX%l&i6YTkA0rLuOVnYRdnE4(TCZqj z1yEt0OGpYj87PTe=A5|OT%48^A#N9DIrRa=$#Af<4$+TzNa$4JCm04o?*-Fw6k?peF-rn zCh=Kj^VRmR$4q?=0vel8usAUWYfKl)S)wvIs+mS-aL$v#lH#9*VwsP-5xhKm2M0kx zpg|Ohd+KqB0fX5~8*;u$K2|ue*>?HoLznReN<%}YL|>8$Ey)^+@lNm)GIdM|XB{l3 zY#3!YCH#?9zu*LI9Boq+c8vsVanI&|F?5=~0T9S`1wDzy-uc^^*mG*emmzr$2=&4K$JN>a$4D!Pc z=L%pKtIx@N?yKH&U<^cV@cF*adrab+eDX)6Bxkg@CqM4PuCbU*W5H(kK`=7Lp$lSNx#=Pdb-)YE`r&3Q%*l)xX?xg7ZOs^$xlnU~xO@(sv>Ye1mFv_=MfEzHgk!gvG#*%1wn*Pdtrp7Dp7|&SP2YQ*z!q*Q zq7)g(@yn2ZiN=%rJUc$Tjnj7SS&h8|HJgs6hxKucY3aT@+!0(&jvMysA`sr}o1WL7 zX$LrYj6uxDDriHWZl@o1UNZ@M0}R=bJ&%~?1@#ET6UDxoe*oE8;8D{O?={pu$mFu6 z)n%j*NS2b4P<~4sr)Oh0Fc53;=c+|DJ5I}ICRXGb)06|pZQ3q84h}9i<100B*?Ek> z9!@q>`Mn)Jrqvx!|LmD7la`Wd#*{uDoz87YI4X*@B%UrL*?Xaj?SwuH6aM@r&Qd9~ zWeeY^-4J@)jTW(~)Gn%PMEpe&sg-c;6-H*}knr3vA*6L3``&0p@?WQaceR-fuH2wa z3^k)N@VWGqB}n6D6DN$Ei)_5T8JLf>@n`$jcgmEY=?XIZ1xjoNtU@s^6j;mJ$!mI7 zU7pZr+pSCcrcSA*)`>xWz0~x)w3WtNQ(_I4RT$_!=OAGg)h@=wP5*2W$_;MHamfAJ z@E3JGwGH5hw)EA+{P-bN4Z9Y-Aow*>Q(v{_aaByR0KtsspS<|HbTzKF zpWQ&4z|GCgyDwL}{M|zfxnMufxB5-;rD{%(r?DO5vkHZlVFRk;Zrs_C&?!^PEAmm( z7RW$;=R>-_EKFZ|x)n2A5EV9$%yUEsnNA$;)KKV@A}0ozF#daQNp;# z#sIlUukk8D+fWm_jpMSf>{`t$WBQ@YSh zvRJ*vv5AkHg_1Tw1C8006;}t$K7+kJuzE({9~}HZ_SuieGiwtQA1(%jO^$>FB`4=R z>8mgV*?*eyx0ibZJNQ6-?u(_UX>t+DQ>__k zX&B}O0c}7D12sM0;|6EaS)5In(+&AhEG+v$K^gRd;X(bDE7jpc`}POJedWECp&~xp z3vgGLNH@gahWj9t%f++gjk<*2c$vb5gwli|ju?N#DUBCNMq+R(;zha-iv+FQ5Q_!f zln}>H(2)Hokru+1ZQ*=7Jf1N5VeH7ZB?2hicKraQt*=9|JmsdY-)zziqUI?O`ppLi3h`!`%bT&n!4L^oFxj=GuZLzX#&O( zo}fJcvl9UT^SN@c@9}gF3k3aCBd*KR^-896cH)PM0>u0C>DPA+WHe(!a(eoXcERp!(VH6KzJ` z4;uxgv$t)W5jl16X3j^4uX15Lrnv0EH_HPMkO@f8V4mC}Pu}i!M@X^3pTlE9jkaGi zF>yn@9VZ^P020n!kLv9m7!Yvci`-RP-wc#7qSnj@@DPlB!REWC2?RqBAopI=*eJ~) zF|rfkr;|cUl$ohlN-EV4FC?0oB{pXIT4y+t2u-ONUl-ELRqarKcbT)Q=GKH6S|ax| zVgCtXg~iBW|LN9to{%UI2u8Nmw$;^vk!BV512gk|;2vBib;C22%n17o9p{rxqGHW|NY>% zvLy4AG$A`^X*Li78)&ZKBh`yu(1zh;;|(G$BfX1a-K(ph3kwT_yt4u3D99iI1sK@P z8#fsMU9LC>KD>1ZZJbm|O4fHTAvfytOgM|y20j8p?H6qGGt|)e@+C+T*KwVZh7Gn4 zBE0;$Y+dwIw3Js7S2NO9D03lNpxY9XYWuq{Z6l`_JiHqgMVAJX4vx?=Fc`)At-VaP z@q<4ewZVsCq-jO_KbxAE{96H&97Xw}%jc#B2pbqUtaK_2hafNaK@#b7Y?jrkUfH!F zk(e9Zno8R|Kv-HsD4*(+(#4MA&7Kyi`DYVrKe82PJ6aVHkK8sToGkwd=lS_^vokY2 z?eqP~F*`P*69Jlz8VZU)UtCn8tgPHuN!Sv}KSz+A@Bng3-_oDJ*vfLaLdwCBMqM*u zQ1=9@sD#HoJ`E=6?*4W)$d#7HxKLwmo!_>O0u=T7nxhZb6&5Ini_*_AGV7MSK9-~Q zw0|v;ZL-a8#wlnO%kpg&H8Ss@_c*{|A*fFPG2%aSk`O2QHM0CiaSJ8HePMa}4|PU< zJ|DlvPPg}%DRk~BX>qZ7?f3XNsYMwMpAWY>&MHSOV@zaZAn|2~zdy*#94?rQkJ=r*(EV}Cnw4W9lhbrG%QemrR}^3=Fd$>=T2O&B<-ho-ScLWXls*X2t$ha`^lprZUs6P~wD6@124=L8Rl6Ix z>t0}GcM-7u#T__LKQn&|CYU7xXJM~T&T@tg(C(Xw+@ zxd>+PK$3>Of$Ydo3?5NB;F@2*Ju=IIV79!p&CxE_lp(?w@mu!MK;fhX`UTB4E#+Rc z%D)i9Au=;AKt(7AFOC*KF#VsS_{sjpbz9o_k}9Q)Ev9!|FnVbL=0(&F;cf)Dw3+Fb zkGu;ZkTsj{wJz`D*ZUd7PUO2zft~ObAMgHkLdTO9+B~U*!3Nbac<{CHDq0LWB28 z_<=ERXQ8z*5@4e*CX6qCyu|PJ@rtqx70`AIB!%fiO(P4;2KGbTe#U zwEt=6H@U@EF0WRx7gtXRjZ=c)mhzu5sr_gRv?_wLc!Hrukfi+Ay)DenDK&V@NGGL< zS;NOlUuhb!qM2P28cb{bwip^(+-MHM|6yyyo6>%znjHA^C4M2w+tTE!9j8Ji+uLpP zpUBEVIB5jW&ck*nK}*)xfJZ-e_1(EDy%)Y}zPOLatIlk>P<4cv&py61uOsO>Y5s^p z(7POuD9hmR4VoZ1MO>hHpnB56WAPc0scR$0Y6Z41DF>7`zP2c3JZJS^n$F0|j};{_ z16gAL-g|b%L%jmgxZGK#Z^R1!C5We2>rDOqvxsW_e&{;YI?!9(*+Qb6>-CXsL?|uq z^m&tkpxAQ@7a^AiXZ=9AU}KZ`DC;A=xmXQk4mNw)6lpu}m3X2-WKrjox zKv!I!Uf3VMWm^-Cw7A`Od*fEcBxOdU`5bq9{YN`q>G3#cA(#OHn=~_bXQ{noasEVl zPfE>X6giBdu!{_ko^idQ29ckI(g4OHyf?k`+O|DPG?E*B^xN9@tI~I4@*1|fBYDU+ z%tG|4S4S$1m1yQ)E@^0l&QlSSj9u_RgqqM)X{R`fwCR7PZ1bNKM|y2m2M_gtw3owY>4!ZkC#J|83i0YsCg9D7eaOGD-xlW zWIbMnZ=euBTRB69shbww5b*78VxXY_63;WafLz!G`Uh+!lPwy|v3g_me3F zDmhUZ0CV2ZyM$4^&um8q$tm`QH^mj(Fzs?Ui8M88jN!SudNIsrL*!KR#8Y+22&1`r z)e$ik;2-SAG)?rVeSZ;6(n)f+DQGNiU-4VnP&H?wepSP(b$huZ*#J~8_NkAaApV(D z9}!qnuoL`aKaBM(G8NEZ!O#Pp<{4+R>nkRKtF)0O0yOlxx5hRc3FA3tcc7lcgpUpyha?%FO$nX#wr z?=)&W!-&0;pt#wII=^{?;SY^Q+goCQ&o5j=fw`zSc1^bB_D;Qu^<|4u9J89)B-viIr!G1uE4-Y(w?%m-pA+aa%33WVGd+#n?f*D=v) zfH{c#38JeP>{DEBl=gETrrMb|^aqFjPt(tCWB6mympCfiMD#u{e?N`UOiu*N3K#kk zD5yf^l>31i=JK}i`F$YKLVO`$e<*3UAL2B4VTvz1v`CrQM3kf*FnR}4;>=1O$ip35^B#6^cWBEeye9s zyBx9*{BI`-m9HoW{VwD&^j^*fkVR!l^$=uq}mTN zNi*|XC^Pi zmGs5ThC_#+HV6<7j2#rBpKkZ&<%9(gZEu$8B$a-bZ~AjK$tU|0y>NU~C=kIn#1u6q zy?9DkrSphz0t$F?dvi6NQfgt$G-8$NY63|*yqhi z&(euI(g`k!7muJzcx#VoP5pDW>NVsJYAPR@Y7#P7iyfbnhQcXHmmRw(1EmRt{FPXH zNrl45+=76NJ!a+vR0wV}Fx=3?7|wdIh-2@SYBRIfPDiCqEj3W?v6B~LG68Rsw{n!4hx%~)aqL*Nvk~xSAZy&dh zB0GnV6|CI;2+oOt)t=^lk#M)F8xS821$H{bq5;Kj`Bt2APz8zIF=^6~pDENm)S)Q} zXthQXKUc$eHT$OlwdVLhoBs%Jf+~s3d#YMk4H?-j#vP3t%E%c|FmQg6HR*IB=}er; zW5;k?JvA)v>OAT)lt2T!T3uoQJG7T*o6!J-wN4Vz)Cg1%io$5u%-yU|DfQw0KQN)##WXDlpQF(WH;Hxo%C0_p4i0s74i5X*&cC~g z?53J|ToL)=nQsAt24VM7<7AfqT*AKrK@u;0fc-ECF84Z@yw6gzrD;--#zgqdYeSj# zSe}~=bHXM0N#7>U*$`<<8%DnF1F-N+=CQ=j6xPM}z2!L5-Nd0nU}E#PAh(oh5!& zqtxVJDny8EW7bfD^Z3#@zR^mz=ef0rFR7}BMQE}wAm(|VDc0PM-*>k6ug_}=%0HrC zD|TGlx*rbXTRf~|AjyT4mcEuoL+!woAyLQ1wSWmxchy$n7Pt<2!OrSaNnjLHddHt0R<00Yzpe%Mzs@Jaa3%ApP>n zAuDlxs3Kzh;zO6yOOdv%w5TXzF}$PQKO$Fo+EEnLLE_-yO!k!Ya1Q3f>W^HuVlwRc zU;`1}ba9vB0j9YyKh6g)d~twdp9w3NG(!nXTAT&;tn?EvgrThRxfjwdC)we@PhcFm ze5@~4m=nd7m2>wC$3C9IENHGwxKgVWv+9e&>vAr+h{RH0bxABJap&ZLXqda~LpIW7 zG+DoY6s*gE58M60X%q%@eb5RM@Y)&&j@K$+^MVB~Zi75Q1sOQ25(;6xC5*xgVH8eQFYkZH ai~K+SeawEz38H!c0000 Date: Thu, 2 Oct 2014 08:48:26 +0200 Subject: [PATCH 04/17] Enforce jQuery style using jscs --- .jscsrc | 82 ++++ CHANGELOG.md | 2 +- Gruntfile.coffee | 21 +- jquery.ui-contextmenu.js | 745 ++++++++++++++++++----------------- jquery.ui-contextmenu.min.js | 2 +- package.json | 3 +- test/tests.js | 130 +++--- 7 files changed, 536 insertions(+), 449 deletions(-) create mode 100644 .jscsrc diff --git a/.jscsrc b/.jscsrc new file mode 100644 index 0000000..25ba9b9 --- /dev/null +++ b/.jscsrc @@ -0,0 +1,82 @@ +{ + "requireCurlyBraces": [ + "if", + "else", + "for", + "while", + "do", + "try", + "catch" + ], + "requireOperatorBeforeLineBreak": true, + "requireParenthesesAroundIIFE": true, + "requireMultipleVarDecl": "onevar", + "requireCommaBeforeLineBreak": true, + "requireCamelCaseOrUpperCaseIdentifiers": true, + "requireDotNotation": true, + "maximumLineLength": { + "value": 100, + "tabSize": 4, + "allowUrlComments": true, + "allowRegex": true + }, + "validateQuoteMarks": { "mark": "\"", "escape": true }, + + "disallowMixedSpacesAndTabs": "smart", + "disallowTrailingWhitespace": true, + "disallowMultipleLineStrings": true, + "disallowTrailingComma": true, + + + "requireSpacesInFunctionExpression": { + "beforeOpeningCurlyBrace": true + }, + "requireSpaceAfterKeywords": [ + "if", + "else", + "for", + "while", + "do", + "switch", + "return", + "try", + "catch" + ], + "requireSpacesInsideObjectBrackets": "all", + "requireSpacesInsideArrayBrackets": "all", + "requireSpacesInConditionalExpression": true, + "requireSpaceAfterBinaryOperators": true, + "requireLineFeedAtFileEnd": true, + "requireSpaceBeforeBinaryOperators": [ + "=", "+=", "-=", "*=", "/=", "%=", "<<=", ">>=", ">>>=", + "&=", "|=", "^=", "+=", + + "+", "-", "*", "/", "%", "<<", ">>", ">>>", "&", + "|", "^", "&&", "||", "===", "==", ">=", + "<=", "<", ">", "!=", "!==" + ], + "requireSpacesInAnonymousFunctionExpression": { + "beforeOpeningCurlyBrace": true + }, + "requireSpacesInNamedFunctionExpression": { + "beforeOpeningCurlyBrace": true + }, + "validateLineBreaks": "LF", + + "disallowKeywords": [ "with" ], + "disallowKeywordsOnNewLine": [ "else" ], + "disallowSpacesInFunctionExpression": { + "beforeOpeningRoundBrace": true + }, + "disallowSpacesInNamedFunctionExpression": { + "beforeOpeningRoundBrace": true + }, + "disallowSpacesInAnonymousFunctionExpression": { + "beforeOpeningRoundBrace": true + }, + "disallowSpaceAfterObjectKeys": true, + "disallowSpaceAfterPrefixUnaryOperators": true, + "disallowSpaceBeforePostfixUnaryOperators": true, + "disallowSpaceBeforeBinaryOperators": [ ",", ":" ], + "disallowMultipleLineBreaks": true +} diff --git a/CHANGELOG.md b/CHANGELOG.md index 993fa98..6dbe5b9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,5 @@ # 1.7.1-0 / Unreleased -* +* Use jscs # 1.7.0 / 2014-09-09 * [FEATURE] AMD support (topolm). diff --git a/Gruntfile.coffee b/Gruntfile.coffee index 0068187..bb09765 100644 --- a/Gruntfile.coffee +++ b/Gruntfile.coffee @@ -34,6 +34,12 @@ module.exports = (grunt) -> # FTP upload the demo files (requires https://github.com/mar10/pyftpsync) cmd: "pyftpsync --progress upload . ftp://www.wwwendt.de/tech/demo/jquery-contextmenu --delete-unmatched --omit dist,node_modules,.*,_* -x" + jscs: + src: ["jquery.ui-contextmenu.js", "test/tests.js"] + options: + config: ".jscsrc" + force: true + jshint: files: ["jquery.ui-contextmenu.js", "test/tests.js"] options: @@ -101,11 +107,16 @@ module.exports = (grunt) -> dest: "jquery.ui-contextmenu.min.js" watch: - jshint: + dev: options: atBegin: true - files: ["jquery.ui-contextmenu.js"] - tasks: ["jshint"] + files: ["jquery.ui-contextmenu.js", "test/tests.js"] + tasks: ["jshint", "jscs"] + # jshint: + # options: + # atBegin: true + # files: ["jquery.ui-contextmenu.js"] + # tasks: ["jshint"] yabs: release: @@ -133,8 +144,8 @@ module.exports = (grunt) -> grunt.loadNpmTasks key if key isnt "grunt" and key.indexOf("grunt") is 0 grunt.registerTask "server", ["connect:demo"] - grunt.registerTask "dev", ["connect:dev", "watch:jshint"] - grunt.registerTask "test", ["jshint", "qunit"] + grunt.registerTask "dev", ["connect:dev", "watch:dev"] + grunt.registerTask "test", ["jshint", "jscs", "qunit"] grunt.registerTask "sauce", ["connect:sauce", "saucelabs-qunit"] if parseInt(process.env.TRAVIS_PULL_REQUEST, 10) > 0 # saucelab keys do not work on forks diff --git a/jquery.ui-contextmenu.js b/jquery.ui-contextmenu.js index 01b85ea..e9b0dd6 100644 --- a/jquery.ui-contextmenu.js +++ b/jquery.ui-contextmenu.js @@ -18,413 +18,420 @@ factory( jQuery ); } }(function( $ ) { - "use strict"; - var supportSelectstart = "onselectstart" in document.createElement("div"), - match, uiVersion; - $.widget("moogle.contextmenu", { - version: "@VERSION", - options: { - autoTrigger: true, // open menu on browser's `contextmenu` event - delegate: null, // selector - hide: { effect: "fadeOut", duration: "fast"}, - ignoreParentSelect: true, // Don't trigger 'select' for sub-menu parents - menu: null, // selector or jQuery pointing to
    , or a definition hash - position: null, // popup positon - preventContextMenuForPopup: false, // prevent opening the browser's system context menu on menu entries - preventSelect: false, // disable text selection of target - show: { effect: "slideDown", duration: "fast"}, - taphold: false, // open menu on taphold events (requires external plugins) - uiMenuOptions: {}, // Additional options, used when UI Menu is created - // Events: - beforeOpen: $.noop, // menu about to open; return `false` to prevent opening - blur: $.noop, // menu option lost focus - close: $.noop, // menu was closed - create: $.noop, // menu was initialized - createMenu: $.noop, // menu was initialized (original UI Menu) - focus: $.noop, // menu option got focus - open: $.noop, // menu was opened - select: $.noop // menu option was selected; return `false` to prevent closing - }, - /** Constructor */ - _create: function () { - var cssText, eventNames, targetId, - opts = this.options; +"use strict"; - this.$headStyle = null; - this.$menu = null; - this.menuIsTemp = false; - this.currentTarget = null; +var supportSelectstart = "onselectstart" in document.createElement("div"), + match, uiVersion; - if(opts.preventSelect){ - // Create a global style for all potential menu targets - // If the contextmenu was bound to `document`, we apply the - // selector relative to the tag instead - targetId = ($(this.element).is(document) ? $("body") : this.element).uniqueId().attr("id"); - cssText = "#" + targetId + " " + opts.delegate + " { " + - "-webkit-user-select: none; " + - "-khtml-user-select: none; " + - "-moz-user-select: none; " + - "-ms-user-select: none; " + - "user-select: none; " + - "}"; - this.$headStyle = $(" + + + + + + +

    Triage jquery.ui-contextmenu.js

    + +

    Right-click in an element to open the context menu:

    +
    + AAA + BBB + CCC +
    + + + +
      +
    • Action 2 +
    • Action 3 +
    + + + From 7f52a82b97f7e83cba9fa5940e36fc402370a643 Mon Sep 17 00:00:00 2001 From: "Martin@MBP" Date: Tue, 18 Nov 2014 10:11:41 +0100 Subject: [PATCH 14/17] Add and fix tests --- Gruntfile.coffee | 8 +- jquery.ui-contextmenu.js | 6 +- ...ui-1-11.html => index-jquery-ui-1-10.html} | 23 +- test/index.html | 26 +- test/issue-80-async.html | 2 +- test/tests.js | 124 +++++++++- test/tests2.js | 234 ------------------ 7 files changed, 151 insertions(+), 272 deletions(-) rename test/{index-jquery-ui-1-11.html => index-jquery-ui-1-10.html} (59%) delete mode 100644 test/tests2.js diff --git a/Gruntfile.coffee b/Gruntfile.coffee index bb09765..fbac6bb 100644 --- a/Gruntfile.coffee +++ b/Gruntfile.coffee @@ -46,7 +46,7 @@ module.exports = (grunt) -> jshintrc: ".jshintrc" qunit: - all: ["test/index.html", "test/index-jquery-ui-1-11.html"] + all: ["test/index.html", "test/index-jquery-ui-1-10.html"] # replace: # grunt-text-replace # production: @@ -89,11 +89,13 @@ module.exports = (grunt) -> { browserName: "firefox", platform: "Linux" } { browserName: "internet explorer", version: "6", platform: "Windows XP" } { browserName: "internet explorer", version: "7", platform: "Windows XP" } - { browserName: "internet explorer", version: "8", platform: "Windows XP" } + { browserName: "internet explorer", version: "8", platform: "Windows 7" } { browserName: "internet explorer", version: "9", platform: "Windows 7" } { browserName: "internet explorer", version: "10", platform: "Windows 8" } { browserName: "internet explorer", version: "11", platform: "Windows 8.1" } - { browserName: "safari", platform: "OS X 10.8" } + { browserName: "safari", version: "6", platform: "OS X 10.8" } + { browserName: "safari", version: "7", platform: "OS X 10.9" } + { browserName: "safari", version: "8", platform: "OS X 10.10" } ] testname: "jquery.ui-contextmenu qunit tests" diff --git a/jquery.ui-contextmenu.js b/jquery.ui-contextmenu.js index f488502..e5c78b5 100644 --- a/jquery.ui-contextmenu.js +++ b/jquery.ui-contextmenu.js @@ -189,12 +189,14 @@ $.widget("moogle.contextmenu", { // Prevent browser from opening the system context menu event.preventDefault(); + this.currentTarget = event.target; + if ( !recursive ) { res = this._trigger("beforeOpen", event, ui); promise = (ui.result && $.isFunction(ui.result.promise)) ? ui.result : null; ui.result = null; if ( res === false ) { - // this.currentTarget = null; + this.currentTarget = null; return false; } else if ( promise ) { // Handler returned a Deferred or Promise. Delay menu open until @@ -202,11 +204,11 @@ $.widget("moogle.contextmenu", { promise.done(function() { self._openMenu(event, true); }); + this.currentTarget = null; return false; } ui.menu = this.$menu; // Might have changed in beforeOpen } - this.currentTarget = event.target; // Register global event handlers that close the dropdown-menu $(document).bind("keydown" + this.eventNamespace, function(event) { diff --git a/test/index-jquery-ui-1-11.html b/test/index-jquery-ui-1-10.html similarity index 59% rename from test/index-jquery-ui-1-11.html rename to test/index-jquery-ui-1-10.html index 7adb31d..1896c79 100644 --- a/test/index-jquery-ui-1-11.html +++ b/test/index-jquery-ui-1-10.html @@ -3,15 +3,18 @@ jquery.ui-contextmenu Test Suite - + - - + + + -

    jquery.ui-contextmenu Test Suite for jQuery UI >= 1.11.0

    +

    jquery.ui-contextmenu Test Suite for older jQuery UI 1.10

    @@ -27,14 +30,14 @@

    Sample Markup

    diff --git a/test/index.html b/test/index.html index 24a6122..88d7822 100644 --- a/test/index.html +++ b/test/index.html @@ -1,20 +1,18 @@ + jquery.ui-contextmenu Test Suite - - - - - + + + + -

    jquery.ui-contextmenu Test Suite

    +

    jquery.ui-contextmenu Test Suite for jQuery UI 1.11+

    @@ -30,14 +28,14 @@

    Sample Markup

    diff --git a/test/issue-80-async.html b/test/issue-80-async.html index baf435d..d24ac69 100644 --- a/test/issue-80-async.html +++ b/test/issue-80-async.html @@ -109,7 +109,7 @@ // or return a promise to delay opening until an async response becomes // available ui.result = dfd.promise(); - console.log("beforeOpen", event, ui, event.originalEvent.type); + // console.log("beforeOpen", event, ui, event.originalEvent.type); return; }, focus: function(event, ui) { diff --git a/test/tests.js b/test/tests.js index ad6680d..d4434c8 100644 --- a/test/tests.js +++ b/test/tests.js @@ -16,6 +16,13 @@ function TestHelpers() { uiVersion = { major: parseInt(match[1], 10), minor: parseInt(match[2], 10) + }, + uiVersionBefore11 = ( uiVersion.major < 2 && uiVersion.minor < 11 ), + findEntry = function( menu, indexOrCommand ) { + if ( typeof indexOrCommand === "number" ) { + return menu.children( ":eq(" + indexOrCommand + ")" ); + } + return menu.find("li[data-command=" + indexOrCommand + "]"); }; return { @@ -37,22 +44,32 @@ function TestHelpers() { }, entryEvent: function( menu, item, type ) { lastItem = item; - if ( uiVersion.major < 2 && uiVersion.minor < 11 ) { - menu.children( ":eq(" + item + ")" ).find( "a:first" ).trigger( type ); + if ( uiVersionBefore11 ) { + findEntry(menu, item).find( "a:first" ).trigger( type ); } else { - menu.children( ":eq(" + item + ")" ).trigger( type ); + findEntry(menu, item).trigger( type ); } }, click: function( menu, item ) { lastItem = item; - if ( uiVersion.major < 2 && uiVersion.minor < 11 ) { - menu.children( ":eq(" + item + ")" ).find( "a:first" ).trigger( "click" ); + if ( uiVersionBefore11 ) { + findEntry(menu, item).find( "a:first" ).trigger( "click" ); } else { - menu.children( ":eq(" + item + ")" ).trigger( "click" ); + findEntry(menu, item).trigger( "click" ); } }, - entry: function( menu, item ) { - return menu.children( ":eq(" + item + ")" ); + entry: findEntry, + entryTitle: function( menu, item ) { + // return the plain text (without sub-elements) + if ( uiVersionBefore11 ) { + return findEntry(menu, item).find( "a:first" ).contents().filter(function() { + return this.nodeType === 3; + })[0].nodeValue; + } else { + return findEntry(menu, item).contents().filter(function() { + return this.nodeType === 3; + })[0].nodeValue; + } } }; } @@ -72,6 +89,7 @@ var th = new TestHelpers(), logOutput = th.logOutput, click = th.click, entryEvent = th.entryEvent, + entryTitle = th.entryTitle, entry = th.entry, lifecycle = { setup: function() { @@ -394,6 +412,96 @@ asyncTest("Array menu", function() { "Event sequence OK."); start(); }, 500); +}); + +// **************************************************************************** + +module("'beforeOpen' event", lifecycle); + +asyncTest("modify on open", function() { + var $ctx, $popup, + menu = [ + { title: "Cut", cmd: "cut", uiIcon: "ui-icon-scissors" }, + { title: "Copy", cmd: "copy", uiIcon: "ui-icon-copy" }, + { title: "Paste", cmd: "paste", uiIcon: "ui-icon-clipboard", disabled: true } + ]; + + expect(9); + + $("#container").contextmenu({ + delegate: ".hasmenu", + menu: menu, + beforeOpen: function(event, ui) { + log("beforeOpen"); + $ctx + .contextmenu("setEntry", "cut", "Cut - changed") + .contextmenu("setEntry", "copy", { title: "Copy - changed", cmd: "copy2" }) + .contextmenu("setEntry", "paste", { + title: "Paste - changed", cmd: "paste", + children: [ + { title: "Sub 1", cmd: "sub_1" }, + { title: "Sub 2", cmd: "sub_2", disabled: true } + ] + } ); + }, + open: function(event) { + log("open"); + equal(entryTitle($popup, "cut"), "Cut - changed", + "setEntry(string)"); + equal(entry($popup, "copy").length, 0, + "setEntry(object) change command id"); + equal(entryTitle($popup, "copy2"), "Copy - changed", + "setEntry(object) set title"); + equal(entryTitle($popup, "paste"), "Paste - changed", + "setEntry(object) set nested title"); + equal(entryTitle($popup, "sub_1"), "Sub 1", + "setEntry(object) created nested entry"); + ok(entry($popup, "sub_2").hasClass("ui-state-disabled"), + "setEntry(object) created nested disabled entry"); + // ok( entry($popup, 2).hasClass("ui-state-disabled"), + // "open: Entry is disabled" ); + + // ok( $ctx.contextmenu("isOpen"), + // "isOpen() true in open event"); + + // ok( entry($popup, 0).is(":visible"), + // "beforeOpen: Entry 0 is visible" ); + // ok( entry($popup, 0).hasClass("ui-state-disabled"), + // "beforeOpen: Entry 0 is disabled: enableEntry(false) worked" ); + + // ok( entry($popup, 1).is(":hidden"), + // "beforeOpen: Entry 1 is hidden: showEntry(false) worked" ); + // ok( !entry($popup, 1).hasClass("ui-state-disabled"), + // "beforeOpen: Entry 1 is enabled" ); + + setTimeout(function() { + click($popup, "cut"); + }, 10); + }, + select: function(event, ui) { + var t = ui.item ? $(ui.item).attr("data-command") : ui.item; + log("select(" + t + ")"); + equal( ui.cmd, "cut", "select: ui.cmd is set" ); + equal( ui.target.text(), "AAA", "select: ui.target is set" ); + }, + close: function(event) { + log("close"); + } }); + $ctx = $(":moogle-contextmenu"); + $popup = $ctx.contextmenu("getMenu"); + + log("open()"); + $ctx.contextmenu("open", $("span.hasmenu:first")); + log("after open()"); + + setTimeout(function() { + equal(logOutput(), "open(),beforeOpen,after open(),open,select(cut),close", + "Event sequence OK."); + start(); + }, 500); + +}); + }); diff --git a/test/tests2.js b/test/tests2.js deleted file mode 100644 index 57d1b1e..0000000 --- a/test/tests2.js +++ /dev/null @@ -1,234 +0,0 @@ - // jQUnit defines: - // asyncTest,deepEqual,equal,expect,module,notDeepEqual,notEqual,notStrictEqual,ok,QUnit,raises,start,stop,strictEqual,test - - /*globals asyncTest,equal,expect,module,ok,QUnit,start,test */ - -/** - * Tools inspired by https://github.com/jquery/jquery-ui/blob/master/tests/unit/menu/ - */ -function TestHelpers() { - - var lastItem = "", - log = [], - $ = jQuery; - - return { - log: function( message, clear ) { - if ( clear ) { - log.length = 0; - } - if ( message === undefined ) { - message = lastItem; - } -// window.console.log(message); - log.push( $.trim( message ) ); - }, - logOutput: function() { - return log.join( "," ); - }, - clearLog: function() { - log.length = 0; - }, - click: function( menu, item ) { - lastItem = item; - window.console.log("click: ", menu.children( ":eq(" + item + ")" ).find( "a:first" ).length); - menu.children( ":eq(" + item + ")" ).find( "a:first" ).trigger( "click" ); - }, - entry: function( menu, item ) { - return menu.children( ":eq(" + item + ")" ); - } - }; -} - -// **************************************************************************** - -jQuery(document).ready(function(){ - -/******************************************************************************* - * QUnit setup - */ -QUnit.log(function(data) { - if (window.console && window.console.log) { -// window.console.log(data.result + " :: " + data.message); - } -}); -QUnit.config.requireExpects = true; - -var th = new TestHelpers(), - log = th.log, - logOutput = th.logOutput, - click = th.click, - entry = th.entry, - lifecycle = { - setup: function () { - th.clearLog(); - // Always create a fresh copy of the menu