diff --git a/sveltejs/public/build/bundle.js b/sveltejs/public/build/bundle.js index cecd5d94d1a117891778ff9a5cfcbc6634c4108f..6af82f77ce69a6f9fc2858cf348000869371da8f 100644 Binary files a/sveltejs/public/build/bundle.js and b/sveltejs/public/build/bundle.js differ diff --git a/sveltejs/public/build/bundle.js.map b/sveltejs/public/build/bundle.js.map index a012e1af66e538537ad02c48022de757983f9f89..884c12113d3c1018ac865a155f7cc3f08e8f14f4 100644 Binary files a/sveltejs/public/build/bundle.js.map and b/sveltejs/public/build/bundle.js.map differ diff --git a/sveltejs/src/InstallListProcessor.js b/sveltejs/src/InstallListProcessor.js index 67025be165cf151ca9e1ccab804c04f2a5947e17..3a8cc026c25da209fc699b6c0e1ad1f011b88a1c 100644 --- a/sveltejs/src/InstallListProcessor.js +++ b/sveltejs/src/InstallListProcessor.js @@ -4,8 +4,6 @@ import { BASE_URL, CURRENT_PATH } from './constants'; const { Drupal } = window; -export const updated = writable(0); - // Store for the install list. export const installList = writable([]); diff --git a/sveltejs/src/ProcessInstallListButton.svelte b/sveltejs/src/ProcessInstallListButton.svelte index 74b85d3ec354ac4c9750cc2cecca7326cfe3cdc6..c0c7564815ca70ff3b871a0144e90fd40764c81a 100644 --- a/sveltejs/src/ProcessInstallListButton.svelte +++ b/sveltejs/src/ProcessInstallListButton.svelte @@ -2,7 +2,6 @@ import { processInstallList, installList, - updated, clearInstallList, } from './InstallListProcessor'; import Loading from './Loading.svelte'; @@ -23,15 +22,12 @@ loading = true; await processInstallList(); loading = false; - $updated = new Date().getTime(); }; function clearSelection() { projectsToDownloadAndActivate = []; projectsToActivate = []; clearInstallList(); - - $updated = new Date().getTime(); } $: { // @see css/pb.css diff --git a/sveltejs/src/Project/ActionButton.svelte b/sveltejs/src/Project/ActionButton.svelte index 26c5b4c34ae23cb0aa4ddcd36cb75b3c57e5de64..01f7429a56b605126b2ba50ebda983e69d2f4d16 100644 --- a/sveltejs/src/Project/ActionButton.svelte +++ b/sveltejs/src/Project/ActionButton.svelte @@ -10,7 +10,6 @@ addToInstallList, installList, removeFromInstallList, - updated, } from '../InstallListProcessor'; // eslint-disable-next-line import/no-mutable-exports,import/prefer-default-export @@ -22,18 +21,14 @@ $: isInInstallList = $installList.some((item) => item.id === project.id); // If MAX_SELECTIONS is null (no limit), then the install list is never full. - const InstallListFull = $installList.length === MAX_SELECTIONS; - - let loading = false; + $: InstallListFull = $installList.length === MAX_SELECTIONS; function handleAddToInstallListClick(singleProject) { addToInstallList(singleProject); - $updated = new Date().getTime(); } function handleRemoveFromInstallList(projectId) { removeFromInstallList(projectId); - $updated = new Date().getTime(); } const onClick = async () => { @@ -45,10 +40,7 @@ } } else { handleAddToInstallListClick(project); - loading = true; await processInstallList(); - loading = false; - $updated = new Date().getTime(); } }; </script> diff --git a/sveltejs/src/ProjectBrowser.svelte b/sveltejs/src/ProjectBrowser.svelte index d126cd6d1985e9dc93b719ab5050e71a4c42eb4d..3a0ccc9d335e0aeae1c5b66173bdea330e52416d 100644 --- a/sveltejs/src/ProjectBrowser.svelte +++ b/sveltejs/src/ProjectBrowser.svelte @@ -6,7 +6,7 @@ import Pagination from './Pagination.svelte'; import Project from './Project/Project.svelte'; import { numberFormatter } from './util'; - import { updated, installList } from './InstallListProcessor'; + import { installList } from './InstallListProcessor'; import MediaQuery from './MediaQuery.svelte'; import { FULL_MODULE_PATH, MAX_SELECTIONS } from './constants'; import QueryManager from './QueryManager'; @@ -247,11 +247,9 @@ {/if} </div> </div> - {#key $updated} - {#each rows as row (row.id)} - <Project {toggleView} project={row} /> - {/each} - {/key} + {#each rows as row (row.id)} + <Project {toggleView} project={row} /> + {/each} <div slot="bottom"> <Pagination page={$page} diff --git a/tests/src/FunctionalJavascript/ProjectBrowserInstallerUiTest.php b/tests/src/FunctionalJavascript/ProjectBrowserInstallerUiTest.php index f5afc262a60a8d2d2aa0d32e1458d3bc3d710415..cf5fc99e2afe776c38d40571da883ac9961873d5 100644 --- a/tests/src/FunctionalJavascript/ProjectBrowserInstallerUiTest.php +++ b/tests/src/FunctionalJavascript/ProjectBrowserInstallerUiTest.php @@ -267,20 +267,21 @@ class ProjectBrowserInstallerUiTest extends WebDriverTestBase { $cream_cheese = $this->waitForProject('Cream cheese on a bagel'); $cream_cheese->pressButton('Select Cream cheese on a bagel'); - $was_selected = $cream_cheese->waitFor(10, fn ($card) => $card->hasButton('Deselect Cream cheese on a bagel')); - $this->assertTrue($was_selected); + $this->assertTrue( + $cream_cheese->waitFor(10, fn ($card) => $card->hasButton('Deselect Cream cheese on a bagel')) + ); - $dancing_queen_button = $page->find('css', '#project-browser .pb-layout__main ul > li:nth-child(3) button'); + $dancing_queen_button = $this->waitForProject('Dancing Queen') + ->findButton('Select'); $this->assertFalse($dancing_queen_button?->hasAttribute('disabled')); $this->assertNotEmpty($assert_session->waitForButton('Install selected projects')); $kangaroo = $this->waitForProject('Kangaroo'); $kangaroo->pressButton('Select Kangaroo'); - $was_deselected = $kangaroo->waitFor(10, fn ($card) => $card->hasButton('Deselect Kangaroo')); - $this->assertTrue($was_deselected); + $this->assertTrue($kangaroo->waitFor(10, fn ($card) => $card->hasButton('Deselect Kangaroo'))); // Select button gets disabled on reaching maximum limit. - $assert_session->elementAttributeExists('css', '#project-browser .pb-layout__main ul > li:nth-child(3) button.pb__action_button', 'disabled'); + $this->assertTrue($dancing_queen_button->hasAttribute('disabled')); $this->assertNotEmpty($assert_session->waitForButton('Install selected projects')); $page->pressButton('Install selected projects');