FIX: displays a title on sk header if no selected name (#9794)

none has to be defined.
This commit is contained in:
Joffrey JAFFEUX 2020-05-15 17:36:00 +02:00 committed by GitHub
parent 9810ca1dbd
commit b07f1bfd93
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 62 additions and 29 deletions

View File

@ -12,7 +12,8 @@ export default DropdownSelectBoxComponent.extend({
icon: "bars",
showFullTitle: false,
autoFilterable: false,
filterable: false
filterable: false,
none: "select_kit.components.categories_admin_dropdown.title"
},
content: computed(function() {

View File

@ -27,7 +27,7 @@ export default Component.extend(UtilsMixin, {
"roleButton:role",
"selectedValue:data-value",
"selectedNames:data-name",
"serializedNames:title"
"buttonTitle:title"
],
selectedValue: computed("value", function() {
@ -42,6 +42,16 @@ export default Component.extend(UtilsMixin, {
.join(",");
}),
buttonTitle: computed("value", "selectKit.noneItem", function() {
if (
!this.value &&
this.selectKit.noneItem &&
!this.selectKit.options.showFullTitle
) {
return this.selectKit.noneItem.title || this.selectKit.noneItem.name;
}
}),
icons: computed("selectKit.options.{icon,icons}", function() {
const icon = makeArray(this.selectKit.options.icon);
const icons = makeArray(this.selectKit.options.icons);

View File

@ -1,17 +1,16 @@
import { computed, get } from "@ember/object";
import { computed, get, action } from "@ember/object";
import Component from "@ember/component";
import { makeArray } from "discourse-common/lib/helpers";
import UtilsMixin from "select-kit/mixins/utils";
export default Component.extend(UtilsMixin, {
tagName: "",
layoutName: "select-kit/templates/components/selected-name",
classNames: ["select-kit-selected-name", "selected-name", "choice"],
name: null,
value: null,
tabindex: 0,
attributeBindings: ["title", "value:data-value", "name:data-name"],
click() {
@action
onSelectedNameClick() {
if (this.selectKit.options.clearOnClick) {
this.selectKit.deselect(this.item);
return false;

View File

@ -1,4 +1,5 @@
{{#if selectKit.options.showFullTitle}}
<div {{action "onSelectedNameClick"}} tabindex="0" title={{title}} data-value={{value}} data-name={{name}} class="select-kit-selected-name selected-name choice">
{{#if item.icon}}
{{d-icon item.icon}}
{{/if}}
@ -19,8 +20,11 @@
}}
{{/if}}
{{/if}}
</div>
{{else}}
{{#if item.icon}}
<div tabindex="0" class="select-kit-selected-name selected-name choice">
{{d-icon item.icon}}
</div>
{{/if}}
{{/if}}

View File

@ -68,6 +68,7 @@
flex: 0 1 auto;
color: inherit;
display: flex;
outline: none;
.d-icon + .name {
margin-left: 0.5em;

View File

@ -1670,6 +1670,9 @@ en:
one: "Select at least {{count}} item."
other: "Select at least {{count}} items."
invalid_selection_length: "Selection must be at least {{count}} characters."
components:
categories_admin_dropdown:
title: "Categories admin dropdown"
date_time_picker:
from: From

View File

@ -60,13 +60,19 @@ componentTest("options.showFullTitle=false", {
value=value
content=content
options=(hash
icon="times"
showFullTitle=showFullTitle
none=none
)
}}
`,
beforeEach() {
setDefaultState(this, { showFullTitle: false });
setDefaultState(this, {
value: null,
showFullTitle: false,
none: "test_none"
});
},
async test(assert) {
@ -75,10 +81,19 @@ componentTest("options.showFullTitle=false", {
this.subject
.header()
.el()
.find(".selected-name .body")
.find(".selected-name")
),
"it hides the text of the selected item"
);
assert.equal(
this.subject
.header()
.el()
.attr("title"),
"[en_US.test_none]",
"it adds a title attribute to the button"
);
}
});