mirror of
https://github.com/flarum/framework.git
synced 2024-11-28 20:16:08 +08:00
ab6c03c0cc
- Use JSX for templates - Docblock/comment everything - Mostly passes ESLint (still some work to do) - Lots of renaming, refactoring, etc. CSS hasn't been updated yet.
38 lines
1023 B
JavaScript
38 lines
1023 B
JavaScript
import Separator from 'flarum/components/Separator';
|
|
|
|
function isSeparator(item) {
|
|
return item && item.component === Separator;
|
|
}
|
|
|
|
function withoutUnnecessarySeparators(items) {
|
|
const newItems = [];
|
|
let prevItem;
|
|
|
|
items.forEach((item, i) => {
|
|
if (!isSeparator(item) || (prevItem && !isSeparator(prevItem) && i !== items.length - 1)) {
|
|
prevItem = item;
|
|
newItems.push(item);
|
|
}
|
|
});
|
|
|
|
return newItems;
|
|
}
|
|
|
|
/**
|
|
* The `listItems` helper wraps a collection of components in <li> tags,
|
|
* stripping out any unnecessary `Separator` components.
|
|
*
|
|
* @param {Array} items
|
|
* @return {Array}
|
|
*/
|
|
export default function listItems(items) {
|
|
return withoutUnnecessarySeparators(items).map(item => {
|
|
const isListItem = item.component && item.component.isListItem;
|
|
const className = item.props ? item.props.itemClassName : item.itemClassName;
|
|
|
|
return isListItem
|
|
? item
|
|
: <li className={(item.itemName ? 'item-' + item.itemName : '') + ' ' + (className || '')}>{item}</li>;
|
|
});
|
|
};
|