Merge branch 'master' into feature/translation

This commit is contained in:
Stela Augustinova
2025-11-05 11:56:51 +01:00
65 changed files with 1043 additions and 205 deletions

View File

@@ -1,14 +1,17 @@
<script lang="ts">
import JsonUiContentRenderer from '../jsonui/JsonUiContentRenderer.svelte';
import { promoWidgetPreview } from '../stores';
import { usePromoWidget } from '../utility/metadataLoaders';
import WidgetsInnerContainer from './WidgetsInnerContainer.svelte';
const promoWidget = usePromoWidget({});
$: promoWidgetData = $promoWidgetPreview || $promoWidget;
</script>
<WidgetsInnerContainer>
{#if $promoWidget?.state == 'data'}
<JsonUiContentRenderer blocks={$promoWidget?.blocks} />
{#if promoWidgetData?.state == 'data'}
<JsonUiContentRenderer blocks={promoWidgetData?.blocks} passProps={{ validTo: promoWidgetData?.validTo }} />
{/if}
</WidgetsInnerContainer>

View File

@@ -27,6 +27,7 @@
import { useConnectionColor } from '../utility/useConnectionColor';
import { apiCall } from '../utility/api';
import { statusBarTabInfo } from '../utility/statusBarStore';
import { isProApp } from '../utility/proTools';
$: databaseName = $currentDatabase && $currentDatabase.name;
$: connection = $currentDatabase && $currentDatabase.connection;
@@ -155,7 +156,7 @@
</div>
</div>
{/if}
{#if $currentArchive && $currentArchive != 'default'}
{#if isProApp() && $currentArchive && $currentArchive != 'default'}
<div
class="item flex clickable"
title="Current archive"

View File

@@ -11,6 +11,7 @@
import PublicCloudWidget from './PublicCloudWidget.svelte';
import PrivateCloudWidget from './PrivateCloudWidget.svelte';
import hasPermission from '../utility/hasPermission';
import { isProApp } from '../utility/proTools';
</script>
{#if hasPermission('widgets/database')}
@@ -22,7 +23,7 @@
{#if $visibleSelectedWidget == 'history' && hasPermission('widgets/history')}
<HistoryWidget />
{/if}
{#if $visibleSelectedWidget == 'archive' && hasPermission('widgets/archive')}
{#if $visibleSelectedWidget == 'archive' && hasPermission('widgets/archive') && isProApp()}
<ArchiveWidget />
{/if}
{#if $visibleSelectedWidget == 'plugins' && hasPermission('widgets/plugins')}

View File

@@ -11,6 +11,7 @@
getCurrentConfig,
cloudSigninTokenHolder,
seenPremiumPromoWidget,
promoWidgetPreview,
} from '../stores';
import mainMenuDefinition from '../../../../app/src/mainMenuDefinition';
import hasPermission from '../utility/hasPermission';
@@ -60,7 +61,7 @@
name: 'history',
title: 'Query history & Closed tabs',
},
{
isProApp() && {
icon: 'icon archive',
name: 'archive',
title: 'Archive (saved tabular data)',
@@ -167,6 +168,8 @@
openWebLink(url, true);
}
}
$: promoWidgetData = $promoWidgetPreview || $promoWidget;
</script>
<div class="main">
@@ -177,7 +180,7 @@
{/if}
{#each widgets
.filter(x => x && hasPermission(`widgets/${x.name}`))
.filter(x => !x.isPremiumPromo || (!isProApp() && $promoWidget?.state == 'data'))
.filter(x => !x.isPremiumPromo || (!isProApp() && promoWidgetData?.state == 'data'))
// .filter(x => !x.isPremiumOnly || isProApp())
.filter(x => x.name != 'cloud-private' || $cloudSigninTokenHolder) as item}
<div
@@ -186,10 +189,18 @@
data-testid={`WidgetIconPanel_${item.name}`}
on:click={() => handleChangeWidget(item.name)}
>
<FontIcon icon={item.icon} title={item.title} />
{#if item.isPremiumPromo && promoWidgetData?.isColoredIcon}
<FontIcon
icon={item.icon}
title={item.title}
colorClass="premium-background-gradient widget-icon-panel-rounded"
/>
{:else}
<FontIcon icon={item.icon} title={item.title} />
{/if}
{#if item.isPremiumPromo}
<div class="premium-promo">Premium</div>
{#if $promoWidget?.identifier != $seenPremiumPromoWidget}
{#if promoWidgetData?.identifier != $seenPremiumPromoWidget}
<div class="premium-promo-not-seen">•</div>
{/if}
{/if}
@@ -281,4 +292,9 @@
top: -5px;
right: 5px;
}
:global(.widget-icon-panel-rounded) {
border-top-left-radius: 10px;
border-top-right-radius: 10px;
}
</style>