Skip to content

[kbn-grid-layout][dashboard] Basic keyboard interaction#208286

Merged
mbondyra merged 35 commits intoelastic:mainfrom
mbondyra:collapsable_panels/keyboard_navigation
Apr 1, 2025
Merged

[kbn-grid-layout][dashboard] Basic keyboard interaction#208286
mbondyra merged 35 commits intoelastic:mainfrom
mbondyra:collapsable_panels/keyboard_navigation

Conversation

@mbondyra
Copy link
Contributor

@mbondyra mbondyra commented Jan 24, 2025

Summary

Adds keyboard navigation for drag-and-drop interactions
Fixes #211925
Fixes #190448

Supported features

  1. Resize panels
resize4.mp4
  1. Drag panels within the same section (dragging between sections is pending)
drag2.mp4
  1. Move rows up/down
dragrows.mp4

Interaction Flow

  1. Start interaction with Space or Enter
  2. Move using arrow keys
  3. Finish by confirming (Enter/Space) or canceling (Escape) (blurring also confirms the changes)

Scrolling Behavior:

  • Default browser scrolling is disabled in interaction mode to avoid unexpected behavior and edge cases that would overcomplicate this simple implementation.
  • Scrolling occurs when the user reaches the edge of the screen while resizing or dragging, allowing them to continue the interaction smoothly.
  • When the operation is confirmed, we also scroll to the element to make sure it's in view.

Missing (planned for another PR):

  • A11y announcements
  • Dragging between sections
  • This feature is not well unit-tested, but it's very difficult to do it without mocking the crucial pieces of functionality. I'd vote to leave it for now and add a few functional tests once we decide a strategy for it, since drag and drop interactions are anyway quite difficult to unit-test reliably anyway.
    Quoting rtl creator:

Simulating drag-and-drop in an environment which does not support layout like jsdom (which is where most people use user-event) would be very tricky to get legit confidence from.

@mbondyra mbondyra added Team:Presentation Presentation Team for Dashboard, Input Controls, and Canvas t// release_note:skip Skip the PR/issue when compiling release notes backport:prev-minor labels Jan 24, 2025
@mbondyra mbondyra force-pushed the collapsable_panels/keyboard_navigation branch 2 times, most recently from a51cf39 to 92ba30d Compare January 29, 2025 15:50
@mbondyra mbondyra force-pushed the collapsable_panels/keyboard_navigation branch 5 times, most recently from 561cb55 to 8821b63 Compare March 24, 2025 11:36
@mbondyra mbondyra changed the title [Collapsable Panels] [Dashboard] basic keyboard interaction Mar 24, 2025
@mbondyra mbondyra changed the title [kbn-grid-layout] [Dashboard] basic keyboard interaction Mar 24, 2025
@mbondyra mbondyra changed the title [kbn-grid-layout][Dashboard] basic keyboard interaction Mar 24, 2025
@mbondyra mbondyra changed the title [kbn-grid-layout][Dashboard] Basic keyboard interaction Mar 24, 2025
@mbondyra mbondyra added release_note:enhancement backport:skip This PR does not require backporting Project:Collapsable Panels Related to the project for adding collapsable sections to Dashboards. v9.1.0 loe:large Large Level of Effort Feature:Dashboard Dashboard related features and removed backport:prev-minor release_note:skip Skip the PR/issue when compiling release notes labels Mar 24, 2025
@mbondyra mbondyra force-pushed the collapsable_panels/keyboard_navigation branch from 8821b63 to 486e967 Compare March 25, 2025 16:24
@mbondyra mbondyra force-pushed the collapsable_panels/keyboard_navigation branch from 8db20de to 02f7d31 Compare March 31, 2025 20:25
mbondyra added a commit that referenced this pull request Mar 31, 2025
)

## Summary

