88 lines
2.1 KiB
JavaScript
88 lines
2.1 KiB
JavaScript
import { createWidget } from "discourse/widgets/widget";
|
|
import { h } from "virtual-dom";
|
|
import { iconNode } from "discourse-common/lib/icon-library";
|
|
import { wantsNewWindow } from "discourse/lib/intercept-click";
|
|
import DiscourseURL from "discourse/lib/url";
|
|
|
|
export default createWidget("home-logo", {
|
|
tagName: "div.title",
|
|
|
|
settings: {
|
|
href: Discourse.getURL("/")
|
|
},
|
|
|
|
href() {
|
|
const href = this.settings.href;
|
|
return typeof href === "function" ? href() : href;
|
|
},
|
|
|
|
logoUrl() {
|
|
return this.siteSettings.site_logo_url || "";
|
|
},
|
|
|
|
mobileLogoUrl() {
|
|
return this.siteSettings.site_mobile_logo_url || "";
|
|
},
|
|
|
|
smallLogoUrl() {
|
|
return this.siteSettings.site_logo_small_url || "";
|
|
},
|
|
|
|
logo() {
|
|
const { siteSettings } = this;
|
|
const mobileView = this.site.mobileView;
|
|
|
|
const mobileLogoUrl = this.mobileLogoUrl();
|
|
const showMobileLogo = mobileView && mobileLogoUrl.length > 0;
|
|
|
|
const logoUrl = this.logoUrl();
|
|
const title = siteSettings.title;
|
|
|
|
if (this.attrs.minimized) {
|
|
const logoSmallUrl = this.smallLogoUrl();
|
|
if (logoSmallUrl.length) {
|
|
return h("img#site-logo.logo-small", {
|
|
key: "logo-small",
|
|
attributes: {
|
|
src: Discourse.getURL(logoSmallUrl),
|
|
width: 36,
|
|
alt: title
|
|
}
|
|
});
|
|
} else {
|
|
return iconNode("home");
|
|
}
|
|
} else if (showMobileLogo) {
|
|
return h("img#site-logo.logo-big", {
|
|
key: "logo-mobile",
|
|
attributes: { src: Discourse.getURL(mobileLogoUrl), alt: title }
|
|
});
|
|
} else if (logoUrl.length) {
|
|
return h("img#site-logo.logo-big", {
|
|
key: "logo-big",
|
|
attributes: { src: Discourse.getURL(logoUrl), alt: title }
|
|
});
|
|
} else {
|
|
return h("h1#site-text-logo.text-logo", { key: "logo-text" }, title);
|
|
}
|
|
},
|
|
|
|
html() {
|
|
return h(
|
|
"a",
|
|
{ attributes: { href: this.href(), "data-auto-route": true } },
|
|
this.logo()
|
|
);
|
|
},
|
|
|
|
click(e) {
|
|
if (wantsNewWindow(e)) {
|
|
return false;
|
|
}
|
|
e.preventDefault();
|
|
|
|
DiscourseURL.routeToTag($(e.target).closest("a")[0]);
|
|
return false;
|
|
}
|
|
});
|