From b45c06fe2bead8b742f529aade31465bce1ef595 Mon Sep 17 00:00:00 2001 From: Coung Ngo <cngo@gitlab.com> Date: Thu, 9 Dec 2021 08:45:08 +0000 Subject: [PATCH] Organise ~/milestones code --- .../available_dropdown_mappings.js | 2 +- app/assets/javascripts/milestones/form.js | 22 -------- ...elete_milestone_modal_init.js => index.js} | 52 ++++++++++++++++++- .../milestones/init_milestones_show.js | 11 ---- .../milestones/milestone_select.js | 2 +- .../promote_milestone_modal_init.js | 19 ------- .../{milestone_utils.js => utils.js} | 0 .../pages/groups/milestones/edit/index.js | 2 +- .../pages/groups/milestones/new/index.js | 2 +- .../pages/groups/milestones/show/index.js | 5 +- .../pages/projects/milestones/edit/index.js | 2 +- .../pages/projects/milestones/index/index.js | 3 +- .../pages/projects/milestones/new/index.js | 2 +- .../pages/projects/milestones/show/index.js | 6 +-- .../tokens/milestone_token.vue | 2 +- .../available_dropdown_mappings.js | 2 +- .../milestone_combobox_spec.js | 2 +- ...{milestone_utils_spec.js => utils_spec.js} | 2 +- .../tokens/milestone_token_spec.js | 4 +- 19 files changed, 67 insertions(+), 75 deletions(-) delete mode 100644 app/assets/javascripts/milestones/form.js rename app/assets/javascripts/milestones/{delete_milestone_modal_init.js => index.js} (63%) delete mode 100644 app/assets/javascripts/milestones/init_milestones_show.js delete mode 100644 app/assets/javascripts/milestones/promote_milestone_modal_init.js rename app/assets/javascripts/milestones/{milestone_utils.js => utils.js} (100%) rename spec/frontend/milestones/{ => components}/milestone_combobox_spec.js (99%) rename spec/frontend/milestones/{milestone_utils_spec.js => utils_spec.js} (95%) diff --git a/app/assets/javascripts/filtered_search/available_dropdown_mappings.js b/app/assets/javascripts/filtered_search/available_dropdown_mappings.js index e0281b8f443f..3cd4d48a4a3f 100644 --- a/app/assets/javascripts/filtered_search/available_dropdown_mappings.js +++ b/app/assets/javascripts/filtered_search/available_dropdown_mappings.js @@ -1,4 +1,4 @@ -import { sortMilestonesByDueDate } from '~/milestones/milestone_utils'; +import { sortMilestonesByDueDate } from '~/milestones/utils'; import { mergeUrlParams } from '../lib/utils/url_utility'; import DropdownAjaxFilter from './dropdown_ajax_filter'; import DropdownEmoji from './dropdown_emoji'; diff --git a/app/assets/javascripts/milestones/form.js b/app/assets/javascripts/milestones/form.js deleted file mode 100644 index 40d45d7deb8b..000000000000 --- a/app/assets/javascripts/milestones/form.js +++ /dev/null @@ -1,22 +0,0 @@ -import $ from 'jquery'; -import initDatePicker from '~/behaviors/date_picker'; -import GLForm from '~/gl_form'; -import ZenMode from '~/zen_mode'; - -export default (initGFM = true) => { - new ZenMode(); // eslint-disable-line no-new - initDatePicker(); - - // eslint-disable-next-line no-new - new GLForm($('.milestone-form'), { - emojis: true, - members: initGFM, - issues: initGFM, - mergeRequests: initGFM, - epics: initGFM, - milestones: initGFM, - labels: initGFM, - snippets: initGFM, - vulnerabilities: initGFM, - }); -}; diff --git a/app/assets/javascripts/milestones/delete_milestone_modal_init.js b/app/assets/javascripts/milestones/index.js similarity index 63% rename from app/assets/javascripts/milestones/delete_milestone_modal_init.js rename to app/assets/javascripts/milestones/index.js index 3aeff2db2e0d..2ca5f104b4fb 100644 --- a/app/assets/javascripts/milestones/delete_milestone_modal_init.js +++ b/app/assets/javascripts/milestones/index.js @@ -1,10 +1,58 @@ +import $ from 'jquery'; import Vue from 'vue'; +import initDatePicker from '~/behaviors/date_picker'; +import GLForm from '~/gl_form'; import { BV_SHOW_MODAL } from '~/lib/utils/constants'; +import Milestone from '~/milestones/milestone'; +import Sidebar from '~/right_sidebar'; +import MountMilestoneSidebar from '~/sidebar/mount_milestone_sidebar'; import Translate from '~/vue_shared/translate'; +import ZenMode from '~/zen_mode'; import DeleteMilestoneModal from './components/delete_milestone_modal.vue'; +import PromoteMilestoneModal from './components/promote_milestone_modal.vue'; import eventHub from './event_hub'; -export default () => { +export function initForm(initGFM = true) { + new ZenMode(); // eslint-disable-line no-new + initDatePicker(); + + // eslint-disable-next-line no-new + new GLForm($('.milestone-form'), { + emojis: true, + members: initGFM, + issues: initGFM, + mergeRequests: initGFM, + epics: initGFM, + milestones: initGFM, + labels: initGFM, + snippets: initGFM, + vulnerabilities: initGFM, + }); +} + +export function initShow() { + new Milestone(); // eslint-disable-line no-new + new Sidebar(); // eslint-disable-line no-new + new MountMilestoneSidebar(); // eslint-disable-line no-new +} + +export function initPromoteMilestoneModal() { + Vue.use(Translate); + + const promoteMilestoneModal = document.getElementById('promote-milestone-modal'); + if (!promoteMilestoneModal) { + return null; + } + + return new Vue({ + el: promoteMilestoneModal, + render(createElement) { + return createElement(PromoteMilestoneModal); + }, + }); +} + +export function initDeleteMilestoneModal() { Vue.use(Translate); const onRequestFinished = ({ milestoneUrl, successful }) => { @@ -72,4 +120,4 @@ export default () => { }); }, }); -}; +} diff --git a/app/assets/javascripts/milestones/init_milestones_show.js b/app/assets/javascripts/milestones/init_milestones_show.js deleted file mode 100644 index 8939e1535c1a..000000000000 --- a/app/assets/javascripts/milestones/init_milestones_show.js +++ /dev/null @@ -1,11 +0,0 @@ -/* eslint-disable no-new */ - -import Milestone from '~/milestones/milestone'; -import Sidebar from '~/right_sidebar'; -import MountMilestoneSidebar from '~/sidebar/mount_milestone_sidebar'; - -export default () => { - new Milestone(); - new Sidebar(); - new MountMilestoneSidebar(); -}; diff --git a/app/assets/javascripts/milestones/milestone_select.js b/app/assets/javascripts/milestones/milestone_select.js index 91780d5ee010..c95ec3dd10b6 100644 --- a/app/assets/javascripts/milestones/milestone_select.js +++ b/app/assets/javascripts/milestones/milestone_select.js @@ -6,7 +6,7 @@ import { template, escape } from 'lodash'; import Api from '~/api'; import initDeprecatedJQueryDropdown from '~/deprecated_jquery_dropdown'; import { __, sprintf } from '~/locale'; -import { sortMilestonesByDueDate } from '~/milestones/milestone_utils'; +import { sortMilestonesByDueDate } from '~/milestones/utils'; import axios from '~/lib/utils/axios_utils'; import { timeFor, parsePikadayDate, dateInWords } from '~/lib/utils/datetime_utility'; diff --git a/app/assets/javascripts/milestones/promote_milestone_modal_init.js b/app/assets/javascripts/milestones/promote_milestone_modal_init.js deleted file mode 100644 index 5472b8c684f3..000000000000 --- a/app/assets/javascripts/milestones/promote_milestone_modal_init.js +++ /dev/null @@ -1,19 +0,0 @@ -import Vue from 'vue'; -import Translate from '~/vue_shared/translate'; -import PromoteMilestoneModal from './components/promote_milestone_modal.vue'; - -Vue.use(Translate); - -export default () => { - const promoteMilestoneModal = document.getElementById('promote-milestone-modal'); - if (!promoteMilestoneModal) { - return null; - } - - return new Vue({ - el: promoteMilestoneModal, - render(createElement) { - return createElement(PromoteMilestoneModal); - }, - }); -}; diff --git a/app/assets/javascripts/milestones/milestone_utils.js b/app/assets/javascripts/milestones/utils.js similarity index 100% rename from app/assets/javascripts/milestones/milestone_utils.js rename to app/assets/javascripts/milestones/utils.js diff --git a/app/assets/javascripts/pages/groups/milestones/edit/index.js b/app/assets/javascripts/pages/groups/milestones/edit/index.js index 6bf73c2563cb..7fda129a85dc 100644 --- a/app/assets/javascripts/pages/groups/milestones/edit/index.js +++ b/app/assets/javascripts/pages/groups/milestones/edit/index.js @@ -1,3 +1,3 @@ -import initForm from '~/milestones/form'; +import { initForm } from '~/milestones'; initForm(); diff --git a/app/assets/javascripts/pages/groups/milestones/new/index.js b/app/assets/javascripts/pages/groups/milestones/new/index.js index 6bf73c2563cb..7fda129a85dc 100644 --- a/app/assets/javascripts/pages/groups/milestones/new/index.js +++ b/app/assets/javascripts/pages/groups/milestones/new/index.js @@ -1,3 +1,3 @@ -import initForm from '~/milestones/form'; +import { initForm } from '~/milestones'; initForm(); diff --git a/app/assets/javascripts/pages/groups/milestones/show/index.js b/app/assets/javascripts/pages/groups/milestones/show/index.js index 5eec1015447f..f2ab5d783747 100644 --- a/app/assets/javascripts/pages/groups/milestones/show/index.js +++ b/app/assets/javascripts/pages/groups/milestones/show/index.js @@ -1,5 +1,4 @@ -import initDeleteMilestoneModal from '~/milestones/delete_milestone_modal_init'; -import initMilestonesShow from '~/milestones/init_milestones_show'; +import { initDeleteMilestoneModal, initShow } from '~/milestones'; -initMilestonesShow(); +initShow(); initDeleteMilestoneModal(); diff --git a/app/assets/javascripts/pages/projects/milestones/edit/index.js b/app/assets/javascripts/pages/projects/milestones/edit/index.js index 6bf73c2563cb..7fda129a85dc 100644 --- a/app/assets/javascripts/pages/projects/milestones/edit/index.js +++ b/app/assets/javascripts/pages/projects/milestones/edit/index.js @@ -1,3 +1,3 @@ -import initForm from '~/milestones/form'; +import { initForm } from '~/milestones'; initForm(); diff --git a/app/assets/javascripts/pages/projects/milestones/index/index.js b/app/assets/javascripts/pages/projects/milestones/index/index.js index 6912ab9f8bab..ef1c9ab83dbe 100644 --- a/app/assets/javascripts/pages/projects/milestones/index/index.js +++ b/app/assets/javascripts/pages/projects/milestones/index/index.js @@ -1,5 +1,4 @@ -import initDeleteMilestoneModal from '~/milestones/delete_milestone_modal_init'; -import initPromoteMilestoneModal from '~/milestones/promote_milestone_modal_init'; +import { initDeleteMilestoneModal, initPromoteMilestoneModal } from '~/milestones'; initDeleteMilestoneModal(); initPromoteMilestoneModal(); diff --git a/app/assets/javascripts/pages/projects/milestones/new/index.js b/app/assets/javascripts/pages/projects/milestones/new/index.js index 6bf73c2563cb..7fda129a85dc 100644 --- a/app/assets/javascripts/pages/projects/milestones/new/index.js +++ b/app/assets/javascripts/pages/projects/milestones/new/index.js @@ -1,3 +1,3 @@ -import initForm from '~/milestones/form'; +import { initForm } from '~/milestones'; initForm(); diff --git a/app/assets/javascripts/pages/projects/milestones/show/index.js b/app/assets/javascripts/pages/projects/milestones/show/index.js index 098b3a5f391a..16aac7748da8 100644 --- a/app/assets/javascripts/pages/projects/milestones/show/index.js +++ b/app/assets/javascripts/pages/projects/milestones/show/index.js @@ -1,7 +1,5 @@ -import initMilestonesShow from '~/milestones/init_milestones_show'; -import initDeleteMilestoneModal from '~/milestones/delete_milestone_modal_init'; -import initPromoteMilestoneModal from '~/milestones/promote_milestone_modal_init'; +import { initDeleteMilestoneModal, initPromoteMilestoneModal, initShow } from '~/milestones'; -initMilestonesShow(); +initShow(); initDeleteMilestoneModal(); initPromoteMilestoneModal(); diff --git a/app/assets/javascripts/vue_shared/components/filtered_search_bar/tokens/milestone_token.vue b/app/assets/javascripts/vue_shared/components/filtered_search_bar/tokens/milestone_token.vue index 523438f459cc..0d3394788fa5 100644 --- a/app/assets/javascripts/vue_shared/components/filtered_search_bar/tokens/milestone_token.vue +++ b/app/assets/javascripts/vue_shared/components/filtered_search_bar/tokens/milestone_token.vue @@ -2,7 +2,7 @@ import { GlFilteredSearchSuggestion } from '@gitlab/ui'; import createFlash from '~/flash'; import { __ } from '~/locale'; -import { sortMilestonesByDueDate } from '~/milestones/milestone_utils'; +import { sortMilestonesByDueDate } from '~/milestones/utils'; import BaseToken from '~/vue_shared/components/filtered_search_bar/tokens/base_token.vue'; import { DEFAULT_MILESTONES } from '../constants'; import { stripQuotes } from '../filtered_search_utils'; diff --git a/ee/app/assets/javascripts/filtered_search/available_dropdown_mappings.js b/ee/app/assets/javascripts/filtered_search/available_dropdown_mappings.js index 3ec5e221f6be..201b26094004 100644 --- a/ee/app/assets/javascripts/filtered_search/available_dropdown_mappings.js +++ b/ee/app/assets/javascripts/filtered_search/available_dropdown_mappings.js @@ -2,7 +2,7 @@ import AvailableDropdownMappingsCE from '~/filtered_search/available_dropdown_ma import DropdownAjaxFilter from '~/filtered_search/dropdown_ajax_filter'; import DropdownNonUser from '~/filtered_search/dropdown_non_user'; import DropdownUser from '~/filtered_search/dropdown_user'; -import { sortMilestonesByDueDate } from '~/milestones/milestone_utils'; +import { sortMilestonesByDueDate } from '~/milestones/utils'; import DropdownWeight from './dropdown_weight'; export default class AvailableDropdownMappings { diff --git a/spec/frontend/milestones/milestone_combobox_spec.js b/spec/frontend/milestones/components/milestone_combobox_spec.js similarity index 99% rename from spec/frontend/milestones/milestone_combobox_spec.js rename to spec/frontend/milestones/components/milestone_combobox_spec.js index 4d1a0a0a4404..1af39aff30ca 100644 --- a/spec/frontend/milestones/milestone_combobox_spec.js +++ b/spec/frontend/milestones/components/milestone_combobox_spec.js @@ -7,7 +7,7 @@ import Vuex from 'vuex'; import { ENTER_KEY } from '~/lib/utils/keys'; import MilestoneCombobox from '~/milestones/components/milestone_combobox.vue'; import createStore from '~/milestones/stores/'; -import { projectMilestones, groupMilestones } from './mock_data'; +import { projectMilestones, groupMilestones } from '../mock_data'; const extraLinks = [ { text: 'Create new', url: 'http://127.0.0.1:3000/h5bp/html5-boilerplate/-/milestones/new' }, diff --git a/spec/frontend/milestones/milestone_utils_spec.js b/spec/frontend/milestones/utils_spec.js similarity index 95% rename from spec/frontend/milestones/milestone_utils_spec.js rename to spec/frontend/milestones/utils_spec.js index f863f31e5a97..82e31c983985 100644 --- a/spec/frontend/milestones/milestone_utils_spec.js +++ b/spec/frontend/milestones/utils_spec.js @@ -1,5 +1,5 @@ import { useFakeDate } from 'helpers/fake_date'; -import { sortMilestonesByDueDate } from '~/milestones/milestone_utils'; +import { sortMilestonesByDueDate } from '~/milestones/utils'; describe('sortMilestonesByDueDate', () => { useFakeDate(2021, 6, 22); diff --git a/spec/frontend/vue_shared/components/filtered_search_bar/tokens/milestone_token_spec.js b/spec/frontend/vue_shared/components/filtered_search_bar/tokens/milestone_token_spec.js index 81ec2622f4c5..4a098db33c5c 100644 --- a/spec/frontend/vue_shared/components/filtered_search_bar/tokens/milestone_token_spec.js +++ b/spec/frontend/vue_shared/components/filtered_search_bar/tokens/milestone_token_spec.js @@ -9,7 +9,7 @@ import MockAdapter from 'axios-mock-adapter'; import waitForPromises from 'helpers/wait_for_promises'; import createFlash from '~/flash'; import axios from '~/lib/utils/axios_utils'; -import { sortMilestonesByDueDate } from '~/milestones/milestone_utils'; +import { sortMilestonesByDueDate } from '~/milestones/utils'; import { DEFAULT_MILESTONES } from '~/vue_shared/components/filtered_search_bar/constants'; import MilestoneToken from '~/vue_shared/components/filtered_search_bar/tokens/milestone_token.vue'; @@ -17,7 +17,7 @@ import MilestoneToken from '~/vue_shared/components/filtered_search_bar/tokens/m import { mockMilestoneToken, mockMilestones, mockRegularMilestone } from '../mock_data'; jest.mock('~/flash'); -jest.mock('~/milestones/milestone_utils'); +jest.mock('~/milestones/utils'); const defaultStubs = { Portal: true, -- GitLab