@uiw/react-split
Version:
A piece of view can be divided into areas where the width or height can be adjusted by dragging.
187 lines (186 loc) • 4.51 kB
CSS
.w-split {
height: 100%;
display: flex;
flex-direction: row;
}
.w-split-bar {
z-index: 10;
position: relative;
justify-content: center;
display: flex;
background: #f8f8f9;
-webkit-user-select: none;
user-select: none;
}
.w-split-bar::before,
.w-split-bar::after {
content: '';
display: block;
}
.w-split-bar.disable {
pointer-events: none;
cursor: not-allowed ;
}
.w-split-bar:hover:not(.disable) {
transition: background-color 0.3s;
background: #ecf7ff;
}
.w-split.dragging .w-split-pane {
position: relative;
}
.w-split.dragging .w-split-pane::before {
content: '';
display: block;
position: absolute;
height: 100%;
width: 100%;
z-index: 10;
}
.w-split > .w-split-pane {
-webkit-transform: none;
transform: none;
}
.w-split:not(.dragging) > .w-split-pane {
transition: all 0.3s;
}
.w-split-horizontal > .w-split-bar {
cursor: col-resize;
width: 5px;
flex-direction: column;
box-shadow: inset 1px 0 0 0 #d5d5d5, 1px 0 0 0 #d5d5d5;
}
.w-split-horizontal > .w-split-bar::before,
.w-split-horizontal > .w-split-bar::after {
height: 3px;
width: 100%;
box-shadow: inset 0 1px 0 0 #d5d5d5, 0 1px 0 0 #d5d5d5;
}
.w-split-horizontal > .w-split-bar::before {
margin-top: -1px;
}
.w-split-horizontal > .w-split-bar::after {
margin-top: 3px;
}
.w-split-horizontal > .w-split-bar.disable {
box-shadow: inset 1px 0 0 0 #e6e6e6, 1px 0 0 0 #eaeaea ;
}
.w-split-vertical {
flex-direction: column;
}
.w-split-vertical > .w-split-bar {
cursor: row-resize;
width: 100%;
height: 5px;
align-items: center;
flex-direction: row;
box-shadow: inset 0 1px 0 0 #d5d5d5, 0 1px 0 0 #d5d5d5;
}
.w-split-vertical > .w-split-bar.disable {
box-shadow: inset 0 1px 0 0 #e6e6e6, 0 1px 0 0 #eaeaea ;
}
.w-split-vertical > .w-split-bar::before,
.w-split-vertical > .w-split-bar::after {
height: 100%;
width: 3px;
box-shadow: inset 1px 0 0 0 #d5d5d5, 1px 0 0 0 #d5d5d5;
}
.w-split-vertical > .w-split-bar::before {
margin-left: -1px;
}
.w-split-vertical > .w-split-bar::after {
margin-left: 3px;
}
.w-split-large-bar div {
position: absolute;
left: 0;
right: 0;
bottom: 0;
top: 0;
}
.w-split-vertical > .w-split-line-bar:hover::before,
.w-split-horizontal > .w-split-line-bar:hover::before {
border-color: #008EF0;
}
.w-split-vertical > .w-split-line-bar {
height: 1px;
}
.w-split-vertical > .w-split-line-bar div {
cursor: row-resize;
width: 100%;
height: 8px;
margin-top: -2px;
margin-bottom: -2px;
}
.w-split-vertical > .w-split-line-bar div:hover,
.w-split-vertical > .w-split-line-bar div:active,
.w-split-vertical > .w-split-line-bar div:focus {
margin-top: -6px;
margin-bottom: -6px;
height: 6px;
}
.w-split-vertical > .w-split-line-bar div:hover::after,
.w-split-vertical > .w-split-line-bar div:active::after,
.w-split-vertical > .w-split-line-bar div:focus::after {
background-color: #008EF0;
}
.w-split-vertical > .w-split-line-bar div::after {
height: 1px;
width: 100%;
}
.w-split-horizontal > .w-split-line-bar {
width: 1px;
}
.w-split-horizontal > .w-split-line-bar div {
cursor: col-resize;
height: 100%;
width: 8px;
margin-left: -2px;
margin-right: -2px;
}
.w-split-horizontal > .w-split-line-bar div:hover,
.w-split-horizontal > .w-split-line-bar div:active,
.w-split-horizontal > .w-split-line-bar div:focus {
margin-left: -6px;
margin-right: -6px;
width: 6px;
}
.w-split-horizontal > .w-split-line-bar div:hover::after,
.w-split-horizontal > .w-split-line-bar div:active::after,
.w-split-horizontal > .w-split-line-bar div:focus::after {
background-color: #008EF0;
}
.w-split-horizontal > .w-split-line-bar div::after {
width: 1px;
height: 100%;
}
.w-split-vertical > .w-split-line-bar,
.w-split-horizontal > .w-split-line-bar {
flex-direction: inherit;
}
.w-split-vertical > .w-split-line-bar::before,
.w-split-horizontal > .w-split-line-bar::before {
display: none;
}
.w-split-vertical > .w-split-line-bar div,
.w-split-horizontal > .w-split-line-bar div {
position: relative;
display: flex;
align-items: center;
justify-content: center;
}
.w-split-vertical > .w-split-line-bar div::after,
.w-split-horizontal > .w-split-line-bar div::after {
content: '';
display: block;
background-color: #d5d5d5;
}
.w-split-line-bar {
box-shadow: inset 0 0 0 0 ;
background: transparent;
}
.w-split-line-bar::before {
box-shadow: inset 0 0 0 0 ;
}
.w-split-line-bar::after {
display: none;
}