Commit 3f650038 authored by Phil Hughes's avatar Phil Hughes

fixed some bugs around with the template dropdowns

parent 5b84c2fb
...@@ -206,6 +206,7 @@ export const resetOpenFiles = ({ commit }) => commit(types.RESET_OPEN_FILES); ...@@ -206,6 +206,7 @@ export const resetOpenFiles = ({ commit }) => commit(types.RESET_OPEN_FILES);
export const renameEntry = ({ dispatch, commit, state }, { path, name, entryPath = null }) => { export const renameEntry = ({ dispatch, commit, state }, { path, name, entryPath = null }) => {
const entry = state.entries[entryPath || path]; const entry = state.entries[entryPath || path];
commit(types.RENAME_ENTRY, { path, name, entryPath }); commit(types.RENAME_ENTRY, { path, name, entryPath });
if (entry.type === 'tree') { if (entry.type === 'tree') {
...@@ -214,7 +215,7 @@ export const renameEntry = ({ dispatch, commit, state }, { path, name, entryPath ...@@ -214,7 +215,7 @@ export const renameEntry = ({ dispatch, commit, state }, { path, name, entryPath
); );
} }
if (!entryPath) { if (!entryPath && !entry.tempFile) {
dispatch('deleteEntry', path); dispatch('deleteEntry', path);
} }
}; };
......
import Vue from 'vue';
import * as types from './mutation_types'; import * as types from './mutation_types';
import projectMutations from './mutations/project'; import projectMutations from './mutations/project';
import mergeRequestMutation from './mutations/merge_request'; import mergeRequestMutation from './mutations/merge_request';
...@@ -226,7 +227,7 @@ export default { ...@@ -226,7 +227,7 @@ export default {
path: newPath, path: newPath,
name: entryPath ? oldEntry.name : name, name: entryPath ? oldEntry.name : name,
tempFile: true, tempFile: true,
prevPath: oldEntry.path, prevPath: oldEntry.tempFile ? null : oldEntry.path,
url: oldEntry.url.replace(new RegExp(`${oldEntry.path}/?$`), newPath), url: oldEntry.url.replace(new RegExp(`${oldEntry.path}/?$`), newPath),
tree: [], tree: [],
parentPath, parentPath,
...@@ -249,6 +250,16 @@ export default { ...@@ -249,6 +250,16 @@ export default {
if (state.entries[newPath].opened) { if (state.entries[newPath].opened) {
state.openFiles.push(state.entries[newPath]); state.openFiles.push(state.entries[newPath]);
} }
if (oldEntry.tempFile) {
const filterMethod = f => f.path !== oldEntry.path;
state.openFiles = state.openFiles.filter(filterMethod);
state.changedFiles = state.changedFiles.filter(filterMethod);
parent.tree = parent.tree.filter(filterMethod);
Vue.delete(state.entries, oldEntry.path);
}
}, },
...projectMutations, ...projectMutations,
...mergeRequestMutation, ...mergeRequestMutation,
......
...@@ -55,7 +55,7 @@ export default { ...@@ -55,7 +55,7 @@ export default {
f => f.path === file.path && f.pending && !(f.tempFile && !f.prevPath), f => f.path === file.path && f.pending && !(f.tempFile && !f.prevPath),
); );
if (file.tempFile) { if (file.tempFile && file.content === '') {
Object.assign(state.entries[file.path], { Object.assign(state.entries[file.path], {
content: raw, content: raw,
}); });
......
...@@ -1451,4 +1451,9 @@ $ide-tree-text-start: $ide-activity-bar-width + $ide-tree-padding; ...@@ -1451,4 +1451,9 @@ $ide-tree-text-start: $ide-activity-bar-width + $ide-tree-padding;
.dropdown { .dropdown {
min-width: 180px; min-width: 180px;
} }
.dropdown-menu {
max-height: 222px;
overflow: hidden;
}
} }
import Vue from 'vue'; import Vue from 'vue';
import { createStore } from '~/ide/stores'; import { createStore } from '~/ide/stores';
import Bar from '~/ide/components/file_templates/bar.vue'; import Bar from '~/ide/components/file_templates/bar.vue';
import { createComponentWithStore } from 'spec/helpers/vue_mount_component_helper'; import { mountComponentWithStore } from 'spec/helpers/vue_mount_component_helper';
import { resetStore, file } from '../../helpers'; import { resetStore, file } from '../../helpers';
describe('IDE file templates bar component', () => { describe('IDE file templates bar component', () => {
...@@ -21,7 +21,7 @@ describe('IDE file templates bar component', () => { ...@@ -21,7 +21,7 @@ describe('IDE file templates bar component', () => {
active: true, active: true,
}); });
vm = createComponentWithStore(Component, store).$mount(); vm = mountComponentWithStore(Component, { store });
}); });
afterEach(() => { afterEach(() => {
...@@ -35,7 +35,7 @@ describe('IDE file templates bar component', () => { ...@@ -35,7 +35,7 @@ describe('IDE file templates bar component', () => {
}); });
it('calls setSelectedTemplateType when clicking item', () => { it('calls setSelectedTemplateType when clicking item', () => {
spyOn(vm, 'setSelectedTemplateType'); spyOn(vm, 'setSelectedTemplateType').and.stub();
vm.$el.querySelector('.dropdown-content button').click(); vm.$el.querySelector('.dropdown-content button').click();
...@@ -66,7 +66,7 @@ describe('IDE file templates bar component', () => { ...@@ -66,7 +66,7 @@ describe('IDE file templates bar component', () => {
}); });
it('calls fetchTemplate on click', () => { it('calls fetchTemplate on click', () => {
spyOn(vm, 'fetchTemplate'); spyOn(vm, 'fetchTemplate').and.stub();
vm.$el vm.$el
.querySelectorAll('.dropdown-content')[1] .querySelectorAll('.dropdown-content')[1]
...@@ -90,7 +90,7 @@ describe('IDE file templates bar component', () => { ...@@ -90,7 +90,7 @@ describe('IDE file templates bar component', () => {
}); });
it('calls undoFileTemplate when clicking undo button', () => { it('calls undoFileTemplate when clicking undo button', () => {
spyOn(vm, 'undoFileTemplate'); spyOn(vm, 'undoFileTemplate').and.stub();
vm.$el.querySelector('.btn-default').click(); vm.$el.querySelector('.btn-default').click();
......
...@@ -32,7 +32,7 @@ describe('IDE file templates dropdown component', () => { ...@@ -32,7 +32,7 @@ describe('IDE file templates dropdown component', () => {
}); });
it('calls async store method on Bootstrap dropdown event', () => { it('calls async store method on Bootstrap dropdown event', () => {
spyOn(vm, 'fetchTemplateTypes'); spyOn(vm, 'fetchTemplateTypes').and.stub();
$(vm.$el).trigger('show.bs.dropdown'); $(vm.$el).trigger('show.bs.dropdown');
...@@ -91,7 +91,7 @@ describe('IDE file templates dropdown component', () => { ...@@ -91,7 +91,7 @@ describe('IDE file templates dropdown component', () => {
}); });
it('calls clickItem on click', done => { it('calls clickItem on click', done => {
spyOn(vm, 'clickItem'); spyOn(vm, 'clickItem').and.stub();
vm.$store.state.fileTemplates.templates = [ vm.$store.state.fileTemplates.templates = [
{ {
...@@ -158,7 +158,7 @@ describe('IDE file templates dropdown component', () => { ...@@ -158,7 +158,7 @@ describe('IDE file templates dropdown component', () => {
}); });
it('calls clickItem on click', done => { it('calls clickItem on click', done => {
spyOn(vm, 'clickItem'); spyOn(vm, 'clickItem').and.stub();
vm.$nextTick(() => { vm.$nextTick(() => {
vm.$el.querySelector('.dropdown-content button').click(); vm.$el.querySelector('.dropdown-content button').click();
......
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