@bagelink/vue 0.0.331 → 0.0.337

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.
Files changed (53) hide show
  1. package/dist/components/MaterialIcon.vue.d.ts +4 -2
  2. package/dist/components/MaterialIcon.vue.d.ts.map +1 -1
  3. package/dist/components/form/inputs/SelectInput.vue.d.ts +24 -16
  4. package/dist/components/form/inputs/SelectInput.vue.d.ts.map +1 -1
  5. package/dist/components/index.d.ts +0 -2
  6. package/dist/components/index.d.ts.map +1 -1
  7. package/dist/components/layout/Layout.vue.d.ts +8 -0
  8. package/dist/components/layout/Layout.vue.d.ts.map +1 -1
  9. package/dist/components/layout/SidebarMenu.vue.d.ts.map +1 -1
  10. package/dist/components/layout/TabbedLayout.vue.d.ts +38 -0
  11. package/dist/components/layout/TabbedLayout.vue.d.ts.map +1 -0
  12. package/dist/components/layout/Tabs.vue.d.ts +24 -0
  13. package/dist/components/layout/Tabs.vue.d.ts.map +1 -0
  14. package/dist/components/layout/TabsBody.vue.d.ts +21 -0
  15. package/dist/components/layout/TabsBody.vue.d.ts.map +1 -0
  16. package/dist/components/layout/TabsNav.vue.d.ts +25 -0
  17. package/dist/components/layout/TabsNav.vue.d.ts.map +1 -0
  18. package/dist/components/layout/index.d.ts +4 -0
  19. package/dist/components/layout/index.d.ts.map +1 -1
  20. package/dist/components/layout/tabsManager.d.ts +4 -0
  21. package/dist/components/layout/tabsManager.d.ts.map +1 -0
  22. package/dist/index.cjs +806 -2027
  23. package/dist/index.mjs +808 -2029
  24. package/dist/style.css +420 -504
  25. package/dist/types/index.d.ts +7 -1
  26. package/dist/types/index.d.ts.map +1 -1
  27. package/dist/types/materialIcons.d.ts +1 -1
  28. package/dist/types/materialIcons.d.ts.map +1 -1
  29. package/dist/utils/index.d.ts.map +1 -1
  30. package/package.json +1 -1
  31. package/src/components/MaterialIcon.vue +3 -2
  32. package/src/components/PageTitle.vue +10 -20
  33. package/src/components/form/BglField.vue +2 -2
  34. package/src/components/form/BglForm.vue +0 -1
  35. package/src/components/form/inputs/SelectInput.vue +161 -482
  36. package/src/components/index.ts +0 -2
  37. package/src/components/layout/Layout.vue +34 -13
  38. package/src/components/layout/SidebarMenu.vue +22 -22
  39. package/src/components/layout/TabbedLayout.vue +79 -0
  40. package/src/components/layout/Tabs.vue +19 -0
  41. package/src/components/layout/TabsBody.vue +15 -0
  42. package/src/components/layout/TabsNav.vue +48 -0
  43. package/src/components/layout/index.ts +4 -0
  44. package/src/components/layout/tabsManager.ts +18 -0
  45. package/src/styles/appearance.css +42 -0
  46. package/src/styles/layout.css +74 -12
  47. package/src/styles/mobilLayout.css +77 -17
  48. package/src/styles/text.css +153 -1
  49. package/src/types/index.ts +9 -1
  50. package/src/types/materialIcons.ts +1180 -1178
  51. package/src/utils/index.ts +0 -1
  52. package/src/components/ComboBox.vue +0 -171
  53. package/src/components/TabbedLayout.vue +0 -87
@@ -1,527 +1,206 @@
1
1
  <template>
2
- <div>
3
- <label class="txt-start" :for="id">
2
+ <Dropdown ref="dropdown" placement="bottom-start" class="bagel-input selectinput">
3
+ <label>
4
4
  {{ label }}
