diff --git a/admin/tool/lp/amd/build/tree.min.js b/admin/tool/lp/amd/build/tree.min.js index d6d373a1320a0a5682f4a8403d428f6cffc02f6a..d28aadf5a096d4b797148780f74acca47403bdee 100644 GIT binary patch delta 173 zcmez3aM5K$4lk#lb4F%PN>OUwWM7`8lPB^PS!9-^=IUi67HcS#<|t{Zse$=vnRzK1 zN;#QIntG{;$r&0NX{C9|C7Jno8k*HA8YLN-#hQ~B@``fnB$pNe4J*;C)tt=8C%!p| zw}am#Rj)WBGp)oswNgzjRWC6I#IgtJ(JRSMPtQs91lkC9hX%+#O{>Wtg(N3m6?EQg ICTqtG0F@s+K>z>% delta 21 dcmccU^2K384)11B{yhH4r-ei}pOI^21^{Kv2yp-a diff --git a/admin/tool/lp/amd/build/tree.min.js.map b/admin/tool/lp/amd/build/tree.min.js.map index d2b98e75cb3802874599599b93b099ac38f0b12c..a148e969d31ab5ae8e683a8eb81aa4f567ac6fee 100644 GIT binary patch delta 2910 zcmbVNOK%%h6jq=Vx22Etp(bff-J~Qb8S*4aThYh8cdjQ><2cU5wG&Fi*dE(sJGSFY z9mi7TH4W&R8y5I+J&K=va^ALhfGQN-VednC-eD{~< zUBCX(_2jwNw_)Y2gkvRrC9`Z59G_W8`fO*zm&n-pB&>*I7p{ua-My#XgSum_vF6rg zZARQWKPeu+d-TYBYxQZjcf0H2?JiO6c}EOg8W!`Hz8M=EGbE7D%;#INeRc}4eD;RV zY{D0cNo(|eLHziBpZMZd_emS@MpJenIXslNhpvjy^cAr%bx1tw@rc(q4}2c> z@oeafDBSUgpDukM22ON~ug|_MKJp$BKlCZvKYRZk5#GTQ9^c@g&l)xJ;^{=M_-^Kq zcy;wy8*g*;oT!cV$(>Wf-Qsusl=y4-Gdo9iHBt@6?|pP4fyL6)9Jj0 zl@U*u#P;3D`jIn5O2`IP3_^@NRT6|dOnkn&{+3C2jEff!dd`;V2vfpDHSy32flp=# z&uafC2H_Q2ph|#{K#?jsA-WPGY^mffWtiMif`kM=r1&qOLPznkawcgvfr`LPv7B0CdZf1M$FUTy)*bpAG z7z9-f=ntN=Ws!pf3t6H$se>p} zG(t2CmsBN#IT?E27HnaIS$wIz2Ov=pdtjQz_A(Y16Fuj4G>q&(?2?_Hxa@&&D4Uun zC&oh$u@xj7LiGP2fCxgjI+YjeO-Qss{h7e-0kJU!5m<4kwd(l128vH&7EULA1Fr`dE;`Y?2Ve%A4SDsBlmRxXLt@TVYsYiwseg$Hbj< zUmd&)e`Nepz-|ZU@Wyot^Nbw?%fJ&jHd8dqT;Iwu6l#X%-80bT09dTFG&qme0rB_* z<#3E7vhC4#^a1YkW`PyOi}aNtur_JLAdn1&MnLLO6)!ibN%7{ydzqO!I5Z$Zv2?=j zNhW-UNrdQ280ubHQVf8(Vw8$&hPx$d0ZA6^=&eBli;zzw*4Y$rGMM845EH*;E?mrL zl5Y+Nn}n5|AN**_FFUp=y6rOqvu@6fmO|1yEv-o|&{EC5U3btWv=v>lybD$4+1=)( zljtroIj)R@XG>EjhHLcrepp1ys_>3s#u$t3iKUU{j#ws%thr5++@~7UP>8(5h^&kT zTa3>&zEKSBcMxz`Yz6I!6e&Ez;IbteX*?(B!#q!=5!d%MVmO|H8Aq~Eh5gwY9c)RY z$WdLUk^?7#mkaxp*Q9nEl?FS2fbLs6tKvC6OFc~(@iKd(KIunA8!}-B)eUAnE3Gno zO^%*b)?~8y){_tnca-Q3gEGUE*MncGELT&H?3BqDn@&U7eY_iQLpbr?7M1gl?Q^)J&79(w^ z7&Uo4-@Fd*D~Q%A`8%$66a$3VN?{SPo3(%q>}#!!exr~D(u6K*SWp}((6EF~HYy3@ Sf*w-cbvr}?{_AT0qkjOd!&0vR delta 2336 zcmb7Fzi%T&6qXO22$4WRC%8mMq*FL(G9=C=4#`oVH?!+GXXR|-jpH~H(mBrB>-DdV zW9M>6XnQ0IG!0aUih=@AI;yJ>1r!uWTtPuYfpq@@;=LK0*p5%9Yb<+a-h1Es-uFKL z@pt0)CyDQ$%wNcbr;BRFy{^97zO9n(%j(Ug#fusD)9L92wovYMI)1CG9v9V1LFx2j z=dk?vn1h_2XE-&SrX zdg_;oh(p140rDwIU~l&Gm)Oeb z1do<*u+?vk`2~r2?47$}0>*uo1#x_;9!GOaISsMFH4y3_u1?pr@g4@=&N>gLmia0uxwXL+BoBnyf4kBN4BuncB^Gi~8A_ zMBGD~ia6RIX0FLun}d_$hgYEt^O(n8#ZK8&9YKe(A$0l%=dQk~%}w=adXPU;Ki86} z6CxUR-529|DV$9NN``O8m<)yEb_^UdysFJ4fIR0kN*}+AWntbq+f>Jz)PIuGRE`dZ z`#+%!nR9;p%=XnkVKQ#(;_lh=Fg(&&o!m1qpu7pg@h}DiUZP%t334z6)tB{qss1*N zsKs2Hohs@Pp+HDel9t7mT{YEUAN(JQqm}~2lF1=ug@Zn&8=U2FT8o1D09sPuo#}yQ zPgT2-xwdJk9~)o1*EFdI0Lmcmd!*B>AfdW~W>Jbv6DKNe&c3xd%oi#-i;oY9fJkhp z&zm>YPtDgJR0WkU;;~%ifiOmc8-Q93NLc*|JBMJd@ICE3io#yuHa>%Lkk;}W*9N*q zOElG5>&`pJW}#3T0r!ysC|DF(Ts8=`LTf5+t;fsS>X4HRhj@J5v70g6LHevJDyi}dUuFtygcm0M10xHYM9v3eSPW+hFqyjl)yIR%!bAGo!~ttO;UEjTB>vTxLwlr~n8G^)M0I&d z#)=Ma48qs6i}VsgL*3XimPJ_Nr{WD5qRo015nO#yFJmp<+@iMl6W PI2((0!AYmAg-`wi?=7Q7 diff --git a/admin/tool/lp/amd/src/tree.js b/admin/tool/lp/amd/src/tree.js index 561878bf19e..fcbabfb1376 100644 --- a/admin/tool/lp/amd/src/tree.js +++ b/admin/tool/lp/amd/src/tree.js @@ -221,6 +221,39 @@ define(['jquery', 'core/url', 'core/log'], function($, url, log) { this.triggerChange(); }; + /** + * Toggle selected parent and its children. Make sure all the parents are expanded. + * + * @method selectItemChildren + * @param {Object} item is the jquery id of the newly selected item. + */ + Tree.prototype.toggleItemNChildren = function(item) { + // Expand all nodes up the tree. + var walk = item.parent(); + while (walk.attr('role') != 'tree') { + walk = walk.parent(); + if (walk.attr('aria-expanded') == 'false') { + this.expandGroup(walk); + } + walk = walk.parent(); + } + var current = item.attr('aria-selected'); + if (current === 'true') { + current = 'false'; + } else { + current = 'true'; + } + item.attr('aria-selected', current); + //Select all children if it is a parent node. + if (item.has('ul')) { + item.find('li').each(function() { + var currentItem = $(this); + currentItem.attr('aria-selected', current); + }); + } + this.triggerChange(); + }; + /** * Toggle the selected state for an item back and forth. * @@ -559,7 +592,11 @@ define(['jquery', 'core/url', 'core/log'], function($, url, log) { Tree.prototype.handleClick = function(item, e) { if (e.shiftKey) { - this.multiSelectItem(item); + if (e.shiftKey && e.altKey) { + this.toggleItemNChildren(item); + } else { + this.multiSelectItem(item); + } } else if (e.metaKey || e.ctrlKey) { this.toggleItem(item); } else {