{"version":3,"file":"index.mjs","sources":["../../../../../projects/components/widgets/containers/accordion/src/accordion-pane/accordion-pane.props.ts","../../../../../projects/components/widgets/containers/accordion/src/accordion.props.ts","../../../../../projects/components/widgets/containers/accordion/src/accordion.directive.ts","../../../../../projects/components/widgets/containers/accordion/src/accordion-pane/accordion-pane.component.ts","../../../../../projects/components/widgets/containers/accordion/src/accordion-pane/accordion-pane.component.html","../../../../../projects/components/widgets/containers/accordion/src/index.ts"],"sourcesContent":["import { PROP_BOOLEAN, PROP_NUMBER, PROP_STRING, register } from '@wm/components/base';\n\nexport const registerProps = () => {\n    register(\n        'wm-accordionpane',\n        new Map(\n            [\n                ['active', PROP_BOOLEAN], // internal property\n                ['badgetype', {value: 'default', ...PROP_STRING}],\n                ['badgevalue', PROP_STRING],\n                ['class', PROP_STRING],\n                ['content', PROP_STRING],\n                ['dynamicPaneIndex', PROP_NUMBER], // internal property\n                ['iconclass', PROP_STRING],\n                ['isdefaultpane', PROP_BOOLEAN],\n                ['isdynamic', PROP_STRING], // internal property\n                ['name', PROP_STRING],\n                ['show', {value: true, ...PROP_BOOLEAN}],\n                ['smoothscroll', {value: false, ...PROP_BOOLEAN}],\n                ['subheading', PROP_STRING],\n                ['tabindex', {value: 0, ...PROP_NUMBER}],\n                ['title', {value: 'Title', ...PROP_STRING}]\n            ]\n        )\n    );\n};\n","import { PROP_ANY, PROP_BOOLEAN, PROP_NUMBER, PROP_STRING, register} from '@wm/components/base';\n\nexport const registerProps = () => {\n    register(\n        'wm-accordion',\n        new Map(\n            [\n                ['class', PROP_STRING],\n                ['closeothers', {value: true, ...PROP_BOOLEAN}],\n                ['dataset', PROP_ANY],\n                ['defaultpaneindex', {value: 0, ...PROP_NUMBER}],\n                ['name', PROP_STRING],\n                ['nodatamessage', {value: 'No Data Found', ... PROP_STRING}],\n                ['show', {value: true, ...PROP_BOOLEAN}],\n                ['statehandler', {value: 'none', ...PROP_STRING}],\n                ['tabindex', {value: 0, ...PROP_NUMBER}],\n                ['type', PROP_STRING]\n            ]\n        )\n    );\n};\n","import {\n    AfterContentInit,\n    ContentChildren,\n    Directive,\n    forwardRef,\n    Inject,\n    Injector,\n    OnDestroy,\n    Optional,\n    QueryList\n} from '@angular/core';\nimport {DynamicComponentRefProvider, isDefined, noop, StatePersistence} from '@wm/core';\nimport {\n    APPLY_STYLES_TYPE,\n    createArrayFrom,\n    IWidgetConfig,\n    provideAsWidgetRef,\n    StylableComponent,\n    styler\n} from '@wm/components/base';\n\nimport {registerProps} from './accordion.props';\nimport {AccordionPaneComponent} from './accordion-pane/accordion-pane.component';\nimport {find, forEach, get, indexOf, isArray, isNumber} from \"lodash-es\";\n\nconst DEFAULT_CLS = 'app-accordion panel-group';\nconst WIDGET_CONFIG: IWidgetConfig = {\n    widgetType: 'wm-accordion',\n    hostClass: DEFAULT_CLS\n};\n\n@Directive({\n    standalone: true,\n    selector: 'div[wmAccordion]',\n    exportAs: 'wmAccordion',\n    providers: [\n        provideAsWidgetRef(AccordionDirective)\n    ]\n})\nexport class AccordionDirective extends StylableComponent implements AfterContentInit, OnDestroy {\n    static initializeProps = registerProps();\n\n    public defaultpaneindex: number;\n    public closeothers: boolean;\n    public statehandler: any;\n    private statePersistence: StatePersistence;\n\n    private activePaneIndex: number;\n    private activePane: AccordionPaneComponent;\n    private promiseResolverFn: Function;\n    private dynamicComponentProvider;\n    private _dynamicContext;\n    private dynamicPaneIndex;\n    private dynamicPanes;\n    public fieldDefs;\n    private panesChangesSubscription: any;\n    private dynamicComponentRefs: any[] = [];\n\n    @ContentChildren(forwardRef(() => AccordionPaneComponent)) panes: QueryList<AccordionPaneComponent>;\n\n    constructor(inj: Injector, statePersistence: StatePersistence, dynamicComponentProvider: DynamicComponentRefProvider, @Inject('EXPLICIT_CONTEXT') @Optional() explicitContext: any) {\n        let resolveFn: Function = noop;\n        super(inj, WIDGET_CONFIG, explicitContext, new Promise(res => resolveFn = res));\n        this.promiseResolverFn = resolveFn;\n        this.statePersistence = statePersistence;\n        this.dynamicComponentProvider = dynamicComponentProvider;\n        this.dynamicPanes = [];\n        this.dynamicPaneIndex = 0;\n        styler(this.nativeElement, this, APPLY_STYLES_TYPE.SCROLLABLE_CONTAINER);\n    }\n\n    /**\n     * AccordionPane children components invoke this method to communicate with the parent\n     * if isExpand is true and when closeothers is true, all the other panes are collapsed\n     * if the evt argument is defined on-change callback will be invoked.\n     * updates the activePane index property\n     * @param {AccordionPaneComponent} paneRef\n     * @param {boolean} isExpand\n     * @param {Event} evt\n     */\n    public notifyChange(paneRef: AccordionPaneComponent, isExpand: boolean, evt: Event) {\n        if (isExpand) {\n            this.closePanesExcept(paneRef);\n            const index = this.getPaneIndexByRef(paneRef);\n            this.activePane = paneRef.getWidget();\n            // if the event is defined invoke the change callback.\n            // programmatic invocations of expand/collapse on accordion-pane will not trigger change event\n            if (evt) {\n                this.invokeEventCallback('change', {\n                    $event: evt,\n                    newPaneIndex: index,\n                    oldPaneIndex: this.activePaneIndex\n                });\n            }\n            this.activePaneIndex = index;\n        }\n        const mode = this.statePersistence.computeMode(this.statehandler);\n        if (evt && mode && mode.toLowerCase() !== 'none') {\n            const activePanes = [];\n            this.panes.forEach(function (pane) {\n                if (pane.isActive) {\n                    activePanes.push(pane.name);\n                }\n            });\n            if (activePanes.length) {\n                this.statePersistence.setWidgetState(this, activePanes);\n            } else {\n                this.statePersistence.removeWidgetState(this);\n            }\n        }\n    }\n\n    /**\n     * This method is used to register the dynamic panes.\n     * After all panes are initialzed, update the querylist manually based on index.\n     * @param paneRef - refrence of the tabpane\n     */\n    public registerDynamicPane(paneRef) {\n        this.dynamicPanes.push(paneRef);\n        const isLastPane = this.dynamicPanes.length === this.dynamicPaneIndex;\n        if (isLastPane) {\n            for (let i = 0; i < this.dynamicPanes.length; i++) {\n                const newPaneRef = find(this.dynamicPanes, pane => pane.dynamicPaneIndex === i);\n                const isDuplicatePane = find(this.panes.toArray(), newPaneRef);\n                if (!isDuplicatePane) {\n                    this.panes.reset([...this.panes.toArray(), newPaneRef]);\n                    if (newPaneRef.active) {\n                        newPaneRef.expand();\n                    }\n                }\n            }\n        }\n    }\n\n    /**\n     * This method is to add the tabpane dynamically\n     * @param tabpanes - list of tabpanes\n     */\n    public addPane(tabpanes) {\n        if (!isArray(tabpanes)) {\n            tabpanes = [tabpanes];\n        }\n        const paneNamesList = [];\n        forEach(tabpanes, (pane, index) => {\n            const isPaneAlreadyCreated = find(this.panes.toArray(), { name: pane.name });\n            const isPaneNameExist = indexOf(paneNamesList, pane.name);\n            // If user tries to add tabpane with the same name which is already exists then do not create the pane\n            if (isPaneAlreadyCreated || isPaneNameExist > 0) {\n                console.warn(`The tab pane with name ${pane.name} already exists`);\n                return;\n            }\n\n            let paramMarkup = '';\n            let propsTmpl = '';\n            this.dynamicPaneIndex++;\n            const name = pane.name ? pane.name : `accordionpane${this.panes.toArray().length + (index + 1)}`;\n            paneNamesList.push(name);\n            const partialParams = get(pane, 'params');\n\n            forEach(pane, (value, key) => {\n                if (key !== 'params') {\n                    propsTmpl = `${propsTmpl} ${key}=\"${value}\"`;\n                }\n            });\n            forEach(partialParams, (value, key) => {\n                paramMarkup = `${paramMarkup} <wm-param name=\"${key}\" value=\"${value}\"></wm-param>`;\n            });\n            const markup = `<wm-accordionpane dynamicPaneIndex=\"${this.dynamicPaneIndex - 1}\" isdynamic=\"true\" name=\"${name}\" ${propsTmpl}>\n                            ${paramMarkup}\n                        </wm-accordionpane>`;\n\n            if (!this._dynamicContext) {\n                this._dynamicContext = Object.create(this.viewParent);\n                this._dynamicContext[this.getAttr('wmAccordian')] = this;\n            }\n\n            // MEMORY LEAK FIX: Store component reference for cleanup\n            this.dynamicComponentProvider.addComponent(this.getNativeElement(), markup, this._dynamicContext, { inj: this.inj })\n                .then(componentRef => {\n                    if (componentRef) {\n                        this.dynamicComponentRefs.push(componentRef);\n                    }\n                });\n        });\n        return paneNamesList;\n    }\n\n    /**\n     * This method is to remove the tabpane\n     * @param paneName - name of the pane\n     */\n    public removePane(paneName) {\n        const paneRef = this.getPaneRefByName(paneName);\n        if (paneRef) {\n            paneRef.remove();\n        }\n    }\n\n    private isValidPaneIndex(index: number): boolean {\n        return (index >= 0 && index < this.panes.length);\n    }\n\n    private getPaneRefByName(name: string): AccordionPaneComponent {\n        return find(this.panes.toArray(), { name: name });\n    }\n\n    private getPaneIndexByRef(paneRef: AccordionPaneComponent): number {\n        return this.panes.toArray().indexOf(paneRef);\n    }\n\n    private getPaneRefByIndex(index: number): AccordionPaneComponent {\n        return this.panes.toArray()[index];\n    }\n\n    // Except the pane provided close all other panes\n    private closePanesExcept(paneRef: AccordionPaneComponent | number) {\n        if (isNumber(paneRef)) {\n            paneRef = this.getPaneRefByIndex(paneRef as number);\n        }\n        if (this.closeothers) {\n            this.panes.forEach(pane => {\n                if (pane !== paneRef) {\n                    pane.collapse();\n                }\n            });\n        }\n    }\n\n    private expandPane(index: number) {\n        this.closePanesExcept(index);\n        this.panes.toArray()[index].expand();\n    }\n    private onDataChange(newVal) {\n        this.fieldDefs = createArrayFrom(newVal);\n    }\n\n    public getWidgets(widgteName: string, index?: number) {\n        let $target;\n        const retVal = [];\n\n        if (!widgteName) {\n            return;\n        }\n\n        if (!isDefined(index)) {\n            forEach(this.panes.toArray(), (el) => {\n                $target = get(el.currentAccordionWidgets, widgteName);\n                if ($target) {\n                    retVal.push($target);\n                }\n            });\n\n            return retVal;\n        }\n        index = +index || 0;\n\n        $target = get(this.panes.toArray(), index);\n\n        if ($target) {\n            return [get($target.currentAccordionWidgets, widgteName)];\n        }\n    }\n\n    get currentAccordionPaneIndex() {\n        return this.activePaneIndex;\n    }\n\n    get isFirstAccordionPane(): boolean {\n        return this.panes.first.widgetId === this.activePane.widgetId;\n    }\n\n    get isLastAccordionPane(): boolean {\n        return this.panes.last.widgetId === this.activePane.widgetId;\n    }\n\n    onPropertyChange(key: string, nv: any, ov?: any) {\n        if (key === 'defaultpaneindex') {\n            this.defaultpaneindex = nv;\n        } else if (key === 'dataset') {\n            this.onDataChange(nv);\n        } else if (key === 'statehandler') {\n            const widgetState = this.statePersistence.getWidgetState(this);\n            let paneToSelect: any = [];\n            if (nv !== 'none' && isArray(widgetState)) {\n                widgetState.forEach(paneName => {\n                    paneToSelect = this.panes.filter(function (pane) {\n                        return paneName === pane.name;\n                    });\n                    if (!paneToSelect.length) {\n                        console.warn('Accordion pane name ' + paneName + ' in State is incorrect.');\n                    } else {\n                        this.expandPane(this.getPaneIndexByRef(paneToSelect[0]));\n                    }\n                });\n            } else {\n                if (this.isValidPaneIndex(this.defaultpaneindex)) {\n                    this.expandPane(this.defaultpaneindex);\n                }\n            }\n        } else if (key === 'tabindex') {\n            return;\n        } else {\n            super.onPropertyChange(key, nv, ov);\n        }\n    }\n\n    ngAfterContentInit() {\n        super.ngAfterContentInit();\n        this.promiseResolverFn();\n        this.panesChangesSubscription = this.panes.changes.subscribe(slides => {\n            if (this.panes.length) {\n                this.expandPane(this.defaultpaneindex);\n            }\n        });\n    }\n\n    ngOnDestroy() {\n        // MEMORY LEAK FIX: Unsubscribe from panes changes\n        if (this.panesChangesSubscription) {\n            this.panesChangesSubscription.unsubscribe();\n            this.panesChangesSubscription = null;\n        }\n\n        // MEMORY LEAK FIX: Destroy all dynamically created component instances\n        if (this.dynamicComponentRefs && this.dynamicComponentRefs.length) {\n            this.dynamicComponentRefs.forEach(componentRef => {\n                if (componentRef && componentRef.destroy) {\n                    componentRef.destroy();\n                }\n            });\n            this.dynamicComponentRefs = [];\n        }\n\n        // MEMORY LEAK FIX: Clear dynamic context\n        if (this._dynamicContext) {\n            Object.keys(this._dynamicContext).forEach(key => {\n                delete this._dynamicContext[key];\n            });\n            this._dynamicContext = null;\n        }\n\n        // MEMORY LEAK FIX: Clear dynamic panes array\n        if (this.dynamicPanes) {\n            this.dynamicPanes = [];\n        }\n\n        // MEMORY LEAK FIX: Clear field definitions\n        this.fieldDefs = null;\n        this.activePane = null;\n\n        super.ngOnDestroy();\n    }\n}\n","import {CommonModule} from '@angular/common';\nimport {AfterViewInit, Component, ContentChildren, Inject, Injector, OnDestroy, Optional} from '@angular/core';\nimport {noop, removeAttr} from '@wm/core';\nimport {\n    APPLY_STYLES_TYPE,\n    getCurrentWidgets,\n    IWidgetConfig,\n    provideAsWidgetRef,\n    RedrawableDirective,\n    StylableComponent,\n    styler,\n} from '@wm/components/base';\n\nimport {registerProps} from './accordion-pane.props';\nimport {AccordionDirective} from '../accordion.directive';\n\nconst DEFAULT_CLS = 'app-accordion-panel panel';\nconst WIDGET_CONFIG: IWidgetConfig = { widgetType: 'wm-accordionpane', hostClass: DEFAULT_CLS };\n\n@Component({\n    standalone: true,\n    imports: [CommonModule],\n    selector: 'div[wmAccordionPane]',\n    templateUrl: './accordion-pane.component.html',\n    providers: [\n        provideAsWidgetRef(AccordionPaneComponent)\n    ],\n    exportAs: 'wmAccordionPane'\n})\nexport class AccordionPaneComponent extends StylableComponent implements AfterViewInit, OnDestroy {\n    static initializeProps = registerProps();\n\n    public isActive = false;\n    public iconclass: string;\n    public title: any;\n    public subheading: string;\n    public badgetype: any;\n    public badgevalue: string;\n    public smoothscroll: any;\n    private $lazyLoad = noop;\n    private _isOnLoadTriggered: boolean = false;\n    public content: string;\n    private isdynamic: boolean;\n    public tabindex;\n    public name: string;\n    private _currentAccordionWidgets = {};\n\n    // reference to the components which needs a redraw(eg, grid, chart) when the height of this component changes\n    @ContentChildren(RedrawableDirective, { descendants: true }) reDrawableComponents;\n\n    constructor(inj: Injector, private accordionRef: AccordionDirective, @Inject('EXPLICIT_CONTEXT') @Optional() explicitContext: any) {\n        super(inj, WIDGET_CONFIG, explicitContext);\n\n        styler(this.nativeElement, this, APPLY_STYLES_TYPE.SHELL);\n\n        // title property here serves the purpose of heading.\n        // remove title property as attribute\n        removeAttr(this.nativeElement, 'title');\n    }\n\n    /**\n     * handles the pane expand\n     * invoke $lazyLoad method which takes care of loading the partial when the content property is provided - lazyLoading or partial\n     * invoke redraw on the re-drawable children\n     * invoke expand callback\n     * notify parent about the change\n     * @param {Event} evt\n     */\n    public expand(evt?: Event) {\n        if (this.isActive) {\n            return;\n        }\n        this.isActive = true;\n        this.$lazyLoad();\n        this.redrawChildren();\n        this.invokeEventCallback('expand', { $event: evt });\n        this.notifyParent(true, evt);\n    }\n\n    /**\n     * handles the pane collapse\n     * invoke collapse callback\n     * notify parent about the change\n     * @param {Event} evt\n     */\n    public collapse(evt?: Event) {\n        if (!this.isActive) {\n            return;\n        }\n        this.isActive = false;\n        this.invokeEventCallback('collapse', { $event: evt });\n        this.notifyParent(false, evt);\n    }\n\n    public remove() {\n        const paneIndex = (this as any).accordionRef.getPaneIndexByRef(this);\n        if (this.isActive && this.accordionRef.panes.length > 1) {\n            this === this.accordionRef.panes.last ? this.accordionRef.panes.toArray()[paneIndex - 1].expand() : this.accordionRef.panes.toArray()[paneIndex + 1].expand();\n        }\n        const availablePanes = this.accordionRef.panes.toArray();\n        availablePanes.splice((this as any).accordionRef.getPaneIndexByRef(this), 1);\n        this.accordionRef.panes.reset([...availablePanes]);\n        this.nativeElement.remove();\n    }\n\n    public toggle(evt: Event) {\n        if (this.isActive) {\n            this.collapse(evt);\n        } else {\n            this.expand(evt);\n        }\n    }\n\n    // Todo - Vinay externalize\n    private redrawChildren() {\n        setTimeout(() => {\n            if (this.reDrawableComponents) {\n                this.reDrawableComponents.forEach(c => c.redraw());\n            }\n            if (!this._isOnLoadTriggered && !this.content) {\n                this.invokeEventCallback('load');\n                this._isOnLoadTriggered = true;\n            }\n        }, 100);\n    }\n\n    private notifyParent(isExpand: boolean, evt: Event) {\n        this.accordionRef.notifyChange(this, isExpand, evt);\n    }\n\n    get currentAccordionWidgets() {\n        return getCurrentWidgets(this.nativeElement, this._currentAccordionWidgets);\n    }\n\n    onPropertyChange(key, nv, ov) {\n        if (key === 'content') {\n            if (this.isActive) {\n                setTimeout(() => this.$lazyLoad(), 100);\n            }\n        } else if (key === 'tabindex') {\n            return;\n        } else {\n            super.onPropertyChange(key, nv, ov);\n        }\n    }\n\n    ngAfterViewInit() {\n        super.ngAfterViewInit();\n        styler(\n            this.nativeElement.querySelector('.panel-body') as HTMLElement,\n            this,\n            APPLY_STYLES_TYPE.INNER_SHELL\n        );\n        if (this.isdynamic) {\n            this.accordionRef.registerDynamicPane(this);\n        }\n    }\n\n    ngOnDestroy() {\n        // MEMORY LEAK FIX: Clear ContentChildren QueryList reference\n        if (this.reDrawableComponents) {\n            this.reDrawableComponents = null;\n        }\n\n        // MEMORY LEAK FIX: Clear lazy load function reference\n        this.$lazyLoad = null;\n\n        super.ngOnDestroy();\n    }\n}\n","<div class=\"panel-heading clearfix\" (click)=\"toggle($event)\" [ngClass]=\"{active: isActive}\">\n    <h3 class=\"panel-title\">\n        <a [attr.aria-expanded]=\"isActive\" [tabindex]=\"tabindex\"\n           class=\"accordion-toggle clearfix\"\n           href=\"javascript:void(0);\" role=\"button\">\n            <div class=\"pull-left\">\n                <i class=\"app-icon panel-icon {{iconclass}}\" [hidden]=\"!iconclass\"></i>\n            </div>\n            <div class=\"pull-left\">\n                <div class=\"heading\" [innerHTML]=\"title\"></div>\n                <div class=\"description\" [innerHTML]=\"subheading\"></div>\n            </div>\n            <div class=\"panel-actions pull-right\">\n                <!-- added class as badge, app-label since it needs this classes to trigger the badge tokens -->\n                <span class=\"badge app-label label-{{badgetype}}\">{{ badgevalue }}</span>\n                <span class=\"app-icon panel-action wi\"\n                      title=\"{{appLocale.LABEL_COLLAPSE}}/{{appLocale.LABEL_EXPAND}}\">\n                <i [ngClass]=\"isActive ? 'wi-minus' : 'wi-plus'\"></i>\n            </span>\n            </div>\n        </a>\n    </h3>\n</div>\n<div [ngClass]=\"isActive ? 'collapse in' : 'collapse'\" class=\"panel-collapse collapse\">\n    <div class=\"panel-body\"  partial-container-target>\n        <ng-content></ng-content>\n    </div>\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["registerProps","DEFAULT_CLS","WIDGET_CONFIG"],"mappings":"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"}