Skip to content

Commit 0740de8

Browse files
authored
fix(sidebar,flyout,modal): missing identical features and fixes
flyout features (all adopted from modal): - moved many values into LESS variables - a11y: aria labels, tab focus trap, close icon focussable and activateable via space key - autofocus setting,restoreFocus setting - fetch esc key to close flyout by new via keyBoardShortcuts setting - basic actions, basic header - left actions - center aligned header, content, actions - blurring setting flyout fixes: - smooth fadeout of dimmer (was hard removing the dimmer without any transition on close) - temp flyouts have to be put before pusher in dom to avoid auto pusher wrap when not necessary Sidebar fixes: - smooth fadeout of dimmer (was hard removing the dimmer without any transition on close) Sidebar features (adopted from modal): - blurring setting modal fixes: - basic action on inverted dimmer
1 parent 01b81c0 commit 0740de8

File tree

9 files changed

+440
-111
lines changed

9 files changed

+440
-111
lines changed

src/definitions/modules/flyout.js

Lines changed: 216 additions & 30 deletions
Large diffs are not rendered by default.

src/definitions/modules/flyout.less

Lines changed: 114 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -58,35 +58,36 @@
5858
.ui.flyout > .close {
5959
cursor: pointer;
6060
position: absolute;
61-
top: 1.25rem;
62-
right: 1.5rem;
61+
top: @closeTop;
62+
right: @closeRight;
6363
z-index: 1;
64-
opacity: 0.8;
65-
font-size: 1.25em;
66-
color: rgba(0, 0, 0, 0.85);
67-
width: 2.25rem;
68-
height: 2.25rem;
69-
padding: 0;
70-
margin: 0 0 0 0.25rem;
64+
opacity: @closeOpacity;
65+
font-size: @closeSize;
66+
color: @closeColor;
67+
width: @closeHitbox;
68+
height: @closeHitbox;
69+
padding: @closePadding;
70+
margin: @closeMargin;
7171
text-align: right;
7272
}
7373

74+
.ui.flyout > .close:focus,
7475
.ui.flyout > .close:hover {
7576
opacity: 1;
77+
outline: none;
7678
}
7779

7880
/*--------------
7981
Header
8082
---------------*/
8183
.ui.flyout > .header {
8284
display: block;
83-
background: #FFFFFF;
84-
margin: 0;
85-
padding: 1.25rem 1.5rem;
86-
-webkit-box-shadow: none;
87-
box-shadow: none;
88-
color: rgba(0, 0, 0, 0.85);
89-
border-bottom: 1px solid rgba(34, 36, 38, 0.15);
85+
background: @headerBackground;
86+
margin: @headerMargin;
87+
padding: @headerPadding;
88+
box-shadow: @headerBoxShadow;
89+
color: @headerColor;
90+
border-bottom: @headerBorder;
9091
}
9192

