From be74e3936d1103e0f7180a562fa43d8cdeaf020b Mon Sep 17 00:00:00 2001 From: Phil Hughes Date: Tue, 10 Jul 2018 14:56:50 +0100 Subject: [PATCH] Improvements to new entry dropdowns in Web IDE Closes #44845 --- app/assets/javascripts/ide/components/ide.vue | 3 + .../javascripts/ide/components/ide_tree.vue | 37 ++++- .../ide/components/new_dropdown/button.vue | 51 +++++++ .../ide/components/new_dropdown/index.vue | 70 ++++----- .../ide/components/new_dropdown/modal.vue | 72 +++++----- .../ide/components/new_dropdown/upload.vue | 136 ++++++++++-------- .../javascripts/ide/components/repo_file.vue | 11 ++ app/assets/javascripts/ide/stores/actions.js | 13 +- .../javascripts/ide/stores/mutation_types.js | 2 + .../javascripts/ide/stores/mutations.js | 5 + app/assets/javascripts/ide/stores/state.js | 4 + .../vue_shared/components/gl_modal.vue | 6 + app/assets/stylesheets/pages/repo.scss | 48 +++---- .../ide-row-dropdown-design-update.yml | 5 + locale/gitlab.pot | 3 + .../projects/tree/create_directory_spec.rb | 8 +- .../projects/tree/create_file_spec.rb | 4 +- .../projects/tree/upload_file_spec.rb | 4 - .../components/new_dropdown/button_spec.js | 49 +++++++ .../ide/components/new_dropdown/index_spec.js | 46 ++---- .../ide/components/new_dropdown/modal_spec.js | 36 ++--- .../components/new_dropdown/upload_spec.js | 3 - 22 files changed, 363 insertions(+), 253 deletions(-) create mode 100644 app/assets/javascripts/ide/components/new_dropdown/button.vue create mode 100644 changelogs/unreleased/ide-row-dropdown-design-update.yml create mode 100644 spec/javascripts/ide/components/new_dropdown/button_spec.js diff --git a/app/assets/javascripts/ide/components/ide.vue b/app/assets/javascripts/ide/components/ide.vue index 9f016e0338f..257a7432c20 100644 --- a/app/assets/javascripts/ide/components/ide.vue +++ b/app/assets/javascripts/ide/components/ide.vue @@ -1,6 +1,7 @@ diff --git a/app/assets/javascripts/ide/components/new_dropdown/button.vue b/app/assets/javascripts/ide/components/new_dropdown/button.vue new file mode 100644 index 00000000000..7682b34ce4d --- /dev/null +++ b/app/assets/javascripts/ide/components/new_dropdown/button.vue @@ -0,0 +1,51 @@ + + + diff --git a/app/assets/javascripts/ide/components/new_dropdown/index.vue b/app/assets/javascripts/ide/components/new_dropdown/index.vue index 1e398d7e1aa..c29e49ba766 100644 --- a/app/assets/javascripts/ide/components/new_dropdown/index.vue +++ b/app/assets/javascripts/ide/components/new_dropdown/index.vue @@ -3,12 +3,14 @@ import { mapActions } from 'vuex'; import icon from '~/vue_shared/components/icon.vue'; import newModal from './modal.vue'; import upload from './upload.vue'; +import ItemButton from './button.vue'; export default { components: { icon, newModal, upload, + ItemButton, }, props: { branch: { @@ -20,11 +22,13 @@ export default { required: false, default: '', }, + mouseOver: { + type: Boolean, + required: true, + }, }, data() { return { - openModal: false, - modalType: '', dropdownOpen: false, }; }, @@ -34,17 +38,18 @@ export default { this.$refs.dropdownMenu.scrollIntoView(); }); }, + mouseOver() { + if (!this.mouseOver) { + this.dropdownOpen = false; + } + }, }, methods: { - ...mapActions(['createTempEntry']), + ...mapActions(['createTempEntry', 'openNewEntryModal']), createNewItem(type) { - this.modalType = type; - this.openModal = true; + this.openNewEntryModal({ type, path: this.path }); this.dropdownOpen = false; }, - hideModal() { - this.openModal = false; - }, openDropdown() { this.dropdownOpen = !this.dropdownOpen; }, @@ -58,23 +63,19 @@ export default { :class="{ show: dropdownOpen, }" - class="dropdown" + class="dropdown d-flex" > - diff --git a/app/assets/javascripts/ide/components/new_dropdown/modal.vue b/app/assets/javascripts/ide/components/new_dropdown/modal.vue index 1e9668d5154..1867b7980d2 100644 --- a/app/assets/javascripts/ide/components/new_dropdown/modal.vue +++ b/app/assets/javascripts/ide/components/new_dropdown/modal.vue @@ -1,78 +1,70 @@ diff --git a/app/assets/javascripts/ide/components/new_dropdown/upload.vue b/app/assets/javascripts/ide/components/new_dropdown/upload.vue index 677b282bd61..5b1743bb30e 100644 --- a/app/assets/javascripts/ide/components/new_dropdown/upload.vue +++ b/app/assets/javascripts/ide/components/new_dropdown/upload.vue @@ -1,71 +1,85 @@