diff --git a/src/lib/components/imagePreview.svelte b/src/lib/components/imagePreview.svelte index 1c5f3cfdf8..e377b07390 100644 --- a/src/lib/components/imagePreview.svelte +++ b/src/lib/components/imagePreview.svelte @@ -12,6 +12,8 @@ style="inline-size: 100%; block-size: 100%;" target="_blank" rel="noopener noreferrer" + on:click|stopPropagation + on:mousedown|stopPropagation aria-label="open file in new window">
diff --git a/src/lib/elements/forms/helper.svelte b/src/lib/elements/forms/helper.svelte index 99e580c8d8..76ac8cab5c 100644 --- a/src/lib/elements/forms/helper.svelte +++ b/src/lib/elements/forms/helper.svelte @@ -5,7 +5,7 @@

import { SearchQuery, ViewSelector } from '$lib/components'; - import { FiltersBottomSheet, ParsedTagList, queryParamToMap } from '$lib/components/filters'; + import { + FiltersBottomSheet, + ParsedTagList, + queryParamToMap, + Filters + } from '$lib/components/filters'; import QuickFilters from '$lib/components/filters/quickFilters.svelte'; import Button from '$lib/elements/forms/button.svelte'; import { View } from '$lib/helpers/load'; @@ -23,6 +28,7 @@ hasSearch = false, searchPlaceholder = 'Search by ID', hasFilters = false, + hasCustomFiltersOnly = false, analyticsSource = '', children }: { @@ -33,6 +39,7 @@ hasSearch?: boolean; searchPlaceholder?: string; hasFilters?: boolean; + hasCustomFiltersOnly?: boolean; analyticsSource?: string; children?: Snippet; } = $props(); @@ -109,7 +116,11 @@ {#if hasFilters && $columns?.length} - + {#if hasCustomFiltersOnly} + + {:else} + + {/if} {/if} {#if hasDisplaySettings} diff --git a/src/routes/(console)/project-[region]-[project]/messaging/createMessageDropdown.svelte b/src/routes/(console)/project-[region]-[project]/messaging/createMessageDropdown.svelte index e91f92669d..49e018a16f 100644 --- a/src/routes/(console)/project-[region]-[project]/messaging/createMessageDropdown.svelte +++ b/src/routes/(console)/project-[region]-[project]/messaging/createMessageDropdown.svelte @@ -7,7 +7,7 @@ import { page } from '$app/state'; - + @@ -115,14 +115,11 @@ {:else if $hasPageQueries} {:else if data.search} - -

- Sorry, we couldn't find '{data.search}' -

There are no subscribers that match your search.

-
+ {:else} @@ -141,7 +138,7 @@ on:update={addTargets}> - Add subscribers to this topic by selecting the targets for directing messages.{' '} + Create subscribers for this topic by selecting the targets for directing messages.{' '} diff --git a/src/routes/(console)/project-[region]-[project]/messaging/topicsModal.svelte b/src/routes/(console)/project-[region]-[project]/messaging/topicsModal.svelte index 38e2d5f28c..6c23ef4ca9 100644 --- a/src/routes/(console)/project-[region]-[project]/messaging/topicsModal.svelte +++ b/src/routes/(console)/project-[region]-[project]/messaging/topicsModal.svelte @@ -16,29 +16,19 @@ import { getProviderText } from './helper'; import { page } from '$app/state'; - let { - providerType, - show = $bindable(), - topicsById = $bindable(), - title = 'Select topics' - } = $props<{ - providerType: MessagingProviderType; - show: boolean; - topicsById: Record; - title?: string; - }>(); + export let providerType: MessagingProviderType; + export let show: boolean; + export let topicsById: Record; + export let title: string = 'Select topics'; const dispatch = createEventDispatcher(); - let search = $state(''); - let offset = $state(0); - let totalResults = $state(0); - let topicResultsById = $state>({}); - let selected = $state>({}); - let emptyTopicsExists = $state(false); - - let previousSearch = $state(''); - let wasOpen = $state(false); + let search = ''; + let offset = 0; + let totalResults = 0; + let topicResultsById: Record = {}; + let selected: Record = {}; + let emptyTopicsExists = false; function getTopicTotal(topic: Models.Topic): number { switch (providerType) { @@ -96,44 +86,38 @@ } function onTopicSelection(event: CustomEvent, topic: Models.Topic) { + const updatedSelected = { ...selected }; + if (event.detail) { - selected = { - ...selected, - [topic.$id]: topic - }; + updatedSelected[topic.$id] = topic; } else { - const { [topic.$id]: _, ...rest } = selected; - selected = rest; + delete updatedSelected[topic.$id]; } - } - $effect(() => { - if (search !== previousSearch) { - previousSearch = search; - offset = 0; - } - }); + selected = updatedSelected; + } - $effect(() => { - if (!show) return; - offset ?? null; - search ?? null; + $: if (show) { request(); - }); - - $effect(() => { - if (show && !wasOpen) { - selected = topicsById; - } - wasOpen = show; - }); + } + $: if (offset !== null) { + request(); + } + $: if (search !== null) { + offset = 0; + request(); + } - let selectedSize = $derived(Object.keys(selected).length); - let hasSelection = $derived(selectedSize > 0); + $: selectedSize = Object.keys(selected).length; + $: hasSelection = selectedSize > 0; - let topicSelectionStates = $derived( - Object.fromEntries(Object.keys(topicResultsById).map((id) => [id, !!selected[id]])) + $: topicSelectionStates = Object.fromEntries( + Object.keys(topicResultsById).map((id) => [id, !!selected[id]]) ); + + $: if (show) { + selected = topicsById; + } @@ -185,7 +169,7 @@