sp-split-view
NPM 1.7.0
View Storybook
Try it on Stackblitz
Overview
An sp-split-view
element displays its first two direct child elements side by side (horizontal) or stacked (vertical with vertical
attribute). The component automatically distributes the available space between the two panels. When the resizable
attribute is added, users can drag the splitter or use keyboard controls to adjust the panel sizes.
Usage
yarn add @spectrum-web-components/split-view
Import the side effectful registration of <sp-split-view>
via:
import '@spectrum-web-components/split-view/sp-split-view.js';
When looking to leverage the SplitView
base class as a type and/or for extension purposes, do so via:
import { SplitView } from '@spectrum-web-components/split-view';
Options
Collapsible
Use the collapsible
attribute to allow the user to collapse the split view. The collapsible
attribute requires the resizable
attribute to be set. When collapsible
is set, primary and secondary min and max sizes are ignored.
Resizable
Use the resizable
attribute to allow the user to resize the split view. When resizable
is set, it is recommended that you set preferred primary and secondary min and max sizes. If primary and/or secondary sizes, the resize
behavior will resemble the collapsible
behavior.
Label
Use the label
attribute to set the aria-label
on the splitter
element.
Primary Size
primary-size
sets starting size of the primary pane. It can be a real pixel number|string, percentage or "auto". For example: "100", "120px", "75%" or "auto" are valid values
Primary Min/Max
primary-min
is the minimum size of the primary pane, while primary-max
is the maximum size of the primary pane.
Secondary Min/Max
secondary-min
is the minimum size of the secondary pane, while secondary-max
is the maximum size of the secondary pane.
Splitter Position
splitter-pos
is the current splitter position of the split view.
Variants
Horizontal
Horizontal is the default orientation for the split view and does not require an attribute to be set.
<sp-split-view> <div>Left panel</div> <div>Right panel</div> </sp-split-view>
<sp-split-view resizable primary-min="50" secondary-min="50" primary-size="100" label="Resize the horizontal panels" > <div> <h1>Left panel</h1> <p> Lorem Ipsum is simply dummy text of the printing and typesetting industry. </p> </div> <div> <h2>Right panel</h2> <p> It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout. </p> </div> </sp-split-view>
<sp-split-view resizable collapsible label="Resize the horizontal collapsible panels" > <div> <h1>Left panel</h1> <p> Lorem Ipsum is simply dummy text of the printing and typesetting industry. </p> </div> <div> <h2>Right panel</h2> <p> It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout. </p> </div> </sp-split-view>
Vertical
Vertical split view requires the vertical
attribute to be set.
<sp-split-view vertical> <div>Top panel</div> <div>Bottom panel</div> </sp-split-view>
<sp-split-view vertical resizable primary-min="50" primary-max="150" secondary-min="50" label="Resize the vertical panels" > <div> <h1>Top panel</h1> <p> Lorem Ipsum is simply dummy text of the printing and typesetting industry. </p> </div> <div> <h2>Bottom panel</h2> <p> It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout. </p> </div> </sp-split-view>
<sp-split-view vertical resizable collapsible style="height: 300px;" label="Resize the vertical collapsible panels" > <div> <h1>Top panel</h1> <p> Lorem Ipsum is simply dummy text of the printing and typesetting industry. </p> </div> <div> <h2>Bottom panel</h2> <p> It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout. </p> </div> </sp-split-view>
Multiple Levels
<sp-split-view resizable primary-min="50" primary-max="200" secondary-min="50" style="height: 400px; width: 600px;" > <div> <h1>First panel - Level 1</h1> <p> Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. </p> </div> <div> <h2>Second panel - Level 1</h2> <sp-split-view vertical resizable primary-min="50" primary-size="100" secondary-min="50" style="height: 300px;" > <div> <h3>First panel - Level 2</h3> <p> Lorem Ipsum is simply dummy text of the printing and typesetting industry. </p> </div> <div> <h4>Second panel - Level 2</h4> <p> It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout. </p> </div> </sp-split-view> </div> </sp-split-view>
Accessibility
The label
attribute is used to set the aria-label
on the splitter
element. By default, the splitter
element within an <sp-split-view>
is given the label "Resize the panels". A label is required to surface the element and signal the interaction correctly to screen readers. You can customize or internationalize this by setting the label
attribute.
role
The splitter element is given the role separator
to indicate that it is a divider separating sections of content in the split view panels.
aria-controls
The aria-controls
attribute is set to the id of the controlled element. This is used to indicate that the splitter is controlling the size of the primary and secondary panes.
aria-orientation
aria-orientation
is set to horizontal
or vertical
to indicate the orientation of the split view.
aria-valuenow
aria-valuenow
is used to indicate the current size of the primary pane as a percentage of the total size of the split view.
Keyboard navigation
The splitter has an explicit tabindex
of 0
when resizable
is set. This allows the splitter to be focused and and navigable using the keyboard. The arrow keys can be used to move the splitter left and right or up and down depending on the orientation of the split view.
API
Attributes and Properties
collapsible
collapsible
boolean
false
label
label
string | undefined
primaryMax
primary-max
DEFAULT_MAX_SIZE
primaryMin
primary-min
number
0
primarySize
primary-size
number | number
primarySize
primarySize
number | number
resizable
resizable
boolean
false
secondaryMax
secondary-max
DEFAULT_MAX_SIZE
secondaryMin
secondary-min
number
0
splitterPos
splitter-pos
number | undefined
vertical
vertical
boolean
false
Slots
Two
Events
change
Event
Announces the new position of the splitter
Changelog
Patch Changes
-
#5428 Thanks94dd388
@Rajdeepc ! - Added @spectrum-web-components/shared dependency in splitview since it uses ranDomId from the shared package -
Updated dependencies []:
- @spectrum-web-components/base@1.7.0
- @spectrum-web-components/shared@1.7.0
1.6.0
Patch Changes
- Updated dependencies []:
- @spectrum-web-components/base@1.6.0
1.5.0
Patch Changes
-
#5271 Thanks165a904
@renovate ! - Remove unnecessary system theme references to reduce complexity for components that don't need the additional mapping layer. -
Updated dependencies []:
- @spectrum-web-components/base@1.5.0
1.4.0
Patch Changes
- Updated dependencies []:
- @spectrum-web-components/base@1.4.0
1.3.0
Patch Changes
- Updated dependencies []:
- @spectrum-web-components/base@1.3.0
All notable changes to this project will be documented in this file. See
1.2.0 (2025-02-27)
Note: Version bump only for package @spectrum-web-components/split-view
1.1.2 (2025-02-12)
Note: Version bump only for package @spectrum-web-components/split-view
1.1.1 (2025-01-29)
Note: Version bump only for package @spectrum-web-components/split-view
1.1.0 (2025-01-29)
Bug Fixes
- lock prerelease versions for Spectrum CSS (
#5014 ) (8aa7734 )
1.0.1 (2024-11-11)
Note: Version bump only for package @spectrum-web-components/split-view
1.0.0 (2024-10-31)
Note: Version bump only for package @spectrum-web-components/split-view
0.49.0 (2024-10-15)
Note: Version bump only for package @spectrum-web-components/split-view
0.48.1 (2024-10-01)
Note: Version bump only for package @spectrum-web-components/split-view
0.48.0 (2024-09-17)
Note: Version bump only for package @spectrum-web-components/split-view
0.47.2 (2024-09-03)
Note: Version bump only for package @spectrum-web-components/split-view
0.47.1 (2024-08-27)
Note: Version bump only for package @spectrum-web-components/split-view
0.47.0 (2024-08-20)
Note: Version bump only for package @spectrum-web-components/split-view
0.46.0 (2024-08-08)
Note: Version bump only for package @spectrum-web-components/split-view
0.45.0 (2024-07-30)
Note: Version bump only for package @spectrum-web-components/split-view
0.44.0 (2024-07-15)
Note: Version bump only for package @spectrum-web-components/split-view
0.43.0 (2024-06-11)
Note: Version bump only for package @spectrum-web-components/split-view
0.42.5 (2024-05-24)
Note: Version bump only for package @spectrum-web-components/split-view
0.42.4 (2024-05-14)
Note: Version bump only for package @spectrum-web-components/split-view
0.42.3 (2024-05-01)
Note: Version bump only for package @spectrum-web-components/split-view
0.42.2 (2024-04-03)
Note: Version bump only for package @spectrum-web-components/split-view
0.42.1 (2024-04-02)
Note: Version bump only for package @spectrum-web-components/split-view
0.42.0 (2024-03-19)
Bug Fixes
- allowing split view to have a custom aria label (
#4155 ) (d9abed7 )
Features
- asset: use core tokens (
99e76f4 )
0.41.2 (2024-03-05)
Note: Version bump only for package @spectrum-web-components/split-view
0.41.1 (2024-02-22)
Note: Version bump only for package @spectrum-web-components/split-view
0.41.0 (2024-02-13)
Bug Fixes
- support generating random IDs outside of secure contexts (
485a67c )
0.40.5 (2024-02-05)
Note: Version bump only for package @spectrum-web-components/split-view
0.40.4 (2024-01-29)
Note: Version bump only for package @spectrum-web-components/split-view
0.40.3 (2024-01-11)
Note: Version bump only for package @spectrum-web-components/split-view
0.40.2 (2023-12-18)
Note: Version bump only for package @spectrum-web-components/split-view
0.40.1 (2023-12-05)
Note: Version bump only for package @spectrum-web-components/split-view
0.40.0 (2023-11-16)
Bug Fixes
- split-view: expand accessible attribute usage and HCM delivery (
cb7c71f )
0.39.4 (2023-11-02)
Note: Version bump only for package @spectrum-web-components/split-view
0.39.3 (2023-10-18)
Note: Version bump only for package @spectrum-web-components/split-view
0.39.2 (2023-10-13)
Note: Version bump only for package @spectrum-web-components/split-view
0.39.1 (2023-10-06)
Note: Version bump only for package @spectrum-web-components/split-view
0.39.0 (2023-09-25)
Note: Version bump only for package @spectrum-web-components/split-view
0.38.0 (2023-09-05)
Note: Version bump only for package @spectrum-web-components/split-view
0.37.0 (2023-08-18)
Note: Version bump only for package @spectrum-web-components/split-view
0.36.0 (2023-08-18)
Note: Version bump only for package @spectrum-web-components/split-view
0.35.0 (2023-07-31)
Note: Version bump only for package @spectrum-web-components/split-view
0.34.0 (2023-07-11)
Note: Version bump only for package @spectrum-web-components/split-view
0.33.2 (2023-06-14)
Note: Version bump only for package @spectrum-web-components/split-view
0.33.0 (2023-06-08)
Note: Version bump only for package @spectrum-web-components/split-view
0.32.0 (2023-06-01)
Bug Fixes
- base: ensure streaming listener "streams" on the animation frame (
1478db1 )
0.31.0 (2023-05-17)
Note: Version bump only for package @spectrum-web-components/split-view
0.30.0 (2023-05-03)
Bug Fixes
- adapt and improve css (
649eeed ) - adapt tests (
88a2ff7 ) - add
@slot description (03019d6 ) - cleaning up spectrum-config (
0fde625 ) - correct
@element jsDoc listing across library (c97a632 ) - correct calculation of height when using primary-size='auto' (
0ff67c0 ) - correct viewSize calc and test (
2befdd5 ) - improve css class handling, %-test and increase base dependency (
2f2c28d ) - improve css, simplify attributes & properties (
6ddd47c ) - polishing (
d112875 ) - split-view: end drag on pointerleave (
85e5258 ) - split-view: prevent touch-action on handle for delivery in mobile (
b68c497 ) - split-view: redraw when primary-size change (
665d238 )
Features
- adopt DNA@7 base Spectrum CSS (
e08cafd ) - include all Dev Mode files in side effects (
f70817c ) - setup SplitView component from rebase main (
32f3272 ) - shared pkg versions, devmode define warning, registry-conflicts docs (
6e49565 ) - update lit-* dependencies, wip (
377f3c8 ) - use latest exports specification (
a7ecf4b )
Reverts
- version update (
ab58bf9 )
0.5.10 (2023-04-24)
Note: Version bump only for package @spectrum-web-components/split-view
0.5.9 (2023-04-05)
Note: Version bump only for package @spectrum-web-components/split-view
0.5.8 (2023-03-22)
Note: Version bump only for package @spectrum-web-components/split-view
0.5.7 (2023-02-08)
Note: Version bump only for package @spectrum-web-components/split-view
0.5.6 (2023-01-23)
Note: Version bump only for package @spectrum-web-components/split-view
0.5.5 (2023-01-09)
Note: Version bump only for package @spectrum-web-components/split-view
0.5.4 (2022-12-08)
Note: Version bump only for package @spectrum-web-components/split-view
0.5.3 (2022-11-21)
Note: Version bump only for package @spectrum-web-components/split-view
0.5.2 (2022-11-14)
Note: Version bump only for package @spectrum-web-components/split-view
0.5.1 (2022-10-28)
Bug Fixes
- split-view: prevent touch-action on handle for delivery in mobile (
b68c497 )
0.5.0 (2022-08-09)
Features
- include all Dev Mode files in side effects (
f70817c )
0.4.11 (2022-08-04)
Note: Version bump only for package @spectrum-web-components/split-view
0.4.10 (2022-07-18)
Note: Version bump only for package @spectrum-web-components/split-view
0.4.9 (2022-06-29)
Note: Version bump only for package @spectrum-web-components/split-view
0.4.8 (2022-06-07)
Note: Version bump only for package @spectrum-web-components/split-view
0.4.7 (2022-05-12)
Note: Version bump only for package @spectrum-web-components/split-view
0.4.6 (2022-04-21)
Note: Version bump only for package @spectrum-web-components/split-view
0.4.5 (2022-03-08)
Note: Version bump only for package @spectrum-web-components/split-view
0.4.4 (2022-03-04)
Note: Version bump only for package @spectrum-web-components/split-view
0.4.3 (2022-02-22)
Bug Fixes
- split-view: end drag on pointerleave (
85e5258 )
0.4.2 (2022-01-26)
Note: Version bump only for package @spectrum-web-components/split-view
0.4.1 (2021-12-13)
Note: Version bump only for package @spectrum-web-components/split-view
0.4.0 (2021-11-08)
Features
- update lit-* dependencies, wip (
377f3c8 )
0.3.1 (2021-11-08)
Note: Version bump only for package @spectrum-web-components/split-view
0.3.0 (2021-11-02)
Features
- adopt DNA@7 base Spectrum CSS (
e08cafd )
0.2.11 (2021-10-12)
Note: Version bump only for package @spectrum-web-components/split-view
0.2.10 (2021-09-20)
Note: Version bump only for package @spectrum-web-components/split-view
0.2.9 (2021-08-24)
Bug Fixes
- correct
@element jsDoc listing across library (c97a632 )
0.2.8 (2021-07-22)
Bug Fixes
- split-view: redraw when primary-size change (
665d238 )
0.2.7 (2021-06-16)
Note: Version bump only for package @spectrum-web-components/split-view
0.2.6 (2021-06-07)
Note: Version bump only for package @spectrum-web-components/split-view
0.2.5 (2021-05-12)
Note: Version bump only for package @spectrum-web-components/split-view
0.2.4 (2021-04-09)
Note: Version bump only for package @spectrum-web-components/split-view
0.2.3 (2021-03-29)
Note: Version bump only for package @spectrum-web-components/split-view
0.2.2 (2021-03-22)
Note: Version bump only for package @spectrum-web-components/split-view
0.2.1 (2021-03-05)
Note: Version bump only for package @spectrum-web-components/split-view
0.2.0 (2021-03-04)
Bug Fixes
- correct calculation of height when using primary-size='auto' (
0ff67c0 )
Features
- use latest exports specification (
a7ecf4b )
Reverts
- version update (
ab58bf9 )
0.1.0 (2021-02-19)
Bug Fixes
- adapt and improve css (
649eeed ) - adapt tests (
88a2ff7 ) - add
@slot description (03019d6 ) - cleaning up spectrum-config (
0fde625 ) - correct viewSize calc and test (
2befdd5 ) - improve css class handling, %-test and increase base dependency (
2f2c28d ) - improve css, simplify attributes & properties (
6ddd47c ) - polishing (
d112875 )
Features
- setup SplitView component from rebase main (
32f3272 )