From 239c18b175682ca82a685b0e1bc9c2b1c491e67c Mon Sep 17 00:00:00 2001 From: Christopher Sunkel Date: Thu, 18 Jan 2024 12:26:29 +0000 Subject: [PATCH 1/6] Set page title in the company layout --- .../components/Layout/CompanyLayoutNew.jsx | 49 +++++++++++-------- .../components/Layout/DefaultLayoutBase.jsx | 14 +----- 2 files changed, 31 insertions(+), 32 deletions(-) diff --git a/src/client/components/Layout/CompanyLayoutNew.jsx b/src/client/components/Layout/CompanyLayoutNew.jsx index 5cea77cd3ea..3c4066f9793 100644 --- a/src/client/components/Layout/CompanyLayoutNew.jsx +++ b/src/client/components/Layout/CompanyLayoutNew.jsx @@ -1,4 +1,4 @@ -import React from 'react' +import React, { useEffect } from 'react' import PropTypes from 'prop-types' import GridCol from '@govuk-react/grid-col' import GridRow from '@govuk-react/grid-row' @@ -13,27 +13,36 @@ const CompanyLayoutNew = ({ children, returnUrl, flashMessages, + pageTitle, isInvestment = false, isLCP = false, -}) => ( - <> - -
- - {isInvestment && ( - - )} - - {children} - -
- -) +}) => { + useEffect(() => { + document.title = `${pageTitle} - ${company.name} - Companies - DBT Data Hub` + }, [`${pageTitle} - ${company.name} - Companies - DBT Data Hub`]) + return ( + <> + +
+ + {isInvestment && ( + + )} + + {children} + +
+ + ) +} CompanyLayoutNew.propTypes = { company: PropTypes.object.isRequired, diff --git a/src/client/components/Layout/DefaultLayoutBase.jsx b/src/client/components/Layout/DefaultLayoutBase.jsx index 040a214015c..2dbdbd4a53a 100644 --- a/src/client/components/Layout/DefaultLayoutBase.jsx +++ b/src/client/components/Layout/DefaultLayoutBase.jsx @@ -1,4 +1,4 @@ -import React, { useEffect, useState } from 'react' +import React, { useState } from 'react' import { createGlobalStyle } from 'styled-components' import PropTypes from 'prop-types' import GridCol from '@govuk-react/grid-col' @@ -17,11 +17,8 @@ const GlobalStyles = createGlobalStyle` * This is a reduced version of DefaultLayout, similar to the _layout * template used by the old Nunjucks pages. */ -const DefaultLayoutBase = ({ pageTitle, children }) => { +const DefaultLayoutBase = ({ children }) => { const [showVerticalNav, setShowVerticalNav] = useState(false) - useEffect(() => { - document.title = `${pageTitle} - DBT Data Hub` - }, [pageTitle]) return ( <> @@ -38,13 +35,6 @@ const DefaultLayoutBase = ({ pageTitle, children }) => { } DefaultLayoutBase.propTypes = { - heading: PropTypes.oneOfType([PropTypes.string, PropTypes.node]).isRequired, - headingLink: PropTypes.shape({ - url: PropTypes.string.isRequired, - text: PropTypes.string.isRequired, - }), - subheading: PropTypes.oneOfType([PropTypes.string, PropTypes.node]), - pageTitle: PropTypes.string.isRequired, children: PropTypes.element.isRequired, } From 5bd121a4a5df451972ca1d9b42aebaac92d5ae21 Mon Sep 17 00:00:00 2001 From: Christopher Sunkel Date: Thu, 18 Jan 2024 10:11:36 +0000 Subject: [PATCH 2/6] Migrate activity tab to React Router --- .../activity-feed/__test__/router.test.js | 5 +- .../client/CompanyActivityFeed.jsx | 70 ------- .../apps/activity-feed/controllers.js | 35 ---- .../companies/apps/activity-feed/router.js | 6 +- .../activity-feed/views/client-container.njk | 10 - src/apps/routers.js | 1 + .../ActivityFeed/CollectionList/index.jsx | 187 +++++++++--------- .../components/Layout/CompanyLayoutNew.jsx | 3 +- src/client/index.jsx | 9 - .../TableCards/ActivityCard.jsx | 22 ++- src/client/routes.js | 6 + 11 files changed, 126 insertions(+), 228 deletions(-) delete mode 100644 src/apps/companies/apps/activity-feed/client/CompanyActivityFeed.jsx delete mode 100644 src/apps/companies/apps/activity-feed/views/client-container.njk diff --git a/src/apps/companies/apps/activity-feed/__test__/router.test.js b/src/apps/companies/apps/activity-feed/__test__/router.test.js index 778a5cb8b46..5682e46827e 100644 --- a/src/apps/companies/apps/activity-feed/__test__/router.test.js +++ b/src/apps/companies/apps/activity-feed/__test__/router.test.js @@ -3,9 +3,6 @@ const router = require('../router') describe('Activity feed routes', () => { it('should define all routes', () => { const paths = router.stack.filter((r) => r.route).map((r) => r.route.path) - expect(paths).to.deep.equal([ - '/:companyId/activity', - '/:companyId/activity/data', - ]) + expect(paths).to.deep.equal(['/:companyId/activity/data']) }) }) diff --git a/src/apps/companies/apps/activity-feed/client/CompanyActivityFeed.jsx b/src/apps/companies/apps/activity-feed/client/CompanyActivityFeed.jsx deleted file mode 100644 index cf79658f60b..00000000000 --- a/src/apps/companies/apps/activity-feed/client/CompanyActivityFeed.jsx +++ /dev/null @@ -1,70 +0,0 @@ -import React from 'react' -import PropTypes from 'prop-types' - -import { - ActivityFeedApp, - ActivityFeedAction, -} from '../../../../../client/components' -import urls from '../../../../../lib/urls' -import { CompanyResource } from '../../../../../client/components/Resource' -import CompanyLayout from '../../../../../client/components/Layout/CompanyLayout' - -const CompanyActivityFeed = ({ - companyId, - activityTypeFilter, - isGlobalUltimate, - dnbHierarchyCount, - apiEndpoint, - flashMessages, -}) => { - const actions = ( - <> - - - - ) - - return ( - - {(company) => ( - - - - )} - - ) -} - -CompanyActivityFeed.propTypes = { - companyId: PropTypes.string, - actions: PropTypes.node, - activityTypeFilter: [PropTypes.string], - apiEndpoint: PropTypes.string.isRequired, - dnbHierarchyCount: PropTypes.number, -} - -CompanyActivityFeed.defaultProps = { - companyId: null, - activityTypeFilter: [], - actions: null, - dnbHierarchyCount: null, -} - -export default CompanyActivityFeed diff --git a/src/apps/companies/apps/activity-feed/controllers.js b/src/apps/companies/apps/activity-feed/controllers.js index 6966457fd7d..8209276659f 100644 --- a/src/apps/companies/apps/activity-feed/controllers.js +++ b/src/apps/companies/apps/activity-feed/controllers.js @@ -33,40 +33,6 @@ const { } = require('./transformers') const dataHubCompanyActivityQuery = require('./es-queries/data-hub-company-activity-query') -async function renderActivityFeed(req, res, next) { - const { company, dnbHierarchyCount, dnbRelatedCompaniesCount } = res.locals - - res.locals.title = `Activities - ${company.name} - Companies` - - try { - const contentProps = company.archived - ? { - companyId: company.id, - flashMessages: res.locals.getMessages(), - localNavItems: res.locals.localNavItems, - company, - } - : { - companyId: company.id, - flashMessages: res.locals.getMessages(), - isOverview: false, - localNavItems: res.locals.localNavItems, - dnbHierarchyCount, - dnbRelatedCompaniesCount, - company, - } - - const props = { - ...contentProps, - apiEndpoint: urls.companies.activity.data(company.id), - } - - res.render('companies/apps/activity-feed/views/client-container', { props }) - } catch (error) { - next(error) - } -} - function getContactFromEmailAddress(emailAddress, contacts) { const contact = contacts.find((contact) => contact.email === emailAddress) return contact @@ -674,7 +640,6 @@ async function fetchAllActivityFeedEvents(req, res, next) { } module.exports = { - renderActivityFeed, fetchActivityFeedHandler, fetchActivitiesForContact, fetchAventriEvent, diff --git a/src/apps/companies/apps/activity-feed/router.js b/src/apps/companies/apps/activity-feed/router.js index 5b83d544df7..722b0b8c651 100644 --- a/src/apps/companies/apps/activity-feed/router.js +++ b/src/apps/companies/apps/activity-feed/router.js @@ -2,12 +2,8 @@ const router = require('express').Router() const urls = require('../../../../lib/urls') const { convertQueryTypes } = require('./translators') -const { - renderActivityFeed, - fetchActivityFeedHandler, -} = require('./controllers') +const { fetchActivityFeedHandler } = require('./controllers') -router.get(urls.companies.activity.index.route, renderActivityFeed) router.get( urls.companies.activity.data.route, convertQueryTypes, diff --git a/src/apps/companies/apps/activity-feed/views/client-container.njk b/src/apps/companies/apps/activity-feed/views/client-container.njk deleted file mode 100644 index d81570c66d4..00000000000 --- a/src/apps/companies/apps/activity-feed/views/client-container.njk +++ /dev/null @@ -1,10 +0,0 @@ -{% extends "_layouts/template-no-local-header.njk" %} - -{% block body %} - - {% component 'react-slot', { - id: 'activity-feed-app', - props: props - } %} - -{% endblock %} diff --git a/src/apps/routers.js b/src/apps/routers.js index dfc8d334b6b..5e9e44723f2 100644 --- a/src/apps/routers.js +++ b/src/apps/routers.js @@ -113,6 +113,7 @@ const reactRoutes = [ '/companies/:companyId/business-details', '/companies/:companyId/hierarchies/ghq/:globalHqId/add', '/companies/:companyId/hierarchies/ghq/remove', + '/companies/:companyId/activity', ] reactRoutes.forEach((path) => { diff --git a/src/client/components/ActivityFeed/CollectionList/index.jsx b/src/client/components/ActivityFeed/CollectionList/index.jsx index 0e93f6ae681..7bb2d2c4168 100644 --- a/src/client/components/ActivityFeed/CollectionList/index.jsx +++ b/src/client/components/ActivityFeed/CollectionList/index.jsx @@ -1,6 +1,7 @@ import React from 'react' import { connect } from 'react-redux' import styled from 'styled-components' +import { useParams } from 'react-router-dom' import { COMPANY_ACTIVITIES__LOADED, @@ -36,7 +37,8 @@ import { sanitizeFilter } from '../../../../client/filters' import Activity from '../Activity' import { CompanyResource } from '../../Resource' -import CompanyLayout from '../../Layout/CompanyLayout' +import DefaultLayoutBase from '../../Layout/DefaultLayoutBase' +import CompanyLayoutNew from '../../Layout/CompanyLayoutNew' const FiltersCheckboxGroupWithNext = styled(Filters.CheckboxGroup)({ marginBottom: 0, @@ -57,7 +59,6 @@ const collectionItemTemplateDefault = (activity) => { const CompanyActivityCollection = ({ payload, - companyId, company, optionMetadata, selectedFilters, @@ -67,7 +68,9 @@ const CompanyActivityCollection = ({ returnUrl, ...props }) => { - const collectionListTask = { + const { companyId } = useParams() + + const collectionListTask = (company) => ({ name: TASK_GET_COMPANY_ACTIVITIES_LIST, id: ID, progressMessage: 'Loading interactions', @@ -79,7 +82,8 @@ const CompanyActivityCollection = ({ }, onSuccessDispatch: COMPANY_ACTIVITIES__LOADED, }, - } + }) + const adviserListTask = { name: TASK_GET_COMPANY_ACTIVITIES_ADVISER_NAME, id: ID, @@ -124,97 +128,100 @@ const CompanyActivityCollection = ({ } return ( - - {(company) => ( - - ({ - ...sanitizeFilter(advisers), - ...sanitizeFilter(teams), - })} - collectionItemTemplate={collectionItemTemplateDefault} + + + {(company) => ( + - - - - - - {dnbHierarchyCount > 0 && ( - ({ + ...sanitizeFilter(advisers), + ...sanitizeFilter(teams), + })} + collectionItemTemplate={collectionItemTemplateDefault} + > + + - )} - - + + + {dnbHierarchyCount > 0 && ( + + )} + + + + - - - - - - )} - + + + + )} + + ) } diff --git a/src/client/components/Layout/CompanyLayoutNew.jsx b/src/client/components/Layout/CompanyLayoutNew.jsx index 3c4066f9793..c05f91d92c0 100644 --- a/src/client/components/Layout/CompanyLayoutNew.jsx +++ b/src/client/components/Layout/CompanyLayoutNew.jsx @@ -3,9 +3,8 @@ import PropTypes from 'prop-types' import GridCol from '@govuk-react/grid-col' import GridRow from '@govuk-react/grid-row' -import { CompanyTabbedLocalNavigation, Main } from '..' +import { CompanyLocalHeader, CompanyTabbedLocalNavigation, Main } from '..' import CompanyInvestmentSubNavigation from '../CompanyTabbedLocalNavigation/CompanyInvestmentTab' -import CompanyLocalHeader from '../CompanyLocalHeader' const CompanyLayoutNew = ({ company, diff --git a/src/client/index.jsx b/src/client/index.jsx index 59db06e91cb..df0098761a2 100644 --- a/src/client/index.jsx +++ b/src/client/index.jsx @@ -11,7 +11,6 @@ import { default as DataHubHeaderWrapper } from './components/DataHubHeader/Wrap import Provider from './provider' import AddCompanyForm from '../apps/companies/apps/add-company/client/AddCompanyForm' import InteractionDetailsForm from '../apps/interactions/apps/details-form/client/InteractionDetailsForm' -import CompanyActivityCollection from './components/ActivityFeed/CollectionList' import EditCompanyForm from '../apps/companies/apps/edit-company/client/EditCompanyForm' import CompanyEditHistory from '../apps/companies/apps/edit-history/client/CompanyEditHistory' import FindCompany from '../apps/companies/apps/match-company/client/FindCompany' @@ -152,14 +151,6 @@ function App() { )} - - {(props) => ( - - )} - {(props) => ( ( + <> + + + +) + const ActivityCard = (props) => { const { company, numberOfItems, feedType } = props @@ -48,7 +64,7 @@ const ActivityCard = (props) => { Date: Thu, 18 Jan 2024 10:55:56 +0000 Subject: [PATCH 3/6] Migrate contact tab to React Router --- src/apps/companies/__test__/router.test.js | 1 - src/apps/companies/controllers/contacts.js | 18 ---- src/apps/companies/router.js | 3 - src/apps/companies/views/contacts.njk | 9 -- src/apps/routers.js | 1 + src/client/index.jsx | 4 - .../CompanyContactsCollection.jsx | 88 +++++++++++-------- src/client/routes.js | 6 ++ 8 files changed, 56 insertions(+), 74 deletions(-) delete mode 100644 src/apps/companies/controllers/contacts.js delete mode 100644 src/apps/companies/views/contacts.njk diff --git a/src/apps/companies/__test__/router.test.js b/src/apps/companies/__test__/router.test.js index 6f83484c85d..ea963b02f79 100644 --- a/src/apps/companies/__test__/router.test.js +++ b/src/apps/companies/__test__/router.test.js @@ -10,7 +10,6 @@ describe('Company router', () => { '/:companyId', '/:companyId/details', '/:companyId/hierarchies/subsidiaries/:subsidiaryCompanyId/add', - '/:companyId/contacts', '/:companyId/orders', '/:companyId/manage-company-list', '/:companyId/subsidiaries', diff --git a/src/apps/companies/controllers/contacts.js b/src/apps/companies/controllers/contacts.js deleted file mode 100644 index e7eb5d9006f..00000000000 --- a/src/apps/companies/controllers/contacts.js +++ /dev/null @@ -1,18 +0,0 @@ -function renderContacts(req, res) { - const { company, returnUrl, dnbRelatedCompaniesCount } = res.locals - - res.locals.title = `Contacts - ${company.name} - Companies` - - res.render('companies/views/contacts', { - props: { - companyId: company.id, - returnUrl, - dnbRelatedCompaniesCount, - localNavItems: res.locals.localNavItems, - }, - }) -} - -module.exports = { - renderContacts, -} diff --git a/src/apps/companies/router.js b/src/apps/companies/router.js index 008218b0f59..50c9ed5e7c4 100644 --- a/src/apps/companies/router.js +++ b/src/apps/companies/router.js @@ -14,7 +14,6 @@ const { renderDetails } = require('./controllers/details') const { renderOrders } = require('./controllers/orders') const { archiveCompany, unarchiveCompany } = require('./controllers/archive') -const { renderContacts } = require('./controllers/contacts') const { renderSubsidiaries } = require('./controllers/subsidiaries') const { @@ -83,8 +82,6 @@ router.get(urls.companies.details.route, renderDetails) router.get(urls.companies.hierarchies.subsidiaries.add.route, addSubsidiary) -router.get(urls.companies.contacts.route, setReturnUrl, renderContacts) - router.get(urls.companies.orders.route, setReturnUrl, renderOrders) router.use( urls.companies.investments.companyInvestment.route, diff --git a/src/apps/companies/views/contacts.njk b/src/apps/companies/views/contacts.njk deleted file mode 100644 index 762a1e53096..00000000000 --- a/src/apps/companies/views/contacts.njk +++ /dev/null @@ -1,9 +0,0 @@ -{% extends "_layouts/template-no-local-header.njk" %} - -{% block body %} - {% component 'react-slot', { - id: 'company-contacts-collection', - props: props - } %} - -{% endblock %} diff --git a/src/apps/routers.js b/src/apps/routers.js index 5e9e44723f2..6f744c15d4e 100644 --- a/src/apps/routers.js +++ b/src/apps/routers.js @@ -114,6 +114,7 @@ const reactRoutes = [ '/companies/:companyId/hierarchies/ghq/:globalHqId/add', '/companies/:companyId/hierarchies/ghq/remove', '/companies/:companyId/activity', + '/companies/:companyId/contacts', ] reactRoutes.forEach((path) => { diff --git a/src/client/index.jsx b/src/client/index.jsx index df0098761a2..af94958f9f7 100644 --- a/src/client/index.jsx +++ b/src/client/index.jsx @@ -30,7 +30,6 @@ import FlashMessages from './components/LocalHeader/FlashMessages.jsx' import PersonalisedDashboard from './components/PersonalisedDashboard' import CompanyOrdersCollection from '../client/modules/Omis/CollectionList/CompanyOrdersCollection' import InvestmentProjectForm from '../apps/investments/client/projects/create/InvestmentProjectForm' -import CompaniesContactsCollection from '../client/modules/Contacts/CollectionList/CompanyContactsCollection.jsx' import ContactActivity from './modules/Contacts/ContactActivity/ContactActivity' import ContactLocalHeader from './components/ContactLocalHeader' import ContactDetails from './modules/Contacts/ContactDetails/ContactDetails' @@ -225,9 +224,6 @@ function App() { {(props) => } - - {(props) => } - {(props) => ( { + const { companyId } = useParams() + const collectionListTask = { name: TASK_GET_CONTACTS_LIST, id: COMPANY_CONTACTS_LIST_ID, progressMessage: 'loading contacts', + renderProgress: listSkeletonPlaceholder(), startOnRender: { payload: { ...payload, @@ -35,43 +40,48 @@ const CompanyContactsCollection = ({ } return ( - - {(company) => ( - - {company.archived && ( -
- Contacts cannot be added to an archived company.{' '} - - Click here to unarchive - -
- )} - -
- )} -
+ + + {(company) => ( + + {company.archived && ( +
+ Contacts cannot be added to an archived company.{' '} + + Click here to unarchive + +
+ )} + +
+ )} +
+
) } diff --git a/src/client/routes.js b/src/client/routes.js index 1cece236d90..932b958c88a 100644 --- a/src/client/routes.js +++ b/src/client/routes.js @@ -86,6 +86,7 @@ import CompanyBusinessDetails from './modules/Companies/CompanyBusinessDetails/C import SetGlobalHQ from './modules/Companies/CompanyBusinessDetails/LinkGlobalHQ/SetGlobalHQ' import RemoveGlobalHQ from './modules/Companies/CompanyBusinessDetails/LinkGlobalHQ/RemoveGlobalHQ' import CompanyActivityCollection from './components/ActivityFeed/CollectionList/index' +import CompanyContactsCollection from './modules/Contacts/CollectionList/CompanyContactsCollection' const routes = { companies: [ @@ -194,6 +195,11 @@ const routes = { module: 'datahub:companies', component: CompanyActivityCollection, }, + { + path: '/companies/:companyId/contacts', + module: 'datahub:companies', + component: CompanyContactsCollection, + }, ], contacts: [ { From 0cfb608204ce5be9ae3238a903575e59ccc37790 Mon Sep 17 00:00:00 2001 From: Christopher Sunkel Date: Thu, 18 Jan 2024 11:08:21 +0000 Subject: [PATCH 4/6] Migrate orders tab to React Router --- src/apps/companies/__test__/router.test.js | 1 - src/apps/companies/controllers/orders.js | 18 ---- src/apps/companies/router.js | 2 - src/apps/companies/views/orders.njk | 9 -- src/apps/routers.js | 1 + src/client/index.jsx | 4 - .../CompanyOrdersCollection.jsx | 86 ++++++++++--------- src/client/routes.js | 6 ++ .../specs/companies/omis-collection-spec.js | 5 +- 9 files changed, 56 insertions(+), 76 deletions(-) delete mode 100644 src/apps/companies/controllers/orders.js delete mode 100644 src/apps/companies/views/orders.njk diff --git a/src/apps/companies/__test__/router.test.js b/src/apps/companies/__test__/router.test.js index ea963b02f79..c619863910a 100644 --- a/src/apps/companies/__test__/router.test.js +++ b/src/apps/companies/__test__/router.test.js @@ -10,7 +10,6 @@ describe('Company router', () => { '/:companyId', '/:companyId/details', '/:companyId/hierarchies/subsidiaries/:subsidiaryCompanyId/add', - '/:companyId/orders', '/:companyId/manage-company-list', '/:companyId/subsidiaries', ]) diff --git a/src/apps/companies/controllers/orders.js b/src/apps/companies/controllers/orders.js deleted file mode 100644 index 81ba08885ae..00000000000 --- a/src/apps/companies/controllers/orders.js +++ /dev/null @@ -1,18 +0,0 @@ -function renderOrders(req, res) { - const { company, returnUrl, dnbRelatedCompaniesCount } = res.locals - - res.locals.title = `Orders - ${company.name} - Companies` - - res.render('companies/views/orders', { - props: { - companyId: company.id, - returnUrl, - dnbRelatedCompaniesCount, - localNavItems: res.locals.localNavItems, - }, - }) -} - -module.exports = { - renderOrders, -} diff --git a/src/apps/companies/router.js b/src/apps/companies/router.js index 50c9ed5e7c4..1f66efc0ca2 100644 --- a/src/apps/companies/router.js +++ b/src/apps/companies/router.js @@ -12,7 +12,6 @@ const { const { renderDetails } = require('./controllers/details') -const { renderOrders } = require('./controllers/orders') const { archiveCompany, unarchiveCompany } = require('./controllers/archive') const { renderSubsidiaries } = require('./controllers/subsidiaries') @@ -82,7 +81,6 @@ router.get(urls.companies.details.route, renderDetails) router.get(urls.companies.hierarchies.subsidiaries.add.route, addSubsidiary) -router.get(urls.companies.orders.route, setReturnUrl, renderOrders) router.use( urls.companies.investments.companyInvestment.route, setReturnUrl, diff --git a/src/apps/companies/views/orders.njk b/src/apps/companies/views/orders.njk deleted file mode 100644 index 0a87f7e97af..00000000000 --- a/src/apps/companies/views/orders.njk +++ /dev/null @@ -1,9 +0,0 @@ -{% extends "_layouts/template-no-local-header.njk" %} - -{% block body %} - {% component 'react-slot', { - id: 'company-orders-collection', - props: props - } %} - -{% endblock %} diff --git a/src/apps/routers.js b/src/apps/routers.js index 6f744c15d4e..dac3c105423 100644 --- a/src/apps/routers.js +++ b/src/apps/routers.js @@ -115,6 +115,7 @@ const reactRoutes = [ '/companies/:companyId/hierarchies/ghq/remove', '/companies/:companyId/activity', '/companies/:companyId/contacts', + '/companies/:companyId/orders', ] reactRoutes.forEach((path) => { diff --git a/src/client/index.jsx b/src/client/index.jsx index af94958f9f7..cc79b3c8f52 100644 --- a/src/client/index.jsx +++ b/src/client/index.jsx @@ -28,7 +28,6 @@ import InteractionReferralDetails from './modules/Interactions/InteractionDetail import InvestmentProjectAdmin from '../apps/investments/views/admin/client/InvestmentProjectAdmin.jsx' import FlashMessages from './components/LocalHeader/FlashMessages.jsx' import PersonalisedDashboard from './components/PersonalisedDashboard' -import CompanyOrdersCollection from '../client/modules/Omis/CollectionList/CompanyOrdersCollection' import InvestmentProjectForm from '../apps/investments/client/projects/create/InvestmentProjectForm' import ContactActivity from './modules/Contacts/ContactActivity/ContactActivity' import ContactLocalHeader from './components/ContactLocalHeader' @@ -232,9 +231,6 @@ function App() { /> )}
- - {(props) => } - {(props) => } diff --git a/src/client/modules/Omis/CollectionList/CompanyOrdersCollection.jsx b/src/client/modules/Omis/CollectionList/CompanyOrdersCollection.jsx index c090649e002..c85e4b67d9a 100644 --- a/src/client/modules/Omis/CollectionList/CompanyOrdersCollection.jsx +++ b/src/client/modules/Omis/CollectionList/CompanyOrdersCollection.jsx @@ -5,13 +5,15 @@ import { Link, Details } from 'govuk-react' import { H3 } from '@govuk-react/heading' import { HEADING_SIZES } from '@govuk-react/constants' import VisuallyHidden from '@govuk-react/visually-hidden' +import { useParams } from 'react-router-dom' import { ORDERS__LOADED } from '../../../actions' import { FilteredCollectionList } from '../../../components' import { listSkeletonPlaceholder } from '../../../components/SkeletonPlaceholder' import { CompanyResource } from '../../../components/Resource' -import CompanyLayout from '../../../components/Layout/CompanyLayout' +import CompanyLayoutNew from '../../../components/Layout/CompanyLayoutNew' +import DefaultLayoutBase from '../../../components/Layout/DefaultLayoutBase' import { companyOrdersState2props, @@ -34,13 +36,14 @@ const StyledLinkHeader = styled(StyledHeader)` ` const CompanyOrdersCollection = ({ - companyId, payload, optionMetadata, selectedFilters, returnUrl, ...props }) => { + const { companyId } = useParams() + const collectionListTask = { name: TASK_GET_ORDERS_LIST, id: COMPANY_ORDERS_LIST_ID, @@ -64,44 +67,47 @@ const CompanyOrdersCollection = ({ ) return ( - - {(company) => ( - - {company.archived && ( -
- Orders cannot be added to an archived company.{' '} - - Click here to unarchive - -
- )} - -
- )} -
+ + + {(company) => ( + + {company.archived && ( +
+ Orders cannot be added to an archived company.{' '} + + Click here to unarchive + +
+ )} + +
+ )} +
+
) } diff --git a/src/client/routes.js b/src/client/routes.js index 932b958c88a..305645b4dda 100644 --- a/src/client/routes.js +++ b/src/client/routes.js @@ -87,6 +87,7 @@ import SetGlobalHQ from './modules/Companies/CompanyBusinessDetails/LinkGlobalHQ import RemoveGlobalHQ from './modules/Companies/CompanyBusinessDetails/LinkGlobalHQ/RemoveGlobalHQ' import CompanyActivityCollection from './components/ActivityFeed/CollectionList/index' import CompanyContactsCollection from './modules/Contacts/CollectionList/CompanyContactsCollection' +import CompanyOrdersCollection from './modules/Omis/CollectionList/CompanyOrdersCollection' const routes = { companies: [ @@ -200,6 +201,11 @@ const routes = { module: 'datahub:companies', component: CompanyContactsCollection, }, + { + path: '/companies/:companyId/orders', + module: 'datahub:companies', + component: CompanyOrdersCollection, + }, ], contacts: [ { diff --git a/test/functional/cypress/specs/companies/omis-collection-spec.js b/test/functional/cypress/specs/companies/omis-collection-spec.js index 88c2f2fbac7..c6d114cd6a5 100644 --- a/test/functional/cypress/specs/companies/omis-collection-spec.js +++ b/test/functional/cypress/specs/companies/omis-collection-spec.js @@ -205,11 +205,12 @@ describe('Company Orders (OMIS) Collection Page', () => { total_subtotal_cost: 23218.0, }, }, - }).as('apiRequest') + }).as('archivedApiRequest') cy.visit(urls.companies.orders(archivedLtd.id)) - assertPayload('@apiRequest', { + assertPayload('@archivedApiRequest', { offset: 0, limit: 10, + sortby: 'created_on:desc', company: archivedLtd.id, }) }) From 7a3e0a6d95a056abc64ce6a5d2d911305f47713d Mon Sep 17 00:00:00 2001 From: Christopher Sunkel Date: Fri, 19 Jan 2024 11:25:25 +0000 Subject: [PATCH 5/6] Exclude add/remove global HQ urls from a11y suite --- test/a11y/cypress/config/urlTestExclusions.js | 2 ++ test/a11y/cypress/specs/all-accessibility.spec.js | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/test/a11y/cypress/config/urlTestExclusions.js b/test/a11y/cypress/config/urlTestExclusions.js index df926f5e53a..7f1b2ce8717 100644 --- a/test/a11y/cypress/config/urlTestExclusions.js +++ b/test/a11y/cypress/config/urlTestExclusions.js @@ -127,6 +127,8 @@ export const urlTestExclusions = [ url: '/investments/projects/:investmentId/propositions/:propositionId/complete', }, { url: '/investments/projects/:investmentId/propositions/:propositionId' }, + { url: '/companies/:companyId/hierarchies/ghq/:globalHqId/add' }, + { url: '/companies/:companyId/hierarchies/ghq/remove' }, // 501 errors { url: '/api-proxy/v4/company/:companyId/export-win' }, { url: '/investments/projects/:projectId/edit-ukcompany/:companyId' }, diff --git a/test/a11y/cypress/specs/all-accessibility.spec.js b/test/a11y/cypress/specs/all-accessibility.spec.js index 0162a30c1b2..f0c0b332d3a 100644 --- a/test/a11y/cypress/specs/all-accessibility.spec.js +++ b/test/a11y/cypress/specs/all-accessibility.spec.js @@ -2,7 +2,7 @@ import urls from '../../../../src/lib/urls' import { urlTestExclusions } from '../config/urlTestExclusions' import { cleanseArrayOfUrls, createArrayOfUrls } from '../config/utils' -const arrayOfUrls = createArrayOfUrls(urls) +const arrayOfUrls = createArrayOfUrls(urls.companies.hierarchies) const filteredArrayOfUrls = cleanseArrayOfUrls(arrayOfUrls, urlTestExclusions) From 5c0a479d5aefbe6232b3285f62a7a244568839ff Mon Sep 17 00:00:00 2001 From: Christopher Sunkel Date: Mon, 22 Jan 2024 11:43:04 +0000 Subject: [PATCH 6/6] Fixup! update prop type --- src/client/components/Layout/CompanyLayoutNew.jsx | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/client/components/Layout/CompanyLayoutNew.jsx b/src/client/components/Layout/CompanyLayoutNew.jsx index c05f91d92c0..032d127640f 100644 --- a/src/client/components/Layout/CompanyLayoutNew.jsx +++ b/src/client/components/Layout/CompanyLayoutNew.jsx @@ -45,7 +45,10 @@ const CompanyLayoutNew = ({ CompanyLayoutNew.propTypes = { company: PropTypes.object.isRequired, - children: PropTypes.element.isRequired, + children: PropTypes.oneOfType([ + PropTypes.element, + PropTypes.arrayOf(PropTypes.element), + ]).isRequired, isInvestment: PropTypes.bool, isLCP: PropTypes.bool, }