From 86e6517c38e5a02efea3939c3742c87196c9d002 Mon Sep 17 00:00:00 2001 From: utkarsh_33 <60460-Utkarsh_33@users.noreply.drupalcode.org> Date: Wed, 4 Dec 2024 19:52:23 +0000 Subject: [PATCH] Issue #3489126: Select/Deselect button is not working in modal --- sveltejs/public/build/bundle.js | Bin 304378 -> 304444 bytes sveltejs/public/build/bundle.js.map | Bin 280128 -> 279762 bytes sveltejs/src/Project/ActionButton.svelte | 15 +--------- .../ProjectBrowserInstallerUiTest.php | 26 +++++++++++++++++- 4 files changed, 26 insertions(+), 15 deletions(-) diff --git a/sveltejs/public/build/bundle.js b/sveltejs/public/build/bundle.js index 08bcd87ef70d068fa8e73b51baafb1ff1492ccc7..024bf65d8dcfc1cefab156f1f3b117713b64e755 100644 GIT binary patch delta 825 zcmaKqO=uHA6vvsj8`~sUA!*SX+fJHLlNg(i-Ly$C#e-7NQYo#V#3iKZMiZO1X||=% zfCY<+pluS!^CI4Y*HmFHJ@g`I1uuFLp?DD?UOb72qPv<8k>bF>%zqy5KkxV6w-=`E zUDMh+c?yq5+XNvjdYu&Ge!h>r8ifzQ`@LciC(4|e?Vf}01Oy*@J_gG?1O#?^0;F~# zpx445XU{If9I@H6OY)LDmdYt^YL6$B)UrGkpLWxQ#rd?HP+T55j3ZG99d>wJtyon~ zC@WFF6ve8YH~07?i4F|V|Ah3bA%nU3jI8EKF3lzC83K}%=JPZepUufgCLxW7qR_?` zC*cdxjt5cNBL;TkBJ}Yjh%^T$Ff|QZMxmY{D7nkmz|Srvpg{CZ6|H5?t+5DcEY_KO z6*2?@BI~*eXSgP$3SQ{rjI852d?mU-DD3m1b)4&Ajtt!8b%CL<Ptb%;_A(2T1jHfj z2irz}-F&!i-mPfnO?6-MwCD{7opjZfN>WFQWV8kSH^Tj2{*ZH|6glIhkrApL22(RM z5{WcArCyzNmZgO^-S~c)Gh*io+{br0(4#E@0k*dSMFKG&)@DHbmyS*xuGinip5(#K z=|o>cKvgi~$4xlGj;+BD06}Dyo8U2Y%*qOF{kc@F*>L9*XC)!La}TbR9@I|hn-hlB z*IaLV<BFupdGOH|Il$5zkX75g0Txaz1AlHpzh>sb^93;AP9AzOQ~;AYxnl)*i)SD5 l=D)I@EJCcqZJ_GX>$Ta63HbRIIeNQN1a)()Qsk#hzW`!j1*HH0 delta 768 zcmZvZUr5tY6vw&W-w(H0p}9&C$r~1IS<cPh=3M@y=)p7zS4PPkHn*SoQ@7Rj+fXbp zvU<~P1c&}W54~h>L2+MtC?e<&^%6bw)LZz_L()S~1l^gds4m<;=bm%V`F!tr_@eIX z^Sb#3b{}_oZCW6twYxd3hL!E&RWCk3^|t#oA^K4RXqtF7fV_%8K<p1AYKPw^ZVlrq zqXJhp(e<O~+H7XSIU{Ezc6)f-nu&O$#9EZCEJ5rTCaER@n>aUu)+)8r8w%2?8*ov* zM|INs8KmiW9A4(5=q$R$lQ@b@8hhuUl_~t<NFJ+<-kwmLqIen|${HKV+XXQ&g<U|W zPh^w0D*?Mia|V-4^><Z@JjkL%BeSqGzZkUel+m8KvO$G@aO%lp;~zzu{T-p8o6ohF z<GdosbtaRZG~!m9nQ+sA+i0ejGboULNwG1FWJ*n3n?;G)*OhDk&5S_1IC&o33j7+$ zLo3;eXb|t_@f|j;Go-nBH?<wYHu3o)wp7#WH%b!)7qNp1)2d3*MGUhbUHGW9P~@Ic zPlHRSih4Z!;DiyM;u1H;*EuCPH&fi2F!<SWN2<9Tj`3V7Zkg%SKeGA~Qt!_g$FyNd ze_v{?leBE9I!ztMhOq%NYeja(WP-dg6dQ~Fe&KNZisw3y=Q0^1W&IuAmQ5!OmuVSE zuJ`crF8`A2x?Vx<OHdeaHo0ByebwtM8N<qD%D5GrN42a$j4ok<(YFEu^re7WGM3~L oE}~KO$@=s-i4ZLpanoMu9>q!+rB9bx<CT>X<W$5;Ngb;D0Scq@7ytkO diff --git a/sveltejs/public/build/bundle.js.map b/sveltejs/public/build/bundle.js.map index c9b60ffe29b7b248709e9822d2c5300b005a9f48..2fd8c782c248d56ff9c537d671880ceaa88c0c26 100644 GIT binary patch delta 363 zcmX@mBY3G(uwe_M_qpW@&oeTcYp4{Krk1AqWEPi1t0X3uWR|6dBqqfwsHrJnm(eTE z&rQ{sZhxLpmRm0~MN?CurbZzxar&yOj7rl_US<?&e{qR%`-@9V9{ZW{owplJVxG;! zTI%AMQZW6$G_x2_x|5@$vyQu?W2lbvbVE~SVV+!|h$BQKcY3@8i`?|nJDIuILcyZb z85c84uzET=mO4+*O=FgyejtgtfH~FFZTiMz%p%k82{5y5-!PTglzn=F5HkyNm5cxM z3GbPuSgbuAJ-18FV^(2|^mI(lch+$R8RrWkfQEss1G79qTyGHJ2~y&$<Lc<>s^bk3 z^LKRgM-l@WU~S;!=xpeslMQrow$t>0gG?gRW9KukW4E^UboR`0-LANZS(tIV@<L|W Fr2x@yayI|~ delta 656 zcmZ`!Pixdb6epQ=1yQirmFlGrshCJ;Q4p#j!pn47hE*i&mW6f&v%6E8uFckLVud1l z6TyQ$$RJwLi?=-pLXP?g7U~yJzkpPadeE69?Ll!4kN4jE{=H9+Cq6!zc=%qckC*1= zfUfdxAA%L|VIvx>@oo&k5P}fmRStI&p73@Eu#$w`I2eTT&r`deQGi*`ge`>txXl%n zg&9DMsqQ?GvPL(FA|A%qf?>Qo<4cvhyy<st9?%r^fCdiy2R}O;taBrGQWO9qi21q+ z&Q(y&Y|sP8arTd3J*ypx&&yg_{Ost*&g8`VreWH78}T@a)ICLDTfmw&DZY%ga=J9u zzUz~JpDG>9N26UW9qsB{AM{`$J-<y}=;grz_9802{vef-k4T00i%ba*NJZ>z6IVQ? zrTHVsJ5~)5EhgR^Cnr+<8M$=$Pz&Sg4e|ROIX!LL4C_scDojHa57AR2RbxZkx>7oM zN_9%6X4Mhv8Q8Y3BaOu7*%J5+=>@m2Q4%f0RxYuKxR`5K<%hJQ_gsq=UWMep=xR=p zI3_zPk9@vErq5+5vY@Ki^7+UvyIIbRAvX+bY5OIa(T;Aq$QxGQMeMs`V^6P$Z#!f} N7;UDnUy+M%{{R{k&yoND diff --git a/sveltejs/src/Project/ActionButton.svelte b/sveltejs/src/Project/ActionButton.svelte index e858a4846..c9899c2a3 100644 --- a/sveltejs/src/Project/ActionButton.svelte +++ b/sveltejs/src/Project/ActionButton.svelte @@ -16,19 +16,6 @@ const { Drupal } = window; - // Check if a project is in the queue - function isQueued(projectId) { - let isInQueue = false; - queueList.subscribe((currentList) => { - if (currentList[$activeTab]) { - isInQueue = currentList[$activeTab].some( - (item) => item.id === projectId, - ); - } - })(); - return isInQueue; - } - function handleAddToQueueClick(singleProject) { addToQueue($activeTab, singleProject); $updated = new Date().getTime(); @@ -50,7 +37,7 @@ {:else} <span> {#if PACKAGE_MANAGER.available && PACKAGE_MANAGER.errors.length === 0} - {#if isQueued(project.id)} + {#if ($queueList[$activeTab] && $queueList[$activeTab].some((item) => item.id === project.id)) || false} <ProjectButtonBase click={() => handleDequeueClick(project.id)}> {Drupal.t('Deselect')}<span class="visually-hidden" >{project.title}</span diff --git a/tests/src/FunctionalJavascript/ProjectBrowserInstallerUiTest.php b/tests/src/FunctionalJavascript/ProjectBrowserInstallerUiTest.php index 0ff3409d7..0138d6133 100644 --- a/tests/src/FunctionalJavascript/ProjectBrowserInstallerUiTest.php +++ b/tests/src/FunctionalJavascript/ProjectBrowserInstallerUiTest.php @@ -8,10 +8,10 @@ use Behat\Mink\Element\NodeElement; use Drupal\Core\Recipe\Recipe; use Drupal\Core\State\StateInterface; use Drupal\FunctionalJavascriptTests\WebDriverTestBase; -use Drupal\Tests\project_browser\Traits\PackageManagerFixtureUtilityTrait; use Drupal\project_browser\EnabledSourceHandler; use Drupal\project_browser\InstallState; use Drupal\system\SystemManager; +use Drupal\Tests\project_browser\Traits\PackageManagerFixtureUtilityTrait; /** * Provides tests for the Project Browser Installer UI. @@ -445,4 +445,28 @@ class ProjectBrowserInstallerUiTest extends WebDriverTestBase { ); } + /** + * Tests the "Select/Deselect" button functionality in modal. + */ + public function testSelectDeselectToggleInModal(): void { + $assert_session = $this->assertSession(); + $this->drupalGet('admin/modules/browse'); + $this->svelteInitHelper('text', 'Cream cheese on a bagel'); + $assert_session->waitForButton('Helvetica')?->click(); + // Click select button in modal. + $assert_session->elementExists('css', '.pb-detail-modal__sidebar_element button.project__action_button')->click(); + + $this->assertSame('Deselect Helvetica', + $assert_session->elementExists('css', '.pb-detail-modal__sidebar_element button.project__action_button')->getText()); + + // Close the modal. + $assert_session->waitForButton('Close')?->click(); + $assert_session->elementNotExists('xpath', '//span[contains(@class, "ui-dialog-title") and text()="Helvetica"]'); + $select_button = $assert_session->waitForElementVisible('css', "#project-browser .pb-layout__main ul > li:nth-child(7) button.project__action_button"); + $this->assertNotEmpty($select_button); + // Asserts that the project is selected. + $was_selected = $select_button->waitFor(10, fn ($button) => $button->getText() === 'Deselect Helvetica'); + $this->assertTrue($was_selected); + } + } -- GitLab