Commit 54cae7e6 authored by Simon Knox's avatar Simon Knox

use popup dialog component and move Edit button outside dropdown

parent 84d1dfcb
...@@ -145,6 +145,29 @@ $(() => { ...@@ -145,6 +145,29 @@ $(() => {
}, },
}); });
gl.boardConfigToggle = new Vue({
el: document.querySelector('.js-board-config'),
methods: {
showPage: page => gl.issueBoards.BoardsStore.showPage(page),
},
computed: {
buttonText() {
return Math.random > 0.5 ? 'Edit board' : 'View scope';
},
},
template: `
<div class="prepend-left-10">
<button
class="btn btn-inverted"
type="button"
@click.prevent="showPage('edit')"
>
{{ buttonText }}
</button>
</div>
`,
});
gl.IssueBoardsModalAddBtn = new Vue({ gl.IssueBoardsModalAddBtn = new Vue({
mixins: [gl.issueBoards.ModalMixins], mixins: [gl.issueBoards.ModalMixins],
el: document.getElementById('js-add-issues-btn'), el: document.getElementById('js-add-issues-btn'),
......
...@@ -3,7 +3,6 @@ ...@@ -3,7 +3,6 @@
import Vue from 'vue'; import Vue from 'vue';
import PopupDialog from '~/vue_shared/components/popup_dialog.vue'; import PopupDialog from '~/vue_shared/components/popup_dialog.vue';
import boardMilestoneSelect from './milestone_select'; import boardMilestoneSelect from './milestone_select';
import extraMilestones from '../mixins/extra_milestones';
(() => { (() => {
window.gl = window.gl || {}; window.gl = window.gl || {};
...@@ -23,15 +22,12 @@ import extraMilestones from '../mixins/extra_milestones'; ...@@ -23,15 +22,12 @@ import extraMilestones from '../mixins/extra_milestones';
board: { board: {
id: false, id: false,
name: '', name: '',
milestone: extraMilestones[0],
milestone_id: extraMilestones[0].id,
}, },
issue: {}, issue: {},
currentBoard: Store.state.currentBoard, currentBoard: Store.state.currentBoard,
currentPage: Store.state.currentPage, currentPage: Store.state.currentPage,
milestones: [], milestones: [],
milestoneDropdownOpen: false, milestoneDropdownOpen: false,
extraMilestones,
}; };
}, },
components: { components: {
......
/* global BoardService */ /* global BoardService, MilestoneSelect */
import extraMilestones from '../mixins/extra_milestones'; import extraMilestones from '../mixins/extra_milestones';
...@@ -26,9 +26,13 @@ export default { ...@@ -26,9 +26,13 @@ export default {
}, },
mounted() { mounted() {
BoardService.loadMilestones.call(this); BoardService.loadMilestones.call(this);
MilestoneSelect();
}, },
template: ` template: `
<div> <div class="dropdown">
<button data-toggle="dropdown" class="dropdown-menu-toggle">{{ board.milestone ? board.milestone.title : 'Milestone' }}</button>
<div class="dropdown-menu">
<div class="dropdown-content">
<div class="text-center"> <div class="text-center">
<i <i
v-if="loading" v-if="loading"
...@@ -60,5 +64,7 @@ export default { ...@@ -60,5 +64,7 @@ export default {
</li> </li>
</ul> </ul>
</div> </div>
</div>
</div>
`, `,
}; };
...@@ -12,7 +12,11 @@ gl.issueBoards.BoardsStore = { ...@@ -12,7 +12,11 @@ gl.issueBoards.BoardsStore = {
filter: { filter: {
path: '', path: '',
}, },
state: {}, state: {
currentBoard: {},
currentPage: '',
reload: false,
},
detail: { detail: {
issue: {} issue: {}
}, },
...@@ -30,6 +34,10 @@ gl.issueBoards.BoardsStore = { ...@@ -30,6 +34,10 @@ gl.issueBoards.BoardsStore = {
this.state.currentPage = ''; this.state.currentPage = '';
this.state.reload = false; this.state.reload = false;
}, },
showPage(page) {
this.state.reload = false;
this.state.currentPage = page;
},
addList (listObj, defaultAvatar) { addList (listObj, defaultAvatar) {
const list = new List(listObj, defaultAvatar); const list = new List(listObj, defaultAvatar);
this.state.lists.push(list); this.state.lists.push(list);
......
...@@ -54,6 +54,7 @@ export default { ...@@ -54,6 +54,7 @@ export default {
<div class="modal-dialog" role="document"> <div class="modal-dialog" role="document">
<div class="modal-content"> <div class="modal-content">
<div class="modal-header"> <div class="modal-header">
<slot name="header">
<button type="button" <button type="button"
class="close" class="close"
@click="close" @click="close"
...@@ -61,9 +62,10 @@ export default { ...@@ -61,9 +62,10 @@ export default {
<span aria-hidden="true">&times;</span> <span aria-hidden="true">&times;</span>
</button> </button>
<h4 class="modal-title">{{this.title}}</h4> <h4 class="modal-title">{{this.title}}</h4>
</slot>
</div> </div>
<div class="modal-body"> <div class="modal-body">
<slot name="body"> <slot>
<p>{{this.body}}</p> <p>{{this.body}}</p>
</slot> </slot>
</div> </div>
......
...@@ -30,9 +30,6 @@ ...@@ -30,9 +30,6 @@
%li %li
%a{ "href" => "#", "@click.prevent" => "showPage('new')" } %a{ "href" => "#", "@click.prevent" => "showPage('new')" }
Create new board Create new board
%li
%a{ "href" => "#", "@click.prevent" => "showPage('edit')" }
Edit board
%li{ "v-if" => "showDelete" } %li{ "v-if" => "showDelete" }
%a{ "href" => "#", "@click.prevent" => "showPage('delete')" } %a{ "href" => "#", "@click.prevent" => "showPage('delete')" }
%span.text-danger %span.text-danger
......
#edit-board-modal.modal.fade{ tabindex: -1 } %popup-dialog{ ":title": "title" }
.modal-dialog.modal-md %template{ slot: "body" }
.modal-content %p{ "v-if" => "currentPage === 'delete'" }
.modal-header
%a.close{ href: "#", "data-dismiss" => "modal" } ×
%h4
{{ title }}
%div{ "v-if" => "currentPage === 'delete'" }
.modal-body
%p
Are you sure you want to delete this board? Are you sure you want to delete this board?
.modal-footer
= link_to current_board_path(board),
class: "btn btn-danger pull-left",
method: :delete do
Delete
%button.btn.btn-default.pull-right{ type: "button",
"@click" => "cancel",
data: { dismiss: "modal" } }
Cancel
%form{ "v-else" => true, %form{ "v-else" => true,
"@submit.prevent" => "submit" } "@submit.prevent" => "submit" }
.modal-body
%input{ type: "hidden", %input{ type: "hidden",
id: "board-milestone", id: "board-milestone",
"v-model.number" => "board.milestone_id" } "v-model.number" => "board.milestone_id" }
...@@ -31,35 +14,22 @@ ...@@ -31,35 +14,22 @@
id: "board-new-name", id: "board-new-name",
"v-model" => "board.name" } "v-model" => "board.name" }
- if current_board_parent.issue_board_milestone_available?(current_user) - if current_board_parent.issue_board_milestone_available?(current_user)
.dropdown.board-inner-milestone-dropdown{ ":class" => "{ open: milestoneDropdownOpen }" } %board-milestone-select{ ":board": "board",
%label.label-light{ for: "board-milestone" } ":milestone-path": "milestonePath",
Board milestone ":select-milestone": "selectMilestone" }
%button.dropdown-menu-toggle.wide{ type: "button", %template{ slot: "footer" }
"@click.stop.prevent" => "loadMilestones($event)" } = link_to current_board_path(board),
{{ milestoneToggleText }} class: "btn btn-danger pull-left",
= icon("chevron-down") "v-if": "currentPage === 'delete'",
.dropdown-menu.dropdown-menu-selectable{ "v-if" => "milestoneDropdownOpen", method: :delete do
ref: "milestoneDropdown" } Delete
.dropdown-content %button.btn.btn-primary.pull-left{ type: "button",
%ul "v-else": true,
%li{ "v-for" => "milestone in extraMilestones" } "@click" => "submit",
%a{ href: "#",
":class" => "{ 'is-active': milestone.id === board.milestone_id }",
"@click.stop.prevent" => "selectMilestone(milestone)" }
{{ milestone.title }}
%li.divider
%li{ "v-for" => "milestone in milestones" }
%a{ href: "#",
":class" => "{ 'is-active': milestone.id === board.milestone_id }",
"@click.stop.prevent" => "selectMilestone(milestone)" }
{{ milestone.title }}
= dropdown_loading
.modal-footer
%button.btn.btn-primary.pull-left{ type: "submit",
":disabled" => "submitDisabled", ":disabled" => "submitDisabled",
"ref" => "'submit-btn'" } "ref" => "'submit-btn'" }
{{ buttonText }} {{ buttonText }}
%button.btn.btn-default.pull-right{ type: "button", %button.btn.btn-default.pull-right{ type: "button",
"@click.prevent" => "cancel", "@click" => "cancel",
data: { dismiss: "modal" } } data: { dismiss: "modal" } }
Cancel Cancel
...@@ -124,6 +124,7 @@ ...@@ -124,6 +124,7 @@
= icon('times') = icon('times')
.filter-dropdown-container .filter-dropdown-container
- if type == :boards - if type == :boards
.js-board-config
- if can?(current_user, :admin_list, board.parent) - if can?(current_user, :admin_list, board.parent)
.dropdown.prepend-left-10#js-add-list .dropdown.prepend-left-10#js-add-list
%button.btn.btn-create.btn-inverted.js-new-board-list{ type: "button", data: board_list_data } %button.btn.btn-create.btn-inverted.js-new-board-list{ type: "button", data: board_list_data }
......
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