diff --git a/docs/guides/migrations.md b/docs/guides/migrations.md
index f5fce07a0d..d37a6c17ef 100644
--- a/docs/guides/migrations.md
+++ b/docs/guides/migrations.md
@@ -9,6 +9,12 @@ kb_sync_latest_only
## 3.3 to 4.0
+The account navigation was reworked to support navigation grouping (used in `b2b` theme, see [`account-navigation.items.ts`](https://github.com/intershop/intershop-pwa/blob/4.0.0/src/app/pages/account/account-navigation/account-navigation.items.ts)).
+For better maintainability and brand specific overriding the account navigation items were externalized in an extra file `account-navigation.items.ts` used by the `account-navigation.component.ts`.
+Also with this rework the navigation items data structure was changed from a key value object to a simpler `NavigationItem` Array.
+With this data structure accessing the data was changed for the key access from `item.key` to `item.routerLink` or for the value example from `item.value.localizationKey` to `item.localizationKey`.
+To migrate to this new account navigation item handling any account navigation customization needs to be adapted accordingly.
+
The deprecated SSR environment variable `ICM_IDENTITY_PROVIDER` was completely removed.
Use the variable `IDENTITY_PROVIDER` instead to select the identity provider to be used if it is not the default `ICM`.
Removed default `identityProvider` configuration from `environment.model.ts` so only hardcoded fallback from `configuration.effects.ts` works as fallback.
diff --git a/e2e/cypress/e2e/pages/account/my-account.page.ts b/e2e/cypress/e2e/pages/account/my-account.page.ts
index cb94accd99..307e1635b5 100644
--- a/e2e/cypress/e2e/pages/account/my-account.page.ts
+++ b/e2e/cypress/e2e/pages/account/my-account.page.ts
@@ -10,7 +10,7 @@ export class MyAccountPage {
}
navigateToQuoting() {
- cy.get('a[data-testing-id="quote-list-link"]').click();
+ cy.get('a[data-testing-id="quotes-nav-link"]').click();
}
get respondedQuotesCount() {
@@ -22,18 +22,18 @@ export class MyAccountPage {
}
navigateToAddresses() {
- cy.get('a[data-testing-id="addresses-link"]').click();
+ cy.get('a[data-testing-id="addresses-nav-link"]').click();
}
navigateToWishlists() {
- cy.get('a[data-testing-id="wishlists-link"]').click();
+ cy.get('a[data-testing-id="wishlists-nav-link"]').click();
}
navigateToOrderTemplates() {
- cy.get('a[data-testing-id="order-templates-link"]').click();
+ cy.get('a[data-testing-id="order-templates-nav-link"]').click();
}
navigateToPayments() {
- cy.get('a[data-testing-id="payments-link"]').click();
+ cy.get('a[data-testing-id="payment-nav-link"]').click();
}
}
diff --git a/e2e/cypress/e2e/pages/account/order-templates-details.page.ts b/e2e/cypress/e2e/pages/account/order-templates-details.page.ts
index f99f88f6ad..8840a84bd3 100644
--- a/e2e/cypress/e2e/pages/account/order-templates-details.page.ts
+++ b/e2e/cypress/e2e/pages/account/order-templates-details.page.ts
@@ -9,7 +9,7 @@ export class OrderTemplatesDetailsPage {
readonly breadcrumb = new BreadcrumbModule();
static navigateToOverviewPage() {
- cy.get('a[data-testing-id="order-templates-link"]').click();
+ cy.get('a[data-testing-id="order-templates-nav-link"]').click();
}
get listItem() {
diff --git a/src/app/core/icon.module.ts b/src/app/core/icon.module.ts
index 519792fbab..e92fa28d51 100644
--- a/src/app/core/icon.module.ts
+++ b/src/app/core/icon.module.ts
@@ -12,6 +12,7 @@ import {
faBalanceScale,
faBan,
faBars,
+ faBriefcase,
faCalendarDay,
faCheck,
faCheckCircle,
@@ -20,6 +21,7 @@ import {
faEnvelope,
faFastForward,
faFax,
+ faGear,
faGlobeAmericas,
faHeart,
faHome,
@@ -36,6 +38,7 @@ import {
faPlus,
faPrint,
faQuestionCircle,
+ faRightFromBracket,
faSearch,
faShoppingCart,
faSpinner,
@@ -63,22 +66,29 @@ export class IconModule {
faAngleLeft,
faAngleRight,
faAngleUp,
- faArrowsAlt,
faArrowAltCircleRight,
+ faArrowsAlt,
faBalanceScale,
faBan,
faBars,
+ faBriefcase,
faCalendarDay,
faCheck,
faCheckCircle,
faCog,
faCogs,
+ faEnvelope,
+ faFastForward,
+ faFax,
+ faGear,
faGlobeAmericas,
+ faHeart,
faHome,
faInbox,
faInfoCircle,
faList,
faListAlt,
+ faMapMarkerAlt,
faMinus,
faPaperPlane,
faPencilAlt,
@@ -87,23 +97,19 @@ export class IconModule {
faPlus,
faPrint,
faQuestionCircle,
+ faRightFromBracket,
faSearch,
faShoppingCart,
faSpinner,
+ faStar,
+ faStarHalf,
faTh,
faTimes,
faTimesCircle,
faTrashAlt,
faUndo,
faUser,
- faUserCheck,
- faStar,
- faStarHalf,
- faHeart,
- faFastForward,
- faMapMarkerAlt,
- faEnvelope,
- faFax
+ faUserCheck
);
}
}
diff --git a/src/app/pages/account/account-navigation/account-navigation.component.html b/src/app/pages/account/account-navigation/account-navigation.component.html
index 4c71487c97..8c46181aa9 100644
--- a/src/app/pages/account/account-navigation/account-navigation.component.html
+++ b/src/app/pages/account/account-navigation/account-navigation.component.html
@@ -1,56 +1,108 @@
-
-
+
-
- {{ customer.companyName }}
-
-
- {{ roles }}
-
+
+ {{ customer.companyName }}
+
+
+ {{ roles }}
+
diff --git a/src/app/pages/account/account-user-info/account-user-info.component.spec.ts b/src/app/pages/account/account-user-info/account-user-info.component.spec.ts
index 0a8d2f8507..ce1aad945b 100644
--- a/src/app/pages/account/account-user-info/account-user-info.component.spec.ts
+++ b/src/app/pages/account/account-user-info/account-user-info.component.spec.ts
@@ -60,8 +60,8 @@ describe('Account User Info Component', () => {
expect(element).toMatchInlineSnapshot(`
Mustermann, Max
- Foods Inc.
- Approver, Buyer
+ Foods Inc.
+ Approver, Buyer
`);
});
@@ -76,7 +76,7 @@ describe('Account User Info Component', () => {
expect(element).toMatchInlineSnapshot(`
max.mustermann@test.intershop.de
- Foods Inc.
+ Foods Inc.
`);
});
diff --git a/src/assets/i18n/de_DE.json b/src/assets/i18n/de_DE.json
index af34bdc58d..90d04aa136 100644
--- a/src/assets/i18n/de_DE.json
+++ b/src/assets/i18n/de_DE.json
@@ -188,6 +188,7 @@
"account.logout.link": "Abmelden",
"account.my_account.heading": "Mein Konto",
"account.my_account.link": "Mein Konto",
+ "account.my_account.overview.link": "Kontoübersicht",
"account.name.error.forbidden.chars": "Nur alphanumerische Zeichen sind erlaubt.",
"account.navigation.logout.link": "Abmelden",
"account.navigation.quotes.link": "Preisangebote",
@@ -300,6 +301,7 @@
"account.profile.email.label": "E-Mail",
"account.profile.heading": "Profileinstellungen",
"account.profile.link": "Profileinstellungen",
+ "account.profile.myprofile": "Mein Profil",
"account.profile.name.label": "Name",
"account.profile.password.heading": "Kennwort",
"account.profile.password.label": "Kennwort",
@@ -369,6 +371,9 @@
"account.requisitions.approvals.navtab.waiting": "Zu genehmigende Bestellanforderungen",
"account.requisitions.approvals.text": "Diese Liste zeigt alle Bestellanforderungen, die von Ihnen genehmigt werden müssen. Zudem können Sie alle Anforderungen anzeigen lassen, die bereits genehmigt oder abgelehnt wurden.",
"account.requisitions.management": "Bestellanforderungsverwaltung",
+ "account.requisitions.myapprovals": "Meine Genehmigungen",
+ "account.requisitions.organization": "Meine Organisation",
+ "account.requisitions.purchases": "Einkäufe",
"account.requisitions.requisitions": "Bestellanforderungen",
"account.requisitions.requisitions.navtab.approved": "Genehmigt",
"account.requisitions.requisitions.navtab.pending": "Offen",
diff --git a/src/assets/i18n/en_US.json b/src/assets/i18n/en_US.json
index fe2886ab6b..1f40194322 100644
--- a/src/assets/i18n/en_US.json
+++ b/src/assets/i18n/en_US.json
@@ -188,6 +188,7 @@
"account.logout.link": "Logout",
"account.my_account.heading": "My Account",
"account.my_account.link": "My Account",
+ "account.my_account.overview.link": "Account Overview",
"account.name.error.forbidden.chars": "Only alphanumeric characters are allowed.",
"account.navigation.logout.link": "Logout",
"account.navigation.quotes.link": "Quoting",
@@ -300,6 +301,7 @@
"account.profile.email.label": "E-mail",
"account.profile.heading": "Profile Settings",
"account.profile.link": "Profile Settings",
+ "account.profile.myprofile": "My Profile",
"account.profile.name.label": "Name",
"account.profile.password.heading": "Password",
"account.profile.password.label": "Password",
@@ -369,6 +371,9 @@
"account.requisitions.approvals.navtab.waiting": "Waiting for your Approval",
"account.requisitions.approvals.text": "This list shows all order requests that need to be approved by you. You can also view all requests that have already been approved or rejected.",
"account.requisitions.management": "Requisition Management",
+ "account.requisitions.myapprovals": "My Approvals",
+ "account.requisitions.organization": "My Organization",
+ "account.requisitions.purchases": "Purchases",
"account.requisitions.requisitions": "Requisitions",
"account.requisitions.requisitions.navtab.approved": "Approved",
"account.requisitions.requisitions.navtab.pending": "Pending",
diff --git a/src/assets/i18n/fr_FR.json b/src/assets/i18n/fr_FR.json
index 73559d0ee8..dacf840426 100644
--- a/src/assets/i18n/fr_FR.json
+++ b/src/assets/i18n/fr_FR.json
@@ -188,6 +188,7 @@
"account.logout.link": "Déconnexion",
"account.my_account.heading": "Mon compte",
"account.my_account.link": "Mon compte",
+ "account.my_account.overview.link": "Aperçu du compte",
"account.name.error.forbidden.chars": "Seuls les caractères alphanumériques sont autorisés.",
"account.navigation.logout.link": "Déconnexion",
"account.navigation.quotes.link": "Devis",
@@ -300,6 +301,7 @@
"account.profile.email.label": "Courriel",
"account.profile.heading": "Paramètres de profil",
"account.profile.link": "Paramètres de profil",
+ "account.profile.myprofile": "Mon profil",
"account.profile.name.label": "Nom",
"account.profile.password.heading": "Mot de passe",
"account.profile.password.label": "Mot de passe",
@@ -369,6 +371,9 @@
"account.requisitions.approvals.navtab.waiting": "En attente de votre approbation",
"account.requisitions.approvals.text": "Cette liste répertorie toutes vos demandes d’achats que vous devez approuver. Vous pouvez également afficher toutes les demandes d’achats qui ont déjà été approuvées ou rejetées.",
"account.requisitions.management": "Gestion des demandes d’achats",
+ "account.requisitions.myapprovals": "Mes approbations",
+ "account.requisitions.organization": "Mon organisation",
+ "account.requisitions.purchases": "Achats",
"account.requisitions.requisitions": "Demandes d’achats",
"account.requisitions.requisitions.navtab.approved": "Approuvées",
"account.requisitions.requisitions.navtab.pending": "En suspens",
diff --git a/src/styles/global/forms.scss b/src/styles/global/forms.scss
index 2d160f4276..e0b717e925 100644
--- a/src/styles/global/forms.scss
+++ b/src/styles/global/forms.scss
@@ -135,6 +135,10 @@ select {
font-family: $font-family-regular;
}
+optgroup {
+ font-style: normal;
+}
+
// ERROR and SUCCESS
.has-feedback {
.form-control[type='number'] {
diff --git a/src/styles/global/tables.scss b/src/styles/global/tables.scss
index 28d92ab9c4..ed20476e1c 100644
--- a/src/styles/global/tables.scss
+++ b/src/styles/global/tables.scss
@@ -114,10 +114,8 @@
margin-bottom: $space-default * 2;
.list-item-row {
- @media (max-width: $screen-xs-max) {
- margin-bottom: ($space-default);
- border-bottom: 1px solid $border-color-lighter;
- }
+ margin-bottom: ($space-default);
+ border-bottom: 1px solid $border-color-lighter;
&.list-item-row-big {
padding-bottom: ($space-default * 0.5);
@@ -131,10 +129,6 @@
}
}
- &:last-child {
- border-bottom: 1px solid $border-color-lighter;
- }
-
.list-item {
padding: $table-cell-padding * 0.9 $table-cell-padding * 0.7 $table-cell-padding * 0.9 0;
diff --git a/src/styles/pages/account/account-navigation.scss b/src/styles/pages/account/account-navigation.scss
index fe6c5c0e6d..f445f96956 100644
--- a/src/styles/pages/account/account-navigation.scss
+++ b/src/styles/pages/account/account-navigation.scss
@@ -3,57 +3,34 @@
.account-navigation {
li {
- padding: divide($space-default * 2, 3) divide($space-default * 2, 3) ($space-default * 0.5);
background: $color-tertiary;
- border: $border-width-default solid $border-color-lighter;
- border-width: 0 1px 1px;
-
- &.collapse,
- &.collapsing {
- padding: 0;
- border: none;
- }
&:hover {
background: darken($color-tertiary, 10%) none repeat scroll 0 0;
}
&.account-nav-header {
+ padding: divide($space-default * 2, 3) divide($space-default * 2, 3) ($space-default * 0.5);
+ font-size: 16px;
+ color: $text-color-inverse;
cursor: pointer;
- background: $color-secondary;
- border: $border-width-default solid $border-color-default;
+ background: $CORPORATE-PRIMARY;
}
.ng-fa-icon {
margin-right: ($space-default * 0.5);
- font-size: 14px;
- color: $text-color-quaternary;
- }
-
- p {
- margin: 0;
- font-size: 16px;
- color: $text-color-primary;
- }
-
- &:first-child {
- border-width: $border-width-default;
- border-radius: 0;
- }
-
- &:last-child {
- border-radius: 0;
}
a {
display: block;
+ padding: divide($space-default * 2, 3) divide($space-default * 2, 3) ($space-default * 0.5);
font-size: 14px;
color: $link-color;
}
&.active {
background: $color-inverse;
- border-right: none;
+ border-left: $border-width-default solid $color-tertiary;
a {
color: $text-color-primary;
@@ -61,6 +38,8 @@
}
&.account-welcome {
+ padding: divide($space-default * 2, 3) divide($space-default * 2, 3) ($space-default * 0.5);
+
&:hover {
background: $color-tertiary;
}
@@ -69,21 +48,11 @@
}
.account-nav-box {
- @media (max-width: $screen-xs-max) {
+ @media (max-width: $screen-sm-max) {
padding-top: $space-default;
padding-bottom: $space-default;
margin-top: -15px;
margin-bottom: ($space-default * 1.5);
background: $color-tertiary;
- border-top: $border-width-default solid lighten($border-color-default, 100%);
- }
-
- @media (min-width: $screen-sm-min) and (max-width: $screen-sm-max) {
- padding-top: $space-default;
- padding-bottom: $space-default;
- margin-top: -25px;
- margin-bottom: ($space-default * 1.5);
- background: $color-tertiary;
- border-top: $border-width-default solid lighten($border-color-default, 100%);
}
}