summaryrefslogtreecommitdiff
path: root/app/assets/javascripts/pages/milestones/shared/promote_milestone_modal_init.js
diff options
context:
space:
mode:
Diffstat (limited to 'app/assets/javascripts/pages/milestones/shared/promote_milestone_modal_init.js')
-rw-r--r--app/assets/javascripts/pages/milestones/shared/promote_milestone_modal_init.js85
1 files changed, 8 insertions, 77 deletions
diff --git a/app/assets/javascripts/pages/milestones/shared/promote_milestone_modal_init.js b/app/assets/javascripts/pages/milestones/shared/promote_milestone_modal_init.js
index fcc62a2b2af..5472b8c684f 100644
--- a/app/assets/javascripts/pages/milestones/shared/promote_milestone_modal_init.js
+++ b/app/assets/javascripts/pages/milestones/shared/promote_milestone_modal_init.js
@@ -1,88 +1,19 @@
import Vue from 'vue';
import Translate from '~/vue_shared/translate';
import PromoteMilestoneModal from './components/promote_milestone_modal.vue';
-import eventHub from './event_hub';
Vue.use(Translate);
export default () => {
- const onRequestFinished = ({ milestoneUrl, successful }) => {
- const button = document.querySelector(
- `.js-promote-project-milestone-button[data-url="${milestoneUrl}"]`,
- );
-
- if (!successful) {
- button.removeAttribute('disabled');
- }
- };
-
- const onRequestStarted = milestoneUrl => {
- const button = document.querySelector(
- `.js-promote-project-milestone-button[data-url="${milestoneUrl}"]`,
- );
- button.setAttribute('disabled', '');
- eventHub.$once('promoteMilestoneModal.requestFinished', onRequestFinished);
- };
-
- const onDeleteButtonClick = event => {
- const button = event.currentTarget;
- const modalProps = {
- milestoneTitle: button.dataset.milestoneTitle,
- url: button.dataset.url,
- groupName: button.dataset.groupName,
- };
- eventHub.$once('promoteMilestoneModal.requestStarted', onRequestStarted);
- eventHub.$emit('promoteMilestoneModal.props', modalProps);
- };
-
- const promoteMilestoneButtons = document.querySelectorAll('.js-promote-project-milestone-button');
- promoteMilestoneButtons.forEach(button => {
- button.addEventListener('click', onDeleteButtonClick);
- });
-
- eventHub.$once('promoteMilestoneModal.mounted', () => {
- promoteMilestoneButtons.forEach(button => {
- button.removeAttribute('disabled');
- });
- });
-
const promoteMilestoneModal = document.getElementById('promote-milestone-modal');
- let promoteMilestoneComponent;
-
- if (promoteMilestoneModal) {
- promoteMilestoneComponent = new Vue({
- el: promoteMilestoneModal,
- components: {
- PromoteMilestoneModal,
- },
- data() {
- return {
- modalProps: {
- milestoneTitle: '',
- groupName: '',
- url: '',
- },
- };
- },
- mounted() {
- eventHub.$on('promoteMilestoneModal.props', this.setModalProps);
- eventHub.$emit('promoteMilestoneModal.mounted');
- },
- beforeDestroy() {
- eventHub.$off('promoteMilestoneModal.props', this.setModalProps);
- },
- methods: {
- setModalProps(modalProps) {
- this.modalProps = modalProps;
- },
- },
- render(createElement) {
- return createElement('promote-milestone-modal', {
- props: this.modalProps,
- });
- },
- });
+ if (!promoteMilestoneModal) {
+ return null;
}
- return promoteMilestoneComponent;
+ return new Vue({
+ el: promoteMilestoneModal,
+ render(createElement) {
+ return createElement(PromoteMilestoneModal);
+ },
+ });
};