mirror of
https://github.com/scinote-eln/scinote-web.git
synced 2024-09-20 14:45:56 +08:00
Fix issues with assign to task dropdowns [SCI-8588] (#5568)
This commit is contained in:
parent
98e1962372
commit
98cb0df46b
|
@ -462,7 +462,7 @@ class ExperimentsController < ApplicationController
|
|||
.joins(:my_modules)
|
||||
.where(experiments: { id: readable_experiments })
|
||||
.where(my_modules: { id: assignable_my_modules })
|
||||
.search(current_user, false, params[:query], 1, current_team)
|
||||
.search(current_user, false, params[:query], -1, current_team)
|
||||
.distinct
|
||||
.pluck(:id, :name)
|
||||
|
||||
|
|
|
@ -466,7 +466,7 @@ class MyModulesController < ApplicationController
|
|||
my_modules = experiment.my_modules
|
||||
.where(my_modules: { id: assignable_my_modules })
|
||||
.distinct
|
||||
.search(current_user, false, params[:query], 1, current_team)
|
||||
.search(current_user, false, params[:query], -1, current_team)
|
||||
.pluck(:id, :name)
|
||||
|
||||
return render plain: [].to_json if my_modules.blank?
|
||||
|
|
|
@ -114,7 +114,7 @@ class ProjectsController < ApplicationController
|
|||
.joins(experiments: :my_modules)
|
||||
.where(experiments: { id: readable_experiments })
|
||||
.where(my_modules: { id: assignable_my_modules })
|
||||
.search(current_user, false, params[:query], 1, current_team)
|
||||
.search(current_user, false, params[:query], -1, current_team)
|
||||
.distinct
|
||||
.pluck(:id, :name)
|
||||
|
||||
|
|
|
@ -1,8 +1,11 @@
|
|||
import TurbolinksAdapter from 'vue-turbolinks';
|
||||
import Vue from 'vue/dist/vue.esm';
|
||||
import AssignItemsToTaskModalContainer from '../../vue/assign_items_to_tasks_modal/container.vue';
|
||||
import PerfectScrollbar from 'vue2-perfect-scrollbar';
|
||||
import 'vue2-perfect-scrollbar/dist/vue2-perfect-scrollbar.css';
|
||||
|
||||
Vue.use(TurbolinksAdapter);
|
||||
Vue.use(PerfectScrollbar);
|
||||
Vue.prototype.i18n = window.I18n;
|
||||
|
||||
function initAssignItemsToTaskModalComponent() {
|
||||
|
|
|
@ -6,11 +6,15 @@
|
|||
</button>
|
||||
<span class="sn-select__caret caret"></span>
|
||||
</slot>
|
||||
<div ref="optionsContainer" class="sn-select__options" :style="optionPositionStyle">
|
||||
<perfect-scrollbar
|
||||
ref="optionsContainer"
|
||||
class="sn-select__options"
|
||||
:style="optionPositionStyle"
|
||||
>
|
||||
<template v-if="options.length">
|
||||
<div
|
||||
v-for="option in options"
|
||||
:key="option[0]" @click="setValue(option[0])"
|
||||
:key="option[0]" @mousedown.stop="setValue(option[0])"
|
||||
class="sn-select__option"
|
||||
>
|
||||
{{ option[1] }}
|
||||
|
@ -22,8 +26,8 @@
|
|||
>
|
||||
{{ this.noOptionsPlaceholder }}
|
||||
</div>
|
||||
</template>
|
||||
</div>
|
||||
</template>
|
||||
</perfect-scrollbar>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
|
@ -41,7 +45,8 @@
|
|||
data() {
|
||||
return {
|
||||
isOpen: false,
|
||||
optionPositionStyle: ''
|
||||
optionPositionStyle: '',
|
||||
blurPrevented: false
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
|
@ -58,13 +63,27 @@
|
|||
document.addEventListener("scroll", this.updateOptionPosition);
|
||||
},
|
||||
methods: {
|
||||
preventBlur() {
|
||||
this.blurPrevented = true;
|
||||
},
|
||||
allowBlur() {
|
||||
setTimeout(() => { this.blurPrevented = false }, 200);
|
||||
},
|
||||
blur() {
|
||||
setTimeout(() => {
|
||||
this.isOpen = false;
|
||||
this.$emit('blur');
|
||||
if (this.blurPrevented) {
|
||||
this.focusElement.focus();
|
||||
} else {
|
||||
this.isOpen = false;
|
||||
this.$emit('blur');
|
||||
}
|
||||
}, 200);
|
||||
},
|
||||
toggle() {
|
||||
if (this.isOpen && this.blurPrevented) {
|
||||
return;
|
||||
}
|
||||
|
||||
this.isOpen = !this.isOpen;
|
||||
|
||||
if (this.isOpen) {
|
||||
|
@ -74,6 +93,10 @@
|
|||
});
|
||||
this.$refs.optionsContainer.scrollTop = 0;
|
||||
this.updateOptionPosition();
|
||||
setTimeout(() => {
|
||||
this.$refs.optionsContainer.$el.querySelector('.ps__thumb-y').addEventListener('mousedown', this.preventBlur);
|
||||
this.$refs.optionsContainer.$el.querySelector('.ps__thumb-y').addEventListener('mouseup', this.allowBlur);
|
||||
}, 100);
|
||||
} else {
|
||||
this.optionPositionStyle = '';
|
||||
this.$emit('close');
|
||||
|
|
Loading…
Reference in a new issue