Skip to content

Commit

Permalink
releases-tab
Browse files Browse the repository at this point in the history
  • Loading branch information
yakov116 committed May 23, 2021
1 parent 4284ebf commit ec7184a
Showing 1 changed file with 34 additions and 70 deletions.
104 changes: 34 additions & 70 deletions source/features/releases-tab.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -16,12 +16,6 @@ import {buildRepoURL, getRepo} from '../github-helpers';
const getCacheKey = (): string => `releases-count:${getRepo()!.nameWithOwner}`;

async function parseCountFromDom(): Promise<number> {
const releasesCountElement = select('.numbers-summary a[href$="/releases"] .num');
if (releasesCountElement) {
return looseParseInt(releasesCountElement);
}

// In "Repository refresh" layout, look for the tags link in the header
const moreReleasesCountElement = await elementReady('.repository-content .file-navigation [href$="/tags"] strong');
if (moreReleasesCountElement) {
return looseParseInt(moreReleasesCountElement);
Expand Down Expand Up @@ -60,78 +54,48 @@ async function init(): Promise<false | void> {
}

// Wait for the tab bar to be loaded
await elementReady([
'.pagehead', // Pre "Repository refresh" layout
'.UnderlineNav-body'
].join());

const repoNavigationBar = select('.js-responsive-underlinenav .UnderlineNav-body');
if (repoNavigationBar) {
// "Repository refresh" layout
const releasesTab = (
<li className="d-flex">
<a
href={buildRepoURL('releases')}
className="js-selected-navigation-item UnderlineNav-item hx_underlinenav-item no-wrap js-responsive-underlinenav-item"
data-hotkey="g r"
data-selected-links="repo_releases"
data-tab-item="rgh-releases-item"
>
<TagIcon className="UnderlineNav-octicon"/>
<span data-content="Releases">Releases</span>
{count && <span className="Counter" title={count > 999 ? String(count) : ''}>{abbreviateNumber(count)}</span>}
</a>
</li>
);
repoNavigationBar.append(releasesTab);

// This re-triggers the overflow listener forcing it to also hide this tab if necessary #3347
repoNavigationBar.replaceWith(repoNavigationBar);

// Update "selected" tab mark
if (pageDetect.isReleasesOrTags()) {
const selected = select('.UnderlineNav-item.selected');
if (selected) {
selected.classList.remove('selected');
selected.removeAttribute('aria-current');
}

releasesTab.firstElementChild!.classList.add('selected');
releasesTab.firstElementChild!.setAttribute('aria-current', 'page');
}

appendBefore(
select('.js-responsive-underlinenav .dropdown-menu ul')!,
'.dropdown-divider', // Won't exist if `more-dropdown` is disabled
createDropdownItem('Releases', buildRepoURL('releases'), {
'data-menu-item': 'rgh-releases-item'
})
);

return;
}
await elementReady('.UnderlineNav-body');

const repoNavigationBar = select('.js-responsive-underlinenav .UnderlineNav-body')!;
const releasesTab = (
<a href={buildRepoURL('releases')} className="reponav-item" data-hotkey="g r">
<TagIcon/>
<span> Releases </span>
{count && <span className="Counter" title={count > 999 ? String(count) : ''}>{abbreviateNumber(count)}</span>}
</a>
<li className="d-flex">
<a
href={buildRepoURL('releases')}
className="js-selected-navigation-item UnderlineNav-item hx_underlinenav-item no-wrap js-responsive-underlinenav-item"
data-hotkey="g r"
data-selected-links="repo_releases"
data-tab-item="rgh-releases-item"
>
<TagIcon className="UnderlineNav-octicon"/>
<span data-content="Releases">Releases</span>
{count && <span className="Counter" title={count > 999 ? String(count) : ''}>{abbreviateNumber(count)}</span>}
</a>
</li>
);
repoNavigationBar.append(releasesTab);

appendBefore(
// GHE doesn't have `.reponav > ul`
select('.reponav > ul') ?? select('.reponav')!,
'.reponav-dropdown, [data-selected-links^="repo_settings"]',
releasesTab
);
// This re-triggers the overflow listener forcing it to also hide this tab if necessary #3347
repoNavigationBar.replaceWith(repoNavigationBar);

// Update "selected" tab mark
if (pageDetect.isReleasesOrTags()) {
select('.reponav-item.selected')?.classList.remove('js-selected-navigation-item', 'selected');
releasesTab.classList.add('js-selected-navigation-item', 'selected');
releasesTab.dataset.selectedLinks = 'repo_releases'; // Required for ajaxLoad
const selected = select('.UnderlineNav-item.selected');
if (selected) {
selected.classList.remove('selected');
selected.removeAttribute('aria-current');
}

releasesTab.firstElementChild!.classList.add('selected');
releasesTab.firstElementChild!.setAttribute('aria-current', 'page');
}

appendBefore(
select('.js-responsive-underlinenav .dropdown-menu ul')!,
'.dropdown-divider', // Won't exist if `more-dropdown` is disabled
createDropdownItem('Releases', buildRepoURL('releases'), {
'data-menu-item': 'rgh-releases-item'
})
);
}

void features.add(__filebasename, {
Expand Down

0 comments on commit ec7184a

Please sign in to comment.