9293
/*--------------
@@ -95,38 +96,74 @@
9596
.ui.flyout > .content {
9697
display: block;
9798
width: 100%;
98-
font-size: 1em;
99-
line-height: 1.4;
100-
padding: 1.5rem;
101-
background: #FFFFFF;
99+
font-size: @contentFontSize;
100+
line-height: @contentLineHeight;
101+
padding: @contentPadding;
102+
background: @contentBackground;
102103
}
103104
.ui.flyout.left > .content,
104105
.ui.flyout.right > .content {
105-
min-height: calc(100vh - 9.1rem);
106+
min-height: @contentMinHeight;
106107
}
107108

108109
.ui.flyout.left > .scrolling.content,
109110
.ui.flyout.right > .scrolling.content{
110-
max-height: calc(100vh - 9.1rem);
111+
max-height: @scrollingContentMaxHeight;
111112
overflow: auto;
112113
}
113114

114115
.ui.flyout.top > .scrolling.content,
115116
.ui.flyout.bottom > .scrolling.content{
116-
max-height: calc(80vh - 9.1rem);
117+
max-height: @scrollingContentMaxHeightTopBottom;
117118
overflow: auto;
118119
}
119120

120-
/*--------------
121-
Actions
122-
---------------*/
123-
.ui.flyout > .actions {
124-
padding: 1rem 1rem;
125-
border-top: 1px solid rgba(34, 36, 38, 0.15);
126-
text-align: right;
121+
& when (@variationFlyoutActions) {
122+
/*--------------
123+
Actions
124+
---------------*/
125+
.ui.flyout > .actions {
126+
background: @actionBackground;
127+
padding: @actionPadding;
128+
border-top: @actionBorder;
129+
text-align: @actionAlign;
130+
}
131+
.ui.flyout .actions > .button:not(.fluid) {
132+
margin-left: @buttonDistance;
133+
}
134+
& when (@variationFlyoutBasic) {
135+
.ui.ui.flyout > .basic.actions {
136+
border-top: none;
137+
}
138+
}
139+
& when (@variationFlyoutLeftActions) {
140+
.ui.flyout > .left.actions {
141+
text-align: left;
142+
& > .button:not(.fluid) {
143+
margin-left: @buttonLeftDistance;
144+
margin-right: @buttonLeftDistance;
145+
}
146+
}
147+
}
127148
}
128-
.ui.flyout .actions > .button:not(.fluid) {
129-
margin-left: 0.75em;
149+
& when (@variationFlyoutCentered) {
150+
.ui.flyout > .centered,
151+
.ui.flyout > .center.aligned {
152+
text-align: center;
153+
&.actions > .button:not(.fluid) when (@variationFlyoutActions){
154+
margin-left: @buttonCenteredDistance;
155+
margin-right: @buttonCenteredDistance;
156+
}
157+
}
158+
}
159+
& when (@variationFlyoutBasic) {
160+
.ui.ui.flyout > .basic.header,
161+
.ui.ui.flyout > .basic.actions {
162+
background-color: transparent;
163+
}
164+
.ui.flyout > .basic.header {
165+
border-bottom: none;
166+
}
130167
}
131168

132169
/*--------------
@@ -199,7 +236,7 @@ body.pushable {
199236
}
200237
.pushable:not(body) > .ui.flyout,
201238
.pushable:not(body) > .fixed,
202-
.pushable:not(body) > .pusher:after {
239+
.pushable:not(body) > .pusher::after {
203240
position: absolute;
204241
}
205242

@@ -224,13 +261,15 @@ body.pushable {
224261
.pushable > .pusher {
225262
position: relative;
226263
backface-visibility: hidden;
227-
overflow: hidden;
228264
min-height: 100%;
229265
transition: transform @duration @easing;
230266
z-index: @middleLayer;
231267

232268
/* Pusher should inherit background from context */
233269
background: inherit;
270+
&:not(.overflowing) {
271+
overflow: hidden;
272+
}
234273
}
235274

236275
body.pushable > .pusher {
@@ -241,7 +280,7 @@ body.pushable > .pusher {
241280
Dimmer
242281
---------------*/
243282

244-
.pushable > .pusher:after {
283+
.pushable > .pusher::after {
245284
position: fixed;
246285
top: 0;
247286
right: 0;
@@ -270,12 +309,21 @@ body.pushable > .pusher {
270309
Dimmed
271310
---------------*/
272311

273-
.pushable > .pusher.dimmed:after {
312+
.pushable > .pusher.dimmed::after {
274313
width: 100% !important;
275314
height: 100% !important;
276315
opacity: 1 !important;
277316
}
278-
317+
& when (@variationFlyoutBlurring) {
318+
.pushable > .pusher.dimmed.blurring:not(.closing)::after {
319+
background: @blurredBackgroundColor;
320+
-webkit-backdrop-filter: @blurredEndFilter;
321+
backdrop-filter: @blurredEndFilter;
322+
}
323+
}
324+
.pushable > .pusher.closing.dimmed::after {
325+
opacity: 0 !important;
326+
}
279327
/*--------------
280328
Animating
281329
---------------*/
@@ -343,30 +391,28 @@ body.pushable > .pusher {
343391
}
344392
}
345393

346-
/*--------------
347-
iOS
348-
---------------*/
349-
350-
/*--------------
351-
Inverted
352-
---------------*/
353-
.ui.flyout.inverted {
354-
background: rgba(0, 0, 0, 0.9);
355-
}
394+
& when (@variationFlyoutInverted) {
395+
/*--------------
396+
Inverted
397+
---------------*/
398+
.ui.flyout.inverted {
399+
background: @invertedBackground;
400+
}
356401

357-
.ui.flyout.inverted > .close {
358-
color: #FFFFFF;
359-
}
402+
.ui.flyout.inverted > .close {
403+
color: @invertedCloseColor;
404+
}
360405

361-
.ui.flyout.inverted > .header,
362-
.ui.flyout.inverted > .content {
363-
background: rgba(0, 0, 0, 0.9);
364-
color: #FFFFFF;
365-
}
366-
.ui.flyout.inverted > .actions {
367-
background: #191A1B;
368-
border-top: 1px solid rgba(34, 36, 38, 0.85);
369-
color: #FFFFFF;
406+
.ui.flyout.inverted > .header,
407+
.ui.flyout.inverted > .content {
408+
background: @invertedBackground;
409+
color: @invertedHeaderColor;
410+
}
411+
.ui.flyout.inverted > .actions {
412+
background: @invertedActionBackground;
413+
border-top: @invertedActionBorder;
414+
color: @invertedActionColor;
415+
}
370416
}
371417

372418
/*******************************
@@ -379,6 +425,10 @@ body.pushable > .pusher {
379425

380426
/* Left / Right */
381427
& when (@variationFlyoutLeft) or (@variationFlyoutRight) {
428+
.ui.left.flyout,
429+
.ui.right.flyout {
430+
width: @width;
431+
}
382432
& when (@variationFlyoutThin) {
383433
.ui.thin.left.flyout,
384434
.ui.thin.right.flyout {
@@ -391,11 +441,6 @@ body.pushable > .pusher {
391441
}
392442
}
393443

394-
.ui.left.flyout,
395-
.ui.right.flyout {
396-
width: @width;
397-
}
398-
399444
& when (@variationFlyoutWide) {
400445
.ui.wide.left.flyout,
401446
.ui.wide.right.flyout {
@@ -462,10 +507,11 @@ body.pushable > .pusher {
462507
}
463508
}
464509

465-
/* Fullscreen */
466-
467-
.ui.fullscreen.flyout {
468-
width: 100%;
510+
& when (@variationFlyoutFullscreen) {
511+
/* Fullscreen */
512+
.ui.fullscreen.flyout {
513+
width: 100%;
514+
}
469515
}
470516

471517

src/definitions/modules/modal.less

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -181,7 +181,7 @@
181181
.ui.modal .actions > .button:not(.fluid) {
182182
margin-left: @buttonDistance;
183183
}
184-
.ui.modal > .basic.actions,
184+
.ui.ui.modal > .basic.actions,
185185
.ui.basic.modal > .actions {
186186
border-top: none;
187187
}
@@ -344,8 +344,8 @@
344344
box-shadow: none !important;
345345
color: @basicModalColor;
346346
}
347-
.ui.modal > .basic.header,
348-
.ui.modal > .basic.actions,
347+
.ui.ui.modal > .basic.header,
348+
.ui.ui.modal > .basic.actions,
349349
.ui.basic.modal > .header,
350350
.ui.basic.modal > .content,
351351
.ui.basic.modal > .actions {

0 commit comments

Comments
 (0)