analytics/assets/js/dashboard/lazy-loader.js
Ru Singh c95d375839
Fix for details button misbehaving on mobile (#1114)
* chore(make): convenience commands for installation & dev server

* docs: easier development env instructions

* docs: add note about docker volumes

* docs: detail pre-commit configuration

* style: eslint and prettier changes

* Allow for passing custom classes to fade-in

* style: eslint & prettier for the details button component

* style: react lifecycle methods to come first

* docs: add instructions to disable pre-commit

* style: devices components

* Move render methods to the last (together) in the order list
* Remove unused component import
* React lifecycle to come first before our own methods
* General styling and eslint changes
* Cleaner renderContent method using switch/case (fixes an eslint error as well!)
* Cleaner renderPill method with proper spacing + removing uncessary else

* style: more eslint/prettier for pages components

* Use newer Fragment syntax
* Remove unnecessary else statement
* Use backtick strings for concatenating strings
* Remove unnecessary space
* Remove unused imports and variable declarations
* Bunch render methods together as last in the order list

* fix: details button to drop to the bottom naturally on smaller screens

This _mostly_ fixes one of the issues being tracked on #972, titled "Details button issue on Firefox specifically"

* refactor: reduce usage of our CSS class in favor of tailwind's util classes

* refactor: remove our css classes in favor of Tailwind's util classes
2021-06-15 10:34:43 +03:00

33 lines
685 B
JavaScript

import React from 'react';
export default class extends React.Component {
componentDidMount() {
this.observer = new IntersectionObserver((entries) => {
if (entries[0].isIntersecting) {
this.props.onVisible && this.props.onVisible()
this.observer.unobserve(this.element);
}
}, {
threshold: 0
});
this.observer.observe(this.element);
}
componentWillUnmount() {
this.observer.unobserve(this.element);
}
render() {
return (
<div
ref={(el) => { this.element = el }}
className={this.props.className}
style={this.props.style}
>
{this.props.children}
</div>
);
}
}