Skip to content

Commit 39a31ed

Browse files
committed
fix #1023 MultiSelect DropDown appears in center and therefore detached from its inputfield if too little space available
1 parent 4f9ec14 commit 39a31ed

20 files changed

+148
-29
lines changed

domino-ui/src/main/java/org/dominokit/domino/ui/menu/Menu.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1719,6 +1719,8 @@ public Menu<V> close() {
17191719
parent.expand();
17201720
}
17211721
}
1722+
removeCssProperty(SpaceChecker.MAX_HEIGHT);
1723+
removeCssProperty(SpaceChecker.MAX_WIDTH);
17221724
}
17231725
return this;
17241726
}

domino-ui/src/main/java/org/dominokit/domino/ui/menu/direction/BestFitSideDropDirection.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
package org.dominokit.domino.ui.menu.direction;
1717

1818
import static org.dominokit.domino.ui.style.SpacingCss.dui_flex_col_reverse;
19+
import static org.dominokit.domino.ui.utils.Domino.elementOf;
1920

2021
import elemental2.dom.Element;
2122

@@ -45,7 +46,12 @@ public DropDirection position(DropDirectionContext context) {
4546
}
4647
}
4748

48-
return MIDDLE_SCREEN.position(context);
49+
elementOf(context.getSource()).setCssProperty(spaceChecker.getMaximumSideSpaceProperty());
50+
elementOf(context.getSource()).setCssProperty(spaceChecker.getMaximumVerticalSpaceProperty());
51+
52+
context.newSpaceChecker();
53+
54+
return position(context);
4955
}
5056

5157
/** {@inheritDoc} */

domino-ui/src/main/java/org/dominokit/domino/ui/menu/direction/BestMiddleDownUpDropDirection.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
package org.dominokit.domino.ui.menu.direction;
1717

1818
import static org.dominokit.domino.ui.style.SpacingCss.dui_flex_col_reverse;
19+
import static org.dominokit.domino.ui.utils.Domino.elementOf;
1920

2021
import elemental2.dom.Element;
2122

@@ -37,7 +38,11 @@ public DropDirection position(DropDirectionContext context) {
3738
} else if (spaceChecker.hasSpaceAbove()) {
3839
return TOP_MIDDLE.position(context);
3940
} else {
40-
return MIDDLE_SCREEN.position(context);
41+
elementOf(context.getSource()).setCssProperty(spaceChecker.getMaximumSideSpaceProperty());
42+
elementOf(context.getSource()).setCssProperty(spaceChecker.getMaximumVerticalSpaceProperty());
43+
context.newSpaceChecker();
44+
45+
return position(context);
4146
}
4247
}
4348

domino-ui/src/main/java/org/dominokit/domino/ui/menu/direction/BestMiddleSideDropDirection.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
package org.dominokit.domino.ui.menu.direction;
1717

1818
import static org.dominokit.domino.ui.style.SpacingCss.dui_flex_col_reverse;
19+
import static org.dominokit.domino.ui.utils.Domino.elementOf;
1920

2021
import elemental2.dom.Element;
2122

@@ -35,7 +36,11 @@ public DropDirection position(DropDirectionContext context) {
3536
} else if (spaceChecker.hasSpaceOnLeft()) {
3637
return LEFT_MIDDLE.position(context);
3738
} else {
38-
return MIDDLE_SCREEN.position(context);
39+
elementOf(context.getSource()).setCssProperty(spaceChecker.getMaximumSideSpaceProperty());
40+
elementOf(context.getSource()).setCssProperty(spaceChecker.getMaximumVerticalSpaceProperty());
41+
context.newSpaceChecker();
42+
43+
return position(context);
3944
}
4045
}
4146

domino-ui/src/main/java/org/dominokit/domino/ui/menu/direction/BestMiddleUpDownDropDirection.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
package org.dominokit.domino.ui.menu.direction;
1717

1818
import static org.dominokit.domino.ui.style.SpacingCss.dui_flex_col_reverse;
19+
import static org.dominokit.domino.ui.utils.Domino.elementOf;
1920

2021
import elemental2.dom.Element;
2122

@@ -36,7 +37,11 @@ public DropDirection position(DropDirectionContext context) {
3637
} else if (spaceChecker.hasSpaceBelow()) {
3738
return BOTTOM_MIDDLE.position(context);
3839
} else {
39-
return MIDDLE_SCREEN.position(context);
40+
elementOf(context.getSource()).setCssProperty(spaceChecker.getMaximumSideSpaceProperty());
41+
elementOf(context.getSource()).setCssProperty(spaceChecker.getMaximumVerticalSpaceProperty());
42+
context.newSpaceChecker();
43+
44+
return position(context);
4045
}
4146
}
4247

domino-ui/src/main/java/org/dominokit/domino/ui/menu/direction/BestSideUpDownDropDirection.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
package org.dominokit.domino.ui.menu.direction;
1717

1818
import static org.dominokit.domino.ui.style.SpacingCss.dui_flex_col_reverse;
19+
import static org.dominokit.domino.ui.utils.Domino.elementOf;
1920

2021
import elemental2.dom.Element;
2122

@@ -44,7 +45,11 @@ public DropDirection position(DropDirectionContext context) {
4445
}
4546
}
4647

