Skip to content

Commit 5cb01f2

Browse files
authored
Merge branch 'main' into fix/versioning_dropdown
2 parents 769e56a + 4301061 commit 5cb01f2

File tree

12 files changed

+331
-302
lines changed

12 files changed

+331
-302
lines changed

.github/updatecli/updatecli.d/versions.yml

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -333,7 +333,8 @@ sources:
333333
token: '{{ requiredEnv "GITHUB_TOKEN" }}'
334334
username: '{{ requiredEnv "GITHUB_ACTOR" }}'
335335
versionfilter:
336-
kind: latest
336+
kind: semver
337+
pattern: "^9.0.0"
337338

338339
latest-elasticsearch-client-go-version:
339340
name: Get latest release version for Elasticsearch Go Client
@@ -346,7 +347,8 @@ sources:
346347
token: '{{ requiredEnv "GITHUB_TOKEN" }}'
347348
username: '{{ requiredEnv "GITHUB_ACTOR" }}'
348349
versionfilter:
349-
kind: latest
350+
kind: semver
351+
pattern: "^9.0.0"
350352

351353
latest-elasticsearch-client-java-version:
352354
name: Get latest release version for Elasticsearch Java Client
@@ -359,7 +361,8 @@ sources:
359361
token: '{{ requiredEnv "GITHUB_TOKEN" }}'
360362
username: '{{ requiredEnv "GITHUB_ACTOR" }}'
361363
versionfilter:
362-
kind: latest
364+
kind: semver
365+
pattern: "^9.0.0"
363366

364367
latest-elasticsearch-client-javascript-version:
365368
name: Get latest release version for Elasticsearch JavaScript Client
@@ -372,7 +375,8 @@ sources:
372375
token: '{{ requiredEnv "GITHUB_TOKEN" }}'
373376
username: '{{ requiredEnv "GITHUB_ACTOR" }}'
374377
versionfilter:
375-
kind: latest
378+
kind: semver
379+
pattern: "^9.0.0"
376380

377381
latest-elasticsearch-client-php-version:
378382
name: Get latest release version for Elasticsearch PHP Client
@@ -385,7 +389,8 @@ sources:
385389
token: '{{ requiredEnv "GITHUB_TOKEN" }}'
386390
username: '{{ requiredEnv "GITHUB_ACTOR" }}'
387391
versionfilter:
388-
kind: latest
392+
kind: semver
393+
pattern: "^9.0.0"
389394

390395
latest-elasticsearch-client-python-version:
391396
name: Get latest release version for Elasticsearch Python Client
@@ -398,7 +403,8 @@ sources:
398403
token: '{{ requiredEnv "GITHUB_TOKEN" }}'
399404
username: '{{ requiredEnv "GITHUB_ACTOR" }}'
400405
versionfilter:
401-
kind: latest
406+
kind: semver
407+
pattern: "^9.0.0"
402408

403409
latest-elasticsearch-client-ruby-version:
404410
name: Get latest release version for Elasticsearch Ruby Client
@@ -411,7 +417,8 @@ sources:
411417
token: '{{ requiredEnv "GITHUB_TOKEN" }}'
412418
username: '{{ requiredEnv "GITHUB_ACTOR" }}'
413419
versionfilter:
414-
kind: latest
420+
kind: semver
421+
pattern: "^9.0.0"
415422

416423
latest-elasticsearch-client-rust-version:
417424
name: Get latest release version for Elasticsearch Rust Client
@@ -424,7 +431,8 @@ sources:
424431
token: '{{ requiredEnv "GITHUB_TOKEN" }}'
425432
username: '{{ requiredEnv "GITHUB_ACTOR" }}'
426433
versionfilter:
427-
kind: latest
434+
kind: semver
435+
pattern: ">=9.0.0-0 <10.0.0"
428436

429437
targets:
430438
update-docs-docset-stack:

