discourse/app/assets/javascripts/select-kit/addon/components/multi-select/multi-select-header.js
Joffrey JAFFEUX 324aa3eb61
REFACTOR: reworks all the search-advanced-options panel (#10661)
* REFACTOR: reworks all the search-advanced-options panel

This commit includes the following changes:
- prevents any mutation of external (to the component) values
- get rid of observers
- uses @action
- minor UI tweaks
- dropped the unecessary debounce
- drops all the legacy code for badges/groups which is not being used
- replaces user-selector by user-chooser and improves multi-select to not show `search` if maximum has been reached

Most importantly this refactor should fix multiple bugs due to _update() being called multiple times if searchTerm was empty and other various bugs where some changes in searchTerm was not applied to the sidebar.
2020-09-15 09:39:12 +02:00

34 lines
1.0 KiB
JavaScript

import SelectKitHeaderComponent from "select-kit/components/select-kit/select-kit-header";
import { computed } from "@ember/object";
import { makeArray } from "discourse-common/lib/helpers";
import layout from "select-kit/templates/components/multi-select/multi-select-header";
export default SelectKitHeaderComponent.extend({
classNames: ["multi-select-header"],
layout,
selectedNames: computed("selectedContent", function () {
return makeArray(this.selectedContent).map((c) => this.getName(c));
}),
hasReachedMaximumSelection: computed("selectedValue", function () {
if (!this.selectKit.options.maximum) {
return false;
}
return this.selectedValue.length >= this.selectKit.options.maximum;
}),
selectedValue: computed("selectedContent", function () {
return makeArray(this.selectedContent)
.map((c) => {
if (this.getName(c) !== this.getName(this.selectKit.noneItem)) {
return this.getValue(c);
}
return null;
})
.filter(Boolean);
}),
});