{"version":3,"file":"verben-ng-ui-src-lib-components-visible-column.mjs","sources":["../../../projects/verben-ng-ui/src/lib/components/visible-column/visible-column.component.ts","../../../projects/verben-ng-ui/src/lib/components/visible-column/visible-column.component.html","../../../projects/verben-ng-ui/src/lib/components/visible-column/visible-column.module.ts","../../../projects/verben-ng-ui/src/lib/components/visible-column/verben-ng-ui-src-lib-components-visible-column.ts"],"sourcesContent":["import {\n  Component,\n  Input,\n  Output,\n  EventEmitter,\n  ChangeDetectionStrategy,\n} from '@angular/core';\nimport { IDataFilter } from 'verben-ng-ui/src/lib/models';\n\ninterface Item {\n  [key: string]: any;\n}\n\n@Component({\n  selector: 'verben-visible-column',\n  templateUrl: './visible-column.component.html',\n  styleUrls: ['./visible-column.component.css'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class VisibleColumnComponent {\n  @Input() columns: IDataFilter[] = [];\n  @Input() items: Item[] = [];\n  @Input() enableDragAndDrop: boolean = true;\n  @Input() displayedColumns: number = 5;\n  @Input() showMore: boolean = false;\n  @Input() pd?: string;\n  @Input() mg?: string;\n  @Input() height?: string;\n  @Input() width?: string;\n  @Input() bgColor?: string;\n  @Input() boxShadow?: string;\n  @Input() textColor?: string;\n  @Input() primaryColor?: string;\n  @Input() secondaryColor?: string;\n  @Input() tertiaryColor?: string;\n  @Input() border?: string;\n  @Input() borderRadius?: string;\n  @Input() selectWidth?: string;\n  @Input() closeColumn?: boolean;\n  @Output() columnsUpdated = new EventEmitter<IDataFilter[]>();\n  @Output() resetFilter = new EventEmitter();\n  originalColumnOrder: IDataFilter[] = [];\n  visibleColumns: boolean[] = [];\n  draggedIndex: number | null = null;\n  selectAll: boolean = false;\n\n  ngOnInit() {\n    this.originalColumnOrder = [...this.columns];\n    this.initializeColumnVisibility();\n  }\n\n  private initializeColumnVisibility() {\n    this.visibleColumns = this.columns.map((column) => column.checked);\n    this.updateSelectAllStatus();\n  }\n\n  resetColumns() {\n    this.columns = JSON.parse(JSON.stringify(this.originalColumnOrder)); // Ensure it's a deep copy\n    this.initializeColumnVisibility();\n    this.selectAll = false; // Reset select all\n    this.updateSelectAllStatus();\n    this.resetFilter.emit();\n  }\n\n  getSelectedColumnCount(): number {\n    return this.visibleColumns.filter((isVisible) => isVisible).length;\n  }\n\n  saveColumnVisibility() {\n    this.columns.forEach((column, index) => {\n      column.checked = this.visibleColumns[index];\n    });\n\n    const selectedColumns = this.columns.filter((column) => column.checked);\n    this.columnsUpdated.emit(selectedColumns);\n  }\n\n  toggleShowMore() {\n    this.showMore = !this.showMore;\n    this.displayedColumns = this.showMore ? this.columns.length : 5;\n  }\n\n  toggleSelectAll() {\n    this.selectAll = !this.selectAll;\n    this.visibleColumns = this.visibleColumns.map(() => this.selectAll);\n  }\n\n  updateSelectAllStatus() {\n    this.selectAll = this.visibleColumns.every((isVisible) => isVisible);\n  }\n\n  onDragStart(index: number, event: DragEvent) {\n    this.draggedIndex = index;\n    event.dataTransfer?.setData('text/plain', String(index));\n  }\n\n  onDragOver(event: DragEvent) {\n    event.preventDefault();\n  }\n\n  onDrop(index: number, event: DragEvent) {\n    event.preventDefault();\n    if (this.draggedIndex !== null && this.draggedIndex !== index) {\n      this.swapColumns(this.draggedIndex, index);\n    }\n    this.draggedIndex = null;\n  }\n\n  private swapColumns(fromIndex: number, toIndex: number) {\n    [this.columns[fromIndex], this.columns[toIndex]] = [\n      this.columns[toIndex],\n      this.columns[fromIndex],\n    ];\n    [this.visibleColumns[fromIndex], this.visibleColumns[toIndex]] = [\n      this.visibleColumns[toIndex],\n      this.visibleColumns[fromIndex],\n    ];\n  }\n}\n","<div\n  [style.background-color]=\"bgColor\"\n  [style.box-shadow]=\"boxShadow\"\n  [style.border]=\"border\"\n  [style.border-radius]=\"borderRadius\"\n  [style.color]=\"textColor\"\n  [style.width]=\"width\"\n  [style.height]=\"height\"\n  [style.padding]=\"pd\"\n  class=\"column-control\"\n>\n  <div class=\"visible-column-header flex justify-between text-sm\">\n    <span class=\"column-title\">\n      Column <sup>[{{ getSelectedColumnCount() }}]</sup>\n    </span>\n    <span class=\"column-reset\" (click)=\"resetColumns()\">Reset</span>\n  </div>\n  <hr />\n\n  <!-- Select All Checkbox -->\n  <div class=\"flex items-center gap\" [style.padding]=\"'4px 10px'\">\n    <label [style.font-size]=\"'13px'\" [style.font-weight]=\"'500'\">\n      <input type=\"checkbox\" [checked]=\"selectAll\" (change)=\"toggleSelectAll()\" />\n      Select All\n    </label>\n  </div>\n\n <div class=\"center\">\n  <ul *ngFor=\"let column of columns; let i = index\" class=\"column-options-container\">\n    <li\n      [attr.draggable]=\"enableDragAndDrop\"\n      (dragstart)=\"onDragStart(i, $event)\"\n      (dragover)=\"onDragOver($event)\"\n      (drop)=\"onDrop(i, $event)\"\n      *ngIf=\"i < displayedColumns\"\n      [style.font-size]=\"'14px'\"\n      [style.margin-top]=\"'14px'\"\n      class=\"flex gap-sm items-center\"\n    >\n      <verben-svg *ngIf=\"enableDragAndDrop\" fill=\"black\" class=\"svg\" icon=\"square-dot\"></verben-svg>\n      <label class=\"flex gap-md items-center\">\n        <input type=\"checkbox\" [(ngModel)]=\"visibleColumns[i]\" (ngModelChange)=\"updateSelectAllStatus()\" />\n        {{ column.name }}\n      </label>\n    </li>\n  </ul>\n\n  <!-- Show More / Show Less -->\n  <div *ngIf=\"displayedColumns <= columns.length\" class=\"cursor-pointer\" [style.padding]=\"'20px 10px 0px 10px'\">\n    <span (click)=\"toggleShowMore()\">\n      {{ displayedColumns === columns.length ? \"Show Less\" : \"Show More\" }}\n    </span>\n  </div>\n </div>\n\n  <hr />\n\n  <!-- Save Button -->\n  <div class=\"btn-wrapper\">\n    <button\n      [style.margin-top]=\"'0.5rem'\"\n      [style.outline]=\"'none'\"\n      [style.border]=\"'none'\"\n      [style.padding]=\"'0.2rem 1.6rem'\"\n      [style.background-color]=\"primaryColor\"\n      [style.color]=\"tertiaryColor\"\n      [style.font-size]=\"'12px'\"\n      [style.font-weight]=\"'600'\" \n      [disabled]=\"getSelectedColumnCount() === 0\"\n      [ngClass]=\"{\n        disabledBtn: getSelectedColumnCount() === 0,\n        enableBtn: getSelectedColumnCount() !== 0\n      }\"\n      (click)=\"saveColumnVisibility()\"\n    >\n      Save\n    </button>\n  </div>\n</div>\n","import { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\nimport { VisibleColumnComponent } from './visible-column.component';\nimport { SvgModule } from 'verben-ng-ui/src/lib/components/svg';\n@NgModule({\n  declarations: [VisibleColumnComponent],\n  imports: [CommonModule, FormsModule, SvgModule],\n  exports: [VisibleColumnComponent],\n})\nexport class VisibleColumnModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}