From d93cd5448c2d8e22f3cf9415e5d1c03d83ebc8e6 Mon Sep 17 00:00:00 2001
From: Adam Brauer <400763+ambrauer@users.noreply.github.com>
Date: Mon, 7 Feb 2022 14:15:06 -0600
Subject: [PATCH 1/2] Handle `querystring` value in React Link
---
packages/sitecore-jss-react/src/components/Link.test.tsx | 3 ++-
packages/sitecore-jss-react/src/components/Link.tsx | 3 ++-
2 files changed, 4 insertions(+), 2 deletions(-)
diff --git a/packages/sitecore-jss-react/src/components/Link.test.tsx b/packages/sitecore-jss-react/src/components/Link.test.tsx
index c30bfc57d1..8eef32bb9b 100644
--- a/packages/sitecore-jss-react/src/components/Link.test.tsx
+++ b/packages/sitecore-jss-react/src/components/Link.test.tsx
@@ -68,10 +68,11 @@ describe('', () => {
class: 'my-link',
title: 'My Link',
target: '_blank',
+ querystring: 'foo=bar',
},
};
const rendered = mount().find('a');
- expect(rendered.html()).to.contain(`href="${field.value.href}"`);
+ expect(rendered.html()).to.contain(`href="${field.value.href}?${field.value.querystring}"`);
expect(rendered.html()).to.contain(`class="${field.value.class}"`);
expect(rendered.html()).to.contain(`title="${field.value.title}"`);
expect(rendered.html()).to.contain(`target="${field.value.target}"`);
diff --git a/packages/sitecore-jss-react/src/components/Link.tsx b/packages/sitecore-jss-react/src/components/Link.tsx
index dfcdf91490..5412fb9b88 100644
--- a/packages/sitecore-jss-react/src/components/Link.tsx
+++ b/packages/sitecore-jss-react/src/components/Link.tsx
@@ -9,6 +9,7 @@ export interface LinkFieldValue {
title?: string;
target?: string;
text?: string;
+ querystring?: string;
}
export interface LinkField {
@@ -94,7 +95,7 @@ export const Link: React.SFC = ({
}
const anchorAttrs: { [attr: string]: unknown } = {
- href: link.href,
+ href: link.querystring ? `${link.href}?${link.querystring}` : link.href,
className: link.class,
title: link.title,
target: link.target,
From bc68c4620fb999ebb46bc3ecdafb0032324e3da5 Mon Sep 17 00:00:00 2001
From: Adam Brauer <400763+ambrauer@users.noreply.github.com>
Date: Mon, 7 Feb 2022 14:16:25 -0600
Subject: [PATCH 2/2] Handle `querystring` value in Next Link. Remove `field`
prop from htmlLinkProps.
---
.../src/components/Link.test.tsx | 3 ++-
.../src/components/Link.tsx | 19 ++++++++++---------
2 files changed, 12 insertions(+), 10 deletions(-)
diff --git a/packages/sitecore-jss-nextjs/src/components/Link.test.tsx b/packages/sitecore-jss-nextjs/src/components/Link.test.tsx
index a44b753279..f36affbc9c 100644
--- a/packages/sitecore-jss-nextjs/src/components/Link.test.tsx
+++ b/packages/sitecore-jss-nextjs/src/components/Link.test.tsx
@@ -41,6 +41,7 @@ describe('', () => {
class: 'my-link',
title: 'My Link',
target: '_blank',
+ querystring: 'foo=bar',
},
};
@@ -52,7 +53,7 @@ describe('', () => {
const link = c.find('a');
- expect(link.html()).to.contain(`href="${field.value.href}"`);
+ expect(link.html()).to.contain(`href="${field.value.href}?${field.value.querystring}"`);
expect(link.html()).to.contain(`class="${field.value.class}"`);
expect(link.html()).to.contain(`title="${field.value.title}"`);
expect(link.html()).to.contain(`target="${field.value.target}"`);
diff --git a/packages/sitecore-jss-nextjs/src/components/Link.tsx b/packages/sitecore-jss-nextjs/src/components/Link.tsx
index 07f1de49dc..334acfa552 100644
--- a/packages/sitecore-jss-nextjs/src/components/Link.tsx
+++ b/packages/sitecore-jss-nextjs/src/components/Link.tsx
@@ -19,29 +19,30 @@ export type LinkProps = ReactLinkProps & {
export const Link = (props: LinkProps): JSX.Element => {
const {
+ field,
editable,
+ children,
internalLinkMatcher = /^\//g,
showLinkTextWithChildrenPresent,
...htmlLinkProps
} = props;
- const value = ((props.field as LinkFieldValue).href
- ? props.field
- : (props.field as LinkField).value) as LinkFieldValue;
- const { href } = value;
- const isEditing = editable && (props.field as LinkFieldValue).editable;
+ const value = ((field as LinkFieldValue).href
+ ? field
+ : (field as LinkField).value) as LinkFieldValue;
+ const { href, querystring } = value;
+ const isEditing = editable && (field as LinkFieldValue).editable;
if (href && !isEditing) {
- const text =
- showLinkTextWithChildrenPresent || !props.children ? value.text || value.href : null;
+ const text = showLinkTextWithChildrenPresent || !children ? value.text || value.href : null;
// determine if a link is a route or not.
if (internalLinkMatcher.test(href)) {
return (
-
+
{text}
- {props.children}
+ {children}
);