Skip to content

Commit 820ab51

Browse files
committed
fix(popper): add beforeShow
1 parent 5164a82 commit 820ab51

File tree

3 files changed

+29
-3
lines changed

3 files changed

+29
-3
lines changed

packages/autocomplete/src/lib/autocomplete.svelte

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
export let highlightFirstItem = false;
2828
export let fitInputWidth = false;
2929
30+
let inputRef;
3031
let suggestions = [];
3132
let dropdownWidth = '';
3233
let ignoreFocusEvent = false;
@@ -36,7 +37,15 @@
3637
let tooltipVisible = false;
3738
let highlightedIndex = -1;
3839
$: dark = dark || getContext('svel-dark');
40+
$: suggestionVisible = (suggestions.length > 0 || loading) && activated;
41+
$: suggestionLoading = !hideLoading && loading;
3942
43+
const onSuggestionShow = () => {
44+
console.log(12);
45+
if (suggestionVisible) {
46+
dropdownWidth = `${inputRef.offsetWidth}px`;
47+
}
48+
};
4049
const getData = async (queryString) => {
4150
if (suggestionDisabled) return;
4251
@@ -95,9 +104,16 @@
95104
aria-controls="svel-id-6711-108"
96105
aria-expanded="false"
97106
aria-haspopup="listbox"
107+
on:beforeShow={onSuggestionShow}
98108
role="combobox"
99109
>
100-
<SvelInput bind:value on:blur={handleInputBlur} on:focus={handleFocus} on:input={handleInput} />
110+
<SvelInput
111+
bind:this={inputRef}
112+
bind:value
113+
on:blur={handleInputBlur}
114+
on:focus={handleFocus}
115+
on:input={handleInput}
116+
/>
101117
</div>
102118
<div slot="content">
103119
<div role="region">

packages/popper/src/lib/popper.svelte

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,15 @@
11
<script>
22
import Container from '$lib/container.svelte';
33
import { createPopperActions } from '$lib/popper.js';
4-
import { getContext, tick } from 'svelte';
4+
import { createEventDispatcher, getContext, tick } from 'svelte';
55
import a2s from '@svelement-ui/util-array-2-class-string';
66
import { onMount } from 'svelte';
77
import { fade } from 'svelte/transition';
88
import Portal from '$lib/portal.svelte';
99
import { writable } from 'svelte/store';
1010
11+
const dispatch = createEventDispatcher();
12+
1113
let x = 0;
1214
let y = 0;
1315
const mousemove = (ev) => {
@@ -147,6 +149,7 @@
147149
let outer;
148150
149151
async function doShow() {
152+
dispatch('beforeShow');
150153
showTooltip = true;
151154
152155
if (autoClose > 0) {
@@ -161,6 +164,7 @@
161164
}
162165
163166
function doHide() {
167+
dispatch('beforeHide');
164168
if (contentEl) {
165169
contentEl.removeEventListener('mouseover', show);
166170
contentEl.removeEventListener('mouseleave', hide);

packages/popper/src/routes/+page.svelte

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,12 @@
44
let ref;
55
let visible = false;
66
let content = '1';
7+
let beforeShow = () => {
8+
console.log('1111');
9+
};
10+
let beforeHide = () => {
11+
console.log('2222');
12+
};
713
</script>
814

915
<div class="aaa">
@@ -25,7 +31,7 @@
2531
<!-- </button>-->
2632
<!-- <N content="1111" virtualRef={ref} virtualTriggering {visible} />-->
2733

28-
<N {content}>
34+
<N {content} on:beforeHide={beforeHide} on:beforeShow={beforeShow}>
2935
<button on:click={() => (content += '1')}>111</button>
3036
</N>
3137
</div>

0 commit comments

Comments
 (0)