Skip to content

Commit 0c864c5

Browse files
authored
Merge pull request #1471 from nextcloud/fix/use-ncselect
Replace deprecated NcMultiselect with recommended NcSelect
2 parents b6597d1 + 4236b5a commit 0c864c5

3 files changed

Lines changed: 25 additions & 34 deletions

File tree

src/FormsSettings.vue

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -30,15 +30,14 @@
3030
@update:checked="onRestrictCreationChange">
3131
{{ t('forms', 'Restrict form creation to selected groups') }}
3232
</NcCheckboxRadioSwitch>
33-
<NcMultiselect v-model="appConfig.creationAllowedGroups"
33+
<NcSelect v-model="appConfig.creationAllowedGroups"
3434
:disabled="!appConfig.restrictCreation"
3535
:multiple="true"
3636
:options="availableGroups"
3737
:placeholder="t('forms', 'Select groups')"
3838
class="forms-settings__creation__multiselect"
3939
label="displayName"
40-
track-by="groupId"
41-
@update:value="onCreationAllowedGroupsChange" />
40+
@input="onCreationAllowedGroupsChange" />
4241
</NcSettingsSection>
4342
<NcSettingsSection :title="t('forms', 'Form sharing')">
4443
<NcCheckboxRadioSwitch ref="switchAllowPublicLink"
@@ -63,7 +62,7 @@ import { loadState } from '@nextcloud/initial-state'
6362
import { generateUrl } from '@nextcloud/router'
6463
import axios from '@nextcloud/axios'
6564
import NcCheckboxRadioSwitch from '@nextcloud/vue/dist/Components/NcCheckboxRadioSwitch.js'
66-
import NcMultiselect from '@nextcloud/vue/dist/Components/NcMultiselect.js'
65+
import NcSelect from '@nextcloud/vue/dist/Components/NcSelect.js'
6766
import NcSettingsSection from '@nextcloud/vue/dist/Components/NcSettingsSection.js'
6867
6968
import logger from './utils/Logger.js'
@@ -73,7 +72,7 @@ export default {
7372
7473
components: {
7574
NcCheckboxRadioSwitch,
76-
NcMultiselect,
75+
NcSelect,
7776
NcSettingsSection,
7877
},
7978

src/components/Questions/QuestionDropdown.vue

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -42,16 +42,16 @@
4242
{{ t('forms', 'Shuffle options') }}
4343
</NcActionCheckbox>
4444
</template>
45-
<NcMultiselect v-if="!edit"
45+
<NcSelect v-if="!edit"
4646
v-model="selectedOption"
4747
:name="text"
4848
:placeholder="selectOptionPlaceholder"
4949
:multiple="isMultiple"
5050
:required="isRequired"
5151
:options="sortedOptions"
52+
:searchable="false"
5253
label="text"
53-
track-by="id"
54-
@select="onSelect" />
54+
@input="onInput" />
5555

5656
<ol v-if="edit" class="question__content">
5757
<!-- Answer text input edit -->
@@ -87,7 +87,7 @@ import { emit } from '@nextcloud/event-bus'
8787
import { generateOcsUrl } from '@nextcloud/router'
8888
import axios from '@nextcloud/axios'
8989
import NcActionCheckbox from '@nextcloud/vue/dist/Components/NcActionCheckbox.js'
90-
import NcMultiselect from '@nextcloud/vue/dist/Components/NcMultiselect.js'
90+
import NcSelect from '@nextcloud/vue/dist/Components/NcSelect.js'
9191
9292
import AnswerInput from './AnswerInput.vue'
9393
import QuestionMixin from '../../mixins/QuestionMixin.js'
@@ -100,7 +100,7 @@ export default {
100100
components: {
101101
AnswerInput,
102102
NcActionCheckbox,
103-
NcMultiselect,
103+
NcSelect,
104104
},
105105
106106
mixins: [QuestionMixin],
@@ -173,15 +173,14 @@ export default {
173173
},
174174
175175
methods: {
176-
onSelect(option) {
177-
// Simple select
178-
if (!this.isMultiple) {
179-
this.$emit('update:values', [option.id])
176+
onInput(option) {
177+
if (Array.isArray(option)) {
178+
this.$emit('update:values', [...new Set(option.map((opt) => opt.id))])
180179
return
181180
}
182181
183-
// Emit values and remove duplicates
184-
this.$emit('update:values', [...new Set(option.id)])
182+
// Simple select
183+
this.$emit('update:values', option ? [option.id] : [])
185184
},
186185
187186
/**

src/components/SidebarTabs/SharingSearchDiv.vue

Lines changed: 11 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -23,35 +23,28 @@
2323

2424
<template>
2525
<div>
26-
<NcMultiselect :clear-on-select="false"
26+
<NcSelect :clear-search-on-select="false"
2727
:close-on-select="false"
28-
:hide-selected="true"
29-
:internal-search="false"
3028
:loading="showLoadingCircle"
29+
:get-option-key="(option) => option.key"
3130
:options="options"
3231
:placeholder="t('forms', 'Search for user or group …')"
33-
:preselect-first="true"
34-
:searchable="true"
3532
:user-select="true"
3633
label="displayName"
37-
track-by="key"
38-
@search-change="asyncSearch"
39-
@select="addShare">
40-
<template #noOptions>
41-
{{ t('forms', 'No recommendations. Start typing.') }}
42-
</template>
43-
<template #noResult>
34+
@search="asyncSearch"
35+
@input="addShare">
36+
<template #no-options>
4437
{{ noResultText }}
4538
</template>
46-
</NcMultiselect>
39+
</NcSelect>
4740
</div>
4841
</template>
4942

5043
<script>
5144
import { generateOcsUrl } from '@nextcloud/router'
5245
import { getCurrentUser } from '@nextcloud/auth'
5346
import axios from '@nextcloud/axios'
54-
import NcMultiselect from '@nextcloud/vue/dist/Components/NcMultiselect.js'
47+
import NcSelect from '@nextcloud/vue/dist/Components/NcSelect.js'
5548
import debounce from 'debounce'
5649
5750
import OcsResponse2Data from '../../utils/OcsResponse2Data.js'
@@ -60,7 +53,7 @@ import logger from '../../utils/Logger.js'
6053
6154
export default {
6255
components: {
63-
NcMultiselect,
56+
NcSelect,
6457
},
6558
6659
mixins: [ShareTypes],
@@ -122,8 +115,8 @@ export default {
122115
* @return {string}
123116
*/
124117
noResultText() {
125-
if (this.loading) {
126-
return t('forms', 'Searching …')
118+
if (!this.query) {
119+
return t('forms', 'No recommendations. Start typing.')
127120
}
128121
return t('forms', 'No elements found.')
129122
},
@@ -308,7 +301,7 @@ export default {
308301
</script>
309302

310303
<style lang="scss" scoped>
311-
.multiselect {
304+
.select {
312305
margin-bottom: 8px !important;
313306
width: 100%;
314307
}

0 commit comments

Comments
 (0)