|
1 | | -import React, { useCallback, useState } from 'react'; |
| 1 | +import { useCallback, useState } from 'react'; |
2 | 2 | import { DBCard, DBDivider, DBLink } from '../../../../output/react/src'; |
3 | 3 | import type { |
4 | 4 | ReactDefaultComponentProps, |
@@ -115,41 +115,24 @@ const DefaultComponent = ({ |
115 | 115 | const color = useQuery(redirectURLSearchParameters)[2]; |
116 | 116 |
|
117 | 117 | const getHref = (variantName: string): string => { |
118 | | - if (typeof globalThis !== 'undefined') { |
119 | | - const searchParameters = new URLSearchParams( |
120 | | - globalThis?.location?.href.split('?')[1] |
121 | | - ); |
122 | | - searchParameters.set('page', variantName.toLowerCase()); |
123 | | - return `${globalThis?.location?.href.split('?')[0]}?${searchParameters.toString()}`; |
124 | | - } |
125 | | - |
126 | | - return ''; |
127 | | - }; |
128 | | - |
129 | | - const openVariantInNewWindow = ( |
130 | | - event: React.MouseEvent<HTMLAnchorElement>, |
131 | | - variantName: string |
132 | | - ) => { |
133 | 118 | if ( |
134 | | - typeof globalThis === 'undefined' || |
135 | | - !globalThis.location.origin || |
136 | | - !globalThis.location.href |
| 119 | + globalThis.window === undefined || |
| 120 | + globalThis.location === undefined |
137 | 121 | ) { |
138 | | - return; |
| 122 | + return `?page=${encodeURIComponent(variantName.toLowerCase())}`; |
139 | 123 | } |
140 | 124 |
|
141 | | - const currentUrl = globalThis.location.href.split('?'); |
142 | | - const rawComponentUrl = currentUrl[0]; |
143 | | - const searchParameters = new URLSearchParams(currentUrl[1] ?? ''); |
| 125 | + const [baseUrl, query = ''] = globalThis.location.href.split('?'); |
| 126 | + const searchParameters = new URLSearchParams(query); |
144 | 127 | searchParameters.set('page', variantName.toLowerCase()); |
145 | 128 |
|
146 | 129 | const regexComponentOverviewFragment = /\/[a-z\d\-_]*\/overview/; |
147 | 130 |
|
148 | | - const openUrl = componentName |
149 | | - ? `${rawComponentUrl.replace(regexComponentOverviewFragment, `/${componentName}/overview`)}?${searchParameters.toString()}` |
150 | | - : `${currentUrl[0]}?${searchParameters.toString()}`; |
| 131 | + if (componentName) { |
| 132 | + return `${baseUrl.replace(regexComponentOverviewFragment, `/${componentName}/overview`)}?${searchParameters.toString()}`; |
| 133 | + } |
151 | 134 |
|
152 | | - window.open(openUrl, '_blank'); |
| 135 | + return `${baseUrl}?${searchParameters.toString()}`; |
153 | 136 | }; |
154 | 137 |
|
155 | 138 | if (pageName) { |
@@ -196,9 +179,7 @@ const DefaultComponent = ({ |
196 | 179 | className="link-headline" |
197 | 180 | content="external" |
198 | 181 | target="_blank" |
199 | | - onClick={(event) => { |
200 | | - openVariantInNewWindow(event, variant.name); |
201 | | - }} |
| 182 | + rel="noopener noreferrer" |
202 | 183 | href={getHref(variant.name)}> |
203 | 184 | {variant.name} |
204 | 185 | </DBLink> |
|
0 commit comments