refactor(editor): Extract banners into features/shared (no-changelog) (#20964)

This commit is contained in:
Alex Grozav 2025-10-22 11:02:41 +03:00 committed by GitHub
parent dd6145879f
commit 86d291233f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
16 changed files with 29 additions and 26 deletions

View File

@ -3,7 +3,7 @@ import '@/polyfills';
import AssistantsHub from '@/features/ai/assistant/components/AssistantsHub.vue';
import AskAssistantFloatingButton from '@/features/ai/assistant/components/Chat/AskAssistantFloatingButton.vue';
import BannerStack from '@/components/banners/BannerStack.vue';
import BannerStack from '@/features/shared/banners/components/BannerStack.vue';
import Modals from '@/components/Modals.vue';
import Telemetry from '@/components/Telemetry.vue';
import { useHistoryHelper } from '@/composables/useHistoryHelper';

View File

@ -1,7 +1,5 @@
import type { Component } from 'vue';
import type { NotificationOptions as ElementNotificationOptions } from 'element-plus';
import type {
BannerName,
FrontendSettings,
IUserManagementSettings,
IVersionNotificationSettings,
@ -886,13 +884,6 @@ export type UTMCampaign =
| 'upgrade-builder'
| 'upgrade-custom-roles';
export type N8nBanners = {
[key in BannerName]: {
priority: number;
component: Component;
};
};
export type AddedNode = {
type: string;
openDetail?: boolean;

View File

@ -1,4 +1,7 @@
<script setup lang="ts">
/**
* @TODO Move to design system
*/
import { ref } from 'vue';
import { ElTag } from 'element-plus';

View File

@ -0,0 +1,9 @@
import type { Component } from 'vue';
import type { BannerName } from '@n8n/api-types';
export type N8nBanners = {
[key in BannerName]: {
priority: number;
component: Component;
};
};

View File

@ -1,13 +1,13 @@
<script lang="ts">
import NonProductionLicenseBanner from '@/components/banners/NonProductionLicenseBanner.vue';
import TrialOverBanner from '@/components/banners/TrialOverBanner.vue';
import TrialBanner from '@/components/banners/TrialBanner.vue';
import V1Banner from '@/components/banners/V1Banner.vue';
import EmailConfirmationBanner from '@/components/banners/EmailConfirmationBanner.vue';
import DataTableStorageLimitWarningBanner from '@/components/banners/DataTableStorageLimitWarningBanner.vue';
import DataTableStorageLimitErrorBanner from '@/components/banners/DataTableStorageLimitErrorBanner.vue';
import NonProductionLicenseBanner from './banners/NonProductionLicenseBanner.vue';
import TrialOverBanner from './banners/TrialOverBanner.vue';
import TrialBanner from './banners/TrialBanner.vue';
import V1Banner from './banners/V1Banner.vue';
import EmailConfirmationBanner from './banners/EmailConfirmationBanner.vue';
import DataTableStorageLimitWarningBanner from './banners/DataTableStorageLimitWarningBanner.vue';
import DataTableStorageLimitErrorBanner from './banners/DataTableStorageLimitErrorBanner.vue';
import type { Component } from 'vue';
import type { N8nBanners } from '@/Interface';
import type { N8nBanners } from '../banners.types';
// All banners that can be shown in the app should be registered here.
// This component renders the banner with the highest priority from the banner stack, located in the UI store.

View File

@ -6,7 +6,7 @@ import { ROLE } from '@n8n/api-types';
import { STORES } from '@n8n/stores';
import { createTestingPinia } from '@pinia/testing';
import BannerStack from '@/components/banners/BannerStack.vue';
import BannerStack from './BannerStack.vue';
import type { RenderOptions } from '@/__tests__/render';
import { createComponentRenderer } from '@/__tests__/render';
import { waitFor } from '@testing-library/vue';

View File

@ -1,6 +1,6 @@
<script lang="ts" setup>
import { useI18n } from '@n8n/i18n';
import BaseBanner from '@/components/banners/BaseBanner.vue';
import BaseBanner from './BaseBanner.vue';
import { useDataTableStore } from '@/features/core/dataTable/dataTable.store';
const dataTableStore = useDataTableStore();

View File

@ -1,6 +1,6 @@
<script lang="ts" setup>
import { useI18n } from '@n8n/i18n';
import BaseBanner from '@/components/banners/BaseBanner.vue';
import BaseBanner from './BaseBanner.vue';
import { useDataTableStore } from '@/features/core/dataTable/dataTable.store';
const dataTableStore = useDataTableStore();

View File

@ -1,5 +1,5 @@
<script lang="ts" setup>
import BaseBanner from '@/components/banners/BaseBanner.vue';
import BaseBanner from './BaseBanner.vue';
import { useToast } from '@/composables/useToast';
import { i18n as locale } from '@n8n/i18n';
import { useUsersStore } from '@/features/settings/users/users.store';

View File

@ -1,5 +1,5 @@
<script lang="ts" setup>
import BaseBanner from '@/components/banners/BaseBanner.vue';
import BaseBanner from './BaseBanner.vue';
import { i18n as locale } from '@n8n/i18n';
</script>

View File

@ -1,5 +1,5 @@
<script lang="ts" setup>
import BaseBanner from '@/components/banners/BaseBanner.vue';
import BaseBanner from './BaseBanner.vue';
import { i18n as locale } from '@n8n/i18n';
import { useCloudPlanStore } from '@/stores/cloudPlan.store';
import { computed } from 'vue';

View File

@ -1,5 +1,5 @@
<script lang="ts" setup>
import BaseBanner from '@/components/banners/BaseBanner.vue';
import BaseBanner from './BaseBanner.vue';
import { usePageRedirectionHelper } from '@/composables/usePageRedirectionHelper';
import { i18n as locale } from '@n8n/i18n';

View File

@ -1,6 +1,6 @@
<script lang="ts" setup>
import { computed } from 'vue';
import BaseBanner from '@/components/banners/BaseBanner.vue';
import BaseBanner from './BaseBanner.vue';
import { i18n as locale } from '@n8n/i18n';
import { hasPermission } from '@/utils/rbac/permissions';
import { useUIStore } from '@/stores/ui.store';