fix(storybook): avoid navbar overlap on storybook

This commit is contained in:
Łukasz Mierzwa
2019-11-28 11:50:38 +00:00
parent 8c9b039e43
commit bbc14195e1
4 changed files with 71 additions and 18 deletions

View File

@@ -27,7 +27,11 @@ const NavBar = observer(
static propTypes = {
alertStore: PropTypes.instanceOf(AlertStore).isRequired,
settingsStore: PropTypes.instanceOf(Settings).isRequired,
silenceFormStore: PropTypes.instanceOf(SilenceFormStore).isRequired
silenceFormStore: PropTypes.instanceOf(SilenceFormStore).isRequired,
fixedTop: PropTypes.bool
};
static defaultProps = {
fixedTop: true
};
constructor(props) {
@@ -105,7 +109,12 @@ const NavBar = observer(
};
render() {
const { alertStore, settingsStore, silenceFormStore } = this.props;
const {
alertStore,
settingsStore,
silenceFormStore,
fixedTop
} = this.props;
// if we have at least 1 filter then it's likely that filter input will
// use 2 lines, so set right side icons on small screeens to column mode
@@ -130,13 +139,19 @@ const NavBar = observer(
}}
timeout={isMobile ? MobileIdleTimeout : DesktopIdleTimeout}
>
<div className={`container ${this.activityStatus.className}`}>
<div
className={`container p-0 m-0 mw-100 ${this.activityStatus.className}`}
>
<NavBarSlide
in={!this.activityStatus.idle}
onEntering={this.onShow}
onExited={this.onHide}
>
<nav className="navbar fixed-top navbar-expand navbar-dark p-1 bg-primary-transparent d-inline-block">
<nav
className={`navbar navbar-expand navbar-dark p-1 bg-primary-transparent d-inline-block ${
fixedTop ? "fixed-top" : "w-100"
}`}
>
<ReactResizeDetector handleHeight onResize={this.onResize} />
<span className="navbar-brand p-0 my-0 mx-2 h1 d-none d-sm-block float-left">
<OverviewModal alertStore={alertStore} />

View File

@@ -89,21 +89,20 @@ storiesOf("NavBar", module).add("NavBar", () => {
alertStore={alertStore}
settingsStore={settingsStore}
silenceFormStore={silenceFormStore}
fixedTop={false}
/>
<HistoryMenuContent
popperPlacement="top"
popperRef={() => {}}
popperStyle={{}}
filters={history}
onClear={() => {}}
alertStore={alertStore}
settingsStore={settingsStore}
afterClick={() => {}}
handleClickOutside={() => {}}
outsideClickIgnoreClass="components-navbar-history"
/>
<div style={{ position: "absolute", top: "150px", left: "5%" }}>
<HistoryMenuContent
popperPlacement="top"
popperRef={() => {}}
popperStyle={{}}
filters={history}
onClear={() => {}}
alertStore={alertStore}
settingsStore={settingsStore}
afterClick={() => {}}
handleClickOutside={() => {}}
outsideClickIgnoreClass="components-navbar-history"
/>
</div>
</React.Fragment>
);
});

View File

@@ -75,6 +75,40 @@ describe("<NavBar />", () => {
ValidateNavClass(3, "flex-column");
});
it("navbar includes 'fixed-top' class by default", () => {
const tree = MountedNavbar();
const nav = tree.find(".navbar");
expect(nav.props().className.split(" ")).toContain("fixed-top");
});
it("navbar includes 'fixed-top' class with fixedTop=true", () => {
const tree = mount(
<NavBar
alertStore={alertStore}
settingsStore={settingsStore}
silenceFormStore={silenceFormStore}
fixedTop={true}
/>
);
const nav = tree.find(".navbar");
expect(nav.props().className.split(" ")).toContain("fixed-top");
expect(nav.props().className.split(" ")).not.toContain("w-100");
});
it("navbar doesn't 'fixed-top' class with fixedTop=false", () => {
const tree = mount(
<NavBar
alertStore={alertStore}
settingsStore={settingsStore}
silenceFormStore={silenceFormStore}
fixedTop={false}
/>
);
const nav = tree.find(".navbar");
expect(nav.props().className.split(" ")).not.toContain("fixed-top");
expect(nav.props().className.split(" ")).toContain("w-100");
});
it("body 'padding-top' style is updated after calling NavbarOnResize()", () => {
const tree = MountedNavbar();
tree.instance().onResize(0, 10);

View File

@@ -6,3 +6,8 @@
body {
font-family: sans-serif !important;
}
.dropdown-menu {
position: relative !important;
float: none !important;
}