/* * Copyright (C) 2024 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ import {CollapsibleSection} from './collapsible_section'; import {CollapsibleSectionType} from './collapsible_section_type'; export class CollapsibleSections { constructor(private sections: CollapsibleSection[]) {} areAllSectionsExpanded(): boolean { return this.getCollapsedSections().length === 0; } getCollapsedSections(): CollapsibleSection[] { return this.sections.filter((s) => s.isCollapsed); } getSection(type: CollapsibleSectionType): CollapsibleSection | undefined { return this.sections.find((s) => s.type === type); } isSectionCollapsed(sectionType: CollapsibleSectionType): boolean { const section = this.getSection(sectionType); return section?.isCollapsed ?? false; } onCollapseStateChange( sectionType: CollapsibleSectionType, isCollapsed: boolean, ) { const section = this.getSection(sectionType); if (section) { section.isCollapsed = isCollapsed; } } }