Files
ThreadNet-Web/packages/shared-components/src/resize/index.ts
T
99e6ede9f1 Implement collapsible panels for the new room list (#32742)
* Add `react-resizable-panels` library

* Implement a custom SeparatorView

* Add a `LeftResizablePanelView`

* Add a custom `GroupView`

* Export everything from shared-components

* Make it possible to track width/collapse state through settings

* Add a view model to drive the views

* Render views without disrupting the old room list

* Fix lint error

* Disable user interaction on collapsed panel

* Prevent widgets fron hijacking pointer events

* Expand to full width on separator click

* Separator should be shown when focused via keyboard

* Update tests

* Use data-attribute for hover

* Write stories for SeperatorView

* Write vite tests for SeparatorView

* Write tests for LeftResizablePanelView

* More tests

* Fix lint errors

* Fix flakey border on the roomlst

* Fix storybook axe violation

* Update snapshots

* Fix playwright tests

* Fix sonarcloud issues

* Use translated string

* Add better js-doc comments

* Rename `ResizerSnapshot` to `ResizerViewSnapshot`

* Externalize react-resizable-panels

* Link figma designs to stories

* Write playwright tests

* Update screenshots

* Fix lint errors

* Update more screenshots

* Update more screenshots

* Fix flaky toast test

* Update apps/web/playwright/e2e/crypto/toasts.spec.ts

Co-authored-by: Andy Balaam <andy.balaam@matrix.org>

* Fix indentation

---------

Co-authored-by: Andy Balaam <andy.balaam@matrix.org>
2026-03-23 13:33:32 +00:00

47 lines
1.2 KiB
TypeScript

/*
* Copyright 2026 Element Creations Ltd.
*
* SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only OR LicenseRef-Element-Commercial
* Please see LICENSE files in the repository root for full details.
*/
/**
* This is the id given to the resizable container that holds
* the left panel contents.
*/
export const LEFT_PANEL_ID = "left-panel";
export * from "./group/GroupView";
export * from "./separator/SeparatorView";
export * from "./panel/LeftResizablePanelView";
/**
* Common snapshot for GroupView, SeparatorView and LeftResizablePanelView.
*/
export interface ResizerViewSnapshot {
/**
* Whether the left panel is collapsed or not.
*/
isCollapsed: boolean;
/**
* This is the initial size of the panel if available; should be interpreted as percentage.
*/
initialSize?: number;
/**
* Whether the separator is currently focused by navigating
* to it using keyboard input.
*/
isFocusedViaKeyboard: boolean;
}
/**
* Export relevant parts of the underlying library.
*/
export {
Group as ResizableGroup,
Panel,
Separator,
type PanelSize,
type PanelImperativeHandle,
} from "react-resizable-panels";