5
- <Multiselect
6
- ref="multiselect" :id="id" label="label" trackBy="value" :options="optionList" :required="required"
7
- :placeholder="placeholder" v-model="seletValue" :close-on-select="true" v-bind="extraProps"
8
- />
9
- <!-- <input v-model="dataValue" type="hidden" :name="id" :required v-bind="extraProps"> -->
5
+ <button :disabled="disabled" type="button" class="selectinput-btn">
6
+ {{ selecteLabel }}
7
+ <MaterialIcon v-bind="{ 'icon': open ? 'unfold_less' : 'unfold_more' }" />
8
+ </button>
9
+ <input style="width: 0; height: 0; position: absolute; opacity: 0; z-index: -1;" v-if="required"
10
+ v-model="selectedItems" required>
10
11
  </label>
11
- </div>
12
+ <template #popper="{ hide }">
13
+ <Card class="selectinput-options p-05" :style="{ width: fullWidth ? '100%' : 'auto' }">
14
+ <TextInput v-if="searchable" ref="searchInput" dense :placeholder="'Search'" icon="search" v-model="search" />
15
+ <div class="selectinput-option hover gap-1" v-for="(option, i) in filteredOptions" :key="`${option}${i}`"
16
+ @click="select(option)" :class="{ selected: isSelected(option) }">
17
+ <Icon v-if="isSelected(option)" icon="check" />
18
+ <Icon class="opacity-3" v-if="!isSelected(option)" icon="fiber_manual_record" />
19
+ <span>
20
+ {{ getLabel(option) }}
21
+ </span>
22
+ </div>
23
+ <slot name="last" />
24
+ </Card>
25
+ </template>
26
+ </Dropdown>
12
27
  </template>
13
28
 
14
29
  <script lang="ts" setup>
15
30
  import { watch } from 'vue';
16
- import Multiselect from 'vue-multiselect';
31
+ import { Dropdown } from 'floating-vue';
32
+ import 'floating-vue/style.css';
33
+ import {
34
+ TextInput, Card, Icon, MaterialIcon,
35
+ } from '@bagelink/vue';
17
36
 
18
- type Option = {
19
- label: string;
20
- value: string | number;
21
- };
22
- type RawOption = Option | string | number;
37
+ type Option = string | number | Record<string, any> | { label: string, value: string | number };
38
+ let open = $ref(false);
39
+
40
+ const searchInput = $ref<HTMLInputElement | null>(null);
23
41
 
24
42
  const props = defineProps<{
25
- required?: boolean,
26
- label?: string,
27
- id?: string,
28
- modelValue?: string | number,
29
- placeholder?: string,
30
- defaultValue?: string | number,
31
- options: RawOption[] | string
32
- extraProps?: Record<string, any>
43
+ options: Option[];
44
+ placeholder?: string;
45
+ disabled?: boolean;
46
+ modelValue?: Option;
47
+ searchable?: boolean;
48
+ required?: boolean;
49
+ label?: string;
50
+ fullWidth?: boolean;
51
+ multiselect?: boolean;
33
52
  }>();
53
+ const selectedItems = $ref<Option[]>([]);
54
+ let search = $ref('');
34
55
 
35
- let dataValue = $ref<string | number | undefined>(props.modelValue || props.defaultValue);
36
- const multiselect = $ref<Multiselect>();
37
- const emit = defineEmits(['update:modelValue']);
38
- const optionList = $ref<Option[]>([]);
56
+ const dropdown = $ref<InstanceType<typeof Dropdown> | null>(null);
39
57
 
40
- const seletValue = $computed({
41
- get: () => optionList.find((opt) => opt.value === dataValue),
42
- set: (val?: Option) => {
43
- dataValue = val?.value;
44
- emit('update:modelValue', dataValue);
45
- },
46
- });
58
+ const toggle = () => {
59
+ dropdown?.hide();
60
+ open = !open;
61
+ if (!open) search = '';
62
+ if (open) setTimeout(() => (searchInput as any)?.$el?.querySelector('input')?.focus(), 100);
63
+ };
47
64
 
