@atlaskit/global-search
Version:
A cross-product search component (batteries included)
117 lines (97 loc) • 4.51 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.getConfluenceAdvancedSearchLink = getConfluenceAdvancedSearchLink;
exports.getJiraAdvancedSearchUrl = getJiraAdvancedSearchUrl;
exports.redirectToConfluenceAdvancedSearch = redirectToConfluenceAdvancedSearch;
exports.redirectToJiraAdvancedSearch = redirectToJiraAdvancedSearch;
exports.take = take;
exports.isEmpty = isEmpty;
exports.handlePromiseError = handlePromiseError;
exports.isAdvancedSearchResult = exports.ConfluenceAdvancedSearchTypes = exports.JiraEntityTypes = exports.ADVANCED_PEOPLE_SEARCH_RESULT_ID = exports.ADVANCED_JIRA_SEARCH_RESULT_ID = exports.ADVANCED_CONFLUENCE_SEARCH_RESULT_ID = void 0;
var ADVANCED_CONFLUENCE_SEARCH_RESULT_ID = 'search_confluence';
exports.ADVANCED_CONFLUENCE_SEARCH_RESULT_ID = ADVANCED_CONFLUENCE_SEARCH_RESULT_ID;
var ADVANCED_JIRA_SEARCH_RESULT_ID = 'search_jira';
exports.ADVANCED_JIRA_SEARCH_RESULT_ID = ADVANCED_JIRA_SEARCH_RESULT_ID;
var ADVANCED_PEOPLE_SEARCH_RESULT_ID = 'search_people';
exports.ADVANCED_PEOPLE_SEARCH_RESULT_ID = ADVANCED_PEOPLE_SEARCH_RESULT_ID;
var JiraEntityTypes;
exports.JiraEntityTypes = JiraEntityTypes;
(function (JiraEntityTypes) {
JiraEntityTypes["Projects"] = "projects";
JiraEntityTypes["Issues"] = "issues";
JiraEntityTypes["Boards"] = "boards";
JiraEntityTypes["Filters"] = "filters";
JiraEntityTypes["People"] = "people";
})(JiraEntityTypes || (exports.JiraEntityTypes = JiraEntityTypes = {}));
var ConfluenceAdvancedSearchTypes;
exports.ConfluenceAdvancedSearchTypes = ConfluenceAdvancedSearchTypes;
(function (ConfluenceAdvancedSearchTypes) {
ConfluenceAdvancedSearchTypes["Content"] = "content";
ConfluenceAdvancedSearchTypes["People"] = "people";
})(ConfluenceAdvancedSearchTypes || (exports.ConfluenceAdvancedSearchTypes = ConfluenceAdvancedSearchTypes = {}));
var isAdvancedSearchResult = function isAdvancedSearchResult(resultId) {
return [ADVANCED_CONFLUENCE_SEARCH_RESULT_ID, ADVANCED_JIRA_SEARCH_RESULT_ID, ADVANCED_PEOPLE_SEARCH_RESULT_ID].some(function (advancedResultId) {
return advancedResultId === resultId;
});
};
exports.isAdvancedSearchResult = isAdvancedSearchResult;
function getConfluenceAdvancedSearchLink(query) {
var queryString = query ? "?text=".concat(encodeURIComponent(query)) : '';
return "/wiki/search".concat(queryString);
}
function getJiraAdvancedSearchUrl(props) {
var entityType = props.entityType,
query = props.query,
enableIssueKeySmartMode = props.enableIssueKeySmartMode,
isJiraPeopleProfilesEnabled = props.isJiraPeopleProfilesEnabled;
switch (entityType) {
case JiraEntityTypes.Issues:
return !enableIssueKeySmartMode && query && +query ? "/issues/?jql=order+by+created+DESC" : "/secure/QuickSearch.jspa?searchString=".concat(query);
case JiraEntityTypes.Boards:
return "/secure/ManageRapidViews.jspa?contains=".concat(query);
case JiraEntityTypes.Filters:
return "/secure/ManageFilters.jspa?Search=Search&filterView=search&name=".concat(query);
case JiraEntityTypes.Projects:
return "/projects?contains=".concat(query);
case JiraEntityTypes.People:
return !!isJiraPeopleProfilesEnabled ? "/jira/people/search?q=".concat(query) : "/people/search?q=".concat(query);
}
}
function redirectToConfluenceAdvancedSearch() {
var query = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
// XPSRCH-891: this breaks SPA navigation. Consumer needs to pass in a redirect/navigate function.
window.location.assign(getConfluenceAdvancedSearchLink(query));
}
function redirectToJiraAdvancedSearch(entityType) {
var query = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
window.location.assign(getJiraAdvancedSearchUrl({
entityType: entityType,
query: query,
enableIssueKeySmartMode: true
}));
}
function take(array, n) {
return (array || []).slice(0, n);
}
function isEmpty(array) {
return array.length === 0;
}
/**
*
* Gracefully handle promise catch and returning default value
* @param promise promise to handle its catch block
* @param defaultValue value returned by the promise in case of error
* @param errorHandler function to be called in case of promise rejection
*/
function handlePromiseError(promise, defaultValue, errorHandler) {
return promise.catch(function (error) {
try {
if (errorHandler) {
errorHandler(error);
}
} catch (e) {}
return defaultValue;
});
}