design-system-next 2.13.6 → 2.14.3
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/dist/design-system-next.es.js +11820 -10296
- package/dist/design-system-next.es.js.gz +0 -0
- package/dist/design-system-next.umd.js +17 -12
- package/dist/design-system-next.umd.js.gz +0 -0
- package/dist/main.css +1 -1
- package/dist/main.css.gz +0 -0
- package/dist/package.json.d.ts +3 -1
- package/package.json +3 -1
- package/src/App.vue +1 -83
- package/src/assets/styles/tailwind.css +13 -11
- package/src/components/date-picker/date-picker.ts +0 -1
- package/src/components/date-picker/date-picker.vue +2 -2
- package/src/components/date-picker/date-range-picker/date-range-picker.vue +59 -36
- package/src/components/dropdown/dropdown.ts +3 -2
- package/src/components/dropdown/dropdown.vue +2 -2
- package/src/components/dropdown/use-dropdown.ts +89 -70
- package/src/components/input/input.ts +0 -1
- package/src/components/input/input.vue +1 -1
- package/src/components/list/ladderized-list/ladderized-list-back.vue +2 -1
- package/src/components/list/ladderized-list/ladderized-list.vue +3 -18
- package/src/components/list/ladderized-list/use-ladderized-list.ts +33 -21
- package/src/components/list/list.ts +4 -1
- package/src/components/list/list.vue +155 -136
- package/src/components/select/select-ladderized/select-ladderized.ts +19 -1
- package/src/components/select/select-ladderized/select-ladderized.vue +42 -41
- package/src/components/select/select-ladderized/use-select-ladderized.ts +20 -33
- package/src/components/select/select-multiple/select-multiple.ts +19 -1
- package/src/components/select/select-multiple/select-multiple.vue +18 -15
- package/src/components/select/select-multiple/use-select-multiple.ts +5 -15
- package/src/components/select/select.ts +19 -1
- package/src/components/select/select.vue +50 -53
- package/src/components/select/use-select.ts +4 -13
- package/src/components/sidenav/use-sidenav.ts +10 -3
- package/src/components/table/table.ts +33 -3
- package/src/components/table/table.vue +46 -13
- package/src/components/table/use-draggable-table-rows.ts +57 -0
- package/src/components/table/use-table.ts +143 -7
- package/src/components/textarea/textarea.vue +7 -1
package/src/App.vue
CHANGED
|
@@ -1,85 +1,3 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<div
|
|
3
|
-
<spr-table :headers="headers" :data-table="data" :full-height="true" :sticky-column="1">
|
|
4
|
-
<template #footer>
|
|
5
|
-
<spr-table-pagination
|
|
6
|
-
v-model:selected-row-count="selectedRowCount"
|
|
7
|
-
v-model:current-page="currentPage"
|
|
8
|
-
:total-items="totalItems"
|
|
9
|
-
:dropdown-selection="dropdownSelection"
|
|
10
|
-
:version="'backend'"
|
|
11
|
-
:editable-current-page="true"
|
|
12
|
-
@previous="handlePrevious"
|
|
13
|
-
@next="handleNext"
|
|
14
|
-
/>
|
|
15
|
-
</template>
|
|
16
|
-
</spr-table>
|
|
17
|
-
</div>
|
|
18
|
-
<label class="spr-font-main spr-text-[14px] spr-non-italic spr-font-medium" style="">
|
|
19
|
-
10 Rows
|
|
20
|
-
</label>
|
|
21
|
-
<input class="spr-font-main spr-text-[14px] spr-non-italic spr-font-medium" />
|
|
2
|
+
<div>Test Component Here</div>
|
|
22
3
|
</template>
|
|
23
|
-
|
|
24
|
-
<script setup lang="ts">
|
|
25
|
-
import SprTable from "@/components/table/table.vue";
|
|
26
|
-
import SprTablePagination from "@/components/table/table-pagination/table-pagination.vue"
|
|
27
|
-
import { ref, watch } from 'vue';
|
|
28
|
-
import tableData from "@/mock/tableData";
|
|
29
|
-
|
|
30
|
-
const headers = ref([
|
|
31
|
-
{ field: 'name', name: 'Role Name', sort: true, hasAvatar: true, hasSubtext: true },
|
|
32
|
-
{ field: 'lastUpdate', name: 'Date', sort: true, hasAvatar: false, hasSubtext: false },
|
|
33
|
-
{ field: 'test', name: 'Test', sort: true, hasAvatar: false, hasSubtext: false },
|
|
34
|
-
{ field: 'test', name: 'Test', sort: true, hasAvatar: false, hasSubtext: false },
|
|
35
|
-
{ field: 'test', name: 'Test', sort: true, hasAvatar: false, hasSubtext: false },
|
|
36
|
-
{ field: 'test', name: 'Test', sort: true, hasAvatar: false, hasSubtext: false },
|
|
37
|
-
{ field: 'test', name: 'Test', sort: true, hasAvatar: false, hasSubtext: false },
|
|
38
|
-
{ field: 'test', name: 'Test', sort: true, hasAvatar: false, hasSubtext: false },
|
|
39
|
-
{ field: 'status', name: 'Status', sort: true, hasAvatar: false, hasSubtext: false },
|
|
40
|
-
]);
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
const totalItems = ref(tableData.value.length);
|
|
44
|
-
const currentPage = ref(1);
|
|
45
|
-
const dropdownSelection = [
|
|
46
|
-
{ text: '10', value: '10' },
|
|
47
|
-
{ text: '20', value: '20' },
|
|
48
|
-
{ text: '30', value: '30' },
|
|
49
|
-
{ text: '100', value: '100' },
|
|
50
|
-
{ text: '1000', value: '1000' },
|
|
51
|
-
];
|
|
52
|
-
|
|
53
|
-
const selectedRowCount = ref(10);
|
|
54
|
-
const data = ref(tableData.value.slice(0, selectedRowCount.value));
|
|
55
|
-
const updateDataTable = () => {
|
|
56
|
-
data.value = tableData.value.slice((currentPage.value - 1) * selectedRowCount.value, currentPage.value * selectedRowCount.value);
|
|
57
|
-
}
|
|
58
|
-
watch(selectedRowCount, () => {
|
|
59
|
-
currentPage.value = 1; // Reset to first page when row count changes
|
|
60
|
-
updateDataTable();
|
|
61
|
-
});
|
|
62
|
-
|
|
63
|
-
watch(currentPage, (newValue) => {
|
|
64
|
-
console.log('Current Page:', newValue);
|
|
65
|
-
if(!currentPage.value) return;
|
|
66
|
-
else if (currentPage.value > Math.ceil(totalItems.value / selectedRowCount.value)) {
|
|
67
|
-
currentPage.value = Math.ceil(totalItems.value / selectedRowCount.value);
|
|
68
|
-
}
|
|
69
|
-
updateDataTable();
|
|
70
|
-
});
|
|
71
|
-
|
|
72
|
-
const handlePrevious = () => {
|
|
73
|
-
if (currentPage.value > 1) {
|
|
74
|
-
currentPage.value--;
|
|
75
|
-
updateDataTable();
|
|
76
|
-
}
|
|
77
|
-
};
|
|
78
|
-
|
|
79
|
-
const handleNext = () => {
|
|
80
|
-
if (currentPage.value * selectedRowCount.value < totalItems.value) {
|
|
81
|
-
currentPage.value++;
|
|
82
|
-
updateDataTable();
|
|
83
|
-
}
|
|
84
|
-
};
|
|
85
|
-
</script>
|
|
@@ -68,7 +68,7 @@
|
|
|
68
68
|
|
|
69
69
|
.v-popper__wrapper {
|
|
70
70
|
.v-popper__inner {
|
|
71
|
-
@apply spr-overflow-hidden spr-rounded-none spr-border-none spr-bg-transparent spr-shadow-
|
|
71
|
+
@apply spr-overflow-hidden spr-rounded-none spr-border-none spr-bg-transparent spr-shadow-drop;
|
|
72
72
|
|
|
73
73
|
.slide-fade-enter-active {
|
|
74
74
|
@apply spr-duration-300 spr-ease-out;
|
|
@@ -89,7 +89,6 @@
|
|
|
89
89
|
}
|
|
90
90
|
}
|
|
91
91
|
}
|
|
92
|
-
|
|
93
92
|
/* #endregion - Sidenav */
|
|
94
93
|
|
|
95
94
|
/* #region - Tooltips */
|
|
@@ -97,7 +96,7 @@
|
|
|
97
96
|
#tooltip-full-width-wrapper {
|
|
98
97
|
.v-popper__wrapper {
|
|
99
98
|
.v-popper__inner {
|
|
100
|
-
@apply spr-background-color-inverted spr-text-color-inverted-strong spr-body-xs-regular spr-break-all spr-rounded-border-radius-md spr-px-2 spr-py-1.5 spr-font-main spr-opacity-100;
|
|
99
|
+
@apply spr-background-color-inverted spr-text-color-inverted-strong spr-body-xs-regular spr-break-all spr-rounded-border-radius-md spr-px-2 spr-py-1.5 spr-font-main spr-opacity-100 spr-shadow-drop;
|
|
101
100
|
}
|
|
102
101
|
|
|
103
102
|
.v-popper__arrow-outer {
|
|
@@ -109,7 +108,7 @@
|
|
|
109
108
|
#tooltip-wrapper {
|
|
110
109
|
.v-popper__wrapper {
|
|
111
110
|
.v-popper__inner {
|
|
112
|
-
@apply spr-max-w-full;
|
|
111
|
+
@apply spr-max-w-full spr-shadow-drop;
|
|
113
112
|
}
|
|
114
113
|
}
|
|
115
114
|
}
|
|
@@ -117,7 +116,7 @@
|
|
|
117
116
|
#tooltip-full-width-wrapper {
|
|
118
117
|
.v-popper__wrapper {
|
|
119
118
|
.v-popper__inner {
|
|
120
|
-
@apply spr-max-w-[280px];
|
|
119
|
+
@apply spr-max-w-[280px] spr-shadow-drop;
|
|
121
120
|
}
|
|
122
121
|
}
|
|
123
122
|
}
|
|
@@ -129,7 +128,7 @@
|
|
|
129
128
|
|
|
130
129
|
.v-popper__wrapper {
|
|
131
130
|
.v-popper__inner {
|
|
132
|
-
@apply spr-border-color-weak spr-w-full spr-rounded-xl spr-border spr-border-solid spr-font-main spr-shadow-
|
|
131
|
+
@apply spr-border-color-weak spr-w-full spr-rounded-xl spr-border spr-border-solid spr-font-main spr-shadow-drop;
|
|
133
132
|
|
|
134
133
|
&::-webkit-scrollbar-track {
|
|
135
134
|
@apply spr-rounded-br-xl spr-rounded-tr-xl;
|
|
@@ -142,15 +141,14 @@
|
|
|
142
141
|
}
|
|
143
142
|
}
|
|
144
143
|
|
|
145
|
-
#contact-number-country-dropdown
|
|
144
|
+
#input-contact-number-country-dropdown,
|
|
145
|
+
#input-currency-dropdown {
|
|
146
146
|
#dropdown-wrapper[data-popper-placement='top-start'] {
|
|
147
|
-
|
|
148
|
-
margin-left: -8px;
|
|
147
|
+
@apply spr-ml-[-8px] spr-mt-[-4px];
|
|
149
148
|
}
|
|
150
149
|
|
|
151
150
|
#dropdown-wrapper[data-popper-placement='bottom-start'] {
|
|
152
|
-
|
|
153
|
-
margin-left: -8px;
|
|
151
|
+
@apply spr-ml-[-8px] spr-mt-[4px];
|
|
154
152
|
}
|
|
155
153
|
}
|
|
156
154
|
/* #endregion - Dropdown */
|
|
@@ -199,6 +197,10 @@
|
|
|
199
197
|
tbody::-webkit-scrollbar {
|
|
200
198
|
@apply spr-h-0 spr-w-0; /* Hides the scrollbar in WebKit browsers */
|
|
201
199
|
}
|
|
200
|
+
|
|
201
|
+
.empty-table-dropzone-dragged-class {
|
|
202
|
+
@apply spr-hidden;
|
|
203
|
+
}
|
|
202
204
|
}
|
|
203
205
|
/* #endregion - Table */
|
|
204
206
|
|
|
@@ -266,7 +266,7 @@
|
|
|
266
266
|
</Menu>
|
|
267
267
|
<div v-if="props.displayHelper" :class="datePickerClasses.datePickerInputHelperClasses">
|
|
268
268
|
<slot name="helperMessage">
|
|
269
|
-
<Icon v-if="props.helperIcon" :icon="props.helperIcon"
|
|
269
|
+
<Icon v-if="props.helperIcon" class="spr-h-5 spr-min-h-5 spr-w-5 spr-min-w-5" :icon="props.helperIcon" />
|
|
270
270
|
<span>{{ props.helperText }}</span>
|
|
271
271
|
</slot>
|
|
272
272
|
</div>
|
|
@@ -330,7 +330,7 @@ const {
|
|
|
330
330
|
handleTabClick,
|
|
331
331
|
handleBackspace,
|
|
332
332
|
clearDate,
|
|
333
|
-
handleSlotClick
|
|
333
|
+
handleSlotClick,
|
|
334
334
|
} = useDatePicker(props, emit);
|
|
335
335
|
|
|
336
336
|
defineExpose({
|
|
@@ -1,42 +1,49 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<div>
|
|
3
3
|
<Menu
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
4
|
+
v-model:shown="datePopperState"
|
|
5
|
+
aria-id="date-range-picker-wrapper"
|
|
6
|
+
distance="4"
|
|
7
|
+
:placement="finalPlacement"
|
|
8
|
+
:triggers="[]"
|
|
9
|
+
:popper-hide-triggers="[]"
|
|
10
|
+
:auto-hide="false"
|
|
11
|
+
:disabled="isDateRangePickerPopperDisabled"
|
|
12
|
+
:container="`#${props.id}`"
|
|
13
|
+
:reference="activeInputRef"
|
|
14
|
+
:strategy="
|
|
15
|
+
props.popperStrategy === 'fixed' || props.popperStrategy === 'absolute' ? props.popperStrategy : 'absolute'
|
|
16
|
+
"
|
|
17
|
+
:delay="0"
|
|
18
|
+
:auto-placement="!isUsingCustomSlot"
|
|
19
|
+
:style="{
|
|
20
|
+
width: props.width,
|
|
21
|
+
}"
|
|
22
|
+
>
|
|
23
23
|
<div :id="props.id" class="spr-grid spr-gap-size-spacing-4xs">
|
|
24
24
|
<label v-if="props.label" :for="props.id" :class="dateRangePickerClasses.labelClasses">
|
|
25
25
|
{{ props.label }}
|
|
26
26
|
</label>
|
|
27
|
-
|
|
27
|
+
|
|
28
28
|
<!-- Date Range Input Container -->
|
|
29
|
-
<div class="spr-flex spr-items-center spr-gap-2
|
|
29
|
+
<div class="spr-flex spr-w-full spr-items-center spr-gap-2">
|
|
30
30
|
<slot :handle-click="handleCustomComponentClick">
|
|
31
31
|
<!-- fallback: original input fields -->
|
|
32
32
|
<!-- Start Date Input -->
|
|
33
|
-
<div
|
|
33
|
+
<div
|
|
34
|
+
ref="startDateContainerRef"
|
|
35
|
+
:class="['spr-flex-1', dateRangePickerClasses.dateRangePickerBaseInputClasses]"
|
|
36
|
+
@click.stop="handleStartDateClick"
|
|
37
|
+
>
|
|
34
38
|
<div class="spr-flex spr-h-full spr-items-center spr-gap-1.5">
|
|
35
39
|
<input
|
|
36
40
|
:id="`${props.id}-start-month`"
|
|
37
41
|
ref="startMonthInputRef"
|
|
38
42
|
v-model="startMonthInput"
|
|
39
|
-
:class="[
|
|
43
|
+
:class="[
|
|
44
|
+
'spr-w-[38px] spr-min-w-[38px] spr-uppercase',
|
|
45
|
+
dateRangePickerClasses.dateRangePickerInputClasses,
|
|
46
|
+
]"
|
|
40
47
|
type="text"
|
|
41
48
|
placeholder="MMM"
|
|
42
49
|
maxlength="3"
|
|
@@ -51,7 +58,10 @@
|
|
|
51
58
|
:id="`${props.id}-start-date`"
|
|
52
59
|
ref="startDateInputRef"
|
|
53
60
|
v-model="startDateInput"
|
|
54
|
-
:class="[
|
|
61
|
+
:class="[
|
|
62
|
+
'spr-w-[24px] spr-min-w-[24px] spr-text-center',
|
|
63
|
+
dateRangePickerClasses.dateRangePickerInputClasses,
|
|
64
|
+
]"
|
|
55
65
|
type="text"
|
|
56
66
|
placeholder="DD"
|
|
57
67
|
maxlength="2"
|
|
@@ -84,13 +94,20 @@
|
|
|
84
94
|
<!-- Separator -->
|
|
85
95
|
<span class="spr-text-color-strong spr-font-size-200 spr-text-color-weak">{{ props.separator }}</span>
|
|
86
96
|
<!-- End Date Input -->
|
|
87
|
-
<div
|
|
97
|
+
<div
|
|
98
|
+
ref="endDateContainerRef"
|
|
99
|
+
:class="['spr-flex-1', dateRangePickerClasses.dateRangePickerBaseInputClasses]"
|
|
100
|
+
@click.stop="handleEndDateClick"
|
|
101
|
+
>
|
|
88
102
|
<div class="spr-flex spr-h-full spr-items-center spr-gap-1.5">
|
|
89
103
|
<input
|
|
90
104
|
:id="`${props.id}-end-month`"
|
|
91
105
|
ref="endMonthInputRef"
|
|
92
106
|
v-model="endMonthInput"
|
|
93
|
-
:class="[
|
|
107
|
+
:class="[
|
|
108
|
+
'spr-w-[38px] spr-min-w-[38px] spr-uppercase',
|
|
109
|
+
dateRangePickerClasses.dateRangePickerInputClasses,
|
|
110
|
+
]"
|
|
94
111
|
type="text"
|
|
95
112
|
placeholder="MMM"
|
|
96
113
|
maxlength="3"
|
|
@@ -105,7 +122,10 @@
|
|
|
105
122
|
:id="`${props.id}-end-date`"
|
|
106
123
|
ref="endDateInputRef"
|
|
107
124
|
v-model="endDateInput"
|
|
108
|
-
:class="[
|
|
125
|
+
:class="[
|
|
126
|
+
'spr-w-[24px] spr-min-w-[24px] spr-text-center',
|
|
127
|
+
dateRangePickerClasses.dateRangePickerInputClasses,
|
|
128
|
+
]"
|
|
109
129
|
type="text"
|
|
110
130
|
placeholder="DD"
|
|
111
131
|
maxlength="2"
|
|
@@ -244,11 +264,11 @@
|
|
|
244
264
|
'spr-text-color-disabled': calendarTabIsInactiveMonthDates(day),
|
|
245
265
|
|
|
246
266
|
// Selected Date (Start or End) - Use brand color scheme from date picker
|
|
247
|
-
'spr-background-color-brand-base active:spr-background-color-brand-pressed spr-text-color-inverted-strong !spr-text-white-50 active:spr-scale-95
|
|
267
|
+
'spr-background-color-brand-base active:spr-background-color-brand-pressed spr-text-color-inverted-strong spr-font-medium !spr-text-white-50 active:spr-scale-95':
|
|
248
268
|
calendarTabIsSelectedDate(day),
|
|
249
269
|
|
|
250
270
|
// In Range (between start and end) - Light green background with brand outline, no border, using spr- prefix
|
|
251
|
-
'spr-bg-green-100 spr-
|
|
271
|
+
'spr-cursor-pointer spr-bg-green-100 spr-outline spr-outline-1 spr-outline-offset-[-0.5px] spr-outline-kangkong-700':
|
|
252
272
|
calendarTabIsInRange(day),
|
|
253
273
|
|
|
254
274
|
// Unselected Date - Gray border, no hover effects
|
|
@@ -264,7 +284,7 @@
|
|
|
264
284
|
<span>{{ day.date.date() }}</span>
|
|
265
285
|
<div
|
|
266
286
|
v-if="calendarTabIsTodayIndicator(day)"
|
|
267
|
-
class="spr-
|
|
287
|
+
class="spr-absolute spr-bottom-1 spr-m-auto spr-h-1 spr-w-1 spr-rounded-full spr-bg-green-600"
|
|
268
288
|
></div>
|
|
269
289
|
</div>
|
|
270
290
|
<div v-else></div>
|
|
@@ -281,9 +301,11 @@
|
|
|
281
301
|
{
|
|
282
302
|
'spr-text-color-brand-base': month.monthValue === currentDate.month(),
|
|
283
303
|
'spr-border-color-weak hover:spr-background-color-hover active:spr-background-color-pressed':
|
|
284
|
-
month.text.toLowerCase() !== startMonthInput.toLowerCase() &&
|
|
304
|
+
month.text.toLowerCase() !== startMonthInput.toLowerCase() &&
|
|
305
|
+
month.text.toLowerCase() !== endMonthInput.toLowerCase(),
|
|
285
306
|
'spr-border-color-brand-base spr-background-color-single-active':
|
|
286
|
-
month.text.toLowerCase() === startMonthInput.toLowerCase() ||
|
|
307
|
+
month.text.toLowerCase() === startMonthInput.toLowerCase() ||
|
|
308
|
+
month.text.toLowerCase() === endMonthInput.toLowerCase(),
|
|
287
309
|
},
|
|
288
310
|
]"
|
|
289
311
|
@click="monthTabHandleSelectedMonth(month)"
|
|
@@ -308,7 +330,8 @@
|
|
|
308
330
|
'spr-text-color-brand-base': year === currentDate.year(),
|
|
309
331
|
'spr-border-color-weak hover:spr-background-color-hover active:spr-background-color-pressed':
|
|
310
332
|
year !== Number(startYearInput) && year !== Number(endYearInput),
|
|
311
|
-
'spr-border-color-brand-base spr-background-color-single-active':
|
|
333
|
+
'spr-border-color-brand-base spr-background-color-single-active':
|
|
334
|
+
year === Number(startYearInput) || year === Number(endYearInput),
|
|
312
335
|
},
|
|
313
336
|
]"
|
|
314
337
|
@click="yearTabHandleSelectedYear(String(year))"
|
|
@@ -324,10 +347,10 @@
|
|
|
324
347
|
</div>
|
|
325
348
|
</template>
|
|
326
349
|
</Menu>
|
|
327
|
-
|
|
350
|
+
|
|
328
351
|
<div v-if="props.displayHelper" :class="dateRangePickerClasses.dateRangePickerInputHelperClasses">
|
|
329
352
|
<slot name="helperMessage">
|
|
330
|
-
<Icon v-if="props.helperIcon" :icon="props.helperIcon"
|
|
353
|
+
<Icon v-if="props.helperIcon" class="spr-h-5 spr-min-h-5 spr-w-5 spr-min-w-5" :icon="props.helperIcon" />
|
|
331
354
|
<span>{{ props.helperText }}</span>
|
|
332
355
|
</slot>
|
|
333
356
|
</div>
|
|
@@ -409,4 +432,4 @@ const {
|
|
|
409
432
|
handleEndDateClick,
|
|
410
433
|
handleCustomComponentClick,
|
|
411
434
|
} = useDateRangePicker(props, emit);
|
|
412
|
-
</script>
|
|
435
|
+
</script>
|
|
@@ -124,7 +124,7 @@ export const dropdownPropTypes = {
|
|
|
124
124
|
},
|
|
125
125
|
default: () => ['click'],
|
|
126
126
|
},
|
|
127
|
-
popperTriggers: {
|
|
127
|
+
popperTriggers: {
|
|
128
128
|
type: Array as PropType<(typeof TRIGGER_EVENTS)[number][]>,
|
|
129
129
|
validator: (value: (typeof TRIGGER_EVENTS)[number][]) => {
|
|
130
130
|
return value.every((val) => TRIGGER_EVENTS.includes(val));
|
|
@@ -134,13 +134,14 @@ export const dropdownPropTypes = {
|
|
|
134
134
|
autoHide: {
|
|
135
135
|
type: Boolean,
|
|
136
136
|
default: true,
|
|
137
|
-
}
|
|
137
|
+
},
|
|
138
138
|
};
|
|
139
139
|
|
|
140
140
|
export const dropdownEmitTypes = {
|
|
141
141
|
'infinite-scroll-trigger': Boolean,
|
|
142
142
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
143
143
|
'update:modelValue': (_value: unknown) => true, // Accept any type of value
|
|
144
|
+
'popper-state': Boolean,
|
|
144
145
|
};
|
|
145
146
|
|
|
146
147
|
export type DropdownPropTypes = ExtractPropTypes<typeof dropdownPropTypes>;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<Menu
|
|
3
|
-
:shown="dropdownPopperState"
|
|
3
|
+
v-model:shown="dropdownPopperState"
|
|
4
4
|
aria-id="dropdown-wrapper"
|
|
5
5
|
distance="4"
|
|
6
6
|
:placement="props.placement"
|
|
@@ -33,8 +33,8 @@
|
|
|
33
33
|
<div
|
|
34
34
|
ref="dropdownRef"
|
|
35
35
|
:class="[
|
|
36
|
-
(!props.ladderized || isLadderizedSearch) && 'spr-p-2',
|
|
37
36
|
'spr-grid spr-max-h-[300px] spr-gap-0.5 spr-overflow-y-auto spr-overflow-x-hidden',
|
|
37
|
+
!props.ladderized || isLadderizedSearch,
|
|
38
38
|
]"
|
|
39
39
|
:style="{
|
|
40
40
|
width: props.popperInnerWidth,
|