Skip to content

Commit 1ccd10c

Browse files
committed
fix #1091 DateBox expand listeners not getting called correctly
1 parent e16e949 commit 1ccd10c

File tree

5 files changed

+21
-8
lines changed

5 files changed

+21
-8
lines changed

domino-ui/src/main/java/org/dominokit/domino/ui/animations/Animation.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@
1515
*/
1616
package org.dominokit.domino.ui.animations;
1717

18-
import static org.dominokit.domino.ui.utils.Domino.*;
1918
import static org.dominokit.domino.ui.utils.ElementsFactory.elements;
2019

2120
import elemental2.dom.Element;
@@ -59,6 +58,7 @@ public class Animation {
5958
private StartHandler startHandler = DEFAULT_START_HANDLER;
6059
private EventListener stopListener;
6160
private double repeatCount = 1;
61+
private boolean completed = false;
6262

6363
/**
6464
* Creates a new Animation instance for the provided element.
@@ -196,6 +196,7 @@ public Animation beforeStart(StartHandler startHandler) {
196196
* @return same instance
197197
*/
198198
public Animation animate() {
199+
this.completed = false;
199200
if (delay > 0) {
200201
new Timer() {
201202
@Override
@@ -267,6 +268,11 @@ public void stop(boolean silent) {
267268
if (!silent) {
268269
callback.onComplete(element.element());
269270
}
271+
this.completed = true;
272+
}
273+
274+
public boolean isCompleted() {
275+
return completed;
270276
}
271277

272278
/**

domino-ui/src/main/java/org/dominokit/domino/ui/collapsible/AnimationCollapseStrategy.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717

1818
import static java.util.Objects.nonNull;
1919
import static org.dominokit.domino.ui.style.DisplayCss.dui_hidden;
20-
import static org.dominokit.domino.ui.utils.Domino.*;
2120
import static org.dominokit.domino.ui.utils.ElementsFactory.elements;
2221

2322
import elemental2.dom.Element;
@@ -95,6 +94,7 @@ public AnimationCollapseStrategy(AnimationCollapseOptions options) {
9594
@Override
9695
public void expand(Element element) {
9796
if (!showing) {
97+
handlers.onBeforeExpand().run();
9898
elements.elementOf(element).removeCss(this.options.getShowDuration().getStyle());
9999
elements.elementOf(element).removeCss(this.options.getHideDuration().getStyle());
100100
showAnimation =
@@ -127,7 +127,8 @@ public void expand(Element element) {
127127
/** @dominokit-site-ignore {@inheritDoc} */
128128
@Override
129129
public void collapse(Element element) {
130-
Optional.ofNullable(showAnimation).ifPresent(animation -> animation.stop(false));
130+
Optional.ofNullable(showAnimation)
131+
.ifPresent(animation -> animation.stop(animation.isCompleted()));
131132
if (!hiding) {
132133
elements.elementOf(element).removeCss(this.options.getShowDuration().getStyle());
133134
elements.elementOf(element).removeCss(this.options.getHideDuration().getStyle());

domino-ui/src/main/java/org/dominokit/domino/ui/collapsible/Collapsible.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -42,10 +42,10 @@ public class Collapsible implements IsElement<Element>, IsCollapsible<Collapsibl
4242
private boolean collapsed = false;
4343
private boolean forceHidden = false;
4444

45-
private List<CollapseHandler> collapseHandlers = new ArrayList<>();
46-
private List<CollapseHandler> beforeCollapseHandlers = new ArrayList<>();
47-
private List<ExpandHandler> expandHandlers = new ArrayList<>();
48-
private List<ExpandHandler> beforeExpandHandlers = new ArrayList<>();
45+
private List<CollapseHandler> collapseHandlers;
46+
private List<CollapseHandler> beforeCollapseHandlers;
47+
private List<ExpandHandler> expandHandlers;
48+
private List<ExpandHandler> beforeExpandHandlers;
4949
private CollapseStrategy strategy = new DisplayCollapseStrategy();
5050

5151
/**

domino-ui/src/main/java/org/dominokit/domino/ui/collapsible/DisplayCollapseStrategy.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,8 @@ public void init(Element element, CollapsibleHandlers handlers) {
3939
/** @dominokit-site-ignore {@inheritDoc} */
4040
@Override
4141
public void expand(Element element) {
42-
elements.elementOf(element).removeCss(dui_hidden).removeAttribute(DUI_COLLAPSED);
4342
this.handlers.onBeforeExpand().run();
43+
elements.elementOf(element).removeCss(dui_hidden).removeAttribute(DUI_COLLAPSED);
4444
this.handlers.onExpandCompleted().run();
4545
}
4646

domino-ui/src/main/java/org/dominokit/domino/ui/forms/DateBox.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import elemental2.dom.HTMLInputElement;
2424
import java.util.Date;
2525
import java.util.Objects;
26+
import org.dominokit.domino.ui.collapsible.Collapsible;
2627
import org.dominokit.domino.ui.datepicker.*;
2728
import org.dominokit.domino.ui.forms.validations.ValidationResult;
2829
import org.dominokit.domino.ui.i18n.CalendarLabels;
@@ -698,4 +699,9 @@ public DateBox withPopover(ChildHandler<DateBox, Popover> handler) {
698699
handler.apply(this, this.popover);
699700
return this;
700701
}
702+
703+
@Override
704+
public Collapsible getCollapsible() {
705+
return this.popover.getCollapsible();
706+
}
701707
}

0 commit comments

Comments
 (0)