Skip to content

Commit d6f5648

Browse files
committed
Add opportunity application button to dashboard.
1 parent fcce43b commit d6f5648

File tree

1 file changed

+29
-0
lines changed

1 file changed

+29
-0
lines changed

src/domain/journey/opportunity/pages/OpportunityDashboardPage.tsx

+29
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,11 @@ import JourneyDashboardWelcomeBlock from '../../common/journeyDashboardWelcomeBl
1515
import useDirectMessageDialog from '../../../communication/messaging/DirectMessaging/useDirectMessageDialog';
1616
import { useTranslation } from 'react-i18next';
1717
import { buildUpdatesUrl } from '../../../../main/routing/urlBuilders';
18+
import OpportunityApplicationButtonContainer from '../../../community/application/containers/OpportunityApplicationButtonContainer';
19+
import OpportunityApplicationButton from '../../../community/application/applicationButton/OpportunityApplicationButton';
20+
import PageContentColumn from '../../../../core/ui/content/PageContentColumn';
21+
import FullWidthButton from '../../../../core/ui/button/FullWidthButton';
22+
import { Theme, useMediaQuery } from '@mui/material';
1823

1924
export interface OpportunityDashboardPageProps {
2025
dialog?: 'updates' | 'contributors' | 'calendar';
@@ -37,6 +42,7 @@ const OpportunityDashboardPage: FC<OpportunityDashboardPageProps> = ({ dialog })
3742
throw new Error('Must be within a Space route.');
3843
}
3944
const shareUpdatesUrl = buildUpdatesUrl({ spaceNameId, challengeNameId, opportunityNameId });
45+
const hasExtendedApplicationButton = useMediaQuery((theme: Theme) => theme.breakpoints.up('sm'));
4046

4147
return (
4248
<OpportunityPageLayout currentSection={EntityPageSection.Dashboard}>
@@ -45,6 +51,29 @@ const OpportunityDashboardPage: FC<OpportunityDashboardPageProps> = ({ dialog })
4551
{({ callouts, ...entities }, state) => (
4652
<>
4753
<JourneyDashboardView
54+
ribbon={
55+
<OpportunityApplicationButtonContainer
56+
challengeNameId={challengeNameId}
57+
opportunityNameId={opportunityNameId}
58+
>
59+
{({ applicationButtonProps, state: { loading } }) => {
60+
if (loading || applicationButtonProps.isMember) {
61+
return null;
62+
}
63+
64+
return (
65+
<PageContentColumn columns={12}>
66+
<OpportunityApplicationButton
67+
{...applicationButtonProps}
68+
loading={loading}
69+
component={FullWidthButton}
70+
extended={hasExtendedApplicationButton}
71+
/>
72+
</PageContentColumn>
73+
);
74+
}}
75+
</OpportunityApplicationButtonContainer>
76+
}
4877
welcome={
4978
<JourneyDashboardWelcomeBlock
5079
vision={entities.opportunity?.context?.vision ?? ''}

0 commit comments

Comments
 (0)