From 28ca1aaec6cb36730b238923c29463a599d2118a Mon Sep 17 00:00:00 2001 From: artoscinote <85488244+artoscinote@users.noreply.github.com> Date: Thu, 21 Jul 2022 09:57:14 +0200 Subject: [PATCH] Disable checklist item drag for less than 2 items, fix base element controller [SCI-6997] (#4275) --- app/assets/stylesheets/steps/step.scss | 5 +++++ app/controllers/step_elements/base_controller.rb | 2 +- app/javascript/vue/protocol/step_elements/checklist.vue | 3 ++- app/javascript/vue/protocol/step_elements/checklistItem.vue | 6 +++++- 4 files changed, 13 insertions(+), 3 deletions(-) diff --git a/app/assets/stylesheets/steps/step.scss b/app/assets/stylesheets/steps/step.scss index 018de5b65..a69376c31 100644 --- a/app/assets/stylesheets/steps/step.scss +++ b/app/assets/stylesheets/steps/step.scss @@ -322,6 +322,11 @@ &.step-element-grip--draggable { cursor: grab; } + + &.step-element-grip--disabled { + pointer-events: none; + .fas { opacity: 0; } + } } .sci-reorderable-items { diff --git a/app/controllers/step_elements/base_controller.rb b/app/controllers/step_elements/base_controller.rb index 4af41ccba..2c41d5479 100644 --- a/app/controllers/step_elements/base_controller.rb +++ b/app/controllers/step_elements/base_controller.rb @@ -30,7 +30,7 @@ module StepElements end def render_step_orderable_element(orderable) - step_orderable_element = orderable.step_orderable_elements.find_by!(step: @step) + step_orderable_element = orderable.step_orderable_element render json: step_orderable_element, serializer: StepOrderableElementSerializer, user: current_user end diff --git a/app/javascript/vue/protocol/step_elements/checklist.vue b/app/javascript/vue/protocol/step_elements/checklist.vue index 8bf6d26d1..72097769a 100644 --- a/app/javascript/vue/protocol/step_elements/checklist.vue +++ b/app/javascript/vue/protocol/step_elements/checklist.vue @@ -40,7 +40,7 @@ :dragClass="'step-checklist-item-drag'" :chosenClass="'step-checklist-item-chosen'" :handle="'.step-element-grip'" - :disabled="editingItem && !element.attributes.orderable.urls.reorder_url" + :disabled="editingItem || checklistItems.length < 2 || !element.attributes.orderable.urls.reorder_url" @start="startReorder" @end="endReorder" > @@ -51,6 +51,7 @@ :locked="locked" :reorderChecklistItemUrl="element.attributes.orderable.urls.reorder_url" :inRepository="inRepository" + :draggable="checklistItems.length > 1" @editStart="editingItem = true" @editEnd="editingItem = false" @update="saveItem" diff --git a/app/javascript/vue/protocol/step_elements/checklistItem.vue b/app/javascript/vue/protocol/step_elements/checklistItem.vue index cac9df333..52ffe5622 100644 --- a/app/javascript/vue/protocol/step_elements/checklistItem.vue +++ b/app/javascript/vue/protocol/step_elements/checklistItem.vue @@ -1,7 +1,7 @@