@snipsonian/core
Version:
Core/base reusable javascript code snippets
18 lines (17 loc) • 659 B
JavaScript
import isArray from '../../is/isArray';
export default function collapsable({ initialIsCollapsed = false } = {}) {
return function decorate(target) {
if (isArray(target)) {
return target.map((entity) => enrichToBeCollapsable(entity, initialIsCollapsed));
}
return enrichToBeCollapsable(target, initialIsCollapsed);
};
}
function enrichToBeCollapsable(target, initialIsCollapsed) {
const enrichedTarget = target;
enrichedTarget.isCollapsed = initialIsCollapsed;
enrichedTarget.toggleCollapse = () => {
enrichedTarget.isCollapsed = !enrichedTarget.isCollapsed;
};
return enrichedTarget;
}