diff --git a/packages/core/admin/admin/src/content-manager/pages/ListView/components/BulkActionButtons/ConfirmBulkActionDialog/index.js b/packages/core/admin/admin/src/content-manager/pages/ListView/components/BulkActionButtons/ConfirmBulkActionDialog/index.js index e5c9a24033..4498b5f13c 100644 --- a/packages/core/admin/admin/src/content-manager/pages/ListView/components/BulkActionButtons/ConfirmBulkActionDialog/index.js +++ b/packages/core/admin/admin/src/content-manager/pages/ListView/components/BulkActionButtons/ConfirmBulkActionDialog/index.js @@ -6,6 +6,7 @@ import { useFetchClient, useNotification, useAPIErrorHandler, + useQueryParams, } from '@strapi/helper-plugin'; import { Check, ExclamationMarkCircle } from '@strapi/icons'; import PropTypes from 'prop-types'; @@ -82,6 +83,7 @@ const ConfirmDialogPublishAll = ({ isOpen, onToggleDialog, isConfirmButtonLoadin const { contentType: { uid: slug }, } = useSelector(listViewDomain()); + const [{ query }] = useQueryParams(); const { data: countDraftRelations, @@ -97,6 +99,7 @@ const ConfirmDialogPublishAll = ({ isOpen, onToggleDialog, isConfirmButtonLoadin { params: { ids: selectedEntries, + locale: query?.plugins?.i18n?.locale, }, } ); diff --git a/packages/core/admin/admin/src/content-manager/pages/ListView/components/BulkActionButtons/ConfirmBulkActionDialog/tests/index.test.js b/packages/core/admin/admin/src/content-manager/pages/ListView/components/BulkActionButtons/ConfirmBulkActionDialog/tests/index.test.js index 49e8fe8d18..85e72815e8 100644 --- a/packages/core/admin/admin/src/content-manager/pages/ListView/components/BulkActionButtons/ConfirmBulkActionDialog/tests/index.test.js +++ b/packages/core/admin/admin/src/content-manager/pages/ListView/components/BulkActionButtons/ConfirmBulkActionDialog/tests/index.test.js @@ -1,7 +1,7 @@ import React from 'react'; import { lightTheme, ThemeProvider } from '@strapi/design-system'; -import { Table } from '@strapi/helper-plugin'; +import { Table, useQueryParams } from '@strapi/helper-plugin'; import { render as renderRTL, screen, waitFor, within } from '@testing-library/react'; import { rest } from 'msw'; import { setupServer } from 'msw/node'; @@ -34,6 +34,17 @@ jest.mock('@strapi/helper-plugin', () => ({ useNotification: jest.fn(() => { return toggleNotification; }), + useQueryParams: jest.fn(() => [ + { + query: { + plugins: { + i18n: { + locale: 'en', + }, + }, + }, + }, + ]), })); const handlers = [ @@ -215,4 +226,35 @@ describe('ConfirmDialogPublishAll', () => { ); expect(await screen.getByRole('alert')).toBeInTheDocument(); }); + + it('should show the warning message with 2 draft relations and 2 entries even if the locale param is not passed', async () => { + useQueryParams.mockImplementation(() => [ + { + query: { + page: 1, + pageSize: 10, + sort: 'name:ASC', + }, + }, + ]); + + server.use( + rest.get('*/countManyEntriesDraftRelations', (req, res, ctx) => { + return res.once( + ctx.status(200), + ctx.json({ + data: 2, + }) + ); + }) + ); + + render(); + + await waitFor(() => { + const publishDialog = screen.getByRole('dialog'); + expect(publishDialog).toBeInTheDocument(); + within(publishDialog).getByText(/2 relations out of 2 entries are/i); + }); + }); }); diff --git a/packages/core/admin/admin/src/content-manager/pages/ListView/components/BulkActionButtons/SelectedEntriesModal/index.js b/packages/core/admin/admin/src/content-manager/pages/ListView/components/BulkActionButtons/SelectedEntriesModal/index.js index c8b5fe38a4..f43b90013a 100644 --- a/packages/core/admin/admin/src/content-manager/pages/ListView/components/BulkActionButtons/SelectedEntriesModal/index.js +++ b/packages/core/admin/admin/src/content-manager/pages/ListView/components/BulkActionButtons/SelectedEntriesModal/index.js @@ -445,7 +445,7 @@ const SelectedEntriesModal = ({ onToggle }) => { // We want to keep the selected entries order same as the list view const [ { - query: { sort }, + query: { sort, plugins }, }, ] = useQueryParams(); @@ -458,6 +458,7 @@ const SelectedEntriesModal = ({ onToggle }) => { $in: entriesToFetch, }, }, + locale: plugins?.i18n?.locale, }; const { get } = useFetchClient(); diff --git a/packages/core/admin/admin/src/content-manager/pages/ListView/components/BulkActionButtons/SelectedEntriesModal/tests/index.test.js b/packages/core/admin/admin/src/content-manager/pages/ListView/components/BulkActionButtons/SelectedEntriesModal/tests/index.test.js index 3f889f4698..a8a66293cb 100644 --- a/packages/core/admin/admin/src/content-manager/pages/ListView/components/BulkActionButtons/SelectedEntriesModal/tests/index.test.js +++ b/packages/core/admin/admin/src/content-manager/pages/ListView/components/BulkActionButtons/SelectedEntriesModal/tests/index.test.js @@ -1,7 +1,7 @@ import React from 'react'; import { lightTheme, ThemeProvider } from '@strapi/design-system'; -import { Table } from '@strapi/helper-plugin'; +import { Table, useQueryParams } from '@strapi/helper-plugin'; import { render as renderRTL, screen, @@ -31,6 +31,11 @@ jest.mock('@strapi/helper-plugin', () => ({ { query: { sort: 'name:DESC', + plugins: { + i18n: { + locale: 'en', + }, + }, }, }, ]), @@ -159,6 +164,32 @@ describe('Bulk publish selected entries modal', () => { expect(screen.queryByText('Entry 4')).not.toBeInTheDocument(); }); + it('renders the selected items in the modal even if the locale param is not passed', async () => { + useQueryParams.mockImplementation(() => [ + { + query: { + page: 1, + pageSize: 10, + sort: 'name:DESC', + }, + }, + ]); + + const { queryByText } = render( +