{"version":3,"file":"verben-workflow-ui-src-lib-components-flowable-status.mjs","sources":["../../../projects/verben-workflow-ui/src/lib/components/flowable-status/flowable-status.columns.ts","../../../projects/verben-workflow-ui/src/lib/components/flowable-status/flowable-status.config.ts","../../../projects/verben-workflow-ui/src/lib/components/flowable-status/flowable-status.state.ts","../../../projects/verben-workflow-ui/src/lib/components/flowable-status/flowable-status.service.ts","../../../projects/verben-workflow-ui/src/lib/components/flowable-status/flowable-status.facade.ts","../../../projects/verben-workflow-ui/src/lib/components/flowable-status/flowable-status.form.component.ts","../../../projects/verben-workflow-ui/src/lib/components/flowable-status/flowable-status.form.component.html","../../../projects/verben-workflow-ui/src/lib/components/flowable-status/flowable-status.component.ts","../../../projects/verben-workflow-ui/src/lib/components/flowable-status/flowable-status.component.html","../../../projects/verben-workflow-ui/src/lib/components/flowable-status/flowable-status.module.ts","../../../projects/verben-workflow-ui/src/lib/components/flowable-status/verben-workflow-ui-src-lib-components-flowable-status.ts"],"sourcesContent":["import { ColumnDefinition } from \"verben-ng-ui\";\nimport { FlowableStatus } from \"verben-workflow-ui/src/lib/models\";\n\nexport const columns: ColumnDefinition<FlowableStatus>[] = [\n  {\n    id: 'date',\n    header: 'CREATED',\n    accessorKey: 'CreatedAt',\n  },\n  {\n    id: 'name',\n    header: 'NAME',\n    accessorKey: 'Name',\n    formControlName: 'Name',\n  },\n  {\n    id: 'description',\n    header: 'DESCRIPTION',\n    accessorKey: 'Description',\n    formControlName: 'Description',\n  },\n  { id: 'actions', header: 'Actions' },\n];\n","import { FormBuilder, Validators } from '@angular/forms';\nimport { CardData } from 'verben-ng-ui';\nimport { BasePageConfig } from 'verben-workflow-ui/src/lib/base';\nimport { FlowableStatus } from 'verben-workflow-ui/src/lib/models';\nimport { columns } from './flowable-status.columns';\n\nconst fb = new FormBuilder();\n\n/**\n * Page configuration for flowable statuses.\n *\n * `enableFilter` / `enableDelete` are off: the API exposes neither a\n * `SearchFlowableStatus` endpoint nor a delete endpoint. Turn them on once the\n * backend has them — the base already routes to the conventional URLs. Sort\n * stays on because it rides the plain list GET's URL and needs no new endpoint.\n */\nexport const FLOWABLE_STATUS_CONFIG: BasePageConfig<FlowableStatus> = {\n  endpoint: 'FlowableStatus',\n  // UI identifier (matches the host's UIs value) — drives persistence of saved\n  // filters / column arrangement / last view.\n  ui: 'FlowableStatus',\n  pageSize: 20,\n  columns,\n  defaultSortParam: 'CreatedAt',\n  searchDebounceTime: 500,\n\n  cardDataMapper: (status: FlowableStatus): CardData => ({\n    selected: false,\n    title: status.Name,\n    data: status,\n    body: [\n      { title: 'Name', value: status.Name },\n      { title: 'Description', value: status.Description },\n    ],\n    children: [],\n  }),\n\n  formGroupConfig: () => ({\n    controls: {\n      Name: fb.control('', [Validators.required]),\n      Description: fb.control('', [Validators.required]),\n    },\n  }),\n\n  enableCreate: true,\n  enableImport: false,\n  enableExport: true,\n  enableFilter: false,\n  enableSort: true,\n  enableSearch: true,\n  enableCardView: true,\n  enableTableRowEdit: true,\n  enableDelete: false,\n};\n","import { Injectable } from '@angular/core';\nimport { BaseDataPageState } from 'verben-workflow-ui/src/lib/base';\nimport { FlowableStatus } from 'verben-workflow-ui/src/lib/models';\n\n/**\n * State for the flowable-status page.\n * Carries no extra lookups — the page has no dropdowns to feed.\n */\n@Injectable()\nexport class FlowableStatusState extends BaseDataPageState<FlowableStatus> {}\n","import { Injectable } from '@angular/core';\nimport {\n  BaseDataPageService,\n  FilterHandlerService,\n  SortHandlerService,\n} from 'verben-workflow-ui/src/lib/base';\nimport { ErrorResponse, FlowableStatus } from 'verben-workflow-ui/src/lib/models';\nimport { HttpWebRequestService } from 'verben-workflow-ui/src/lib/services';\n\n/**\n * Service for flowable-status API operations.\n *\n * No URL overrides: the endpoint follows the base's conventions exactly —\n * `GetFlowableStatus/{skip}/{limit}/{sortParam}/{sortOrder}`,\n * `GetFlowableStatusWithParam/...` and `SaveFlowableStatus`.\n */\n@Injectable()\nexport class FlowableStatusService extends BaseDataPageService<FlowableStatus> {\n  constructor(\n    server: HttpWebRequestService,\n    filterHandler: FilterHandlerService,\n    sortHandler: SortHandlerService,\n  ) {\n    super(server, filterHandler, sortHandler);\n  }\n\n  getEndpoint(): string {\n    return 'FlowableStatus';\n  }\n\n  /**\n   * The API has no delete endpoint for flowable statuses. Fail loudly rather\n   * than issuing a request that 404s, and keep `enableDelete: false` in the\n   * config so the UI never offers the action.\n   */\n  override async deleteItems(): Promise<boolean | ErrorResponse> {\n    return new ErrorResponse('Deleting a flowable status is not supported by the API');\n  }\n}\n","import { Injectable } from '@angular/core';\nimport {\n  BaseDataPageFacade,\n  SearchHandlerService,\n} from 'verben-workflow-ui/src/lib/base';\nimport { FlowableStatus, ObjectState } from 'verben-workflow-ui/src/lib/models';\nimport { UtilService } from 'verben-workflow-ui/src/lib/services';\nimport { FLOWABLE_STATUS_CONFIG } from './flowable-status.config';\nimport { FlowableStatusService } from './flowable-status.service';\nimport { FlowableStatusState } from './flowable-status.state';\n\n/**\n * Facade for the flowable-status page.\n */\n@Injectable()\nexport class FlowableStatusFacade extends BaseDataPageFacade<FlowableStatus> {\n  constructor(\n    state: FlowableStatusState,\n    service: FlowableStatusService,\n    searchHandler: SearchHandlerService,\n    utilService: UtilService,\n  ) {\n    super(state, service, searchHandler, utilService, FLOWABLE_STATUS_CONFIG);\n  }\n\n  /**\n   * Save the record currently open in the form, merged over whatever the form\n   * did not edit. `saveItems()` decides insert vs update from the presence of a\n   * Code — see BaseDataPageFacade.withDataState for why the incoming DataState\n   * cannot be trusted.\n   */\n  async save(edits: Partial<FlowableStatus>): Promise<boolean> {\n    const open = this.currentCardData()?.data as FlowableStatus | undefined;\n    const merged = { ...(open ?? {}), ...edits } as FlowableStatus;\n\n    const saved = await this.saveItems([merged]);\n    if (saved) {\n      this.closeForm();\n    }\n    return saved;\n  }\n\n  /** Commit an inline table-row edit. Does not close the card form. */\n  async saveRow(\n    row: FlowableStatus,\n    edits: Partial<FlowableStatus>,\n  ): Promise<boolean> {\n    return this.saveItems([{ ...row, ...edits } as FlowableStatus]);\n  }\n\n  /** Prepend a blank record and open it in the form. */\n  startCreate(): FlowableStatus {\n    return this.createItem(this.createEmpty());\n  }\n\n  private createEmpty(): FlowableStatus {\n    return {\n      Name: '',\n      Description: '',\n      TenantId: '',\n      ServiceName: '',\n      id: crypto.randomUUID(),\n      Id: '',\n      CreatedAt: new Date(),\n      UpdatedAt: new Date(),\n      DataState: ObjectState.New,\n      Code: '',\n    };\n  }\n}\n","import {\n  Component,\n  EventEmitter,\n  Input,\n  Output,\n} from '@angular/core';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { CardData } from 'verben-ng-ui';\nimport { FlowableStatus } from 'verben-workflow-ui/src/lib/models';\n\n@Component({\n  selector: 'flowable-status-form',\n  templateUrl: './flowable-status.form.component.html',\n})\nexport class FlowableStatusFormComponent {\n  @Output() onSave = new EventEmitter<Partial<FlowableStatus>>();\n  @Output() switchView = new EventEmitter<undefined>();\n\n  @Input()\n  get currentData(): CardData | null {\n    return this._currentData;\n  }\n  set currentData(value: CardData | null) {\n    this._currentData = value;\n    if (value?.data) {\n      this.form.patchValue({\n        Name: value.data.Name || '',\n        Description: value.data.Description || '',\n      });\n    } else {\n      this.form.reset();\n    }\n  }\n\n  private _currentData: CardData | null = null;\n\n  form: FormGroup;\n\n  constructor(private fb: FormBuilder) {\n    this.form = this.fb.group({\n      Name: ['', { validators: [Validators.required] }],\n      Description: ['', { validators: [Validators.required] }],\n    });\n  }\n\n  handleSubmit(): void {\n    if (this.form.valid) {\n      this.onSave.emit(this.form.value);\n    }\n  }\n}\n","<form [formGroup]=\"form\" class=\"flex flex-col px-3 pb-3 rounded-xl h-full w-full relative space-y-4\"\n    (ngSubmit)=\"handleSubmit()\">\n    <verbena-input name=\"Name\" label=\"Name\" formControlName=\"Name\" placeHolder=\"Enter Name\" />\n    <verbena-input name=\"Description\" label=\"Description\" formControlName=\"Description\"\n        placeHolder=\"Enter Description\" />\n\n    <div class=\"flex justify-between gap-4 my-2\">\n        <verbena-button (click)=\"switchView.emit()\" text=\"Switch To Table\" styleType=\"ylw-outline\"\n            class=\"ml-auto\"></verbena-button>\n        <verbena-button type=\"submit\" text=\"Save\" bgColor=\"var(--vbn-color-primary)\" textColor=\"var(--vbn-color-on-primary)\" borderRadius=\"10px\"\n            pd=\"10px 20px\" width=\"114px\" height=\"39px\" [disable]=\"form.invalid\"></verbena-button>\n    </div>\n</form>\n","import {\n  ChangeDetectorRef,\n  Component,\n  DestroyRef,\n  inject,\n  OnInit,\n  signal,\n  ViewChild,\n  WritableSignal,\n} from '@angular/core';\nimport { takeUntilDestroyed, toSignal } from '@angular/core/rxjs-interop';\nimport {\n  CardData,\n  CardDataViewComponent,\n  ColumnDefinition,\n  DataViewComponent,\n  FilterCondition,\n  SortCondition,\n} from 'verben-ng-ui';\nimport { SearchHandlerService } from 'verben-workflow-ui/src/lib/base';\nimport { FlowableStatus } from 'verben-workflow-ui/src/lib/models';\nimport { baseStyle } from 'verben-workflow-ui/src/lib/shared';\nimport { FLOWABLE_STATUS_CONFIG } from './flowable-status.config';\nimport { FlowableStatusFacade } from './flowable-status.facade';\nimport { FlowableStatusService } from './flowable-status.service';\nimport { FlowableStatusState } from './flowable-status.state';\n\n@Component({\n  selector: 'lib-flowable-status',\n  templateUrl: './flowable-status.component.html',\n  styleUrl: './flowable-status.component.css',\n  // Per-component providers: a root-provided state would be shared across every\n  // instance of the page, so two instances (or a revisited route) would see\n  // each other's items.\n  providers: [\n    FlowableStatusFacade,\n    FlowableStatusState,\n    FlowableStatusService,\n    SearchHandlerService,\n  ],\n})\nexport class FlowableStatusComponent implements OnInit {\n  @ViewChild('vdcv') cardDataView!: CardDataViewComponent;\n  @ViewChild('vdv') dataView!: DataViewComponent;\n\n  // Injected as a field so the signal initializers below can read it — a\n  // constructor parameter property is not assigned until the constructor runs.\n  private facade = inject(FlowableStatusFacade);\n  private destroyRef = inject(DestroyRef);\n\n  readonly config = FLOWABLE_STATUS_CONFIG;\n  readonly styles = baseStyle;\n\n  data = toSignal(this.facade.items$, { initialValue: [] as FlowableStatus[] });\n  cardData = this.facade.cardData;\n\n  // Exposed for the data-view/panels so the restored config reaches them.\n  readonly isTableView$ = this.facade.isTableView$;\n  readonly filters$ = this.facade.filters$;\n  readonly restoredColumns$ = this.facade.visibleColumns$;\n  formGroupConfig = signal(this.config.formGroupConfig!());\n\n  visibleColumns: WritableSignal<ColumnDefinition<FlowableStatus>[]> = signal(\n    this.config.columns,\n  );\n  selectedColumnCount = this.config.columns.length;\n  selectedSortCount = 0;\n  selectedFilterTableCount = 0;\n\n  constructor(private cdr: ChangeDetectorRef) {\n    this.loadData = this.loadData.bind(this);\n  }\n\n  ngOnInit(): void {\n    this.facade.cardSelectionCleared$\n      .pipe(takeUntilDestroyed(this.destroyRef))\n      .subscribe(() => this.clearCardView());\n\n    // Restore saved filters / column arrangement / last view, then load data.\n    this.facade.restoreSavedConfig();\n  }\n\n  /**\n   * Tear down the card view's own selection.\n   *\n   * Nulling the facade's currentCardData only empties the form's fields — the\n   * CardDataViewComponent keeps a separate `currentItem`, and that is what holds\n   * the right-hand panel open. Without this the form goes blank after a search\n   * but the panel stays on screen.\n   */\n  private clearCardView(): void {\n    const view = this.cardDataView;\n    if (!view) {\n      return;\n    }\n    view.clearData();\n    if (view.rightContent) {\n      view.rightContent.parentData = null as unknown as CardData;\n    }\n  }\n\n  /**\n   * The record open in the detail form. Backed by the facade so a refetch can\n   * close it — loadData() clears the selection before replacing the list, which\n   * is what stops the form staying open after a search.\n   */\n  get currentData(): CardData | null {\n    return this.facade.currentCardData();\n  }\n\n  set currentData(value: CardData | null) {\n    this.facade.selectCard(value);\n  }\n\n  // ===== Data =====\n\n  loadMore(): Promise<void> {\n    return this.facade.loadMore();\n  }\n\n  /** Backs lib-data-xport's dataQueryFunction; bound in the constructor. */\n  async loadData(range: { skip: number; limit: number }): Promise<FlowableStatus[]> {\n    return this.facade.loadRange(range.skip, range.limit);\n  }\n\n  // ===== Search / filter / sort =====\n\n  handleSearch(event: { key: string; value: string }): void {\n    this.facade.onSearch(event.value);\n  }\n\n  onFilterApplied(filters: FilterCondition[]): void {\n    this.selectedFilterTableCount = filters.length;\n    this.facade.applyFilters(filters);\n  }\n\n  onSortUpdated(sorts: SortCondition[]): void {\n    this.selectedSortCount = sorts.length;\n    this.facade.applySorts(sorts);\n  }\n\n  onColumnsUpdated(updatedColumns: ColumnDefinition<FlowableStatus>[]): void {\n    this.visibleColumns.set(updatedColumns);\n    this.selectedColumnCount = updatedColumns.length;\n    this.facade.updateVisibleColumns(updatedColumns);\n  }\n\n  // ===== Save =====\n\n  async onSave(data: Partial<FlowableStatus>): Promise<void> {\n    await this.facade.save(data);\n  }\n\n  /**\n   * Commit an inline table-row edit. The edits must be merged over the row at\n   * `index` — the old `(rowSave)=\"onSave($event.data)\"` binding merged them over\n   * whichever record happened to be open in the card form instead.\n   */\n  async onRowSave(event: {\n    index: number;\n    key: number | string;\n    data: Partial<FlowableStatus>;\n  }): Promise<void> {\n    const row = this.data()[event.index];\n    if (!row) {\n      return;\n    }\n    await this.facade.saveRow(row, event.data);\n  }\n\n  // ===== View events =====\n\n  onSelectionChange(_selectedRows: FlowableStatus[]): void {\n    // Selection is not acted on yet; the table still owns the checkbox state.\n  }\n\n  onViewChange(isTableView: boolean): void {\n    this.facade.setView(isTableView);\n  }\n\n  onStateChange(event: { key: string; value: boolean }): void {\n    switch (event.key) {\n      case 'create': {\n        const created = this.facade.startCreate();\n\n        // CardDataViewComponent matches clicks against its cardDataList input,\n        // which only receives the new card after a change-detection pass. Force\n        // one so the freshly added card is resolvable before we open it.\n        this.cdr.detectChanges();\n\n        const card = this.cardData().find((c) => c.data === created);\n        if (card) {\n          this.facade.selectCard(this.cardDataView.onItemClick(card));\n          this.cdr.detectChanges();\n        }\n        break;\n      }\n      default:\n        break;\n    }\n  }\n\n  cardClicked(item: CardData, toggleView = false): void {\n    this.facade.selectCard(this.cardDataView.onItemClick(item));\n    if (toggleView) {\n      this.dataView.toggleView();\n    }\n  }\n\n  // ===== Export =====\n\n  handleExport(exportedData: Partial<FlowableStatus>[]): void {\n    this.downloadCSV(exportedData);\n  }\n\n  handleFetchedExport({ skip, limit }: { skip: number; limit: number }): void {\n    this.facade.loadRange(skip, limit).then((data) => {\n      if (data.length) {\n        this.handleExport(data);\n      }\n    });\n  }\n\n  private downloadCSV(data: Partial<FlowableStatus>[]): void {\n    if (!data.length) {\n      return;\n    }\n    const headers = Object.keys(data[0]);\n    const csvContent = [\n      headers.join(','),\n      ...data.map((row) =>\n        headers.map((header) => (row as Record<string, unknown>)[header]).join(','),\n      ),\n    ].join('\\n');\n    const blob = new Blob([csvContent], { type: 'text/csv;charset=utf-8;' });\n    const link = document.createElement('a');\n    if (link.download !== undefined) {\n      const url = URL.createObjectURL(blob);\n      link.setAttribute('href', url);\n      link.setAttribute('download', 'export.csv');\n      link.style.visibility = 'hidden';\n      document.body.appendChild(link);\n      link.click();\n      document.body.removeChild(link);\n    }\n  }\n}\n","<div class=\"space-y-8\">\n    <verben-data-view #vdv [viewState]=\"{\n      isSearch: !!config.enableSearch,\n      isColumn: true,\n      isFilter: !!config.enableFilter,\n      isSort: !!config.enableSort,\n      isExport: !!config.enableExport,\n      isSelect: true,\n      isCreate: !!config.enableCreate,\n      isToggle: !!config.enableCardView,\n    }\" [buttonClass]=\"'my-custom-button-class'\" [iconClass]=\"'my-icon-class'\"\n        [activeIconClass]=\"'my-active-icon-class'\" [isTableView]=\"(isTableView$ | async) ?? false\"\n        [selectedColumnCount]=\"selectedColumnCount\"\n        [selectedSortCount]=\"selectedSortCount\" [selectedFilterTableCount]=\"selectedFilterTableCount\"\n        (stateChange)=\"onStateChange($event)\"\n        (viewChange)=\"onViewChange($event)\"\n        (onSearchChange)=\"handleSearch($event)\" (createClick)=\"vdv.toggleView()\">\n        <div table-content>\n            <lib-data-table [data]=\"data()\" [columns]=\"config.columns\" [styleConfig]=\"styles\"\n                [formGroupConfig]=\"formGroupConfig()\" (selectionChange)=\"onSelectionChange($event)\"\n                (rowSave)=\"onRowSave($event)\">\n                <ng-container libColumn=\"date\">\n                    <ng-template #cell let-row=\"row\" let-value>\n                        {{ value | date }}\n                    </ng-template>\n                </ng-container>\n\n                <ng-container libColumn=\"name\">\n                    <ng-template #cellEdit let-control=\"control\">\n                        <verbena-input name=\"Name\" [formControl]=\"control\" placeHolder=\"Enter Name\" />\n                    </ng-template>\n                </ng-container>\n\n                <ng-container libColumn=\"description\">\n                    <ng-template #cellEdit let-control=\"control\">\n                        <verbena-input name=\"Description\" [formControl]=\"control\" placeHolder=\"Enter Description\" />\n                    </ng-template>\n                </ng-container>\n\n                <ng-container libColumn=\"actions\">\n                    <!-- No delete action: the API exposes no delete endpoint for\n                         flowable statuses, and the old (click)=\"deleteRow()\" only\n                         dropped the row client-side, so it reappeared on refresh. -->\n                    <ng-template #cell let-value let-isEditing=\"isEditing\" let-toggleRowEdit=\"toggleRowEdit\">\n                        <div class=\"flex gap-6\">\n                            <verben-svg (click)=\"toggleRowEdit()\" icon=\"edit\" [width]=\"15\" [height]=\"15\"\n                                class=\"cursor-pointer\"></verben-svg>\n                        </div>\n                    </ng-template>\n\n                    <ng-template #cellEdit let-value let-isEditing=\"isEditing\"\n                        let-toggleRowEdit=\"toggleRowEdit\" let-row=\"row\" let-rowIndex=\"rowIndex\">\n                        <div class=\"flex gap-6\">\n                            <verben-svg (click)=\"toggleRowEdit()\" icon=\"tick\" [width]=\"15\" [height]=\"15\"\n                                class=\"cursor-pointer\"></verben-svg>\n\n                            <!-- Cancels the row edit, as before. -->\n                            <verben-svg icon=\"delete\" [width]=\"15\" [height]=\"15\" (click)=\"toggleRowEdit()\"\n                                class=\"cursor-pointer\"></verben-svg>\n                        </div>\n                    </ng-template>\n                </ng-container>\n            </lib-data-table>\n        </div>\n        <div card-content>\n            <verben-card-data-view borderRadius=\"12px\" (loadMoreClick)=\"loadMore()\" #vdcv dataId=\"Code\" border=\"5px\"\n                [cardDataList]=\"cardData()\" rbgColor=\"var(--vbn-color-surface-alt)\" mg=\"20px\">\n                <verben-left-card-data-view class=\"space-y-7\">\n                    <verben-left-card-data #vlcd [parent]=\"vdcv\" dataId=\"Code\"\n                        class=\"bg-secondary-100 rounded-xl border-primary border-[1px]\" [cardDataList]=\"cardData()\">\n                        <ng-template #card let-item>\n                            <div (click)=\"currentData = vdcv.onItemClick(item)\" class=\"flex\">\n                                <div (click)=\"currentData = vdcv.onItemClick(item)\"\n                                    class=\"flex cursor-pointer w-full bg-secondary rounded-xl\">\n                                    <div class=\"w-3 rounded-xl rounded-tr-none rounded-br-none\" [ngClass]=\"\n                      item.selected ? 'bg-primary' : 'bg-secondary-200'\n                    \"></div>\n                                    <div class=\"flex flex-col py-2 px-4 w-full\">\n                                        <div class=\"flex items-center gap-4 justify-between\">\n                                            <div class=\"grid gap-y-2\">\n                                                <span class=\"font-semibold text-[var(--vbn-color-on-primary)]\">{{\n                                                    item.title\n                                                    }}</span>\n                                                <p class=\"flex items-center gap-1\">\n                                                    <label for=\"desc\"\n                                                        class=\"text-[10px] font-light\">Description:</label>\n                                                    <span id=\"desc\" class=\"text-sm\">{{\n                                                        item.data.Description\n                                                        }}</span>\n                                                </p>\n                                            </div>\n\n                                            <div class=\"grid gap-y-1\">\n                                                <p class=\"grid\">\n                                                    <label for=\"name\"\n                                                        class=\"text-[10px] font-light text-[var(--vbn-color-on-primary)]\">Name</label>\n                                                    <span id=\"name\" class=\"text-sm font-medium\">{{\n                                                        item.data?.Name\n                                                        }}</span>\n                                                </p>\n                                            </div>\n                                        </div>\n                                    </div>\n                                </div>\n                            </div>\n                        </ng-template>\n                    </verben-left-card-data>\n                </verben-left-card-data-view>\n\n                <verben-right-card-data-view>\n                    <ng-template #parent>\n                        <flowable-status-form [currentData]=\"currentData\" (switchView)=\"vdv.toggleView()\"\n                            (onSave)=\"onSave($event)\"></flowable-status-form>\n                    </ng-template>\n                </verben-right-card-data-view>\n\n                <verben-card-data-view-footer class=\"w-full\">\n                    <div [ngClass]=\"{\n              'flex gap-2 items-center': true,\n              'justify-end': true\n            }\">\n                        <div class=\"flex {{\n                vdcv.hasCurrentItem() ? 'flex-1' : ''\n              }} justify-end items-center gap-5\">\n                            <span class=\"paginator-text\">{{ cardData().length }} records loaded</span>\n                            <button (click)=\"loadMore()\" class=\"load-more view-links text-[var(--vbn-color-border-focus)] underline\">\n                                Load more\n                            </button>\n                        </div>\n                    </div>\n                </verben-card-data-view-footer>\n            </verben-card-data-view>\n        </div>\n        <div column-content>\n            <lib-data-columns [columns]=\"config.columns\"\n                [selectedColumns]=\"(restoredColumns$ | async) ?? []\"\n                (columnsUpdated)=\"onColumnsUpdated($event)\"></lib-data-columns>\n        </div>\n        <div filter-content>\n            <!-- lib-data-filter emits FilterCondition[] (columnId + operator + value),\n                 which the base's FilterHandlerService turns into the search payload.\n                 The old verben-table-filter emitted an untyped shape, had no\n                 (filtersApplied) binding, and was fed a filterArray nothing populated. -->\n            <lib-data-filter [columns]=\"config.columns\" [data]=\"data()\"\n                [initialFilters]=\"(filters$ | async) ?? []\"\n                (filterApplied)=\"onFilterApplied($event)\"></lib-data-filter>\n        </div>\n        <div sort-content>\n            <lib-data-sort [columns]=\"config.columns\" [data]=\"data()\"\n                (sortApplied)=\"onSortUpdated($event)\"></lib-data-sort>\n        </div>\n        <div export-content>\n            <lib-data-xport [columns]=\"config.columns\" [data]=\"data()\" [dataQueryFunction]=\"loadData\">\n            </lib-data-xport>\n        </div>\n    </verben-data-view>\n\n    <div *ngIf=\"vdv.isTableView\" class=\"flex gap-2 justify-end\">\n        <div class=\"flex justify-end items-center gap-5\">\n            <span class=\"paginator-text\">{{ cardData().length }} records loaded</span>\n            <button (click)=\"loadMore()\" class=\"load-more view-links text-[var(--vbn-color-border-focus)] underline\">\n                Load more\n            </button>\n        </div>\n    </div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { RouterLink } from '@angular/router';\nimport { SharedModule } from 'verben-workflow-ui/src/lib/shared';\nimport { FlowableStatusComponent } from './flowable-status.component';\nimport { FlowableStatusFormComponent } from './flowable-status.form.component';\n\n@NgModule({\n  declarations: [FlowableStatusComponent, FlowableStatusFormComponent],\n  imports: [CommonModule, SharedModule, RouterLink],\n  exports: [FlowableStatusComponent],\n})\nexport class FlowableStatusModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.FlowableStatusState","i2.FlowableStatusService","i3","i4","i1","i2","i4.FlowableStatusFormComponent"],"mappings":"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"}