Skip to content

Commit 358d124

Browse files
authored
feat(dropdown): remove method argument from open/close event (#1449)
- remove `method` argument from `open` and `close` event BREAKING CHANGE: Dropdown `open` and `close` event arguments has changed
1 parent 0d51b7a commit 358d124

File tree

2 files changed

+57
-57
lines changed

2 files changed

+57
-57
lines changed

packages/docs/components/Dropdown.md

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -69,16 +69,16 @@ The component implements the W3C ARIA APG [Combobox Pattern](https://www.w3.org/
6969

7070
### Events
7171

72-
| Event name | Properties | Description |
73-
| ------------------ | ----------------------------------------------------------------------- | ------------------------------------------------ |
74-
| update:model-value | **value** `unknown \| unknown[]` - updated modelValue prop | modelValue prop two-way binding |
75-
| update:active | **value** `boolean` - updated active prop | active prop two-way binding |
76-
| select | **value** `unknown` - selected value | on select event - fired before update:modelValue |
77-
| change | **value** `unknown \| unknown[]` - selected value |
78-
| open | **method** `string` - open method<br/>**event** `Event` - native event | on open event |
79-
| close | **method** `string` - close method<br/>**event** `Event` - native event | on close event |
80-
| scroll-start | | the list inside the dropdown reached the start |
81-
| scroll-end | | the list inside the dropdown reached it's end |
72+
| Event name | Properties | Description |
73+
| ------------------ | ---------------------------------------------------------- | ------------------------------------------------ |
74+
| update:model-value | **value** `unknown \| unknown[]` - updated modelValue prop | modelValue prop two-way binding |
75+
| update:active | **value** `boolean` - updated active prop | active prop two-way binding |
76+
| select | **value** `unknown` - selected value | on select event - fired before update:modelValue |
77+
| change | **value** `unknown \| unknown[]` - selected value |
78+
| open | **event** `Event` - native event | on active state changes to true |
79+
| close | **event** `Event` - native event | on active state changes to false |
80+
| scroll-start | | the list inside the dropdown reached the start |
81+
| scroll-end | | the list inside the dropdown reached it's end |
8282

8383
### Slots
8484

packages/oruga/src/components/dropdown/Dropdown.vue

Lines changed: 47 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -108,17 +108,15 @@ const emits = defineEmits<{
108108
*/
109109
change: [value: ModelValue];
110110
/**
111-
* on open event
112-
* @param method {string} open method
111+
* on active state changes to true
113112
* @param event {Event} - native event
114113
*/
115-
open: [method: string, event: Event];
114+
open: [event: Event];
116115
/**
117-
* on close event
118-
* @param method {string} close method
116+
* on active state changes to false
119117
* @param event {Event} - native event
120118
*/
121-
close: [method: string, event: Event];
119+
close: [event: Event];
122120
/** the list inside the dropdown reached the start */
123121
"scroll-start": [];
124122
/** the list inside the dropdown reached it's end */
@@ -204,27 +202,29 @@ const hoverable = computed(() => props.triggers.includes("hover"));
204202
205203
const toggleScroll = usePreventScrolling(props.clipScroll);
206204
207-
// set infinite scroll handler
208-
if (isClient && props.scrollable)
209-
useScrollEvents(
210-
menuRef,
211-
{
212-
onScrollEnd: () => emits("scroll-end"),
213-
onScrollStart: () => emits("scroll-start"),
214-
},
215-
{ passive: true },
216-
);
205+
if (isClient) {
206+
// set infinite scroll handler
207+
if (props.scrollable)
208+
useScrollEvents(
209+
menuRef,
210+
{
211+
onScrollEnd: () => emits("scroll-end"),
212+
onScrollStart: () => emits("scroll-start"),
213+
},
214+
{ passive: true },
215+
);
217216
218-
// set click outside handler
219-
if (isClient && props.closeOnOutside)
220-
useClickOutside([menuRef, triggerRef], onClickedOutside, {
221-
trigger: isActive,
222-
passive: true,
223-
});
217+
// set click outside handler
218+
if (props.closeOnOutside)
219+
useClickOutside([menuRef, triggerRef], onClickedOutside, {
220+
trigger: isActive,
221+
passive: true,
222+
});
224223
225-
// set scroll page event
226-
if (isClient && props.closeOnScroll)
227-
useEventListener(window, "scroll", onPageScroll, { passive: true });
224+
// set scroll page event
225+
if (props.closeOnScroll)
226+
useEventListener(window, "scroll", onPageScroll, { passive: true });
227+
}
228228
229229
watch(
230230
isActive,
@@ -258,76 +258,76 @@ watch(
258258
function onClickedOutside(event: Event): void {
259259
if (!isActive.value || props.inline) return;
260260
if (!props.closeOnOutside) return;
261-
close("outside", event);
261+
close(event);
262262
}
263263
264264
/** Close dropdown if page get scrolled. */
265265
function onPageScroll(event: Event): void {
266266
if (!isActive.value || props.inline) return;
267267
if (!props.closeOnScroll) return;
268-
close("scroll", event);
268+
close(event);
269269
}
270270
271271
function onTriggerClick(event: Event): void {
272272
// check if is mobile native and hoverable together
273-
if (isMobileNative && hoverable.value) toggle("click", event);
273+
if (isMobileNative && hoverable.value) toggle(event);
274274
// check normal click conditions
275275
if (!props.triggers.includes("click")) return;
276-
toggle("click", event);
276+
toggle(event);
277277
}
278278
279279
function onTriggerContextMenu(event: Event): void {
280280
if (!props.triggers.includes("contextmenu")) return;
281281
event.preventDefault();
282-
open("contextmenu", event);
282+
open(event);
283283
}
284284
285285
function onTriggerFocus(event: Event): void {
286286
if (!props.triggers.includes("focus")) return;
287-
open("focus", event);
287+
open(event);
288288
}
289289
290290
function onTriggerHover(event: Event): void {
291291
if (isMobileNative) return;
292292
if (!props.triggers.includes("hover")) return;
293-
open("hover", event);
293+
open(event);
294294
}
295295
296296
function onTriggerHoverLeave(event: Event): void {
297297
if (isMobileNative) return;
298298
if (!props.triggers.includes("hover")) return;
299-
close("outside", event);
299+
close(event);
300300
}
301301
302302
/** Toggle dropdown if it's not disabled. */
303-
function toggle(method: string, event: Event): void {
303+
function toggle(event: Event): void {
304304
if (props.disabled) return;
305-
if (!isActive.value) open(method, event);
306-
else close(method, event);
305+
if (!isActive.value) open(event);
306+
else close(event);
307307
}
308308
309309
let timer: ReturnType<typeof setTimeout> | undefined;
310310
311-
function open(method: string, event: Event): void {
311+
function open(event: Event): void {
312312
if (props.disabled) return;
313313
if (isActive.value) return;
314314
if (props.delay) {
315315
timer = setTimeout(() => {
316316
isActive.value = true;
317-
emits("open", method, event);
318317
timer = undefined;
318+
emits("open", event);
319319
}, props.delay);
320320
} else {
321321
// if not active, toggle after clickOutside event
322322
// this fixes toggling programmatic
323323
nextTick(() => (isActive.value = true));
324-
emits("open", method, event);
324+
emits("open", event);
325325
}
326326
}
327327
328-
function close(method: string, event: Event): void {
328+
function close(event: Event): void {
329329
if (!isActive.value) return;
330-
emits("close", method, event);
330+
emits("close", event);
331331
332332
// select item when dropdown closed
333333
if (props.selectOnClose && focusedItem.value?.data.value)
@@ -383,7 +383,7 @@ function selectItem(item: DropdownChildItem<T>, event?: Event): void {
383383
384384
triggerRef.value?.focus();
385385
if (props.keepOpen || !isActive.value || !event) return;
386-
close("content", event);
386+
close(event);
387387
}
388388
389389
// #endregion --- Select Feature ---
@@ -425,12 +425,12 @@ function setFocus(item: DropdownChildItem<T>): void {
425425
}
426426
427427
function onUpPressed(event: Event): void {
428-
if (!isActive.value) return open("keydown", event);
428+
if (!isActive.value) return open(event);
429429
moveFocus(-1);
430430
}
431431
432432
function onDownPressed(event: Event): void {
433-
if (!isActive.value) return open("keydown", event);
433+
if (!isActive.value) return open(event);
434434
moveFocus(1);
435435
}
436436
@@ -449,7 +449,7 @@ function onHomePressed(event: Event): void {
449449
if (target.tagName !== "INPUT" && target.tagName !== "TEXTAREA")
450450
event.preventDefault();
451451
452-
open("keydown", event);
452+
open(event);
453453
if (!isNotEmpty.value) return;
454454
const item = getFirstViableItem(0, 1);
455455
setFocus(item);
@@ -462,14 +462,14 @@ function onEndPressed(event: Event): void {
462462
if (target.tagName !== "INPUT" && target.tagName !== "TEXTAREA")
463463
event.preventDefault();
464464
465-
open("keydown", event);
465+
open(event);
466466
if (!isNotEmpty.value) return;
467467
const item = getFirstViableItem(childItems.value.length - 1, -1);
468468
setFocus(item);
469469
}
470470
471471
function onEscape(event: Event): void {
472-
close("escape", event);
472+
close(event);
473473
}
474474
475475
/**

0 commit comments

Comments
 (0)