From 396cbbf23c9e5ac9a7c00bcd7d5342492cd3029e Mon Sep 17 00:00:00 2001 From: david-swift Date: Wed, 20 Dec 2023 06:07:26 +0100 Subject: [PATCH] Add option to toggle sidebar visibility --- .../Reference/structs/OverlaySplitView.md | 8 ++- Icons/Demo.png | Bin 24856 -> 26179 bytes Sources/Adwaita/View/OverlaySplitView.swift | 16 ++++- Sources/Adwaita/View/Toggle.swift | 3 + Tests/Demo.swift | 63 ++++++++++++------ 5 files changed, 68 insertions(+), 22 deletions(-) diff --git a/Documentation/Reference/structs/OverlaySplitView.md b/Documentation/Reference/structs/OverlaySplitView.md index 210096b..2208670 100644 --- a/Documentation/Reference/structs/OverlaySplitView.md +++ b/Documentation/Reference/structs/OverlaySplitView.md @@ -17,6 +17,10 @@ The split view's main content. Whether the sidebar is at the trailing position. +### `visible` + +Whether the sidebar is visible. + ### `sidebarID` The sidebar content's id. @@ -26,10 +30,11 @@ The sidebar content's id. The main content's id. ## Methods -### `init(sidebar:content:)` +### `init(visible:sidebar:content:)` Initialize an overlay split view. - Parameters: + - visible: Whether the sidebar is visible. - sidebar: The sidebar content. - content: The main content. @@ -55,3 +60,4 @@ Update the view storage of the overlay split view widget. ### `updatePosition(_:)` Update the sidebar's position in the split view. +- Parameter splitView: The overlay split view. diff --git a/Icons/Demo.png b/Icons/Demo.png index b3f1a90baf2fb6d866f9d727414802808bcfc369..e7c9bd4794328834cd97b98e7b7301f2c19b530f 100644 GIT binary patch literal 26179 zcmdSBcT`mCwPG)~-_8mCaWDAbe3HJqOgw_S7A(Ck|NsoWg1kzvKE6DR4S z&Zx`N-Q4r1=4v_B6>{euW^r9SuJXrjp?;rp+x#N$tX_S*CoY~pa-Y2K`I}Y8&HMMz zpEwioxPx={iqoFQ8V4U!zc0FmyIdK~8);oz5MKGzel!Rt`oHm?#=Z?E+L4T1$5vA) zwgMR${3=0J&VoB$@1;<@%KrMH!o-@N{fjJC>&oNbmUG=!Hnyd4;@7-ZF|J&_8;xzL zEcng1TWrM}4%UyOwto1{_9-6+bE4g)JU$~f{K{t-#6+)|@>Rbsbq#(^O(?s0BeB}c z>HU!Hd+`+%ipG`HMuuze#e?KEO*6H6L^W=Wt)oziIW#WI7OMIBl(iN+UT%|QzkVGb z){w|xZ*fiwd=q(4%#}mcM0pMSW^&BR9A-x?<6tjv@1_NsciGJ<>l#Q-SqXY`Ype$58)QkuUJ?W^6l>Ww)ETH z)nfhShgRiw%`i|Xoy_tz#X<^4_E|*kvykL_nk0I;Tzobs-e_qgXsecCt&9Fh0Ud=R z^R?`tXJqD^$mGJ+LYo=&Qy%FB8}%wQ=jJrT3lD7kQ+qxfU#D_#wvRc`;f{)#&vBg- zE4+&zRNwZdO)~~^Gi=!=q(3l^^_OXCviQNGX3@)JG+F-Auzd!z9RPk2UjIDpr54#H~rcvy1(iFZ38uR?84n37~B}MYL z>9kFIf}b;o^Bg&~WW~6SQErN9zc1buX}(WU*(>ki$oSYLzKdanR(HGWy(1+`WUdy{ zyo@aJx9_uVR8f`nm9IX8GpF?N zT1B_Y-kRCoW7FMh)%|EJV`_T(i_y6}g{xO?Oq;u{k>5lwF=A;^Xt3liIgwIXBuGxx z|Cz_PO6lRa7giOwEN#Zvr&*VUIutsSPg%R%_I}%bPcJ0LQg~HQ$L;-ix6098&ZSFf zKdt$$u(`?Jx$Bnmy*jG6Zsl=RS;sOQeZuOJ4QJ(_(*>+Ik)gb*dHp}Ubi5=zCh19e zvGla)bYx~!r+MFI4QDRf59~fkR@+%bS-3nO7aA?B~xvl zi*1d8Jz#YE?(e{i2h&%>ys9YPvUj;-kp>K)_x zQ8r_Zl#`;LH~xI5r0c8m2OqP_)0&3WJogr-_Vir7b?esA0#>9Cz8yPubO`9@{wRqH zcO8t6;h!_w;4@XVYiMSnkpw4!gVyvZ>n`hTBB<*)$n)y*RA#aV|S*+I3a( zO7EN)^R;W&E|1U56siBo5NWq-BO=7fb7{8kUW#s(ZbGZd!`&@1=V>FhyN6DB8a}?v z#wgFqa5=6uoYCy>{4U$SX}7(fWd{uVt{6HfOsx~r&)r|y(Xp(Q(R6k@Zl~>T#Za-Z ztK&VNJkKOP_pv`alEpa@c;)21!V!IWxz%*14V_hU)>L>}e0_CIn7ZQksZ34|E8#3C zw#rjO4W6!*;gZ+n86Pf2_1?-7UdPs?7S6{lk*l`h_yrdIbJb67UcY{gmAcmN zLZR%l85kJgzv1I!NDEACon2MG`QAh&??c9j%lfqwjLAU`b}viVlD2-8ReAF1-R#!s z%&upyYm!Uddn434c|V!Fzq_?Cjd_+P>twtQoEJ!3sEp!EcIRyxGy}iiHM+g{2G+TjKXm z4Gr2WR;=j#gK2#EZ%hBF{I@>dal;)3ALq97tY=_ezd5y8Rwekrx!JwW&foR25Ay=B zQH1vF-YuJukPzFv_s}7ATq`3JQ(#0yN8Qu*c81LZo|3C~&bCjC={;#*6{1q-A((Tx zo`1~#Ds=-ss}vj@tTnj*yr8J4rkRXiqQHUfNiOUphH%oe#vrL z(Grc@z`jCMDfO@J+!E3JC%8;O-OMx6%L^GxOY>u!M$`+OtfmHPPH&L-;dTA`b#{GO zidVsYRzK~!Ll2G2%@grjnML~5aK45Qf$VGyWplTVcHK+;A#LdDnjb7|l#1P^+4m(( zJuuOXHIQ`4c7s)vduP=3(A_`<}7MDq>a>W|Ovkvn~wUr0#l`0?ZBE!io^S&?DKt__B}jq*SG0@1{pqnZYeKF5_-OZ5R#tP~<(Z=8l)5DCmNt{+rA61l zgt$zn5nZ|!lt}%aHr>ou##gQcH-z~nW|nPaxa&G9Lk;F{{Z`_;m4ziP+p1--;&4Zx z?`i9xg9i`dtK{7!u)y!%y=x2{Y0XooP1dR_58P(6e#kx2URZFl^qBqk`^=nD$x*Vt z<`qvwn_szP+&>kqzFc~7jFq3wWU1Oni%O-^E(7P)q#G-Qy04(*>b}3_y<#POJTA?3 zAU0&nmMz>=c`Ehm{T+w4aB>>;`=4_uWoBU5S2?(Crq!D!6;f<`#9r;HoMIYDhfE%f=JoAd&mpeSaeczCVy@b-1PN61+Ni!CtEhZVyKB;D z(XvP3^3r@+Sy?)J%^WN8(fkW*;ij5+)!id)1={M*&whCiM{G#JZ9VoCxv3{koT$w( zQAS1+M5e#TA}qAD4p>N2_o{Ms#8La_tRkk7-KG8(Wr4g;4jSKmuv0P-JHqV4{TxFRza;!qvsp?-pyX#W)4!ci&JstdElGAe`N;k`# zmxo8LXnCo?x?n`C{0FC-cjxy|oBD7`H;2yR73~Wb5onvEZxHG!b((ZGar~G%OG&VN!9bzs#sKiH4Dc<^bg`9tUf_mJ8E0y6Xp91#k zd0a-^q+Y3b5{pYUsC)U%)w_70d%0Y}mzhJvbLsj><4akKhSa*->)A4`+r(X*o%?UG z7^;|>#!rv7@#CK5<{ohzY1TBU4A<1xe|mOLKv#FS<49J+V6#PP zo>=`flmHFI_V#u$`vdORuk%g#ozXWp^iEpsQ*Ae}_QTGdJMZ4VuW|Wu3_a8KNRtTn z`h!~1e0=go?o&bJNV2}nX1{)XlRta5cC2VQl_amKDB1j>)Pk}?rJ|*|B<_L6mzTty zhX1a}M@~xAOwu~Y>POQUUiGwEzXZ!AVph$4>*h_<>KLkdZTur_k0rYzDU+@cRQR$F zB_+`xjm8540;XE+D+k{FwK@3cN+2^=>@pFzY0K4X*08t?kH=qJ8*K30+ekN6%C|U{ z^%qYNG9b>ZDX`bisC<4+=wW)#pIz_ACnq(q_5#NDwh7X{nhH#%$V`lGa+n=AE*RRp zX_Lcn;{iE2IkS=Gtl$P3j{s~ifod97+^mmWJ@o1m_XcUOq+l=jf?@R(1*PP{jJ8x)4WjO~%i z-z-Mgziy%@anh7wk_414f96aTK9n}t$gGyo{358(H&TFoX-(71OTLD#13Y!926_#K zZYjvQ4!?d}pjLBSYu!aPuX*n0C1~)GUhzzCC+Rsj8~Fc6zU|%&#AJUGwMe-B!~{h|pe7jnfaD!1P@KInnGk!4o%L9ISPeQ#_`%(>B5Jpw^j)vh9vf&v3$kavQd zUzfdhpXcsX`awsDl=w9_w{14&qFdz-24?1Zx3NO)XP2T)ADoqW&(UJ2efRWh$8e|M zl$@WL&6TpW5Y4k_Uv z`E1`#G0VS^oD7DYR;{7PQ1yYfTO+iFhlY{{>ykpuId8nFQmp2o9@P>Ks4Jl6O{~7Z zJQF@s#vf9bo?JFA9I9#Ce*Efs4PTM-VRf>dP6h|!=lHr~y4LJ;mQk~AQ<&@dhJ}b% zj*!x{Ry#r|&ZDEFE0f$9II;OIzmNK!y~mP#i`&Ir8NAf;n|J!$mDvDX5reo5eDXwB zsPrFHYLqZzZ@0mlk(d8d{z3a%gWLT?Z;(m&H9H$ro;C;YYs|PZ$V;}lG1a3*mEg@s zUS5>d^z^|l%f-dTWk)nVCgheAUZ#IHA|e9tFc1i~%Vjl+5hDY`3yF}mJg2$vXRq>~ z0R6OB^i`WyQIAQ-YyyD5A1Z2ckOPi zd6|0x_+RF0q8eA{ms4I_Jv}|+mQH|f3zGkZL3vt}bkM3YaSH>bN4?P1G43Xvjm?;v z^o~sw%8@lIuY2=-M)V?5HGo$S9y-J!6<7QZftzFk!~JU`1LZJki}G%KOXK^8yKv&g zet!^AfO7a07x~e;-JATdy|fCv;s4A(vUkRY7*=PR)i4HDMo1gYwA%Y4=~9+9eC-RbJUfot)$Ecr7Ck0!!xzH^K#Z7VcgCCn?Z`oGV#ggaO0qD)! zU*#ogrx`w~BNT^W)q{9bn!!-tWdKcAf%Y0=ipvCeApXh=1aVMwMiO(KB+-Tr7k_DI^g1yc|efjbwDP}p=ZKQYreY?1R|NfHHtOv(NA95R; zm<)CMOV@+4Bqk>d00t=fON`%HSX^8u*>QI(|76GVlJ=)hpMZga_MH7Y5*(uZ@r{{)A|PbG?Khw19GkSb2oGJv zgn<1bPPa3^f0ymU2OP)vq@>!@+1c0#wM{T6a4P%wvFgo@H9XY4N>5e5K6SG#d8v2* z`b+i137?A>FA^9LCh4ZNZkxcqNeM8I8bFzNf*bLQ3ec;7-;CV7ZDxyeQ+FRcsDI@$ z0nAP+E-qDX+W+3Yni^&46uct=_sDhlWvRorx2r3j9#xYpC9cNlFwiUOgqL3-f@ zw+>xN!Px7h&d$z@l~=I`sI*U)X(1sY75NB61S)`ax&CS@K>zs9pS(4q|MnG3JM1Fw z++lcMTFNgbre%=t@G@}C>eUHAS-P*BUjk4?VGmH%0HS-w#%vD7#O>R)YuCZYXT`7o zvh{Y1ii)CL-Z8qnm)`frnhl9pyFVD`hga7VQ6SY{rc>sRKmKUWwhBeg+PZDql?)-^ zK8yNf)zSwXg2q6MtSB`Qy5oUUaf;v-M!{=8(lnw^ttT;wyCZ5|t1>g%M(7W&exIbI zfnK(yDzYH9l&Ec|Ohwo+?KK;AY5+7Ln76RA>wnjK8XQAbFJ6E9!5*1!-@XCXXk*#e zB@cnzY!f(l{;~8!lXrLiz*4x*v|V#Vzybvhy`CRc2dv|!Uh8nrY4@173OjQ3L`|G> z11af$|Giyus#d-1%NH%6oF^h?eCh&!% z=P;#>=1$kUoeSzKbZgehZvRkYF0Gu@`>L{CYs@7r^4+_4idQo7wuG$Aecsd4LszH_ zg?*TbUiL6GguC}#;aRP*J=E{lBPz5ajI#ui(ih6FBvsbmwTKCJ+a0`17GL7Uwwu&3 ziuHXN@+0>EcsSC*2L_Vy{ulny#zebV)A;h`eNcx^MSpG5^ky3$AE%|IrD4xKH9$I6 zdH)B)_yJZwc|}DYhT;S)Np*E~AQZ>qVj1k_qXqJ~w!0TUsz^ayroHllAm6!f6&*kH zAH2XG{WbpneI^ra>^u!sy!=~kqdU*CECzxby^$fg>KH})eUainpTfocmr7jwmsA~b8^Z?ErD{v;UR=?(NMxBByo~;ZOo7eL(!-F z)Sw{}0_x@E#dvgC+sHjO!=!Q$bU*ds1Xe$CeAmV!A5n|4AQ}`-)$1Vwa{_&#a;Kp^ zN|BMm5q0t%5=INgq(b*Uj6l)=GEE^uOm(b6{?go#sCDZR@KtS^h|};n#ivJ954YOh z;3mNFiMV58u#f>Cm52`F*G7{;E%Pb{cmtvmP>A1WqIl zs;Qt(`bi`bqG1pq3h7F3@Tkl9f0^ z28Ww6%)dU9d(;AecorM*YeuD1(oy^GAJ6aKCoZmg^ypC@sRm@hDO4v5q&f5Y z!nd}$^o0Sy$LBi^Jx5lyXwAJ!i$TItiBpcK$8kkXzOaW$dm2V~F6C7mU_mYb{~oN< zHmXB1Fq#v_X;6aby^B}i@O!~%Sw+paw#sO-1_vE% zE6BkYyt{cBTZa#t0`o?8b^+eQ+eNIJYe&V1S?d2@{gNA3xrhKDZ? z#UJ=5K~LmOu+B|uBxxzqL{Q^#B|)?7Sc`aZWHm12+IkW);EXK>2wQh*HMoI*F%E)m zM;xwMoJzJPkwi47AcO{2BD#W#iaZl;bCU=)-;D^3Jbq&fs2w$6k6B%!CaG{=o*s=x zjPFAwfTo$>8>~0^W({Y5rSx(wbPH0;K~~S8<^*sP1!-=!F9Ns8llQ;@Rq4e^^@Kqc zEGZ&V8Gj4`X7B0kjol@CyMLlmS{o7<_SL4%o2U9BJjJ{CaWOJH#SeF_0m7~>7cNTX z^!Rlg0a^{>-1F^Q6hsZ(aJ7Xh*$rlhy(gj;!N@4quYR6F6Q<(eut{yaD%qBzSG!K) z>=g>#W`yc&pBWaq@*|Uca7bAO{ ziPyoDw5b!b->!LjZ2CWtu4Pse+4*AP`XkEFxEKR@_U@f{aSUq1qc`XK_YBZt*pos& z4YqNAdODWTG?+aVc+a@0)bFOwg=Ag~UnA zEs}8pI9J~fKmi*f@X@0vKoCF$6YaIuAHg}mhX}=>`0n1g*5>#U zIW1zEz}@Mj0KTA_)xEq_DqsxCU-tR4M#pRSEXN_O(2;8+&9MMZ)at(vToQ;NH}o`F z%l|ZIASi-pr}WJ1raGh0yv3}VW1w{Mi->4!-g8z3TY{U4&RWFv@xMG~ds)!nNwDwx zBIbDD@mYZR$MwlN(U40MvB970zu-f#EGm*Fz!Omo0*|$t0_zZ!cBjX$3skjJr*4nF znox3I_*sfF5GXaSFe&P*-kDHB@Jv`6haW$l0g5e$D#_2U;5I$13QB=v|M};inW*>F zYNGm1kF-DtN~*dbABokZ7JmGt@Kr@>CVY@%8L?HiGpSH*C-b>zQi2T1)QEk*V>f^_cn>cfT zQ^vsvKrB$v_ya!0;H^z<)2(^-5Jkm?78e%C@)M>2nw-qg3OG{6ySs!V_CIhMw2I&)p5C~DR z1~Ktv$)~&JNn`9LsUeaQO z4DwAO>Nleq2E@)~GqzkIS@iP*n<$_VVH2T;ZL~lo9uJZ>WrGZtEn!FG)1)Q3Ze4~B z3l0d{9hiTu_zBcf(gs{!=#v(=?ev16HieSdlFWI;HuC$Iuq5mgzN1HV4jeeZ$jqGG z+MJ2^;b#npL)Yn8i16sELK7#_zNhkm|d&nvXX zRuSUHYS##q_NE<7x22B5=yPz39GiqkiuY-HFQgjE<#k_XWkD|c?{m)B50liRkLV_MXROxcZRq@<-(^;&m zne0A4J%CFNHijKxZ#}(?rYsj2WhQAl%548JIa%BJ=0;tt0*k@5Hb;_$fU5z3Q^-nX zw^-Y&S*;+{2cl{{(nRK!3f9ncFE2_3)I2CzIlMMik=_J|A%|&R-nt^PnlM-WdI(PY zNL`-pkM`fju#(4dX~Bh%71ZY{Na@C6p;)%(U@=4WdN!J9zc3CTa-VYm@+wQW+`m23 zW6`yIJcb&OiMn2Hhoqk6I%Qryj*317j;9w4OG+|n7r>>0>K?$%euN9xCu-BK4|zzP zC^0Qcj}OWfflzphTQ#N2Az?q_mOFK7Fzi}8?~4lTMAEtF2m2yjC?bjAWC&VdJ$U(! zgrwD&M0im+>G+dA@%33dcVK^#{mDBCRsmy7pP8bIk0G2q1n8lj&e(Vd^JNj%srM{K zrr+M)l2=yF(a8b9B>meC&*ehWD*LVPnb+>K54$&k6anuQksrl+Q6X!dC=!Lea~pEfw}d*Pn%9rAvBx`Xp`! z96oWMOCtcyUoXvBY;|-S!QL25$!X^sKcWyU@N(@+7YLO`-}6`4Dw4n}NA9Loq!SwA z{|6^$TBX!{vWyE#aGUMV7Mr3braux*!3(oj-9{~6zf&St#$OJ_Le%-kdHi+`YGziT zP2-EG;-~k}Ez(hzoC*X5wp3pNzpy}syH#IesO$wX5v4)iU6G>CCVQLxJcxog;w5T` zv^ZdX_>uVK0Cr28$NUH@@^qUqC7uyI2=o`sb)?XkJ-bKU`{$UP&WrQjirw`kC9;Q1 zzG$Fi7$1B*2~n{hOY@@11n0%PxLkwNHb4c{l#%iJUJ)8+^LqBf6?aIh&z?OKap+f} zR)fx>6Ms>M6HE&XB&ztTHj;lvYqphM;dHYFEe8C^wAgEfyn;eTaz~C$1Y%VEvH@;v z3KjuY3ch2<3gp|qY?Tp00r(st-7(G?v6WwIpODa(=j-wXifmVS9V0bGk?Z4^FZGXh zpSIl7zU{rK$RPIB3*LJu0yuY`-uBm%oXfv_kqnIOEo#sZ3y~dJ*HGl?32b$ShBmr7 z*T!?wHkH4JVCopgeNLh1Wuj1cAXPum!9+fh!TgUGxNzst{yvueIPD%LnuMPxQ&#(DxIKOqFB=~y`Ksb7gT#DfmI$#B~zo&Rx2KE(}=W0Q%)E6{r;&-FXthHZr$ERn_2d&{}Lf>lfe#k z(RBMqAVCNj_av{$O-u_d+FXaB!A?ezq9L}5Zm&+J>7)8IqqP2hQ)E14^wc31q%Y{I zx4OEa6o^_iiwK^3Ap`hOOJsAP=h9hb#=HO72%Qv#R1ZnE?#sf7tHCG zUY=Ecc}adnF6N*fWda(5dkz8pkrqg>fX>Ao;@#lfKYrMTx?dY^ zyl}|uSJCof8hWmmGZcyH8ZolyQ{*t97W@1;abSqMPWEdWT%z`j8N*6v>uq=w37d30 z#EcyWYrldn$H9Wo>@GRoc!@df7^R`~;jX=82?!X5TY`XLnjNRqp^NVr%1f@?)$M?X zqoA~KB)dhRMfr&cb@%B9wKheI&yn-ZessPG9=W}NGZo_U07{8iKR1L)Hv_y!L=JUG(gN3EJvav(%2TXeh`EGz`ZnXBIMbB|NOGa z8ssQ{_B$ytdp2y?0M>Yl@Bma92Xt+<8$~I$2Dq_Du8ls0{7?~d1l$^oM-6NcXprB| zow}WgKFg{_Yp-&6Ah*FQXH_KFn)X6Bf^Knd_;>G)E|#Knnv!<= z>E5i|AQ1^;C`<19D=4OI?woGJ2Sm-P-=()kpWZ;W&$~XSn|juHvBmGYk-htiy;mk0 z6}{%!$b>FB7N7uyz@%vucVlk4#bzD*1l9tXmIje%3tHy{lz%8nOLYJa6Fb$ z4mU&%h9neT6CI;Ju6?0+jT5IH@%oUC(InileBfHRBoKB@U;~XbL&;mWZ}S1L9d2_7 zpj)|8aGvONHic8cVwR1O5FB-|A=Htp@sFs5*p+9I^K7C5EXQEM!iUXa`9PoJ1$jfh zqeUCG18La68gOwY;dQSW2=8EhN+{u@$SXrwxW=B_QxvNGED{-JL&n z6J$VI3Wyxi!NUn@W?WH3N+8`x4KPg(T@y;sO7G&e|E{+I`l+Bn>gI6)PDfQ?bpk zdI}o8U_<4eYwm7lWlh{0aXtNHi~ReB%`$azT(-2I-K7?9d{(1R7z~*dcWe?iBOTV6 z_bEm2VN4-Fhk!bX8emThluhfj?_t2n@K4NmvTM<8e_UCWVR zKauA4wYiVF9$45E`f9qg7sQ1b4_Qg1OiyI$ewiP(nhKv`gn_8_vg9lJ_+$WW7h6Ef zUg*;f0S;8P2X*C_r>tq0zsx{{)6ptV=PNI=%$~DM$vtJBclhFC4I**7B1I+-l1x3x#<)}EH8tvhu!1#Lce?ca;W*lw z_te7opSPk%LRP#f-!TbMTK7zD9clp;c}*P{Ys9($YKr@hH*0=_;fB-{q$fFl$?3mi zT6gUSF$h7Dy{t3Zlo3ZNA&g}4s1c-FfjqteGXQFk@U$V#gnKTzpzo$Py#pZ3V{TwC ziBBjauG38>bfbRIwb%L*`7V)!n<3^RPd=nEBe)y5t4qMm4k`{~h zf;n761kV{8Y3B!HA&3i_L~*Po7Wjv)qS=%#2kdBEq`VFxk*G*Ssm$&qoOF#NN=9V^`CDI4e3vR4m9D3=1h!kCuC(sT_;V6+yRLATnb`2n%eL=RLZ;h9PhmL$ zvKJVN+5ki2S8y}v9Q@j;rbv>jvlY*t)j-pWTsY}mpk;7tsX5G~v)G&TdWfZSeyqrd zw9`90i-?u;#RXY{ub>yEH}$oark5bQ|?zF&KT7GB;4}m+^f;~*T#gTrHj-! z4@2oBFq*g_kqs?i${@C2@YYCT2qArHWQaXVPtWx`u84R3y|HJ}d?aclU{+J$GI}z^ z--zyuG4BLu`?0ZC(I^0m@NL)GS4zf_>zf{KGL|YrF?reI?CRQVHLL|;l9mZ{i93oxHT5HjD?Sceg@p&}serfl}QTLPDoOkOTj(`@Uu#B1#?r-=vW72%Pf z-_)yDuR6^PRYlz(;9>Q;ZKeogf_(Gp`IpnWh<_5mn$c1lt*_OqR+)mx^GIbE=0kUr z!G3gwxJ`WT_)}o~RijN0@`G{7gFs2d@Qj62={L9~Z`X>=JcLbM6)dPHQ1SpbAQirN z3mgm{pTL~MMW^XfZ^~dghK1Nr2?%(3>2&Bg0+Ap<GynL-ezv2-3iWll!l4zJ%kSrKIX)Jcni?n9(F)V`Jk7m`ik^iG%5`}7afVYm;T0^-%AfWKM|>r z^4@M@AbA@M6Y6`_m8D`N&@_T1^k1`4j8C7u<^{9K0Q!`-QkQ>q``5j=P{Nq3nhMP( z5t)N{GGba^CSo(A`*X{BC52}S2#fp)Lk_?6)JX>fx+`$tr*tU@iv;k(OcMuR73>;k z(q7M*NBMnC#~S_)yqFknf{)2%!e_@##Xv+2IEf8V&sm5s)j+Jh@D>sXKq>>&0L)6f zp$iDRmpBiZEv}T)Qy(siDpUfvY;>$=eqMW*)iZ!~B9j|9>1{f`H1-@s9C6)S=YFGC z&_Vx~bWO{zUBIf&O`4JE5$*XbO0Ilwjjzt!e@L-Y8ieVZa6kXB1_4^t?Zp(~` z6t2MmF0uog?l#koXXt0B&d-cBklratL?qs@nao}CdqFGCPuTvAGM@w?fz*NroYJXP zRVoDbTQz4s3Uu@AQh55Z6UyX?goLI>)v63kv zVuH~F)&m!bP3@w~CbJ7uX0`EOHR0Y&tw)Rw5Ay|vCOQaG^w)V8|25o3?e2PikN7HJ z#ZN+Kk{59Sr^~IK(a6#NYT@W+nnt0+Vg_|(usZf0I)L$D>VbJ4koe#d%M_XB`BYh{ zj22U-gwN~vIb2xr)K7Lg7Fu|CDlt5u?@kCdf7+{yGv0@0dnJE-0IY)X$J>A{W zAx0iL!iAG+kB0(+f_MTxaYuhORkz;1{VqGRhT(=za?iT|V9@`F=^8RGf*O~A+<+V= ztlm8bCrB;o8ZloHEfL)6mUU=AfO>yEB8gg!>?ueb2V_B+cEK|#(|d}`b{DdJH5AB6 zu%!Vk!CY^MkweeNN1Mhx|DPHhjcrR$EKy^ z(X}&&nPhIVMtKUpganxNW6ho8AZsAO=;qo+rRwKB!<+cT#YdNde*T*mAipZkV|u7T z89lKE*$t90Y&Ne{A>HnKQGpSWtn+W^Fiur&Dw2r9xnfXa`!-0nDsn$!E=F$ZroIP2 z625j_?SL$t`2RO~YyaQR_WQ^%qlPAwP7vK8Zdg&m(c@G_krlD)IrCeQXafcyz!0C`}X()mp&ZHBhQPlHJRL~@d7bfW+_JC4=sjJOW+c*mgIkV zE+6ia6>%KYAb^?{h{;DX!L<9-{VI%(z;I=QVb8+1X$WtM<{HUWTR)%QPgn?sBwiGF zz->!{auV|(36MjHat09lk0};?S~UNl%!|U_OQbqwiJvFs42dB)aU%qaNNiWkYw@aB zi?C*0{RAZ`$Ou<;)*zRU+?b2z}dhUPHt7MM|@HimCC* zElKasLE4z)XNl6C3sdroIk#H1mQQ+3ocZbZ1Ci0|zf}v{{h=VUWEnH1^EwKg#+3AZyws}}`RQ&#o{wn)9Xp0RQ4E5o#H!iECA zC727bw$^fYcW)iSlODW~N*|uz>3@0+GyDFqE43p|3N*YGEa^rzJirPx^fIGRtA1&3 z!FOaAKa5)C2E`SlqiI<2tmfc|2;sDbq{aD}oaTCjPo92iam7cxRYqVVLsxu40@csY z&#s`Yx!_tFG;nhB2H-hjVwyhy2Q8_pnrdp#%F5(LMMUCXz0zO5em%kEq^W^sgax4B zxN9NtF7fg4(SCfvfvYt4U*7kC=+A`{Uyc#~GbmEBf^Z?+R4K6TDK$1oEc__p6BMk2 zlpp{6`5w~ugz^+z-djzY7jZQS5ZL>{HL;8}NdC!~Uflb`V1OBCEN z6ja$4z!qaqOLzO1ZvG`VQ}x%D^NRW`UZP|+V5GXSF&?GjL(jP-`txwqp{aAx?kx8j zoVWo~{YuKoiV>&M=wZi-iYZksjk#=DVUxEUf#0(XY!UPwXZ z;ClAq!-rh4xdm2M*4oC#?K2ZxV!1+IsopXaimAGSf`b0-8#nDCOl4(eat~kc-=4ZI za;Wq9MT$%)?SOvCh*QpNsG!yhvzk4>Wxa)oN=*X;GSf@|31Ylv{oz(P_CH_NeyL85 zdjrR1D3@+gNdIE-ezqSIB`MH<6JNcOh+jb5{I<8u4<9Oo^*|Rr2-wIU$LKmSH>|G8 zB1~|jmcR$AhWh%%+}v|;B-*~M3^SdYn#u>((7olYLiWeit1l5&n=~>S&Br>vNBQoo z#yDSEb93{}2sW9^q@~51*3dFw<85JKL8MS3spD3fH&{sS^nYb&)5D>DhD!YlW`~Bv z)^E0%d`W3(4G~L|aVItSpNrcWh#Wp_0XXdnXWcOl#$;y$O2PwN)c(4r{VLkpaRdaR z0MvnD(1t-w*LND)i>d<&ftGUINrKtOTWM8!lk&kGN*?gGG%3Dr3@m^*wnbsgZ(5X zW9th|-Sz#lq-bYvKLsSQ=ENIlZJP|&P~MP0|NB6wVkz@ykC%s!9cytg%6M2?Rkd+K ze1%LV>Ex<&n6;L=itR{R#gq|s9DPf%wgv$Shp~3a?~ZpvaL|hf<^wgcY50D>+stfa z+2~}lNx;Av4%)86hjTQW&?q}QBZ*d2Qo3!)JvCL6r9Ch6OW*yzm<5*AhyyfVmIvMnf=MmU(3HrrG3f}m2uG2Rt15DRy%xDO&t8#!CjxBtTT{L zN%kUP*y|vEY-;Y@=RGw|;@s7kVr@@+ja27~&Ikm|w0rF_J*8K``R7JM zJM;6!iRA~gi+|z7?YP1XI^JV2jz`jS;6--1cqwF&xyhPG@>Yu<^N& zC;^8ylXGHsYtQ((><+%O9!Y4xVNdMOpyUZBEoaU|IiO5;5-)^x?R(dX}vx!+&p*fVmTs@bL-?{-mp(`kV%yP^MAQg@==+mh|~O6E8?+1-`)?BX(%)2N*T+`#>Ql-dQV2-kuas+ z-rfW3G3#)`$@gS7?nU8sg_JS{wTlQ?L~e5|<+x^wh6fq-L^%x_=F4s&P##Ssm%{eQ zaZkv+fERPnzBn{qW0;+^{?PBJf`4zaaLir!QQhi|#7+vdG4SK*52d(6KU}T1jEG}3 zEdJd1?h`uvDF~EB*r@7nuH8(4&9i5JVk$G9NDi1qOHXRF#v^RR-KLWvEp6PFl$;Es zU!MpVFKE+I(`A6v#1}7AXd+0@#RqX8JG@}D2qDh_!E^)!*Q4yqi;Gm>k|_NDpN_vC zxNlc!Z2l3X58c0=M3maEPbfnDORJN%MB*m{syoptB-R?Jpu{h>+h1Z+W1rvQ_9`?V zp>6&tDk^FQA!-f^55Rpx!+--jacZ}OP*9Q6|uZI-5huaLZ31}^tYxgML@sJHYm~wA| zDxG&*<#Xf+Mq;=VpwvEZLE$Hz!@)swVo|QBs2~uXdw?J-+_<}U?`q&Sp<${F5UFKo z814$o3Wh@Bfmr*U(OmzU)nJ%}(L?lZY9^mT_$g#$WF*^%G>o9EG_U&R< zMMXdIxQ4A;w`PfdA=?+@ZnM{=TqJh7V~_I*2m}IGU$_tjK+Z#raG!n*!%EHf?NtLc zaTfhm6{-x0v6I3V9i6Oap zVc|L)w7*f;l7B^&)4;4*(ugf03;7K>eN{JjEy)1tiqE1A&1#Du=IfEL2)*{$OIUZE$+}K?BD+P1+Vy(=>2)sKSYc?o*ni zYe2>}S~MeW-=>G@I4Lnvo(NVD8%3OdbVjC{S46uakA)%Ugxf>c zg0@FIF+xC$AhR<`Zae<`=^G9phh(pnv11kygDOQXG3Z#B66V#;h;u4oVm~TiuX0)6 z#6UsEV(Rm=kDmcpC8nk-pwp_=eAr1#orkI$<$kM}d zodj>P8dTQ}A~B$z{2}FAx8JT&#eZuMitrRlkQEdP;WvH0hD!D{(Osb>nV~{GFS)e< z&j<-^>}NsKMnzx+p}d|=#0U1f`utje7e+y?QN}pCZD=a-*|QTj=-1P@u`A3ln+(gc zLTBMw#1k>MySU_ic)*cl-PX^Ai8(G5DqskEGJuQ*Q4PFkggc?jK5(sQK8!RDjTX9C zyxnVXo6y-ziitUi*kxi`@joTgm(M4A>cOz?Fxjt)ZAhM%V4b4}Vw7rbVUY!&rTbK! z_VM|7-}T6eusNz)Egig!?Fni08M0OaL?BZ=Rn`-fo_E^fcJTA zB&w@<`b6*Fqa2=$exfO^a1Q<4L;&F-7%nvZcS`z97hw#J^hYyU6YYr$3|(^anbe{s zSE6>~VJDvNCORBy6iNSWo1ktC9vWnd`88Lp5Wy8lWuGSxuSk70E{_BtIc&SD2yVTP zy>^eq65;m|0QXCsU-Nkj3yTE|W~A%nh&G4(oK2;dgGX~U5v`Dh2{Ive3^G)3T#^%A zMsHr~;&Y`iVj8)Y?}3bBaBKIt(AA@oGZgd6%;mzZ5!$F)s{D9yu8o^I|pNuqLV0Ic__1r?hK7Q z{{ov<9{WbgN%Qy1p9>hMeKw6`20g%FJznD8{*Qb6U(Xu&*CeXgDK7ktVtHSN{Am2= z$pbI`nM*zYuLltPYdrP;hYva`IIYfqMr@ma{c8){fe|oMBGdY13`u-q7W1k*a_n*5 zkrvofZ;M}b-! zFoGL|HNqne2L9R`erB=-2a;it;X30(k~0lcWE}e@Tnkaq@x-qinRtXtn3TINF`L3d z(rcI3V|zrGqc6Q&sK&-~UJpD0kAYE4OiX07w6L~*u*^mxr56uhDeko+Jw@0QRORGu z5djb=6WSG=h~$wK;4Gw0YU=4F!74}|I>-2G3Hfpk)&>nt%~%2s(Iz4_9>xsrfny!B z4{&ZN$SG@X@4%N(uH^c1Q3=>5CKNQNH53%?k&=ODYsxeG$`WrE9_KI#kNgmFWG!j& zpF6kR87pk^n_wa9<0ME_U_^gkTn#T3g#0#X*B6ZDD})$0J%;h^$-jcG!IfS9;scB9 zwhQ}aq~jhZv&~Qsy%MT;F={k=#d%uV4rRXVx|GqecIJmq{=3)-t=9O+eLyIVUC^I_wb6}`8w;VhEH?!+9RiH z)dV*>1ncOobI&}&{-EZsR5InNre|+IVMrA`Xd}xSt8wFXhMMTcU(L?U1`ob}Tb%wD z&|_t8-rQ|_q-$Xt-hG}2t@LH-9nJS|_nLAZ)Dd(0Z?#?fBhzggACWx{St84E%ON>D zR8A4YRw1YMl#-m9Sk6iZMw{az)kO1_h>Yi1QPwiYAe1qb0v*)J}(I@uUr2X7? z98Ov1*)cDZE!HP!aK7FDE(*9e_ip6($Nrva5l+R5Yqv*}UQxe3<^i3h26RXjdFB3F-Ts%Co z!KEHB;QlnxnPb z>9h$xdNPkInrE`7%t+$&hanf;?9h!1iO!RXOL?D1Ig!_E&;kj!l^3Oa3*8gy#gj0vts7ZH-QGfVq zWp4HJSE#~dr0o%1MFF7ofKf^l)(eM`h>y3u>UwSi^iVGC4UwE}s=>H~B1(^m1$3Q4 zD2M|mEp4_=i|^W(=TmnJ104@Vyr8KEyK@9xJR;MAdX5Q1{E+9b!l==D^gu`o1SFx@iPgcrfh-9jwywMmExKvqFN`8Gi{DwMKt z^dfRzut!1s+n_l=XVXmgw1r6aV>_)rLe^lIQq(r3_Tw!ttEudMSjS!W$$Z>C;e2r45>ct*sBcYlbLWa}U1h@%KbzXYcf9q|lGff{ zCsSl=%1}$IbJNNO?k4FpE1F7V=6{kqOVDF)SSGpo!#}9&@dX>Q5OEq@CxVm9U(W7L z#fr0?i4`{Vwt6c@WkD*Ayr}%ZGcIg+imDSh)4$CpiQ15m&zTTohm6jXtQ71@@{+qy zT8Mhc%O>3)Z8)bT{>|M7*7>Zr>@)4sIV%^uD3QR=h)4IJz4Jy5a>Khg82a9VekFZ%WCkqFSvQ9s_Db5|3NGoxSTQ8EUsP#VUvZzrQ!mQbX> z>EPorU!q8@ZC!fuI~n69MDsmxo7O(I#XybW25?3tofBun$fBwJYw*^eq|T8N!B1kX ziIM*Cv0m=AP7tz|Sh6Pkm_>J;8v3GSPd&$z+62FR@q~% ztJsx2ZA}zJ;!nIV_BH?O_5Eu4!4tp@v&>?qEpOT(-m;*cl2I9JWgo2tj|tW$8w16} z+GR=6l!#PZt#JsR+uq;1*6?k!V9g%{h{9=jjvneIFnp1;qV^ug&J$cYOF-rUGfzI5 zZ!TAlyXeL|t@yI?!ZgIjjsh3XDbCZV5&zQ0Lq~Q1yC}~~7KAj7^Q_Y!=b>EVz5R<_ zN9>V0CJAG1H+9I+4uk9G+`E2CRH*h9f8KGNG$sBFFicRC)!&4Nw4g@1&nlENS1s`@ zCm`xdPmvOwDf+7_qVz=IITC0~!E7Dr(!#erDuf0f4MQM6nb)leFg0_-Cv)>Ez&--w zaTvbZTg(b7TY>Nz_ou(0>zaQ``Bv4Ef%H@VEEpnXXSjhS6hu-vYPw>t_tC0_zS4}KYq@4Z;N@v?M|o_E@DGw?2bF(UfFoZ{TI`)KUn|( literal 24856 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 scL!(le--|~&=Tr)11<8SA^82Pe%13O6+8`7 Body /// Whether the sidebar is at the trailing position. var trailing = false + /// Whether the sidebar is visible. + var visible: Bool /// The sidebar content's id. let sidebarID = "sidebar" @@ -24,11 +26,17 @@ public struct OverlaySplitView: Widget { /// Initialize an overlay split view. /// - Parameters: + /// - visible: Whether the sidebar is visible. /// - sidebar: The sidebar content. /// - content: The main content. - public init(@ViewBuilder sidebar: @escaping () -> Body, @ViewBuilder content: @escaping () -> Body) { + public init( + visible: Bool = true, + @ViewBuilder sidebar: @escaping () -> Body, + @ViewBuilder content: @escaping () -> Body + ) { self.sidebar = sidebar self.content = content + self.visible = visible } /// The position of the sidebar. @@ -77,8 +85,14 @@ public struct OverlaySplitView: Widget { } /// Update the sidebar's position in the split view. + /// - Parameter splitView: The overlay split view. func updatePosition(_ splitView: Libadwaita.OverlaySplitView) { _ = splitView.position(trailing: trailing) + if visible { + splitView.showSidebar() + } else { + splitView.hideSidebar() + } } } diff --git a/Sources/Adwaita/View/Toggle.swift b/Sources/Adwaita/View/Toggle.swift index ac7571e..7713bbd 100644 --- a/Sources/Adwaita/View/Toggle.swift +++ b/Sources/Adwaita/View/Toggle.swift @@ -55,6 +55,9 @@ public struct Toggle: Widget { public func container(modifiers: [(View) -> View]) -> ViewStorage { let toggle: Libadwaita.ToggleButton = .init(label ?? "") updateState(toggle: toggle) + toggle.handler { + self.isOn.toggle() + } return .init(toggle) } diff --git a/Tests/Demo.swift b/Tests/Demo.swift index 57958c0..1e0de86 100644 --- a/Tests/Demo.swift +++ b/Tests/Demo.swift @@ -57,11 +57,12 @@ struct Demo: App { @State private var selection: Page = .welcome @State private var toast: Signal = .init() + @State private var sidebarVisible = true var window: GTUIApplicationWindow var app: GTUIApp! var view: Body { - NavigationSplitView { + OverlaySplitView(visible: sidebarVisible) { ScrollView { List(Page.allCases, selection: $selection) { element in Text(element.label) @@ -72,21 +73,7 @@ struct Demo: App { } .topToolbar { HeaderBar.end { - Menu(icon: .default(icon: .openMenu), app: app, window: window) { - MenuButton("New Window", window: false) { - app.addWindow("main") - } - .keyboardShortcut("n".ctrl()) - MenuButton("Close Window") { - window.close() - } - .keyboardShortcut("w".ctrl()) - MenuSection { - MenuButton("About") { app.addWindow("about", parent: window) } - MenuButton("Quit", window: false) { app.quit() } - .keyboardShortcut("q".ctrl()) - } - } + menu } } .navigationTitle("Demo") @@ -95,16 +82,52 @@ struct Demo: App { selection.label, icon: selection.icon, description: selection.description - ) { - selection.view(app: app, window: window, toast: toast) - } + ) { selection.view(app: app, window: window, toast: toast) } .topToolbar { - HeaderBar.empty() + HeaderBar { + Toggle(icon: .default(icon: .sidebarShow), isOn: $sidebarVisible) + } end: { + if sidebarVisible { + Text("") + .transition(.crossfade) + } else { + menu + .transition(.crossfade) + } + } + .headerBarTitle { + if sidebarVisible { + Text("") + .transition(.crossfade) + } else { + Text("Swift Adwaita Demo") + .style("heading") + .transition(.crossfade) + } + } } .toast("This is a toast!", signal: toast) } } + var menu: View { + Menu(icon: .default(icon: .openMenu), app: app, window: window) { + MenuButton("New Window", window: false) { + app.addWindow("main") + } + .keyboardShortcut("n".ctrl()) + MenuButton("Close Window") { + window.close() + } + .keyboardShortcut("w".ctrl()) + MenuSection { + MenuButton("About") { app.addWindow("about", parent: window) } + MenuButton("Quit", window: false) { app.quit() } + .keyboardShortcut("q".ctrl()) + } + } + } + } }