TryGhost/Ghost

View on GitHub
ghost/admin/app/components/members-activity/table-row.js

Summary

Maintainability
C
1 day
Test Coverage
import Component from '@glimmer/component';
import {action} from '@ember/object';

export default class TableRow extends Component {
    linkScrollerTimeout = null; // needs to be global so can be cleared when needed across functions

    @action
    enterLinkURL(event) {
        event.stopPropagation();
        const parent = event.target;
        const child = event.target.querySelector('span');

        clearTimeout(this.linkScrollerTimeout);
        if (child.offsetWidth > parent.offsetWidth) {
            this.linkScrollerTimeout = setTimeout(() => {
                parent.classList.add('scroller');
                child.style.transform = `translateX(-${(child.offsetWidth - parent.offsetWidth) + 8}px)`;
            }, 100);
        }
    }

    @action
    leaveLinkURL(event) {
        event.stopPropagation();
        clearTimeout(this.linkScrollerTimeout);
        const parent = event.target;
        const child = event.target.querySelector('span');

        child.style.transform = 'translateX(0)';
        parent.classList.remove('scroller');
    }
}