@den4ik92/ng2-smart-table 19.5.45 → 19.5.46

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.
@@ -513,16 +513,19 @@ class DataSource {
513
513
  }
514
514
  async appendMany(elements) {
515
515
  this.data.update((old) => [...old, ...elements]);
516
+ this.updateTotal(elements.length);
516
517
  this.emitOnChanged({ action: SmartTableOnChangedEventName.appendMany, newItems: elements });
517
518
  return Promise.resolve(true);
518
519
  }
519
520
  async add(element) {
520
521
  this.data.update((old) => [...old, element]);
522
+ this.updateTotal(1);
521
523
  this.emitOnChanged({ action: SmartTableOnChangedEventName.add, newItems: [element] });
522
524
  return Promise.resolve(true);
523
525
  }
524
526
  async remove(element) {
525
527
  this.data.update((old) => old.filter((el) => !isObjectsIdentical(el, element)));
528
+ this.updateTotal(-1);
526
529
  this.emitOnChanged({ action: SmartTableOnChangedEventName.remove, item: element }, this.data());
527
530
  return Promise.resolve(true);
528
531
  }
@@ -603,6 +606,13 @@ class DataSource {
603
606
  };
604
607
  this.onChangedSource.next(actionData);
605
608
  }
609
+ /**
610
+ * @param difference number to plus total
611
+ * @example -2 or 2
612
+ */
613
+ updateTotal(difference) {
614
+ this.pagingConf.update((old) => ({ ...old, total: old.total + difference }));
615
+ }
606
616
  }
607
617
 
