From be56f18cddc532fdb439dc048217590d02b20a05 Mon Sep 17 00:00:00 2001 From: Penar Musaraj Date: Fri, 5 Oct 2018 09:48:17 -0400 Subject: [PATCH] Replace deprecated dropdown-button with DropdownSelectBoxComponent (#6451) --- app/assets/javascripts/application.js | 1 - .../components/dropdown-button.js.es6 | 78 ------------------- .../components/group-member-dropdown.js.es6 | 27 ++++--- .../components/tags-admin-dropdown.js.es6 | 27 +++---- .../stylesheets/common/base/_topic-list.scss | 1 + .../components/group-member-dropdown.scss | 3 + .../components/group-member-dropdown.scss | 9 --- .../components/group-member-dropdown.scss | 9 --- 8 files changed, 33 insertions(+), 122 deletions(-) delete mode 100644 app/assets/javascripts/discourse/components/dropdown-button.js.es6 create mode 100644 app/assets/stylesheets/common/components/group-member-dropdown.scss delete mode 100644 app/assets/stylesheets/desktop/components/group-member-dropdown.scss delete mode 100644 app/assets/stylesheets/mobile/components/group-member-dropdown.scss diff --git a/app/assets/javascripts/application.js b/app/assets/javascripts/application.js index ef0d72ceb6e..6cf6807169d 100644 --- a/app/assets/javascripts/application.js +++ b/app/assets/javascripts/application.js @@ -73,7 +73,6 @@ //= require ./discourse/controllers/discovery-sortable //= require ./discourse/controllers/navigation/default //= require ./discourse/components/edit-category-panel -//= require ./discourse/components/dropdown-button //= require ./discourse/lib/link-mentions //= require ./discourse/components/site-header //= require ./discourse/components/d-editor diff --git a/app/assets/javascripts/discourse/components/dropdown-button.js.es6 b/app/assets/javascripts/discourse/components/dropdown-button.js.es6 deleted file mode 100644 index 52557fe4db9..00000000000 --- a/app/assets/javascripts/discourse/components/dropdown-button.js.es6 +++ /dev/null @@ -1,78 +0,0 @@ -import { iconHTML } from "discourse-common/lib/icon-library"; -import { bufferedRender } from "discourse-common/lib/buffered-render"; - -export default Ember.Component.extend( - bufferedRender({ - classNameBindings: [":btn-group", "hidden"], - rerenderTriggers: ["text", "longDescription"], - - _bindClick: function() { - // If there's a click handler, call it - if (this.clicked) { - const self = this; - this.$().on("click.dropdown-button", "ul li", function(e) { - e.preventDefault(); - if ($(e.currentTarget).data("id") !== self.get("activeItem")) { - self.clicked($(e.currentTarget).data("id")); - } - self.$(".dropdown-toggle").dropdown("toggle"); - return false; - }); - } - }.on("didInsertElement"), - - _unbindClick: function() { - this.$().off("click.dropdown-button", "ul li"); - }.on("willDestroyElement"), - - buildBuffer(buffer) { - const title = this.get("title"); - if (title) { - buffer.push("

" + title + "

"); - } - - buffer.push( - `` - ); - buffer.push(""); - - const desc = this.get("longDescription"); - if (desc) { - buffer.push("

"); - buffer.push(desc); - buffer.push("

"); - } - } - }) -); diff --git a/app/assets/javascripts/discourse/components/group-member-dropdown.js.es6 b/app/assets/javascripts/discourse/components/group-member-dropdown.js.es6 index bb7533630cd..92770a2d140 100644 --- a/app/assets/javascripts/discourse/components/group-member-dropdown.js.es6 +++ b/app/assets/javascripts/discourse/components/group-member-dropdown.js.es6 @@ -1,19 +1,22 @@ -import { iconHTML } from "discourse-common/lib/icon-library"; -import DropdownButton from "discourse/components/dropdown-button"; import computed from "ember-addons/ember-computed-decorators"; +import DropdownSelectBoxComponent from "select-kit/components/dropdown-select-box"; -export default DropdownButton.extend({ - buttonExtraClasses: "no-text", - title: "", - text: iconHTML("wrench"), - classNames: ["group-member-dropdown"], +export default DropdownSelectBoxComponent.extend({ + pluginApiIdentifiers: ["group-member-dropdown"], + classNames: "group-member-dropdown", + showFullTitle: false, + allowInitialValueMutation: false, + allowAutoSelectFirst: false, + headerIcon: ["wrench"], + + autoHighlight() {}, @computed("member.owner") - dropDownContent(isOwner) { + content(isOwner) { const items = [ { id: "removeMember", - title: I18n.t("groups.members.remove_member"), + name: I18n.t("groups.members.remove_member"), description: I18n.t("groups.members.remove_member_description", { username: this.get("member.username") }), @@ -25,7 +28,7 @@ export default DropdownButton.extend({ if (isOwner) { items.push({ id: "removeOwner", - title: I18n.t("groups.members.remove_owner"), + name: I18n.t("groups.members.remove_owner"), description: I18n.t("groups.members.remove_owner_description", { username: this.get("member.username") }), @@ -34,7 +37,7 @@ export default DropdownButton.extend({ } else { items.push({ id: "makeOwner", - title: I18n.t("groups.members.make_owner"), + name: I18n.t("groups.members.make_owner"), description: I18n.t("groups.members.make_owner_description", { username: this.get("member.username") }), @@ -46,7 +49,7 @@ export default DropdownButton.extend({ return items; }, - clicked(id) { + mutateValue(id) { switch (id) { case "removeMember": this.sendAction("removeMember", this.get("member")); diff --git a/app/assets/javascripts/discourse/components/tags-admin-dropdown.js.es6 b/app/assets/javascripts/discourse/components/tags-admin-dropdown.js.es6 index e1ea9aabb6d..e599f3d9b51 100644 --- a/app/assets/javascripts/discourse/components/tags-admin-dropdown.js.es6 +++ b/app/assets/javascripts/discourse/components/tags-admin-dropdown.js.es6 @@ -1,23 +1,24 @@ -import { iconHTML } from "discourse-common/lib/icon-library"; -import DropdownButton from "discourse/components/dropdown-button"; -import computed from "ember-addons/ember-computed-decorators"; +import DropdownSelectBoxComponent from "select-kit/components/dropdown-select-box"; -export default DropdownButton.extend({ - buttonExtraClasses: "no-text", - title: "", - text: iconHTML("bars") + " " + iconHTML("caret-down"), - classNames: ["tags-admin-menu"], +export default DropdownSelectBoxComponent.extend({ + pluginApiIdentifiers: ["tags-admin-dropdown"], + classNames: "tags-admin-dropdown", + showFullTitle: false, + allowInitialValueMutation: false, + headerIcon: ["bars", "caret-down"], - @computed() - dropDownContent() { + autoHighlight() {}, + + computeContent() { const items = [ { id: "manageGroups", - title: I18n.t("tagging.manage_groups"), + name: I18n.t("tagging.manage_groups"), description: I18n.t("tagging.manage_groups_description"), icon: "wrench" } ]; + return items; }, @@ -25,7 +26,7 @@ export default DropdownButton.extend({ manageGroups: "showTagGroups" }, - clicked(id) { - this.sendAction("actionNames." + id); + mutateValue(id) { + this.sendAction(`actionNames.${id}`); } }); diff --git a/app/assets/stylesheets/common/base/_topic-list.scss b/app/assets/stylesheets/common/base/_topic-list.scss index 95dab349368..929d229d068 100644 --- a/app/assets/stylesheets/common/base/_topic-list.scss +++ b/app/assets/stylesheets/common/base/_topic-list.scss @@ -33,6 +33,7 @@ } } &.categories-admin-dropdown, + &.tags-admin-dropdown, &.category-notifications-button, &.tag-notifications-button { float: right; diff --git a/app/assets/stylesheets/common/components/group-member-dropdown.scss b/app/assets/stylesheets/common/components/group-member-dropdown.scss new file mode 100644 index 00000000000..314267a0c4f --- /dev/null +++ b/app/assets/stylesheets/common/components/group-member-dropdown.scss @@ -0,0 +1,3 @@ +.group-member-dropdown { + text-align: left; +} diff --git a/app/assets/stylesheets/desktop/components/group-member-dropdown.scss b/app/assets/stylesheets/desktop/components/group-member-dropdown.scss deleted file mode 100644 index 49b3209fd23..00000000000 --- a/app/assets/stylesheets/desktop/components/group-member-dropdown.scss +++ /dev/null @@ -1,9 +0,0 @@ -.group-member-dropdown { - ul { - width: 250px; - top: 27px; - bottom: auto; - left: -217px; - text-align: left; - } -} diff --git a/app/assets/stylesheets/mobile/components/group-member-dropdown.scss b/app/assets/stylesheets/mobile/components/group-member-dropdown.scss deleted file mode 100644 index 5cc3e21a253..00000000000 --- a/app/assets/stylesheets/mobile/components/group-member-dropdown.scss +++ /dev/null @@ -1,9 +0,0 @@ -.group-member-dropdown { - ul { - position: absolute; - top: 27px; - width: 250px; - bottom: auto; - text-align: left; - } -}