Skip to content

Commit 1bcaa04

Browse files
committed
[bug] fix dropdown being cut off the bottom of page
1 parent 67d55a8 commit 1bcaa04

File tree

2 files changed

+42
-20
lines changed

2 files changed

+42
-20
lines changed

‎src/css/form.css‎

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1383,8 +1383,6 @@ input[type="range"]:disabled::-moz-range-progress{
13831383
border-radius:var(--theme-radius);
13841384
padding:0.5em0;
13851385
position: absolute;
1386-
top:calc(100%+calc(var(--layout-line-width) *2));
1387-
left:0;
13881386
width:100%;
13891387
min-width:12em;
13901388
box-shadow:var(--layout-shadow-large);
@@ -1393,6 +1391,22 @@ input[type="range"]:disabled::-moz-range-progress{
13931391
display: none;
13941392
}
13951393

1394+
.form-dropdown-menu-left{
1395+
right:0;
1396+
}
1397+
1398+
.form-dropdown-menu-right{
1399+
left:0;
1400+
}
1401+
1402+
.form-dropdown-menu-top{
1403+
bottom:calc(100%+calc(var(--layout-line-width) *2));
1404+
}
1405+
1406+
.form-dropdown-menu-bottom{
1407+
top:calc(100%+calc(var(--layout-line-width) *2));
1408+
}
1409+
13961410
.form-dropdown-open .form-dropdown-menu{
13971411
display: flex;
13981412
flex-direction: column;

‎src/js/dropdown.js‎

Lines changed: 26 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -78,39 +78,47 @@ var dropdown = (function(){
7878

7979
render.offset=function(){
8080
varformDropdownMenu=_currentFormDropdown.querySelector(".form-dropdown-menu");
81-
varbox=formDropdownMenu.getBoundingClientRect();
82-
if(box.left+box.width>window.innerWidth){
83-
formDropdownMenu.style.right="0";
84-
formDropdownMenu.style.left="inherit";
81+
if(state.get().dropdown){
82+
varbox=formDropdownMenu.getBoundingClientRect();
83+
if(box.right>window.innerWidth){
84+
helper.addClass(formDropdownMenu,"form-dropdown-menu-left");
85+
}else{
86+
helper.addClass(formDropdownMenu,"form-dropdown-menu-right");
87+
};
88+
if(box.bottom>window.innerHeight){
89+
helper.addClass(formDropdownMenu,"form-dropdown-menu-top");
90+
}else{
91+
helper.addClass(formDropdownMenu,"form-dropdown-menu-bottom");
92+
};
8593
}else{
86-
formDropdownMenu.removeAttribute("style");
94+
helper.removeClass(formDropdownMenu,"form-dropdown-menu-left");
95+
helper.removeClass(formDropdownMenu,"form-dropdown-menu-right");
96+
helper.removeClass(formDropdownMenu,"form-dropdown-menu-top");
97+
helper.removeClass(formDropdownMenu,"form-dropdown-menu-bottom");
8798
};
8899
};
89100

90101
render.toggle=function(){
91-
if(_currentFormDropdown.classList.contains("form-dropdown-open")){
92-
mod.close();
93-
helper.removeClass(_currentFormDropdown,"form-dropdown-open");
94-
documentEvent.remove();
95-
render.offset();
96-
_currentFormDropdown=null;
102+
if(state.get().dropdown){
103+
render.open();
97104
}else{
98-
mod.open();
99-
_currentFormDropdown=_currentFormDropdown;
100-
helper.addClass(_currentFormDropdown,"form-dropdown-open");
101-
documentEvent.add(_currentFormDropdown);
102-
render.offset();
105+
render.close();
103106
};
104107
};
105108

106109
render.close=function(){
107-
mod.close();
108110
helper.removeClass(_currentFormDropdown,"form-dropdown-open");
109-
documentEvent.remove();
110111
render.offset();
112+
documentEvent.remove();
111113
_currentFormDropdown=null;
112114
};
113115

116+
render.open=function(){
117+
helper.addClass(_currentFormDropdown,"form-dropdown-open");
118+
render.offset();
119+
documentEvent.add();
120+
};
121+
114122
varclose=function(){
115123
mod.close();
116124
render.close();

0 commit comments

Comments
(0)