@den4ik92/ng2-smart-table 19.2.9 → 19.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -522,6 +522,7 @@ class DataSource {
522
522
  return Promise.resolve(true);
523
523
  }
524
524
  async update(oldItem, newItem) {
525
+ this.data.update((old) => old.map((el) => (el === oldItem ? newItem : el)));
525
526
  this.emitOnChanged({ action: SmartTableOnChangedEventName.update, oldItem, newItem });
526
527
  return Promise.resolve(true);
527
528
  }
@@ -1849,7 +1850,7 @@ class TbodyEditDeleteComponent {
1849
1850
  data: this.row().getData(),
1850
1851
  source: this.source,
1851
1852
  });
1852
- if (!this.isExternalMode) {
1853
+ if (!this.isExternalMode()) {
1853
1854
  this.grid().edit(this.row());
1854
1855
  }
1855
1856
  }
@@ -1 +1 @@
1
- {"version":3,"file":"den4ik92-ng2-smart-table.mjs","sources":["../../../projects/ng2-smart-table/src/lib/components/cell/cell-editors/base-editor.component.ts","../../../projects/ng2-smart-table/src/lib/components/filter/filter-types/base-filter.component.ts","../../../projects/ng2-smart-table/src/lib/lib/helpers.ts","../../../projects/ng2-smart-table/src/lib/components/table-columns-editor/table-columns-editor.component.ts","../../../projects/ng2-smart-table/src/lib/components/table-columns-editor/table-columns-editor.component.html","../../../projects/ng2-smart-table/src/lib/components/table-columns-editor/column-editor.directive.ts","../../../projects/ng2-smart-table/src/lib/lib/data-set/cell.ts","../../../projects/ng2-smart-table/src/lib/lib/data-set/column.ts","../../../projects/ng2-smart-table/src/lib/lib/data-set/row.ts","../../../projects/ng2-smart-table/src/lib/lib/interfaces/smart-table.models.ts","../../../projects/ng2-smart-table/src/lib/lib/data-source/data-source.ts","../../../projects/ng2-smart-table/src/lib/lib/data-source/local/local.filter.ts","../../../projects/ng2-smart-table/src/lib/lib/data-source/local/local.pager.ts","../../../projects/ng2-smart-table/src/lib/lib/data-source/local/local.sorter.ts","../../../projects/ng2-smart-table/src/lib/lib/data-source/local/local.data-source.ts","../../../projects/ng2-smart-table/src/lib/lib/data-source/server/server.data-source.ts","../../../projects/ng2-smart-table/src/lib/components/pager/pager.component.ts","../../../projects/ng2-smart-table/src/lib/components/pager/pager.component.html","../../../projects/ng2-smart-table/src/lib/components/cell/cell-editors/checkbox-editor.component.ts","../../../projects/ng2-smart-table/src/lib/components/cell/cell-editors/input-editor.component.ts","../../../projects/ng2-smart-table/src/lib/components/cell/cell-editors/select-editor.component.ts","../../../projects/ng2-smart-table/src/lib/components/cell/cell-editors/textarea-editor.component.ts","../../../projects/ng2-smart-table/src/lib/components/cell/cell-edit-mode/build-in-editor.component.ts","../../../projects/ng2-smart-table/src/lib/components/cell/cell-edit-mode/build-in-editor.component.html","../../../projects/ng2-smart-table/src/lib/components/cell/cell-edit-mode/custom-edit.component.ts","../../../projects/ng2-smart-table/src/lib/components/cell/cell-edit-mode/edit-cell.component.ts","../../../projects/ng2-smart-table/src/lib/components/cell/cell-view-mode/custom-view.component.ts","../../../projects/ng2-smart-table/src/lib/components/cell/cell-view-mode/view-cell.component.ts","../../../projects/ng2-smart-table/src/lib/components/cell/cell.component.ts","../../../projects/ng2-smart-table/src/lib/components/tbody/cells/create-cancel.component.ts","../../../projects/ng2-smart-table/src/lib/lib/data-set/data-set.ts","../../../projects/ng2-smart-table/src/lib/lib/grid.ts","../../../projects/ng2-smart-table/src/lib/components/tbody/cells/custom.component.ts","../../../projects/ng2-smart-table/src/lib/components/tbody/cells/edit-delete.component.ts","../../../projects/ng2-smart-table/src/lib/components/tbody/cells/edit-delete.component.html","../../../projects/ng2-smart-table/src/lib/components/tbody/tbody.component.ts","../../../projects/ng2-smart-table/src/lib/components/tbody/tbody.component.html","../../../projects/ng2-smart-table/src/lib/components/filter/filter-types/checkbox-filter.component.ts","../../../projects/ng2-smart-table/src/lib/components/filter/filter-types/input-filter.component.ts","../../../projects/ng2-smart-table/src/lib/components/filter/filter-types/select-filter.component.ts","../../../projects/ng2-smart-table/src/lib/components/filter/build-in-filter.component.ts","../../../projects/ng2-smart-table/src/lib/components/filter/custom-filter.component.ts","../../../projects/ng2-smart-table/src/lib/components/filter/filter.component.ts","../../../projects/ng2-smart-table/src/lib/components/thead/cells/add-button.component.ts","../../../projects/ng2-smart-table/src/lib/components/thead/rows/thead-filters-row.component.ts","../../../projects/ng2-smart-table/src/lib/components/thead/cells/actions.component.ts","../../../projects/ng2-smart-table/src/lib/components/thead/rows/thead-form-row.component.ts","../../../projects/ng2-smart-table/src/lib/components/thead/cells/actions-title.component.ts","../../../projects/ng2-smart-table/src/lib/components/thead/cells/checkbox-select-all.component.ts","../../../projects/ng2-smart-table/src/lib/components/thead/cells/title/title.component.ts","../../../projects/ng2-smart-table/src/lib/components/thead/cells/column-title.component.ts","../../../projects/ng2-smart-table/src/lib/components/thead/rows/thead-titles-row.component.ts","../../../projects/ng2-smart-table/src/lib/components/thead/thead.component.ts","../../../projects/ng2-smart-table/src/lib/components/thead/thead.component.html","../../../projects/ng2-smart-table/src/lib/ng2-smart-table.component.ts","../../../projects/ng2-smart-table/src/lib/ng2-smart-table.component.html","../../../projects/ng2-smart-table/src/den4ik92-ng2-smart-table.ts"],"sourcesContent":["import { Component, input, InputSignal } from '@angular/core';\n\nimport { Cell } from '../../../lib/data-set/cell';\n\n@Component({ template: '', selector: 'ng2-editor-base-component' })\nexport class BaseEditorComponent implements Editor {\n readonly cell = input.required<Cell>();\n readonly inputClass = input('');\n}\n\nexport interface Editor {\n cell: InputSignal<Cell>;\n inputClass: InputSignal<string>;\n}\n","import {\n Component,\n EventEmitter,\n input,\n InputSignal,\n OnChanges,\n OnDestroy,\n OnInit,\n output,\n OutputEmitterRef,\n SimpleChanges,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { UntypedFormControl } from '@angular/forms';\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\nimport { Column } from '../../../lib/data-set/column';\nimport { DataSource } from '../../../lib/data-source/data-source';\n\n@Component({ template: '', selector: 'ng2-base-filter-component' })\nexport class BaseFilterComponent implements FilterComponent, OnDestroy, OnChanges, OnInit {\n delay = 300;\n changesSubscription?: Subscription;\n readonly query = input<unknown>('');\n readonly inputClass = input<string>('');\n readonly source = input.required<DataSource>();\n readonly column = input.required<Column>();\n\n readonly filter = output<any>();\n\n readonly inputControl = new UntypedFormControl();\n\n ngOnDestroy() {\n if (this.changesSubscription) {\n this.changesSubscription.unsubscribe();\n }\n }\n\n ngOnInit() {\n this.changesSubscription = this.inputControl.valueChanges\n .pipe(distinctUntilChanged(), debounceTime(this.delay))\n .subscribe((value: string) => {\n this.setFilter(value);\n });\n }\n\n ngOnChanges({ query }: SimpleChanges) {\n if (query) {\n this.inputControl?.setValue(query.currentValue, { emitEvent: false });\n }\n }\n\n setFilter(query: any) {\n this.filter.emit(query);\n }\n}\n\nexport interface FilterComponent {\n delay?: number;\n changesSubscription?: Subscription;\n readonly query: InputSignal<unknown>;\n readonly inputClass: InputSignal<string>;\n readonly source: InputSignal<DataSource>;\n readonly column: InputSignal<Column>;\n readonly filter: EventEmitter<any> | OutputEmitterRef<any>;\n}\n","/**\n * Extending object that entered in first argument.\n *\n * Returns extended object or false if have no target object or incorrect type.\n *\n * If you wish to clone source object (without modify it), just use empty new\n * object as first argument, like this:\n * deepExtend({}, yourObj_1, [yourObj_N]);\n */\nexport const deepExtend = function(...objects: any[]): any {\n if (objects.length < 1 || typeof objects[0] !== 'object') {\n return false;\n }\n\n if (objects.length < 2) {\n return objects[0];\n }\n\n const target = objects[0];\n\n // convert arguments to array and cut off target object\n const args = Array.prototype.slice.call(objects, 1);\n\n let val, src;\n\n args.forEach((obj: any) => {\n // skip argument if it is array or isn't object\n if (typeof obj !== 'object' || Array.isArray(obj)) {\n return;\n }\n\n Object.keys(obj).forEach(function (key) {\n src = target[key]; // source value\n val = obj[key]; // new value\n\n // recursion prevention\n if (val === target) {\n return;\n\n /**\n * if new value isn't object then just overwrite by new value\n * instead of extending.\n */\n } else if (typeof val !== 'object' || val === null) {\n target[key] = val;\n return;\n\n // just clone arrays (and recursive clone objects inside)\n } else if (Array.isArray(val)) {\n target[key] = [...val];\n return;\n\n // overwrite by new value if source isn't object or array\n } else if (typeof src !== 'object' || src === null || Array.isArray(src)) {\n target[key] = deepExtend({}, val);\n return;\n\n // source value and new value is objects both, extending...\n } else {\n target[key] = deepExtend(src, val);\n return;\n }\n });\n });\n\n return target;\n};\n\nexport class Deferred<T> {\n promise: Promise<T>;\n resolve!: (value?: T) => void;\n reject!: (reason?: string) => void;\n\n constructor() {\n this.promise = new Promise<T>((resolve, reject) => {\n this.resolve = resolve as any;\n this.reject = reject;\n });\n }\n}\n\n// getDeepFromObject({result: {data: 1}}, 'result.data', 2); // returns 1\nexport function getDeepFromObject(object = {}, name: string, defaultValue: any = null) {\n try {\n let level = deepExtend({}, object)\n const keys = name.split('.');\n if (keys.length === 1) {\n return level[keys[0]] ?? defaultValue;\n }\n keys.forEach((k) => {\n if (level && typeof level[k] !== 'undefined') {\n level = level[k];\n } else {\n level = defaultValue\n }\n });\n return level ?? defaultValue\n } catch {\n return defaultValue\n }\n}\n\nexport function getPageForRowIndex(index: number, perPage: number): number {\n // we need to add 1 to convert 0-based index to 1-based page number.\n return Math.floor(index / perPage) + 1;\n}\n\nexport function cloneArrayOfObject<T>(array: T[]): T[] {\n return array.map((obj) => Object.assign({}, obj));\n}\n\nexport function getRandomId(prefix = '', suffix = ''): string {\n return `${prefix ? `${prefix}-` : ''}${Math.random().toString(16).slice(2)}${suffix ? `-${suffix}` : ''}`;\n}\n\nexport function setLocalStorage(key: string, value: string | object | boolean): void {\n localStorage.setItem(key, JSON.stringify(value));\n}\n\nexport function getLocalStorage<T = string>(key: string): T | null {\n const valueString = localStorage.getItem(key);\n if (!valueString) {\n return null;\n }\n try {\n return JSON.parse(valueString);\n } catch {\n return null;\n }\n}\n\nexport function promiseDelay(time: number): Promise<void> {\n return new Promise((resolve) => {\n setTimeout(() => {\n resolve();\n }, time);\n });\n}\n","import { CdkDrag, CdkDragDrop, CdkDragPlaceholder, CdkDropList, moveItemInArray } from '@angular/cdk/drag-drop';\nimport { Component, effect, input, signal } from '@angular/core';\nimport { Grid } from '../../lib/grid';\nimport { cloneArrayOfObject } from '../../lib/helpers';\nimport { ColumnPositionState } from '../../lib/interfaces/smart-table.models';\n\n@Component({\n selector: 'ng2-table-columns-editor',\n templateUrl: './table-columns-editor.component.html',\n styleUrls: ['./table-columns-editor.component.scss'],\n imports: [CdkDropList, CdkDrag, CdkDragPlaceholder],\n})\nexport class TableColumnsEditorComponent {\n protected infoText = 'You can drag and drop columns as you wish and also disable unnecessary ones.';\n public readonly grid = input<Grid>();\n public readonly close = input.required<() => void>();\n\n protected currentState: ColumnPositionState[] = [];\n readonly stateHasChanged = signal(false);\n\n constructor() {\n effect(() => {\n this.currentState = cloneArrayOfObject(this.grid()?.currentColumnsSortState || []);\n });\n }\n\n resetChanges() {\n this.currentState = cloneArrayOfObject(this.grid()?.currentColumnsSortState || []);\n this.stateHasChanged.set(false);\n }\n\n drop(event: CdkDragDrop<ColumnPositionState[]>) {\n moveItemInArray(this.currentState, event.previousIndex, event.currentIndex);\n this.updateChangedState();\n }\n\n setVisibility(index: number) {\n this.currentState[index].hide = !this.currentState[index].hide;\n this.updateChangedState();\n }\n\n setAndUpdate() {\n this.grid()?.applyColumnsSortState(this.currentState);\n this.close()();\n this.stateHasChanged.set(false);\n }\n\n private updateChangedState() {\n this.stateHasChanged.set(\n JSON.stringify(this.grid()?.currentColumnsSortState) !== JSON.stringify(this.currentState),\n );\n }\n}\n","<div class=\"sort-card\">\n <div class=\"sort-card-header\">\n <h6>Table columns setup</h6>\n </div>\n <div class=\"sort-card-body\">\n <div\n class=\"list\"\n cdkDropList\n [cdkDropListData]=\"currentState\"\n (cdkDropListDropped)=\"drop($event)\"\n >\n @for (column of currentState; track column.key + i; let i = $index) {\n\n <div\n cdkDrag\n [cdkDragLockAxis]=\"'y'\"\n [cdkDragStartDelay]=\"300\"\n [cdkDragDisabled]=\"column.moveDisabled\"\n class=\"drag-row\"\n #dragRow\n [style.--drag-row-height]=\"50\"\n >\n <div class=\"drag-placeholder\" *cdkDragPlaceholder></div>\n <div class=\"index-cell\">\n {{ i + 1 }}\n </div>\n <label class=\"sort-column-checkbox-wrap\" [for]=\"'sort-column-checkbox-' + i\">\n <span></span>\n <input\n [disabled]=\"column.moveDisabled\"\n [id]=\"'sort-column-checkbox-' + i\"\n title=\"Active state. If checked the column will be displayed\"\n type=\"checkbox\"\n class=\"sort-column-checkbox-input\"\n [checked]=\"!column.hide\"\n (change)=\"setVisibility(i)\"\n />\n <span></span>\n </label>\n {{ column.title }}\n </div>\n }\n </div>\n </div>\n @if (stateHasChanged()) {\n <div class=\"sort-card-footer\">\n <button class=\"reset-button\" (click)=\"resetChanges()\">reset</button>\n <button class=\"update-button\" (click)=\"setAndUpdate()\">Update</button>\n </div>\n }\n</div>\n","import { Overlay, OverlayConfig, OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { ComponentRef, computed, Directive, ElementRef, inject, input, OnDestroy } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { Ng2SmartTableComponent } from '../../ng2-smart-table.component';\nimport { TableColumnsEditorComponent } from './table-columns-editor.component';\n\n@Directive({\n selector: '[ng2SmartTableColumnEditor]',\n host: {\n '(click)': 'buttclicked()',\n },\n})\nexport class SmartTableColumnEditorDirective implements OnDestroy {\n readonly tableComponent = input<Ng2SmartTableComponent>();\n\n private readonly grid = computed(() => {\n return this.tableComponent()?.grid;\n });\n\n private readonly overlay = inject(Overlay);\n private readonly elementRef = inject(ElementRef);\n private readonly destroy$ = new Subject<void>();\n\n protected overlayRef?: OverlayRef;\n\n ngOnDestroy(): void {\n this.overlayRef?.dispose();\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n protected showDropdown(): void {\n this.overlayRef = this.overlay.create(this.getOverlayConfig());\n const componentPortal = new ComponentPortal(TableColumnsEditorComponent);\n const dropdownRef: ComponentRef<TableColumnsEditorComponent> = this.overlayRef.attach(componentPortal);\n dropdownRef.setInput('grid', this.grid());\n dropdownRef.setInput('close', this.hide.bind(this));\n this.overlayRef\n ?.backdropClick()\n .pipe(takeUntil(this.destroy$))\n .subscribe(() => this.hide());\n }\n\n public hide() {\n this.overlayRef?.detach();\n this.overlayRef?.dispose();\n this.destroy$.next();\n }\n\n buttclicked() {\n this.showDropdown();\n }\n\n private getOverlayConfig(): OverlayConfig {\n const positionStrategy = this.overlay\n .position()\n .flexibleConnectedTo(this.elementRef)\n .withPush(false)\n .withPositions([\n {\n originX: 'center',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'top',\n },\n {\n originX: 'center',\n originY: 'bottom',\n overlayX: 'center',\n overlayY: 'top',\n },\n {\n originX: 'center',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top',\n },\n {\n originX: 'center',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom',\n },\n {\n originX: 'center',\n originY: 'top',\n overlayX: 'center',\n overlayY: 'bottom',\n },\n {\n originX: 'center',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom',\n },\n ]);\n\n return new OverlayConfig({\n positionStrategy: positionStrategy,\n hasBackdrop: true,\n backdropClass: 'cdk-overlay-transparent-backdrop',\n });\n }\n}\n","import { Column } from './column';\nimport { DataSet } from './data-set';\nimport { Row } from './row';\n\nexport class Cell {\n private prepareValue = (value: any) => value\n newValue: any = '';\n\n constructor(protected value: any, protected row: Row, protected column: Column, protected dataSet: DataSet) {\n this.newValue = value;\n }\n\n getColumn(): Column {\n return this.column;\n }\n\n getColumnClass(): string | undefined {\n return this.column.class;\n }\n\n getRow(): Row {\n return this.row;\n }\n\n getValue() {\n const prepare = this.column.valuePrepareFunction || this.prepareValue;\n return prepare.call(null, this.value, this.row.getData(), this);\n }\n\n getNotPrepareValue() {\n return this.value\n }\n\n setValue(value: any) {\n this.newValue = value;\n }\n\n getId(): string {\n return this.getColumn().id;\n }\n\n getTitle(): string {\n return this.getColumn().title;\n }\n\n isEditable(): boolean {\n if (this.getRow().index === -1) {\n return this.getColumn().isAddable;\n }\n else {\n return this.getColumn().isEditable;\n }\n }\n\n}\n","import { SmartTableCompareFunction, SmartTableEditorAndFilter, SmartTableFilterFunction, SmartTableValuePrepareFunction } from '../interfaces/smart-table.models';\nimport { SmartTableColumnSettings, SmartTableColumnSettingsTypes, SmartTableSortDirection } from './../interfaces/smart-table.models';\nimport { DataSet } from './data-set';\n\nexport class Column {\n readonly title: string = '';\n readonly type: SmartTableColumnSettingsTypes = 'text';\n readonly class: string = '';\n readonly width: string = '';\n\n hide = false;\n isSortable = false;\n isEditable = true;\n isAddable = true;\n isFilterable = false;\n sortDirection: SmartTableSortDirection = 'asc';\n editor: SmartTableEditorAndFilter | false = false;\n filter: SmartTableEditorAndFilter | false = false;\n renderComponent: any;\n\n compareFunction?: SmartTableCompareFunction;\n valuePrepareFunction?: SmartTableValuePrepareFunction;\n filterFunction?: SmartTableFilterFunction;\n\n constructor(public id: string, private settings: SmartTableColumnSettings, protected dataSet: DataSet) {\n this.title = settings.title;\n this.class = settings.class || '';\n this.width = settings.width || '';\n this.hide = !!settings.hide;\n this.type = settings.type;\n if (settings?.editor) {\n this.editor = settings.editor;\n }\n if (settings?.filter) {\n this.filter = settings.filter;\n }\n if (settings.type === 'custom' && settings.renderComponent) {\n this.renderComponent = settings.renderComponent;\n }\n this.isFilterable = typeof settings.filter === 'undefined' ? true : !!settings['filter'];\n this.isSortable = settings.sort ?? true;\n this.isEditable = settings.editable ?? true;\n this.isAddable= settings.addable ?? false;\n this.sortDirection = settings.sortDirection || 'asc';\n\n this.compareFunction = settings.compareFunction;\n this.valuePrepareFunction = settings.valuePrepareFunction;\n this.filterFunction = settings.filterFunction;\n }\n\n getEditorConfig(): SmartTableEditorAndFilter['config'] | false {\n if (this.editor) {\n return this.editor?.config\n }\n return false\n }\n\n getFilterType() {\n return this.filter && this.filter.type;\n }\n\n getFilterConfig(): SmartTableEditorAndFilter['config'] | false {\n if (this.filter) {\n return this.filter?.config\n }\n return false;\n }\n}\n","import { computed, signal } from \"@angular/core\";\nimport { Cell } from \"./cell\";\nimport { Column } from \"./column\";\nimport { DataSet } from \"./data-set\";\n\nexport class Row {\n readonly pending = signal(false);\n readonly isSelected = signal(false);\n readonly isInEditing = signal(false);\n readonly cells = signal<Cell[]>([]);\n public readonly visibleCells = computed<Cell[]>(() =>\n this.cells().filter((cell: Cell) => !cell.getColumn().hide)\n );\n\n constructor(\n public index: number,\n private data: any,\n protected _dataSet: DataSet\n ) {\n this.process();\n }\n\n getCell(column: Column): Cell | undefined {\n return this.cells().find((el) => el.getColumn() === column);\n }\n\n getData(): any {\n return this.data;\n }\n\n getNewData() {\n const values = Object.assign({}, this.data);\n this.cells().forEach(\n (cell) => (values[cell.getColumn().id] = cell.newValue)\n );\n return values;\n }\n\n setData<T = any>(data: T): void {\n this.data = data;\n this.process();\n }\n\n process(): void {\n const cells = this._dataSet\n .getColumns()\n .map((column: Column) => this.createCell(column));\n this.cells.set(cells);\n }\n\n createCell(column: Column): Cell {\n const value =\n typeof this.data[column.id] === \"undefined\"\n ? \"\"\n : this.data[column.id];\n return new Cell(value, this, column, this._dataSet);\n }\n}\n","import { Cell } from '../data-set/cell';\nimport { DataSource } from '../data-source/data-source';\nimport { Deferred } from '../helpers';\n\ninterface SelectOption {\n title: string;\n value: any;\n}\n\nexport interface ViewCell<V = any, R = any> {\n value: V;\n rowData: R;\n}\n\nexport type ActionPosition = 'left' | 'right';\n\nexport interface ColumnPositionState {\n key: string;\n title: string;\n hide: boolean;\n moveDisabled: boolean;\n}\n\nexport interface SmartTableSettings<T extends Record<string, any> = any> {\n selectMode?: 'single' | 'multi';\n mode?: 'inline' | 'external';\n columnSortStorageKey?: string;\n columnSort?: boolean; // if you want to add column sort need to set true;\n hideHeader?: boolean;\n hideSubHeader?: boolean;\n actions?: SmartTableAction<T> | false;\n actionsPosition?: ActionPosition;\n filter?: {\n inputClass: string;\n };\n edit?:\n | {\n inputClass?: string;\n editButtonContent?: string;\n saveButtonContent?: string;\n cancelButtonContent?: string;\n confirmSave?: boolean;\n hasPermissionFunction?: (row: T) => boolean;\n }\n | false;\n add?:\n | {\n inputClass?: string;\n addButtonContent?: string;\n createButtonContent?: string;\n cancelButtonContent?: string;\n confirmCreate?: boolean;\n }\n | false;\n delete?:\n | {\n deleteButtonContent?: string;\n confirmDelete?: boolean;\n hasPermissionFunction?: (row: T) => boolean;\n }\n | false;\n attr?: {\n id?: string;\n class?: string;\n };\n noDataMessage?: string;\n columns: SmartTableColumnSettings<T>[];\n pager?: (Omit<SmartTablePagerSettings, 'total' | 'page'>) | false;\n rowClassFunction?: (row: { data: T }) => string;\n}\n\nexport interface SmartTableAction<T=any> {\n columnTitle?: string;\n add?: boolean;\n edit?: boolean;\n delete?: boolean;\n custom?: SmartTableCustomAction<T>[];\n}\n\nexport interface SmartTableCustomAction<T=any> {\n name: string;\n title: string; // insert html content to action button\n hasPermissionFunction?: (row: T) => boolean;\n}\n\nexport type SmartTableColumnSettingsTypes = 'text' | 'html' | 'custom';\n\nexport type SmartTableColumnSettings<T extends Record<string, any> = any> =\n | SmartTableTextHtmlColumn<T>\n | SmartTableCustomColumn<T>;\n\nexport type SmartTableCompareFunction = (direction: number, a: any, b: any) => number;\n\nexport type SmartTableValuePrepareFunction<T extends Record<string, any> = any> = (\n columnData: any,\n rowData: T,\n cell: Cell,\n) => any;\n\nexport type SmartTableFilterFunction = (columnData: any, search: string) => boolean;\n\ninterface SmartTableDefaultColumn<T extends Record<string, any>> {\n key: keyof T;\n title: string;\n width?: string; //example: '20px', '20%'\n class?: string;\n editable?: boolean;\n hide?: boolean;\n // disable column move in column change position list\n moveDisabled?: boolean;\n sort?: boolean;\n addable?: boolean;\n sortDirection?: SmartTableSortDirection | false;\n editor?: SmartTableEditorAndFilter;\n filter?: SmartTableEditorAndFilter | false;\n compareFunction?: SmartTableCompareFunction;\n valuePrepareFunction?: SmartTableValuePrepareFunction<T>;\n filterFunction?: SmartTableFilterFunction;\n}\n\ninterface SmartTableTextHtmlColumn<T extends Record<string, any>> extends SmartTableDefaultColumn<T> {\n type: 'text' | 'html';\n}\n\ninterface SmartTableCustomColumn<T extends Record<string, any>> extends SmartTableDefaultColumn<T> {\n type: 'custom';\n renderComponent: any;\n}\n\nexport type SmartTableEditorAndFilterTypes = 'text' | 'textarea' | 'list' | 'custom' | 'checkbox';\n\nexport type SmartTableEditorAndFilter =\n | SmartTableTextEditor\n | SmartTableEditorList\n | SmartTableEditorCheckbox\n | SmartTableEditorCustom;\n\ninterface SmartTableTextEditor {\n type: 'text' | 'textarea';\n config: any;\n}\n\ninterface SmartTableEditorList {\n type: 'list';\n config: {\n selectText?: string;\n list: SelectOption[];\n };\n}\n\ninterface SmartTableEditorCheckbox {\n type: 'checkbox';\n config?: {\n true: any;\n false: any;\n resetText?: string;\n };\n}\n\ninterface SmartTableEditorCustom {\n type: 'custom';\n component: any;\n config?: any;\n}\n\nexport interface SmartTablePagerSettings {\n display: boolean;\n page: number;\n perPage: number;\n perPageSelect?: number[];\n total: number;\n}\n\nexport interface SmartTableFilterItem {\n /**\n * key of column to filter\n */\n field: string;\n search: string;\n filter?: SmartTableFilterFunction;\n}\n\nexport type SmartTableSortDirection = 'asc' | 'desc';\n\nexport interface SmartTableSortItem {\n field: string;\n direction: SmartTableSortDirection;\n compare?: SmartTableCompareFunction;\n}\n\ninterface SmartTableDefaultEvent<T> {\n confirm: Deferred<T>;\n data: T;\n source: DataSource<T>;\n}\n\nexport type SmartTableConfirmDeleteEvent<T = any> = SmartTableDefaultEvent<T>;\n\nexport type SmartTableRowClickedEvent<T = any> = Omit<SmartTableDefaultEvent<T>, 'confirm'>;\n\nexport interface SmartTableCustomEvent<T = any> extends Omit<SmartTableDefaultEvent<T>, 'confirm'> {\n action: string;\n}\n\nexport interface SmartTableRowSelectEvent<T = any> extends Omit<SmartTableDefaultEvent<T>, 'confirm'> {\n isSelected: boolean;\n selected: T[];\n}\n\nexport interface SmartTableConfirmEditEvent<T = any, N = T> extends SmartTableDefaultEvent<T> {\n newData: N;\n}\n\nexport interface SmartTableCreateConfirm<T = any> extends Omit<SmartTableDefaultEvent<T>, 'data'> {\n newData: T;\n}\n\nexport type ObjectStringString = Record<string, string>;\n\nexport enum SmartTableOnChangedEventName {\n 'load' = 'load',\n 'paging' = 'paging',\n 'update' = 'update',\n 'page' = 'page',\n 'filter' = 'filter',\n 'empty' = 'empty',\n 'sort' = 'sort',\n 'add' = 'add',\n 'remove' = 'remove',\n 'appendMany' = 'appendMany',\n 'prepend' = 'prepend',\n 'refresh' = 'refresh',\n 'columnRefresh' = 'columnRefresh',\n}\n\nexport type SmartTableOnChangedEventType = `${SmartTableOnChangedEventName}`;\n\ninterface SmartTableOnChangedEventBase<T extends Record<string, any> = any> {\n elements: T[];\n filters: SmartTableFilterItem[];\n paging: SmartTablePagerSettings;\n sort: SmartTableSortItem;\n}\n\ninterface SmartTableOnChangedEventAll<T extends Record<string, any> = any> {\n action: Exclude<SmartTableOnChangedEventType, 'remove' | 'update' | 'append' | 'prepend' | 'appendMany' | 'add'>;\n}\n\ninterface SmartTableAddEvent<T extends Record<string, any> = any> {\n action:\n | SmartTableOnChangedEventName.add\n | SmartTableOnChangedEventName.prepend\n | SmartTableOnChangedEventName.appendMany;\n newItems: T[];\n}\n\ninterface SmartTableUpdateEvent<T extends Record<string, any> = any> {\n action: SmartTableOnChangedEventName.update;\n newItem: T;\n oldItem: T;\n}\ninterface SmartTableRemoveEvent<T extends Record<string, any> = any> {\n action: SmartTableOnChangedEventName.remove;\n item: T;\n}\n\nexport type SmartTableOnChangedEventToEmit<T extends Record<string, any> = any> =\n | SmartTableAddEvent<T>\n | SmartTableUpdateEvent<T>\n | SmartTableRemoveEvent<T>\n | SmartTableOnChangedEventAll<T>;\n\nexport type SmartTableOnChangedEvent<T extends Record<string, any> = any> = SmartTableOnChangedEventToEmit<T>&SmartTableOnChangedEventBase<T>;\n\n","import { signal } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\nimport {\n SmartTableFilterItem,\n SmartTableOnChangedEvent,\n SmartTableOnChangedEventName,\n SmartTableOnChangedEventToEmit,\n SmartTablePagerSettings,\n SmartTableSortItem,\n} from '../interfaces/smart-table.models';\n\nexport abstract class DataSource<T = any> {\n protected readonly onChangedSource = new Subject<SmartTableOnChangedEvent>();\n protected sortConf: SmartTableSortItem = { field: '', direction: 'asc' };\n protected filters: SmartTableFilterItem[] = [];\n\n readonly pagingConf = signal<SmartTablePagerSettings>({\n page: 1,\n perPage: 100,\n total: 0,\n display: false,\n perPageSelect: [],\n });\n\n protected readonly data = signal<T[]>([]);\n /**\n * return all elements\n */\n abstract getAll(): Promise<T[]>;\n abstract getSort(): SmartTableSortItem;\n abstract getFilters(): SmartTableFilterItem[];\n abstract count(): number;\n\n refresh(): void {\n this.emitOnChanged({ action: SmartTableOnChangedEventName.refresh });\n }\n\n columnRefresh(): void {\n this.emitOnChanged({ action: SmartTableOnChangedEventName.columnRefresh });\n }\n\n onChanged(): Observable<SmartTableOnChangedEvent> {\n return this.onChangedSource.asObservable();\n }\n\n async prepend(element: T): Promise<true> {\n this.data.update((old) => [element, ...old]);\n this.emitOnChanged({ action: SmartTableOnChangedEventName.prepend, newItems: [element] });\n return Promise.resolve(true);\n }\n\n async appendMany(elements: T[]): Promise<true> {\n this.data.update((old) => [ ...old, ...elements,]);\n this.emitOnChanged({ action: SmartTableOnChangedEventName.appendMany, newItems: elements });\n return Promise.resolve(true);\n }\n\n async add(element: T): Promise<true> {\n this.data.update((old) => [ ...old, element,]);\n this.emitOnChanged({ action: SmartTableOnChangedEventName.add, newItems: [element] });\n return Promise.resolve(true);\n }\n\n async remove(element: T): Promise<true> {\n this.data.update((old) => old.filter((el) => el !== element));\n this.emitOnChanged({ action: SmartTableOnChangedEventName.remove, item: element });\n return Promise.resolve(true);\n }\n\n async update(oldItem: T, newItem: T): Promise<true> {\n this.emitOnChanged({ action: SmartTableOnChangedEventName.update, oldItem, newItem });\n return Promise.resolve(true);\n }\n\n async empty(): Promise<true> {\n this.data.set([]);\n this.emitOnChanged({ action: SmartTableOnChangedEventName.empty });\n return Promise.resolve(true);\n }\n\n setSort(conf: SmartTableSortItem, doEmit = true) {\n this.sortConf = conf;\n this.pagingConf.update((old) => ({ ...old, page: 1 }));\n if (doEmit) {\n this.emitOnChanged({ action: SmartTableOnChangedEventName.sort });\n }\n }\n\n async addFilter(newFilter: SmartTableFilterItem, doEmit = true) {\n if (!newFilter.field) {\n return;\n }\n const foundIndex = this.filters.findIndex((filter) => filter.field === newFilter.field);\n if (foundIndex === -1) {\n if (newFilter.search) {\n this.filters.push(newFilter);\n }\n } else {\n if (newFilter.search) {\n this.filters[foundIndex].search = newFilter.search;\n } else {\n this.filters.splice(foundIndex, 1);\n }\n }\n this.pagingConf.update((old) => ({ ...old, page: 1 }));\n if (doEmit) {\n this.emitOnChanged({ action: SmartTableOnChangedEventName.filter });\n }\n }\n\n setFilters(newFilters: SmartTableFilterItem[], doEmit = true) {\n this.filters = [...newFilters];\n this.pagingConf.update((old) => ({ ...old, page: 1 }));\n if (doEmit) {\n this.emitOnChanged({ action: SmartTableOnChangedEventName.filter });\n }\n }\n\n setPaging(page = 1, perPage: number, doEmit = true) {\n this.pagingConf.update((old) => ({ ...old, page: page, perPage: perPage }));\n if (doEmit) {\n this.emitOnChanged({ action: SmartTableOnChangedEventName.paging });\n }\n }\n\n setPage(page: number, doEmit = true) {\n this.pagingConf.update((old) => ({ ...old, page: page }));\n if (doEmit) {\n this.emitOnChanged({ action: SmartTableOnChangedEventName.page });\n }\n }\n\n emitOnChanged(eventData: SmartTableOnChangedEventToEmit, newElements?: T[]) {\n const actionData: SmartTableOnChangedEvent = {\n ...eventData,\n elements: newElements || this.data(),\n paging: this.pagingConf(),\n filters: this.getFilters(),\n sort: this.getSort(),\n };\n if (eventData.action === SmartTableOnChangedEventName.remove) {\n actionData.elements = (newElements || this.data()).filter((el) => el !== eventData.item);\n }\n this.onChangedSource.next(actionData);\n }\n}\n","import { SmartTableFilterFunction, SmartTableFilterItem } from \"../../interfaces/smart-table.models\";\n\nfunction filterValues(value: any, search: string): boolean {\n return value.toString().toLowerCase().includes(search.toString().toLowerCase());\n}\n\nexport async function isElementSatisfied<T extends Record<string, unknown>>(element: T, filters: SmartTableFilterItem[]) {\n return filters.every((filter: SmartTableFilterItem) => {\n if (!filter.search?.length) {\n return true;\n }\n const filterFunction: SmartTableFilterFunction = filter.filter || filterValues;\n try {\n const value = element[filter.field];\n return filterFunction(value, filter.search);\n } catch {\n return false\n }\n });\n}\n","export function paginateList(data: any[], page: number, perPage: number): any[] {\n return [...data].slice(perPage * (page - 1), perPage * page);\n}\n","import { SmartTableCompareFunction } from \"../../interfaces/smart-table.models\";\n\nexport function compareValues(direction: number, a: any, b: any) {\n if (a < b) {\n return -1 * direction;\n }\n if (a > b) {\n return direction;\n }\n return 0;\n}\n\nexport class LocalSorter {\n static async sort<T extends Record<string, any>>(\n data: T[],\n field: string,\n direction: string,\n customCompare?: SmartTableCompareFunction\n ): Promise<T[]> {\n const dir: number = direction === \"asc\" ? 1 : -1;\n const compare = customCompare ? customCompare : compareValues;\n\n return data.sort((a, b) => {\n return compare.call(null, dir, a[field], b[field]);\n });\n }\n}\n","import { computed, signal } from '@angular/core';\nimport {\n SmartTableFilterItem,\n SmartTableOnChangedEventName,\n SmartTableOnChangedEventToEmit,\n SmartTableOnChangedEventType,\n SmartTableSortItem,\n} from '../../interfaces/smart-table.models';\nimport { DataSource } from '../data-source';\nimport { isElementSatisfied } from './local.filter';\nimport { paginateList } from './local.pager';\nimport { LocalSorter } from './local.sorter';\n\nexport class LocalDataSource<T extends Record<string, any> = any> extends DataSource<T> {\n private readonly filteredAndSorted = signal<T[]>([]);\n\n constructor(data: T[] = []) {\n super();\n this.data.set(data);\n }\n\n async load(data: T[]): Promise<true> {\n this.data.set(data);\n this.emitOnChanged({ action: SmartTableOnChangedEventName.load }, data);\n return Promise.resolve(true);\n }\n\n override prepend(element: T): Promise<true> {\n this.reset(true);\n return super.prepend(element);\n }\n\n override appendMany(elements: T[]): Promise<true> {\n this.reset(true);\n return super.appendMany(elements);\n }\n\n override add(element: T): Promise<true> {\n this.reset(true);\n return super.add(element);\n }\n\n getAll(): Promise<T[]> {\n const data = this.data().slice(0);\n return Promise.resolve(data);\n }\n\n reset(silent = false) {\n if (silent) {\n this.filters = [];\n this.sortConf = { field: '', direction: 'asc' };\n this.pagingConf.update((old) => ({ ...old, page: 1 }));\n } else {\n this.setFilters([], false);\n this.setSort({ field: '', direction: 'asc' }, false);\n if (this.pagingConf().display) {\n this.setPage(1);\n }\n }\n }\n\n readonly count = computed(() => this.filteredAndSorted().length);\n\n getSort(): SmartTableSortItem {\n return this.sortConf;\n }\n\n getFilters(): SmartTableFilterItem[] {\n return this.filters;\n }\n\n override async emitOnChanged(event: SmartTableOnChangedEventToEmit, newElements?: T[]) {\n let renderData: T[] = this.filteredAndSorted().slice(0);\n const action = event.action as any;\n if (\n (['filter', 'refresh', 'load', 'add', 'prepend', 'appendMany'] satisfies SmartTableOnChangedEventType[]).includes(\n action,\n )\n ) {\n renderData = await this.filter(newElements || this.data().slice(0));\n renderData = await this.sort(renderData)\n this.filteredAndSorted.set(renderData);\n }\n if (action === SmartTableOnChangedEventName.sort) {\n renderData = await this.sort(renderData)\n this.filteredAndSorted.set(renderData);\n }\n if (\n this.pagingConf().display &&\n (['page', 'paging', 'refresh', 'load', 'sort', 'filter'] satisfies SmartTableOnChangedEventType[]).includes(\n action,\n )\n ) {\n renderData = this.paginate(this.filteredAndSorted());\n }\n super.emitOnChanged(event, renderData);\n\n if (this.pagingConf().display && this.isPageOutOfBounce()) {\n this.setPage(this.pagingConf().page - 1);\n }\n }\n\n protected async sort(data: T[]): Promise<T[]> {\n if (this.sortConf) {\n return LocalSorter.sort<T>(data, this.sortConf.field, this.sortConf.direction, this.sortConf.compare);\n }\n return data;\n }\n\n protected async filter(data: T[]): Promise<T[]> {\n if (!this.filters.length) {\n return data;\n }\n const filtered: T[] = [];\n\n await Promise.all(\n data.map(async (element) => {\n if (await isElementSatisfied(element, this.filters)) {\n filtered.push(element);\n }\n }),\n );\n\n return filtered;\n }\n\n protected paginate(data: T[]): T[] {\n if (this.pagingConf().display) {\n return paginateList(data, this.pagingConf().page, this.pagingConf().perPage);\n }\n return data;\n }\n\n private isPageOutOfBounce(): boolean {\n const { page, perPage } = this.pagingConf();\n return page * perPage >= this.count() + perPage && page > 1;\n }\n}\n","import { HttpParams } from '@angular/common/http';\nimport { computed } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { switchMap } from 'rxjs/operators';\nimport {\n SmartTableFilterItem,\n SmartTableOnChangedEventName,\n SmartTableOnChangedEventToEmit,\n SmartTablePagerSettings,\n SmartTableSortItem,\n} from '../../interfaces/smart-table.models';\nimport { DataSource } from '../data-source';\n\n// must return observable because of prepare can take some time\nexport type ParamsPrepareFunction = (options: {\n sort: SmartTableSortItem;\n filters: SmartTableFilterItem[];\n page: number;\n limit: number;\n}) => Observable<HttpParams>;\n\nexport type RequestFunction<T extends Record<string, any> = any> = (\n params: HttpParams,\n) => Observable<{ total: number; data: T[] }>;\n\nexport class ServerDataSource<T extends Record<string, any> = any> extends DataSource<T> {\n readonly count = computed(() => this.pagingConf().total);\n paramPrepareFunction: ParamsPrepareFunction;\n requestFunction: RequestFunction<T>;\n\n constructor(\n paramPrepareFunction: ParamsPrepareFunction,\n requestFunction: RequestFunction<T>,\n private initPagingConf?: Partial<SmartTablePagerSettings>,\n ) {\n super();\n this.pagingConf.update((old) => ({ ...old, ...this.initPagingConf }));\n this.paramPrepareFunction = paramPrepareFunction;\n this.requestFunction = requestFunction;\n }\n\n getAll(): Promise<T[]> {\n return Promise.resolve(this.data());\n }\n\n getSort(): SmartTableSortItem {\n return this.sortConf;\n }\n\n getFilters(): SmartTableFilterItem[] {\n return this.filters;\n }\n\n override emitOnChanged(eventData: SmartTableOnChangedEventToEmit, newElements?: T[] | undefined): void {\n if (\n [\n SmartTableOnChangedEventName.filter,\n SmartTableOnChangedEventName.sort,\n SmartTableOnChangedEventName.page,\n SmartTableOnChangedEventName.paging,\n SmartTableOnChangedEventName.refresh,\n ].includes(eventData.action as SmartTableOnChangedEventName)\n ) {\n this.paramPrepareFunction({\n sort: this.sortConf,\n filters: this.filters,\n page: this.pagingConf().page,\n limit: this.pagingConf().perPage,\n })\n .pipe(switchMap((params) => this.requestFunction(params)))\n .subscribe((res) => {\n this.data.set(res.data);\n this.pagingConf.update((old) => ({ ...old, total: res.total }));\n super.emitOnChanged(eventData, res.data);\n });\n } else {\n super.emitOnChanged(eventData, newElements);\n }\n }\n}\n","import { Component, computed, input } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { DataSource } from '../../lib/data-source/data-source';\n\n@Component({\n selector: 'ng2-smart-table-pager',\n styleUrls: ['./pager.component.scss'],\n templateUrl: './pager.component.html',\n standalone: true,\n imports: [FormsModule],\n})\nexport class PagerComponent {\n readonly source = input.required<DataSource>();\n protected readonly pagingConf = computed(() => this.source().pagingConf());\n protected readonly currentPerPage = computed(() => this.pagingConf().perPage);\n protected readonly currentPage = computed(() => this.pagingConf().page);\n protected readonly count = computed(() => this.source().count());\n protected readonly shouldShow = computed(() => this.pagingConf().display && this.count() > this.currentPerPage());\n protected readonly lastPage = computed(() => Math.ceil(this.count() / this.currentPerPage()));\n protected readonly pages = computed(() => this.getPages(this.currentPage(), this.lastPage()));\n\n paginate(page: number) {\n this.source().setPage(page);\n }\n\n next() {\n this.paginate(this.currentPage() + 1);\n }\n\n prev() {\n this.paginate(this.currentPage() - 1);\n }\n\n isString(value: string | number): value is string {\n return typeof value === 'string';\n }\n\n getPages(current: number, last: number) {\n const delta = 2,\n left = current - delta,\n right = current + delta + 1,\n range = [],\n rangeWithDots = [];\n let l;\n\n for (let i = 1; i <= last; i++) {\n if (i == 1 || i == last || (i >= left && i < right)) {\n range.push(i);\n }\n }\n\n for (const i of range) {\n if (l) {\n if (i - l === 2) {\n rangeWithDots.push(l + 1);\n } else if (i - l !== 1) {\n rangeWithDots.push('...');\n }\n }\n rangeWithDots.push(i);\n l = i;\n }\n return rangeWithDots;\n }\n\n onChangePerPage(target: HTMLSelectElement) {\n if (!target.value) {\n return;\n }\n this.source().setPaging(1, +target.value);\n }\n}\n","@if (shouldShow()) {\n<div class=\"ng2-smart-pagination-wrap\">\n @if ((pagingConf().perPageSelect?.length || 0) > 0) {\n <div></div>\n }\n <nav class=\"ng2-smart-pagination-nav\">\n <ul class=\"ng2-smart-pagination pagination\">\n <li class=\"ng2-smart-page-item page-item\" [class.disabled]=\"currentPage() === 1\">\n <a\n class=\"ng2-smart-page-link page-link\"\n href=\"#\"\n (click)=\"currentPage() === 1 ? false : paginate(1)\"\n aria-label=\"First\">\n <span aria-hidden=\"true\">&laquo;</span>\n </a>\n </li>\n <li class=\"ng2-smart-page-item page-item\" [class.disabled]=\"currentPage() === 1\">\n <a\n class=\"ng2-smart-page-link page-link page-link-prev\"\n href=\"#\"\n (click)=\"currentPage() === 1 ? false : prev()\"\n aria-label=\"Prev\">\n <span aria-hidden=\"true\">&lt;</span>\n </a>\n </li>\n @for (page of pages(); track $index) {\n <li class=\"ng2-smart-page-item page-item\" [class.active]=\"currentPage() === page\">\n @if (currentPage() === page || isString(page)) {\n <span class=\"ng2-smart-page-link page-link\">{{ page }}</span>\n } @else {\n <a class=\"ng2-smart-page-link page-link\" href=\"#\" (click)=\"paginate(page)\">{{ page }}</a>\n }\n </li>\n }\n <li class=\"ng2-smart-page-item page-item\" [class.disabled]=\"currentPage() === lastPage()\">\n <a\n class=\"ng2-smart-page-link page-link page-link-next\"\n href=\"#\"\n (click)=\"currentPage() === lastPage() ? false : next()\"\n aria-label=\"Next\">\n <span aria-hidden=\"true\">&gt;</span>\n </a>\n </li>\n <li class=\"ng2-smart-page-item page-item\" [class.disabled]=\"currentPage() === lastPage()\">\n <a\n class=\"ng2-smart-page-link page-link\"\n href=\"#\"\n (click)=\"currentPage() === lastPage() ? false : paginate(lastPage())\"\n aria-label=\"Last\">\n <span aria-hidden=\"true\">&raquo;</span>\n </a>\n </li>\n </ul>\n </nav>\n @if ((pagingConf().perPageSelect?.length || 0) > 0) {\n <nav class=\"ng2-smart-pagination-per-page\">\n <label for=\"per-page\"> Per Page: </label>\n <select (change)=\"onChangePerPage($any($event.target))\" [ngModel]=\"currentPerPage()\" id=\"per-page\">\n @for (item of pagingConf().perPageSelect; track $index) {\n <option [value]=\"item\">{{ item }}</option>\n }\n </select>\n </nav>\n }\n</div>\n\n}\n","import { Component, computed } from '@angular/core';\n\nimport { BaseEditorComponent } from './base-editor.component';\n\n@Component({\n selector: 'ng2-checkbox-editor',\n styleUrls: ['./editor.component.scss'],\n template: `\n <input\n [class]=\"inputClass()\"\n type=\"checkbox\"\n class=\"form-control\"\n [name]=\"cell().getId()\"\n [disabled]=\"!cell().isEditable()\"\n (change)=\"onChange($event)\"\n [checked]=\"cell().getValue() === trueVal()\" />\n `,\n standalone: true,\n})\nexport class CheckboxEditorComponent extends BaseEditorComponent {\n readonly trueVal = computed(() => {\n return this.cell().getColumn().getEditorConfig()?.true || true;\n });\n readonly falseVal = computed(() => {\n return this.cell().getColumn().getEditorConfig()?.false || false;\n });\n\n constructor() {\n super();\n }\n\n onChange(event: any) {\n this.cell().newValue = event.target.checked ? this.trueVal() : this.falseVal();\n }\n}\n","import { Component } from '@angular/core';\n\nimport { FormsModule } from '@angular/forms';\nimport { BaseEditorComponent } from './base-editor.component';\n\n@Component({\n selector: 'ng2-input-editor',\n styleUrls: ['./editor.component.scss'],\n template: `\n <input\n [class]=\"inputClass()\"\n class=\"form-control\"\n [(ngModel)]=\"cell().newValue\"\n [name]=\"cell().getId()\"\n [placeholder]=\"cell().getTitle()\"\n [disabled]=\"!cell().isEditable()\" />\n `,\n standalone: true,\n imports: [FormsModule],\n})\nexport class InputEditorComponent extends BaseEditorComponent {}\n","import { Component } from '@angular/core';\n\nimport { FormsModule } from '@angular/forms';\nimport { BaseEditorComponent } from './base-editor.component';\n\n@Component({\n selector: 'ng2-select-editor',\n template: `\n <select\n [class]=\"inputClass()\"\n class=\"form-control\"\n [(ngModel)]=\"cell().newValue\"\n [name]=\"cell().getId()\"\n [disabled]=\"!cell().isEditable()\">\n @for (option of cell().getColumn().getEditorConfig()?.list; track $index) {\n <option [value]=\"option.value\" [selected]=\"option.value === cell().getValue()\">\n {{ option.title }}\n </option>\n }\n </select>\n `,\n standalone: true,\n imports: [FormsModule],\n})\nexport class SelectEditorComponent extends BaseEditorComponent {}\n","import { Component } from '@angular/core';\n\nimport { FormsModule } from '@angular/forms';\nimport { BaseEditorComponent } from './base-editor.component';\n\n@Component({\n selector: 'ng2-textarea-editor',\n styleUrls: ['./editor.component.scss'],\n template: `\n <textarea\n [class]=\"inputClass()\"\n class=\"form-control\"\n [(ngModel)]=\"cell().newValue\"\n [name]=\"cell().getId()\"\n [disabled]=\"!cell().isEditable()\"\n [placeholder]=\"cell().getTitle()\">\n </textarea>\n `,\n standalone: true,\n imports: [FormsModule],\n})\nexport class TextareaEditorComponent extends BaseEditorComponent {}\n","import { Component, computed } from '@angular/core';\n\nimport { SmartTableEditorAndFilterTypes } from '../../../lib/interfaces/smart-table.models';\nimport { BaseEditorComponent } from '../cell-editors/base-editor.component';\nimport { CheckboxEditorComponent } from '../cell-editors/checkbox-editor.component';\nimport { InputEditorComponent } from '../cell-editors/input-editor.component';\nimport { SelectEditorComponent } from '../cell-editors/select-editor.component';\nimport { TextareaEditorComponent } from '../cell-editors/textarea-editor.component';\n\n@Component({\n selector: 'ng2-table-cell-build-in-editor',\n templateUrl: './build-in-editor.component.html',\n imports: [SelectEditorComponent, TextareaEditorComponent, CheckboxEditorComponent, InputEditorComponent],\n standalone: true,\n})\nexport class BuildInEditorComponent extends BaseEditorComponent {\n protected readonly editorType = computed<SmartTableEditorAndFilterTypes>(() => {\n const editor = this.cell().getColumn().editor;\n if (editor) {\n return editor.type || 'text';\n }\n return 'text';\n });\n}\n","<div role=\"none\" (click)=\"$event.stopPropagation()\">\n @switch (editorType()) {\n @case ('list') {\n <ng2-select-editor\n [cell]=\"cell()\"\n [inputClass]=\"inputClass()\">\n </ng2-select-editor>\n }\n @case ('textarea') {\n <ng2-textarea-editor\n [cell]=\"cell()\"\n [inputClass]=\"inputClass()\">\n </ng2-textarea-editor>\n }\n @case ('checkbox') {\n <ng2-checkbox-editor\n [cell]=\"cell()\"\n [inputClass]=\"inputClass()\">\n </ng2-checkbox-editor>\n }\n @default {\n <ng2-input-editor\n [cell]=\"cell()\"\n [inputClass]=\"inputClass()\">\n </ng2-input-editor>\n }\n}\n</div>","import {\n Component,\n ComponentRef,\n OnChanges,\n OnDestroy,\n SimpleChanges,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\n\nimport { SmartTableEditorAndFilter } from '../../../lib/interfaces/smart-table.models';\nimport { BaseEditorComponent } from '../cell-editors/base-editor.component';\n\n@Component({\n selector: 'ng2-table-cell-custom-editor',\n template: ` <ng-template #dynamicTarget></ng-template> `,\n standalone: true,\n})\nexport class CustomEditComponent extends BaseEditorComponent implements OnChanges, OnDestroy {\n @ViewChild('dynamicTarget', { read: ViewContainerRef, static: true })\n dynamicTarget?: ViewContainerRef;\n\n private customComponent?: ComponentRef<BaseEditorComponent>;\n\n ngOnChanges(changes: SimpleChanges) {\n const editor: SmartTableEditorAndFilter | false = this.cell().getColumn().editor;\n if (this.customComponent) {\n if (this.customComponent?.instance && 'ngOnChanges' in this.customComponent.instance) {\n try {\n const onChanges = this.customComponent.instance.ngOnChanges as (changes: SimpleChanges) => void;\n onChanges(changes);\n } catch {\n // do nothing\n }\n }\n return;\n }\n if (this.cell() && !this.customComponent && editor && editor.type == 'custom') {\n this.customComponent = this.dynamicTarget?.createComponent(editor.component);\n this.customComponent?.setInput('cell', this.cell());\n this.customComponent?.setInput('inputClass', this.inputClass());\n }\n }\n\n ngOnDestroy() {\n if (this.customComponent) {\n this.customComponent.destroy();\n }\n }\n}\n","import { Component, input } from '@angular/core';\n\nimport { Cell } from '../../../lib/data-set/cell';\nimport { SmartTableEditorAndFilterTypes } from '../../../lib/interfaces/smart-table.models';\nimport { BuildInEditorComponent } from './build-in-editor.component';\nimport { CustomEditComponent } from './custom-edit.component';\n\n@Component({\n selector: 'ng2-table-cell-edit-mode',\n template: `\n <div>\n @switch (getEditorType()) { @case ('custom') {\n <ng2-table-cell-custom-editor [cell]=\"cell()\" [inputClass]=\"inputClass()\"> </ng2-table-cell-custom-editor>\n } @default {\n <ng2-table-cell-build-in-editor [cell]=\"cell()\" [inputClass]=\"inputClass()\"> </ng2-table-cell-build-in-editor>\n } }\n </div>\n `,\n standalone: true,\n imports: [CustomEditComponent, BuildInEditorComponent],\n})\nexport class EditCellComponent {\n readonly cell = input.required<Cell>();\n readonly inputClass = input('');\n\n getEditorType(): SmartTableEditorAndFilterTypes {\n const editor = this.cell().getColumn().editor;\n if (editor) {\n return editor.type;\n }\n return 'text';\n }\n}\n","import { Component, input } from \"@angular/core\";\n\nimport { NgComponentOutlet } from \"@angular/common\";\nimport { Cell } from \"../../../lib/data-set/cell\";\n\n@Component({\n selector: \"ng2-custom-view-component\",\n template: `<ng-template\n *ngComponentOutlet=\"\n cell().getColumn().renderComponent;\n inputs: { rowData: cell().getRow().getData(), value: cell().getValue() }\n \"\n ></ng-template>`,\n imports: [NgComponentOutlet],\n standalone: true,\n})\nexport class CustomViewComponent {\n readonly cell = input.required<Cell>();\n}\n","import { ChangeDetectionStrategy, Component, input } from \"@angular/core\";\n\nimport { Cell } from \"../../../lib/data-set/cell\";\nimport { CustomViewComponent } from \"./custom-view.component\";\n\n@Component({\n selector: \"ng2-table-cell-view-mode\",\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <div>\n @switch (cell().getColumn().type) { @case ('custom') {\n <ng2-custom-view-component [cell]=\"cell()\"></ng2-custom-view-component>\n } @case ('html') {\n <div [innerHTML]=\"cell().getValue()\"></div>\n } @default {\n <div>{{ cell().getValue() }}</div>\n } }\n </div>\n `,\n standalone: true,\n imports: [CustomViewComponent],\n})\nexport class ViewCellComponent {\n readonly cell = input.required< Cell>()\n}\n","import { Component, input } from \"@angular/core\";\n\nimport { Cell } from \"../../lib/data-set/cell\";\nimport { EditCellComponent } from \"./cell-edit-mode/edit-cell.component\";\nimport { ViewCellComponent } from \"./cell-view-mode/view-cell.component\";\n\n@Component({\n selector: \"ng2-smart-table-cell\",\n template: `\n @if (!isInEditing()) {\n <ng2-table-cell-view-mode [cell]=\"cell()\"></ng2-table-cell-view-mode>\n } @else {\n <ng2-table-cell-edit-mode\n [cell]=\"cell()\"\n [inputClass]=\"inputClass()\"\n >\n </ng2-table-cell-edit-mode>\n }\n `,\n standalone: true,\n imports: [ViewCellComponent, EditCellComponent],\n})\nexport class CellComponent {\n readonly cell = input.required<Cell>()\n\n readonly inputClass = input('');\n readonly isInEditing = input<boolean>(false);\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n EventEmitter,\n input,\n OutputEmitterRef\n} from \"@angular/core\";\n\nimport { Row } from \"../../../lib/data-set/row\";\nimport { Grid } from \"../../../lib/grid\";\n\n@Component({\n selector: \"ng2-st-tbody-create-cancel\",\n template: `\n @if (!row().pending()) {\n <a\n href=\"#\"\n [id]=\"'row-' + row().index + '_editing-confirm-button'\"\n class=\"ng2-smart-action ng2-smart-action-edit-save\"\n [innerHTML]=\"saveButtonContent()\"\n (click)=\"onSave($event)\"\n ></a>\n <a\n href=\"#\"\n [id]=\"'row-' + row().index + '_editing-cancel-button'\"\n class=\"ng2-smart-action ng2-smart-action-edit-cancel\"\n [innerHTML]=\"cancelButtonContent()\"\n (click)=\"onCancelEdit($event)\"\n ></a>\n } @else {\n <div style=\"display: flex;\">\n <svg\n role=\"none\"\n (click)=\"$event.stopPropagation()\"\n style=\"height: 2rem; width: 2rem;\"\n version=\"1.1\"\n id=\"L9\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n x=\"0px\"\n y=\"0px\"\n viewBox=\"0 0 100 100\"\n enable-background=\"new 0 0 0 0\"\n xml:space=\"preserve\"\n >\n <path\n fill=\"#e9e9e9\"\n d=\"M73,50c0-12.7-10.3-23-23-23S27,37.3,27,50 M30.9,50c0-10.5,8.5-19.1,19.1-19.1S69.1,39.5,69.1,50\"\n >\n <animateTransform\n attributeName=\"transform\"\n attributeType=\"XML\"\n type=\"rotate\"\n dur=\"1s\"\n from=\"0 50 50\"\n to=\"360 50 50\"\n repeatCount=\"indefinite\"\n />\n </path>\n </svg>\n <svg\n role=\"none\"\n (click)=\"$event.stopPropagation()\"\n style=\"height: 2rem; width: 2rem; \"\n version=\"1.1\"\n id=\"L9\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n x=\"0px\"\n y=\"0px\"\n viewBox=\"0 0 100 100\"\n enable-background=\"new 0 0 0 0\"\n xml:space=\"preserve\"\n >\n <path\n fill=\"#e9e9e9\"\n d=\"M73,50c0-12.7-10.3-23-23-23S27,37.3,27,50 M30.9,50c0-10.5,8.5-19.1,19.1-19.1S69.1,39.5,69.1,50\"\n >\n <animateTransform\n attributeName=\"transform\"\n attributeType=\"XML\"\n type=\"rotate\"\n dur=\"1s\"\n from=\"0 50 50\"\n to=\"360 50 50\"\n repeatCount=\"indefinite\"\n />\n </path>\n </svg>\n </div>\n }\n `,\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TbodyCreateCancelComponent {\n readonly grid = input.required<Grid>();\n readonly row = input.required<Row>();\n readonly editConfirm = input.required<EventEmitter<any> | OutputEmitterRef<any>>();\n readonly editCancel = input.required<EventEmitter<any> | OutputEmitterRef<any>>();\n\n readonly cancelButtonContent = computed(() => {\n const edit = this.grid().settings().edit\n return edit ? edit.cancelButtonContent || \"Cancel\" : \"Cancel\"\n })\n readonly saveButtonContent = computed(() => {\n const edit = this.grid().settings().edit\n return edit ? edit.saveButtonContent || \"Update\" : \"Update\"\n })\n\n onSave(event: any) {\n event.preventDefault();\n event.stopPropagation();\n this.grid().save(this.row(), this.editConfirm());\n }\n\n onCancelEdit(event: any) {\n event.preventDefault();\n event.stopPropagation();\n this.editCancel().emit(true);\n this.row().isInEditing.set(false);\n }\n}\n","import { computed, signal } from \"@angular/core\";\nimport { SmartTableColumnSettings } from \"../interfaces/smart-table.models\";\nimport { Column } from \"./column\";\nimport { Row } from \"./row\";\n\nexport class DataSet {\n newRow!: Row;\n\n protected readonly data = signal<any[]>([]);\n protected readonly columns = signal<Column[]>([]);\n protected readonly rows = signal<Row[]>([]);\n protected readonly selectedRows = new Set<Row>();\n\n readonly getColumns = computed(() => this.columns());\n readonly getVisibleColumns = computed(() =>\n this.columns().filter((column: Column) => !column.hide)\n );\n readonly getRows = computed(() => {\n return this.rows();\n });\n\n readonly isAllSelected = computed<boolean>(() =>\n this.rows().every((row) => row.isSelected())\n );\n\n constructor(\n data: any[] = [],\n protected columnSettings: SmartTableColumnSettings[]\n ) {\n this.createColumns(columnSettings);\n this.setData(data);\n this.createNewRow();\n }\n\n setData(data: any[]) {\n this.data.set(data);\n this.createRows();\n }\n\n setColumnsConfig(columnSettings: SmartTableColumnSettings[]) {\n this.columnSettings = columnSettings;\n this.createColumns(columnSettings);\n this.createRows();\n }\n\n getFirstRow(): Row {\n return this.rows()[0];\n }\n\n getLastRow(): Row {\n return this.rows()[this.rows().length - 1];\n }\n\n findRowByData(data: any): Row | undefined {\n return this.rows().find((row: Row) => row.getData() === data);\n }\n\n setSelectAll(state: boolean): void {\n this.rows().forEach((row) => {\n row.isSelected.set(state);\n this.storeSelectedRow(row);\n });\n }\n\n deselectAll() {\n this.rows().forEach((row) => {\n row.isSelected.set(false);\n });\n // we need to clear selectedRow field because no one row selected\n this.selectedRows.clear();\n }\n\n selectRow(row: Row, state: boolean): void {\n row.isSelected.set(state);\n this.storeSelectedRow(row);\n }\n\n multipleSelectRow(row: Row): Row {\n row.isSelected.set(!row.isSelected());\n this.storeSelectedRow(row);\n\n return row;\n }\n\n getSelectedRowsData(): any[] {\n return [...this.selectedRows];\n }\n\n createNewRow() {\n this.newRow = new Row(-1, {}, this);\n this.newRow.isInEditing.set(true);\n }\n\n /**\n * Create columns by mapping from the settings\n * @param settings\n * @private\n */\n createColumns(columnsParams: SmartTableColumnSettings[]) {\n const columns = columnsParams.map(\n (params) => new Column(params.key as string, params, this)\n );\n this.columns.set(columns);\n }\n\n /**\n * Create rows based on current data prepared in data source\n * @private\n */\n createRows() {\n const rows = this.data().map((el, index) => {\n const row = new Row(index, el, this);\n row.isSelected.set(this.selectedRows.has(row.getData()));\n return row;\n });\n this.rows.set(rows);\n }\n\n private storeSelectedRow(row: Row): void {\n if (row.isSelected()) {\n this.selectedRows.add(row.getData());\n } else {\n this.selectedRows.delete(row.getData());\n }\n }\n}\n","import { computed, EventEmitter, OutputEmitterRef, signal } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { LocalDataSource } from './data-source/local/local.data-source';\n\nimport { DataSet } from './data-set/data-set';\nimport { Row } from './data-set/row';\nimport { DataSource } from './data-source/data-source';\nimport { Deferred, getDeepFromObject, getLocalStorage, setLocalStorage } from './helpers';\nimport {\n ColumnPositionState,\n SmartTableColumnSettings,\n SmartTableOnChangedEvent,\n SmartTableOnChangedEventName,\n SmartTablePagerSettings,\n SmartTableSettings,\n SmartTableSortItem,\n} from './interfaces/smart-table.models';\n\nexport class Grid {\n createFormShown = false;\n\n source!: DataSource;\n dataSet!: DataSet;\n\n currentColumnsSortState: ColumnPositionState[] = [];\n\n private columnsSortedEmitter!: OutputEmitterRef<ColumnPositionState[]>;\n private sourceOnChangedSubscription: Subscription | undefined;\n private sourceOnUpdatedSubscription: Subscription | undefined;\n\n readonly settings = signal<SmartTableSettings>({} as SmartTableSettings);\n\n readonly isMultiSelectVisible = computed(() => {\n return this.settings().selectMode === 'multi';\n });\n readonly isActionsVisible = computed<boolean>(() => {\n const actions = this.settings().actions;\n if (!actions) return false;\n return actions.add || actions.edit || actions.delete || !!actions?.custom?.length;\n });\n readonly actionIsOnLeft = computed<boolean>(() => {\n return (this.settings().actionsPosition || 'left') === 'left';\n });\n readonly actionIsOnRight = computed<boolean>(() => {\n return this.settings().actionsPosition === 'right';\n });\n\n constructor(source: DataSource | undefined, settings: SmartTableSettings) {\n this.setSource(source, settings);\n this.setSettings(settings);\n }\n\n setColumnsSortedEmitter(emitter: OutputEmitterRef<ColumnPositionState[]>) {\n this.columnsSortedEmitter = emitter;\n }\n\n detach(): void {\n if (this.sourceOnChangedSubscription) {\n this.sourceOnChangedSubscription.unsubscribe();\n }\n if (this.sourceOnUpdatedSubscription) {\n this.sourceOnUpdatedSubscription.unsubscribe();\n }\n }\n\n getNewRow(): Row {\n return this.dataSet.newRow;\n }\n\n setSettings(settings: SmartTableSettings) {\n this.updateSettingsAndDataSet(settings);\n if (settings.columnSort) {\n this.setColumnsSortState(settings.columns);\n }\n }\n\n getDataSet(): DataSet {\n return this.dataSet;\n }\n\n getSetting<T>(name: string, defaultValue?: any): T {\n return getDeepFromObject(this.settings(), name, defaultValue);\n }\n\n selectRow(row: Row, state: boolean) {\n this.dataSet.selectRow(row, state);\n }\n\n multipleSelectRow(row: Row) {\n this.dataSet.multipleSelectRow(row);\n }\n\n edit(row: Row) {\n row.isInEditing.set(true);\n }\n\n create(row: Row, confirmEmitter: EventEmitter<any> | OutputEmitterRef<any>) {\n row.pending.set(true);\n const deferred = new Deferred();\n deferred.promise\n .then((newData) => {\n row.pending.set(false);\n newData = newData || row.getNewData();\n this.source.prepend(newData).then(() => {\n this.createFormShown = false;\n this.dataSet.createNewRow();\n });\n })\n .catch((err) => {\n row.pending.set(false);\n });\n\n if (this.getSetting('add.confirmCreate', false)) {\n confirmEmitter.emit({\n newData: row.getNewData(),\n source: this.source,\n confirm: deferred,\n });\n } else {\n deferred.resolve(false);\n row.pending.set(false);\n }\n }\n\n save(row: Row, confirmEmitter: EventEmitter<any> | OutputEmitterRef<any>) {\n row.pending.set(true);\n const deferred = new Deferred();\n deferred.promise\n .then((newData) => {\n row.pending.set(false);\n newData = newData || row.getNewData();\n this.source.update(row.getData(), newData).then(() => {\n row.isInEditing.set(false);\n });\n })\n .catch(() => {\n row.pending.set(false);\n row.isInEditing.set(false);\n });\n\n if (this.getSetting('edit.confirmSave', false)) {\n confirmEmitter.emit({\n data: row.getData(),\n newData: row.getNewData(),\n source: this.source,\n confirm: deferred,\n });\n } else {\n deferred.resolve(false);\n row.pending.set(false);\n }\n }\n\n delete(row: Row, confirmEmitter: EventEmitter<any> | OutputEmitterRef<any>) {\n row.pending.set(true);\n const deferred = new Deferred();\n deferred.promise\n .then(() => {\n row.pending.set(false);\n this.source.remove(row.getData());\n })\n .catch(() => {\n row.pending.set(false);\n // doing nothing\n });\n if (this.getSetting('delete.confirmDelete', true)) {\n confirmEmitter.emit({\n data: row.getData(),\n source: this.source,\n confirm: deferred,\n });\n } else {\n deferred.resolve(false);\n row.pending.set(false);\n }\n if (row.isSelected()) {\n this.dataSet.selectRow(row, false);\n }\n }\n\n private processDataChange(event: SmartTableOnChangedEvent) {\n if (event.action === 'load') {\n this.dataSet.deselectAll();\n }\n if (event.action === 'update') {\n const changedRow = this.dataSet.findRowByData(event.oldItem);\n if (changedRow) {\n changedRow.setData(event.newItem || event.oldItem);\n }\n return;\n }\n this.dataSet.setData(event.elements);\n }\n\n private prepareSource(\n source: DataSource | undefined,\n initialSort: SmartTableSortItem | false,\n initialPaging: Partial<SmartTablePagerSettings> | false,\n ): DataSource {\n const preparedSource = source || new LocalDataSource();\n if (initialSort && !source?.getSort().field) {\n preparedSource.setSort(initialSort, false);\n }\n if (initialPaging && initialPaging?.display) {\n preparedSource.pagingConf.update((old) => ({\n ...old,\n ...initialPaging,\n }));\n }\n return preparedSource;\n }\n\n private getInitialSort(columns?: SmartTableColumnSettings[]): SmartTableSortItem | false {\n if (!columns || !columns.length) {\n return false;\n }\n const defaultSortColumn = columns?.find((column) => column.sortDirection);\n if (!defaultSortColumn) {\n return false;\n }\n return {\n field: defaultSortColumn.key as string,\n direction: defaultSortColumn.sortDirection || 'asc',\n compare: defaultSortColumn.compareFunction,\n };\n }\n\n getSelectedRowsData(): any[] {\n return this.dataSet.getSelectedRowsData();\n }\n\n selectAllRows(status: boolean) {\n this.dataSet.setSelectAll(status);\n }\n\n getFirstRow(): Row {\n return this.dataSet.getFirstRow();\n }\n\n getLastRow(): Row {\n return this.dataSet.getLastRow();\n }\n\n private updateSettingsAndDataSet(\n settings: SmartTableSettings,\n emittedEvent:\n | `${SmartTableOnChangedEventName.refresh}`\n | `${SmartTableOnChangedEventName.columnRefresh}` = 'refresh',\n ) {\n this.settings.set(settings);\n if (this.dataSet) {\n this.dataSet.setColumnsConfig(settings.columns);\n } else {\n this.dataSet = new DataSet([], settings.columns);\n }\n if (this.source) {\n this.source.pagingConf.update((old) => ({\n ...old,\n display: this.getSetting('pager.display'),\n }));\n\n if (emittedEvent === 'columnRefresh') {\n this.source.columnRefresh();\n } else {\n this.source.refresh();\n }\n }\n }\n\n private setSource(source: DataSource | undefined, settings?: SmartTableSettings) {\n const initialSort = this.getInitialSort(settings?.columns);\n this.source = this.prepareSource(source, initialSort, settings?.pager || false);\n this.detach();\n\n this.sourceOnChangedSubscription = this.source.onChanged().subscribe((changes) => this.processDataChange(changes));\n }\n\n // ------------------------------- column sort\n\n private async getSortedTableColumns(\n newState: ColumnPositionState[],\n columns: SmartTableColumnSettings[],\n ): Promise<SmartTableColumnSettings[]> {\n const sortedArray: SmartTableColumnSettings[] = [];\n newState.forEach((item2) => {\n const index = columns.findIndex((item1) => item1.key === item2.key && item1.title === item2.title);\n if (index > -1) {\n sortedArray.push({ ...columns[index], hide: !!item2.hide });\n }\n });\n return Promise.resolve(sortedArray);\n }\n\n public async applyColumnsSortState(state: ColumnPositionState[], emitEvent = true) {\n this.currentColumnsSortState = this.getMergedColumnStates(state);\n this.updateSettingsAndDataSet(\n {\n ...this.settings(),\n columns: await this.getSortedTableColumns(this.currentColumnsSortState, this.settings()?.columns),\n },\n 'columnRefresh',\n );\n if (this.columnStateStorageKey) {\n setLocalStorage(this.columnStateStorageKey, this.currentColumnsSortState);\n }\n if (emitEvent) {\n this.columnsSortedEmitter.emit(this.currentColumnsSortState);\n }\n }\n\n private setColumnsSortState(columns?: SmartTableColumnSettings[]) {\n const columnsState = this.getColumnsStateFromSettings(columns);\n if (this.columnStateStorageKey) {\n const storageState = getLocalStorage<ColumnPositionState[]>(this.columnStateStorageKey);\n if (!storageState) {\n this.currentColumnsSortState = columnsState;\n setLocalStorage(this.columnStateStorageKey, columnsState);\n return;\n }\n const merged = this.getMergedColumnStates(storageState, columnsState);\n this.applyColumnsSortState(merged, false);\n return;\n }\n this.applyColumnsSortState(columnsState, false);\n }\n\n private getColumnsStateFromSettings(columns?: SmartTableColumnSettings[]): ColumnPositionState[] {\n return (columns || this.settings().columns || []).map((column) => ({\n key: column.key as string,\n title: column.title,\n hide: !!column.hide,\n moveDisabled: !!column.moveDisabled,\n }));\n }\n\n private getMergedColumnStates(newState: ColumnPositionState[], columnsState?: ColumnPositionState[]) {\n const columnsSettings = columnsState || this.getColumnsStateFromSettings();\n // merge new columns state with state from storage\n const filtered: ColumnPositionState[] = [];\n newState.forEach((state) => {\n const fined = columnsSettings.find((column) => column.title === state.title && column.key === state.key);\n if (fined) {\n filtered.push({ ...fined, hide: fined.moveDisabled ? fined.hide : state.hide });\n }\n });\n // find new columns witch not exist in storage state\n const newColumns = columnsSettings.filter((state) => {\n return !filtered.some((column) => column.title === state.title && column.key === state.key);\n });\n return [...filtered, ...newColumns];\n }\n\n private get columnStateStorageKey(): string | undefined {\n return this.settings().columnSortStorageKey;\n }\n}\n","import { ChangeDetectionStrategy, Component, Input, output } from '@angular/core';\nimport { Row } from '../../../lib/data-set/row';\n\nimport { DataSource } from '../../../lib/data-source/data-source';\nimport { Grid } from '../../../lib/grid';\nimport { SmartTableCustomAction } from '../../../lib/interfaces/smart-table.models';\n\n@Component({\n selector: 'ng2-st-tbody-custom',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n @for (action of customActions(); track $index) { @if(!action.hasPermissionFunction ? true :\n action.hasPermissionFunction(row.getData())) {\n <a\n [id]=\"'row-' + row.index + '_action-' + action.name + '-button'\"\n href=\"#\"\n class=\"ng2-smart-action ng2-smart-action-custom-custom\"\n [innerHTML]=\"action.title\"\n (click)=\"$event.stopPropagation(); $event.preventDefault(); onCustom(action)\"></a>\n } }\n `,\n standalone: true,\n})\nexport class TbodyCustomComponent {\n @Input() grid!: Grid;\n @Input() row!: Row;\n @Input() source!: DataSource;\n readonly custom = output<any>();\n\n onCustom(action: any) {\n this.custom.emit({\n action: action.name,\n data: this.row.getData(),\n source: this.source,\n });\n }\n\n customActions() {\n return this.grid.getSetting<SmartTableCustomAction[] | undefined>('actions.custom');\n }\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n computed,\n EventEmitter,\n inject,\n input,\n output,\n OutputEmitterRef\n} from '@angular/core';\n\nimport { Row } from '../../../lib/data-set/row';\nimport { DataSource } from '../../../lib/data-source/data-source';\nimport { Grid } from '../../../lib/grid';\n\n@Component({\n selector: 'ng2-st-tbody-edit-delete',\n templateUrl: './edit-delete.component.html',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TbodyEditDeleteComponent {\n private readonly cdr = inject(ChangeDetectorRef);\n readonly grid = input.required<Grid>();\n readonly row = input.required<Row>();\n readonly source = input.required<DataSource>();\n readonly deleteConfirm = input.required<EventEmitter<any> | OutputEmitterRef<any>>();\n\n readonly edit = output<any>();\n readonly delete = output<any>();\n\n readonly isActionEdit = computed<boolean>(() => {\n const actions = this.grid().settings().actions\n return actions ? !!actions.edit : false\n });\n readonly isActionDelete = computed<boolean>(() => {\n const actions = this.grid().settings().actions\n return actions ? !!actions.delete : false\n });\n readonly isExternalMode = computed<boolean>(() => {\n return this.grid().settings().mode === 'external'\n });\n\n readonly canDeleteFunction = computed<(data: any) => boolean>(() => {\n const deleteConfig = this.grid().settings().delete\n return deleteConfig ? deleteConfig.hasPermissionFunction || ((data) => true) : (data) => true\n });\n\n readonly canEditFunction = computed<(data: any) => boolean>(() => {\n const edit = this.grid().settings().edit\n return edit ? edit.hasPermissionFunction || ((data) => true) : (data) => true\n });\n\n readonly editRowButtonContent = computed<string>(() => {\n const edit = this.grid().settings().edit\n return edit ? edit.editButtonContent || 'Edit' : 'Edit'\n });\n readonly deleteRowButtonContent = computed<string>(() => {\n const deleteConfig = this.grid().settings().delete\n return deleteConfig ? deleteConfig.deleteButtonContent || 'Delete' : 'Delete'\n });\n\n onEdit(event: any) {\n event.preventDefault();\n event.stopPropagation();\n this.edit.emit({\n data: this.row().getData(),\n source: this.source,\n });\n if (!this.isExternalMode) {\n this.grid().edit(this.row());\n }\n }\n\n onDelete(event: any) {\n event.preventDefault();\n event.stopPropagation();\n if (this.isExternalMode()) {\n this.delete.emit({\n data: this.row().getData(),\n source: this.source(),\n });\n } else {\n this.grid().delete(this.row(), this.deleteConfirm());\n }\n }\n}\n","@if (!row().pending()) { @if (isActionEdit() && canEditFunction()(row().getData())) {\n<a\n href=\"#\"\n [id]=\"'row-' + row().index + '_action-edit-button'\"\n class=\"ng2-smart-action ng2-smart-action-edit-edit\"\n [innerHTML]=\"editRowButtonContent()\"\n (click)=\"onEdit($event)\"></a>\n} @if (isActionDelete() && canDeleteFunction()(row().getData())) {\n<a\n href=\"#\"\n [id]=\"'row-' + row().index + '_action-delete-button'\"\n class=\"ng2-smart-action ng2-smart-action-delete-delete\"\n [innerHTML]=\"deleteRowButtonContent()\"\n (click)=\"onDelete($event)\"></a>\n} } @else {\n<div style=\"display: flex\">\n @if (isActionEdit()) {\n <svg\n role=\"none\"\n (click)=\"$event.stopPropagation()\"\n style=\"height: 2rem; width: 2rem\"\n version=\"1.1\"\n id=\"L9\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n x=\"0px\"\n y=\"0px\"\n viewBox=\"0 0 100 100\"\n enable-background=\"new 0 0 0 0\"\n xml:space=\"preserve\">\n <path\n fill=\"#e9e9e9\"\n d=\"M73,50c0-12.7-10.3-23-23-23S27,37.3,27,50 M30.9,50c0-10.5,8.5-19.1,19.1-19.1S69.1,39.5,69.1,50\">\n <animateTransform\n attributeName=\"transform\"\n attributeType=\"XML\"\n type=\"rotate\"\n dur=\"1s\"\n from=\"0 50 50\"\n to=\"360 50 50\"\n repeatCount=\"indefinite\" />\n </path>\n </svg>\n } @if (isActionDelete()) {\n <svg\n role=\"none\"\n (click)=\"$event.stopPropagation()\"\n style=\"height: 2rem; width: 2rem\"\n version=\"1.1\"\n id=\"L9\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n x=\"0px\"\n y=\"0px\"\n viewBox=\"0 0 100 100\"\n enable-background=\"new 0 0 0 0\"\n xml:space=\"preserve\">\n <path\n fill=\"#e9e9e9\"\n d=\"M73,50c0-12.7-10.3-23-23-23S27,37.3,27,50 M30.9,50c0-10.5,8.5-19.1,19.1-19.1S69.1,39.5,69.1,50\">\n <animateTransform\n attributeName=\"transform\"\n attributeType=\"XML\"\n type=\"rotate\"\n dur=\"1s\"\n from=\"0 50 50\"\n to=\"360 50 50\"\n repeatCount=\"indefinite\" />\n </path>\n </svg>\n }\n</div>\n}\n","import { Component, computed, EventEmitter, input, output, OutputEmitterRef } from '@angular/core';\n\nimport { NgTemplateOutlet } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { DataSource } from '../../lib/data-source/data-source';\nimport { Grid } from '../../lib/grid';\nimport { CellComponent } from '../cell/cell.component';\nimport { TbodyCreateCancelComponent } from './cells/create-cancel.component';\nimport { TbodyCustomComponent } from './cells/custom.component';\nimport { TbodyEditDeleteComponent } from './cells/edit-delete.component';\n\n@Component({\n selector: '[ng2-st-tbody]',\n styleUrls: ['./tbody.component.scss'],\n templateUrl: './tbody.component.html',\n standalone: true,\n imports: [\n FormsModule,\n TbodyCustomComponent,\n TbodyEditDeleteComponent,\n TbodyCreateCancelComponent,\n NgTemplateOutlet,\n CellComponent,\n ],\n})\nexport class Ng2SmartTableTbodyComponent {\n readonly grid = input.required<Grid>();\n readonly source = input.required<DataSource>();\n readonly deleteConfirm = input.required<EventEmitter<any> | OutputEmitterRef<any>>();\n readonly createConfirm = input.required<EventEmitter<any> | OutputEmitterRef<any>>();\n readonly editConfirm = input.required<EventEmitter<any> | OutputEmitterRef<any>>();\n readonly rowClassFunction = input<(row: any) => string>(() => '');\n\n readonly save = output<any>();\n readonly edit = output<any>();\n readonly editCancel = output<any>();\n readonly delete = output<any>();\n readonly custom = output<any>();\n readonly edited = output<any>();\n readonly userSelectRow = output<any>();\n readonly userClickedRow = output<any>();\n readonly multipleSelectRow = output<any>();\n\n readonly editInputClass = computed<string>(() => {\n const editOptions = this.grid().settings().edit;\n if (!editOptions) {\n return '';\n }\n return editOptions.inputClass || '';\n });\n readonly noDataMessage = computed<string>(() => {\n return this.grid().settings().noDataMessage || 'No data found';\n });\n\n protected trackByIdOrIndex(index: number, item: any): string | number {\n return item?.id || index;\n }\n}\n","@for (row of grid().dataSet.getRows(); track trackByIdOrIndex($index, row)) {\n<tr\n (click)=\"userClickedRow.emit(row)\"\n class=\"ng2-smart-row\"\n [class]=\"rowClassFunction()(row)\"\n [class.selected]=\"row.isSelected()\">\n @if (grid().isMultiSelectVisible()) {\n <td\n class=\"ng2-smart-actions ng2-smart-action-multiple-select\"\n (click)=\"$event.stopPropagation(); multipleSelectRow.emit(row)\">\n <input\n type=\"checkbox\"\n [id]=\"'row-' + row.index + '_select-checkbox'\"\n class=\"form-control\"\n [ngModel]=\"row.isSelected()\" />\n </td>\n } @if (grid().actionIsOnLeft()) {\n <ng-container [ngTemplateOutlet]=\"actions\"></ng-container>\n } @for (cell of row.visibleCells(); track cell.getId() + $index) {\n <td [class]=\"cell.getColumnClass()\">\n <ng2-smart-table-cell [cell]=\"cell\" [inputClass]=\"editInputClass()\" [isInEditing]=\"row.isInEditing()\">\n </ng2-smart-table-cell>\n </td>\n } @if (grid().actionIsOnRight()) {\n <ng-container [ngTemplateOutlet]=\"actions\"></ng-container>\n }\n</tr>\n\n<ng-template #actions>\n @if (row.isInEditing()) {\n <td class=\"ng2-smart-actions\">\n <ng2-st-tbody-create-cancel\n [grid]=\"grid()\"\n [row]=\"row\"\n [editConfirm]=\"editConfirm()\"\n [editCancel]=\"editCancel\"></ng2-st-tbody-create-cancel>\n </td>\n } @if (!row.isInEditing() && grid().isActionsVisible() ) {\n <td class=\"ng2-smart-actions\" (click)=\"$event.stopPropagation()\">\n <ng2-st-tbody-custom\n [grid]=\"grid()\"\n (custom)=\"custom.emit($event)\"\n [row]=\"row\"\n [source]=\"source()\"></ng2-st-tbody-custom>\n <ng2-st-tbody-edit-delete\n [grid]=\"grid()\"\n [deleteConfirm]=\"deleteConfirm()\"\n (edit)=\"edit.emit(row)\"\n (delete)=\"delete.emit(row)\"\n [row]=\"row\"\n [source]=\"source()\">\n </ng2-st-tbody-edit-delete>\n </td>\n }\n</ng-template>\n} @empty {\n<tr>\n <td colspan=\"50\">\n {{ noDataMessage() }}\n </td>\n</tr>\n}\n","import { Component, OnChanges, OnDestroy, OnInit, SimpleChanges } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\n\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\nimport { BaseFilterComponent } from './base-filter.component';\n\n@Component({\n selector: 'ng2-checkbox-filter',\n template: `\n <input type=\"checkbox\" [formControl]=\"inputControl\" [class]=\"inputClass()\" class=\"form-control\" />\n @if (filterActive) {\n <a href=\"#\" (click)=\"resetFilter($event)\">{{ column().getFilterConfig()?.resetText || 'reset' }}</a>\n }\n `,\n standalone: true,\n imports: [FormsModule, ReactiveFormsModule],\n})\nexport class CheckboxFilterComponent extends BaseFilterComponent implements OnInit, OnChanges, OnDestroy {\n filterActive = false;\n private trueVal: any = true;\n private falseVal: any = false;\n\n constructor() {\n super();\n }\n\n override ngOnInit() {\n const filterConfig = this.column().getFilterConfig();\n try {\n const { true: trueVal, false: falseVal } = filterConfig;\n this.trueVal = trueVal ?? true;\n this.falseVal = falseVal ?? false;\n } catch {\n // do nothing\n }\n this.changesSubscription = this.inputControl.valueChanges\n .pipe(distinctUntilChanged(), debounceTime(this.delay))\n .subscribe((checked: boolean) => {\n this.filterActive = true;\n const value = checked ? this.trueVal : this.falseVal;\n this.setFilter(value);\n });\n }\n\n override ngOnChanges({ query }: SimpleChanges) {\n if (query) {\n this.inputControl?.setValue(query.currentValue === this.trueVal, { emitEvent: false });\n }\n }\n\n resetFilter(event: Event) {\n event.preventDefault();\n event.stopPropagation();\n this.inputControl.setValue(false, { emitEvent: false });\n this.filterActive = false;\n this.setFilter(null);\n }\n}\n","import { Component } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\n\nimport { BaseFilterComponent } from './base-filter.component';\n\n@Component({\n selector: 'ng2-input-filter',\n template: `\n <input\n [class]=\"inputClass()\"\n [formControl]=\"inputControl\"\n class=\"form-control\"\n type=\"text\"\n placeholder=\"{{ column().title }}\" />\n `,\n standalone: true,\n imports: [FormsModule, ReactiveFormsModule],\n})\nexport class InputFilterComponent extends BaseFilterComponent {}\n","import { Component } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\n\nimport { BaseFilterComponent } from './base-filter.component';\n\n@Component({\n selector: 'ng2-select-filter',\n template: `\n <select [class]=\"inputClass()\" class=\"form-control\" [formControl]=\"inputControl\">\n <option value=\"\">{{ column().getFilterConfig().selectText }}</option>\n @for (option of column().getFilterConfig().list; track $index) {\n <option [value]=\"option.value\">\n {{ option.title }}\n </option>\n }\n </select>\n `,\n standalone: true,\n imports: [FormsModule, ReactiveFormsModule],\n})\nexport class SelectFilterComponent extends BaseFilterComponent {}\n","import { Component, input, output } from '@angular/core';\n\nimport { Column } from '../../lib/data-set/column';\nimport { DataSource } from '../../lib/data-source/data-source';\nimport { CheckboxFilterComponent } from './filter-types/checkbox-filter.component';\nimport { InputFilterComponent } from './filter-types/input-filter.component';\nimport { SelectFilterComponent } from './filter-types/select-filter.component';\n\n@Component({\n selector: 'ng2-build-in-table-filter',\n template: `\n @switch (column().getFilterType()) { @case ('list') {\n <ng2-select-filter\n [query]=\"query()\"\n [class]=\"inputClass()\"\n [source]=\"source()\"\n [column]=\"column()\"\n (filter)=\"filter.emit($event)\">\n </ng2-select-filter>\n } @case ('checkbox') {\n <ng2-checkbox-filter\n [query]=\"query()\"\n [source]=\"source()\"\n [class]=\"inputClass()\"\n [column]=\"column()\"\n (filter)=\"filter.emit($event)\">\n </ng2-checkbox-filter>\n } @default {\n <ng2-input-filter\n [query]=\"query()\"\n [source]=\"source()\"\n [class]=\"inputClass()\"\n [column]=\"column()\"\n (filter)=\"filter.emit($event)\">\n </ng2-input-filter>\n } }\n `,\n standalone: true,\n imports: [SelectFilterComponent, CheckboxFilterComponent, InputFilterComponent],\n})\nexport class BuildInFilterComponent {\n readonly query = input<unknown>('');\n readonly inputClass = input<string>('');\n readonly source = input.required<DataSource>();\n readonly column = input.required<Column>();\n readonly filter = output<any>();\n}\n","import {\n Component,\n ComponentRef,\n input,\n OnChanges,\n OnDestroy,\n output,\n OutputRefSubscription,\n SimpleChanges,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\n\nimport { Column } from '../../lib/data-set/column';\nimport { DataSource } from '../../lib/data-source/data-source';\nimport { BaseFilterComponent, FilterComponent } from './filter-types/base-filter.component';\n\n@Component({\n selector: 'ng2-custom-table-filter',\n template: `<ng-template #dynamicTarget></ng-template>`,\n standalone: true,\n})\nexport class CustomFilterComponent implements FilterComponent, OnChanges, OnDestroy {\n @ViewChild('dynamicTarget', { read: ViewContainerRef, static: true }) dynamicTarget?: ViewContainerRef;\n\n readonly query = input<unknown>('');\n readonly inputClass = input<string>('');\n readonly source = input.required<DataSource>();\n readonly column = input.required<Column>();\n\n readonly filter = output<any>();\n\n delay?: number | undefined;\n private filterSubscription?: OutputRefSubscription | undefined;\n\n customComponent?: ComponentRef<BaseFilterComponent>;\n\n ngOnChanges(changes: SimpleChanges) {\n if (this.customComponent) {\n if (this.customComponent?.instance && 'ngOnChanges' in this.customComponent.instance) {\n try {\n const onChanges = this.customComponent.instance.ngOnChanges as (changes: SimpleChanges) => void;\n onChanges(changes);\n } catch {\n // do nothing\n }\n }\n return;\n }\n const columnFilter = this.column().filter;\n if (columnFilter && columnFilter.type === 'custom') {\n this.customComponent = this.dynamicTarget?.createComponent(columnFilter?.component);\n // set @Inputs and @Outputs of custom component\n this.customComponent?.setInput('query', this.query());\n this.customComponent?.setInput('column', this.column());\n this.customComponent?.setInput('source', this.source());\n this.customComponent?.setInput('inputClass', this.inputClass());\n this.filterSubscription = this.customComponent?.instance.filter.subscribe((event: any) =>\n this.filter.emit(event),\n );\n }\n }\n\n ngOnDestroy() {\n if (this.customComponent) {\n this.customComponent.destroy();\n }\n if (this.filterSubscription) {\n this.filterSubscription.unsubscribe();\n }\n }\n}\n","import { Component, DestroyRef, inject, input, OnInit, signal } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { Column } from '../../lib/data-set/column';\nimport { DataSource } from '../../lib/data-source/data-source';\nimport { BuildInFilterComponent } from './build-in-filter.component';\nimport { CustomFilterComponent } from './custom-filter.component';\n\n@Component({\n selector: 'ng2-smart-table-filter',\n styleUrls: ['./filter.component.scss'],\n template: `\n @if (column().isFilterable) {\n <div class=\"ng2-smart-filter\">\n @switch (column().getFilterType()) { @case ('custom') {\n <ng2-custom-table-filter\n [query]=\"query()\"\n [column]=\"column()\"\n [source]=\"source()\"\n [inputClass]=\"inputClass()\"\n (filter)=\"onFilter($event)\">\n </ng2-custom-table-filter>\n } @default {\n <ng2-build-in-table-filter\n [query]=\"query()\"\n [column]=\"column()\"\n [source]=\"source()\"\n [inputClass]=\"inputClass()\"\n (filter)=\"onFilter($event)\">\n </ng2-build-in-table-filter>\n } }\n </div>\n }\n `,\n standalone: true,\n imports: [CustomFilterComponent, BuildInFilterComponent],\n})\nexport class FilterComponent implements OnInit {\n protected readonly query = signal('');\n readonly column = input.required<Column>();\n readonly source = input.required<DataSource>();\n readonly inputClass = input<string>('');\n private readonly destroyRef = inject(DestroyRef);\n\n ngOnInit() {\n this.source()\n .onChanged()\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(({ filters }) => {\n if (!filters.length) {\n return;\n }\n const columnFilter = filters.find((filter) => filter.field === this.column().id);\n if (!columnFilter) {\n return;\n }\n this.query.set(columnFilter.search);\n });\n }\n\n onFilter(query: any) {\n this.source().addFilter({\n field: this.column().id,\n search: query,\n filter: this.column().filterFunction,\n });\n }\n}\n","import { Component, computed, input, output } from '@angular/core';\n\nimport { DataSource } from '../../../lib/data-source/data-source';\nimport { Grid } from '../../../lib/grid';\n\n@Component({\n selector: '[ng2-st-add-button]',\n template: `\n @if (isActionAdd()) {\n <a\n href=\"#\"\n class=\"ng2-smart-action ng2-smart-action-add-add\"\n [innerHTML]=\"addNewButtonContent()\"\n (click)=\"onAdd($event)\"></a>\n }\n `,\n host: {\n class: 'ng2-smart-actions-title ng2-smart-actions-title-add',\n },\n standalone: true,\n})\nexport class AddButtonComponent {\n readonly grid = input.required<Grid>();\n readonly source = input.required<DataSource>();\n readonly create = output<any>();\n\n readonly isActionAdd = computed(() => {\n const actions = this.grid().settings().actions;\n if (!actions) {\n return false;\n }\n return !!actions.add;\n });\n readonly addNewButtonContent = computed(() => {\n const addParams = this.grid().settings()?.add;\n if (!addParams) {\n return 'Add New';\n }\n return addParams?.addButtonContent || 'Add New';\n });\n\n onAdd(event: any) {\n event.preventDefault();\n event.stopPropagation();\n\n if (this.grid().getSetting('mode') === 'external') {\n this.create.emit({\n source: this.source(),\n });\n } else {\n this.grid().createFormShown = true;\n }\n }\n}\n","import { Component, computed, input, output } from '@angular/core';\n\nimport { DataSource } from '../../../lib/data-source/data-source';\nimport { Grid } from '../../../lib/grid';\nimport { FilterComponent } from '../../filter/filter.component';\nimport { AddButtonComponent } from '../cells/add-button.component';\n\n@Component({\n selector: '[ng2-st-thead-filters-row]',\n template: `\n @if (grid().isMultiSelectVisible()) {\n <th></th>\n } @if (grid().actionIsOnLeft() && grid().isActionsVisible()) {\n <th ng2-st-add-button [source]=\"source()\" [grid]=\"grid()\" (create)=\"create.emit($event)\"></th>\n } @for (column of grid().dataSet.getVisibleColumns(); track column.id + $index) {\n <th class=\"ng2-smart-th {{ column.id }}\">\n <ng2-smart-table-filter [source]=\"source()\" [column]=\"column\" [inputClass]=\"filterInputClass()\">\n </ng2-smart-table-filter>\n </th>\n } @if (grid().actionIsOnRight() && grid().isActionsVisible()) {\n <th ng2-st-add-button [grid]=\"grid()\" [source]=\"source()\" (create)=\"create.emit($event)\"></th>\n }\n `,\n standalone: true,\n imports: [AddButtonComponent, FilterComponent],\n})\nexport class TheadFiltersRowComponent {\n readonly grid = input.required<Grid>();\n readonly source = input.required<DataSource>();\n\n readonly create = output<any>();\n\n readonly filterInputClass = computed<string>(() => {\n const filterOptions = this.grid().settings()?.filter;\n if (!filterOptions) {\n return '';\n }\n return filterOptions.inputClass || '';\n });\n}\n","import {\n Component,\n computed,\n input,\n output\n} from \"@angular/core\";\n\nimport { Grid } from \"../../../lib/grid\";\n\n@Component({\n selector: \"ng2-st-actions\",\n template: `\n <a\n href=\"#\"\n class=\"ng2-smart-action ng2-smart-action-add-create\"\n [innerHTML]=\"createButtonContent()\"\n (click)=\"$event.preventDefault(); create.emit($event)\"\n ></a>\n <a\n href=\"#\"\n class=\"ng2-smart-action ng2-smart-action-add-cancel\"\n [innerHTML]=\"cancelButtonContent()\"\n (click)=\"$event.preventDefault(); grid().createFormShown = false\"\n ></a>\n `,\n standalone: true,\n})\nexport class ActionsComponent {\n readonly grid = input.required<Grid>();\n readonly create = output<any>();\n\n readonly createButtonContent = computed(() => {\n const addOptions = this.grid().settings().add\n if (!addOptions) {\n return \"Create\"\n }\n return addOptions?.createButtonContent || \"Create\"\n });\n readonly cancelButtonContent = computed(() => {\n const addOptions = this.grid().settings().add\n if (!addOptions) {\n return \"Cancel\"\n }\n return addOptions?.cancelButtonContent || \"Cancel\"\n });\n}\n","import { Component, computed, EventEmitter, input, Input, output, OutputEmitterRef } from '@angular/core';\n\nimport { Cell } from '../../../lib/data-set/cell';\nimport { Grid } from '../../../lib/grid';\nimport { CellComponent } from '../../cell/cell.component';\nimport { ActionsComponent } from '../cells/actions.component';\n\n@Component({\n selector: '[ng2-st-thead-form-row]',\n template: `\n @if (grid().isMultiSelectVisible()) {\n <td></td>\n } @if (grid().actionIsOnLeft() && grid().isActionsVisible()) {\n <td class=\"ng2-smart-actions\">\n <ng2-st-actions [grid]=\"grid()\" (create)=\"onCreate($event)\"></ng2-st-actions>\n </td>\n } @for (cell of getVisibleCells(); track cell.getId()+ $index) {\n <td>\n <ng2-smart-table-cell\n [cell]=\"cell\"\n [inputClass]=\"addInputClass()\"\n [isInEditing]=\"grid().getNewRow().isInEditing()\">\n </ng2-smart-table-cell>\n </td>\n } @if (grid().actionIsOnRight() && grid().isActionsVisible()) {\n <td class=\"ng2-smart-actions\">\n <ng2-st-actions [grid]=\"grid()\" (create)=\"onCreate($event)\"></ng2-st-actions>\n </td>\n }\n `,\n standalone: true,\n imports: [ActionsComponent, CellComponent],\n})\nexport class TheadFormRowComponent {\n readonly grid = input.required<Grid>();\n @Input() createConfirm!: EventEmitter<any> | OutputEmitterRef<any>;\n\n readonly create = output<any>();\n addInputClass = computed<string>(() => {\n const addOptions = this.grid().settings()?.add;\n if (!addOptions) {\n return '';\n }\n return addOptions.inputClass || '';\n });\n\n onCreate(event: any) {\n event.stopPropagation();\n this.grid().create(this.grid().getNewRow(), this.createConfirm);\n }\n\n getVisibleCells(): Cell[] {\n return (this.grid().getNewRow().cells() || []).filter((cell: Cell) => !cell.getColumn().hide);\n }\n}\n","import {\n Component,\n computed,\n input\n} from \"@angular/core\";\n\nimport { Grid } from \"../../../lib/grid\";\n\n@Component({\n selector: \"[ng2-st-actions-title]\",\n template: ` <div class=\"ng2-smart-title\">{{ actionsColumnTitle() }}</div> `,\n standalone: true,\n host: {\n class: \"ng2-smart-actions\",\n },\n})\nexport class ActionsTitleComponent {\n readonly grid = input.required<Grid>();\n\n readonly actionsColumnTitle = computed(() => {\n const actions = this.grid().settings().actions;\n if (!actions) {\n return \"Actions\";\n }\n return actions.columnTitle || \"Actions\";\n });\n}\n","import { Component, input } from \"@angular/core\";\n\nimport { FormsModule } from \"@angular/forms\";\nimport { Grid } from \"../../../lib/grid\";\n@Component({\n selector: \"[ng2-st-checkbox-select-all]\",\n template: `\n <input type=\"checkbox\" [ngModel]=\"this.grid().dataSet.isAllSelected()\" />\n `,\n standalone: true,\n imports: [FormsModule],\n})\nexport class CheckboxSelectAllComponent {\n readonly grid = input.required<Grid>();\n}\n","import { Component, DestroyRef, inject, input, OnInit, signal } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { map } from 'rxjs/operators';\nimport { Column } from '../../../../lib/data-set/column';\nimport { DataSource } from '../../../../lib/data-source/data-source';\nimport { SmartTableSortDirection } from '../../../../lib/interfaces/smart-table.models';\n\n@Component({\n selector: 'ng2-smart-table-title',\n styleUrls: ['./title.component.scss'],\n template: `\n @if (column().isSortable) {\n <a href=\"#\" (click)=\"_sort($event)\" class=\"ng2-smart-sort-link sort\" [class]=\"currentSortDirection()\">\n {{ column().title }}\n </a>\n } @else {\n <span class=\"ng2-smart-sort\">{{ column().title }}</span>\n }\n `,\n standalone: true,\n})\nexport class TitleComponent implements OnInit {\n readonly source = input.required<DataSource>();\n readonly column = input.required<Column>();\n private readonly destroyRef = inject(DestroyRef);\n\n\n protected readonly currentSortDirection = signal<'' | SmartTableSortDirection>('');\n\n ngOnInit(): void {\n this.source()\n .onChanged()\n .pipe(\n map(({ sort }) => {\n if (sort.field === this.column().id) {\n return sort.direction;\n } else {\n return '';\n }\n }),\n takeUntilDestroyed(this.destroyRef),\n )\n .subscribe(this.currentSortDirection.set);\n }\n\n _sort(event: Event) {\n event.preventDefault();\n this.source().setSort({\n field: this.column().id,\n direction: this.currentSortDirection() === 'desc' ? 'asc' : 'desc',\n compare: this.column().compareFunction,\n });\n }\n}\n","import { Component, input } from '@angular/core';\n\nimport { Column } from '../../../lib/data-set/column';\nimport { DataSource } from '../../../lib/data-source/data-source';\nimport { TitleComponent } from './title/title.component';\n\n@Component({\n selector: 'ng2-st-column-title',\n template: `\n <div class=\"ng2-smart-title\">\n <ng2-smart-table-title [source]=\"source()\" [column]=\"column()\"></ng2-smart-table-title>\n </div>\n `,\n standalone: true,\n imports: [TitleComponent],\n})\nexport class ColumnTitleComponent {\n readonly source = input.required<DataSource>();\n readonly column = input.required<Column>();\n}\n","import { Component, input, output } from '@angular/core';\n\nimport { DataSource } from '../../../lib/data-source/data-source';\nimport { Grid } from '../../../lib/grid';\nimport { ActionsTitleComponent } from '../cells/actions-title.component';\nimport { CheckboxSelectAllComponent } from '../cells/checkbox-select-all.component';\nimport { ColumnTitleComponent } from '../cells/column-title.component';\n\n@Component({\n selector: '[ng2-st-thead-titles-row]',\n template: `\n @if (grid().isMultiSelectVisible()) {\n <th ng2-st-checkbox-select-all [grid]=\"grid()\" (click)=\"selectAllRows.emit()\"></th>\n } @if (grid().actionIsOnLeft() && grid().isActionsVisible()) {\n\n <th ng2-st-actions-title [grid]=\"grid()\"></th>\n } @for (column of grid().dataSet.getVisibleColumns(); track column.id + $index) {\n <th class=\"ng2-smart-th {{ column.id }}\" [class]=\"column.class\" [style.width]=\"column.width\">\n <ng2-st-column-title [source]=\"source()\" [column]=\"column\"></ng2-st-column-title>\n </th>\n } @if (grid().actionIsOnRight() && grid().isActionsVisible()) {\n <th ng2-st-actions-title [grid]=\"grid()\"></th>\n }\n `,\n standalone: true,\n imports: [CheckboxSelectAllComponent, ActionsTitleComponent, ColumnTitleComponent],\n})\nexport class TheadTitlesRowComponent {\n readonly grid = input.required<Grid>();\n readonly source = input.required<DataSource>();\n\n readonly selectAllRows = output<void>();\n}\n","import { Component, computed, EventEmitter, input, Input, output, OutputEmitterRef } from '@angular/core';\n\nimport { DataSource } from '../../lib/data-source/data-source';\nimport { Grid } from '../../lib/grid';\nimport { TheadFiltersRowComponent } from './rows/thead-filters-row.component';\nimport { TheadFormRowComponent } from './rows/thead-form-row.component';\nimport { TheadTitlesRowComponent } from './rows/thead-titles-row.component';\n\n@Component({\n selector: '[ng2-st-thead]',\n templateUrl: './thead.component.html',\n standalone: true,\n imports: [TheadTitlesRowComponent, TheadFiltersRowComponent, TheadFormRowComponent],\n})\nexport class Ng2SmartTableTheadComponent {\n readonly grid = input.required<Grid>();\n readonly source = input.required<DataSource>();\n @Input() createConfirm!: EventEmitter<any> | OutputEmitterRef<any>;\n\n readonly selectAllRows = output<void>();\n readonly create = output<any>();\n\n readonly isHideHeader = computed<boolean>(() => {\n return this.grid().settings()?.hideHeader || false;\n });\n\n readonly isHideSubHeader = computed<boolean>(() => {\n return this.grid().settings()?.hideSubHeader || false;\n });\n}\n","@if (!isHideHeader()) {\n <tr ng2-st-thead-titles-row\n class=\"ng2-smart-titles\"\n [grid]=\"grid()\"\n [source]=\"source()\"\n (selectAllRows)=\"selectAllRows.emit()\">\n </tr>\n}\n\n@if (!isHideSubHeader()) {\n <tr ng2-st-thead-filters-row\n class=\"ng2-smart-filters\"\n [grid]=\"grid()\"\n [source]=\"source()\"\n (create)=\"create.emit($event)\">\n </tr>\n}\n\n@if (grid().createFormShown) {\n <tr ng2-st-thead-form-row\n [grid]=\"grid()\"\n [createConfirm]=\"createConfirm\">\n </tr>\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n OnChanges,\n OnDestroy,\n SimpleChange,\n computed,\n input,\n output,\n} from '@angular/core';\n\nimport { PagerComponent } from './components/pager/pager.component';\nimport { Ng2SmartTableTbodyComponent } from './components/tbody/tbody.component';\nimport { Ng2SmartTableTheadComponent } from './components/thead/thead.component';\nimport { Row } from './lib/data-set/row';\nimport { DataSource } from './lib/data-source/data-source';\nimport { Grid } from './lib/grid';\nimport { getRandomId } from './lib/helpers';\nimport {\n ColumnPositionState,\n SmartTableConfirmDeleteEvent,\n SmartTableConfirmEditEvent,\n SmartTableCreateConfirm,\n SmartTableCustomEvent,\n SmartTableRowClickedEvent,\n SmartTableRowSelectEvent,\n SmartTableSettings,\n} from './lib/interfaces/smart-table.models';\n\n@Component({\n selector: 'ng2-smart-table',\n styleUrls: ['./ng2-smart-table.component.scss'],\n templateUrl: './ng2-smart-table.component.html',\n standalone: true,\n imports: [Ng2SmartTableTheadComponent, Ng2SmartTableTbodyComponent, PagerComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Ng2SmartTableComponent implements OnChanges, OnDestroy {\n readonly source = input.required<DataSource>();\n readonly settings = input.required<SmartTableSettings>();\n\n readonly multiRowSelect = output<SmartTableRowSelectEvent>();\n readonly rowClicked = output<SmartTableRowClickedEvent>();\n readonly columnsSorted = output<ColumnPositionState[]>();\n readonly delete = output<any>();\n readonly edit = output<any>();\n readonly editCancel = output<any>();\n readonly create = output<any>();\n readonly custom = output<SmartTableCustomEvent>();\n readonly deleteConfirm = output<SmartTableConfirmDeleteEvent>();\n readonly editConfirm = output<SmartTableConfirmEditEvent>();\n readonly createConfirm = output<SmartTableCreateConfirm>();\n\n protected readonly tableClass = computed<string>(() => {\n return this.settings().attr?.class || '';\n });\n protected readonly tableId = computed<string>(() => {\n return this.settings().attr?.id || getRandomId();\n });\n protected readonly isPagerDisplay = computed<boolean>(() => {\n const { pager } = this.settings();\n return pager ? pager.display : false;\n });\n protected readonly rowClassFunction = computed<(row: any) => string>(() => {\n return this.settings().rowClassFunction || (() => '');\n });\n\n grid!: Grid;\n\n ngOnChanges({ settings }: Record<string, SimpleChange>) {\n if (this.grid) {\n if (settings) {\n this.grid.setSettings(this.settings());\n }\n } else {\n this.initGrid();\n }\n }\n\n ngOnDestroy(): void {\n this.grid.detach();\n }\n\n protected multipleSelectRow(row: Row): void {\n this.grid.multipleSelectRow(row);\n this.emitUserSelectRow(row);\n }\n\n protected onSelectAllRows(): void {\n this.grid.selectAllRows(!this.grid.dataSet.isAllSelected());\n this.emitUserSelectRow(null);\n }\n\n protected onSelectRow(row: Row, state: boolean): void {\n this.grid.selectRow(row, state);\n }\n\n protected emitUserRowClicked(row: Row): void {\n this.rowClicked.emit({\n data: row ? row.getData() : null,\n source: this.source(),\n });\n }\n\n private initGrid(): void {\n this.grid = new Grid(this.source(), this.settings());\n this.grid.setColumnsSortedEmitter(this.columnsSorted);\n }\n\n private emitUserSelectRow(row: Row | null): void {\n this.multiRowSelect.emit({\n data: row ? row.getData() : null,\n isSelected: row ? row.isSelected() : false,\n source: this.source(),\n selected: this.grid.dataSet.getSelectedRowsData(),\n });\n }\n}\n","<table [id]=\"tableId()\" [class]=\"tableClass()\">\n <thead\n ng2-st-thead\n [grid]=\"grid\"\n [source]=\"source()\"\n [createConfirm]=\"createConfirm\"\n (create)=\"create.emit($event)\"\n (selectAllRows)=\"onSelectAllRows()\"\n ></thead>\n\n <tbody\n ng2-st-tbody\n [grid]=\"grid\"\n [source]=\"source()\"\n [deleteConfirm]=\"deleteConfirm\"\n [editConfirm]=\"editConfirm\"\n [createConfirm]=\"createConfirm\"\n [rowClassFunction]=\"rowClassFunction()\"\n (edit)=\"edit.emit($event)\"\n (editCancel)=\"editCancel.emit($event)\"\n (delete)=\"delete.emit($event)\"\n (custom)=\"custom.emit($event)\"\n (userClickedRow)=\"emitUserRowClicked($event)\"\n (multipleSelectRow)=\"multipleSelectRow($event)\"\n ></tbody>\n</table>\n\n@if (isPagerDisplay()) {\n<ng2-smart-table-pager [source]=\"source()\">\n</ng2-smart-table-pager>\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"den4ik92-ng2-smart-table.mjs","sources":["../../../projects/ng2-smart-table/src/lib/components/cell/cell-editors/base-editor.component.ts","../../../projects/ng2-smart-table/src/lib/components/filter/filter-types/base-filter.component.ts","../../../projects/ng2-smart-table/src/lib/lib/helpers.ts","../../../projects/ng2-smart-table/src/lib/components/table-columns-editor/table-columns-editor.component.ts","../../../projects/ng2-smart-table/src/lib/components/table-columns-editor/table-columns-editor.component.html","../../../projects/ng2-smart-table/src/lib/components/table-columns-editor/column-editor.directive.ts","../../../projects/ng2-smart-table/src/lib/lib/data-set/cell.ts","../../../projects/ng2-smart-table/src/lib/lib/data-set/column.ts","../../../projects/ng2-smart-table/src/lib/lib/data-set/row.ts","../../../projects/ng2-smart-table/src/lib/lib/interfaces/smart-table.models.ts","../../../projects/ng2-smart-table/src/lib/lib/data-source/data-source.ts","../../../projects/ng2-smart-table/src/lib/lib/data-source/local/local.filter.ts","../../../projects/ng2-smart-table/src/lib/lib/data-source/local/local.pager.ts","../../../projects/ng2-smart-table/src/lib/lib/data-source/local/local.sorter.ts","../../../projects/ng2-smart-table/src/lib/lib/data-source/local/local.data-source.ts","../../../projects/ng2-smart-table/src/lib/lib/data-source/server/server.data-source.ts","../../../projects/ng2-smart-table/src/lib/components/pager/pager.component.ts","../../../projects/ng2-smart-table/src/lib/components/pager/pager.component.html","../../../projects/ng2-smart-table/src/lib/components/cell/cell-editors/checkbox-editor.component.ts","../../../projects/ng2-smart-table/src/lib/components/cell/cell-editors/input-editor.component.ts","../../../projects/ng2-smart-table/src/lib/components/cell/cell-editors/select-editor.component.ts","../../../projects/ng2-smart-table/src/lib/components/cell/cell-editors/textarea-editor.component.ts","../../../projects/ng2-smart-table/src/lib/components/cell/cell-edit-mode/build-in-editor.component.ts","../../../projects/ng2-smart-table/src/lib/components/cell/cell-edit-mode/build-in-editor.component.html","../../../projects/ng2-smart-table/src/lib/components/cell/cell-edit-mode/custom-edit.component.ts","../../../projects/ng2-smart-table/src/lib/components/cell/cell-edit-mode/edit-cell.component.ts","../../../projects/ng2-smart-table/src/lib/components/cell/cell-view-mode/custom-view.component.ts","../../../projects/ng2-smart-table/src/lib/components/cell/cell-view-mode/view-cell.component.ts","../../../projects/ng2-smart-table/src/lib/components/cell/cell.component.ts","../../../projects/ng2-smart-table/src/lib/components/tbody/cells/create-cancel.component.ts","../../../projects/ng2-smart-table/src/lib/lib/data-set/data-set.ts","../../../projects/ng2-smart-table/src/lib/lib/grid.ts","../../../projects/ng2-smart-table/src/lib/components/tbody/cells/custom.component.ts","../../../projects/ng2-smart-table/src/lib/components/tbody/cells/edit-delete.component.ts","../../../projects/ng2-smart-table/src/lib/components/tbody/cells/edit-delete.component.html","../../../projects/ng2-smart-table/src/lib/components/tbody/tbody.component.ts","../../../projects/ng2-smart-table/src/lib/components/tbody/tbody.component.html","../../../projects/ng2-smart-table/src/lib/components/filter/filter-types/checkbox-filter.component.ts","../../../projects/ng2-smart-table/src/lib/components/filter/filter-types/input-filter.component.ts","../../../projects/ng2-smart-table/src/lib/components/filter/filter-types/select-filter.component.ts","../../../projects/ng2-smart-table/src/lib/components/filter/build-in-filter.component.ts","../../../projects/ng2-smart-table/src/lib/components/filter/custom-filter.component.ts","../../../projects/ng2-smart-table/src/lib/components/filter/filter.component.ts","../../../projects/ng2-smart-table/src/lib/components/thead/cells/add-button.component.ts","../../../projects/ng2-smart-table/src/lib/components/thead/rows/thead-filters-row.component.ts","../../../projects/ng2-smart-table/src/lib/components/thead/cells/actions.component.ts","../../../projects/ng2-smart-table/src/lib/components/thead/rows/thead-form-row.component.ts","../../../projects/ng2-smart-table/src/lib/components/thead/cells/actions-title.component.ts","../../../projects/ng2-smart-table/src/lib/components/thead/cells/checkbox-select-all.component.ts","../../../projects/ng2-smart-table/src/lib/components/thead/cells/title/title.component.ts","../../../projects/ng2-smart-table/src/lib/components/thead/cells/column-title.component.ts","../../../projects/ng2-smart-table/src/lib/components/thead/rows/thead-titles-row.component.ts","../../../projects/ng2-smart-table/src/lib/components/thead/thead.component.ts","../../../projects/ng2-smart-table/src/lib/components/thead/thead.component.html","../../../projects/ng2-smart-table/src/lib/ng2-smart-table.component.ts","../../../projects/ng2-smart-table/src/lib/ng2-smart-table.component.html","../../../projects/ng2-smart-table/src/den4ik92-ng2-smart-table.ts"],"sourcesContent":["import { Component, input, InputSignal } from '@angular/core';\n\nimport { Cell } from '../../../lib/data-set/cell';\n\n@Component({ template: '', selector: 'ng2-editor-base-component' })\nexport class BaseEditorComponent implements Editor {\n readonly cell = input.required<Cell>();\n readonly inputClass = input('');\n}\n\nexport interface Editor {\n cell: InputSignal<Cell>;\n inputClass: InputSignal<string>;\n}\n","import {\n Component,\n EventEmitter,\n input,\n InputSignal,\n OnChanges,\n OnDestroy,\n OnInit,\n output,\n OutputEmitterRef,\n SimpleChanges,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { UntypedFormControl } from '@angular/forms';\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\nimport { Column } from '../../../lib/data-set/column';\nimport { DataSource } from '../../../lib/data-source/data-source';\n\n@Component({ template: '', selector: 'ng2-base-filter-component' })\nexport class BaseFilterComponent implements FilterComponent, OnDestroy, OnChanges, OnInit {\n delay = 300;\n changesSubscription?: Subscription;\n readonly query = input<unknown>('');\n readonly inputClass = input<string>('');\n readonly source = input.required<DataSource>();\n readonly column = input.required<Column>();\n\n readonly filter = output<any>();\n\n readonly inputControl = new UntypedFormControl();\n\n ngOnDestroy() {\n if (this.changesSubscription) {\n this.changesSubscription.unsubscribe();\n }\n }\n\n ngOnInit() {\n this.changesSubscription = this.inputControl.valueChanges\n .pipe(distinctUntilChanged(), debounceTime(this.delay))\n .subscribe((value: string) => {\n this.setFilter(value);\n });\n }\n\n ngOnChanges({ query }: SimpleChanges) {\n if (query) {\n this.inputControl?.setValue(query.currentValue, { emitEvent: false });\n }\n }\n\n setFilter(query: any) {\n this.filter.emit(query);\n }\n}\n\nexport interface FilterComponent {\n delay?: number;\n changesSubscription?: Subscription;\n readonly query: InputSignal<unknown>;\n readonly inputClass: InputSignal<string>;\n readonly source: InputSignal<DataSource>;\n readonly column: InputSignal<Column>;\n readonly filter: EventEmitter<any> | OutputEmitterRef<any>;\n}\n","/**\n * Extending object that entered in first argument.\n *\n * Returns extended object or false if have no target object or incorrect type.\n *\n * If you wish to clone source object (without modify it), just use empty new\n * object as first argument, like this:\n * deepExtend({}, yourObj_1, [yourObj_N]);\n */\nexport const deepExtend = function(...objects: any[]): any {\n if (objects.length < 1 || typeof objects[0] !== 'object') {\n return false;\n }\n\n if (objects.length < 2) {\n return objects[0];\n }\n\n const target = objects[0];\n\n // convert arguments to array and cut off target object\n const args = Array.prototype.slice.call(objects, 1);\n\n let val, src;\n\n args.forEach((obj: any) => {\n // skip argument if it is array or isn't object\n if (typeof obj !== 'object' || Array.isArray(obj)) {\n return;\n }\n\n Object.keys(obj).forEach(function (key) {\n src = target[key]; // source value\n val = obj[key]; // new value\n\n // recursion prevention\n if (val === target) {\n return;\n\n /**\n * if new value isn't object then just overwrite by new value\n * instead of extending.\n */\n } else if (typeof val !== 'object' || val === null) {\n target[key] = val;\n return;\n\n // just clone arrays (and recursive clone objects inside)\n } else if (Array.isArray(val)) {\n target[key] = [...val];\n return;\n\n // overwrite by new value if source isn't object or array\n } else if (typeof src !== 'object' || src === null || Array.isArray(src)) {\n target[key] = deepExtend({}, val);\n return;\n\n // source value and new value is objects both, extending...\n } else {\n target[key] = deepExtend(src, val);\n return;\n }\n });\n });\n\n return target;\n};\n\nexport class Deferred<T> {\n promise: Promise<T>;\n resolve!: (value?: T) => void;\n reject!: (reason?: string) => void;\n\n constructor() {\n this.promise = new Promise<T>((resolve, reject) => {\n this.resolve = resolve as any;\n this.reject = reject;\n });\n }\n}\n\n// getDeepFromObject({result: {data: 1}}, 'result.data', 2); // returns 1\nexport function getDeepFromObject(object = {}, name: string, defaultValue: any = null) {\n try {\n let level = deepExtend({}, object)\n const keys = name.split('.');\n if (keys.length === 1) {\n return level[keys[0]] ?? defaultValue;\n }\n keys.forEach((k) => {\n if (level && typeof level[k] !== 'undefined') {\n level = level[k];\n } else {\n level = defaultValue\n }\n });\n return level ?? defaultValue\n } catch {\n return defaultValue\n }\n}\n\nexport function getPageForRowIndex(index: number, perPage: number): number {\n // we need to add 1 to convert 0-based index to 1-based page number.\n return Math.floor(index / perPage) + 1;\n}\n\nexport function cloneArrayOfObject<T>(array: T[]): T[] {\n return array.map((obj) => Object.assign({}, obj));\n}\n\nexport function getRandomId(prefix = '', suffix = ''): string {\n return `${prefix ? `${prefix}-` : ''}${Math.random().toString(16).slice(2)}${suffix ? `-${suffix}` : ''}`;\n}\n\nexport function setLocalStorage(key: string, value: string | object | boolean): void {\n localStorage.setItem(key, JSON.stringify(value));\n}\n\nexport function getLocalStorage<T = string>(key: string): T | null {\n const valueString = localStorage.getItem(key);\n if (!valueString) {\n return null;\n }\n try {\n return JSON.parse(valueString);\n } catch {\n return null;\n }\n}\n\nexport function promiseDelay(time: number): Promise<void> {\n return new Promise((resolve) => {\n setTimeout(() => {\n resolve();\n }, time);\n });\n}\n","import { CdkDrag, CdkDragDrop, CdkDragPlaceholder, CdkDropList, moveItemInArray } from '@angular/cdk/drag-drop';\nimport { Component, effect, input, signal } from '@angular/core';\nimport { Grid } from '../../lib/grid';\nimport { cloneArrayOfObject } from '../../lib/helpers';\nimport { ColumnPositionState } from '../../lib/interfaces/smart-table.models';\n\n@Component({\n selector: 'ng2-table-columns-editor',\n templateUrl: './table-columns-editor.component.html',\n styleUrls: ['./table-columns-editor.component.scss'],\n imports: [CdkDropList, CdkDrag, CdkDragPlaceholder],\n})\nexport class TableColumnsEditorComponent {\n protected infoText = 'You can drag and drop columns as you wish and also disable unnecessary ones.';\n public readonly grid = input<Grid>();\n public readonly close = input.required<() => void>();\n\n protected currentState: ColumnPositionState[] = [];\n readonly stateHasChanged = signal(false);\n\n constructor() {\n effect(() => {\n this.currentState = cloneArrayOfObject(this.grid()?.currentColumnsSortState || []);\n });\n }\n\n resetChanges() {\n this.currentState = cloneArrayOfObject(this.grid()?.currentColumnsSortState || []);\n this.stateHasChanged.set(false);\n }\n\n drop(event: CdkDragDrop<ColumnPositionState[]>) {\n moveItemInArray(this.currentState, event.previousIndex, event.currentIndex);\n this.updateChangedState();\n }\n\n setVisibility(index: number) {\n this.currentState[index].hide = !this.currentState[index].hide;\n this.updateChangedState();\n }\n\n setAndUpdate() {\n this.grid()?.applyColumnsSortState(this.currentState);\n this.close()();\n this.stateHasChanged.set(false);\n }\n\n private updateChangedState() {\n this.stateHasChanged.set(\n JSON.stringify(this.grid()?.currentColumnsSortState) !== JSON.stringify(this.currentState),\n );\n }\n}\n","<div class=\"sort-card\">\n <div class=\"sort-card-header\">\n <h6>Table columns setup</h6>\n </div>\n <div class=\"sort-card-body\">\n <div\n class=\"list\"\n cdkDropList\n [cdkDropListData]=\"currentState\"\n (cdkDropListDropped)=\"drop($event)\"\n >\n @for (column of currentState; track column.key + i; let i = $index) {\n\n <div\n cdkDrag\n [cdkDragLockAxis]=\"'y'\"\n [cdkDragStartDelay]=\"300\"\n [cdkDragDisabled]=\"column.moveDisabled\"\n class=\"drag-row\"\n #dragRow\n [style.--drag-row-height]=\"50\"\n >\n <div class=\"drag-placeholder\" *cdkDragPlaceholder></div>\n <div class=\"index-cell\">\n {{ i + 1 }}\n </div>\n <label class=\"sort-column-checkbox-wrap\" [for]=\"'sort-column-checkbox-' + i\">\n <span></span>\n <input\n [disabled]=\"column.moveDisabled\"\n [id]=\"'sort-column-checkbox-' + i\"\n title=\"Active state. If checked the column will be displayed\"\n type=\"checkbox\"\n class=\"sort-column-checkbox-input\"\n [checked]=\"!column.hide\"\n (change)=\"setVisibility(i)\"\n />\n <span></span>\n </label>\n {{ column.title }}\n </div>\n }\n </div>\n </div>\n @if (stateHasChanged()) {\n <div class=\"sort-card-footer\">\n <button class=\"reset-button\" (click)=\"resetChanges()\">reset</button>\n <button class=\"update-button\" (click)=\"setAndUpdate()\">Update</button>\n </div>\n }\n</div>\n","import { Overlay, OverlayConfig, OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { ComponentRef, computed, Directive, ElementRef, inject, input, OnDestroy } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { Ng2SmartTableComponent } from '../../ng2-smart-table.component';\nimport { TableColumnsEditorComponent } from './table-columns-editor.component';\n\n@Directive({\n selector: '[ng2SmartTableColumnEditor]',\n host: {\n '(click)': 'buttclicked()',\n },\n})\nexport class SmartTableColumnEditorDirective implements OnDestroy {\n readonly tableComponent = input<Ng2SmartTableComponent>();\n\n private readonly grid = computed(() => {\n return this.tableComponent()?.grid;\n });\n\n private readonly overlay = inject(Overlay);\n private readonly elementRef = inject(ElementRef);\n private readonly destroy$ = new Subject<void>();\n\n protected overlayRef?: OverlayRef;\n\n ngOnDestroy(): void {\n this.overlayRef?.dispose();\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n protected showDropdown(): void {\n this.overlayRef = this.overlay.create(this.getOverlayConfig());\n const componentPortal = new ComponentPortal(TableColumnsEditorComponent);\n const dropdownRef: ComponentRef<TableColumnsEditorComponent> = this.overlayRef.attach(componentPortal);\n dropdownRef.setInput('grid', this.grid());\n dropdownRef.setInput('close', this.hide.bind(this));\n this.overlayRef\n ?.backdropClick()\n .pipe(takeUntil(this.destroy$))\n .subscribe(() => this.hide());\n }\n\n public hide() {\n this.overlayRef?.detach();\n this.overlayRef?.dispose();\n this.destroy$.next();\n }\n\n buttclicked() {\n this.showDropdown();\n }\n\n private getOverlayConfig(): OverlayConfig {\n const positionStrategy = this.overlay\n .position()\n .flexibleConnectedTo(this.elementRef)\n .withPush(false)\n .withPositions([\n {\n originX: 'center',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'top',\n },\n {\n originX: 'center',\n originY: 'bottom',\n overlayX: 'center',\n overlayY: 'top',\n },\n {\n originX: 'center',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top',\n },\n {\n originX: 'center',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom',\n },\n {\n originX: 'center',\n originY: 'top',\n overlayX: 'center',\n overlayY: 'bottom',\n },\n {\n originX: 'center',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom',\n },\n ]);\n\n return new OverlayConfig({\n positionStrategy: positionStrategy,\n hasBackdrop: true,\n backdropClass: 'cdk-overlay-transparent-backdrop',\n });\n }\n}\n","import { Column } from './column';\nimport { DataSet } from './data-set';\nimport { Row } from './row';\n\nexport class Cell {\n private prepareValue = (value: any) => value\n newValue: any = '';\n\n constructor(protected value: any, protected row: Row, protected column: Column, protected dataSet: DataSet) {\n this.newValue = value;\n }\n\n getColumn(): Column {\n return this.column;\n }\n\n getColumnClass(): string | undefined {\n return this.column.class;\n }\n\n getRow(): Row {\n return this.row;\n }\n\n getValue() {\n const prepare = this.column.valuePrepareFunction || this.prepareValue;\n return prepare.call(null, this.value, this.row.getData(), this);\n }\n\n getNotPrepareValue() {\n return this.value\n }\n\n setValue(value: any) {\n this.newValue = value;\n }\n\n getId(): string {\n return this.getColumn().id;\n }\n\n getTitle(): string {\n return this.getColumn().title;\n }\n\n isEditable(): boolean {\n if (this.getRow().index === -1) {\n return this.getColumn().isAddable;\n }\n else {\n return this.getColumn().isEditable;\n }\n }\n\n}\n","import { SmartTableCompareFunction, SmartTableEditorAndFilter, SmartTableFilterFunction, SmartTableValuePrepareFunction } from '../interfaces/smart-table.models';\nimport { SmartTableColumnSettings, SmartTableColumnSettingsTypes, SmartTableSortDirection } from './../interfaces/smart-table.models';\nimport { DataSet } from './data-set';\n\nexport class Column {\n readonly title: string = '';\n readonly type: SmartTableColumnSettingsTypes = 'text';\n readonly class: string = '';\n readonly width: string = '';\n\n hide = false;\n isSortable = false;\n isEditable = true;\n isAddable = true;\n isFilterable = false;\n sortDirection: SmartTableSortDirection = 'asc';\n editor: SmartTableEditorAndFilter | false = false;\n filter: SmartTableEditorAndFilter | false = false;\n renderComponent: any;\n\n compareFunction?: SmartTableCompareFunction;\n valuePrepareFunction?: SmartTableValuePrepareFunction;\n filterFunction?: SmartTableFilterFunction;\n\n constructor(public id: string, private settings: SmartTableColumnSettings, protected dataSet: DataSet) {\n this.title = settings.title;\n this.class = settings.class || '';\n this.width = settings.width || '';\n this.hide = !!settings.hide;\n this.type = settings.type;\n if (settings?.editor) {\n this.editor = settings.editor;\n }\n if (settings?.filter) {\n this.filter = settings.filter;\n }\n if (settings.type === 'custom' && settings.renderComponent) {\n this.renderComponent = settings.renderComponent;\n }\n this.isFilterable = typeof settings.filter === 'undefined' ? true : !!settings['filter'];\n this.isSortable = settings.sort ?? true;\n this.isEditable = settings.editable ?? true;\n this.isAddable= settings.addable ?? false;\n this.sortDirection = settings.sortDirection || 'asc';\n\n this.compareFunction = settings.compareFunction;\n this.valuePrepareFunction = settings.valuePrepareFunction;\n this.filterFunction = settings.filterFunction;\n }\n\n getEditorConfig(): SmartTableEditorAndFilter['config'] | false {\n if (this.editor) {\n return this.editor?.config\n }\n return false\n }\n\n getFilterType() {\n return this.filter && this.filter.type;\n }\n\n getFilterConfig(): SmartTableEditorAndFilter['config'] | false {\n if (this.filter) {\n return this.filter?.config\n }\n return false;\n }\n}\n","import { computed, signal } from \"@angular/core\";\nimport { Cell } from \"./cell\";\nimport { Column } from \"./column\";\nimport { DataSet } from \"./data-set\";\n\nexport class Row {\n readonly pending = signal(false);\n readonly isSelected = signal(false);\n readonly isInEditing = signal(false);\n readonly cells = signal<Cell[]>([]);\n public readonly visibleCells = computed<Cell[]>(() =>\n this.cells().filter((cell: Cell) => !cell.getColumn().hide)\n );\n\n constructor(\n public index: number,\n private data: any,\n protected _dataSet: DataSet\n ) {\n this.process();\n }\n\n getCell(column: Column): Cell | undefined {\n return this.cells().find((el) => el.getColumn() === column);\n }\n\n getData(): any {\n return this.data;\n }\n\n getNewData() {\n const values = Object.assign({}, this.data);\n this.cells().forEach(\n (cell) => (values[cell.getColumn().id] = cell.newValue)\n );\n return values;\n }\n\n setData<T = any>(data: T): void {\n this.data = data;\n this.process();\n }\n\n process(): void {\n const cells = this._dataSet\n .getColumns()\n .map((column: Column) => this.createCell(column));\n this.cells.set(cells);\n }\n\n createCell(column: Column): Cell {\n const value =\n typeof this.data[column.id] === \"undefined\"\n ? \"\"\n : this.data[column.id];\n return new Cell(value, this, column, this._dataSet);\n }\n}\n","import { Cell } from '../data-set/cell';\nimport { DataSource } from '../data-source/data-source';\nimport { Deferred } from '../helpers';\n\ninterface SelectOption {\n title: string;\n value: any;\n}\n\nexport interface ViewCell<V = any, R = any> {\n value: V;\n rowData: R;\n}\n\nexport type ActionPosition = 'left' | 'right';\n\nexport interface ColumnPositionState {\n key: string;\n title: string;\n hide: boolean;\n moveDisabled: boolean;\n}\n\nexport interface SmartTableSettings<T extends Record<string, any> = any> {\n selectMode?: 'single' | 'multi';\n mode?: 'inline' | 'external';\n columnSortStorageKey?: string;\n columnSort?: boolean; // if you want to add column sort need to set true;\n hideHeader?: boolean;\n hideSubHeader?: boolean;\n actions?: SmartTableAction<T> | false;\n actionsPosition?: ActionPosition;\n filter?: {\n inputClass: string;\n };\n edit?:\n | {\n inputClass?: string;\n editButtonContent?: string;\n saveButtonContent?: string;\n cancelButtonContent?: string;\n confirmSave?: boolean;\n hasPermissionFunction?: (row: T) => boolean;\n }\n | false;\n add?:\n | {\n inputClass?: string;\n addButtonContent?: string;\n createButtonContent?: string;\n cancelButtonContent?: string;\n confirmCreate?: boolean;\n }\n | false;\n delete?:\n | {\n deleteButtonContent?: string;\n confirmDelete?: boolean;\n hasPermissionFunction?: (row: T) => boolean;\n }\n | false;\n attr?: {\n id?: string;\n class?: string;\n };\n noDataMessage?: string;\n columns: SmartTableColumnSettings<T>[];\n pager?: (Omit<SmartTablePagerSettings, 'total' | 'page'>) | false;\n rowClassFunction?: (row: { data: T }) => string;\n}\n\nexport interface SmartTableAction<T=any> {\n columnTitle?: string;\n add?: boolean;\n edit?: boolean;\n delete?: boolean;\n custom?: SmartTableCustomAction<T>[];\n}\n\nexport interface SmartTableCustomAction<T=any> {\n name: string;\n title: string; // insert html content to action button\n hasPermissionFunction?: (row: T) => boolean;\n}\n\nexport type SmartTableColumnSettingsTypes = 'text' | 'html' | 'custom';\n\nexport type SmartTableColumnSettings<T extends Record<string, any> = any> =\n | SmartTableTextHtmlColumn<T>\n | SmartTableCustomColumn<T>;\n\nexport type SmartTableCompareFunction = (direction: number, a: any, b: any) => number;\n\nexport type SmartTableValuePrepareFunction<T extends Record<string, any> = any> = (\n columnData: any,\n rowData: T,\n cell: Cell,\n) => any;\n\nexport type SmartTableFilterFunction = (columnData: any, search: string) => boolean;\n\ninterface SmartTableDefaultColumn<T extends Record<string, any>> {\n key: keyof T;\n title: string;\n width?: string; //example: '20px', '20%'\n class?: string;\n editable?: boolean;\n hide?: boolean;\n // disable column move in column change position list\n moveDisabled?: boolean;\n sort?: boolean;\n addable?: boolean;\n sortDirection?: SmartTableSortDirection | false;\n editor?: SmartTableEditorAndFilter;\n filter?: SmartTableEditorAndFilter | false;\n compareFunction?: SmartTableCompareFunction;\n valuePrepareFunction?: SmartTableValuePrepareFunction<T>;\n filterFunction?: SmartTableFilterFunction;\n}\n\ninterface SmartTableTextHtmlColumn<T extends Record<string, any>> extends SmartTableDefaultColumn<T> {\n type: 'text' | 'html';\n}\n\ninterface SmartTableCustomColumn<T extends Record<string, any>> extends SmartTableDefaultColumn<T> {\n type: 'custom';\n renderComponent: any;\n}\n\nexport type SmartTableEditorAndFilterTypes = 'text' | 'textarea' | 'list' | 'custom' | 'checkbox';\n\nexport type SmartTableEditorAndFilter =\n | SmartTableTextEditor\n | SmartTableEditorList\n | SmartTableEditorCheckbox\n | SmartTableEditorCustom;\n\ninterface SmartTableTextEditor {\n type: 'text' | 'textarea';\n config: any;\n}\n\ninterface SmartTableEditorList {\n type: 'list';\n config: {\n selectText?: string;\n list: SelectOption[];\n };\n}\n\ninterface SmartTableEditorCheckbox {\n type: 'checkbox';\n config?: {\n true: any;\n false: any;\n resetText?: string;\n };\n}\n\ninterface SmartTableEditorCustom {\n type: 'custom';\n component: any;\n config?: any;\n}\n\nexport interface SmartTablePagerSettings {\n display: boolean;\n page: number;\n perPage: number;\n perPageSelect?: number[];\n total: number;\n}\n\nexport interface SmartTableFilterItem {\n /**\n * key of column to filter\n */\n field: string;\n search: string;\n filter?: SmartTableFilterFunction;\n}\n\nexport type SmartTableSortDirection = 'asc' | 'desc';\n\nexport interface SmartTableSortItem {\n field: string;\n direction: SmartTableSortDirection;\n compare?: SmartTableCompareFunction;\n}\n\ninterface SmartTableDefaultEvent<T> {\n confirm: Deferred<T>;\n data: T;\n source: DataSource<T>;\n}\n\nexport type SmartTableConfirmDeleteEvent<T = any> = SmartTableDefaultEvent<T>;\n\nexport type SmartTableRowClickedEvent<T = any> = Omit<SmartTableDefaultEvent<T>, 'confirm'>;\n\nexport interface SmartTableCustomEvent<T = any> extends Omit<SmartTableDefaultEvent<T>, 'confirm'> {\n action: string;\n}\n\nexport interface SmartTableRowSelectEvent<T = any> extends Omit<SmartTableDefaultEvent<T>, 'confirm'> {\n isSelected: boolean;\n selected: T[];\n}\n\nexport interface SmartTableConfirmEditEvent<T = any, N = T> extends SmartTableDefaultEvent<T> {\n newData: N;\n}\n\nexport interface SmartTableCreateConfirm<T = any> extends Omit<SmartTableDefaultEvent<T>, 'data'> {\n newData: T;\n}\n\nexport type ObjectStringString = Record<string, string>;\n\nexport enum SmartTableOnChangedEventName {\n 'load' = 'load',\n 'paging' = 'paging',\n 'update' = 'update',\n 'page' = 'page',\n 'filter' = 'filter',\n 'empty' = 'empty',\n 'sort' = 'sort',\n 'add' = 'add',\n 'remove' = 'remove',\n 'appendMany' = 'appendMany',\n 'prepend' = 'prepend',\n 'refresh' = 'refresh',\n 'columnRefresh' = 'columnRefresh',\n}\n\nexport type SmartTableOnChangedEventType = `${SmartTableOnChangedEventName}`;\n\ninterface SmartTableOnChangedEventBase<T extends Record<string, any> = any> {\n elements: T[];\n filters: SmartTableFilterItem[];\n paging: SmartTablePagerSettings;\n sort: SmartTableSortItem;\n}\n\ninterface SmartTableOnChangedEventAll<T extends Record<string, any> = any> {\n action: Exclude<SmartTableOnChangedEventType, 'remove' | 'update' | 'append' | 'prepend' | 'appendMany' | 'add'>;\n}\n\ninterface SmartTableAddEvent<T extends Record<string, any> = any> {\n action:\n | SmartTableOnChangedEventName.add\n | SmartTableOnChangedEventName.prepend\n | SmartTableOnChangedEventName.appendMany;\n newItems: T[];\n}\n\ninterface SmartTableUpdateEvent<T extends Record<string, any> = any> {\n action: SmartTableOnChangedEventName.update;\n newItem: T;\n oldItem: T;\n}\ninterface SmartTableRemoveEvent<T extends Record<string, any> = any> {\n action: SmartTableOnChangedEventName.remove;\n item: T;\n}\n\nexport type SmartTableOnChangedEventToEmit<T extends Record<string, any> = any> =\n | SmartTableAddEvent<T>\n | SmartTableUpdateEvent<T>\n | SmartTableRemoveEvent<T>\n | SmartTableOnChangedEventAll<T>;\n\nexport type SmartTableOnChangedEvent<T extends Record<string, any> = any> = SmartTableOnChangedEventToEmit<T>&SmartTableOnChangedEventBase<T>;\n\n","import { signal } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\nimport {\n SmartTableFilterItem,\n SmartTableOnChangedEvent,\n SmartTableOnChangedEventName,\n SmartTableOnChangedEventToEmit,\n SmartTablePagerSettings,\n SmartTableSortItem,\n} from '../interfaces/smart-table.models';\n\nexport abstract class DataSource<T = any> {\n protected readonly onChangedSource = new Subject<SmartTableOnChangedEvent>();\n protected sortConf: SmartTableSortItem = { field: '', direction: 'asc' };\n protected filters: SmartTableFilterItem[] = [];\n\n readonly pagingConf = signal<SmartTablePagerSettings>({\n page: 1,\n perPage: 100,\n total: 0,\n display: false,\n perPageSelect: [],\n });\n\n protected readonly data = signal<T[]>([]);\n /**\n * return all elements\n */\n abstract getAll(): Promise<T[]>;\n abstract getSort(): SmartTableSortItem;\n abstract getFilters(): SmartTableFilterItem[];\n abstract count(): number;\n\n refresh(): void {\n this.emitOnChanged({ action: SmartTableOnChangedEventName.refresh });\n }\n\n columnRefresh(): void {\n this.emitOnChanged({ action: SmartTableOnChangedEventName.columnRefresh });\n }\n\n onChanged(): Observable<SmartTableOnChangedEvent> {\n return this.onChangedSource.asObservable();\n }\n\n async prepend(element: T): Promise<true> {\n this.data.update((old) => [element, ...old]);\n this.emitOnChanged({ action: SmartTableOnChangedEventName.prepend, newItems: [element] });\n return Promise.resolve(true);\n }\n\n async appendMany(elements: T[]): Promise<true> {\n this.data.update((old) => [ ...old, ...elements,]);\n this.emitOnChanged({ action: SmartTableOnChangedEventName.appendMany, newItems: elements });\n return Promise.resolve(true);\n }\n\n async add(element: T): Promise<true> {\n this.data.update((old) => [ ...old, element,]);\n this.emitOnChanged({ action: SmartTableOnChangedEventName.add, newItems: [element] });\n return Promise.resolve(true);\n }\n\n async remove(element: T): Promise<true> {\n this.data.update((old) => old.filter((el) => el !== element));\n this.emitOnChanged({ action: SmartTableOnChangedEventName.remove, item: element });\n return Promise.resolve(true);\n }\n\n async update(oldItem: T, newItem: T): Promise<true> {\n this.data.update((old) => old.map((el) => (el === oldItem ? newItem : el)));\n this.emitOnChanged({ action: SmartTableOnChangedEventName.update, oldItem, newItem });\n return Promise.resolve(true);\n }\n\n async empty(): Promise<true> {\n this.data.set([]);\n this.emitOnChanged({ action: SmartTableOnChangedEventName.empty });\n return Promise.resolve(true);\n }\n\n setSort(conf: SmartTableSortItem, doEmit = true) {\n this.sortConf = conf;\n this.pagingConf.update((old) => ({ ...old, page: 1 }));\n if (doEmit) {\n this.emitOnChanged({ action: SmartTableOnChangedEventName.sort });\n }\n }\n\n async addFilter(newFilter: SmartTableFilterItem, doEmit = true) {\n if (!newFilter.field) {\n return;\n }\n const foundIndex = this.filters.findIndex((filter) => filter.field === newFilter.field);\n if (foundIndex === -1) {\n if (newFilter.search) {\n this.filters.push(newFilter);\n }\n } else {\n if (newFilter.search) {\n this.filters[foundIndex].search = newFilter.search;\n } else {\n this.filters.splice(foundIndex, 1);\n }\n }\n this.pagingConf.update((old) => ({ ...old, page: 1 }));\n if (doEmit) {\n this.emitOnChanged({ action: SmartTableOnChangedEventName.filter });\n }\n }\n\n setFilters(newFilters: SmartTableFilterItem[], doEmit = true) {\n this.filters = [...newFilters];\n this.pagingConf.update((old) => ({ ...old, page: 1 }));\n if (doEmit) {\n this.emitOnChanged({ action: SmartTableOnChangedEventName.filter });\n }\n }\n\n setPaging(page = 1, perPage: number, doEmit = true) {\n this.pagingConf.update((old) => ({ ...old, page: page, perPage: perPage }));\n if (doEmit) {\n this.emitOnChanged({ action: SmartTableOnChangedEventName.paging });\n }\n }\n\n setPage(page: number, doEmit = true) {\n this.pagingConf.update((old) => ({ ...old, page: page }));\n if (doEmit) {\n this.emitOnChanged({ action: SmartTableOnChangedEventName.page });\n }\n }\n\n emitOnChanged(eventData: SmartTableOnChangedEventToEmit, newElements?: T[]) {\n const actionData: SmartTableOnChangedEvent = {\n ...eventData,\n elements: newElements || this.data(),\n paging: this.pagingConf(),\n filters: this.getFilters(),\n sort: this.getSort(),\n };\n if (eventData.action === SmartTableOnChangedEventName.remove) {\n actionData.elements = (newElements || this.data()).filter((el) => el !== eventData.item);\n }\n this.onChangedSource.next(actionData);\n }\n}\n","import { SmartTableFilterFunction, SmartTableFilterItem } from \"../../interfaces/smart-table.models\";\n\nfunction filterValues(value: any, search: string): boolean {\n return value.toString().toLowerCase().includes(search.toString().toLowerCase());\n}\n\nexport async function isElementSatisfied<T extends Record<string, unknown>>(element: T, filters: SmartTableFilterItem[]) {\n return filters.every((filter: SmartTableFilterItem) => {\n if (!filter.search?.length) {\n return true;\n }\n const filterFunction: SmartTableFilterFunction = filter.filter || filterValues;\n try {\n const value = element[filter.field];\n return filterFunction(value, filter.search);\n } catch {\n return false\n }\n });\n}\n","export function paginateList(data: any[], page: number, perPage: number): any[] {\n return [...data].slice(perPage * (page - 1), perPage * page);\n}\n","import { SmartTableCompareFunction } from \"../../interfaces/smart-table.models\";\n\nexport function compareValues(direction: number, a: any, b: any) {\n if (a < b) {\n return -1 * direction;\n }\n if (a > b) {\n return direction;\n }\n return 0;\n}\n\nexport class LocalSorter {\n static async sort<T extends Record<string, any>>(\n data: T[],\n field: string,\n direction: string,\n customCompare?: SmartTableCompareFunction\n ): Promise<T[]> {\n const dir: number = direction === \"asc\" ? 1 : -1;\n const compare = customCompare ? customCompare : compareValues;\n\n return data.sort((a, b) => {\n return compare.call(null, dir, a[field], b[field]);\n });\n }\n}\n","import { computed, signal } from '@angular/core';\nimport {\n SmartTableFilterItem,\n SmartTableOnChangedEventName,\n SmartTableOnChangedEventToEmit,\n SmartTableOnChangedEventType,\n SmartTableSortItem,\n} from '../../interfaces/smart-table.models';\nimport { DataSource } from '../data-source';\nimport { isElementSatisfied } from './local.filter';\nimport { paginateList } from './local.pager';\nimport { LocalSorter } from './local.sorter';\n\nexport class LocalDataSource<T extends Record<string, any> = any> extends DataSource<T> {\n private readonly filteredAndSorted = signal<T[]>([]);\n\n constructor(data: T[] = []) {\n super();\n this.data.set(data);\n }\n\n async load(data: T[]): Promise<true> {\n this.data.set(data);\n this.emitOnChanged({ action: SmartTableOnChangedEventName.load }, data);\n return Promise.resolve(true);\n }\n\n override prepend(element: T): Promise<true> {\n this.reset(true);\n return super.prepend(element);\n }\n\n override appendMany(elements: T[]): Promise<true> {\n this.reset(true);\n return super.appendMany(elements);\n }\n\n override add(element: T): Promise<true> {\n this.reset(true);\n return super.add(element);\n }\n\n getAll(): Promise<T[]> {\n const data = this.data().slice(0);\n return Promise.resolve(data);\n }\n\n reset(silent = false) {\n if (silent) {\n this.filters = [];\n this.sortConf = { field: '', direction: 'asc' };\n this.pagingConf.update((old) => ({ ...old, page: 1 }));\n } else {\n this.setFilters([], false);\n this.setSort({ field: '', direction: 'asc' }, false);\n if (this.pagingConf().display) {\n this.setPage(1);\n }\n }\n }\n\n readonly count = computed(() => this.filteredAndSorted().length);\n\n getSort(): SmartTableSortItem {\n return this.sortConf;\n }\n\n getFilters(): SmartTableFilterItem[] {\n return this.filters;\n }\n\n override async emitOnChanged(event: SmartTableOnChangedEventToEmit, newElements?: T[]) {\n let renderData: T[] = this.filteredAndSorted().slice(0);\n const action = event.action as any;\n if (\n (['filter', 'refresh', 'load', 'add', 'prepend', 'appendMany'] satisfies SmartTableOnChangedEventType[]).includes(\n action,\n )\n ) {\n renderData = await this.filter(newElements || this.data().slice(0));\n renderData = await this.sort(renderData)\n this.filteredAndSorted.set(renderData);\n }\n if (action === SmartTableOnChangedEventName.sort) {\n renderData = await this.sort(renderData)\n this.filteredAndSorted.set(renderData);\n }\n if (\n this.pagingConf().display &&\n (['page', 'paging', 'refresh', 'load', 'sort', 'filter'] satisfies SmartTableOnChangedEventType[]).includes(\n action,\n )\n ) {\n renderData = this.paginate(this.filteredAndSorted());\n }\n super.emitOnChanged(event, renderData);\n\n if (this.pagingConf().display && this.isPageOutOfBounce()) {\n this.setPage(this.pagingConf().page - 1);\n }\n }\n\n protected async sort(data: T[]): Promise<T[]> {\n if (this.sortConf) {\n return LocalSorter.sort<T>(data, this.sortConf.field, this.sortConf.direction, this.sortConf.compare);\n }\n return data;\n }\n\n protected async filter(data: T[]): Promise<T[]> {\n if (!this.filters.length) {\n return data;\n }\n const filtered: T[] = [];\n\n await Promise.all(\n data.map(async (element) => {\n if (await isElementSatisfied(element, this.filters)) {\n filtered.push(element);\n }\n }),\n );\n\n return filtered;\n }\n\n protected paginate(data: T[]): T[] {\n if (this.pagingConf().display) {\n return paginateList(data, this.pagingConf().page, this.pagingConf().perPage);\n }\n return data;\n }\n\n private isPageOutOfBounce(): boolean {\n const { page, perPage } = this.pagingConf();\n return page * perPage >= this.count() + perPage && page > 1;\n }\n}\n","import { HttpParams } from '@angular/common/http';\nimport { computed } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { switchMap } from 'rxjs/operators';\nimport {\n SmartTableFilterItem,\n SmartTableOnChangedEventName,\n SmartTableOnChangedEventToEmit,\n SmartTablePagerSettings,\n SmartTableSortItem,\n} from '../../interfaces/smart-table.models';\nimport { DataSource } from '../data-source';\n\n// must return observable because of prepare can take some time\nexport type ParamsPrepareFunction = (options: {\n sort: SmartTableSortItem;\n filters: SmartTableFilterItem[];\n page: number;\n limit: number;\n}) => Observable<HttpParams>;\n\nexport type RequestFunction<T extends Record<string, any> = any> = (\n params: HttpParams,\n) => Observable<{ total: number; data: T[] }>;\n\nexport class ServerDataSource<T extends Record<string, any> = any> extends DataSource<T> {\n readonly count = computed(() => this.pagingConf().total);\n paramPrepareFunction: ParamsPrepareFunction;\n requestFunction: RequestFunction<T>;\n\n constructor(\n paramPrepareFunction: ParamsPrepareFunction,\n requestFunction: RequestFunction<T>,\n private initPagingConf?: Partial<SmartTablePagerSettings>,\n ) {\n super();\n this.pagingConf.update((old) => ({ ...old, ...this.initPagingConf }));\n this.paramPrepareFunction = paramPrepareFunction;\n this.requestFunction = requestFunction;\n }\n\n getAll(): Promise<T[]> {\n return Promise.resolve(this.data());\n }\n\n getSort(): SmartTableSortItem {\n return this.sortConf;\n }\n\n getFilters(): SmartTableFilterItem[] {\n return this.filters;\n }\n\n override emitOnChanged(eventData: SmartTableOnChangedEventToEmit, newElements?: T[] | undefined): void {\n if (\n [\n SmartTableOnChangedEventName.filter,\n SmartTableOnChangedEventName.sort,\n SmartTableOnChangedEventName.page,\n SmartTableOnChangedEventName.paging,\n SmartTableOnChangedEventName.refresh,\n ].includes(eventData.action as SmartTableOnChangedEventName)\n ) {\n this.paramPrepareFunction({\n sort: this.sortConf,\n filters: this.filters,\n page: this.pagingConf().page,\n limit: this.pagingConf().perPage,\n })\n .pipe(switchMap((params) => this.requestFunction(params)))\n .subscribe((res) => {\n this.data.set(res.data);\n this.pagingConf.update((old) => ({ ...old, total: res.total }));\n super.emitOnChanged(eventData, res.data);\n });\n } else {\n super.emitOnChanged(eventData, newElements);\n }\n }\n}\n","import { Component, computed, input } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { DataSource } from '../../lib/data-source/data-source';\n\n@Component({\n selector: 'ng2-smart-table-pager',\n styleUrls: ['./pager.component.scss'],\n templateUrl: './pager.component.html',\n standalone: true,\n imports: [FormsModule],\n})\nexport class PagerComponent {\n readonly source = input.required<DataSource>();\n protected readonly pagingConf = computed(() => this.source().pagingConf());\n protected readonly currentPerPage = computed(() => this.pagingConf().perPage);\n protected readonly currentPage = computed(() => this.pagingConf().page);\n protected readonly count = computed(() => this.source().count());\n protected readonly shouldShow = computed(() => this.pagingConf().display && this.count() > this.currentPerPage());\n protected readonly lastPage = computed(() => Math.ceil(this.count() / this.currentPerPage()));\n protected readonly pages = computed(() => this.getPages(this.currentPage(), this.lastPage()));\n\n paginate(page: number) {\n this.source().setPage(page);\n }\n\n next() {\n this.paginate(this.currentPage() + 1);\n }\n\n prev() {\n this.paginate(this.currentPage() - 1);\n }\n\n isString(value: string | number): value is string {\n return typeof value === 'string';\n }\n\n getPages(current: number, last: number) {\n const delta = 2,\n left = current - delta,\n right = current + delta + 1,\n range = [],\n rangeWithDots = [];\n let l;\n\n for (let i = 1; i <= last; i++) {\n if (i == 1 || i == last || (i >= left && i < right)) {\n range.push(i);\n }\n }\n\n for (const i of range) {\n if (l) {\n if (i - l === 2) {\n rangeWithDots.push(l + 1);\n } else if (i - l !== 1) {\n rangeWithDots.push('...');\n }\n }\n rangeWithDots.push(i);\n l = i;\n }\n return rangeWithDots;\n }\n\n onChangePerPage(target: HTMLSelectElement) {\n if (!target.value) {\n return;\n }\n this.source().setPaging(1, +target.value);\n }\n}\n","@if (shouldShow()) {\n<div class=\"ng2-smart-pagination-wrap\">\n @if ((pagingConf().perPageSelect?.length || 0) > 0) {\n <div></div>\n }\n <nav class=\"ng2-smart-pagination-nav\">\n <ul class=\"ng2-smart-pagination pagination\">\n <li class=\"ng2-smart-page-item page-item\" [class.disabled]=\"currentPage() === 1\">\n <a\n class=\"ng2-smart-page-link page-link\"\n href=\"#\"\n (click)=\"currentPage() === 1 ? false : paginate(1)\"\n aria-label=\"First\">\n <span aria-hidden=\"true\">&laquo;</span>\n </a>\n </li>\n <li class=\"ng2-smart-page-item page-item\" [class.disabled]=\"currentPage() === 1\">\n <a\n class=\"ng2-smart-page-link page-link page-link-prev\"\n href=\"#\"\n (click)=\"currentPage() === 1 ? false : prev()\"\n aria-label=\"Prev\">\n <span aria-hidden=\"true\">&lt;</span>\n </a>\n </li>\n @for (page of pages(); track $index) {\n <li class=\"ng2-smart-page-item page-item\" [class.active]=\"currentPage() === page\">\n @if (currentPage() === page || isString(page)) {\n <span class=\"ng2-smart-page-link page-link\">{{ page }}</span>\n } @else {\n <a class=\"ng2-smart-page-link page-link\" href=\"#\" (click)=\"paginate(page)\">{{ page }}</a>\n }\n </li>\n }\n <li class=\"ng2-smart-page-item page-item\" [class.disabled]=\"currentPage() === lastPage()\">\n <a\n class=\"ng2-smart-page-link page-link page-link-next\"\n href=\"#\"\n (click)=\"currentPage() === lastPage() ? false : next()\"\n aria-label=\"Next\">\n <span aria-hidden=\"true\">&gt;</span>\n </a>\n </li>\n <li class=\"ng2-smart-page-item page-item\" [class.disabled]=\"currentPage() === lastPage()\">\n <a\n class=\"ng2-smart-page-link page-link\"\n href=\"#\"\n (click)=\"currentPage() === lastPage() ? false : paginate(lastPage())\"\n aria-label=\"Last\">\n <span aria-hidden=\"true\">&raquo;</span>\n </a>\n </li>\n </ul>\n </nav>\n @if ((pagingConf().perPageSelect?.length || 0) > 0) {\n <nav class=\"ng2-smart-pagination-per-page\">\n <label for=\"per-page\"> Per Page: </label>\n <select (change)=\"onChangePerPage($any($event.target))\" [ngModel]=\"currentPerPage()\" id=\"per-page\">\n @for (item of pagingConf().perPageSelect; track $index) {\n <option [value]=\"item\">{{ item }}</option>\n }\n </select>\n </nav>\n }\n</div>\n\n}\n","import { Component, computed } from '@angular/core';\n\nimport { BaseEditorComponent } from './base-editor.component';\n\n@Component({\n selector: 'ng2-checkbox-editor',\n styleUrls: ['./editor.component.scss'],\n template: `\n <input\n [class]=\"inputClass()\"\n type=\"checkbox\"\n class=\"form-control\"\n [name]=\"cell().getId()\"\n [disabled]=\"!cell().isEditable()\"\n (change)=\"onChange($event)\"\n [checked]=\"cell().getValue() === trueVal()\" />\n `,\n standalone: true,\n})\nexport class CheckboxEditorComponent extends BaseEditorComponent {\n readonly trueVal = computed(() => {\n return this.cell().getColumn().getEditorConfig()?.true || true;\n });\n readonly falseVal = computed(() => {\n return this.cell().getColumn().getEditorConfig()?.false || false;\n });\n\n constructor() {\n super();\n }\n\n onChange(event: any) {\n this.cell().newValue = event.target.checked ? this.trueVal() : this.falseVal();\n }\n}\n","import { Component } from '@angular/core';\n\nimport { FormsModule } from '@angular/forms';\nimport { BaseEditorComponent } from './base-editor.component';\n\n@Component({\n selector: 'ng2-input-editor',\n styleUrls: ['./editor.component.scss'],\n template: `\n <input\n [class]=\"inputClass()\"\n class=\"form-control\"\n [(ngModel)]=\"cell().newValue\"\n [name]=\"cell().getId()\"\n [placeholder]=\"cell().getTitle()\"\n [disabled]=\"!cell().isEditable()\" />\n `,\n standalone: true,\n imports: [FormsModule],\n})\nexport class InputEditorComponent extends BaseEditorComponent {}\n","import { Component } from '@angular/core';\n\nimport { FormsModule } from '@angular/forms';\nimport { BaseEditorComponent } from './base-editor.component';\n\n@Component({\n selector: 'ng2-select-editor',\n template: `\n <select\n [class]=\"inputClass()\"\n class=\"form-control\"\n [(ngModel)]=\"cell().newValue\"\n [name]=\"cell().getId()\"\n [disabled]=\"!cell().isEditable()\">\n @for (option of cell().getColumn().getEditorConfig()?.list; track $index) {\n <option [value]=\"option.value\" [selected]=\"option.value === cell().getValue()\">\n {{ option.title }}\n </option>\n }\n </select>\n `,\n standalone: true,\n imports: [FormsModule],\n})\nexport class SelectEditorComponent extends BaseEditorComponent {}\n","import { Component } from '@angular/core';\n\nimport { FormsModule } from '@angular/forms';\nimport { BaseEditorComponent } from './base-editor.component';\n\n@Component({\n selector: 'ng2-textarea-editor',\n styleUrls: ['./editor.component.scss'],\n template: `\n <textarea\n [class]=\"inputClass()\"\n class=\"form-control\"\n [(ngModel)]=\"cell().newValue\"\n [name]=\"cell().getId()\"\n [disabled]=\"!cell().isEditable()\"\n [placeholder]=\"cell().getTitle()\">\n </textarea>\n `,\n standalone: true,\n imports: [FormsModule],\n})\nexport class TextareaEditorComponent extends BaseEditorComponent {}\n","import { Component, computed } from '@angular/core';\n\nimport { SmartTableEditorAndFilterTypes } from '../../../lib/interfaces/smart-table.models';\nimport { BaseEditorComponent } from '../cell-editors/base-editor.component';\nimport { CheckboxEditorComponent } from '../cell-editors/checkbox-editor.component';\nimport { InputEditorComponent } from '../cell-editors/input-editor.component';\nimport { SelectEditorComponent } from '../cell-editors/select-editor.component';\nimport { TextareaEditorComponent } from '../cell-editors/textarea-editor.component';\n\n@Component({\n selector: 'ng2-table-cell-build-in-editor',\n templateUrl: './build-in-editor.component.html',\n imports: [SelectEditorComponent, TextareaEditorComponent, CheckboxEditorComponent, InputEditorComponent],\n standalone: true,\n})\nexport class BuildInEditorComponent extends BaseEditorComponent {\n protected readonly editorType = computed<SmartTableEditorAndFilterTypes>(() => {\n const editor = this.cell().getColumn().editor;\n if (editor) {\n return editor.type || 'text';\n }\n return 'text';\n });\n}\n","<div role=\"none\" (click)=\"$event.stopPropagation()\">\n @switch (editorType()) {\n @case ('list') {\n <ng2-select-editor\n [cell]=\"cell()\"\n [inputClass]=\"inputClass()\">\n </ng2-select-editor>\n }\n @case ('textarea') {\n <ng2-textarea-editor\n [cell]=\"cell()\"\n [inputClass]=\"inputClass()\">\n </ng2-textarea-editor>\n }\n @case ('checkbox') {\n <ng2-checkbox-editor\n [cell]=\"cell()\"\n [inputClass]=\"inputClass()\">\n </ng2-checkbox-editor>\n }\n @default {\n <ng2-input-editor\n [cell]=\"cell()\"\n [inputClass]=\"inputClass()\">\n </ng2-input-editor>\n }\n}\n</div>","import {\n Component,\n ComponentRef,\n OnChanges,\n OnDestroy,\n SimpleChanges,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\n\nimport { SmartTableEditorAndFilter } from '../../../lib/interfaces/smart-table.models';\nimport { BaseEditorComponent } from '../cell-editors/base-editor.component';\n\n@Component({\n selector: 'ng2-table-cell-custom-editor',\n template: ` <ng-template #dynamicTarget></ng-template> `,\n standalone: true,\n})\nexport class CustomEditComponent extends BaseEditorComponent implements OnChanges, OnDestroy {\n @ViewChild('dynamicTarget', { read: ViewContainerRef, static: true })\n dynamicTarget?: ViewContainerRef;\n\n private customComponent?: ComponentRef<BaseEditorComponent>;\n\n ngOnChanges(changes: SimpleChanges) {\n const editor: SmartTableEditorAndFilter | false = this.cell().getColumn().editor;\n if (this.customComponent) {\n if (this.customComponent?.instance && 'ngOnChanges' in this.customComponent.instance) {\n try {\n const onChanges = this.customComponent.instance.ngOnChanges as (changes: SimpleChanges) => void;\n onChanges(changes);\n } catch {\n // do nothing\n }\n }\n return;\n }\n if (this.cell() && !this.customComponent && editor && editor.type == 'custom') {\n this.customComponent = this.dynamicTarget?.createComponent(editor.component);\n this.customComponent?.setInput('cell', this.cell());\n this.customComponent?.setInput('inputClass', this.inputClass());\n }\n }\n\n ngOnDestroy() {\n if (this.customComponent) {\n this.customComponent.destroy();\n }\n }\n}\n","import { Component, input } from '@angular/core';\n\nimport { Cell } from '../../../lib/data-set/cell';\nimport { SmartTableEditorAndFilterTypes } from '../../../lib/interfaces/smart-table.models';\nimport { BuildInEditorComponent } from './build-in-editor.component';\nimport { CustomEditComponent } from './custom-edit.component';\n\n@Component({\n selector: 'ng2-table-cell-edit-mode',\n template: `\n <div>\n @switch (getEditorType()) { @case ('custom') {\n <ng2-table-cell-custom-editor [cell]=\"cell()\" [inputClass]=\"inputClass()\"> </ng2-table-cell-custom-editor>\n } @default {\n <ng2-table-cell-build-in-editor [cell]=\"cell()\" [inputClass]=\"inputClass()\"> </ng2-table-cell-build-in-editor>\n } }\n </div>\n `,\n standalone: true,\n imports: [CustomEditComponent, BuildInEditorComponent],\n})\nexport class EditCellComponent {\n readonly cell = input.required<Cell>();\n readonly inputClass = input('');\n\n getEditorType(): SmartTableEditorAndFilterTypes {\n const editor = this.cell().getColumn().editor;\n if (editor) {\n return editor.type;\n }\n return 'text';\n }\n}\n","import { Component, input } from \"@angular/core\";\n\nimport { NgComponentOutlet } from \"@angular/common\";\nimport { Cell } from \"../../../lib/data-set/cell\";\n\n@Component({\n selector: \"ng2-custom-view-component\",\n template: `<ng-template\n *ngComponentOutlet=\"\n cell().getColumn().renderComponent;\n inputs: { rowData: cell().getRow().getData(), value: cell().getValue() }\n \"\n ></ng-template>`,\n imports: [NgComponentOutlet],\n standalone: true,\n})\nexport class CustomViewComponent {\n readonly cell = input.required<Cell>();\n}\n","import { ChangeDetectionStrategy, Component, input } from \"@angular/core\";\n\nimport { Cell } from \"../../../lib/data-set/cell\";\nimport { CustomViewComponent } from \"./custom-view.component\";\n\n@Component({\n selector: \"ng2-table-cell-view-mode\",\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n <div>\n @switch (cell().getColumn().type) { @case ('custom') {\n <ng2-custom-view-component [cell]=\"cell()\"></ng2-custom-view-component>\n } @case ('html') {\n <div [innerHTML]=\"cell().getValue()\"></div>\n } @default {\n <div>{{ cell().getValue() }}</div>\n } }\n </div>\n `,\n standalone: true,\n imports: [CustomViewComponent],\n})\nexport class ViewCellComponent {\n readonly cell = input.required< Cell>()\n}\n","import { Component, input } from \"@angular/core\";\n\nimport { Cell } from \"../../lib/data-set/cell\";\nimport { EditCellComponent } from \"./cell-edit-mode/edit-cell.component\";\nimport { ViewCellComponent } from \"./cell-view-mode/view-cell.component\";\n\n@Component({\n selector: \"ng2-smart-table-cell\",\n template: `\n @if (!isInEditing()) {\n <ng2-table-cell-view-mode [cell]=\"cell()\"></ng2-table-cell-view-mode>\n } @else {\n <ng2-table-cell-edit-mode\n [cell]=\"cell()\"\n [inputClass]=\"inputClass()\"\n >\n </ng2-table-cell-edit-mode>\n }\n `,\n standalone: true,\n imports: [ViewCellComponent, EditCellComponent],\n})\nexport class CellComponent {\n readonly cell = input.required<Cell>()\n\n readonly inputClass = input('');\n readonly isInEditing = input<boolean>(false);\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n EventEmitter,\n input,\n OutputEmitterRef\n} from \"@angular/core\";\n\nimport { Row } from \"../../../lib/data-set/row\";\nimport { Grid } from \"../../../lib/grid\";\n\n@Component({\n selector: \"ng2-st-tbody-create-cancel\",\n template: `\n @if (!row().pending()) {\n <a\n href=\"#\"\n [id]=\"'row-' + row().index + '_editing-confirm-button'\"\n class=\"ng2-smart-action ng2-smart-action-edit-save\"\n [innerHTML]=\"saveButtonContent()\"\n (click)=\"onSave($event)\"\n ></a>\n <a\n href=\"#\"\n [id]=\"'row-' + row().index + '_editing-cancel-button'\"\n class=\"ng2-smart-action ng2-smart-action-edit-cancel\"\n [innerHTML]=\"cancelButtonContent()\"\n (click)=\"onCancelEdit($event)\"\n ></a>\n } @else {\n <div style=\"display: flex;\">\n <svg\n role=\"none\"\n (click)=\"$event.stopPropagation()\"\n style=\"height: 2rem; width: 2rem;\"\n version=\"1.1\"\n id=\"L9\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n x=\"0px\"\n y=\"0px\"\n viewBox=\"0 0 100 100\"\n enable-background=\"new 0 0 0 0\"\n xml:space=\"preserve\"\n >\n <path\n fill=\"#e9e9e9\"\n d=\"M73,50c0-12.7-10.3-23-23-23S27,37.3,27,50 M30.9,50c0-10.5,8.5-19.1,19.1-19.1S69.1,39.5,69.1,50\"\n >\n <animateTransform\n attributeName=\"transform\"\n attributeType=\"XML\"\n type=\"rotate\"\n dur=\"1s\"\n from=\"0 50 50\"\n to=\"360 50 50\"\n repeatCount=\"indefinite\"\n />\n </path>\n </svg>\n <svg\n role=\"none\"\n (click)=\"$event.stopPropagation()\"\n style=\"height: 2rem; width: 2rem; \"\n version=\"1.1\"\n id=\"L9\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n x=\"0px\"\n y=\"0px\"\n viewBox=\"0 0 100 100\"\n enable-background=\"new 0 0 0 0\"\n xml:space=\"preserve\"\n >\n <path\n fill=\"#e9e9e9\"\n d=\"M73,50c0-12.7-10.3-23-23-23S27,37.3,27,50 M30.9,50c0-10.5,8.5-19.1,19.1-19.1S69.1,39.5,69.1,50\"\n >\n <animateTransform\n attributeName=\"transform\"\n attributeType=\"XML\"\n type=\"rotate\"\n dur=\"1s\"\n from=\"0 50 50\"\n to=\"360 50 50\"\n repeatCount=\"indefinite\"\n />\n </path>\n </svg>\n </div>\n }\n `,\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TbodyCreateCancelComponent {\n readonly grid = input.required<Grid>();\n readonly row = input.required<Row>();\n readonly editConfirm = input.required<EventEmitter<any> | OutputEmitterRef<any>>();\n readonly editCancel = input.required<EventEmitter<any> | OutputEmitterRef<any>>();\n\n readonly cancelButtonContent = computed(() => {\n const edit = this.grid().settings().edit\n return edit ? edit.cancelButtonContent || \"Cancel\" : \"Cancel\"\n })\n readonly saveButtonContent = computed(() => {\n const edit = this.grid().settings().edit\n return edit ? edit.saveButtonContent || \"Update\" : \"Update\"\n })\n\n onSave(event: any) {\n event.preventDefault();\n event.stopPropagation();\n this.grid().save(this.row(), this.editConfirm());\n }\n\n onCancelEdit(event: any) {\n event.preventDefault();\n event.stopPropagation();\n this.editCancel().emit(true);\n this.row().isInEditing.set(false);\n }\n}\n","import { computed, signal } from \"@angular/core\";\nimport { SmartTableColumnSettings } from \"../interfaces/smart-table.models\";\nimport { Column } from \"./column\";\nimport { Row } from \"./row\";\n\nexport class DataSet {\n newRow!: Row;\n\n protected readonly data = signal<any[]>([]);\n protected readonly columns = signal<Column[]>([]);\n protected readonly rows = signal<Row[]>([]);\n protected readonly selectedRows = new Set<Row>();\n\n readonly getColumns = computed(() => this.columns());\n readonly getVisibleColumns = computed(() =>\n this.columns().filter((column: Column) => !column.hide)\n );\n readonly getRows = computed(() => {\n return this.rows();\n });\n\n readonly isAllSelected = computed<boolean>(() =>\n this.rows().every((row) => row.isSelected())\n );\n\n constructor(\n data: any[] = [],\n protected columnSettings: SmartTableColumnSettings[]\n ) {\n this.createColumns(columnSettings);\n this.setData(data);\n this.createNewRow();\n }\n\n setData(data: any[]) {\n this.data.set(data);\n this.createRows();\n }\n\n setColumnsConfig(columnSettings: SmartTableColumnSettings[]) {\n this.columnSettings = columnSettings;\n this.createColumns(columnSettings);\n this.createRows();\n }\n\n getFirstRow(): Row {\n return this.rows()[0];\n }\n\n getLastRow(): Row {\n return this.rows()[this.rows().length - 1];\n }\n\n findRowByData(data: any): Row | undefined {\n return this.rows().find((row: Row) => row.getData() === data);\n }\n\n setSelectAll(state: boolean): void {\n this.rows().forEach((row) => {\n row.isSelected.set(state);\n this.storeSelectedRow(row);\n });\n }\n\n deselectAll() {\n this.rows().forEach((row) => {\n row.isSelected.set(false);\n });\n // we need to clear selectedRow field because no one row selected\n this.selectedRows.clear();\n }\n\n selectRow(row: Row, state: boolean): void {\n row.isSelected.set(state);\n this.storeSelectedRow(row);\n }\n\n multipleSelectRow(row: Row): Row {\n row.isSelected.set(!row.isSelected());\n this.storeSelectedRow(row);\n\n return row;\n }\n\n getSelectedRowsData(): any[] {\n return [...this.selectedRows];\n }\n\n createNewRow() {\n this.newRow = new Row(-1, {}, this);\n this.newRow.isInEditing.set(true);\n }\n\n /**\n * Create columns by mapping from the settings\n * @param settings\n * @private\n */\n createColumns(columnsParams: SmartTableColumnSettings[]) {\n const columns = columnsParams.map(\n (params) => new Column(params.key as string, params, this)\n );\n this.columns.set(columns);\n }\n\n /**\n * Create rows based on current data prepared in data source\n * @private\n */\n createRows() {\n const rows = this.data().map((el, index) => {\n const row = new Row(index, el, this);\n row.isSelected.set(this.selectedRows.has(row.getData()));\n return row;\n });\n this.rows.set(rows);\n }\n\n private storeSelectedRow(row: Row): void {\n if (row.isSelected()) {\n this.selectedRows.add(row.getData());\n } else {\n this.selectedRows.delete(row.getData());\n }\n }\n}\n","import { computed, EventEmitter, OutputEmitterRef, signal } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { LocalDataSource } from './data-source/local/local.data-source';\n\nimport { DataSet } from './data-set/data-set';\nimport { Row } from './data-set/row';\nimport { DataSource } from './data-source/data-source';\nimport { Deferred, getDeepFromObject, getLocalStorage, setLocalStorage } from './helpers';\nimport {\n ColumnPositionState,\n SmartTableColumnSettings,\n SmartTableOnChangedEvent,\n SmartTableOnChangedEventName,\n SmartTablePagerSettings,\n SmartTableSettings,\n SmartTableSortItem,\n} from './interfaces/smart-table.models';\n\nexport class Grid {\n createFormShown = false;\n\n source!: DataSource;\n dataSet!: DataSet;\n\n currentColumnsSortState: ColumnPositionState[] = [];\n\n private columnsSortedEmitter!: OutputEmitterRef<ColumnPositionState[]>;\n private sourceOnChangedSubscription: Subscription | undefined;\n private sourceOnUpdatedSubscription: Subscription | undefined;\n\n readonly settings = signal<SmartTableSettings>({} as SmartTableSettings);\n\n readonly isMultiSelectVisible = computed(() => {\n return this.settings().selectMode === 'multi';\n });\n readonly isActionsVisible = computed<boolean>(() => {\n const actions = this.settings().actions;\n if (!actions) return false;\n return actions.add || actions.edit || actions.delete || !!actions?.custom?.length;\n });\n readonly actionIsOnLeft = computed<boolean>(() => {\n return (this.settings().actionsPosition || 'left') === 'left';\n });\n readonly actionIsOnRight = computed<boolean>(() => {\n return this.settings().actionsPosition === 'right';\n });\n\n constructor(source: DataSource | undefined, settings: SmartTableSettings) {\n this.setSource(source, settings);\n this.setSettings(settings);\n }\n\n setColumnsSortedEmitter(emitter: OutputEmitterRef<ColumnPositionState[]>) {\n this.columnsSortedEmitter = emitter;\n }\n\n detach(): void {\n if (this.sourceOnChangedSubscription) {\n this.sourceOnChangedSubscription.unsubscribe();\n }\n if (this.sourceOnUpdatedSubscription) {\n this.sourceOnUpdatedSubscription.unsubscribe();\n }\n }\n\n getNewRow(): Row {\n return this.dataSet.newRow;\n }\n\n setSettings(settings: SmartTableSettings) {\n this.updateSettingsAndDataSet(settings);\n if (settings.columnSort) {\n this.setColumnsSortState(settings.columns);\n }\n }\n\n getDataSet(): DataSet {\n return this.dataSet;\n }\n\n getSetting<T>(name: string, defaultValue?: any): T {\n return getDeepFromObject(this.settings(), name, defaultValue);\n }\n\n selectRow(row: Row, state: boolean) {\n this.dataSet.selectRow(row, state);\n }\n\n multipleSelectRow(row: Row) {\n this.dataSet.multipleSelectRow(row);\n }\n\n edit(row: Row) {\n row.isInEditing.set(true);\n }\n\n create(row: Row, confirmEmitter: EventEmitter<any> | OutputEmitterRef<any>) {\n row.pending.set(true);\n const deferred = new Deferred();\n deferred.promise\n .then((newData) => {\n row.pending.set(false);\n newData = newData || row.getNewData();\n this.source.prepend(newData).then(() => {\n this.createFormShown = false;\n this.dataSet.createNewRow();\n });\n })\n .catch((err) => {\n row.pending.set(false);\n });\n\n if (this.getSetting('add.confirmCreate', false)) {\n confirmEmitter.emit({\n newData: row.getNewData(),\n source: this.source,\n confirm: deferred,\n });\n } else {\n deferred.resolve(false);\n row.pending.set(false);\n }\n }\n\n save(row: Row, confirmEmitter: EventEmitter<any> | OutputEmitterRef<any>) {\n row.pending.set(true);\n const deferred = new Deferred();\n deferred.promise\n .then((newData) => {\n row.pending.set(false);\n newData = newData || row.getNewData();\n this.source.update(row.getData(), newData).then(() => {\n row.isInEditing.set(false);\n });\n })\n .catch(() => {\n row.pending.set(false);\n row.isInEditing.set(false);\n });\n\n if (this.getSetting('edit.confirmSave', false)) {\n confirmEmitter.emit({\n data: row.getData(),\n newData: row.getNewData(),\n source: this.source,\n confirm: deferred,\n });\n } else {\n deferred.resolve(false);\n row.pending.set(false);\n }\n }\n\n delete(row: Row, confirmEmitter: EventEmitter<any> | OutputEmitterRef<any>) {\n row.pending.set(true);\n const deferred = new Deferred();\n deferred.promise\n .then(() => {\n row.pending.set(false);\n this.source.remove(row.getData());\n })\n .catch(() => {\n row.pending.set(false);\n // doing nothing\n });\n if (this.getSetting('delete.confirmDelete', true)) {\n confirmEmitter.emit({\n data: row.getData(),\n source: this.source,\n confirm: deferred,\n });\n } else {\n deferred.resolve(false);\n row.pending.set(false);\n }\n if (row.isSelected()) {\n this.dataSet.selectRow(row, false);\n }\n }\n\n private processDataChange(event: SmartTableOnChangedEvent) {\n if (event.action === 'load') {\n this.dataSet.deselectAll();\n }\n if (event.action === 'update') {\n const changedRow = this.dataSet.findRowByData(event.oldItem);\n if (changedRow) {\n changedRow.setData(event.newItem || event.oldItem);\n }\n return;\n }\n this.dataSet.setData(event.elements);\n }\n\n private prepareSource(\n source: DataSource | undefined,\n initialSort: SmartTableSortItem | false,\n initialPaging: Partial<SmartTablePagerSettings> | false,\n ): DataSource {\n const preparedSource = source || new LocalDataSource();\n if (initialSort && !source?.getSort().field) {\n preparedSource.setSort(initialSort, false);\n }\n if (initialPaging && initialPaging?.display) {\n preparedSource.pagingConf.update((old) => ({\n ...old,\n ...initialPaging,\n }));\n }\n return preparedSource;\n }\n\n private getInitialSort(columns?: SmartTableColumnSettings[]): SmartTableSortItem | false {\n if (!columns || !columns.length) {\n return false;\n }\n const defaultSortColumn = columns?.find((column) => column.sortDirection);\n if (!defaultSortColumn) {\n return false;\n }\n return {\n field: defaultSortColumn.key as string,\n direction: defaultSortColumn.sortDirection || 'asc',\n compare: defaultSortColumn.compareFunction,\n };\n }\n\n getSelectedRowsData(): any[] {\n return this.dataSet.getSelectedRowsData();\n }\n\n selectAllRows(status: boolean) {\n this.dataSet.setSelectAll(status);\n }\n\n getFirstRow(): Row {\n return this.dataSet.getFirstRow();\n }\n\n getLastRow(): Row {\n return this.dataSet.getLastRow();\n }\n\n private updateSettingsAndDataSet(\n settings: SmartTableSettings,\n emittedEvent:\n | `${SmartTableOnChangedEventName.refresh}`\n | `${SmartTableOnChangedEventName.columnRefresh}` = 'refresh',\n ) {\n this.settings.set(settings);\n if (this.dataSet) {\n this.dataSet.setColumnsConfig(settings.columns);\n } else {\n this.dataSet = new DataSet([], settings.columns);\n }\n if (this.source) {\n this.source.pagingConf.update((old) => ({\n ...old,\n display: this.getSetting('pager.display'),\n }));\n\n if (emittedEvent === 'columnRefresh') {\n this.source.columnRefresh();\n } else {\n this.source.refresh();\n }\n }\n }\n\n private setSource(source: DataSource | undefined, settings?: SmartTableSettings) {\n const initialSort = this.getInitialSort(settings?.columns);\n this.source = this.prepareSource(source, initialSort, settings?.pager || false);\n this.detach();\n\n this.sourceOnChangedSubscription = this.source.onChanged().subscribe((changes) => this.processDataChange(changes));\n }\n\n // ------------------------------- column sort\n\n private async getSortedTableColumns(\n newState: ColumnPositionState[],\n columns: SmartTableColumnSettings[],\n ): Promise<SmartTableColumnSettings[]> {\n const sortedArray: SmartTableColumnSettings[] = [];\n newState.forEach((item2) => {\n const index = columns.findIndex((item1) => item1.key === item2.key && item1.title === item2.title);\n if (index > -1) {\n sortedArray.push({ ...columns[index], hide: !!item2.hide });\n }\n });\n return Promise.resolve(sortedArray);\n }\n\n public async applyColumnsSortState(state: ColumnPositionState[], emitEvent = true) {\n this.currentColumnsSortState = this.getMergedColumnStates(state);\n this.updateSettingsAndDataSet(\n {\n ...this.settings(),\n columns: await this.getSortedTableColumns(this.currentColumnsSortState, this.settings()?.columns),\n },\n 'columnRefresh',\n );\n if (this.columnStateStorageKey) {\n setLocalStorage(this.columnStateStorageKey, this.currentColumnsSortState);\n }\n if (emitEvent) {\n this.columnsSortedEmitter.emit(this.currentColumnsSortState);\n }\n }\n\n private setColumnsSortState(columns?: SmartTableColumnSettings[]) {\n const columnsState = this.getColumnsStateFromSettings(columns);\n if (this.columnStateStorageKey) {\n const storageState = getLocalStorage<ColumnPositionState[]>(this.columnStateStorageKey);\n if (!storageState) {\n this.currentColumnsSortState = columnsState;\n setLocalStorage(this.columnStateStorageKey, columnsState);\n return;\n }\n const merged = this.getMergedColumnStates(storageState, columnsState);\n this.applyColumnsSortState(merged, false);\n return;\n }\n this.applyColumnsSortState(columnsState, false);\n }\n\n private getColumnsStateFromSettings(columns?: SmartTableColumnSettings[]): ColumnPositionState[] {\n return (columns || this.settings().columns || []).map((column) => ({\n key: column.key as string,\n title: column.title,\n hide: !!column.hide,\n moveDisabled: !!column.moveDisabled,\n }));\n }\n\n private getMergedColumnStates(newState: ColumnPositionState[], columnsState?: ColumnPositionState[]) {\n const columnsSettings = columnsState || this.getColumnsStateFromSettings();\n // merge new columns state with state from storage\n const filtered: ColumnPositionState[] = [];\n newState.forEach((state) => {\n const fined = columnsSettings.find((column) => column.title === state.title && column.key === state.key);\n if (fined) {\n filtered.push({ ...fined, hide: fined.moveDisabled ? fined.hide : state.hide });\n }\n });\n // find new columns witch not exist in storage state\n const newColumns = columnsSettings.filter((state) => {\n return !filtered.some((column) => column.title === state.title && column.key === state.key);\n });\n return [...filtered, ...newColumns];\n }\n\n private get columnStateStorageKey(): string | undefined {\n return this.settings().columnSortStorageKey;\n }\n}\n","import { ChangeDetectionStrategy, Component, Input, output } from '@angular/core';\nimport { Row } from '../../../lib/data-set/row';\n\nimport { DataSource } from '../../../lib/data-source/data-source';\nimport { Grid } from '../../../lib/grid';\nimport { SmartTableCustomAction } from '../../../lib/interfaces/smart-table.models';\n\n@Component({\n selector: 'ng2-st-tbody-custom',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\n @for (action of customActions(); track $index) { @if(!action.hasPermissionFunction ? true :\n action.hasPermissionFunction(row.getData())) {\n <a\n [id]=\"'row-' + row.index + '_action-' + action.name + '-button'\"\n href=\"#\"\n class=\"ng2-smart-action ng2-smart-action-custom-custom\"\n [innerHTML]=\"action.title\"\n (click)=\"$event.stopPropagation(); $event.preventDefault(); onCustom(action)\"></a>\n } }\n `,\n standalone: true,\n})\nexport class TbodyCustomComponent {\n @Input() grid!: Grid;\n @Input() row!: Row;\n @Input() source!: DataSource;\n readonly custom = output<any>();\n\n onCustom(action: any) {\n this.custom.emit({\n action: action.name,\n data: this.row.getData(),\n source: this.source,\n });\n }\n\n customActions() {\n return this.grid.getSetting<SmartTableCustomAction[] | undefined>('actions.custom');\n }\n}\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n computed,\n EventEmitter,\n inject,\n input,\n output,\n OutputEmitterRef\n} from '@angular/core';\n\nimport { Row } from '../../../lib/data-set/row';\nimport { DataSource } from '../../../lib/data-source/data-source';\nimport { Grid } from '../../../lib/grid';\n\n@Component({\n selector: 'ng2-st-tbody-edit-delete',\n templateUrl: './edit-delete.component.html',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TbodyEditDeleteComponent {\n private readonly cdr = inject(ChangeDetectorRef);\n readonly grid = input.required<Grid>();\n readonly row = input.required<Row>();\n readonly source = input.required<DataSource>();\n readonly deleteConfirm = input.required<EventEmitter<any> | OutputEmitterRef<any>>();\n\n readonly edit = output<any>();\n readonly delete = output<any>();\n\n readonly isActionEdit = computed<boolean>(() => {\n const actions = this.grid().settings().actions\n return actions ? !!actions.edit : false\n });\n readonly isActionDelete = computed<boolean>(() => {\n const actions = this.grid().settings().actions\n return actions ? !!actions.delete : false\n });\n readonly isExternalMode = computed<boolean>(() => {\n return this.grid().settings().mode === 'external'\n });\n\n readonly canDeleteFunction = computed<(data: any) => boolean>(() => {\n const deleteConfig = this.grid().settings().delete\n return deleteConfig ? deleteConfig.hasPermissionFunction || ((data) => true) : (data) => true\n });\n\n readonly canEditFunction = computed<(data: any) => boolean>(() => {\n const edit = this.grid().settings().edit\n return edit ? edit.hasPermissionFunction || ((data) => true) : (data) => true\n });\n\n readonly editRowButtonContent = computed<string>(() => {\n const edit = this.grid().settings().edit\n return edit ? edit.editButtonContent || 'Edit' : 'Edit'\n });\n readonly deleteRowButtonContent = computed<string>(() => {\n const deleteConfig = this.grid().settings().delete\n return deleteConfig ? deleteConfig.deleteButtonContent || 'Delete' : 'Delete'\n });\n\n onEdit(event: any) {\n event.preventDefault();\n event.stopPropagation();\n this.edit.emit({\n data: this.row().getData(),\n source: this.source,\n });\n if (!this.isExternalMode()) {\n this.grid().edit(this.row());\n }\n }\n\n onDelete(event: any) {\n event.preventDefault();\n event.stopPropagation();\n if (this.isExternalMode()) {\n this.delete.emit({\n data: this.row().getData(),\n source: this.source(),\n });\n } else {\n this.grid().delete(this.row(), this.deleteConfirm());\n }\n }\n}\n","@if (!row().pending()) { @if (isActionEdit() && canEditFunction()(row().getData())) {\n<a\n href=\"#\"\n [id]=\"'row-' + row().index + '_action-edit-button'\"\n class=\"ng2-smart-action ng2-smart-action-edit-edit\"\n [innerHTML]=\"editRowButtonContent()\"\n (click)=\"onEdit($event)\"></a>\n} @if (isActionDelete() && canDeleteFunction()(row().getData())) {\n<a\n href=\"#\"\n [id]=\"'row-' + row().index + '_action-delete-button'\"\n class=\"ng2-smart-action ng2-smart-action-delete-delete\"\n [innerHTML]=\"deleteRowButtonContent()\"\n (click)=\"onDelete($event)\"></a>\n} } @else {\n<div style=\"display: flex\">\n @if (isActionEdit()) {\n <svg\n role=\"none\"\n (click)=\"$event.stopPropagation()\"\n style=\"height: 2rem; width: 2rem\"\n version=\"1.1\"\n id=\"L9\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n x=\"0px\"\n y=\"0px\"\n viewBox=\"0 0 100 100\"\n enable-background=\"new 0 0 0 0\"\n xml:space=\"preserve\">\n <path\n fill=\"#e9e9e9\"\n d=\"M73,50c0-12.7-10.3-23-23-23S27,37.3,27,50 M30.9,50c0-10.5,8.5-19.1,19.1-19.1S69.1,39.5,69.1,50\">\n <animateTransform\n attributeName=\"transform\"\n attributeType=\"XML\"\n type=\"rotate\"\n dur=\"1s\"\n from=\"0 50 50\"\n to=\"360 50 50\"\n repeatCount=\"indefinite\" />\n </path>\n </svg>\n } @if (isActionDelete()) {\n <svg\n role=\"none\"\n (click)=\"$event.stopPropagation()\"\n style=\"height: 2rem; width: 2rem\"\n version=\"1.1\"\n id=\"L9\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n x=\"0px\"\n y=\"0px\"\n viewBox=\"0 0 100 100\"\n enable-background=\"new 0 0 0 0\"\n xml:space=\"preserve\">\n <path\n fill=\"#e9e9e9\"\n d=\"M73,50c0-12.7-10.3-23-23-23S27,37.3,27,50 M30.9,50c0-10.5,8.5-19.1,19.1-19.1S69.1,39.5,69.1,50\">\n <animateTransform\n attributeName=\"transform\"\n attributeType=\"XML\"\n type=\"rotate\"\n dur=\"1s\"\n from=\"0 50 50\"\n to=\"360 50 50\"\n repeatCount=\"indefinite\" />\n </path>\n </svg>\n }\n</div>\n}\n","import { Component, computed, EventEmitter, input, output, OutputEmitterRef } from '@angular/core';\n\nimport { NgTemplateOutlet } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { DataSource } from '../../lib/data-source/data-source';\nimport { Grid } from '../../lib/grid';\nimport { CellComponent } from '../cell/cell.component';\nimport { TbodyCreateCancelComponent } from './cells/create-cancel.component';\nimport { TbodyCustomComponent } from './cells/custom.component';\nimport { TbodyEditDeleteComponent } from './cells/edit-delete.component';\n\n@Component({\n selector: '[ng2-st-tbody]',\n styleUrls: ['./tbody.component.scss'],\n templateUrl: './tbody.component.html',\n standalone: true,\n imports: [\n FormsModule,\n TbodyCustomComponent,\n TbodyEditDeleteComponent,\n TbodyCreateCancelComponent,\n NgTemplateOutlet,\n CellComponent,\n ],\n})\nexport class Ng2SmartTableTbodyComponent {\n readonly grid = input.required<Grid>();\n readonly source = input.required<DataSource>();\n readonly deleteConfirm = input.required<EventEmitter<any> | OutputEmitterRef<any>>();\n readonly createConfirm = input.required<EventEmitter<any> | OutputEmitterRef<any>>();\n readonly editConfirm = input.required<EventEmitter<any> | OutputEmitterRef<any>>();\n readonly rowClassFunction = input<(row: any) => string>(() => '');\n\n readonly save = output<any>();\n readonly edit = output<any>();\n readonly editCancel = output<any>();\n readonly delete = output<any>();\n readonly custom = output<any>();\n readonly edited = output<any>();\n readonly userSelectRow = output<any>();\n readonly userClickedRow = output<any>();\n readonly multipleSelectRow = output<any>();\n\n readonly editInputClass = computed<string>(() => {\n const editOptions = this.grid().settings().edit;\n if (!editOptions) {\n return '';\n }\n return editOptions.inputClass || '';\n });\n readonly noDataMessage = computed<string>(() => {\n return this.grid().settings().noDataMessage || 'No data found';\n });\n\n protected trackByIdOrIndex(index: number, item: any): string | number {\n return item?.id || index;\n }\n}\n","@for (row of grid().dataSet.getRows(); track trackByIdOrIndex($index, row)) {\n<tr\n (click)=\"userClickedRow.emit(row)\"\n class=\"ng2-smart-row\"\n [class]=\"rowClassFunction()(row)\"\n [class.selected]=\"row.isSelected()\">\n @if (grid().isMultiSelectVisible()) {\n <td\n class=\"ng2-smart-actions ng2-smart-action-multiple-select\"\n (click)=\"$event.stopPropagation(); multipleSelectRow.emit(row)\">\n <input\n type=\"checkbox\"\n [id]=\"'row-' + row.index + '_select-checkbox'\"\n class=\"form-control\"\n [ngModel]=\"row.isSelected()\" />\n </td>\n } @if (grid().actionIsOnLeft()) {\n <ng-container [ngTemplateOutlet]=\"actions\"></ng-container>\n } @for (cell of row.visibleCells(); track cell.getId() + $index) {\n <td [class]=\"cell.getColumnClass()\">\n <ng2-smart-table-cell [cell]=\"cell\" [inputClass]=\"editInputClass()\" [isInEditing]=\"row.isInEditing()\">\n </ng2-smart-table-cell>\n </td>\n } @if (grid().actionIsOnRight()) {\n <ng-container [ngTemplateOutlet]=\"actions\"></ng-container>\n }\n</tr>\n\n<ng-template #actions>\n @if (row.isInEditing()) {\n <td class=\"ng2-smart-actions\">\n <ng2-st-tbody-create-cancel\n [grid]=\"grid()\"\n [row]=\"row\"\n [editConfirm]=\"editConfirm()\"\n [editCancel]=\"editCancel\"></ng2-st-tbody-create-cancel>\n </td>\n } @if (!row.isInEditing() && grid().isActionsVisible() ) {\n <td class=\"ng2-smart-actions\" (click)=\"$event.stopPropagation()\">\n <ng2-st-tbody-custom\n [grid]=\"grid()\"\n (custom)=\"custom.emit($event)\"\n [row]=\"row\"\n [source]=\"source()\"></ng2-st-tbody-custom>\n <ng2-st-tbody-edit-delete\n [grid]=\"grid()\"\n [deleteConfirm]=\"deleteConfirm()\"\n (edit)=\"edit.emit(row)\"\n (delete)=\"delete.emit(row)\"\n [row]=\"row\"\n [source]=\"source()\">\n </ng2-st-tbody-edit-delete>\n </td>\n }\n</ng-template>\n} @empty {\n<tr>\n <td colspan=\"50\">\n {{ noDataMessage() }}\n </td>\n</tr>\n}\n","import { Component, OnChanges, OnDestroy, OnInit, SimpleChanges } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\n\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\nimport { BaseFilterComponent } from './base-filter.component';\n\n@Component({\n selector: 'ng2-checkbox-filter',\n template: `\n <input type=\"checkbox\" [formControl]=\"inputControl\" [class]=\"inputClass()\" class=\"form-control\" />\n @if (filterActive) {\n <a href=\"#\" (click)=\"resetFilter($event)\">{{ column().getFilterConfig()?.resetText || 'reset' }}</a>\n }\n `,\n standalone: true,\n imports: [FormsModule, ReactiveFormsModule],\n})\nexport class CheckboxFilterComponent extends BaseFilterComponent implements OnInit, OnChanges, OnDestroy {\n filterActive = false;\n private trueVal: any = true;\n private falseVal: any = false;\n\n constructor() {\n super();\n }\n\n override ngOnInit() {\n const filterConfig = this.column().getFilterConfig();\n try {\n const { true: trueVal, false: falseVal } = filterConfig;\n this.trueVal = trueVal ?? true;\n this.falseVal = falseVal ?? false;\n } catch {\n // do nothing\n }\n this.changesSubscription = this.inputControl.valueChanges\n .pipe(distinctUntilChanged(), debounceTime(this.delay))\n .subscribe((checked: boolean) => {\n this.filterActive = true;\n const value = checked ? this.trueVal : this.falseVal;\n this.setFilter(value);\n });\n }\n\n override ngOnChanges({ query }: SimpleChanges) {\n if (query) {\n this.inputControl?.setValue(query.currentValue === this.trueVal, { emitEvent: false });\n }\n }\n\n resetFilter(event: Event) {\n event.preventDefault();\n event.stopPropagation();\n this.inputControl.setValue(false, { emitEvent: false });\n this.filterActive = false;\n this.setFilter(null);\n }\n}\n","import { Component } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\n\nimport { BaseFilterComponent } from './base-filter.component';\n\n@Component({\n selector: 'ng2-input-filter',\n template: `\n <input\n [class]=\"inputClass()\"\n [formControl]=\"inputControl\"\n class=\"form-control\"\n type=\"text\"\n placeholder=\"{{ column().title }}\" />\n `,\n standalone: true,\n imports: [FormsModule, ReactiveFormsModule],\n})\nexport class InputFilterComponent extends BaseFilterComponent {}\n","import { Component } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\n\nimport { BaseFilterComponent } from './base-filter.component';\n\n@Component({\n selector: 'ng2-select-filter',\n template: `\n <select [class]=\"inputClass()\" class=\"form-control\" [formControl]=\"inputControl\">\n <option value=\"\">{{ column().getFilterConfig().selectText }}</option>\n @for (option of column().getFilterConfig().list; track $index) {\n <option [value]=\"option.value\">\n {{ option.title }}\n </option>\n }\n </select>\n `,\n standalone: true,\n imports: [FormsModule, ReactiveFormsModule],\n})\nexport class SelectFilterComponent extends BaseFilterComponent {}\n","import { Component, input, output } from '@angular/core';\n\nimport { Column } from '../../lib/data-set/column';\nimport { DataSource } from '../../lib/data-source/data-source';\nimport { CheckboxFilterComponent } from './filter-types/checkbox-filter.component';\nimport { InputFilterComponent } from './filter-types/input-filter.component';\nimport { SelectFilterComponent } from './filter-types/select-filter.component';\n\n@Component({\n selector: 'ng2-build-in-table-filter',\n template: `\n @switch (column().getFilterType()) { @case ('list') {\n <ng2-select-filter\n [query]=\"query()\"\n [class]=\"inputClass()\"\n [source]=\"source()\"\n [column]=\"column()\"\n (filter)=\"filter.emit($event)\">\n </ng2-select-filter>\n } @case ('checkbox') {\n <ng2-checkbox-filter\n [query]=\"query()\"\n [source]=\"source()\"\n [class]=\"inputClass()\"\n [column]=\"column()\"\n (filter)=\"filter.emit($event)\">\n </ng2-checkbox-filter>\n } @default {\n <ng2-input-filter\n [query]=\"query()\"\n [source]=\"source()\"\n [class]=\"inputClass()\"\n [column]=\"column()\"\n (filter)=\"filter.emit($event)\">\n </ng2-input-filter>\n } }\n `,\n standalone: true,\n imports: [SelectFilterComponent, CheckboxFilterComponent, InputFilterComponent],\n})\nexport class BuildInFilterComponent {\n readonly query = input<unknown>('');\n readonly inputClass = input<string>('');\n readonly source = input.required<DataSource>();\n readonly column = input.required<Column>();\n readonly filter = output<any>();\n}\n","import {\n Component,\n ComponentRef,\n input,\n OnChanges,\n OnDestroy,\n output,\n OutputRefSubscription,\n SimpleChanges,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\n\nimport { Column } from '../../lib/data-set/column';\nimport { DataSource } from '../../lib/data-source/data-source';\nimport { BaseFilterComponent, FilterComponent } from './filter-types/base-filter.component';\n\n@Component({\n selector: 'ng2-custom-table-filter',\n template: `<ng-template #dynamicTarget></ng-template>`,\n standalone: true,\n})\nexport class CustomFilterComponent implements FilterComponent, OnChanges, OnDestroy {\n @ViewChild('dynamicTarget', { read: ViewContainerRef, static: true }) dynamicTarget?: ViewContainerRef;\n\n readonly query = input<unknown>('');\n readonly inputClass = input<string>('');\n readonly source = input.required<DataSource>();\n readonly column = input.required<Column>();\n\n readonly filter = output<any>();\n\n delay?: number | undefined;\n private filterSubscription?: OutputRefSubscription | undefined;\n\n customComponent?: ComponentRef<BaseFilterComponent>;\n\n ngOnChanges(changes: SimpleChanges) {\n if (this.customComponent) {\n if (this.customComponent?.instance && 'ngOnChanges' in this.customComponent.instance) {\n try {\n const onChanges = this.customComponent.instance.ngOnChanges as (changes: SimpleChanges) => void;\n onChanges(changes);\n } catch {\n // do nothing\n }\n }\n return;\n }\n const columnFilter = this.column().filter;\n if (columnFilter && columnFilter.type === 'custom') {\n this.customComponent = this.dynamicTarget?.createComponent(columnFilter?.component);\n // set @Inputs and @Outputs of custom component\n this.customComponent?.setInput('query', this.query());\n this.customComponent?.setInput('column', this.column());\n this.customComponent?.setInput('source', this.source());\n this.customComponent?.setInput('inputClass', this.inputClass());\n this.filterSubscription = this.customComponent?.instance.filter.subscribe((event: any) =>\n this.filter.emit(event),\n );\n }\n }\n\n ngOnDestroy() {\n if (this.customComponent) {\n this.customComponent.destroy();\n }\n if (this.filterSubscription) {\n this.filterSubscription.unsubscribe();\n }\n }\n}\n","import { Component, DestroyRef, inject, input, OnInit, signal } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { Column } from '../../lib/data-set/column';\nimport { DataSource } from '../../lib/data-source/data-source';\nimport { BuildInFilterComponent } from './build-in-filter.component';\nimport { CustomFilterComponent } from './custom-filter.component';\n\n@Component({\n selector: 'ng2-smart-table-filter',\n styleUrls: ['./filter.component.scss'],\n template: `\n @if (column().isFilterable) {\n <div class=\"ng2-smart-filter\">\n @switch (column().getFilterType()) { @case ('custom') {\n <ng2-custom-table-filter\n [query]=\"query()\"\n [column]=\"column()\"\n [source]=\"source()\"\n [inputClass]=\"inputClass()\"\n (filter)=\"onFilter($event)\">\n </ng2-custom-table-filter>\n } @default {\n <ng2-build-in-table-filter\n [query]=\"query()\"\n [column]=\"column()\"\n [source]=\"source()\"\n [inputClass]=\"inputClass()\"\n (filter)=\"onFilter($event)\">\n </ng2-build-in-table-filter>\n } }\n </div>\n }\n `,\n standalone: true,\n imports: [CustomFilterComponent, BuildInFilterComponent],\n})\nexport class FilterComponent implements OnInit {\n protected readonly query = signal('');\n readonly column = input.required<Column>();\n readonly source = input.required<DataSource>();\n readonly inputClass = input<string>('');\n private readonly destroyRef = inject(DestroyRef);\n\n ngOnInit() {\n this.source()\n .onChanged()\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(({ filters }) => {\n if (!filters.length) {\n return;\n }\n const columnFilter = filters.find((filter) => filter.field === this.column().id);\n if (!columnFilter) {\n return;\n }\n this.query.set(columnFilter.search);\n });\n }\n\n onFilter(query: any) {\n this.source().addFilter({\n field: this.column().id,\n search: query,\n filter: this.column().filterFunction,\n });\n }\n}\n","import { Component, computed, input, output } from '@angular/core';\n\nimport { DataSource } from '../../../lib/data-source/data-source';\nimport { Grid } from '../../../lib/grid';\n\n@Component({\n selector: '[ng2-st-add-button]',\n template: `\n @if (isActionAdd()) {\n <a\n href=\"#\"\n class=\"ng2-smart-action ng2-smart-action-add-add\"\n [innerHTML]=\"addNewButtonContent()\"\n (click)=\"onAdd($event)\"></a>\n }\n `,\n host: {\n class: 'ng2-smart-actions-title ng2-smart-actions-title-add',\n },\n standalone: true,\n})\nexport class AddButtonComponent {\n readonly grid = input.required<Grid>();\n readonly source = input.required<DataSource>();\n readonly create = output<any>();\n\n readonly isActionAdd = computed(() => {\n const actions = this.grid().settings().actions;\n if (!actions) {\n return false;\n }\n return !!actions.add;\n });\n readonly addNewButtonContent = computed(() => {\n const addParams = this.grid().settings()?.add;\n if (!addParams) {\n return 'Add New';\n }\n return addParams?.addButtonContent || 'Add New';\n });\n\n onAdd(event: any) {\n event.preventDefault();\n event.stopPropagation();\n\n if (this.grid().getSetting('mode') === 'external') {\n this.create.emit({\n source: this.source(),\n });\n } else {\n this.grid().createFormShown = true;\n }\n }\n}\n","import { Component, computed, input, output } from '@angular/core';\n\nimport { DataSource } from '../../../lib/data-source/data-source';\nimport { Grid } from '../../../lib/grid';\nimport { FilterComponent } from '../../filter/filter.component';\nimport { AddButtonComponent } from '../cells/add-button.component';\n\n@Component({\n selector: '[ng2-st-thead-filters-row]',\n template: `\n @if (grid().isMultiSelectVisible()) {\n <th></th>\n } @if (grid().actionIsOnLeft() && grid().isActionsVisible()) {\n <th ng2-st-add-button [source]=\"source()\" [grid]=\"grid()\" (create)=\"create.emit($event)\"></th>\n } @for (column of grid().dataSet.getVisibleColumns(); track column.id + $index) {\n <th class=\"ng2-smart-th {{ column.id }}\">\n <ng2-smart-table-filter [source]=\"source()\" [column]=\"column\" [inputClass]=\"filterInputClass()\">\n </ng2-smart-table-filter>\n </th>\n } @if (grid().actionIsOnRight() && grid().isActionsVisible()) {\n <th ng2-st-add-button [grid]=\"grid()\" [source]=\"source()\" (create)=\"create.emit($event)\"></th>\n }\n `,\n standalone: true,\n imports: [AddButtonComponent, FilterComponent],\n})\nexport class TheadFiltersRowComponent {\n readonly grid = input.required<Grid>();\n readonly source = input.required<DataSource>();\n\n readonly create = output<any>();\n\n readonly filterInputClass = computed<string>(() => {\n const filterOptions = this.grid().settings()?.filter;\n if (!filterOptions) {\n return '';\n }\n return filterOptions.inputClass || '';\n });\n}\n","import {\n Component,\n computed,\n input,\n output\n} from \"@angular/core\";\n\nimport { Grid } from \"../../../lib/grid\";\n\n@Component({\n selector: \"ng2-st-actions\",\n template: `\n <a\n href=\"#\"\n class=\"ng2-smart-action ng2-smart-action-add-create\"\n [innerHTML]=\"createButtonContent()\"\n (click)=\"$event.preventDefault(); create.emit($event)\"\n ></a>\n <a\n href=\"#\"\n class=\"ng2-smart-action ng2-smart-action-add-cancel\"\n [innerHTML]=\"cancelButtonContent()\"\n (click)=\"$event.preventDefault(); grid().createFormShown = false\"\n ></a>\n `,\n standalone: true,\n})\nexport class ActionsComponent {\n readonly grid = input.required<Grid>();\n readonly create = output<any>();\n\n readonly createButtonContent = computed(() => {\n const addOptions = this.grid().settings().add\n if (!addOptions) {\n return \"Create\"\n }\n return addOptions?.createButtonContent || \"Create\"\n });\n readonly cancelButtonContent = computed(() => {\n const addOptions = this.grid().settings().add\n if (!addOptions) {\n return \"Cancel\"\n }\n return addOptions?.cancelButtonContent || \"Cancel\"\n });\n}\n","import { Component, computed, EventEmitter, input, Input, output, OutputEmitterRef } from '@angular/core';\n\nimport { Cell } from '../../../lib/data-set/cell';\nimport { Grid } from '../../../lib/grid';\nimport { CellComponent } from '../../cell/cell.component';\nimport { ActionsComponent } from '../cells/actions.component';\n\n@Component({\n selector: '[ng2-st-thead-form-row]',\n template: `\n @if (grid().isMultiSelectVisible()) {\n <td></td>\n } @if (grid().actionIsOnLeft() && grid().isActionsVisible()) {\n <td class=\"ng2-smart-actions\">\n <ng2-st-actions [grid]=\"grid()\" (create)=\"onCreate($event)\"></ng2-st-actions>\n </td>\n } @for (cell of getVisibleCells(); track cell.getId()+ $index) {\n <td>\n <ng2-smart-table-cell\n [cell]=\"cell\"\n [inputClass]=\"addInputClass()\"\n [isInEditing]=\"grid().getNewRow().isInEditing()\">\n </ng2-smart-table-cell>\n </td>\n } @if (grid().actionIsOnRight() && grid().isActionsVisible()) {\n <td class=\"ng2-smart-actions\">\n <ng2-st-actions [grid]=\"grid()\" (create)=\"onCreate($event)\"></ng2-st-actions>\n </td>\n }\n `,\n standalone: true,\n imports: [ActionsComponent, CellComponent],\n})\nexport class TheadFormRowComponent {\n readonly grid = input.required<Grid>();\n @Input() createConfirm!: EventEmitter<any> | OutputEmitterRef<any>;\n\n readonly create = output<any>();\n addInputClass = computed<string>(() => {\n const addOptions = this.grid().settings()?.add;\n if (!addOptions) {\n return '';\n }\n return addOptions.inputClass || '';\n });\n\n onCreate(event: any) {\n event.stopPropagation();\n this.grid().create(this.grid().getNewRow(), this.createConfirm);\n }\n\n getVisibleCells(): Cell[] {\n return (this.grid().getNewRow().cells() || []).filter((cell: Cell) => !cell.getColumn().hide);\n }\n}\n","import {\n Component,\n computed,\n input\n} from \"@angular/core\";\n\nimport { Grid } from \"../../../lib/grid\";\n\n@Component({\n selector: \"[ng2-st-actions-title]\",\n template: ` <div class=\"ng2-smart-title\">{{ actionsColumnTitle() }}</div> `,\n standalone: true,\n host: {\n class: \"ng2-smart-actions\",\n },\n})\nexport class ActionsTitleComponent {\n readonly grid = input.required<Grid>();\n\n readonly actionsColumnTitle = computed(() => {\n const actions = this.grid().settings().actions;\n if (!actions) {\n return \"Actions\";\n }\n return actions.columnTitle || \"Actions\";\n });\n}\n","import { Component, input } from \"@angular/core\";\n\nimport { FormsModule } from \"@angular/forms\";\nimport { Grid } from \"../../../lib/grid\";\n@Component({\n selector: \"[ng2-st-checkbox-select-all]\",\n template: `\n <input type=\"checkbox\" [ngModel]=\"this.grid().dataSet.isAllSelected()\" />\n `,\n standalone: true,\n imports: [FormsModule],\n})\nexport class CheckboxSelectAllComponent {\n readonly grid = input.required<Grid>();\n}\n","import { Component, DestroyRef, inject, input, OnInit, signal } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { map } from 'rxjs/operators';\nimport { Column } from '../../../../lib/data-set/column';\nimport { DataSource } from '../../../../lib/data-source/data-source';\nimport { SmartTableSortDirection } from '../../../../lib/interfaces/smart-table.models';\n\n@Component({\n selector: 'ng2-smart-table-title',\n styleUrls: ['./title.component.scss'],\n template: `\n @if (column().isSortable) {\n <a href=\"#\" (click)=\"_sort($event)\" class=\"ng2-smart-sort-link sort\" [class]=\"currentSortDirection()\">\n {{ column().title }}\n </a>\n } @else {\n <span class=\"ng2-smart-sort\">{{ column().title }}</span>\n }\n `,\n standalone: true,\n})\nexport class TitleComponent implements OnInit {\n readonly source = input.required<DataSource>();\n readonly column = input.required<Column>();\n private readonly destroyRef = inject(DestroyRef);\n\n\n protected readonly currentSortDirection = signal<'' | SmartTableSortDirection>('');\n\n ngOnInit(): void {\n this.source()\n .onChanged()\n .pipe(\n map(({ sort }) => {\n if (sort.field === this.column().id) {\n return sort.direction;\n } else {\n return '';\n }\n }),\n takeUntilDestroyed(this.destroyRef),\n )\n .subscribe(this.currentSortDirection.set);\n }\n\n _sort(event: Event) {\n event.preventDefault();\n this.source().setSort({\n field: this.column().id,\n direction: this.currentSortDirection() === 'desc' ? 'asc' : 'desc',\n compare: this.column().compareFunction,\n });\n }\n}\n","import { Component, input } from '@angular/core';\n\nimport { Column } from '../../../lib/data-set/column';\nimport { DataSource } from '../../../lib/data-source/data-source';\nimport { TitleComponent } from './title/title.component';\n\n@Component({\n selector: 'ng2-st-column-title',\n template: `\n <div class=\"ng2-smart-title\">\n <ng2-smart-table-title [source]=\"source()\" [column]=\"column()\"></ng2-smart-table-title>\n </div>\n `,\n standalone: true,\n imports: [TitleComponent],\n})\nexport class ColumnTitleComponent {\n readonly source = input.required<DataSource>();\n readonly column = input.required<Column>();\n}\n","import { Component, input, output } from '@angular/core';\n\nimport { DataSource } from '../../../lib/data-source/data-source';\nimport { Grid } from '../../../lib/grid';\nimport { ActionsTitleComponent } from '../cells/actions-title.component';\nimport { CheckboxSelectAllComponent } from '../cells/checkbox-select-all.component';\nimport { ColumnTitleComponent } from '../cells/column-title.component';\n\n@Component({\n selector: '[ng2-st-thead-titles-row]',\n template: `\n @if (grid().isMultiSelectVisible()) {\n <th ng2-st-checkbox-select-all [grid]=\"grid()\" (click)=\"selectAllRows.emit()\"></th>\n } @if (grid().actionIsOnLeft() && grid().isActionsVisible()) {\n\n <th ng2-st-actions-title [grid]=\"grid()\"></th>\n } @for (column of grid().dataSet.getVisibleColumns(); track column.id + $index) {\n <th class=\"ng2-smart-th {{ column.id }}\" [class]=\"column.class\" [style.width]=\"column.width\">\n <ng2-st-column-title [source]=\"source()\" [column]=\"column\"></ng2-st-column-title>\n </th>\n } @if (grid().actionIsOnRight() && grid().isActionsVisible()) {\n <th ng2-st-actions-title [grid]=\"grid()\"></th>\n }\n `,\n standalone: true,\n imports: [CheckboxSelectAllComponent, ActionsTitleComponent, ColumnTitleComponent],\n})\nexport class TheadTitlesRowComponent {\n readonly grid = input.required<Grid>();\n readonly source = input.required<DataSource>();\n\n readonly selectAllRows = output<void>();\n}\n","import { Component, computed, EventEmitter, input, Input, output, OutputEmitterRef } from '@angular/core';\n\nimport { DataSource } from '../../lib/data-source/data-source';\nimport { Grid } from '../../lib/grid';\nimport { TheadFiltersRowComponent } from './rows/thead-filters-row.component';\nimport { TheadFormRowComponent } from './rows/thead-form-row.component';\nimport { TheadTitlesRowComponent } from './rows/thead-titles-row.component';\n\n@Component({\n selector: '[ng2-st-thead]',\n templateUrl: './thead.component.html',\n standalone: true,\n imports: [TheadTitlesRowComponent, TheadFiltersRowComponent, TheadFormRowComponent],\n})\nexport class Ng2SmartTableTheadComponent {\n readonly grid = input.required<Grid>();\n readonly source = input.required<DataSource>();\n @Input() createConfirm!: EventEmitter<any> | OutputEmitterRef<any>;\n\n readonly selectAllRows = output<void>();\n readonly create = output<any>();\n\n readonly isHideHeader = computed<boolean>(() => {\n return this.grid().settings()?.hideHeader || false;\n });\n\n readonly isHideSubHeader = computed<boolean>(() => {\n return this.grid().settings()?.hideSubHeader || false;\n });\n}\n","@if (!isHideHeader()) {\n <tr ng2-st-thead-titles-row\n class=\"ng2-smart-titles\"\n [grid]=\"grid()\"\n [source]=\"source()\"\n (selectAllRows)=\"selectAllRows.emit()\">\n </tr>\n}\n\n@if (!isHideSubHeader()) {\n <tr ng2-st-thead-filters-row\n class=\"ng2-smart-filters\"\n [grid]=\"grid()\"\n [source]=\"source()\"\n (create)=\"create.emit($event)\">\n </tr>\n}\n\n@if (grid().createFormShown) {\n <tr ng2-st-thead-form-row\n [grid]=\"grid()\"\n [createConfirm]=\"createConfirm\">\n </tr>\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n OnChanges,\n OnDestroy,\n SimpleChange,\n computed,\n input,\n output,\n} from '@angular/core';\n\nimport { PagerComponent } from './components/pager/pager.component';\nimport { Ng2SmartTableTbodyComponent } from './components/tbody/tbody.component';\nimport { Ng2SmartTableTheadComponent } from './components/thead/thead.component';\nimport { Row } from './lib/data-set/row';\nimport { DataSource } from './lib/data-source/data-source';\nimport { Grid } from './lib/grid';\nimport { getRandomId } from './lib/helpers';\nimport {\n ColumnPositionState,\n SmartTableConfirmDeleteEvent,\n SmartTableConfirmEditEvent,\n SmartTableCreateConfirm,\n SmartTableCustomEvent,\n SmartTableRowClickedEvent,\n SmartTableRowSelectEvent,\n SmartTableSettings,\n} from './lib/interfaces/smart-table.models';\n\n@Component({\n selector: 'ng2-smart-table',\n styleUrls: ['./ng2-smart-table.component.scss'],\n templateUrl: './ng2-smart-table.component.html',\n standalone: true,\n imports: [Ng2SmartTableTheadComponent, Ng2SmartTableTbodyComponent, PagerComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Ng2SmartTableComponent implements OnChanges, OnDestroy {\n readonly source = input.required<DataSource>();\n readonly settings = input.required<SmartTableSettings>();\n\n readonly multiRowSelect = output<SmartTableRowSelectEvent>();\n readonly rowClicked = output<SmartTableRowClickedEvent>();\n readonly columnsSorted = output<ColumnPositionState[]>();\n readonly delete = output<any>();\n readonly edit = output<any>();\n readonly editCancel = output<any>();\n readonly create = output<any>();\n readonly custom = output<SmartTableCustomEvent>();\n readonly deleteConfirm = output<SmartTableConfirmDeleteEvent>();\n readonly editConfirm = output<SmartTableConfirmEditEvent>();\n readonly createConfirm = output<SmartTableCreateConfirm>();\n\n protected readonly tableClass = computed<string>(() => {\n return this.settings().attr?.class || '';\n });\n protected readonly tableId = computed<string>(() => {\n return this.settings().attr?.id || getRandomId();\n });\n protected readonly isPagerDisplay = computed<boolean>(() => {\n const { pager } = this.settings();\n return pager ? pager.display : false;\n });\n protected readonly rowClassFunction = computed<(row: any) => string>(() => {\n return this.settings().rowClassFunction || (() => '');\n });\n\n grid!: Grid;\n\n ngOnChanges({ settings }: Record<string, SimpleChange>) {\n if (this.grid) {\n if (settings) {\n this.grid.setSettings(this.settings());\n }\n } else {\n this.initGrid();\n }\n }\n\n ngOnDestroy(): void {\n this.grid.detach();\n }\n\n protected multipleSelectRow(row: Row): void {\n this.grid.multipleSelectRow(row);\n this.emitUserSelectRow(row);\n }\n\n protected onSelectAllRows(): void {\n this.grid.selectAllRows(!this.grid.dataSet.isAllSelected());\n this.emitUserSelectRow(null);\n }\n\n protected onSelectRow(row: Row, state: boolean): void {\n this.grid.selectRow(row, state);\n }\n\n protected emitUserRowClicked(row: Row): void {\n this.rowClicked.emit({\n data: row ? row.getData() : null,\n source: this.source(),\n });\n }\n\n private initGrid(): void {\n this.grid = new Grid(this.source(), this.settings());\n this.grid.setColumnsSortedEmitter(this.columnsSorted);\n }\n\n private emitUserSelectRow(row: Row | null): void {\n this.multiRowSelect.emit({\n data: row ? row.getData() : null,\n isSelected: row ? row.isSelected() : false,\n source: this.source(),\n selected: this.grid.dataSet.getSelectedRowsData(),\n });\n }\n}\n","<table [id]=\"tableId()\" [class]=\"tableClass()\">\n <thead\n ng2-st-thead\n [grid]=\"grid\"\n [source]=\"source()\"\n [createConfirm]=\"createConfirm\"\n (create)=\"create.emit($event)\"\n (selectAllRows)=\"onSelectAllRows()\"\n ></thead>\n\n <tbody\n ng2-st-tbody\n [grid]=\"grid\"\n [source]=\"source()\"\n [deleteConfirm]=\"deleteConfirm\"\n [editConfirm]=\"editConfirm\"\n [createConfirm]=\"createConfirm\"\n [rowClassFunction]=\"rowClassFunction()\"\n (edit)=\"edit.emit($event)\"\n (editCancel)=\"editCancel.emit($event)\"\n (delete)=\"delete.emit($event)\"\n (custom)=\"custom.emit($event)\"\n (userClickedRow)=\"emitUserRowClicked($event)\"\n (multipleSelectRow)=\"multipleSelectRow($event)\"\n ></tbody>\n</table>\n\n@if (isPagerDisplay()) {\n<ng2-smart-table-pager [source]=\"source()\">\n</ng2-smart-table-pager>\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@den4ik92/ng2-smart-table",
3
- "version": "19.2.9",
3
+ "version": "19.3.1",
4
4
  "description": "Angular Smart Table",
5
5
  "author": "Den4ik92",
6
6
  "license": "MIT",