diff --git a/app/assets/javascripts/admin/addon/controllers/modals/admin-install-theme.js b/app/assets/javascripts/admin/addon/controllers/modals/admin-install-theme.js index a64387f7d94..500654d2dcc 100644 --- a/app/assets/javascripts/admin/addon/controllers/modals/admin-install-theme.js +++ b/app/assets/javascripts/admin/addon/controllers/modals/admin-install-theme.js @@ -5,7 +5,7 @@ import discourseComputed from "discourse-common/utils/decorators"; import { observes } from "@ember-decorators/object"; import I18n from "I18n"; import ModalFunctionality from "discourse/mixins/modal-functionality"; -import { POPULAR_THEMES } from "discourse-common/helpers/popular-themes"; +import { POPULAR_THEMES } from "discourse-common/lib/popular-themes"; import { ajax } from "discourse/lib/ajax"; import { popupAjaxError } from "discourse/lib/ajax-error"; import { action, set } from "@ember/object"; diff --git a/app/assets/javascripts/discourse-common/addon/helpers/bound-i18n.js b/app/assets/javascripts/discourse-common/addon/helpers/bound-i18n.js index 2eb7a75f650..c109a7b1d33 100644 --- a/app/assets/javascripts/discourse-common/addon/helpers/bound-i18n.js +++ b/app/assets/javascripts/discourse-common/addon/helpers/bound-i18n.js @@ -1,4 +1,6 @@ import I18n from "I18n"; -import { htmlHelper } from "discourse-common/lib/helpers"; +import { htmlSafe } from "@ember/template"; -export default htmlHelper((key, params) => I18n.t(key, params.hash)); +export default function boundI18n(key, options) { + return htmlSafe(I18n.t(key, options)); +} diff --git a/app/assets/javascripts/discourse-common/addon/helpers/popular-themes.js b/app/assets/javascripts/discourse-common/addon/lib/popular-themes.js similarity index 100% rename from app/assets/javascripts/discourse-common/addon/helpers/popular-themes.js rename to app/assets/javascripts/discourse-common/addon/lib/popular-themes.js diff --git a/app/assets/javascripts/discourse/app/helpers/border-color.js b/app/assets/javascripts/discourse/app/helpers/border-color.js index 7dc45422fd8..546c55a5468 100644 --- a/app/assets/javascripts/discourse/app/helpers/border-color.js +++ b/app/assets/javascripts/discourse/app/helpers/border-color.js @@ -1,14 +1,12 @@ -import { htmlHelper } from "discourse-common/lib/helpers"; +import { htmlSafe } from "@ember/template"; const validDirections = ["top", "right", "bottom", "left"]; -export default htmlHelper((color, direction) => { - const borderColor = `#${color}`; - +export default function borderColor(color, direction) { const borderProperty = direction && validDirections.includes(direction) ? `border-${direction}-color` : "border-color"; - return `${borderProperty}: ${borderColor} `; -}); + return htmlSafe(`${borderProperty}: #${color} `); +} diff --git a/app/assets/javascripts/discourse/app/helpers/bound-avatar-template.js b/app/assets/javascripts/discourse/app/helpers/bound-avatar-template.js index f10f9261c5c..0117673a357 100644 --- a/app/assets/javascripts/discourse/app/helpers/bound-avatar-template.js +++ b/app/assets/javascripts/discourse/app/helpers/bound-avatar-template.js @@ -1,11 +1,11 @@ +import { htmlSafe } from "@ember/template"; import { avatarImg } from "discourse-common/lib/avatar-utils"; -import { htmlHelper } from "discourse-common/lib/helpers"; import { isEmpty } from "@ember/utils"; -export default htmlHelper((avatarTemplate, size) => { +export default function boundAvatarTemplate(avatarTemplate, size) { if (isEmpty(avatarTemplate)) { - return "
"; + return htmlSafe(""); } else { - return avatarImg({ size, avatarTemplate }); + return htmlSafe(avatarImg({ size, avatarTemplate })); } -}); +} diff --git a/app/assets/javascripts/discourse/app/helpers/bound-avatar.js b/app/assets/javascripts/discourse/app/helpers/bound-avatar.js index ff953937aa1..838363a770e 100644 --- a/app/assets/javascripts/discourse/app/helpers/bound-avatar.js +++ b/app/assets/javascripts/discourse/app/helpers/bound-avatar.js @@ -1,14 +1,16 @@ +import { htmlSafe } from "@ember/template"; import { addExtraUserClasses } from "discourse/helpers/user-avatar"; import { avatarImg } from "discourse-common/lib/avatar-utils"; -import { get } from "@ember/object"; -import { htmlHelper } from "discourse-common/lib/helpers"; import { isEmpty } from "@ember/utils"; -export default htmlHelper((user, size) => { +export default function boundAvatar(user, size) { if (isEmpty(user)) { - return ""; + return htmlSafe(""); } - const avatarTemplate = get(user, "avatar_template"); - return avatarImg(addExtraUserClasses(user, { size, avatarTemplate })); -}); + return htmlSafe( + avatarImg( + addExtraUserClasses(user, { size, avatarTemplate: user.avatar_template }) + ) + ); +} diff --git a/app/assets/javascripts/discourse/app/helpers/bound-category-link.js b/app/assets/javascripts/discourse/app/helpers/bound-category-link.js index bd620032219..84f4f81dbd7 100644 --- a/app/assets/javascripts/discourse/app/helpers/bound-category-link.js +++ b/app/assets/javascripts/discourse/app/helpers/bound-category-link.js @@ -1,4 +1 @@ -import { categoryLinkHTML } from "discourse/helpers/category-link"; -import { htmlHelper } from "discourse-common/lib/helpers"; - -export default htmlHelper(categoryLinkHTML); +export { categoryLinkHTML as default } from "discourse/helpers/category-link"; diff --git a/app/assets/javascripts/discourse/app/helpers/bound-date.js b/app/assets/javascripts/discourse/app/helpers/bound-date.js index 160de4defd6..62982881370 100644 --- a/app/assets/javascripts/discourse/app/helpers/bound-date.js +++ b/app/assets/javascripts/discourse/app/helpers/bound-date.js @@ -1,6 +1,11 @@ +import { htmlSafe } from "@ember/template"; import { autoUpdatingRelativeAge } from "discourse/lib/formatter"; -import { htmlHelper } from "discourse-common/lib/helpers"; -export default htmlHelper((dt) => - autoUpdatingRelativeAge(new Date(dt), { format: "medium", title: true }) -); +export default function boundDate(dt) { + return htmlSafe( + autoUpdatingRelativeAge(new Date(dt), { + format: "medium", + title: true, + }) + ); +} diff --git a/app/assets/javascripts/discourse/app/helpers/capitalize-string.js b/app/assets/javascripts/discourse/app/helpers/capitalize-string.js index 02a9e587e9e..c2ead87b761 100644 --- a/app/assets/javascripts/discourse/app/helpers/capitalize-string.js +++ b/app/assets/javascripts/discourse/app/helpers/capitalize-string.js @@ -1,3 +1,9 @@ -import { htmlHelper } from "discourse-common/lib/helpers"; +import deprecated from "discourse-common/lib/deprecated"; -export default htmlHelper((str) => str[0].toUpperCase() + str.slice(1)); +export default function capitalizeString(str) { + deprecated("capitalize-string helper is deprecated", { + id: "discourse.capitalize-string", + since: "3.1.0.beta6", + }); + return str[0].toUpperCase() + str.slice(1); +} diff --git a/app/assets/javascripts/discourse/app/helpers/category-color-variable.js b/app/assets/javascripts/discourse/app/helpers/category-color-variable.js index 4ad1cdcea79..05831521ad4 100644 --- a/app/assets/javascripts/discourse/app/helpers/category-color-variable.js +++ b/app/assets/javascripts/discourse/app/helpers/category-color-variable.js @@ -1,3 +1,5 @@ -import { htmlHelper } from "discourse-common/lib/helpers"; +import { htmlSafe } from "@ember/template"; -export default htmlHelper((color) => `--category-color: #${color};`); +export default function categoryColorVariable(color) { + return htmlSafe(`--category-color: #${color};`); +} diff --git a/app/assets/javascripts/discourse/app/helpers/concat-class.js b/app/assets/javascripts/discourse/app/helpers/concat-class.js index d8c91ec6a2b..fd0979b295c 100644 --- a/app/assets/javascripts/discourse/app/helpers/concat-class.js +++ b/app/assets/javascripts/discourse/app/helpers/concat-class.js @@ -1,8 +1,7 @@ -import { helper } from "@ember/component/helper"; - -function concatClass(args) { +export default function concatClass(...args) { const classes = args.compact().join(" "); - return classes.length ? classes : undefined; -} -export default helper(concatClass); + if (classes.length) { + return classes; + } +} diff --git a/app/assets/javascripts/discourse/app/helpers/dash-if-empty.js b/app/assets/javascripts/discourse/app/helpers/dash-if-empty.js index 502998ee877..645f778cc91 100644 --- a/app/assets/javascripts/discourse/app/helpers/dash-if-empty.js +++ b/app/assets/javascripts/discourse/app/helpers/dash-if-empty.js @@ -1,4 +1,6 @@ -import { htmlHelper } from "discourse-common/lib/helpers"; +import { htmlSafe } from "@ember/template"; import { isEmpty } from "@ember/utils"; -export default htmlHelper((str) => (isEmpty(str) ? "—" : str)); +export default function dashIfEmpty(str) { + return isEmpty(str) ? htmlSafe("—") : str; +} diff --git a/app/assets/javascripts/discourse/app/helpers/dasherize.js b/app/assets/javascripts/discourse/app/helpers/dasherize.js index ed8936763dd..02ec8926abe 100644 --- a/app/assets/javascripts/discourse/app/helpers/dasherize.js +++ b/app/assets/javascripts/discourse/app/helpers/dasherize.js @@ -1,8 +1,5 @@ -import Helper from "@ember/component/helper"; import { dasherize as emberDasherize } from "@ember/string"; -function dasherize([value]) { - return emberDasherize((value || "").replace(".", "-")); +export default function dasherize(value = "") { + return emberDasherize(value.replace(".", "-")); } - -export default Helper.helper(dasherize); diff --git a/app/assets/javascripts/discourse/app/helpers/editable-value.js b/app/assets/javascripts/discourse/app/helpers/editable-value.js index 32763daaf49..fe60d35ddb3 100644 --- a/app/assets/javascripts/discourse/app/helpers/editable-value.js +++ b/app/assets/javascripts/discourse/app/helpers/editable-value.js @@ -1,20 +1,17 @@ -import Helper from "@ember/component/helper"; import { get } from "@ember/object"; -export function formatCurrency([reviewable, fieldId]) { +export default function editableValue(reviewable, fieldId) { // The field `category_id` corresponds to `category` if (fieldId === "category_id") { fieldId = "category.id"; } - let value = get(reviewable, fieldId); + const value = get(reviewable, fieldId); // If it's an array, say tags, make a copy so we aren't mutating the original if (Array.isArray(value)) { - value = value.slice(0); + return value.slice(0); } return value; } - -export default Helper.helper(formatCurrency); diff --git a/app/assets/javascripts/discourse/app/helpers/icon-or-image.js b/app/assets/javascripts/discourse/app/helpers/icon-or-image.js index 3ad6d53604a..a8c69991967 100644 --- a/app/assets/javascripts/discourse/app/helpers/icon-or-image.js +++ b/app/assets/javascripts/discourse/app/helpers/icon-or-image.js @@ -1,16 +1,15 @@ import { convertIconClass, iconHTML } from "discourse-common/lib/icon-library"; -import { htmlHelper } from "discourse-common/lib/helpers"; import { isEmpty } from "@ember/utils"; +import { htmlSafe } from "@ember/template"; -export default htmlHelper(function ({ icon, image }) { +export default function iconOrImage({ icon, image }) { if (!isEmpty(image)) { - return `