Implementation
@ViewChild('mainPanel')
set mainPanel(HtmlElement? mainPanel) {
_mainPanel = mainPanel;
_ngZone.runOutsideAngular(() {
if (_mainPanel != null) {
_disposer.addStreamSubscription(_mainPanel!.onTransitionEnd
.where((e) => e.eventPhase == Event.AT_TARGET)
.listen((_) {
// Clear height override so it will match the active child's height.
_mainPanel?.style.height = '';
// If we just finished closing, let deferred content stop rendering
// the panel body.
if (!isExpanded) {
_ngZone.run(() => _contentVisible.add(false));
}
}));
}
});
final transitionCheck = DisposableCallback(() {
// If we don't have a transition (because style mixins/overrides/disabled
// in tests) just forward the isExpanded change event so deferredContent
// can disappear.
if (!_mainPanelHasHeightTransition) {
_disposer.addStreamSubscription(isExpandedChange.listen((expanded) {
// Just check for false (closed). Open (true) is always done first.
if (!expanded!) _contentVisible.add(false);
}));
}
});
_domService.scheduleRead(transitionCheck);
_disposer.addDisposable(transitionCheck);
}