diff --git a/app/javascript/packs/vue/protocol.js b/app/javascript/packs/vue/protocol.js index ee4063cf2..70003dfa0 100644 --- a/app/javascript/packs/vue/protocol.js +++ b/app/javascript/packs/vue/protocol.js @@ -4,9 +4,12 @@ import TurbolinksAdapter from 'vue-turbolinks'; import Vue from 'vue/dist/vue.esm'; import ProtocolContainer from '../../vue/protocol/container.vue'; import PerfectScrollbar from 'vue2-perfect-scrollbar'; +import outsideClick from './directives/outside_click'; + Vue.use(PerfectScrollbar); Vue.use(TurbolinksAdapter); +Vue.directive('click-outside', outsideClick); Vue.prototype.i18n = window.I18n; Vue.prototype.inlineEditing = window.inlineEditing; Vue.prototype.ActiveStoragePreviews = window.ActiveStoragePreviews; diff --git a/app/javascript/packs/vue/results.js b/app/javascript/packs/vue/results.js index e9f92ede5..b16bbcbdf 100644 --- a/app/javascript/packs/vue/results.js +++ b/app/javascript/packs/vue/results.js @@ -2,9 +2,12 @@ import TurbolinksAdapter from 'vue-turbolinks'; import Vue from 'vue/dist/vue.esm'; import Results from '../../vue/results/results.vue'; import PerfectScrollbar from 'vue2-perfect-scrollbar'; +import outsideClick from './directives/outside_click'; + Vue.use(PerfectScrollbar); Vue.use(TurbolinksAdapter); +Vue.directive('click-outside', outsideClick); Vue.prototype.i18n = window.I18n; Vue.prototype.ActiveStoragePreviews = window.ActiveStoragePreviews; diff --git a/app/javascript/vue/shared/content/checklist.vue b/app/javascript/vue/shared/content/checklist.vue index df883eda1..c200ec626 100644 --- a/app/javascript/vue/shared/content/checklist.vue +++ b/app/javascript/vue/shared/content/checklist.vue @@ -22,20 +22,17 @@ @update="updateName" /> -
- - - - -
+
-
+
-
- - - - -
+
-
+
@@ -79,10 +76,11 @@ import InlineEdit from '../inline_edit.vue' import TableNameModal from './modal/table_name.vue' import moveElementModal from './modal/move.vue' + import MenuDropdown from '../menu_dropdown.vue' export default { name: 'ContentTable', - components: { deleteElementModal, InlineEdit, TableNameModal, moveElementModal }, + components: { deleteElementModal, InlineEdit, TableNameModal, moveElementModal, MenuDropdown }, mixins: [DeleteMixin, DuplicateMixin, MoveMixin], props: { element: { @@ -117,6 +115,34 @@ computed: { locked() { return !this.element.attributes.orderable.urls.update_url + }, + actionMenu() { + let menu = []; + if (this.element.attributes.orderable.urls.update_url) { + menu.push({ + text: I18n.t('general.edit'), + emit: 'edit' + }); + } + if (this.element.attributes.orderable.urls.duplicate_url) { + menu.push({ + text: I18n.t('general.duplicate'), + emit: 'duplicate' + }); + } + if (this.element.attributes.orderable.urls.move_targets_url) { + menu.push({ + text: I18n.t('general.move'), + emit: 'move' + }); + } + if (this.element.attributes.orderable.urls.delete_url) { + menu.push({ + text: I18n.t('general.delete'), + emit: 'delete' + }); + } + return menu; } }, updated() { diff --git a/app/javascript/vue/shared/content/text.vue b/app/javascript/vue/shared/content/text.vue index e9f8a998a..e1dc0e654 100644 --- a/app/javascript/vue/shared/content/text.vue +++ b/app/javascript/vue/shared/content/text.vue @@ -24,20 +24,17 @@ @update="updateName" />
-
- - - - -
+
+
+ + +
+ + + diff --git a/config/locales/en.yml b/config/locales/en.yml index e5ea017ca..fcca0c109 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -3587,6 +3587,7 @@ en: edit: "Edit" delete: "Delete" cancel: "Cancel" + duplicate: "Duplicate" okay: "Okay" back: "Back" close: "Close"