|
@@ -8,7 +8,8 @@ import * as toastr from 'toastr';
|
|
|
import { throttle } from 'throttle-debounce';
|
|
import { throttle } from 'throttle-debounce';
|
|
|
|
|
|
|
|
const logger = loggerFactory('growi:services:PageContainer');
|
|
const logger = loggerFactory('growi:services:PageContainer');
|
|
|
-const scrollAmountForFixed = 50;
|
|
|
|
|
|
|
+const scrollThresForSticky = 50;
|
|
|
|
|
+const scrollThresForCompact = 100;
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
* Service container related to Page
|
|
* Service container related to Page
|
|
@@ -58,7 +59,9 @@ export default class PageContainer extends Container {
|
|
|
pageIdOnHackmd: mainContent.getAttribute('data-page-id-on-hackmd') || null,
|
|
pageIdOnHackmd: mainContent.getAttribute('data-page-id-on-hackmd') || null,
|
|
|
hasDraftOnHackmd: !!mainContent.getAttribute('data-page-has-draft-on-hackmd'),
|
|
hasDraftOnHackmd: !!mainContent.getAttribute('data-page-has-draft-on-hackmd'),
|
|
|
isHackmdDraftUpdatingInRealtime: false,
|
|
isHackmdDraftUpdatingInRealtime: false,
|
|
|
- isCompactMode: false,
|
|
|
|
|
|
|
+
|
|
|
|
|
+ isHeaderSticky: false,
|
|
|
|
|
+ isSubnavCompact: false,
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
this.initStateMarkdown();
|
|
this.initStateMarkdown();
|
|
@@ -69,8 +72,13 @@ export default class PageContainer extends Container {
|
|
|
this.addWebSocketEventHandlers = this.addWebSocketEventHandlers.bind(this);
|
|
this.addWebSocketEventHandlers = this.addWebSocketEventHandlers.bind(this);
|
|
|
this.addWebSocketEventHandlers();
|
|
this.addWebSocketEventHandlers();
|
|
|
|
|
|
|
|
- window.addEventListener('scroll', throttle(300, () => {
|
|
|
|
|
- this.setState({ isCompactMode: window.pageYOffset > scrollAmountForFixed });
|
|
|
|
|
|
|
+ window.addEventListener('scroll', throttle(150, () => {
|
|
|
|
|
+ const currentYOffset = window.pageYOffset;
|
|
|
|
|
+
|
|
|
|
|
+ this.setState({
|
|
|
|
|
+ isHeaderSticky: scrollThresForSticky < currentYOffset,
|
|
|
|
|
+ isSubnavCompact: scrollThresForCompact < currentYOffset,
|
|
|
|
|
+ });
|
|
|
}));
|
|
}));
|
|
|
}
|
|
}
|
|
|
|
|
|