608
618
  function exactMatch(value, search) {
@@ -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/create-cancel/create-cancel.component.ts","../../../projects/ng2-smart-table/src/lib/components/tbody/create-cancel/create-cancel.component.html","../../../projects/ng2-smart-table/src/lib/components/tbody/row-actions/row-actions.component.ts","../../../projects/ng2-smart-table/src/lib/components/tbody/row-actions/row-actions.component.html","../../../projects/ng2-smart-table/src/lib/components/tbody/trow/trow.component.ts","../../../projects/ng2-smart-table/src/lib/components/tbody/trow/trow.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/thead/cells/add-button.component.ts","../../../projects/ng2-smart-table/src/lib/components/thead/cells/title/title.component.ts","../../../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/mobile-filters/mobile-filters.component.ts","../../../projects/ng2-smart-table/src/lib/components/thead/mobile-filters/mobile-filters.component.html","../../../projects/ng2-smart-table/src/lib/components/thead/rows/thead-filters-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/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/lib/data-set/data-set.ts","../../../projects/ng2-smart-table/src/lib/lib/grid.ts","../../../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 { ChangeDetectionStrategy, Component, computed, input, InputSignal } from '@angular/core';\n\nimport { Cell } from '../../../lib/data-set/cell';\n\n@Component({ template: '', selector: 'ng2-editor-base-component', changeDetection: ChangeDetectionStrategy.OnPush })\nexport class BaseEditorComponent implements Editor {\n readonly cell = input.required<Cell>();\n readonly inputClass = computed<string>(() => this.cell().column.editorInputClass);\n}\n\nexport interface Editor {\n cell: InputSignal<Cell>;\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n input,\n InputSignal,\n OnChanges,\n OnDestroy,\n OnInit,\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', changeDetection: ChangeDetectionStrategy.OnPush })\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 filterEmitter = input.required<OutputEmitterRef<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.filterEmitter().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 filterEmitter: InputSignal<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 compareObjectsAsJSON<T extends Record<string, unknown>>(a: T, b: T): boolean {\n return JSON.stringify(a) === JSON.stringify(b);\n}\n\nexport function isObjectsIdentical<T extends Record<string, unknown>>(a: T, b: T): boolean {\n let compareIdKey: keyof T | null = null;\n if ('uuid' in a) {\n compareIdKey = 'uuid';\n } else if ('id' in a) {\n compareIdKey = 'id';\n }\n if (!compareIdKey) {\n return compareObjectsAsJSON(a, b);\n }\n try {\n return a[compareIdKey] === b[compareIdKey];\n } catch {\n return compareObjectsAsJSON(a, b);\n }\n}\n\nexport function CheckParentElementClassRecursive(element: HTMLElement | null, className: string): boolean {\n if (!element) return false;\n if (element.classList.contains(className)) {\n return true;\n }\n return CheckParentElementClassRecursive(element.parentElement, className);\n}\n","import { CdkDrag, CdkDragDrop, CdkDragPlaceholder, CdkDropList, moveItemInArray } from '@angular/cdk/drag-drop';\nimport { ChangeDetectionStrategy, 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 changeDetection: ChangeDetectionStrategy.OnPush,\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)': 'buttonClicked()',\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 buttonClicked() {\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 { signal, untracked } from '@angular/core';\nimport { Column } from './column';\nimport { Row } from './row';\n\nexport class Cell {\n readonly newValue = signal<any>(null);\n readonly columnClass: string = '';\n readonly styles: Partial<CSSStyleDeclaration> = '';\n readonly title: string = '';\n readonly id: string = '';\n\n constructor(\n protected value: any,\n public row: Row,\n public column: Column,\n ) {\n this.columnClass = column.class;\n untracked(() => {\n this.newValue.set(value);\n });\n this.styles = column.styles;\n this.title = column.title;\n this.id = column.id;\n }\n\n getValue() {\n const prepare = this.column.valuePrepareFunction;\n return !prepare ? this.value : prepare.call(null, this.value, this.row.rowData(), this);\n }\n\n getNotPrepareValue() {\n return this.value;\n }\n\n setNewValue(value: any) {\n this.newValue.set(value);\n }\n\n isEditable(): boolean {\n if (this.row.index === -1) {\n return this.column.isAddable;\n } else {\n return this.column.isEditable;\n }\n }\n}\n","import {\n SmartTableCompareFunction,\n SmartTableEditorAndFilter,\n SmartTableFilterFunction,\n SmartTableValuePrepareFunction,\n} from '../interfaces/smart-table.models';\nimport { SmartTableColumnSettings, SmartTableColumnSettingsTypes } 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 styles: Partial<CSSStyleDeclaration>;\n public readonly editorInputClass: string = '';\n\n hide = false;\n isSortable = false;\n isEditable = true;\n isAddable = true;\n isFilterable = false;\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(\n public id: string,\n private settings: SmartTableColumnSettings,\n protected dataSet: DataSet,\n ) {\n this.editorInputClass = dataSet.editorInputClass;\n this.title = settings.title;\n this.class = settings.class || '';\n this.styles = settings.style || '';\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 = !!settings['filter'];\n this.isSortable = settings.sort ?? false;\n this.isEditable = settings.editable ?? true;\n this.isAddable = settings.addable ?? true;\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';\n\nexport class Row {\n readonly pending = signal(false);\n readonly isSelected = signal(false);\n readonly isInEditing = signal(false);\n readonly cells = computed<Cell[]>(() =>\n this.columns().map((column: Column) => this.createCell(column, this.rowData())),\n );\n readonly rowData = signal<any>({});\n readonly columns = signal<Column[]>([]);\n public readonly visibleCells = computed<Cell[]>(() => this.cells().filter((cell: Cell) => !cell.column.hide));\n\n constructor(\n public index: number,\n protected rowDataObj: any,\n protected columnsList: Column[],\n ) {\n this.rowData.set(rowDataObj);\n this.columns.set(columnsList);\n }\n\n getNewData() {\n const values = Object.assign({}, this.rowData());\n this.cells().forEach((cell) => (values[cell.column.id] = cell.newValue()));\n return values;\n }\n\n setData<T = any>(rowData: T): void {\n this.rowData.set(rowData);\n }\n\n createCell(column: Column, rowData: any): Cell {\n const value = typeof rowData[column.id] === 'undefined' ? '' : rowData[column.id];\n return new Cell(value, this, column);\n }\n}\n","import { InputSignal } from '@angular/core';\nimport { 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 type BaseDataType = Record<string, any>;\n\nexport interface ViewCell<V = any, R extends BaseDataType = BaseDataType> {\n value: InputSignal<V>;\n rowData: InputSignal<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 BaseDataType = 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 /**\n * @description Breakpoint for mobile table width in pixels if table width is less than this value, table will be displayed in mobile mode\n * @example 768\n */\n tableWidthMobileBreakpoint?: number;\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?: (rowData: T) => string;\n}\n\nexport interface SmartTableAction<T extends BaseDataType = any> {\n columnTitle?: string;\n add?: boolean;\n edit?: boolean;\n delete?: boolean;\n custom?: SmartTableCustomAction<T>[];\n}\n\nexport interface SmartTableCustomAction<T extends BaseDataType = 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 BaseDataType = any> =\n | SmartTableTextHtmlColumn<T>\n | SmartTableCustomColumn<T>;\n\nexport type SmartTableCompareFunction = (direction: number, a: any, b: any) => number;\n\nexport type SmartTableValuePrepareFunction<T extends BaseDataType = 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 BaseDataType> {\n key: keyof T;\n title: string;\n style?: Partial<CSSStyleDeclaration>;\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 BaseDataType> extends SmartTableDefaultColumn<T> {\n type: 'text' | 'html';\n}\n\ninterface SmartTableCustomColumn<T extends BaseDataType> 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 nextButtonText?: string;\n previewButtonText?: string;\n showTotal?: 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 type: SmartTableEditorAndFilterTypes;\n field: string;\n search: string;\n filter?: SmartTableFilterFunction;\n}\n\nexport type SmartTableSortDirection = 'asc' | 'desc';\n\nexport interface SmartTableSortItem {\n field: string;\n title: string;\n direction: SmartTableSortDirection;\n compare?: SmartTableCompareFunction;\n}\n\ninterface SmartTableDefaultEvent<T extends BaseDataType = any> {\n confirm: Deferred<T>;\n data: T;\n source: DataSource<T>;\n}\n\nexport type SmartTableConfirmDeleteEvent<T extends BaseDataType = any> = SmartTableDefaultEvent<T>;\n\nexport type SmartTableRowClickedEvent<T extends BaseDataType = any> = Omit<SmartTableDefaultEvent<T>, 'confirm'>;\n\nexport interface SmartTableCustomEvent<T extends BaseDataType = any>\n extends Omit<SmartTableDefaultEvent<T>, 'confirm'> {\n action: string;\n}\n\nexport interface SmartTableRowSelectEvent<T extends BaseDataType = any>\n extends Omit<SmartTableDefaultEvent<T>, 'confirm'> {\n isSelected: boolean;\n selected: T[];\n}\n\nexport interface SmartTableConfirmEditEvent<T extends BaseDataType = any, N = T> extends SmartTableDefaultEvent<T> {\n newData: N;\n}\n\nexport interface SmartTableCreateConfirm<T extends BaseDataType = any> extends Omit<SmartTableDefaultEvent<T>, 'data'> {\n newData: T;\n}\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 BaseDataType = any> {\n elements: T[];\n filters: SmartTableFilterItem[];\n paging: SmartTablePagerSettings;\n sort: SmartTableSortItem;\n}\n\ninterface SmartTableOnChangedEventAll {\n action: Exclude<SmartTableOnChangedEventType, 'remove' | 'update' | 'append' | 'prepend' | 'appendMany' | 'add'>;\n}\n\ninterface SmartTableAddEvent<T extends BaseDataType = any> {\n action:\n | SmartTableOnChangedEventName.add\n | SmartTableOnChangedEventName.prepend\n | SmartTableOnChangedEventName.appendMany;\n newItems: T[];\n}\n\ninterface SmartTableUpdateEvent<T extends BaseDataType = any> {\n action: SmartTableOnChangedEventName.update;\n newItem: T;\n oldItem: T;\n}\ninterface SmartTableRemoveEvent<T extends BaseDataType = any> {\n action: SmartTableOnChangedEventName.remove;\n item: T;\n}\n\nexport type SmartTableOnChangedEventToEmit<T extends BaseDataType = any> =\n | SmartTableAddEvent<T>\n | SmartTableUpdateEvent<T>\n | SmartTableRemoveEvent<T>\n | SmartTableOnChangedEventAll;\n\nexport type SmartTableOnChangedEvent<T extends BaseDataType = any> = SmartTableOnChangedEventToEmit<T> &\n SmartTableOnChangedEventBase<T>;\n\nexport interface SmartTableConfirmEvent<T extends BaseDataType = any> {\n confirm: { resolve: (data?: T) => void; reject: () => void };\n data: T;\n source: DataSource<T>;\n}\n\nexport interface SmartTableBaseEvent<T extends BaseDataType = any> {\n data: T | null;\n source: DataSource<T>;\n}\n\nexport type SmartTableCreateEvent<T extends BaseDataType = any> = SmartTableBaseEvent<T>;\nexport type SmartTableEditEvent<T extends BaseDataType = any> = SmartTableBaseEvent<T>;\nexport type SmartTableDeleteEvent<T extends BaseDataType = any> = SmartTableConfirmEvent<T>;\nexport type SmartTableEditCancelEvent<T extends BaseDataType = any> = SmartTableBaseEvent<T>;\n","import { computed, signal } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\nimport { isObjectsIdentical } from '../helpers';\nimport {\n BaseDataType,\n SmartTableFilterItem,\n SmartTableOnChangedEvent,\n SmartTableOnChangedEventName,\n SmartTableOnChangedEventToEmit,\n SmartTablePagerSettings,\n SmartTableSortItem,\n} from '../interfaces/smart-table.models';\n\nexport abstract class DataSource<T extends BaseDataType = any> {\n protected readonly onChangedSource = new Subject<SmartTableOnChangedEvent>();\n protected readonly sortConf = signal<SmartTableSortItem>({ field: '', title: '', direction: 'desc' });\n protected readonly filters = signal<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\n abstract count(): number;\n\n readonly getSort = computed<SmartTableSortItem>(() => this.sortConf());\n readonly getFilters = computed<SmartTableFilterItem[]>(() => this.filters());\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) => !isObjectsIdentical(el, element)));\n this.emitOnChanged({ action: SmartTableOnChangedEventName.remove, item: element }, this.data());\n return Promise.resolve(true);\n }\n\n async update(oldItem: T, newItem: T): Promise<true> {\n this.data.update((old) =>\n old.map((el) => {\n if (isObjectsIdentical(el, oldItem)) {\n return newItem;\n }\n return el;\n }),\n );\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.set(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 const newSearchString =\n typeof newFilter.search === 'undefined' || newFilter.search === null ? '' : `${newFilter.search}`;\n if (foundIndex === -1) {\n if (newSearchString?.length) {\n this.filters.set([...this.filters(), newFilter]);\n }\n } else {\n const filtersTemp = this.filters().slice(0);\n if (newSearchString?.length) {\n filtersTemp[foundIndex].search = newFilter.search;\n } else {\n filtersTemp.splice(foundIndex, 1);\n }\n this.filters.set([...filtersTemp]);\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.set([...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 this.onChangedSource.next(actionData);\n }\n}\n","import { BaseDataType, SmartTableFilterFunction, SmartTableFilterItem } from '../../interfaces/smart-table.models';\n\nfunction exactMatch(value: any, search: string): boolean {\n return value.toString().toLowerCase() === search.toString().toLowerCase();\n}\n\nfunction includeMatch(value: any, search: string): boolean {\n return value.toString().toLowerCase().includes(search.toString().toLowerCase());\n}\n\nexport function isElementSatisfied<T extends BaseDataType>(element: T, filters: SmartTableFilterItem[]) {\n return filters.every((filter: SmartTableFilterItem) => {\n const search = `${filter.search}`;\n if (!search?.length) {\n return true;\n }\n const filterFunction: SmartTableFilterFunction =\n filter.filter || (filter.type === 'list' ? exactMatch : includeMatch);\n try {\n const value = element[filter.field];\n return filterFunction(value, 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 function localSort<T extends Record<string, any>>(\n data: T[],\n field: string,\n direction: string,\n customCompare?: SmartTableCompareFunction,\n): T[] {\n const dir: number = direction === 'asc' ? 1 : -1;\n const compare = customCompare ? customCompare : compareValues;\n\n return data.sort((a, b) => {\n try {\n return compare(dir, a[field], b[field]);\n } catch {\n return 0;\n }\n });\n}\n","import { computed } from '@angular/core';\nimport { SmartTableOnChangedEventName, SmartTableOnChangedEventToEmit } from '../../interfaces/smart-table.models';\nimport { DataSource } from '../data-source';\nimport { isElementSatisfied } from './local.filter';\nimport { paginateList } from './local.pager';\nimport { localSort } from './local.sorter';\n\nexport class LocalDataSource<T extends Record<string, any> = any> extends DataSource<T> {\n private readonly filteredAndSorted = computed<T[]>(() => {\n let list = this.data().slice(0);\n const filters = this.filters();\n\n if (filters.length) {\n list = list.filter((element) => isElementSatisfied(element, filters));\n }\n if (this.sortConf()) {\n const { field, direction, compare } = this.sortConf();\n list = localSort<T>(list, field, direction, compare);\n }\n return list;\n });\n\n readonly paginatedList = computed<T[]>(() => {\n return this.paginate(this.filteredAndSorted());\n });\n\n readonly count = computed(() => this.filteredAndSorted().length);\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.set([]);\n this.pagingConf.update((old) => ({ ...old, page: 1 }));\n } else {\n this.setFilters([], false);\n if (this.pagingConf().display) {\n this.setPage(1);\n }\n }\n }\n\n override async emitOnChanged(event: SmartTableOnChangedEventToEmit, newElements?: T[]) {\n super.emitOnChanged(event, this.paginatedList());\n if (this.pagingConf().display && this.isPageOutOfBounce()) {\n this.setPage(this.pagingConf().page - 1);\n }\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, take } 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 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(\n switchMap((params) => this.requestFunction(params)),\n take(1),\n )\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 { ChangeDetectionStrategy, 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 changeDetection: ChangeDetectionStrategy.OnPush,\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 isShowTotal = computed(() => !!this.pagingConf().showTotal);\n protected readonly count = computed(() => this.source().count());\n protected readonly nextButtonText = computed(() => this.pagingConf().nextButtonText);\n protected readonly prevButtonText = computed(() => this.pagingConf().nextButtonText);\n protected readonly lastPage = computed(() => Math.ceil(this.count() / this.currentPerPage()) || 1);\n protected readonly pages = computed(() => this.getPages(this.currentPage(), this.lastPage(), this.count()));\n\n paginate(page: number) {\n this.source().setPage(page);\n }\n\n next() {\n if (this.currentPage() >= this.lastPage() || !this.count()) {\n return;\n }\n this.paginate(this.currentPage() + 1);\n }\n\n prev() {\n if (this.currentPage() <= 1 || !this.count()) {\n return;\n }\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, total: number) {\n if (!total) {\n return [1];\n }\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","<div class=\"ng2-smart-table-pagination__wrap\">\n <div>\n @if (isShowTotal()) {\n Total: {{ count() }}\n }\n </div>\n <nav class=\"ng2-smart-table-pagination__nav\">\n <ul class=\"ng2-smart-table-pagination__list\">\n <li class=\"ng2-smart-table-pagination__list-item\" [class.disabled]=\"currentPage() <= 1\">\n <a (click)=\"prev()\" aria-label=\"Prev\">\n @if (prevButtonText(); as text) {\n {{ text }}\n } @else {\n &laquo; Previous\n }\n </a>\n </li>\n @for (page of pages(); track $index) {\n <li class=\"ng2-smart-table-pagination__list-item\" [class.active]=\"currentPage() === page\">\n @if (isString(page) || currentPage() === page) {\n <span>\n {{ page }}\n </span>\n } @else {\n <a (click)=\"paginate(page)\">{{ page }}</a>\n }\n </li>\n }\n <li class=\"ng2-smart-table-pagination__list-item\" [class.disabled]=\"currentPage() >= lastPage()\">\n <a (click)=\"next()\" aria-label=\"Next\">\n @if (nextButtonText(); as text) {\n {{ text }}\n } @else {\n Next &raquo;\n }\n </a>\n </li>\n </ul>\n </nav>\n <div>\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</div>\n","import { ChangeDetectionStrategy, 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().id\"\n [disabled]=\"!cell().isEditable()\"\n (change)=\"onChange($event)\"\n [checked]=\"cell().getValue() === trueVal()\" />\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CheckboxEditorComponent extends BaseEditorComponent {\n readonly trueVal = computed(() => {\n return this.cell().column.getEditorConfig()?.true || true;\n });\n readonly falseVal = computed(() => {\n return this.cell().column.getEditorConfig()?.false || false;\n });\n\n constructor() {\n super();\n }\n\n onChange(event: any) {\n this.cell().setNewValue(event.target.checked ? this.trueVal() : this.falseVal());\n }\n}\n","import { ChangeDetectionStrategy, 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 type=\"text\"\n [class]=\"inputClass()\"\n class=\"form-control\"\n [ngModel]=\"cell().newValue()\"\n (ngModelChange)=\"cell().setNewValue($event)\"\n [name]=\"cell().id\"\n [placeholder]=\"cell().title\"\n [disabled]=\"!cell().isEditable()\" />\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [FormsModule],\n})\nexport class InputEditorComponent extends BaseEditorComponent {}\n","import { ChangeDetectionStrategy, 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 (ngModelChange)=\"cell().setNewValue($event)\"\n [name]=\"cell().id\"\n [disabled]=\"!cell().isEditable()\">\n @for (option of cell().column.getEditorConfig()?.list; track $index) {\n <option [value]=\"option.value\" [selected]=\"option.value === cell().getValue()\">\n {{ option.title }}\n </option>\n }\n </select>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [FormsModule],\n})\nexport class SelectEditorComponent extends BaseEditorComponent {}\n","import { ChangeDetectionStrategy, 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 (ngModelChange)=\"cell().setNewValue($event)\"\n [name]=\"cell().id\"\n [disabled]=\"!cell().isEditable()\"\n [placeholder]=\"cell().title\">\n </textarea>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [FormsModule],\n})\nexport class TextareaEditorComponent extends BaseEditorComponent {}\n","import { ChangeDetectionStrategy, 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 changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BuildInEditorComponent extends BaseEditorComponent {\n protected readonly editorType = computed<SmartTableEditorAndFilterTypes>(() => {\n const editor = this.cell().column.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 [cell]=\"cell()\"> </ng2-select-editor>\n }\n @case ('textarea') {\n <ng2-textarea-editor [cell]=\"cell()\"> </ng2-textarea-editor>\n }\n @case ('checkbox') {\n <ng2-checkbox-editor [cell]=\"cell()\"> </ng2-checkbox-editor>\n }\n @default {\n <ng2-input-editor [cell]=\"cell()\"> </ng2-input-editor>\n }\n }\n</div>\n","import {\n ChangeDetectionStrategy,\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 changeDetection: ChangeDetectionStrategy.OnPush,\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().column.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 }\n }\n\n ngOnDestroy() {\n if (this.customComponent) {\n this.customComponent.destroy();\n }\n }\n}\n","import { ChangeDetectionStrategy, 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()) {\n @case ('custom') {\n <ng2-table-cell-custom-editor [cell]=\"cell()\"> </ng2-table-cell-custom-editor>\n }\n @default {\n <ng2-table-cell-build-in-editor [cell]=\"cell()\"> </ng2-table-cell-build-in-editor>\n }\n }\n </div>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\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().column.editor;\n if (editor) {\n return editor.type;\n }\n return 'text';\n }\n}\n","import { ChangeDetectionStrategy, 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().column.renderComponent;\n inputs: { rowData: cell().row.rowData(), value: cell().getValue() }\n \"></ng-template>`,\n imports: [NgComponentOutlet],\n changeDetection: ChangeDetectionStrategy.OnPush,\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 template: `\n <div>\n @switch (cell().column.type) {\n @case ('custom') {\n <ng2-custom-view-component [cell]=\"cell()\"></ng2-custom-view-component>\n }\n @case ('html') {\n <div [innerHTML]=\"cell().getValue()\"></div>\n }\n @default {\n <div>{{ cell().getValue() }}</div>\n }\n }\n </div>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CustomViewComponent],\n})\nexport class ViewCellComponent {\n readonly cell = input.required<Cell>();\n}\n","import { ChangeDetectionStrategy, 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 [cell]=\"cell()\"> </ng2-table-cell-edit-mode>\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [ViewCellComponent, EditCellComponent],\n})\nexport class CellComponent {\n readonly cell = input.required<Cell>();\n\n readonly isInEditing = input<boolean>(false);\n}\n","import { ChangeDetectionStrategy, Component, computed, input, output } from '@angular/core';\n\nimport { NgTemplateOutlet } from '@angular/common';\nimport { Grid } from '../../../lib/grid';\n\n@Component({\n selector: 'ng2-st-tbody-create-cancel',\n templateUrl: './create-cancel.component.html',\n imports: [NgTemplateOutlet],\n styles: `\n .buttons-wrap {\n display: flex;\n gap: 0.5rem;\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TbodyCreateCancelComponent {\n readonly grid = input.required<Grid>();\n readonly rowIndex = input<number>();\n readonly rowPending = input<boolean>(false);\n\n readonly save = output<unknown>();\n readonly cancelEdit = output<unknown>();\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 || 'Save' : 'Save';\n });\n}\n","<div class=\"buttons-wrap\">\n @if (!rowPending()) {\n <a\n href=\"#\"\n [id]=\"'row-' + rowIndex() + '_editing-confirm-button'\"\n class=\"ng2-smart-action ng2-smart-action-edit-save\"\n [innerHTML]=\"saveButtonContent()\"\n (click)=\"$event.preventDefault(); save.emit($event)\"></a>\n <a\n href=\"#\"\n [id]=\"'row-' + rowIndex() + '_editing-cancel-button'\"\n class=\"ng2-smart-action ng2-smart-action-edit-cancel\"\n [innerHTML]=\"cancelButtonContent()\"\n (click)=\"$event.preventDefault(); cancelEdit.emit($event)\"></a>\n } @else {\n <a class=\"ng2-smart-action ng2-smart-action-edit-save\">\n <ng-container [ngTemplateOutlet]=\"spinner\"></ng-container>\n </a>\n <a class=\"ng2-smart-action ng2-smart-action-edit-save\">\n <ng-container [ngTemplateOutlet]=\"spinner\"></ng-container>\n </a>\n }\n</div>\n\n<ng-template #spinner>\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</ng-template>\n","import { NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, input, output } from '@angular/core';\nimport { Row } from '../../../lib/data-set/row';\nimport { Grid } from '../../../lib/grid';\nimport { BaseDataType, SmartTableCustomAction } from '../../../lib/interfaces/smart-table.models';\n\n@Component({\n selector: 'ng2-row-actions',\n imports: [NgTemplateOutlet],\n templateUrl: './row-actions.component.html',\n styleUrl: './row-actions.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class RowActionsComponent<T extends BaseDataType = any> {\n readonly grid = input.required<Grid>();\n readonly row = input.required<Row>();\n\n readonly editEmitter = output<void>();\n readonly deleteEmitter = output<void>();\n readonly customActionEmitter = output<string>();\n\n readonly customActions = computed<SmartTableCustomAction[]>(() => {\n const { actions } = this.grid().settings();\n if (!actions || !actions.custom) {\n return [];\n }\n const list = actions.custom.filter((action) =>\n !action.hasPermissionFunction ? true : action.hasPermissionFunction(this.row().rowData()),\n );\n return list;\n });\n\n readonly isActionEditActive = computed<boolean>(() => {\n const actions = this.grid().settings().actions;\n const editConfig = this.grid().settings().edit;\n if (!actions || !actions.edit) {\n return false;\n }\n if (!editConfig || !editConfig.hasPermissionFunction) {\n return true;\n }\n return editConfig.hasPermissionFunction(this.row().rowData());\n });\n\n readonly isActionDeleteActive = computed<boolean>(() => {\n const actions = this.grid().settings().actions;\n const deleteConfig = this.grid().settings().delete;\n if (!actions || !actions.delete) {\n return false;\n }\n if (!deleteConfig || !deleteConfig.hasPermissionFunction) {\n return true;\n }\n return deleteConfig.hasPermissionFunction(this.row().rowData());\n });\n readonly isExternalMode = computed<boolean>(() => {\n return this.grid().settings().mode === 'external';\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 readonly allActionsCountArray = computed<string[]>(() => {\n let length = this.customActions().length;\n length += this.isActionDeleteActive() ? 1 : 0;\n length += this.isActionEditActive() ? 1 : 0;\n return new Array(length).fill('');\n });\n\n onCustom(action: SmartTableCustomAction<T>) {\n this.customActionEmitter.emit(action.name);\n }\n\n onEdit(event: Event) {\n event.preventDefault();\n event.stopPropagation();\n this.editEmitter.emit();\n }\n\n onDelete(event: Event) {\n event.preventDefault();\n event.stopPropagation();\n this.deleteEmitter.emit();\n }\n}\n","@if (!row().pending()) {\n @if (isActionEditActive()) {\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)=\"$event.stopPropagation(); $event.preventDefault(); onEdit($event)\"></a>\n }\n @if (isActionDeleteActive()) {\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)=\"$event.stopPropagation(); $event.preventDefault(); onDelete($event)\"></a>\n }\n @for (action of customActions(); track action.name) {\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} @else {\n @for (item of allActionsCountArray(); track $index) {\n <ng-container [ngTemplateOutlet]=\"spinner\"></ng-container>\n }\n}\n\n<ng-template #spinner>\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</ng-template>\n","import { NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, input, output } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { Row } from '../../../lib/data-set/row';\nimport { DataSource } from '../../../lib/data-source/data-source';\nimport { Grid } from '../../../lib/grid';\nimport { CellComponent } from '../../cell/cell.component';\nimport { TbodyCreateCancelComponent } from '../create-cancel/create-cancel.component';\nimport { RowActionsComponent } from '../row-actions/row-actions.component';\n\n@Component({\n selector: '[ng2-st-trow]',\n imports: [NgTemplateOutlet, FormsModule, CellComponent, RowActionsComponent, TbodyCreateCancelComponent],\n templateUrl: './trow.component.html',\n styleUrl: './trow.component.scss',\n host: {\n '[class.ng2-smart-card]': 'isMobileView()',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TrowComponent {\n readonly grid = input.required<Grid>();\n readonly source = input.required<DataSource>();\n readonly row = input.required<Row>();\n\n readonly isMobileView = input<boolean>(false);\n readonly isCreateRow = input<boolean>(false);\n\n readonly edit = output<void>();\n readonly editCancel = output<void>();\n readonly editConfirmed = output<void>();\n readonly deleteEmitter = output<void>();\n readonly createConfirmed = output<void>();\n readonly customActionEmitter = output<string>();\n readonly userClickedRow = output<Row>();\n readonly multipleSelectRow = output<Row>();\n\n onSave() {\n if (this.isCreateRow()) {\n this.createConfirmed.emit();\n } else {\n this.editConfirmed.emit();\n }\n }\n\n onCancelEdit() {\n if (this.isCreateRow()) {\n this.grid().createFormShown.set(false);\n return;\n }\n this.editCancel.emit();\n this.row()?.isInEditing.set(false);\n }\n}\n","@if (isMobileView()) {\n <td colspan=\"50\">\n <div class=\"ng2-smart-card-header\">\n <ng-container [ngTemplateOutlet]=\"multiselectCheckbox\"></ng-container>\n <div class=\"ng2-smart-card-actions\">\n <ng-container [ngTemplateOutlet]=\"actions\"></ng-container>\n </div>\n </div>\n <div class=\"ng2-smart-card-content\">\n @for (cell of row().visibleCells(); track cell.id + $index) {\n <div class=\"ng2-smart-card-field\">\n <div class=\"ng2-smart-card-field-label\">{{ cell.title }}</div>\n <div class=\"ng2-smart-card-field-value\">\n <ng2-smart-table-cell [cell]=\"cell\" [isInEditing]=\"!!row().isInEditing()\"> </ng2-smart-table-cell>\n </div>\n </div>\n }\n </div>\n </td>\n} @else {\n <ng-container [ngTemplateOutlet]=\"multiselectCheckbox\"></ng-container>\n @if (grid().actionIsOnLeft()) {\n <ng-container [ngTemplateOutlet]=\"actions\"></ng-container>\n }\n @for (cell of row().visibleCells(); track cell.id + $index) {\n <td [class]=\"cell.columnClass\" [style]=\"cell.styles\">\n <ng2-smart-table-cell [cell]=\"cell\" [isInEditing]=\"!!row().isInEditing()\"> </ng2-smart-table-cell>\n </td>\n }\n @if (grid().actionIsOnRight()) {\n <ng-container [ngTemplateOutlet]=\"actions\"></ng-container>\n }\n}\n\n<ng-template #actions>\n @if (isCreateRow() || row().isInEditing()) {\n <td class=\"ng2-smart-actions\">\n <ng2-st-tbody-create-cancel\n [grid]=\"grid()\"\n [rowIndex]=\"row().index || 0\"\n (cancelEdit)=\"onCancelEdit()\"\n (save)=\"onSave()\"\n [rowPending]=\"!!row().pending()\"></ng2-st-tbody-create-cancel>\n </td>\n } @else {\n @if (grid().isActionsVisible()) {\n <td class=\"ng2-smart-actions\" (click)=\"$event.stopPropagation()\">\n <ng2-row-actions\n [grid]=\"grid()\"\n [row]=\"row()\"\n (customActionEmitter)=\"customActionEmitter.emit($event)\"\n (editEmitter)=\"edit.emit()\"\n (deleteEmitter)=\"deleteEmitter.emit()\"></ng2-row-actions>\n </td>\n }\n }\n</ng-template>\n\n<ng-template #multiselectCheckbox>\n @if (grid().isMultiSelectVisible() && !isCreateRow()) {\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 }\n</ng-template>\n","import { ChangeDetectionStrategy, Component, computed, input, output } from '@angular/core';\n\nimport { FormsModule } from '@angular/forms';\nimport { Row } from '../../lib/data-set/row';\nimport { DataSource } from '../../lib/data-source/data-source';\nimport { Grid } from '../../lib/grid';\nimport { BaseDataType, SmartTableCustomEvent } from '../../lib/interfaces/smart-table.models';\nimport { TrowComponent } from './trow/trow.component';\n\n@Component({\n selector: '[ng2-st-tbody]',\n styleUrls: ['./tbody.component.scss'],\n templateUrl: './tbody.component.html',\n imports: [FormsModule, TrowComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Ng2SmartTableTbodyComponent<T extends BaseDataType = any> {\n readonly grid = input.required<Grid>();\n readonly source = input.required<DataSource>();\n\n readonly rowClassFunction = input<(rowData: T) => string>(() => '');\n readonly isMobileView = input<boolean>(false);\n\n readonly edit = output<Row>();\n readonly editConfirmed = output<Row>();\n readonly editCancel = output<Row>();\n readonly createConfirmed = output<void>();\n readonly deleteEmitter = output<Row>();\n readonly customActionEmitter = output<SmartTableCustomEvent<T>>();\n readonly userClickedRow = output<Row>();\n readonly multipleSelectRow = output<Row>();\n\n rowClicked(row: Row) {\n if (row.isInEditing()) {\n return;\n }\n this.userClickedRow.emit(row);\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 customActionEmitted(actionName: string, row: Row) {\n this.customActionEmitter.emit({\n source: this.source(),\n data: row.rowData(),\n action: actionName,\n });\n }\n\n protected trackByIdOrIndex(index: number, item: any): string | number {\n return item?.id || index;\n }\n}\n","@if (grid().createFormShown()) {\n <tr\n ng2-st-trow\n class=\"ng2-smart-row\"\n [grid]=\"grid()\"\n [row]=\"grid().getNewRow()\"\n [isCreateRow]=\"true\"\n [source]=\"source()\"\n [isMobileView]=\"isMobileView()\"\n (createConfirmed)=\"createConfirmed.emit()\"></tr>\n}\n@for (row of grid().dataSet.getRows(); track trackByIdOrIndex($index, row)) {\n <tr\n ng2-st-trow\n class=\"ng2-smart-row\"\n [grid]=\"grid()\"\n [source]=\"source()\"\n [row]=\"row\"\n [class]=\"rowClassFunction()(row.rowData())\"\n [isMobileView]=\"isMobileView()\"\n [class.selected]=\"row.isSelected()\"\n (click)=\"rowClicked(row)\"\n (edit)=\"edit.emit(row)\"\n (editConfirmed)=\"editConfirmed.emit(row)\"\n (editCancel)=\"editCancel.emit(row)\"\n (deleteEmitter)=\"deleteEmitter.emit(row)\"\n (customActionEmitter)=\"customActionEmitted($event, row)\"\n (multipleSelectRow)=\"multipleSelectRow.emit($event)\"></tr>\n} @empty {\n <tr>\n <td colspan=\"50\">\n {{ noDataMessage() }}\n </td>\n </tr>\n}\n","import { ChangeDetectionStrategy, Component, computed, input, output } from '@angular/core';\n\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)=\"$event.preventDefault(); onAdd($event)\"></a>\n }\n `,\n host: {\n class: 'ng2-smart-actions-title ng2-smart-actions-title-add',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AddButtonComponent {\n readonly grid = input.required<Grid>();\n readonly create = output<void>();\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: Event) {\n event.preventDefault();\n event.stopPropagation();\n this.create.emit();\n }\n}\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\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-st-column-title',\n styleUrls: ['./title.component.scss'],\n template: `\n @if (column().isSortable) {\n <a href=\"#\" (click)=\"_sort($event)\" class=\"ng2-smart-sort-link sort\">\n {{ column().title }}\n <span class=\"sort-direction\">{{ currentSortDirectionSymbol() }}</span>\n </a>\n } @else {\n <span class=\"ng2-smart-sort\">{{ column().title }}</span>\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ColumnTitleComponent {\n readonly source = input.required<DataSource>();\n readonly column = input.required<Column>();\n\n protected readonly currentSortDirection = computed<null | SmartTableSortDirection>(() => {\n const { field, direction } = this.source().getSort();\n return this.column().id === field ? direction : null;\n });\n\n protected readonly currentSortDirectionSymbol = computed<string>(() => {\n return !this.currentSortDirection() ? '' : this.currentSortDirection() === 'asc' ? '↑' : '↓';\n });\n\n _sort(event: Event) {\n event.preventDefault();\n const { id: field, title } = this.column();\n this.source().setSort({\n field,\n title,\n direction: this.currentSortDirection() === 'desc' ? 'asc' : 'desc',\n compare: this.column().compareFunction,\n });\n }\n}\n","import { ChangeDetectionStrategy, Component, computed, OnChanges, OnDestroy, OnInit } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\n\nimport { BaseFilterComponent } from './base-filter.component';\n\n@Component({\n selector: 'ng2-checkbox-filter',\n template: `\n <div class=\"checkbox-filter-wrapper\">\n <input\n [id]=\"column().id\"\n type=\"checkbox\"\n [ngModel]=\"currentState()\"\n (ngModelChange)=\"setCheckFilter($event)\"\n [class]=\"inputClass()\"\n class=\"form-control\" />\n @if (filterIsActive()) {\n <a href=\"#\" (click)=\"$event.preventDefault(); resetFilter($event)\">{{\n column().getFilterConfig()?.resetText || 'reset'\n }}</a>\n }\n </div>\n `,\n styles: `\n .checkbox-filter-wrapper {\n display: flex;\n align-items: center;\n justify-content: flex-start;\n gap: 0.5rem;\n\n input {\n width: auto;\n }\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [FormsModule, ReactiveFormsModule],\n})\nexport class CheckboxFilterComponent extends BaseFilterComponent implements OnInit, OnChanges, OnDestroy {\n readonly filterIsActive = computed(() => this.query() !== null);\n readonly currentState = computed<boolean>(() => {\n const valuesConfig = this.getValuesConfig(this.column().getFilterConfig());\n return this.query() === valuesConfig.trueVal ? true : this.query() === valuesConfig.falseVal ? false : false;\n });\n\n constructor() {\n super();\n }\n\n private getValuesConfig(filterConfig: any): { trueVal: string | true; falseVal: string | false } {\n try {\n const { true: trueVal, false: falseVal } = filterConfig;\n return { trueVal: trueVal || true, falseVal: falseVal ?? false };\n } catch {\n return { trueVal: true, falseVal: false };\n }\n }\n setCheckFilter(state: boolean) {\n const { trueVal, falseVal } = this.getValuesConfig(this.column().getFilterConfig());\n const value = state ? trueVal : falseVal;\n this.setFilter(value);\n }\n\n resetFilter(event: Event) {\n event.preventDefault();\n event.stopPropagation();\n this.setFilter(null);\n }\n}\n","import { ChangeDetectionStrategy, 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 changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [FormsModule, ReactiveFormsModule],\n})\nexport class InputFilterComponent extends BaseFilterComponent {}\n","import { ChangeDetectionStrategy, 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 || 'all' }}</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 changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [FormsModule, ReactiveFormsModule],\n})\nexport class SelectFilterComponent extends BaseFilterComponent {}\n","import { ChangeDetectionStrategy, 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()) {\n @case ('list') {\n <ng2-select-filter\n [query]=\"query()\"\n [class]=\"inputClass()\"\n [source]=\"source()\"\n [column]=\"column()\"\n [filterEmitter]=\"filter\">\n </ng2-select-filter>\n }\n @case ('checkbox') {\n <ng2-checkbox-filter\n [query]=\"query()\"\n [source]=\"source()\"\n [class]=\"inputClass()\"\n [column]=\"column()\"\n [filterEmitter]=\"filter\">\n </ng2-checkbox-filter>\n }\n @default {\n <ng2-input-filter\n [query]=\"query()\"\n [source]=\"source()\"\n [class]=\"inputClass()\"\n [column]=\"column()\"\n [filterEmitter]=\"filter\">\n </ng2-input-filter>\n }\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\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 { ChangeDetectionStrategy, Component, computed, input, output } from '@angular/core';\n\nimport { NgComponentOutlet } from '@angular/common';\nimport { Column } from '../../lib/data-set/column';\nimport { DataSource } from '../../lib/data-source/data-source';\n\n@Component({\n selector: 'ng2-custom-table-filter',\n imports: [NgComponentOutlet],\n template: `\n @if (customFilterComponent(); as component) {\n <ng-template\n *ngComponentOutlet=\"\n component;\n inputs: {\n query: query(),\n inputClass: inputClass(),\n source: source(),\n column: column(),\n filterEmitter: filter,\n }\n \"></ng-template>\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CustomFilterComponent {\n readonly customFilterComponent = computed(() => {\n const columnFilter = this.column().filter;\n if (!columnFilter || columnFilter.type !== 'custom') {\n return null;\n }\n return columnFilter.component;\n });\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","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\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()) {\n @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 }\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 }\n </div>\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CustomFilterComponent, BuildInFilterComponent],\n})\nexport class FilterComponent {\n protected readonly query = computed<null | string>(() => {\n const columnFilter = this.source()\n .getFilters()\n .find((filter) => filter.field === this.column().id);\n return columnFilter?.search ?? null;\n });\n readonly column = input.required<Column>();\n readonly source = input.required<DataSource>();\n readonly inputClass = input<string>('');\n\n onFilter(query: any) {\n const columnFilter = this.column().filter;\n this.source().addFilter({\n type: columnFilter ? columnFilter.type : 'text',\n field: this.column().id,\n search: query,\n filter: this.column().filterFunction,\n });\n }\n}\n","import { Overlay, OverlayConfig, OverlayRef } from '@angular/cdk/overlay';\nimport { CdkPortal, PortalModule } from '@angular/cdk/portal';\nimport { ChangeDetectionStrategy, Component, ElementRef, inject, input, viewChild } from '@angular/core';\nimport { DataSource } from '../../../lib/data-source/data-source';\nimport { Grid } from '../../../lib/grid';\nimport { FilterComponent } from '../../filter/filter.component';\n\n@Component({\n selector: 'ng2-mobile-filters',\n imports: [FilterComponent, PortalModule],\n templateUrl: './mobile-filters.component.html',\n styleUrl: './mobile-filters.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MobileFiltersComponent {\n protected readonly overlay = inject(Overlay);\n\n readonly contentTemplate = viewChild.required(CdkPortal);\n readonly reference = viewChild.required<ElementRef>('reference');\n\n readonly grid = input.required<Grid>();\n readonly source = input.required<DataSource>();\n readonly filterInputClass = input.required<string>();\n\n protected overlayRef?: OverlayRef;\n\n protected clearAllFilters() {\n this.source().setFilters([]);\n }\n\n public hide() {\n this.overlayRef?.detach();\n this.overlayRef?.dispose();\n }\n\n public show() {\n this.overlayRef = this.overlay.create(this.getOverlayConfig());\n this.overlayRef.attach(this.contentTemplate());\n this.overlayRef.backdropClick().subscribe(() => this.hide());\n }\n\n private getOverlayConfig(): OverlayConfig {\n const positionStrategy = this.overlay\n .position()\n .flexibleConnectedTo(this.reference())\n .withPush(false)\n .withPositions([\n {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'top',\n },\n ]);\n\n return new OverlayConfig({\n positionStrategy: positionStrategy,\n hasBackdrop: true,\n backdropClass: 'cdk-overlay-transparent-backdrop',\n });\n }\n}\n","<button #reference class=\"filter-toggle\" (click)=\"show()\" aria-label=\"Toggle filters\">\n <svg viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\">\n <g id=\"SVGRepo_bgCarrier\" stroke-width=\"0\"></g>\n <g id=\"SVGRepo_tracerCarrier\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></g>\n <g id=\"SVGRepo_iconCarrier\">\n <path stroke=\"#000000\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M20 4H4v2l6 6v8.5l4-2.5v-6l6-6V4z\"></path>\n </g>\n </svg>\n</button>\n\n<ng-template cdk-portal>\n <div class=\"dropdown table-filter-dropdown\">\n <div class=\"dropdown-header\">\n <button type=\"button\" class=\"clear-filters-button\" (click)=\"clearAllFilters()\" aria-label=\"Close filters\">\n reset all\n </button>\n <button type=\"button\" class=\"close-dialog-button\" (click)=\"hide()\" aria-label=\"Close dropdown\">\n <span></span>\n </button>\n </div>\n <div class=\"dropdown-content\">\n <div class=\"ng2-smart-mobil-filters\">\n @for (column of grid().dataSet.getVisibleColumns(); track column.id + $index) {\n @if (column.isFilterable) {\n <div class=\"ng2-smart-filter\">\n <label for=\"\" class=\"ng2-smart-filter-label\">{{ column.title }}</label>\n <ng2-smart-table-filter [source]=\"source()\" [column]=\"column\" [inputClass]=\"filterInputClass()\">\n </ng2-smart-table-filter>\n </div>\n }\n }\n </div>\n </div>\n </div>\n</ng-template>\n","import { ChangeDetectionStrategy, Component, 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 }\n @if (grid().actionIsOnLeft() && grid().isActionsVisible() && !withoutCreateButton()) {\n <th ng2-st-add-button [grid]=\"grid()\" (create)=\"create.emit()\"></th>\n }\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]=\"inputClass()\">\n </ng2-smart-table-filter>\n </th>\n }\n @if (grid().actionIsOnRight() && grid().isActionsVisible() && !withoutCreateButton()) {\n <th ng2-st-add-button [grid]=\"grid()\" (create)=\"create.emit()\"></th>\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [AddButtonComponent, FilterComponent],\n})\nexport class TheadFiltersRowComponent {\n readonly grid = input.required<Grid>();\n readonly source = input.required<DataSource>();\n readonly withoutCreateButton = input<boolean>(false);\n readonly inputClass = input<string>('');\n\n readonly create = output<void>();\n}\n","import { ChangeDetectionStrategy, Component, computed, input } 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 changeDetection: ChangeDetectionStrategy.OnPush,\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 { ChangeDetectionStrategy, 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: ` <input type=\"checkbox\" [ngModel]=\"this.grid().dataSet.isAllSelected()\" /> `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [FormsModule],\n})\nexport class CheckboxSelectAllComponent {\n readonly grid = input.required<Grid>();\n}\n","import { ChangeDetectionStrategy, 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/title/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 }\n @if (grid().actionIsOnLeft() && grid().isActionsVisible()) {\n <th ng2-st-actions-title [grid]=\"grid()\"></th>\n }\n @for (column of grid().dataSet.getVisibleColumns(); track column.id + $index) {\n <th class=\"ng2-smart-th {{ column.id }}\" [class]=\"column.class\">\n <ng2-st-column-title [source]=\"source()\" [column]=\"column\"></ng2-st-column-title>\n </th>\n }\n @if (grid().actionIsOnRight() && grid().isActionsVisible()) {\n <th ng2-st-actions-title [grid]=\"grid()\"></th>\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\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 { ChangeDetectionStrategy, Component, computed, input, output, signal } from '@angular/core';\n\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { Column } from '../../lib/data-set/column';\nimport { DataSource } from '../../lib/data-source/data-source';\nimport { Grid } from '../../lib/grid';\nimport { SmartTableSortDirection } from '../../lib/interfaces/smart-table.models';\nimport { AddButtonComponent } from './cells/add-button.component';\nimport { ColumnTitleComponent } from './cells/title/title.component';\nimport { MobileFiltersComponent } from './mobile-filters/mobile-filters.component';\nimport { TheadFiltersRowComponent } from './rows/thead-filters-row.component';\nimport { TheadTitlesRowComponent } from './rows/thead-titles-row.component';\n\n@Component({\n selector: '[ng2-st-thead]',\n templateUrl: './thead.component.html',\n styleUrls: ['./thead.component.scss'],\n imports: [\n TheadTitlesRowComponent,\n AddButtonComponent,\n MobileFiltersComponent,\n ColumnTitleComponent,\n TheadFiltersRowComponent,\n NgTemplateOutlet,\n OverlayModule,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Ng2SmartTableTheadComponent {\n readonly grid = input.required<Grid>();\n readonly source = input.required<DataSource>();\n readonly isMobileView = input<boolean>(false);\n\n readonly selectAllRows = output<void>();\n readonly create = output<void>();\n\n readonly isHideHeader = computed<boolean>(() => {\n return this.grid().settings()?.hideHeader || false;\n });\n readonly isHideSubHeader = computed<boolean>(() => {\n return this.grid().settings()?.hideSubHeader || false;\n });\n readonly columnsWithSort = computed(() =>\n this.grid()\n .dataSet.getColumns()\n .filter((column) => column.isSortable),\n );\n readonly columnsWithSortLength = computed(() => this.columnsWithSort().length);\n readonly columnsWithFiltersLength = computed(\n () =>\n this.grid()\n .dataSet.getColumns()\n .filter((column) => column.isFilterable).length,\n );\n\n readonly currentSortConfig = computed(() => this.source().getSort());\n\n readonly filterDropdownIsOpen = signal(false);\n\n protected toggleDropdown(state?: boolean) {\n this.filterDropdownIsOpen.update((value) => state ?? !value);\n }\n\n protected sortByColumn(column?: Column): void {\n const sort = this.currentSortConfig();\n const { id: field, title } = column || { id: sort.field, title: sort.title };\n const direction: SmartTableSortDirection =\n field === sort.field ? (sort.direction === 'asc' ? 'desc' : 'asc') : 'asc';\n this.source().setSort({\n field,\n title,\n direction: direction,\n });\n this.filterDropdownIsOpen.set(false);\n }\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","@if (isMobileView()) {\n <tr class=\"ng2-smart-titles mobile-header mobile-header-top-row\">\n <th colspan=\"50\">\n <div class=\"mobile-header-content\">\n <div ng2-st-add-button [grid]=\"grid()\" (create)=\"create.emit($event)\"></div>\n @if (columnsWithSortLength()) {\n <div class=\"current-column-title\">\n <a href=\"#\" (click)=\"$event.preventDefault(); sortByColumn()\" class=\"ng2-smart-sort-link sort\">\n {{ currentSortConfig().title }}\n <span class=\"sort-direction\">{{ currentSortConfig().direction === 'asc' ? '↑' : '↓' }}</span>\n </a>\n @if (columnsWithSortLength() > 1) {\n <button\n #sortTrigger=\"cdkOverlayOrigin\"\n cdkOverlayOrigin\n class=\"sort-dropdown-toggle-button\"\n (click)=\"toggleDropdown(true)\"\n [class.active]=\"filterDropdownIsOpen()\"\n aria-label=\"Toggle sort options\">\n <span class=\"sort-icon\">▼</span>\n </button>\n <ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"sortTrigger\"\n [cdkConnectedOverlayOpen]=\"filterDropdownIsOpen()\"\n [cdkConnectedOverlayWidth]=\"300\"\n (overlayOutsideClick)=\"toggleDropdown(false)\">\n <div class=\"dropdown\">\n <div class=\"dropdown-header\">\n <p></p>\n <button\n type=\"button\"\n class=\"close-dialog-button\"\n (click)=\"toggleDropdown(false)\"\n aria-label=\"Close filters\">\n <span></span>\n </button>\n </div>\n <div class=\"dropdown-content\">\n @for (column of columnsWithSort(); track $index) {\n <th class=\"titles\">\n <ng2-st-column-title\n class=\"sort-option\"\n [column]=\"column\"\n [source]=\"source()\"></ng2-st-column-title>\n </th>\n }\n </div>\n </div>\n </ng-template>\n }\n </div>\n }\n\n <div class=\"header-actions\">\n @if (columnsWithFiltersLength()) {\n <ng2-mobile-filters [grid]=\"grid()\" [source]=\"source()\" [filterInputClass]=\"filterInputClass()\">\n </ng2-mobile-filters>\n }\n </div>\n </div>\n </th>\n </tr>\n} @else {\n <!-- Desktop view header -->\n @if (!isHideHeader()) {\n <tr\n ng2-st-thead-titles-row\n class=\"ng2-smart-titles\"\n [grid]=\"grid()\"\n [source]=\"source()\"\n (selectAllRows)=\"selectAllRows.emit()\"></tr>\n }\n\n @if (!isHideSubHeader()) {\n <ng-container [ngTemplateOutlet]=\"filtersRow\"></ng-container>\n }\n}\n\n<ng-template #filtersRow>\n <tr\n ng2-st-thead-filters-row\n class=\"ng2-smart-filters\"\n [grid]=\"grid()\"\n [inputClass]=\"filterInputClass()\"\n [withoutCreateButton]=\"isMobileView()\"\n [source]=\"source()\"\n (create)=\"create.emit()\"></tr>\n</ng-template>\n","import { computed, signal } from '@angular/core';\nimport { isObjectsIdentical } from '../helpers';\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 selectedRowsData: any[] = [];\n\n readonly getColumns = computed(() => this.columns());\n readonly getVisibleColumns = computed(() => this.columns().filter((column: Column) => !column.hide));\n readonly getRows = computed(() => {\n return this.rows();\n });\n\n readonly isAllSelected = computed<boolean>(() => this.rows().every((row) => row.isSelected()));\n\n constructor(\n dataList: any[] = [],\n protected columnSettings: SmartTableColumnSettings[],\n public readonly editorInputClass: string,\n ) {\n this.createColumns(columnSettings);\n this.setData(dataList);\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 findRowByData(data: any): Row | undefined {\n return this.rows().find((row: Row) => isObjectsIdentical(row.rowData(), 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 resetAllSelection() {\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.selectedRowsData = [];\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 return row;\n }\n\n getSelectedRowsData() {\n return this.selectedRowsData;\n }\n\n createNewRow() {\n this.newRow = new Row(-1, {}, this.getColumns());\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((params) => new Column(params.key as string, params, this));\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.getColumns());\n row.isSelected.set(this.isSelectedHasRow(el));\n return row;\n });\n this.rows.set(rows);\n }\n\n private isSelectedHasRow(data: any) {\n return this.selectedRowsData.some((rowData) => isObjectsIdentical(rowData, data));\n }\n\n private storeSelectedRow(row: Row): void {\n if (row.isSelected()) {\n if (this.isSelectedHasRow(row.rowData())) {\n //check if row already in selected array to prevent duplicate\n return;\n }\n this.selectedRowsData.push(row.rowData());\n } else {\n const index = this.selectedRowsData.findIndex((rowData) => isObjectsIdentical(rowData, row));\n if (index !== -1) {\n this.selectedRowsData.splice(index, 1);\n }\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 BaseDataType,\n ColumnPositionState,\n SmartTableColumnSettings,\n SmartTableConfirmDeleteEvent,\n SmartTableOnChangedEvent,\n SmartTableOnChangedEventName,\n SmartTablePagerSettings,\n SmartTableSettings,\n SmartTableSortItem,\n} from './interfaces/smart-table.models';\n\nexport class Grid {\n source!: DataSource;\n dataSet!: DataSet;\n\n currentColumnsSortState: ColumnPositionState[] = [];\n\n private columnsSortedEmitter!: OutputEmitterRef<ColumnPositionState[]>;\n private sourceOnChangedSubscription: Subscription | undefined;\n\n readonly settings = signal<SmartTableSettings>({} as SmartTableSettings);\n readonly createFormShown = signal<boolean>(false);\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.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 }\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<BaseDataType>();\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.set(false);\n this.dataSet.createNewRow();\n });\n })\n .catch(() => {\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();\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<BaseDataType>();\n deferred.promise\n .then((newData) => {\n row.pending.set(false);\n newData = newData || row.getNewData();\n this.source.update(row.rowData(), 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.rowData(),\n newData: row.getNewData(),\n source: this.source,\n confirm: deferred,\n });\n } else {\n deferred.resolve();\n row.pending.set(false);\n }\n }\n\n delete<T extends BaseDataType = BaseDataType>(\n row: Row,\n confirmEmitter: EventEmitter<SmartTableConfirmDeleteEvent<T>> | OutputEmitterRef<SmartTableConfirmDeleteEvent<T>>,\n ) {\n row.pending.set(true);\n const deferred = new Deferred<T>();\n deferred.promise\n .then(() => {\n row.pending.set(false);\n this.source.remove(row.rowData());\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.rowData(),\n source: this.source,\n confirm: deferred,\n });\n } else {\n deferred.resolve(null as unknown as T);\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 (['load', 'empty', 'refresh'].includes(event.action)) {\n this.dataSet.resetAllSelection();\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 initialSortColumn = columns?.find((column) => column?.sortDirection);\n if (!initialSortColumn) {\n return false;\n }\n return {\n field: initialSortColumn.key as string,\n title: initialSortColumn.title,\n direction: initialSortColumn.sortDirection || 'asc',\n compare: initialSortColumn.compareFunction,\n };\n }\n\n getSelectedRowsData() {\n return this.dataSet.getSelectedRowsData();\n }\n\n selectAllRows(status: boolean) {\n this.dataSet.setSelectAll(status);\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 const editorInputClass = settings.edit ? settings.edit.inputClass || '' : '';\n this.dataSet = new DataSet([], settings.columns, editorInputClass);\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 {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n NgZone,\n OnChanges,\n OnDestroy,\n SimpleChange,\n computed,\n input,\n output,\n signal,\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 BaseDataType,\n ColumnPositionState,\n SmartTableBaseEvent,\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 imports: [Ng2SmartTableTheadComponent, Ng2SmartTableTbodyComponent, PagerComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Ng2SmartTableComponent<T extends BaseDataType = any> implements OnChanges, OnDestroy, AfterViewInit {\n readonly source = input.required<DataSource<T>>();\n readonly settings = input.required<SmartTableSettings<T>>();\n\n readonly multiRowSelect = output<SmartTableRowSelectEvent<T>>();\n readonly rowClicked = output<SmartTableRowClickedEvent<T>>();\n readonly columnsSorted = output<ColumnPositionState[]>();\n\n readonly deleteEmitter = output<SmartTableBaseEvent<T>>();\n readonly deleteConfirm = output<SmartTableConfirmDeleteEvent<T>>();\n\n readonly edit = output<SmartTableBaseEvent<T>>();\n readonly editConfirm = output<SmartTableConfirmEditEvent<T>>();\n readonly editCancel = output<SmartTableBaseEvent<T>>();\n\n readonly create = output<SmartTableBaseEvent<T>>();\n readonly createConfirm = output<SmartTableCreateConfirm<T>>();\n\n readonly custom = output<SmartTableCustomEvent<T>>();\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<(rowData: T) => string>(() => {\n const settings = this.settings();\n return settings.rowClassFunction ? (rowData: T) => settings.rowClassFunction!(rowData) : () => '';\n });\n\n protected readonly isMobileView = signal<boolean>(false);\n protected readonly tableWidthMobileBreakpoint = computed<number | undefined>(() => {\n return this.settings().tableWidthMobileBreakpoint;\n });\n\n grid!: Grid;\n\n private readonly isExternalMode = computed<boolean>(() => {\n return this.grid.settings().mode === 'external';\n });\n private resizeObserver: ResizeObserver | null = null;\n private resizeDebounceTimer: ReturnType<typeof setTimeout> | null = null;\n\n constructor(\n private elementRef: ElementRef,\n private ngZone: NgZone,\n ) {}\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 ngAfterViewInit(): void {\n this.setupResizeObserver();\n }\n\n ngOnDestroy(): void {\n this.grid.detach();\n this.destroyResizeObserver();\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.rowData() : null,\n source: this.source(),\n });\n }\n\n protected customActionEmitted(event: SmartTableCustomEvent<T>) {\n this.custom.emit(event);\n }\n\n protected editEmitted(row: Row) {\n if (this.isExternalMode()) {\n this.edit.emit({\n data: row.rowData(),\n source: this.source(),\n });\n return;\n }\n row.isInEditing.set(true);\n }\n\n protected editConfirmed(row: Row) {\n this.grid.save(row, this.editConfirm);\n }\n\n protected editCanceled(row: Row) {\n this.editCancel.emit({ data: row.rowData(), source: this.source() });\n }\n\n protected createEmitted() {\n if (this.isExternalMode()) {\n this.create.emit({ data: this.grid.getNewRow().getNewData(), source: this.source() });\n } else {\n this.grid.createFormShown.set(true);\n }\n }\n\n protected createConfirmed() {\n this.grid.create(this.grid.getNewRow(), this.createConfirm);\n }\n\n protected deleEmitted(row: Row) {\n if (this.isExternalMode()) {\n this.deleteEmitter.emit({\n data: row.rowData(),\n source: this.source(),\n });\n } else {\n this.grid.delete(row, this.deleteConfirm);\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.rowData() : null,\n isSelected: row ? row.isSelected() : false,\n source: this.source(),\n selected: this.grid.dataSet.getSelectedRowsData(),\n });\n }\n\n private setupResizeObserver(): void {\n if (typeof ResizeObserver === 'undefined' || !this.tableWidthMobileBreakpoint()) {\n return;\n }\n\n this.resizeObserver = new ResizeObserver((entries) => {\n if (this.resizeDebounceTimer) {\n clearTimeout(this.resizeDebounceTimer);\n }\n\n this.resizeDebounceTimer = setTimeout(() => {\n this.ngZone.run(() => {\n for (const entry of entries) {\n const breakpoint = this.tableWidthMobileBreakpoint();\n if (breakpoint) {\n const containerWidth = entry.contentRect.width;\n this.isMobileView.set(containerWidth < breakpoint);\n }\n }\n });\n }, 20);\n });\n\n const hostElement = this.elementRef.nativeElement;\n if (hostElement) {\n this.resizeObserver.observe(hostElement);\n }\n }\n\n private destroyResizeObserver(): void {\n if (this.resizeObserver) {\n this.resizeObserver.disconnect();\n this.resizeObserver = null;\n }\n\n if (this.resizeDebounceTimer) {\n clearTimeout(this.resizeDebounceTimer);\n this.resizeDebounceTimer = null;\n }\n }\n}\n","<table [id]=\"tableId()\" [class]=\"tableClass()\" [class.mobile-view]=\"isMobileView()\">\n <thead\n ng2-st-thead\n [grid]=\"grid\"\n [source]=\"source()\"\n [isMobileView]=\"isMobileView()\"\n (create)=\"createEmitted()\"\n (selectAllRows)=\"onSelectAllRows()\"></thead>\n\n <tbody\n ng2-st-tbody\n [grid]=\"grid\"\n [source]=\"source()\"\n [rowClassFunction]=\"rowClassFunction()\"\n [isMobileView]=\"isMobileView()\"\n (deleteEmitter)=\"deleEmitted($event)\"\n (edit)=\"editEmitted($event)\"\n (editConfirmed)=\"editConfirmed($event)\"\n (editCancel)=\"editCanceled($event)\"\n (createConfirmed)=\"createConfirmed()\"\n (customActionEmitter)=\"customActionEmitted($event)\"\n (userClickedRow)=\"emitUserRowClicked($event)\"\n (multipleSelectRow)=\"multipleSelectRow($event)\"></tbody>\n</table>\n\n@if (isPagerDisplay()) {\n <ng2-smart-table-pager [source]=\"source()\"> </ng2-smart-table-pager>\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1"],"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/create-cancel/create-cancel.component.ts","../../../projects/ng2-smart-table/src/lib/components/tbody/create-cancel/create-cancel.component.html","../../../projects/ng2-smart-table/src/lib/components/tbody/row-actions/row-actions.component.ts","../../../projects/ng2-smart-table/src/lib/components/tbody/row-actions/row-actions.component.html","../../../projects/ng2-smart-table/src/lib/components/tbody/trow/trow.component.ts","../../../projects/ng2-smart-table/src/lib/components/tbody/trow/trow.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/thead/cells/add-button.component.ts","../../../projects/ng2-smart-table/src/lib/components/thead/cells/title/title.component.ts","../../../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/mobile-filters/mobile-filters.component.ts","../../../projects/ng2-smart-table/src/lib/components/thead/mobile-filters/mobile-filters.component.html","../../../projects/ng2-smart-table/src/lib/components/thead/rows/thead-filters-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/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/lib/data-set/data-set.ts","../../../projects/ng2-smart-table/src/lib/lib/grid.ts","../../../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 { ChangeDetectionStrategy, Component, computed, input, InputSignal } from '@angular/core';\n\nimport { Cell } from '../../../lib/data-set/cell';\n\n@Component({ template: '', selector: 'ng2-editor-base-component', changeDetection: ChangeDetectionStrategy.OnPush })\nexport class BaseEditorComponent implements Editor {\n readonly cell = input.required<Cell>();\n readonly inputClass = computed<string>(() => this.cell().column.editorInputClass);\n}\n\nexport interface Editor {\n cell: InputSignal<Cell>;\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n input,\n InputSignal,\n OnChanges,\n OnDestroy,\n OnInit,\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', changeDetection: ChangeDetectionStrategy.OnPush })\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 filterEmitter = input.required<OutputEmitterRef<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.filterEmitter().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 filterEmitter: InputSignal<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 compareObjectsAsJSON<T extends Record<string, unknown>>(a: T, b: T): boolean {\n return JSON.stringify(a) === JSON.stringify(b);\n}\n\nexport function isObjectsIdentical<T extends Record<string, unknown>>(a: T, b: T): boolean {\n let compareIdKey: keyof T | null = null;\n if ('uuid' in a) {\n compareIdKey = 'uuid';\n } else if ('id' in a) {\n compareIdKey = 'id';\n }\n if (!compareIdKey) {\n return compareObjectsAsJSON(a, b);\n }\n try {\n return a[compareIdKey] === b[compareIdKey];\n } catch {\n return compareObjectsAsJSON(a, b);\n }\n}\n\nexport function CheckParentElementClassRecursive(element: HTMLElement | null, className: string): boolean {\n if (!element) return false;\n if (element.classList.contains(className)) {\n return true;\n }\n return CheckParentElementClassRecursive(element.parentElement, className);\n}\n","import { CdkDrag, CdkDragDrop, CdkDragPlaceholder, CdkDropList, moveItemInArray } from '@angular/cdk/drag-drop';\nimport { ChangeDetectionStrategy, 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 changeDetection: ChangeDetectionStrategy.OnPush,\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)': 'buttonClicked()',\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 buttonClicked() {\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 { signal, untracked } from '@angular/core';\nimport { Column } from './column';\nimport { Row } from './row';\n\nexport class Cell {\n readonly newValue = signal<any>(null);\n readonly columnClass: string = '';\n readonly styles: Partial<CSSStyleDeclaration> = '';\n readonly title: string = '';\n readonly id: string = '';\n\n constructor(\n protected value: any,\n public row: Row,\n public column: Column,\n ) {\n this.columnClass = column.class;\n untracked(() => {\n this.newValue.set(value);\n });\n this.styles = column.styles;\n this.title = column.title;\n this.id = column.id;\n }\n\n getValue() {\n const prepare = this.column.valuePrepareFunction;\n return !prepare ? this.value : prepare.call(null, this.value, this.row.rowData(), this);\n }\n\n getNotPrepareValue() {\n return this.value;\n }\n\n setNewValue(value: any) {\n this.newValue.set(value);\n }\n\n isEditable(): boolean {\n if (this.row.index === -1) {\n return this.column.isAddable;\n } else {\n return this.column.isEditable;\n }\n }\n}\n","import {\n SmartTableCompareFunction,\n SmartTableEditorAndFilter,\n SmartTableFilterFunction,\n SmartTableValuePrepareFunction,\n} from '../interfaces/smart-table.models';\nimport { SmartTableColumnSettings, SmartTableColumnSettingsTypes } 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 styles: Partial<CSSStyleDeclaration>;\n public readonly editorInputClass: string = '';\n\n hide = false;\n isSortable = false;\n isEditable = true;\n isAddable = true;\n isFilterable = false;\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(\n public id: string,\n private settings: SmartTableColumnSettings,\n protected dataSet: DataSet,\n ) {\n this.editorInputClass = dataSet.editorInputClass;\n this.title = settings.title;\n this.class = settings.class || '';\n this.styles = settings.style || '';\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 = !!settings['filter'];\n this.isSortable = settings.sort ?? false;\n this.isEditable = settings.editable ?? true;\n this.isAddable = settings.addable ?? true;\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';\n\nexport class Row {\n readonly pending = signal(false);\n readonly isSelected = signal(false);\n readonly isInEditing = signal(false);\n readonly cells = computed<Cell[]>(() =>\n this.columns().map((column: Column) => this.createCell(column, this.rowData())),\n );\n readonly rowData = signal<any>({});\n readonly columns = signal<Column[]>([]);\n public readonly visibleCells = computed<Cell[]>(() => this.cells().filter((cell: Cell) => !cell.column.hide));\n\n constructor(\n public index: number,\n protected rowDataObj: any,\n protected columnsList: Column[],\n ) {\n this.rowData.set(rowDataObj);\n this.columns.set(columnsList);\n }\n\n getNewData() {\n const values = Object.assign({}, this.rowData());\n this.cells().forEach((cell) => (values[cell.column.id] = cell.newValue()));\n return values;\n }\n\n setData<T = any>(rowData: T): void {\n this.rowData.set(rowData);\n }\n\n createCell(column: Column, rowData: any): Cell {\n const value = typeof rowData[column.id] === 'undefined' ? '' : rowData[column.id];\n return new Cell(value, this, column);\n }\n}\n","import { InputSignal } from '@angular/core';\nimport { 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 type BaseDataType = Record<string, any>;\n\nexport interface ViewCell<V = any, R extends BaseDataType = BaseDataType> {\n value: InputSignal<V>;\n rowData: InputSignal<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 BaseDataType = 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 /**\n * @description Breakpoint for mobile table width in pixels if table width is less than this value, table will be displayed in mobile mode\n * @example 768\n */\n tableWidthMobileBreakpoint?: number;\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?: (rowData: T) => string;\n}\n\nexport interface SmartTableAction<T extends BaseDataType = any> {\n columnTitle?: string;\n add?: boolean;\n edit?: boolean;\n delete?: boolean;\n custom?: SmartTableCustomAction<T>[];\n}\n\nexport interface SmartTableCustomAction<T extends BaseDataType = 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 BaseDataType = any> =\n | SmartTableTextHtmlColumn<T>\n | SmartTableCustomColumn<T>;\n\nexport type SmartTableCompareFunction = (direction: number, a: any, b: any) => number;\n\nexport type SmartTableValuePrepareFunction<T extends BaseDataType = 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 BaseDataType> {\n key: keyof T;\n title: string;\n style?: Partial<CSSStyleDeclaration>;\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 BaseDataType> extends SmartTableDefaultColumn<T> {\n type: 'text' | 'html';\n}\n\ninterface SmartTableCustomColumn<T extends BaseDataType> 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 nextButtonText?: string;\n previewButtonText?: string;\n showTotal?: 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 type: SmartTableEditorAndFilterTypes;\n field: string;\n search: string;\n filter?: SmartTableFilterFunction;\n}\n\nexport type SmartTableSortDirection = 'asc' | 'desc';\n\nexport interface SmartTableSortItem {\n field: string;\n title: string;\n direction: SmartTableSortDirection;\n compare?: SmartTableCompareFunction;\n}\n\ninterface SmartTableDefaultEvent<T extends BaseDataType = any> {\n confirm: Deferred<T>;\n data: T;\n source: DataSource<T>;\n}\n\nexport type SmartTableConfirmDeleteEvent<T extends BaseDataType = any> = SmartTableDefaultEvent<T>;\n\nexport type SmartTableRowClickedEvent<T extends BaseDataType = any> = Omit<SmartTableDefaultEvent<T>, 'confirm'>;\n\nexport interface SmartTableCustomEvent<T extends BaseDataType = any>\n extends Omit<SmartTableDefaultEvent<T>, 'confirm'> {\n action: string;\n}\n\nexport interface SmartTableRowSelectEvent<T extends BaseDataType = any>\n extends Omit<SmartTableDefaultEvent<T>, 'confirm'> {\n isSelected: boolean;\n selected: T[];\n}\n\nexport interface SmartTableConfirmEditEvent<T extends BaseDataType = any, N = T> extends SmartTableDefaultEvent<T> {\n newData: N;\n}\n\nexport interface SmartTableCreateConfirm<T extends BaseDataType = any> extends Omit<SmartTableDefaultEvent<T>, 'data'> {\n newData: T;\n}\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 BaseDataType = any> {\n elements: T[];\n filters: SmartTableFilterItem[];\n paging: SmartTablePagerSettings;\n sort: SmartTableSortItem;\n}\n\ninterface SmartTableOnChangedEventAll {\n action: Exclude<SmartTableOnChangedEventType, 'remove' | 'update' | 'append' | 'prepend' | 'appendMany' | 'add'>;\n}\n\ninterface SmartTableAddEvent<T extends BaseDataType = any> {\n action:\n | SmartTableOnChangedEventName.add\n | SmartTableOnChangedEventName.prepend\n | SmartTableOnChangedEventName.appendMany;\n newItems: T[];\n}\n\ninterface SmartTableUpdateEvent<T extends BaseDataType = any> {\n action: SmartTableOnChangedEventName.update;\n newItem: T;\n oldItem: T;\n}\ninterface SmartTableRemoveEvent<T extends BaseDataType = any> {\n action: SmartTableOnChangedEventName.remove;\n item: T;\n}\n\nexport type SmartTableOnChangedEventToEmit<T extends BaseDataType = any> =\n | SmartTableAddEvent<T>\n | SmartTableUpdateEvent<T>\n | SmartTableRemoveEvent<T>\n | SmartTableOnChangedEventAll;\n\nexport type SmartTableOnChangedEvent<T extends BaseDataType = any> = SmartTableOnChangedEventToEmit<T> &\n SmartTableOnChangedEventBase<T>;\n\nexport interface SmartTableConfirmEvent<T extends BaseDataType = any> {\n confirm: { resolve: (data?: T) => void; reject: () => void };\n data: T;\n source: DataSource<T>;\n}\n\nexport interface SmartTableBaseEvent<T extends BaseDataType = any> {\n data: T | null;\n source: DataSource<T>;\n}\n\nexport type SmartTableCreateEvent<T extends BaseDataType = any> = SmartTableBaseEvent<T>;\nexport type SmartTableEditEvent<T extends BaseDataType = any> = SmartTableBaseEvent<T>;\nexport type SmartTableDeleteEvent<T extends BaseDataType = any> = SmartTableConfirmEvent<T>;\nexport type SmartTableEditCancelEvent<T extends BaseDataType = any> = SmartTableBaseEvent<T>;\n","import { computed, signal } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\nimport { isObjectsIdentical } from '../helpers';\nimport {\n BaseDataType,\n SmartTableFilterItem,\n SmartTableOnChangedEvent,\n SmartTableOnChangedEventName,\n SmartTableOnChangedEventToEmit,\n SmartTablePagerSettings,\n SmartTableSortItem,\n} from '../interfaces/smart-table.models';\n\nexport abstract class DataSource<T extends BaseDataType = any> {\n protected readonly onChangedSource = new Subject<SmartTableOnChangedEvent>();\n protected readonly sortConf = signal<SmartTableSortItem>({ field: '', title: '', direction: 'desc' });\n protected readonly filters = signal<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\n abstract count(): number;\n\n readonly getSort = computed<SmartTableSortItem>(() => this.sortConf());\n readonly getFilters = computed<SmartTableFilterItem[]>(() => this.filters());\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.updateTotal(elements.length);\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.updateTotal(1);\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) => !isObjectsIdentical(el, element)));\n this.updateTotal(-1);\n this.emitOnChanged({ action: SmartTableOnChangedEventName.remove, item: element }, this.data());\n return Promise.resolve(true);\n }\n\n async update(oldItem: T, newItem: T): Promise<true> {\n this.data.update((old) =>\n old.map((el) => {\n if (isObjectsIdentical(el, oldItem)) {\n return newItem;\n }\n return el;\n }),\n );\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.set(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 const newSearchString =\n typeof newFilter.search === 'undefined' || newFilter.search === null ? '' : `${newFilter.search}`;\n if (foundIndex === -1) {\n if (newSearchString?.length) {\n this.filters.set([...this.filters(), newFilter]);\n }\n } else {\n const filtersTemp = this.filters().slice(0);\n if (newSearchString?.length) {\n filtersTemp[foundIndex].search = newFilter.search;\n } else {\n filtersTemp.splice(foundIndex, 1);\n }\n this.filters.set([...filtersTemp]);\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.set([...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 this.onChangedSource.next(actionData);\n }\n\n /**\n * @param difference number to plus total\n * @example -2 or 2\n */\n private updateTotal(difference: number) {\n this.pagingConf.update((old) => ({ ...old, total: old.total + difference }));\n }\n}\n","import { BaseDataType, SmartTableFilterFunction, SmartTableFilterItem } from '../../interfaces/smart-table.models';\n\nfunction exactMatch(value: any, search: string): boolean {\n return value.toString().toLowerCase() === search.toString().toLowerCase();\n}\n\nfunction includeMatch(value: any, search: string): boolean {\n return value.toString().toLowerCase().includes(search.toString().toLowerCase());\n}\n\nexport function isElementSatisfied<T extends BaseDataType>(element: T, filters: SmartTableFilterItem[]) {\n return filters.every((filter: SmartTableFilterItem) => {\n const search = `${filter.search}`;\n if (!search?.length) {\n return true;\n }\n const filterFunction: SmartTableFilterFunction =\n filter.filter || (filter.type === 'list' ? exactMatch : includeMatch);\n try {\n const value = element[filter.field];\n return filterFunction(value, 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 function localSort<T extends Record<string, any>>(\n data: T[],\n field: string,\n direction: string,\n customCompare?: SmartTableCompareFunction,\n): T[] {\n const dir: number = direction === 'asc' ? 1 : -1;\n const compare = customCompare ? customCompare : compareValues;\n\n return data.sort((a, b) => {\n try {\n return compare(dir, a[field], b[field]);\n } catch {\n return 0;\n }\n });\n}\n","import { computed } from '@angular/core';\nimport { SmartTableOnChangedEventName, SmartTableOnChangedEventToEmit } from '../../interfaces/smart-table.models';\nimport { DataSource } from '../data-source';\nimport { isElementSatisfied } from './local.filter';\nimport { paginateList } from './local.pager';\nimport { localSort } from './local.sorter';\n\nexport class LocalDataSource<T extends Record<string, any> = any> extends DataSource<T> {\n private readonly filteredAndSorted = computed<T[]>(() => {\n let list = this.data().slice(0);\n const filters = this.filters();\n\n if (filters.length) {\n list = list.filter((element) => isElementSatisfied(element, filters));\n }\n if (this.sortConf()) {\n const { field, direction, compare } = this.sortConf();\n list = localSort<T>(list, field, direction, compare);\n }\n return list;\n });\n\n readonly paginatedList = computed<T[]>(() => {\n return this.paginate(this.filteredAndSorted());\n });\n\n readonly count = computed(() => this.filteredAndSorted().length);\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.set([]);\n this.pagingConf.update((old) => ({ ...old, page: 1 }));\n } else {\n this.setFilters([], false);\n if (this.pagingConf().display) {\n this.setPage(1);\n }\n }\n }\n\n override async emitOnChanged(event: SmartTableOnChangedEventToEmit, newElements?: T[]) {\n super.emitOnChanged(event, this.paginatedList());\n if (this.pagingConf().display && this.isPageOutOfBounce()) {\n this.setPage(this.pagingConf().page - 1);\n }\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, take } 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 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(\n switchMap((params) => this.requestFunction(params)),\n take(1),\n )\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 { ChangeDetectionStrategy, 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 changeDetection: ChangeDetectionStrategy.OnPush,\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 isShowTotal = computed(() => !!this.pagingConf().showTotal);\n protected readonly count = computed(() => this.source().count());\n protected readonly nextButtonText = computed(() => this.pagingConf().nextButtonText);\n protected readonly prevButtonText = computed(() => this.pagingConf().nextButtonText);\n protected readonly lastPage = computed(() => Math.ceil(this.count() / this.currentPerPage()) || 1);\n protected readonly pages = computed(() => this.getPages(this.currentPage(), this.lastPage(), this.count()));\n\n paginate(page: number) {\n this.source().setPage(page);\n }\n\n next() {\n if (this.currentPage() >= this.lastPage() || !this.count()) {\n return;\n }\n this.paginate(this.currentPage() + 1);\n }\n\n prev() {\n if (this.currentPage() <= 1 || !this.count()) {\n return;\n }\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, total: number) {\n if (!total) {\n return [1];\n }\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","<div class=\"ng2-smart-table-pagination__wrap\">\n <div>\n @if (isShowTotal()) {\n Total: {{ count() }}\n }\n </div>\n <nav class=\"ng2-smart-table-pagination__nav\">\n <ul class=\"ng2-smart-table-pagination__list\">\n <li class=\"ng2-smart-table-pagination__list-item\" [class.disabled]=\"currentPage() <= 1\">\n <a (click)=\"prev()\" aria-label=\"Prev\">\n @if (prevButtonText(); as text) {\n {{ text }}\n } @else {\n &laquo; Previous\n }\n </a>\n </li>\n @for (page of pages(); track $index) {\n <li class=\"ng2-smart-table-pagination__list-item\" [class.active]=\"currentPage() === page\">\n @if (isString(page) || currentPage() === page) {\n <span>\n {{ page }}\n </span>\n } @else {\n <a (click)=\"paginate(page)\">{{ page }}</a>\n }\n </li>\n }\n <li class=\"ng2-smart-table-pagination__list-item\" [class.disabled]=\"currentPage() >= lastPage()\">\n <a (click)=\"next()\" aria-label=\"Next\">\n @if (nextButtonText(); as text) {\n {{ text }}\n } @else {\n Next &raquo;\n }\n </a>\n </li>\n </ul>\n </nav>\n <div>\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</div>\n","import { ChangeDetectionStrategy, 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().id\"\n [disabled]=\"!cell().isEditable()\"\n (change)=\"onChange($event)\"\n [checked]=\"cell().getValue() === trueVal()\" />\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CheckboxEditorComponent extends BaseEditorComponent {\n readonly trueVal = computed(() => {\n return this.cell().column.getEditorConfig()?.true || true;\n });\n readonly falseVal = computed(() => {\n return this.cell().column.getEditorConfig()?.false || false;\n });\n\n constructor() {\n super();\n }\n\n onChange(event: any) {\n this.cell().setNewValue(event.target.checked ? this.trueVal() : this.falseVal());\n }\n}\n","import { ChangeDetectionStrategy, 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 type=\"text\"\n [class]=\"inputClass()\"\n class=\"form-control\"\n [ngModel]=\"cell().newValue()\"\n (ngModelChange)=\"cell().setNewValue($event)\"\n [name]=\"cell().id\"\n [placeholder]=\"cell().title\"\n [disabled]=\"!cell().isEditable()\" />\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [FormsModule],\n})\nexport class InputEditorComponent extends BaseEditorComponent {}\n","import { ChangeDetectionStrategy, 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 (ngModelChange)=\"cell().setNewValue($event)\"\n [name]=\"cell().id\"\n [disabled]=\"!cell().isEditable()\">\n @for (option of cell().column.getEditorConfig()?.list; track $index) {\n <option [value]=\"option.value\" [selected]=\"option.value === cell().getValue()\">\n {{ option.title }}\n </option>\n }\n </select>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [FormsModule],\n})\nexport class SelectEditorComponent extends BaseEditorComponent {}\n","import { ChangeDetectionStrategy, 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 (ngModelChange)=\"cell().setNewValue($event)\"\n [name]=\"cell().id\"\n [disabled]=\"!cell().isEditable()\"\n [placeholder]=\"cell().title\">\n </textarea>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [FormsModule],\n})\nexport class TextareaEditorComponent extends BaseEditorComponent {}\n","import { ChangeDetectionStrategy, 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 changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BuildInEditorComponent extends BaseEditorComponent {\n protected readonly editorType = computed<SmartTableEditorAndFilterTypes>(() => {\n const editor = this.cell().column.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 [cell]=\"cell()\"> </ng2-select-editor>\n }\n @case ('textarea') {\n <ng2-textarea-editor [cell]=\"cell()\"> </ng2-textarea-editor>\n }\n @case ('checkbox') {\n <ng2-checkbox-editor [cell]=\"cell()\"> </ng2-checkbox-editor>\n }\n @default {\n <ng2-input-editor [cell]=\"cell()\"> </ng2-input-editor>\n }\n }\n</div>\n","import {\n ChangeDetectionStrategy,\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 changeDetection: ChangeDetectionStrategy.OnPush,\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().column.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 }\n }\n\n ngOnDestroy() {\n if (this.customComponent) {\n this.customComponent.destroy();\n }\n }\n}\n","import { ChangeDetectionStrategy, 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()) {\n @case ('custom') {\n <ng2-table-cell-custom-editor [cell]=\"cell()\"> </ng2-table-cell-custom-editor>\n }\n @default {\n <ng2-table-cell-build-in-editor [cell]=\"cell()\"> </ng2-table-cell-build-in-editor>\n }\n }\n </div>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\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().column.editor;\n if (editor) {\n return editor.type;\n }\n return 'text';\n }\n}\n","import { ChangeDetectionStrategy, 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().column.renderComponent;\n inputs: { rowData: cell().row.rowData(), value: cell().getValue() }\n \"></ng-template>`,\n imports: [NgComponentOutlet],\n changeDetection: ChangeDetectionStrategy.OnPush,\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 template: `\n <div>\n @switch (cell().column.type) {\n @case ('custom') {\n <ng2-custom-view-component [cell]=\"cell()\"></ng2-custom-view-component>\n }\n @case ('html') {\n <div [innerHTML]=\"cell().getValue()\"></div>\n }\n @default {\n <div>{{ cell().getValue() }}</div>\n }\n }\n </div>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CustomViewComponent],\n})\nexport class ViewCellComponent {\n readonly cell = input.required<Cell>();\n}\n","import { ChangeDetectionStrategy, 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 [cell]=\"cell()\"> </ng2-table-cell-edit-mode>\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [ViewCellComponent, EditCellComponent],\n})\nexport class CellComponent {\n readonly cell = input.required<Cell>();\n\n readonly isInEditing = input<boolean>(false);\n}\n","import { ChangeDetectionStrategy, Component, computed, input, output } from '@angular/core';\n\nimport { NgTemplateOutlet } from '@angular/common';\nimport { Grid } from '../../../lib/grid';\n\n@Component({\n selector: 'ng2-st-tbody-create-cancel',\n templateUrl: './create-cancel.component.html',\n imports: [NgTemplateOutlet],\n styles: `\n .buttons-wrap {\n display: flex;\n gap: 0.5rem;\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TbodyCreateCancelComponent {\n readonly grid = input.required<Grid>();\n readonly rowIndex = input<number>();\n readonly rowPending = input<boolean>(false);\n\n readonly save = output<unknown>();\n readonly cancelEdit = output<unknown>();\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 || 'Save' : 'Save';\n });\n}\n","<div class=\"buttons-wrap\">\n @if (!rowPending()) {\n <a\n href=\"#\"\n [id]=\"'row-' + rowIndex() + '_editing-confirm-button'\"\n class=\"ng2-smart-action ng2-smart-action-edit-save\"\n [innerHTML]=\"saveButtonContent()\"\n (click)=\"$event.preventDefault(); save.emit($event)\"></a>\n <a\n href=\"#\"\n [id]=\"'row-' + rowIndex() + '_editing-cancel-button'\"\n class=\"ng2-smart-action ng2-smart-action-edit-cancel\"\n [innerHTML]=\"cancelButtonContent()\"\n (click)=\"$event.preventDefault(); cancelEdit.emit($event)\"></a>\n } @else {\n <a class=\"ng2-smart-action ng2-smart-action-edit-save\">\n <ng-container [ngTemplateOutlet]=\"spinner\"></ng-container>\n </a>\n <a class=\"ng2-smart-action ng2-smart-action-edit-save\">\n <ng-container [ngTemplateOutlet]=\"spinner\"></ng-container>\n </a>\n }\n</div>\n\n<ng-template #spinner>\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</ng-template>\n","import { NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, input, output } from '@angular/core';\nimport { Row } from '../../../lib/data-set/row';\nimport { Grid } from '../../../lib/grid';\nimport { BaseDataType, SmartTableCustomAction } from '../../../lib/interfaces/smart-table.models';\n\n@Component({\n selector: 'ng2-row-actions',\n imports: [NgTemplateOutlet],\n templateUrl: './row-actions.component.html',\n styleUrl: './row-actions.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class RowActionsComponent<T extends BaseDataType = any> {\n readonly grid = input.required<Grid>();\n readonly row = input.required<Row>();\n\n readonly editEmitter = output<void>();\n readonly deleteEmitter = output<void>();\n readonly customActionEmitter = output<string>();\n\n readonly customActions = computed<SmartTableCustomAction[]>(() => {\n const { actions } = this.grid().settings();\n if (!actions || !actions.custom) {\n return [];\n }\n const list = actions.custom.filter((action) =>\n !action.hasPermissionFunction ? true : action.hasPermissionFunction(this.row().rowData()),\n );\n return list;\n });\n\n readonly isActionEditActive = computed<boolean>(() => {\n const actions = this.grid().settings().actions;\n const editConfig = this.grid().settings().edit;\n if (!actions || !actions.edit) {\n return false;\n }\n if (!editConfig || !editConfig.hasPermissionFunction) {\n return true;\n }\n return editConfig.hasPermissionFunction(this.row().rowData());\n });\n\n readonly isActionDeleteActive = computed<boolean>(() => {\n const actions = this.grid().settings().actions;\n const deleteConfig = this.grid().settings().delete;\n if (!actions || !actions.delete) {\n return false;\n }\n if (!deleteConfig || !deleteConfig.hasPermissionFunction) {\n return true;\n }\n return deleteConfig.hasPermissionFunction(this.row().rowData());\n });\n readonly isExternalMode = computed<boolean>(() => {\n return this.grid().settings().mode === 'external';\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 readonly allActionsCountArray = computed<string[]>(() => {\n let length = this.customActions().length;\n length += this.isActionDeleteActive() ? 1 : 0;\n length += this.isActionEditActive() ? 1 : 0;\n return new Array(length).fill('');\n });\n\n onCustom(action: SmartTableCustomAction<T>) {\n this.customActionEmitter.emit(action.name);\n }\n\n onEdit(event: Event) {\n event.preventDefault();\n event.stopPropagation();\n this.editEmitter.emit();\n }\n\n onDelete(event: Event) {\n event.preventDefault();\n event.stopPropagation();\n this.deleteEmitter.emit();\n }\n}\n","@if (!row().pending()) {\n @if (isActionEditActive()) {\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)=\"$event.stopPropagation(); $event.preventDefault(); onEdit($event)\"></a>\n }\n @if (isActionDeleteActive()) {\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)=\"$event.stopPropagation(); $event.preventDefault(); onDelete($event)\"></a>\n }\n @for (action of customActions(); track action.name) {\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} @else {\n @for (item of allActionsCountArray(); track $index) {\n <ng-container [ngTemplateOutlet]=\"spinner\"></ng-container>\n }\n}\n\n<ng-template #spinner>\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</ng-template>\n","import { NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, input, output } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { Row } from '../../../lib/data-set/row';\nimport { DataSource } from '../../../lib/data-source/data-source';\nimport { Grid } from '../../../lib/grid';\nimport { CellComponent } from '../../cell/cell.component';\nimport { TbodyCreateCancelComponent } from '../create-cancel/create-cancel.component';\nimport { RowActionsComponent } from '../row-actions/row-actions.component';\n\n@Component({\n selector: '[ng2-st-trow]',\n imports: [NgTemplateOutlet, FormsModule, CellComponent, RowActionsComponent, TbodyCreateCancelComponent],\n templateUrl: './trow.component.html',\n styleUrl: './trow.component.scss',\n host: {\n '[class.ng2-smart-card]': 'isMobileView()',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TrowComponent {\n readonly grid = input.required<Grid>();\n readonly source = input.required<DataSource>();\n readonly row = input.required<Row>();\n\n readonly isMobileView = input<boolean>(false);\n readonly isCreateRow = input<boolean>(false);\n\n readonly edit = output<void>();\n readonly editCancel = output<void>();\n readonly editConfirmed = output<void>();\n readonly deleteEmitter = output<void>();\n readonly createConfirmed = output<void>();\n readonly customActionEmitter = output<string>();\n readonly userClickedRow = output<Row>();\n readonly multipleSelectRow = output<Row>();\n\n onSave() {\n if (this.isCreateRow()) {\n this.createConfirmed.emit();\n } else {\n this.editConfirmed.emit();\n }\n }\n\n onCancelEdit() {\n if (this.isCreateRow()) {\n this.grid().createFormShown.set(false);\n return;\n }\n this.editCancel.emit();\n this.row()?.isInEditing.set(false);\n }\n}\n","@if (isMobileView()) {\n <td colspan=\"50\">\n <div class=\"ng2-smart-card-header\">\n <ng-container [ngTemplateOutlet]=\"multiselectCheckbox\"></ng-container>\n <div class=\"ng2-smart-card-actions\">\n <ng-container [ngTemplateOutlet]=\"actions\"></ng-container>\n </div>\n </div>\n <div class=\"ng2-smart-card-content\">\n @for (cell of row().visibleCells(); track cell.id + $index) {\n <div class=\"ng2-smart-card-field\">\n <div class=\"ng2-smart-card-field-label\">{{ cell.title }}</div>\n <div class=\"ng2-smart-card-field-value\">\n <ng2-smart-table-cell [cell]=\"cell\" [isInEditing]=\"!!row().isInEditing()\"> </ng2-smart-table-cell>\n </div>\n </div>\n }\n </div>\n </td>\n} @else {\n <ng-container [ngTemplateOutlet]=\"multiselectCheckbox\"></ng-container>\n @if (grid().actionIsOnLeft()) {\n <ng-container [ngTemplateOutlet]=\"actions\"></ng-container>\n }\n @for (cell of row().visibleCells(); track cell.id + $index) {\n <td [class]=\"cell.columnClass\" [style]=\"cell.styles\">\n <ng2-smart-table-cell [cell]=\"cell\" [isInEditing]=\"!!row().isInEditing()\"> </ng2-smart-table-cell>\n </td>\n }\n @if (grid().actionIsOnRight()) {\n <ng-container [ngTemplateOutlet]=\"actions\"></ng-container>\n }\n}\n\n<ng-template #actions>\n @if (isCreateRow() || row().isInEditing()) {\n <td class=\"ng2-smart-actions\">\n <ng2-st-tbody-create-cancel\n [grid]=\"grid()\"\n [rowIndex]=\"row().index || 0\"\n (cancelEdit)=\"onCancelEdit()\"\n (save)=\"onSave()\"\n [rowPending]=\"!!row().pending()\"></ng2-st-tbody-create-cancel>\n </td>\n } @else {\n @if (grid().isActionsVisible()) {\n <td class=\"ng2-smart-actions\" (click)=\"$event.stopPropagation()\">\n <ng2-row-actions\n [grid]=\"grid()\"\n [row]=\"row()\"\n (customActionEmitter)=\"customActionEmitter.emit($event)\"\n (editEmitter)=\"edit.emit()\"\n (deleteEmitter)=\"deleteEmitter.emit()\"></ng2-row-actions>\n </td>\n }\n }\n</ng-template>\n\n<ng-template #multiselectCheckbox>\n @if (grid().isMultiSelectVisible() && !isCreateRow()) {\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 }\n</ng-template>\n","import { ChangeDetectionStrategy, Component, computed, input, output } from '@angular/core';\n\nimport { FormsModule } from '@angular/forms';\nimport { Row } from '../../lib/data-set/row';\nimport { DataSource } from '../../lib/data-source/data-source';\nimport { Grid } from '../../lib/grid';\nimport { BaseDataType, SmartTableCustomEvent } from '../../lib/interfaces/smart-table.models';\nimport { TrowComponent } from './trow/trow.component';\n\n@Component({\n selector: '[ng2-st-tbody]',\n styleUrls: ['./tbody.component.scss'],\n templateUrl: './tbody.component.html',\n imports: [FormsModule, TrowComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Ng2SmartTableTbodyComponent<T extends BaseDataType = any> {\n readonly grid = input.required<Grid>();\n readonly source = input.required<DataSource>();\n\n readonly rowClassFunction = input<(rowData: T) => string>(() => '');\n readonly isMobileView = input<boolean>(false);\n\n readonly edit = output<Row>();\n readonly editConfirmed = output<Row>();\n readonly editCancel = output<Row>();\n readonly createConfirmed = output<void>();\n readonly deleteEmitter = output<Row>();\n readonly customActionEmitter = output<SmartTableCustomEvent<T>>();\n readonly userClickedRow = output<Row>();\n readonly multipleSelectRow = output<Row>();\n\n rowClicked(row: Row) {\n if (row.isInEditing()) {\n return;\n }\n this.userClickedRow.emit(row);\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 customActionEmitted(actionName: string, row: Row) {\n this.customActionEmitter.emit({\n source: this.source(),\n data: row.rowData(),\n action: actionName,\n });\n }\n\n protected trackByIdOrIndex(index: number, item: any): string | number {\n return item?.id || index;\n }\n}\n","@if (grid().createFormShown()) {\n <tr\n ng2-st-trow\n class=\"ng2-smart-row\"\n [grid]=\"grid()\"\n [row]=\"grid().getNewRow()\"\n [isCreateRow]=\"true\"\n [source]=\"source()\"\n [isMobileView]=\"isMobileView()\"\n (createConfirmed)=\"createConfirmed.emit()\"></tr>\n}\n@for (row of grid().dataSet.getRows(); track trackByIdOrIndex($index, row)) {\n <tr\n ng2-st-trow\n class=\"ng2-smart-row\"\n [grid]=\"grid()\"\n [source]=\"source()\"\n [row]=\"row\"\n [class]=\"rowClassFunction()(row.rowData())\"\n [isMobileView]=\"isMobileView()\"\n [class.selected]=\"row.isSelected()\"\n (click)=\"rowClicked(row)\"\n (edit)=\"edit.emit(row)\"\n (editConfirmed)=\"editConfirmed.emit(row)\"\n (editCancel)=\"editCancel.emit(row)\"\n (deleteEmitter)=\"deleteEmitter.emit(row)\"\n (customActionEmitter)=\"customActionEmitted($event, row)\"\n (multipleSelectRow)=\"multipleSelectRow.emit($event)\"></tr>\n} @empty {\n <tr>\n <td colspan=\"50\">\n {{ noDataMessage() }}\n </td>\n </tr>\n}\n","import { ChangeDetectionStrategy, Component, computed, input, output } from '@angular/core';\n\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)=\"$event.preventDefault(); onAdd($event)\"></a>\n }\n `,\n host: {\n class: 'ng2-smart-actions-title ng2-smart-actions-title-add',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AddButtonComponent {\n readonly grid = input.required<Grid>();\n readonly create = output<void>();\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: Event) {\n event.preventDefault();\n event.stopPropagation();\n this.create.emit();\n }\n}\n","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\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-st-column-title',\n styleUrls: ['./title.component.scss'],\n template: `\n @if (column().isSortable) {\n <a href=\"#\" (click)=\"_sort($event)\" class=\"ng2-smart-sort-link sort\">\n {{ column().title }}\n <span class=\"sort-direction\">{{ currentSortDirectionSymbol() }}</span>\n </a>\n } @else {\n <span class=\"ng2-smart-sort\">{{ column().title }}</span>\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ColumnTitleComponent {\n readonly source = input.required<DataSource>();\n readonly column = input.required<Column>();\n\n protected readonly currentSortDirection = computed<null | SmartTableSortDirection>(() => {\n const { field, direction } = this.source().getSort();\n return this.column().id === field ? direction : null;\n });\n\n protected readonly currentSortDirectionSymbol = computed<string>(() => {\n return !this.currentSortDirection() ? '' : this.currentSortDirection() === 'asc' ? '↑' : '↓';\n });\n\n _sort(event: Event) {\n event.preventDefault();\n const { id: field, title } = this.column();\n this.source().setSort({\n field,\n title,\n direction: this.currentSortDirection() === 'desc' ? 'asc' : 'desc',\n compare: this.column().compareFunction,\n });\n }\n}\n","import { ChangeDetectionStrategy, Component, computed, OnChanges, OnDestroy, OnInit } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\n\nimport { BaseFilterComponent } from './base-filter.component';\n\n@Component({\n selector: 'ng2-checkbox-filter',\n template: `\n <div class=\"checkbox-filter-wrapper\">\n <input\n [id]=\"column().id\"\n type=\"checkbox\"\n [ngModel]=\"currentState()\"\n (ngModelChange)=\"setCheckFilter($event)\"\n [class]=\"inputClass()\"\n class=\"form-control\" />\n @if (filterIsActive()) {\n <a href=\"#\" (click)=\"$event.preventDefault(); resetFilter($event)\">{{\n column().getFilterConfig()?.resetText || 'reset'\n }}</a>\n }\n </div>\n `,\n styles: `\n .checkbox-filter-wrapper {\n display: flex;\n align-items: center;\n justify-content: flex-start;\n gap: 0.5rem;\n\n input {\n width: auto;\n }\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [FormsModule, ReactiveFormsModule],\n})\nexport class CheckboxFilterComponent extends BaseFilterComponent implements OnInit, OnChanges, OnDestroy {\n readonly filterIsActive = computed(() => this.query() !== null);\n readonly currentState = computed<boolean>(() => {\n const valuesConfig = this.getValuesConfig(this.column().getFilterConfig());\n return this.query() === valuesConfig.trueVal ? true : this.query() === valuesConfig.falseVal ? false : false;\n });\n\n constructor() {\n super();\n }\n\n private getValuesConfig(filterConfig: any): { trueVal: string | true; falseVal: string | false } {\n try {\n const { true: trueVal, false: falseVal } = filterConfig;\n return { trueVal: trueVal || true, falseVal: falseVal ?? false };\n } catch {\n return { trueVal: true, falseVal: false };\n }\n }\n setCheckFilter(state: boolean) {\n const { trueVal, falseVal } = this.getValuesConfig(this.column().getFilterConfig());\n const value = state ? trueVal : falseVal;\n this.setFilter(value);\n }\n\n resetFilter(event: Event) {\n event.preventDefault();\n event.stopPropagation();\n this.setFilter(null);\n }\n}\n","import { ChangeDetectionStrategy, 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 changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [FormsModule, ReactiveFormsModule],\n})\nexport class InputFilterComponent extends BaseFilterComponent {}\n","import { ChangeDetectionStrategy, 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 || 'all' }}</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 changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [FormsModule, ReactiveFormsModule],\n})\nexport class SelectFilterComponent extends BaseFilterComponent {}\n","import { ChangeDetectionStrategy, 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()) {\n @case ('list') {\n <ng2-select-filter\n [query]=\"query()\"\n [class]=\"inputClass()\"\n [source]=\"source()\"\n [column]=\"column()\"\n [filterEmitter]=\"filter\">\n </ng2-select-filter>\n }\n @case ('checkbox') {\n <ng2-checkbox-filter\n [query]=\"query()\"\n [source]=\"source()\"\n [class]=\"inputClass()\"\n [column]=\"column()\"\n [filterEmitter]=\"filter\">\n </ng2-checkbox-filter>\n }\n @default {\n <ng2-input-filter\n [query]=\"query()\"\n [source]=\"source()\"\n [class]=\"inputClass()\"\n [column]=\"column()\"\n [filterEmitter]=\"filter\">\n </ng2-input-filter>\n }\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\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 { ChangeDetectionStrategy, Component, computed, input, output } from '@angular/core';\n\nimport { NgComponentOutlet } from '@angular/common';\nimport { Column } from '../../lib/data-set/column';\nimport { DataSource } from '../../lib/data-source/data-source';\n\n@Component({\n selector: 'ng2-custom-table-filter',\n imports: [NgComponentOutlet],\n template: `\n @if (customFilterComponent(); as component) {\n <ng-template\n *ngComponentOutlet=\"\n component;\n inputs: {\n query: query(),\n inputClass: inputClass(),\n source: source(),\n column: column(),\n filterEmitter: filter,\n }\n \"></ng-template>\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CustomFilterComponent {\n readonly customFilterComponent = computed(() => {\n const columnFilter = this.column().filter;\n if (!columnFilter || columnFilter.type !== 'custom') {\n return null;\n }\n return columnFilter.component;\n });\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","import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\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()) {\n @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 }\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 }\n </div>\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CustomFilterComponent, BuildInFilterComponent],\n})\nexport class FilterComponent {\n protected readonly query = computed<null | string>(() => {\n const columnFilter = this.source()\n .getFilters()\n .find((filter) => filter.field === this.column().id);\n return columnFilter?.search ?? null;\n });\n readonly column = input.required<Column>();\n readonly source = input.required<DataSource>();\n readonly inputClass = input<string>('');\n\n onFilter(query: any) {\n const columnFilter = this.column().filter;\n this.source().addFilter({\n type: columnFilter ? columnFilter.type : 'text',\n field: this.column().id,\n search: query,\n filter: this.column().filterFunction,\n });\n }\n}\n","import { Overlay, OverlayConfig, OverlayRef } from '@angular/cdk/overlay';\nimport { CdkPortal, PortalModule } from '@angular/cdk/portal';\nimport { ChangeDetectionStrategy, Component, ElementRef, inject, input, viewChild } from '@angular/core';\nimport { DataSource } from '../../../lib/data-source/data-source';\nimport { Grid } from '../../../lib/grid';\nimport { FilterComponent } from '../../filter/filter.component';\n\n@Component({\n selector: 'ng2-mobile-filters',\n imports: [FilterComponent, PortalModule],\n templateUrl: './mobile-filters.component.html',\n styleUrl: './mobile-filters.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MobileFiltersComponent {\n protected readonly overlay = inject(Overlay);\n\n readonly contentTemplate = viewChild.required(CdkPortal);\n readonly reference = viewChild.required<ElementRef>('reference');\n\n readonly grid = input.required<Grid>();\n readonly source = input.required<DataSource>();\n readonly filterInputClass = input.required<string>();\n\n protected overlayRef?: OverlayRef;\n\n protected clearAllFilters() {\n this.source().setFilters([]);\n }\n\n public hide() {\n this.overlayRef?.detach();\n this.overlayRef?.dispose();\n }\n\n public show() {\n this.overlayRef = this.overlay.create(this.getOverlayConfig());\n this.overlayRef.attach(this.contentTemplate());\n this.overlayRef.backdropClick().subscribe(() => this.hide());\n }\n\n private getOverlayConfig(): OverlayConfig {\n const positionStrategy = this.overlay\n .position()\n .flexibleConnectedTo(this.reference())\n .withPush(false)\n .withPositions([\n {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'top',\n },\n ]);\n\n return new OverlayConfig({\n positionStrategy: positionStrategy,\n hasBackdrop: true,\n backdropClass: 'cdk-overlay-transparent-backdrop',\n });\n }\n}\n","<button #reference class=\"filter-toggle\" (click)=\"show()\" aria-label=\"Toggle filters\">\n <svg viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\">\n <g id=\"SVGRepo_bgCarrier\" stroke-width=\"0\"></g>\n <g id=\"SVGRepo_tracerCarrier\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></g>\n <g id=\"SVGRepo_iconCarrier\">\n <path stroke=\"#000000\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M20 4H4v2l6 6v8.5l4-2.5v-6l6-6V4z\"></path>\n </g>\n </svg>\n</button>\n\n<ng-template cdk-portal>\n <div class=\"dropdown table-filter-dropdown\">\n <div class=\"dropdown-header\">\n <button type=\"button\" class=\"clear-filters-button\" (click)=\"clearAllFilters()\" aria-label=\"Close filters\">\n reset all\n </button>\n <button type=\"button\" class=\"close-dialog-button\" (click)=\"hide()\" aria-label=\"Close dropdown\">\n <span></span>\n </button>\n </div>\n <div class=\"dropdown-content\">\n <div class=\"ng2-smart-mobil-filters\">\n @for (column of grid().dataSet.getVisibleColumns(); track column.id + $index) {\n @if (column.isFilterable) {\n <div class=\"ng2-smart-filter\">\n <label for=\"\" class=\"ng2-smart-filter-label\">{{ column.title }}</label>\n <ng2-smart-table-filter [source]=\"source()\" [column]=\"column\" [inputClass]=\"filterInputClass()\">\n </ng2-smart-table-filter>\n </div>\n }\n }\n </div>\n </div>\n </div>\n</ng-template>\n","import { ChangeDetectionStrategy, Component, 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 }\n @if (grid().actionIsOnLeft() && grid().isActionsVisible() && !withoutCreateButton()) {\n <th ng2-st-add-button [grid]=\"grid()\" (create)=\"create.emit()\"></th>\n }\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]=\"inputClass()\">\n </ng2-smart-table-filter>\n </th>\n }\n @if (grid().actionIsOnRight() && grid().isActionsVisible() && !withoutCreateButton()) {\n <th ng2-st-add-button [grid]=\"grid()\" (create)=\"create.emit()\"></th>\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [AddButtonComponent, FilterComponent],\n})\nexport class TheadFiltersRowComponent {\n readonly grid = input.required<Grid>();\n readonly source = input.required<DataSource>();\n readonly withoutCreateButton = input<boolean>(false);\n readonly inputClass = input<string>('');\n\n readonly create = output<void>();\n}\n","import { ChangeDetectionStrategy, Component, computed, input } 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 changeDetection: ChangeDetectionStrategy.OnPush,\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 { ChangeDetectionStrategy, 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: ` <input type=\"checkbox\" [ngModel]=\"this.grid().dataSet.isAllSelected()\" /> `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [FormsModule],\n})\nexport class CheckboxSelectAllComponent {\n readonly grid = input.required<Grid>();\n}\n","import { ChangeDetectionStrategy, 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/title/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 }\n @if (grid().actionIsOnLeft() && grid().isActionsVisible()) {\n <th ng2-st-actions-title [grid]=\"grid()\"></th>\n }\n @for (column of grid().dataSet.getVisibleColumns(); track column.id + $index) {\n <th class=\"ng2-smart-th {{ column.id }}\" [class]=\"column.class\">\n <ng2-st-column-title [source]=\"source()\" [column]=\"column\"></ng2-st-column-title>\n </th>\n }\n @if (grid().actionIsOnRight() && grid().isActionsVisible()) {\n <th ng2-st-actions-title [grid]=\"grid()\"></th>\n }\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\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 { ChangeDetectionStrategy, Component, computed, input, output, signal } from '@angular/core';\n\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { Column } from '../../lib/data-set/column';\nimport { DataSource } from '../../lib/data-source/data-source';\nimport { Grid } from '../../lib/grid';\nimport { SmartTableSortDirection } from '../../lib/interfaces/smart-table.models';\nimport { AddButtonComponent } from './cells/add-button.component';\nimport { ColumnTitleComponent } from './cells/title/title.component';\nimport { MobileFiltersComponent } from './mobile-filters/mobile-filters.component';\nimport { TheadFiltersRowComponent } from './rows/thead-filters-row.component';\nimport { TheadTitlesRowComponent } from './rows/thead-titles-row.component';\n\n@Component({\n selector: '[ng2-st-thead]',\n templateUrl: './thead.component.html',\n styleUrls: ['./thead.component.scss'],\n imports: [\n TheadTitlesRowComponent,\n AddButtonComponent,\n MobileFiltersComponent,\n ColumnTitleComponent,\n TheadFiltersRowComponent,\n NgTemplateOutlet,\n OverlayModule,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Ng2SmartTableTheadComponent {\n readonly grid = input.required<Grid>();\n readonly source = input.required<DataSource>();\n readonly isMobileView = input<boolean>(false);\n\n readonly selectAllRows = output<void>();\n readonly create = output<void>();\n\n readonly isHideHeader = computed<boolean>(() => {\n return this.grid().settings()?.hideHeader || false;\n });\n readonly isHideSubHeader = computed<boolean>(() => {\n return this.grid().settings()?.hideSubHeader || false;\n });\n readonly columnsWithSort = computed(() =>\n this.grid()\n .dataSet.getColumns()\n .filter((column) => column.isSortable),\n );\n readonly columnsWithSortLength = computed(() => this.columnsWithSort().length);\n readonly columnsWithFiltersLength = computed(\n () =>\n this.grid()\n .dataSet.getColumns()\n .filter((column) => column.isFilterable).length,\n );\n\n readonly currentSortConfig = computed(() => this.source().getSort());\n\n readonly filterDropdownIsOpen = signal(false);\n\n protected toggleDropdown(state?: boolean) {\n this.filterDropdownIsOpen.update((value) => state ?? !value);\n }\n\n protected sortByColumn(column?: Column): void {\n const sort = this.currentSortConfig();\n const { id: field, title } = column || { id: sort.field, title: sort.title };\n const direction: SmartTableSortDirection =\n field === sort.field ? (sort.direction === 'asc' ? 'desc' : 'asc') : 'asc';\n this.source().setSort({\n field,\n title,\n direction: direction,\n });\n this.filterDropdownIsOpen.set(false);\n }\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","@if (isMobileView()) {\n <tr class=\"ng2-smart-titles mobile-header mobile-header-top-row\">\n <th colspan=\"50\">\n <div class=\"mobile-header-content\">\n <div ng2-st-add-button [grid]=\"grid()\" (create)=\"create.emit($event)\"></div>\n @if (columnsWithSortLength()) {\n <div class=\"current-column-title\">\n <a href=\"#\" (click)=\"$event.preventDefault(); sortByColumn()\" class=\"ng2-smart-sort-link sort\">\n {{ currentSortConfig().title }}\n <span class=\"sort-direction\">{{ currentSortConfig().direction === 'asc' ? '↑' : '↓' }}</span>\n </a>\n @if (columnsWithSortLength() > 1) {\n <button\n #sortTrigger=\"cdkOverlayOrigin\"\n cdkOverlayOrigin\n class=\"sort-dropdown-toggle-button\"\n (click)=\"toggleDropdown(true)\"\n [class.active]=\"filterDropdownIsOpen()\"\n aria-label=\"Toggle sort options\">\n <span class=\"sort-icon\">▼</span>\n </button>\n <ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"sortTrigger\"\n [cdkConnectedOverlayOpen]=\"filterDropdownIsOpen()\"\n [cdkConnectedOverlayWidth]=\"300\"\n (overlayOutsideClick)=\"toggleDropdown(false)\">\n <div class=\"dropdown\">\n <div class=\"dropdown-header\">\n <p></p>\n <button\n type=\"button\"\n class=\"close-dialog-button\"\n (click)=\"toggleDropdown(false)\"\n aria-label=\"Close filters\">\n <span></span>\n </button>\n </div>\n <div class=\"dropdown-content\">\n @for (column of columnsWithSort(); track $index) {\n <th class=\"titles\">\n <ng2-st-column-title\n class=\"sort-option\"\n [column]=\"column\"\n [source]=\"source()\"></ng2-st-column-title>\n </th>\n }\n </div>\n </div>\n </ng-template>\n }\n </div>\n }\n\n <div class=\"header-actions\">\n @if (columnsWithFiltersLength()) {\n <ng2-mobile-filters [grid]=\"grid()\" [source]=\"source()\" [filterInputClass]=\"filterInputClass()\">\n </ng2-mobile-filters>\n }\n </div>\n </div>\n </th>\n </tr>\n} @else {\n <!-- Desktop view header -->\n @if (!isHideHeader()) {\n <tr\n ng2-st-thead-titles-row\n class=\"ng2-smart-titles\"\n [grid]=\"grid()\"\n [source]=\"source()\"\n (selectAllRows)=\"selectAllRows.emit()\"></tr>\n }\n\n @if (!isHideSubHeader()) {\n <ng-container [ngTemplateOutlet]=\"filtersRow\"></ng-container>\n }\n}\n\n<ng-template #filtersRow>\n <tr\n ng2-st-thead-filters-row\n class=\"ng2-smart-filters\"\n [grid]=\"grid()\"\n [inputClass]=\"filterInputClass()\"\n [withoutCreateButton]=\"isMobileView()\"\n [source]=\"source()\"\n (create)=\"create.emit()\"></tr>\n</ng-template>\n","import { computed, signal } from '@angular/core';\nimport { isObjectsIdentical } from '../helpers';\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 selectedRowsData: any[] = [];\n\n readonly getColumns = computed(() => this.columns());\n readonly getVisibleColumns = computed(() => this.columns().filter((column: Column) => !column.hide));\n readonly getRows = computed(() => {\n return this.rows();\n });\n\n readonly isAllSelected = computed<boolean>(() => this.rows().every((row) => row.isSelected()));\n\n constructor(\n dataList: any[] = [],\n protected columnSettings: SmartTableColumnSettings[],\n public readonly editorInputClass: string,\n ) {\n this.createColumns(columnSettings);\n this.setData(dataList);\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 findRowByData(data: any): Row | undefined {\n return this.rows().find((row: Row) => isObjectsIdentical(row.rowData(), 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 resetAllSelection() {\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.selectedRowsData = [];\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 return row;\n }\n\n getSelectedRowsData() {\n return this.selectedRowsData;\n }\n\n createNewRow() {\n this.newRow = new Row(-1, {}, this.getColumns());\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((params) => new Column(params.key as string, params, this));\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.getColumns());\n row.isSelected.set(this.isSelectedHasRow(el));\n return row;\n });\n this.rows.set(rows);\n }\n\n private isSelectedHasRow(data: any) {\n return this.selectedRowsData.some((rowData) => isObjectsIdentical(rowData, data));\n }\n\n private storeSelectedRow(row: Row): void {\n if (row.isSelected()) {\n if (this.isSelectedHasRow(row.rowData())) {\n //check if row already in selected array to prevent duplicate\n return;\n }\n this.selectedRowsData.push(row.rowData());\n } else {\n const index = this.selectedRowsData.findIndex((rowData) => isObjectsIdentical(rowData, row));\n if (index !== -1) {\n this.selectedRowsData.splice(index, 1);\n }\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 BaseDataType,\n ColumnPositionState,\n SmartTableColumnSettings,\n SmartTableConfirmDeleteEvent,\n SmartTableOnChangedEvent,\n SmartTableOnChangedEventName,\n SmartTablePagerSettings,\n SmartTableSettings,\n SmartTableSortItem,\n} from './interfaces/smart-table.models';\n\nexport class Grid {\n source!: DataSource;\n dataSet!: DataSet;\n\n currentColumnsSortState: ColumnPositionState[] = [];\n\n private columnsSortedEmitter!: OutputEmitterRef<ColumnPositionState[]>;\n private sourceOnChangedSubscription: Subscription | undefined;\n\n readonly settings = signal<SmartTableSettings>({} as SmartTableSettings);\n readonly createFormShown = signal<boolean>(false);\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.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 }\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<BaseDataType>();\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.set(false);\n this.dataSet.createNewRow();\n });\n })\n .catch(() => {\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();\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<BaseDataType>();\n deferred.promise\n .then((newData) => {\n row.pending.set(false);\n newData = newData || row.getNewData();\n this.source.update(row.rowData(), 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.rowData(),\n newData: row.getNewData(),\n source: this.source,\n confirm: deferred,\n });\n } else {\n deferred.resolve();\n row.pending.set(false);\n }\n }\n\n delete<T extends BaseDataType = BaseDataType>(\n row: Row,\n confirmEmitter: EventEmitter<SmartTableConfirmDeleteEvent<T>> | OutputEmitterRef<SmartTableConfirmDeleteEvent<T>>,\n ) {\n row.pending.set(true);\n const deferred = new Deferred<T>();\n deferred.promise\n .then(() => {\n row.pending.set(false);\n this.source.remove(row.rowData());\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.rowData(),\n source: this.source,\n confirm: deferred,\n });\n } else {\n deferred.resolve(null as unknown as T);\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 (['load', 'empty', 'refresh'].includes(event.action)) {\n this.dataSet.resetAllSelection();\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 initialSortColumn = columns?.find((column) => column?.sortDirection);\n if (!initialSortColumn) {\n return false;\n }\n return {\n field: initialSortColumn.key as string,\n title: initialSortColumn.title,\n direction: initialSortColumn.sortDirection || 'asc',\n compare: initialSortColumn.compareFunction,\n };\n }\n\n getSelectedRowsData() {\n return this.dataSet.getSelectedRowsData();\n }\n\n selectAllRows(status: boolean) {\n this.dataSet.setSelectAll(status);\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 const editorInputClass = settings.edit ? settings.edit.inputClass || '' : '';\n this.dataSet = new DataSet([], settings.columns, editorInputClass);\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 {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n NgZone,\n OnChanges,\n OnDestroy,\n SimpleChange,\n computed,\n input,\n output,\n signal,\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 BaseDataType,\n ColumnPositionState,\n SmartTableBaseEvent,\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 imports: [Ng2SmartTableTheadComponent, Ng2SmartTableTbodyComponent, PagerComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Ng2SmartTableComponent<T extends BaseDataType = any> implements OnChanges, OnDestroy, AfterViewInit {\n readonly source = input.required<DataSource<T>>();\n readonly settings = input.required<SmartTableSettings<T>>();\n\n readonly multiRowSelect = output<SmartTableRowSelectEvent<T>>();\n readonly rowClicked = output<SmartTableRowClickedEvent<T>>();\n readonly columnsSorted = output<ColumnPositionState[]>();\n\n readonly deleteEmitter = output<SmartTableBaseEvent<T>>();\n readonly deleteConfirm = output<SmartTableConfirmDeleteEvent<T>>();\n\n readonly edit = output<SmartTableBaseEvent<T>>();\n readonly editConfirm = output<SmartTableConfirmEditEvent<T>>();\n readonly editCancel = output<SmartTableBaseEvent<T>>();\n\n readonly create = output<SmartTableBaseEvent<T>>();\n readonly createConfirm = output<SmartTableCreateConfirm<T>>();\n\n readonly custom = output<SmartTableCustomEvent<T>>();\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<(rowData: T) => string>(() => {\n const settings = this.settings();\n return settings.rowClassFunction ? (rowData: T) => settings.rowClassFunction!(rowData) : () => '';\n });\n\n protected readonly isMobileView = signal<boolean>(false);\n protected readonly tableWidthMobileBreakpoint = computed<number | undefined>(() => {\n return this.settings().tableWidthMobileBreakpoint;\n });\n\n grid!: Grid;\n\n private readonly isExternalMode = computed<boolean>(() => {\n return this.grid.settings().mode === 'external';\n });\n private resizeObserver: ResizeObserver | null = null;\n private resizeDebounceTimer: ReturnType<typeof setTimeout> | null = null;\n\n constructor(\n private elementRef: ElementRef,\n private ngZone: NgZone,\n ) {}\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 ngAfterViewInit(): void {\n this.setupResizeObserver();\n }\n\n ngOnDestroy(): void {\n this.grid.detach();\n this.destroyResizeObserver();\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.rowData() : null,\n source: this.source(),\n });\n }\n\n protected customActionEmitted(event: SmartTableCustomEvent<T>) {\n this.custom.emit(event);\n }\n\n protected editEmitted(row: Row) {\n if (this.isExternalMode()) {\n this.edit.emit({\n data: row.rowData(),\n source: this.source(),\n });\n return;\n }\n row.isInEditing.set(true);\n }\n\n protected editConfirmed(row: Row) {\n this.grid.save(row, this.editConfirm);\n }\n\n protected editCanceled(row: Row) {\n this.editCancel.emit({ data: row.rowData(), source: this.source() });\n }\n\n protected createEmitted() {\n if (this.isExternalMode()) {\n this.create.emit({ data: this.grid.getNewRow().getNewData(), source: this.source() });\n } else {\n this.grid.createFormShown.set(true);\n }\n }\n\n protected createConfirmed() {\n this.grid.create(this.grid.getNewRow(), this.createConfirm);\n }\n\n protected deleEmitted(row: Row) {\n if (this.isExternalMode()) {\n this.deleteEmitter.emit({\n data: row.rowData(),\n source: this.source(),\n });\n } else {\n this.grid.delete(row, this.deleteConfirm);\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.rowData() : null,\n isSelected: row ? row.isSelected() : false,\n source: this.source(),\n selected: this.grid.dataSet.getSelectedRowsData(),\n });\n }\n\n private setupResizeObserver(): void {\n if (typeof ResizeObserver === 'undefined' || !this.tableWidthMobileBreakpoint()) {\n return;\n }\n\n this.resizeObserver = new ResizeObserver((entries) => {\n if (this.resizeDebounceTimer) {\n clearTimeout(this.resizeDebounceTimer);\n }\n\n this.resizeDebounceTimer = setTimeout(() => {\n this.ngZone.run(() => {\n for (const entry of entries) {\n const breakpoint = this.tableWidthMobileBreakpoint();\n if (breakpoint) {\n const containerWidth = entry.contentRect.width;\n this.isMobileView.set(containerWidth < breakpoint);\n }\n }\n });\n }, 20);\n });\n\n const hostElement = this.elementRef.nativeElement;\n if (hostElement) {\n this.resizeObserver.observe(hostElement);\n }\n }\n\n private destroyResizeObserver(): void {\n if (this.resizeObserver) {\n this.resizeObserver.disconnect();\n this.resizeObserver = null;\n }\n\n if (this.resizeDebounceTimer) {\n clearTimeout(this.resizeDebounceTimer);\n this.resizeDebounceTimer = null;\n }\n }\n}\n","<table [id]=\"tableId()\" [class]=\"tableClass()\" [class.mobile-view]=\"isMobileView()\">\n <thead\n ng2-st-thead\n [grid]=\"grid\"\n [source]=\"source()\"\n [isMobileView]=\"isMobileView()\"\n (create)=\"createEmitted()\"\n (selectAllRows)=\"onSelectAllRows()\"></thead>\n\n <tbody\n ng2-st-tbody\n [grid]=\"grid\"\n [source]=\"source()\"\n [rowClassFunction]=\"rowClassFunction()\"\n [isMobileView]=\"isMobileView()\"\n (deleteEmitter)=\"deleEmitted($event)\"\n (edit)=\"editEmitted($event)\"\n (editConfirmed)=\"editConfirmed($event)\"\n (editCancel)=\"editCanceled($event)\"\n (createConfirmed)=\"createConfirmed()\"\n (customActionEmitter)=\"customActionEmitted($event)\"\n (userClickedRow)=\"emitUserRowClicked($event)\"\n (multipleSelectRow)=\"multipleSelectRow($event)\"></tbody>\n</table>\n\n@if (isPagerDisplay()) {\n <ng2-smart-table-pager [source]=\"source()\"> </ng2-smart-table-pager>\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1"],"mappings":"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"}
@@ -28,4 +28,9 @@ export declare abstract class DataSource<T extends BaseDataType = any> {
28
28
  setPaging(page: number | undefined, perPage: number, doEmit?: boolean): void;
29
29
  setPage(page: number, doEmit?: boolean): void;
30
30
  emitOnChanged(eventData: SmartTableOnChangedEventToEmit, newElements?: T[]): void;
31
+ /**
32
+ * @param difference number to plus total
33
+ * @example -2 or 2
34
+ */
35
+ private updateTotal;
31
36
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@den4ik92/ng2-smart-table",
3
- "version": "19.5.45",
3
+ "version": "19.5.46",
4
4
  "description": "Angular Smart Table",
5
5
  "author": "Den4ik92",
6
6
  "license": "MIT",