diff --git a/app/assets/javascripts/admin/addon/controllers/admin-badges/show.js b/app/assets/javascripts/admin/addon/controllers/admin-badges/show.js index 29d95f2c0ff..55077f17ea2 100644 --- a/app/assets/javascripts/admin/addon/controllers/admin-badges/show.js +++ b/app/assets/javascripts/admin/addon/controllers/admin-badges/show.js @@ -17,8 +17,8 @@ const ICON = "icon"; export default class AdminBadgesShowController extends Controller.extend( bufferedProperty("model") ) { - @controller adminBadges; @service router; + @controller adminBadges; @tracked saving = false; @tracked savingStatus = ""; diff --git a/app/assets/javascripts/discourse/app/components/sidebar/more-section-links.js b/app/assets/javascripts/discourse/app/components/sidebar/more-section-links.js index f67009bd701..3bcbd787a61 100644 --- a/app/assets/javascripts/discourse/app/components/sidebar/more-section-links.js +++ b/app/assets/javascripts/discourse/app/components/sidebar/more-section-links.js @@ -7,9 +7,10 @@ import { bind } from "discourse-common/utils/decorators"; import Component from "@glimmer/component"; export default class SidebarMoreSectionLinks extends Component { + @service router; + @tracked shouldDisplaySectionLinks = false; @tracked activeSectionLink; - @service router; #allLinks = [...this.args.sectionLinks, ...this.args.secondarySectionLinks]; diff --git a/app/assets/javascripts/discourse/app/lib/sticky-avatars.js b/app/assets/javascripts/discourse/app/lib/sticky-avatars.js index 035035498c9..d69f23b3e06 100644 --- a/app/assets/javascripts/discourse/app/lib/sticky-avatars.js +++ b/app/assets/javascripts/discourse/app/lib/sticky-avatars.js @@ -5,16 +5,16 @@ import { headerOffset } from "discourse/lib/offset-calculator"; import { schedule } from "@ember/runloop"; export default class StickyAvatars { + static init(container) { + return new this(container).init(); + } + stickyClass = "sticky-avatar"; topicPostSelector = "#topic .post-stream .topic-post"; intersectionObserver = null; direction = "⬇️"; prevOffset = -1; - static init(container) { - return new this(container).init(); - } - constructor(container) { this.container = container; } diff --git a/app/assets/javascripts/discourse/app/lib/to-markdown.js b/app/assets/javascripts/discourse/app/lib/to-markdown.js index e6309b9d3e3..ccf6e30920c 100644 --- a/app/assets/javascripts/discourse/app/lib/to-markdown.js +++ b/app/assets/javascripts/discourse/app/lib/to-markdown.js @@ -82,50 +82,6 @@ export class Tag { return klass; } - constructor(prefix = "", suffix = "", inline = false) { - this.prefix = prefix; - this.suffix = suffix; - this.inline = inline; - } - - decorate(text) { - for (const callback of tagDecorateCallbacks) { - const result = callback.call(this, text); - - if (typeof result !== "undefined") { - text = result; - } - } - - if (this.prefix || this.suffix) { - text = [this.prefix, text, this.suffix].join(""); - } - - if (this.inline) { - const { prev, next } = this.element; - - if (prev && prev.name !== "#text") { - text = " " + text; - } - - if (next && next.name !== "#text") { - text = text + " "; - } - } - - return text; - } - - toMarkdown() { - const text = this.element.innerMarkdown(); - - if (text?.trim()) { - return this.decorate(text); - } - - return text; - } - static blocks() { return [ "address", @@ -643,6 +599,50 @@ export class Tag { } }; } + + constructor(prefix = "", suffix = "", inline = false) { + this.prefix = prefix; + this.suffix = suffix; + this.inline = inline; + } + + decorate(text) { + for (const callback of tagDecorateCallbacks) { + const result = callback.call(this, text); + + if (typeof result !== "undefined") { + text = result; + } + } + + if (this.prefix || this.suffix) { + text = [this.prefix, text, this.suffix].join(""); + } + + if (this.inline) { + const { prev, next } = this.element; + + if (prev && prev.name !== "#text") { + text = " " + text; + } + + if (next && next.name !== "#text") { + text = text + " "; + } + } + + return text; + } + + toMarkdown() { + const text = this.element.innerMarkdown(); + + if (text?.trim()) { + return this.decorate(text); + } + + return text; + } } let tagsMap; @@ -684,6 +684,34 @@ function tagByName(name) { } class Element { + static toMarkdown(element, parent, prev, next, metadata) { + return new Element(element, parent, prev, next, metadata).toMarkdown(); + } + + static parseChildren(parent) { + return Element.parse(parent.children, parent); + } + + static parse(elements, parent = null) { + if (elements) { + let result = []; + let metadata = {}; + + for (let i = 0; i < elements.length; i++) { + const prev = i === 0 ? null : elements[i - 1]; + const next = i === elements.length ? null : elements[i + 1]; + + result.push( + Element.toMarkdown(elements[i], parent, prev, next, metadata) + ); + } + + return result.join(""); + } + + return ""; + } + constructor(element, parent, previous, next, metadata) { this.name = element.name; this.data = element.data; @@ -762,34 +790,6 @@ class Element { filterParentNames(names) { return this.parentNames.filter((p) => names.includes(p)); } - - static toMarkdown(element, parent, prev, next, metadata) { - return new Element(element, parent, prev, next, metadata).toMarkdown(); - } - - static parseChildren(parent) { - return Element.parse(parent.children, parent); - } - - static parse(elements, parent = null) { - if (elements) { - let result = []; - let metadata = {}; - - for (let i = 0; i < elements.length; i++) { - const prev = i === 0 ? null : elements[i - 1]; - const next = i === elements.length ? null : elements[i + 1]; - - result.push( - Element.toMarkdown(elements[i], parent, prev, next, metadata) - ); - } - - return result.join(""); - } - - return ""; - } } function trimUnwanted(html) { diff --git a/app/assets/javascripts/discourse/app/routes/groups-index.js b/app/assets/javascripts/discourse/app/routes/groups-index.js index a054f348c7f..efacd7d613e 100644 --- a/app/assets/javascripts/discourse/app/routes/groups-index.js +++ b/app/assets/javascripts/discourse/app/routes/groups-index.js @@ -2,10 +2,6 @@ import DiscourseRoute from "discourse/routes/discourse"; import I18n from "I18n"; export default class GroupsIndexRoute extends DiscourseRoute { - titleToken() { - return I18n.t("groups.index.title"); - } - queryParams = { order: { refreshModel: true, replace: true }, asc: { refreshModel: true, replace: true }, @@ -14,6 +10,10 @@ export default class GroupsIndexRoute extends DiscourseRoute { username: { refreshModel: true }, }; + titleToken() { + return I18n.t("groups.index.title"); + } + model(params) { return params; } diff --git a/app/assets/javascripts/discourse/testem.js b/app/assets/javascripts/discourse/testem.js index 67261a0fb6d..8da35eb44e9 100644 --- a/app/assets/javascripts/discourse/testem.js +++ b/app/assets/javascripts/discourse/testem.js @@ -2,12 +2,12 @@ const TapReporter = require("testem/lib/reporters/tap_reporter"); const { shouldLoadPluginTestJs } = require("discourse/lib/plugin-js"); class Reporter { + failReports = []; + constructor() { this._tapReporter = new TapReporter(...arguments); } - failReports = []; - reportMetadata(tag, metadata) { if (tag === "summary-line") { process.stdout.write(`\n${metadata.message}\n`); diff --git a/app/assets/javascripts/discourse/tests/integration/components/widgets/render-glimmer-test.js b/app/assets/javascripts/discourse/tests/integration/components/widgets/render-glimmer-test.js index bdc5581a529..edbe15d97a4 100644 --- a/app/assets/javascripts/discourse/tests/integration/components/widgets/render-glimmer-test.js +++ b/app/assets/javascripts/discourse/tests/integration/components/widgets/render-glimmer-test.js @@ -42,6 +42,7 @@ class DemoWidget extends Widget { class DemoComponent extends ClassicComponent { static eventLog = []; classNames = ["demo-component"]; + layout = hbs``; init() { DemoComponent.eventLog.push("init"); @@ -63,8 +64,6 @@ class DemoComponent extends ClassicComponent { willDestroy() { DemoComponent.eventLog.push("willDestroy"); } - - layout = hbs``; } module("Integration | Component | Widget | render-glimmer", function (hooks) { diff --git a/plugins/discourse-local-dates/assets/javascripts/lib/date-with-zone-helper.js b/plugins/discourse-local-dates/assets/javascripts/lib/date-with-zone-helper.js index fa67be60685..aa4c893675f 100644 --- a/plugins/discourse-local-dates/assets/javascripts/lib/date-with-zone-helper.js +++ b/plugins/discourse-local-dates/assets/javascripts/lib/date-with-zone-helper.js @@ -14,6 +14,19 @@ import { getProperties } from "@ember/object"; duration between two dates, eg for duration: "1.weeks", "2.months"... */ export default class DateWithZoneHelper { + static fromDatetime(datetime, timezone, localTimezone) { + return new DateWithZoneHelper({ + year: datetime.year(), + month: datetime.month(), + day: datetime.date(), + hour: datetime.hour(), + minute: datetime.minute(), + second: datetime.second(), + timezone, + localTimezone, + }); + } + constructor(params = {}) { this.timezone = params.timezone || "UTC"; this.localTimezone = params.localTimezone || moment.tz.guess(); @@ -77,19 +90,6 @@ export default class DateWithZoneHelper { return this.datetime.tz(this.localTimezone).toISOString(true); } - static fromDatetime(datetime, timezone, localTimezone) { - return new DateWithZoneHelper({ - year: datetime.year(), - month: datetime.month(), - day: datetime.date(), - hour: datetime.hour(), - minute: datetime.minute(), - second: datetime.second(), - timezone, - localTimezone, - }); - } - _fromDatetime(datetime, timezone, localTimezone) { return DateWithZoneHelper.fromDatetime(datetime, timezone, localTimezone); }