diff --git a/frontend/resourceadm/language/src/nb.json b/frontend/resourceadm/language/src/nb.json
index 9530d899f9e..66134f6bb9d 100644
--- a/frontend/resourceadm/language/src/nb.json
+++ b/frontend/resourceadm/language/src/nb.json
@@ -224,6 +224,7 @@
"resourceadm.loading_lists": "Laster inn lister",
"resourceadm.loading_publish_status": "Laster publiseringsstatus",
"resourceadm.migration_header": "Migrering av Altinn 2 tjeneste",
+ "resourceadm.loading_migration_status": "Laster inn migreringsstatus",
"resourceadm.migration_help_link": "Les mer i vår dokumentasjon om ressursregisteret og migrering av ressurser.",
"resourceadm.migration_ingress": "Denne ressursen er basert på en Altinn 2 lenketjeneste. For at brukere som har tilgang til denne tjenesten gjennom enkeldelegering i Altinn 2 skal få videreført sine tilganger i Altinn 3, må delegeringene migreres. Du kan se hvor mange delegeringer av enkeltrettighet som er gjort ved å hente antall delegeringer i ønsket miljø under.",
"resourceadm.migration_ingress_warning": "Dersom antall delegeringer i Altinn 2 er 0, eller brukere av denne tjenesten kun har tilgang gjennom rolle trenger du ikke å migrere.",
@@ -258,5 +259,6 @@
"resourceadm.right_translation_bar_title": "Oversettelse",
"resourceadm.switch_should_not": "ikke",
"resourceadm.merge_conflict_header": "Konflikt i endrede lokale filer",
- "resourceadm.merge_conflict_body": "Det er en konflikt i repositorium for ressurser. Noen andre har endret filer på samme sted som deg, og du må fjerne dine endringer. Før du gjør dette kan du laste ned en zip-fil med endringene dine."
+ "resourceadm.merge_conflict_body": "Det er en konflikt i repositorium for ressurser. Noen andre har endret filer på samme sted som deg, og du må fjerne dine endringer. Før du gjør dette kan du laste ned en zip-fil med endringene dine.",
+ "resourceadm.merge_conflict_footer": "Velg \"Fjern mine endringer\" for å løse konflikten."
}
diff --git a/frontend/resourceadm/pages/AboutResourcePage/AboutResourcePage.test.tsx b/frontend/resourceadm/pages/AboutResourcePage/AboutResourcePage.test.tsx
index 034b3f87ece..80194addcd4 100644
--- a/frontend/resourceadm/pages/AboutResourcePage/AboutResourcePage.test.tsx
+++ b/frontend/resourceadm/pages/AboutResourcePage/AboutResourcePage.test.tsx
@@ -1,5 +1,5 @@
import React from 'react';
-import { render, screen } from '@testing-library/react';
+import { render, screen, waitFor } from '@testing-library/react';
import type { AboutResourcePageProps } from './AboutResourcePage';
import { AboutResourcePage } from './AboutResourcePage';
import userEvent from '@testing-library/user-event';
@@ -89,8 +89,8 @@ describe('AboutResourcePage', () => {
const idInput = screen.getByLabelText(textMock('resourceadm.about_resource_identifier_label'));
- await idInput.focus();
- await idInput.blur();
+ idInput.focus();
+ await waitFor(() => idInput.blur());
expect(mockOnSaveResource).not.toHaveBeenCalled();
});
@@ -116,7 +116,7 @@ describe('AboutResourcePage', () => {
expect(titleNbInput).toHaveValue(mockResource1.title.nb);
await user.type(titleNbInput, mockNewTitleInput);
- await titleNbInput.blur();
+ await waitFor(() => titleNbInput.blur());
expect(mockOnSaveResource).toHaveBeenCalledWith({
...mockResource1,
@@ -157,7 +157,7 @@ describe('AboutResourcePage', () => {
expect(descriptionNbInput).toHaveValue(mockResource1.description.nb);
await user.type(descriptionNbInput, mockNewDescriptionInput);
- await descriptionNbInput.blur();
+ await waitFor(() => descriptionNbInput.blur());
expect(mockOnSaveResource).toHaveBeenCalledWith({
...mockResource1,
@@ -179,7 +179,7 @@ describe('AboutResourcePage', () => {
await user.clear(homepageInput);
await user.type(homepageInput, mockNewHomepageInput);
- await homepageInput.blur();
+ await waitFor(() => homepageInput.blur());
expect(mockOnSaveResource).toHaveBeenCalledWith({
...mockResource1,
@@ -215,7 +215,7 @@ describe('AboutResourcePage', () => {
expect(keywordInput).toHaveValue(keywordString);
await user.type(keywordInput, mockNewKeyboardInput);
- await keywordInput.blur();
+ await waitFor(() => keywordInput.blur());
expect(mockOnSaveResource).toHaveBeenCalledWith({
...mockResource1,
@@ -235,7 +235,7 @@ describe('AboutResourcePage', () => {
await user.clear(rightDescriptionInput);
await user.type(rightDescriptionInput, mockNewRightDescriptionInput);
- await rightDescriptionInput.blur();
+ await waitFor(() => rightDescriptionInput.blur());
expect(mockOnSaveResource).toHaveBeenCalledWith({
...mockResource1,
diff --git a/frontend/resourceadm/pages/AboutResourcePage/AboutResourcePage.tsx b/frontend/resourceadm/pages/AboutResourcePage/AboutResourcePage.tsx
index bb262d01aca..dfc526c0deb 100644
--- a/frontend/resourceadm/pages/AboutResourcePage/AboutResourcePage.tsx
+++ b/frontend/resourceadm/pages/AboutResourcePage/AboutResourcePage.tsx
@@ -1,6 +1,7 @@
import React, { useState } from 'react';
import classes from './AboutResourcePage.module.css';
-import { ErrorSummary, Heading } from '@digdir/designsystemet-react';
+import { ErrorSummary } from '@digdir/designsystemet-react';
+import { StudioHeading } from '@studio/components';
import type { Translation } from '../../types/Translation';
import type {
Resource,
@@ -98,9 +99,9 @@ export const AboutResourcePage = ({
const displayContent = () => {
return (
-
+
{t('resourceadm.about_resource_title')}
-
+
{validationErrors.length > 0 && (
diff --git a/frontend/resourceadm/pages/AccessListPage/AccessListPage.tsx b/frontend/resourceadm/pages/AccessListPage/AccessListPage.tsx
index 2f233047457..7c873933b7b 100644
--- a/frontend/resourceadm/pages/AccessListPage/AccessListPage.tsx
+++ b/frontend/resourceadm/pages/AccessListPage/AccessListPage.tsx
@@ -1,7 +1,6 @@
import React from 'react';
import { useTranslation } from 'react-i18next';
-import { Alert } from '@digdir/designsystemet-react';
-import { StudioSpinner } from '@studio/components';
+import { StudioAlert, StudioSpinner } from '@studio/components';
import { AccessListDetail } from '../../components/AccessListDetails';
import { useGetAccessListQuery } from '../../hooks/queries/useGetAccessListQuery';
import { getAccessListPageUrl } from '../../utils/urlUtils';
@@ -23,7 +22,9 @@ export const AccessListPage = (): React.JSX.Element => {
}
if (isLoadListError) {
- return {t('resourceadm.listadmin_list_load_error')};
+ return (
+ {t('resourceadm.listadmin_list_load_error')}
+ );
}
return (
diff --git a/frontend/resourceadm/pages/DeployResourcePage/DeployResourcePage.tsx b/frontend/resourceadm/pages/DeployResourcePage/DeployResourcePage.tsx
index a9cc14e029a..1f9fadacc0e 100644
--- a/frontend/resourceadm/pages/DeployResourcePage/DeployResourcePage.tsx
+++ b/frontend/resourceadm/pages/DeployResourcePage/DeployResourcePage.tsx
@@ -3,15 +3,15 @@ import classes from './DeployResourcePage.module.css';
import { ResourceDeployStatus } from '../../components/ResourceDeployStatus';
import { ResourceDeployEnvCard } from '../../components/ResourceDeployEnvCard';
import {
- Textfield,
- Spinner,
- Heading,
- Label,
- Paragraph,
- Link,
- Alert,
- ErrorMessage,
-} from '@digdir/designsystemet-react';
+ StudioTextfield,
+ StudioSpinner,
+ StudioHeading,
+ StudioLabelAsParagraph,
+ StudioParagraph,
+ StudioLink,
+ StudioAlert,
+ StudioErrorMessage,
+} from '@studio/components';
import type { NavigationBarPage } from '../../types/NavigationBarPage';
import type { DeployError } from '../../types/DeployError';
import {
@@ -198,19 +198,29 @@ export const DeployResourcePage = ({
case 'pending': {
return (