@ngneers/controls 0.0.1-pre3 → 0.0.1-pre4

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.
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { contentChild, ChangeDetectionStrategy, Component, signal, input, model, computed, Directive, inject, Renderer2, ElementRef, effect, NgModule, ViewContainerRef } from '@angular/core';
2
+ import { contentChild, ChangeDetectionStrategy, Component, signal, input, model, computed, Directive, inject, Renderer2, ElementRef, afterNextRender, effect, NgModule, ViewContainerRef } from '@angular/core';
3
3
  import { NgTemplateOutlet } from '@angular/common';
4
4
  import { executeMultiFilter } from '@ngneers/controls/api';
5
5
  import { templateTypesFn, NgnTemplate, injectThemeTemplate, setComponentInput } from '@ngneers/controls/api/ng';
@@ -163,9 +163,13 @@ class NgnTableTh extends NgnBase {
163
163
  constructor() {
164
164
  super();
165
165
  this.prepareDom();
166
- const element = inject(Renderer2).createElement('div');
167
- element.classList.add(this.theme.class('spacer'));
168
- inject(ElementRef).nativeElement.appendChild(element);
166
+ const renderer = inject(Renderer2);
167
+ const elRef = inject(ElementRef);
168
+ afterNextRender(() => {
169
+ const element = renderer.createElement('div');
170
+ element.classList.add(this.theme.class('spacer'));
171
+ elRef.nativeElement.appendChild(element);
172
+ });
169
173
  }
170
174
  ngOnInit() {
171
175
  const table = getNearestNgnInstance(this.element.nativeElement, (NgnTable));
@@ -1 +1 @@
1
- {"version":3,"file":"ngneers-controls-table.mjs","sources":["../../src/table/table-templates.ts","../../src/table/table.ts","../../src/table/table.html","../../src/table/table-cell.ts","../../src/table/table-header-cell.ts","../../src/table/table-header-row.ts","../../src/table/table-row.ts","../../src/table/module.ts","../../src/table/table-filterable-column.ts","../../src/table/table-sortable-column.ts","../../src/table/ngneers-controls-table.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, contentChild, TemplateRef } from '@angular/core';\r\nimport { templateTypesFn } from '@ngneers/controls/api/ng';\r\nimport { NgnBase } from '@ngneers/controls/base';\r\n\r\nimport type { FormattedTableRow } from './types';\r\n\r\n@Component({\r\n template: '',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport abstract class NgnTableTemplates<T extends object> extends NgnBase<'table'> {\r\n private readonly _headerTemplate = contentChild<TemplateRef<unknown>>('header');\r\n private readonly _bodyTemplate =\r\n contentChild<TemplateRef<typeof this.templateTypes.body>>('body');\r\n\r\n protected readonly headerTemplate = this._headerTemplate;\r\n protected readonly bodyTemplate = this._bodyTemplate;\r\n\r\n /**\r\n * Types for the calendar templates.\r\n */\r\n public readonly templateTypes = templateTypesFn<{\r\n /**\r\n * Type of the template variable for the body template.\r\n */\r\n body: { $implicit: FormattedTableRow<T> };\r\n }>();\r\n}\r\n","import { NgTemplateOutlet } from '@angular/common';\r\nimport { ChangeDetectionStrategy, Component, computed, input, model, signal } from '@angular/core';\r\nimport { executeMultiFilter } from '@ngneers/controls/api';\r\nimport { NgnTemplate } from '@ngneers/controls/api/ng';\r\nimport { NgnPt, provideSelf } from '@ngneers/controls/base';\r\nimport { NgnPaginator, type PaginationState } from '@ngneers/controls/paginator';\r\nimport { NgnScroller } from '@ngneers/controls/scroller';\r\nimport { tableControlTemplate } from '@ngneers/controls-themes/templates/table';\r\n\r\nimport { NgnTableTemplates } from './table-templates';\r\n\r\nimport type { NgnTableTh } from './table-header-cell';\r\nimport type { FormattedTableRow } from './types';\r\nimport type { NgnFilterConfig } from '@ngneers/controls/filter';\r\nimport type { AllKeysOfUnion } from '@ngneers/controls/utils';\r\n\r\n@Component({\r\n selector: 'ngn-table',\r\n templateUrl: './table.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [NgTemplateOutlet, NgnScroller, NgnPaginator, NgnTemplate, NgnPt],\r\n providers: [provideSelf(NgnTable)],\r\n host: {\r\n tabindex: '0',\r\n },\r\n})\r\nexport class NgnTable<T extends object, K extends keyof T> extends NgnTableTemplates<T> {\r\n protected readonly theme = this.injectThemeTemplate(tableControlTemplate, {\r\n root: true,\r\n virtual: () => this.virtual(),\r\n });\r\n private readonly _registeredHeaderCells = signal<NgnTableTh[]>([]);\r\n\r\n public readonly rows = input.required<readonly T[]>();\r\n public readonly rowHeight = input<number>();\r\n public readonly fieldId = input.required<K>();\r\n public readonly virtual = input<boolean>(false);\r\n public readonly virtualPadding = input<number>(2);\r\n public readonly striped = input<boolean>(false);\r\n public readonly paginator = input<boolean>(false);\r\n protected readonly trackById = (item: T): unknown => item[this.fieldId()];\r\n public readonly sort = model<{\r\n column: Extract<AllKeysOfUnion<T>, string>;\r\n direction: 'asc' | 'desc';\r\n } | null>(null);\r\n public readonly filters = model<\r\n | {\r\n [key in Extract<AllKeysOfUnion<T>, string>]?: NgnFilterConfig;\r\n }\r\n | null\r\n >(null);\r\n protected readonly pageState = signal<PaginationState | null>(null);\r\n\r\n protected readonly formattedRows = computed<FormattedTableRow<T>[]>(() => {\r\n const rows = this._sortedRows();\r\n return rows.map((data, index) => ({\r\n kind: 'data' as const,\r\n id: data[this.fieldId()] as T[keyof T] & (string | number),\r\n data,\r\n index,\r\n }));\r\n });\r\n\r\n protected readonly pagedRows = computed<FormattedTableRow<T>[]>(() => {\r\n const paginator = this.paginator();\r\n if (!paginator) {\r\n return this.formattedRows();\r\n }\r\n const pageState = this.pageState();\r\n if (!pageState) {\r\n return [];\r\n }\r\n return this.formattedRows().slice(\r\n pageState.slice.skip,\r\n pageState.slice.take + pageState.slice.skip\r\n );\r\n });\r\n\r\n private readonly _filteredRows = computed<readonly T[]>(() => {\r\n const filters = this.filters();\r\n const rows = this.rows();\r\n if (!filters) {\r\n return rows;\r\n }\r\n return executeMultiFilter(rows, filters);\r\n });\r\n\r\n private readonly _sortedRows = computed<readonly T[]>(() => {\r\n const rows = this._filteredRows();\r\n const sort = this.sort();\r\n if (!sort) {\r\n return rows;\r\n }\r\n const { column, direction } = sort;\r\n // @jasc @todo outsource sorting & allow custom sort functions\r\n return rows.toSorted((a, b) => {\r\n const aValue = a[column];\r\n const bValue = b[column];\r\n if (aValue == null && bValue != null) {\r\n return direction === 'asc' ? -1 : 1;\r\n }\r\n if (aValue != null && bValue == null) {\r\n return direction === 'asc' ? 1 : -1;\r\n }\r\n if (aValue == null && bValue == null) {\r\n return 0;\r\n }\r\n return typeof aValue === 'number' && typeof bValue === 'number'\r\n ? direction === 'asc'\r\n ? (aValue as number) - (bValue as number)\r\n : (bValue as number) - (aValue as number)\r\n : direction === 'asc'\r\n ? String(aValue).localeCompare(String(bValue))\r\n : String(bValue).localeCompare(String(aValue));\r\n });\r\n });\r\n\r\n protected readonly columnCount = computed(() => this._registeredHeaderCells().length);\r\n\r\n protected pageChanged(event: PaginationState) {\r\n this.pageState.set(event);\r\n }\r\n\r\n public column<V extends AllKeysOfUnion<T> & string>(column: V): V {\r\n return column;\r\n }\r\n\r\n public registerHeaderCell(cell: NgnTableTh): void {\r\n this._registeredHeaderCells.update(cells => [...cells, cell]);\r\n }\r\n\r\n public unregisterHeaderCell(cell: NgnTableTh): void {\r\n this._registeredHeaderCells.update(cells => cells.filter(c => c !== cell));\r\n }\r\n}\r\n","<table\r\n [ptInt]=\"this\"\r\n [ptClass]=\"{ table: true, striped: striped() }\"\r\n [attr.aria-rowcount]=\"rows().length\"\r\n [style.--ngn-table-column-count]=\"columnCount()\"\r\n [style.--ngn-table-row-height.px]=\"rowHeight()\"\r\n>\r\n <thead [ptInt]=\"this\" [ptClass]=\"'head'\">\r\n <ng-container [ngTemplateOutlet]=\"headerTemplate()\"></ng-container>\r\n </thead>\r\n\r\n <tbody\r\n [ptInt]=\"this\"\r\n [ptClass]=\"'body'\"\r\n ngn-scroller\r\n #scroller\r\n [virtual]=\"virtual()\"\r\n [items]=\"pagedRows()\"\r\n [fieldId]=\"'id'\"\r\n [itemHeight]=\"rowHeight() || 0\"\r\n [virtualPadding]=\"virtualPadding()\"\r\n [style.--ngn-table-item-start-index]=\"scroller.itemStartIndex()\"\r\n >\r\n <ng-template #item [ngnTemplate]=\"scroller.templateTypes.item\" let-item let-index=\"index\">\r\n <ng-container\r\n [ngTemplateOutlet]=\"bodyTemplate()\"\r\n [ngTemplateOutletContext]=\"{ $implicit: item }\"\r\n ></ng-container>\r\n </ng-template>\r\n </tbody>\r\n</table>\r\n@if (paginator()) {\r\n <ngn-paginator [totalItems]=\"rows().length\" (value)=\"pageChanged($event)\" />\r\n}\r\n","import { Directive, signal } from '@angular/core';\r\nimport { NgnBase } from '@ngneers/controls/base';\r\nimport { toggleClass } from '@ngneers/controls/utils';\r\nimport { tableControlTemplate } from '@ngneers/controls-themes/templates/table';\r\n\r\n@Directive({\r\n selector: '[ngnTableTd]',\r\n host: { '[style.--ngn-table-column-index]': 'columnIndex()' },\r\n})\r\nexport class NgnTableTd extends NgnBase<'table'> {\r\n protected readonly theme = this.injectThemeTemplate(tableControlTemplate);\r\n\r\n protected readonly columnIndex = signal(0);\r\n\r\n constructor() {\r\n super();\r\n this.prepareDom();\r\n const parent = this.element.nativeElement.parentElement?.children;\r\n if (parent) {\r\n const index = Array.from(parent).findIndex(child => child === this.element.nativeElement);\r\n this.columnIndex.set(index + 1);\r\n }\r\n }\r\n\r\n private prepareDom() {\r\n toggleClass(this.element.nativeElement, this.theme.class('cell'), true);\r\n }\r\n}\r\n","import {\r\n Directive,\r\n ElementRef,\r\n inject,\r\n input,\r\n type OnDestroy,\r\n type OnInit,\r\n Renderer2,\r\n} from '@angular/core';\r\nimport { getNearestNgnInstance, NgnBase } from '@ngneers/controls/base';\r\nimport { NgnError, toggleClass } from '@ngneers/controls/utils';\r\nimport { tableControlTemplate } from '@ngneers/controls-themes/templates/table';\r\n\r\nimport { NgnTable } from './table';\r\n\r\n@Directive({ selector: '[ngnTableTh]' })\r\nexport class NgnTableTh extends NgnBase<'table'> implements OnDestroy, OnInit {\r\n protected readonly theme = this.injectThemeTemplate(tableControlTemplate);\r\n private _table?: NgnTable<any, any>;\r\n\r\n public readonly ngnTableTh = input.required<string>();\r\n\r\n constructor() {\r\n super();\r\n this.prepareDom();\r\n\r\n const element = inject(Renderer2).createElement('div');\r\n element.classList.add(this.theme.class('spacer'));\r\n inject<ElementRef<HTMLElement>>(ElementRef).nativeElement.appendChild(element);\r\n }\r\n\r\n public ngOnInit(): void {\r\n const table = getNearestNgnInstance(this.element.nativeElement, NgnTable<any, any>);\r\n if (!table) {\r\n throw new NgnError('ngnTableTh', 'ngnTableTh must be used within an NgnTable component');\r\n }\r\n this._table = table;\r\n this._table.registerHeaderCell(this);\r\n }\r\n\r\n public ngOnDestroy(): void {\r\n this._table?.unregisterHeaderCell(this);\r\n }\r\n\r\n private prepareDom() {\r\n toggleClass(this.element.nativeElement, this.theme.class('cell'), true);\r\n }\r\n}\r\n","import { Directive } from '@angular/core';\r\nimport { NgnBase } from '@ngneers/controls/base';\r\nimport { toggleClass } from '@ngneers/controls/utils';\r\nimport { tableControlTemplate } from '@ngneers/controls-themes/templates/table';\r\n\r\n@Directive({ selector: '[ngnTableHeadTr]', host: { '[attr.aria-rowindex]': '1' } })\r\nexport class NgnTableHeadTr extends NgnBase<'table'> {\r\n protected readonly theme = this.injectThemeTemplate(tableControlTemplate);\r\n constructor() {\r\n super();\r\n this.prepareDom();\r\n }\r\n\r\n private prepareDom() {\r\n toggleClass(this.element.nativeElement, this.theme.class('row'), true);\r\n }\r\n}\r\n","import { Directive, effect, ElementRef, inject, input } from '@angular/core';\r\nimport { injectThemeTemplate } from '@ngneers/controls/api/ng';\r\nimport { NgnScrollerItem } from '@ngneers/controls/scroller';\r\nimport { toggleClass } from '@ngneers/controls/utils';\r\nimport { setInputSignalValue } from '@ngneers/controls/utils-ng';\r\nimport { tableControlTemplate } from '@ngneers/controls-themes/templates/table';\r\n\r\nimport type { FormattedTableRow } from './types';\r\n\r\n@Directive({\r\n selector: '[ngnTableBodyTr]',\r\n host: {\r\n '[attr.aria-rowindex]': 'ngnTableBodyTr().index + 2',\r\n '[style.--ngn-table-row-index]': 'ngnTableBodyTr().index + 2',\r\n '[class]': `theme.classes({'even': ngnTableBodyTr().index % 2 === 0})`,\r\n },\r\n})\r\nexport class NgnTableBodyTr<T> extends NgnScrollerItem {\r\n public readonly ngnTableBodyTr = input.required<FormattedTableRow<T>>();\r\n public override readonly ngnScrollerItem = input<object>({});\r\n private readonly _element = inject(ElementRef<HTMLElement>);\r\n protected readonly theme = injectThemeTemplate(tableControlTemplate);\r\n\r\n constructor() {\r\n super();\r\n effect(() => {\r\n const row = this.ngnTableBodyTr();\r\n setInputSignalValue(this.ngnScrollerItem, row);\r\n });\r\n this.prepareDom();\r\n }\r\n\r\n private prepareDom() {\r\n toggleClass(this._element.nativeElement, this.theme.class('row'), true);\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\n\r\nimport { NgnTable } from './table';\r\nimport { NgnTableTd } from './table-cell';\r\nimport { NgnTableTh } from './table-header-cell';\r\nimport { NgnTableHeadTr } from './table-header-row';\r\nimport { NgnTableBodyTr } from './table-row';\r\n\r\n@NgModule({\r\n imports: [NgnTable, NgnTableBodyTr, NgnTableTd, NgnTableTh, NgnTableHeadTr],\r\n exports: [NgnTable, NgnTableBodyTr, NgnTableTd, NgnTableTh, NgnTableHeadTr],\r\n})\r\nexport class NgnTableModule {}\r\n","import {\r\n ComponentRef,\r\n computed,\r\n Directive,\r\n effect,\r\n ElementRef,\r\n inject,\r\n input,\r\n type OnDestroy,\r\n Type,\r\n ViewContainerRef,\r\n} from '@angular/core';\r\nimport { injectThemeTemplate, setComponentInput } from '@ngneers/controls/api/ng';\r\nimport { getNearestNgnInstanceSig } from '@ngneers/controls/base';\r\nimport { NgnActionButton } from '@ngneers/controls/button';\r\nimport { NgnFilter, type NgnFilterDataType } from '@ngneers/controls/filter';\r\nimport { tableControlTemplate } from '@ngneers/controls-themes/templates/table';\r\n\r\nimport { NgnTable } from './table';\r\nimport { NgnTableTh } from './table-header-cell';\r\n\r\nimport type { NgnActionButtonConfig } from '@ngneers/controls/api';\r\n\r\n@Directive({\r\n selector: '[ngnTableFilterableColumn]',\r\n host: {\r\n '[class]': `theme.classes({'filterable-column': true, 'filtered-column': !!filter() })`,\r\n },\r\n})\r\nexport class NgnTableFilterableColumn implements OnDestroy {\r\n protected readonly theme = injectThemeTemplate(tableControlTemplate);\r\n private readonly _element = inject<ElementRef<HTMLElement>>(ElementRef);\r\n private readonly _columnId = inject(NgnTableTh).ngnTableTh;\r\n\r\n public readonly ngnTableFilterableColumn = input();\r\n\r\n private readonly _ngnActionButton: ComponentRef<NgnActionButton<null>>;\r\n private readonly _ngnFilter: ComponentRef<NgnFilter>;\r\n\r\n private readonly _table = getNearestNgnInstanceSig<Type<NgnTable<any, any>>>(\r\n this._element.nativeElement,\r\n NgnTable\r\n );\r\n private readonly _rows = computed(() => {\r\n return this._table()?.rows() || [];\r\n });\r\n protected readonly filter = computed(() => {\r\n const tableFilter = this._table()?.filters()?.[this._columnId()];\r\n return tableFilter;\r\n });\r\n\r\n public readonly ngnTableFilterableColumnType = input.required<NgnFilterDataType>();\r\n public readonly ngnTableFilterableColumnItems = input<string[] | null | undefined>();\r\n\r\n constructor() {\r\n this._ngnActionButton = inject(ViewContainerRef).createComponent(NgnActionButton<null>);\r\n this._ngnFilter = inject(ViewContainerRef).createComponent(NgnFilter);\r\n this._element.nativeElement.appendChild(this._ngnActionButton.location.nativeElement);\r\n this._element.nativeElement.appendChild(this._ngnFilter.location.nativeElement);\r\n this._ngnActionButton.location.nativeElement.classList.add(this.theme.class('filter-control'));\r\n\r\n setComponentInput(this._ngnActionButton, 'kind', 'icon');\r\n setComponentInput(this._ngnFilter, 'anchor', this._ngnActionButton.location.nativeElement);\r\n setComponentInput(this._ngnFilter, 'mode', 'headless');\r\n setComponentInput(this._ngnFilter, 'allowMultiple', true);\r\n\r\n const cfg = computed(\r\n () =>\r\n <NgnActionButtonConfig<null>>{\r\n label: 'Filter',\r\n value: null,\r\n kind: 'icon',\r\n defaultIcon: this.filter() ? 'filter_solid' : 'filter',\r\n action: event => {\r\n event.stopPropagation();\r\n this._ngnFilter.instance.show();\r\n },\r\n }\r\n );\r\n\r\n effect(() => {\r\n setComponentInput(this._ngnActionButton, 'config', cfg());\r\n });\r\n effect(() => {\r\n setComponentInput(\r\n this._ngnFilter,\r\n 'data',\r\n this._rows().map(row => row[this._columnId()])\r\n );\r\n });\r\n effect(() => {\r\n setComponentInput(this._ngnFilter, 'dataType', this.ngnTableFilterableColumnType());\r\n });\r\n effect(() => {\r\n setComponentInput(this._ngnFilter, 'listOptions', this.ngnTableFilterableColumnItems());\r\n });\r\n this._ngnFilter.instance.filterChange.subscribe(cfg => {\r\n const table = this._table();\r\n const currentFilters = table?.filters() || {};\r\n table?.filters.set({ ...currentFilters, [this._columnId()]: cfg ?? undefined });\r\n });\r\n }\r\n\r\n public ngOnDestroy(): void {\r\n this._ngnActionButton.destroy();\r\n this._ngnFilter.destroy();\r\n }\r\n}\r\n","import {\r\n ComponentRef,\r\n computed,\r\n Directive,\r\n effect,\r\n ElementRef,\r\n inject,\r\n input,\r\n type OnDestroy,\r\n Type,\r\n ViewContainerRef,\r\n} from '@angular/core';\r\nimport { injectThemeTemplate, setComponentInput } from '@ngneers/controls/api/ng';\r\nimport { getNearestNgnInstanceSig } from '@ngneers/controls/base';\r\nimport { NgnIcon } from '@ngneers/controls/icon';\r\nimport { tableControlTemplate } from '@ngneers/controls-themes/templates/table';\r\n\r\nimport { NgnTable } from './table';\r\nimport { NgnTableTh } from './table-header-cell';\r\n\r\n@Directive({\r\n selector: '[ngnTableSortableColumn]',\r\n host: {\r\n '[class]': `theme.classes({'sortable-column': true, 'sorted-column': !!sort() })`,\r\n '(click)': `toggleSort()`,\r\n },\r\n})\r\nexport class NgnTableSortableColumn implements OnDestroy {\r\n protected readonly theme = injectThemeTemplate(tableControlTemplate);\r\n private readonly _element = inject<ElementRef<HTMLElement>>(ElementRef);\r\n\r\n public readonly ngnTableSortableColumn = input();\r\n\r\n private readonly _table = getNearestNgnInstanceSig<Type<NgnTable<any, any>>>(\r\n this._element.nativeElement,\r\n NgnTable\r\n );\r\n protected readonly sort = computed(() => {\r\n const tableSort = this._table()?.sort();\r\n if (tableSort?.column === this.columnId()) {\r\n return tableSort.direction;\r\n }\r\n return null;\r\n });\r\n\r\n private readonly columnId = inject(NgnTableTh).ngnTableTh;\r\n\r\n private readonly _ngnIcon: ComponentRef<NgnIcon>;\r\n\r\n constructor() {\r\n this._ngnIcon = inject(ViewContainerRef).createComponent(NgnIcon);\r\n this._element.nativeElement.appendChild(this._ngnIcon.location.nativeElement);\r\n this._ngnIcon.location.nativeElement.classList.add(this.theme.class('sort-control'));\r\n\r\n effect(() => {\r\n const sort = this.sort();\r\n setComponentInput(\r\n this._ngnIcon,\r\n 'defaultIcon',\r\n sort === 'asc' ? 'sort_down' : sort === 'desc' ? 'sort_up' : 'sort'\r\n );\r\n });\r\n }\r\n\r\n public ngOnDestroy(): void {\r\n this._ngnIcon.destroy();\r\n }\r\n\r\n protected toggleSort(): void {\r\n const currentSort = this.sort();\r\n const table = this._table();\r\n table?.sort.set(\r\n currentSort === null\r\n ? { column: this.columnId(), direction: 'asc' }\r\n : currentSort === 'asc'\r\n ? { column: this.columnId(), direction: 'desc' }\r\n : null\r\n );\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ngneers-controls-table.mjs","sources":["../../src/table/table-templates.ts","../../src/table/table.ts","../../src/table/table.html","../../src/table/table-cell.ts","../../src/table/table-header-cell.ts","../../src/table/table-header-row.ts","../../src/table/table-row.ts","../../src/table/module.ts","../../src/table/table-filterable-column.ts","../../src/table/table-sortable-column.ts","../../src/table/ngneers-controls-table.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, contentChild, TemplateRef } from '@angular/core';\r\nimport { templateTypesFn } from '@ngneers/controls/api/ng';\r\nimport { NgnBase } from '@ngneers/controls/base';\r\n\r\nimport type { FormattedTableRow } from './types';\r\n\r\n@Component({\r\n template: '',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport abstract class NgnTableTemplates<T extends object> extends NgnBase<'table'> {\r\n private readonly _headerTemplate = contentChild<TemplateRef<unknown>>('header');\r\n private readonly _bodyTemplate =\r\n contentChild<TemplateRef<typeof this.templateTypes.body>>('body');\r\n\r\n protected readonly headerTemplate = this._headerTemplate;\r\n protected readonly bodyTemplate = this._bodyTemplate;\r\n\r\n /**\r\n * Types for the calendar templates.\r\n */\r\n public readonly templateTypes = templateTypesFn<{\r\n /**\r\n * Type of the template variable for the body template.\r\n */\r\n body: { $implicit: FormattedTableRow<T> };\r\n }>();\r\n}\r\n","import { NgTemplateOutlet } from '@angular/common';\r\nimport { ChangeDetectionStrategy, Component, computed, input, model, signal } from '@angular/core';\r\nimport { executeMultiFilter } from '@ngneers/controls/api';\r\nimport { NgnTemplate } from '@ngneers/controls/api/ng';\r\nimport { NgnPt, provideSelf } from '@ngneers/controls/base';\r\nimport { NgnPaginator, type PaginationState } from '@ngneers/controls/paginator';\r\nimport { NgnScroller } from '@ngneers/controls/scroller';\r\nimport { tableControlTemplate } from '@ngneers/controls-themes/templates/table';\r\n\r\nimport { NgnTableTemplates } from './table-templates';\r\n\r\nimport type { NgnTableTh } from './table-header-cell';\r\nimport type { FormattedTableRow } from './types';\r\nimport type { NgnFilterConfig } from '@ngneers/controls/filter';\r\nimport type { AllKeysOfUnion } from '@ngneers/controls/utils';\r\n\r\n@Component({\r\n selector: 'ngn-table',\r\n templateUrl: './table.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [NgTemplateOutlet, NgnScroller, NgnPaginator, NgnTemplate, NgnPt],\r\n providers: [provideSelf(NgnTable)],\r\n host: {\r\n tabindex: '0',\r\n },\r\n})\r\nexport class NgnTable<T extends object, K extends keyof T> extends NgnTableTemplates<T> {\r\n protected readonly theme = this.injectThemeTemplate(tableControlTemplate, {\r\n root: true,\r\n virtual: () => this.virtual(),\r\n });\r\n private readonly _registeredHeaderCells = signal<NgnTableTh[]>([]);\r\n\r\n public readonly rows = input.required<readonly T[]>();\r\n public readonly rowHeight = input<number>();\r\n public readonly fieldId = input.required<K>();\r\n public readonly virtual = input<boolean>(false);\r\n public readonly virtualPadding = input<number>(2);\r\n public readonly striped = input<boolean>(false);\r\n public readonly paginator = input<boolean>(false);\r\n protected readonly trackById = (item: T): unknown => item[this.fieldId()];\r\n public readonly sort = model<{\r\n column: Extract<AllKeysOfUnion<T>, string>;\r\n direction: 'asc' | 'desc';\r\n } | null>(null);\r\n public readonly filters = model<\r\n | {\r\n [key in Extract<AllKeysOfUnion<T>, string>]?: NgnFilterConfig;\r\n }\r\n | null\r\n >(null);\r\n protected readonly pageState = signal<PaginationState | null>(null);\r\n\r\n protected readonly formattedRows = computed<FormattedTableRow<T>[]>(() => {\r\n const rows = this._sortedRows();\r\n return rows.map((data, index) => ({\r\n kind: 'data' as const,\r\n id: data[this.fieldId()] as T[keyof T] & (string | number),\r\n data,\r\n index,\r\n }));\r\n });\r\n\r\n protected readonly pagedRows = computed<FormattedTableRow<T>[]>(() => {\r\n const paginator = this.paginator();\r\n if (!paginator) {\r\n return this.formattedRows();\r\n }\r\n const pageState = this.pageState();\r\n if (!pageState) {\r\n return [];\r\n }\r\n return this.formattedRows().slice(\r\n pageState.slice.skip,\r\n pageState.slice.take + pageState.slice.skip\r\n );\r\n });\r\n\r\n private readonly _filteredRows = computed<readonly T[]>(() => {\r\n const filters = this.filters();\r\n const rows = this.rows();\r\n if (!filters) {\r\n return rows;\r\n }\r\n return executeMultiFilter(rows, filters);\r\n });\r\n\r\n private readonly _sortedRows = computed<readonly T[]>(() => {\r\n const rows = this._filteredRows();\r\n const sort = this.sort();\r\n if (!sort) {\r\n return rows;\r\n }\r\n const { column, direction } = sort;\r\n // @jasc @todo outsource sorting & allow custom sort functions\r\n return rows.toSorted((a, b) => {\r\n const aValue = a[column];\r\n const bValue = b[column];\r\n if (aValue == null && bValue != null) {\r\n return direction === 'asc' ? -1 : 1;\r\n }\r\n if (aValue != null && bValue == null) {\r\n return direction === 'asc' ? 1 : -1;\r\n }\r\n if (aValue == null && bValue == null) {\r\n return 0;\r\n }\r\n return typeof aValue === 'number' && typeof bValue === 'number'\r\n ? direction === 'asc'\r\n ? (aValue as number) - (bValue as number)\r\n : (bValue as number) - (aValue as number)\r\n : direction === 'asc'\r\n ? String(aValue).localeCompare(String(bValue))\r\n : String(bValue).localeCompare(String(aValue));\r\n });\r\n });\r\n\r\n protected readonly columnCount = computed(() => this._registeredHeaderCells().length);\r\n\r\n protected pageChanged(event: PaginationState) {\r\n this.pageState.set(event);\r\n }\r\n\r\n public column<V extends AllKeysOfUnion<T> & string>(column: V): V {\r\n return column;\r\n }\r\n\r\n public registerHeaderCell(cell: NgnTableTh): void {\r\n this._registeredHeaderCells.update(cells => [...cells, cell]);\r\n }\r\n\r\n public unregisterHeaderCell(cell: NgnTableTh): void {\r\n this._registeredHeaderCells.update(cells => cells.filter(c => c !== cell));\r\n }\r\n}\r\n","<table\r\n [ptInt]=\"this\"\r\n [ptClass]=\"{ table: true, striped: striped() }\"\r\n [attr.aria-rowcount]=\"rows().length\"\r\n [style.--ngn-table-column-count]=\"columnCount()\"\r\n [style.--ngn-table-row-height.px]=\"rowHeight()\"\r\n>\r\n <thead [ptInt]=\"this\" [ptClass]=\"'head'\">\r\n <ng-container [ngTemplateOutlet]=\"headerTemplate()\"></ng-container>\r\n </thead>\r\n\r\n <tbody\r\n [ptInt]=\"this\"\r\n [ptClass]=\"'body'\"\r\n ngn-scroller\r\n #scroller\r\n [virtual]=\"virtual()\"\r\n [items]=\"pagedRows()\"\r\n [fieldId]=\"'id'\"\r\n [itemHeight]=\"rowHeight() || 0\"\r\n [virtualPadding]=\"virtualPadding()\"\r\n [style.--ngn-table-item-start-index]=\"scroller.itemStartIndex()\"\r\n >\r\n <ng-template #item [ngnTemplate]=\"scroller.templateTypes.item\" let-item let-index=\"index\">\r\n <ng-container\r\n [ngTemplateOutlet]=\"bodyTemplate()\"\r\n [ngTemplateOutletContext]=\"{ $implicit: item }\"\r\n ></ng-container>\r\n </ng-template>\r\n </tbody>\r\n</table>\r\n@if (paginator()) {\r\n <ngn-paginator [totalItems]=\"rows().length\" (value)=\"pageChanged($event)\" />\r\n}\r\n","import { Directive, signal } from '@angular/core';\r\nimport { NgnBase } from '@ngneers/controls/base';\r\nimport { toggleClass } from '@ngneers/controls/utils';\r\nimport { tableControlTemplate } from '@ngneers/controls-themes/templates/table';\r\n\r\n@Directive({\r\n selector: '[ngnTableTd]',\r\n host: { '[style.--ngn-table-column-index]': 'columnIndex()' },\r\n})\r\nexport class NgnTableTd extends NgnBase<'table'> {\r\n protected readonly theme = this.injectThemeTemplate(tableControlTemplate);\r\n\r\n protected readonly columnIndex = signal(0);\r\n\r\n constructor() {\r\n super();\r\n this.prepareDom();\r\n const parent = this.element.nativeElement.parentElement?.children;\r\n if (parent) {\r\n const index = Array.from(parent).findIndex(child => child === this.element.nativeElement);\r\n this.columnIndex.set(index + 1);\r\n }\r\n }\r\n\r\n private prepareDom() {\r\n toggleClass(this.element.nativeElement, this.theme.class('cell'), true);\r\n }\r\n}\r\n","import {\r\n afterNextRender,\r\n Directive,\r\n ElementRef,\r\n inject,\r\n input,\r\n type OnDestroy,\r\n type OnInit,\r\n Renderer2,\r\n} from '@angular/core';\r\nimport { getNearestNgnInstance, NgnBase } from '@ngneers/controls/base';\r\nimport { NgnError, toggleClass } from '@ngneers/controls/utils';\r\nimport { tableControlTemplate } from '@ngneers/controls-themes/templates/table';\r\n\r\nimport { NgnTable } from './table';\r\n\r\n@Directive({ selector: '[ngnTableTh]' })\r\nexport class NgnTableTh extends NgnBase<'table'> implements OnDestroy, OnInit {\r\n protected readonly theme = this.injectThemeTemplate(tableControlTemplate);\r\n private _table?: NgnTable<any, any>;\r\n\r\n public readonly ngnTableTh = input.required<string>();\r\n\r\n constructor() {\r\n super();\r\n this.prepareDom();\r\n\r\n const renderer = inject(Renderer2);\r\n const elRef = inject<ElementRef<HTMLElement>>(ElementRef);\r\n afterNextRender(() => {\r\n const element = renderer.createElement('div');\r\n element.classList.add(this.theme.class('spacer'));\r\n elRef.nativeElement.appendChild(element);\r\n });\r\n }\r\n\r\n public ngOnInit(): void {\r\n const table = getNearestNgnInstance(this.element.nativeElement, NgnTable<any, any>);\r\n if (!table) {\r\n throw new NgnError('ngnTableTh', 'ngnTableTh must be used within an NgnTable component');\r\n }\r\n this._table = table;\r\n this._table.registerHeaderCell(this);\r\n }\r\n\r\n public ngOnDestroy(): void {\r\n this._table?.unregisterHeaderCell(this);\r\n }\r\n\r\n private prepareDom() {\r\n toggleClass(this.element.nativeElement, this.theme.class('cell'), true);\r\n }\r\n}\r\n","import { Directive } from '@angular/core';\r\nimport { NgnBase } from '@ngneers/controls/base';\r\nimport { toggleClass } from '@ngneers/controls/utils';\r\nimport { tableControlTemplate } from '@ngneers/controls-themes/templates/table';\r\n\r\n@Directive({ selector: '[ngnTableHeadTr]', host: { '[attr.aria-rowindex]': '1' } })\r\nexport class NgnTableHeadTr extends NgnBase<'table'> {\r\n protected readonly theme = this.injectThemeTemplate(tableControlTemplate);\r\n constructor() {\r\n super();\r\n this.prepareDom();\r\n }\r\n\r\n private prepareDom() {\r\n toggleClass(this.element.nativeElement, this.theme.class('row'), true);\r\n }\r\n}\r\n","import { Directive, effect, ElementRef, inject, input } from '@angular/core';\r\nimport { injectThemeTemplate } from '@ngneers/controls/api/ng';\r\nimport { NgnScrollerItem } from '@ngneers/controls/scroller';\r\nimport { toggleClass } from '@ngneers/controls/utils';\r\nimport { setInputSignalValue } from '@ngneers/controls/utils-ng';\r\nimport { tableControlTemplate } from '@ngneers/controls-themes/templates/table';\r\n\r\nimport type { FormattedTableRow } from './types';\r\n\r\n@Directive({\r\n selector: '[ngnTableBodyTr]',\r\n host: {\r\n '[attr.aria-rowindex]': 'ngnTableBodyTr().index + 2',\r\n '[style.--ngn-table-row-index]': 'ngnTableBodyTr().index + 2',\r\n '[class]': `theme.classes({'even': ngnTableBodyTr().index % 2 === 0})`,\r\n },\r\n})\r\nexport class NgnTableBodyTr<T> extends NgnScrollerItem {\r\n public readonly ngnTableBodyTr = input.required<FormattedTableRow<T>>();\r\n public override readonly ngnScrollerItem = input<object>({});\r\n private readonly _element = inject(ElementRef<HTMLElement>);\r\n protected readonly theme = injectThemeTemplate(tableControlTemplate);\r\n\r\n constructor() {\r\n super();\r\n effect(() => {\r\n const row = this.ngnTableBodyTr();\r\n setInputSignalValue(this.ngnScrollerItem, row);\r\n });\r\n this.prepareDom();\r\n }\r\n\r\n private prepareDom() {\r\n toggleClass(this._element.nativeElement, this.theme.class('row'), true);\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\n\r\nimport { NgnTable } from './table';\r\nimport { NgnTableTd } from './table-cell';\r\nimport { NgnTableTh } from './table-header-cell';\r\nimport { NgnTableHeadTr } from './table-header-row';\r\nimport { NgnTableBodyTr } from './table-row';\r\n\r\n@NgModule({\r\n imports: [NgnTable, NgnTableBodyTr, NgnTableTd, NgnTableTh, NgnTableHeadTr],\r\n exports: [NgnTable, NgnTableBodyTr, NgnTableTd, NgnTableTh, NgnTableHeadTr],\r\n})\r\nexport class NgnTableModule {}\r\n","import {\r\n ComponentRef,\r\n computed,\r\n Directive,\r\n effect,\r\n ElementRef,\r\n inject,\r\n input,\r\n type OnDestroy,\r\n Type,\r\n ViewContainerRef,\r\n} from '@angular/core';\r\nimport { injectThemeTemplate, setComponentInput } from '@ngneers/controls/api/ng';\r\nimport { getNearestNgnInstanceSig } from '@ngneers/controls/base';\r\nimport { NgnActionButton } from '@ngneers/controls/button';\r\nimport { NgnFilter, type NgnFilterDataType } from '@ngneers/controls/filter';\r\nimport { tableControlTemplate } from '@ngneers/controls-themes/templates/table';\r\n\r\nimport { NgnTable } from './table';\r\nimport { NgnTableTh } from './table-header-cell';\r\n\r\nimport type { NgnActionButtonConfig } from '@ngneers/controls/api';\r\n\r\n@Directive({\r\n selector: '[ngnTableFilterableColumn]',\r\n host: {\r\n '[class]': `theme.classes({'filterable-column': true, 'filtered-column': !!filter() })`,\r\n },\r\n})\r\nexport class NgnTableFilterableColumn implements OnDestroy {\r\n protected readonly theme = injectThemeTemplate(tableControlTemplate);\r\n private readonly _element = inject<ElementRef<HTMLElement>>(ElementRef);\r\n private readonly _columnId = inject(NgnTableTh).ngnTableTh;\r\n\r\n public readonly ngnTableFilterableColumn = input();\r\n\r\n private readonly _ngnActionButton: ComponentRef<NgnActionButton<null>>;\r\n private readonly _ngnFilter: ComponentRef<NgnFilter>;\r\n\r\n private readonly _table = getNearestNgnInstanceSig<Type<NgnTable<any, any>>>(\r\n this._element.nativeElement,\r\n NgnTable\r\n );\r\n private readonly _rows = computed(() => {\r\n return this._table()?.rows() || [];\r\n });\r\n protected readonly filter = computed(() => {\r\n const tableFilter = this._table()?.filters()?.[this._columnId()];\r\n return tableFilter;\r\n });\r\n\r\n public readonly ngnTableFilterableColumnType = input.required<NgnFilterDataType>();\r\n public readonly ngnTableFilterableColumnItems = input<string[] | null | undefined>();\r\n\r\n constructor() {\r\n this._ngnActionButton = inject(ViewContainerRef).createComponent(NgnActionButton<null>);\r\n this._ngnFilter = inject(ViewContainerRef).createComponent(NgnFilter);\r\n this._element.nativeElement.appendChild(this._ngnActionButton.location.nativeElement);\r\n this._element.nativeElement.appendChild(this._ngnFilter.location.nativeElement);\r\n this._ngnActionButton.location.nativeElement.classList.add(this.theme.class('filter-control'));\r\n\r\n setComponentInput(this._ngnActionButton, 'kind', 'icon');\r\n setComponentInput(this._ngnFilter, 'anchor', this._ngnActionButton.location.nativeElement);\r\n setComponentInput(this._ngnFilter, 'mode', 'headless');\r\n setComponentInput(this._ngnFilter, 'allowMultiple', true);\r\n\r\n const cfg = computed(\r\n () =>\r\n <NgnActionButtonConfig<null>>{\r\n label: 'Filter',\r\n value: null,\r\n kind: 'icon',\r\n defaultIcon: this.filter() ? 'filter_solid' : 'filter',\r\n action: event => {\r\n event.stopPropagation();\r\n this._ngnFilter.instance.show();\r\n },\r\n }\r\n );\r\n\r\n effect(() => {\r\n setComponentInput(this._ngnActionButton, 'config', cfg());\r\n });\r\n effect(() => {\r\n setComponentInput(\r\n this._ngnFilter,\r\n 'data',\r\n this._rows().map(row => row[this._columnId()])\r\n );\r\n });\r\n effect(() => {\r\n setComponentInput(this._ngnFilter, 'dataType', this.ngnTableFilterableColumnType());\r\n });\r\n effect(() => {\r\n setComponentInput(this._ngnFilter, 'listOptions', this.ngnTableFilterableColumnItems());\r\n });\r\n this._ngnFilter.instance.filterChange.subscribe(cfg => {\r\n const table = this._table();\r\n const currentFilters = table?.filters() || {};\r\n table?.filters.set({ ...currentFilters, [this._columnId()]: cfg ?? undefined });\r\n });\r\n }\r\n\r\n public ngOnDestroy(): void {\r\n this._ngnActionButton.destroy();\r\n this._ngnFilter.destroy();\r\n }\r\n}\r\n","import {\r\n ComponentRef,\r\n computed,\r\n Directive,\r\n effect,\r\n ElementRef,\r\n inject,\r\n input,\r\n type OnDestroy,\r\n Type,\r\n ViewContainerRef,\r\n} from '@angular/core';\r\nimport { injectThemeTemplate, setComponentInput } from '@ngneers/controls/api/ng';\r\nimport { getNearestNgnInstanceSig } from '@ngneers/controls/base';\r\nimport { NgnIcon } from '@ngneers/controls/icon';\r\nimport { tableControlTemplate } from '@ngneers/controls-themes/templates/table';\r\n\r\nimport { NgnTable } from './table';\r\nimport { NgnTableTh } from './table-header-cell';\r\n\r\n@Directive({\r\n selector: '[ngnTableSortableColumn]',\r\n host: {\r\n '[class]': `theme.classes({'sortable-column': true, 'sorted-column': !!sort() })`,\r\n '(click)': `toggleSort()`,\r\n },\r\n})\r\nexport class NgnTableSortableColumn implements OnDestroy {\r\n protected readonly theme = injectThemeTemplate(tableControlTemplate);\r\n private readonly _element = inject<ElementRef<HTMLElement>>(ElementRef);\r\n\r\n public readonly ngnTableSortableColumn = input();\r\n\r\n private readonly _table = getNearestNgnInstanceSig<Type<NgnTable<any, any>>>(\r\n this._element.nativeElement,\r\n NgnTable\r\n );\r\n protected readonly sort = computed(() => {\r\n const tableSort = this._table()?.sort();\r\n if (tableSort?.column === this.columnId()) {\r\n return tableSort.direction;\r\n }\r\n return null;\r\n });\r\n\r\n private readonly columnId = inject(NgnTableTh).ngnTableTh;\r\n\r\n private readonly _ngnIcon: ComponentRef<NgnIcon>;\r\n\r\n constructor() {\r\n this._ngnIcon = inject(ViewContainerRef).createComponent(NgnIcon);\r\n this._element.nativeElement.appendChild(this._ngnIcon.location.nativeElement);\r\n this._ngnIcon.location.nativeElement.classList.add(this.theme.class('sort-control'));\r\n\r\n effect(() => {\r\n const sort = this.sort();\r\n setComponentInput(\r\n this._ngnIcon,\r\n 'defaultIcon',\r\n sort === 'asc' ? 'sort_down' : sort === 'desc' ? 'sort_up' : 'sort'\r\n );\r\n });\r\n }\r\n\r\n public ngOnDestroy(): void {\r\n this._ngnIcon.destroy();\r\n }\r\n\r\n protected toggleSort(): void {\r\n const currentSort = this.sort();\r\n const table = this._table();\r\n table?.sort.set(\r\n currentSort === null\r\n ? { column: this.columnId(), direction: 'asc' }\r\n : currentSort === 'asc'\r\n ? { column: this.columnId(), direction: 'desc' }\r\n : null\r\n );\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ngneers/controls",
3
- "version": "0.0.1-pre3",
3
+ "version": "0.0.1-pre4",
4
4
  "private": false,
5
5
  "dependencies": {
6
6
  "tslib": "^2.8.1",