FIX: simplify maximum/minimum logic in sk2 to avoid chicken/egg (#8868)
This commit is contained in:
parent
be42b87338
commit
98303ee645
|
@ -80,14 +80,16 @@ export default ComboBox.extend(TagsMixin, {
|
|||
this.insertAfterCollection(ERRORS_COLLECTION, SELECTED_TAGS_COLLECTION);
|
||||
},
|
||||
|
||||
caretIcon: computed("selectKit.hasReachedMaximum", function() {
|
||||
return this.selectKit.hasReachedMaximum ? null : "plus";
|
||||
caretIcon: computed("value.[]", function() {
|
||||
return this.selectKit.options.maximum >= makeArray(this.value).length
|
||||
? null
|
||||
: "plus";
|
||||
}),
|
||||
|
||||
modifySelection(content) {
|
||||
let joinedTags = this.value.join(", ");
|
||||
let joinedTags = makeArray(this.value).join(", ");
|
||||
|
||||
if (!this.selectKit.hasReachedMinimum) {
|
||||
if (!this.selectKit.options.maximum >= makeArray(this.value).length) {
|
||||
const key =
|
||||
this.selectKit.options.minimumLabel ||
|
||||
"select_kit.min_content_not_reached";
|
||||
|
|
|
@ -44,9 +44,7 @@ export default Component.extend(
|
|||
"selectKit.isExpanded:is-expanded",
|
||||
"selectKit.isDisabled:is-disabled",
|
||||
"selectKit.isHidden:is-hidden",
|
||||
"selectKit.hasSelection:has-selection",
|
||||
"selectKit.hasReachedMaximum:has-reached-maximum",
|
||||
"selectKit.hasReachedMinimum:has-reached-minimum"
|
||||
"selectKit.hasSelection:has-selection"
|
||||
],
|
||||
tabindex: 0,
|
||||
content: null,
|
||||
|
@ -263,9 +261,7 @@ export default Component.extend(
|
|||
limitMatches: null,
|
||||
placement: "bottom-start",
|
||||
filterComponent: "select-kit/select-kit-filter",
|
||||
selectedNameComponent: "selected-name",
|
||||
hasReachedMaximum: "hasReachedMaximum",
|
||||
hasReachedMinimum: "hasReachedMinimum"
|
||||
selectedNameComponent: "selected-name"
|
||||
},
|
||||
|
||||
autoFilterable: computed("content.[]", "selectKit.filter", function() {
|
||||
|
@ -296,34 +292,6 @@ export default Component.extend(
|
|||
}
|
||||
),
|
||||
|
||||
hasReachedMaximum: computed(
|
||||
"selectKit.options.maximum",
|
||||
"value",
|
||||
function() {
|
||||
const maximum = parseInt(this.selectKit.options.maximum, 10);
|
||||
|
||||
if (maximum && makeArray(this.value).length >= maximum) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
),
|
||||
|
||||
hasReachedMinimum: computed(
|
||||
"selectKit.options.minimum",
|
||||
"value",
|
||||
function() {
|
||||
const minimum = parseInt(this.selectKit.options.minimum, 10);
|
||||
|
||||
if (!minimum || makeArray(this.value).length >= minimum) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
),
|
||||
|
||||
createContentFromInput(input) {
|
||||
return input;
|
||||
},
|
||||
|
@ -345,7 +313,6 @@ export default Component.extend(
|
|||
const selection = Ember.makeArray(this.value);
|
||||
|
||||
const maximum = this.selectKit.options.maximum;
|
||||
|
||||
if (maximum && selection.length >= maximum) {
|
||||
const key =
|
||||
this.selectKit.options.maximumLabel ||
|
||||
|
@ -354,15 +321,6 @@ export default Component.extend(
|
|||
return false;
|
||||
}
|
||||
|
||||
const minimum = this.selectKit.options.minimum;
|
||||
if (minimum && selection.length <= minimum) {
|
||||
const key =
|
||||
this.selectKit.options.minimumLabel ||
|
||||
"select_kit.min_content_not_reached";
|
||||
this.addError(I18n.t(key, { count: minimum }));
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
},
|
||||
|
||||
|
|
|
@ -2,6 +2,7 @@ import { reads } from "@ember/object/computed";
|
|||
import { ajax } from "discourse/lib/ajax";
|
||||
import { popupAjaxError } from "discourse/lib/ajax-error";
|
||||
import Mixin from "@ember/object/mixin";
|
||||
import { makeArray } from "discourse-common/lib/helpers";
|
||||
|
||||
export default Mixin.create({
|
||||
searchTags(url, data, callback) {
|
||||
|
@ -22,7 +23,7 @@ export default Mixin.create({
|
|||
allowAnyTag: reads("site.can_create_tag"),
|
||||
|
||||
validateCreate(filter, content) {
|
||||
if (this.selectKit.hasReachedMaximum) {
|
||||
if (this.selectKit.options.maximum >= makeArray(this.value).length) {
|
||||
this.addError(
|
||||
I18n.t("select_kit.max_content_reached", {
|
||||
count: this.selectKit.limit
|
||||
|
|
Loading…
Reference in New Issue