Move category pill to top if on description on right layout

This commit is contained in:
Ajay
2024-02-27 22:13:58 -05:00
parent 5f8447ec6b
commit 1909e66c87
3 changed files with 30 additions and 4 deletions

View File

@@ -780,6 +780,18 @@ input::-webkit-inner-spin-button {
line-height: 1.5em;
}
/* Description on right layout */
#title > #categoryPillParent {
font-size: 2rem;
font-weight: bold;
display: flex;
justify-content: center;
line-height: 2.8rem;
}
#title > #categoryPillParent > #categoryPill.cbPillOpen {
margin-bottom: 5px;
}
#categoryPillParent {
height: fit-content;
margin-top: auto;

View File

@@ -23,12 +23,14 @@ export interface CategoryPillState {
}
class CategoryPillComponent extends React.Component<CategoryPillProps, CategoryPillState> {
mainRef: React.MutableRefObject<HTMLSpanElement>;
tooltip?: Tooltip;
constructor(props: CategoryPillProps) {
super(props);
this.mainRef = React.createRef();
this.state = {
segment: null,
show: false,
@@ -43,13 +45,17 @@ class CategoryPillComponent extends React.Component<CategoryPillProps, CategoryP
color: this.getTextColor(),
}
// To be able to remove the margin from the parent
this.mainRef?.current?.parentElement?.classList?.toggle("cbPillOpen", this.state.show);
return (
<span style={style}
className={"sponsorBlockCategoryPill" + (!this.props.showTextByDefault ? " sbPillNoText" : "")}
aria-label={this.getTitleText()}
onClick={(e) => this.toggleOpen(e)}
onMouseEnter={() => this.openTooltip()}
onMouseLeave={() => this.closeTooltip()}>
onMouseLeave={() => this.closeTooltip()}
ref={this.mainRef}>
<span className="sponsorBlockCategoryPillTitleSection">
<img className="sponsorSkipLogo sponsorSkipObject"

View File

@@ -43,9 +43,15 @@ export class CategoryPill {
}
private async attachToPageInternal(): Promise<void> {
const referenceNode =
let referenceNode =
await waitFor(() => getYouTubeTitleNode());
// Experimental YouTube layout with description on right
const isOnDescriptionOnRightLayout = document.querySelector("#title #description");
if (isOnDescriptionOnRightLayout) {
referenceNode = referenceNode.parentElement;
}
if (referenceNode && !referenceNode.contains(this.container)) {
if (!this.container) {
this.container = document.createElement('span');
@@ -91,9 +97,11 @@ export class CategoryPill {
parent.appendChild(this.container);
referenceNode.prepend(parent);
if (!isOnDescriptionOnRightLayout) {
referenceNode.style.display = "flex";
}
}
}
close(): void {
this.root.unmount();