mirror of
https://github.com/discourse/discourse.git
synced 2025-02-07 20:08:26 +00:00
* renames `select-box-kit` into `select-kit` * introduces `single-select` and `multi-select` as base components * introduces {{search-advanced-category-chooser}} as a better component for selecting category in advanced search * improves events handling in select-kit * recreates color selection inputs using {{multi-select}} and a custom {{selected-color}} component * replaces category-selector by a component using select-kit and based on multi-select * improves positioning of wrapper * removes the need for offscreen, and instead use `select-kit-header` as a base focus point for all select-kit based components * introduces a formal plugin api for select-kit based components * introduces a formal pattern for loading and updating select-kit based components: ``` computeValue() computeContent() mutateValue() ```
48 lines
1019 B
JavaScript
48 lines
1019 B
JavaScript
const { get, isNone, guidFor } = Ember;
|
|
|
|
export default Ember.Mixin.create({
|
|
valueForContentItem(content) {
|
|
switch (typeof content) {
|
|
case "string":
|
|
case "number":
|
|
return content;
|
|
default:
|
|
return get(content, this.get("valueAttribute"));
|
|
}
|
|
},
|
|
|
|
_nameForContent(content) {
|
|
if (isNone(content)) {
|
|
return null;
|
|
}
|
|
|
|
if (typeof content === "object") {
|
|
return get(content, this.get("nameProperty"));
|
|
}
|
|
|
|
return content;
|
|
},
|
|
|
|
_isNumeric(input) {
|
|
return !isNaN(parseFloat(input)) && isFinite(input);
|
|
},
|
|
|
|
_castInteger(value) {
|
|
if (this.get("castInteger") === true && Ember.isPresent(value) && this._isNumeric(value)) {
|
|
return parseInt(value, 10);
|
|
}
|
|
|
|
return value;
|
|
},
|
|
|
|
_findComputedContentItemByGuid(guid) {
|
|
return this.get("computedContent").find(c => {
|
|
return guidFor(c) === guid;
|
|
});
|
|
},
|
|
|
|
_filterRemovableComputedContents(computedContent) {
|
|
return computedContent.filter(c => c.created === true);
|
|
}
|
|
});
|