diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/components/split-panel/split-panel.element.ts b/src/Umbraco.Web.UI.Client/src/packages/core/components/split-panel/split-panel.element.ts index f7688b0081..06f5811f21 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/components/split-panel/split-panel.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/components/split-panel/split-panel.element.ts @@ -222,6 +222,24 @@ export class UmbSplitPanelElement extends LitElement { this.#connect(); } + #onKeydown(event: KeyboardEvent) { + if (event.key === 'ArrowLeft' || event.key === 'ArrowRight') { + const { width } = this.mainElement.getBoundingClientRect(); + const divider = this.dividerElement.getBoundingClientRect(); + + const dividerPos = divider.left - this.mainElement.getBoundingClientRect().left; + const percentageFromWidth = (dividerPos / width) * 100; + + const multiplier = event.shiftKey ? 10 : 1; + const step = 1 * multiplier * (event.key === 'ArrowLeft' ? -1 : 1); + + const newPercent = percentageFromWidth + step; + const toPixels = (newPercent / 100) * this.mainElement.getBoundingClientRect().width; + + this.#setPosition(toPixels); + } + } + render() { return html`