diff --git a/app/assets/javascripts/components/AutocompleteTagHint.tsx b/app/assets/javascripts/components/AutocompleteTagHint.tsx
index 00cc04af7..bbb1ec928 100644
--- a/app/assets/javascripts/components/AutocompleteTagHint.tsx
+++ b/app/assets/javascripts/components/AutocompleteTagHint.tsx
@@ -62,6 +62,7 @@ export const AutocompleteTagHint = observer(
onFocus={onFocus}
onBlur={onBlur}
onKeyDown={onKeyDown}
+ tabIndex={-1}
>
Create new tag:
diff --git a/app/assets/javascripts/components/AutocompleteTagInput.tsx b/app/assets/javascripts/components/AutocompleteTagInput.tsx
index 2dddf3077..e3771024d 100644
--- a/app/assets/javascripts/components/AutocompleteTagInput.tsx
+++ b/app/assets/javascripts/components/AutocompleteTagInput.tsx
@@ -92,7 +92,6 @@ export const AutocompleteTagInput = observer(({ appState }: Props) => {
useEffect(() => {
if (autocompleteInputFocused) {
inputRef.current.focus();
- appState.noteTags.setAutocompleteInputFocused(false);
}
}, [appState.noteTags, autocompleteInputFocused]);
@@ -113,6 +112,7 @@ export const AutocompleteTagInput = observer(({ appState }: Props) => {
onBlur={onBlur}
onFocus={onFocus}
onKeyDown={onKeyDown}
+ tabIndex={tags.length === 0 ? 0 : -1}
/>
{dropdownVisible && (autocompleteTagResults.length > 0 || autocompleteTagHintVisible) && (
diff --git a/app/assets/javascripts/components/NoteTag.tsx b/app/assets/javascripts/components/NoteTag.tsx
index f08c94ef8..ba80ebe48 100644
--- a/app/assets/javascripts/components/NoteTag.tsx
+++ b/app/assets/javascripts/components/NoteTag.tsx
@@ -10,7 +10,7 @@ type Props = {
};
export const NoteTag = observer(({ appState, tag }: Props) => {
- const { focusedTagUuid, tags } = appState.noteTags;
+ const { autocompleteInputFocused, focusedTagUuid, tags } = appState.noteTags;
const [showDeleteButton, setShowDeleteButton] = useState(false);
const [tagClicked, setTagClicked] = useState(false);
@@ -51,6 +51,16 @@ export const NoteTag = observer(({ appState, tag }: Props) => {
}
};
+ const getTabIndex = () => {
+ if (focusedTagUuid) {
+ return focusedTagUuid === tag.uuid ? 0 : -1;
+ }
+ if (autocompleteInputFocused) {
+ return -1;
+ }
+ return tags[0].uuid === tag.uuid ? 0 : -1;
+ };
+
const onKeyDown = (event: KeyboardEvent) => {
const tagIndex = appState.noteTags.getTagIndex(tag, tags);
switch (event.key) {
@@ -75,7 +85,6 @@ export const NoteTag = observer(({ appState, tag }: Props) => {
useEffect(() => {
if (focusedTagUuid === tag.uuid) {
tagRef.current.focus();
- appState.noteTags.setFocusedTagUuid(undefined);
}
}, [appState.noteTags, focusedTagUuid, tag]);
@@ -87,6 +96,7 @@ export const NoteTag = observer(({ appState, tag }: Props) => {
onKeyDown={onKeyDown}
onFocus={onFocus}
onBlur={onBlur}
+ tabIndex={getTabIndex()}
>
@@ -99,6 +109,7 @@ export const NoteTag = observer(({ appState, tag }: Props) => {
className="ml-2 -mr-1 border-0 p-0 bg-transparent cursor-pointer flex"
onBlur={onBlur}
onClick={onDeleteTagClick}
+ tabIndex={-1}
>