UNPKG

@progress/sitefinity-nextjs-sdk

Version:

Provides OOB widgets developed using the Next.js framework, which includes an abstraction layer for Sitefinity communication. Additionally, it offers an expanded API, typings, and tools for further development and integration.

51 lines (50 loc) 1.89 kB
export function serializeScoringProfile(scoringProfile) { let res = scoringProfile.scoringSetting; if (!!scoringProfile.scoringParameters) { res = `${res};${scoringProfile.scoringParameters}`; } return btoa(res); } ; export function getSearchBoxParams(searchModel, orderBy) { return { resultsUrl: searchModel.searchResultsPageUrl, catalogue: searchModel.searchIndex, scoringSetting: serializeScoringProfile(searchModel.scoringProfile), minSuggestionLength: +searchModel.suggestionsTriggerCharCount, siteId: searchModel.siteId, culture: searchModel.culture, suggestionFields: searchModel.suggestionFields, servicePath: searchModel.webServicePath, orderBy, resultsForAllSites: +searchModel.showResultsForAllIndexedSites }; } ; export function getSearchUrl(query, searchModel, orderBy) { const searchParams = getSearchBoxParams(searchModel, orderBy); let resultsUrl = searchParams.resultsUrl || ''; const queryParams = { indexCatalogue: searchParams.catalogue, searchQuery: encodeURIComponent(query), wordsMode: 'AllWords', sf_culture: searchParams.culture }; let separator = resultsUrl.indexOf('?') === -1 ? '?' : '&'; let scoringSetting = searchParams.scoringSetting; if (scoringSetting) { queryParams['scoringInfo'] = scoringSetting; } if (searchParams.orderBy) { queryParams['$orderBy'] = searchParams.orderBy; } let resultsForAllSites = searchParams.resultsForAllSites; if (resultsForAllSites === 1) { queryParams['resultsForAllSites'] = 'True'; } else if (resultsForAllSites === 2) { queryParams['resultsForAllSites'] = 'False'; } return `${resultsUrl}${separator}${Object.keys(queryParams).map(key => `${key}=${queryParams[key]}`).join('&')}`; } ;