3838 <span v-localize >Build Dataset List</span >
3939 </b-dropdown-item >
4040 <b-dropdown-divider />
41- <b-dropdown-item v-b-modal:change-dbkey-of-selected-content data-description =" change database build" >
41+ <b-dropdown-item data-description =" change database build" @click = " showChangeDbKeyModal = true " >
4242 <span v-localize >Change Database/Build</span >
4343 </b-dropdown-item >
4444 <b-dropdown-item
4545 v-if =" isConfigLoaded && config.enable_celery_tasks"
46- v-b-modal: change-datatype-of-selected-content
47- data-description = " change data type " >
46+ data-description = " change data type "
47+ @click = " showChangeDatatypeModal = true " >
4848 <span v-localize >Change data type</span >
4949 </b-dropdown-item >
50- <b-dropdown-item v-b-modal:add-tags-to-selected-content data-description =" add tags" >
50+ <b-dropdown-item data-description =" add tags" @click = " showAddTagsModal = true " >
5151 <span v-localize >Add tags</span >
5252 </b-dropdown-item >
53- <b-dropdown-item v-b-modal:remove-tags-from-selected-content data-description =" remove tags" >
53+ <b-dropdown-item data-description =" remove tags" @click = " showRemoveTagsModal = true " >
5454 <span v-localize >Remove tags</span >
5555 </b-dropdown-item >
5656 <b-dropdown-divider v-if =" showBuildOptions" />
6262 </b-dropdown-item >
6363 </b-dropdown >
6464
65- <b-modal
66- id = " change-dbkey-of-selected-content "
65+ <GModal
66+ :show.sync = " showChangeDbKeyModal "
6767 title =" Change Database/Build?"
68- title-tag =" h2"
69- body-class =" modal-with-selector"
70- @ok =" changeDbkeyOfSelected" >
68+ confirm
69+ size =" small"
70+ overflow-visible
71+ @ok =" changeDbkeyOfSelected"
72+ @cancel =" resetDbKey" >
7173 <p v-localize >Select a new Database/Build for {{ numSelected }} items:</p >
7274 <DbKeyProvider v-slot =" { item: dbkeys, loading: loadingDbKeys }" >
7375 <SingleItemSelector
7779 :current-item =" selectedDbKey"
7880 @update:selected-item =" onSelectedDbKey" />
7981 </DbKeyProvider >
80- </b-modal >
81- <b-modal
82- id = " change-datatype-of-selected-content "
82+ </GModal >
83+ <GModal
84+ :show.sync = " showChangeDatatypeModal "
8385 title =" Change data type?"
84- title-tag =" h2"
85- body-class =" modal-with-selector"
86+ confirm
87+ size =" small"
88+ overflow-visible
8689 :ok-disabled =" selectedDatatype == null"
87- @ok =" changeDatatypeOfSelected" >
90+ @ok =" changeDatatypeOfSelected"
91+ @cancel =" resetDatatype" >
8892 <p v-localize >Select a new data type for {{ numSelected }} items:</p >
8993 <DatatypesProvider v-slot =" { item: datatypes, loading: loadingDatatypes }" >
9094 <SingleItemSelector
9498 :current-item =" selectedDatatype"
9599 @update:selected-item =" onSelectedDatatype" />
96100 </DatatypesProvider >
97- </b-modal >
98- <b-modal
99- id = " add-tags-to-selected-content "
101+ </GModal >
102+ <GModal
103+ :show.sync = " showAddTagsModal "
100104 title =" Add tags?"
101- title-tag =" h2"
105+ confirm
106+ size =" small"
102107 :ok-disabled =" noTagsSelected"
103- @ok =" addTagsToSelected" >
108+ @ok =" addTagsToSelected"
109+ @cancel =" selectedTags = []" >
104110 <p v-localize >Apply the following tags to {{ numSelected }} items:</p >
105- <StatelessTags v-model =" selectedTags" class =" tags" />
106- </b-modal >
107- <b-modal
108- id =" remove-tags-from-selected-content"
111+ <StatelessTags :key =" showAddTagsModal" v-model =" selectedTags" class =" tags" />
112+ <GTip class =" mt-2" :tips =" ['Press Enter after typing each tag.']" />
113+ </GModal >
114+ <GModal
115+ :show.sync =" showRemoveTagsModal"
109116 title =" Remove tags?"
110- title-tag =" h2"
117+ confirm
118+ size =" small"
111119 :ok-disabled =" noTagsSelected"
112- @ok =" removeTagsFromSelected" >
120+ @ok =" removeTagsFromSelected"
121+ @cancel =" selectedTags = []" >
113122 <p v-localize >Remove the following tags from {{ numSelected }} items:</p >
114- <StatelessTags v-model =" selectedTags" class =" tags" />
115- </b-modal >
123+ <StatelessTags :key =" showRemoveTagsModal" v-model =" selectedTags" class =" tags" />
124+ <GTip :tips =" ['Press Enter after typing each tag.']" />
125+ </GModal >
116126 <CollectionCreatorIndex
117127 v-if =" collectionModalType"
118128 :history-id =" history.id"
128138</template >
129139
130140<script >
141+ import { ref } from " vue" ;
142+
131143import { HistoryFilters } from " @/components/History/HistoryFilters" ;
132144import {
133145 addTagsToSelectedContent ,
@@ -146,6 +158,8 @@ import { useConfig } from "@/composables/config";
146158import { useConfirmDialog } from " @/composables/confirmDialog" ;
147159import { useCollectionBuilderItemSelection } from " @/stores/collectionBuilderItemsStore" ;
148160
161+ import GModal from " @/components/BaseComponents/GModal.vue" ;
162+ import GTip from " @/components/BaseComponents/GTip.vue" ;
149163import CollectionCreatorIndex from " @/components/Collections/CollectionCreatorIndex.vue" ;
150164import SingleItemSelector from " @/components/SingleItemSelector.vue" ;
151165
@@ -154,6 +168,8 @@ export default {
154168 CollectionCreatorIndex,
155169 DbKeyProvider,
156170 DatatypesProvider,
171+ GModal,
172+ GTip,
157173 SingleItemSelector,
158174 StatelessTags,
159175 },
@@ -170,15 +186,41 @@ export default {
170186 const { config , isConfigLoaded } = useConfig (true );
171187 const { confirm } = useConfirmDialog ();
172188
173- return { config, confirm, isConfigLoaded };
189+ // Modals for selection operations
190+ const showChangeDbKeyModal = ref (false );
191+ const showChangeDatatypeModal = ref (false );
192+ const showAddTagsModal = ref (false );
193+ const showRemoveTagsModal = ref (false );
194+
195+ const selectedDbKey = ref ({ id: " ?" , text: " unspecified (?)" });
196+ const selectedDatatype = ref ({ id: " auto" , text: " Auto-detect" });
197+
198+ function resetDbKey () {
199+ selectedDbKey .value = { id: " ?" , text: " unspecified (?)" };
200+ }
201+ function resetDatatype () {
202+ selectedDatatype .value = { id: " auto" , text: " Auto-detect" };
203+ }
204+
205+ return {
206+ config,
207+ confirm,
208+ isConfigLoaded,
209+ showChangeDbKeyModal,
210+ showChangeDatatypeModal,
211+ showAddTagsModal,
212+ showRemoveTagsModal,
213+ selectedDbKey,
214+ selectedDatatype,
215+ resetDbKey,
216+ resetDatatype,
217+ };
174218 },
175219 data : function () {
176220 return {
177221 collectionModalShow: false ,
178222 collectionModalType: null ,
179223 collectionSelection: undefined ,
180- selectedDbKey: { id: " ?" , text: " unspecified (?)" },
181- selectedDatatype: { id: " auto" , text: " Auto-detect" },
182224 selectedTags: [],
183225 };
184226 },
@@ -338,11 +380,11 @@ export default {
338380 },
339381 changeDbkeyOfSelected () {
340382 this .runOnSelection (changeDbkeyOfSelectedContent, { dbkey: this .selectedDbKey .id });
341- this .selectedDbKey = { id : " ? " } ;
383+ this .resetDbKey () ;
342384 },
343385 changeDatatypeOfSelected () {
344386 this .runOnSelection (changeDatatypeOfSelectedContent, { datatype: this .selectedDatatype .id });
345- this .selectedDatatype = { id : " auto " , text : " Auto-detect " } ;
387+ this .resetDatatype () ;
346388 },
347389 addTagsToSelected () {
348390 this .runOnSelection (addTagsToSelectedContent, { tags: this .selectedTags });
@@ -397,16 +439,3 @@ export default {
397439 },
398440};
399441 </script >
400-
401- <style >
402- .modal-with-selector {
403- overflow : initial ;
404- min-height : 300px ; /* To make room for the selector */
405- }
406-
407- .subtle-header {
408- font-size : 0.74375rem ;
409- color : #404862 ;
410- font-weight : normal ;
411- }
412- </style >
0 commit comments