@danielgindi/selectbox 2.0.26 → 2.0.28

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/vue/SelectBox.vue CHANGED
@@ -35,241 +35,254 @@ const isVue3 = version > '3.';
35
35
  * list-item, single-item, multi-item, rest-multi-item, no-results-item
36
36
  */
37
37
 
38
- export default {
39
- inheritAttrs: false,
40
-
41
- props: {
42
- disabled: {
43
- type: Boolean,
44
- default: false,
45
- },
46
- clearable: {
47
- type: Boolean,
48
- default: true,
49
- },
50
- hasOpenIndicator: {
51
- type: Boolean,
52
- default: true,
53
- },
54
- placeholder: {
55
- type: String,
56
- default: '',
57
- },
58
- sortSelectedItems: {
59
- type: Boolean,
60
- default: true,
61
- },
62
- sortListItems: {
63
- type: Boolean,
64
- default: false,
65
- },
66
- sortListCheckedFirst: {
67
- type: Boolean,
68
- default: true,
69
- },
70
- stickyValues: {
71
- type: Array,
72
- required: false,
73
- },
74
- sortItemComparator: {
75
- type: Function,
76
- required: false,
77
- },
78
- splitListCheckedGroups: {
79
- type: Boolean,
80
- default: true,
81
- },
82
- showSelection: {
83
- type: Boolean,
84
- default: true,
85
- },
86
- showPlaceholderInTooltip: {
87
- type: Boolean,
88
- default: true,
89
- },
90
- multiPlaceholderFormatter: {
91
- type: Function,
92
- required: false,
93
- default: undefined,
94
- },
95
- blurOnSingleSelection: {
96
- type: [Boolean, String],
97
- default: 'touch',
98
- validator: value => {
99
- return [true, false, 'touch', null].includes(value);
100
- },
101
- },
102
- multi: {
103
- type: Boolean,
104
- default: false,
105
- },
106
- searchable: {
107
- type: Boolean,
108
- default: true,
109
- },
110
- noResultsText: {
111
- type: String,
112
- default: 'No matching results',
113
- },
114
- filterThrottleWindow: {
115
- type: Number,
116
- default: 300,
117
- },
118
- filterOnEmptyTerm: {
119
- type: Boolean,
120
- default: false,
121
- },
122
- filterFn: {
123
- type: Function,
124
- default: undefined,
125
- },
126
- // eslint-disable-next-line vue/require-prop-types
127
- filterDependencies: {
128
- default: undefined,
129
- },
130
- labelProp: {
131
- type: String,
132
- default: 'label',
133
- },
134
- valueProp: {
135
- type: String,
136
- default: 'value',
137
- },
138
- multiItemLabelProp: {
139
- type: String,
140
- default: 'short_label',
141
- },
142
- items: {
143
- type: Array,
144
- default: () => [],
145
- },
146
- [isVue3 ? 'modelValue' : 'value']: {
147
- type: [String, Number, Boolean, Object, Array, Symbol],
148
- default: undefined,
149
- },
150
- maxMultiItems: {
151
- type: Number,
152
- required: false,
153
- },
154
- multiItemsRestLabelProvider: {
155
- type: Function,
156
- required: false,
157
- },
158
- renderSingleItem: {
159
- type: Function,
160
- default: undefined,
161
- },
162
- unrenderSingleItem: {
163
- type: Function,
164
- default: undefined,
165
- },
166
- renderMultiItem: {
167
- type: Function,
168
- default: undefined,
169
- },
170
- unrenderMultiItem: {
171
- type: Function,
172
- default: undefined,
173
- },
174
- renderRestMultiItem: {
175
- type: Function,
176
- default: undefined,
177
- },
178
- unrenderRestMultiItem: {
179
- type: Function,
180
- default: undefined,
181
- },
182
- renderNoResultsItem: {
183
- type: Function,
184
- default: undefined,
185
- },
186
- unrenderNoResultsItem: {
187
- type: Function,
188
- default: undefined,
189
- },
190
- renderListItem: {
191
- type: Function,
192
- default: undefined,
193
- },
194
- unrenderListItem: {
195
- type: Function,
196
- default: undefined,
197
- },
198
- virtualMinItems: {
199
- type: Number,
200
- default: 10,
201
- },
202
- baseClass: {
203
- type: String,
204
- default: undefined,
205
- },
206
- droplistBaseClass: {
207
- type: String,
208
- default: undefined,
209
- },
210
- additionalClasses: {
211
- type: [Object, Array, String],
212
- default: undefined,
213
- },
214
- additionalDroplistClasses: {
215
- type: [Object, Array, String],
216
- default: undefined,
217
- },
218
- direction: {
219
- type: String,
220
- default: undefined,
221
- },
222
- fixedDroplistWidth: {
223
- type: Boolean,
224
- default: false,
225
- },
226
- acceptNullAsValue: {
227
- type: Boolean,
228
- default: false,
229
- },
230
- emitNullForEmptyValue: {
231
- type: Boolean,
232
- default: false,
233
- },
234
- isLoadingMode: {
235
- type: Boolean,
236
- default: false,
38
+ export const PropTypes = {
39
+ disabled: {
40
+ type: Boolean,
41
+ default: false,
42
+ },
43
+ readonly: {
44
+ type: Boolean,
45
+ default: false,
46
+ },
47
+ clearable: {
48
+ type: Boolean,
49
+ default: true,
50
+ },
51
+ hasOpenIndicator: {
52
+ type: Boolean,
53
+ default: true,
54
+ },
55
+ placeholder: {
56
+ type: String,
57
+ default: '',
58
+ },
59
+ sortSelectedItems: {
60
+ type: Boolean,
61
+ default: true,
62
+ },
63
+ sortListItems: {
64
+ type: Boolean,
65
+ default: false,
66
+ },
67
+ sortListCheckedFirst: {
68
+ type: Boolean,
69
+ default: true,
70
+ },
71
+ stickyValues: {
72
+ type: Array,
73
+ required: false,
74
+ },
75
+ sortItemComparator: {
76
+ type: Function,
77
+ required: false,
78
+ },
79
+ splitListCheckedGroups: {
80
+ type: Boolean,
81
+ default: true,
82
+ },
83
+ showSelection: {
84
+ type: Boolean,
85
+ default: true,
86
+ },
87
+ showPlaceholderInTooltip: {
88
+ type: Boolean,
89
+ default: true,
90
+ },
91
+ multiPlaceholderFormatter: {
92
+ type: Function,
93
+ required: false,
94
+ default: undefined,
95
+ },
96
+ blurOnSingleSelection: {
97
+ type: [Boolean, String],
98
+ default: 'touch',
99
+ validator: value => {
100
+ return [true, false, 'touch', null].includes(value);
237
101
  },
238
- closeListWhenLoading: {
239
- type: Boolean,
240
- default: true,
102
+ },
103
+ multi: {
104
+ type: Boolean,
105
+ default: false,
106
+ },
107
+ searchable: {
108
+ type: Boolean,
109
+ default: true,
110
+ },
111
+ noResultsText: {
112
+ type: String,
113
+ default: 'No matching results',
114
+ },
115
+ filterThrottleWindow: {
116
+ type: Number,
117
+ default: 300,
118
+ },
119
+ filterOnEmptyTerm: {
120
+ type: Boolean,
121
+ default: false,
122
+ },
123
+ filterFn: {
124
+ type: Function,
125
+ default: undefined,
126
+ },
127
+ filterDependencies: {
128
+ type: [Array, String, Number, Boolean, Object],
129
+ default: undefined,
130
+ },
131
+ labelProp: {
132
+ type: String,
133
+ default: 'label',
134
+ },
135
+ valueProp: {
136
+ type: String,
137
+ default: 'value',
138
+ },
139
+ multiItemLabelProp: {
140
+ type: String,
141
+ default: 'short_label',
142
+ },
143
+ multiItemRemovePosition: {
144
+ type: String,
145
+ default: 'after',
146
+ validator: value => {
147
+ return ['before', 'after', 'none'].includes(value);
241
148
  },
242
- clearInputWhen: {
243
- type: Array,
244
- required: false,
245
- default: () => ['single_close', 'multi_select_single'],
246
- validator: value => {
247
- if (value && !Array.isArray(value))
149
+ },
150
+ items: {
151
+ type: Array,
152
+ default: () => [],
153
+ },
154
+ [isVue3 ? 'modelValue' : 'value']: {
155
+ type: [String, Number, Boolean, Object, Array, Symbol],
156
+ default: undefined,
157
+ },
158
+ maxMultiItems: {
159
+ type: Number,
160
+ required: false,
161
+ },
162
+ multiItemsRestLabelProvider: {
163
+ type: Function,
164
+ required: false,
165
+ },
166
+ renderSingleItem: {
167
+ type: Function,
168
+ default: undefined,
169
+ },
170
+ unrenderSingleItem: {
171
+ type: Function,
172
+ default: undefined,
173
+ },
174
+ renderMultiItem: {
175
+ type: Function,
176
+ default: undefined,
177
+ },
178
+ unrenderMultiItem: {
179
+ type: Function,
180
+ default: undefined,
181
+ },
182
+ renderRestMultiItem: {
183
+ type: Function,
184
+ default: undefined,
185
+ },
186
+ unrenderRestMultiItem: {
187
+ type: Function,
188
+ default: undefined,
189
+ },
190
+ renderNoResultsItem: {
191
+ type: Function,
192
+ default: undefined,
193
+ },
194
+ unrenderNoResultsItem: {
195
+ type: Function,
196
+ default: undefined,
197
+ },
198
+ renderListItem: {
199
+ type: Function,
200
+ default: undefined,
201
+ },
202
+ unrenderListItem: {
203
+ type: Function,
204
+ default: undefined,
205
+ },
206
+ virtualMinItems: {
207
+ type: Number,
208
+ default: 10,
209
+ },
210
+ baseClass: {
211
+ type: String,
212
+ default: undefined,
213
+ },
214
+ droplistBaseClass: {
215
+ type: String,
216
+ default: undefined,
217
+ },
218
+ additionalClasses: {
219
+ type: [Object, Array, String],
220
+ default: undefined,
221
+ },
222
+ additionalDroplistClasses: {
223
+ type: [Object, Array, String],
224
+ default: undefined,
225
+ },
226
+ direction: {
227
+ type: String,
228
+ default: undefined,
229
+ },
230
+ fixedDroplistWidth: {
231
+ type: Boolean,
232
+ default: false,
233
+ },
234
+ acceptNullAsValue: {
235
+ type: Boolean,
236
+ default: false,
237
+ },
238
+ emitNullForEmptyValue: {
239
+ type: Boolean,
240
+ default: false,
241
+ },
242
+ isLoadingMode: {
243
+ type: Boolean,
244
+ default: false,
245
+ },
246
+ closeListWhenLoading: {
247
+ type: Boolean,
248
+ default: true,
249
+ },
250
+ clearInputWhen: {
251
+ type: Array,
252
+ required: false,
253
+ default: () => ['single_close', 'multi_select_single'],
254
+ validator: value => {
255
+ if (value && !Array.isArray(value))
256
+ return false;
257
+ for (let v of value) {
258
+ if (!['single_close', 'multi_close', 'multi_select_single'].includes(v))
248
259
  return false;
249
- for (let v of value) {
250
- if (!['single_close', 'multi_close', 'multi_select_single'].includes(v))
251
- return false;
252
- }
253
- return true;
254
- },
255
- },
256
- treatGroupSelectionAsItems: {
257
- type: Boolean,
258
- default: false,
259
- },
260
- autoCheckGroupChildren: {
261
- type: Boolean,
262
- default: true,
263
- },
264
- constrainListToWindow: {
265
- type: Boolean,
266
- default: true,
267
- },
268
- autoFlipListDirection: {
269
- type: Boolean,
270
- default: true,
260
+ }
261
+ return true;
271
262
  },
272
263
  },
264
+ treatGroupSelectionAsItems: {
265
+ type: Boolean,
266
+ default: false,
267
+ },
268
+ autoCheckGroupChildren: {
269
+ type: Boolean,
270
+ default: true,
271
+ },
272
+ constrainListToWindow: {
273
+ type: Boolean,
274
+ default: true,
275
+ },
276
+ autoFlipListDirection: {
277
+ type: Boolean,
278
+ default: true,
279
+ },
280
+ };
281
+
282
+ export default {
283
+ inheritAttrs: false,
284
+
285
+ props: PropTypes,
273
286
 
274
287
  emits: [
275
288
  'update:modelValue',
@@ -463,6 +476,11 @@ export default {
463
476
  this.nonReactive.instance.disable(value);
464
477
  },
465
478
 
479
+ readonly(value) {
480
+ if (this.nonReactive.instance)
481
+ this.nonReactive.instance.setReadOnly(value ?? false);
482
+ },
483
+
466
484
  clearable(value) {
467
485
  if (this.nonReactive.instance)
468
486
  this.nonReactive.instance.setClearable(value);
@@ -584,6 +602,11 @@ export default {
584
602
  this.nonReactive.instance.setMultiItemLabelProp(value);
585
603
  },
586
604
 
605
+ multiItemRemovePosition(value) {
606
+ if (this.nonReactive.instance)
607
+ this.nonReactive.instance.setMultiItemRemovePosition(value);
608
+ },
609
+
587
610
  maxMultiItems(value) {
588
611
  if (this.nonReactive.instance)
589
612
  this.nonReactive.instance.setMaxMultiItems(value);
@@ -787,6 +810,7 @@ export default {
787
810
  baseClass: this.baseClass,
788
811
  direction: this.direction,
789
812
  disabled: this.disabled,
813
+ readonly: this.readonly,
790
814
  clearable: this.clearable,
791
815
  hasOpenIndicator: this.hasOpenIndicator,
792
816
  placeholder: this.placeholder,
@@ -808,6 +832,7 @@ export default {
808
832
  labelProp: this.labelProp,
809
833
  valueProp: this.valueProp,
810
834
  multiItemLabelProp: this.multiItemLabelProp,
835
+ multiItemRemovePosition: this.multiItemRemovePosition,
811
836
  maxMultiItems: this.maxMultiItems,
812
837
  multiItemsRestLabelProvider: this.multiItemsRestLabelProvider,
813
838
  items: this.items,