Commit 70a1dc76 authored by Peter Hegman's avatar Peter Hegman

Merge branch 'cngo-organise-issuable-directory' into 'master'

Organise ~/issuable code

See merge request gitlab-org/gitlab!76341
parents e1f2bc25 9189fb91
import { GlToast } from '@gitlab/ui';
import Vue from 'vue'; import Vue from 'vue';
import IssuableContext from '~/issuable/issuable_context';
import { parseBoolean } from '~/lib/utils/common_utils'; import { parseBoolean } from '~/lib/utils/common_utils';
import Sidebar from '~/right_sidebar';
import { getSidebarOptions } from '~/sidebar/mount_sidebar';
import CsvImportExportButtons from './components/csv_import_export_buttons.vue'; import CsvImportExportButtons from './components/csv_import_export_buttons.vue';
import IssuableByEmail from './components/issuable_by_email.vue';
import IssuableHeaderWarnings from './components/issuable_header_warnings.vue';
export default () => { export function initCsvImportExportButtons() {
const el = document.querySelector('.js-csv-import-export-buttons'); const el = document.querySelector('.js-csv-import-export-buttons');
if (!el) return null; if (!el) return null;
...@@ -45,4 +51,66 @@ export default () => { ...@@ -45,4 +51,66 @@ export default () => {
}); });
}, },
}); });
}; }
export function initIssuableByEmail() {
Vue.use(GlToast);
const el = document.querySelector('.js-issueable-by-email');
if (!el) return null;
const {
initialEmail,
issuableType,
emailsHelpPagePath,
quickActionsHelpPath,
markdownHelpPath,
resetPath,
} = el.dataset;
return new Vue({
el,
provide: {
initialEmail,
issuableType,
emailsHelpPagePath,
quickActionsHelpPath,
markdownHelpPath,
resetPath,
},
render(h) {
return h(IssuableByEmail);
},
});
}
export function initIssuableHeaderWarnings(store) {
const el = document.getElementById('js-issuable-header-warnings');
if (!el) {
return false;
}
const { hidden } = el.dataset;
return new Vue({
el,
store,
provide: { hidden: parseBoolean(hidden) },
render(createElement) {
return createElement(IssuableHeaderWarnings);
},
});
}
export function initIssuableSidebar() {
const sidebarOptEl = document.querySelector('.js-sidebar-options');
if (!sidebarOptEl) return;
const sidebarOptions = getSidebarOptions(sidebarOptEl);
new IssuableContext(sidebarOptions.currentUser); // eslint-disable-line no-new
Sidebar.initialize();
}
import { GlToast } from '@gitlab/ui';
import Vue from 'vue';
import IssuableByEmail from './components/issuable_by_email.vue';
Vue.use(GlToast);
export default () => {
const el = document.querySelector('.js-issueable-by-email');
if (!el) return null;
const {
initialEmail,
issuableType,
emailsHelpPagePath,
quickActionsHelpPath,
markdownHelpPath,
resetPath,
} = el.dataset;
return new Vue({
el,
provide: {
initialEmail,
issuableType,
emailsHelpPagePath,
quickActionsHelpPath,
markdownHelpPath,
resetPath,
},
render(h) {
return h(IssuableByEmail);
},
});
};
import Vue from 'vue';
import { parseBoolean } from '~/lib/utils/common_utils';
import IssuableHeaderWarnings from './components/issuable_header_warnings.vue';
export default function issuableHeaderWarnings(store) {
const el = document.getElementById('js-issuable-header-warnings');
if (!el) {
return false;
}
const { hidden } = el.dataset;
return new Vue({
el,
store,
provide: { hidden: parseBoolean(hidden) },
render(createElement) {
return createElement(IssuableHeaderWarnings);
},
});
}
/* eslint-disable no-new */
import { getSidebarOptions } from '~/sidebar/mount_sidebar';
import IssuableContext from '~/issuable/issuable_context';
import Sidebar from '~/right_sidebar';
export default () => {
const sidebarOptEl = document.querySelector('.js-sidebar-options');
if (!sidebarOptEl) return;
const sidebarOptions = getSidebarOptions(sidebarOptEl);
new IssuableContext(sidebarOptions.currentUser);
Sidebar.initialize();
};
import issuableInitBulkUpdateSidebar from '~/issuable/bulk_update_sidebar/issuable_init_bulk_update_sidebar';
export default class IssuableIndex {
constructor(pagePrefix = 'issuable_') {
issuableInitBulkUpdateSidebar.init(pagePrefix);
}
}
import loadAwardsHandler from '~/awards_handler'; import loadAwardsHandler from '~/awards_handler';
import ShortcutsIssuable from '~/behaviors/shortcuts/shortcuts_issuable'; import ShortcutsIssuable from '~/behaviors/shortcuts/shortcuts_issuable';
import initIssuableSidebar from '~/issuable/init_issuable_sidebar'; import { initIssuableHeaderWarnings, initIssuableSidebar } from '~/issuable';
import { IssuableType } from '~/vue_shared/issuable/show/constants'; import { IssuableType } from '~/vue_shared/issuable/show/constants';
import Issue from '~/issues/issue'; import Issue from '~/issues/issue';
import { initIncidentApp, initIncidentHeaderActions } from '~/issues/show/incident'; import { initIncidentApp, initIncidentHeaderActions } from '~/issues/show/incident';
...@@ -10,7 +10,6 @@ import initNotesApp from '~/notes'; ...@@ -10,7 +10,6 @@ import initNotesApp from '~/notes';
import { store } from '~/notes/stores'; import { store } from '~/notes/stores';
import initRelatedMergeRequestsApp from '~/issues/related_merge_requests'; import initRelatedMergeRequestsApp from '~/issues/related_merge_requests';
import initSentryErrorStackTraceApp from '~/issues/sentry_error_stack_trace'; import initSentryErrorStackTraceApp from '~/issues/sentry_error_stack_trace';
import initIssuableHeaderWarning from '~/issuable/init_issuable_header_warning';
import ZenMode from '~/zen_mode'; import ZenMode from '~/zen_mode';
export default function initShowIssue() { export default function initShowIssue() {
...@@ -33,7 +32,7 @@ export default function initShowIssue() { ...@@ -33,7 +32,7 @@ export default function initShowIssue() {
break; break;
} }
initIssuableHeaderWarning(store); initIssuableHeaderWarnings(store);
initSentryErrorStackTraceApp(); initSentryErrorStackTraceApp();
initRelatedMergeRequestsApp(); initRelatedMergeRequestsApp();
......
import Vue from 'vue'; import Vue from 'vue';
import initIssuableSidebar from '~/issuable/init_issuable_sidebar'; import { initIssuableSidebar } from '~/issuable';
import MergeConflictsResolverApp from './merge_conflict_resolver_app.vue'; import MergeConflictsResolverApp from './merge_conflict_resolver_app.vue';
import { createStore } from './store'; import { createStore } from './store';
......
import IssuableFilteredSearchTokenKeys from 'ee_else_ce/filtered_search/issuable_filtered_search_token_keys'; import IssuableFilteredSearchTokenKeys from 'ee_else_ce/filtered_search/issuable_filtered_search_token_keys';
import ShortcutsNavigation from '~/behaviors/shortcuts/shortcuts_navigation'; import ShortcutsNavigation from '~/behaviors/shortcuts/shortcuts_navigation';
import initCsvImportExportButtons from '~/issuable/init_csv_import_export_buttons'; import { initCsvImportExportButtons, initIssuableByEmail } from '~/issuable';
import initIssuableByEmail from '~/issuable/init_issuable_by_email'; import issuableInitBulkUpdateSidebar from '~/issuable/bulk_update_sidebar/issuable_init_bulk_update_sidebar';
import IssuableIndex from '~/issuable/issuable_index';
import { mountIssuablesListApp, mountIssuesListApp, mountJiraIssuesListApp } from '~/issues_list'; import { mountIssuablesListApp, mountIssuesListApp, mountJiraIssuesListApp } from '~/issues_list';
import initManualOrdering from '~/issues/manual_ordering'; import initManualOrdering from '~/issues/manual_ordering';
import { FILTERED_SEARCH } from '~/filtered_search/constants'; import { FILTERED_SEARCH } from '~/filtered_search/constants';
...@@ -21,7 +20,7 @@ if (gon.features?.vueIssuesList) { ...@@ -21,7 +20,7 @@ if (gon.features?.vueIssuesList) {
useDefaultState: true, useDefaultState: true,
}); });
new IssuableIndex(ISSUABLE_INDEX.ISSUE); // eslint-disable-line no-new issuableInitBulkUpdateSidebar.init(ISSUABLE_INDEX.ISSUE);
new UsersSelect(); // eslint-disable-line no-new new UsersSelect(); // eslint-disable-line no-new
initCsvImportExportButtons(); initCsvImportExportButtons();
......
import addExtraTokensForMergeRequests from 'ee_else_ce/filtered_search/add_extra_tokens_for_merge_requests'; import addExtraTokensForMergeRequests from 'ee_else_ce/filtered_search/add_extra_tokens_for_merge_requests';
import ShortcutsNavigation from '~/behaviors/shortcuts/shortcuts_navigation'; import ShortcutsNavigation from '~/behaviors/shortcuts/shortcuts_navigation';
import IssuableFilteredSearchTokenKeys from '~/filtered_search/issuable_filtered_search_token_keys'; import IssuableFilteredSearchTokenKeys from '~/filtered_search/issuable_filtered_search_token_keys';
import initCsvImportExportButtons from '~/issuable/init_csv_import_export_buttons'; import { initCsvImportExportButtons, initIssuableByEmail } from '~/issuable';
import initIssuableByEmail from '~/issuable/init_issuable_by_email'; import issuableInitBulkUpdateSidebar from '~/issuable/bulk_update_sidebar/issuable_init_bulk_update_sidebar';
import IssuableIndex from '~/issuable/issuable_index';
import { FILTERED_SEARCH } from '~/filtered_search/constants'; import { FILTERED_SEARCH } from '~/filtered_search/constants';
import { ISSUABLE_INDEX } from '~/issuable/constants'; import { ISSUABLE_INDEX } from '~/issuable/constants';
import initFilteredSearch from '~/pages/search/init_filtered_search'; import initFilteredSearch from '~/pages/search/init_filtered_search';
import UsersSelect from '~/users_select'; import UsersSelect from '~/users_select';
new IssuableIndex(ISSUABLE_INDEX.MERGE_REQUEST); // eslint-disable-line no-new issuableInitBulkUpdateSidebar.init(ISSUABLE_INDEX.MERGE_REQUEST);
addExtraTokensForMergeRequests(IssuableFilteredSearchTokenKeys); addExtraTokensForMergeRequests(IssuableFilteredSearchTokenKeys);
IssuableFilteredSearchTokenKeys.removeTokensForKeys('iteration'); IssuableFilteredSearchTokenKeys.removeTokensForKeys('iteration');
......
...@@ -3,7 +3,7 @@ import VueApollo from 'vue-apollo'; ...@@ -3,7 +3,7 @@ import VueApollo from 'vue-apollo';
import loadAwardsHandler from '~/awards_handler'; import loadAwardsHandler from '~/awards_handler';
import ShortcutsIssuable from '~/behaviors/shortcuts/shortcuts_issuable'; import ShortcutsIssuable from '~/behaviors/shortcuts/shortcuts_issuable';
import { initPipelineCountListener } from '~/commit/pipelines/utils'; import { initPipelineCountListener } from '~/commit/pipelines/utils';
import initIssuableSidebar from '~/issuable/init_issuable_sidebar'; import { initIssuableSidebar } from '~/issuable';
import StatusBox from '~/issuable/components/status_box.vue'; import StatusBox from '~/issuable/components/status_box.vue';
import createDefaultClient from '~/lib/graphql'; import createDefaultClient from '~/lib/graphql';
import initSourcegraph from '~/sourcegraph'; import initSourcegraph from '~/sourcegraph';
......
import { initReviewBar } from '~/batch_comments'; import { initReviewBar } from '~/batch_comments';
import { initIssuableHeaderWarnings } from '~/issuable';
import initMrNotes from '~/mr_notes'; import initMrNotes from '~/mr_notes';
import store from '~/mr_notes/stores'; import store from '~/mr_notes/stores';
import initSidebarBundle from '~/sidebar/sidebar_bundle'; import initSidebarBundle from '~/sidebar/sidebar_bundle';
import initIssuableHeaderWarning from '~/issuable/init_issuable_header_warning';
import initShow from '../init_merge_request_show'; import initShow from '../init_merge_request_show';
initMrNotes(); initMrNotes();
...@@ -11,5 +11,5 @@ initShow(); ...@@ -11,5 +11,5 @@ initShow();
requestIdleCallback(() => { requestIdleCallback(() => {
initSidebarBundle(store); initSidebarBundle(store);
initReviewBar(); initReviewBar();
initIssuableHeaderWarning(store); initIssuableHeaderWarnings(store);
}); });
import issuableInitBulkUpdateSidebar from '~/issuable/bulk_update_sidebar/issuable_init_bulk_update_sidebar';
import IssuableIndex from '~/issuable/issuable_index';
describe('Issuable', () => {
describe('initBulkUpdate', () => {
it('should not set bulkUpdateSidebar', () => {
new IssuableIndex('issue_'); // eslint-disable-line no-new
expect(issuableInitBulkUpdateSidebar.bulkUpdateSidebar).toBeNull();
});
it('should set bulkUpdateSidebar', () => {
const element = document.createElement('div');
element.classList.add('issues-bulk-update');
document.body.appendChild(element);
new IssuableIndex('issue_'); // eslint-disable-line no-new
expect(issuableInitBulkUpdateSidebar.bulkUpdateSidebar).toBeDefined();
});
});
});
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment