{"version":3,"file":"spryker-table.feature.row-actions.mjs","sources":["../../../../libs/table.feature.row-actions/src/lib/table-row-actions.pipe.ts","../../../../libs/table.feature.row-actions/src/lib/table-row-actions-feature.component.ts","../../../../libs/table.feature.row-actions/src/lib/table-row-actions-feature.component.html","../../../../libs/table.feature.row-actions/src/lib/table-row-actions-feature.module.ts","../../../../libs/table.feature.row-actions/src/spryker-table.feature.row-actions.ts"],"sourcesContent":["import { Pipe, PipeTransform } from '@angular/core';\nimport { DropdownItem } from '@spryker/dropdown';\nimport { ContextService } from '@spryker/utils';\n\n/**\n * Filter list of items by list of allowed actions\n */\n@Pipe({ name: 'filterAvailableActions' })\nexport class FilterAvailableActionsPipe implements PipeTransform {\n    constructor(private contextService: ContextService) {}\n\n    transform(actions: DropdownItem[], data: any, availableActionsPath: string): DropdownItem[] {\n        if (!availableActionsPath) {\n            return actions;\n        }\n\n        const availableActions = this.contextService.interpolateExpression(availableActionsPath, data);\n\n        if (!Array.isArray(availableActions)) {\n            return actions;\n        }\n\n        return actions.filter((action) => availableActions.includes(action.action));\n    }\n}\n","import { ChangeDetectionStrategy, Component, Injector, OnDestroy, OnInit, ViewEncapsulation } from '@angular/core';\nimport { IconActionModule } from '@spryker/icon/icons';\nimport {\n    TableActionBase,\n    TableActionsService,\n    TableActionTriggeredEvent,\n    TableDataRow,\n    TableFeatureComponent,\n    TableFeatureLocation,\n    TableRowClickEvent,\n} from '@spryker/table';\nimport { ContextService } from '@spryker/utils';\nimport { combineLatest, EMPTY, Subject } from 'rxjs';\nimport { map, pluck, shareReplay, switchMap, take, takeUntil, withLatestFrom } from 'rxjs/operators';\n\nimport { TableRowActionBase, TableRowActionContext, TableRowActionsConfig } from './types';\n\n@Component({\n    selector: 'spy-table-row-actions-feature',\n    templateUrl: './table-row-actions-feature.component.html',\n    styleUrls: ['./table-row-actions-feature.component.less'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    providers: [\n        {\n            provide: TableFeatureComponent,\n            useExisting: TableRowActionsFeatureComponent,\n        },\n    ],\n})\nexport class TableRowActionsFeatureComponent\n    extends TableFeatureComponent<TableRowActionsConfig>\n    implements OnDestroy, OnInit\n{\n    name = 'rowActions';\n    tableFeatureLocation = TableFeatureLocation;\n    triggerIcon = IconActionModule.icon;\n    availableActionsPath?: string;\n\n    actions$ = this.config$.pipe(\n        map((config) =>\n            (config.actions as TableRowActionBase[]).map(({ id: action, title }) => ({\n                action,\n                title,\n            })),\n        ),\n\n        shareReplay({ bufferSize: 1, refCount: true }),\n    );\n\n    availableActionsPath$ = this.config$.pipe(pluck('availableActionsPath'));\n\n    private destroyed$ = new Subject<void>();\n    private configClick$ = this.config$.pipe(pluck('click'));\n    private clickAction$ = this.configClick$.pipe(map((actionId) => this.getActionById(actionId)));\n    private rowClicks$ = this.tableEventBus$.pipe(\n        withLatestFrom(this.clickAction$),\n        switchMap(([tableEventBus, action]) =>\n            action ? tableEventBus.on<TableRowClickEvent>('table', 'row-click') : EMPTY,\n        ),\n    );\n\n    tableData$ = this.table$.pipe(\n        switchMap((table) => table.data$),\n        pluck('data'),\n    );\n\n    constructor(\n        private tableActionsService: TableActionsService,\n        private contextService: ContextService,\n        injector: Injector,\n    ) {\n        super(injector);\n    }\n\n    ngOnInit(): void {\n        this.rowClicks$\n            .pipe((o$) => combineLatest([o$, this.clickAction$.pipe(take(1))]), takeUntil(this.destroyed$))\n            .subscribe(([{ row }, action]) => {\n                const event: TableActionTriggeredEvent = {\n                    // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n                    action: action! as TableActionBase,\n                    items: [row],\n                };\n\n                this.triggerEvent(event);\n            });\n\n        this.tableData$.pipe(withLatestFrom(this.configClick$), takeUntil(this.destroyed$)).subscribe(([data, click]) =>\n            data.forEach((element, index) =>\n                this.table?.updateRowClasses(`${index}`, {\n                    'ant-table-row--clickable': Boolean(click),\n                }),\n            ),\n        );\n    }\n\n    ngOnDestroy(): void {\n        this.destroyed$.next();\n    }\n\n    private getActionById(actionId?: string): TableRowActionBase | undefined {\n        return this.config?.actions?.filter((rowAction) => rowAction.id === actionId)[0];\n    }\n\n    actionTriggerHandler(actionId: string, items: TableDataRow[]): void {\n        const action = this.getActionById(actionId);\n\n        if (!action) {\n            return;\n        }\n\n        const event: TableActionTriggeredEvent = {\n            action: action as TableActionBase,\n            items,\n        };\n\n        this.triggerEvent(event);\n    }\n\n    triggerEvent(action: TableActionTriggeredEvent): void {\n        const rowAction = { ...action };\n        const actionItem = rowAction.items[0];\n        const actionContext: TableRowActionContext = {\n            row: actionItem,\n            rowId: this.config?.rowIdPath ? String(actionItem[this.config.rowIdPath]) : '',\n        };\n\n        rowAction.action = { ...rowAction.action };\n\n        for (const option in rowAction.action) {\n            if (!option) {\n                continue;\n            }\n            const optionItem = rowAction.action[option];\n            if (typeof optionItem !== 'string') {\n                continue;\n            }\n\n            rowAction.action[option] = this.contextService.interpolate(optionItem, actionContext as any);\n        }\n\n        this.tableActionsService.trigger(rowAction, actionContext);\n    }\n}\n","<ng-container *ngIf=\"actions$ | async as actions\">\n    <div class=\"ant-table-row-actions-feature\" *spyTableFeatureTpl=\"tableFeatureLocation.afterCols; let data = data\">\n        <spy-dropdown\n            class=\"ant-table-row-actions-feature__trigger\"\n            [items]=\"actions | filterAvailableActions: data : (availableActionsPath$ | async)\"\n            (actionTriggered)=\"actionTriggerHandler($event, [data])\"\n        >\n            <spy-icon [name]=\"triggerIcon\"></spy-icon>\n        </spy-dropdown>\n    </div>\n\n    <ng-container *spyTableFeatureTpl=\"tableFeatureLocation.afterColsHeader\"></ng-container>\n</ng-container>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ModuleWithFeature, TableFeatureModule } from '@spryker/table';\nimport { DropdownModule } from '@spryker/dropdown';\nimport { IconActionModule } from '@spryker/icon/icons';\nimport { IconModule } from '@spryker/icon';\nimport { FilterAvailableActionsPipe } from './table-row-actions.pipe';\n\nimport { TableRowActionsFeatureComponent } from './table-row-actions-feature.component';\n\n@NgModule({\n    imports: [CommonModule, DropdownModule, IconActionModule, IconModule, TableFeatureModule],\n    exports: [TableRowActionsFeatureComponent],\n    declarations: [TableRowActionsFeatureComponent, FilterAvailableActionsPipe],\n})\nexport class TableRowActionsFeatureModule implements ModuleWithFeature {\n    featureComponent = TableRowActionsFeatureComponent;\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2","i6.FilterAvailableActionsPipe"],"mappings":"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"}