While working on [PR
#208286](#208286), I found a small
but noticeable bug: When using keyboard navigation with compacted hover
actions, the element shifts slightly left when moving up/down.


https://github.com/user-attachments/assets/71e44671-c98a-4e09-a0a0-1c79efeefa25

####  Cause:
* `sensorOffsets` are calculated before activation, when the panel has a
1px border.
* Activating the element increases the border to 2px, throwing off the
position calculation.

#### Why we cannot use outline (that is used for panels to avoid
shifting the layout):

For panels, this problem is avoided by using outline, but here we can't
because `outline` applies uniformly to all sides.
Here, we need to avoid displaying a bottom border.

#### Before fix
(Notice how hover actions get slightly wider)


https://github.com/user-attachments/assets/a6b8dd02-4be2-4425-bf28-2af6dde3b023


https://github.com/user-attachments/assets/03c5aa71-cd3c-4181-bb4c-05a2003775f5

After Fix:
The dimensions of the whole active panel and actions are stable:


https://github.com/user-attachments/assets/d7ba766e-2567-4c3e-a2d6-9c95de2e2f9a


https://github.com/user-attachments/assets/220ee96f-29b8-4f68-bd9c-1d2ee15b9e5d

I know this makes the implementation slightly more complex, but I
couldn't find a simpler solution that covers all cases (dotted line
forces us to us `outline` or `border` for panel, but no bottom border
forces us to use `border` (which causes this problem) or `box-shadow`)
kibanamachine pushed a commit to kibanamachine/kibana that referenced this pull request Mar 31, 2025
…tic#216412)

## Summary

While working on [PR
elastic#208286](elastic#208286), I found a small
but noticeable bug: When using keyboard navigation with compacted hover
actions, the element shifts slightly left when moving up/down.

https://github.com/user-attachments/assets/71e44671-c98a-4e09-a0a0-1c79efeefa25

####  Cause:
* `sensorOffsets` are calculated before activation, when the panel has a
1px border.
* Activating the element increases the border to 2px, throwing off the
position calculation.

#### Why we cannot use outline (that is used for panels to avoid
shifting the layout):

For panels, this problem is avoided by using outline, but here we can't
because `outline` applies uniformly to all sides.
Here, we need to avoid displaying a bottom border.

#### Before fix
(Notice how hover actions get slightly wider)

https://github.com/user-attachments/assets/a6b8dd02-4be2-4425-bf28-2af6dde3b023

https://github.com/user-attachments/assets/03c5aa71-cd3c-4181-bb4c-05a2003775f5

After Fix:
The dimensions of the whole active panel and actions are stable:

https://github.com/user-attachments/assets/d7ba766e-2567-4c3e-a2d6-9c95de2e2f9a

https://github.com/user-attachments/assets/220ee96f-29b8-4f68-bd9c-1d2ee15b9e5d

I know this makes the implementation slightly more complex, but I
couldn't find a simpler solution that covers all cases (dotted line
forces us to us `outline` or `border` for panel, but no bottom border
forces us to use `border` (which causes this problem) or `box-shadow`)

(cherry picked from commit b2c8762)
cqliu1 pushed a commit to cqliu1/kibana that referenced this pull request Mar 31, 2025
…tic#216412)

## Summary

While working on [PR
elastic#208286](elastic#208286), I found a small
but noticeable bug: When using keyboard navigation with compacted hover
actions, the element shifts slightly left when moving up/down.


https://github.com/user-attachments/assets/71e44671-c98a-4e09-a0a0-1c79efeefa25

####  Cause:
* `sensorOffsets` are calculated before activation, when the panel has a
1px border.
* Activating the element increases the border to 2px, throwing off the
position calculation.

#### Why we cannot use outline (that is used for panels to avoid
shifting the layout):

For panels, this problem is avoided by using outline, but here we can't
because `outline` applies uniformly to all sides.
Here, we need to avoid displaying a bottom border.

#### Before fix
(Notice how hover actions get slightly wider)


https://github.com/user-attachments/assets/a6b8dd02-4be2-4425-bf28-2af6dde3b023


https://github.com/user-attachments/assets/03c5aa71-cd3c-4181-bb4c-05a2003775f5

