Skip to content

Commit 6e3bc7e

Browse files
chore(deps): update dependency @doist/eslint-config to v12 (#1131)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
1 parent f624fb7 commit 6e3bc7e

File tree

4 files changed

+79
-34
lines changed

4 files changed

+79
-34
lines changed

package-lock.json

Lines changed: 61 additions & 10 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@
8080
"prosemirror-codemark": "0.4.2"
8181
},
8282
"devDependencies": {
83-
"@doist/eslint-config": "11.2.1",
83+
"@doist/eslint-config": "12.0.0",
8484
"@doist/prettier-config": "4.0.0",
8585
"@doist/reactist": "28.7.2",
8686
"@mdx-js/react": "3.1.1",

stories/typist-editor/extensions/suggestions/base-suggestion-dropdown.module.css

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
width: var(--suggestion-dropdown-width);
1515
max-height: calc(
1616
var(--suggestion-dropdown-option-height) * var(--suggestion-dropdown-item-size) +
17-
var(--suggestion-dropdown-spacing) * (var(--suggestion-dropdown-item-size) + 1)
17+
var(--suggestion-dropdown-spacing) * (var(--suggestion-dropdown-item-size) + 1) + 2px
1818
);
1919
padding: var(--suggestion-dropdown-spacing) 0;
2020
overflow-x: hidden;

stories/typist-editor/extensions/suggestions/base-suggestion-dropdown.tsx

Lines changed: 16 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { useEffect, useImperativeHandle, useRef, useState } from 'react'
1+
import { useImperativeHandle, useRef, useState } from 'react'
22

33
import { Box, Inline, Text } from '@doist/reactist'
44

@@ -21,7 +21,8 @@ function BaseSuggestionDropdown<TSuggestionItem extends object>({
2121
renderItem,
2222
onItemSelect,
2323
}: BaseSuggestionDropdownProps<TSuggestionItem>) {
24-
const selectedItemRef = useRef<HTMLLIElement>(null)
24+
const itemRefs = useRef<Map<number, HTMLLIElement>>(new Map())
25+
2526
const [selectedIndex, setSelectedIndex] = useState(0)
2627

2728
const suggestionDropdownStyle: React.CSSProperties = {
@@ -31,36 +32,23 @@ function BaseSuggestionDropdown<TSuggestionItem extends object>({
3132
const areSuggestionsLoading = items.length === 1 && 'isLoading' in items[0]
3233
const areSuggestionsEmpty = items.length === 0
3334

34-
useEffect(
35-
function scrollSelectedItemIntoView() {
36-
selectedItemRef.current?.scrollIntoView({
37-
block: 'nearest',
38-
})
39-
},
40-
[selectedIndex],
41-
)
42-
43-
useEffect(
44-
function autoSelectLastItemIfNeeded() {
45-
if (selectedIndex > items.length) {
46-
setSelectedIndex(items.length - 1)
47-
}
48-
},
49-
[items, selectedIndex],
50-
)
35+
function updateSelectedItem(index: number) {
36+
setSelectedIndex(index)
37+
itemRefs.current.get(index)?.scrollIntoView({ block: 'nearest' })
38+
}
5139

5240
useImperativeHandle(
5341
forwardedRef,
5442
function exposeKeyboardHandlersToReactRenderer() {
5543
return {
5644
onKeyDown({ event }) {
5745
if (event.key === 'ArrowUp') {
58-
setSelectedIndex((selectedIndex + items.length - 1) % items.length)
46+
updateSelectedItem((selectedIndex + items.length - 1) % items.length)
5947
return true
6048
}
6149

6250
if (event.key === 'ArrowDown') {
63-
setSelectedIndex((selectedIndex + 1) % items.length)
51+
updateSelectedItem((selectedIndex + 1) % items.length)
6452
return true
6553
}
6654

@@ -125,7 +113,13 @@ function BaseSuggestionDropdown<TSuggestionItem extends object>({
125113
alignItems="center"
126114
borderRadius="standard"
127115
onClick={() => onItemSelect(index)}
128-
ref={index === selectedIndex ? selectedItemRef : null}
116+
ref={(node) => {
117+
if (node) {
118+
itemRefs.current.set(index, node)
119+
} else {
120+
itemRefs.current.delete(index)
121+
}
122+
}}
129123
>
130124
{renderItem(item)}
131125
</Box>

0 commit comments

Comments
 (0)