src/Elastic.Documentation.Site/Assets/web-components/SearchOrAskAi/InfoBanner.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ export const InfoBanner = () => {
2222
`}
2323
>
2424
<EuiBetaBadge
25+
tabIndex={-1}
2526
css={css`
2627
display: inherit;
2728
`}

src/Elastic.Documentation.Site/Assets/web-components/SearchOrAskAi/Search/Search.test.tsx

Lines changed: 12 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -318,7 +318,7 @@ describe('Search Component', () => {
318318
expect(searchStore.getState().selectedIndex).toBe(0)
319319
})
320320

321-
it('should move focus to second result on ArrowDown from input (first is already visually selected)', async () => {
321+
it('should move selection to second result on ArrowDown from input (focus stays on input)', async () => {
322322
// Arrange
323323
const user = userEvent.setup()
324324

@@ -337,9 +337,9 @@ describe('Search Component', () => {
337337

338338
await user.keyboard('{ArrowDown}')
339339

340-
// Assert - focus moved to second result (first is already visually selected)
341-
const secondResult = screen.getByText('Test Result 2').closest('a')
342-
expect(secondResult).toHaveFocus()
340+
// Assert - selection moved to second result, focus stays on input (Pattern B)
341+
expect(searchStore.getState().selectedIndex).toBe(1)
342+
expect(input).toHaveFocus()
343343
})
344344

345345
it('should move focus between results with ArrowDown/ArrowUp', async () => {
@@ -372,7 +372,7 @@ describe('Search Component', () => {
372372
expect(searchStore.getState().selectedIndex).toBe(0)
373373
})
374374

375-
it('should clear selection when ArrowUp from first item goes to input', async () => {
375+
it('should stay at first item when ArrowUp from first item (no wrap)', async () => {
376376
// Arrange
377377
const user = userEvent.setup()
378378

@@ -394,12 +394,12 @@ describe('Search Component', () => {
394394

395395
await user.keyboard('{ArrowUp}')
396396

397-
// Assert - focus goes to input, selection is cleared
398-
expect(input).toHaveFocus()
399-
expect(searchStore.getState().selectedIndex).toBe(NO_SELECTION)
397+
// Assert - stays at first item (no wrap around)
398+
expect(firstResult).toHaveFocus()
399+
expect(searchStore.getState().selectedIndex).toBe(0)
400400
})
401401

402-
it('should clear selection when ArrowDown from last item goes to button', async () => {
402+
it('should stay at last item when ArrowDown from last item (no wrap)', async () => {
403403
// Arrange
404404
const user = userEvent.setup()
405405

@@ -422,12 +422,9 @@ describe('Search Component', () => {
422422
// Try to go down from last item
423423
await user.keyboard('{ArrowDown}')
424424

425-
// Assert - focus moves to button, selection is cleared
426-
const button = screen.getByRole('button', {
427-
name: /tell me more about/i,
428-
})
429-
expect(button).toHaveFocus()
430-
expect(searchStore.getState().selectedIndex).toBe(NO_SELECTION)
425+
// Assert - stays at last item (no wrap around)
426+
expect(lastResult).toHaveFocus()
427+
expect(searchStore.getState().selectedIndex).toBe(2)
431428
})
432429

433430
it('should render isSelected prop on the selected item', async () => {

src/Elastic.Documentation.Site/Assets/web-components/SearchOrAskAi/Search/Search.tsx

Lines changed: 4 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -46,13 +46,8 @@ export const Search = () => {
4646
closeModal()
4747
}
4848

49-
const {
50-
inputRef,
51-
buttonRef,
52-
itemRefs,
53-
handleInputKeyDown,
54-
focusLastAvailable,
55-
} = useSearchKeyboardNavigation(resultsCount)
49+
const { inputRef, buttonRef, itemRefs, filterRefs, handleInputKeyDown } =
50+
useSearchKeyboardNavigation(resultsCount)
5651

5752
// Listen for Cmd+K to focus input
5853
useEffect(() => {
@@ -109,14 +104,11 @@ export const Search = () => {
109104
iconType="cross"
110105
color="text"
111106
onClick={handleCloseModal}
107+
tabIndex={-1}
112108
/>
113109
</div>
114110

115-
<SearchResults
116-
inputRef={inputRef}
117-
buttonRef={buttonRef}
118-
itemRefs={itemRefs}
119-
/>
111+
<SearchResults itemRefs={itemRefs} filterRefs={filterRefs} />
120112
{!showLoadingSpinner && <EuiHorizontalRule margin="none" />}
121113
{searchTerm && (
122114
<div
@@ -139,7 +131,6 @@ export const Search = () => {
139131
ref={buttonRef}
140132
term={searchTerm}
141133
onAsk={askAi}
142-
onArrowUp={focusLastAvailable}
143134
/>
144135
</div>
145136
)}

0 commit comments

Comments
 (0)