Skip to content
Snippets Groups Projects
Unverified Commit 67dd1757 authored by John Molakvoæ's avatar John Molakvoæ Committed by GitHub
Browse files

Merge pull request #520 from nextcloud/fix/dropdown-insert

Fix dropdown submission insert
parents 52cfe8c1 d9ff7a18
No related branches found
No related tags found
No related merge requests found
......@@ -40,14 +40,15 @@ use OCA\Forms\Db\SubmissionMapper;
use OCA\Forms\Service\FormsService;
use OCP\AppFramework\Controller;
use OCP\AppFramework\Db\DoesNotExistException;
use OCP\AppFramework\Db\IMapperException;
use OCP\AppFramework\Http;
use OCP\ILogger;
use OCP\IL10N;
use OCP\ILogger;
use OCP\IRequest;
use OCP\IUser;
use OCP\IUserSession;
use OCP\IUserManager;
use OCP\IUserSession;
use OCP\Security\ISecureRandom;
class ApiController extends Controller {
......@@ -725,7 +726,11 @@ class ApiController extends Controller {
}
foreach ($answerArray as $answer) {
if ($question['type'] === 'multiple' || $question['type'] === 'multiple_unique') {
// Are we using answer ids as values
if ($question['type'] === 'multiple'
|| $question['type'] === 'multiple_unique'
|| $question['type'] === 'dropdown') {
// Search corresponding option, skip processing if not found
$optionIndex = array_search($answer, array_column($question['options'], 'id'));
if ($optionIndex === false) {
......
......@@ -40,13 +40,15 @@
:name="text"
:multiple="isMultiple"
:required="mandatory"
class="question__content">
class="question__content"
@change="onChange">
<option value="">
{{ selectOptionPlaceholder }}
</option>
<option v-for="answer in options"
:key="answer.id"
:value="answer.id">
:value="answer.id"
:selected="isChecked(answer.id)">
{{ answer.text }}
</option>
</select>
......@@ -152,25 +154,20 @@ export default {
},
methods: {
onChange(event, answerId) {
const isChecked = event.target.checked === true
let values = this.values.slice()
onChange(event) {
// Get all selected options
const answerIds = [...event.target.options]
.filter(option => option.selected)
.map(option => parseInt(option.value, 10))
// Simple select
if (!this.isMultiple) {
this.$emit('update:values', [answerId])
this.$emit('update:values', [answerIds[0]])
return
}
// Select with multiple
if (isChecked) {
values.push(answerId)
} else {
values = values.filter(id => id !== answerId)
}
// Emit values and remove duplicates
this.$emit('update:values', [...new Set(values)])
this.$emit('update:values', [...new Set(answerIds)])
},
/**
......
......@@ -167,6 +167,7 @@ export default {
onKeydownEnter(event) {
const formInputs = Array.from(this.$refs.form)
const sourceInputIndex = formInputs.findIndex(input => input === event.originalTarget)
// Focus next form element
formInputs[sourceInputIndex + 1].focus()
},
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment