-
- {{i18n "admin.groups.manage.interaction.members_visibility_levels.title"}}
-
+
+
+ {{i18n
+ "admin.groups.manage.interaction.members_visibility_levels.title"
+ }}
+
-
+
- {{#if this.membersVisibilityPrivate}}
-
- {{i18n
- "admin.groups.manage.interaction.members_visibility_levels.description"
- }}
+ {{#if this.membersVisibilityPrivate}}
+
+ {{i18n
+ "admin.groups.manage.interaction.members_visibility_levels.description"
+ }}
+
+ {{/if}}
{{/if}}
-
-{{/if}}
-
-
- {{i18n "groups.manage.interaction.posting"}}
-
-
{{i18n "groups.alias_levels.mentionable"}}
+
+
+ {{i18n "groups.manage.interaction.posting"}}
+
+ {{i18n "groups.alias_levels.mentionable"}}
-
-
-
-
- {{i18n "groups.alias_levels.messageable"}}
-
-
-
-
-{{#if this.canAdminGroup}}
-
-
-
+
- {{i18n "admin.groups.manage.interaction.publish_read_state"}}
-
-
-{{/if}}
+
+ {{i18n "groups.alias_levels.messageable"}}
+
+
+
+
+ {{#if this.canAdminGroup}}
+
+
+
+
+ {{i18n "admin.groups.manage.interaction.publish_read_state"}}
+
+
+ {{/if}}
+
+ {{#if this.showEmailSettings}}
+
+
+ {{i18n "admin.groups.manage.interaction.email"}}
+
+
+ {{i18n "admin.groups.manage.interaction.incoming_email"}}
+
+
+
+
+
+
+
+
+
+
+ {{/if}}
-{{#if this.showEmailSettings}}
-
- {{i18n "admin.groups.manage.interaction.email"}}
-
-
- {{i18n "admin.groups.manage.interaction.incoming_email"}}
+ {{i18n "groups.manage.interaction.notification"}}
-
+
+ {{i18n "groups.notification_level"}}
-
+
+
-
-{{/if}}
-
-
- {{i18n "groups.manage.interaction.notification"}}
-
-
-
- {{i18n "groups.notification_level"}}
-
-
-
-
-
-
-
\ No newline at end of file
+
+}
diff --git a/app/assets/javascripts/discourse/app/components/groups-form-membership-fields.gjs b/app/assets/javascripts/discourse/app/components/groups-form-membership-fields.gjs
index 152f9b3b31a..4d94c9434e7 100644
--- a/app/assets/javascripts/discourse/app/components/groups-form-membership-fields.gjs
+++ b/app/assets/javascripts/discourse/app/components/groups-form-membership-fields.gjs
@@ -1,9 +1,17 @@
-import Component from "@ember/component";
+import Component, { Input } from "@ember/component";
+import { fn, hash } from "@ember/helper";
+import { on } from "@ember/modifier";
import { action, computed } from "@ember/object";
import { not, readOnly } from "@ember/object/computed";
+import ExpandingTextArea from "discourse/components/expanding-text-area";
+import GroupFlairInputs from "discourse/components/group-flair-inputs";
+import PluginOutlet from "discourse/components/plugin-outlet";
+import withEventValue from "discourse/helpers/with-event-value";
import discourseComputed from "discourse/lib/decorators";
import AssociatedGroup from "discourse/models/associated-group";
import { i18n } from "discourse-i18n";
+import ComboBox from "select-kit/components/combo-box";
+import ListSetting from "select-kit/components/list-setting";
export default class GroupsFormMembershipFields extends Component {
tokenSeparator = "|";
@@ -69,158 +77,160 @@ export default class GroupsFormMembershipFields extends Component {
value.join(this.tokenSeparator)
);
}
-}
-
-
{{i18n
- "groups.manage.membership.access"
- }}
+
+
-{{#if this.model.can_admin_group}}
-
-
{{i18n
- "admin.groups.manage.membership.automatic"
- }}
+ {{#if this.model.can_admin_group}}
+
+ {{i18n
+ "admin.groups.manage.membership.automatic"
+ }}
-
- {{i18n
- "admin.groups.manage.membership.automatic_membership_email_domains"
- }}
-
+
+ {{i18n
+ "admin.groups.manage.membership.automatic_membership_email_domains"
+ }}
+
-
+
- {{#if this.showAssociatedGroups}}
-
- {{i18n
- "admin.groups.manage.membership.automatic_membership_associated_groups"
- }}
-
+ {{#if this.showAssociatedGroups}}
+
+ {{i18n
+ "admin.groups.manage.membership.automatic_membership_associated_groups"
+ }}
+
-
+
+ {{/if}}
+
+
+
+
+
+
+
+ {{i18n
+ "admin.groups.manage.membership.effects"
+ }}
+ {{i18n
+ "admin.groups.manage.membership.trust_levels_title"
+ }}
+
+
+
+
+
+ {{i18n "admin.groups.manage.membership.primary_group"}}
+
+
+
+
+
+ {{i18n "admin.groups.default_title"}}
+
+
+
+
+
+ {{i18n "admin.groups.default_title_description"}}
+
+
{{/if}}
-
-
-
-
-
-
- {{i18n
- "admin.groups.manage.membership.effects"
- }}
- {{i18n
- "admin.groups.manage.membership.trust_levels_title"
- }}
-
-
-
-
-
- {{i18n "admin.groups.manage.membership.primary_group"}}
-
-
-
-
-
- {{i18n "admin.groups.default_title"}}
-
-
-
-
-
- {{i18n "admin.groups.default_title_description"}}
-
-
-{{/if}}
-
-{{#if this.canEdit}}
-
-
-
-{{/if}}
\ No newline at end of file
+ {{#if this.canEdit}}
+
+
+
+ {{/if}}
+
+}
diff --git a/app/assets/javascripts/discourse/app/components/invite-panel.gjs b/app/assets/javascripts/discourse/app/components/invite-panel.gjs
index c03d32b8f5f..e98e04c28c2 100644
--- a/app/assets/javascripts/discourse/app/components/invite-panel.gjs
+++ b/app/assets/javascripts/discourse/app/components/invite-panel.gjs
@@ -1,13 +1,21 @@
-import Component from "@ember/component";
+import Component, { Textarea } from "@ember/component";
+import { fn, hash } from "@ember/helper";
import EmberObject, { action } from "@ember/object";
import { alias, and, equal, readOnly } from "@ember/object/computed";
import { service } from "@ember/service";
import { isEmpty } from "@ember/utils";
+import DButton from "discourse/components/d-button";
+import DiscourseLinkedText from "discourse/components/discourse-linked-text";
+import GeneratedInviteLink from "discourse/components/generated-invite-link";
+import TextField from "discourse/components/text-field";
+import htmlSafe from "discourse/helpers/html-safe";
import { computedI18n } from "discourse/lib/computed";
import discourseComputed from "discourse/lib/decorators";
import { getNativeContact } from "discourse/lib/pwa-utils";
import { emailValid } from "discourse/lib/utilities";
import { i18n } from "discourse-i18n";
+import EmailGroupUserChooser from "select-kit/components/email-group-user-chooser";
+import GroupChooser from "select-kit/components/group-chooser";
export default class InvitePanel extends Component {
@service site;
@@ -441,120 +449,122 @@ export default class InvitePanel extends Component {
});
}
}
-}
-{{#if this.inviteModel.error}}
-
- {{html-safe this.errorMessage}}
-
-{{/if}}
-
-
- {{#if this.inviteModel.finished}}
- {{#if this.inviteModel.inviteLink}}
-
- {{else}}
-
- {{html-safe this.successMessage}}
+
+ {{#if this.inviteModel.error}}
+
+ {{htmlSafe this.errorMessage}}
{{/if}}
- {{else}}
-
-
{{this.inviteInstructions}}
-
+
+ {{#if this.showCustomMessage}}
+
+
+
+
+ {{#if this.hasCustomMessage}}
+
+ {{/if}}
+
+ {{/if}}
+ {{/if}}
+
+ {{#if this.showApprovalMessage}}
+
+ {{i18n "invite.approval_not_required"}}
+
+ {{/if}}
- {{#if this.showGroups}}
-
-
- {{i18n "topic.automatically_add_to_groups"}}
-
-
- {{/if}}
-
- {{#if this.showCustomMessage}}
-
-
-
-
- {{#if this.hasCustomMessage}}
-
{{/if}}
-
- {{/if}}
- {{/if}}
-
- {{#if this.showApprovalMessage}}
-
- {{i18n "invite.approval_not_required"}}
-
- {{/if}}
-
-
-
\ No newline at end of file
+ {{/if}}
+
+
+}
diff --git a/app/assets/javascripts/discourse/app/components/modal/bookmark.gjs b/app/assets/javascripts/discourse/app/components/modal/bookmark.gjs
index 71cc08ca771..f63ac0b1f44 100644
--- a/app/assets/javascripts/discourse/app/components/modal/bookmark.gjs
+++ b/app/assets/javascripts/discourse/app/components/modal/bookmark.gjs
@@ -1,11 +1,22 @@
import Component from "@glimmer/component";
import { tracked } from "@glimmer/tracking";
+import { Input } from "@ember/component";
+import { fn } from "@ember/helper";
import { action } from "@ember/object";
import { and, notEmpty } from "@ember/object/computed";
+import didInsert from "@ember/render-modifiers/modifiers/did-insert";
import { service } from "@ember/service";
import ItsATrap from "@discourse/itsatrap";
import { Promise } from "rsvp";
-import { CLOSE_INITIATED_BY_CLICK_OUTSIDE } from "discourse/components/d-modal";
+import DButton from "discourse/components/d-button";
+import DModal, {
+ CLOSE_INITIATED_BY_CLICK_OUTSIDE,
+} from "discourse/components/d-modal";
+import DModalCancel from "discourse/components/d-modal-cancel";
+import TimeShortcutPicker from "discourse/components/time-shortcut-picker";
+import basePath from "discourse/helpers/base-path";
+import icon from "discourse/helpers/d-icon";
+import htmlSafe from "discourse/helpers/html-safe";
import { extractError } from "discourse/lib/ajax-error";
import { formattedReminderTime } from "discourse/lib/bookmark";
import KeyboardShortcuts from "discourse/lib/keyboard-shortcuts";
@@ -18,6 +29,7 @@ import {
import { now, parseCustomDatetime, startOfDay } from "discourse/lib/time-utils";
import { AUTO_DELETE_PREFERENCES } from "discourse/models/bookmark";
import { i18n } from "discourse-i18n";
+import ComboBox from "select-kit/components/combo-box";
const BOOKMARK_BINDINGS = {
enter: { handler: "saveAndClose" },
@@ -334,111 +346,113 @@ export default class BookmarkModal extends Component {
this.postDetectedLocalTimezone = localDateEl.dataset.timezone;
}
}
+
+
+
+ <:headerPrimaryAction>
+
+
+
+ <:body>
+
+
+
+
+
+ {{#if this.showOptions}}
+
+ {{i18n "bookmarks.auto_delete_preference.label"}}
+
+
+ {{/if}}
+
+ {{#if this.showExistingReminderAt}}
+
+ {{icon "far-clock"}}
+ {{i18n
+ "bookmarks.reminders.existing_reminder"
+ at_date_time=this.existingReminderAtFormatted
+ }}
+
+ {{/if}}
+
+
+
+ {{i18n "post.bookmarks.set_reminder"}}
+
+
+ {{#if this.userHasTimezoneSet}}
+
+ {{else}}
+
{{htmlSafe
+ (i18n "bookmarks.no_timezone" basePath=(basePath))
+ }}
+ {{/if}}
+
+
+
+ <:footer>
+
+
+ {{#if this.showDelete}}
+
+ {{/if}}
+
+
+
}
-
-
- <:headerPrimaryAction>
-
-
-
- <:body>
-
-
-
-
-
- {{#if this.showOptions}}
-
- {{i18n "bookmarks.auto_delete_preference.label"}}
-
-
- {{/if}}
-
- {{#if this.showExistingReminderAt}}
-
- {{d-icon "far-clock"}}
- {{i18n
- "bookmarks.reminders.existing_reminder"
- at_date_time=this.existingReminderAtFormatted
- }}
-
- {{/if}}
-
-
-
- {{i18n "post.bookmarks.set_reminder"}}
-
-
- {{#if this.userHasTimezoneSet}}
-
- {{else}}
-
{{html-safe
- (i18n "bookmarks.no_timezone" basePath=(base-path))
- }}
- {{/if}}
-
-
-
- <:footer>
-
-
- {{#if this.showDelete}}
-
- {{/if}}
-
-
\ No newline at end of file
diff --git a/app/assets/javascripts/discourse/app/components/modal/change-owner.gjs b/app/assets/javascripts/discourse/app/components/modal/change-owner.gjs
index ec328fb9e87..21261b0714a 100644
--- a/app/assets/javascripts/discourse/app/components/modal/change-owner.gjs
+++ b/app/assets/javascripts/discourse/app/components/modal/change-owner.gjs
@@ -1,10 +1,16 @@
import Component from "@glimmer/component";
import { tracked } from "@glimmer/tracking";
+import { hash } from "@ember/helper";
+import { on } from "@ember/modifier";
import { action } from "@ember/object";
import { isEmpty } from "@ember/utils";
+import DButton from "discourse/components/d-button";
+import DModal from "discourse/components/d-modal";
+import htmlSafe from "discourse/helpers/html-safe";
import DiscourseURL from "discourse/lib/url";
import Topic from "discourse/models/topic";
import { i18n } from "discourse-i18n";
+import EmailGroupUserChooser from "select-kit/components/email-group-user-chooser";
export default class ChangeOwnerModal extends Component {
@tracked saving = false;
@@ -56,47 +62,49 @@ export default class ChangeOwnerModal extends Component {
async updateNewOwner(selected) {
this.newOwner = selected.firstObject;
}
+
+
+
+ <:body>
+
+ {{htmlSafe
+ (i18n
+ (if
+ this.selectedPostsUsername
+ "topic.change_owner.instructions"
+ "topic.change_owner.instructions_without_old_user"
+ )
+ count=this.selectedPostsCount
+ old_user=this.selectedPostsUsername
+ )
+ }}
+
+
+
+
+ <:footer>
+
+
+
+
}
-
-
- <:body>
-
- {{html-safe
- (i18n
- (if
- this.selectedPostsUsername
- "topic.change_owner.instructions"
- "topic.change_owner.instructions_without_old_user"
- )
- count=this.selectedPostsCount
- old_user=this.selectedPostsUsername
- )
- }}
-
-
-
-
- <:footer>
-
-
-
\ No newline at end of file
diff --git a/app/assets/javascripts/discourse/app/components/modal/convert-to-public-topic.gjs b/app/assets/javascripts/discourse/app/components/modal/convert-to-public-topic.gjs
index bb44e9de9c5..185c59f2765 100644
--- a/app/assets/javascripts/discourse/app/components/modal/convert-to-public-topic.gjs
+++ b/app/assets/javascripts/discourse/app/components/modal/convert-to-public-topic.gjs
@@ -1,8 +1,13 @@
import Component from "@glimmer/component";
import { tracked } from "@glimmer/tracking";
+import { fn } from "@ember/helper";
import { action } from "@ember/object";
import { service } from "@ember/service";
+import DButton from "discourse/components/d-button";
+import DModal from "discourse/components/d-modal";
import { extractError } from "discourse/lib/ajax-error";
+import { i18n } from "discourse-i18n";
+import CategoryChooser from "select-kit/components/category-chooser";
export default class ConvertToPublicTopic extends Component {
@service appEvents;
@@ -28,34 +33,36 @@ export default class ConvertToPublicTopic extends Component {
this.saving = false;
}
}
-}
-
- <:body>
-
- {{i18n "topic.make_public.choose_category"}}
-
-
-
- <:footer>
-
-
-
-
\ No newline at end of file
+
+
+ <:body>
+
+ {{i18n "topic.make_public.choose_category"}}
+
+
+
+ <:footer>
+
+
+
+
+
+}
diff --git a/app/assets/javascripts/discourse/app/components/modal/edit-slow-mode.gjs b/app/assets/javascripts/discourse/app/components/modal/edit-slow-mode.gjs
index 4004d7b6d31..0ce1e3ca104 100644
--- a/app/assets/javascripts/discourse/app/components/modal/edit-slow-mode.gjs
+++ b/app/assets/javascripts/discourse/app/components/modal/edit-slow-mode.gjs
@@ -1,12 +1,18 @@
import Component from "@glimmer/component";
import { tracked } from "@glimmer/tracking";
+import { Input } from "@ember/component";
+import { fn } from "@ember/helper";
import { action } from "@ember/object";
import { service } from "@ember/service";
+import DButton from "discourse/components/d-button";
+import DModal from "discourse/components/d-modal";
+import FutureDateInput from "discourse/components/future-date-input";
import { fromSeconds, toSeconds } from "discourse/helpers/slow-mode";
import { extractError } from "discourse/lib/ajax-error";
import { timeShortcuts } from "discourse/lib/time-shortcut";
import Topic from "discourse/models/topic";
import { i18n } from "discourse-i18n";
+import ComboBox from "select-kit/components/combo-box";
const SLOW_MODE_OPTIONS = [
{
@@ -181,75 +187,77 @@ export default class EditSlowMode extends Component {
_parseValue(value) {
return parseInt(value, 10) || 0;
}
+
+
+
+ <:body>
+
+
+ {{i18n "topic.slow_mode_update.description"}}
+
+
+
+
+ {{i18n "topic.slow_mode_update.select"}}
+
+
+
+ {{#if this.showCustomSelect}}
+
+
+ {{i18n "topic.slow_mode_update.hours"}}
+
+
+
+ {{i18n "topic.slow_mode_update.minutes"}}
+
+
+
+ {{i18n "topic.slow_mode_update.seconds"}}
+
+
+
+ {{/if}}
+
+
+
+
+
+ <:footer>
+
+ {{#if @model.topic.slow_mode_seconds}}
+
+ {{/if}}
+
+
+
}
-
-
- <:body>
-
-
- {{i18n "topic.slow_mode_update.description"}}
-
-
-
-
- {{i18n "topic.slow_mode_update.select"}}
-
-
-
- {{#if this.showCustomSelect}}
-
-
- {{i18n "topic.slow_mode_update.hours"}}
-
-
-
- {{i18n "topic.slow_mode_update.minutes"}}
-
-
-
- {{i18n "topic.slow_mode_update.seconds"}}
-
-
-
- {{/if}}
-
-
-
-
-
- <:footer>
-
- {{#if @model.topic.slow_mode_seconds}}
-
- {{/if}}
-
-
\ No newline at end of file
diff --git a/app/assets/javascripts/discourse/app/components/modal/feature-topic.gjs b/app/assets/javascripts/discourse/app/components/modal/feature-topic.gjs
index 357d15faa4e..478fe97781e 100644
--- a/app/assets/javascripts/discourse/app/components/modal/feature-topic.gjs
+++ b/app/assets/javascripts/discourse/app/components/modal/feature-topic.gjs
@@ -1,5 +1,6 @@
import Component from "@glimmer/component";
import { tracked } from "@glimmer/tracking";
+import { fn } from "@ember/helper";
import EmberObject, { action } from "@ember/object";
import { service } from "@ember/service";
import { htmlSafe } from "@ember/template";
@@ -259,7 +260,7 @@ export default class FeatureTopic extends Component {
class="pin-until"
@clearable={{true}}
@input={{@model.topic.pinnedInCategoryUntil}}
- @onChangeInput={{action
+ @onChangeInput={{fn
(mut @model.topic.pinnedInCategoryUntil)
}}
/>
@@ -277,7 +278,7 @@ export default class FeatureTopic extends Component {
class="pin-until"
@clearable={{true}}
@input={{@model.topic.pinnedInCategoryUntil}}
- @onChangeInput={{action
+ @onChangeInput={{fn
(mut @model.topic.pinnedInCategoryUntil)
}}
/>
@@ -333,7 +334,7 @@ export default class FeatureTopic extends Component {
class="pin-until"
@clearable={{true}}
@input={{@model.topic.pinnedGloballyUntil}}
- @onChangeInput={{action
+ @onChangeInput={{fn
(mut @model.topic.pinnedGloballyUntil)
}}
/>
@@ -351,7 +352,7 @@ export default class FeatureTopic extends Component {
class="pin-until"
@clearable={{true}}
@input={{@model.topic.pinnedGloballyUntil}}
- @onChangeInput={{action
+ @onChangeInput={{fn
(mut @model.topic.pinnedGloballyUntil)
}}
/>
diff --git a/app/assets/javascripts/discourse/app/components/modal/group-add-members.gjs b/app/assets/javascripts/discourse/app/components/modal/group-add-members.gjs
index ef5ab5bbad8..007de99ff91 100644
--- a/app/assets/javascripts/discourse/app/components/modal/group-add-members.gjs
+++ b/app/assets/javascripts/discourse/app/components/modal/group-add-members.gjs
@@ -1,11 +1,17 @@
import Component from "@glimmer/component";
import { tracked } from "@glimmer/tracking";
+import { Input } from "@ember/component";
+import { hash } from "@ember/helper";
import { action } from "@ember/object";
import { service } from "@ember/service";
import { isEmpty } from "@ember/utils";
+import { and, not, or } from "truth-helpers";
+import DButton from "discourse/components/d-button";
+import DModal from "discourse/components/d-modal";
import { extractError } from "discourse/lib/ajax-error";
import { emailValid } from "discourse/lib/utilities";
import { i18n } from "discourse-i18n";
+import EmailGroupUserChooser from "select-kit/components/email-group-user-chooser";
export default class GroupAddMembers extends Component {
@service currentUser;
@@ -72,65 +78,67 @@ export default class GroupAddMembers extends Component {
this.loading = false;
}
}
-}
-
- <:body>
-
-
- <:footer>
-
-
-
\ No newline at end of file
+ {{#if @model.can_admin_group}}
+
+
+
+ {{i18n "groups.add_members.set_owner"}}
+
+
+ {{/if}}
+
+
+
+
+ {{i18n "groups.add_members.notify_users"}}
+
+
+
+
+ <:footer>
+
+
+
+
+}
diff --git a/app/assets/javascripts/discourse/app/components/modal/ignore-duration-with-username.gjs b/app/assets/javascripts/discourse/app/components/modal/ignore-duration-with-username.gjs
index cc7e3cc41e0..a76ee05ec31 100644
--- a/app/assets/javascripts/discourse/app/components/modal/ignore-duration-with-username.gjs
+++ b/app/assets/javascripts/discourse/app/components/modal/ignore-duration-with-username.gjs
@@ -1,11 +1,18 @@
import Component from "@glimmer/component";
import { tracked } from "@glimmer/tracking";
+import { fn, hash } from "@ember/helper";
import { action } from "@ember/object";
import { service } from "@ember/service";
+import ConditionalLoadingSpinner from "discourse/components/conditional-loading-spinner";
+import DButton from "discourse/components/d-button";
+import DModal from "discourse/components/d-modal";
+import FutureDateInput from "discourse/components/future-date-input";
+import icon from "discourse/helpers/d-icon";
import { popupAjaxError } from "discourse/lib/ajax-error";
import { timeShortcuts } from "discourse/lib/time-shortcut";
import User from "discourse/models/user";
import { i18n } from "discourse-i18n";
+import EmailGroupUserChooser from "select-kit/components/email-group-user-chooser";
export default class IgnoreDurationModal extends Component {
@service currentUser;
@@ -67,43 +74,47 @@ export default class IgnoreDurationModal extends Component {
updateIgnoredUsername(selected) {
this.ignoredUsername = selected.firstObject;
}
-}
-
- <:body>
- {{#if this.enableSelection}}
-
-
{{d-icon "far-eye-slash" class="icon"}}
- {{i18n "user.user_notifications.ignore_duration_username"}}
-
+
+ <:body>
+ {{#if this.enableSelection}}
+
+ {{icon "far-eye-slash" class="icon"}}
+ {{i18n
+ "user.user_notifications.ignore_duration_username"
+ }}
+
+
+ {{/if}}
+
-
- {{/if}}
-
- {{i18n "user.user_notifications.ignore_duration_note"}}
-
- <:footer>
-
-
-
-
\ No newline at end of file
+
{{i18n "user.user_notifications.ignore_duration_note"}}
+
+ <:footer>
+
+
+
+
+
+}
diff --git a/app/assets/javascripts/discourse/app/components/modal/move-to-topic.gjs b/app/assets/javascripts/discourse/app/components/modal/move-to-topic.gjs
index c669353c230..a863c76ccae 100644
--- a/app/assets/javascripts/discourse/app/components/modal/move-to-topic.gjs
+++ b/app/assets/javascripts/discourse/app/components/modal/move-to-topic.gjs
@@ -1,12 +1,25 @@
import Component from "@glimmer/component";
import { tracked } from "@glimmer/tracking";
+import { Input } from "@ember/component";
+import { fn, hash } from "@ember/helper";
import { action } from "@ember/object";
import { service } from "@ember/service";
import { isEmpty } from "@ember/utils";
+import ChooseMessage from "discourse/components/choose-message";
+import ChooseTopic from "discourse/components/choose-topic";
+import DButton from "discourse/components/d-button";
+import DModal from "discourse/components/d-modal";
+import PluginOutlet from "discourse/components/plugin-outlet";
+import RadioButton from "discourse/components/radio-button";
+import TextField from "discourse/components/text-field";
+import htmlSafe from "discourse/helpers/html-safe";
import { applyValueTransformer } from "discourse/lib/transformer";
import DiscourseURL from "discourse/lib/url";
import { mergeTopic, movePosts } from "discourse/models/topic";
import { i18n } from "discourse-i18n";
+import CategoryChooser from "select-kit/components/category-chooser";
+import EmailGroupUserChooser from "select-kit/components/email-group-user-chooser";
+import TagChooser from "select-kit/components/tag-chooser";
export default class MoveToTopic extends Component {
@service currentUser;
@@ -192,270 +205,278 @@ export default class MoveToTopic extends Component {
newTopicSelected(topic) {
this.selectedTopic = topic;
}
+
+
+
+ <:body>
+ {{#if @model.topic.isPrivateMessage}}
+
+ {{#if this.canSplitToPM}}
+
+
+ {{i18n "topic.move_to_new_message.radio_label"}}
+
+ {{/if}}
+
+
+
+ {{i18n "topic.move_to_existing_message.radio_label"}}
+
+
+
+ {{#if this.canSplitTopic}}
+ {{#if this.newMessage}}
+
+ {{htmlSafe
+ (i18n
+ "topic.move_to_new_message.instructions"
+ count=@model.selectedPostsCount
+ )
+ }}
+
+
+ {{i18n
+ "topic.move_to_new_message.message_title"
+ }}
+
+
+ {{#if this.canTagMessages}}
+ {{i18n "tagging.tags"}}
+
+ {{/if}}
+
+ {{/if}}
+ {{/if}}
+
+ {{#if this.existingMessage}}
+
+ {{htmlSafe
+ (i18n
+ "topic.move_to_existing_message.instructions"
+ count=@model.selectedPostsCount
+ )
+ }}
+
+
+
+
+ {{i18n "topic.move_to_new_message.participants"}}
+
+
+ {{#if this.selectedTopic}}
+
+
+
+ {{i18n "topic.merge_topic.chronological_order"}}
+
+ {{/if}}
+
+ {{/if}}
+
+ {{else}}
+
+ {{#if this.canSplitTopic}}
+
+
+ {{i18n "topic.split_topic.radio_label"}}
+
+ {{/if}}
+
+
+
+ {{i18n "topic.merge_topic.radio_label"}}
+
+
+ {{#if this.canSplitToPM}}
+
+
+ {{i18n "topic.move_to_new_message.radio_label"}}
+
+ {{/if}}
+
+
+
+
+ {{#if this.existingTopic}}
+
+ {{htmlSafe
+ (i18n
+ "topic.merge_topic.instructions"
+ count=@model.selectedPostsCount
+ )
+ }}
+
+
+
+
+ {{#if this.selectedTopic}}
+
+
+
+ {{i18n "topic.merge_topic.chronological_order"}}
+
+ {{/if}}
+
+ {{/if}}
+
+ {{#if this.canSplitTopic}}
+ {{#if this.newTopic}}
+
+ {{htmlSafe
+ (i18n
+ "topic.split_topic.instructions"
+ count=@model.selectedPostsCount
+ )
+ }}
+
+
+
+
{{i18n "topic.split_topic.topic_name"}}
+
+
+
+
+
+
{{i18n "categories.category"}}
+
+
+
+
+ {{#if this.canAddTags}}
+
+
{{i18n "tagging.tags"}}
+
+
+
+ {{/if}}
+
+ {{/if}}
+ {{/if}}
+
+ {{#if this.canSplitTopic}}
+ {{#if this.newMessage}}
+
+ {{htmlSafe
+ (i18n
+ "topic.move_to_new_message.instructions"
+ count=@model.selectedPostsCount
+ )
+ }}
+
+
+ {{i18n
+ "topic.move_to_new_message.message_title"
+ }}
+
+
+ {{#if this.canTagMessages}}
+ {{i18n "tagging.tags"}}
+
+ {{/if}}
+
+ {{/if}}
+ {{/if}}
+ {{/if}}
+
+ <:footer>
+
+
+
+
}
-
-
- <:body>
- {{#if @model.topic.isPrivateMessage}}
-
- {{#if this.canSplitToPM}}
-
-
- {{i18n "topic.move_to_new_message.radio_label"}}
-
- {{/if}}
-
-
-
- {{i18n "topic.move_to_existing_message.radio_label"}}
-
-
-
- {{#if this.canSplitTopic}}
- {{#if this.newMessage}}
-
- {{html-safe
- (i18n
- "topic.move_to_new_message.instructions"
- count=@model.selectedPostsCount
- )
- }}
-
-
- {{i18n "topic.move_to_new_message.message_title"}}
-
-
- {{#if this.canTagMessages}}
- {{i18n "tagging.tags"}}
-
- {{/if}}
-
- {{/if}}
- {{/if}}
-
- {{#if this.existingMessage}}
-
- {{html-safe
- (i18n
- "topic.move_to_existing_message.instructions"
- count=@model.selectedPostsCount
- )
- }}
-
-
-
-
- {{i18n "topic.move_to_new_message.participants"}}
-
-
- {{#if this.selectedTopic}}
-
-
-
- {{i18n "topic.merge_topic.chronological_order"}}
-
- {{/if}}
-
- {{/if}}
-
- {{else}}
-
- {{#if this.canSplitTopic}}
-
-
- {{i18n "topic.split_topic.radio_label"}}
-
- {{/if}}
-
-
-
- {{i18n "topic.merge_topic.radio_label"}}
-
-
- {{#if this.canSplitToPM}}
-
-
- {{i18n "topic.move_to_new_message.radio_label"}}
-
- {{/if}}
-
-
-
-
- {{#if this.existingTopic}}
-
- {{html-safe
- (i18n
- "topic.merge_topic.instructions" count=@model.selectedPostsCount
- )
- }}
-
-
-
-
- {{#if this.selectedTopic}}
-
-
-
- {{i18n "topic.merge_topic.chronological_order"}}
-
- {{/if}}
-
- {{/if}}
-
- {{#if this.canSplitTopic}}
- {{#if this.newTopic}}
-
- {{html-safe
- (i18n
- "topic.split_topic.instructions" count=@model.selectedPostsCount
- )
- }}
-
-
-
-
{{i18n "topic.split_topic.topic_name"}}
-
-
-
-
-
-
{{i18n "categories.category"}}
-
-
-
-
- {{#if this.canAddTags}}
-
-
{{i18n "tagging.tags"}}
-
-
-
- {{/if}}
-
- {{/if}}
- {{/if}}
-
- {{#if this.canSplitTopic}}
- {{#if this.newMessage}}
-
- {{html-safe
- (i18n
- "topic.move_to_new_message.instructions"
- count=@model.selectedPostsCount
- )
- }}
-
-
- {{i18n "topic.move_to_new_message.message_title"}}
-
-
- {{#if this.canTagMessages}}
- {{i18n "tagging.tags"}}
-
- {{/if}}
-
- {{/if}}
- {{/if}}
- {{/if}}
-
- <:footer>
-
-
-
\ No newline at end of file
diff --git a/app/assets/javascripts/discourse/app/components/modal/revise-and-reject-post-reviewable.gjs b/app/assets/javascripts/discourse/app/components/modal/revise-and-reject-post-reviewable.gjs
index d049e382a3a..323e0f1d7b3 100644
--- a/app/assets/javascripts/discourse/app/components/modal/revise-and-reject-post-reviewable.gjs
+++ b/app/assets/javascripts/discourse/app/components/modal/revise-and-reject-post-reviewable.gjs
@@ -1,10 +1,17 @@
import Component from "@glimmer/component";
import { tracked } from "@glimmer/tracking";
+import { Input } from "@ember/component";
+import { fn } from "@ember/helper";
import { action } from "@ember/object";
import { service } from "@ember/service";
import { isEmpty } from "@ember/utils";
+import DButton from "discourse/components/d-button";
+import DModal from "discourse/components/d-modal";
+import DTextarea from "discourse/components/d-textarea";
+import ReviewableQueuedPost from "discourse/components/reviewable-queued-post";
import { popupAjaxError } from "discourse/lib/ajax-error";
import { i18n } from "discourse-i18n";
+import ComboBox from "select-kit/components/combo-box";
const OTHER_REASON = "other_reason";
@@ -59,72 +66,74 @@ export default class ReviseAndRejectPostReviewable extends Component {
this.submitting = false;
}
}
-}
-
- <:body>
-
-
-
+
+
+ <:body>
+
+
+
-
- {{i18n
- "review.revise_and_reject_post.reason"
- }}
-
-
+
+ {{i18n
+ "review.revise_and_reject_post.reason"
+ }}
+
+
- {{#if this.showCustomReason}}
-
- {{i18n
- "review.revise_and_reject_post.custom_reason"
- }}
-
+ {{i18n
+ "review.revise_and_reject_post.custom_reason"
+ }}
+
+
+ {{/if}}
+
+
+ {{i18n
+ "review.revise_and_reject_post.feedback"
+ }}
+ ({{i18n
+ "review.revise_and_reject_post.optional"
+ }})
+
+
+
+
+ <:footer>
+
-
- {{/if}}
-
-
- {{i18n
- "review.revise_and_reject_post.feedback"
- }}
- ({{i18n
- "review.revise_and_reject_post.optional"
- }})
-
-
-
-
- <:footer>
-
-
-
-
\ No newline at end of file
+
+
+
+
+}
diff --git a/app/assets/javascripts/discourse/app/components/reviewable-field-category.gjs b/app/assets/javascripts/discourse/app/components/reviewable-field-category.gjs
index 83c7d89e1a4..3b77e52067f 100644
--- a/app/assets/javascripts/discourse/app/components/reviewable-field-category.gjs
+++ b/app/assets/javascripts/discourse/app/components/reviewable-field-category.gjs
@@ -1,6 +1,7 @@
import Component from "@glimmer/component";
import { tracked } from "@glimmer/tracking";
import { action } from "@ember/object";
+import CategoryChooser from "select-kit/components/category-chooser";
export default class extends Component {
@tracked categoryId = this.args.value;
@@ -10,6 +11,8 @@ export default class extends Component {
this.categoryId = category;
this.args.categoryChanged?.(category);
}
-}
-
\ No newline at end of file
+
+
+
+}
diff --git a/app/assets/javascripts/discourse/app/components/reviewable-field-tags.gjs b/app/assets/javascripts/discourse/app/components/reviewable-field-tags.gjs
index c0fe1a7ccee..477ebf00601 100644
--- a/app/assets/javascripts/discourse/app/components/reviewable-field-tags.gjs
+++ b/app/assets/javascripts/discourse/app/components/reviewable-field-tags.gjs
@@ -1,5 +1,7 @@
import Component from "@ember/component";
+import { hash } from "@ember/helper";
import { action } from "@ember/object";
+import MiniTagChooser from "select-kit/components/mini-tag-chooser";
export default class ReviewableFieldTags extends Component {
@action
@@ -13,10 +15,12 @@ export default class ReviewableFieldTags extends Component {
},
});
}
-}
-
\ No newline at end of file
+
+
+
+}
diff --git a/app/assets/javascripts/discourse/app/components/search-advanced-options.gjs b/app/assets/javascripts/discourse/app/components/search-advanced-options.gjs
index 01427c3dd03..91740e8832d 100644
--- a/app/assets/javascripts/discourse/app/components/search-advanced-options.gjs
+++ b/app/assets/javascripts/discourse/app/components/search-advanced-options.gjs
@@ -1,13 +1,24 @@
-import Component from "@ember/component";
+import Component, { Input } from "@ember/component";
+import { hash } from "@ember/helper";
+import { on } from "@ember/modifier";
import { action } from "@ember/object";
import {
attributeBindings,
classNames,
tagName,
} from "@ember-decorators/component";
+import DButton from "discourse/components/d-button";
+import DateInput from "discourse/components/date-input";
+import PluginOutlet from "discourse/components/plugin-outlet";
+import icon from "discourse/helpers/d-icon";
+import withEventValue from "discourse/helpers/with-event-value";
import { escapeExpression } from "discourse/lib/utilities";
import Category from "discourse/models/category";
import { i18n } from "discourse-i18n";
+import ComboBox from "select-kit/components/combo-box";
+import SearchAdvancedCategoryChooser from "select-kit/components/search-advanced-category-chooser";
+import TagChooser from "select-kit/components/tag-chooser";
+import UserChooser from "select-kit/components/user-chooser";
const REGEXP_BLOCKS = /(([^" \t\n\x0B\f\r]+)?(("[^"]+")?))/g;
@@ -453,32 +464,32 @@ export default class SearchAdvancedOptions extends Component {
}
@action
- onChangeSearchTermForAllTags(checked) {
- this.set("searchedTerms.special.all_tags", checked);
+ onChangeSearchTermForAllTags(event) {
+ this.set("searchedTerms.special.all_tags", event.target.checked);
this._updateSearchTermForTags();
}
@action
- onChangeSearchTermForSpecialInLikes(checked) {
- this.set("searchedTerms.special.in.likes", checked);
+ onChangeSearchTermForSpecialInLikes(event) {
+ this.set("searchedTerms.special.in.likes", event.target.checked);
this.updateInRegex(REGEXP_SPECIAL_IN_LIKES_MATCH, "likes");
}
@action
- onChangeSearchTermForSpecialInMessages(checked) {
- this.set("searchedTerms.special.in.messages", checked);
+ onChangeSearchTermForSpecialInMessages(event) {
+ this.set("searchedTerms.special.in.messages", event.target.checked);
this.updateInRegex(REGEXP_SPECIAL_IN_MESSAGES_MATCH, "messages");
}
@action
- onChangeSearchTermForSpecialInSeen(checked) {
- this.set("searchedTerms.special.in.seen", checked);
+ onChangeSearchTermForSpecialInSeen(event) {
+ this.set("searchedTerms.special.in.seen", event.target.checked);
this.updateInRegex(REGEXP_SPECIAL_IN_SEEN_MATCH, "seen");
}
@action
- onChangeSearchTermForSpecialInTitle(checked) {
- this.set("searchedTerms.special.in.title", checked);
+ onChangeSearchTermForSpecialInTitle(event) {
+ this.set("searchedTerms.special.in.title", event.target.checked);
this.updateInRegex(REGEXP_SPECIAL_IN_TITLE_MATCH, "title");
}
@@ -756,308 +767,293 @@ export default class SearchAdvancedOptions extends Component {
_updateSearchTerm(searchTerm) {
this.onChangeSearchTerm(searchTerm.trim());
}
-}
-
- {{i18n "search.advanced.title"}}
-
-
-
-
-
-
-
{{i18n
- "search.advanced.in_category.label"
- }}
-
-
-
-
-
- {{#if this.siteSettings.tagging_enabled}}
-
- {{/if}}
-
-
-
-
-
{{i18n
- "search.advanced.statuses.label"
- }}
-
-
-
-
-
-
-
- {{i18n "search.advanced.posted_by.label"}}
-
-
-
-
-
-
-
-
{{i18n
- "search.advanced.post.time.label"
- }}
-
-
-
-
-
-
-
-
-
-
+
- {{i18n "search.advanced.additional_options.label"}}
+ {{i18n "search.advanced.title"}}
-
- {{! TODO: Using a label here fails no-nested-interactive lint rule }}
-
{{i18n
- "search.advanced.post.count.label"
- }}
-
-
+
+
- {{d-icon "left-right"}}
-
+
{{i18n
+ "search.advanced.in_category.label"
+ }}
+
+
+
+
+
+ {{#if this.siteSettings.tagging_enabled}}
+
+ {{/if}}
+
+
+
+
+
{{i18n
+ "search.advanced.statuses.label"
+ }}
+
+
+
+
+
+
+
+ {{i18n "search.advanced.posted_by.label"}}
+
+
+
+
+
+
+
+
{{i18n
+ "search.advanced.post.time.label"
+ }}
+
+
+
+
+
+
+
-
-
-
+
+
+ {{i18n "search.advanced.additional_options.label"}}
+
+
- {{#if this.site.mobileView}}
-
- {{/if}}
-
\ No newline at end of file
+
+}
diff --git a/app/assets/javascripts/discourse/app/components/shared-draft-controls.gjs b/app/assets/javascripts/discourse/app/components/shared-draft-controls.gjs
index d3036d8bc1e..07d545fe594 100644
--- a/app/assets/javascripts/discourse/app/components/shared-draft-controls.gjs
+++ b/app/assets/javascripts/discourse/app/components/shared-draft-controls.gjs
@@ -2,8 +2,10 @@ import Component from "@ember/component";
import { action } from "@ember/object";
import { service } from "@ember/service";
import { tagName } from "@ember-decorators/component";
+import DButton from "discourse/components/d-button";
import discourseComputed from "discourse/lib/decorators";
import { i18n } from "discourse-i18n";
+import CategoryChooser from "select-kit/components/category-chooser";
@tagName("")
export default class SharedDraftControls extends Component {
@@ -43,31 +45,33 @@ export default class SharedDraftControls extends Component {
},
});
}
-}
-
- {{#if this.publishing}}
- {{i18n "shared_drafts.publishing"}}
- {{else}}
- {{i18n "shared_drafts.notice"}}
+
+
+ {{#if this.publishing}}
+ {{i18n "shared_drafts.publishing"}}
+ {{else}}
+ {{i18n "shared_drafts.notice"}}
-
- {{i18n "shared_drafts.destination_category"}}
-
-
+
+ {{i18n "shared_drafts.destination_category"}}
+
+
-
- {{#if this.validCategory}}
-
+
+ {{#if this.validCategory}}
+
+ {{/if}}
+
{{/if}}
- {{/if}}
-
\ No newline at end of file
+
+}
diff --git a/app/assets/javascripts/discourse/app/components/tag-groups-form.gjs b/app/assets/javascripts/discourse/app/components/tag-groups-form.gjs
index 0aa23d945c7..ac7ee3d5113 100644
--- a/app/assets/javascripts/discourse/app/components/tag-groups-form.gjs
+++ b/app/assets/javascripts/discourse/app/components/tag-groups-form.gjs
@@ -1,12 +1,18 @@
-import Component from "@ember/component";
+import Component, { Input } from "@ember/component";
+import { hash } from "@ember/helper";
import { action } from "@ember/object";
import { service } from "@ember/service";
import { isEmpty } from "@ember/utils";
import { tagName } from "@ember-decorators/component";
+import DButton from "discourse/components/d-button";
+import RadioButton from "discourse/components/radio-button";
+import TextField from "discourse/components/text-field";
import discourseComputed from "discourse/lib/decorators";
import { bufferedProperty } from "discourse/mixins/buffered-content";
import PermissionType from "discourse/models/permission-type";
import { i18n } from "discourse-i18n";
+import GroupChooser from "select-kit/components/group-chooser";
+import TagChooser from "select-kit/components/tag-chooser";
@tagName("")
export default class TagGroupsForm extends Component.extend(
@@ -92,136 +98,138 @@ export default class TagGroupsForm extends Component.extend(
this.model.destroyRecord().then(() => this.onDestroy?.()),
});
}
+
+
+
+ {{i18n "tagging.groups.name_placeholder"}}
+
+
+
+
+
+
+ {{i18n "tagging.groups.parent_tag_label"}}
+
+
+
+ {{i18n
+ "tagging.groups.parent_tag_description"
+ }}
+
+
+
+
+
+
+
+
+
+ {{i18n "tagging.groups.everyone_can_use"}}
+
+
+
+
+
+
+ {{i18n "tagging.groups.usable_only_by_groups"}}
+
+
+
+
+
+
+
+
+
+
+ {{i18n "tagging.groups.visible_only_to_groups"}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
}
-
-
- {{i18n "tagging.groups.name_placeholder"}}
-
-
-
-
-
-
- {{i18n "tagging.groups.parent_tag_label"}}
-
-
-
- {{i18n
- "tagging.groups.parent_tag_description"
- }}
-
-
-
-
-
-
-
-
-
- {{i18n "tagging.groups.everyone_can_use"}}
-
-
-
-
-
-
- {{i18n "tagging.groups.usable_only_by_groups"}}
-
-
-
-
-
-
-
-
-
-
- {{i18n "tagging.groups.visible_only_to_groups"}}
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/assets/javascripts/discourse/app/components/tag-info.gjs b/app/assets/javascripts/discourse/app/components/tag-info.gjs
index cf1a037ed4b..075e1723d0f 100644
--- a/app/assets/javascripts/discourse/app/components/tag-info.gjs
+++ b/app/assets/javascripts/discourse/app/components/tag-info.gjs
@@ -1,14 +1,25 @@
-import Component from "@ember/component";
+import Component, { Textarea } from "@ember/component";
+import { array, fn, hash } from "@ember/helper";
+import { on } from "@ember/modifier";
import { action } from "@ember/object";
import { and, reads } from "@ember/object/computed";
import { service } from "@ember/service";
import { htmlSafe } from "@ember/template";
import { isEmpty } from "@ember/utils";
import { tagName } from "@ember-decorators/component";
+import DButton from "discourse/components/d-button";
+import PluginOutlet from "discourse/components/plugin-outlet";
+import TextField from "discourse/components/text-field";
+import basePath from "discourse/helpers/base-path";
+import categoryLink from "discourse/helpers/category-link";
+import icon from "discourse/helpers/d-icon";
+import discourseTag from "discourse/helpers/discourse-tag";
+import withEventValue from "discourse/helpers/with-event-value";
import { ajax } from "discourse/lib/ajax";
import { popupAjaxError } from "discourse/lib/ajax-error";
import discourseComputed from "discourse/lib/decorators";
import { i18n } from "discourse-i18n";
+import TagChooser from "select-kit/components/tag-chooser";
@tagName("")
export default class TagInfo extends Component {
@@ -221,174 +232,181 @@ export default class TagInfo extends Component {
},
});
}
-}
-
- {{#if this.tagInfo}}
-
- {{#if this.editing}}
-
-
-
-
-
-
- {{#unless this.updateDisabled}}
-
+
+ {{#if this.tagInfo}}
+
+ {{#if this.editing}}
+
+
- {{/unless}}
-
-
-
- {{else}}
-
- {{discourse-tag this.tagInfo.name tagName="div"}}
- {{#if this.canAdminTag}}
-
{{d-icon "pencil"}}
+
+
+
+
+ {{#unless this.updateDisabled}}
+
+ {{/unless}}
+
+
+
+ {{else}}
+
+ {{discourseTag this.tagInfo.name tagName="div"}}
+ {{#if this.canAdminTag}}
+
{{icon "pencil"}}
+ {{/if}}
+
+ {{#if this.tagInfo.description}}
+
+ {{htmlSafe this.tagInfo.description}}
+
+ {{/if}}
{{/if}}
- {{#if this.tagInfo.description}}
-
-
{{html-safe this.tagInfo.description}}
+
+ {{~#if this.tagInfo.tag_group_names}}
+ {{this.tagGroupsInfo}}
+ {{/if~}}
+ {{~#if this.tagInfo.categories}}
+ {{this.categoriesInfo}}
+
+ {{#each this.tagInfo.categories as |category|}}
+ {{categoryLink category}}
+ {{/each}}
+ {{/if~}}
+ {{~#if this.nothingToShow}}
+ {{#if this.tagInfo.category_restricted}}
+ {{i18n "tagging.category_restricted"}}
+ {{else}}
+ {{htmlSafe (i18n "tagging.default_info")}}
+ {{#if this.canAdminTag}}
+ {{htmlSafe (i18n "tagging.staff_info" basePath=(basePath))}}
+ {{/if}}
+ {{/if}}
+ {{/if~}}
+
+ {{#if this.tagInfo.synonyms}}
+
+
{{i18n "tagging.synonyms"}}
+
{{htmlSafe
+ (i18n
+ "tagging.synonyms_description" base_tag_name=this.tagInfo.name
+ )
+ }}
+
+ {{#each this.tagInfo.synonyms as |tag|}}
+
+ {{/each}}
+
+
+ {{/if}}
+ {{#if this.editSynonymsMode}}
+
+ {{i18n
+ "tagging.add_synonyms_label"
+ }}
+
+
+ {{#if this.newSynonyms}}
+
+ {{/if}}
+
+
+ {{/if}}
+ {{#if this.canAdminTag}}
+
+
+
+
+ {{#if this.canAdminTag}}
+
+ {{/if}}
{{/if}}
{{/if}}
-
-
- {{~#if this.tagInfo.tag_group_names}}
- {{this.tagGroupsInfo}}
- {{/if~}}
- {{~#if this.tagInfo.categories}}
- {{this.categoriesInfo}}
-
- {{#each this.tagInfo.categories as |category|}}
- {{category-link category}}
- {{/each}}
- {{/if~}}
- {{~#if this.nothingToShow}}
- {{#if this.tagInfo.category_restricted}}
- {{i18n "tagging.category_restricted"}}
- {{else}}
- {{html-safe (i18n "tagging.default_info")}}
- {{#if this.canAdminTag}}
- {{html-safe (i18n "tagging.staff_info" basePath=(base-path))}}
- {{/if}}
- {{/if}}
- {{/if~}}
-
- {{#if this.tagInfo.synonyms}}
-
-
{{i18n "tagging.synonyms"}}
-
{{html-safe
- (i18n
- "tagging.synonyms_description" base_tag_name=this.tagInfo.name
- )
- }}
-
- {{#each this.tagInfo.synonyms as |tag|}}
-
- {{/each}}
-
-
- {{/if}}
- {{#if this.editSynonymsMode}}
-
- {{i18n "tagging.add_synonyms_label"}}
-
-
- {{#if this.newSynonyms}}
-
- {{/if}}
-
-
- {{/if}}
- {{#if this.canAdminTag}}
-
-
-
-
- {{#if this.canAdminTag}}
-
- {{/if}}
-
- {{/if}}
- {{/if}}
- {{#if this.loading}}
-
{{i18n "loading"}}
- {{/if}}
-
\ No newline at end of file
+ {{#if this.loading}}
+
{{i18n "loading"}}
+ {{/if}}
+
+
+}
diff --git a/app/assets/javascripts/discourse/app/components/time-input.gjs b/app/assets/javascripts/discourse/app/components/time-input.gjs
index 8795b4672a6..33c40cd5b4d 100644
--- a/app/assets/javascripts/discourse/app/components/time-input.gjs
+++ b/app/assets/javascripts/discourse/app/components/time-input.gjs
@@ -1,8 +1,10 @@
import Component from "@ember/component";
+import { hash } from "@ember/helper";
import { action, computed } from "@ember/object";
import { htmlSafe } from "@ember/template";
import { isPresent } from "@ember/utils";
import { classNames } from "@ember-decorators/component";
+import ComboBox from "select-kit/components/combo-box";
function convertMinutes(num) {
return { hours: Math.floor(num / 60), minutes: num % 60 };
@@ -184,17 +186,19 @@ export default class TimeInput extends Component {
}
}
}
-}
-
\ No newline at end of file
+
+
+
+}
diff --git a/app/assets/javascripts/discourse/app/components/topic-footer-buttons.gjs b/app/assets/javascripts/discourse/app/components/topic-footer-buttons.gjs
index 4cf7b89cbb2..c85a31069e9 100644
--- a/app/assets/javascripts/discourse/app/components/topic-footer-buttons.gjs
+++ b/app/assets/javascripts/discourse/app/components/topic-footer-buttons.gjs
@@ -1,13 +1,28 @@
import Component from "@ember/component";
+import { concat, hash } from "@ember/helper";
import { computed } from "@ember/object";
import { alias, or } from "@ember/object/computed";
import { getOwner } from "@ember/owner";
import { attributeBindings } from "@ember-decorators/component";
+import { eq, gt } from "truth-helpers";
+import BookmarkMenu from "discourse/components/bookmark-menu";
+import DButton from "discourse/components/d-button";
+import DropdownMenu from "discourse/components/dropdown-menu";
+import PluginOutlet from "discourse/components/plugin-outlet";
+import TopicAdminMenu from "discourse/components/topic-admin-menu";
+import UserTip from "discourse/components/user-tip";
+import concatClass from "discourse/helpers/concat-class";
+import icon from "discourse/helpers/d-icon";
import discourseComputed from "discourse/lib/decorators";
import { NotificationLevels } from "discourse/lib/notification-levels";
import { getTopicFooterButtons } from "discourse/lib/register-topic-footer-button";
import { getTopicFooterDropdowns } from "discourse/lib/register-topic-footer-dropdown";
import TopicBookmarkManager from "discourse/lib/topic-bookmark-manager";
+import { i18n } from "discourse-i18n";
+import DropdownSelectBox from "select-kit/components/dropdown-select-box";
+import PinnedButton from "select-kit/components/pinned-button";
+import TopicNotificationsButton from "select-kit/components/topic-notifications-button";
+import DMenu from "float-kit/components/d-menu";
@attributeBindings("role")
export default class TopicFooterButtons extends Component {
@@ -84,185 +99,190 @@ export default class TopicFooterButtons extends Component {
showBookmarkLabel(isPM) {
return !isPM;
}
-}
-
-
-
+
+
+
+
- {{#each this.inlineActionables as |actionable|}}
- {{#if (eq actionable.type "inline-button")}}
- {{#if (eq actionable.id "bookmark")}}
-
- {{else}}
-
+ {{else}}
+
+ {{/if}}
+ {{else}}
+
+ {{/if}}
+ {{/each}}
+
+ {{#if this.site.mobileView}}
+ {{#if this.loneDropdownButton}}
+
+ {{else if (gt this.dropdownButtons.length 1)}}
+
+ {{/if}}
+
+
+
+ {{#if this.showNotificationsButton}}
+
+ {{/if}}
{{/if}}
- {{else}}
-
- {{/if}}
- {{/each}}
+
- {{#if this.site.mobileView}}
- {{#if this.loneDropdownButton}}
+
+
+ {{#if this.topic.details.can_create_post}}
- {{else if (gt this.dropdownButtons.length 1)}}
-
{{/if}}
+
+
+
+ {{#if this.site.desktopView}}
{{#if this.showNotificationsButton}}
+
+ {{#if this.showNotificationUserTip}}
+
+ {{/if}}
{{/if}}
{{/if}}
-
-
-
- {{#if this.topic.details.can_create_post}}
-
- {{/if}}
-
-
-
-
-{{#if this.site.desktopView}}
-
-
- {{#if this.showNotificationsButton}}
-
-
- {{#if this.showNotificationUserTip}}
-
- {{/if}}
- {{/if}}
-{{/if}}
-
-
\ No newline at end of file
+
+}
diff --git a/app/assets/javascripts/discourse/app/components/user-fields/dropdown.gjs b/app/assets/javascripts/discourse/app/components/user-fields/dropdown.gjs
index a8f80088ebe..1e2d3569952 100644
--- a/app/assets/javascripts/discourse/app/components/user-fields/dropdown.gjs
+++ b/app/assets/javascripts/discourse/app/components/user-fields/dropdown.gjs
@@ -1,24 +1,31 @@
+import { concat, fn, hash } from "@ember/helper";
+import htmlSafe from "discourse/helpers/html-safe";
+import { i18n } from "discourse-i18n";
+import ComboBox from "select-kit/components/combo-box";
import UserFieldBase from "./base";
-export default class UserFieldDropdown extends UserFieldBase {}
+export default class UserFieldDropdown extends UserFieldBase {
+
+
+ {{this.field.name}}
+ {{~#unless this.field.required}}
+ {{i18n "user_fields.optional"}}{{/unless~}}
+
-
- {{this.field.name}}
- {{~#unless this.field.required}} {{i18n "user_fields.optional"}}{{/unless~}}
-
-
-
-
-
{{html-safe this.field.description}}
-
\ No newline at end of file
+
+
+
{{htmlSafe this.field.description}}
+
+
+}
diff --git a/app/assets/javascripts/discourse/app/components/user-fields/multiselect.gjs b/app/assets/javascripts/discourse/app/components/user-fields/multiselect.gjs
index 3a23eb211b9..71d01ef989f 100644
--- a/app/assets/javascripts/discourse/app/components/user-fields/multiselect.gjs
+++ b/app/assets/javascripts/discourse/app/components/user-fields/multiselect.gjs
@@ -1,24 +1,31 @@
+import { concat, fn, hash } from "@ember/helper";
+import htmlSafe from "discourse/helpers/html-safe";
+import { i18n } from "discourse-i18n";
+import MultiSelect from "select-kit/components/multi-select";
import UserFieldBase from "./base";
-export default class UserFieldMultiselect extends UserFieldBase {}
+export default class UserFieldMultiselect extends UserFieldBase {
+
+
+ {{this.field.name}}
+ {{~#unless this.field.required}}
+ {{i18n "user_fields.optional"}}{{/unless~}}
+
-
- {{this.field.name}}
- {{~#unless this.field.required}} {{i18n "user_fields.optional"}}{{/unless~}}
-
-
-
-
-
{{html-safe this.field.description}}
-
\ No newline at end of file
+
+
+
{{htmlSafe this.field.description}}
+
+
+}
diff --git a/app/assets/javascripts/discourse/app/components/user-notification-schedule-day.gjs b/app/assets/javascripts/discourse/app/components/user-notification-schedule-day.gjs
index 85a3c3bb6a2..75204a594f3 100644
--- a/app/assets/javascripts/discourse/app/components/user-notification-schedule-day.gjs
+++ b/app/assets/javascripts/discourse/app/components/user-notification-schedule-day.gjs
@@ -1,31 +1,35 @@
import Component from "@ember/component";
import { tagName } from "@ember-decorators/component";
-import { i18n } from "discourse/lib/computed";
+import { i18n as computedI18n } from "discourse/lib/computed";
+import { i18n } from "discourse-i18n";
+import ComboBox from "select-kit/components/combo-box";
@tagName("")
export default class UserNotificationScheduleDay extends Component {
- @i18n("day", "user.notification_schedule.%@") dayLabel;
-}
+ @computedI18n("day", "user.notification_schedule.%@") dayLabel;
-
- {{this.dayLabel}}
-
-
-
- {{#if this.endTimeOptions}}
- {{i18n "user.notification_schedule.to"}}
-
-
-
- {{/if}}
-
\ No newline at end of file
+
+
+ {{this.dayLabel}}
+
+
+
+ {{#if this.endTimeOptions}}
+ {{i18n "user.notification_schedule.to"}}
+
+
+
+ {{/if}}
+
+
+}
diff --git a/app/assets/javascripts/discourse/app/components/user-preferences/categories.gjs b/app/assets/javascripts/discourse/app/components/user-preferences/categories.gjs
index dc02ee527e8..03774282220 100644
--- a/app/assets/javascripts/discourse/app/components/user-preferences/categories.gjs
+++ b/app/assets/javascripts/discourse/app/components/user-preferences/categories.gjs
@@ -1,110 +1,125 @@
-
-
{{i18n "user.categories_settings"}}
+import { fn, hash } from "@ember/helper";
+import PluginOutlet from "discourse/components/plugin-outlet";
+import icon from "discourse/helpers/d-icon";
+import { i18n } from "discourse-i18n";
+import CategorySelector from "select-kit/components/category-selector";
-
-
{{i18n
- "user.watched_categories_instructions"
- }}
+const Categories =
+
+
{{i18n "user.categories_settings"}}
-
-
{{i18n
- "user.tracked_categories_instructions"
- }}
-
-
- {{d-icon "d-watching-first"}}
- {{i18n "user.watched_first_post_categories"}}
-
-
-
{{i18n
- "user.watched_first_post_categories_instructions"
- }}
-
- {{#if @siteSettings.mute_all_categories_by_default}}
- {{d-icon "d-regular"}} {{i18n "user.regular_categories"}}
-
-
-
{{i18n
- "user.regular_categories_instructions"
- }}
- {{else}}
-
-
{{i18n
- (if
- @hideMutedTags
- "user.muted_categories_instructions"
- "user.muted_categories_instructions_dont_hide"
- )
+ "user.watched_categories_instructions"
}}
- {{/if}}
-
-
-
-
+
+ {{i18n
+ "user.tracked_categories_instructions"
+ }}
-
+
+ {{icon "d-watching-first"}}
+ {{i18n "user.watched_first_post_categories"}}
+
+
+ {{i18n
+ "user.watched_first_post_categories_instructions"
+ }}
-
-
-
\ No newline at end of file
+ {{#if @siteSettings.mute_all_categories_by_default}}
+
+ {{icon "d-regular"}} {{i18n "user.regular_categories"}}
+
+
+ {{i18n
+ "user.regular_categories_instructions"
+ }}
+ {{else}}
+
+
+ {{i18n
+ (if
+ @hideMutedTags
+ "user.muted_categories_instructions"
+ "user.muted_categories_instructions_dont_hide"
+ )
+ }}
+ {{/if}}
+
+
+
+
+
+
+
+
+
+
+
+;
+export default Categories;
diff --git a/app/assets/javascripts/discourse/app/components/user-preferences/tags.gjs b/app/assets/javascripts/discourse/app/components/user-preferences/tags.gjs
index 65c751fa1e6..cee5df3e4d6 100644
--- a/app/assets/javascripts/discourse/app/components/user-preferences/tags.gjs
+++ b/app/assets/javascripts/discourse/app/components/user-preferences/tags.gjs
@@ -1,75 +1,84 @@
-{{#if @siteSettings.tagging_enabled}}
-
-
{{i18n "user.tag_settings"}}
+import { hash } from "@ember/helper";
+import PluginOutlet from "discourse/components/plugin-outlet";
+import icon from "discourse/helpers/d-icon";
+import { i18n } from "discourse-i18n";
+import TagChooser from "select-kit/components/tag-chooser";
-
-
-
-
-{{/if}}
\ No newline at end of file
+
+
+ {{/if}}
+;
+export default Tags;
diff --git a/app/assets/javascripts/discourse/app/controllers/user.js b/app/assets/javascripts/discourse/app/controllers/user.js
index b1e285e7d26..a0d67a2f63e 100644
--- a/app/assets/javascripts/discourse/app/controllers/user.js
+++ b/app/assets/javascripts/discourse/app/controllers/user.js
@@ -87,7 +87,7 @@ export default class UserController extends Controller {
ariaLabel: this.collapsedInfo
? "user.sr_expand_profile"
: "user.sr_collapse_profile",
- action: "toggleProfile",
+ action: this.toggleProfile,
};
}
diff --git a/app/assets/javascripts/discourse/app/templates/full-page-search.gjs b/app/assets/javascripts/discourse/app/templates/full-page-search.gjs
index e13ecc4eb82..9dc7b3d9f51 100644
--- a/app/assets/javascripts/discourse/app/templates/full-page-search.gjs
+++ b/app/assets/javascripts/discourse/app/templates/full-page-search.gjs
@@ -1,314 +1,361 @@
-{{#if this.loading}}
- {{hide-application-footer}}
-{{/if}}
+import { Input } from "@ember/component";
+import { fn, hash } from "@ember/helper";
+import { on } from "@ember/modifier";
+import RouteTemplate from "ember-route-template";
+import { or } from "truth-helpers";
+import ConditionalLoadingSpinner from "discourse/components/conditional-loading-spinner";
+import DButton from "discourse/components/d-button";
+import GoogleSearch from "discourse/components/google-search";
+import LoadMore from "discourse/components/load-more";
+import PluginOutlet from "discourse/components/plugin-outlet";
+import SearchAdvancedOptions from "discourse/components/search-advanced-options";
+import SearchResultEntries from "discourse/components/search-result-entries";
+import SearchTextField from "discourse/components/search-text-field";
+import TopicBulkSelectDropdown from "discourse/components/topic-list/topic-bulk-select-dropdown";
+import UserLink from "discourse/components/user-link";
+import avatar from "discourse/helpers/avatar";
+import bodyClass from "discourse/helpers/body-class";
+import categoryLink from "discourse/helpers/category-link";
+import hideApplicationFooter from "discourse/helpers/hide-application-footer";
+import htmlSafe from "discourse/helpers/html-safe";
+import loadingSpinner from "discourse/helpers/loading-spinner";
+import { i18n } from "discourse-i18n";
+import ComboBox from "select-kit/components/combo-box";
-{{body-class "search-page"}}
-
-
-
-
-
-
-
-
- {{#if this.hasResults}}
- {{#if this.usingDefaultSearchType}}
-
- {{#if this.canBulkSelect}}
-
- {{#if this.bulkSelectHelper.selected}}
-
- {{/if}}
- {{/if}}
-
- {{#if this.bulkSelectEnabled}}
- {{#if this.hasUnselectedResults}}
-
- {{/if}}
-
- {{#if this.hasSelection}}
-
- {{/if}}
- {{/if}}
-
-
-
- {{i18n "search.sort_by"}}
-
-
-
-
- {{/if}}
- {{/if}}
-
-
+
+