@atlaskit/global-search
Version:
A cross-product search component (batteries included)
22 lines (19 loc) • 875 B
JavaScript
export const addQueryParam = (url, queryName, queryValue) => {
if (!url || !queryName) {
return url;
}
const urlSplit = url.split('?');
const queryString = urlSplit.length === 2 ? urlSplit[1] : null;
const urlWithoutQuery = urlSplit.length > 0 ? urlSplit[0] : '';
const encodedQueryName = encodeURIComponent(queryName);
const newQueryItem = `${encodedQueryName}=${encodeURIComponent(queryValue || '')}`; // If url has no existing query strings
if (!queryString) {
return `${url}?${newQueryItem}`;
}
const existingQueries = queryString.split('&');
const newQueryString = existingQueries.filter(query => {
// If the query already exists we will replace it with the new one so we filter it out here
return !query.startsWith(`${encodedQueryName}=`);
}).concat(newQueryItem).join('&');
return `${urlWithoutQuery}?${newQueryString}`;
};