47-
return MIDDLE_SCREEN.position(context);
48+
elementOf(context.getSource()).setCssProperty(spaceChecker.getMaximumSideSpaceProperty());
49+
elementOf(context.getSource()).setCssProperty(spaceChecker.getMaximumVerticalSpaceProperty());
50+
context.newSpaceChecker();
51+
52+
return position(context);
4853
}
4954

5055
/** {@inheritDoc} */

domino-ui/src/main/java/org/dominokit/domino/ui/menu/direction/BottomLeftDropDirection.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717

1818
import static elemental2.dom.DomGlobal.window;
1919
import static org.dominokit.domino.ui.style.SpacingCss.dui_flex_col_reverse;
20+
import static org.dominokit.domino.ui.utils.Domino.elementOf;
2021
import static org.dominokit.domino.ui.utils.ElementsFactory.elements;
2122
import static org.dominokit.domino.ui.utils.Unit.px;
2223

@@ -76,7 +77,11 @@ public DropDirection position(DropDirectionContext context) {
7677
} else if (spaceChecker.hasSpaceAbove()) {
7778
return TOP_MIDDLE.position(context);
7879
} else {
79-
return MIDDLE_SCREEN.position(context);
80+
elementOf(context.getSource()).setCssProperty(spaceChecker.getMaximumSideSpaceProperty());
81+
elementOf(context.getSource()).setCssProperty(spaceChecker.getMaximumVerticalSpaceProperty());
82+
context.newSpaceChecker();
83+
84+
return position(context);
8085
}
8186
}
8287

domino-ui/src/main/java/org/dominokit/domino/ui/menu/direction/BottomMiddleDropDirection.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717

1818
import static elemental2.dom.DomGlobal.window;
1919
import static org.dominokit.domino.ui.style.SpacingCss.dui_flex_col_reverse;
20+
import static org.dominokit.domino.ui.utils.Domino.elementOf;
2021
import static org.dominokit.domino.ui.utils.ElementsFactory.elements;
2122
import static org.dominokit.domino.ui.utils.Unit.px;
2223

@@ -51,7 +52,11 @@ public DropDirection position(DropDirectionContext context) {
5152
return TOP_MIDDLE.position(context);
5253
}
5354
}
54-
return MIDDLE_SCREEN.position(context);
55+
elementOf(context.getSource()).setCssProperty(spaceChecker.getMaximumSideSpaceProperty());
56+
elementOf(context.getSource()).setCssProperty(spaceChecker.getMaximumVerticalSpaceProperty());
57+
context.newSpaceChecker();
58+
59+
return position(context);
5560
}
5661

5762
private DropDirection showBelowMiddle(Element source, SpaceChecker spaceChecker) {

domino-ui/src/main/java/org/dominokit/domino/ui/menu/direction/BottomRightDropDirection.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717

1818
import static elemental2.dom.DomGlobal.window;
1919
import static org.dominokit.domino.ui.style.SpacingCss.dui_flex_col_reverse;
20+
import static org.dominokit.domino.ui.utils.Domino.elementOf;
2021
import static org.dominokit.domino.ui.utils.ElementsFactory.elements;
2122
import static org.dominokit.domino.ui.utils.Unit.px;
2223

@@ -75,7 +76,11 @@ public DropDirection position(DropDirectionContext context) {
7576
} else if (spaceChecker.hasSpaceAbove()) {
7677
return TOP_MIDDLE.position(context);
7778
} else {
78-
return MIDDLE_SCREEN.position(context);
79+
elementOf(context.getSource()).setCssProperty(spaceChecker.getMaximumSideSpaceProperty());
80+
elementOf(context.getSource()).setCssProperty(spaceChecker.getMaximumVerticalSpaceProperty());
81+
context.newSpaceChecker();
82+
83+
return position(context);
7984
}
8085
}
8186

domino-ui/src/main/java/org/dominokit/domino/ui/menu/direction/LeftDownDropDirection.java

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
package org.dominokit.domino.ui.menu.direction;
1717

1818
import static elemental2.dom.DomGlobal.window;
19+
import static org.dominokit.domino.ui.utils.Domino.elementOf;
1920
import static org.dominokit.domino.ui.utils.ElementsFactory.elements;
2021
import static org.dominokit.domino.ui.utils.Unit.px;
2122

@@ -65,7 +66,12 @@ public DropDirection position(DropDirectionContext context) {
6566
} else if (spaceChecker.hasSpaceAbove()) {
6667
return LEFT_UP.position(context);
6768
} else {
68-
return MIDDLE_SCREEN.position(context);
69+
elementOf(context.getSource()).setCssProperty(spaceChecker.getMaximumSideSpaceProperty());
70+
elementOf(context.getSource())
71+
.setCssProperty(spaceChecker.getMaximumVerticalSpaceProperty());
72+
context.newSpaceChecker();
73+
74+
return position(context);
6975
}
7076
} else if (spaceChecker.hasSpaceOnRight()) {
7177
return RIGHT_DOWN.position(context);
@@ -75,7 +81,11 @@ public DropDirection position(DropDirectionContext context) {
7581
return TOP_MIDDLE.position(context);
7682
}
7783

78-
return MIDDLE_SCREEN.position(context);
84+
elementOf(context.getSource()).setCssProperty(spaceChecker.getMaximumSideSpaceProperty());
85+
elementOf(context.getSource()).setCssProperty(spaceChecker.getMaximumVerticalSpaceProperty());
86+
context.newSpaceChecker();
87+
88+
return position(context);
7989
}
8090

8191
/** {@inheritDoc} */

0 commit comments

Comments
 (0)