fox-block-builder
Version:
Maintainable code for loop slack-block-kit-like modal builder
30 lines • 1.11 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.AccordionStateManager = void 0;
class AccordionStateManager {
constructor(params) {
this.expandedItems = params.expandedItems || [];
this.collapseOnExpand = params.collapseOnExpand || false;
}
checkItemIsExpandedByIndex(index) {
return this.expandedItems.includes(index);
}
getNextStateByItemIndex(index) {
if (index === undefined) {
return this.expandedItems;
}
const isExpanded = this.checkItemIsExpandedByIndex(index);
if (isExpanded) {
const nextState = [...this.expandedItems];
const expandedItemsIndex = this.expandedItems
.findIndex((expandedItem) => expandedItem === index);
nextState.splice(expandedItemsIndex, 1);
return nextState;
}
return this.collapseOnExpand
? [index]
: [...this.expandedItems, index];
}
}
exports.AccordionStateManager = AccordionStateManager;
//# sourceMappingURL=accordion-state-manager.js.map
;