48
- function optnToValueLabel(option: RawOption): Option {
49
- if (typeof option === 'string' || typeof option === 'number') {
50
- return { label: `${option}`, value: option };
65
+ const selecteLabel = $computed(() => {
66
+ if (selectedItems.length === 0) return props.placeholder || 'Select';
67
+ if (selectedItems.length > 4) {
68
+ const str = selectedItems.slice(0, 4).map((item) => getLabel(item)).join(', ');
69
+ return `${str}... +${selectedItems.length - 4}`;
51
70
  }
52
- return option;
53
- }
54
-
55
- function updateOptionList() {
56
- const { options } = props;
57
- const optnLst = typeof options === 'string' ? options.split('\n|,') : options || [];
58
- optionList.push(...optnLst.map(optnToValueLabel));
59
- }
60
-
61
- watch(() => props.options, updateOptionList, { immediate: true });
62
- </script>
63
-
64
- <style>
65
- fieldset[disabled] .multiselect {
66
- pointer-events: none;
67
- }
68
-
69
- .multiselect__spinner {
70
- position: absolute;
71
- right: 1px;
72
- top: 1px;
73
- width: 40px;
74
- height: 38px;
75
- background: #fff;
76
- display: block;
77
- }
78
-
79
- .multiselect__spinner::before,
80
- .multiselect__spinner::after {
81
- position: absolute;
82
- content: "";
83
- top: 50%;
84
- left: 50%;
85
- margin: -8px 0 0 -8px;
86
- width: 16px;
87
- height: 16px;
88
- border-radius: 100%;
89
- border-color: var(--bgl-primary-tint) transparent transparent;
90
- border-style: solid;
91
- border-width: 2px;
92
- box-shadow: 0 0 0 1px transparent;
93
- }
94
-
95
- .multiselect__spinner::before {
96
- animation: spinning 2.4s cubic-bezier(0.41, 0.26, 0.2, 0.62);
97
- animation-iteration-count: infinite;
98
- }
99
-
100
- .multiselect__spinner::after {
101
- animation: spinning 2.4s cubic-bezier(0.51, 0.09, 0.21, 0.8);
102
- animation-iteration-count: infinite;
103
- }
104
-
105
- .multiselect__loading-enter-active,
106
- .multiselect__loading-leave-active {
107
- transition: opacity 0.4s ease-in-out;
108
- opacity: 1;
109
- }
110
-
111
- .multiselect__loading-enter,
112
- .multiselect__loading-leave-active {
113
- opacity: 0;
114
- }
115
-
116
- .multiselect,
117
- .multiselect__input,
118
- .multiselect__single {
119
- font-family: inherit;
120
- font-size: var(--input-font-size);
121
- touch-action: manipulation;
122
- }
123
-
124
- .multiselect {
125
- box-sizing: content-box;
126
- display: block;
127
- position: relative;
128
- width: 100%;
129
- min-height: var(--input-height);
130
- text-align: left;
131
- color: var(--input-color);
132
- }
133
-
134
- .multiselect * {
135
- box-sizing: border-box;
136
- }
137
-
138
- .multiselect:focus {
139
- outline: none;
140
- }
141
-
142
- .multiselect--disabled {
143
- background: #ededed;
144
- pointer-events: none;
145
- opacity: 0.6;
146
- }
147
-
148
- .multiselect--active {
149
- z-index: 50;
150
- }
151
-
152
- .multiselect--active:not(.multiselect--above) .multiselect__current,
153
- .multiselect--active:not(.multiselect--above) .multiselect__input,
154
- .multiselect--active:not(.multiselect--above) .multiselect__tags {
155
- border-bottom-left-radius: 0;
156
- border-bottom-right-radius: 0;
157
- }
158
-
159
- .multiselect--active:not(.multiselect--above) .multiselect__tags {
160
- box-shadow: inset 0 0 10px #00000012;
161
- }
162
-
163
- .multiselect--active .multiselect__select {
164
- transform: rotateZ(180deg);
165
- }
166
-
167
- .multiselect--above.multiselect--active .multiselect__current,
168
- .multiselect--above.multiselect--active .multiselect__input,
169
- .multiselect--above.multiselect--active .multiselect__tags {
170
- border-top-left-radius: 0;
171
- border-top-right-radius: 0;
172
- }
173
-
174
- .multiselect__input,
175
- .multiselect__single {
176
- position: relative;
177
- display: inline-block;
178
- border: none;
179
- background: var(--input-bg);
180
- width: calc(100%);
181
- transition: border 0.1s ease;
182
- box-sizing: border-box;
183
- vertical-align: top;
184
- font-size: var(--input-font-size);
185
- padding-inline-start: 0rem;
186
- }
187
-
188
- .multiselect--active .multiselect__input {
189
- margin-top: -0.6rem;
190
- }
191
-
192
- .multiselect__input::placeholder {
193
- color: var(--input-color);
194
- }
195
-
196
- .multiselect__tag~.multiselect__input,
197
- .multiselect__tag~.multiselect__single {
198
- width: auto;
199
- }
200
-
201
- .multiselect__input:hover,
202
- .multiselect__single:hover {
203
- border-color: #cfcfcf;
204
- }
205
-
206
- .multiselect__input:focus,
207
- .multiselect__single:focus {
208
- border-color: #a8a8a8;
209
- outline: none;
210
- }
211
-
212
- .multiselect__single {
213
- /* padding-left: 5px; */
214
- margin-bottom: 8px;
215
- }
216
-
217
- .multiselect__tags-wrap {
218
- display: inline;
219
- }
220
-
221
- .multiselect__tags {
222
- /* min-height: 40px; */
223
- display: block;
224
- /* padding: 0.7rem 40px 0.7rem 8px; */
225
- border-radius: var(--input-border-radius);
226
- background: var(--input-bg);
227
- font-size: var(--input-font-size);
228
- height: var(--input-height);
229
- line-height: 0;
230
- padding: calc(var(--input-height) / 2);
231
- padding-inline-end: 40px;
232
- padding-inline-start: 0.7rem;
233
- }
234
-
235
- .multiselect__tag {
236
- position: relative;
237
- display: inline-block;
238
- padding: 4px 26px 4px 10px;
239
- border-radius: 5px;
240
- margin-right: 10px;
241
- color: #fff;
242
- line-height: 1;
243
- background: var(--bgl-primary-tint);
244
- margin-bottom: 5px;
245
- white-space: nowrap;
246
- overflow: hidden;
247
- max-width: 100%;
248
- text-overflow: ellipsis;
249
- }
250
-
251
- .multiselect__tag-icon {
252
- cursor: pointer;
253
- margin-left: 7px;
254
- position: absolute;
255
- right: 0;
256
- top: 0;
257
- bottom: 0;
258
- font-weight: 700;
259
- font-style: initial;
260
- width: 22px;
261
- text-align: center;
262
- line-height: 22px;
263
- transition: all 0.2s ease;
264
- border-radius: 5px;
265
- }
266
-
267
- .multiselect__tag-icon::after {
268
- content: "×";
269
- color: #266d4d;
270
- font-size: 14px;
271
- }
272
-
273
- /* // Remove these lines to avoid green closing button
274
- //.multiselect__tag-icon:focus,
275
- //.multiselect__tag-icon:hover {
276
- // background: #369a6e;
277
- //} */
278
-
279
- .multiselect__tag-icon:focus::after,
280
- .multiselect__tag-icon:hover::after {
281
- color: white;
282
- }
283
-
284
- .multiselect__current {
285
- line-height: 16px;
286
- min-height: 40px;
287
- box-sizing: border-box;
288
- display: block;
289
- overflow: hidden;
290
- padding: 8px 12px 0;
291
- padding-right: 30px;
292
- white-space: nowrap;
293
- margin: 0;
294
- text-decoration: none;
295
- border-radius: 5px;
296
- /* border: 1px solid #e8e8e8; */
297
- cursor: pointer;
298
- }
299
-
300
- .multiselect__select {
301
- line-height: 16px;
302
- display: block;
303
- position: absolute;
304
- box-sizing: border-box;
305
- /* width: 40px; */
306
- /* height: 38px; */
307
- right: 1px;
308
- top: 1px;
309
- padding: 4px 8px;
310
- margin: 0;
311
- text-decoration: none;
312
- text-align: center;
313
- cursor: pointer;
314
- transition: transform 0.2s ease;
315
- padding-top: calc(var(--input-height) / 2 - 0.7rem);
316
-
317
- }
318
-
319
- .multiselect__select::before {
320
- position: relative;
321
- background-size: contain;
322
- transform: scale(0.5);
323
- color: var(--bgl-black);
324
- content: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' fill='%23b7b7b7' height='24' viewBox='0 -960 960 960' width='24'><path d='M480-345 240-585l56-56 184 184 184-184 56 56-240 240Z'/></svg>");
325
- }
326
-
327
- .multiselect__placeholder {
328
- color: var(--placeholder-color);
329
- display: inline-block;
330
- margin-bottom: 10px;
331
-
332
- }
333
-
334
- .multiselect--active .multiselect__placeholder {
335
- display: none;
336
- }
337
-
338
- .multiselect__content-wrapper {
339
- position: absolute;
340
- display: block;
341
- background: #fff;
342
- width: 100%;
343
- max-height: 240px;
344
- overflow: auto;
345
- box-shadow: 0 0 10px #00000012;
346
- border-top: none;
347
- border-bottom-left-radius: 5px;
348
- border-bottom-right-radius: 5px;
349
- z-index: 150;
350
- -webkit-overflow-scrolling: touch;
351
- }
352
-
353
- .multiselect__content {
354
- list-style: none;
355
- display: inline-block;
356
- padding: 0;
357
- margin: 0;
358
- min-width: 100%;
359
- vertical-align: top;
360
- }
361
-
362
- .multiselect--above .multiselect__content-wrapper {
363
- bottom: 100%;
364
- border-bottom-left-radius: 0;
365
- border-bottom-right-radius: 0;
366
- border-top-left-radius: 5px;
367
- border-top-right-radius: 5px;
368
- border-bottom: none;
369
- border-top: 1px solid #e8e8e8;
370
- }
371
-
372
- .multiselect__content::-webkit-scrollbar {
373
- display: none;
374
- }
375
-
376
- .multiselect__element {
377
- display: block;
378
- }
379
-
380
- .multiselect__option {
381
- display: block;
382
- padding-inline-start: 12px;
383
- min-height: calc(var(--input-height) * 0.8);
384
- line-height: calc(var(--input-height) * 0.8);
385
- text-decoration: none;
386
- text-transform: none;
387
- position: relative;
388
- cursor: pointer;
389
- white-space: nowrap;
390
- }
391
-
392
- .multiselect__option::after {
393
- top: 0;
394
- right: 0;
395
- position: absolute;
396
- width: calc(var(--input-height) * 0.8);
397
- height: calc(var(--input-height) * 0.8);
398
- ;
399
- text-align: center;
400
- font-size: 13px;
401
- }
402
-
403
- .multiselect__option--highlight {
404
- background: var(--bgl-primary-light);
405
- outline: none;
406
- color: var(--bgl-primary);
407
- }
408
-
409
- .multiselect__option--selected {
410
- background: var(--bgl-primary);
411
- color: var(--bgl-white);
412
- font-weight: bold;
413
- }
414
-
415
- .multiselect__option--selected.multiselect__option--highlight {
416
- filter: brightness(0.9);
417
- color: #fff;
418
- }
419
-
420
- .multiselect__option--selected.multiselect__option--highlight::after {
421
- content: "✕";
422
- color: var(--bgl-white);
423
- }
424
-
425
- .multiselect--disabled .multiselect__current,
426
- .multiselect--disabled .multiselect__select {
427
- background: #ededed;
428
- color: #a6a6a6;
429
- }
430
-
431
- .multiselect__option--disabled {
432
- background: #ededed !important;
433
- color: #a6a6a6 !important;
434
- cursor: text;
435
- pointer-events: none;
436
- }
71
+ return selectedItems.map((item) => getLabel(item)).join(', ');
72
+ });
437
73
 
438
- .multiselect__option--group {
439
- background: #ededed;
440
- color: var(--input-color);
441
- }
74
+ const emit = defineEmits(['update:modelValue']);
442
75
 
443
- .multiselect__option--group.multiselect__option--highlight {
444
- background: var(--input-color);
445
- color: #fff;
446
- }
76
+ const getLabel = (option: Option) => {
77
+ if (typeof option === 'string') return option;
78
+ if (typeof option === 'number') return `${option}`;
79
+ return option.label;
80
+ };
447
81
 
448
- .multiselect__option--group.multiselect__option--highlight::after {
449
- background: var(--input-color);
450
- }
82
+ const getValue = (option: Option) => {
83
+ if (typeof option === 'string') return option;
84
+ if (typeof option === 'number') return option;
85
+ return option.value;
86
+ };
451
87
 
452
- .multiselect__option--disabled.multiselect__option--highlight {
453
- background: #dedede;
454
- }
88
+ const isSelected = (option: Option) => selectedItems.includes(getValue(option));
89
+
90
+ const filteredOptions = $computed(() => props.options.filter((option) => {
91
+ const searchTerm = new RegExp(search, 'gi');
92
+ if (typeof option === 'string') return option.match(searchTerm);
93
+ if (typeof option === 'number') return `${option}`.match(searchTerm);
94
+ return option.label.match(searchTerm);
95
+ }));
96
+
97
+ const select = (option: Option) => {
98
+ const existingIndex = selectedItems.findIndex((item) => {
99
+ if (typeof item === 'string' || typeof item === 'number') return item === option;
100
+ return item.value === option;
101
+ });
102
+ if (existingIndex > -1) selectedItems.splice(existingIndex, 1);
103
+ else if (props.multiselect) {
104
+ selectedItems.push(getValue(option));
105
+ } else {
106
+ selectedItems.splice(0, selectedItems.length, getValue(option));
107
+ toggle();
108
+ }
109
+ emitUpdate();
110
+ };
455
111
 
456
- .multiselect__option--group-selected.multiselect__option--highlight {
457
- background: var(--bgl-red);
458
- color: #fff;
112
+ function emitUpdate() {
113
+ if (props.multiselect) {
114
+ emit('update:modelValue', selectedItems);
115
+ } else {
116
+ selectedItems.splice(1, selectedItems.length);
117
+ emit('update:modelValue', selectedItems[0]);
118
+ }
459
119
  }
460
120
 
461
- .multiselect__option--group-selected.multiselect__option--highlight::after {
462
- background: var(--bgl-red);
463
- content: attr(data-deselect);
464
- color: #fff;
121
+ function compareArrays(arr1: Option[], arr2: Option[]) {
122
+ const isSame = arr1.every((item: Option) => arr2.map((a) => getValue(a)).includes(getValue(item)));
123
+ return isSame;
465
124
  }
466
125
 
467
- .multiselect-enter-active,
468
- .multiselect-leave-active {
469
- transition: all 0.15s ease;
470
- }
126
+ watch(
127
+ () => props.modelValue,
128
+ (newVal: Option | Option[]) => {
129
+ if (!newVal) return;
130
+ if (!props.multiselect) {
131
+ if (!isSelected(newVal)) selectedItems.splice(0, selectedItems.length, newVal);
132
+ } else {
133
+ const isSame = compareArrays([newVal].flat(), selectedItems);
134
+ if (!isSame) selectedItems.splice(0, selectedItems.length, [newVal].flat());
135
+ }
136
+ },
137
+ { immediate: true },
138
+ );
139
+ </script>
471
140
 
472
- .multiselect-enter,
473
- .multiselect-leave-active {
474
- opacity: 0;
141
+ <style scoped>
142
+ .selectinput {
143
+ width: 100%;
475
144
  }
476
145
 
477
- .multiselect__strong {
478
- margin-bottom: 8px;
479
- line-height: 20px;
480
- display: inline-block;
481
- vertical-align: top;
146
+ .selectinput-option {
147
+ padding: 6px 12px;
148
+ cursor: pointer;
149
+ border-radius: 5px;
150
+ transition: all 0.2s;
151
+ display: grid;
152
+ grid-template-columns: 10px 1fr;
153
+ justify-content: space-between;
154
+ width: 100%;
155
+ font-size: var(--input-font-size);
482
156
  }
483
157
 
484
- *[dir="rtl"] .multiselect {
485
- text-align: right;
158
+ .selectinput-options {
159
+ max-height: 300px;
160
+ overflow-y: auto;
486
161
  }
487
162
 
488
- *[dir="rtl"] .multiselect__select {
489
- right: auto;
490
- left: 1px;
163
+ .selectinput-option:hover {
164
+ background: var(--bgl-gray-20);
491
165
  }
166
+ </style>
492
167
 
493
- *[dir="rtl"] .multiselect__tags {
494
- padding: calc(var(--input-height) / 2);
495
- padding-inline-end: 40px;
496
- padding-inline-start: 0.7rem;
168
+ <style>
169
+ .bagel-input label {
170
+ font-size: var(--label-font-size);
497
171
  }
498
172
 
499
- *[dir="rtl"] .multiselect__content {
500
- text-align: right;
173
+ .selectinput-btn {
174
+ display: flex;
175
+ justify-content: space-between;
176
+ align-items: center;
177
+ height: var(--input-height);
178
+ border-radius: var(--input-border-radius);
179
+ border: none;
180
+ background: var(--input-bg);
181
+ padding: 0.7rem;
182
+ color: var(--input-color);
183
+ width: 100%;
184
+ font-family: inherit;
501
185
  }
502
186
 
503
- *[dir="rtl"] .multiselect__option::after {
504
- right: auto;
505
- left: 0;
187
+ .selectinput-btn:disabled {
188
+ background: var(--input-disabled-bg);
189
+ color: var(--input-disabled-color);
506
190
  }
507
191
 
508
- *[dir="rtl"] .multiselect__clear {
509
- right: auto;
510
- left: 12px;
192
+ .selectinput-btn:focus {
193
+ outline: none;
194
+ box-shadow: inset 0 0 10px #00000012;
511
195
  }
512
196
 
513
- *[dir="rtl"] .multiselect__spinner {
514
- right: auto;
515
- left: 1px;
197
+ .v-popper__arrow-container {
198
+ display: none;
516
199
  }
517
200
 
518
- @keyframes spinning {
519
- from {
520
- transform: rotate(0);
521
- }
522
-
523
- to {
524
- transform: rotate(2turn);
525
- }
201
+ .v-popper--theme-dropdown .v-popper__inner {
202
+ border: none;
203
+ background: transparent;
204
+ border-radius: var(--card-border-radius);
526
205
  }
527
206
  </style>
@@ -8,7 +8,6 @@ export { default as ModalForm } from './ModalForm.vue';
8
8
  export { default as AccordionItem } from './AccordionItem.vue';
9
9
  export { default as ListView } from './ListView.vue';
10
10
  export { default as ListItem } from './ListItem.vue';
11
- export { default as TabbedLayout } from './TabbedLayout.vue';
12
11
  export { default as Comments } from './Comments.vue';
13
12
  export { default as PageTitle } from './PageTitle.vue';
14
13
  export { default as TableSchema } from './TableSchema.vue';
@@ -19,7 +18,6 @@ export { default as Card } from './Card.vue';
19
18
  export { default as Avatar } from './Avatar.vue';
20
19
  export { default as Title } from './Title.vue';
21
20
  export { default as Accordion } from './Accordion.vue';
22
- export { default as ComboBox } from './ComboBox.vue';
23
21
  export { default as Alert } from './Alert.vue';
24
22
  export { default as Badge } from './Badge.vue';
25
23
  export { default as BglVideo } from './BglVideo.vue';