Skip to content

Commit e5d1630

Browse files
tvijay-akamaipmakode-akamaiharsh-akamai
authored
fix: [UIE-10240] - Bug fixes and add route to Contact Sales drawer (#13398)
* fix: [UIE-10240] fixed bug and added route to contact sales drawer * Fix paddings, routings and avoid typecasting * fix pendo ids for contact sales drawer * fix: [UIE-10240] minor content fixes --------- Co-authored-by: pmakode-akamai <pmakode@akamai.com> Co-authored-by: hrao <hrao@akamai.com>
1 parent 32c4c5e commit e5d1630

File tree

15 files changed

+121
-102
lines changed

15 files changed

+121
-102
lines changed

packages/manager/src/features/Marketplace/MarketplaceLanding/MarketplaceLanding.tsx

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -147,9 +147,8 @@ export const MarketplaceLanding = () => {
147147
return (
148148
<Box
149149
sx={(theme) => ({
150-
px: {
151-
sm: theme.spacingFunction(16),
152-
xs: theme.spacingFunction(12),
150+
[theme.breakpoints.down('md')]: {
151+
px: theme.spacingFunction(8),
153152
},
154153
// Adjust Breadcrumb's marginLeft on screens < md to keep it aligned with the Products
155154
'& [data-qa-entity-header]': {

packages/manager/src/features/Marketplace/MarketplaceLanding/ProductSelectionCard.tsx

Lines changed: 16 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -87,27 +87,22 @@ export const ProductSelectionCard = React.memo(
8787
{truncate(description, 200)}
8888
</Typography>,
8989
// Type chip (as last element with absolute positioning at bottom)
90-
...(type
91-
? [
92-
<Box
93-
key="category"
94-
sx={(theme) => ({
95-
bottom: theme.spacingFunction(16),
96-
left: theme.spacingFunction(20),
97-
position: 'absolute',
98-
})}
99-
>
100-
<Chip
101-
label={type}
102-
sx={(theme) => ({
103-
backgroundColor:
104-
theme.tokens.alias.Background.Informativesubtle,
105-
fontSize: theme.tokens.font.FontSize.Xxxs,
106-
})}
107-
/>
108-
</Box>,
109-
]
110-
: []),
90+
<Box
91+
key="type"
92+
sx={(theme) => ({
93+
bottom: theme.spacingFunction(16),
94+
left: theme.spacingFunction(20),
95+
position: 'absolute',
96+
})}
97+
>
98+
<Chip
99+
label={type}
100+
sx={(theme) => ({
101+
backgroundColor: theme.tokens.alias.Background.Informativesubtle,
102+
fontSize: theme.tokens.font.FontSize.Xxxs,
103+
})}
104+
/>
105+
</Box>,
111106
],
112107
[companyName, description, type]
113108
);

packages/manager/src/features/Marketplace/ProductDetails/ContactSalesDrawer.tsx

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -292,8 +292,7 @@ export const ContactSalesDrawer = (props: ContactSalesDrawerProps) => {
292292
hideLabel: true,
293293
inputRef: field.ref,
294294
inputProps: {
295-
'data-pendo-id':
296-
'Cloud Marketplace Contact Sales-Region-Input',
295+
'data-pendo-id': 'Cloud Marketplace Contact Sales-Region',
297296
},
298297
InputProps: {
299298
startAdornment: selectedCountry && (
@@ -382,7 +381,7 @@ export const ContactSalesDrawer = (props: ContactSalesDrawerProps) => {
382381
inputRef: field.ref,
383382
inputProps: {
384383
'data-pendo-id':
385-
'Cloud Marketplace Contact Sales Phone number-Code-Input',
384+
'Cloud Marketplace Contact Sales-Country Code',
386385
},
387386
InputProps: {
388387
startAdornment: selectedPhoneCountry && (
@@ -423,7 +422,7 @@ export const ContactSalesDrawer = (props: ContactSalesDrawerProps) => {
423422
slotProps={{
424423
htmlInput: {
425424
'data-pendo-id':
426-
'Cloud Marketplace Contact Sales Phone number-Number',
425+
'Cloud Marketplace Contact Sales-Phone Number',
427426
},
428427
}}
429428
type="tel"

packages/manager/src/features/Marketplace/ProductDetails/ProductDetails.tsx

Lines changed: 29 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import {
77
Typography,
88
} from '@linode/ui';
99
import { useTheme } from '@mui/material/styles';
10-
import { useParams } from '@tanstack/react-router';
10+
import { useMatchRoute, useNavigate, useParams } from '@tanstack/react-router';
1111
import * as React from 'react';
1212

1313
import { DocumentTitleSegment } from 'src/components/DocumentTitle';
@@ -38,7 +38,12 @@ export const ProductDetails = () => {
3838
from: '/cloud-marketplace/catalog/$productId',
3939
});
4040
const theme = useTheme();
41-
const [openContactSales, setOpenContactSales] = React.useState(false);
41+
const navigate = useNavigate();
42+
const matchRoute = useMatchRoute();
43+
44+
const isContactSalesOpen = Boolean(
45+
matchRoute({ to: '/cloud-marketplace/catalog/$productId/contact-sales' })
46+
);
4247

4348
const product = React.useMemo(() => getProductById(productId), [productId]);
4449

@@ -67,9 +72,19 @@ export const ProductDetails = () => {
6772
// Tab content is optional. If not present for this product, we still show the page.
6873
const details = getProductTabDetails(productId);
6974

70-
// Contact sales handler placeholder - will be implemented in a future ticket
75+
// Contact sales handler - navigates to contact-sales URL to open drawer
7176
const handleContactSales = () => {
72-
setOpenContactSales(true);
77+
navigate({
78+
params: { productId },
79+
to: '/cloud-marketplace/catalog/$productId/contact-sales',
80+
});
81+
};
82+
83+
const handleCloseContactSales = () => {
84+
navigate({
85+
params: { productId },
86+
to: '/cloud-marketplace/catalog/$productId',
87+
});
7388
};
7489

7590
return (
@@ -82,7 +97,13 @@ export const ProductDetails = () => {
8297
},
8398
})}
8499
>
85-
<DocumentTitleSegment segment={`${product.name} - Details`} />
100+
<DocumentTitleSegment
101+
segment={
102+
isContactSalesOpen
103+
? `${product.name} - Contact Sales`
104+
: `${product.name} - Details`
105+
}
106+
/>
86107
<LandingHeader
87108
breadcrumbProps={{
88109
crumbOverrides: [
@@ -99,11 +120,8 @@ export const ProductDetails = () => {
99120
label: 'Catalog',
100121
position: 2,
101122
},
102-
{
103-
label: product.name,
104-
position: 3,
105-
},
106123
],
124+
labelTitle: product.name,
107125
pathname: `/cloud-marketplace/catalog/${productId}`,
108126
}}
109127
/>
@@ -237,10 +255,8 @@ export const ProductDetails = () => {
237255
)}
238256
</ProductDetailsContainer>
239257
<ContactSalesDrawer
240-
onClose={() => {
241-
setOpenContactSales(false);
242-
}}
243-
open={openContactSales}
258+
onClose={handleCloseContactSales}
259+
open={isContactSalesOpen}
244260
partnerName={product.partner.name}
245261
productName={product.name}
246262
/>

packages/manager/src/features/Marketplace/ProductDetails/pages/cambria-stream.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ Together, Cambria Stream and Cambria Cluster are well suited to enterprise envir
1010
### **Key features**
1111
1212
* **Scalable live encoding and packaging:** Encode and package live streams using modern formats including HLS, DASH, and CMAF, scaling horizontally to meet channel and event demand.
13-
* **High-performance file transcoding:** Transcode professional video formats including AVC, HEVC, HDR, and broadcast mezzanine inputs with consistent quality and predictable throughput**.**
13+
* **High-performance file transcoding:** Transcode professional video formats including AVC, HEVC, HDR, and broadcast mezzanine inputs with consistent quality and predictable throughput.
1414
* **Cloud, on-prem, and hybrid deployment:** Run the same software across customer-managed infrastructure, public cloud, or hybrid environments without architectural changes or retooling.
1515
* **Containerised and Kubernetes-ready:** Deploy using Docker and orchestrate at scale with Kubernetes for automated scheduling, resiliency, and efficient resource utilisation.
1616
* **Centralised orchestration and load balancing:** Use Cambria Cluster to distribute jobs, monitor nodes, and balance workloads across multiple transcoding instances and locations.

0 commit comments

Comments
 (0)