After Fix:
The dimensions of the whole active panel and actions are stable:


https://github.com/user-attachments/assets/d7ba766e-2567-4c3e-a2d6-9c95de2e2f9a


https://github.com/user-attachments/assets/220ee96f-29b8-4f68-bd9c-1d2ee15b9e5d

I know this makes the implementation slightly more complex, but I
couldn't find a simpler solution that covers all cases (dotted line
forces us to us `outline` or `border` for panel, but no bottom border
forces us to use `border` (which causes this problem) or `box-shadow`)
kibanamachine added a commit that referenced this pull request Mar 31, 2025
…#216412) (#216543)

# Backport

This will backport the following commits from `main` to `8.x`:
- [[Dashboard] do not change the geometry of hover actions on drag
(#216412)](#216412)

<!--- Backport version: 9.6.6 -->

### Questions ?
Please refer to the [Backport tool
documentation](https://github.com/sorenlouv/backport)

<!--BACKPORT [{"author":{"name":"Marta
Bondyra","email":"4283304+mbondyra@users.noreply.github.com"},"sourceCommit":{"committedDate":"2025-03-31T20:34:41Z","message":"[Dashboard]
do not change the geometry of hover actions on drag (#216412)\n\n##
Summary\n\nWhile working on
[PR\n#208286](#208286), I found a
small\nbut noticeable bug: When using keyboard navigation with compacted
hover\nactions, the element shifts slightly left when moving
up/down.\n\n\nhttps://github.com/user-attachments/assets/71e44671-c98a-4e09-a0a0-1c79efeefa25\n\n####
Cause:\n* `sensorOffsets` are calculated before activation, when the
panel has a\n1px border.\n* Activating the element increases the border
to 2px, throwing off the\nposition calculation.\n\n#### Why we cannot
use outline (that is used for panels to avoid\nshifting the
layout):\n\nFor panels, this problem is avoided by using outline, but
here we can't\nbecause `outline` applies uniformly to all sides.\nHere,
we need to avoid displaying a bottom border.\n\n#### Before fix\n(Notice
how hover actions get slightly
wider)\n\n\nhttps://github.com/user-attachments/assets/a6b8dd02-4be2-4425-bf28-2af6dde3b023\n\n\nhttps://github.com/user-attachments/assets/03c5aa71-cd3c-4181-bb4c-05a2003775f5\n\nAfter
Fix:\nThe dimensions of the whole active panel and actions are
stable:\n\n\nhttps://github.com/user-attachments/assets/d7ba766e-2567-4c3e-a2d6-9c95de2e2f9a\n\n\nhttps://github.com/user-attachments/assets/220ee96f-29b8-4f68-bd9c-1d2ee15b9e5d\n\nI
know this makes the implementation slightly more complex, but
I\ncouldn't find a simpler solution that covers all cases (dotted
line\nforces us to us `outline` or `border` for panel, but no bottom
border\nforces us to use `border` (which causes this problem) or
`box-shadow`)","sha":"b2c8762dce71cf030aeec7d5575794e8cca5b86f","branchLabelMapping":{"^v9.1.0$":"main","^v8.19.0$":"8.x","^v(\\d+).(\\d+).\\d+$":"$1.$2"}},"sourcePullRequest":{"labels":["Team:Presentation","release_note:skip","backport:version","v9.1.0","v8.19.0"],"title":"[Dashboard]
do not change the geometry of hover actions on
drag","number":216412,"url":"https://github.com/elastic/kibana/pull/216412","mergeCommit":{"message":"[Dashboard]
do not change the geometry of hover actions on drag (#216412)\n\n##
Summary\n\nWhile working on
[PR\n#208286](#208286), I found a
small\nbut noticeable bug: When using keyboard navigation with compacted
hover\nactions, the element shifts slightly left when moving
up/down.\n\n\nhttps://github.com/user-attachments/assets/71e44671-c98a-4e09-a0a0-1c79efeefa25\n\n####
Cause:\n* `sensorOffsets` are calculated before activation, when the
panel has a\n1px border.\n* Activating the element increases the border
to 2px, throwing off the\nposition calculation.\n\n#### Why we cannot
use outline (that is used for panels to avoid\nshifting the
layout):\n\nFor panels, this problem is avoided by using outline, but
here we can't\nbecause `outline` applies uniformly to all sides.\nHere,
we need to avoid displaying a bottom border.\n\n#### Before fix\n(Notice
how hover actions get slightly
wider)\n\n\nhttps://github.com/user-attachments/assets/a6b8dd02-4be2-4425-bf28-2af6dde3b023\n\n\nhttps://github.com/user-attachments/assets/03c5aa71-cd3c-4181-bb4c-05a2003775f5\n\nAfter
Fix:\nThe dimensions of the whole active panel and actions are
stable:\n\n\nhttps://github.com/user-attachments/assets/d7ba766e-2567-4c3e-a2d6-9c95de2e2f9a\n\n\nhttps://github.com/user-attachments/assets/220ee96f-29b8-4f68-bd9c-1d2ee15b9e5d\n\nI
know this makes the implementation slightly more complex, but
I\ncouldn't find a simpler solution that covers all cases (dotted
line\nforces us to us `outline` or `border` for panel, but no bottom
border\nforces us to use `border` (which causes this problem) or
`box-shadow`)","sha":"b2c8762dce71cf030aeec7d5575794e8cca5b86f"}},"sourceBranch":"main","suggestedTargetBranches":["8.x"],"targetPullRequestStates":[{"branch":"main","label":"v9.1.0","branchLabelMappingKey":"^v9.1.0$","isSourceBranch":true,"state":"MERGED","url":"https://github.com/elastic/kibana/pull/216412","number":216412,"mergeCommit":{"message":"[Dashboard]
do not change the geometry of hover actions on drag (#216412)\n\n##
Summary\n\nWhile working on
[PR\n#208286](#208286), I found a
small\nbut noticeable bug: When using keyboard navigation with compacted
hover\nactions, the element shifts slightly left when moving
up/down.\n\n\nhttps://github.com/user-attachments/assets/71e44671-c98a-4e09-a0a0-1c79efeefa25\n\n####
Cause:\n* `sensorOffsets` are calculated before activation, when the
panel has a\n1px border.\n* Activating the element increases the border
to 2px, throwing off the\nposition calculation.\n\n#### Why we cannot
use outline (that is used for panels to avoid\nshifting the
layout):\n\nFor panels, this problem is avoided by using outline, but
here we can't\nbecause `outline` applies uniformly to all sides.\nHere,
we need to avoid displaying a bottom border.\n\n#### Before fix\n(Notice
how hover actions get slightly
wider)\n\n\nhttps://github.com/user-attachments/assets/a6b8dd02-4be2-4425-bf28-2af6dde3b023\n\n\nhttps://github.com/user-attachments/assets/03c5aa71-cd3c-4181-bb4c-05a2003775f5\n\nAfter
Fix:\nThe dimensions of the whole active panel and actions are
stable:\n\n\nhttps://github.com/user-attachments/assets/d7ba766e-2567-4c3e-a2d6-9c95de2e2f9a\n\n\nhttps://github.com/user-attachments/assets/220ee96f-29b8-4f68-bd9c-1d2ee15b9e5d\n\nI
know this makes the implementation slightly more complex, but
I\ncouldn't find a simpler solution that covers all cases (dotted
line\nforces us to us `outline` or `border` for panel, but no bottom
border\nforces us to use `border` (which causes this problem) or
`box-shadow`)","sha":"b2c8762dce71cf030aeec7d5575794e8cca5b86f"}},{"branch":"8.x","label":"v8.19.0","branchLabelMappingKey":"^v8.19.0$","isSourceBranch":false,"state":"NOT_CREATED"}]}]
BACKPORT-->

Co-authored-by: Marta Bondyra <4283304+mbondyra@users.noreply.github.com>
@elasticmachine
Copy link
Contributor

💛 Build succeeded, but was flaky

Failed CI Steps

Test Failures

  • [job] [logs] FTR Configs #63 / alerting api integration security and spaces enabled - Group 2 Alerting and Actions Telemetry test telemetry should retrieve telemetry data in the expected format

Metrics [docs]

Module Count

Fewer modules leads to a faster build time

id before after diff
dashboard 646 652 +6

Public APIs missing comments

Total count of every public API that lacks a comment. Target amount is 0. Run node scripts/build_api_docs --plugin [yourplugin] --stats comments for more detailed information.

id before after diff
@kbn/grid-layout 19 20 +1

Async chunks

Total size of all lazy-loaded chunks that will be downloaded as the user navigates the app

id before after diff
dashboard 550.4KB 555.3KB +5.0KB

Page load bundle

Size of the bundles that are downloaded on every page load. Target size is below 100kb

id before after diff
dashboard 17.3KB 17.4KB +62.0B
Unknown metric groups

API count

id before after diff
@kbn/grid-layout 20 21 +1

History

@mbondyra mbondyra merged commit f5b185a into elastic:main Apr 1, 2025
9 checks passed
@mbondyra mbondyra deleted the collapsable_panels/keyboard_navigation branch April 1, 2025 09:29
@kibanamachine
Copy link
Contributor

Starting backport for target branches: 8.x

https://github.com/elastic/kibana/actions/runs/14192137776

kibanamachine added a commit to kibanamachine/kibana that referenced this pull request Apr 1, 2025
## Summary
Adds keyboard navigation for drag-and-drop interactions
Fixes elastic#211925
Fixes elastic#190448

### Supported features
1. Resize panels

https://github.com/user-attachments/assets/ba7add16-a0c6-4f15-9f3b-0f8ef7caf8ac

2. Drag panels within the same section (dragging between sections is
pending)

https://github.com/user-attachments/assets/a1fd80af-63ca-4fa2-bded-3db9968a8366

3. Move rows up/down

https://github.com/user-attachments/assets/8d7e8d7d-b1bf-4abe-9cc2-28eeea9b43f8

### Interaction Flow

1. Start interaction with `Space` or `Enter`
2. Move using arrow keys
3. Finish by confirming (`Enter`/`Space`) or canceling (`Escape`)
(blurring also confirms the changes)

### Scrolling Behavior:
* Default browser scrolling is disabled in interaction mode to avoid
unexpected behavior and edge cases that would overcomplicate this simple
implementation.
* Scrolling occurs when the user reaches the edge of the screen while
resizing or dragging, allowing them to continue the interaction
smoothly.
* When the operation is confirmed, we also scroll to the element to make
sure it's in view.

### Missing (planned for another PR):
* A11y announcements
* Dragging between sections
* This feature is not well unit-tested, but it's very difficult to do it
without mocking the crucial pieces of functionality. I'd vote to leave
it for now and add a few functional tests once we decide a strategy for
it, since drag and drop interactions are anyway quite difficult to
unit-test reliably anyway.

---------

Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
(cherry picked from commit f5b185a)
@kibanamachine
Copy link
Contributor

💚 All backports created successfully

Status Branch Result
8.x

Note: Successful backport PRs will be merged automatically after passing CI.

Questions ?

Please refer to the Backport tool documentation

kibanamachine added a commit that referenced this pull request Apr 2, 2025
… (#216603)

# Backport

This will backport the following commits from `main` to `8.x`:
- [[kbn-grid-layout][dashboard] Basic keyboard interaction
(#208286)](#208286)

<!--- Backport version: 9.6.6 -->

### Questions ?
Please refer to the [Backport tool
documentation](https://github.com/sorenlouv/backport)

<!--BACKPORT [{"author":{"name":"Marta
Bondyra","email":"4283304+mbondyra@users.noreply.github.com"},"sourceCommit":{"committedDate":"2025-04-01T09:29:02Z","message":"[kbn-grid-layout][dashboard]
Basic keyboard interaction (#208286)\n\n## Summary\nAdds keyboard
navigation for drag-and-drop interactions\nFixes
https://github.com/elastic/kibana/issues/211925\nFixes
https://github.com/elastic/kibana/issues/190448\n\n### Supported
features \n1. Resize
panels\n\n\nhttps://github.com/user-attachments/assets/ba7add16-a0c6-4f15-9f3b-0f8ef7caf8ac\n\n2.
Drag panels within the same section (dragging between sections
is\npending)\n\n\nhttps://github.com/user-attachments/assets/a1fd80af-63ca-4fa2-bded-3db9968a8366\n\n3.
Move rows
up/down\n\n\nhttps://github.com/user-attachments/assets/8d7e8d7d-b1bf-4abe-9cc2-28eeea9b43f8\n\n###
Interaction Flow\n\n1. Start interaction with `Space` or `Enter`\n2.
Move using arrow keys\n3. Finish by confirming (`Enter`/`Space`) or
canceling (`Escape`)\n(blurring also confirms the changes)\n\n###
Scrolling Behavior:\n* Default browser scrolling is disabled in
interaction mode to avoid\nunexpected behavior and edge cases that would
overcomplicate this simple\nimplementation.\n* Scrolling occurs when the
user reaches the edge of the screen while\nresizing or dragging,
allowing them to continue the interaction\nsmoothly.\n* When the
operation is confirmed, we also scroll to the element to make\nsure it's
in view.\n\n### Missing (planned for another PR):\n* A11y announcements
\n* Dragging between sections\n* This feature is not well unit-tested,
but it's very difficult to do it\nwithout mocking the crucial pieces of
functionality. I'd vote to leave\nit for now and add a few functional
tests once we decide a strategy for\nit, since drag and drop
interactions are anyway quite difficult to\nunit-test reliably
anyway.\n\n---------\n\nCo-authored-by: kibanamachine
<42973632+kibanamachine@users.noreply.github.com>","sha":"f5b185a28f9b1af41ca6a36f010b50b470e34ddb","branchLabelMapping":{"^v9.1.0$":"main","^v8.19.0$":"8.x","^v(\\d+).(\\d+).\\d+$":"$1.$2"}},"sourcePullRequest":{"labels":["Feature:Dashboard","Team:Presentation","loe:large","impact:medium","release_note:feature","Project:Collapsable
Panels","backport:version","v9.1.0","v8.19.0"],"title":"[kbn-grid-layout][dashboard]
Basic keyboard
interaction","number":208286,"url":"https://github.com/elastic/kibana/pull/208286","mergeCommit":{"message":"[kbn-grid-layout][dashboard]
Basic keyboard interaction (#208286)\n\n## Summary\nAdds keyboard
navigation for drag-and-drop interactions\nFixes
https://github.com/elastic/kibana/issues/211925\nFixes
https://github.com/elastic/kibana/issues/190448\n\n### Supported
features \n1. Resize
panels\n\n\nhttps://github.com/user-attachments/assets/ba7add16-a0c6-4f15-9f3b-0f8ef7caf8ac\n\n2.
Drag panels within the same section (dragging between sections
is\npending)\n\n\nhttps://github.com/user-attachments/assets/a1fd80af-63ca-4fa2-bded-3db9968a8366\n\n3.
Move rows
up/down\n\n\nhttps://github.com/user-attachments/assets/8d7e8d7d-b1bf-4abe-9cc2-28eeea9b43f8\n\n###
Interaction Flow\n\n1. Start interaction with `Space` or `Enter`\n2.
Move using arrow keys\n3. Finish by confirming (`Enter`/`Space`) or
canceling (`Escape`)\n(blurring also confirms the changes)\n\n###
Scrolling Behavior:\n* Default browser scrolling is disabled in
interaction mode to avoid\nunexpected behavior and edge cases that would
overcomplicate this simple\nimplementation.\n* Scrolling occurs when the
user reaches the edge of the screen while\nresizing or dragging,
allowing them to continue the interaction\nsmoothly.\n* When the
operation is confirmed, we also scroll to the element to make\nsure it's
in view.\n\n### Missing (planned for another PR):\n* A11y announcements
\n* Dragging between sections\n* This feature is not well unit-tested,
but it's very difficult to do it\nwithout mocking the crucial pieces of
functionality. I'd vote to leave\nit for now and add a few functional
tests once we decide a strategy for\nit, since drag and drop
interactions are anyway quite difficult to\nunit-test reliably
anyway.\n\n---------\n\nCo-authored-by: kibanamachine
<42973632+kibanamachine@users.noreply.github.com>","sha":"f5b185a28f9b1af41ca6a36f010b50b470e34ddb"}},"sourceBranch":"main","suggestedTargetBranches":["8.x"],"targetPullRequestStates":[{"branch":"main","label":"v9.1.0","branchLabelMappingKey":"^v9.1.0$","isSourceBranch":true,"state":"MERGED","url":"https://github.com/elastic/kibana/pull/208286","number":208286,"mergeCommit":{"message":"[kbn-grid-layout][dashboard]
Basic keyboard interaction (#208286)\n\n## Summary\nAdds keyboard
navigation for drag-and-drop interactions\nFixes
https://github.com/elastic/kibana/issues/211925\nFixes
https://github.com/elastic/kibana/issues/190448\n\n### Supported
features \n1. Resize
panels\n\n\nhttps://github.com/user-attachments/assets/ba7add16-a0c6-4f15-9f3b-0f8ef7caf8ac\n\n2.
Drag panels within the same section (dragging between sections
is\npending)\n\n\nhttps://github.com/user-attachments/assets/a1fd80af-63ca-4fa2-bded-3db9968a8366\n\n3.
Move rows
up/down\n\n\nhttps://github.com/user-attachments/assets/8d7e8d7d-b1bf-4abe-9cc2-28eeea9b43f8\n\n###
Interaction Flow\n\n1. Start interaction with `Space` or `Enter`\n2.
Move using arrow keys\n3. Finish by confirming (`Enter`/`Space`) or
canceling (`Escape`)\n(blurring also confirms the changes)\n\n###
Scrolling Behavior:\n* Default browser scrolling is disabled in
interaction mode to avoid\nunexpected behavior and edge cases that would
overcomplicate this simple\nimplementation.\n* Scrolling occurs when the
user reaches the edge of the screen while\nresizing or dragging,
allowing them to continue the interaction\nsmoothly.\n* When the
operation is confirmed, we also scroll to the element to make\nsure it's
in view.\n\n### Missing (planned for another PR):\n* A11y announcements
\n* Dragging between sections\n* This feature is not well unit-tested,
but it's very difficult to do it\nwithout mocking the crucial pieces of
functionality. I'd vote to leave\nit for now and add a few functional
tests once we decide a strategy for\nit, since drag and drop
interactions are anyway quite difficult to\nunit-test reliably
anyway.\n\n---------\n\nCo-authored-by: kibanamachine
<42973632+kibanamachine@users.noreply.github.com>","sha":"f5b185a28f9b1af41ca6a36f010b50b470e34ddb"}},{"branch":"8.x","label":"v8.19.0","branchLabelMappingKey":"^v8.19.0$","isSourceBranch":false,"state":"NOT_CREATED"}]}]
BACKPORT-->

Co-authored-by: Marta Bondyra <4283304+mbondyra@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

backport:version Backport to applied version labels Feature:Dashboard Dashboard related features impact:medium Addressing this issue will have a medium level of impact on the quality/strength of our product. loe:large Large Level of Effort Project:Collapsable Panels Related to the project for adding collapsable sections to Dashboards. release_note:feature Makes this part of the condensed release notes Team:Presentation Presentation Team for Dashboard, Input Controls, and Canvas t// v8.19.0 v9.1.0

4 participants