Skip to content

Commit 8fbfe6e

Browse files
committed
refactor(splitter): update theme with bigger hitbox area
1 parent 7a7e551 commit 8fbfe6e

File tree

1 file changed

+88
-2
lines changed

1 file changed

+88
-2
lines changed

projects/igniteui-angular/src/lib/core/styles/components/splitter/_splitter-theme.scss

Lines changed: 88 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,19 +52,68 @@
5252
@mixin igx-splitter($theme) {
5353
@include igx-root-css-vars($theme);
5454
$splitter-color: --var($theme, 'bar-color');
55+
$hitbox-size: 4px;
56+
$debug-hitbox: false;
57+
$hitbox-debug-color: rgba(coral, .24);
58+
59+
%handle-area {
60+
position: absolute;
61+
content: '';
62+
width: 100%;
63+
height: $hitbox-size;
64+
background: if($debug-hitbox, $hitbox-debug-color, transparent);
65+
}
66+
67+
%handle-area--vertical {
68+
width: $hitbox-size;
69+
height: 100%;
70+
}
5571

5672
%igx-splitter-bar {
73+
position: relative;
5774
display: flex;
5875
flex-grow: 1;
5976
justify-content: center;
6077
align-items: center;
6178
background: $splitter-color;
6279
border: 1px solid $splitter-color;
80+
cursor: row-resize;
81+
z-index: 99;
82+
opacity: .68;
83+
transition: opacity .15s $ease-out-quad !important;
84+
85+
&::before {
86+
@extend %handle-area;
87+
top: 100%;
88+
}
89+
90+
&::after {
91+
@extend %handle-area;
92+
bottom: 100%;
93+
}
94+
95+
&:hover {
96+
transition: all .25s ease-out;
97+
opacity: 1;
98+
}
6399
}
64100

65101
%igx-splitter-bar--vertical {
66102
flex-direction: column;
67103
height: 100%;
104+
cursor: col-resize;
105+
106+
&::before {
107+
@extend %handle-area--vertical;
108+
top: 0;
109+
right: 100%;
110+
}
111+
112+
&::after {
113+
@extend %handle-area--vertical;
114+
top: 0;
115+
left: 100%;
116+
}
68117
}
69118

70119
%igx-splitter-handle {
@@ -73,48 +122,85 @@
73122
}
74123

75124
%igx-splitter-handle--horizontal {
76-
cursor: row-resize;
77125
width: 25%;
78126
height: --var($theme, 'size');
79127
margin: 0 rem(48px);
80128
}
81129

82130
%igx-splitter-handle--vertical {
83-
cursor: col-resize;
84131
width: --var($theme, 'size');
85132
height: 25%;
86133
margin: rem(48px) 0;
87134
}
88135

136+
%igx-splitter-hitbox {
137+
position: absolute;
138+
content: '';
139+
background: if($debug-hitbox, $hitbox-debug-color, transparent);
140+
}
141+
89142
%igx-splitter-expander {
90143
position: relative;
91144
width: 0;
92145
height: 0;
93146
border-right: --var($theme, 'size') solid transparent;
94147
border-left: --var($theme, 'size') solid transparent;
95148
cursor: pointer;
149+
z-index: 1;
96150
}
97151

98152
%igx-splitter-expander--start {
99153
border-bottom: --var($theme, 'size') solid --var($theme, 'expander-color');
154+
155+
&::before {
156+
@extend %igx-splitter-hitbox;
157+
top: calc(100% - #{map-get($theme, 'size')});
158+
left: calc(100% - #{map-get($theme, 'size') * 2});
159+
width: #{map-get($theme, 'size') * 4};
160+
height: #{map-get($theme, 'size') * 3};
161+
}
100162
}
101163

102164
%igx-splitter-expander--end {
103165
border-bottom: unset;
104166
border-top: --var($theme, 'size') solid --var($theme, 'expander-color');
167+
168+
&::before {
169+
@extend %igx-splitter-hitbox;
170+
top: calc(100% - #{map-get($theme, 'size') * 2});
171+
left: calc(100% - #{map-get($theme, 'size') * 2});
172+
width: #{map-get($theme, 'size') * 4};
173+
height: #{map-get($theme, 'size') * 3};
174+
}
105175
}
106176

107177
%igx-splitter-expander--start-vertical {
108178
border-top: --var($theme, 'size') solid transparent;
109179
border-right: --var($theme, 'size') solid --var($theme, 'expander-color');
110180
border-bottom: --var($theme, 'size') solid transparent;
111181
border-left: unset;
182+
183+
&::before {
184+
@extend %igx-splitter-hitbox;
185+
top: calc(100% - #{map-get($theme, 'size') * 2});
186+
left: calc(100% - #{map-get($theme, 'size')});
187+
width: #{map-get($theme, 'size') * 3};
188+
height: #{map-get($theme, 'size') * 4};
189+
}
112190
}
113191

114192
%igx-splitter-expander--end-vertical {
115193
border-top: --var($theme, 'size') solid transparent;
116194
border-right: unset;
117195
border-bottom: --var($theme, 'size') solid transparent;
118196
border-left: --var($theme, 'size') solid --var($theme, 'expander-color');
197+
198+
&::before {
199+
@extend %igx-splitter-hitbox;
200+
left: calc(100% - #{map-get($theme, 'size') * 2});
201+
top: calc(100% - #{map-get($theme, 'size') * 2});
202+
height: #{map-get($theme, 'size') * 4};
203+
width: #{map-get($theme, 'size') * 3};
204+
}
119205
}
120206
}

0 commit comments

Comments
 (0)