{"version":3,"file":"verben-workflow-ui-src-lib-components-actors.mjs","sources":["../../../projects/verben-workflow-ui/src/lib/components/actors/actors.columns.ts","../../../projects/verben-workflow-ui/src/lib/components/actors/actors.config.ts","../../../projects/verben-workflow-ui/src/lib/components/actors/actors.state.ts","../../../projects/verben-workflow-ui/src/lib/components/actors/actors.service.ts","../../../projects/verben-workflow-ui/src/lib/components/actors/actors.facade.ts","../../../projects/verben-workflow-ui/src/lib/components/actors/actors.form.component.ts","../../../projects/verben-workflow-ui/src/lib/components/actors/actors.form.component.html","../../../projects/verben-workflow-ui/src/lib/components/actors/actors.component.ts","../../../projects/verben-workflow-ui/src/lib/components/actors/actors.component.html","../../../projects/verben-workflow-ui/src/lib/components/actors/actors.module.ts","../../../projects/verben-workflow-ui/src/lib/components/actors/verben-workflow-ui-src-lib-components-actors.ts"],"sourcesContent":["import { ColumnDefinition } from 'verben-ng-ui';\nimport { Actor } from 'verben-workflow-ui/src/lib/models';\n\nexport const columns: ColumnDefinition<Actor>[] = [\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: 'email',\n    header: 'E-MAIL',\n    accessorKey: 'Identifier',\n    formControlName: 'Identifier',\n  },\n  {\n    id: 'tags',\n    header: 'Tags',\n    accessorFn: (row) => {\n      const tags = row.Tags || [];\n      if (tags.length === 0) return '';\n      if (tags.length <= 3) {\n        return tags.map((tag) => tag.Name).join(', ');\n      }\n      const firstThree = tags\n        .slice(0, 3)\n        .map((tag) => tag.Name)\n        .join(', ');\n      return `${firstThree} ... + ${tags.length - 3} other(s)`;\n    },\n    formControlName: 'Tags',\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 { Actor, Status } from 'verben-workflow-ui/src/lib/models';\nimport { columns } from './actors.columns';\n\nconst fb = new FormBuilder();\n\n/**\n * Page configuration for actors.\n *\n * `enableCreate` is off — actors are provisioned elsewhere, and the page has\n * never offered a create button. `enableFilter` is off until the API grows a\n * `SearchActors` endpoint; sort rides the list GET's URL and needs no new one.\n */\nexport const ACTOR_CONFIG: BasePageConfig<Actor> = {\n  endpoint: 'Actors',\n  // UI identifier (matches the host's UIs value) — drives persistence of saved\n  // filters / column arrangement / last view.\n  ui: 'Actors',\n  pageSize: 20,\n  columns,\n  defaultSortParam: 'CreatedAt',\n  searchDebounceTime: 500,\n\n  cardDataMapper: (actor: Actor): CardData => ({\n    selected: false,\n    // Tags itself can be absent on a partially-populated record, so guard the\n    // array before indexing it — `actor.Tags[0]?.Name` threw.\n    title: actor.Tags?.[0]?.Name ?? actor.Name,\n    data: actor,\n    body: [{ title: 'Name', value: actor.Name }],\n    children: [],\n  }),\n\n  formGroupConfig: () => ({\n    controls: {\n      Name: fb.control('', [Validators.required]),\n      Identifier: fb.control('', [Validators.required]),\n      Tags: fb.control([]),\n      ActorTags: fb.control([]),\n      Status: fb.control(Status.Active, [Validators.required]),\n    },\n  }),\n\n  enableCreate: false,\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 { BehaviorSubject, Observable } from 'rxjs';\nimport { BaseDataPageState } from 'verben-workflow-ui/src/lib/base';\nimport { Actor, ActorTag, Tag } from 'verben-workflow-ui/src/lib/models';\n\n/**\n * State for the actors page.\n * Adds the two lookup lists the form's multiselects are bound to. They come\n * from different APIs — see ActorService.\n */\n@Injectable()\nexport class ActorState extends BaseDataPageState<Actor> {\n  private tags$ = new BehaviorSubject<Tag[]>([]);\n  private actorTags$ = new BehaviorSubject<ActorTag[]>([]);\n\n  getTags$(): Observable<Tag[]> {\n    return this.tags$.asObservable();\n  }\n\n  setTags(tags: Tag[]): void {\n    this.tags$.next(tags);\n  }\n\n  getActorTags$(): Observable<ActorTag[]> {\n    return this.actorTags$.asObservable();\n  }\n\n  setActorTags(tags: ActorTag[]): void {\n    this.actorTags$.next(tags);\n  }\n}\n","import { Injectable } from '@angular/core';\nimport {\n  BaseDataPageService,\n  FilterHandlerService,\n  SortHandlerService,\n} from 'verben-workflow-ui/src/lib/base';\nimport {\n  Actor,\n  ActorTag,\n  ErrorResponse,\n  Paged,\n  SortDirection,\n  Tag,\n} from 'verben-workflow-ui/src/lib/models';\nimport {\n  EnvironmentService,\n  HttpWebRequestService,\n} from 'verben-workflow-ui/src/lib/services';\n\n/**\n * Service for actor API operations.\n *\n * The list/search/save URLs follow the base's conventions once the endpoint is\n * spelled `Actors` (`GetActors`, `GetActorsWithParam`, `SaveActors`), so no URL\n * seams are overridden. The two lookups do deviate and are implemented here.\n */\n@Injectable()\nexport class ActorService extends BaseDataPageService<Actor> {\n  // Both lookups are fetched whole: limit 0 means \"all\" to this API.\n  private static readonly LOOKUP_SKIP = 0;\n  private static readonly LOOKUP_LIMIT = 0;\n  // NOTE: the lookups sort on `CreatedDate`, not the `CreatedAt` the models\n  // declare. Preserved from the original service — changing it is a separate,\n  // API-verified fix.\n  private static readonly LOOKUP_SORT = 'CreatedDate';\n\n  constructor(\n    server: HttpWebRequestService,\n    filterHandler: FilterHandlerService,\n    sortHandler: SortHandlerService,\n    private envSvc: EnvironmentService,\n  ) {\n    super(server, filterHandler, sortHandler);\n  }\n\n  getEndpoint(): string {\n    return 'Actors';\n  }\n\n  /**\n   * The API has no delete endpoint for actors. Fail loudly rather than issuing\n   * a request that 404s; `enableDelete: false` keeps the UI from offering it.\n   */\n  override async deleteItems(): Promise<boolean | ErrorResponse> {\n    return new ErrorResponse('Deleting an actor is not supported by the API');\n  }\n\n  // ===== Lookups =====\n\n  /**\n   * Tags live on the **Authentication** API, not the workflow one, so this call\n   * passes an explicit base URL. `get()` takes baseUrl as its second argument.\n   */\n  async getTags(): Promise<Tag[]> {\n    const url = `GetTags/${ActorService.LOOKUP_SKIP}/${ActorService.LOOKUP_LIMIT}/${ActorService.LOOKUP_SORT}/${SortDirection.Desc}`;\n    const res = await this.server.get<Paged<Tag>>(\n      url,\n      this.envSvc.environment.AuthAPI,\n    );\n    if (res instanceof ErrorResponse) {\n      return [];\n    }\n    return res.Result ?? [];\n  }\n\n  /** Actor tags come from the default (workflow) API. */\n  async getActorTags(): Promise<ActorTag[]> {\n    const url = `GetActorTags/${ActorService.LOOKUP_SKIP}/${ActorService.LOOKUP_LIMIT}/${ActorService.LOOKUP_SORT}/${SortDirection.Desc}`;\n    const res = await this.server.get<Paged<ActorTag>>(url);\n    if (res instanceof ErrorResponse) {\n      return [];\n    }\n    return res.Result ?? [];\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport {\n  BaseDataPageFacade,\n  SearchHandlerService,\n} from 'verben-workflow-ui/src/lib/base';\nimport { Actor, ActorTag, Tag } from 'verben-workflow-ui/src/lib/models';\nimport { UtilService } from 'verben-workflow-ui/src/lib/services';\nimport { ACTOR_CONFIG } from './actors.config';\nimport { ActorService } from './actors.service';\nimport { ActorState } from './actors.state';\n\n/**\n * Facade for the actors page.\n */\n@Injectable()\nexport class ActorFacade extends BaseDataPageFacade<Actor> {\n  private actorService: ActorService;\n\n  constructor(\n    state: ActorState,\n    service: ActorService,\n    searchHandler: SearchHandlerService,\n    utilService: UtilService,\n  ) {\n    super(state, service, searchHandler, utilService, ACTOR_CONFIG);\n    this.actorService = service;\n  }\n\n  // ===== Lookups =====\n\n  get tags$(): Observable<Tag[]> {\n    return (this.state as ActorState).getTags$();\n  }\n\n  get actorTags$(): Observable<ActorTag[]> {\n    return (this.state as ActorState).getActorTags$();\n  }\n\n  async loadTags(): Promise<void> {\n    (this.state as ActorState).setTags(await this.actorService.getTags());\n  }\n\n  async loadActorTags(): Promise<void> {\n    (this.state as ActorState).setActorTags(await this.actorService.getActorTags());\n  }\n\n  // ===== Save =====\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 — the old component hardcoded `DataState: Changed` here, which meant a\n   * record without a Code was still sent as an update.\n   */\n  async save(edits: Partial<Actor>): Promise<boolean> {\n    const open = this.currentCardData()?.data as Actor | undefined;\n    const merged = { ...(open ?? {}), ...edits } as Actor;\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(row: Actor, edits: Partial<Actor>): Promise<boolean> {\n    return this.saveItems([{ ...row, ...edits } as Actor]);\n  }\n}\n","import { Component, EventEmitter, inject, Input, OnInit, Output } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { CardData } from 'verben-ng-ui';\nimport { Actor, ActorTag, Status, Tag } from 'verben-workflow-ui/src/lib/models';\nimport { ActorFacade } from './actors.facade';\n\n@Component({\n  selector: 'actors-form',\n  templateUrl: './actors.form.component.html',\n})\nexport class ActorsFormComponent implements OnInit {\n  @Output() onSave = new EventEmitter<Partial<Actor>>();\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        Identifier: value.data.Identifier || '',\n        Tags: value.data.Tags || [],\n        ActorTags: value.data.ActorTags || [],\n        Status: value.data.Status || Status.Active,\n      });\n    } else {\n      // Cleared when a refetch invalidates the open record — this is what makes\n      // the form close after a search.\n      this.form.reset();\n    }\n  }\n\n  private _currentData: CardData | null = null;\n\n  // Resolved from the ActorsComponent injector, which provides the facade.\n  private facade = inject(ActorFacade);\n\n  form: FormGroup;\n  tags = toSignal(this.facade.tags$, { initialValue: [] as Tag[] });\n  actorTags = toSignal(this.facade.actorTags$, { initialValue: [] as ActorTag[] });\n  statusOptions: Status[] = Object.values(Status);\n\n  constructor(private fb: FormBuilder) {\n    this.form = this.fb.group({\n      Name: ['', { validators: [Validators.required] }],\n      Identifier: ['', { validators: [Validators.required] }],\n      Tags: [[], { validators: [] }],\n      ActorTags: [[], { validators: [] }],\n      Status: [Status.Active, { validators: [Validators.required] }],\n    });\n  }\n\n  ngOnInit(): void {\n    // Actor tags feed this form's multiselect only, so they are loaded here\n    // rather than by the page. Tags are loaded by ActorsComponent, which also\n    // uses them for the table's inline-edit dropdown.\n    this.facade.loadActorTags();\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=\"Identifier\" label=\"Identifier\" formControlName=\"Identifier\" placeHolder=\"Actor Identifier\" />\n\n  <div class=\"space-y-1\">\n    <label for=\"tags\">Tags</label>\n\n    <verben-drop-down selectKey=\"Code\" label=\"Tags\" styleClass=\"w-full\" width=\"100%\" [multiselect]=\"true\"\n      placeholder=\"Select\" [options]=\"tags()\" optionLabel=\"Name\" id=\"tags\" formControlName=\"Tags\" class=\"form-control\">\n    </verben-drop-down>\n  </div>\n\n  <div class=\"space-y-1\">\n    <label for=\"actorTags\">Actor Tags</label>\n\n    <verben-drop-down selectKey=\"Code\" label=\"Actor Tags\" styleClass=\"w-full\" width=\"100%\" [multiselect]=\"true\"\n      placeholder=\"Select\" [options]=\"actorTags()\" optionLabel=\"Name\" id=\"actorTags\" formControlName=\"ActorTags\"\n      class=\"form-control\">\n    </verben-drop-down>\n  </div>\n\n  <div class=\"space-y-1\">\n    <label for=\"status\">Status</label>\n\n    <verben-drop-down label=\"Status\" styleClass=\"w-full\" width=\"100%\" [multiselect]=\"false\" placeholder=\"Select\"\n      [options]=\"statusOptions\" id=\"status\" formControlName=\"Status\" class=\"form-control\">\n    </verben-drop-down>\n  </div>\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\" pd=\"10px 20px\"\n      width=\"114px\" height=\"39px\" [disable]=\"form.invalid\"></verbena-button>\n  </div>\n</form>\n","import {\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 { Actor, Tag } from 'verben-workflow-ui/src/lib/models';\nimport { baseStyle } from 'verben-workflow-ui/src/lib/shared';\nimport { ACTOR_CONFIG } from './actors.config';\nimport { ActorFacade } from './actors.facade';\nimport { ActorService } from './actors.service';\nimport { ActorState } from './actors.state';\n\n@Component({\n  selector: 'lib-actors',\n  templateUrl: './actors.component.html',\n  styleUrl: './actors.component.css',\n  // Per-component providers: a root-provided state would be shared across every\n  // instance of the page. ActorsFormComponent injects ActorFacade, and resolves\n  // it from this injector because it is rendered inside this component.\n  providers: [ActorFacade, ActorState, ActorService, SearchHandlerService],\n})\nexport class ActorsComponent implements OnInit {\n  @ViewChild('vdcv') cardDataView!: CardDataViewComponent;\n  @ViewChild('vdv') dataView!: DataViewComponent;\n\n  private facade = inject(ActorFacade);\n  private destroyRef = inject(DestroyRef);\n\n  readonly config = ACTOR_CONFIG;\n  readonly styles = baseStyle;\n\n  data = toSignal(this.facade.items$, { initialValue: [] as Actor[] });\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  tags = toSignal(this.facade.tags$, { initialValue: [] as Tag[] });\n  formGroupConfig = signal(this.config.formGroupConfig!());\n\n  visibleColumns: WritableSignal<ColumnDefinition<Actor>[]> = signal(this.config.columns);\n  selectedColumnCount = this.config.columns.length;\n  selectedSortCount = 0;\n  selectedFilterTableCount = 0;\n\n  constructor() {\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    this.facade.loadTags();\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.\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<Actor[]> {\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<Actor>[]): 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<Actor>): 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<Actor>;\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: Actor[]): 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    // Actors are provisioned elsewhere, so there is no create flow here\n    // (enableCreate is false and the toolbar hides the button).\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<Actor>[]): 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<Actor>[]): 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\n    #vdv\n    [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    }\"\n    [buttonClass]=\"'my-custom-button-class'\"\n    [iconClass]=\"'my-icon-class'\"\n    [activeIconClass]=\"'my-active-icon-class'\"\n    [isTableView]=\"(isTableView$ | async) ?? false\"\n    [selectedColumnCount]=\"selectedColumnCount\"\n    [selectedSortCount]=\"selectedSortCount\"\n    [selectedFilterTableCount]=\"selectedFilterTableCount\"\n    (stateChange)=\"onStateChange($event)\"\n    (viewChange)=\"onViewChange($event)\"\n    (onSearchChange)=\"handleSearch($event)\"\n  >\n    <div table-content>\n      <lib-data-table\n        [data]=\"data()\"\n        [columns]=\"config.columns\"\n        [styleConfig]=\"styles\"\n        [formGroupConfig]=\"formGroupConfig()\"\n        (selectionChange)=\"onSelectionChange($event)\"\n        (rowSave)=\"onRowSave($event)\"\n      >\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\n              name=\"Name\"\n              [formControl]=\"control\"\n              placeHolder=\"Enter Name\"\n            />\n          </ng-template>\n        </ng-container>\n\n        <ng-container libColumn=\"tags\">\n          <ng-template #cellEdit let-control=\"control\">\n            <verben-drop-down\n              styleClass=\"w-full\"\n              width=\"100%\"\n              [multiselect]=\"false\"\n              placeholder=\"Select tags\"\n              [options]=\"tags()\"\n              optionLabel=\"Name\"\n              id=\"tags\"\n              [formControl]=\"control\"\n              class=\"form-control\"\n            >\n            </verben-drop-down>\n          </ng-template>\n        </ng-container>\n\n        <ng-container libColumn=\"actions\">\n          <!-- No delete action: the API exposes no delete endpoint for actors,\n               and the old (click)=\"deleteRow()\" only dropped the row\n               client-side, so it reappeared on the next refresh. -->\n          <ng-template\n            #cell\n            let-value\n            let-isEditing=\"isEditing\"\n            let-toggleRowEdit=\"toggleRowEdit\"\n          >\n            <div class=\"flex gap-6\">\n              <verben-svg\n                (click)=\"toggleRowEdit()\"\n                icon=\"edit\"\n                [width]=\"15\"\n                [height]=\"15\"\n                class=\"cursor-pointer\"\n              ></verben-svg>\n            </div>\n          </ng-template>\n\n          <ng-template\n            #cellEdit\n            let-value\n            let-isEditing=\"isEditing\"\n            let-toggleRowEdit=\"toggleRowEdit\"\n            let-row=\"row\"\n            let-rowIndex=\"rowIndex\"\n          >\n            <div class=\"flex gap-6\">\n              <verben-svg\n                (click)=\"toggleRowEdit()\"\n                icon=\"tick\"\n                [width]=\"15\"\n                [height]=\"15\"\n                class=\"cursor-pointer\"\n              ></verben-svg>\n\n              <verben-svg\n                icon=\"delete\"\n                [width]=\"15\"\n                [height]=\"15\"\n                (click)=\"toggleRowEdit()\"\n                class=\"cursor-pointer\"\n              ></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\n        borderRadius=\"12px\"\n        (loadMoreClick)=\"loadMore()\"\n        #vdcv\n        dataId=\"Code\"\n        border=\"5px\"\n        [cardDataList]=\"cardData()\"\n        rbgColor=\"var(--vbn-color-surface-alt)\"\n        mg=\"20px\"\n      >\n        <verben-left-card-data-view class=\"space-y-7\">\n          <verben-left-card-data\n            #vlcd\n            [parent]=\"vdcv\"\n            dataId=\"Code\"\n            class=\"bg-secondary-100 rounded-xl border-primary border-[1px]\"\n            [cardDataList]=\"cardData()\"\n          >\n            <ng-template #card let-item>\n              <div (click)=\"currentData = vdcv.onItemClick(item)\" class=\"flex\">\n                <div\n                  (click)=\"currentData = vdcv.onItemClick(item)\"\n                  class=\"flex cursor-pointer w-full bg-secondary rounded-xl\"\n                >\n                  <div\n                    class=\"w-3 rounded-xl rounded-tr-none rounded-br-none\"\n                    [ngClass]=\"\n                      item.selected ? 'bg-primary' : 'bg-secondary-200'\n                    \"\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=\"phone\" class=\"text-[10px] font-light\"\n                            >E-Mail:</label\n                          >\n                          <span id=\"phone\" class=\"text-sm\">{{\n                            item.data.Identifier\n                          }}</span>\n                        </p>\n                      </div>\n\n                      <!-- <div class=\"grid gap-y-2\">\n                        <span for=\"role\" class=\"font-light\">{{\n                          item.data.WorkflowCode\n                        }}</span>\n                        <a\n                          [routerLink]=\"[\n                            '/workflow/task-history',\n                            item.data.Code\n                          ]\"\n                          routerLinkActive=\"router-link-active\"\n                          class=\"underline text-[var(--vbn-color-border-focus)] text-xs\"\n                          >view history</a\n                        >\n                      </div> -->\n\n                      <div class=\"grid gap-y-1\">\n                        <p class=\"grid\">\n                          <label\n                            for=\"role\"\n                            class=\"text-[10px] font-light text-[var(--vbn-color-on-primary)]\"\n                            >Name</label\n                          >\n                          <span id=\"role\" class=\"text-sm font-medium\">{{\n                            item.data?.Name\n                          }}</span>\n                        </p>\n                      </div>\n                    </div>\n\n                    <!-- <div class=\"flex\">\n                      <span class=\"font-normal text-sm\">{{ item.title }}</span>\n                    </div>\n                    @for (ciItem of item.body; track ciItem.value) {\n                    <div class=\"\">\n                      <span class=\"text-muted font-light text-xs\"\n                        >{{ ciItem.title }}:</span\n                      >\n                      <span class=\"text-black\">{{ ciItem.value }}</span>\n                    </div>\n                    } -->\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            <!-- <lib-user-request-form\n              [currentData]=\"currentData\"\n              (switchView)=\"vdv.toggleView()\"\n              (onApproval)=\"onApprove($event)\"\n            ></lib-user-request-form> -->\n            <actors-form\n              [currentData]=\"currentData\"\n              (switchView)=\"vdv.toggleView()\"\n              (onSave)=\"onSave($event)\"\n            ></actors-form>\n          </ng-template>\n        </verben-right-card-data-view>\n\n        <verben-card-data-view-footer class=\"w-full\">\n          <div\n            [ngClass]=\"{\n              'flex gap-2 items-center': true,\n              'justify-end': true\n            }\"\n          >\n            <!-- <verbena-button\n              *ngIf=\"!vdcv.hasCurrentItem()\"\n              [fontWeight]=\"'bold'\"\n              [bgColor]=\"'var(--vbn-color-text-muted)'\"\n              [borderRadius]=\"'4px'\"\n              [textColor]=\"'var(--vbn-color-surface)'\"\n              [pd]=\"'9.79px 37.28px'\"\n              [text]=\"'Delete'\"\n            >\n            </verbena-button> -->\n            <div\n              class=\"flex {{\n                vdcv.hasCurrentItem() ? 'flex-1' : ''\n              }} justify-end items-center gap-5\"\n            >\n              <span class=\"paginator-text\"\n                >{{ cardData().length }} records loaded</span\n              >\n              <button\n                (click)=\"loadMore()\"\n                class=\"load-more view-links text-[var(--vbn-color-border-focus)] underline\"\n              >\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\n        [columns]=\"config.columns\"\n        [selectedColumns]=\"(restoredColumns$ | async) ?? []\"\n        (columnsUpdated)=\"onColumnsUpdated($event)\"\n      ></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 had no (filtersApplied) binding at all and\n           was fed a filterArray nothing ever populated, so it emitted nowhere. -->\n      <lib-data-filter\n        [columns]=\"config.columns\"\n        [data]=\"data()\"\n        [initialFilters]=\"(filters$ | async) ?? []\"\n        (filterApplied)=\"onFilterApplied($event)\"\n      ></lib-data-filter>\n    </div>\n    <div sort-content>\n      <lib-data-sort\n        [columns]=\"config.columns\"\n        [data]=\"data()\"\n        (sortApplied)=\"onSortUpdated($event)\"\n      ></lib-data-sort>\n    </div>\n    <div export-content>\n      <lib-data-xport\n        [columns]=\"config.columns\"\n        [data]=\"data()\"\n        [dataQueryFunction]=\"loadData\"\n      >\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=\"message-log-button-container flex justify-between\">\n      <verbena-button\n        [fontWeight]=\"'bold'\"\n        [bgColor]=\"'var(--vbn-color-text-muted)'\"\n        [borderRadius]=\"'4px'\"\n        [textColor]=\"'var(--vbn-color-surface)'\"\n        [pd]=\"'9.79px 37.28px'\"\n        [text]=\"'Delete'\"\n      >\n      </verbena-button>\n    </div> -->\n    <div class=\"flex justify-end items-center gap-5\">\n      <span class=\"paginator-text\">{{ cardData().length }} records loaded</span>\n      <button\n        (click)=\"loadMore()\"\n        class=\"load-more view-links text-[var(--vbn-color-border-focus)] underline\"\n      >\n        Load more\n      </button>\n    </div>\n  </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ActorsComponent } from './actors.component';\nimport { SharedModule } from 'verben-workflow-ui/src/lib/shared';\nimport { RouterLink } from '@angular/router';\nimport { ActorsFormComponent } from './actors.form.component';\n\n@NgModule({\n  declarations: [ActorsComponent, ActorsFormComponent],\n  imports: [CommonModule, SharedModule, RouterLink],\n  exports: [ActorsComponent],\n})\nexport class ActorsModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.ActorState","i2.ActorService","i3","i4","i1","i2","i4.ActorsFormComponent"],"mappings":"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"}