Skip to content

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

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged

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 release_note:skip Skip the PR/issue when compiling release notes backport:prev-minor Backport to (9.0) the previous minor version (i.e. one version back from main) 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 [kbn-grid-layout] [Dashboard] basic keyboard interaction Mar 24, 2025
@mbondyra mbondyra changed the title [kbn-grid-layout] [Dashboard] basic keyboard interaction [kbn-grid-layout][Dashboard] basic keyboard interaction Mar 24, 2025
@mbondyra mbondyra changed the title [kbn-grid-layout][Dashboard] basic keyboard interaction [kbn-grid-layout][Dashboard] Basic keyboard interaction Mar 24, 2025
@mbondyra mbondyra changed the title [kbn-grid-layout][Dashboard] Basic keyboard interaction [kbn-grid-layout][dashboard] Basic keyboard interaction Mar 24, 2025
@mbondyra mbondyra added release_note:enhancement backport:skip This commit 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 Backport to (9.0) the previous minor version (i.e. one version back from main) 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":"[email protected]"},"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 <[email protected]>
@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 pushed 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 <[email protected]>
(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":"[email protected]"},"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
<[email protected]>","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
<[email protected]>","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
<[email protected]>","sha":"f5b185a28f9b1af41ca6a36f010b50b470e34ddb"}},{"branch":"8.x","label":"v8.19.0","branchLabelMappingKey":"^v8.19.0$","isSourceBranch":false,"state":"NOT_CREATED"}]}]
BACKPORT-->

Co-authored-by: Marta Bondyra <[email protected]>
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 v8.19.0 v9.1.0
Projects
None yet
4 participants